diff --git a/Dockerfile b/Dockerfile index c80a8f5d..a4fccdb5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,6 +7,7 @@ WORKDIR /app COPY ui/apps/package.json ui/apps/bun.lock ./ui/apps/ RUN cd ui/apps && bun install --frozen-lockfile COPY ui/*.ts ./ui/ +COPY ui/panels/ ./ui/panels/ COPY ui/apps/ ./ui/apps/ COPY internal/mcp/apps/ ./internal/mcp/apps/ RUN cd ui/apps && bun run build diff --git a/THIRD_PARTY_NOTICES b/THIRD_PARTY_NOTICES index aac60b71..db9eaa75 100644 --- a/THIRD_PARTY_NOTICES +++ b/THIRD_PARTY_NOTICES @@ -87,6 +87,8 @@ COMPONENT INVENTORY - npm: @ag-ui/encoder 1.0.1 (declared license: MIT) - npm: @ag-ui/proto 1.0.1 (declared license: MIT) - npm: @bufbuild/protobuf 2.16.0 (declared license: (Apache-2.0 AND BSD-3-Clause)); no license file was present in the installed package +- npm: @dagrejs/dagre 3.1.1 (declared license: MIT) +- npm: @dagrejs/graphlib 4.0.5 (declared license: MIT) - npm: @floating-ui/core 1.8.0 (declared license: MIT) - npm: @floating-ui/dom 1.8.0 (declared license: MIT) - npm: @floating-ui/react 0.27.20 (declared license: MIT) @@ -7380,6 +7382,31 @@ not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. +--- Applies to ------------------------------------------------------------- +- npm: @dagrejs/dagre 3.1.1 / LICENSE +- npm: @dagrejs/graphlib 4.0.5 / LICENSE +---------------------------------------------------------------------------- + +Copyright (c) 2012-2014 Chris Pettitt + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + --- Applies to ------------------------------------------------------------- - npm: @floating-ui/core 1.8.0 / LICENSE - npm: @floating-ui/dom 1.8.0 / LICENSE diff --git a/cmd/fanout/main.go b/cmd/fanout/main.go index de99bed8..f135ac5c 100644 --- a/cmd/fanout/main.go +++ b/cmd/fanout/main.go @@ -28,6 +28,7 @@ import ( "github.com/labstack/fanout/internal/agent" "github.com/labstack/fanout/internal/alert" + "github.com/labstack/fanout/internal/annotations" "github.com/labstack/fanout/internal/api" "github.com/labstack/fanout/internal/auth" "github.com/labstack/fanout/internal/config" @@ -266,8 +267,10 @@ func main() { // raw *sql.DB here bypassed the Telemetry maintenance-race protection. queries := observability.New(q, q, cfg.RetentionDays) panels := panel.NewExecutor(q, cfg.RetentionDays) + panels.SetRollupReader(queries) api.RegisterPanelRoutes(e, panels) - api.NewObservabilityHandler(queries).Register(e.Group("/api/observability", api.RequireCapability(api.ReadTelemetry))) + api.RegisterAnnotationRoutes(e, annotations.New(q)) + api.NewObservabilityHandler(queries, cfg.RetentionDays).Register(e.Group("/api/observability", api.RequireCapability(api.ReadTelemetry))) api.RegisterIntelligenceRoutes(e, detector) dashboards := dashboard.New(sqlite.DB, panels) api.RegisterDashboardRoutes(e, dashboards) diff --git a/docs/benchmarks/2026-10-agent-dashboards-m2.md b/docs/benchmarks/2026-10-agent-dashboards-m2.md new file mode 100644 index 00000000..4bd2dcaa --- /dev/null +++ b/docs/benchmarks/2026-10-agent-dashboards-m2.md @@ -0,0 +1,288 @@ +# Agent dashboards Milestone 2 verification + +Build: 669bec26 (collector run on 2c37797e; 669bec26 changes only a manual-refresh queue and a test wait). Model: claude-sonnet-5-5. Source: Replayed fanout-demo format-2 telemetry converted to format 3 over OTLP by .superpowers/replay (newest input 2026-10-05T16:45:10.69Z, target 2026-10-06T22:40:35.61Z), served by a disposable local instance with no AI provider. Deploy markers use 7,201 synthetic cart spans with service.version 2.3.0 (attribute fanout.synthetic), 19:30:58Z-23:30:58Z. Loading, empty, error, partial and sparkline-gap states were produced by browser network interception, not demo data. Evaluations: claude-sonnet-5-5 on the same frozen replay; benchmark baseline and candidate are two-repeat means; holdout baseline is a two-repeat mean, holdout candidate is one run (the second failed to start in the harness). No judge pass.. +Status: PASS. + +This run was taken about a day after the replay's newest point, so its 24-hour window holds only part of the replayed telemetry. An earlier run inside a fresh window returned about 20,500 cells per refresh in 1.6–2.1 s, also with exactly one panels request and one annotations request. + +Replay: 2213782 spans, 860377 logs, 14302306 metric points; shift_ns=107724921629673. + +## Browser type coverage + +| Theme | Type | Visible | Aria | Inspect | Console errors | +|---|---|---|---|---|---| +| light | stat | true | true | true | 0 | +| light | gauge | true | true | true | 0 | +| light | timeseries | true | true | true | 0 | +| light | bar | true | true | true | 0 | +| light | table | true | true | true | 0 | +| light | text | true | true | true | 0 | +| light | heatmap | true | true | true | 0 | +| light | histogram | true | true | true | 0 | +| light | scatter | true | true | true | 0 | +| light | state_timeline | true | true | true | 0 | +| light | logs | true | true | true | 0 | +| light | log_patterns | true | true | true | 0 | +| light | traces | true | true | true | 0 | +| light | service_map | true | true | true | 0 | +| light | health | true | true | true | 0 | +| dark | stat | true | true | true | 0 | +| dark | gauge | true | true | true | 0 | +| dark | timeseries | true | true | true | 0 | +| dark | bar | true | true | true | 0 | +| dark | table | true | true | true | 0 | +| dark | text | true | true | true | 0 | +| dark | heatmap | true | true | true | 0 | +| dark | histogram | true | true | true | 0 | +| dark | scatter | true | true | true | 0 | +| dark | state_timeline | true | true | true | 0 | +| dark | logs | true | true | true | 0 | +| dark | log_patterns | true | true | true | 0 | +| dark | traces | true | true | true | 0 | +| dark | service_map | true | true | true | 0 | +| dark | health | true | true | true | 0 | + +## S8 and bounded refresh + +| Theme | Panels | Panel requests | Annotation requests | Cells | ms | +|---|---:|---:|---:|---:|---:| +| light | 23 | 1 | 1 | 6642 | 1219 | +| light | 23 | 1 | 1 | 6642 | 1201 | +| light | 23 | 1 | 1 | 6642 | 1268 | +| dark | 23 | 1 | 1 | 6642 | 1269 | +| dark | 23 | 1 | 1 | 6642 | 1240 | +| dark | 23 | 1 | 1 | 6642 | 1169 | + +## Interaction evidence + +- inspect: PASS; 30 theme/type Inspect checks matched frames or SQL and closed (text verified directly) +- loading: PASS; Loading panel visible before delayed response, absent after 1500ms response and render settle +- empty: PASS; empty asserted on 14 types/panels (calls,err_gauge,rate_ts,svc_bar,svc_table,lat_heat,lat_hist,ops_scatter,err_states,recent_logs,patterns,slow_traces,svc_map,svc_health); interception removed; observed real response and rendering recovered +- error: PASS; error asserted on 1 types/panels (rate_ts); interception removed; observed real response and rendering recovered +- partial: PASS; partial asserted on 1 types/panels (rate_ts); interception removed; observed real response and rendering recovered +- filter_chip: PASS; Real bar selected frontend; removal restored All and 10 visible services; selection request, removal cache_hit +- linked_crosshair: PASS; 4 required comparisons show exactly one ≤8px band within ±12px at relative x=.63; wide tooltip bands recorded and ignored; heatmap/timeline followers recorded; chart IDs ec_1791397700259→ec_1791397727777 +- brush_history: PASS; 40-move 200px brush pushed exactly one history entry; from/to appeared; Back restored http://127.0.0.1:7520/dashboards/01a11382-f0df-708c-bade-71d3fa50fc21?range=24h +- panel_time: PASS; Visible 1d badge; requested panel shift=1d; observed response windows differ exactly 86400000ms; all other windows match (1791311395896..1791397795896) +- drill_url: PASS; slow_traces: scrollY=3707 preserved on open/close; click→drill URL→reload retained→Back closed; recent_logs: scrollY=2979 preserved on open/close; click→drill URL→reload retained→Back closed +- waterfall_logs: PASS; Selected trace 020a920f65fbf268508dab44747cdbf9; 2 waterfall spans; correlated logs empty with trace-ID/window reason +- cancel_drill: PASS; Delayed first drill; closed before completion; second dialog matched its URL kind/panel; releasing first response never restored first drawer or target (MutationObserver + URL) +- deploy_markers: PASS; Controller visual inspection in the scripted screenshots and in a real Chrome session on build 2c37797e: the cart-scoped charts draw a dashed "cart 2.3.0" line at the 19:30Z first-seen instant plus the anomaly band; the no-marker twin draws neither; service=checkout shows no deploy line. The pixel heuristic stays inconclusive because the marker label lane compresses the plot; the version is a labelled synthetic injection. +- anomaly_areas: PASS; Cart error_rate_change 2026-10-06T22:29:00Z..2026-10-06T22:54:00Z produces 136px shaded band; checkout has no unrelated band; matched twin screenshots and saved diffs +- deploy_split: PASS; Cart visible frame has Before deploy,Since deploy series and nonblank bar screenshot (request); All has a plain bar and note: Service is All; showing the unsplit whole-window frame. (cache_hit) +- column_formats: PASS; service_link click sets picker/request; sparkline SVG, status text with non-colour cue, width bar, trace_link drill, normalized duration unit and log_template code/wildcards observed +- stat_sparkline: PASS; Calls total=232282 unchanged after one simulated null; 2 SVG subpaths prove gap; route removed and real data recovered + +## Agent evaluation + +Holdout is never used for tuning. Matching repeats use the same frozen telemetry and account isolation. + +| Set | Baseline S1 | Candidate S1 | Baseline intent | Candidate intent | Errors | Unchecked | +|---|---:|---:|---:|---:|---:|---:| +| benchmark | 1 | 1 | 1 | 1 | 0 | 0 | +| holdout | 0.9091 | 1 | 0.9375 | 1 | 0 | 0 | + +## S13 M2 capability preview comparison + +| Capability | Preview evidence | M2 evidence | Gap | +|---|---|---|---| +| heatmap | Latency distribution heatmap: log buckets labelled in ms (<25 ms to >=3.2 s), sequential blue ramp | lat_heat: log2 buckets labelled with units (0-1 ms to 2.2-4.4 min), p99-capped continuous colour scale with its legend, deploy and anomaly markers, drill to exemplar traces; light and dark screenshots | none | +| log_patterns | Error and warning patterns: severity, template with wildcards, service, count, trend | patterns: body_template with placeholders, count bar and per-template trend, which is the spec definition (body_template counts with trend); the preview adds per-pattern severity and service columns, tracked for the milestone 4 parity review | none | +| deploy_markers | Dashed "deploy payments v2.14.0" line and a shaded anomaly region on time charts | Dashed "cart 2.3.0" line at the first-seen instant and the 22:29-22:54Z anomaly band on cart-scoped charts; absent for checkout; label clear of the zoom tools | none | +| drill_drawer | Click a chart for exemplar traces; click a row to open the trace | Drawer addressed by a drill= URL that survives reload and closes on Back; exemplars, shared waterfall and correlated logs; a cancelled drill never reappears | none | +| split_bars | Time in downstream calls: paired Before deploy and Since deploy bars | deploy_bar with service=cart shows Before deploy and Since deploy series; with All it shows the plain bar and a note | none | +| table_formats | Trace links, durations with units and inline bars, counts and error text | service_link, sparkline with value, status badge with percent and icon, bar, trace_link opening the drill, unit and log_template, all asserted in the DOM | none | + +## Screenshots + +- .superpowers/replay/m2-screenshots/light-six-series-legend.png +- .superpowers/replay/m2-screenshots/light-full.png +- .superpowers/replay/m2-screenshots/light-viewport-00.png +- .superpowers/replay/m2-screenshots/light-viewport-01.png +- .superpowers/replay/m2-screenshots/light-viewport-02.png +- .superpowers/replay/m2-screenshots/light-viewport-03.png +- .superpowers/replay/m2-screenshots/light-viewport-04.png +- .superpowers/replay/m2-screenshots/light-viewport-05.png +- .superpowers/replay/m2-screenshots/dark-six-series-legend.png +- .superpowers/replay/m2-screenshots/dark-full.png +- .superpowers/replay/m2-screenshots/dark-viewport-00.png +- .superpowers/replay/m2-screenshots/dark-viewport-01.png +- .superpowers/replay/m2-screenshots/dark-viewport-02.png +- .superpowers/replay/m2-screenshots/dark-viewport-03.png +- .superpowers/replay/m2-screenshots/dark-viewport-04.png +- .superpowers/replay/m2-screenshots/dark-viewport-05.png +- .superpowers/replay/m2-screenshots/dark-crosshair-mounted-rate_ts-err_ts-before.png +- .superpowers/replay/m2-screenshots/dark-crosshair-mounted-rate_ts-p95_ts-before.png +- .superpowers/replay/m2-screenshots/dark-crosshair-mounted-rate_ts-lat_heat-before.png +- .superpowers/replay/m2-screenshots/dark-crosshair-mounted-rate_ts-err_states-before.png +- .superpowers/replay/m2-screenshots/dark-crosshair-mounted-rate_ts-err_ts-after.png +- .superpowers/replay/m2-screenshots/dark-crosshair-mounted-rate_ts-err_ts-diff.png +- .superpowers/replay/m2-screenshots/dark-crosshair-mounted-rate_ts-p95_ts-after.png +- .superpowers/replay/m2-screenshots/dark-crosshair-mounted-rate_ts-p95_ts-diff.png +- .superpowers/replay/m2-screenshots/dark-crosshair-mounted-rate_ts-lat_heat-after.png +- .superpowers/replay/m2-screenshots/dark-crosshair-mounted-rate_ts-lat_heat-diff.png +- .superpowers/replay/m2-screenshots/dark-crosshair-mounted-rate_ts-err_states-after.png +- .superpowers/replay/m2-screenshots/dark-crosshair-mounted-rate_ts-err_states-diff.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-rate_ts-err_ts-before.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-rate_ts-p95_ts-before.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-rate_ts-lat_heat-before.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-rate_ts-err_states-before.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-rate_ts-err_ts-after.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-rate_ts-err_ts-diff.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-rate_ts-p95_ts-after.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-rate_ts-p95_ts-diff.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-rate_ts-lat_heat-after.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-rate_ts-lat_heat-diff.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-rate_ts-err_states-after.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-rate_ts-err_states-diff.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-lat_heat-err_ts-before.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-lat_heat-p95_ts-before.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-lat_heat-err_states-before.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-lat_heat-err_ts-after.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-lat_heat-err_ts-diff.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-lat_heat-p95_ts-after.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-lat_heat-p95_ts-diff.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-lat_heat-err_states-after.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-lat_heat-err_states-diff.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-err_states-err_ts-before.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-err_states-p95_ts-before.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-err_states-lat_heat-before.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-err_states-err_ts-after.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-err_states-err_ts-diff.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-err_states-p95_ts-after.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-err_states-p95_ts-diff.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-err_states-lat_heat-after.png +- .superpowers/replay/m2-screenshots/dark-crosshair-remounted-err_states-lat_heat-diff.png +- .superpowers/replay/m2-screenshots/dark-deploy-cart-markers.png +- .superpowers/replay/m2-screenshots/dark-deploy-cart-plain.png +- .superpowers/replay/m2-screenshots/dark-deploy-cart-diff.png +- .superpowers/replay/m2-screenshots/dark-deploy-negative-checkout-markers.png +- .superpowers/replay/m2-screenshots/dark-deploy-negative-checkout-plain.png +- .superpowers/replay/m2-screenshots/dark-deploy-negative-checkout-diff.png +- .superpowers/replay/m2-screenshots/dark-deploy_markers-failure.png +- .superpowers/replay/m2-screenshots/dark-anomaly-cart-markers.png +- .superpowers/replay/m2-screenshots/dark-anomaly-cart-plain.png +- .superpowers/replay/m2-screenshots/dark-anomaly-cart-diff.png +- .superpowers/replay/m2-screenshots/dark-anomaly-negative-checkout-markers.png +- .superpowers/replay/m2-screenshots/dark-anomaly-negative-checkout-plain.png +- .superpowers/replay/m2-screenshots/dark-anomaly-negative-checkout-diff.png +- .superpowers/replay/m2-screenshots/dark-deploy-split-cart.png +- .superpowers/replay/m2-screenshots/dark-stat-null-gap.png + +## Remaining defects and gates + +All gates passed against measured evidence. +## Defects this verification found and fixed + +The unit and integration suites passed before this check. Running the +dashboards in a real browser on replayed demo data still found the +following, each fixed with a regression test in its owning suite +(commits 93cd7556 and ef61ab1e): + +- **Deploy history lost after compaction.** The version rollup skipped any + batch over 64,000 rows, which includes every compaction output, so its + versions were never read and every dashboard reported limited annotation + history. Oversized batches now get a pass of their own, oldest first, and + a batch that keeps failing backs off without blocking newer ones. +- **Panels stuck loading.** A panel scrolled into view while a batch was in + flight was never requested. A requested panel the server omits now shows + an error, and lazy batches keep the dashboard's annotations. +- **One clock per batch.** Panels resolved "now" separately; a 1-day shifted + panel was 27 ms off. The batch now resolves a single instant. +- **Misleading empty diagnosis.** A highlighted logs panel blamed the + highlight even when a filter caused the empty result. +- **Presentation:** status cells now carry the measure's unit; the traces + panel truncates trace IDs instead of overlapping columns and shows + Error/OK rather than OTLP enum names; sparkline cells show their value; + heatmap and histogram buckets carry units; the heatmap colour scale is + capped at the 99th percentile with a legend; single-series charts drop + their legend; day boundaries read as month and day; deploy labels stay + clear of the zoom tools; heatmap time labels no longer run together. + +Synthetic data: the demo has a single `service.version` per service, so +deploy markers and the deploy split were exercised with a labelled +synthetic version change for one service. Browser network interception +produced the loading, empty, error, partial and sparkline-gap states. + +## Final review + +A broad review and a focused security and concurrency review followed the +browser check. The focused review ran about 100 SQL-panel shapes against +the pinned engine and found no path to unredacted log bodies, no escape +from the approved relations, and no injection or owner-scope bypass; a +concurrent ingest, compaction and rollup probe converged with every +version present. The findings it and the broad review raised were fixed in +2c5a686c: grouped panels now accept one measure instead of silently +dropping the rest, empty variable options no longer crash a saved +selection, bar drills keep every grouping value and the deploy period, +share sparklines in limited tables use the whole scope, a failing version +rollup batch no longer holds back healthy ones, annotations read in one +transaction, and SQL panel CTEs may not shadow telemetry relations. + +Deferred: an explicit empty multi-value selection does not survive a shared +URL (rare; it shows no data either way), and schema-qualified log columns +fail with an error rather than binding (they fail closed). + +## Hands-on testing + +The dashboards were then used by hand in a real Chrome session, with the agent on +`claude-sonnet-5-5` and, separately, `gpt-6.1-sol`. From one sentence each provider +built a correct dashboard in 30–60 seconds; Sonnet used deploy markers, a +before-and-since split and a version table to show a cart release raising p95 from +2.4 ms to 8.4 ms and errors from 0% to 6%, and it edited the dashboard by +conversation in under 20 seconds. + +That session found what the scripted checks could not, all fixed (13aa6942, +2c37797e, 669bec26): the chat gave no link to the dashboard the agent saved and the +sidebar did not list it until a reload; opening a drill scrolled the dashboard to +the top; every chart painted a needless scrollbar on systems that always show +scrollbars; the deploy-split note showed a raw timestamp; the grid could first lay +out at a guessed width; series colours came from two hue families by name hash and +failed colour-vision checks, now a validated six-slot palette assigned in order with +at most six series per chart; and a refresh pressed during a partial lazy batch was +dropped. The scripted collector now also checks that chart bodies fit, that drills +keep the scroll position and that series colours are distinct. + +## Production-grade pass + +After hands-on use, every panel type was captured in both themes at 1100 px +and 1440 px on a fresh replay and reviewed against the capability preview. +Each defect found was fixed with a regression test, and the captures were +repeated until none remained: + +- **Gauge:** became a linear meter that stays readable in a small card. +- **Panel chrome:** a "viz · source" subtitle, Chart/Data/Spec views (folded into the panel menu on narrow cards) and interaction hints. +- **Time series:** + - labels at the line ends, and labelled thresholds; + - deploy and anomaly labels in a lane above the plot; + - legends that wrap rather than truncate. +- **Series selection:** + - six validated, colour-blind-safe series colours, assigned in order; + - series chosen worst-first by confidence (the Wilson lower bound for error rates; at least 20 samples for latency), with the rest folded into "Other (N)". +- **Heatmaps:** a log count scale on a seven-step ramp, with cells sized to the panel. +- **State timelines:** merged runs, every row labelled, and a state legend. +- **Service map:** rebuilt as a left-to-right layered dependency map. + - Service cards with health and key metrics. + - Directed edges weighted by traffic. + - Neighbourhood highlight and keyboard focus. + - The layout is cached on graph structure; refreshing a 400-service map takes about 3 ms of main-thread work. + - Page scrolling passes through. +- **Tables, logs and traces:** + - tabular numerals and placeholder chips; + - a soft highlight with its term shown; + - compact timestamps; + - log-pattern severity and service. +- **Correctness:** charts no longer animate through overlapping layouts. The grid measures before rendering, drills and Back keep the scroll position, a refresh pressed during lazy loading still runs, and an empty variable list no longer crashes a dashboard. +- **Security:** every telemetry-derived string in an HTML tooltip is escaped. + +Final checks on ef412b4b–d4f2f075: + +- `just check` passes. +- A page smoke run over six dashboards, both themes and both widths found no error boundary and no page errors. +- 21 of 22 scripted browser checks pass. The remaining Inspect check was verified by hand and by a reviewer's real-click sweep across all fifteen types. +- An agent benchmark with `claude-sonnet-5-5` on fresh data: + - all ten dashboards built; + - every panel returned rows or explained why it was empty; + - full intent accuracy; + - a median of 29.6 s; + - half as many validation retries as before. diff --git a/docs/superpowers/plans/2026-10-05-agent-dashboards-m2.md b/docs/superpowers/plans/2026-10-05-agent-dashboards-m2.md new file mode 100644 index 00000000..17883e1f --- /dev/null +++ b/docs/superpowers/plans/2026-10-05-agent-dashboards-m2.md @@ -0,0 +1,6341 @@ +# Agent dashboards — milestone 2 (Analysis) implementation plan + +> **Revision 1 — 2026-10-05:** Applied every binding ruling in `.superpowers/sdd/2026-10-05-agent-dashboards-m2/plan-fix-1.md`. Split chart/row and server/browser/format work into fifteen sequential tasks, and moved eval baseline capture before prompt changes. Added independent scatter units, temporality-aware histogram increases, the historical overview-widget port and host-local trace copies. Fixed pinned-engine timestamp projections, router drill round trips, captured windows, brush activation, rollup drain/compaction, anomaly coalescing, annotation memoization/scope, deploy-All fallback, health shapes and table trends/status. Replaced vacuous tests and supplied missing integration/regression coverage. Removed the extra 1Password global constraint, deferred S6 to M4, added M2 S13 comparisons, and required formatting, docs generation and final `just check`. +> **Revision 2 — 2026-10-05:** Applied all ten binding edits in `.superpowers/sdd/2026-10-05-agent-dashboards-m2/plan-fix-2.md`: corrected rollup arithmetic, moved early-used TypeScript mirrors into Task 7, fixed test selection and quoting, isolated cursor counts, added annotation-range coverage, balanced fences, limited full tool guidance to create/preview, used the controller's secret store, and ordered Task 15 build/commit/check/follow-up. Verified task-level TypeScript ordering and balanced code fences. + +Revision verification: throwaway probes on the pinned `v2.0.0-alpha43763` engine executed the timestamp casts, cumulative/delta histogram and heatmap SQL, annotation table/upsert/coalescing/retention reads, resource-version derivation, service-key union, real overview/topology service predicates, bounded nullable trace candidates, redacted log/pattern reads, per-bucket share and table-trend tuple predicates. The probes were deleted; implementation tests below remain execution work. + + +> **For agentic workers:** Execute the fifteen tasks in order, with one reviewer gate per task. Steps use checkbox (`- [ ]`) syntax. Commit commands are controller instructions. + +**Goal:** Complete the fifteen panel types and the analysis interactions: exemplars and trace drill-down, linked time charts, brush zoom, panel time, deploys and anomalies, deploy-split bars, sparklines and formatted tables. + +**Architecture:** Extend the merged `internal/panel` checker, compiler and bounded executor. DuckDB owns incremental annotation history; `internal/annotations` exposes it without scanning telemetry. The detector persists its findings. Topology and health adapt `observability.Service` results to frames. HTTP remains a thin authenticated telemetry adapter; saved dashboards remain owner-scoped SQLite records. Pure `ui/panels` compilers drive canvas charts and table models. The dashboard shell owns refresh, annotations and URL interactions; the existing trace components are copied and adapted into the host workspace, following M1’s echart precedent; consolidation belongs to M3. + +**Tech Stack:** Go 1.26, Echo v5, pinned DuckDB 2 through `scripts/with-duckdb.sh`, SQLite (modernc) + Goose + sqlc, MCP Go SDK, React 19, Mantine 9, TanStack Router/Query, ECharts 6.1 canvas, `react-grid-layout` 2.2.4, `@tanstack/react-table` 9.2.6, Vitest 5. + +**Spec:** `docs/superpowers/specs/2026-10-04-agent-dashboards-design.md`; binding task outline: `.superpowers/m2-outline.md`. Grounded against branch `feat/agent-dashboards-m2`, HEAD `2c208c85`, with milestone 1 merged. + +## Global Constraints + +- Work only in the dashboards worktree, branch `feat/agent-dashboards-m2`. Never push, merge or deploy. +- **the controller commits; Codex leaves changes uncommitted**. Every task retains its commit step, executed by the controller after its review gate. +- Codex execution is file edits only, no git writes and no network. Controller-owned test/build/replay/eval/browser commands below are explicit handoffs. Before any Go inspection or gate, the controller sets `GOCACHE` and `GOTMPDIR` under `.superpowers/`, `GOFLAGS=-mod=readonly`, and `GOPROXY=off`. Use `rtk` for every shell command. +- Run Go tests through `just test` with real package paths. A `-run` expression containing `|` is single-quoted around the double-quoted expression, for example `-run '"TestM2A|TestM2B"'`, because Just's recipe evaluates it again. +- Browser gates are `cd ui/host && bun run test` and `bun run lint`, followed by `just ui`. Browser commits include `internal/ui/dist`; shared trace changes also include `internal/mcp/apps` because `just ui` builds both workspaces. +- Every Go task runs `rtk just fmt` before its controller commit. Every task adding or changing an HTTP route, MCP tool contract or setting runs `rtk just docs-generate` and `rtk just docs-generate-check`, and includes the resulting reference docs in its controller commit. +- No control-schema change is needed. Annotation tables are DuckDB analytical tables, never SQLite migrations. Keep both published migration checksums unchanged. +- Preserve the milestone 1 fixes: batch deadlines return finished panels; `better` is inferred at run time; `add_panel` places only the new panel; compaction is bounded; error text never shows paths. +- Shared `ui/*.ts` and `ui/panels/*.ts` import siblings only, with no package imports. React components belong to the workspaces. Every visualization retains PanelCard loading/empty/error/stale/truncated states, Inspect and an aria summary. + +The following applicable constraints are copied verbatim from **AGENTS.md**: + +## Control database + +- Keep SQLite with `modernc.org/sqlite` through `database/sql`, sqlc-generated + query bindings, and Goose SQL migrations. DuckDB owns the telemetry query + schema separately. Do not introduce pgx or PostgreSQL for control state. +- `internal/db/migrations` is the control schema source for both Goose and + sqlc. Do not add a separate schema copy or another migration framework. +- Use timestamped Goose SQL migrations with `-- +goose Up`. Published + migrations are immutable; add a new migration for subsequent changes and + extend the checksum ledger in `internal/db/migrations_test.go`. Never replace + a published checksum. +- Run `just db-gen` after schema or query changes and verify the storage tests. +- No Atlas conversion, legacy migration tracker, or schema fallback. A database + with application tables must have a positive applied Goose version before + initialization. An empty or zero-only version table is not sufficient. + +## Telemetry engine and format + +- Use the pinned DuckDB 2 engine in `internal/duckdb`, built with + `scripts/with-duckdb.sh`. A Go driver version does not identify its bundled + native engine; verify `SELECT version()` when changing the pin. +- Build and test on native Linux or macOS, AMD64 or ARM64. The wrapper verifies + each platform archive's checksum and uses its matching headers and statically + linked core, JSON, Parquet, and time-zone extensions. Do not add dynamic + extension downloads or a second engine path. +- Store OTLP attributes and resource attributes as typed maps in canonical rows + and shredded Parquet VARIANT columns. Preserve integers, booleans, bytes, + nested values, and nanosecond UTC timestamps. Convert nested SQL results to + JSON only at the client boundary; attribute keys containing dots are literal. +- Dashboard file snapshots use each signal's actual event-time footer bounds, + including signed nanoseconds. Unknown statistics include the file. Never + substitute ingestion time or prune public arbitrary SQL from a dashboard scope. +- Endpoint histograms, log counts, and notable-trace candidates acknowledge + complete immutable batch IDs transactionally. Query cache markers and rows in + one read transaction under the pinned file snapshot; uncached active files + remain immediately visible. Compaction and retention must invalidate retired + contributions without double counting or losing late publications. +- Version disposable read-cache schema and semantics together; mismatches rebuild + all private read tables. Cache minute aggregates, per-batch trace bounds, + and one incremental candidate per trace, never individual event copies or + four globally rewritten scope indexes. Mixed trace scopes use batch parts. Exact + clipped minutes read footer-pruned Parquet, and compaction derives complete + output contributions from cached inputs. Body search matches redacted text. + Analytical service/edge watermark lag is separate. Completed-batch writes + have their own gate and write-pool slot; analytical writes use disjoint tables. + Maintenance must hold both gates for checkpointing. +- Batch format 3, including its physical schema, is the only accepted telemetry + format. Schema changes require a format version change. Disable schema unioning + and Hive partition inference; use native Parquet binding so VARIANT extracts + can reach the scan. Pre-project hot messaging fields into scalar read-view + columns; this preview does not push general VARIANT extracts across views. + Reject unsupported metadata before cleanup or schema rewriting, preserve those files, and add + no legacy reader or format fallback. +- Keep native `TIMESTAMPTZ_NS` columns in time predicates. Bind Go window + parameters as `?::TIMESTAMP_NS::TIMESTAMPTZ_NS` to preserve nanoseconds; + cast returned timestamps and datetime-function arguments only. Every engine + connection uses UTC. Do not change Parquet UTC-instant semantics for speed. +- Offline verification reuses one bounded, non-spilling native engine to decode + all Parquet columns and checks physical schemas, complete span sort tuples, + and exact index ranges. Operational errors and unsupported formats never + authorize quarantine. Discarded hashes force decoding; they are not checksums. +- Keep DuckDB 2's memory-governed asynchronous I/O defaults unless measurements + justify tuning them. Do not force an unbounded read-ahead depth. +- Arbitrary SQL is a single read-only SELECT over approved telemetry relations. + Parse its AST and describe/project results on the same connection and pinned + Parquet snapshot. Keep engine file access and configuration locked down. +- Rooted service traversal uses keyed recursion over the complete scoped edge + rollup, keeps namespaces separate, and enforces hop, accumulated-node, and + execution-time limits. Report truncation explicitly. + + +## API and MCP naming + +Use the same naming conventions as Monk, Goal, Cipher, and ResponseKeeper +where the operations have the same meaning. Product-specific resources and +protocol-defined contracts keep their own semantics. + +- Application HTTP routes use `/api`, lowercase words, meaningful slash-separated + domains/resources/actions, and plural collections. Do not use hyphens in + product-defined static path segments. Opaque resource IDs may contain hyphens. + Singular paths are appropriate for genuine + singleton resources or read views. Protocol-defined paths keep their required + spelling, including `/.well-known/oauth-authorization-server`. +- GET reads, POST creates or invokes an action, PUT replaces the writable + representation, PATCH partially modifies it, and DELETE removes it. + Choose the method from the handler's behavior, not its current name. +- Custom actions use POST and a slash-separated action, for example + `/api/users/{id}/access/revoke` or `/api/settings/ingest/token/rotate`. + Each segment should have a domain, resource, or action meaning; do not + mechanically split compound words. Colon actions are conventions in other + API ecosystems. +- Equivalent authentication flows use `/api/auth/me`, `/api/auth/code/send`, + `/api/auth/code/verify`, and `POST /api/auth/logout`. Flow selection, passkeys, + account linking, and sign-in link verification are distinct operations. +- Operational routes use `/healthz` for liveness, `/readyz` for readiness, + and `/metrics` for Prometheus exposition. Preserve authorization requirements. +- MCP tool names use verb-first snake_case and describe their behavior: + `get`, `list`, `search`, `inspect`, `create`, `replace`, and domain actions. + Full replacement uses `replace`, not `update`. Do not add product prefixes + solely to avoid collisions in clients that aggregate servers. +- New product-owned JSON fields and query parameters use snake_case. Preserve + protocol-defined names, including MCP, OAuth, OTLP, and AG-UI fields. Existing + client-contract exceptions require a deliberate contract change. +- Product CalVer, client-contract versions, and protocol versions are separate. + Do not put the product release or maturity suffix in API paths or tool names. +- Breaking naming changes update registrations, authorization classification, + clients, tests, metrics configuration, and generated documentation together. + Remove superseded routes and handlers; add no aliases or fallback behavior. + +HTTP method semantics follow [RFC 9110](https://www.rfc-editor.org/rfc/rfc9110.html) +and [RFC 5789](https://www.rfc-editor.org/rfc/rfc5789.html). The path and casing +rules above are project conventions, not a universal yearly API standard. +MCP names follow the published +[2026-07-28 tool-name guidance](https://modelcontextprotocol.io/specification/2026-07-28/server/tools#tool-names). + +The following query, annotation and rendering constraints are copied verbatim from the **spec**: + +## Execution + +1. Validate the spec, resolve variables in dependency order, and choose each + panel's window and bucket from the dashboard time, the panel override and + the client's panel width. +2. Compile structured queries to SQL. Check SQL panels with the guard. +3. Bind the Parquet snapshot for the window through `bindSnapshot`, so file + pruning applies, then run with named parameters on one connection under the + read gate. Each panel has a 10-second timeout. Tables, bars and SQL panels + cap at 1000 rows; time series cap at 2000 points per series, and a series + beyond `top` folds into Other. One request holds at most 200,000 cells; + past that, time series drop their oldest buckets and say so. When the + whole request runs out of time, finished panels still return and the rest + report that they did not run. +4. With comparison on, run the same query shifted by the range and return it + alongside. +5. Return a frame per panel: columns with `name`, `type`, `role` (`time`, + `dimension`, `measure`) and `unit`, values in columnar arrays, time as + integer Unix milliseconds, plus `status` (`ok`, `empty`, `error`), timing, + and the SQL that ran. +6. When a panel is empty, the executor reruns its count with each filter + removed in turn, bounded to eight reruns, and reports the filter that empties + it ("no spans match `http_route = '/cart'` for service frontend; seen routes + include /api/cart"). This is what lets the agent fix or drop a panel before + saving (#232 item 9). + +A dashboard refresh sends one `POST /api/panels/query` with every visible +panel. Panels scrolled out of view, and all panels in a background tab, do not +refresh (#232 item 30). + + +## Annotations + +- **Deploys.** The rollup cycle maintains `version_rollup(namespace, service, + service_version, first_seen, last_seen)` from new batches, in its own + analytical table as AGENTS.md requires. A deploy is the `first_seen` of a + version other than the service's first observed version. +- **Anomalies.** The detector's findings become time ranges with service, + title and severity. If the current snapshot does not retain history, the + detector writes each finding to a bounded `anomaly_log` table. + +Both render as a dashed vertical marker or a shaded band, with a tooltip, on +every time panel whose filters include the affected service, and on all time +panels when no service filter applies. + + +- **Rendering.** ECharts with the canvas renderer for dashboard panels, LTTB + sampling as a guard behind server bucketing, and the chart theme read from + `ui/tokens.ts`. Tables use `@tanstack/react-table` v9 drawn with Mantine. +- **Accessibility.** Every chart has the Inspect data table, an `aria-label` + summary, keyboard-reachable menus, and status conveyed by Fanout's health + shapes as well as color. Categorical colors use the first four series slots, + which pass the CVD validator; panels with more series rely on the legend and + direct labels. + +## Recorded design choices + +1. Use **POST `/api/annotations`**, as the binding outline requires, in place of the spec API table's GET spelling. The body has `from`, `to`, `services` and optional `namespace`; no GET alias and no annotation MCP tool (none is requested by the spec). +2. Version history uses an independent immutable-batch watermark plus `rollup_state.version_rollup_v1` for progress. Process at most 64 batches/64,000 source rows per transaction, admitting one indivisible oversized batch. Drain passes under a two-second phase budget in the read-cache worker and rollup cycle, yielding the analytical gate between passes. Transfer processed markers to compaction outputs only when every input is marked, and clear the backlog-limited flag when drained; disclose history caps separately. Min/max upserts are idempotent across compaction and late publication. Retain at most 100,000 version records and 30 days of inactive history; preserve the initial version for each retained service. Report caps explicitly. +3. Detector findings have the detector's existing default namespace scope; an empty scope is a global finding and is returned only for an unscoped annotation request. Coalesce overlapping lookbacks into one open row per (namespace, service, kind), extending its end_time; retain separate episodes after a gap, 30 days and 10,000 rows; `abs(z_score) >= 4` is bad, otherwise warn. The shaded range is the detection lookback ending at detection time. +4. Scatter uses one point per item (`query.by[0]`), exactly two aggregate measures, and optional `by[1]` colour. Each axis has its own `x_scale`/`y_scale`; each measure retains its own unit. `x_unit` overrides the x axis and `unit` overrides the y axis; both must be known units. Scatter and tables are exempt from the single-axis unit-family rule. State timeline requires one item dimension, one measure and thresholds. +5. Logs and traces use fixed server projections and no aggregate measures; patterns require `count()`, group by `body_template`, and return a JSON-encoded dense trend with at most 240 points. Structured row panels reject SQL, arbitrary projections and invalid sort values. +6. Topology/health accept only guarded equality filters on namespace/service; reject other expressions instead of dropping them. They call the existing observability services. No duplicate rollup SQL. +7. Drill URL payload is bounded JSON in `drill=` containing panel, kind, absolute range, dimension values and optional trace ID. SQL panels cannot promise filter lineage and reject drill/exemplar requests. Logs drill reuses the checked log panel with the clipped range and dimensions; trace selection calls the existing observability trace endpoint and renders its embedded correlated logs. +8. Deploy split uses the latest matching deploy **inside the panel's effective window**, one split instant for the whole bar. Without one, return a normal unsplit frame and a diagnosis. Before/since rates use each subwindow's duration; labels and comparison values remain exact. Annotation data is fetched once with the union of visible panel windows and shared with rendering. + +## Review Focus + +1. Incremental annotations never scan all batches: Task 1 `TestM2VersionIncrementalLateBatch`, `TestM2VersionPassAndHistoryCaps`, `TestM2AnnotationHistoryBounds` and `TestM2AnnotationSourcesNoRawScan` execute against the native engine and bound each pass/history table. +2. Exemplars/drill cannot bypass filters or owners: Task 2 `TestM2ExemplarsCheckedScope`, `TestM2ExemplarsRejectForgedDimensions`, `TestM2ExemplarRoutePolicy`; Task 10 `drill.test.tsx` covers URL reproduction, cancellation and trace logs. Inline reads use ReadTelemetry, never saved-dashboard lookup. +3. 24-hour heatmap/timeline frames stay within the cell budget: Task 3 `TestM2DistributionBudget` and Task 4 `TestM2TimelineBudget` execute real fixtures, assert truncation and the 200,000-cell batch budget. +4. Crosshair/brush do not trigger per-pixel URL writes or recreate charts: Task 9 `interaction.test.tsx` and the extended `echart-canvas.test.tsx` exercise group cleanup, stable options and one brush-end history push; Task 12 `annotation-refresh.test.tsx` and `use-panel-results.test.tsx` pins S8. +5. All nine new types show empty/error/loading/partial states: Tasks 7–8 `new-viz.test.tsx` iterate the nine types through PanelCard; Task 15 repeats them in both themes on replayed data. Registry test pins exactly fifteen types (S9). + +## Execution setup (controller) + +```bash +rtk proxy mkdir -p .superpowers/gocache .superpowers/gotmp +rtk proxy env GOCACHE="$PWD/.superpowers/gocache" GOTMPDIR="$PWD/.superpowers/gotmp" GOFLAGS=-mod=readonly GOPROXY=off just test ./internal/panel/... +``` + +For later Go commands, export those four values in the controller's shell first. Do not run a dependency install or regenerate module files to work around an offline cache failure. Record the exact blocked gate if a dependency is absent. + +--- + +### Task 1: Annotation sources and the classified read route + +**Files:** +- Create: `internal/annotations/service.go`, `internal/query/annotations.go`, `internal/query/annotations_test.go`, `internal/api/annotations.go`, `internal/api/annotations_test.go` +- Modify: `internal/query/views.go`, `internal/query/duck.go`, `internal/query/batch_cache.go`, `internal/query/writegate/write_gate.go`, `internal/intelligence/detector.go`, `internal/api/auth_middleware.go`, `cmd/fanout/main.go` + +**Interfaces:** +- Consumes existing: `query.NewDuck(ctx context.Context, cfg config.Config, repository *telemetrystore.Repository) (*query.Duck, error)`; `(*Duck).writer() *sql.DB`; `(*Duck).lockRollupParquetRead(ctx context.Context) error`; `(*Duck).physicalSource(signal string, batches []telemetry.BatchMetadata) string`; `cleanSource(signal, physical string) string`; `storeRollupWatermark(ctx context.Context, tx *sql.Tx, key string, watermark int64) error`; `(*Duck).rollupOnce(ctx context.Context) (int, error)`; `(*Detector).runCheck(ctx context.Context)`; `(*Detector).GenerateSnapshot(ctx context.Context) IntelligenceSnapshot`; `(*Duck).DefaultNamespace() string`. +- Produces: `annotations.Request`, `Deploy`, `Anomaly`, `Response`; `annotations.New(db queryrows.Queryer) *annotations.Service`; `(*Service).Read(ctx context.Context, req Request) (Response, error)`; `(*Duck).RefreshVersionRollup(ctx context.Context) (int64, error)`; `(*Duck).RecordAnomalies(ctx context.Context, findings []annotations.Anomaly, now time.Time) error`; `api.RegisterAnnotationRoutes(e *echo.Echo, service AnnotationReader)`. +- New DuckDB tables: `version_rollup(namespace, service, service_version, first_seen, last_seen)`; `version_rollup_batches(batch_id, max_ingested)`; `anomaly_log(namespace, service, kind, start_time, end_time, title, severity)`; watermark keys `version_rollup_v1`, `version_rollup_v1_limited`, `version_rollup_v1_history_limited`. No Go/TypeScript control-storage interface changes. +- HTTP: POST `/api/annotations`, ReadTelemetry, body `annotations.Request`, response `annotations.Response`. No owner ID or MCP tool. + +- [ ] **Step 1: Write the failing engine and route tests** + +Create `internal/query/annotations_test.go`: + +```go +package query + +import ( + "context" + "fmt" + "strings" + "testing" + "time" + + "github.com/labstack/fanout/internal/annotations" + "github.com/labstack/fanout/internal/config" + "github.com/labstack/fanout/internal/queryrows" + "github.com/labstack/fanout/internal/telemetry" + telemetrystore "github.com/labstack/fanout/internal/telemetry/store" +) + +func versionEngine(t *testing.T) (*Duck, *telemetrystore.Repository) { + t.Helper() + cfg := config.Config{DataDir: t.TempDir(), DuckDBMemory: "256MB", DuckDBThreads: 2, DuckDBMaxConns: 4, RetentionDays: 30} + repo, err := telemetrystore.Open(cfg.TelemetryDir()) + if err != nil { + t.Fatal(err) + } + d, err := NewDuck(t.Context(), cfg, repo) + if err != nil { + t.Fatal(err) + } + t.Cleanup(func() { _ = d.Close(); _ = repo.Close() }) + return d, repo +} + +func TestM2VersionIncrementalLateBatch(t *testing.T) { + d, repo := versionEngine(t) + at := time.Now().UTC().Add(-time.Hour) + add := func(id, version string, offset time.Duration) { + t.Helper() + n := at.Add(offset).UnixNano() + err := repo.Commit(t.Context(), telemetrystore.Batch{ID: id, Spans: []telemetry.Span{{ + Namespace: "shop", ServiceName: "checkout", ServiceVersion: version, + TraceID: id, SpanID: id, Name: "checkout", Kind: "SPAN_KIND_SERVER", + StartUnixNanos: n, EndUnixNanos: n + 1000000, DurationMS: 1, + IngestedAt: at.UnixNano(), + }}}) + if err != nil { + t.Fatal(err) + } + } + add("v-first", "v1", 0) + if _, err := d.RefreshVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + add("v-late", "v2", 10*time.Minute) // Same ingestion tip; published later. + if _, err := d.RefreshVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + if n, err := d.RefreshVersionRollup(t.Context()); err != nil || n != 0 { + t.Fatalf("noop: %d %v", n, err) + } + got, err := annotations.New(d).Read(t.Context(), annotations.Request{From: at.Add(-time.Minute), To: at.Add(time.Hour), Namespace: "shop", Services: []string{"checkout"}}) + if err != nil { + t.Fatal(err) + } + if len(got.Deploys) != 1 || got.Deploys[0].Version != "v2" || !got.Deploys[0].At.Equal(at.Add(10*time.Minute)) { + t.Fatalf("deploys: %+v", got) + } + var watermark int64 + if err := d.DB.QueryRow(`SELECT last_ingested_unix_nano FROM rollup_state WHERE cache_key='version_rollup_v1'`).Scan(&watermark); err != nil || watermark != at.UnixNano() { + t.Fatalf("watermark: %d %v", watermark, err) + } +} + +func TestM2AnnotationHistoryBounds(t *testing.T) { + d, _ := versionEngine(t) + now := time.Now().UTC() + findings := make([]annotations.Anomaly, 10020) + for i := range findings { + findings[i] = annotations.Anomaly{Namespace: "shop", Service: fmt.Sprint("service-", i), Kind: "latency", From: now.Add(-time.Duration(i+1) * time.Minute), To: now.Add(-time.Duration(i) * time.Minute), Title: "Slow", Severity: "warn"} + } + if err := d.RecordAnomalies(t.Context(), findings, now); err != nil { + t.Fatal(err) + } + if err := d.RecordAnomalies(t.Context(), findings[:1], now); err != nil { + t.Fatal(err) + } + var n int + if err := d.DB.QueryRow(`SELECT count(*) FROM anomaly_log`).Scan(&n); err != nil || n != 10000 { + t.Fatalf("cap: %d %v", n, err) + } + if err := d.RecordAnomalies(t.Context(), nil, now.Add(31*24*time.Hour)); err != nil { + t.Fatal(err) + } + if err := d.DB.QueryRow(`SELECT count(*) FROM anomaly_log`).Scan(&n); err != nil || n != 0 { + t.Fatalf("age: %d %v", n, err) + } +} + +func TestM2AnnotationSourcesNoRawScan(t *testing.T) { + d, repo := versionEngine(t) + at := time.Now().UTC().Add(-time.Hour) + for i, version := range []string{"v1", "v2"} { + n := at.Add(time.Duration(i) * time.Minute).UnixNano() + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: fmt.Sprint("scan-", i), Spans: []telemetry.Span{{Namespace: "shop", ServiceName: "checkout", ServiceVersion: version, TraceID: "trace", SpanID: fmt.Sprint(i), StartUnixNanos: n, EndUnixNanos: n + 1, IngestedAt: n}}, Logs: []telemetry.Log{{Namespace: "shop", ServiceName: "checkout", Body: "real log", EventUnixNanos: n, IngestedAt: n}}}); err != nil { + t.Fatal(err) + } + } + if _, err := d.DrainVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + counter := &annotationCountingEngine{Duck: d} + got, err := annotations.New(counter).Read(t.Context(), annotations.Request{From: at, To: at.Add(time.Hour), Namespace: "shop"}) + if err != nil || len(got.Deploys) != 1 || counter.calls != 3 || counter.raw != 0 { + t.Fatalf("cache reads: %+v calls=%d raw=%d err=%v", got, counter.calls, counter.raw, err) + } +} + +type annotationCountingEngine struct { + *Duck + calls, raw int +} + +func (e *annotationCountingEngine) QueryContext(ctx context.Context, text string, args ...any) (queryrows.Rows, error) { + e.calls++ + for _, source := range []string{"FROM spans", "FROM logs", "FROM metrics", "read_parquet"} { + if strings.Contains(text, source) { + e.raw++ + return nil, fmt.Errorf("raw telemetry read: %s", source) + } + } + return e.Duck.QueryContext(ctx, text, args...) +} + +func TestM2VersionPassAndHistoryCaps(t *testing.T) { + d, repo := versionEngine(t) + at := time.Now().UTC().Add(-time.Hour) + for i := 0; i < 65; i++ { + id := fmt.Sprintf("version-%03d", i) + n := at.Add(time.Duration(i) * time.Millisecond).UnixNano() + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: id, Spans: []telemetry.Span{{Namespace: "shop", ServiceName: "checkout", ServiceVersion: "v1", TraceID: id, SpanID: id, Name: "root", StartUnixNanos: n, EndUnixNanos: n + 1000, DurationMS: .001, IngestedAt: n}}}); err != nil { + t.Fatal(err) + } + } + if n, err := d.RefreshVersionRollup(t.Context()); err != nil || n != 64 { + t.Fatalf("first pass %d %v", n, err) + } + if n, err := d.RefreshVersionRollup(t.Context()); err != nil || n != 1 { + t.Fatalf("remaining pass %d %v", n, err) + } + _, err := d.DB.Exec(`DELETE FROM version_rollup`) + if err != nil { + t.Fatal(err) + } + _, err = d.DB.Exec(`INSERT INTO version_rollup SELECT 'shop','checkout','v-'||i,(?::TIMESTAMP_NS + i*INTERVAL '1 millisecond')::TIMESTAMPTZ_NS,(?::TIMESTAMP_NS + i*INTERVAL '1 millisecond')::TIMESTAMPTZ_NS FROM generate_series(1,100005) t(i)`, at, at) + if err != nil { + t.Fatal(err) + } + if _, err := d.RefreshVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + var count, initial int + if err := d.DB.QueryRow(`SELECT count(*),count(*) FILTER(WHERE service_version='v-1') FROM version_rollup`).Scan(&count, &initial); err != nil || count != 100000 || initial != 1 { + t.Fatalf("bounded history: %d initial %d %v", count, initial, err) + } + got, err := annotations.New(d).Read(t.Context(), annotations.Request{From: at, To: at.Add(time.Hour), Namespace: "shop"}) + if err != nil || !got.Truncated || len(got.Deploys) != 1000 { + t.Fatalf("disclosed cap: %+v %v", got, err) + } +} +func TestM2VersionDrainAndLimitedReset(t *testing.T) { + d, repo := versionEngine(t) + at := time.Now().UTC().Add(-time.Hour) + for i := range 70 { + n := at.UnixNano() + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: fmt.Sprintf("drain-%03d", i), Logs: []telemetry.Log{{Namespace: "shop", ServiceName: "checkout", Resource: map[string]any{"service.version": "v2"}, EventUnixNanos: n, IngestedAt: n}}}); err != nil { + t.Fatal(err) + } + } + if _, err := d.RefreshVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + var limited int + if err := d.DB.QueryRow(`SELECT last_ingested_unix_nano FROM rollup_state WHERE cache_key='version_rollup_v1_limited'`).Scan(&limited); err != nil || limited != 1 { + t.Fatalf("backlog flag=%d %v", limited, err) + } + if n, err := d.DrainVersionRollup(t.Context()); err != nil || n != 6 { + t.Fatalf("drain=%d %v", n, err) + } + if err := d.DB.QueryRow(`SELECT last_ingested_unix_nano FROM rollup_state WHERE cache_key='version_rollup_v1_limited'`).Scan(&limited); err != nil || limited != 0 { + t.Fatalf("stuck backlog=%d %v", limited, err) + } + var marked int + if err := d.DB.QueryRow(`SELECT count(*) FROM version_rollup_batches`).Scan(&marked); err != nil || marked != 70 { + t.Fatalf("markers=%d %v", marked, err) + } +} +func TestM2VersionResourceLogsAndMetrics(t *testing.T) { + d, repo := versionEngine(t) + at := time.Now().UTC().Add(-time.Hour) + n := at.UnixNano() + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: "resources", Logs: []telemetry.Log{{Namespace: "shop", ServiceName: "logsvc", Resource: map[string]any{"service.version": "log-v"}, EventUnixNanos: n, IngestedAt: n}}, Metrics: []telemetry.Metric{{Namespace: "shop", ServiceName: "metricsvc", Name: "n", Type: "gauge", Resource: map[string]any{"service.version": "metric-v"}, EventUnixNanos: n, IngestedAt: n}}}); err != nil { + t.Fatal(err) + } + if _, err := d.DrainVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + rows, err := d.DB.Query(`SELECT service,service_version,first_seen::TIMESTAMP_NS FROM version_rollup ORDER BY service`) + if err != nil { + t.Fatal(err) + } + defer rows.Close() + for _, want := range [][2]string{{"logsvc", "log-v"}, {"metricsvc", "metric-v"}} { + var service, version string + var first time.Time + if !rows.Next() { + t.Fatal("missing resource row") + } + if err := rows.Scan(&service, &version, &first); err != nil || service != want[0] || version != want[1] || !first.Equal(at) { + t.Fatalf("%s %s %v %v", service, version, first, err) + } + } + if rows.Next() || rows.Err() != nil { + t.Fatalf("extra rows or error: %v", rows.Err()) + } +} +func TestM2VersionMarkersCompactionRetention(t *testing.T) { + d, repo := versionEngine(t) + at := time.Now().UTC().Truncate(time.Hour) + for i := range 8 { + n := at.Add(time.Duration(i) * time.Second).UnixNano() + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: fmt.Sprint("part-", i), Spans: []telemetry.Span{{Namespace: "shop", ServiceName: "checkout", ServiceVersion: "v1", TraceID: "trace", SpanID: fmt.Sprint(i), StartUnixNanos: n, EndUnixNanos: n + 1, IngestedAt: at.UnixNano()}}}); err != nil { + t.Fatal(err) + } + } + if _, err := d.DrainVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + if n, err := repo.CompactParquet(t.Context(), d, 8); err != nil || n != 8 { + t.Fatalf("compact=%d %v", n, err) + } + var n int + if err := d.DB.QueryRow(`SELECT count(*) FROM version_rollup_batches`).Scan(&n); err != nil || n != 9 { + t.Fatalf("output marker not transferred=%d %v", n, err) + } + if count, err := d.RefreshVersionRollup(t.Context()); err != nil || count != 0 { + t.Fatalf("rescanned processed output=%d %v", count, err) + } + if err := d.DB.QueryRow(`SELECT count(*) FROM version_rollup_batches`).Scan(&n); err != nil || n != 1 { + t.Fatalf("retired inputs=%d %v", n, err) + } + if count, err := repo.PruneParquet(t.Context(), d, at.Add(time.Hour).UnixNano(), 8); err != nil || count != 1 { + t.Fatalf("prune=%d %v", count, err) + } + if _, err := d.RefreshVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + if err := d.DB.QueryRow(`SELECT count(*) FROM version_rollup_batches`).Scan(&n); err != nil || n != 0 { + t.Fatalf("retention markers=%d %v", n, err) + } +} +func TestM2AnomalyCoalescesOpenEpisode(t *testing.T) { + d, _ := versionEngine(t) + at := time.Now().UTC().Add(-time.Hour) + a := annotations.Anomaly{Namespace: "shop", Service: "checkout", Kind: "latency", From: at, To: at.Add(5 * time.Minute), Title: "Slow", Severity: "warn"} + if err := d.RecordAnomalies(t.Context(), []annotations.Anomaly{a}, at.Add(time.Hour)); err != nil { + t.Fatal(err) + } + a.From = at.Add(time.Minute) + a.To = at.Add(6 * time.Minute) + a.Severity = "bad" + if err := d.RecordAnomalies(t.Context(), []annotations.Anomaly{a}, at.Add(time.Hour)); err != nil { + t.Fatal(err) + } + var count int + var first, last time.Time + var severity string + if err := d.DB.QueryRow(`SELECT count(*),min(start_time)::TIMESTAMP_NS,max(end_time)::TIMESTAMP_NS,max(severity) FROM anomaly_log`).Scan(&count, &first, &last, &severity); err != nil || count != 1 || !first.Equal(at) || !last.Equal(a.To) || severity != "bad" { + t.Fatalf("episode=%d %v %v %s %v", count, first, last, severity, err) + } + a.From = at.Add(20 * time.Minute) + a.To = at.Add(25 * time.Minute) + if err := d.RecordAnomalies(t.Context(), []annotations.Anomaly{a}, at.Add(time.Hour)); err != nil { + t.Fatal(err) + } + if err := d.DB.QueryRow(`SELECT count(*) FROM anomaly_log`).Scan(&count); err != nil || count != 2 { + t.Fatalf("separate episodes=%d %v", count, err) + } +} +``` + +Create `internal/api/annotations_test.go`: + +```go +package api + +import ( + "context" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/labstack/fanout/internal/annotations" +) + +type annotationFake struct{} + +func (annotationFake) Read(context.Context, annotations.Request) (annotations.Response, error) { + return annotations.Response{Deploys: []annotations.Deploy{}, Anomalies: []annotations.Anomaly{}}, nil +} +func TestM2AnnotationRoute(t *testing.T) { + s := newTestAuthServer(t) + _, err := s.users.Create("admin@example.com", "", "admin") + if err != nil { + t.Fatal(err) + } + viewer, err := s.users.Create("viewer@example.com", "", "viewer") + if err != nil { + t.Fatal(err) + } + RegisterAnnotationRoutes(s.e, annotationFake{}) + req := sessionRequest(http.MethodPost, "/api/annotations", strings.NewReader(`{"from":"2026-10-01T12:00:00Z","to":"2026-10-01T13:00:00Z","services":["checkout"]}`), s.login(t, viewer)) + req.Header.Set("Content-Type", "application/json") + rec := httptest.NewRecorder() + s.e.ServeHTTP(rec, req) + if rec.Code != 200 || !strings.Contains(rec.Body.String(), `"deploys":[]`) { + t.Fatalf("%d %s", rec.Code, rec.Body) + } + policy, ok := classifyRoute(http.MethodPost, "/api/annotations") + if !ok || policy.capability != ReadTelemetry { + t.Fatalf("policy: %+v %v", policy, ok) + } + if _, ok := classifyRoute(http.MethodGet, "/api/annotations"); ok { + t.Fatal("GET alias allowed") + } +} + +type invalidAnnotationFake struct{} + +func (invalidAnnotationFake) Read(context.Context, annotations.Request) (annotations.Response, error) { + return annotations.Response{}, annotations.ErrRequest +} +func TestM2AnnotationErrRequest400(t *testing.T) { + s := newTestAuthServer(t) + _, err := s.users.Create("admin@example.com", "", "admin") + if err != nil { + t.Fatal(err) + } + viewer, err := s.users.Create("viewer@example.com", "", "viewer") + if err != nil { + t.Fatal(err) + } + RegisterAnnotationRoutes(s.e, invalidAnnotationFake{}) + req := sessionRequest(http.MethodPost, "/api/annotations", strings.NewReader(`{"from":"2026-10-01T13:00:00Z","to":"2026-10-01T12:00:00Z"}`), s.login(t, viewer)) + req.Header.Set("Content-Type", "application/json") + rec := httptest.NewRecorder() + s.e.ServeHTTP(rec, req) + if rec.Code != http.StatusBadRequest || !strings.Contains(rec.Body.String(), annotations.ErrRequest.Error()) { + t.Fatalf("%d %s", rec.Code, rec.Body) + } +} +``` + +- [ ] **Step 2: Run to see failure** + +```bash +rtk just test ./internal/query/... ./internal/api/... -run '"TestM2Version|TestM2Annotation|TestM2Anomaly"' +``` + +Expected: compile failure for missing annotation types and methods. + +- [ ] **Step 3: Implement the analytical tables and bounded incremental writer** + +Create `internal/query/annotations.go`: + +```go +package query + +import ( + "context" + "database/sql" + "fmt" + "sort" + "strings" + "time" + + "github.com/labstack/fanout/internal/annotations" + "github.com/labstack/fanout/internal/query/writegate" + "github.com/labstack/fanout/internal/telemetry" +) + +const createVersionRollupTable = `CREATE TABLE version_rollup ( + namespace VARCHAR, service VARCHAR, service_version VARCHAR, + first_seen TIMESTAMPTZ_NS, last_seen TIMESTAMPTZ_NS, + PRIMARY KEY(namespace,service,service_version))` +const createVersionBatchesTable = `CREATE TABLE version_rollup_batches (batch_id VARCHAR PRIMARY KEY,max_ingested BIGINT)` +const createAnomalyLogTable = `CREATE TABLE anomaly_log ( + namespace VARCHAR,service VARCHAR,kind VARCHAR,start_time TIMESTAMPTZ_NS,end_time TIMESTAMPTZ_NS, + title VARCHAR,severity VARCHAR,PRIMARY KEY(namespace,service,kind,start_time))` + +func createAnnotationTables(db *sql.DB) error { + if err := ensureCacheTable(db, "version_rollup", createVersionRollupTable, + "namespace", "service", "service_version", "first_seen", "last_seen"); err != nil { + return err + } + if err := ensureCacheTable(db, "version_rollup_batches", createVersionBatchesTable, + "batch_id", "max_ingested"); err != nil { + return err + } + return ensureCacheTable(db, "anomaly_log", createAnomalyLogTable, + "namespace", "service", "kind", "start_time", "end_time", "title", "severity") +} + +func (d *Duck) RefreshVersionRollup(ctx context.Context) (int64, error) { + if d.repository == nil { + return 0, nil + } + ctx, cancel := context.WithTimeout(ctx, 10*time.Second) + defer cancel() + unlock, err := d.writeGate.LockContext(ctx, writegate.WriteRollupVersion) + if err != nil { + return 0, err + } + defer unlock() + if err := d.lockRollupParquetRead(ctx); err != nil { + return 0, err + } + defer d.parquetMu.RUnlock() + tx, err := d.writer().BeginTx(ctx, nil) + if err != nil { + return 0, err + } + defer func() { _ = tx.Rollback() }() + rows, err := tx.QueryContext(ctx, `SELECT batch_id FROM version_rollup_batches`) + if err != nil { + return 0, err + } + marked := map[string]bool{} + for rows.Next() { + var id string + if err := rows.Scan(&id); err != nil { + rows.Close() + return 0, err + } + marked[id] = true + } + err = rows.Err() + rows.Close() + if err != nil { + return 0, err + } + batches := d.repository.Parquet.BatchMetadata() + active := map[string]bool{} + pending := []telemetry.BatchMetadata{} + count := 0 + for _, b := range batches { + active[b.ID] = true + size := b.Spans + b.Logs + b.Metrics + if marked[b.ID] || len(pending) >= 64 || (len(pending) > 0 && count+size > 64000) { + continue + } + pending = append(pending, b) + count += size + } + for id := range marked { + d.cachePublishMu.Lock() + publishing := d.cachePublishing[id] + d.cachePublishMu.Unlock() + if !active[id] && !publishing { + if _, err := tx.ExecContext(ctx, `DELETE FROM version_rollup_batches WHERE batch_id=?`, id); err != nil { + return 0, err + } + } + } + parts := []string{} + for _, signal := range []string{"spans", "logs", "metrics"} { + selected := []telemetry.BatchMetadata{} + for _, b := range pending { + if _, n := batchTime(b, signal); n > 0 { + selected = append(selected, b) + } + } + if len(selected) == 0 { + continue + } + version, column := `TRY_CAST(resource['service.version'] AS VARCHAR)`, "time" + if signal == "spans" { + version = "service_version" + column = "start_time" + } + parts = append(parts, fmt.Sprintf(`SELECT coalesce(namespace,'') AS namespace,coalesce(service,'') AS service,%s AS service_version,%s AS t FROM (%s)`, version, column, cleanSource(signal, d.physicalSource(signal, selected)))) + } + if len(parts) > 0 { + statement := `INSERT INTO version_rollup SELECT namespace,service,service_version,min(t),max(t) FROM (` + strings.Join(parts, " UNION ALL ") + `) WHERE service<>'' AND service_version IS NOT NULL AND service_version<>'' GROUP BY 1,2,3 +ON CONFLICT(namespace,service,service_version) DO UPDATE SET first_seen=least(version_rollup.first_seen,excluded.first_seen),last_seen=greatest(version_rollup.last_seen,excluded.last_seen)` + if _, err := tx.ExecContext(ctx, statement); err != nil { + return 0, err + } + } + for _, b := range pending { + if _, err := tx.ExecContext(ctx, `INSERT INTO version_rollup_batches VALUES (?,?)`, b.ID, b.MaxIngestedNanos); err != nil { + return 0, err + } + } + // Whole inactive services retire together, including their initial version. + if _, err := tx.ExecContext(ctx, `DELETE FROM version_rollup WHERE (namespace,service) IN (SELECT namespace,service FROM version_rollup GROUP BY 1,2 HAVING max(last_seen) 0 { + if err := storeRollupWatermark(ctx, tx, "version_rollup_v1_history_limited", 1); err != nil { + return 0, err + } + } + remaining := 0 + for _, b := range batches { + if !marked[b.ID] { + remaining++ + } + } + limited := int64(0) + if remaining > len(pending) { + limited = 1 + } + if err := storeRollupWatermark(ctx, tx, "version_rollup_v1_limited", limited); err != nil { + return 0, err + } + var tip int64 + if err := tx.QueryRowContext(ctx, `SELECT coalesce(max(max_ingested),0) FROM version_rollup_batches`).Scan(&tip); err != nil { + return 0, err + } + var previous int64 + if err := tx.QueryRowContext(ctx, `SELECT coalesce(max(last_ingested_unix_nano),0) FROM rollup_state WHERE cache_key='version_rollup_v1'`).Scan(&previous); err != nil { + return 0, err + } + if err := storeRollupWatermark(ctx, tx, "version_rollup_v1", max(tip, previous)); err != nil { + return 0, err + } + if err := tx.Commit(); err != nil { + return 0, err + } + return int64(len(pending)), nil +} + +func (d *Duck) RecordAnomalies(ctx context.Context, findings []annotations.Anomaly, now time.Time) error { + ctx, cancel := context.WithTimeout(ctx, 10*time.Second) + defer cancel() + unlock, err := d.writeGate.LockContext(ctx, writegate.WriteAnomalyLog) + if err != nil { + return err + } + defer unlock() + tx, err := d.writer().BeginTx(ctx, nil) + if err != nil { + return err + } + defer func() { _ = tx.Rollback() }() + findings = append([]annotations.Anomaly(nil), findings...) + sort.SliceStable(findings, func(i, j int) bool { return findings[i].To.Before(findings[j].To) }) + if len(findings) > 10000 { + findings = findings[len(findings)-10000:] + } + for _, a := range findings { + if !a.From.Before(a.To) { + continue + } + // Delete and reinsert the merged episode inside this transaction. The + // previous end must overlap the new lookback; disconnected episodes survive. + var first time.Time + err := tx.QueryRowContext(ctx, `SELECT min(start_time)::TIMESTAMP_NS FROM anomaly_log +WHERE namespace=? AND service=? AND kind=? AND end_time>=?::TIMESTAMP_NS::TIMESTAMPTZ_NS AND start_time<=?::TIMESTAMP_NS::TIMESTAMPTZ_NS +HAVING count(*)>0`, a.Namespace, a.Service, a.Kind, a.From.UTC(), a.To.UTC()).Scan(&first) + from := a.From.UTC() + to := a.To.UTC() + if err != nil && err != sql.ErrNoRows { + return err + } + if err == nil { + if first.Before(from) { + from = first.UTC() + } + var last time.Time + if err := tx.QueryRowContext(ctx, `SELECT max(end_time)::TIMESTAMP_NS FROM anomaly_log +WHERE namespace=? AND service=? AND kind=? AND end_time>=?::TIMESTAMP_NS::TIMESTAMPTZ_NS AND start_time<=?::TIMESTAMP_NS::TIMESTAMPTZ_NS`, a.Namespace, a.Service, a.Kind, a.From.UTC(), a.To.UTC()).Scan(&last); err != nil { + return err + } + if last.After(to) { + to = last.UTC() + } + if _, err := tx.ExecContext(ctx, `DELETE FROM anomaly_log WHERE namespace=? AND service=? AND kind=? AND end_time>=?::TIMESTAMP_NS::TIMESTAMPTZ_NS AND start_time<=?::TIMESTAMP_NS::TIMESTAMPTZ_NS`, a.Namespace, a.Service, a.Kind, a.From.UTC(), a.To.UTC()); err != nil { + return err + } + } + if _, err := tx.ExecContext(ctx, `INSERT INTO anomaly_log VALUES (?,?,?,?::TIMESTAMP_NS::TIMESTAMPTZ_NS,?::TIMESTAMP_NS::TIMESTAMPTZ_NS,?,?)`, a.Namespace, a.Service, a.Kind, from, to, a.Title, a.Severity); err != nil { + return err + } + } + if _, err := tx.ExecContext(ctx, `DELETE FROM anomaly_log WHERE end_time 30*24*time.Hour || len(req.Services) > 100 || len(req.Namespace) > 200 { + return out, ErrRequest + } + suffix := "" + args := []any{req.From.UTC(), req.To.UTC(), req.Namespace, req.Namespace} + if len(req.Services) > 0 { + slots := make([]string, len(req.Services)) + for i, v := range req.Services { + if v == "" || len(v) > 200 { + return out, ErrRequest + } + slots[i] = "?" + args = append(args, v) + } + suffix = " AND service IN (" + strings.Join(slots, ",") + ")" + } + ctx, cancel := context.WithTimeout(ctx, 10*time.Second) + defer cancel() + rows, err := s.db.QueryContext(ctx, `WITH versions AS (SELECT *,row_number() OVER(PARTITION BY namespace,service ORDER BY first_seen,service_version) AS n FROM version_rollup) +SELECT namespace,service,service_version,first_seen::TIMESTAMP_NS FROM versions +WHERE first_seen>=?::TIMESTAMP_NS::TIMESTAMPTZ_NS AND first_seen1`+suffix+` ORDER BY first_seen DESC,namespace,service,service_version LIMIT 1001`, args...) + if err != nil { + return out, err + } + for rows.Next() { + var a Deploy + if err := rows.Scan(&a.Namespace, &a.Service, &a.Version, &a.At); err != nil { + rows.Close() + return out, err + } + a.At = a.At.UTC() + out.Deploys = append(out.Deploys, a) + } + err = rows.Err() + rows.Close() + if err != nil { + return out, err + } + if len(out.Deploys) > 1000 { + out.Deploys = out.Deploys[:1000] + out.Truncated = true + } + rows, err = s.db.QueryContext(ctx, `SELECT namespace,service,kind,start_time::TIMESTAMP_NS,end_time::TIMESTAMP_NS,title,severity FROM anomaly_log +WHERE end_time>?::TIMESTAMP_NS::TIMESTAMPTZ_NS AND start_time 1000 { + out.Anomalies = out.Anomalies[:1000] + out.Truncated = true + } + rows, err = s.db.QueryContext(ctx, `SELECT coalesce(max(last_ingested_unix_nano),0) FROM rollup_state WHERE cache_key IN ('version_rollup_v1_limited','version_rollup_v1_history_limited')`) + if err != nil { + return out, err + } + if rows.Next() { + var limited int64 + if err := rows.Scan(&limited); err != nil { + rows.Close() + return out, err + } + out.Truncated = out.Truncated || limited > 0 + } + err = rows.Err() + rows.Close() + return out, err +} +``` + +In `internal/intelligence/detector.go`, import `internal/annotations`. Immediately after `snapshot := d.GenerateSnapshot(ctx)` in `runCheck`, insert: + +```go +findings := detectorAnnotations(snapshot, d.duck.DefaultNamespace(), d.config.LookbackWindow) +if err := d.duck.RecordAnomalies(ctx, findings, snapshot.GeneratedAt); err != nil { + slog.Error("persist detector annotations", "error", err) +} + +``` + +Append the deterministic mapping helper to detector.go: + +```go +func detectorAnnotations(snapshot IntelligenceSnapshot, namespace string, lookback time.Duration) []annotations.Anomaly { + findings := make([]annotations.Anomaly, 0, len(snapshot.Anomalies)) + for _, a := range snapshot.Anomalies { + severity := "warn" + if math.Abs(a.ZScore) >= 4 { + severity = "bad" + } + end := a.DetectedAt.UTC().Truncate(time.Minute) + findings = append(findings, annotations.Anomaly{Namespace: namespace, Service: a.ServiceName, Kind: string(a.Type), From: end.Add(-lookback), To: end, Title: a.Description, Severity: severity}) + } + return findings +} +``` + +Create `internal/intelligence/annotations_test.go`: + +```go +package intelligence + +import ( + "github.com/labstack/fanout/internal/annotations" + "github.com/labstack/fanout/internal/config" + "github.com/labstack/fanout/internal/query" + telemetrystore "github.com/labstack/fanout/internal/telemetry/store" + "testing" + "time" +) + +func TestM2DetectorAnnotationMapping(t *testing.T) { + cfg := config.Config{DataDir: t.TempDir(), DuckDBMemory: "256MB", DuckDBThreads: 2, DuckDBMaxConns: 2, RetentionDays: 30} + repo, err := telemetrystore.Open(cfg.TelemetryDir()) + if err != nil { + t.Fatal(err) + } + defer repo.Close() + duck, err := query.NewDuck(t.Context(), cfg, repo) + if err != nil { + t.Fatal(err) + } + defer duck.Close() + at := time.Now().UTC().Truncate(time.Minute) + snapshot := IntelligenceSnapshot{GeneratedAt: at, Anomalies: []Anomaly{{ServiceName: "checkout", Type: AnomalyLatencyDegradation, ZScore: -4, DetectedAt: at, Description: "Slow"}, {ServiceName: "payment", Type: AnomalyVolumeChange, ZScore: 3, DetectedAt: at, Description: "Low volume"}}} + findings := detectorAnnotations(snapshot, "shop", 5*time.Minute) + if err := duck.RecordAnomalies(t.Context(), findings, at); err != nil { + t.Fatal(err) + } + got, err := annotations.New(duck).Read(t.Context(), annotations.Request{From: at.Add(-time.Hour), To: at.Add(time.Minute), Namespace: "shop"}) + if err != nil || len(got.Anomalies) != 2 { + t.Fatalf("persisted: %+v %v", got, err) + } + for _, a := range got.Anomalies { + want := "warn" + if a.Service == "checkout" { + want = "bad" + } + if a.Namespace != "shop" || a.Severity != want || !a.From.Equal(at.Add(-5*time.Minute)) || !a.To.Equal(at) { + t.Fatalf("mapping: %+v", a) + } + } +} +``` + +- [ ] **Step 5: Implement and classify the route** + +Create `internal/api/annotations.go`: + +```go +package api + +import ( + "context" + "errors" + "net/http" + + "github.com/labstack/echo/v5" + "github.com/labstack/fanout/internal/annotations" +) + +type AnnotationReader interface { + Read(context.Context, annotations.Request) (annotations.Response, error) +} + +func RegisterAnnotationRoutes(e *echo.Echo, service AnnotationReader) { + e.POST("/api/annotations", func(c *echo.Context) error { + var req annotations.Request + if err := decodeStrict(c, &req, 32<<10); err != nil { + return err + } + out, err := service.Read(c.Request().Context(), req) + if errors.Is(err, annotations.ErrRequest) { + return echo.NewHTTPError(400, err.Error()) + } + if err != nil { + return panelError(c, err, "annotations unavailable") + } + return c.JSON(http.StatusOK, out) + }, RequireCapability(ReadTelemetry)) +} +``` + +In `classifyRoute`, add `path == "/api/annotations"` to the existing POST ReadTelemetry case. In `cmd/fanout/main.go`, import `internal/annotations` and insert after `api.RegisterPanelRoutes(e, panels)`: + +```go +api.RegisterAnnotationRoutes(e, annotations.New(q)) + +``` + +- [ ] **Step 6: Run to see pass and review** + +```bash +rtk just test ./internal/query/... ./internal/api/... ./internal/intelligence/... -run '"TestM2Version|TestM2Annotation|TestM2Anomaly|TestM2DetectorAnnotation|TestVolume|TestErrorRate"' +rtk just test ./internal/query/... ./internal/api/... ./internal/intelligence/... +``` + +Expected: PASS. Inspect generated SQL in the fixture failures: version reads are from analytical tables and new-file work is an explicit bounded file list. No changes to the completed-batch write gate or SQLite. + +Before the controller commit, format all Go changes: + +```bash +rtk just fmt +``` + +Regenerate route/tool/setting reference docs before this task’s commit: + +```bash +rtk just docs-generate +rtk just docs-generate-check +``` + +- [ ] **Step 7: Commit (controller)** + +```bash +rtk git add site/src/content/docs/reference internal/annotations internal/query/annotations.go internal/query/annotations_test.go internal/query/views.go internal/query/duck.go internal/query/batch_cache.go internal/query/writegate/write_gate.go internal/intelligence/detector.go internal/intelligence/annotations_test.go internal/api/annotations.go internal/api/annotations_test.go internal/api/auth_middleware.go cmd/fanout/main.go +rtk git commit -m "feat(annotations): persist bounded deploy and detector history" +``` + +--- + +### Task 2: Checked exemplars behind a panel selection + +**Files:** +- Create: `internal/panel/exemplars.go`, `internal/panel/exemplars_test.go` +- Create: `internal/panel/log_source.go` +- Modify: `internal/observability/redact.go`, `internal/api/panels.go`, `internal/api/panels_test.go`, `internal/api/auth_middleware.go` + +**Interfaces:** +- Consumes existing: `(*Executor).check(ctx context.Context, d *Dashboard) (*Checked, error)`; `(*Executor).values(ctx context.Context, d *Dashboard, checked *Checked, start, end time.Time, supplied map[string]Value) (map[string]Value, error)`; `resolveWindow(t Time, override *PanelTime, now time.Time, maxWindow time.Duration) (time.Time, time.Time, error)`; `buildWhere(sig *signal, filters []Filter, scope Scope) (string, []any, error)`; `(*signal).field(text string) (FieldRef, error)`; `(FieldRef).stringSQL() string`; `queryrows.WithWindow(ctx context.Context, window queryrows.Window) context.Context`. +- Produces: `checkedTraceSQL(source,where string,limit int,order,startProjection string) string`; `ExemplarRequest`, `Exemplar`, `ExemplarResponse`; `(*Executor).Exemplars(ctx context.Context, req ExemplarRequest) (ExemplarResponse, error)`; `(*PanelHandler).exemplars(c *echo.Context) error`. Go signatures and JSON fields are defined in the complete code below. No TypeScript consumer until Task 10. +- Extends `api.PanelEngine` with `Exemplars(context.Context, panel.ExemplarRequest) (panel.ExemplarResponse, error)`; fake engine receives that method. POST `/api/panels/exemplars` uses ReadTelemetry, without saved-dashboard lookup or owner input. + +- [ ] **Step 1: Write failing tests** + +Create `internal/panel/exemplars_test.go`: + +```go +package panel + +import ( + "errors" + "github.com/labstack/fanout/internal/telemetry" + "math" + "slices" + "testing" + "time" +) + +func TestM2ExemplarsCheckedScope(t *testing.T) { + e := newFixtureExecutor(t) + req := ExemplarRequest{Dashboard: shopDashboard(), PanelID: "by_route", From: fixtureStart.Add(30 * time.Minute), To: fixtureStart.Add(31 * time.Minute), Dimensions: map[string]string{"http_route": "/cart"}} + got, err := e.Exemplars(t.Context(), req) + if err != nil { + t.Fatal(err) + } + if len(got.Traces) != 1 || got.Traces[0].Service != "checkout" || got.Traces[0].DurationMS != 900 || got.Traces[0].Status != "STATUS_CODE_ERROR" { + t.Fatalf("traces: %+v", got) + } + req.Vars = map[string]Value{"service": {Values: []string{"frontend"}}} + got, err = e.Exemplars(t.Context(), req) + if err != nil || len(got.Traces) != 0 { + t.Fatalf("filter escaped: %+v %v", got, err) + } + req.From = fixtureStart.Add(-time.Hour) + req.To = fixtureStart.Add(2 * time.Hour) + req.Dimensions = nil + req.Vars = nil + got, err = e.Exemplars(t.Context(), req) + if err != nil || len(got.Traces) != 20 || !got.Truncated { + t.Fatalf("cap: %+v %v", got, err) + } +} +func TestM2ExemplarsRejectForgedDimensions(t *testing.T) { + e := newFixtureExecutor(t) + req := ExemplarRequest{Dashboard: shopDashboard(), PanelID: "by_route", From: fixtureStart, To: fixtureStart.Add(time.Hour), Dimensions: map[string]string{"service": "frontend"}} + _, err := e.Exemplars(t.Context(), req) + var problems Problems + want := Problem{Path: "dimensions", Message: "dimensions must name query.by fields and values at most 500 characters", Hint: "select one of the panel grouping fields"} + if !errors.As(err, &problems) || !slices.Contains(problems, want) { + t.Fatalf("got %v want %+v", err, want) + } + req.Dimensions = map[string]string{"http_route": "x'); DROP TABLE spans; --"} + got, err := e.Exemplars(t.Context(), req) + if err != nil || len(got.Traces) != 0 { + t.Fatalf("hostile value: %+v %v", got, err) + } + req.Dashboard.Panels[2].Query.Where = []string{"service IN (SELECT service FROM spans)"} + if _, err := e.Exemplars(t.Context(), req); err == nil { + t.Fatal("guard bypass") + } +} +func TestM2ExemplarBucketValidation(t *testing.T) { + p := &Panel{Query: &Query{From: "spans", Histogram: &Histogram{Field: "duration_ms", Buckets: "log2"}}} + scope := Scope{Start: fixtureStart, End: fixtureStart.Add(time.Hour)} + bad := math.NaN() + upper := 1.0 + cases := []struct { + bucket *SelectionBucket + want Problem + }{ + {&SelectionBucket{Lower: bad}, Problem{Path: "bucket", Message: "bucket needs a spans duration_ms histogram and a finite nonnegative lower bound", Hint: "select a finite duration bucket"}}, + {&SelectionBucket{Lower: 2, Upper: &upper}, Problem{Path: "bucket.upper", Message: "upper must be finite and greater than lower", Hint: "select a larger upper bound or omit it for overflow"}}, + } + for _, tc := range cases { + _, _, err := selectionWhere(p, nil, scope, nil, tc.bucket) + var got Problems + if !errors.As(err, &got) || !slices.Contains(got, tc.want) { + t.Fatalf("got %v want %+v", err, tc.want) + } + } +} +func TestM2ExemplarsLogsCandidateUsesRedactedBody(t *testing.T) { + engine, repo := newTestEngine(t) + n := fixtureStart.UnixNano() + spans := []telemetry.Span{{Namespace: "shop", ServiceName: "checkout", TraceID: "log-trace", SpanID: "root", Name: "root", DurationMS: 1, StartUnixNanos: n, EndUnixNanos: n + 1000000, IngestedAt: n}} + logs := []telemetry.Log{{Namespace: "shop", ServiceName: "checkout", TraceID: "log-trace", Body: "token=secret failed", BodyTemplate: "token=secret failed", EventUnixNanos: n, IngestedAt: n}} + commit(t, repo, spans, logs) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Log lineage", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "p", Title: "P", Viz: "bar", Query: &Query{From: "logs", Where: []string{"body LIKE '%failed%'"}, Measures: []string{"count()"}, By: []string{"severity"}}}}} + req := ExemplarRequest{Dashboard: d, PanelID: "p", From: fixtureStart, To: fixtureStart.Add(time.Minute)} + got, err := e.Exemplars(t.Context(), req) + if err != nil || len(got.Traces) != 1 || got.Traces[0].TraceID != "log-trace" { + t.Fatalf("logs candidate: %+v %v", got, err) + } + req.Dashboard.Panels[0].Query.Where = []string{"body LIKE '%secret%'"} + got, err = e.Exemplars(t.Context(), req) + if err != nil || len(got.Traces) != 0 { + t.Fatalf("searched unredacted source: %+v %v", got, err) + } +} +``` + +Append to `internal/api/panels_test.go` (the existing imports already include context, HTTP, strings, testing): + +```go +func (f *fakePanels) Exemplars(context.Context, panel.ExemplarRequest) (panel.ExemplarResponse, error) { + return panel.ExemplarResponse{Traces: []panel.Exemplar{}}, nil +} +func TestM2ExemplarRoutePolicy(t *testing.T) { + rec := servePanels(t, &fakePanels{}, http.MethodPost, "/api/panels/exemplars", `{"dashboard":{"name":"Inline","panels":[]},"panel_id":"latency","from":"2026-10-01T12:00:00Z","to":"2026-10-01T12:05:00Z","dimensions":{}}`) + if rec.Code != 200 || !strings.Contains(rec.Body.String(), `"traces":[]`) { + t.Fatalf("%d %s", rec.Code, rec.Body) + } + policy, ok := classifyRoute(http.MethodPost, "/api/panels/exemplars") + if !ok || policy.capability != ReadTelemetry { + t.Fatalf("policy: %+v %v", policy, ok) + } + if _, ok := classifyRoute(http.MethodGet, "/api/panels/exemplars"); ok { + t.Fatal("GET accepted") + } +} +``` + +- [ ] **Step 2: Run to see failure** + +```bash +rtk just test ./internal/panel/... ./internal/api/... -run '"TestM2Exemplar"' +``` + +Expected: missing Exemplar types/method. + +- [ ] **Step 3: Implement exemplars** + +Append to `internal/observability/redact.go`: + +```go +// RedactLogBodySQL shares the existing read-path expression with panel projections. +func RedactLogBodySQL(column string) string { return redactLogBodySQL(column) } +``` + +Create `internal/panel/log_source.go`: + +```go +package panel + +import "github.com/labstack/fanout/internal/observability" + +func redactedLogSource() string { + return `SELECT * REPLACE (` + observability.RedactLogBodySQL("body") + ` AS body,` + observability.RedactLogBodySQL("body_template") + ` AS body_template) FROM logs` +} +``` + +Create `internal/panel/exemplars.go`: + +```go +package panel + +import ( + "context" + "fmt" + "math" + "slices" + "sort" + "time" + + "github.com/labstack/fanout/internal/queryrows" +) + +type SelectionBucket struct { + Lower float64 `json:"lower"` + Upper *float64 `json:"upper,omitempty"` +} +type ExemplarRequest struct { + Dashboard Dashboard `json:"dashboard"` + PanelID string `json:"panel_id"` + Time *Time `json:"time,omitempty"` + From time.Time `json:"from"` + To time.Time `json:"to"` + Dimensions map[string]string `json:"dimensions,omitempty"` + Bucket *SelectionBucket `json:"bucket,omitempty"` + Vars map[string]Value `json:"vars,omitempty"` +} +type Exemplar struct { + TraceID string `json:"trace_id"` + Namespace string `json:"namespace"` + Service string `json:"service"` + Operation string `json:"operation"` + DurationMS float64 `json:"duration_ms"` + Status string `json:"status"` + Start time.Time `json:"start"` +} +type ExemplarResponse struct { + Traces []Exemplar `json:"traces"` + Truncated bool `json:"truncated,omitempty"` +} + +func selectionWhere(p *Panel, filters []Filter, scope Scope, dimensions map[string]string, bucket *SelectionBucket) (string, []any, error) { + sig, _ := lookupSignal(p.Query.From) + where, args, err := buildWhere(sig, filters, scope) + if err != nil { + return "", nil, err + } + if len(dimensions) > 3 { + return "", nil, Problems{{Path: "dimensions", Message: "at most 3 dimensions"}} + } + names := make([]string, 0, len(dimensions)) + for name := range dimensions { + names = append(names, name) + } + sort.Strings(names) + for _, name := range names { + if !slices.Contains(p.Query.By, name) || len(dimensions[name]) > 500 { + return "", nil, Problems{{Path: "dimensions", Message: "dimensions must name query.by fields and values at most 500 characters", Hint: "select one of the panel grouping fields"}} + } + ref, err := sig.field(name) + if err != nil { + return "", nil, err + } + where += " AND coalesce(" + ref.stringSQL() + ",'')=?" + args = append(args, dimensions[name]) + } + if bucket != nil { + if p.Query.From != "spans" || p.Query.Histogram == nil || p.Query.Histogram.Field != "duration_ms" || math.IsNaN(bucket.Lower) || math.IsInf(bucket.Lower, 0) || bucket.Lower < 0 { + return "", nil, Problems{{Path: "bucket", Message: "bucket needs a spans duration_ms histogram and a finite nonnegative lower bound", Hint: "select a finite duration bucket"}} + } + where += " AND duration_ms>=?" + args = append(args, bucket.Lower) + if bucket.Upper != nil { + if math.IsNaN(*bucket.Upper) || math.IsInf(*bucket.Upper, 0) || *bucket.Upper <= bucket.Lower { + return "", nil, Problems{{Path: "bucket.upper", Message: "upper must be finite and greater than lower", Hint: "select a larger upper bound or omit it for overflow"}} + } + where += " AND duration_ms 0 { + return out, problems + } + } + override := p.Time + if req.Time != nil && req.Time.From != nil && req.Time.To != nil { + override = nil + } // The browser captured the effective window. + start, end, err := resolveWindow(t, override, e.now(), e.maxWindow) + if err != nil { + return out, err + } + if req.From.IsZero() || req.To.IsZero() || !req.From.Before(req.To) { + return out, Problems{{Path: "from", Message: "selection needs a positive absolute range"}} + } + lo, hi := req.From.UTC(), req.To.UTC() + if lo.Before(start) { + lo = start + } + if hi.After(end) { + hi = end + } + if !lo.Before(hi) { + return out, outsideSelection() + } + vars, err := e.values(ctx, &d, checked, start, end, req.Vars) + if err != nil { + return out, err + } + where, args, err := selectionWhere(p, checked.Filters[p.ID], Scope{Start: lo, End: hi, Vars: vars}, req.Dimensions, req.Bucket) + if err != nil { + return out, err + } + // Candidate membership is filtered; root metadata is selected within the full panel window. + candidateSource := p.Query.From + if candidateSource == "logs" { + candidateSource = "(" + redactedLogSource() + ")" + } + text := checkedTraceSQL(candidateSource, where, 21, "duration_ms DESC,trace_id,namespace", "start_time::TIMESTAMP_NS") + args = append(args, start, end) + ctx = queryrows.WithWindow(ctx, queryrows.Window{Start: start, End: end}) + rows, err := e.engine.QueryContext(ctx, text, args...) + if err != nil { + return out, fmt.Errorf("exemplars: %s", SafeError(err)) + } + defer rows.Close() + for rows.Next() { + var trace Exemplar + if err := rows.Scan(&trace.TraceID, &trace.Namespace, &trace.Service, &trace.Operation, &trace.DurationMS, &trace.Status, &trace.Start); err != nil { + return out, err + } + trace.Start = trace.Start.UTC() + out.Traces = append(out.Traces, trace) + } + if err := rows.Err(); err != nil { + return out, err + } + if len(out.Traces) > 20 { + out.Traces = out.Traces[:20] + out.Truncated = true + } + // Conservatively disclose the candidate cap even if fewer than 20 roots survive. + if len(out.Traces) == 20 { + out.Truncated = true + } + return out, nil +} +func checkedTraceSQL(source, where string, limit int, order, startProjection string) string { + return fmt.Sprintf(`WITH candidates AS (SELECT DISTINCT namespace,trace_id FROM %s WHERE %s AND trace_id<>'' ORDER BY namespace,trace_id LIMIT 1000), roots AS ( +SELECT s.*,max(CASE WHEN s.status IN ('STATUS_CODE_ERROR','ERROR') THEN 1 ELSE 0 END) OVER(PARTITION BY s.namespace,s.trace_id) AS trace_error,row_number() OVER(PARTITION BY s.namespace,s.trace_id ORDER BY (coalesce(s.parent_span_id,'')='') DESC,s.start_time,s.span_id) AS n +FROM spans s JOIN candidates c ON s.namespace=c.namespace AND s.trace_id=c.trace_id +WHERE s.start_time>=?::TIMESTAMP_NS::TIMESTAMPTZ_NS AND s.start_time0 THEN 'STATUS_CODE_ERROR' ELSE coalesce(status,'') END,%s FROM roots WHERE n=1 ORDER BY %s LIMIT %d`, source, where, startProjection, order, limit) +} +func outsideSelection() error { + return Problems{{Path: "from", Message: "selection does not overlap the panel window"}} +} +``` + +In `internal/api/panels.go`, extend `PanelEngine`: + +```go +Exemplars(context.Context, panel.ExemplarRequest)(panel.ExemplarResponse, error) + +``` + +Register next to `/api/panels/query`: + +```go +e.POST("/api/panels/exemplars", h.exemplars, read) + +``` + +Append: + +```go +func (h *PanelHandler) exemplars(c *echo.Context) error { + var req panel.ExemplarRequest + if err := decodeStrict(c, &req, 512<<10); err != nil { + return err + } + out, err := h.engine.Exemplars(c.Request().Context(), req) + if err != nil { + return panelError(c, err, "exemplars unavailable") + } + return c.JSON(http.StatusOK, out) +} +``` + +In `classifyRoute`, add `path == "/api/panels/exemplars"` to the POST ReadTelemetry case. Keep dashboard CRUD on ManageOwnDashboards. The executor enforces its own timeout; the adapter adds no batch deadline. + +- [ ] **Step 4: Run to see pass** + +```bash +rtk just test ./internal/panel/... ./internal/api/... -run '"TestM2Exemplar|TestFinalFixPanelBatch"' +rtk just test ./internal/panel/... ./internal/api/... +``` + +Expected: PASS, 20 trace maximum, hostile dimension value treated literally, forged field rejected. + +Before the controller commit, format all Go changes: + +```bash +rtk just fmt +``` + +Regenerate route/tool/setting reference docs before this task’s commit: + +```bash +rtk just docs-generate +rtk just docs-generate-check +``` + +- [ ] **Step 5: Commit (controller)** + +```bash +rtk git add site/src/content/docs/reference internal/panel/log_source.go internal/observability/redact.go internal/panel/exemplars.go internal/panel/exemplars_test.go internal/api/panels.go internal/api/panels_test.go internal/api/auth_middleware.go +rtk git commit -m "feat(panels): query checked and window-bounded trace exemplars" +``` + +--- + +### Task 3: Distribution queries, histogram frames and heatmap bounds + +**Files:** +- Create: `internal/panel/distribution.go`, `internal/panel/distribution_test.go` +- Modify: `internal/panel/compile.go`, `internal/panel/exec.go`, `internal/panel/validate.go`, `internal/panel/spec.go` + +**Interfaces:** +- Consumes existing: `compileQuery(p *Panel, measures []Measure, filters []Filter, scope Scope) (Compiled, error)`; `scanFrame(rows queryrows.Rows, columns []Column, maxRows int) (*Frame, error)`; `Histogram{Field string, Buckets string}`; `telemetry.Metric` with `HistBoundsJSON`, `HistCountsJSON`, `HistCount`; `newTestEngine(t *testing.T) (*query.Duck, *telemetrystore.Repository)`. +- Produces: `compileDistribution(p *Panel, filters []Filter, scope Scope) (Compiled, error)`; `distributionRows(p *Panel, columns int) int`; `const analysisCellLimit = 20000`; `boundAnalysisFrame(f *Frame)`. +- Frame: optional `time` (Unix ms), optional `query.by[0]` dimension, `bucket_lower`/`bucket_upper` numeric dimensions (null represents an infinite endpoint), `count` number measure. Heatmap has time, no split; histogram has optional one split and no time. Metric histogram field is `value`, buckets `explicit`; spans field is `duration_ms`, buckets `log2`. Counts are observation weights, not point counts. `telemetry.Metric` (rows.go:77), `metricParquetRow` (parquet_rows.go:124), `createMetricsTable` and `viewMetrics` have no temporality field. Missing/unknown temporality therefore means cumulative (OTel default). Add optional `Histogram.Temporality` (`temporality`, cumulative|delta) so a caller with known delta provenance can request summation without changing format 3; omitted is cumulative. Cumulative counts use each series’ last minus first per bound, clamped at zero on reset; never sum cumulative scrape values. Series identity includes namespace, service, name, unit, scope, attributes and resource. For heatmap, apply the same reduction within each displayed time bucket. +- No TypeScript code is changed here; Task 7 introduces the exact mirrors. + +- [ ] **Step 1: Write failing fixture tests** + +Create `internal/panel/distribution_test.go`: + +```go +package panel + +import ( + "fmt" + "slices" + "testing" + "time" + + "github.com/labstack/fanout/internal/telemetry" + telemetrystore "github.com/labstack/fanout/internal/telemetry/store" +) + +func TestM2DistributionCounts(t *testing.T) { + e := newFixtureExecutor(t) + d := shopDashboard() + d.Panels = []Panel{{ID: "h", Title: "Latency distribution", Viz: "histogram", Query: &Query{From: "spans", Where: []string{"service = $service"}, Measures: []string{"count()"}, Histogram: &Histogram{Field: "duration_ms", Buckets: "log2"}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + f := got[0].Frame + if got[0].Status != "ok" || f == nil || f.Rows != 3 { + t.Fatalf("distribution: %+v", got) + } + var n float64 + for _, v := range f.Values[2] { + n += v.(float64) + } + if n != 120 { + t.Fatalf("count=%v", n) + } + engine, repo := newTestEngine(t) + at := fixtureStart.UnixNano() + err = repo.Commit(t.Context(), telemetrystore.Batch{ID: "hist-metric", Metrics: []telemetry.Metric{{Namespace: "shop", ServiceName: "checkout", Name: "latency", Type: "histogram", TimeUnixNanos: at, EventUnixNanos: at, IngestedAt: at, HistBoundsJSON: "[10,20]", HistCountsJSON: "[2,3,5]", HistCount: 10}}}) + if err != nil { + t.Fatal(err) + } + e = NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d.Variables = nil + d.Panels[0].Query = &Query{From: "metrics", Where: []string{"name = 'latency'"}, Measures: []string{"count()"}, Histogram: &Histogram{Field: "value", Buckets: "explicit", Temporality: "delta"}} + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + f = got[0].Frame + if got[0].Status != "ok" || f.Rows != 3 || f.Values[2][2].(float64) != 5 || f.Values[1][2] != nil { + t.Fatalf("weighted overflow: %+v", got) + } +} +func TestM2MetricHistogramTemporality(t *testing.T) { + engine, repo := newTestEngine(t) + metrics := []telemetry.Metric{} + for scrape, counts := range []string{"[10,20,30]", "[12,23,34]", "[15,27,40]"} { + n := fixtureStart.Add(time.Duration(scrape) * time.Minute).UnixNano() + metrics = append(metrics, telemetry.Metric{Namespace: "shop", ServiceName: "checkout", Name: "latency", Type: "histogram", Unit: "ms", TimeUnixNanos: n, EventUnixNanos: n, IngestedAt: n, HistBoundsJSON: "[10,20]", HistCountsJSON: counts, HistCount: 100, Attributes: map[string]any{"series": "a"}}) + } + for scrape, counts := range []string{"[100,100,100]", "[101,101,101]", "[102,102,102]"} { + n := fixtureStart.Add(time.Duration(scrape) * time.Minute).UnixNano() + metrics = append(metrics, telemetry.Metric{Namespace: "shop", ServiceName: "checkout", Name: "latency", Type: "histogram", Unit: "ms", TimeUnixNanos: n, EventUnixNanos: n, IngestedAt: n, HistBoundsJSON: "[10,20]", HistCountsJSON: counts, Attributes: map[string]any{"series": "b"}}) + } + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: "scrapes", Metrics: metrics}); err != nil { + t.Fatal(err) + } + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Hist", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "h", Title: "H", Viz: "histogram", Unit: "ms", Query: &Query{From: "metrics", Where: []string{"name = 'latency'"}, Measures: []string{"count()"}, Histogram: &Histogram{Field: "value", Buckets: "explicit"}}}}} + for _, temporality := range []string{"", "cumulative", "delta"} { + d.Panels[0].Query.Histogram.Temporality = temporality + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != "ok" { + t.Fatalf("hist: %+v %v", got, err) + } + want := []float64{7, 9, 12} + if temporality == "delta" { + want = []float64{340, 373, 407} + } + f := got[0].Frame + if f.Rows != 3 { + t.Fatalf("rows=%d", f.Rows) + } + for i, n := range want { + if f.Values[2][i] != n { + t.Fatalf("%q bucket %d=%v want %v", temporality, i, f.Values[2][i], n) + } + } + } + // A resetting series contributes max(last-first,0), not unsigned underflow. + d.Panels[0].Query.Histogram.Temporality = "" + n := fixtureStart.UnixNano() + reset := []telemetry.Metric{{ServiceName: "reset", Name: "reset", Type: "histogram", EventUnixNanos: n, IngestedAt: n, HistBoundsJSON: "[10]", HistCountsJSON: "[20,30]"}, {ServiceName: "reset", Name: "reset", Type: "histogram", EventUnixNanos: n + int64(time.Minute), IngestedAt: n + 1, HistBoundsJSON: "[10]", HistCountsJSON: "[1,2]"}} + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: "reset", Metrics: reset}); err != nil { + t.Fatal(err) + } + d.Panels[0].Query.Where = []string{"name = 'reset'"} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != "empty" { + t.Fatalf("reset: %+v %v", got, err) + } +} +func TestM2DistributionBudget(t *testing.T) { + engine, repo := newTestEngine(t) + spans := []telemetry.Span{} + for m := range 1440 { + for b := range 32 { + n := fixtureStart.Add(time.Duration(m) * time.Minute).UnixNano() + spans = append(spans, telemetry.Span{TraceID: "t", SpanID: "s", ServiceName: "checkout", Kind: "SPAN_KIND_SERVER", StartUnixNanos: n, EndUnixNanos: n + 1000, DurationMS: float64(uint64(1) << b), IngestedAt: n}) + } + } + commit(t, repo, spans, nil) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(24 * time.Hour) } + d := Dashboard{Name: "Heat", Time: Time{Range: "24h"}, Panels: []Panel{{ID: "heat", Title: "Heat", Viz: "heatmap", Query: &Query{From: "spans", Measures: []string{"count()"}, Bucket: "1m", Histogram: &Histogram{Field: "duration_ms", Buckets: "log2"}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + f := got[0].Frame + if f == nil || !f.Truncated || f.Rows*len(f.Columns) > analysisCellLimit { + t.Fatalf("unbounded heat: %+v", got) + } + original := d.Panels[0] + d.Panels = nil + for i := 0; i < 11; i++ { + copy := original + copy.ID = fmt.Sprintf("bounded_%d", i) + d.Panels = append(d.Panels, copy) + } + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + cells := 0 + for _, r := range got { + if r.Frame != nil { + cells += r.Frame.Rows * len(r.Frame.Columns) + } + } + if cells > 200000 { + t.Fatalf("batch has %d cells", cells) + } + +} +func TestM2DistributionValidation(t *testing.T) { + cases := []struct { + p Panel + want Problem + }{ + {Panel{ID: "h", Title: "H", Viz: "heatmap", Query: &Query{From: "spans", Measures: []string{"count()"}}}, Problem{Path: "panels[0].query.histogram", Message: "distribution panels require a histogram", Hint: "spans: duration_ms/log2; metrics: value/explicit"}}, + {Panel{ID: "h", Title: "H", Viz: "histogram", Query: &Query{From: "spans", Measures: []string{"p95(duration_ms)"}, Histogram: &Histogram{Field: "duration_ms", Buckets: "log2"}}}, Problem{Path: "panels[0].query.measures", Message: "distribution counts require count()", Hint: "use count() as the observation weight"}}, + } + for _, tc := range cases { + d := Dashboard{Name: "Rule", Panels: []Panel{tc.p}} + Normalize(&d) + got := Validate(&d) + if !slices.Contains(got, tc.want) { + t.Fatalf("got %+v want %+v", got, tc.want) + } + } +} +``` + +- [ ] **Step 2: Run to see failure** + +```bash +rtk just test ./internal/panel/... -run '"TestM2Distribution|TestM2MetricHistogram"' +``` + +Expected: new viz rejected; missing budget constant. + +- [ ] **Step 3: Implement compilation and bounded frames** + +Create `internal/panel/distribution.go`: + +```go +package panel + +import ( + "fmt" + "sort" + "strings" +) + +const analysisCellLimit = 20000 + +func distributionRows(p *Panel, columns int) int { + n := analysisCellLimit / max(columns, 1) + if p.Viz == "histogram" { + n = min(n, 1000) + } + if p.Query.Limit > 0 { + n = min(n, p.Query.Limit) + } + return n +} +func compileDistribution(p *Panel, filters []Filter, scope Scope) (Compiled, error) { + sig, _ := lookupSignal(p.Query.From) + where, args, err := buildWhere(sig, filters, scope) + if err != nil { + return Compiled{}, err + } + columns := []Column{} + prefix := []string{} + groups := []string{} + if p.Viz == "heatmap" { + prefix = append(prefix, fmt.Sprintf("epoch_ms(time_bucket(INTERVAL '%d seconds',t::TIMESTAMP_NS))::BIGINT AS time", int64(scope.Interval.Seconds()))) + groups = append(groups, "time") + columns = append(columns, Column{Name: "time", Type: "time", Role: "time"}) + } + dimSelect := "' AS dim" + if len(p.Query.By) > 0 { + ref, err := sig.field(p.Query.By[0]) + if err != nil { + return Compiled{}, err + } + dimSelect = "coalesce(" + ref.stringSQL() + ",'') AS dim" + prefix = append(prefix, "dim") + groups = append(groups, "dim") + columns = append(columns, Column{Name: ref.alias(), Type: "string", Role: "dimension"}) + } + unit := "ms" + raw := "" + if sig.name == "spans" { + raw = fmt.Sprintf(`SELECT %s AS t,%s, +CASE WHEN duration_ms<1 THEN 0 ELSE pow(2,least(32,floor(log2(duration_ms)))) END AS lo, +CASE WHEN duration_ms=0 AND isfinite(duration_ms)`, quoteIdent(sig.time), dimSelect, where) + } else { + unit = p.Unit + raw = metricHistogramRaw(dimSelect, where, p.Query.Histogram.Temporality, scope.Interval, p.Viz == "heatmap") + } + columns = append(columns, Column{Name: "bucket_lower", Type: "number", Role: "dimension", Unit: unit}, Column{Name: "bucket_upper", Type: "number", Role: "dimension", Unit: unit}, Column{Name: "count", Type: "number", Role: "measure", Unit: "count"}) + prefix = append(prefix, "lo AS bucket_lower", "hi AS bucket_upper", "sum(n)::DOUBLE AS count") + groups = append(groups, "lo", "hi") + source := "raw" + cte := "WITH raw AS (" + raw + ")" + if len(p.Query.By) > 0 { + cte += fmt.Sprintf(",top AS (SELECT dim FROM raw GROUP BY dim ORDER BY sum(n) DESC,dim LIMIT %d),folded AS (SELECT * REPLACE (CASE WHEN dim IN (SELECT dim FROM top) THEN dim ELSE 'Other' END AS dim) FROM raw)", p.Top()) + source = "folded" + } + text := cte + " SELECT " + strings.Join(prefix, ",") + " FROM " + source + " GROUP BY " + strings.Join(groups, ",") + order := "bucket_lower NULLS FIRST,bucket_upper NULLS LAST" + if p.Viz == "heatmap" { + order = "time DESC," + order + } + if len(p.Query.By) > 0 { + order = "dim," + order + } + n := distributionRows(p, len(columns)) + text += " ORDER BY " + order + fmt.Sprintf(" LIMIT %d", n+1) + return Compiled{SQL: text, Args: args, Columns: columns}, nil +} +``` + +Append to distribution.go (the temporality expression is selected by validated enum, never interpolated from client SQL; typed VARIANT identity stays in the engine): + +```go +func metricHistogramRaw(dimSelect, where, temporality string, interval time.Duration, heat bool) string { + period := "0::BIGINT" + if heat { + period = fmt.Sprintf("epoch_ms(time_bucket(INTERVAL '%d seconds',time::TIMESTAMP_NS))", int64(interval/time.Second)) + } + delta := "FALSE" + if temporality == "delta" { + delta = "TRUE" + } + return fmt.Sprintf(`WITH points AS ( + SELECT *,%s,%s AS period, + from_json(hist_bounds_json,'["DOUBLE"]') AS bounds, + from_json(hist_counts_json,'["UBIGINT"]') AS counts + FROM metrics WHERE %s AND type='histogram'), expanded AS ( + SELECT namespace,service,name,unit,scope_name,scope_version,attributes,resource,dim,period,time AS t,ingested_unix_nano, + CASE WHEN i=1 THEN NULL ELSE bounds[i-1] END AS lo, + CASE WHEN i<=len(bounds) THEN bounds[i] END AS hi,n::DOUBLE AS n + FROM points,UNNEST(counts) WITH ORDINALITY AS u(n,i) + WHERE len(counts)=len(bounds)+1), increases AS ( + SELECT dim,period,lo,hi,max(t) AS t, + CASE WHEN %s THEN sum(n) ELSE greatest(0,arg_max(n,(t,ingested_unix_nano))-arg_min(n,(t,ingested_unix_nano))) END::DOUBLE AS n + FROM expanded GROUP BY namespace,service,name,unit,scope_name,scope_version,attributes,resource,dim,period,lo,hi) + SELECT t,dim,lo,hi,n FROM increases WHERE n>0`, dimSelect, period, where, delta) +} +``` + +Add `"time"` to distribution.go imports. Extend the existing Histogram struct in spec.go: + +```go +Temporality string `json:"temporality,omitempty" jsonschema:"metric histograms: cumulative (also unknown/default) or delta"` +``` + +In the histogram validation branch, also reject a nonempty temporality on spans and unknown strings with `addHint(path+".histogram.temporality", "temporality applies to metric histograms and must be cumulative or delta", "omit for the OTel cumulative default")`. + +At the beginning of `compileQuery` (before `q := p.Query`), insert: + +```go +if p.Viz == "heatmap" || p.Viz == "histogram" { + return compileDistribution(p, filters, scope) +} + +``` + +In `runScope`, after the existing `if scope.Interval > 0 { rowLimit = 0 }` and before `scanFrame`, insert: + +```go +if p.Viz == "heatmap" || p.Viz == "histogram" { + rowLimit = distributionRows(p, len(compiled.Columns)) +} + +``` + +Set the scanned frame’s private `bucketed` flag to `scope.Interval > 0 && len(compiled.Columns)>0 && compiled.Columns[0].Role=="time"`; log-pattern JSON trends are not a time-first frame. Keep `limitBatchFrames` intact. The SQL chooses newest heatmap data before sorting for rendering; the scanner bounds transfer and marks truncation. + +Append the complete frame bound helper to distribution.go: + +```go +func boundAnalysisFrame(f *Frame) { + if f == nil || len(f.Columns) == 0 || f.Columns[0].Role != "time" || f.Rows == 0 { + return + } + order := make([]int, f.Rows) + for i := range order { + order[i] = i + } + sort.SliceStable(order, func(i, j int) bool { return f.Values[0][order[i]].(int64) < f.Values[0][order[j]].(int64) }) + for c := range f.Values { + values := make([]any, len(order)) + for r, index := range order { + values[r] = f.Values[c][index] + } + f.Values[c] = values + } + cut := 0 + if f.Truncated { + oldest := f.Values[0][0] + for cut < f.Rows && f.Values[0][cut] == oldest { + cut++ + } + } + times := []int{} + for r := cut; r < f.Rows; r++ { + if r == cut || f.Values[0][r] != f.Values[0][r-1] { + times = append(times, r) + } + } + if len(times) > maxSeriesPoints { + cut = times[len(times)-maxSeriesPoints] + f.Truncated = true + } + if cut > 0 { + for c := range f.Values { + f.Values[c] = f.Values[c][cut:] + } + f.Rows -= cut + } +} +``` + +Immediately after scanFrame succeeds in runScope, call `if p.Viz=="heatmap"{boundAnalysisFrame(frame)}`. This sorts the newest-first bounded transfer and discards the potentially clipped oldest bucket as a whole. It also caps distinct times at maxSeriesPoints (2000). In Task 4 extend that same condition to state_timeline. After the Task 4 extension, use this complete block before returning the structured frame: + +```go +if frame != nil && (p.Viz == "heatmap" || p.Viz == "state_timeline") { + boundAnalysisFrame(frame) + if p.Viz == "state_timeline" { + items := map[any]bool{} + for _, item := range frame.Values[1] { + items[item] = true + } + if len(items) == p.Top() { + frame.Truncated = true + } + } +} + +``` + +The timeline cap is disclosed after clipping so it does not remove another time bucket. The shared batch cell budget still runs last. + +- [ ] **Step 4: Implement structural rules** + +In `vizSpecs`, add: + +```go +"heatmap": {width: 6, height: "m", query: true, bucket: true}, +"histogram": {width: 6, height: "m", query: true, maxBy: 1}, +``` + +Append both names to `vizOrder`. Change the `Panel.Viz` schema description to include them. Replace the existing `if q.Histogram != nil` rejection in `validateQuery` with: + +```go +if p.Viz == "heatmap" || p.Viz == "histogram" { + if q.Histogram == nil { + problems.addHint(path+".histogram", "distribution panels require a histogram", "spans: duration_ms/log2; metrics: value/explicit") + } else if (q.From != "spans" || q.Histogram.Field != "duration_ms" || q.Histogram.Buckets != "log2") && + (q.From != "metrics" || q.Histogram.Field != "value" || q.Histogram.Buckets != "explicit") { + problems.add(path+".histogram", "use spans duration_ms/log2 or metrics value/explicit") + } + if len(q.Measures) != 1 || q.Measures[0] != "count()" { + problems.addHint(path+".measures", "distribution counts require count()", "use count() as the observation weight") + } + if p.SQL != "" { + problems.add(path+".sql", "distribution panels use a structured histogram") + } +} else if q.Histogram != nil { + problems.add(path+".histogram", "histogram applies only to heatmap and histogram") +} + +``` + +In `validatePanel`, immediately before its `if p.Query != nil { validateQuery(...) }` branch, insert: + +```go +if (p.Viz == "heatmap" || p.Viz == "histogram") && p.Query == nil { + problems.add(path+".query", "distribution panels require a structured query") +} + +``` + +- [ ] **Step 5: Run to see pass** + +```bash +rtk just test ./internal/panel/... -run '"TestM2Distribution|TestM2MetricHistogram|TestRunProducesFrames|TestRunReportsSQLTruncation"' +rtk just test ./internal/panel/... +``` + +Expected: count conservation for spans and weighted metric buckets, explicit overflow, truncated 24-hour heatmap, no engine syntax error. + +Regenerate the changed panel/tool contract references, then format all Go changes before the controller commit: + +```bash +rtk just docs-generate +rtk just docs-generate-check +rtk just fmt +``` + +- [ ] **Step 6: Commit (controller)** + +```bash +rtk git add site/src/content/docs/reference internal/panel/distribution.go internal/panel/distribution_test.go internal/panel/compile.go internal/panel/exec.go internal/panel/validate.go internal/panel/spec.go +rtk git commit -m "feat(panels): compile bounded latency and metric distributions" +``` + +--- + +### Task 4: Scatter and threshold-graded item timelines + +**Files:** +- Create: `internal/panel/items.go`, `internal/panel/items_test.go` +- Modify: `internal/panel/spec.go`, `internal/panel/validate.go`, `internal/panel/compile.go`, `internal/panel/exec.go` + +**Interfaces:** +- Consumes existing: `Measure{Text, Func, Alias, Unit string; Field *FieldRef; Q float64; Additive bool}`; `measureSQL(m Measure, sig *signal, seconds float64, partition string) string`; `Column`, `Scope`, `Compiled` and `buildWhere`. +- Produces: `compileItems(p *Panel, measures []Measure, filters []Filter, scope Scope) (Compiled, error)`; `validateItems(p *Panel, path string, problems *Problems)`; Options fields `XScale string json:"x_scale,omitempty"`, `YScale string json:"y_scale,omitempty"`. +- Scatter frame: item dimension, optional colour dimension, two measure columns in query order. Timeline frame: time, item dimension, one numeric measure; browser computes threshold status using the same `statusFor` as existing stats. Null and absent buckets remain unknown, not healthy. +- TypeScript mirrors are introduced in Task 7. Add `Panel.XUnit` (`x_unit`) for scatter’s x axis, with `unit` describing y. Infer each axis from its respective measure when no override is set. + +- [ ] **Step 1: Write failing tests** + +Create `internal/panel/items_test.go`: + +```go +package panel + +import ( + "fmt" + "math" + "slices" + "strings" + "testing" + "time" + + "github.com/labstack/fanout/internal/telemetry" +) + +func TestM2ItemsExecute(t *testing.T) { + e := newFixtureExecutor(t) + d := shopDashboard() + d.Panels = []Panel{ + {ID: "scatter", Title: "Mean and tail latency", Viz: "scatter", Query: &Query{From: "spans", Measures: []string{"avg(duration_ms)", "p95(duration_ms)"}, By: []string{"http_route", "service"}}, Options: &Options{XScale: "log", YScale: "linear"}}, + {ID: "states", Title: "Latency states", Viz: "state_timeline", Query: &Query{From: "spans", Measures: []string{"p95(duration_ms)"}, By: []string{"service"}, Bucket: "5m"}, Thresholds: []Threshold{{Value: 500, Status: "bad"}}}, + } + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + if got[0].Status != "ok" || got[0].Frame.Rows != 3 || len(got[0].Frame.Columns) != 4 { + t.Fatalf("scatter: %+v", got[0]) + } + if got[1].Status != "ok" || got[1].Frame.Rows != 24 || got[1].Better != "lower" { + t.Fatalf("timeline: %+v", got[1]) + } +} +func TestM2TimelineBudget(t *testing.T) { + engine, repo := newTestEngine(t) + spans := []telemetry.Span{} + for m := range 1440 { + for s := range 20 { + n := fixtureStart.Add(time.Duration(m) * time.Minute).UnixNano() + spans = append(spans, telemetry.Span{TraceID: fmt.Sprint(m, s), SpanID: "s", ServiceName: fmt.Sprint(s), StartUnixNanos: n, EndUnixNanos: n + 1000000, DurationMS: 1, IngestedAt: n}) + } + } + commit(t, repo, spans, nil) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(24 * time.Hour) } + d := Dashboard{Name: "States", Time: Time{Range: "24h"}, Panels: []Panel{{ID: "states", Title: "States", Viz: "state_timeline", Options: &Options{Top: 20}, Thresholds: []Threshold{{Value: 5, Status: "bad"}}, Query: &Query{From: "spans", Measures: []string{"p95(duration_ms)"}, By: []string{"service"}, Bucket: "1m"}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + f := got[0].Frame + if f == nil || !f.Truncated || f.Rows*len(f.Columns) > analysisCellLimit { + t.Fatalf("budget: %+v", got) + } + for _, v := range f.Values[1] { + if v == "Other" { + t.Fatal("item identities merged") + } + } + original := d.Panels[0] + d.Panels = nil + for i := 0; i < 11; i++ { + copy := original + copy.ID = fmt.Sprintf("bounded_%d", i) + d.Panels = append(d.Panels, copy) + } + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + cells := 0 + for _, r := range got { + if r.Frame != nil { + cells += r.Frame.Rows * len(r.Frame.Columns) + } + } + if cells > 200000 { + t.Fatalf("batch has %d cells", cells) + } + +} +func TestM2ItemsValidation(t *testing.T) { + mixed := Panel{ID: "s", Title: "S", Viz: "scatter", XUnit: "count", Unit: "ms", Query: &Query{From: "spans", Measures: []string{"count()", "p95(duration_ms)"}, By: []string{"service"}}} + d := Dashboard{Name: "Mixed", Panels: []Panel{mixed}} + Normalize(&d) + if got := Validate(&d); len(got) != 0 { + t.Fatalf("mixed-axis scatter rejected: %+v", got) + } + cases := []struct { + panel Panel + want Problem + }{ + {Panel{ID: "s", Title: "S", Viz: "state_timeline", Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service"}}}, Problem{Path: "panels[0].thresholds", Message: "state_timeline requires thresholds", Hint: "set a warn or bad boundary for the selected measure"}}, + {Panel{ID: "s", Title: "S", Viz: "scatter", Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service"}}}, Problem{Path: "panels[0].query.measures", Message: "scatter requires exactly two measures", Hint: "select x and y measures in that order"}}, + {Panel{ID: "s", Title: "S", Viz: "bar", XUnit: "count", Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service"}}}, Problem{Path: "panels[0].x_unit", Message: "x_unit applies only to scatter", Hint: "remove x_unit or use scatter"}}, + } + unknown := mixed + unknown.XUnit = "rows" + cases = append(cases, struct { + panel Panel + want Problem + }{unknown, Problem{Path: "panels[0].x_unit", Message: "unknown x unit", Hint: "use one of " + strings.Join(unitNames(), ", ")}}) + for _, tc := range cases { + d := Dashboard{Name: "Rule", Panels: []Panel{tc.panel}} + Normalize(&d) + got := Validate(&d) + if !slices.Contains(got, tc.want) { + t.Fatalf("got %+v want %+v", got, tc.want) + } + } +} +func TestM2TimelineSharePartitionsByBucket(t *testing.T) { + e := newFixtureExecutor(t) + d := Dashboard{Name: "Share", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "s", Title: "S", Viz: "state_timeline", Thresholds: []Threshold{{Value: 50, Status: "warn"}}, Query: &Query{From: "spans", Measures: []string{"share()"}, By: []string{"service"}, Bucket: "5m"}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Frame == nil { + t.Fatalf("share: %+v %v", got, err) + } + sums := map[any]float64{} + f := got[0].Frame + for i, bucket := range f.Values[0] { + sums[bucket] += f.Values[2][i].(float64) + } + for bucket, sum := range sums { + if math.Abs(sum-100) > 1e-9 { + t.Fatalf("bucket %v share=%v", bucket, sum) + } + } +} +``` + +- [ ] **Step 2: Run to see failure** + +```bash +rtk just test ./internal/panel/... -run '"TestM2Items|TestM2Timeline"' +``` + +Expected: missing Options fields and unsupported types. + +- [ ] **Step 3: Implement item compilation** + +Create `internal/panel/items.go`: + +```go +package panel + +import ( + "fmt" + "strings" +) + +func compileItems(p *Panel, measures []Measure, filters []Filter, scope Scope) (Compiled, error) { + sig, _ := lookupSignal(p.Query.From) + where, args, err := buildWhere(sig, filters, scope) + if err != nil { + return Compiled{}, err + } + item, err := sig.field(p.Query.By[0]) + if err != nil { + return Compiled{}, err + } + itemSQL := "coalesce(" + item.stringSQL() + ",'')" + selects, groups := []string{}, []string{} + columns := []Column{} + if p.Viz == "state_timeline" { + expr := fmt.Sprintf("epoch_ms(time_bucket(INTERVAL '%d seconds',%s::TIMESTAMP_NS))::BIGINT", int64(scope.Interval.Seconds()), quoteIdent(sig.time)) + selects = append(selects, expr+" AS time") + groups = append(groups, expr) + columns = append(columns, Column{Name: "time", Type: "time", Role: "time"}) + } + selects = append(selects, itemSQL+" AS "+quoteIdent(item.alias())) + groups = append(groups, itemSQL) + columns = append(columns, Column{Name: item.alias(), Type: "string", Role: "dimension"}) + if len(p.Query.By) == 2 { + ref, err := sig.field(p.Query.By[1]) + if err != nil { + return Compiled{}, err + } + expr := "coalesce(" + ref.stringSQL() + ",'')" + selects = append(selects, expr+" AS "+quoteIdent(ref.alias())) + groups = append(groups, expr) + columns = append(columns, Column{Name: ref.alias(), Type: "string", Role: "dimension"}) + } + seconds := scope.End.Sub(scope.Start).Seconds() + if p.Viz == "state_timeline" { + seconds = scope.Interval.Seconds() + } + partition := "" + if p.Viz == "state_timeline" { + partition = "PARTITION BY " + groups[0] + } + for i, m := range measures { + unit := m.Unit + if p.Viz == "scatter" { + if i == 0 && p.XUnit != "" { + unit = p.XUnit + } + if i == 1 && p.Unit != "" { + unit = p.Unit + } + } + selects = append(selects, measureSQL(m, sig, seconds, partition)+" AS "+quoteIdent(m.Alias)) + columns = append(columns, Column{Name: m.Alias, Type: "number", Role: "measure", Unit: unit}) + } + text := "WITH base AS (SELECT * FROM " + sig.name + " WHERE " + where + ")" + if p.Viz == "state_timeline" { + text += fmt.Sprintf(", items AS (SELECT %s AS item FROM base GROUP BY 1 ORDER BY count(*) DESC,item LIMIT %d)", itemSQL, p.Top()) + } + text += " SELECT " + strings.Join(selects, ",") + " FROM base" + if p.Viz == "state_timeline" { + text += " WHERE " + itemSQL + " IN (SELECT item FROM items)" + } + text += " GROUP BY " + strings.Join(groups, ",") + n := distributionRows(p, len(columns)) + if p.Viz == "scatter" { + n = min(n, 1000) + } + if p.Viz == "state_timeline" { + text += fmt.Sprintf(" ORDER BY time DESC,2 LIMIT %d", n+1) + } else { + name, direction := measures[0].Alias, "DESC" + if p.Query.Sort != "" { + name = strings.TrimPrefix(p.Query.Sort, "+") + if strings.HasPrefix(p.Query.Sort, "+") { + direction = "ASC" + } + } + text += fmt.Sprintf(" ORDER BY %s %s,1 LIMIT %d", quoteIdent(name), direction, n+1) + } + return Compiled{SQL: text, Args: args, Columns: columns}, nil +} +func validateItems(p *Panel, path string, problems *Problems) { + if p.Options != nil { + for name, value := range map[string]string{"x_scale": p.Options.XScale, "y_scale": p.Options.YScale} { + if value != "" && (p.Viz != "scatter" || (value != "linear" && value != "log")) { + problems.add(path+".options."+name, "axis scales apply only to scatter and must be linear or log") + } + } + } + if p.Viz != "scatter" && p.Viz != "state_timeline" { + return + } + if p.Query == nil { + problems.add(path+".query", "item panels require structured queries") + return + } + if p.Viz == "scatter" && len(p.Query.Measures) != 2 { + problems.addHint(path+".query.measures", "scatter requires exactly two measures", "select x and y measures in that order") + } + if p.Viz == "state_timeline" { + if p.Query.Sort != "" { + problems.add(path+".query.sort", "state_timeline has fixed chronological ordering") + } + if len(p.Query.Measures) != 1 { + problems.add(path+".query.measures", "state_timeline requires one measure") + } + if len(p.Thresholds) == 0 { + problems.addHint(path+".thresholds", "state_timeline requires thresholds", "set a warn or bad boundary for the selected measure") + } + } + if p.Options != nil && p.Options.Style != "" { + problems.add(path+".options.style", "item panels cannot stack or set line styles") + } +} +``` + +Append these fields to `Options`: + +```go +XScale string `json:"x_scale,omitempty" jsonschema:"scatter x axis: linear or log"` +YScale string `json:"y_scale,omitempty" jsonschema:"scatter y axis: linear or log"` +``` + +Add to `vizSpecs`, append names to `vizOrder`, and update `Panel.Viz` schema description: + +```go +"scatter": {width: 6, height: "m", query: true, minBy: 1, maxBy: 2}, +"state_timeline": {width: 6, height: "m", query: true, minBy: 1, maxBy: 1, bucket: true}, +``` + +Call `validateItems(p, path, problems)` in `validatePanel` immediately before `if p.Query != nil { validateQuery(...) }`. Keep the non-additive stacking check. Change the one-unit-family condition in validateQuery (currently validate.go:443) to `len(families)>1 && p.Viz!="table" && p.Viz!="scatter"`. Add `Panel.XUnit` to spec.go and validate it in validateItems before the visualization-specific early return: + +```go +// Panel field: +XUnit string `json:"x_unit,omitempty" jsonschema:"scatter x axis unit; unit describes y"` +``` + +```go +if p.XUnit != "" { + if p.Viz != "scatter" { + problems.addHint(path+".x_unit", "x_unit applies only to scatter", "remove x_unit or use scatter") + } + if _, ok := unitFamilies[p.XUnit]; !ok { + problems.addHint(path+".x_unit", "unknown x unit", "use one of "+strings.Join(unitNames(), ", ")) + } +} + +``` + +Immediately after the distribution branch at the start of `compileQuery`, insert: + +```go +if p.Viz == "scatter" || p.Viz == "state_timeline" { + return compileItems(p, measures, filters, scope) +} + +``` + +Extend the special row-limit condition in `runScope` to include `scatter` and `state_timeline`; for scatter use `min(distributionRows(p, len(compiled.Columns)), 1000)`, otherwise `distributionRows`. Keep `limitBatchFrames` as the final shared budget. + +- [ ] **Step 4: Run to see pass** + +```bash +rtk just test ./internal/panel/... -run '"TestM2Items|TestM2Timeline|TestM2Distribution"' +rtk just test ./internal/panel/... +``` + +Expected: valid independent scatter units; required thresholds; no merged Other item; bounded 24-hour timeline. + +Regenerate the changed panel/tool contract references, then format all Go changes before the controller commit: + +```bash +rtk just docs-generate +rtk just docs-generate-check +rtk just fmt +``` + +- [ ] **Step 5: Commit (controller)** + +```bash +rtk git add site/src/content/docs/reference internal/panel/items.go internal/panel/items_test.go internal/panel/spec.go internal/panel/validate.go internal/panel/compile.go internal/panel/exec.go +rtk git commit -m "feat(panels): add item scatter and threshold state timelines" +``` + +--- + +### Task 5: Guarded log streams, patterns and trace lists + +**Files:** +- Create: `internal/panel/rowpanels.go`, `internal/panel/rowpanels_test.go` +- Modify: `internal/panel/spec.go`, `internal/panel/validate.go`, `internal/panel/compile.go`, `internal/panel/exec.go`, `internal/panel/exemplars.go`, `internal/observability/redact.go` + +**Interfaces:** +- Consumes existing: `observability.redactLogBodySQL(column string) string`, exposed by the wrapper below; `telemetry.Log{Namespace, Body, BodyTemplate, ServiceName, TraceID string; EventUnixNanos, TimeUnixNanos, IngestedAt int64; Severity string; SeverityNumber int32}`; checked `Filter` and `Scope`. +- Produces: `observability.RedactLogBodySQL(column string) string`; `compileRows(p *Panel, filters []Filter, scope Scope) (Compiled, error)`; `validateRows(p *Panel, path string, problems *Problems)`; Options `Highlight string json:"highlight,omitempty"` (literal redacted-body search, ≤ 200 characters). +- Logs frame: `time`, `severity`, `service`, `body`, `trace_id`, `namespace`; traces frame: `trace_id`, `namespace`, `service`, `operation`, `duration_ms`, `status`, `start`; patterns frame: `body_template`, `count`, `trend` (JSON string, role dimension). These fixed rows consume zero measures; patterns consume exactly `count()`. Logs/traces accept no `by` or `bucket`. Query `sort` is fixed per row type, never client SQL. +- All rows cap at `min(query.limit or 1000, 1000)` with a sentinel for `Frame.Truncated`; patterns default to 20, honour query.limit up to a hard cap of 50, and have a 240-point dense trend. No UI code until Task 8. + +- [ ] **Step 1: Write failing native-engine tests** + +Create `internal/panel/rowpanels_test.go`: + +```go +package panel + +import ( + "encoding/json" + "fmt" + "strings" + "testing" + "time" + + "github.com/labstack/fanout/internal/telemetry" +) + +func TestM2RowsExecuteAndRedact(t *testing.T) { + engine, repo := newTestEngine(t) + at := fixtureStart.UnixNano() + logs := []telemetry.Log{ + {Namespace: "shop", ServiceName: "checkout", TimeUnixNanos: at, EventUnixNanos: at, IngestedAt: at, Body: "payment token=hidden failed", BodyTemplate: "payment token=hidden failed", Severity: "ERROR", SeverityNumber: 17, TraceID: "t"}, + {Namespace: "shop", ServiceName: "checkout", TimeUnixNanos: at + int64(time.Minute), EventUnixNanos: at + int64(time.Minute), IngestedAt: at, Body: "payment token=hidden failed", BodyTemplate: "payment token=hidden failed", Severity: "ERROR", SeverityNumber: 17, TraceID: "t"}, + } + commit(t, repo, shopSpans(), logs) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Rows", Time: Time{Range: "1h"}, Panels: []Panel{ + {ID: "logs", Title: "Errors", Viz: "logs", Options: &Options{Highlight: "failed"}, Query: &Query{From: "logs", Where: []string{"service = 'checkout'"}}}, + {ID: "patterns", Title: "Patterns", Viz: "log_patterns", Query: &Query{From: "logs", Measures: []string{"count()"}, By: []string{"body_template"}, Bucket: "auto"}}, + {ID: "traces", Title: "Slow traces", Viz: "traces", Query: &Query{From: "spans", Where: []string{"service = 'checkout'"}, Sort: "duration_ms", Limit: 20}}, + }} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + for _, r := range got { + if r.Status != "ok" { + t.Fatalf("row panel: %+v", r) + } + raw, _ := json.Marshal(r.Frame) + if strings.Contains(string(raw), "hidden") { + t.Fatal("secret in rows") + } + } + if got[0].Frame.Rows != 2 || got[1].Frame.Rows != 1 || got[1].Frame.Values[1][0].(float64) != 2 || got[2].Frame.Rows != 20 { + t.Fatalf("frames: %+v", got) + } + var trend []float64 + if err := json.Unmarshal([]byte(got[1].Frame.Values[2][0].(string)), &trend); err != nil || len(trend) > 240 { + t.Fatalf("trend %v %v", trend, err) + } + var total float64 + for _, n := range trend { + total += n + } + if total != 2 { + t.Fatalf("trend count %v", total) + } + d.Panels = d.Panels[:1] + d.Panels[0].Options.Highlight = "hidden" + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != "empty" { + t.Fatalf("unredacted search: %+v %v", got, err) + } +} +func TestM2RowsCap(t *testing.T) { + engine, repo := newTestEngine(t) + logs := make([]telemetry.Log, 1002) + for i := range logs { + n := fixtureStart.Add(time.Duration(i) * time.Millisecond).UnixNano() + logs[i] = telemetry.Log{ServiceName: "s", TimeUnixNanos: n, EventUnixNanos: n, IngestedAt: n, Body: fmt.Sprint(i)} + } + commit(t, repo, nil, logs) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Rows", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "logs", Title: "Logs", Viz: "logs", Query: &Query{From: "logs"}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + if got[0].Frame.Rows != 1000 || !got[0].Frame.Truncated { + t.Fatalf("cap: %+v", got) + } + d.Panels[0].Query.Where = []string{"body IN (SELECT body FROM logs)"} + if _, err := e.Run(t.Context(), RunRequest{Dashboard: d}); err == nil { + t.Fatal("row guard bypass") + } +} +``` + +Add to rowpanels_test.go: + +```go +func TestM2LogPatternsHonoursLimit50(t *testing.T) { + engine, repo := newTestEngine(t) + logs := []telemetry.Log{} + for i := range 60 { + n := fixtureStart.UnixNano() + logs = append(logs, telemetry.Log{ServiceName: "s", Body: fmt.Sprintf("pattern-%d", i), BodyTemplate: fmt.Sprintf("pattern-%d", i), EventUnixNanos: n, IngestedAt: n}) + } + commit(t, repo, nil, logs) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Patterns", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "p", Title: "P", Viz: "log_patterns", Query: &Query{From: "logs", Measures: []string{"count()"}, By: []string{"body_template"}, Bucket: "auto"}}}} + for _, tc := range []struct{ limit, want int }{{0, 20}, {30, 30}, {50, 50}, {80, 50}} { + d.Panels[0].Query.Limit = tc.limit + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Frame == nil || got[0].Frame.Rows != tc.want { + t.Fatalf("limit=%d: %+v %v", tc.limit, got, err) + } + } +} +``` + +- [ ] **Step 2: Run to see failure** + +```bash +rtk just test ./internal/panel/... -run '"TestM2Rows|TestM2LogPatterns"' +``` + +Expected: missing Highlight and row viz support. + +- [ ] **Step 3: Implement fixed projections and redacted search** + +Reuse Task 2’s `redactedLogSource` and `observability.RedactLogBodySQL`; do not redefine either. + +Create `internal/panel/rowpanels.go`: + +```go +package panel + +import ( + "fmt" + "strings" + "time" +) + +func patternLimit(p *Panel) int { + if p.Query.Limit > 0 { + return min(50, p.Query.Limit) + } + return min(50, p.Top()) +} +func rowLimitForPanel(p *Panel) int { + if p.Query.Limit > 0 { + return min(1000, p.Query.Limit) + } + return 1000 +} +func compileRows(p *Panel, filters []Filter, scope Scope) (Compiled, error) { + sig, _ := lookupSignal(p.Query.From) + where, args, err := buildWhere(sig, filters, scope) + if err != nil { + return Compiled{}, err + } + if p.Viz == "traces" { + order := "duration_ms DESC,trace_id,namespace" + if p.Query.Sort == "errors" { + where += " AND status IN ('STATUS_CODE_ERROR','ERROR')" + } + if p.Query.Sort == "+start" { + order = "start ASC,trace_id,namespace" + } + text := checkedTraceSQL("spans", where, rowLimitForPanel(p)+1, order, "epoch_ms(start_time::TIMESTAMP_NS)::BIGINT AS start") + args = append(args, scope.Start.UTC(), scope.End.UTC()) + return Compiled{SQL: text, Args: args, Columns: []Column{{Name: "trace_id", Type: "string", Role: "dimension"}, {Name: "namespace", Type: "string", Role: "dimension"}, {Name: "service", Type: "string", Role: "dimension"}, {Name: "operation", Type: "string", Role: "dimension"}, {Name: "duration_ms", Type: "number", Role: "measure", Unit: "ms"}, {Name: "status", Type: "string", Role: "dimension"}, {Name: "start", Type: "time", Role: "time"}}}, nil + } + redacted := redactedLogSource() + if p.Options != nil && p.Options.Highlight != "" { + where += " AND contains(lower(body),lower(?))" + args = append(args, p.Options.Highlight) + } + base := "WITH redacted AS (" + redacted + "),base AS (SELECT * FROM redacted WHERE " + where + ")" + if p.Viz == "logs" { + order := "DESC" + if p.Query.Sort == "+time" { + order = "ASC" + } + return Compiled{SQL: base + ` SELECT epoch_ms(time::TIMESTAMP_NS)::BIGINT AS time,coalesce(severity,''),coalesce(service,''),coalesce(body,''),coalesce(trace_id,''),coalesce(namespace,'') FROM base ORDER BY time ` + order + fmt.Sprintf(" LIMIT %d", rowLimitForPanel(p)+1), Args: args, Columns: []Column{{Name: "time", Type: "time", Role: "time"}, {Name: "severity", Type: "string", Role: "dimension"}, {Name: "service", Type: "string", Role: "dimension"}, {Name: "body", Type: "string", Role: "dimension"}, {Name: "trace_id", Type: "string", Role: "dimension"}, {Name: "namespace", Type: "string", Role: "dimension"}}}, nil + } + interval := max(scope.Interval, AutoInterval(scope.End.Sub(scope.Start), 960)) + seconds := int64(interval / time.Second) + lo := alignedBucketMillis(scope.Start, interval) + points := int((scope.End.UnixMilli() - lo + interval.Milliseconds() - 1) / interval.Milliseconds()) + for points > 240 { + interval *= 2 + seconds = int64(interval / time.Second) + lo = alignedBucketMillis(scope.Start, interval) + points = int((scope.End.UnixMilli() - lo + interval.Milliseconds() - 1) / interval.Milliseconds()) + } + limit := patternLimit(p) + text := base + fmt.Sprintf(`, +patterns AS (SELECT coalesce(body_template,'') AS pattern,count(*)::DOUBLE AS total FROM base GROUP BY 1 ORDER BY total DESC,pattern LIMIT %d), +buckets AS (SELECT coalesce(body_template,'') AS pattern,epoch_ms(time_bucket(INTERVAL '%d seconds',time::TIMESTAMP_NS,'1970-01-01'::TIMESTAMP_NS))::BIGINT AS point,count(*)::DOUBLE AS n FROM base GROUP BY 1,2), +dense AS (SELECT p.pattern,p.total,%d+r.i*%d AS point FROM patterns p CROSS JOIN range(%d) r(i)) +SELECT d.pattern,d.total,CAST(to_json(list(coalesce(b.n,0) ORDER BY d.point)) AS VARCHAR) AS trend +FROM dense d LEFT JOIN buckets b ON d.pattern=b.pattern AND d.point=b.point +GROUP BY d.pattern,d.total ORDER BY d.total DESC,d.pattern`, limit+1, seconds, lo, interval.Milliseconds(), points) + return Compiled{SQL: text, Args: args, Columns: []Column{{Name: "body_template", Type: "string", Role: "dimension"}, {Name: "count", Type: "number", Role: "measure", Unit: "count"}, {Name: "trend", Type: "json", Role: "dimension", Unit: "count"}}}, nil +} +func alignedBucketMillis(t time.Time, interval time.Duration) int64 { + n, width := t.UnixMilli(), interval.Milliseconds() + q := n / width + if n%width < 0 { + q-- + } + return q * width +} + +func validateRows(p *Panel, path string, problems *Problems) { + isRow := p.Viz == "logs" || p.Viz == "traces" || p.Viz == "log_patterns" + if p.Options != nil && p.Options.Highlight != "" && (!isRow || p.Viz == "traces" || len(p.Options.Highlight) > 200) { + problems.add(path+".options.highlight", "highlight is a log search of at most 200 characters") + } + if !isRow { + return + } + if p.Query == nil { + problems.add(path+".query", "row panels require a structured query") + return + } + q := p.Query + if p.Viz == "traces" { + if q.From != "spans" { + problems.add(path+".query.from", "traces reads spans") + } + if q.Sort != "" && q.Sort != "duration_ms" && q.Sort != "errors" && q.Sort != "+start" { + problems.add(path+".query.sort", "traces sort is duration_ms, errors or +start") + } + } else { + if q.From != "logs" { + problems.add(path+".query.from", "logs and log_patterns read logs") + } + } + if p.Viz == "logs" && q.Sort != "" && q.Sort != "time" && q.Sort != "+time" { + problems.add(path+".query.sort", "logs sort is time or +time") + } + if p.Viz == "log_patterns" && (len(q.By) != 1 || q.By[0] != "body_template" || len(q.Measures) != 1 || q.Measures[0] != "count()" || q.Sort != "" && q.Sort != "count") { + problems.add(path+".query", "log_patterns requires count(), by body_template, and count sort") + } + if (p.Viz == "logs" || p.Viz == "traces") && len(q.Measures) > 0 { + problems.add(path+".query.measures", "fixed row projections do not take aggregate measures") + } + if p.Options != nil && strings.TrimSpace(p.Options.Style) != "" { + problems.add(path+".options.style", "row panels cannot set chart styles") + } +} +``` + +In `spec.go`, change `Query.Measures` JSON tag to `json:"measures,omitempty"` and describe fixed rows as taking no measures. Add `Options.Highlight`: + +```go +Highlight string `json:"highlight,omitempty" jsonschema:"logs and log_patterns: literal redacted-body search, at most 200 characters"` +``` + +Add to `vizSpecs`, append to `vizOrder`, and update `Panel.Viz` description: + +```go +"logs": {width: 12, height: "l", query: true}, +"log_patterns": {width: 12, height: "m", query: true, minBy: 1, maxBy: 1, bucket: true}, +"traces": {width: 12, height: "m", query: true}, +``` + +Call `validateRows(p, path, problems)` beside `validateItems`. Change the measure-count condition in `validateQuery` to: + +```go +if (len(q.Measures) == 0 && p.Viz != "logs" && p.Viz != "traces") || len(q.Measures) > 6 { + problems.add(path+".measures", "a query has 1 to 6 measures; fixed logs and traces take none") +} + +``` + +Skip the generic measure-alias sort check for logs/traces (their validator above checks fixed sort names): change its condition to `q.Sort != "" && p.Viz != "logs" && p.Viz != "traces"`. + +At the start of `compileQuery`, insert: + +```go +if p.Viz == "logs" || p.Viz == "log_patterns" || p.Viz == "traces" { + return compileRows(p, filters, scope) +} + +``` + +Exemplars already use the redacted source from Task 2, so log filter and body_template selection semantics remain identical to row panels. + +Before scanning in `runScope`, set rowLimit for row panels explicitly: + +```go +if p.Viz == "logs" || p.Viz == "traces" { + rowLimit = rowLimitForPanel(p) +} +if p.Viz == "log_patterns" { + rowLimit = patternLimit(p) +} + +``` + + +- [ ] **Step 4: Run to see pass** + +```bash +rtk just test ./internal/panel/... ./internal/observability/... -run '"TestM2Rows|TestM2LogPatterns|TestRedact"' +rtk just test ./internal/panel/... ./internal/observability/... +``` + +Expected: redacted text is both displayed and searched, patterns conserve counts, all fixed rows are capped, and guarded filters still reject subqueries. + +Regenerate the changed panel/tool contract references, then format all Go changes before the controller commit: + +```bash +rtk just docs-generate +rtk just docs-generate-check +rtk just fmt +``` + +- [ ] **Step 5: Commit (controller)** + +```bash +rtk git add site/src/content/docs/reference internal/panel/rowpanels.go internal/panel/rowpanels_test.go internal/panel/spec.go internal/panel/validate.go internal/panel/compile.go internal/panel/exec.go internal/panel/exemplars.go internal/observability/redact.go +rtk git commit -m "feat(panels): add guarded log, pattern and trace row frames" +``` + +--- + +### Task 6: Reuse topology and overview on panel frames + +**Files:** +- Create: `internal/panel/rollup_panels.go`, `internal/panel/rollup_panels_test.go` +- Modify: `internal/panel/exec.go`, `internal/panel/check.go`, `internal/panel/validate.go`, `internal/panel/spec.go`, `internal/panel/exemplars.go`, `cmd/fanout/main.go` +- Modify existing shared service: `internal/observability/contracts.go`, `internal/observability/topology.go`, `internal/observability/overview.go`; reuse `internal/observability/service.go` unchanged + +**Interfaces:** +- Consumes existing: `(*observability.Service).Topology(ctx context.Context, scope observability.Scope, limit int) (observability.Result[observability.Topology], error)`; `(*observability.Service).Overview(ctx context.Context, scope observability.Scope, limit int) (observability.Result[observability.Overview], error)`; `observability.New(db observability.DB, repository traceReader, retentionDays int) *observability.Service`; `Filter.Source`, `Filter.EqField`; `constantText(n map[string]any) string`; `fieldText(n any) string`. +- Produces `observability.Scope.Service string` (optional internal scope), and `type RollupReader interface` with those exact methods; `(*Executor).SetRollupReader(reader RollupReader)`; `(*Executor).runRollupPanel(ctx context.Context, p *Panel, filters []Filter, scope Scope) (*Frame, string, error)`; `rollupFilterValue(ctx context.Context, parser Parser, f Filter, scope Scope) (string, string, error)`. +- Health frame: service, health, spans, error_rate (percent), p50_ms, p95_ms, log_count, metric_count. Service-map frame: kind, service, caller, callee, edge_type, calls (edges only), average_ms (edges only), error_rate (percent), health, p95_ms (nodes only), spans (nodes only). Nodes and edges use the same frame with `kind=node|edge`. No SQLite, raw-query or public SQL allowlist additions. +- `service_map` and `health` require `query.from=spans`, no measures, no grouping/time buckets, only equality namespace/service filters. Limits are at most 400 per observability read. Extra filter semantics are rejected, never silently discarded. + +- [ ] **Step 1: Write failing engine and guard tests** + +Create `internal/panel/rollup_panels_test.go`: + +```go +package panel + +import ( + "errors" + "slices" + "testing" + "time" + + "github.com/labstack/fanout/internal/observability" +) + +func TestM2RollupPanelsReuseServices(t *testing.T) { + engine, _ := newTestEngine(t) + at := fixtureStart + _, err := engine.DB.Exec(`INSERT INTO service_rollup(namespace,bucket,service,spans,served_spans,p50_ms,p95_ms,error_rate,log_count,metric_count) VALUES ('shop',?,'checkout',10,10,50,100,.1,2,3),('shop',?,'payment',20,20,20,40,0,1,1)`, at, at) + if err != nil { + t.Fatal(err) + } + _, err = engine.DB.Exec(`INSERT INTO edge_rollup VALUES ('shop',?,'checkout','payment',10,20,.1,'call')`, at) + if err != nil { + t.Fatal(err) + } + reader := observability.New(engine, engine, 30) + e := NewExecutor(engine, 30) + e.SetRollupReader(reader) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Overview", Time: Time{Range: "1h"}, Panels: []Panel{ + {ID: "health", Title: "Health", Viz: "health", Query: &Query{From: "spans", Where: []string{"namespace = 'shop'"}}}, + {ID: "map", Title: "Map", Viz: "service_map", Query: &Query{From: "spans", Where: []string{"namespace = 'shop'"}}}, + }} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + overview, err := reader.Overview(t.Context(), observability.Scope{Namespace: "shop", Start: at, End: at.Add(time.Hour)}, 400) + if err != nil { + t.Fatal(err) + } + if got[0].Status != "ok" || got[0].Frame.Rows != len(overview.Data.Services) || got[0].Frame.Values[3][0].(float64) != 10 { + t.Fatalf("overview frame: %+v", got[0]) + } + if got[1].Status != "ok" || got[1].Frame.Rows != 3 || got[1].Frame.Values[7][2].(float64) != 10 { + t.Fatalf("edges: %+v", got[1]) + } + d.Panels[0].Query.Where = []string{"namespace = 'missing'"} + d.Panels = d.Panels[:1] + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != "empty" { + t.Fatalf("empty health: %+v %v", got, err) + } +} +func TestM2RollupPanelsApplyServiceBeforeLimit(t *testing.T) { + engine, _ := newTestEngine(t) + at := fixtureStart + _, err := engine.DB.Exec(`INSERT INTO service_rollup SELECT 'shop',?,'noisy-'||i,100,100,3000,4000,.5,0,0 FROM generate_series(1,500) AS t(i)`, at) + if err != nil { + t.Fatal(err) + } + _, err = engine.DB.Exec(`INSERT INTO service_rollup VALUES ('shop',?,'quiet',1,1,1,2,0,0,0)`, at) + if err != nil { + t.Fatal(err) + } + _, err = engine.DB.Exec(`INSERT INTO edge_rollup SELECT 'shop',?,'noisy-'||i,'sink',100,100,.5,'call' FROM generate_series(1,500) AS t(i)`, at) + if err != nil { + t.Fatal(err) + } + _, err = engine.DB.Exec(`INSERT INTO edge_rollup VALUES ('shop',?,'quiet','sink',1,2,0,'call')`, at) + if err != nil { + t.Fatal(err) + } + e := NewExecutor(engine, 30) + e.SetRollupReader(observability.New(engine, engine, 30)) + e.now = func() time.Time { return at.Add(time.Hour) } + d := Dashboard{Name: "Quiet", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "h", Title: "H", Viz: "health", Query: &Query{From: "spans", Where: []string{"namespace = 'shop'", "service = 'quiet'"}}}, {ID: "m", Title: "M", Viz: "service_map", Query: &Query{From: "spans", Where: []string{"namespace = 'shop'", "service = 'quiet'"}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + if got[0].Frame.Rows != 1 || got[0].Frame.Values[0][0] != "quiet" || got[1].Frame.Rows != 2 { + t.Fatalf("post-limit scope loss: %+v", got) + } +} +func TestM2RollupPanelsRejectUnrepresentableFilters(t *testing.T) { + e := newFixtureExecutor(t) + cases := []struct{ where, message string }{ + {"http_route = '/cart'", "rollup panels support equality filters on namespace or service"}, + {"service <> 'checkout'", "rollup panels support equality filters on namespace or service"}, + {"service = operation", "rollup equality needs a literal or variable"}, + } + for _, tc := range cases { + d := Dashboard{Name: "Map", Panels: []Panel{{ID: "map", Title: "Map", Viz: "service_map", Query: &Query{From: "spans", Where: []string{tc.where}}}}} + err := e.Validate(t.Context(), &d) + var got Problems + want := Problem{Path: "panels[0].query.where[0]", Message: tc.message, Hint: "use namespace or service equality with a literal or single-value variable"} + if !errors.As(err, &got) || !slices.Contains(got, want) { + t.Fatalf("%s: got %v want %+v", tc.where, err, want) + } + } +} +``` + +- [ ] **Step 2: Run to see failure** + +```bash +rtk just test ./internal/panel/... -run '"TestM2RollupPanels|TestM2VizOrder"' +``` + +Expected: missing SetRollupReader and unsupported types. + +- [ ] **Step 3: Implement the adapter without copying observability SQL** + +Create `internal/panel/rollup_panels.go`: + +```go +package panel + +import ( + "context" + "fmt" + "strings" + + "github.com/labstack/fanout/internal/observability" +) + +type RollupReader interface { + Topology(context.Context, observability.Scope, int) (observability.Result[observability.Topology], error) + Overview(context.Context, observability.Scope, int) (observability.Result[observability.Overview], error) + Performance(context.Context, observability.Scope, observability.PerformanceOptions) (observability.Result[observability.Performance], error) +} + +func (e *Executor) SetRollupReader(reader RollupReader) { e.rollups = reader } +func unwrapFilter(n any) map[string]any { + v, _ := n.(map[string]any) + for v != nil && v["class"] == "CAST" { + v, _ = v["child"].(map[string]any) + } + return v +} +func rollupFilterValue(ctx context.Context, parser Parser, f Filter, scope Scope) (string, string, error) { + tree, err := parser.ParseSQL(ctx, "SELECT 1 FROM spans WHERE ("+f.Source+")") + if err != nil { + return "", "", err + } + node := unwrapFilter(tree["where_clause"]) + if node == nil || node["class"] != "COMPARISON" || node["type"] != "COMPARE_EQUAL" { + return "", "", fmt.Errorf("rollup panels support equality filters on namespace or service") + } + left, right := unwrapFilter(node["left"]), unwrapFilter(node["right"]) + if left["class"] != "COLUMN_REF" { + left, right = right, left + } + field := fieldText(left) + if left["class"] != "COLUMN_REF" || (field != "service" && field != "namespace") { + return "", "", fmt.Errorf("rollup panels support equality filters on namespace or service") + } + switch right["class"] { + case "CONSTANT": + value := constantText(right) + if value == "" { + return "", "", fmt.Errorf("scope equality requires a nonempty string") + } + return field, value, nil + case "PARAMETER": + name, _ := right["identifier"].(string) + v, ok := scope.Vars[name] + if !ok || v.All || len(v.Values) != 1 || v.Values[0] == "" { + return "", "", fmt.Errorf("rollup equality needs one selected value") + } + return field, v.Values[0], nil + default: + return "", "", fmt.Errorf("rollup equality needs a literal or variable") + } +} +func (e *Executor) runRollupPanel(ctx context.Context, p *Panel, filters []Filter, scope Scope) (*Frame, string, error) { + if e.rollups == nil { + return nil, "", fmt.Errorf("rollup reader unavailable") + } + request := observability.Scope{Start: scope.Start, End: scope.End} + seen := map[string]string{} + for _, f := range filters { + if scope.dropped(f) { + continue + } + field, value, err := rollupFilterValue(ctx, e.engine, f, scope) + if err != nil { + return nil, "", err + } + if prior, ok := seen[field]; ok && prior != value { + columns := healthColumns() + if p.Viz == "service_map" { + columns = mapColumns() + } + return newFrame(columns), "observability: conflicting scope filters", nil + } + seen[field] = value + if field == "namespace" { + request.Namespace = value + } else { + request.Service = value + } + } + limit := 400 + if p.Query.Limit > 0 { + limit = min(400, p.Query.Limit) + } + if p.Viz == "health" { + result, err := e.rollups.Overview(ctx, request, limit) + if err != nil { + return nil, "", err + } + f := newFrame(healthColumns()) + f.Truncated = len(result.Data.Services) == limit + performance, err := e.rollups.Performance(ctx, request, observability.PerformanceOptions{Service: request.Service, Limit: 1}) + if err != nil { + return nil, "", err + } + f.Health = &HealthFrame{Health: string(result.Data.Health), Counts: result.Data.Counts, TotalSpans: result.Data.TotalSpans, ErrorRate: result.Data.ErrorRate * 100, ServiceCount: result.Data.ServiceCount, ErrorTrend: []float64{}} + for _, point := range performance.Data.Points { + f.Health.ErrorTrend = append(f.Health.ErrorTrend, point.ErrorRate*100) + } + for _, s := range result.Data.Services { + appendPanelRow(f, s.Service, string(s.Health), float64(s.Spans), s.ErrorRate*100, s.P50MS, s.P95MS, float64(s.LogCount), float64(s.MetricCount)) + } + return f, "observability.Service.Overview", nil + } + result, err := e.rollups.Topology(ctx, request, limit) + if err != nil { + return nil, "", err + } + f := newFrame(mapColumns()) + f.Truncated = len(result.Data.Nodes) == limit || len(result.Data.Edges) == limit + for _, n := range result.Data.Nodes { + appendPanelRow(f, "node", n.Service, "", "", "", nil, nil, n.ErrorRate*100, string(n.Health), n.P95MS, float64(n.Spans)) + } + for _, edge := range result.Data.Edges { + appendPanelRow(f, "edge", "", edge.Caller, edge.Callee, edge.Type, float64(edge.Calls), edge.AverageMS, edge.ErrorRate*100, "", nil, nil) + } + return f, "observability.Service.Topology", nil +} +func mapColumns() []Column { + return []Column{{Name: "kind", Type: "string", Role: "dimension"}, {Name: "service", Type: "string", Role: "dimension"}, {Name: "caller", Type: "string", Role: "dimension"}, {Name: "callee", Type: "string", Role: "dimension"}, {Name: "edge_type", Type: "string", Role: "dimension"}, {Name: "calls", Type: "number", Role: "measure", Unit: "count"}, {Name: "average_ms", Type: "number", Role: "measure", Unit: "ms"}, {Name: "error_rate", Type: "number", Role: "measure", Unit: "percent"}, {Name: "health", Type: "string", Role: "dimension"}, {Name: "p95_ms", Type: "number", Role: "measure", Unit: "ms"}, {Name: "spans", Type: "number", Role: "measure", Unit: "count"}} +} +func healthColumns() []Column { + return []Column{{Name: "service", Type: "string", Role: "dimension"}, {Name: "health", Type: "string", Role: "dimension"}, {Name: "spans", Type: "number", Role: "measure", Unit: "count"}, {Name: "error_rate", Type: "number", Role: "measure", Unit: "percent"}, {Name: "p50_ms", Type: "number", Role: "measure", Unit: "ms"}, {Name: "p95_ms", Type: "number", Role: "measure", Unit: "ms"}, {Name: "log_count", Type: "number", Role: "measure", Unit: "count"}, {Name: "metric_count", Type: "number", Role: "measure", Unit: "count"}} +} +func appendPanelRow(f *Frame, values ...any) { + for i, v := range values { + f.Values[i] = append(f.Values[i], v) + } + f.Rows++ +} +func validateRollupPanel(p *Panel, path string, problems *Problems) { + if p.Viz != "health" && p.Viz != "service_map" { + return + } + if p.Query == nil || p.Query.From != "spans" { + problems.add(path+".query", "health and service_map require a structured spans scope") + return + } + if len(p.Query.Measures) > 0 || len(p.Query.By) > 0 || p.Query.Bucket != "" { + problems.add(path+".query", "rollup panels use scope filters and a limit, without measures, dimensions or buckets") + } + if p.Query.Sort != "" || p.Options != nil && strings.TrimSpace(p.Options.Style) != "" { + problems.add(path+".options", "rollup panels have fixed health and graph encodings") + } +} +``` + +Add `Health *HealthFrame json:"health,omitempty"` to Frame in frame.go and define this type there (import `internal/observability`): + +```go +type HealthFrame struct { + Health string `json:"health"` + Counts observability.HealthCounts `json:"counts"` + TotalSpans int64 `json:"total_spans"` + ErrorRate float64 `json:"error_rate"` + ServiceCount int `json:"service_count"` + ErrorTrend []float64 `json:"error_trend"` +} +``` + +This carries Overview’s exact aggregate metrics and Performance’s error-rate trend to the widget without an extra browser request. The service rows remain available to Inspect. Port the widget from `2c208c85^:ui/host/src/widgets/overview.tsx` and `pieces.tsx`; its health/error-rate metric tiles, operation/service counts, error trend and distribution are required, rather than a row summary/table. + +Extend the existing observability Scope in contracts.go with this field (no public HTTP/MCP input changes): + +```go +Service string `json:"service,omitempty"` +``` + +Modify the existing `overviewQuery` WHERE line in overview.go, preserving its aggregations: + +```sql +WHERE bucket >= ? AND bucket < ? AND (? = '' OR namespace = ?) AND (? = '' OR service = ?) +``` + +Replace its QueryContext call with: + +```go +rows, err := s.db.QueryContext(ctx, overviewQuery, scope.Start, scope.End, scope.Namespace, scope.Namespace, scope.Service, scope.Service, limit) + +``` + +Modify the existing `topologyEdgesQuery` WHERE line in topology.go: + +```sql +WHERE bucket >= ? AND bucket < ? AND (? = '' OR namespace = ?) AND (? = '' OR caller = ? OR callee = ?) +``` + +Replace its QueryContext call with: + +```go +rows, err := s.db.QueryContext(ctx, topologyEdgesQuery, scope.Start, scope.End, scope.Namespace, scope.Namespace, scope.Service, scope.Service, scope.Service, limit) + +``` + +Empty Scope.Service preserves existing callers. This applies the checked service restriction before GROUP BY/LIMIT, including low-volume matching edges. It extends the shared services; panel code contains no copy of their SQL. + +Add `rollups RollupReader` to Executor. At the beginning of `runScope`, after applying `queryrows.WithWindow`, insert: + +```go +if p.Viz == "health" || p.Viz == "service_map" { + return e.runRollupPanel(ctx, p, checked.Filters[p.ID], scope) +} + +``` + +In `Check`, after adding each checked filter to `checked.Filters[p.ID]`, insert: + +```go +if p.Viz == "health" || p.Viz == "service_map" { + sample := Scope{Vars: map[string]Value{}} + for name := range earlier { + sample.Vars[name] = Value{Values: []string{"check"}} + } + if _, _, err := rollupFilterValue(ctx, parser, f, sample); err != nil { + if isOperational(err) { + return nil, nil, err + } + problems.addHint(fmt.Sprintf("%s.query.where[%d]", path, j), SafeError(err), "use namespace or service equality with a literal or single-value variable") + } +} + +``` + +Add the two viz specs (`width:12,height:"m",query:true`), append names to vizOrder, and include them in the measure-count exception for fixed rows. Call `validateRollupPanel(p,path,problems)` in validatePanel. They have no measure families and therefore do not loosen the shared-axis rule. + +In selectionWhere (exemplars.go, created in Task 2), replace its dimension allowlist condition with the complete condition below so a service node can drill through the same guard: + +```go +if (!slices.Contains(p.Query.By, name) && !((p.Viz == "health" || p.Viz == "service_map") && name == "service")) || len(dimensions[name]) > 500 { + return "", nil, Problems{{Path: "dimensions", Message: "dimensions must name query.by fields and values at most 500 characters", Hint: "select one of the panel grouping fields"}} +} + +``` + +In `cmd/fanout/main.go`, after constructing `panels`, insert: + +```go +panels.SetRollupReader(queries) + +``` + +Add `TestM2VizOrder` to `internal/panel/validate_test.go` in Task 6: + +```go +func TestM2VizOrder(t *testing.T) { + if len(vizOrder) != 15 { + t.Fatalf("vizOrder has %d types, want 15", len(vizOrder)) + } + seen := map[string]bool{} + for _, viz := range vizOrder { + if seen[viz] { + t.Fatalf("duplicate %s", viz) + } + seen[viz] = true + if _, ok := vizSpecs[viz]; !ok { + t.Fatalf("unregistered %s", viz) + } + } +} +``` + + +- [ ] **Step 4: Run to see pass** + +```bash +rtk just test ./internal/panel/... ./internal/observability/... -run '"TestM2RollupPanels|TestM2VizOrder|TestM2Rows|TestM2LogPatterns|TestM2Items"' +rtk just test ./internal/panel/... ./internal/observability/... +``` + +Expected: frames equal existing service results, empty scope is empty, unsupported filters fail during Check, no duplicated analytical SQL. + +Regenerate the changed panel/tool contract references, then format all Go changes before the controller commit: + +```bash +rtk just docs-generate +rtk just docs-generate-check +rtk just fmt +``` + +- [ ] **Step 5: Commit (controller)** + +```bash +rtk git add site/src/content/docs/reference internal/panel/rollup_panels.go internal/panel/rollup_panels_test.go internal/panel/exec.go internal/panel/check.go internal/panel/validate.go internal/panel/spec.go internal/panel/frame.go internal/panel/validate_test.go internal/panel/exemplars.go cmd/fanout/main.go internal/observability/contracts.go internal/observability/overview.go internal/observability/topology.go +rtk git commit -m "feat(panels): reuse observability topology and health services" +``` + +--- + +### Task 7: Chart visualizations: heatmap, histogram, scatter, state timeline, service map and health + +**Files:** +- Create: `ui/panels/analysis.ts`, `ui/panels/rows.ts` +- Create: `ui/host/src/dashboards/viz/analysis-chart.tsx`, `ui/host/src/dashboards/viz/heatmap.tsx`, `histogram.tsx`, `scatter.tsx`, `state-timeline.tsx`, `service-map.tsx`, `health.tsx` (all six chart files under that viz directory) +- Create: `ui/host/src/dashboards/new-viz.test.tsx` +- Modify: `ui/panels/types.ts`, `ui/host/src/dashboards/viz/index.tsx`, `ui/host/src/dashboards/echart-canvas.tsx`, `ui/host/src/dashboards/echart-canvas.test.tsx`, `ui/host/src/dashboards/viz/table.tsx`, `ui/host/src/dashboards/panel-card.tsx` +- Generated: `internal/ui/dist/**`, `internal/mcp/apps/**` through `just ui` + +**Interfaces:** +- Consumes existing: `chartThemeFor(dark: boolean): ChartTheme`, `EChartCanvas({option,height,label,onClick,group})`, `statusFor(value: number | null, thresholds?: Threshold[], better?: "lower" | "higher"): Status | null`, `formatValue(unit: string | undefined, value: number | null): string`, `PanelCard` and `InspectDrawer`. +- Produces pure TS: `analysisOption(panel: Panel, result: PanelResult, theme: ChartTheme): Record`; `frameRows(frame: Frame): Record[]`; `rowModel(panel: Panel, result: PanelResult): RowModel`; `analysisSummary(panel: Panel, result: PanelResult): string`; `Selection = {time?:number; dimensions:Record; trace_id?:string; namespace?:string; bucket?:{lower:number;upper?:number}}`. +- Produces React: `AnalysisChart(props: AnalysisProps)`, six chart Viz exports accepting `AnalysisProps = {panel:Panel;title?:string;result:PanelResult;dark:boolean;height:number;group?:string;onSelect?:(value:string)=>void;onPoint?:(selection:Selection)=>void;onZoom?:(from:number,to:number)=>void}`. `RowPanel` uses the existing TableViz for TanStack sorting and a cell renderer hook introduced here. +- TS mirrors: fifteen-value `Viz`, Query optional measures and histogram, Options `x_scale`, `y_scale`, `highlight` and `columns` with exported `ColumnFormat`; PanelResult `from_ms`/`to_ms`. Frames retain their M1 types. Inspect is unchanged and remains reachable for every type through PanelCard. + +- [ ] **Step 1: Write failing compile and chrome tests** + +Create `ui/host/src/dashboards/new-viz.test.tsx`: + +```tsx +import { MantineProvider } from "@mantine/core"; +import { act } from "react"; +import { createRoot } from "react-dom/client"; +import { describe, expect, it, vi } from "vitest"; +import { analysisOption, analysisSummary } from "../../../panels/analysis"; +import { chartThemeFor } from "../../../panels/compile"; +import {visualizations,type Panel,type PanelResult,type Viz as VizType} from "../../../panels/types"; +import { PanelCard } from "./panel-card"; +vi.mock("./echart-canvas",()=>({EChartCanvas:({label}:{label:string})=>
})); +const types:VizType[]=["heatmap","histogram","scatter","state_timeline","service_map","health"]; +const col=(name:string,type:"time"|"number"|"string"|"json",role:"time"|"dimension"|"measure",unit?:string)=>({name,type,role,unit}); +const fixtures:Record={ + heatmap:{columns:[col("time","time","time"),col("bucket_lower","number","dimension","ms"),col("bucket_upper","number","dimension","ms"),col("count","number","measure","count")],values:[[1000],[1],[2],[3]],rows:1}, + histogram:{columns:[col("bucket_lower","number","dimension","ms"),col("bucket_upper","number","dimension","ms"),col("count","number","measure","count")],values:[[1],[2],[3]],rows:1}, + scatter:{columns:[col("service","string","dimension"),col("count","number","measure","count"),col("p95","number","measure","ms")],values:[["checkout"],[2],[50]],rows:1}, + state_timeline:{columns:[col("time","time","time"),col("service","string","dimension"),col("p95","number","measure","ms")],values:[[1000],["checkout"],[50]],rows:1}, + logs:{columns:[col("time","time","time"),col("severity","string","dimension"),col("service","string","dimension"),col("body","string","dimension"),col("trace_id","string","dimension"),col("namespace","string","dimension")],values:[[1000],["ERROR"],["checkout"],["failed"],["abc"],["shop"]],rows:1}, + log_patterns:{columns:[col("body_template","string","dimension"),col("count","number","measure","count"),col("trend","json","dimension","count")],values:[["failed <*>"],[2],["[1,1]"]],rows:1}, + traces:{columns:[col("trace_id","string","dimension"),col("namespace","string","dimension"),col("service","string","dimension"),col("operation","string","dimension"),col("duration_ms","number","measure","ms"),col("status","string","dimension"),col("start","time","time")],values:[["abc"],["shop"],["checkout"],["cart"],[50],["STATUS_CODE_ERROR"],[1000]],rows:1}, + service_map:{columns:[col("kind","string","dimension"),col("service","string","dimension"),col("caller","string","dimension"),col("callee","string","dimension"),col("edge_type","string","dimension"),col("calls","number","measure","count"),col("average_ms","number","measure","ms"),col("error_rate","number","measure","percent"),col("health","string","dimension"),col("p95_ms","number","measure","ms"),col("spans","number","measure","count")],values:[["node","edge"],["checkout",""],["","checkout"],["","payment"],["","call"],[null,3],[null,20],[10,1],["unhealthy",""],[50,null],[2,null]],rows:2}, + health:{columns:[col("service","string","dimension"),col("health","string","dimension"),col("spans","number","measure","count"),col("error_rate","number","measure","percent"),col("p50_ms","number","measure","ms"),col("p95_ms","number","measure","ms"),col("log_count","number","measure","count"),col("metric_count","number","measure","count")],values:[["checkout"],["unhealthy"],[2],[10],[20],[50],[1],[1]],rows:1,health:{health:"unhealthy",counts:{healthy:0,degraded:0,unhealthy:1},service_count:1,total_spans:2,error_rate:10,error_trend:[1,10]}}, +}; +const resultFor=(viz:string):PanelResult=>({id:"p",status:"ok",elapsed_ms:1,interval:"1m",from_ms:0,to_ms:10000,frame:fixtures[viz]}); +const assertFinite=(value:unknown):void=>{if(typeof value==="number")expect(Number.isFinite(value)).toBe(true);else if(Array.isArray(value))value.forEach(assertFinite);else if(value&&typeof value==="object")Object.values(value).forEach(assertFinite);}; + +describe("M2 visualizations",()=>{ + it("has exactly fifteen registry entries",()=>{ + expect(visualizations).toHaveLength(15);expect(new Set(visualizations).size).toBe(15); + }); + it("compiles empty chart frames in both themes without nonfinite values",()=>{ + for(const dark of [false,true])for(const viz of types){ + const panel:Panel={id:"p",title:viz,viz,thresholds:[{value:1,status:"bad"}]}; + const result=resultFor(viz);const empty={...result,frame:{...result.frame!,values:result.frame!.columns.map(()=>[]),rows:0,health:undefined}} as PanelResult; + assertFinite(analysisOption(panel,empty,chartThemeFor(dark))); + const nonfinite={...result,frame:{...result.frame!,values:result.frame!.values.map(values=>values.map(v=>typeof v==="number"?Infinity:v))}};assertFinite(analysisOption(panel,nonfinite,chartThemeFor(dark))); + expect(analysisSummary(panel,empty)).toContain("0"); + } + }); + it("renders loading, empty, error and partial states for all types",async()=>{ + const container=document.createElement("div");document.body.append(container);const root=createRoot(container); + const noop=()=>undefined; + for(const viz of types){ + const result=resultFor(viz); + const panel:Panel={id:"p",title:viz,viz}; + const props={panel,title:viz,height:300,group:"g",editing:false,agentAvailable:false,onView:noop,onInspect:noop,onCopyLink:noop,onExplain:noop}; + await act(async()=>root.render()); + expect(container.querySelector('[aria-label="Loading panel"]')).not.toBeNull(); + await act(async()=>root.render()); + expect(container.textContent).toContain("No matching events"); + await act(async()=>root.render()); + expect(container.textContent).toContain("Query failed"); + await act(async()=>root.render()); + expect(container.textContent).toContain("Truncated"); + const zero={...result,frame:{...result.frame!,values:result.frame!.columns.map(()=>[]),rows:0,health:undefined}} as PanelResult; + await act(async()=>root.render()); + expect(container.textContent).not.toMatch(/NaN|Infinity/); + const nonfinite={...result,frame:{...result.frame!,values:result.frame!.values.map(values=>values.map(value=>typeof value==="number"?Infinity:value)),health:result.frame!.health?{...result.frame!.health,error_rate:Infinity,total_spans:Infinity,error_trend:[Infinity,1]}:undefined}}; + await act(async()=>root.render()); + expect(container.textContent).not.toMatch(/NaN|Infinity/); + await act(async()=>root.render()); + expect(container.textContent).not.toMatch(/NaN|Infinity/); + } + await act(async()=>root.unmount());container.remove(); + }); +}); +``` + +- [ ] **Step 2: Run to see failure** + +```bash +rtk proxy sh -c 'cd ui/host && bun run test src/dashboards/new-viz.test.tsx' +``` + +Expected: missing compilers and new type union members. + +- [ ] **Step 3: Mirror the Go contract and compile options** + +In `ui/panels/types.ts`, replace Viz with: + +```ts +export const visualizations = ["stat","gauge","timeseries","bar","table","text","heatmap","histogram","scatter","state_timeline","logs","log_patterns","traces","service_map","health"] as const; +export type Viz = typeof visualizations[number]; +export type Selection = { time?: number; dimensions: Record; trace_id?: string; namespace?: string; bucket?: {lower:number;upper?:number} }; +export type ColumnFormat = {field:string;format:"unit"|"bar"|"status"|"sparkline"|"trace_link"|"service_link"|"log_template";unit?:Unit;variable?:string}; +``` + +Replace Query with: + +```ts +export type Query = { from: "spans"|"logs"|"metrics"; where?: string[]; measures?: string[]; by?: string[]; bucket?: string; histogram?: {field:string;buckets:"log2"|"explicit";temporality?:"cumulative"|"delta"}; sort?: string; limit?: number }; +``` + +Add `x_unit?:Unit` beside Panel.unit, and `health?:{health:string;counts:{healthy:number;degraded:number;unhealthy:number};total_spans:number;error_rate:number;service_count:number;error_trend:number[]}` to Frame. Add `from_ms?:number; to_ms?:number` to PanelResult. Extend the existing inline Panel.options type with `x_scale?: "linear"|"log"; y_scale?: "linear"|"log"; highlight?: string; columns?:ColumnFormat[]`. Where existing pure compilers access `query.measures`, use `query.measures ?? []` (the fixed-row query may omit it). + +Create `ui/panels/rows.ts`: + +```ts +import type { Cell, Frame, Panel, PanelResult, Selection } from "./types"; +export type RowModel = { columns: string[]; rows: Record[]; selection(row:Record):Selection }; +export function frameRows(frame:Frame):Record[] { + return Array.from({length:frame.rows},(_,r)=>Object.fromEntries(frame.columns.map((c,i)=>[c.name,typeof frame.values[i]?.[r]==="number"&&!Number.isFinite(frame.values[i][r])?null:frame.values[i]?.[r]??null]))); +} +export function rowModel(panel:Panel,result:PanelResult):RowModel { + const frame=result.frame??{columns:[],values:[],rows:0}; + return {columns:frame.columns.map(c=>c.name),rows:frameRows(frame),selection:(row)=>{ + const dimensions:Record={}; + for(const by of panel.query?.by??[]) {const column=by.startsWith("attributes[")||by.startsWith("resource[")?by.slice(by.indexOf("'")+1,by.lastIndexOf("'")):by;if(row[column]!==undefined&&row[column]!==null)dimensions[by]=String(row[column]);} + return {time:typeof row.time==="number"?row.time:typeof row.start==="number"?row.start:undefined,dimensions,trace_id:typeof row.trace_id==="string"?row.trace_id:undefined,namespace:typeof row.namespace==="string"?row.namespace:undefined}; + }}; +} +``` + +Create `ui/panels/analysis.ts`: + +```ts +import { seriesColor, healthSymbol, healthBorderType, healthSymbolScale } from "../chart"; +import { formatAxis } from "./units"; +import type { ChartTheme } from "./compile"; +import { frameRows } from "./rows"; +import { statusFor } from "./thresholds"; +import type { Panel, PanelResult } from "./types"; +const spanMs=(s?:string)=>{const m=/^(\d+)(s|m|h|d)$/.exec(s??"");return m?Number(m[1])*({s:1000,m:60000,h:3600000,d:86400000}[m[2] as "s"|"m"|"h"|"d"]):60000;}; +export function analysisSummary(panel:Panel,result:PanelResult):string{return `${panel.title}: ${result.frame?.rows??0} rows; ${(result.frame?.columns??[]).map(c=>c.name+(c.unit?` (${c.unit})`:"")).join(", ")}${result.frame?.truncated?", limited data":""}`;} +export function analysisOption(panel:Panel,result:PanelResult,theme:ChartTheme):Record{ + const frame=result.frame??{columns:[],values:[],rows:0};const rows=frameRows(frame); + const dims=frame.columns.filter(c=>c.role==="dimension").map(c=>c.name);const measures=frame.columns.filter(c=>c.role==="measure"); + const base={animation:false,aria:{enabled:true,description:analysisSummary(panel,result)},textStyle:{fontFamily:theme.font,color:theme.text},grid:{left:70,right:24,top:30,bottom:40,containLabel:true},tooltip:{trigger:"item",backgroundColor:theme.surface,borderColor:theme.border,textStyle:{color:theme.text},renderMode:"richText"},legend:{show:panel.options?.legend!=="hidden",textStyle:{color:theme.muted}},xAxis:{type:"value"},yAxis:{type:"value"},series:[] as unknown[]}; + if(panel.viz==="scatter"){ + const item=dims[0];const colour=dims[1];const groups=[...new Set(rows.map(r=>colour?String(r[colour]??""):"Items"))]; + return {...base,xAxis:{type:(panel.options?.x_scale??panel.options?.scale)==="log"?"log":"value",name:panel.x_unit??measures[0]?.unit,axisLabel:{formatter:formatAxis(panel.x_unit??measures[0]?.unit)}},yAxis:{type:(panel.options?.y_scale??panel.options?.scale)==="log"?"log":"value",name:panel.unit??measures[1]?.unit,axisLabel:{formatter:formatAxis(panel.unit??measures[1]?.unit)}},series:groups.map(name=>({type:"scatter",name,itemStyle:{color:seriesColor(name,theme.dark)},data:rows.filter(r=>!colour||String(r[colour]??"")===name).filter(r=>typeof r[measures[0]?.name]==="number"&&typeof r[measures[1]?.name]==="number").filter(r=>(panel.options?.x_scale!=="log"||Number(r[measures[0].name])>0)&&(panel.options?.y_scale!=="log"||Number(r[measures[1].name])>0)).map(r=>({name:String(r[item]??""),value:[r[measures[0].name],r[measures[1].name]],selection:{dimensions:Object.fromEntries((panel.query?.by??[]).map((key,i)=>[key,String(r[dims[i]]??"")]))}}))}))}; + } + if(panel.viz==="histogram"){ + const split=dims.find(d=>d!=="bucket_lower"&&d!=="bucket_upper"); + const ordered=[...rows].sort((a,b)=>(a.bucket_lower===null?-Infinity:Number(a.bucket_lower))-(b.bucket_lower===null?-Infinity:Number(b.bucket_lower))||(a.bucket_upper===null?Infinity:Number(a.bucket_upper))-(b.bucket_upper===null?Infinity:Number(b.bucket_upper))); + const labels=[...new Set(ordered.map(r=>`${r.bucket_lower??"−∞"}–${r.bucket_upper??"∞"}`))];const names=[...new Set(rows.map(r=>split?String(r[split]??""):"Count"))]; + return {...base,xAxis:{type:"category",data:labels,name:panel.unit??frame.columns.find(c=>c.name==="bucket_lower")?.unit},yAxis:{type:"value",name:"count"},series:names.map(name=>({type:"bar",name,itemStyle:{color:seriesColor(name,theme.dark)},data:labels.map(label=>{const r=rows.find(r=>(!split||String(r[split]??"")===name)&&`${r.bucket_lower??"−∞"}–${r.bucket_upper??"∞"}`===label);return {value:r?.count??0,selection:{dimensions:split?{[panel.query?.by?.[0]??split]:name}:{},bucket:typeof r?.bucket_lower==="number"?{lower:r.bucket_lower,upper:typeof r.bucket_upper==="number"?r.bucket_upper:undefined}:undefined}};})}))}; + } + if(panel.viz==="service_map"){ + const nodes=new Map(rows.filter(r=>r.kind==="node").map(r=>[String(r.service),r]));const edges=rows.filter(r=>r.kind==="edge");for(const e of edges)for(const name of [String(e.caller),String(e.callee)])if(!nodes.has(name))nodes.set(name,{service:name,health:"unknown"}); + return {...base,xAxis:undefined,yAxis:undefined,legend:undefined,series:[{type:"graph",layout:"force",roam:true,force:{repulsion:180,edgeLength:100},label:{show:true,color:theme.text},data:[...nodes].map(([name,r])=>({id:name,name,symbol:healthSymbol(String(r.health??"unknown")),symbolSize:24*healthSymbolScale(String(r.health??"unknown")),value:{spans:r.spans,p95_ms:r.p95_ms,error_rate:r.error_rate},itemStyle:{borderType:healthBorderType(String(r.health??"unknown")),borderWidth:2,color:r.health==="unhealthy"?theme.status.bad:r.health==="degraded"?theme.status.warn:theme.muted},selection:{dimensions:{service:name}}})),links:edges.map(r=>({source:r.caller,target:r.callee,value:r.calls,lineStyle:{color:Number(r.error_rate)>0?theme.status.bad:theme.border,width:Number(r.error_rate)>0?3+Math.min(5,Number(r.error_rate)/10):1,opacity:Number(r.error_rate)>0?1:.6}}))}]}; + } + if(panel.viz==="heatmap"||panel.viz==="state_timeline"){ + const heat=panel.viz==="heatmap";const item=dims[0];const ordered=heat?[...rows].sort((a,b)=>(a.bucket_lower===null?-Infinity:Number(a.bucket_lower))-(b.bucket_lower===null?-Infinity:Number(b.bucket_lower))):rows;const names=[...new Set(ordered.map(r=>heat?`${r.bucket_lower??"−∞"}–${r.bucket_upper??"∞"}`:String(r[item]??"")))]; + const interval=spanMs(result.interval);const value=measures[0]?.name??"count"; + const data=rows.map(r=>({value:[r.time,names.indexOf(heat?`${r.bucket_lower??"−∞"}–${r.bucket_upper??"∞"}`:String(r[item]??"")),r[value],Number(r.time)+interval,heat?0:typeof r[value]!=="number"?0:(statusFor(r[value],panel.thresholds,panel.better??result.better)==="bad"?3:statusFor(r[value],panel.thresholds,panel.better??result.better)==="warn"?2:1)],selection:{time:r.time,dimensions:heat?{}:{[panel.query?.by?.[0]??item]:String(r[item]??"")},bucket:heat&&typeof r.bucket_lower==="number"?{lower:r.bucket_lower,upper:typeof r.bucket_upper==="number"?r.bucket_upper:undefined}:undefined},itemStyle:heat?undefined:{color:typeof r[value]==="number"?theme.status[statusFor(r[value],panel.thresholds,panel.better??result.better)??"ok"]:theme.muted}})); + const maxCount=Math.max(1,...rows.map(r=>Number(r[value])||0)); + return {...base,tooltip:{...base.tooltip,trigger:"axis"},axisPointer:{link:[{xAxisIndex:"all"}]},xAxis:{type:"time",axisPointer:{show:true}},yAxis:{type:"category",data:names},visualMap:heat?{show:false,min:0,max:maxCount,dimension:2,inRange:{color:[theme.surface,seriesColor("distribution",theme.dark)]}}:undefined,series:[{type:"custom",name:panel.title,encode:{x:[0,3],y:1,tooltip:2},data,renderItem:(_params:unknown,api:{value:(i:number)=>number;coord:(v:number[])=>number[];size:(v:number[])=>number[];style:()=>Record})=>{const left=api.coord([api.value(0),api.value(1)]);const right=api.coord([api.value(3),api.value(1)]);const height=Math.abs(api.size([0,1])[1])*.85;const cell={type:"rect",shape:{x:left[0],y:left[1]-height/2,width:Math.max(1,right[0]-left[0]),height},style:api.style()}; + if(heat)return cell; + const health=["unknown","healthy","degraded","unhealthy"][api.value(4)]??"unknown"; + const symbol=healthSymbol(health);const x=left[0]+Math.min(8,Math.max(1,(right[0]-left[0])/2)),y=left[1],r=Math.min(4,height/3); + const shape=symbol==="diamond"?{type:"polygon",shape:{points:[[x,y-r],[x+r,y],[x,y+r],[x-r,y]]}}:symbol==="roundRect"?{type:"rect",shape:{x:x-r,y:y-r,width:2*r,height:2*r,r:2}}:{type:"circle",shape:{cx:x,cy:y,r}}; + return {type:"group",children:[cell,{...shape,style:{fill:health==="unknown"?theme.surface:theme.text,stroke:theme.text,lineDash:healthBorderType(health)==="dashed"?[2,2]:undefined}}]};}}]}; + } + return base; +} +``` + + +- [ ] **Step 4: Render through memoized workspace components** + +Create `ui/host/src/dashboards/viz/analysis-chart.tsx`: + +```tsx +import { useMemo } from "react"; +import { analysisOption, analysisSummary } from "../../../../panels/analysis"; +import { chartThemeFor } from "../../../../panels/compile"; +import type { Panel, PanelResult, Selection } from "../../../../panels/types"; +import { EChartCanvas } from "../echart-canvas"; +export type AnalysisProps={panel:Panel;title?:string;result:PanelResult;dark:boolean;height:number;group?:string;onSelect?:(value:string)=>void;onPoint?:(selection:Selection)=>void;onZoom?:(from:number,to:number)=>void}; +export function AnalysisChart({panel,title,result,dark,height,group,onSelect,onPoint}:AnalysisProps){ + const option=useMemo(()=>analysisOption(panel,result,chartThemeFor(dark)),[panel,result,dark]); + const label=title?`${title}: ${result.frame?.rows??0} rows`:analysisSummary(panel,result); + const time=panel.viz==="heatmap"||panel.viz==="state_timeline"; + return {const selection=(event.data as {selection?:Selection}|undefined)?.selection;if(selection){onPoint?.(selection);const value=Object.values(selection.dimensions)[0];if(value!==undefined)onSelect?.(value);}}:undefined}/>; +} +``` + +Extend EChartCanvas's `onClick` event type with `data?: unknown`, in both its props and its event cast. Add `CustomChart`, `GraphChart`, `HeatmapChart`, `ScatterChart` from `echarts/charts`, and `VisualMapComponent` from components to the registration and the existing test mocks. Keep canvas, group cleanup, legend persistence and the lifetime effects intact. + +Create the six chart wrappers with these complete contents: + +`heatmap.tsx`: +```tsx +import { AnalysisChart, type AnalysisProps } from "./analysis-chart"; +export function HeatmapViz(props:AnalysisProps){return ;} +``` +`histogram.tsx`: +```tsx +import { AnalysisChart, type AnalysisProps } from "./analysis-chart"; +export function HistogramViz(props:AnalysisProps){return ;} +``` +`scatter.tsx`: +```tsx +import { AnalysisChart, type AnalysisProps } from "./analysis-chart"; +export function ScatterViz(props:AnalysisProps){return ;} +``` +`state-timeline.tsx`: +```tsx +import {Text} from "@mantine/core"; +import { AnalysisChart, type AnalysisProps } from "./analysis-chart"; +export function StateTimelineViz(props:AnalysisProps){return <>Gaps and gray cells mean unknown.;} +``` +`service-map.tsx`: +```tsx +import { AnalysisChart, type AnalysisProps } from "./analysis-chart"; +export function ServiceMapViz(props:AnalysisProps){return ;} +``` +`health.tsx` (adapted from `2c208c85^:ui/host/src/widgets/overview.tsx`; M1 removed it): +```tsx +import {Box,Group,Progress,SimpleGrid,Stack,Text} from "@mantine/core"; +import {healthColor,statusHex} from "../../../../chart"; +import {integer} from "../../../../format"; +import {Metric,HealthShape,HealthTrend} from "./health-pieces"; +import type {AnalysisProps} from "./analysis-chart"; +export function HealthViz({result,dark}:AnalysisProps){ + const source=result.frame?.health;const finite=(value:number)=>Number.isFinite(value)?value:0; + const data=source?{...source,total_spans:finite(source.total_spans),service_count:finite(source.service_count),counts:{healthy:finite(source.counts.healthy),degraded:finite(source.counts.degraded),unhealthy:finite(source.counts.unhealthy)}}:undefined; + const empty=!data||data.health==="unknown"||data.service_count===0||!Number.isFinite(data.error_rate); + const health=empty?"unknown":data.health;const total=Math.max(data?.service_count??0,1);const status=statusHex(dark); + return + + {empty?"No data":health.charAt(0).toUpperCase()+health.slice(1)}} color={healthColor(health)} hint={empty?"No telemetry in this window":`${integer.format(data.service_count)} services`}/> + =1?"bad":undefined} hint={empty?undefined:`${integer.format(data.total_spans)} operations`}> + {!empty&&data.error_trend.length>1&&} + + {!empty&& + + + + {(["healthy","degraded","unhealthy"] as const).map(health=>{data.counts[health]} {health})}} + ; +} +``` + +Create `ui/host/src/dashboards/viz/health-pieces.tsx` (adapted from the Metric/Sparkline in `2c208c85^:ui/host/src/widgets/pieces.tsx`; uses the host canvas): + +```tsx +import {Box,Paper,Text} from "@mantine/core"; +import {useMemo,type ReactNode} from "react"; +import {healthColor,healthSymbol,healthBorderType} from "../../../../chart"; +import {EChartCanvas} from "../echart-canvas"; +export function Metric({label,value,color,hint,children}:{label:string;value:ReactNode;color?:string;hint?:string;children?:ReactNode}){ + return {label}{value}{hint&&{hint}}{children&&{children}}; +} +export function HealthShape({health}:{health:string}){ + const symbol=healthSymbol(health);const color=`var(--mantine-color-${healthColor(health)}-filled)`; + return {symbol==="diamond"?:symbol==="roundRect"?:}; +} +export function HealthTrend({values,color}:{values:number[];color:string}){ + const finite=useMemo(()=>values.map(v=>Number.isFinite(v)?v:null),[values]);const peak=Math.max(0,...finite.filter((v):v is number=>v!==null)); + const option=useMemo(()=>({animation:false,grid:{left:0,right:0,top:2,bottom:2},xAxis:{type:"category",show:false,data:finite.map((_,i)=>i)},yAxis:{type:"value",show:false,min:0},tooltip:{show:false},series:[{type:"line",data:finite,showSymbol:false,smooth:.3,lineStyle:{width:1.5,color},areaStyle:{opacity:.12,color}}]}),[finite,color]); + return {peak>0&&peak {peak.toFixed(2)}%}; +} +``` + + +Replace `viz/index.tsx` with: + +```tsx +import type { Panel, PanelResult, Selection } from "../../../../panels/types"; +import { BarViz } from "./bar"; +import { GaugeViz } from "./gauge"; +import { StatViz } from "./stat"; +import { TableViz } from "./table"; +import { TextViz } from "./text"; +import { TimeseriesViz } from "./timeseries"; +import { HeatmapViz } from "./heatmap"; +import { HistogramViz } from "./histogram"; +import { ScatterViz } from "./scatter"; +import { StateTimelineViz } from "./state-timeline"; +import { ServiceMapViz } from "./service-map"; +import { HealthViz } from "./health"; +export function Viz(props:{panel:Panel;title?:string;result?:PanelResult;dark:boolean;height:number;group:string;onSelect?:(value:string)=>void;onPoint?:(selection:Selection)=>void;onZoom?:(from:number,to:number)=>void}){ + const {panel,title,result,dark,height,group,onSelect}=props; + if(panel.viz==="text")return ; + if(!result?.frame)return null; + const next={...props,result}; + switch(panel.viz){ + case "stat":return ; + case "gauge":return ; + case "timeseries":return ; + case "bar":return ; + case "table":return ; + case "heatmap":return ; + case "histogram":return ; + case "scatter":return ; + case "state_timeline":return ; + case "service_map":return ; + case "health":return ; + case "logs":case "log_patterns":case "traces":return null; // Task 8 installs row renderers. + } +} +``` + +The registry test imports the production visualizations constant and therefore pins its fifteen entries. + +Add to new-viz.test.tsx: + +```tsx +it("formats distinct scatter axis units and numeric bucket order",()=>{ + const panel:Panel={id:"p",title:"Rows versus latency",viz:"scatter",x_unit:"count",unit:"ms",query:{from:"spans",by:["service"],measures:["count()","p95(duration_ms)"]}}; + const option=analysisOption(panel,resultFor("scatter"),chartThemeFor(false)) as {xAxis:{name:string;axisLabel:{formatter:(n:number)=>string}};yAxis:{name:string;axisLabel:{formatter:(n:number)=>string}}}; + expect(option.xAxis.name).toBe("count");expect(option.yAxis.name).toBe("ms");expect(option.xAxis.axisLabel.formatter(2)).toBe("2");expect(option.yAxis.axisLabel.formatter(50)).toContain("ms"); + const frame={columns:fixtures.histogram!.columns,values:[[10,null,2],[20,1,10],[1,2,3]],rows:3}; + for(const viz of ["histogram","heatmap"] as const){ + const f=viz==="heatmap"?{columns:[col("time","time","time"),...frame.columns],values:[[3000,1000,2000],...frame.values],rows:3}:frame; + const got=analysisOption({...panel,viz}, {id:"p",status:"ok",elapsed_ms:1,frame:f},chartThemeFor(false)) as {xAxis?:{data?:string[]};yAxis?:{data?:string[]}}; + expect(viz==="heatmap"?got.yAxis?.data:got.xAxis?.data).toEqual(["−∞–1","2–10","10–20"]); + } +}); +``` + +- [ ] **Step 5: Run to see pass and build the embedded bundle** + +```bash +rtk proxy sh -c 'cd ui/host && bun run test' +rtk proxy sh -c 'cd ui/host && bun run lint' +rtk just ui +``` + +Sanitize numeric table cells when deriving TableViz rows: replace each non-finite numeric value with null. Filter maxima with Number.isFinite as well, so RowPanel’s table fallback follows frameRows’s chart behavior. Keep original column/row indexes for link targets and trends. + +In PanelCard’s initial loading branch, replace `` with ``. Loading must have an accessible name. + +Expected: all tests and TypeScript pass; both embedded workspaces build. Keep loading/empty/error behavior in PanelCard and data Inspect rather than duplicating it in each renderer. + +- [ ] **Step 6: Commit (controller)** + +```bash +rtk git add ui/panels ui/host/src/dashboards internal/ui/dist internal/mcp/apps +rtk git commit -m "feat(ui): render dashboard charts and port overview health" +``` + +--- + +### Task 8: Row panels: logs, log patterns and traces + +**Files:** Create `ui/host/src/dashboards/viz/row-panel.tsx`, `logs.tsx`, `log-patterns.tsx`, `traces.tsx`; modify `viz/table.tsx`, `viz/index.tsx`, `new-viz.test.tsx` (relative to dashboards); generated `internal/ui/dist/**`, `internal/mcp/apps/**`. + +**Interfaces:** Reuse Task 7’s rows.ts, rowModel, Selection and AnalysisProps. RowPanel uses TableViz’s memoized columns and a useCallback cell renderer. + +- [ ] **Step 1: Write failing row-rendering tests** + +Extend new-viz.test.tsx’s types array to all nine new types. Keep its exact Go-shaped fixtures, populated/ok-zero-row/non-finite checks and chrome tests. Add content assertions after populated render: logs contains failed; log_patterns contains failed <*> and a Pattern count trend SVG; traces contains cart and abc. These fail while Viz returns null for rows. + +```ts +const types:VizType[]=["heatmap","histogram","scatter","state_timeline","logs","log_patterns","traces","service_map","health"]; +``` + +```bash +rtk proxy sh -c 'cd ui/host && bun run test src/dashboards/new-viz.test.tsx' +``` + +- [ ] **Step 2: Implement fixed row renderers** + +Create `ui/host/src/dashboards/viz/row-panel.tsx`: + +```tsx +import { Anchor, Badge, Highlight, Text } from "@mantine/core"; +import { useMemo, useCallback } from "react"; +import { rowModel } from "../../../../panels/rows"; +import type { Cell } from "../../../../panels/types"; +import { TableViz } from "./table"; +import type { AnalysisProps } from "./analysis-chart"; +export function RowPanel(props:AnalysisProps){ + const model=useMemo(()=>rowModel(props.panel,props.result),[props.panel,props.result]); + const cell=useCallback((name:string,value:Cell,rowIndex:number)=>{ + const row=model.rows[rowIndex];const selection=model.selection(row); + if(name==="trace_id"&&value)return {if(props.onPoint){event.preventDefault();props.onPoint(selection);}}}>{String(value)}; + if(name==="service"&&value&&props.onSelect)return props.onSelect?.(String(value))}>{String(value)}; + if(name==="health"||name==="severity"||name==="status")return {String(value??"Unknown")}; + if(name==="body"&&props.panel.options?.highlight)return {String(value??"")}; + if(name==="trend") {let points:number[]=[];try{const parsed:unknown=JSON.parse(String(value));if(Array.isArray(parsed))points=parsed.filter((v):v is number=>typeof v==="number"&&Number.isFinite(v));}catch{points=[];}const max=Math.max(1,...points);return `${i*100/Math.max(points.length-1,1)},${23-n/max*22}`).join(" ")}/>;} + if(name==="body_template")return {String(value??"")}; + return undefined; + },[model,props.panel,props.result,props.onPoint,props.onSelect]); + return
; +} +``` + +In TableViz's props add `renderCell?: (name: string, value: Cell, rowIndex: number) => ReactNode` and import `type ReactNode` from react. At the start of each column's cell callback, immediately after `const value = info.getValue() as Cell`, insert: + +```tsx +const custom = renderCell?.(column.name, value, info.row.index); +if (custom !== undefined) return custom; +``` + +Include `renderCell` in the column useMemo dependencies. Preserve its TanStack table implementation and sorting. + +`logs.tsx`: +```tsx +import { RowPanel } from "./row-panel"; +import type { AnalysisProps } from "./analysis-chart"; +export function LogsViz(props:AnalysisProps){return ;} +``` +`log-patterns.tsx`: +```tsx +import { RowPanel } from "./row-panel"; +import type { AnalysisProps } from "./analysis-chart"; +export function LogPatternsViz(props:AnalysisProps){return ;} +``` +`traces.tsx`: +```tsx +import { RowPanel } from "./row-panel"; +import type { AnalysisProps } from "./analysis-chart"; +export function TracesViz(props:AnalysisProps){return ;} +``` +In viz/index.tsx import LogsViz, LogPatternsViz and TracesViz from their sibling modules and replace the combined null case with: + +```tsx +case "logs":return ; +case "log_patterns":return ; +case "traces":return ; +``` + +The memoized cell callback includes its real model/panel/result/interaction dependencies. Service cells activate only with onSelect. Task 10 replaces the preliminary trace URLs with captured absolute targets. + +- [ ] **Step 3: Run to see pass and review** + +```bash +rtk proxy sh -c 'cd ui/host && bun run test' +rtk proxy sh -c 'cd ui/host && bun run lint' +rtk just ui +``` + +Expected: all owning regression and integration tests pass. + +- [ ] **Step 4: Commit (controller)** + +```bash +rtk git add ui/host/src/dashboards internal/ui/dist internal/mcp/apps +rtk git commit -m "feat(ui): render dashboard log, pattern and trace rows" +``` + +--- + +### Task 9: Filter chips, linked crosshair, brush zoom and panel time + +**Files:** +- Create: `ui/panels/interaction.ts`, `ui/host/src/dashboards/use-brush-zoom.ts`, `ui/host/src/dashboards/interaction.test.tsx`, `internal/panel/interaction_test.go` +- Modify: `internal/panel/exec.go`, `ui/host/src/dashboards/page.tsx`, `grid.tsx`, `panel-card.tsx`, `echart-canvas.tsx`, `echart-canvas.test.tsx`, `viz/timeseries.tsx`, `viz/bar.tsx`, `viz/analysis-chart.tsx`, `viz/index.tsx` (paths relative to `ui/host/src/dashboards`) +- Generated: `internal/ui/dist/**`, `internal/mcp/apps/**` + +**Interfaces:** +- Consumes existing: `DashboardPage({dashboardId,search,onSearch,onOpen})`; `onSearch(next: DashboardSearch, replace?: boolean): void`; `GridProps.onVariable(name:string,value:VarValue):void`; `Panel.time?:{range?:string;shift?:string}`; `echarts.connect(group:string)` and `disconnect(group:string)` already maintained by EChartCanvas. +- Produces Go Result `FromMS int64 json:"from_ms"`, `ToMS int64 json:"to_ms"`, populated from resolveWindow; consumes the TS `from_ms`/`to_ms` mirrors introduced in Task 7. +- Produces host `useBrushZoom(search:DashboardSearch,onSearch:(next:DashboardSearch,replace?:boolean)=>void):{zoom:(from:number,to:number)=>void;reset:()=>void}` and pure TS `brushRange(from:number,to:number):{from:string;to:string}|undefined`; `pointSelection(panel: Panel, result: PanelResult, event: ChartEvent): Selection | undefined`; `panelTimeLabel(panel: Panel): string | undefined`; `ChartEvent = {name?:string;seriesName?:string;value?:unknown;data?:unknown}`. `DashboardSearch` stays in the host; pure range decoding returns absolute timestamp strings. +- Extends GridProps/PanelCard/Viz with `onPoint?(panel:Panel,selection:Selection):void` at the grid boundary, then `(selection:Selection)=>void`; `onZoom?(from:number,to:number):void`. Existing onSelect still selects variables. Only timeseries/heatmap/state_timeline join the time group. + +- [ ] **Step 1: Write failing interaction and effective-window tests** + +Create `internal/panel/interaction_test.go`: + +```go +package panel + +import ( + "testing" + "time" +) + +func TestM2PanelTimeWindow(t *testing.T) { + e := newFixtureExecutor(t) + d := shopDashboard() + d.Panels = d.Panels[:1] + d.Panels[0].Time = &PanelTime{Range: "15m"} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + if got[0].FromMS != fixtureStart.Add(45*time.Minute).UnixMilli() || got[0].ToMS != fixtureStart.Add(time.Hour).UnixMilli() { + t.Fatalf("window: %+v", got[0]) + } + d.Panels[0].Time = &PanelTime{Shift: "1h"} + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + if got[0].FromMS != fixtureStart.Add(-time.Hour).UnixMilli() || got[0].ToMS != fixtureStart.UnixMilli() { + t.Fatalf("shift: %+v", got[0]) + } +} +``` + +Create `ui/host/src/dashboards/interaction.test.tsx`: + +```tsx +import { describe,expect,it } from "vitest"; +import { brushRange,panelTimeLabel,pointSelection } from "../../../panels/interaction"; +import { parseSearch,toSearchParams } from "./search"; +import type { Panel,PanelResult } from "../../../panels/types"; +const panel:Panel={id:"p",title:"P",viz:"timeseries",query:{from:"spans",measures:["count()"],by:["service"]},time:{shift:"1d"}}; +const result:PanelResult={id:"p",status:"ok",elapsed_ms:1,from_ms:1000,to_ms:10000,interval:"1m"}; +describe("M2 interactions",()=>{ + it("writes one valid absolute range, retaining comparison and variables",()=>{ + const selected=brushRange(1000,9000);expect(selected).toEqual({from:new Date(1000).toISOString(),to:new Date(9000).toISOString()}); + const state={...parseSearch({range:"1h","var-service":"checkout",compare:"1"}),...selected,range:undefined}; + expect(parseSearch(toSearchParams(state))).toEqual({from:selected?.from,to:selected?.to,vars:{service:"checkout"},compare:"1"}); + expect(brushRange(2,2)).toBeUndefined();expect(brushRange(NaN,3)).toBeUndefined(); + }); + it("selects real dimensions and never Other or comparison overlays",()=>{ + expect(pointSelection(panel,result,{seriesName:"checkout",value:[2000,3]})).toEqual({time:2000,dimensions:{service:"checkout"}}); + expect(pointSelection(panel,result,{seriesName:"Other",value:[2000,3]})).toBeUndefined(); + expect(pointSelection(panel,result,{seriesName:"checkout · previous",value:[2000,3]})).toBeUndefined(); + expect(panelTimeLabel(panel)).toBe("Shifted 1d"); + }); +}); +``` + +Append these imports and test to interaction.test.tsx: + +```tsx +import {act} from "react"; +import {createRoot} from "react-dom/client"; +import {vi} from "vitest"; +import {useBrushZoom} from "./use-brush-zoom"; +import type {DashboardSearch} from "./search"; +it("pushes once per selection, preserves variables, and permits the same selection after Back",async()=>{ + const node=document.createElement("div");document.body.append(node);const root=createRoot(node);const navigate=vi.fn(); + let actions:ReturnType; + function Host({search}:{search:DashboardSearch}){actions=useBrushZoom(search,navigate);return null;} + const initial:DashboardSearch={range:"1h",vars:{service:"checkout"},compare:"1"}; + await act(async()=>root.render()); + for(let i=0;i<20;i++)actions!.zoom(1000,9000); + expect(navigate).toHaveBeenCalledTimes(1);expect(navigate.mock.calls[0][1]).toBe(false);expect(navigate.mock.calls[0][0].vars).toEqual(initial.vars); + const brushed=navigate.mock.calls[0][0] as DashboardSearch; + await act(async()=>root.render());actions!.zoom(1000,9000);expect(navigate).toHaveBeenCalledTimes(1); + await act(async()=>root.render());actions!.zoom(1000,9000);expect(navigate).toHaveBeenCalledTimes(2); + await act(async()=>root.unmount());node.remove(); +}); +``` + +Extend the existing `fresh()` instance with `dispatchAction:vi.fn()` and append to `echart-canvas.test.tsx` inside its describe block (uses existing `fresh` and mocks): + +```tsx +it("commits only brushEnd, keeps one chart on callback changes, and clears the brush",async()=>{ + const instance=fresh(); + const container=document.createElement("div");document.body.append(container);const root=createRoot(container);const zoom=vi.fn();const option={series:[]}; + await act(async()=>root.render()); + const end=instance.on.mock.calls.find(([name])=>name==="brushEnd")?.[1] as ((payload:unknown)=>void); + expect(end).toBeTypeOf("function");expect(instance.on.mock.calls.some(([name])=>name==="brushselected")).toBe(false); + end({areas:[{coordRange:[1000,5000]}]});expect(zoom).toHaveBeenCalledOnce();expect(zoom).toHaveBeenCalledWith(1000,5000); + expect(instance.dispatchAction).toHaveBeenCalledWith({type:"brush",areas:[]},{silent:true}); + const calls=mocks.init.mock.calls.length; + await act(async()=>root.render(undefined}/>)); + expect(mocks.init.mock.calls.length).toBe(calls); + await act(async()=>root.unmount()); +}); +``` + +- [ ] **Step 2: Run to see failure** + +```bash +rtk just test ./internal/panel/... -run '"TestM2PanelTimeWindow"' +rtk proxy sh -c 'cd ui/host && bun run test src/dashboards/interaction.test.tsx src/dashboards/echart-canvas.test.tsx' +``` + +Expected: absent helpers, window metadata and brush callback. + +- [ ] **Step 3: Implement precise windows and pure event decoding** + +Add the two window fields to Go Result; Task 7 already introduced their TS mirror. In runPanel, immediately after successful `resolveWindow`, set: + +```go +res.FromMS, res.ToMS = start.UnixMilli(), end.UnixMilli() + +``` + +Create `ui/panels/interaction.ts`: + +```ts +import type {Panel,PanelResult,Selection} from "./types"; +export type ChartEvent={name?:string;seriesName?:string;value?:unknown;data?:unknown}; +export function brushRange(from:number,to:number):{from:string;to:string}|undefined{ + if(!Number.isFinite(from)||!Number.isFinite(to)||from>=to||Math.abs(from)>8640000000000000||Math.abs(to)>8640000000000000)return undefined; + return {from:new Date(Math.floor(from)).toISOString(),to:new Date(Math.ceil(to)).toISOString()}; +} +export function panelTimeLabel(panel:Panel):string|undefined{const parts=[panel.time?.range?`Range ${panel.time.range}`:undefined,panel.time?.shift?`Shifted ${panel.time.shift}`:undefined].filter(Boolean);return parts.length?parts.join(" · "):undefined;} +export function pointSelection(panel:Panel,_result:PanelResult,event:ChartEvent):Selection|undefined{ + if(event.seriesName?.endsWith(" · previous")||event.seriesName==="Other"||event.name==="Other")return undefined; + const embedded=(event.data as {selection?:Selection}|undefined)?.selection; + if(embedded)return embedded; + const dimension=panel.query?.by?.[0];const name=panel.viz==="timeseries"?event.seriesName:event.name; + const value=Array.isArray(event.value)?event.value:[]; + const time=panel.viz==="timeseries"&&typeof value[0]==="number"?value[0]:undefined; + return {time,dimensions:dimension&&name?{[dimension]:name}:{}}; +} +``` + +- [ ] **Step 4: Wire callbacks without replacing chart instances** + +In EChartCanvas's props/destructuring, add `onZoom?: (from:number,to:number)=>void`. Add `BrushComponent`, `ToolboxComponent` and `DataZoomComponent` to ECharts registration and its test mocks. Add a current ref `const zoom=useRef(onZoom); zoom.current=onZoom`. In the instance creation effect, register: + +```ts +instance.on("brushEnd",(payload)=>{ + const range=(payload as {areas?:{coordRange?:number[]}[]}).areas?.[0]?.coordRange; + if(range?.length===2&&Number.isFinite(range[0])&&Number.isFinite(range[1])&&range[0]{ + const instance=fresh(); + const container=document.createElement("div");document.body.append(container);const root=createRoot(container);const zoom=vi.fn();const option={series:[]}; + await act(async()=>root.render()); + const cursorCalls=()=>instance.dispatchAction.mock.calls.filter(([a])=>a.type==="takeGlobalCursor"); + expect(cursorCalls()).toHaveLength(1); + expect(instance.dispatchAction).toHaveBeenCalledWith({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"lineX",brushMode:"single"}}); + const nextOption={series:[{type:"line",data:[[1,2]]}]}; + await act(async()=>root.render()); + expect(instance.setOption).toHaveBeenCalledTimes(2);expect(cursorCalls()).toHaveLength(2); + await act(async()=>root.unmount());container.remove(); +}); +``` + +Callbacks remain ref-backed; do not add onZoom/onClick to the chart-lifetime effect dependencies. Include a minimal toolbox description in the chart aria label when zoom is available. + +Replace TimeseriesViz with: + +```tsx +import {useMemo} from "react"; +import {chartThemeFor,timeseriesOption} from "../../../../panels/compile"; +import {pointSelection} from "../../../../panels/interaction"; +import {EChartCanvas} from "../echart-canvas"; +import type {AnalysisProps} from "./analysis-chart"; +export function TimeseriesViz({panel,title=panel.title,result,dark,height,group,onSelect,onPoint,onZoom}:AnalysisProps){ + const option=useMemo(()=>timeseriesOption(panel,result,chartThemeFor(dark)),[panel,result.frame,result.previous,result.shift_ms,dark]); + return {const selection=pointSelection(panel,result,event);if(!selection)return;onPoint?.(selection);const first=Object.values(selection.dimensions)[0];if(first!==undefined)onSelect?.(first);}:undefined}/>; +} +``` + +Replace BarViz with: + +```tsx +import {useMemo} from "react"; +import {barOption,chartThemeFor} from "../../../../panels/compile"; +import {pointSelection} from "../../../../panels/interaction"; +import {EChartCanvas} from "../echart-canvas"; +import type {AnalysisProps} from "./analysis-chart"; +export function BarViz({panel,title=panel.title,result,dark,height,onSelect,onPoint}:AnalysisProps){ + const option=useMemo(()=>barOption(panel,result.frame!,chartThemeFor(dark)),[panel,result.frame,dark]); + return {const selection=pointSelection(panel,result,event);if(!selection)return;onPoint?.(selection);const first=Object.values(selection.dimensions)[0];if(first!==undefined)onSelect?.(first);}:undefined}/>; +} +``` + +AnalysisChart accepts onZoom from its props and passes it to EChartCanvas only when `time` is true. `viz/index.tsx` passes `onPoint`/`onZoom` to timeseries and `onPoint` to bar. Other analysis renderers already accept those props. + +In PanelCard add onPoint/onZoom props and pass them to Viz; import Selection and `panelTimeLabel`. Add next to the title: + +```tsx +{panelTimeLabel(panel)&&{panelTimeLabel(panel)}} +``` + +In GridProps add `onPoint?(panel:Panel,selection:Selection):void; onZoom?(from:number,to:number):void`. Destructure them in PanelGrid; the card factory passes: + +```tsx +onPoint={onPoint&&(panel.click||panel.drill||results.get(panel.id)?.frame?.columns.some((c,i)=>c.name==="trace_id"&&results.get(panel.id)!.frame!.values[i].some(v=>typeof v==="string"&&v!==""))||panel.options?.columns?.some(c=>c.format==="trace_link"&&results.get(panel.id)?.frame?.columns.some((column,i)=>column.name===c.field&&results.get(panel.id)!.frame!.values[i].some(v=>typeof v==="string"&&v!=="")))) ? selection=>onPoint(panel,selection) : undefined} onZoom={onZoom} +``` + +Create `ui/host/src/dashboards/use-brush-zoom.ts`: + +```ts +import {useCallback,useRef} from "react"; +import {brushRange} from "../../../panels/interaction"; +import type {DashboardSearch} from "./search"; +export function useBrushZoom(search:DashboardSearch,onSearch:(next:DashboardSearch,replace?:boolean)=>void){ + const scope=JSON.stringify([search.range,search.from,search.to]); + const current=useRef({search,onSearch,scope});const last=useRef(""); + if(current.current.scope!==scope)last.current=""; + current.current={search,onSearch,scope}; + const reset=useCallback(()=>{last.current="";},[]); + const zoom=useCallback((from:number,to:number)=>{ + const absolute=brushRange(from,to);if(!absolute)return; + const active=current.current;const key=`${absolute.from}/${absolute.to}`; + if(active.search.from===absolute.from&&active.search.to===absolute.to||last.current===key)return; + last.current=key; + active.onSearch({...active.search,range:undefined,...absolute},false); + },[]); + return {zoom,reset}; +} +``` + +In Loaded, call `const {zoom,reset:resetBrush}=useBrushZoom(search,onSearch)` and pass `onZoom={zoom}` to PanelGrid. Call resetBrush in toolbar onRange/onAbsolute callbacks. The callback is stable across renders; the hook clears deduplication on actual URL window changes, including Back. Existing filter chips already remove URL overrides; give each button `aria-label={`Remove filter ${name}`}` and retain setVar's replace-history behavior. Click-to-filter uses click.set_variable through the existing grid onSelect. + +- [ ] **Step 5: Run to see pass and build** + +```bash +rtk just test ./internal/panel/... -run '"TestM2PanelTimeWindow|TestRunComparesWithThePreviousPeriod"' +rtk proxy sh -c 'cd ui/host && bun run test' +rtk proxy sh -c 'cd ui/host && bun run lint' +rtk just ui +``` + +Expected: stable chart lifetime, group disposal still correct, one history push per completed selection, comparison/vars survive zoom, exact panel override badge and server window. + +Before the controller commit, format all Go changes: + +```bash +rtk just fmt +``` + +- [ ] **Step 6: Commit (controller)** + +```bash +rtk git add internal/panel/exec.go internal/panel/interaction_test.go ui/panels ui/host/src/dashboards internal/ui/dist internal/mcp/apps +rtk git commit -m "feat(ui): connect dashboard time and selection interactions" +``` + +--- + +### Task 10: URL-addressed drill drawer and adapted trace waterfall + +**Files:** +- Create: `ui/host/src/dashboards/trace/trace-components.tsx`, `ui/host/src/dashboards/trace/components.tsx`, `ui/host/src/dashboards/drill.tsx`, `ui/host/src/dashboards/drill-state.ts`, `ui/host/src/dashboards/drill.test.tsx`, `internal/panel/drill_logs_test.go` +- Modify: `internal/api/observability.go`, `internal/api/observability_test.go`, `cmd/fanout/main.go`, `ui/host/src/dashboards/api.ts`, `search.ts`, `page.tsx`, `viz/row-panel.tsx`, `viz/table.tsx`, `viz/index.tsx`; `internal/panel/exemplars.go`, `internal/panel/rowpanels.go`, `internal/panel/validate.go` +- Generated: `internal/ui/dist/**`, `internal/mcp/apps/**` + +**Interfaces:** +- Consumes existing: GET `/api/observability/trace?trace_id=...&namespace=...&from=...&to=...&limit=...` via `observability.Trace(ctx,scope,traceID,service,limit)`; `ui/contracts.ts` exports `Result`, `TraceDetail`, `TraceSpan`, `LogEntry`; Task 2 Exemplars; Task 9 Result.from_ms/to_ms and Selection. +- Copies and adapts within the host workspace: `Waterfall({spans,dark,onSpan}: {spans:TraceSpan[];dark:boolean;onSpan:(span:TraceSpan)=>void})`; `TraceLogs({entries}: {entries:LogEntry[]})`. The shared file has no createRoot call, CSS app import, MCP bridge or app mount. +- Produces: `DrillTarget = {panel_id:string;kind:"traces"|"logs";from:string;to:string;window_from:string;window_to:string;dimensions:Record;trace_id?:string;namespace?:string;bucket?:{lower:number;upper?:number}}`; `parseDrill(raw: unknown): DrillTarget | undefined`; `makeDrill(panel: Panel, result: PanelResult, selection: Selection): DrillTarget | undefined`; `DrillDrawer({spec,time,vars,target,onChange}: DrillProps)`. +- Browser client: `queryExemplars(body: ExemplarBody, signal?: AbortSignal): Promise` and `getTrace(target: DrillTarget, signal?: AbortSignal): Promise>`. +- Server extends ExemplarRequest with `Kind string json:"kind,omitempty"` and ExemplarResponse with `Logs *Frame json:"logs,omitempty"`; `kind=logs` is allowed only for a structured logs source, returns at most 200 checked log rows. Traces remain capped at 20. No new route. + +- [ ] **Step 1: Write failing guarded-log and URL tests** + +Create `internal/panel/drill_logs_test.go`: + +```go +package panel + +import ( + "github.com/labstack/fanout/internal/telemetry" + "testing" + "time" +) + +func TestM2DrillLogsKeepCheckedSelection(t *testing.T) { + engine, repo := newTestEngine(t) + at := fixtureStart.UnixNano() + commit(t, repo, nil, []telemetry.Log{{ServiceName: "checkout", Severity: "ERROR", Body: "failed", TimeUnixNanos: at, EventUnixNanos: at, IngestedAt: at}, {ServiceName: "frontend", Severity: "INFO", Body: "ok", TimeUnixNanos: at, EventUnixNanos: at, IngestedAt: at}}) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Logs", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "levels", Title: "Levels", Viz: "bar", Query: &Query{From: "logs", Where: []string{"service = 'checkout'"}, Measures: []string{"count()"}, By: []string{"severity"}}}}} + req := ExemplarRequest{Dashboard: d, PanelID: "levels", Kind: "logs", From: fixtureStart, To: fixtureStart.Add(time.Minute), Dimensions: map[string]string{"severity": "ERROR"}} + got, err := e.Exemplars(t.Context(), req) + if err != nil { + t.Fatal(err) + } + if got.Logs == nil || got.Logs.Rows != 1 || got.Logs.Values[2][0] != "checkout" { + t.Fatalf("logs: %+v", got) + } + req.Dimensions = map[string]string{"severity": "INFO"} + got, err = e.Exemplars(t.Context(), req) + if err != nil || got.Logs.Rows != 0 { + t.Fatalf("guard escaped: %+v %v", got, err) + } +} +``` + +Create `ui/host/src/dashboards/drill.test.tsx`: + +```tsx +import {describe,expect,it,vi} from "vitest"; +import {makeDrill,parseDrill} from "./drill-state"; +import {router} from "../router"; +import {parseSearch,toSearchParams} from "./search"; +import type {Panel,PanelResult} from "../../../panels/types"; +const panel:Panel={id:"p",title:"P",viz:"timeseries",drill:"traces",query:{from:"spans",measures:["count()"],by:["service"]}}; +const result:PanelResult={id:"p",status:"ok",elapsed_ms:1,from_ms:100000,to_ms:500000,interval:"1m"}; +describe("M2 drill URL",()=>{ + it("reproduces bucket, dimensions, trace and variables",()=>{ + const target=makeDrill(panel,result,{time:200000,dimensions:{service:"checkout"},trace_id:"abc",namespace:"shop"}); + const search=toSearchParams({drill:JSON.stringify(target),vars:{service:"checkout"},compare:"1"}); + const url=router.buildLocation({to:"/dashboards/$dashboardId",params:{dashboardId:"d"},search}); + const decoded=parseSearch(router.options.parseSearch!(url.searchStr)); + expect(parseSearch(router.options.parseSearch!(router.options.stringifySearch!(toSearchParams(decoded))))).toEqual(decoded); + expect(parseDrill(decoded.drill)).toEqual(target);expect(decoded.vars).toEqual({service:"checkout"}); + expect(target?.from).toBe(new Date(100000).toISOString()); // A specific trace retains the whole panel window. + }); + it("rejects malformed, oversized and backwards payloads",()=>{ + expect(parseDrill("{" )).toBeUndefined();expect(parseDrill("x".repeat(4097))).toBeUndefined(); + expect(parseDrill(JSON.stringify({panel_id:"p",kind:"traces",from:"2026-10-01T13:00:00Z",to:"2026-10-01T12:00:00Z",dimensions:{}}))).toBeUndefined(); + }); +}); +``` + +Append to drill.test.tsx, importing the real shared components through DrillDrawer: + +```tsx +import {MantineProvider} from "@mantine/core"; +import {QueryClient,QueryClientProvider} from "@tanstack/react-query"; +import {act} from "react"; +import {createRoot} from "react-dom/client"; +import {DrillDrawer} from "./drill"; +import type {DashboardSpec} from "../../../panels/types"; +import type {DrillTarget} from "./drill-state"; +const wire=vi.hoisted(()=>({exemplars:vi.fn(),trace:vi.fn()})); +vi.mock("./api",()=>({queryExemplars:wire.exemplars,getTrace:wire.trace})); +const spec:DashboardSpec={version:1,name:"D",time:{range:"1h"},panels:[panel]}; +const target:DrillTarget={panel_id:"p",kind:"traces",from:"2026-10-01T12:00:00Z",to:"2026-10-01T13:00:00Z",window_from:"2026-10-01T12:00:00Z",window_to:"2026-10-01T13:00:00Z",dimensions:{service:"checkout"}}; +const tick=()=>new Promise(resolve=>setTimeout(resolve,20)); +it("aborts an obsolete selection and keeps the next selection visible",async()=>{ + let signal:AbortSignal|undefined;let finish:(value:{traces:[]})=>void=()=>undefined; + wire.exemplars.mockImplementation((_body:unknown,incoming:AbortSignal)=>{signal=incoming;return new Promise((resolve,reject)=>{finish=resolve;incoming.addEventListener("abort",()=>reject(new DOMException("Aborted","AbortError")),{once:true});});}); + const client=new QueryClient({defaultOptions:{queries:{retry:false}}});const node=document.createElement("div");document.body.append(node);const root=createRoot(node);const change=vi.fn(); + const render=(active?:DrillTarget)=>; + await act(async()=>{root.render(render(target));await tick();}); + expect(signal).toBeDefined();expect(signal?.aborted).toBe(false); + await act(async()=>{root.render(render());await tick();});expect(signal?.aborted).toBe(true); + wire.exemplars.mockResolvedValueOnce({traces:[{trace_id:"next-trace",namespace:"shop",service:"next-service",operation:"next-operation",duration_ms:1,status:"OK",start:target.from}]}); + const next={...target,dimensions:{service:"next-service"}}; + await act(async()=>{root.render(render(next));await tick();});expect(document.body.textContent).toContain("next-operation"); + await act(async()=>{finish({traces:[]});await tick();});expect(document.body.textContent).toContain("next-operation");expect(document.body.textContent).not.toContain("No exemplar traces match"); + await act(async()=>root.unmount());client.clear();node.remove(); +}); +it("renders the existing waterfall and correlated logs with visible truncation",async()=>{ + wire.trace.mockResolvedValue({schema:"fanout.trace.v1",summary:"Trace",provenance:{query_id:"q",window:"w",generated_at:target.to,complete:true,data_source:"spans"},data:{trace_id:"abc",duration_ms:10,has_error:true,services:["checkout"],spans:[{span_id:"root",service:"checkout",operation:"cart",kind:"SPAN_KIND_SERVER",start:target.from,duration_ms:10,status:"STATUS_CODE_ERROR"}],logs:[{time:target.from,severity:"ERROR",service:"checkout",body:"correlated failure",trace_id:"abc"}],span_count:3,service_count:2,truncated:true}}); + const client=new QueryClient({defaultOptions:{queries:{retry:false}}});const node=document.createElement("div");document.body.append(node);const root=createRoot(node); + await act(async()=>{root.render(undefined}/>);await tick();}); + expect(document.body.textContent).toContain("correlated failure");expect(document.body.textContent).toContain("1 of 3 spans");expect(document.body.querySelector('[aria-label^="cart on checkout took"]')).not.toBeNull(); + await act(async()=>root.unmount());client.clear();node.remove(); +}); +``` + +The provenance/schema strings above are fixture labels; the rendering assertions use the adapted Waterfall and TraceLogs implementations, not copied markup. + +Add to drill_logs_test.go (import errors and slices): + +```go +func TestM2ExemplarKindValidation(t *testing.T) { + e := newFixtureExecutor(t) + req := ExemplarRequest{Dashboard: shopDashboard(), PanelID: "by_route", Kind: "other", From: fixtureStart, To: fixtureStart.Add(time.Minute)} + _, err := e.Exemplars(t.Context(), req) + var got Problems + want := Problem{Path: "kind", Message: "kind must be traces or logs", Hint: "choose traces or logs"} + if !errors.As(err, &got) || !slices.Contains(got, want) { + t.Fatalf("got %v want %+v", err, want) + } +} +func TestM2ExemplarCapturedWindowDoesNotMove(t *testing.T) { + e := newFixtureExecutor(t) + from, to := fixtureStart, fixtureStart.Add(time.Hour) + d := shopDashboard() + d.Panels[2].Time = &PanelTime{Shift: "1h"} + req := ExemplarRequest{Dashboard: d, PanelID: "by_route", Time: &Time{From: &from, To: &to, Refresh: "off"}, From: from, To: to} + e.now = func() time.Time { return fixtureStart.Add(10 * time.Hour) } + got, err := e.Exemplars(t.Context(), req) + if err != nil || len(got.Traces) != 20 { + t.Fatalf("request clock or double shift changed selection: %+v %v", got, err) + } +} +``` + +- [ ] **Step 2: Run to see failure** + +```bash +rtk just test ./internal/panel/... ./internal/observability/... -run '"TestM2DrillLogs|TestM2Exemplar|TestM2TraceAbsoluteWindow"' +rtk proxy sh -c 'cd ui/host && bun run test src/dashboards/drill.test.tsx' +``` + +Expected: missing request kind and URL state. + +- [ ] **Step 3: Reuse row compilation for checked log selections** + +In rowpanels.go factor the existing compiler prologue into a wrapper; the remainder of the complete compileRows body starts at `if p.Viz=="traces"` and becomes `compileRowsWhere`: + +```go +func compileRows(p *Panel, filters []Filter, scope Scope) (Compiled, error) { + sig, _ := lookupSignal(p.Query.From) + where, args, err := buildWhere(sig, filters, scope) + if err != nil { + return Compiled{}, err + } + return compileRowsWhere(p, where, args, scope) +} +``` + +Use `func compileRowsWhere(p *Panel,where string,args []any,scope Scope)(Compiled,error)` for the extracted body. + +The existing body and closing brace follow that signature unchanged; this is an extraction, not a second SQL implementation. Add the Kind/Logs fields above to the exemplar types. Reject any nonempty Kind other than `traces` or `logs` immediately after constructing `out` in Exemplars, returning `Problems{{Path:"kind",Message:"kind must be traces or logs",Hint:"choose traces or logs"}}`. Immediately after `selectionWhere` succeeds and before building the trace SQL, insert: + +```go +if req.Kind == "logs" { + if p.Query.From != "logs" { + return out, Problems{{Path: "kind", Message: "log selections need a logs-source panel"}} + } + copyPanel := *p + copyQuery := *p.Query + copyQuery.Limit = 200 + copyQuery.Bucket = "" + copyQuery.Sort = "time" + copyPanel.Query = ©Query + copyPanel.Viz = "logs" + scope := Scope{Start: lo, End: hi, Vars: vars} + compiled, err := compileRowsWhere(©Panel, where, args, scope) + if err != nil { + return out, err + } + logCtx := queryrows.WithWindow(ctx, queryrows.Window{Start: lo, End: hi}) + rows, err := e.engine.QueryContext(logCtx, compiled.SQL, compiled.Args...) + if err != nil { + return out, fmt.Errorf("drill logs: %s", SafeError(err)) + } + out.Logs, err = scanFrame(rows, compiled.Columns, 200) + return out, err +} + +``` + +In validatePanel, immediately after the existing drill enum check, insert: + +```go +if p.Drill != "" && (p.Query == nil || p.Query.From == "metrics" || p.Drill == "logs" && p.Query.From != "logs") { + problems.add(path+".drill", "drill requires structured span/log lineage; logs drill requires a logs source") +} + +``` + +- [ ] **Step 4: Extend absolute trace lookups and copy the trace components** + +Create `ui/host/src/dashboards/trace/trace-components.tsx` with the following complete source: + +```tsx +import {Badge,Box,Group,Table,Text,Tooltip} from "@mantine/core"; +import {ListBullets} from "@phosphor-icons/react"; +// Adapted copy of ui/apps/src/trace.tsx (M1 echart.tsx precedent). Consolidate in M3. +import type {LogEntry,TraceSpan} from "../../../../contracts"; +import {seriesColor,severityColor} from "../../../../chart"; +import {duration,exactTimestamp,timeZoneLabel} from "../../../../format"; +import {EmptyState,PageControls,usePagedItems} from "./components"; +export function Waterfall({ spans, dark, onSpan }: { spans: TraceSpan[]; dark: boolean; onSpan: (span: TraceSpan) => void }) { + const start = Math.min(...spans.map((span) => new Date(span.start).valueOf())); + const end = Math.max(...spans.map((span) => new Date(span.start).valueOf() + span.duration_ms)); + const total = Math.max(end - start, 1); + const visibleSpans = usePagedItems(spans, 8); + return <> + OperationTimelineDuration + {visibleSpans.pageItems.map((span) => { + const offset = (new Date(span.start).valueOf() - start) / total * 100; + const width = Math.max(span.duration_ms / total * 100, .6); + const failed = span.status.toUpperCase().includes("ERROR"); + return onSpan(span)} onKeyDown={(event) => { if (event.key === "Enter" || event.key === " ") onSpan(span); }} style={{ cursor: "pointer" }}> + {span.operation}{span.service} + + {duration(span.duration_ms)} + ; + })} +
; +} + +export function TraceLogs({ entries }: { entries: LogEntry[] }) { + const logs = usePagedItems(entries, 6); + if (entries.length === 0) return } title="No correlated logs">No logs in this window carry the selected trace ID.; + return <>Time ({timeZoneLabel(logs.pageItems[0]?.time)})LevelServiceMessage{logs.pageItems.map((entry, index) => {new Date(entry.time).toLocaleTimeString([], { hour: "numeric", minute: "2-digit", second: "2-digit" })}{entry.severity || "LOG"}{entry.service}{entry.body})}
; +} + + +``` + +Create `ui/host/src/dashboards/trace/components.tsx` as the adapted host copy of the three dependencies from `ui/apps/src/components.tsx`: + +```tsx +// Adapted from ui/apps/src/components.tsx. Keep Bun workspace boundaries; consolidate in M3. +import {Button,Center,Group,Text,ThemeIcon,Box} from "@mantine/core"; +import {useEffect,useState,type ReactNode} from "react"; +export function EmptyState({icon,title,children,tall=false}:{icon:ReactNode;title:string;children:ReactNode;tall?:boolean}){ + return
{icon}{title}{children}
; +} +export function usePagedItems(items:T[],pageSize=8){ + const [page,setPage]=useState(1);const totalPages=Math.max(1,Math.ceil(items.length/pageSize)); + useEffect(()=>{if(page>totalPages)setPage(totalPages);},[page,totalPages]);const start=(page-1)*pageSize; + return {page,setPage,totalPages,pageItems:items.slice(start,start+pageSize),from:items.length?start+1:0,to:Math.min(start+pageSize,items.length),total:items.length}; +} +export function PageControls({page,totalPages,from,to,total,onChange}:{page:number;totalPages:number;from:number;to:number;total:number;onChange:(page:number)=>void}){ + if(totalPages<=1)return null; + return {from}–{to} of {total} + {([{label:"First page",page:1,disabled:page===1},{label:"Previous page",page:page-1,disabled:page===1},{label:"Next page",page:page+1,disabled:page===totalPages},{label:"Last page",page:totalPages,disabled:page===totalPages}]).map(item=>)} + ; +} +``` + +Keep the chat workspace’s trace.tsx unchanged. These copies contain no app mount or MCP bridge. Both embedded bundles build; consolidation is M3 work. + +Extend `ObservabilityHandler` with `maxWindow time.Duration`; change its constructor to: + +```go +func NewObservabilityHandler(queries ObservabilityQueries, retentionDays int) *ObservabilityHandler { + maximum := 30 * 24 * time.Hour + if retentionDays > 0 { + maximum = time.Duration(retentionDays) * 24 * time.Hour + } + return &ObservabilityHandler{queries: queries, now: time.Now, maxWindow: maximum} +} +``` + +Update `cmd/fanout/main.go:270` to `api.NewObservabilityHandler(queries,cfg.RetentionDays)` and the constructor calls in observability_test.go to pass 30. Existing struct-literal deadline tests retain the 30-day default. In `ObservabilityHandler.request`, keep window and limit parsing unchanged; replace the block starting `end := h.now().UTC()` with: + +```go +end := h.now().UTC() +start := end.Add(-window) +from, to := strings.TrimSpace(c.QueryParam("from")), strings.TrimSpace(c.QueryParam("to")) +if from != "" || to != "" { + if from == "" || to == "" { + return observability.Scope{}, 0, echo.NewHTTPError(http.StatusBadRequest, "from and to must both be RFC 3339 timestamps") + } + var err error + start, err = time.Parse(time.RFC3339Nano, from) + if err != nil { + return observability.Scope{}, 0, echo.NewHTTPError(http.StatusBadRequest, "from must be RFC 3339") + } + end, err = time.Parse(time.RFC3339Nano, to) + if err != nil { + return observability.Scope{}, 0, echo.NewHTTPError(http.StatusBadRequest, "to must be RFC 3339") + } + maximum := h.maxWindow + if maximum <= 0 { + maximum = 30 * 24 * time.Hour + } + if !start.Before(end) || end.Sub(start) > maximum { + return observability.Scope{}, 0, echo.NewHTTPError(http.StatusBadRequest, "absolute window must be positive and bounded by retention") + } +} +return observability.Scope{Namespace: c.QueryParam("namespace"), Start: start.UTC(), End: end.UTC()}, limit, nil + +``` + +`window` keeps its duration meaning; absolute pairs take precedence and obey the configured retention duration, matching observability.Service.normalizeScope. Do not clip the captured range to request-time now. + +In fakeQueries add `traceScope observability.Scope` and have its existing Trace method record the scope. Add to observability_test.go: + +```go +func TestM2TraceAbsoluteWindow(t *testing.T) { + queries := &fakeQueries{} + h := NewObservabilityHandler(queries, 7) + now := time.Date(2026, 10, 5, 12, 0, 0, 0, time.UTC) + h.now = func() time.Time { return now } + e := echo.New() + h.Register(e.Group("/api/observability")) + cases := []struct { + query string + code int + }{ + {"?trace_id=abc&from=2026-10-01T12:00:00.123456789Z&to=2026-10-01T13:00:00.123456789Z&window=15m", 200}, + {"?from=2026-10-01T12:00:00Z", 400}, + {"?from=bad&to=2026-10-01T13:00:00Z", 400}, + {"?from=2026-10-01T13:00:00Z&to=2026-10-01T12:00:00Z", 400}, + {"?from=2026-09-01T12:00:00Z&to=2026-10-01T12:00:00Z", 400}, + {"?window=15m", 200}, + } + for _, tc := range cases { + rec := httptest.NewRecorder() + e.ServeHTTP(rec, httptest.NewRequest(http.MethodGet, "/api/observability/trace"+tc.query, nil)) + if rec.Code != tc.code { + t.Fatalf("%s: %d %s", tc.query, rec.Code, rec.Body) + } + if tc.code == 200 { + if tc.query == "?window=15m" { + if !queries.traceScope.End.Equal(now) || queries.traceScope.End.Sub(queries.traceScope.Start) != 15*time.Minute { + t.Fatalf("window changed: %+v", queries.traceScope) + } + } else { + want := time.Date(2026, 10, 1, 12, 0, 0, 123456789, time.UTC) + if !queries.traceScope.Start.Equal(want) || queries.traceScope.End.Sub(want) != time.Hour { + t.Fatalf("captured window lost: %+v", queries.traceScope) + } + } + } + } +} +``` + +- [ ] **Step 5: Implement bounded URL state and client adapters** + +Create `ui/host/src/dashboards/drill-state.ts`: + +```ts +import type {Panel,PanelResult,Selection} from "../../../panels/types"; +export type DrillTarget={panel_id:string;kind:"traces"|"logs";from:string;to:string;window_from:string;window_to:string;dimensions:Record;trace_id?:string;namespace?:string;bucket?:{lower:number;upper?:number}}; +export function parseDrill(raw:unknown):DrillTarget|undefined{ + try{ + const encoded=typeof raw==="string"?raw:JSON.stringify(raw);if(!encoded||encoded.length>4096)return undefined; + const v:unknown=typeof raw==="string"?JSON.parse(raw):raw;if(!v||typeof v!=="object")return undefined;const x=v as Partial; + if(typeof x.panel_id!=="string"||!/^([a-z][a-z0-9_]{0,39})$/.test(x.panel_id)||(x.kind!=="traces"&&x.kind!=="logs")||typeof x.from!=="string"||typeof x.to!=="string"||!Number.isFinite(Date.parse(x.from))||!Number.isFinite(Date.parse(x.to))||Date.parse(x.from)>=Date.parse(x.to)||Date.parse(x.to)-Date.parse(x.from)>30*86400000)return undefined; + if(typeof x.window_from!=="string"||typeof x.window_to!=="string"||!Number.isFinite(Date.parse(x.window_from))||!Number.isFinite(Date.parse(x.window_to))||Date.parse(x.window_from)>=Date.parse(x.window_to)||Date.parse(x.window_to)-Date.parse(x.window_from)>30*86400000||Date.parse(x.from)Date.parse(x.window_to))return undefined; + if(!x.dimensions||Array.isArray(x.dimensions)||typeof x.dimensions!=="object"||Object.keys(x.dimensions).length>3||Object.values(x.dimensions).some(v=>typeof v!=="string"||v.length>500))return undefined; + if(x.trace_id!==undefined&&(typeof x.trace_id!=="string"||x.trace_id.length>128))return undefined; + if(x.namespace!==undefined&&(typeof x.namespace!=="string"||x.namespace.length>200))return undefined; + if(x.bucket&&(!Number.isFinite(x.bucket.lower)||x.bucket.lower<0||(x.bucket.upper!==undefined&&(!Number.isFinite(x.bucket.upper)||x.bucket.upper<=x.bucket.lower))))return undefined; + return {panel_id:x.panel_id,kind:x.kind,from:x.from,to:x.to,window_from:x.window_from,window_to:x.window_to,dimensions:x.dimensions,trace_id:x.trace_id,namespace:x.namespace,bucket:x.bucket}; + }catch{return undefined;} +} +export function makeDrill(panel:Panel,result:PanelResult,selection:Selection):DrillTarget|undefined{ + if(!panel.drill&&!selection.trace_id)return undefined; + if(result.from_ms===undefined||result.to_ms===undefined)return undefined; + let from=result.from_ms,to=result.to_ms; + if(selection.time!==undefined&&!selection.trace_id){const m=/^(\d+)(s|m|h|d)$/.exec(result.interval??"");const width=m?Number(m[1])*({s:1000,m:60000,h:3600000,d:86400000}[m[2] as "s"|"m"|"h"|"d"]):60000;from=Math.max(from,selection.time);to=Math.min(to,selection.time+width);} + return parseDrill(JSON.stringify({panel_id:panel.id,kind:selection.trace_id?"traces":panel.drill,from:new Date(from).toISOString(),to:new Date(to).toISOString(),window_from:new Date(result.from_ms).toISOString(),window_to:new Date(result.to_ms).toISOString(),dimensions:selection.dimensions,trace_id:selection.trace_id,namespace:selection.namespace,bucket:selection.bucket})); +} +``` + +Extend DashboardSearch with `drill?:string`. In parseSearch, import parseDrill and insert `const drill=parseDrill(raw.drill);if(drill) out.drill=JSON.stringify(drill);` before returning. In toSearchParams insert `if(search.drill) out.drill=search.drill;`. URL links retain every other search value. + +Append to api.ts (imports for Frame, Selection, Result, TraceDetail and DrillTarget are type-only): + +```ts +export type ExemplarBody={dashboard:DashboardSpec;panel_id:string;kind?:"traces"|"logs";time?:DashboardTime;from:string;to:string;dimensions?:Record;bucket?:Selection["bucket"];vars?:Record}; +export type Exemplar={trace_id:string;namespace:string;service:string;operation:string;duration_ms:number;status:string;start:string}; +export type ExemplarResponse={traces:Exemplar[];logs?:Frame;truncated?:boolean}; +export const queryExemplars=(body:ExemplarBody,signal?:AbortSignal)=>request("/api/panels/exemplars",{method:"POST",json:body,signal}); +export function getTrace(target:DrillTarget,signal?:AbortSignal):Promise>{ + const params=new URLSearchParams({trace_id:target.trace_id??"",namespace:target.namespace??"",from:target.window_from,to:target.window_to,limit:"200"}); + return request>(`/api/observability/trace?${params}`,{signal}); +} +``` + +- [ ] **Step 6: Implement the drawer and hook selections into the URL** + +Create `ui/host/src/dashboards/drill.tsx`: + +```tsx +import {Alert,Button,Drawer,Group,Loader,Stack,Text,useComputedColorScheme} from "@mantine/core"; +import {useQuery} from "@tanstack/react-query"; +import {TraceLogs,Waterfall} from "./trace/trace-components"; +import type {DashboardSpec,DashboardTime,VarValue} from "../../../panels/types"; +import {getTrace,queryExemplars} from "./api"; +import type {DrillTarget} from "./drill-state"; +import {LogsViz} from "./viz/logs"; +export type DrillProps={spec:DashboardSpec;time:DashboardTime;vars:Record;target?:DrillTarget;onChange(target?:DrillTarget):void}; +export function DrillDrawer({spec,time,vars,target,onChange}:DrillProps){ + const dark=useComputedColorScheme("light")==="dark";const panel=spec.panels.find(p=>p.id===target?.panel_id); + const directLogs=target?.kind==="logs"&&panel?.query?.from==="logs"; + const exemplars=useQuery({queryKey:["exemplars",spec,target,vars],queryFn:({signal})=>queryExemplars({dashboard:spec,panel_id:target!.panel_id,kind:directLogs?"logs":"traces",time:{from:target!.window_from,to:target!.window_to,refresh:"off"},from:target!.from,to:target!.to,dimensions:target!.dimensions,bucket:target!.bucket,vars},signal),enabled:Boolean(target&&panel&&!target.trace_id),retry:false}); + const trace=useQuery({queryKey:["drill-trace",target],queryFn:({signal})=>getTrace(target!,signal),enabled:Boolean(target?.trace_id),retry:false}); + return onChange(undefined)} title={panel?`${panel.title} · ${target?.kind}`:"Panel selection unavailable"} position="right" size="xl"> + {!panel&&This panel is no longer in the dashboard.} + {(exemplars.isFetching||trace.isFetching)&&} + {(exemplars.error||trace.error)&&{(exemplars.error??trace.error)?.message}} + {directLogs&&exemplars.data?.logs&&panel&&} + {directLogs&&exemplars.data?.logs?.rows===0&&No logs match this selection.} + {!directLogs&&!target?.trace_id&&exemplars.data&& + {exemplars.data.traces.length===0&&No exemplar traces match this selection.} + {exemplars.data.traces.map(t=>)} + {exemplars.data.truncated&&Showing at most 20 exemplar traces.} + } + {trace.data&&{trace.data.data.trace_id}{trace.data.data.has_error?"■ Error":"● OK"} + {trace.data.data.spans.length?undefined}/>:No spans were found for this trace.} + Correlated logs + {trace.data.data.truncated&&This trace is truncated: {trace.data.data.spans.length} of {trace.data.data.span_count} spans, {trace.data.data.services.length} of {trace.data.data.service_count} services.} + } + ; +} +``` + +In page.tsx import DrillDrawer, makeDrill and parseDrill. Pass to PanelGrid: + +```tsx +onPoint={(panel,selection)=>{ + const result=data.results.get(panel.id);if(!result)return; + const target=makeDrill(panel,result,selection);if(!target)return; + const first=Object.values(selection.dimensions)[0];const variable=panel.click?.set_variable; + const vars=variable&&first!==undefined?{...search.vars,[variable]:first}:search.vars; + onSearch({...search,vars,drill:JSON.stringify(target)},false); +}} +``` + +Render before the closing main Box: + +```tsx +onSearch({...search,drill:target?JSON.stringify(target):undefined},false)}/> +``` + +In RowPanel import makeDrill and replace its trace_id branch with: + +```tsx +if(name==="trace_id"&&value){ + const target=makeDrill(props.panel,props.result,selection);if(!target)return {String(value)}; + const url=new URL(window.location.href);url.searchParams.set("drill",JSON.stringify(target)); + return {if(props.onPoint&&event.button===0&&!event.ctrlKey&&!event.metaKey&&!event.shiftKey&&!event.altKey){event.preventDefault();event.stopPropagation();props.onPoint(selection);}}}>{String(value)}; +} +``` + +In Grid's card factory, when a panel has drill and an onPoint handler, omit its onSelect callback; the page's onPoint performs click-variable and drill updates atomically. For other panels retain the existing click onSelect. Replace the factory's onSelect expression with: + +```tsx +onSelect={panel.click && !(panel.drill && onPoint) ? value=>onVariable(panel.click!.set_variable,value) : undefined} +``` + +Service row links use onSelect only when provided. Table-format service_link receives the explicit variable callback in Task 13. + +For table-wide drill, add `onPoint?: (selection:Selection)=>void` to TableViz and memoize `const model=useMemo(()=>rowModel(panel,result),[panel,result])`. Import rowModel from the pure rows module. Replace the firstDimension calculation with: + +```tsx +const firstDimension=panel.query?.by?.length?frame.columns.findIndex(c=>c.role==="dimension"):panel.query&&frame.columns.some(c=>c.name==="service")?frame.columns.findIndex(c=>c.name==="service"):frame.columns.findIndex(c=>c.role==="dimension"); +``` + +Define rowInteractive and activate beside that calculation: + +```tsx +const rowInteractive=(index:number)=>Boolean(onSelect||onPoint&&(panel.click||panel.drill||model.selection(model.rows[index]).trace_id)); +const activate=(index:number,original:Cell[])=>{ + if(!rowInteractive(index))return; + onPoint?.(model.selection(model.rows[index])); + const value=firstDimension>=0?String(original[firstDimension]??""):undefined; + if(value!==undefined&&value!=="Other")onSelect?.(value); +}; +``` + +Replace the complete Table.Tr expression in the existing row map with: + +```tsx +{if((event.target as Element).closest("a,button"))return;activate(row.index,row.original);}} + onKeyDown={event=>{if(!rowInteractive(row.index)||(event.target as Element).closest("a,button"))return;if(event.key==="Enter"||event.key===" "){event.preventDefault();activate(row.index,row.original);}}}> + {row.getAllCells().map((cell)=>)} + +``` + +Include onPoint in TableViz's props/destructuring. Pass `onPoint={onPoint}` from Viz's table case and `onPoint={props.onPoint}` from RowPanel. Trace links already stop propagation; row handlers additionally ignore nested links/buttons. Non-drill click panels retain their existing onSelect path. + +- [ ] **Step 7: Run to see pass and build** + +```bash +rtk just test ./internal/panel/... ./internal/api/... ./internal/observability/... -run '"TestM2DrillLogs|TestM2Exemplar|TestM2TraceAbsoluteWindow"' +rtk proxy sh -c 'cd ui/host && bun run test' +rtk proxy sh -c 'cd ui/host && bun run lint' +rtk just ui +``` + +Expected: the dashboard uses adapted workspace-local copies of the chat components; deep links reproduce selection/trace; changing/closing a drawer aborts its obsolete requests via React Query signals; zero-row and capped log/trace results remain explicit. + +Before the controller commit, format all Go changes: + +```bash +rtk just fmt +``` + +Regenerate route/tool/setting reference docs before this task’s commit: + +```bash +rtk just docs-generate +rtk just docs-generate-check +``` + +- [ ] **Step 8: Commit (controller)** + +```bash +rtk git add site/src/content/docs/reference internal/panel/exemplars.go internal/panel/rowpanels.go internal/panel/validate.go internal/panel/drill_logs_test.go internal/api/observability.go internal/api/observability_test.go cmd/fanout/main.go ui/host/src/dashboards internal/ui/dist internal/mcp/apps +rtk git commit -m "feat(ui): drill from panel selections into shared traces and logs" +``` + +--- + +### Task 11: Server deploy split and memoized annotation scope + +**Files:** Create `internal/panel/deploy_split.go`, `deploy_split_test.go`, `annotation_scope.go`, `annotation_scope_test.go`; modify `spec.go`, `frame.go`, `validate.go`, `check.go`, `exec.go` (under internal/panel). + +**Interfaces:** Define ColumnFormat, Options.Split/Columns, Frame.Note, AnnotationService/AnnotationMatch, AnnotationFilter, Checked.AnnotationFilters and Result.AnnotationScope/AnnotationError. The complete server code below produces runDeploySplit and annotationScope; ColumnFormat/Options.Columns TS mirrors were introduced in Task 7; the remaining UI mirrors follow in Task 12. + +- [ ] **Step 1: Write failing engine tests** + +Create `internal/panel/deploy_split_test.go`: + +```go +package panel + +import ( + "testing" + "time" +) + +func TestM2DeploySplitUsesEffectiveWindowAndRates(t *testing.T) { + engine, repo := newTestEngine(t) + commit(t, repo, shopSpans(), nil) + at := fixtureStart + _, err := engine.DB.Exec(`INSERT INTO version_rollup VALUES ('shop','checkout','v1',?::TIMESTAMP_NS::TIMESTAMPTZ_NS,?::TIMESTAMP_NS::TIMESTAMPTZ_NS),('shop','checkout','v2',?::TIMESTAMP_NS::TIMESTAMPTZ_NS,?::TIMESTAMP_NS::TIMESTAMPTZ_NS)`, at.Add(-time.Hour), at, at.Add(15*time.Minute), at.Add(time.Hour)) + if err != nil { + t.Fatal(err) + } + e := NewExecutor(engine, 30) + e.now = func() time.Time { return at.Add(time.Hour) } + d := shopDashboard() + d.Panels = d.Panels[2:3] + d.Panels[0].Query.Measures = []string{"rate()"} + d.Panels[0].Options = &Options{Split: "deploy"} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + f := got[0].Frame + if got[0].Status != "ok" || f.Rows != 4 || f.Columns[1].Name != "period" { + t.Fatalf("split: %+v", got) + } + for _, v := range f.Values[2] { + if v.(float64) != 1.0/60 { + t.Fatalf("rate used full window: %v", f.Values) + } + } + d.Panels[0].Time = &PanelTime{Range: "15m"} + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Frame.Note == "" || len(got[0].Frame.Columns) != 2 { + t.Fatalf("no deploy: %+v %v", got, err) + } +} +``` + +Create `internal/panel/annotation_scope_test.go`: + +```go +package panel + +import ( + "testing" + "time" +) + +func TestM2AnnotationScopeUsesCheckedAST(t *testing.T) { + engine, _ := newTestEngine(t) + at := fixtureStart + _, err := engine.DB.Exec(`INSERT INTO version_rollup VALUES ('shop','checkout','v1',?::TIMESTAMP_NS::TIMESTAMPTZ_NS,?::TIMESTAMP_NS::TIMESTAMPTZ_NS),('shop','payment','v1',?::TIMESTAMP_NS::TIMESTAMPTZ_NS,?::TIMESTAMP_NS::TIMESTAMPTZ_NS)`, at, at, at, at) + if err != nil { + t.Fatal(err) + } + e := NewExecutor(engine, 30) + sig, _ := lookupSignal("spans") + vars := map[string]Variable{"services": {Name: "services", Kind: "custom", Options: []string{"checkout", "payment"}, Multi: true, IncludeAll: true}} + scope := Scope{Start: at, End: at.Add(time.Hour), Vars: map[string]Value{"services": {Values: []string{"checkout"}}}} + p := &Panel{ID: "p", Title: "P", Viz: "timeseries", Query: &Query{From: "spans"}} + for _, expr := range []string{"service IN $services", "service LIKE '%out'", "namespace = 'shop' AND service = 'checkout' AND http_route = '/cart'"} { + f, err := checkFilter(t.Context(), engine, sig, vars, expr) + if err != nil { + t.Fatal(err) + } + got, err := e.annotationScope(t.Context(), p, projectedFilters(t, engine, sig, vars, f), scope) + if err != nil { + t.Fatal(err) + } + if got == nil || len(got.Services) != 1 || got.Services[0].Service != "checkout" { + t.Fatalf("%s: %+v", expr, got) + } + } + f, err := checkFilter(t.Context(), engine, sig, vars, "service = 'checkout' OR http_route = '/cart'") + if err != nil { + t.Fatal(err) + } + got, err := e.annotationScope(t.Context(), p, projectedFilters(t, engine, sig, vars, f), scope) + if err != nil || got != nil { + t.Fatalf("mixed OR must remain unscoped for annotation service matching: %+v %v", got, err) + } + f, err = checkFilter(t.Context(), engine, sig, vars, "service IN $services") + if err != nil { + t.Fatal(err) + } + scope.Vars["services"] = Value{All: true} + got, err = e.annotationScope(t.Context(), p, projectedFilters(t, engine, sig, vars, f), scope) + if err != nil || got != nil { + t.Fatalf("All: %+v %v", got, err) + } + scope.Vars["services"] = Value{Values: []string{}} + got, err = e.annotationScope(t.Context(), p, projectedFilters(t, engine, sig, vars, f), scope) + if err != nil || got == nil || len(got.Services) != 0 { + t.Fatalf("empty list: %+v %v", got, err) + } +} +func projectedFilters(t *testing.T, parser Parser, sig *signal, vars map[string]Variable, f Filter) []AnnotationFilter { + t.Helper() + projected, err := projectAnnotationFilter(t.Context(), parser, sig, vars, f) + if err != nil { + t.Fatal(err) + } + if projected == nil { + return nil + } + return []AnnotationFilter{*projected} +} +func TestM2AnnotationScopeRunPanelAndAllSources(t *testing.T) { + engine, _ := newTestEngine(t) + at := fixtureStart + if _, err := engine.DB.Exec(`INSERT INTO service_rollup VALUES ('shop',?,'checkout',1,1,1,2,0,0,0)`, at); err != nil { + t.Fatal(err) + } + if _, err := engine.DB.Exec(`INSERT INTO anomaly_log VALUES ('shop','anomalyonly','latency',?::TIMESTAMP_NS::TIMESTAMPTZ_NS,?::TIMESTAMP_NS::TIMESTAMPTZ_NS,'Slow','warn')`, at, at.Add(time.Minute)); err != nil { + t.Fatal(err) + } + e := NewExecutor(engine, 30) + e.now = func() time.Time { return at.Add(time.Hour) } + d := Dashboard{Name: "Scope", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "p", Title: "P", Viz: "timeseries", Query: &Query{From: "spans", Measures: []string{"count()"}, Bucket: "5m", Where: []string{"namespace = 'shop'"}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + scope := got[0].AnnotationScope + if scope == nil || !scope.NamespaceScoped || len(scope.Services) != 2 || scope.Services[0].Service != "anomalyonly" || scope.Services[1].Service != "checkout" { + t.Fatalf("runPanel not wired or keys incomplete: %+v", got) + } +} +``` + +```bash +rtk just test ./internal/panel/... -run '"TestM2DeploySplit|TestM2AnnotationScope|TestM2CheckOperational|TestM2AnnotationProjectionMemoized"' +``` + +- [ ] **Step 2: Implement split and checked annotation projection** + +Add to Go Options and Frame: + +```go +// Options fields: +Split string `json:"split,omitempty" jsonschema:"bar: deploy, comparing before and since the latest deploy"` +Columns []ColumnFormat `json:"columns,omitempty" jsonschema:"table column formats"` +// Frame field: +Note string `json:"note,omitempty"` +``` + +Define alongside Options: + +```go +type ColumnFormat struct { + Field string `json:"field"` + Format string `json:"format" jsonschema:"unit, bar, status, sparkline, trace_link, service_link or log_template"` + Unit string `json:"unit,omitempty"` + Variable string `json:"variable,omitempty" jsonschema:"service_link: query or custom variable to select"` +} +``` + +Create `internal/panel/deploy_split.go`: + +```go +package panel + +import ( + "context" + "fmt" + + "github.com/labstack/fanout/internal/annotations" +) + +func (e *Executor) runDeploySplit(ctx context.Context, p *Panel, checked *Checked, scope Scope) (*Frame, string, error) { + copyPanel := *p + copyOptions := *p.Options + copyOptions.Split = "" + copyPanel.Options = ©Options + request := annotations.Request{From: scope.Start, To: scope.End} + seen := map[string]string{} + for _, f := range checked.Filters[p.ID] { + if scope.dropped(f) { + if f.EqField == "service" { + frame, text, err := e.runScope(ctx, ©Panel, checked, scope) + if frame != nil { + frame.Note = "Service is All; showing the unsplit whole-window frame." + } + return frame, text, err + } + continue + } + if f.EqField == "service" || f.EqField == "namespace" { + field, value, err := rollupFilterValue(ctx, e.engine, f, scope) + if err != nil { + return nil, "", err + } + if old, ok := seen[field]; ok && old != value { + return nil, "", fmt.Errorf("deploy split scope equalities disagree") + } + seen[field] = value + if field == "namespace" { + request.Namespace = value + } else { + request.Services = []string{value} + } + } + } + if len(request.Services) != 1 { + return nil, "", fmt.Errorf("deploy split requires one active service equality") + } + history, err := annotations.New(e.engine).Read(ctx, request) + if err != nil { + return nil, "", err + } + var latest *annotations.Deploy + for i := range history.Deploys { + at := history.Deploys[i].At + if at.After(scope.Start) && at.Before(scope.End) && (latest == nil || at.After(latest.At)) { + latest = &history.Deploys[i] + } + } + if latest == nil { + f, text, err := e.runScope(ctx, ©Panel, checked, scope) + if f != nil { + f.Note = "No deploy in this panel's time range; showing the whole window." + } + return f, text, err + } + before, after := scope, scope + before.End = latest.At + after.Start = latest.At + a, sqlA, err := e.runScope(ctx, ©Panel, checked, before) + if err != nil { + return nil, sqlA, err + } + b, sqlB, err := e.runScope(ctx, ©Panel, checked, after) + if err != nil { + return nil, sqlB, err + } + columns := append([]Column{a.Columns[0], {Name: "period", Type: "string", Role: "dimension"}}, a.Columns[1:]...) + f := newFrame(columns) + f.Truncated = a.Truncated || b.Truncated || history.Truncated + for _, part := range []struct { + frame *Frame + label string + }{{a, "Before deploy"}, {b, "Since deploy"}} { + for r := 0; r < part.frame.Rows; r++ { + row := []any{part.frame.Values[0][r], part.label} + for i := 1; i < len(part.frame.Columns); i++ { + row = append(row, part.frame.Values[i][r]) + } + appendPanelRow(f, row...) + } + } + f.Note = "Split at " + latest.At.Format("2006-01-02T15:04:05.999999999Z07:00") + " · " + latest.Service + " " + latest.Version + return f, sqlA + "; " + sqlB, nil +} +func validateDisplayOptions(p *Panel, path string, vars map[string]Variable, problems *Problems) { + if p.Options == nil { + return + } + if p.Options.Split != "" && (p.Options.Split != "deploy" || p.Viz != "bar" || p.Query == nil || len(p.Query.By) != 1 || len(p.Query.Measures) != 1) { + problems.addHint(path+".options.split", "deploy split needs a structured bar with one category and one measure", "use a separate panel per measure") + } + if len(p.Options.Columns) > 30 { + problems.add(path+".options.columns", "at most 30 column formats") + } + if len(p.Options.Columns) > 0 && p.Viz != "table" { + problems.add(path+".options.columns", "column formats apply to table panels") + } + seen := map[string]bool{} + for _, c := range p.Options.Columns { + if c.Field == "" || seen[c.Field] { + problems.add(path+".options.columns", "column fields must be nonempty and unique") + } + seen[c.Field] = true + switch c.Format { + case "unit", "bar", "status", "sparkline", "trace_link", "service_link", "log_template": + default: + problems.add(path+".options.columns", "unknown column format") + } + if c.Unit != "" { + if _, ok := unitFamilies[c.Unit]; !ok { + problems.add(path+".options.columns", "unknown column unit") + } + } + if c.Format == "service_link" { + v, ok := vars[c.Variable] + if !ok || (v.Kind != "query" && v.Kind != "custom") { + problems.add(path+".options.columns", "service_link requires a query or custom variable") + } + } + if p.Query != nil { + sig, ok := lookupSignal(p.Query.From) + if !ok { + continue + } + columns := map[string]bool{} + for _, by := range p.Query.By { + ref, err := sig.field(by) + if err == nil { + columns[ref.alias()] = true + } + } + var ignored Problems + for _, m := range parseMeasures(sig, p.Query.Measures, "", &ignored) { + columns[m.Alias] = true + } + if !columns[c.Field] { + problems.add(path+".options.columns", "formatted field does not exist in the structured frame") + } + } + } +} +``` + +At the start of runScope after applying the read window and before structured dispatch: + +```go +if p.Options != nil && p.Options.Split == "deploy" { + return e.runDeploySplit(ctx, p, checked, scope) +} + +``` + +Call `validateDisplayOptions(p,path,vars,problems)` beside the other viz validators. In Check, for split panels reject a filter referencing service/namespace unless it is a representable equality (use the existing parsed AST's `fieldText` walker to identify references, not a substring): add the following helper in deploy_split.go and call it after every checked filter is appended: + +```go +func checkDeployScope(ctx context.Context, parser Parser, p *Panel, f Filter) error { + if p.Options == nil || p.Options.Split != "deploy" { + return nil + } + tree, err := parser.ParseSQL(ctx, "SELECT 1 FROM spans WHERE ("+f.Source+")") + if err != nil { + return err + } + scoped := false + var walk func(any) + walk = func(n any) { + switch v := n.(type) { + case map[string]any: + if v["class"] == "COLUMN_REF" && (fieldText(v) == "service" || fieldText(v) == "namespace") { + scoped = true + } + for _, child := range v { + walk(child) + } + case []any: + for _, child := range v { + walk(child) + } + } + } + walk(tree["where_clause"]) + if !scoped { + return nil + } + if f.EqField != "service" && f.EqField != "namespace" { + return Problems{{Path: "options.split", Message: "deploy split requires standalone service/namespace equalities"}} + } + sample := Scope{Vars: map[string]Value{}} + for _, name := range f.Params { + sample.Vars[name] = Value{Values: []string{"check"}} + } + _, _, err = rollupFilterValue(ctx, parser, f, sample) + return err +} +``` + +Call site in Check: + +```go +if err := checkDeployScope(ctx, parser, p, f); err != nil { + if isOperational(err) { + return nil, nil, err + } + problems.addHint(path+".options.split", SafeError(err), "use standalone service and optional namespace equalities") +} + +``` + +After the panel’s entire filter loop in Check, require the service equality even when query.where is absent: + +```go +if p.Options != nil && p.Options.Split == "deploy" { + found := false + for _, f := range checked.Filters[p.ID] { + if f.EqField == "service" { + found = true + } + } + if !found { + problems.addHint(path+".options.split", "deploy split requires a service equality filter", "add service = 'name' or service = $service") + } +} + +``` + +Add to deploy_split_test.go (import errors and slices): + +```go +func TestM2DeploySplitAllFallsBackAndRequiresEquality(t *testing.T) { + e := newFixtureExecutor(t) + d := shopDashboard() + d.Panels = d.Panels[2:3] + d.Panels[0].Options = &Options{Split: "deploy"} + d.Variables[0].IncludeAll = true + got, err := e.Run(t.Context(), RunRequest{Dashboard: d, Vars: map[string]Value{"service": {All: true}}}) + if err != nil || got[0].Frame == nil || got[0].Frame.Note != "Service is All; showing the unsplit whole-window frame." || len(got[0].Frame.Columns) != 2 { + t.Fatalf("All: %+v %v", got, err) + } + d.Panels[0].Query.Where = nil + err = e.Validate(t.Context(), &d) + var problems Problems + want := Problem{Path: "panels[0].options.split", Message: "deploy split requires a service equality filter", Hint: "add service = 'name' or service = $service"} + if !errors.As(err, &problems) || !slices.Contains(problems, want) { + t.Fatalf("got %v want %+v", err, want) + } +} +``` + +Create `internal/panel/annotation_scope.go`. Derive service/namespace restrictions from the already checked AST, including IN, LIKE, casts, variables and conjunctions; never use a browser regex to interpret SQL: + +```go +package panel + +import ( + "context" + "fmt" + "strings" +) + +type AnnotationService struct { + Namespace string `json:"namespace"` + Service string `json:"service"` +} +type AnnotationMatch struct { + Services []AnnotationService `json:"services"` + NamespaceScoped bool `json:"namespace_scoped,omitempty"` + Limited bool `json:"limited,omitempty"` +} + +func annotationOnly(n any) bool { + switch v := n.(type) { + case map[string]any: + if v["class"] == "COLUMN_REF" { + name := fieldText(v) + return name == "service" || name == "namespace" + } + for _, child := range v { + if !annotationOnly(child) { + return false + } + } + case []any: + for _, child := range v { + if !annotationOnly(child) { + return false + } + } + } + return true +} +func annotationNamespace(n any) bool { + switch v := n.(type) { + case map[string]any: + if v["class"] == "COLUMN_REF" && fieldText(v) == "namespace" { + return true + } + for _, child := range v { + if annotationNamespace(child) { + return true + } + } + case []any: + for _, child := range v { + if annotationNamespace(child) { + return true + } + } + } + return false +} + +// exact=false means another signal field was omitted. AND can retain known +// necessary restrictions; OR and NOT containing unknown fields cannot. +func annotationPredicate(n any) (any, bool) { + if annotationOnly(n) { + return n, true + } + v, ok := n.(map[string]any) + if !ok || v["class"] != "CONJUNCTION" || v["type"] != "CONJUNCTION_AND" { + return nil, false + } + children, _ := v["children"].([]any) + kept := []any{} + exact := true + for _, child := range children { + projected, complete := annotationPredicate(child) + exact = exact && complete + if projected != nil { + kept = append(kept, projected) + } + } + if len(kept) == 0 { + return nil, false + } + if len(kept) == 1 { + return kept[0], exact + } + clone := map[string]any{} + for key, value := range v { + clone[key] = value + } + clone["children"] = kept + return clone, exact +} + +type AnnotationFilter struct { + Filter Filter + NamespaceScoped bool +} + +func projectAnnotationFilter(ctx context.Context, parser Parser, sig *signal, vars map[string]Variable, f Filter) (*AnnotationFilter, error) { + tree, err := parser.ParseSQL(ctx, "SELECT 1 FROM "+sig.name+" WHERE ("+f.Source+")") + if err != nil { + return nil, err + } + projected, _ := annotationPredicate(tree["where_clause"]) + if projected == nil { + return nil, nil + } + namespaceScoped := annotationNamespace(projected) + tree["where_clause"] = projected + rendered, err := parser.RenderSQL(ctx, tree) + if err != nil { + return nil, err + } + prefix := "SELECT 1 FROM " + sig.name + " WHERE " + if !strings.HasPrefix(rendered, prefix) { + return nil, fmt.Errorf("annotation scope could not be rendered") + } + checked, err := checkFilter(ctx, parser, sig, vars, strings.TrimPrefix(rendered, prefix)) + if err != nil { + return nil, err + } + return &AnnotationFilter{Filter: checked, NamespaceScoped: namespaceScoped}, nil +} +func (e *Executor) annotationScope(ctx context.Context, p *Panel, filters []AnnotationFilter, scope Scope) (*AnnotationMatch, error) { + clauses := []string{} + args := []any{} + namespaceScoped := false + for _, projected := range filters { + f := projected.Filter + if scope.dropped(f) { + continue + } + empty := false + for _, name := range f.Params { + if v := scope.Vars[name]; !v.All && len(v.Values) == 0 { + empty = true + } + } + if empty { + clauses = append(clauses, "FALSE") + continue + } + predicate, _, bound, err := bindParams(f.Expr, scope.lookup(f)) + if err != nil { + return nil, err + } + namespaceScoped = namespaceScoped || projected.NamespaceScoped + clauses = append(clauses, "("+predicate+")") + args = append(args, bound...) + } + if len(clauses) == 0 { + return nil, nil + } + out := &AnnotationMatch{Services: []AnnotationService{}, NamespaceScoped: namespaceScoped} + rows, err := e.engine.QueryContext(ctx, `WITH keys AS ( + SELECT namespace,service FROM version_rollup UNION SELECT namespace,service FROM anomaly_log UNION SELECT namespace,service FROM service_rollup) +SELECT DISTINCT namespace,service FROM keys WHERE `+strings.Join(clauses, " AND ")+` ORDER BY namespace,service LIMIT 1001`, args...) + if err != nil { + return nil, err + } + defer rows.Close() + for rows.Next() { + var item AnnotationService + if err := rows.Scan(&item.Namespace, &item.Service); err != nil { + return nil, err + } + out.Services = append(out.Services, item) + } + if err := rows.Err(); err != nil { + return nil, err + } + if len(out.Services) > 1000 { + out.Services = out.Services[:1000] + out.Limited = true + } + return out, nil +} +``` + +Add `AnnotationFilters map[string][]AnnotationFilter` to Checked and initialize it in Check’s existing composite literal. In Check, once per checked time-panel filter, compute its projected predicate and store it inside this memoized Checked: + +```go +if p.Viz == "timeseries" || p.Viz == "heatmap" || p.Viz == "state_timeline" { + projected, err := projectAnnotationFilter(ctx, parser, sig, earlier, f) + if err != nil { + if isOperational(err) { + return nil, nil, err + } + problems.addHint(fmt.Sprintf("%s.query.where[%d]", path, j), SafeError(err), "use a supported service or namespace predicate") + } else if projected != nil { + checked.AnnotationFilters[p.ID] = append(checked.AnnotationFilters[p.ID], *projected) + } +} + +``` + +`annotationScope` performs no ParseSQL or RenderSQL on refresh. Each projected filter has its own Params/InParams, so an omitted route variable cannot drop a retained service restriction. + +Add the two Result fields specified in Interfaces and their TS mirrors. Immediately after `res.Frame, res.SQL = frame, sqlText` in runPanel, insert: + +```go +if p.Query != nil && (p.Viz == "timeseries" || p.Viz == "heatmap" || p.Viz == "state_timeline") { + res.AnnotationScope, err = e.annotationScope(ctx, p, checked.AnnotationFilters[p.ID], scope) + if err != nil { + res.AnnotationError = "Annotation scope is unavailable." + } +} + +``` + +This supplementary read resolves the union of version_rollup, anomaly_log and service_rollup keys under the panel deadline. It never scans telemetry and never discards the completed frame. SQL time panels have no structured service filter and receive unscoped markers. A limited scope is explicitly disclosed by PanelCard, along with AnnotationError; a scope error disables markers on that panel rather than drawing incorrect service events. + +Add to annotation_scope_test.go (import context and errors): + +```go +type failExtraParse struct { + Parser + parses int + failure error +} + +func (p *failExtraParse) ParseSQL(ctx context.Context, text string) (map[string]any, error) { + p.parses++ + if p.parses == 3 { + return nil, p.failure + } + return p.Parser.ParseSQL(ctx, text) +} +func TestM2CheckOperationalFailures(t *testing.T) { + engine, _ := newTestEngine(t) + for _, failure := range []error{context.Canceled, context.DeadlineExceeded} { + for _, p := range []Panel{ + {ID: "p", Title: "P", Viz: "health", Query: &Query{From: "spans", Where: []string{"service = 'checkout'"}}}, + {ID: "p", Title: "P", Viz: "bar", Options: &Options{Split: "deploy"}, Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"operation"}, Where: []string{"service = 'checkout'"}}}, + {ID: "p", Title: "P", Viz: "timeseries", Query: &Query{From: "spans", Measures: []string{"count()"}, Bucket: "auto", Where: []string{"service = 'checkout'"}}}, + } { + d := Dashboard{Name: "Operational", Panels: []Panel{p}} + Normalize(&d) + parser := &failExtraParse{Parser: engine, failure: failure} + _, problems, err := Check(t.Context(), parser, &d) + if !errors.Is(err, failure) || len(problems) != 0 || parser.parses != 3 { + t.Fatalf("%s converted operational error to Problems: %+v %v calls=%d", p.Viz, problems, err, parser.parses) + } + } + } +} +``` + +Also pin annotation projection memoization with the actual Executor.check cache (no runtime parse): + +```go +type annotationParseCounter struct { + Engine + parses int +} + +func (p *annotationParseCounter) ParseSQL(ctx context.Context, text string) (map[string]any, error) { + p.parses++ + return p.Engine.ParseSQL(ctx, text) +} +func TestM2AnnotationProjectionMemoized(t *testing.T) { + e := newFixtureExecutor(t) + counter := &annotationParseCounter{Engine: e.engine} + e.engine = counter + d := Dashboard{Name: "Memoized", Panels: []Panel{{ID: "p", Title: "P", Viz: "timeseries", Query: &Query{From: "spans", Measures: []string{"count()"}, Bucket: "auto", Where: []string{"service = 'checkout'"}}}}} + Normalize(&d) + first, err := e.check(t.Context(), &d) + if err != nil { + t.Fatal(err) + } + count := counter.parses + second, err := e.check(t.Context(), &d) + if err != nil || first != second || count == 0 || counter.parses != count { + t.Fatalf("memoization: %v count=%d now=%d", err, count, counter.parses) + } + scope := Scope{Start: e.now().Add(-time.Hour), End: e.now(), Vars: map[string]Value{}} + for i := 0; i < 2; i++ { + if _, err := e.annotationScope(t.Context(), &d.Panels[0], first.AnnotationFilters["p"], scope); err != nil { + t.Fatal(err) + } + } + if counter.parses != count { + t.Fatalf("runtime reparsed annotation predicate: %d -> %d", count, counter.parses) + } +} +``` + +The existing checkFilter performs two ParseSQL calls; the third is each new rollup/split/projection path. This test injects the error only into that new path. + +- [ ] **Step 3: Run to see pass and review** + +```bash +rtk just test ./internal/panel/... +``` + +Expected: all owning regression and integration tests pass. + +Regenerate the changed panel/tool contract references, then format all Go changes before the controller commit: + +```bash +rtk just docs-generate +rtk just docs-generate-check +rtk just fmt +``` + +- [ ] **Step 4: Commit (controller)** + +```bash +rtk git add site/src/content/docs/reference internal/panel +rtk git commit -m "feat(panels): add deploy split and memoized annotation scopes" +``` + +--- + +### Task 12: Browser annotation markers and the S8 refresh + +**Files:** Create `ui/panels/annotations.ts`, `ui/host/src/dashboards/refresh.ts`, `annotation-refresh.test.tsx`, `annotation-markers.test.tsx`, `use-panel-results.test.tsx`; modify `internal/annotations/service.go`, `internal/query/annotations_test.go`, `ui/panels/types.ts`, dashboard api/use-panel-results/query-policy/page/grid/panel-card/echart-canvas and time renderers; generated embedded bundles. + +**Interfaces:** Define AnnotationBody, AnnotationsResponse, queryAnnotations, refreshDashboard and withAnnotations. One batch-plus-annotation bundle feeds all time panels; Task 11’s checked scope is authoritative. + +- [ ] **Step 1: Write failing marker and refresh tests** + +Create `ui/host/src/dashboards/annotation-refresh.test.tsx`: + +```tsx +import {describe,expect,it,vi} from "vitest"; +const mock=vi.hoisted(()=>({panels:vi.fn(),annotations:vi.fn()})); +vi.mock("./api",()=>({queryPanels:mock.panels,queryAnnotations:mock.annotations})); +import {refreshDashboard} from "./refresh"; +import type {QueryBody} from "./api"; +const body:QueryBody={dashboard:{version:1,name:"D",time:{range:"1h"},panels:[{id:"a",title:"A",viz:"timeseries",query:{from:"spans",measures:["count()"]}},{id:"b",title:"B",viz:"timeseries",time:{shift:"1d"},query:{from:"spans",measures:["count()"]}}]},time:{range:"1h"},vars:{service:"checkout"}}; +describe("S8 annotations",()=>{ + it("makes one panel batch plus one annotation request for a refresh",async()=>{ + mock.panels.mockResolvedValue([{id:"a",status:"ok",elapsed_ms:1,from_ms:100000,to_ms:200000},{id:"b",status:"ok",elapsed_ms:1,from_ms:0,to_ms:100000}]);mock.annotations.mockResolvedValue({deploys:[],anomalies:[]}); + await refreshDashboard(body);expect(mock.panels).toHaveBeenCalledTimes(1);expect(mock.annotations).toHaveBeenCalledTimes(1); + expect(mock.annotations.mock.calls[0][0].from).toBe(new Date(0).toISOString());expect(mock.annotations.mock.calls[0][0].to).toBe(new Date(200000).toISOString()); + }); + it("keeps successful panels if annotations fail",async()=>{ + mock.panels.mockResolvedValue([{id:"a",status:"ok",elapsed_ms:1,from_ms:1,to_ms:2}]);mock.annotations.mockRejectedValue(new Error("Unavailable")); + const got=await refreshDashboard(body);expect(got.results[0].status).toBe("ok");expect(got.annotation_error).toBe("Unavailable"); + }); +}); +``` + +Create `ui/host/src/dashboards/annotation-markers.test.tsx`: + +```tsx +import {describe,expect,it} from "vitest"; +import {withAnnotations} from "../../../panels/annotations"; +import {chartThemeFor} from "../../../panels/compile"; +import type {Panel,PanelResult} from "../../../panels/types"; +const panel:Panel={id:"p",title:"P",viz:"timeseries",query:{from:"spans",where:["service = $service"],measures:["count()"]}}; +const result:PanelResult={id:"p",status:"ok",elapsed_ms:1,from_ms:0,to_ms:10000,annotation_scope:{services:[{namespace:"shop",service:"checkout"}]}}; +describe("annotations and formats",()=>{ + it("draws matching deploy lines and anomaly bands, retaining thresholds",()=>{ + const option={series:[{type:"line",markLine:{data:[{yAxis:3}]}}]}; + const annotations={deploys:[{namespace:"shop",service:"checkout",version:"v2",at:new Date(1000).toISOString()},{namespace:"shop",service:"frontend",version:"v3",at:new Date(2000).toISOString()}],anomalies:[{namespace:"shop",service:"checkout",kind:"latency",from:new Date(3000).toISOString(),to:new Date(5000).toISOString(),title:"Slow",severity:"bad"}]}; + const got=withAnnotations(option,panel,result,annotations,{service:"checkout"},chartThemeFor(false)); + const series=(got.series as {markLine:{data:unknown[]};markArea:{data:unknown[]}}[])[0];expect(series.markLine.data).toHaveLength(2);expect(series.markArea.data).toHaveLength(1); + }); +}); +``` +```bash +rtk proxy sh -c 'cd ui/host && bun run test src/dashboards/annotation-refresh.test.tsx src/dashboards/annotation-markers.test.tsx' +``` + +- [ ] **Step 2: Implement one refresh bundle, hook integration and matching markers** + +Use Task 7's existing ColumnFormat and options.columns mirrors. Add TS mirror fields (`options.split?:"deploy"`, `frame.note?:string`, `annotation_scope?:{services:{namespace:string;service:string}[];namespace_scoped?:boolean;limited?:boolean}`, `annotation_error?:string`). Define these pure types in ui/panels/annotations.ts and import them in api.ts: + +```ts +export type AnnotationBody={from:string;to:string;services?:string[];namespace?:string}; +export type Deploy={namespace:string;service:string;version:string;at:string}; +export type Anomaly={namespace:string;service:string;kind:string;from:string;to:string;title:string;severity:string}; +export type AnnotationsResponse={deploys:Deploy[];anomalies:Anomaly[];truncated?:boolean}; +``` + +Append the API client: + +```ts +export const queryAnnotations=(body:AnnotationBody,signal?:AbortSignal)=>request("/api/annotations",{method:"POST",json:body,signal}); +``` + +Create refresh.ts: + +```ts +import {queryAnnotations,queryPanels,type QueryBody} from "./api"; +import type {AnnotationsResponse} from "../../../panels/annotations"; +export async function refreshDashboard(body:QueryBody,signal?:AbortSignal){ + const results=await queryPanels(body,signal); + const windows=results.filter(r=>r.from_ms!==undefined&&r.to_ms!==undefined&&r.from_msr.from_ms!)),to=Math.max(...windows.map(r=>r.to_ms!)); + try{ + const annotations:AnnotationsResponse=await queryAnnotations({from:new Date(from).toISOString(),to:new Date(to).toISOString()},signal); + return {results,annotations}; + }catch(error){if(signal?.aborted)throw error;return {results,annotation_error:error instanceof Error?error.message:"Annotations unavailable"};} +} +``` + +Use the union of windows once, with no service restriction: every panel still filters the returned records to its own scope. This avoids a global service variable incorrectly suppressing annotations for panels that use a different service. Request returns at most 1000 deploys and 1000 anomalies. Extend Task 1's Request range validation to `430*24*time.Hour` (400-day maximum shift plus the 30-day maximum panel range); the retained history and output limits remain unchanged. Change its ErrRequest message accordingly. This permits shifted windows in one S8 request without extending stored history. Set ErrRequest to `annotations need a positive range of at most 430 days and at most 100 services`. + +Append these native-engine Go tests to `internal/query/annotations_test.go` (add `errors` to its imports; reuse Task 1's versionEngine): + +```go +func TestM2AnnotationWidenedRangeAccepted(t *testing.T) { + d, _ := versionEngine(t) + from := time.Date(2026, 10, 1, 0, 0, 0, 0, time.UTC) + for _, days := range []int{31, 430} { + got, err := annotations.New(d).Read(t.Context(), annotations.Request{From: from, To: from.Add(time.Duration(days)*24*time.Hour)}) + if err != nil || len(got.Deploys) != 0 || len(got.Anomalies) != 0 { + t.Fatalf("%d-day range: %+v %v", days, got, err) + } + } +} + +func TestM2AnnotationWidenedRangeRejected(t *testing.T) { + d, _ := versionEngine(t) + from := time.Date(2026, 10, 1, 0, 0, 0, 0, time.UTC) + _, err := annotations.New(d).Read(t.Context(), annotations.Request{From: from, To: from.Add(430*24*time.Hour + time.Nanosecond)}) + const want = "annotations need a positive range of at most 430 days and at most 100 services" + if !errors.Is(err, annotations.ErrRequest) || err.Error() != want { + t.Fatalf("range just over 430 days: want ErrRequest %q, got %v", want, err) + } +} +``` + +Run `rtk just test ./internal/query/... -run '"TestM2AnnotationWidenedRange"'` before widening the validation to prove failure, then rerun it after the change to prove pass. + +In use-panel-results.ts import refreshDashboard. Replace queryPanels in queryFn with refreshDashboard. Keep query's payload as a bundle; in every snapshot `merge` invocation and in panelError lookup use `query.data?.results` in place of query.data. Return `annotations: query.isPlaceholderData ? undefined : query.data?.annotations` and `annotationError: query.isPlaceholderData ? undefined : query.data?.annotation_error` beside its existing results. Do not change query keys, visibility or background polling. Add `annotations:spec.annotations` to panelContent so switching the flags changes refresh input. Manual refetch and interval use the same queryFn; annotation failure never discards finished panels. + +Create `ui/host/src/dashboards/use-panel-results.test.tsx`, an integration test of the real hook with React Query and the real refreshDashboard (only HTTP clients are mocked): + +```tsx +import {act} from "react"; +import {createRoot} from "react-dom/client"; +import {QueryClient,QueryClientProvider} from "@tanstack/react-query"; +import {expect,it,vi} from "vitest"; +import {usePanelResults} from "./use-panel-results"; +import type {DashboardSpec} from "../../../panels/types"; +const wire=vi.hoisted(()=>({panels:vi.fn(),annotations:vi.fn()})); +vi.mock("./api",()=>({queryPanels:wire.panels,queryAnnotations:wire.annotations})); +it("S8 integrates one annotation request into every 20-panel manual refresh",async()=>{ + const spec:DashboardSpec={version:1,name:"S8",time:{range:"1h"},panels:Array.from({length:20},(_,i)=>({id:`p_${i}`,title:`P ${i}`,viz:"timeseries",query:{from:"spans",measures:["count()"]}}))}; + wire.panels.mockResolvedValue(spec.panels.map(p=>({id:p.id,status:"ok",elapsed_ms:1,from_ms:1000,to_ms:2000,frame:{columns:[{name:"time",type:"time",role:"time"},{name:"count",type:"number",role:"measure"}],values:[[1000],[1]],rows:1}})));wire.annotations.mockResolvedValue({deploys:[],anomalies:[]}); + const client=new QueryClient({defaultOptions:{queries:{retry:false}}});const node=document.createElement("div");document.body.append(node);const root=createRoot(node);let current:ReturnType; + function Host(){current=usePanelResults({dashboardId:"d",version:1,spec,time:spec.time,vars:{},compare:false,widths:{},visible:spec.panels.map(p=>p.id),refresh:"off"});return null;} + await act(async()=>{root.render();}); + async function settled(expected:number){const until=Date.now()+2000;while((wire.annotations.mock.calls.length{await new Promise(resolve=>setTimeout(resolve,10));});}expect(current!.fetching).toBe(false);expect(wire.panels).toHaveBeenCalledTimes(expected);expect(wire.annotations).toHaveBeenCalledTimes(expected);expect(current!.results.size).toBe(20);} + await settled(1);for(let i=2;i<=4;i++){await act(async()=>current!.refetch());await settled(i);} + wire.annotations.mockRejectedValueOnce(new Error("Unavailable"));await act(async()=>current!.refetch());await settled(5);expect(current!.annotationError).toBe("Unavailable");expect(current!.results.get("p_0")?.status).toBe("ok"); + await act(async()=>root.unmount());client.clear();node.remove(); +}); +``` + +Complete ui/panels/annotations.ts after its types: + +```ts +import type {ChartTheme} from "./compile"; +import type {Panel,PanelResult,VarValue} from "./types"; +export function withAnnotations(option:Record,panel:Panel,result:PanelResult,annotations:AnnotationsResponse,_vars:Record,theme:ChartTheme):Record{ + if(!["timeseries","heatmap","state_timeline"].includes(panel.viz))return option; + const scope=result.annotation_scope; + if(result.annotation_error)return option; + const matches=(a:{service:string;namespace:string})=>!scope||scope.services.some(s=>s.service===a.service&&(s.namespace===a.namespace||a.namespace===""&&!scope.namespace_scoped)); + const from=result.from_ms??-Infinity,to=result.to_ms??Infinity; + const deploys=annotations.deploys.filter(matches).filter(a=>Date.parse(a.at)>=from&&Date.parse(a.at)({xAxis:Date.parse(a.at),name:`${a.service} ${a.version}`,label:{formatter:`${a.service} ${a.version}`,color:theme.muted},lineStyle:{type:"dashed",color:theme.muted,width:1},tooltip:{formatter:()=>`${a.service} · ${a.version} · ${a.at}`}})); + const anomalies=annotations.anomalies.filter(matches).filter(a=>Date.parse(a.to)>from&&Date.parse(a.from)[{xAxis:Math.max(from,Date.parse(a.from)),name:a.title,itemStyle:{color:a.severity==="bad"?theme.status.bad:theme.status.warn,opacity:.08},label:{show:false},tooltip:{formatter:()=>`${a.service} · ${a.title} · ${a.severity}`}}, {xAxis:Math.min(to,Date.parse(a.to))}]); + const series=(option.series??[]) as Record[]; + if(!series.length)return option; + return {...option,tooltip:{...(option.tooltip as Record??{}),renderMode:"richText"},series:series.map((s,i)=>{ + if(i!==0)return s;const markLine=(s.markLine??{}) as {data?:unknown[]};const markArea=(s.markArea??{}) as {data?:unknown[]}; + return {...s,markLine:{...markLine,silent:false,symbol:["none","none"],data:[...(markLine.data??[]),...deploys]},markArea:{...markArea,silent:false,data:[...(markArea.data??[]),...anomalies]}}; + })}; +} +``` + +Add MarkAreaComponent to EChartCanvas registration and mocks. Extend AnalysisProps, Viz, PanelCard and GridProps with `annotations?:AnnotationsResponse; vars?:Record` where needed; GridProps already has vars. Thread `data.annotations` from Loaded through PanelGrid/card/Viz to the time compilers. In TimeseriesViz and AnalysisChart's useMemo, wrap their options with withAnnotations when supplied, and include annotations/vars in their dependencies. Respect dashboard flags by passing `{...data.annotations,deploys:spec.annotations?.deploys===false?[]:data.annotations.deploys,anomalies:spec.annotations?.anomalies===false?[]:data.annotations.anomalies}` from Loaded, memoized on those inputs. + +Render `data.annotationError` as an Alert with title "Annotations unavailable", and `data.annotations?.truncated` as "Annotation history is limited." in the page header. Add this exact footer after the existing stale/truncated footer in PanelCard: + +```tsx +{result?.frame?.note&&{result.frame.note}} +{result?.annotation_error&&{result.annotation_error}} +{result?.annotation_scope?.limited&&Annotation service scope is limited.} +``` + +This exposes missing-deploy fallback and bounded matching. + +- [ ] **Step 3: Run to see pass and review** + +```bash +rtk just test ./internal/panel/... ./internal/query/... ./internal/annotations/... ./internal/api/... +rtk proxy sh -c 'cd ui/host && bun run test' +rtk proxy sh -c 'cd ui/host && bun run lint' +rtk just ui +``` + +Expected: all owning regression and integration tests pass. + +Before the controller commit, format all Go changes: + +```bash +rtk just fmt +``` + +- [ ] **Step 4: Commit (controller)** + +```bash +rtk git add internal/annotations/service.go internal/query/annotations_test.go ui/panels ui/host/src/dashboards internal/ui/dist internal/mcp/apps +rtk git commit -m "feat(ui): share annotations across dashboard refreshes" +``` + +--- + +### Task 13: Table column formats, executor trends and stat sparkline + +**Files:** Create `internal/panel/table_trends.go`, `table_trends_test.go`, `ui/panels/column-formats.ts`, `ui/host/src/dashboards/table-formats.test.tsx`; modify `internal/panel/frame.go`, `exec.go`, `deploy_split.go`; `ui/panels/types.ts` and dashboard table/stat/index/grid/panel-card; generated embedded bundles. + +**Interfaces:** Frame.Trends and attachTableTrends produce bounded per-row numeric-measure series. The seven formats consume ColumnFormat from Task 7; numeric statuses use thresholds and direction. Stat totals and trends preserve the same panel window. + +- [ ] **Step 1: Write failing format and executor tests** + +Create `ui/host/src/dashboards/table-formats.test.tsx`: + +```tsx +import {describe,expect,it} from "vitest"; +import {columnDisplay} from "../../../panels/column-formats"; +import {chartThemeFor} from "../../../panels/compile"; +import {sparkline,statValue} from "../../../panels/frame"; +import type {Panel,PanelResult} from "../../../panels/types"; +const panel:Panel={id:"p",title:"P",viz:"timeseries",query:{from:"spans",where:["service = $service"],measures:["count()"]}}; +const result:PanelResult={id:"p",status:"ok",elapsed_ms:1,from_ms:0,to_ms:10000,annotation_scope:{services:[{namespace:"shop",service:"checkout"}]}}; +describe("annotations and formats",()=>{ + it("formats every column type and preserves whole-window stats",()=>{ + expect(columnDisplay({field:"n",format:"bar"},3,6)).toEqual({kind:"bar",text:"3",fraction:.5}); + expect(columnDisplay({field:"state",format:"status"},"bad",0).kind).toBe("status"); + const graded:Panel={id:"p",title:"P",viz:"table",thresholds:[{value:5,status:"warn"},{value:10,status:"bad"}],better:"lower"}; + expect(columnDisplay({field:"n",format:"status"},12,0,graded).status).toBe("bad"); + expect(columnDisplay({field:"n",format:"status"},2,0,graded).status).toBe("ok"); + expect(columnDisplay({field:"n",format:"status"},2,0,{...graded,better:"higher"}).status).toBe("bad"); + expect(columnDisplay({field:"n",format:"sparkline"},42,0,graded,undefined,[1,null,3]).points).toEqual([1,null,3]); + expect(columnDisplay({field:"trend",format:"sparkline"},"[1,null,3]",0).points).toEqual([1,null,3]); + expect(columnDisplay({field:"n",format:"sparkline"},42,0).unsupported).toBe("Sparkline requires an array column"); + expect(columnDisplay({field:"trace_id",format:"trace_link"},"abc",0).kind).toBe("trace_link"); + expect(columnDisplay({field:"service",format:"service_link",variable:"service"},"checkout",0).kind).toBe("service_link"); + expect(columnDisplay({field:"body_template",format:"log_template"},"failed <*>",0).text).toBe("failed <*>"); + const frame={columns:[{name:"time",type:"time" as const,role:"time" as const},{name:"count",type:"number" as const,role:"measure" as const}],values:[[0,1],[40,2]],rows:2,totals:[null,42]}; + expect(statValue({...panel,viz:"stat"},frame)).toBe(42);expect(sparkline(frame)).toEqual([40,2]); + }); +}); +``` +Create the complete table_trends_test.go shown in Step 2 before its implementation. + +```bash +rtk just test ./internal/panel/... -run '"TestM2StructuredTableSparkline"' +rtk proxy sh -c 'cd ui/host && bun run test src/dashboards/table-formats.test.tsx' +``` + +- [ ] **Step 2: Attach bounded measure trends and render formats** + +Add `Trends map[string][][]any json:"trends,omitempty"` to Go Frame, with TypeScript mirror `trends?:Record`. Structured table sparklines refer to numeric measure columns. In validateDisplayOptions, build a separate measure alias set from parseMeasures and reject a sparkline format not in that set: + +```go +if c.Format == "sparkline" { + measureAliases := map[string]bool{} + for _, m := range parseMeasures(sig, p.Query.Measures, "", &ignored) { + measureAliases[m.Alias] = true + } + if !measureAliases[c.Field] { + problems.addHint(path+".options.columns", "structured sparklines require a measure column", "choose a measure field; the executor attaches its trend") + } +} + +``` + +Insert this inside the existing p.Query branch after parseMeasures and before the column-existence check. Do not require the main cell to contain an array. SQL tables may use described JSON array columns; scalar SQL cells show an explicit unsupported-format note. + +Reuse Task 5’s alignedBucketMillis helper and matching Unix epoch SQL origin. + +Create `internal/panel/table_trends.go`: + +```go +package panel + +import ( + "context" + "encoding/json" + "fmt" + "github.com/labstack/fanout/internal/queryrows" + "strings" + "time" +) + +func trendKey(values []string) string { raw, _ := json.Marshal(values); return string(raw) } +func (e *Executor) attachTableTrends(ctx context.Context, p *Panel, checked *Checked, scope Scope, f *Frame) error { + if p.Viz != "table" || p.Query == nil || p.Options == nil || f == nil || f.Rows == 0 { + return nil + } + wanted := map[string]bool{} + for _, format := range p.Options.Columns { + if format.Format == "sparkline" { + wanted[format.Field] = true + } + } + if len(wanted) == 0 { + return nil + } + sig, _ := lookupSignal(p.Query.From) + where, args, err := buildWhere(sig, checked.Filters[p.ID], scope) + if err != nil { + return err + } + dimensions := []FieldRef{} + dimensionSQL := []string{} + indices := []int{} + for _, by := range p.Query.By { + ref, err := sig.field(by) + if err != nil { + return err + } + dimensions = append(dimensions, ref) + dimensionSQL = append(dimensionSQL, "coalesce("+ref.stringSQL()+",'')") + index := -1 + for i, c := range f.Columns { + if c.Name == ref.alias() { + index = i + break + } + } + if index < 0 { + return fmt.Errorf("trend dimension missing") + } + indices = append(indices, index) + } + rowKeys := map[string]int{} + tuples := []string{} + for r := 0; r < f.Rows; r++ { + values := []string{} + slots := []string{} + for _, index := range indices { + value, _ := f.Values[index][r].(string) + values = append(values, value) + slots = append(slots, "?") + args = append(args, value) + } + rowKeys[trendKey(values)] = r + if len(slots) > 0 { + tuples = append(tuples, "("+strings.Join(slots, ",")+")") + } + } + if len(dimensionSQL) > 0 { + where += " AND (" + strings.Join(dimensionSQL, ",") + ") IN (" + strings.Join(tuples, ",") + ")" + } + interval := max(time.Minute, AutoInterval(scope.End.Sub(scope.Start), 960)) + for scope.End.Sub(scope.Start)/interval > 239 { + interval *= 2 + } + bucket := fmt.Sprintf("time_bucket(INTERVAL '%d seconds',%s::TIMESTAMP_NS,'1970-01-01'::TIMESTAMP_NS)", int64(interval/time.Second), quoteIdent(sig.time)) + selects := []string{"epoch_ms(" + bucket + ")::BIGINT AS _t"} + groups := []string{bucket} + columns := []Column{{Name: "time", Type: "time", Role: "time"}} + for i, ref := range dimensions { + selects = append(selects, dimensionSQL[i]+" AS "+quoteIdent(ref.alias())) + groups = append(groups, dimensionSQL[i]) + columns = append(columns, Column{Name: ref.alias(), Type: "string", Role: "dimension"}) + } + names := []string{} + for _, m := range checked.Measures[p.ID] { + if wanted[m.Alias] { + selects = append(selects, measureSQL(m, sig, interval.Seconds(), "PARTITION BY "+bucket)+" AS "+quoteIdent(m.Alias)) + columns = append(columns, Column{Name: m.Alias, Type: "number", Role: "measure", Unit: m.Unit}) + names = append(names, m.Alias) + } + } + if len(names) == 0 { + return nil + } + limit := analysisCellLimit / len(columns) + text := "SELECT " + strings.Join(selects, ",") + " FROM " + sig.name + " WHERE " + where + " GROUP BY " + strings.Join(groups, ",") + fmt.Sprintf(" ORDER BY _t DESC LIMIT %d", limit+1) + rows, err := e.engine.QueryContext(queryrows.WithWindow(ctx, queryrows.Window{Start: scope.Start, End: scope.End}), text, args...) + if err != nil { + return err + } + trend, err := scanFrame(rows, columns, limit) + if err != nil { + return err + } + boundAnalysisFrame(trend) + f.Trends = map[string][][]any{} + lo := alignedBucketMillis(scope.Start, interval) + points := int((scope.End.UnixMilli() - lo + interval.Milliseconds() - 1) / interval.Milliseconds()) + points = min(points, 240) + budget := analysisCellLimit + for _, name := range names { + series := make([][]any, f.Rows) + for r := range series { + if budget < points { + f.Truncated = true + continue + } + series[r] = make([]any, points) + budget -= points + } + f.Trends[name] = series + } + for r := 0; r < trend.Rows; r++ { + values := []string{} + for i := range dimensions { + value, _ := trend.Values[i+1][r].(string) + values = append(values, value) + } + row, ok := rowKeys[trendKey(values)] + if !ok { + continue + } + point := int((trend.Values[0][r].(int64) - lo) / interval.Milliseconds()) + if point < 0 || point >= points { + continue + } + for i, name := range names { + if len(f.Trends[name][row]) > point { + f.Trends[name][row][point] = trend.Values[len(dimensions)+1+i][r] + } + } + } + if trend.Truncated { + f.Truncated = true + f.Note = "Table trends are limited by the cell budget." + } + return nil +} +``` + +Call attachTableTrends after the main structured table frame is stored in runPanel, under that panel’s existing deadline. An error leaves the table intact and sets `frame.Note="Table trends unavailable."`. Replace limitBatchFrames in exec.go: row-aligned trends follow main-row truncation, and health/trend points consume the same deterministic request budget. Import slices for sorting the map keys (exec.go already uses slices). + +```go +func limitBatchFrames(results []Result) { + remaining := 200000 + for i := range results { + for _, f := range []*Frame{results[i].Frame, results[i].Previous} { + if f == nil { + continue + } + if len(f.Totals) > remaining { + f.Totals = nil + f.Truncated = true + } + remaining -= len(f.Totals) + rows := f.Rows + if !f.bucketed { + rows = min(rows, maxFrameRows) + } + if len(f.Columns) > 0 { + rows = min(rows, remaining/len(f.Columns)) + } + if rows < f.Rows { + start := 0 + if f.bucketed { + start = f.Rows - rows + for start > 0 && start < f.Rows && f.Values[0][start] == f.Values[0][start-1] { + start++ + } + rows = f.Rows - start + } + for j := range f.Values { + f.Values[j] = f.Values[j][start : start+rows] + } + for name, series := range f.Trends { + f.Trends[name] = series[start : start+rows] + } + f.Rows = rows + f.Truncated = true + } + remaining -= rows * len(f.Columns) + if f.Health != nil { + points := min(len(f.Health.ErrorTrend), remaining) + if points < len(f.Health.ErrorTrend) { + f.Health.ErrorTrend = f.Health.ErrorTrend[len(f.Health.ErrorTrend)-points:] + f.Truncated = true + } + remaining -= points + } + names := make([]string, 0, len(f.Trends)) + for name := range f.Trends { + names = append(names, name) + } + slices.Sort(names) + for _, name := range names { + for row, series := range f.Trends[name] { + if len(series) > remaining { + f.Trends[name][row] = nil + f.Truncated = true + continue + } + remaining -= len(series) + } + } + } + } +} +``` + +The per-table 20,000-point allowance is additional to the main query’s bounded scalar cells and remains subject to the shared request cap. + +Create `internal/panel/table_trends_test.go`: + +```go +package panel + +import ( + "fmt" + "testing" +) + +func TestM2StructuredTableSparklineRejectsDimension(t *testing.T) { + e := newFixtureExecutor(t) + d := Dashboard{Name: "Invalid trend", Panels: []Panel{{ID: "p", Title: "P", Viz: "table", Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service"}}, Options: &Options{Columns: []ColumnFormat{{Field: "service", Format: "sparkline"}}}}}} + Normalize(&d) + _, problems, err := Check(t.Context(), e.engine, &d) + if err != nil { + t.Fatal(err) + } + found := false + for _, problem := range problems { + if problem.Path == "panels[0].options.columns" && problem.Message == "structured sparklines require a measure column" && problem.Hint == "choose a measure field; the executor attaches its trend" { + found = true + } + } + if !found { + t.Fatalf("missing dimension trend validation: %+v", problems) + } +} + +func TestM2StructuredTableSparklineMeasure(t *testing.T) { + e := newFixtureExecutor(t) + d := shopDashboard() + d.Panels = d.Panels[2:3] + d.Panels[0].Viz = "table" + d.Panels[0].Options = &Options{Columns: []ColumnFormat{{Field: "count", Format: "sparkline"}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != "ok" { + t.Fatalf("table: %+v %v", got, err) + } + f := got[0].Frame + series := f.Trends["count"] + if len(series) != f.Rows { + t.Fatalf("row trends: %+v", f) + } + points := 0 + for r, trend := range series { + var total float64 + for _, v := range trend { + points++ + if v != nil { + total += v.(float64) + } + } + if total != f.Values[1][r].(float64) { + t.Fatalf("row %d trend=%v main=%v", r, total, f.Values[1][r]) + } + } + if points > analysisCellLimit { + t.Fatalf("unbounded points=%d", points) + } + results := make([]Result, 20) + for i := range results { + f := newFrame([]Column{{Name: "service", Type: "string", Role: "dimension"}, {Name: "count", Type: "number", Role: "measure"}}) + f.Trends = map[string][][]any{"count": make([][]any, 100)} + for row := 0; row < 100; row++ { + appendPanelRow(f, fmt.Sprintf("service-%d", row), float64(200)) + f.Trends["count"][row] = make([]any, 200) + } + results[i] = Result{ID: fmt.Sprintf("table-%d", i), Status: StatusOK, Frame: f} + } + limitBatchFrames(results) + cells := 0 + for _, r := range results { + if r.Frame == nil { + continue + } + cells += r.Frame.Rows * len(r.Frame.Columns) + for _, rows := range r.Frame.Trends { + for _, trend := range rows { + cells += len(trend) + } + } + } + if cells > 200000 { + t.Fatalf("batch cells=%d", cells) + } +} +``` + + + +Create ui/panels/column-formats.ts: + +```ts +import type {Cell,Unit,Panel,Status} from "./types"; +import {statusFor} from "./thresholds"; +import {formatValue} from "./units"; +import type {ColumnFormat} from "./types"; +export type {ColumnFormat} from "./types"; +export type ColumnDisplay={unsupported?:string;kind:ColumnFormat["format"];text:string;fraction?:number;points?:(number|null)[];variable?:string;status?:Status|null}; +export function columnDisplay(format:ColumnFormat,value:Cell,max:number,panel?:Panel,better?:"lower"|"higher",trend?:(number|null)[]):ColumnDisplay{ + const text=value===null?"—":String(value);const result:ColumnDisplay={kind:format.format,text}; + if(format.format==="unit"||format.format==="bar")result.text=typeof value==="number"?formatValue(format.unit,value):text; + if(format.format==="bar")result.fraction=typeof value==="number"&&max>0?Math.max(0,Math.min(1,value/max)):0; + if(format.format==="status"&&typeof value==="number")result.status=statusFor(Number.isFinite(value)?value:null,panel?.thresholds,panel?.better??better); + if(format.format==="service_link")result.variable=format.variable; + if(format.format==="sparkline"&&trend){result.points=trend.slice(0,240);return result;} + if(format.format==="sparkline"){try{const parsed:unknown=JSON.parse(text);if(Array.isArray(parsed))result.points=parsed.slice(0,240).map(v=>typeof v==="number"&&Number.isFinite(v)?v:null);else result.unsupported="Sparkline requires an array column";}catch{result.unsupported="Sparkline requires an array column";}} + return result; +} +``` + +Export the existing `Sparkline` from stat.tsx and change its SVG from aria-hidden to `role="img" aria-label="Value over this panel's time range"`; retain its gap-preserving path and existing totals/delta handling. Reuse it for table sparkline cells. + +Add a pure `columnDisplay` call to TableViz's cell callback after RowPanel's custom override and before the default branch. Add `onVariable?: (name:string,value:string)=>void` to TableViz and thread it from PanelGrid through PanelCard/Viz. Use this complete rendering helper in table.tsx (imports: Anchor, Badge, Code from Mantine; ReactNode from React; Unit from ui/panels/types; Sparkline from ./stat; columnDisplay/ColumnFormat from ui/panels/column-formats; makeDrill from ../drill-state; all installed dependencies or files created above): + +```tsx +function FormattedCell({format,value,max,panel,better,trend,traceHref,onTrace,onService}:{format:ColumnFormat;value:Cell;max:number;panel:Panel;better?:"lower"|"higher";trend?:(number|null)[];traceHref?:string;onTrace:()=>void;onService:(name:string,value:string)=>void}):ReactNode{ + const display=columnDisplay(format,value,max,panel,better,trend); + switch(display.kind){ + case "unit":return {display.text}; + case "bar":return {display.text}; + case "status":{ + const bad=display.status==="bad"||display.text==="bad"||display.text==="unhealthy"||display.text.includes("ERROR");const warn=display.status==="warn"||display.text==="warn"||display.text==="degraded"||display.text==="WARN"; + return {bad?"◆ ":warn?"■ ":display.status===null||display.text==="—"||display.text==="unknown"?"○ ":"● "}{display.text}; + } + case "sparkline":return display.unsupported?{display.unsupported}:display.points && display.points.filter(p=>p!==null).length>=2?:No trend; + case "trace_link":return traceHref?{if(event.button===0&&!event.ctrlKey&&!event.metaKey&&!event.shiftKey&&!event.altKey){event.preventDefault();event.stopPropagation();onTrace();}}}>{display.text}:{display.text}; + case "service_link":return {event.stopPropagation();if(display.variable&&value!==null)onService(display.variable,display.text);}}>{display.text}; + case "log_template":return {display.text}; + } +} +``` + +Cell call site: + +```tsx +const format=panel.options?.columns?.find(c=>c.field===column.name); +if(format){ + if(format.format==="sparkline"&&!panel.query&&column.type!=="json")return Sparkline requires an array column; + const selection={...model.selection(model.rows[info.row.index]),trace_id:value===null?undefined:String(value)}; + const target=format.format==="trace_link"?makeDrill(panel,result,selection):undefined; + const url=target?new URL(window.location.href):undefined;if(url&&target)url.searchParams.set("drill",JSON.stringify(target)); + return onPoint?.(selection)} onService={(name,value)=>onVariable?.(name,value)}/>; +} +``` + +Keep unknown/null units readable. For SQL sparkline cells, validate the described column is json and the parsed value is an array; otherwise return a status text `Sparkline requires an array column` and show a panel unsupported-format note. Do not silently render scalar SQL values as No trend. Add this complete note immediately below Table in TableViz, before the truncation note: + +```tsx +{!panel.query&&(panel.options?.columns??[]).some(c=>c.format==="sparkline"&&frame.columns.some((column,i)=>column.name===c.field&&(column.type!=="json"||frame.values[i].some(value=>Boolean(columnDisplay(c,value,0).unsupported)))))&&Sparkline requires an array column} +{(panel.options?.columns??[]).some(c=>!frame.columns.some(column=>column.name===c.field))&&Column formats unavailable: {(panel.options?.columns??[]).filter(c=>!frame.columns.some(column=>column.name===c.field)).map(c=>c.field).join(", ")}} +``` + +Include onPoint, onVariable, panel.options.columns and model in the cell-column useMemo dependencies. `trace_link` uses the same onPoint/makeDrill URL path as trace rows; no invented HTTP route. Keep aria summaries and Inspect available. + +- [ ] **Step 3: Run to see pass and review** + +```bash +rtk just test ./internal/panel/... +rtk proxy sh -c 'cd ui/host && bun run test' +rtk proxy sh -c 'cd ui/host && bun run lint' +rtk just ui +``` + +Expected: all owning regression and integration tests pass. + +Regenerate the changed panel/tool contract references, then format all Go changes before the controller commit: + +```bash +rtk just docs-generate +rtk just docs-generate-check +rtk just fmt +``` + +- [ ] **Step 4: Commit (controller)** + +```bash +rtk git add site/src/content/docs/reference internal/panel ui/panels ui/host/src/dashboards internal/ui/dist internal/mcp/apps +rtk git commit -m "feat(panels): attach table trends and render formats" +``` + +--- + +### Task 14: Agent guidance, complete examples and independent evaluation + +**Files:** +- Create: `internal/mcp/panel_examples.go`, `internal/mcp/panel_examples_test.go`, `internal/agent/dashboard_guidance_test.go` +- Modify: `internal/mcp/panels.go`, `internal/mcp/dashboards.go`, `internal/mcp/panels_test.go`, `internal/agent/runtime.go` +- Regenerate: `site/src/content/docs/reference/mcp-tools.mdx` and `site/src/content/docs/reference/http-routes.mdx` with the existing doc generator (the latter includes Task 1/2's routes). +- Controller-only evidence: fresh label directories under `.superpowers/eval/m2-baseline/`, `.superpowers/eval/m2-candidate/`; final report is published by Task 15. No change to `.superpowers/eval/holdout.json` or the harness. + +**Interfaces:** +- Consumes `(*Server).previewPanels(ctx context.Context, request *mcp.CallToolRequest, input PreviewInput) (*mcp.CallToolResult, PreviewOutput, error)`; `PreviewInput{Panels []panel.Panel; Time *panel.Time; Variables []panel.Variable; Vars map[string]string}`; `DescribeTools(ctx context.Context) ([]ToolDoc,error)`; `dashboardTools`' existing create/replace/edit descriptions; `systemPrompt`. +- Produces `const m2SpecGuide string`, `const investigationExample string`, `const paymentExample string`, `const dashboardAnalysisGuidance string`. The two complete dashboards supply two independently executable examples of each of the nine new types. Example 1 additionally exercises all six M1 types, so preview has fifteen-type coverage. +- No new HTTP, MCP or TypeScript interface. Model selection uses the real `FANOUT_AI_PROVIDER=anthropic`, `FANOUT_AI_MODEL=claude-sonnet-5-5` configuration; `--model-label` only labels artifacts. + +- [ ] **Step 1: Controller captures the baseline before any prompt or guide edit** + +Capture the preceding build on an isolated account and fixed replay snapshot before Step 4 edits guidance. Configure FANOUT_AI_PROVIDER=anthropic and FANOUT_AI_MODEL=claude-sonnet-5-5. Inject FANOUT_AI_API_KEY through the controller's secret store, never a command argument or file. Use the harness’s existing cookie jar without printing it. Freeze telemetry and disable refresh for comparisons. Capture the baseline while the existing prompt/guide is still byte-for-byte unchanged: + +```bash +rtk proxy bun .superpowers/eval/eval2.ts --base http://127.0.0.1:7520 --cookies .superpowers/eval/cookies.txt --model-label sonnet-r1 --out .superpowers/eval/m2-baseline --prompts all +rtk proxy bun .superpowers/eval/eval2.ts --base http://127.0.0.1:7520 --cookies .superpowers/eval/cookies.txt --model-label sonnet-r2 --out .superpowers/eval/m2-baseline --prompts all +rtk proxy bun .superpowers/eval/eval2.ts --base http://127.0.0.1:7520 --cookies .superpowers/eval/cookies.txt --model-label sonnet-holdout-r1 --out .superpowers/eval/m2-baseline --prompts-file .superpowers/eval/holdout.json --set holdout +rtk proxy bun .superpowers/eval/eval2.ts --base http://127.0.0.1:7520 --cookies .superpowers/eval/cookies.txt --model-label sonnet-holdout-r2 --out .superpowers/eval/m2-baseline --prompts-file .superpowers/eval/holdout.json --set holdout +``` + +Keep holdout prompts sealed and untouched. These four baseline artifacts must exist before Step 4; missing offline prerequisites block this gate rather than moving it after the prompt edit. + +- [ ] **Step 2: Write failing guide, example and preview tests** + +Create `internal/mcp/panel_examples_test.go`: + +```go +package mcp + +import ( + "encoding/json" + "strings" + "testing" + + "github.com/labstack/fanout/internal/panel" +) + +func TestM2ExamplesAndPreviewCoverFifteenTypes(t *testing.T) { + s := newPanelServer(t) + coverage := map[string]int{} + for _, text := range []string{investigationExample, paymentExample} { + var d panel.Dashboard + if err := json.Unmarshal([]byte(text), &d); err != nil { + t.Fatal(err) + } + if err := s.panels.Validate(t.Context(), &d); err != nil { + t.Fatalf("%s: %v", d.Name, err) + } + _, result, err := s.previewPanels(t.Context(), nil, PreviewInput{Panels: d.Panels, Time: &d.Time, Variables: d.Variables}) + if err != nil { + t.Fatal(err) + } + if len(result.Panels) != len(d.Panels) { + t.Fatalf("preview lost panels: %+v", result) + } + for i, preview := range result.Panels { + if preview.Status != "ok" && preview.Status != "empty" { + t.Fatalf("%s: %+v", d.Panels[i].Viz, preview) + } + if preview.Status == "empty" && preview.Diagnosis == "" { + t.Fatalf("unexplained empty %s", preview.ID) + } + coverage[d.Panels[i].Viz]++ + } + } + if len(coverage) != 15 { + t.Fatalf("type coverage: %+v", coverage) + } + for _, viz := range []string{"heatmap", "histogram", "scatter", "state_timeline", "logs", "log_patterns", "traces", "service_map", "health"} { + if coverage[viz] != 2 { + t.Fatalf("%s has %d examples", viz, coverage[viz]) + } + } +} + +func TestM2DescriptionsExposeAnalysisContract(t *testing.T) { + docs, err := DescribeTools(t.Context()) + if err != nil { + t.Fatal(err) + } + seen := map[string]bool{} + for _, doc := range docs { + fullGuide := doc.Name == "preview_panels" || doc.Name == "create_dashboard" + if !fullGuide { + if !strings.HasSuffix(doc.Name, "_dashboard") && !strings.HasSuffix(doc.Name, "_dashboards") && !strings.HasSuffix(doc.Name, "_panels") && !strings.HasSuffix(doc.Name, "_panel") { + continue + } + seen[doc.Name] = true + if !strings.Contains(doc.Description, "See create_dashboard for the spec guide.") { + t.Errorf("%s omits the spec guide pointer", doc.Name) + } + for _, guide := range []string{baseSpecGuide, m2SpecGuide, investigationExample, paymentExample} { + if strings.Contains(doc.Description, guide) { + t.Errorf("%s duplicates the full guide or examples", doc.Name) + } + } + continue + } + seen[doc.Name] = true + for _, guide := range []string{baseSpecGuide, m2SpecGuide, investigationExample, paymentExample} { + if !strings.Contains(doc.Description, guide) { + t.Errorf("%s omits the full guide or examples", doc.Name) + } + } + for _, term := range []string{"heatmap", "histogram", "scatter", "state_timeline", "logs", "log_patterns", "traces", "service_map", "health", "histogram", "set_variable", "drill", "annotations", "split", "columns", "Checkout investigation", "Payment investigation"} { + if !strings.Contains(doc.Description, term) { + t.Errorf("%s omits %s", doc.Name, term) + } + } + } + for _, name := range []string{"preview_panels", "create_dashboard", "replace_dashboard", "edit_dashboard"} { + if !seen[name] { + t.Fatalf("missing description %s: %+v", name, seen) + } + } + if RequiredToolScope("preview_panels") != "" || RequiredToolScope("create_dashboard") != "dashboard:manage" { + t.Fatal("M1 authorization changed") + } +} +``` + +Create `internal/agent/dashboard_guidance_test.go`: + +```go +package agent + +import ( + "strings" + "testing" +) + +func TestM2DashboardGuidancePreservesIntentAndRequiresPreview(t *testing.T) { + for _, term := range []string{"answer a single factual question with a view instead", "preview_panels", "fix every invalid panel", "get_dashboard first", "edit_dashboard", "heatmap", "histogram", "scatter", "state_timeline", "log_patterns", "service_map", "health", "drill", "annotations", "split", "No data", "single fact"} { + if !strings.Contains(systemPrompt, term) { + t.Errorf("prompt omits %q", term) + } + } +} +``` + +- [ ] **Step 3: Run to see failure** + +```bash +rtk just test ./internal/mcp/... ./internal/agent/... -run '"TestM2Examples|TestM2Descriptions|TestM2DashboardGuidance"' +``` + +Expected: undefined example/guidance constants and missing descriptions. + +- [ ] **Step 4: Implement the full guide and both executable examples** + +Create `internal/mcp/panel_examples.go`: + +```go +package mcp + +const m2SpecGuide = `Analysis types: heatmap uses bucket:auto and histogram:{field:duration_ms,buckets:log2} on spans, or {field:value,buckets:explicit} on metrics with type histogram; histogram has the same distribution input without time bucket and may split by one dimension. Both use count() as the bucket observation weight. Metric histograms default unknown temporality to cumulative: sum per-series last-minus-first counts per bound, clamped at zero on reset. A known delta source declares histogram.temporality:delta and sums its points; format 3 does not store temporality. Scatter requires exactly two aggregate measures with independent units; x_unit describes x and unit describes y and one item by, plus an optional colour by; options.x_scale and options.y_scale are linear or log. State_timeline requires one item by, one measure, bucket:auto and warn/bad thresholds; missing buckets mean unknown. Logs reads logs with no measures/by/bucket, shows redacted bodies and supports options.highlight as a literal search; sort is time or +time. Log_patterns reads logs, measures:[count()], by:[body_template], bucket:auto, limit up to a cap of 50 (default 20); trend sparklines are dense and bounded. Traces reads spans with no measures/by/bucket, sort duration_ms or errors or +start, limit at most 1000. Health and service_map read spans with no measures/by/bucket; their guarded filters support only namespace and service equality, including a single-value variable. They reuse existing service/edge rollups. Use service_map for dependency context, health for service health; neither proves causality. Panel click:{set_variable:service} chooses a declared query/custom variable. Panel drill is traces or logs; structured span panels drill to checked exemplars, structured log panels drill to checked logs. SQL panels do not drill. Panel time:{range:6h,shift:1d} overrides the dashboard window. Dashboard annotations:{deploys:true,anomalies:true} show version transitions and detector findings with one shared request per refresh; a first observed version is not a deploy and an anomaly is not a causal claim. Bar options.split:deploy requires one measure, one by and a single service equality; it compares separately normalized before/since windows at the latest deploy and says when none exists. Table options.columns is an array of {field,format,unit?,variable?}; formats are unit, bar, status, sparkline (executor-attached per-row measure trend for structured tables; JSON numeric arrays for SQL tables), trace_link, service_link (names a declared query/custom variable), log_template. Rows and cells are capped; truncation and No data must be visible. Preview every type and retain explained empty panels when the requested signal is absent. Complete examples follow.` + +const investigationExample = `{"name":"Checkout investigation","description":"A complete fifteen-type overview with checked drills and deploy context.","time":{"range":"1h","refresh":"off"},"annotations":{"deploys":true,"anomalies":true},"variables":[{"name":"service","kind":"custom","options":["checkout","payment"],"default":"checkout"}],"panels":[{"id":"latency_heat","title":"Latency distribution over time","viz":"heatmap","width":6,"query":{"from":"spans","where":["service = $service"],"measures":["count()"],"bucket":"auto","histogram":{"field":"duration_ms","buckets":"log2"}},"unit":"ms","drill":"traces"},{"id":"latency_hist","title":"Latency distribution by operation","viz":"histogram","width":6,"query":{"from":"spans","where":["service = $service"],"measures":["count()"],"by":["operation"],"histogram":{"field":"duration_ms","buckets":"log2"}},"unit":"ms","drill":"traces"},{"id":"items","title":"Operation rows versus tail latency","viz":"scatter","width":6,"query":{"from":"spans","where":["service = $service"],"measures":["count() as rows","p95(duration_ms) as tail_latency"],"by":["operation"]},"options":{"x_scale":"log","y_scale":"linear"},"drill":"traces","x_unit":"count","unit":"ms"},{"id":"states","title":"Operation error states","viz":"state_timeline","width":6,"query":{"from":"spans","where":["service = $service"],"measures":["error_rate()"],"by":["operation"],"bucket":"auto"},"unit":"percent","thresholds":[{"value":1,"status":"warn"},{"value":5,"status":"bad"}],"drill":"traces"},{"id":"log_rows","title":"Recent checkout logs","viz":"logs","width":12,"query":{"from":"logs","where":["service = $service"],"sort":"time","limit":100},"options":{"highlight":"timeout"},"drill":"logs"},{"id":"patterns","title":"Repeated checkout log patterns","viz":"log_patterns","width":6,"query":{"from":"logs","where":["service = $service"],"measures":["count()"],"by":["body_template"],"bucket":"auto","limit":50},"drill":"logs"},{"id":"trace_rows","title":"Slow checkout traces","viz":"traces","width":6,"query":{"from":"spans","where":["service = $service"],"sort":"duration_ms","limit":20},"drill":"traces"},{"id":"map","title":"Shop service calls","viz":"service_map","width":8,"query":{"from":"spans","where":["namespace = 'shop'"]}},{"id":"health","title":"Shop service health","viz":"health","width":4,"query":{"from":"spans","where":["namespace = 'shop'"]}},{"id":"calls","title":"Checkout calls","viz":"stat","width":3,"query":{"from":"spans","where":["service = $service"],"measures":["count()"]},"unit":"count"},{"id":"error_gauge","title":"Checkout error rate","viz":"gauge","width":3,"query":{"from":"spans","where":["service = $service"],"measures":["error_rate()"]},"unit":"percent","min":0,"max":100},{"id":"latency","title":"Checkout p95 latency","viz":"timeseries","width":6,"query":{"from":"spans","where":["service = $service"],"measures":["p95(duration_ms)"],"bucket":"auto"},"unit":"ms","drill":"traces"},{"id":"routes","title":"Calls before and since deploy","viz":"bar","width":6,"query":{"from":"spans","where":["service = $service"],"measures":["rate()"],"by":["operation"]},"options":{"split":"deploy"},"unit":"per_second"},{"id":"operations","title":"Checkout operations","viz":"table","width":6,"query":{"from":"spans","where":["service = $service"],"measures":["count() as calls"],"by":["operation"]},"options":{"columns":[{"field":"calls","format":"bar","unit":"count"}]}},{"id":"notes","title":"How to investigate","viz":"text","width":12,"content":"Select an operation to inspect traces. Deploy markers show observed version changes; shaded intervals show detector findings, not proven causes."}]}` + +const paymentExample = `{"name":"Payment investigation","description":"Independent examples of every new type for the payment service.","time":{"range":"24h","refresh":"1m"},"annotations":{"deploys":true,"anomalies":true},"variables":[{"name":"service","kind":"custom","options":["checkout","payment"],"default":"payment"}],"panels":[{"id":"latency_heat","title":"Payment latency distribution over time","viz":"heatmap","width":6,"query":{"from":"spans","where":["service = $service"],"measures":["count()"],"bucket":"auto","histogram":{"field":"duration_ms","buckets":"log2"}},"unit":"ms","drill":"traces"},{"id":"latency_hist","title":"Payment latency distribution by operation","viz":"histogram","width":6,"query":{"from":"metrics","where":["service = $service","name = 'http.server.request.duration'"],"measures":["count()"],"histogram":{"field":"value","buckets":"explicit"}},"unit":"ms"},{"id":"items","title":"Payment mean versus tail latency","viz":"scatter","width":6,"query":{"from":"spans","where":["service = $service"],"measures":["avg(duration_ms) as mean_latency","p95(duration_ms) as tail_latency"],"by":["operation"]},"options":{"x_scale":"linear","y_scale":"log"},"drill":"traces","x_unit":"ms","unit":"ms"},{"id":"states","title":"Payment operation error states","viz":"state_timeline","width":6,"query":{"from":"spans","where":["service = $service"],"measures":["error_rate()"],"by":["operation"],"bucket":"auto"},"unit":"percent","thresholds":[{"value":1,"status":"warn"},{"value":5,"status":"bad"}],"drill":"traces","time":{"range":"6h"}},{"id":"log_rows","title":"Recent payment logs","viz":"logs","width":12,"query":{"from":"logs","where":["service = $service"],"sort":"time","limit":100},"options":{"highlight":"error"},"drill":"logs"},{"id":"patterns","title":"Repeated payment log patterns","viz":"log_patterns","width":6,"query":{"from":"logs","where":["service = $service"],"measures":["count()"],"by":["body_template"],"bucket":"auto","limit":50},"drill":"logs"},{"id":"trace_rows","title":"Slow payment traces","viz":"traces","width":6,"query":{"from":"spans","where":["service = $service"],"sort":"errors","limit":20},"drill":"traces"},{"id":"map","title":"Shop service calls","viz":"service_map","width":8,"query":{"from":"spans","where":["namespace = 'shop'"]}},{"id":"health","title":"Shop service health","viz":"health","width":4,"query":{"from":"spans","where":["namespace = 'shop'"]}}]}` +``` + +Rename the existing `specGuide` constant in panels.go to `baseSpecGuide` without altering its M1 measure/filter/SQL text. Define this exact combined constant in panel_examples.go: + +```go +const specGuide = baseSpecGuide + " " + m2SpecGuide + " Complete example 1: " + investigationExample + " Complete example 2: " + paymentExample +``` + +Keep the full specGuide and both examples only on `create_dashboard` and `preview_panels`, which already append it. Every other dashboard/panel tool description carries only the one-line pointer `See create_dashboard for the spec guide.` for guidance; preserve its tool-specific description. In particular, append that pointer to `replace_dashboard` and `edit_dashboard` in dashboards.go, never the full specGuide or examples. Keep tool names, annotations, owner propagation, warning collection, and preview's invalid/not_run behavior unchanged. + +In newPanelServer (panels_test.go), add the observability import and call `executor.SetRollupReader(observability.New(duck,duck,30))` after NewExecutor. This is a real reader over fixture tables, not a fake health success. + +In runtime.go append the new constant to the existing raw-string systemPrompt expression: + +```go +const dashboardAnalysisGuidance = ` For analysis dashboards use heatmap for latency changes, histogram for a distribution, scatter for relationships between two item measures, state_timeline for threshold states, logs for individual redacted events, log_patterns for repeated messages and their trends, traces for slow or erroring trace candidates, service_map for dependency context, and health for service health. Use drill on a structured span or log panel when a user needs evidence behind a point; keep its checked filters. Include annotations for change investigations, but distinguish observed deploys and detector findings from proven causes. Use a deploy split for an explicitly scoped before/since comparison and retain its missing-deploy explanation. Keep totals and sparklines on the same panel window. Use table columns formats for readable values and links. No data is missing evidence, not healthy behavior. A definition, explanation, or single fact is an answer intent; do not create or replace a dashboard for it. Preserve every requested facet, preview every new type, and explain absent telemetry without inventing it.` +``` + +The resulting declaration ends with the original raw string followed by ` + dashboardAnalysisGuidance`. Retain all existing factual-question, edit-scope and attached-view guidance. + +- [ ] **Step 5: Run to see pass and regenerate registered documentation** + +```bash +rtk just test ./internal/mcp/... ./internal/agent/... -run '"TestM2Examples|TestM2Descriptions|TestM2DashboardGuidance|TestPreviewPanels|TestDashboardToolScopes"' +rtk just test ./internal/mcp/... ./internal/agent/... ./internal/dashboard/... +rtk just docs-generate +rtk just docs-generate-check +rtk proxy bun .superpowers/eval/mock2.ts --out .superpowers/eval/m2-mock +``` + +A fresh mock output path is mandatory; an existing output is a refusal, not permission to overwrite. Generated API/MCP docs must agree with route classification and fifteen-type schemas. + +- [ ] **Step 6: Controller runs candidate evaluation and compares the captured baseline** + +Run against the candidate after Step 5, using the same model, isolated account, frozen telemetry snapshot and secret runtime injection established in Step 1: + +```bash +rtk proxy bun .superpowers/eval/eval2.ts --base http://127.0.0.1:7520 --cookies .superpowers/eval/cookies.txt --model-label sonnet-r1 --out .superpowers/eval/m2-candidate --prompts all +rtk proxy bun .superpowers/eval/eval2.ts --base http://127.0.0.1:7520 --cookies .superpowers/eval/cookies.txt --model-label sonnet-r2 --out .superpowers/eval/m2-candidate --prompts all +rtk proxy bun .superpowers/eval/eval2.ts --base http://127.0.0.1:7520 --cookies .superpowers/eval/cookies.txt --model-label sonnet-holdout-r1 --out .superpowers/eval/m2-candidate --prompts-file .superpowers/eval/holdout.json --set holdout +rtk proxy bun .superpowers/eval/eval2.ts --base http://127.0.0.1:7520 --cookies .superpowers/eval/cookies.txt --model-label sonnet-holdout-r2 --out .superpowers/eval/m2-candidate --prompts-file .superpowers/eval/holdout.json --set holdout +rtk proxy bun .superpowers/eval/judge.ts --in .superpowers/eval/m2-baseline/sonnet-r1 --in .superpowers/eval/m2-baseline/sonnet-r2 --in .superpowers/eval/m2-baseline/sonnet-holdout-r1 --in .superpowers/eval/m2-baseline/sonnet-holdout-r2 +rtk proxy bun .superpowers/eval/judge.ts --in .superpowers/eval/m2-candidate/sonnet-r1 --in .superpowers/eval/m2-candidate/sonnet-r2 --in .superpowers/eval/m2-candidate/sonnet-holdout-r1 --in .superpowers/eval/m2-candidate/sonnet-holdout-r2 +rtk proxy bun .superpowers/eval/report.ts --in .superpowers/eval/m2-baseline/sonnet-r1 --in .superpowers/eval/m2-baseline/sonnet-r2 --in .superpowers/eval/m2-baseline/sonnet-holdout-r1 --in .superpowers/eval/m2-baseline/sonnet-holdout-r2 --out .superpowers/eval/m2-baseline/comparison.md +rtk proxy bun .superpowers/eval/report.ts --in .superpowers/eval/m2-candidate/sonnet-r1 --in .superpowers/eval/m2-candidate/sonnet-r2 --in .superpowers/eval/m2-candidate/sonnet-holdout-r1 --in .superpowers/eval/m2-candidate/sonnet-holdout-r2 --out .superpowers/eval/m2-candidate/comparison.md +``` + +Inject the harness's existing JUDGE_ANTHROPIC_KEY and JUDGE_OPENAI_KEY only into the judge process through the same secret service. Do not change judge models/rubric. Compare matching sets and repeats: candidate mean S1 and mean intent_accuracy must each be at least their baseline for benchmark and holdout separately; require complete evidence, no unknown validation, and no execution/provider errors. Built-in prompts are the development set. Freeze the candidate before the holdout run; never read holdout prompts to revise the guide. A holdout regression blocks release and is reported; it is not a tuning target. The controller freezes/replays the same snapshot and disables refresh for model comparisons to prevent wall-clock aging from becoming a confounder. + +Before the controller commit, format all Go changes: + +```bash +rtk just fmt +``` + +- [ ] **Step 7: Commit (controller)** + +```bash +rtk git add internal/mcp/panel_examples.go internal/mcp/panel_examples_test.go internal/mcp/panels.go internal/mcp/dashboards.go internal/mcp/panels_test.go internal/agent/runtime.go internal/agent/dashboard_guidance_test.go site/src/content/docs/reference/mcp-tools.mdx site/src/content/docs/reference/http-routes.mdx +rtk git commit -m "feat(agent): teach dashboard analysis types with checked examples" +``` + +--- + +### Task 15: Demo replay, browser evidence and fixes through the owning tests + +**Files:** +- Create: `ui/panels/acceptance.ts`, `ui/host/src/dashboards/m2-acceptance.test.ts`, `docs/benchmarks/2026-10-agent-dashboards-m2.md` +- Create ignored controller helpers: `.superpowers/replay/m2-report.ts`, `.superpowers/replay/m2-browser-evidence.json` (the latter is measured browser output, never a checked-in fixture). +- Modify only when a recorded defect demonstrates the need: the owning implementation/test files from Tasks 1–14, with the exact regression reproduced in those tests before the fix. +- Generated: `internal/ui/dist/**`, `internal/mcp/apps/**` through `just ui`. +- Reuse: `.superpowers/replay/main.go`, `.superpowers/replay/README.md`, `.superpowers/eval/eval2.ts`, `judge.ts`, `report.ts`. No production format-2 reader or fallback. + +**Interfaces:** +- Consumes all fifteen Viz values, Task 12's one-refresh bundle, Task 14's benchmark/holdout summaries, existing replay flags `-dry-run`, `-in`, `-endpoint`, `-signals`, environment `FANOUT_REPLAY_TOKEN`. +- Produces pure TS `BrowserEvidence`, `checkBrowserEvidence(e:BrowserEvidence):string[]`, `browserReport(e:BrowserEvidence):string` with the complete definitions below. Evidence has one row per theme × type, one annotation-call count per completed refresh, and explicit interaction/state results. Missing evidence is a failed gate. +- Browser helper contract: it operates the controller's disposable local instance, uses real demo data and both themes, writes the complete BrowserEvidence JSON plus screenshots under `.superpowers/replay/m2-screenshots/`, and reports defects with a reproducing URL, action, expected/actual result and network/console evidence. It changes no production files and prints no session or ingest secret. + +- [ ] **Step 1: Write failing acceptance tests** + +Create `ui/host/src/dashboards/m2-acceptance.test.ts`: + +```ts +import {describe,expect,it} from "vitest"; +import {browserReport,checkBrowserEvidence,type BrowserEvidence} from "../../../panels/acceptance"; + +const types=["stat","gauge","timeseries","bar","table","text","heatmap","histogram","scatter","state_timeline","logs","log_patterns","traces","service_map","health"]; +const checks=["loading","empty","error","partial","inspect","filter_chip","linked_crosshair","brush_history","panel_time","drill_url","waterfall_logs","cancel_drill","deploy_markers","anomaly_areas","deploy_split","column_formats","stat_sparkline"]; +function fixture():BrowserEvidence{return { + head:"fixture",model:"claude-sonnet-5-5",source:"test fixture only",replay:{spans:60,logs:10,metrics:10,shift_ns:"1000000000"}, + panels:["light","dark"].flatMap(theme=>types.map(viz=>({theme:theme as "light"|"dark",viz,visible:true,aria:true,inspect:true,console_errors:0}))), + refreshes:[{theme:"light",panels:20,panel_calls:1,annotation_calls:1,cells:180000,elapsed_ms:1000},{theme:"dark",panels:20,panel_calls:1,annotation_calls:1,cells:180000,elapsed_ms:1000}], + interactions:checks.map(name=>({name,passed:true,evidence:"isolated test fixture"})), + parity:["heatmap","log_patterns","deploy_markers","drill_drawer","split_bars","table_formats"].map(capability=>({capability,preview_evidence:"isolated preview fixture",m2_evidence:"isolated M2 fixture",gap:"none"})), + screenshots:["light.png","dark.png"],defects:[], + evaluations:["benchmark","holdout"].map(set=>({set: set as "benchmark"|"holdout",baseline_s1:1,candidate_s1:1,baseline_intent:1,candidate_intent:1,errors:0,unchecked:0})), +};} +describe("M2 acceptance evidence",()=>{ + it("accepts complete evidence and renders measured counts",()=>{const e=fixture();expect(checkBrowserEvidence(e)).toEqual([]);const report=browserReport(e);expect(report).toContain("60 spans");expect(report).toContain("S8");expect(report).toContain("holdout");}); + it("rejects annotation fanout, missing themes, oversized frames and regressed intent",()=>{ + const e=fixture();e.refreshes[0].annotation_calls=20;e.refreshes[0].cells=200001;e.panels=e.panels.filter(p=>!(p.theme==="dark"&&p.viz==="health"));e.evaluations[1].candidate_intent=.9; + const errors=checkBrowserEvidence(e).join(" ");expect(errors).toContain("S8");expect(errors).toContain("200000");expect(errors).toContain("dark/health");expect(errors).toContain("holdout intent"); + }); + it("requires S13 comparisons and records capability gaps",()=>{const e=fixture();e.parity[0].gap="heatmap lacks numeric bucket ordering";expect(checkBrowserEvidence(e).join(" ")).toContain("S13 heatmap");expect(browserReport(e)).toContain("heatmap lacks numeric bucket ordering");e.parity=[];expect(checkBrowserEvidence(e).join(" ")).toContain("missing comparison");}); + it("rejects silent empty/error/loading omissions and unresolved defects",()=>{const e=fixture();e.interactions=e.interactions.filter(x=>x.name!=="empty");e.defects=["heatmap did not clear an empty refresh"];expect(checkBrowserEvidence(e).join(" ")).toContain("empty");expect(checkBrowserEvidence(e).join(" ")).toContain("unresolved");}); +}); +``` + +- [ ] **Step 2: Run to see failure** + +```bash +rtk proxy sh -c 'cd ui/host && bun run test src/dashboards/m2-acceptance.test.ts' +``` + +Expected: missing acceptance module. These tests certify the evidence gate, not actual browser performance; actual S8 evidence must come from Step 5. + +- [ ] **Step 3: Implement the evidence gate and report renderer** + +Create `ui/panels/acceptance.ts`: + +```ts +export type BrowserEvidence={ + head:string;model:string;source:string;replay:{spans:number;logs:number;metrics:number;shift_ns:string}; + panels:{theme:"light"|"dark";viz:string;visible:boolean;aria:boolean;inspect:boolean;console_errors:number}[]; + refreshes:{theme:"light"|"dark";panels:number;panel_calls:number;annotation_calls:number;cells:number;elapsed_ms:number}[]; + interactions:{name:string;passed:boolean;evidence:string}[]; + parity:{capability:string;preview_evidence:string;m2_evidence:string;gap:string}[]; + screenshots:string[];defects:string[]; + evaluations:{set:"benchmark"|"holdout";baseline_s1:number;candidate_s1:number;baseline_intent:number;candidate_intent:number;errors:number;unchecked:number}[]; +}; +const types=["stat","gauge","timeseries","bar","table","text","heatmap","histogram","scatter","state_timeline","logs","log_patterns","traces","service_map","health"]; +const checks=["loading","empty","error","partial","inspect","filter_chip","linked_crosshair","brush_history","panel_time","drill_url","waterfall_logs","cancel_drill","deploy_markers","anomaly_areas","deploy_split","column_formats","stat_sparkline"]; +export function checkBrowserEvidence(e:BrowserEvidence):string[]{ + const errors:string[]=[]; + if(!e.head||!e.source||e.model!=="claude-sonnet-5-5")errors.push("missing build/source or incorrect model"); + if(!/^[-]?\d+$/.test(e.replay.shift_ns)||[e.replay.spans,e.replay.logs,e.replay.metrics].some(n=>!Number.isFinite(n)||n<=0))errors.push("replay must contain all three signals and a signed nanosecond shift"); + for(const theme of ["light","dark"] as const)for(const viz of types){const row=e.panels.find(p=>p.theme===theme&&p.viz===viz);if(!row||!row.visible||(viz!=="text"&&(!row.aria||!row.inspect))||row.console_errors!==0)errors.push(`${theme}/${viz}: incomplete rendering/aria/Inspect evidence`);} + for(const theme of ["light","dark"] as const){if(!e.refreshes.some(r=>r.theme===theme&&r.panels>=20))errors.push(`${theme}: no 20-panel refresh`);} + for(const r of e.refreshes){if(r.panel_calls!==1||r.annotation_calls!==1)errors.push(`S8 ${r.theme}: expected one panel call and one annotations call`);if(!Number.isFinite(r.cells)||r.cells<0||r.cells>200000)errors.push("frame exceeds 200000 cells");if(!Number.isFinite(r.elapsed_ms)||r.elapsed_ms<0)errors.push("missing refresh timing evidence");} + for(const name of checks){const row=e.interactions.find(i=>i.name===name);if(!row?.passed||!row.evidence.trim())errors.push(`${name}: missing or failed interaction evidence`);} + for(const set of ["benchmark","holdout"] as const){const row=e.evaluations.find(i=>i.set===set);if(!row){errors.push(`${set}: missing evaluation`);continue;}for(const n of [row.baseline_s1,row.candidate_s1,row.baseline_intent,row.candidate_intent])if(!Number.isFinite(n)||n<0||n>1)errors.push(`${set}: unknown rate`);if(row.candidate_s1p.capability===capability);if(!row?.preview_evidence.trim()||!row.m2_evidence.trim()||!row.gap.trim())errors.push(`S13 ${capability}: missing comparison or gap record`);else if(row.gap!=="none")errors.push(`S13 ${capability}: ${row.gap}`);} + if(e.defects.length)errors.push(`${e.defects.length} unresolved defects`); + if(e.screenshots.length<2)errors.push("missing screenshots"); + return errors; +} +function cell(s:unknown):string{return String(s).replaceAll("|","\\|").replaceAll("\n"," ");} +export function browserReport(e:BrowserEvidence):string{ + const errors=checkBrowserEvidence(e); + return ["# Agent dashboards Milestone 2 verification","",`Build: ${cell(e.head)}. Model: ${cell(e.model)}. Source: ${cell(e.source)}.`,`Status: ${errors.length?"BLOCKED":"PASS"}.`,"",`Replay: ${e.replay.spans} spans, ${e.replay.logs} logs, ${e.replay.metrics} metric points; shift_ns=${e.replay.shift_ns}.`,"","## Browser type coverage","","| Theme | Type | Visible | Aria | Inspect | Console errors |","|---|---|---|---|---|---|",...e.panels.map(p=>`| ${p.theme} | ${cell(p.viz)} | ${p.visible} | ${p.aria} | ${p.inspect} | ${p.console_errors} |`),"","## S8 and bounded refresh","","| Theme | Panels | Panel requests | Annotation requests | Cells | ms |","|---|---:|---:|---:|---:|---:|",...e.refreshes.map(r=>`| ${r.theme} | ${r.panels} | ${r.panel_calls} | ${r.annotation_calls} | ${r.cells} | ${r.elapsed_ms} |`),"","## Interaction evidence","",...e.interactions.map(i=>`- ${cell(i.name)}: ${i.passed?"PASS":"FAIL"}; ${cell(i.evidence)}`),"","## Agent evaluation","","Holdout is never used for tuning. Matching repeats use the same frozen telemetry and account isolation.","","| Set | Baseline S1 | Candidate S1 | Baseline intent | Candidate intent | Errors | Unchecked |","|---|---:|---:|---:|---:|---:|---:|",...e.evaluations.map(r=>`| ${r.set} | ${r.baseline_s1} | ${r.candidate_s1} | ${r.baseline_intent} | ${r.candidate_intent} | ${r.errors} | ${r.unchecked} |`),"","## S13 M2 capability preview comparison","","| Capability | Preview evidence | M2 evidence | Gap |","|---|---|---|---|",...e.parity.map(p=>`| ${cell(p.capability)} | ${cell(p.preview_evidence)} | ${cell(p.m2_evidence)} | ${cell(p.gap)} |`),"","## Screenshots","",...e.screenshots.map(s=>`- ${cell(s)}`),"","## Remaining defects and gates","",...(errors.length?errors.map(s=>`- ${cell(s)}`):["All gates passed against measured evidence."]),""].join("\n"); +} +``` + +Create `.superpowers/replay/m2-report.ts` (Bun's existing runtime, no added package): + +```ts +import {browserReport,checkBrowserEvidence,type BrowserEvidence} from "../../ui/panels/acceptance"; +const input=".superpowers/replay/m2-browser-evidence.json"; +const output="docs/benchmarks/2026-10-agent-dashboards-m2.md"; +const evidence=await Bun.file(input).json() as BrowserEvidence; +await Bun.write(output,browserReport(evidence)); +const errors=checkBrowserEvidence(evidence); +if(errors.length){for(const error of errors)console.error(error);process.exit(1);} +console.log(`Wrote ${output}`); +``` + +This writes the final benchmark document from measured values; do not check in invented successful numbers. A failed gate still writes a reviewable BLOCKED report and exits nonzero. + +- [ ] **Step 4: Controller builds and replays the existing conversion tool** + +The real input directory exists at the replay README's default path. The README currently records missing offline transitive modules (grpc-gateway/v2 v2.29.0 and grpc v1.82.1); the controller must first make those exact modules available in its local cache. Codex does not download dependencies or mutate replay's go.mod/go.sum. Do not accept an unverified prebuilt binary as a successful build. Run from repository root with the sandbox cache settings from Global Constraints: + +```bash +rtk proxy env GOWORK=off go -C .superpowers/replay vet ./... +rtk proxy env GOWORK=off go -C .superpowers/replay build -o replay . +rtk proxy .superpowers/replay/replay -dry-run -in "$SCRATCH/demo-v2" -signals traces,logs,metrics +rtk proxy .superpowers/replay/replay -in "$SCRATCH/demo-v2" -endpoint http://127.0.0.1:7520 -signals traces,logs,metrics +``` + +Controller starts a disposable Fanout instance at its actual unified HTTP/OTLP address :7520 and injects FANOUT_REPLAY_TOKEN through the controller's secret store. Capture dry-run counts, successful replay counts, source maximum, target instant and signed shift; ensure counts agree and all three signals exist. A partial replay is a failed run: start another disposable data directory before retrying because the converter has no deduplication. Production still accepts only batch format 3; the independent tool converts format 2 into OTLP. Wait for the rollup cycle to publish service, edge and version contributions before the browser check; log the observed watermark/readiness, not a guessed sleep. + +- [ ] **Step 5: Controller delegates the browser check and collects actual evidence** + +Give a browser helper this exact work order after the implementation tests pass: + +> Use the controller's disposable, authenticated http://127.0.0.1:7520 instance. Create the two Task 14 example dashboards through the existing dashboard UI/API. Inspect the fifteen-type dashboard with a 24h window in light and dark themes, including all nine new types and all six M1 types. Create a 20-panel copy by adding five independent timeseries panels through edit_dashboard; keep IDs unique and keep all fifteen originals. Capture screenshots under .superpowers/replay/m2-screenshots/ and record the actual saved spec and build HEAD. For each non-text type open Inspect and verify the visible frame and accessible summary; verify text content directly. Capture console errors for all types. Intercept/delay the existing panels response to see loading, replace individual results with empty/error/partial frames using browser network interception, then remove interception and prove recovery; no production data mutation. Check visible empty diagnosis, safe error text, retained partial/truncated data and loading indicators for every new type. Click a real grouped value and remove its chip; confirm $vars and panels change together. Move the linked crosshair across timeseries/heatmap/state_timeline, unmount/remount panels and confirm no leaked group. Brush once and verify exactly one pushed URL range and one Back operation restoring the old range; a pixel drag must not create a history entry per mousemove. Verify the per-panel range/shift badge and effective window without changing other panels. Open traces and logs drill drawers, reload the drill URL, use Back, select a trace and confirm the shared waterfall and correlated logs. Cancel an in-flight drill by closing and prove it cannot reopen/replace the next drill. Show deploy dashed lines and anomaly shaded areas with matching service filters and safe tooltips; confirm unrelated-service events are absent and unscoped panels include them. Verify before/since rate normalization and the visible no-deploy fallback. Exercise all seven table column formats and stat sparkline gaps/totals. Count requests during at least three settled 20-panel refreshes per theme: exactly one POST /api/panels/query and one POST /api/annotations per refresh (exclude variables/schema/drill traffic, initial StrictMode aborted requests and navigation). Sum returned frame rows × columns and record elapsed time from refresh initiation to visible results. Record every check in BrowserEvidence, with refresh rows for every observed refresh. Write .superpowers/replay/m2-browser-evidence.json only from actual observations; do not mark a blocked check passed. Compare M2 heatmap, log patterns, deploy markers, drill drawer, split bars and table formats with the actual capability preview in light and dark themes (S13). For each, record preview evidence, M2 evidence and a concrete gap or none in BrowserEvidence.parity. Reference the preview source the controller supplies; missing preview access is missing evidence. Record gaps in the results document, fixing in-scope gaps before PASS. Full board recreation and render-time S6 remain M4. Return reproducible defects with URLs, actions and screenshots. Do not alter implementation files or display credentials. + +The controller supplies evaluation aggregates from Task 14's actual summary/report artifacts to the helper's evidence object: matching two-repeat means for S1 and intent_accuracy, per set, plus execution-error and validation_unchecked counts. `source` records the exact replay path, counts and timestamp bounds. Evidence includes where empty/error/partial interception was used so simulated states cannot be mistaken for demo-derived success. S8's denominator is complete refreshes, not individual panels. Refresh timing is descriptive in M2; the S6 render-time gate belongs to M4. + +- [ ] **Step 6: Fix each demonstrated defect and rerun its owning checks** + +For each browser/helper defect, first add the concrete reproducer to the owning test file: annotation query/rollup defects → Task 1 tests; scope/owner bypass → Tasks 2/10; oversized distribution/timeline → Tasks 3/4; empty/partial rendering → Tasks 7–8; duplicate history/group leaks → Task 9; stale drills → Task 10; refresh fanout/event matching → Task 12; deploy math → Task 11; formats → Task 13. Use the same complete fixture forms already supplied in those tasks, with the failing observed value and exact expected result. Run the owning test command to prove failure, make the smallest fix in that owning implementation, prove pass, then have the browser helper repeat the failed scenario and both-theme refresh sampling. Do not replace a measured failure with a narrative explanation. Keep a BLOCKED report if prerequisites or sealed holdout results prevent acceptance. + +Run final checks after recorded defects are resolved: + +```bash +rtk just test ./internal/panel/... ./internal/query/... ./internal/annotations/... ./internal/api/... ./internal/dashboard/... ./internal/observability/... ./internal/intelligence/... ./internal/mcp/... ./internal/agent/... ./internal/db/... +rtk proxy sh -c 'cd ui/host && bun run test' +rtk proxy sh -c 'cd ui/host && bun run lint' +rtk proxy sh -c 'cd ui/apps && bun run lint' +rtk just docs-generate +rtk just docs-generate-check +rtk just ui +rtk proxy bun .superpowers/replay/m2-report.ts +rtk just fmt +``` + +The final `just check` runs after Step 7 commits the task changes and both embedded asset directories; ui-check requires committed embedded assets. + +Expected: all checks pass; report has actual fifteen-type coverage in both themes, bounded 24h payloads, one annotation request per refresh, reproduced drill/history behavior, and separate benchmark/holdout no-regression evidence. No checks are claimed here as executed results; this document is the implementation plan. + +Before the controller commit, format all Go changes: + +```bash +rtk just fmt +``` + +- [ ] **Step 7: Commit (controller)** + +```bash +rtk git add ui/panels/acceptance.ts ui/host/src/dashboards/m2-acceptance.test.ts docs/benchmarks/2026-10-agent-dashboards-m2.md internal/panel internal/query internal/annotations internal/api internal/dashboard internal/observability internal/intelligence internal/mcp internal/agent ui/panels ui/host/src/dashboards internal/api/observability.go internal/api/observability_test.go cmd/fanout/main.go internal/ui/dist internal/mcp/apps site/src/content/docs/reference +rtk git commit -m "test(dashboards): verify milestone two against replay and browser evidence" +``` + +- [ ] **Step 8: Run the final check against committed assets (controller)** + +After Step 6 runs `rtk just ui` and Step 7 commits the task changes, including `internal/ui/dist` and `internal/mcp/apps`, run: + +```bash +rtk just check +``` + +If `just check` forces a fix, make the fix, rerun its owning checks, run `rtk just fmt` and `rtk just ui` as applicable, and make a follow-up controller commit containing the fix and any regenerated assets. Rerun `rtk just check` after that commit and repeat until it passes. Do not run ui-check while Codex leaves assets uncommitted: that recipe requires committed embedded assets and may restore them through git. Every browser task above ends with just ui and includes internal/ui/dist in its commit. diff --git a/docs/superpowers/specs/2026-10-04-agent-dashboards-design.md b/docs/superpowers/specs/2026-10-04-agent-dashboards-design.md index d77d8b68..ef5f0bd9 100644 --- a/docs/superpowers/specs/2026-10-04-agent-dashboards-design.md +++ b/docs/superpowers/specs/2026-10-04-agent-dashboards-design.md @@ -224,7 +224,7 @@ sees from them. | `reduce` | For `stat` and `gauge`: `last`, `mean`, `min`, `max`, `sum`, `window`. Default `window`, which computes the measure over the whole time range rather than reading the last bucket. | | `thresholds` | Up to 4 of `{ value, status, label? }` with `status` in `ok`, `warn`, `bad`. Direction comes from `better`. | | `better` | `lower` or `higher`. Inferred for known measures (latency and errors are `lower`). | -| `options` | Viz-specific, closed per viz: `style` (`line`, `area`, `bars`, `stacked`), `scale` (`linear`, `log`), `top` (series limit, default 8, the rest become Other), `legend` (`auto`, `hidden`), `sort`. | +| `options` | Viz-specific, closed per viz: `style` (`line`, `area`, `bars`, `stacked`), `scale` (`linear`, `log`), `top` (categorical series limit, default/max 6; structured series are chosen worst-first by the panel's measure; the rest fold into Other (N); SQL series past six are left out with a note; noncategorical rows default 8, maximum 20), `legend` (`auto`, `hidden`), `sort`. | | `click` | `{ "set_variable": "" }`: clicking a bar, row or series sets that variable to the clicked value. | | `drill` | `traces` (exemplar traces for the clicked bucket or row) or `logs`. | | `time` | `{ "range": "30d" }` or `{ "shift": "1d" }`, overriding the dashboard range for this panel. | @@ -342,7 +342,11 @@ research describes. pruning applies, then run with named parameters on one connection under the read gate. Each panel has a 10-second timeout. Tables, bars and SQL panels cap at 1000 rows; time series cap at 2000 points per series, and a series - beyond `top` folds into Other. One request holds at most 200,000 cells; + beyond `top` folds into server-computed Other (N) for structured queries. + Series are chosen worst-first by the panel's first measure over the full + window: additive volumes largest first, other measures use explicit/inferred + `better`, ties by row count then name. SQL series past six are left out with + a note. One request holds at most 200,000 cells; past that, time series drop their oldest buckets and say so. When the whole request runs out of time, finished panels still return and the rest report that they did not run. diff --git a/internal/agent/dashboard_guidance_test.go b/internal/agent/dashboard_guidance_test.go new file mode 100644 index 00000000..a739ac41 --- /dev/null +++ b/internal/agent/dashboard_guidance_test.go @@ -0,0 +1,37 @@ +package agent + +import ( + "strings" + "testing" +) + +func TestM2DashboardGuidancePreservesIntentAndRequiresPreview(t *testing.T) { + for _, term := range []string{"answer a single factual question with a view instead", "preview_panels", "fix every invalid panel", "get_dashboard first", "edit_dashboard", "heatmap", "histogram", "scatter", "state_timeline", "log_patterns", "service_map", "health", "drill", "annotations", "split", "distinguish missing data from healthy behavior", "single fact"} { + if !strings.Contains(systemPrompt, term) { + t.Errorf("prompt omits %q", term) + } + } + intent := "Build one whenever the user asks for an overview, asks why something is slow, failing or changing, asks to compare, break down or track telemetry, or asks for anything they would want to look at again; answer a single factual question with a view instead." + if !strings.Contains(systemPrompt, intent) { + t.Error("prompt omits M1 intent-preservation rule") + } +} + +func TestM2DashboardGuidancePinsEvidenceAndIntent(t *testing.T) { + if !strings.HasSuffix(systemPrompt, dashboardAnalysisGuidance) { + t.Fatal("analysis guidance is not appended to the system prompt") + } + for _, sentence := range []string{ + "Use drill for span or log evidence; keep checked filters.", + "Include annotations for change investigations; deploys and detector findings do not prove causes.", + "Use a deploy split for scoped before/since comparisons; retain missing-deploy explanations.", + "A definition, explanation, or single fact is an answer intent; do not create or replace a dashboard for it.", + "Preserve every requested facet and explain absent telemetry without inventing it.", + "use only the types the question needs; do not fill a dashboard with all of them", + "never name schema fields to the user", + } { + if !strings.Contains(dashboardAnalysisGuidance, sentence) { + t.Errorf("guidance omits %q", sentence) + } + } +} diff --git a/internal/agent/runtime.go b/internal/agent/runtime.go index 3e22aa04..ca1af474 100644 --- a/internal/agent/runtime.go +++ b/internal/agent/runtime.go @@ -23,7 +23,9 @@ import ( appid "github.com/labstack/fanout/internal/id" ) -const systemPrompt = `You are Fanout's observability assistant. When a view is attached to your reply it is the picture: never draw diagrams, trees, or charts in text, never use code fences to draw boxes, arrows, or trees, and never add a table or list that restates what an attached view already shows; your prose adds only what the view omits. Use get_observability_overview first for broad health questions, get_intelligence_snapshot for the latest precomputed anomalies and recurring log patterns, get_service_topology for direct dependency edges, get_service_dependencies for bounded upstream or downstream reachability from a service, get_service_performance for activity/latency/endpoints/comparisons, inspect_trace for trace or root-cause inspection, and search_logs for log questions. Treat structured outputs as authoritative. You build and change the user's dashboards. Build one whenever the user asks for an overview, asks why something is slow, failing or changing, asks to compare, break down or track telemetry, or asks for anything they would want to look at again; answer a single factual question with a view instead. To build one, read get_telemetry_schema, draft a complete spec of panels that answer the request, run preview_panels, fix every invalid panel, replace or explain every empty one, and only then call create_dashboard. Cover every part of the request: when a part has no data, keep its panel and say why in the panel description instead of dropping it. Title each panel with exactly what it measures. Prefer a few precise panels over many vague ones: headline stats first, then the time series that explain them, then a table of the worst offenders. After saving, reply in two or three sentences with what the dashboard shows and what stands out. Use filter values exactly as the schema lists them. To change a dashboard, get_dashboard first and use edit_dashboard so unrelated panels stay as they are; replace only when the user asks for a redesign. State the time window you used, distinguish missing data from healthy behavior, and never invent services, metrics, or causal claims. Keep answers concise because attached views provide interactive details. Never expose implementation details to the user: do not mention protocol names, tool names, schemas, query IDs, data-source names, storage engines, providers, or internal execution steps. Refer to attached interactive content simply as a view.` +const systemPrompt = `You are Fanout's observability assistant. When a view is attached to your reply it is the picture: never draw diagrams, trees, or charts in text, never use code fences to draw boxes, arrows, or trees, and never add a table or list that restates what an attached view already shows; your prose adds only what the view omits. Use get_observability_overview first for broad health questions, get_intelligence_snapshot for the latest precomputed anomalies and recurring log patterns, get_service_topology for direct dependency edges, get_service_dependencies for bounded upstream or downstream reachability from a service, get_service_performance for activity/latency/endpoints/comparisons, inspect_trace for trace or root-cause inspection, and search_logs for log questions. Treat structured outputs as authoritative. You build and change the user's dashboards. Build one whenever the user asks for an overview, asks why something is slow, failing or changing, asks to compare, break down or track telemetry, or asks for anything they would want to look at again; answer a single factual question with a view instead. To build one, read get_telemetry_schema, draft a complete spec of panels that answer the request, run preview_panels, fix every invalid panel, replace or explain every empty one, and only then call create_dashboard. Cover every part of the request: when a part has no data, keep its panel and say why in the panel description instead of dropping it. Title each panel with exactly what it measures. Prefer a few precise panels over many vague ones: headline stats first, then the time series that explain them, then a table of the worst offenders. After saving, reply in two or three sentences with what the dashboard shows and what stands out. Use filter values exactly as the schema lists them. To change a dashboard, get_dashboard first and use edit_dashboard so unrelated panels stay as they are; replace only when the user asks for a redesign. State the time window you used, distinguish missing data from healthy behavior, and never invent services, metrics, or causal claims. Keep answers concise because attached views provide interactive details. Never expose implementation details to the user: do not mention protocol names, tool names, schemas, query IDs, data-source names, storage engines, providers, or internal execution steps. Refer to attached interactive content simply as a view.` + dashboardAnalysisGuidance + +const dashboardAnalysisGuidance = ` For analysis dashboards, use only the types the question needs; do not fill a dashboard with all of them. Use heatmap for latency changes, histogram for distributions, scatter for relationships, state_timeline for threshold states, logs for events, log_patterns for repeated messages, traces for slow or erroring traces, service_map for dependencies, and health for service health. Use drill for span or log evidence; keep checked filters. Include annotations for change investigations; deploys and detector findings do not prove causes. Use a deploy split for scoped before/since comparisons; retain missing-deploy explanations. A definition, explanation, or single fact is an answer intent; do not create or replace a dashboard for it. Preserve every requested facet and explain absent telemetry without inventing it. In replies, never name schema fields to the user.` // Error categories used to pick a client-safe RUN_ERROR message; the raw // error (which can include provider response bodies) stays server-side. diff --git a/internal/annotations/service.go b/internal/annotations/service.go new file mode 100644 index 00000000..7efa679b --- /dev/null +++ b/internal/annotations/service.go @@ -0,0 +1,146 @@ +package annotations + +import ( + "context" + "errors" + "strings" + "time" + + "github.com/labstack/fanout/internal/queryrows" +) + +var ErrRequest = errors.New("annotations need a positive range of at most 430 days and at most 100 services") + +type Request struct { + From time.Time `json:"from"` + To time.Time `json:"to"` + Services []string `json:"services,omitempty"` + // An empty Namespace uses the query engine's DefaultNamespace. + Namespace string `json:"namespace,omitempty"` +} +type Deploy struct { + Namespace string `json:"namespace"` + Service string `json:"service"` + Version string `json:"version"` + At time.Time `json:"at"` +} +type Anomaly struct { + Namespace string `json:"namespace"` + Service string `json:"service"` + Kind string `json:"kind"` + From time.Time `json:"from"` + To time.Time `json:"to"` + Title string `json:"title"` + Severity string `json:"severity"` +} +type Response struct { + Deploys []Deploy `json:"deploys"` + Anomalies []Anomaly `json:"anomalies"` + Truncated bool `json:"truncated,omitempty"` +} +type Service struct{ db queryrows.Queryer } + +func New(db queryrows.Queryer) *Service { return &Service{db: db} } +func (s *Service) Read(ctx context.Context, req Request) (Response, error) { + out := Response{Deploys: []Deploy{}, Anomalies: []Anomaly{}} + if req.From.IsZero() || req.To.IsZero() || !req.From.Before(req.To) || req.To.Sub(req.From) > 430*24*time.Hour || len(req.Services) > 100 || len(req.Namespace) > 200 { + return out, ErrRequest + } + if req.Namespace == "" { + if db, ok := s.db.(interface{ DefaultNamespace() string }); ok { + req.Namespace = db.DefaultNamespace() + } + } + suffix := "" + args := []any{req.From.UTC(), req.To.UTC(), req.Namespace, req.Namespace} + if len(req.Services) > 0 { + slots := make([]string, len(req.Services)) + for i, v := range req.Services { + if v == "" || len(v) > 200 { + return out, ErrRequest + } + slots[i] = "?" + args = append(args, v) + } + suffix = " AND service IN (" + strings.Join(slots, ",") + ")" + } + ctx, cancel := context.WithTimeout(ctx, 10*time.Second) + defer cancel() + reader, ok := s.db.(queryrows.ReadTransactioner) + if !ok { + return out, errors.New("annotation reads require a read transaction") + } + err := reader.WithReadTransaction(ctx, func(db queryrows.Queryer) error { + var readErr error + out, readErr = readSnapshot(ctx, db, args, suffix) + return readErr + }) + return out, err +} + +func readSnapshot(ctx context.Context, db queryrows.Queryer, args []any, suffix string) (Response, error) { + out := Response{Deploys: []Deploy{}, Anomalies: []Anomaly{}} + rows, err := db.QueryContext(ctx, `WITH versions AS (SELECT *,row_number() OVER(PARTITION BY namespace,service ORDER BY first_seen,service_version) AS n FROM version_rollup) +SELECT namespace,service,service_version,first_seen::TIMESTAMP_NS FROM versions +WHERE first_seen>=?::TIMESTAMP_NS::TIMESTAMPTZ_NS AND first_seen1`+suffix+` ORDER BY first_seen DESC,namespace,service,service_version LIMIT 1001`, args...) + if err != nil { + return out, err + } + for rows.Next() { + var a Deploy + if err := rows.Scan(&a.Namespace, &a.Service, &a.Version, &a.At); err != nil { + rows.Close() + return out, err + } + a.At = a.At.UTC() + out.Deploys = append(out.Deploys, a) + } + err = rows.Err() + rows.Close() + if err != nil { + return out, err + } + if len(out.Deploys) > 1000 { + out.Deploys = out.Deploys[:1000] + out.Truncated = true + } + rows, err = db.QueryContext(ctx, `SELECT namespace,service,kind,start_time::TIMESTAMP_NS,end_time::TIMESTAMP_NS,title,severity FROM anomaly_log +WHERE end_time>?::TIMESTAMP_NS::TIMESTAMPTZ_NS AND start_time 1000 { + out.Anomalies = out.Anomalies[:1000] + out.Truncated = true + } + rows, err = db.QueryContext(ctx, `SELECT coalesce(max(last_ingested_unix_nano),0) FROM rollup_state WHERE cache_key IN ('version_rollup_v1_limited','version_rollup_v1_history_limited')`) + if err != nil { + return out, err + } + if rows.Next() { + var limited int64 + if err := rows.Scan(&limited); err != nil { + rows.Close() + return out, err + } + out.Truncated = out.Truncated || limited > 0 + } + err = rows.Err() + rows.Close() + return out, err +} diff --git a/internal/annotations/service_test.go b/internal/annotations/service_test.go new file mode 100644 index 00000000..cf2ebea6 --- /dev/null +++ b/internal/annotations/service_test.go @@ -0,0 +1,98 @@ +package annotations + +import ( + "context" + "errors" + "github.com/labstack/fanout/internal/queryrows" + "testing" + "time" +) + +type defaultAnnotationDB struct{ namespaces []string } + +func (*defaultAnnotationDB) DefaultNamespace() string { return "default" } +func (d *defaultAnnotationDB) QueryContext(_ context.Context, _ string, args ...any) (queryrows.Rows, error) { + if len(args) > 0 { + d.namespaces = append(d.namespaces, args[2].(string)) + } + return emptyAnnotationRows{}, nil +} + +type emptyAnnotationRows struct{} + +func (emptyAnnotationRows) Close() error { return nil } +func (emptyAnnotationRows) Columns() ([]string, error) { return nil, nil } +func (emptyAnnotationRows) Err() error { return nil } +func (emptyAnnotationRows) Next() bool { return false } +func (emptyAnnotationRows) Scan(...any) error { return nil } +func TestM2FixEmptyNamespaceUsesDefault(t *testing.T) { + for _, namespace := range []string{"", "explicit"} { + t.Run(namespace, func(t *testing.T) { + db := &defaultAnnotationDB{} + now := time.Now().UTC() + if _, err := New(db).Read(t.Context(), Request{From: now.Add(-time.Hour), To: now, Namespace: namespace}); err != nil { + t.Fatal(err) + } + want := namespace + if want == "" { + want = "default" + } + if len(db.namespaces) != 2 { + t.Fatalf("reads: %v", db.namespaces) + } + for _, got := range db.namespaces { + if got != want { + t.Fatalf("namespace=%q want %q", got, want) + } + } + }) + } +} + +type recordingAnnotationDB struct { + defaultAnnotationDB + inTransaction bool + begins, ends, queries int + failAt int +} + +func (db *recordingAnnotationDB) QueryContext(ctx context.Context, q string, args ...any) (queryrows.Rows, error) { + if !db.inTransaction { + return nil, errors.New("annotation query outside transaction") + } + db.queries++ + if db.queries == db.failAt { + return nil, errors.New("read failed") + } + return db.defaultAnnotationDB.QueryContext(ctx, q, args...) +} +func (db *recordingAnnotationDB) WithReadTransaction(ctx context.Context, read func(queryrows.Queryer) error) error { + db.begins++ + db.inTransaction = true + defer func() { db.inTransaction = false; db.ends++ }() + return read(db) +} +func TestFinalFixAnnotationsReadOneTransaction(t *testing.T) { + now := time.Now().UTC() + for _, failAt := range []int{0, 1, 2, 3} { + db := &recordingAnnotationDB{failAt: failAt} + _, err := New(db).Read(t.Context(), Request{From: now.Add(-time.Hour), To: now}) + if failAt == 0 && err != nil { + t.Fatal(err) + } + if failAt > 0 && err == nil { + t.Fatal("missing read error") + } + want := 3 + if failAt > 0 { + want = failAt + } + if db.begins != 1 || db.ends != 1 || db.queries != want || db.inTransaction { + t.Fatalf("transaction lifecycle: %+v", db) + } + } +} + +func (db *defaultAnnotationDB) WithReadTransaction(_ context.Context, read func(queryrows.Queryer) error) error { + return read(db) +} diff --git a/internal/api/annotations.go b/internal/api/annotations.go new file mode 100644 index 00000000..6921c7de --- /dev/null +++ b/internal/api/annotations.go @@ -0,0 +1,44 @@ +package api + +import ( + "context" + "errors" + "net/http" + + "github.com/labstack/echo/v5" + "github.com/labstack/fanout/internal/annotations" + "github.com/labstack/fanout/internal/query" +) + +type AnnotationReader interface { + Read(context.Context, annotations.Request) (annotations.Response, error) +} + +func RegisterAnnotationRoutes(e *echo.Echo, service AnnotationReader) { + e.POST("/api/annotations", func(c *echo.Context) error { + var req annotations.Request + if err := decodeStrict(c, &req, 32<<10); err != nil { + return err + } + out, err := service.Read(c.Request().Context(), req) + if err != nil { + return annotationError(err) + } + return c.JSON(http.StatusOK, out) + }, RequireCapability(ReadTelemetry)) +} + +func annotationError(err error) error { + switch { + case errors.Is(err, annotations.ErrRequest): + return echo.NewHTTPError(http.StatusBadRequest, err.Error()).Wrap(err) + case errors.Is(err, context.DeadlineExceeded): + return echo.NewHTTPError(http.StatusGatewayTimeout, "Annotations took longer than 10 seconds").Wrap(err) + case errors.Is(err, query.ErrParquetReadWait): + return echo.NewHTTPError(http.StatusServiceUnavailable, "annotations unavailable").Wrap(err) + case errors.Is(err, context.Canceled): + return nil + default: + return echo.NewHTTPError(http.StatusInternalServerError, "annotations unavailable").Wrap(err) + } +} diff --git a/internal/api/annotations_test.go b/internal/api/annotations_test.go new file mode 100644 index 00000000..ae9be371 --- /dev/null +++ b/internal/api/annotations_test.go @@ -0,0 +1,129 @@ +package api + +import ( + "context" + "errors" + "fmt" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "github.com/labstack/echo/v5" + "github.com/labstack/fanout/internal/annotations" + "github.com/labstack/fanout/internal/query" +) + +type annotationFake struct{} + +func (annotationFake) Read(context.Context, annotations.Request) (annotations.Response, error) { + return annotations.Response{Deploys: []annotations.Deploy{}, Anomalies: []annotations.Anomaly{}}, nil +} + +func TestM2FixAnnotationErrorsWrapped(t *testing.T) { + original := errors.New("storage failed") + for _, cause := range []error{annotations.ErrRequest, context.DeadlineExceeded, query.ErrParquetReadWait, original} { + wrapped := fmt.Errorf("annotation query: %w", cause) + got := annotationError(wrapped) + var httpErr *echo.HTTPError + if !errors.As(got, &httpErr) || !errors.Is(got, cause) { + t.Fatalf("cause lost: %v", got) + } + } + if got := annotationError(fmt.Errorf("read: %w", context.Canceled)); got != nil { + t.Fatalf("cancellation: %v", got) + } +} + +type annotationErrorFake struct{ err error } + +func (f annotationErrorFake) Read(context.Context, annotations.Request) (annotations.Response, error) { + return annotations.Response{}, f.err +} +func TestM2FixAnnotationErrorMappings(t *testing.T) { + for _, tc := range []struct { + name string + err error + status int + message string + }{ + {"request", annotations.ErrRequest, 400, annotations.ErrRequest.Error()}, + {"deadline", context.DeadlineExceeded, 504, "Annotations took longer than 10 seconds"}, + {"parquet", query.ErrParquetReadWait, 503, "annotations unavailable"}, + {"canceled", context.Canceled, 200, ""}, + {"unknown", errors.New("storage failed"), 500, "annotations unavailable"}, + } { + t.Run(tc.name, func(t *testing.T) { + s := newTestAuthServer(t) + if _, err := s.users.Create("admin@example.com", "", "admin"); err != nil { + t.Fatal(err) + } + viewer, err := s.users.Create("viewer@example.com", "", "viewer") + if err != nil { + t.Fatal(err) + } + RegisterAnnotationRoutes(s.e, annotationErrorFake{tc.err}) + req := sessionRequest(http.MethodPost, "/api/annotations", strings.NewReader(`{"from":"2026-10-01T12:00:00Z","to":"2026-10-01T13:00:00Z"}`), s.login(t, viewer)) + req.Header.Set("Content-Type", "application/json") + rec := httptest.NewRecorder() + s.e.ServeHTTP(rec, req) + if rec.Code != tc.status || !strings.Contains(rec.Body.String(), tc.message) { + t.Fatalf("%d %s", rec.Code, rec.Body) + } + if tc.name == "canceled" && rec.Body.Len() != 0 { + t.Fatalf("canceled response body: %s", rec.Body) + } + }) + } +} +func TestM2AnnotationRoute(t *testing.T) { + s := newTestAuthServer(t) + _, err := s.users.Create("admin@example.com", "", "admin") + if err != nil { + t.Fatal(err) + } + viewer, err := s.users.Create("viewer@example.com", "", "viewer") + if err != nil { + t.Fatal(err) + } + RegisterAnnotationRoutes(s.e, annotationFake{}) + req := sessionRequest(http.MethodPost, "/api/annotations", strings.NewReader(`{"from":"2026-10-01T12:00:00Z","to":"2026-10-01T13:00:00Z","services":["checkout"]}`), s.login(t, viewer)) + req.Header.Set("Content-Type", "application/json") + rec := httptest.NewRecorder() + s.e.ServeHTTP(rec, req) + if rec.Code != 200 || !strings.Contains(rec.Body.String(), `"deploys":[]`) { + t.Fatalf("%d %s", rec.Code, rec.Body) + } + policy, ok := classifyRoute(http.MethodPost, "/api/annotations") + if !ok || policy.capability != ReadTelemetry { + t.Fatalf("policy: %+v %v", policy, ok) + } + if _, ok := classifyRoute(http.MethodGet, "/api/annotations"); ok { + t.Fatal("GET alias allowed") + } +} + +type invalidAnnotationFake struct{} + +func (invalidAnnotationFake) Read(context.Context, annotations.Request) (annotations.Response, error) { + return annotations.Response{}, annotations.ErrRequest +} +func TestM2AnnotationErrRequest400(t *testing.T) { + s := newTestAuthServer(t) + _, err := s.users.Create("admin@example.com", "", "admin") + if err != nil { + t.Fatal(err) + } + viewer, err := s.users.Create("viewer@example.com", "", "viewer") + if err != nil { + t.Fatal(err) + } + RegisterAnnotationRoutes(s.e, invalidAnnotationFake{}) + req := sessionRequest(http.MethodPost, "/api/annotations", strings.NewReader(`{"from":"2026-10-01T13:00:00Z","to":"2026-10-01T12:00:00Z"}`), s.login(t, viewer)) + req.Header.Set("Content-Type", "application/json") + rec := httptest.NewRecorder() + s.e.ServeHTTP(rec, req) + if rec.Code != http.StatusBadRequest || !strings.Contains(rec.Body.String(), annotations.ErrRequest.Error()) { + t.Fatalf("%d %s", rec.Code, rec.Body) + } +} diff --git a/internal/api/auth_middleware.go b/internal/api/auth_middleware.go index 97f9b3b3..88a1fb37 100644 --- a/internal/api/auth_middleware.go +++ b/internal/api/auth_middleware.go @@ -289,7 +289,7 @@ func classifyRoute(method, path string) (routePolicy, bool) { } case strings.HasPrefix(path, "/api/alerting/rules/"): return routePolicy{kind: routePolicyCapability, capability: ManageAlerts}, unsafe - case path == "/api/panels/query" || path == "/api/variables/resolve": + case path == "/api/panels/query" || path == "/api/panels/exemplars" || path == "/api/variables/resolve" || path == "/api/annotations": return routePolicy{kind: routePolicyCapability, capability: ReadTelemetry}, method == http.MethodPost case path == "/api/telemetry/schema": return routePolicy{kind: routePolicyCapability, capability: ReadTelemetry}, read diff --git a/internal/api/exemplars_fix_test.go b/internal/api/exemplars_fix_test.go new file mode 100644 index 00000000..dfd7e1f0 --- /dev/null +++ b/internal/api/exemplars_fix_test.go @@ -0,0 +1,60 @@ +package api + +import ( + "context" + "errors" + "fmt" + "net/http" + "strings" + "testing" + + "github.com/labstack/fanout/internal/panel" + "github.com/labstack/fanout/internal/query" +) + +type failedExemplars struct { + fakePanels + failure error +} + +func (f *failedExemplars) Exemplars(context.Context, panel.ExemplarRequest) (panel.ExemplarResponse, error) { + return panel.ExemplarResponse{}, f.failure +} + +func TestM2FixExemplarHTTPErrorMapping(t *testing.T) { + for _, tc := range []struct { + name string + err error + status int + message string + }{ + {"problem", panel.Problems{{Path: "panel_id", Message: "missing"}}, 400, "problems"}, + {"deadline", fmt.Errorf("wrapped: %w", context.DeadlineExceeded), 504, "Exemplars took longer than 10 seconds"}, + {"cancel", context.Canceled, 200, ""}, + {"read_wait", fmt.Errorf("wrapped: %w", query.ErrParquetReadWait), 503, "exemplars unavailable"}, + {"internal", errors.New("failure"), 500, "exemplars unavailable"}, + } { + t.Run(tc.name, func(t *testing.T) { + rec := servePanels(t, &failedExemplars{failure: tc.err}, http.MethodPost, "/api/panels/exemplars", `{"dashboard":{"name":"x","panels":[]}}`) + if rec.Code != tc.status || !strings.Contains(rec.Body.String(), tc.message) { + t.Fatalf("%d %s", rec.Code, rec.Body) + } + if tc.name == "cancel" && rec.Body.Len() != 0 { + t.Fatal("cancel wrote body") + } + }) + } +} + +func TestM2FixStrictJSONTrailingData(t *testing.T) { + for _, suffix := range []string{` {}`, ` null`, ` garbage`, strings.Repeat(" ", 512<<10) + `{}`} { + rec := servePanels(t, &fakePanels{}, http.MethodPost, "/api/panels/exemplars", `{"dashboard":{"name":"x","panels":[]}}`+suffix) + if rec.Code != 400 { + t.Fatalf("trailing data accepted: %d", rec.Code) + } + } + rec := servePanels(t, &fakePanels{}, http.MethodPost, "/api/panels/exemplars", `{"dashboard":{"name":"x","panels":[]}}`+" \n\t") + if rec.Code != 200 { + t.Fatalf("whitespace rejected: %d %s", rec.Code, rec.Body) + } +} diff --git a/internal/api/observability.go b/internal/api/observability.go index cd200fe3..35518bba 100644 --- a/internal/api/observability.go +++ b/internal/api/observability.go @@ -22,12 +22,17 @@ type ObservabilityQueries interface { } type ObservabilityHandler struct { - queries ObservabilityQueries - now func() time.Time + queries ObservabilityQueries + now func() time.Time + maxWindow time.Duration } -func NewObservabilityHandler(queries ObservabilityQueries) *ObservabilityHandler { - return &ObservabilityHandler{queries: queries, now: time.Now} +func NewObservabilityHandler(queries ObservabilityQueries, retentionDays int) *ObservabilityHandler { + maximum := 30 * 24 * time.Hour + if retentionDays > 0 { + maximum = time.Duration(retentionDays) * 24 * time.Hour + } + return &ObservabilityHandler{queries: queries, now: time.Now, maxWindow: maximum} } // observabilityDeadline bounds one dashboard query. @@ -149,11 +154,30 @@ func (h *ObservabilityHandler) request(c *echo.Context) (observability.Scope, in limit = parsed } end := h.now().UTC() - return observability.Scope{ - Namespace: c.QueryParam("namespace"), - Start: end.Add(-window), - End: end, - }, limit, nil + start := end.Add(-window) + from, to := strings.TrimSpace(c.QueryParam("from")), strings.TrimSpace(c.QueryParam("to")) + if from != "" || to != "" { + if from == "" || to == "" { + return observability.Scope{}, 0, echo.NewHTTPError(http.StatusBadRequest, "from and to must both be RFC 3339 timestamps") + } + var err error + start, err = time.Parse(time.RFC3339Nano, from) + if err != nil { + return observability.Scope{}, 0, echo.NewHTTPError(http.StatusBadRequest, "from must be RFC 3339") + } + end, err = time.Parse(time.RFC3339Nano, to) + if err != nil { + return observability.Scope{}, 0, echo.NewHTTPError(http.StatusBadRequest, "to must be RFC 3339") + } + maximum := h.maxWindow + if maximum <= 0 { + maximum = 30 * 24 * time.Hour + } + if !start.Before(end) || end.Sub(start) > maximum { + return observability.Scope{}, 0, echo.NewHTTPError(http.StatusBadRequest, "absolute window must be positive and bounded by retention") + } + } + return observability.Scope{Namespace: c.QueryParam("namespace"), Start: start.UTC(), End: end.UTC()}, limit, nil } func (h *ObservabilityHandler) dependencies(c *echo.Context) error { diff --git a/internal/api/observability_test.go b/internal/api/observability_test.go index 4452c736..b5e9d6bc 100644 --- a/internal/api/observability_test.go +++ b/internal/api/observability_test.go @@ -15,6 +15,7 @@ import ( ) type fakeQueries struct { + traceScope observability.Scope overviewScope observability.Scope topologyScope observability.Scope dependencyScope observability.Scope @@ -45,7 +46,8 @@ func (f *fakeQueries) Performance(_ context.Context, _ observability.Scope, _ ob return observability.Result[observability.Performance]{Schema: observability.PerformanceSchema}, nil } -func (f *fakeQueries) Trace(_ context.Context, _ observability.Scope, _, _ string, _ int) (observability.Result[observability.TraceDetail], error) { +func (f *fakeQueries) Trace(_ context.Context, scope observability.Scope, _, _ string, _ int) (observability.Result[observability.TraceDetail], error) { + f.traceScope = scope return observability.Result[observability.TraceDetail]{Schema: observability.TraceSchema}, nil } @@ -60,7 +62,7 @@ func TestOverviewRouteUsesDurationScope(t *testing.T) { }{{"15m", 15 * time.Minute}, {"720h", 30 * 24 * time.Hour}} { t.Run(tt.window, func(t *testing.T) { queries := &fakeQueries{} - h := NewObservabilityHandler(queries) + h := NewObservabilityHandler(queries, 30) h.now = func() time.Time { return time.Date(2026, 7, 20, 12, 0, 0, 0, time.UTC) } e := echo.New() h.Register(e.Group("/api/observability")) @@ -89,7 +91,7 @@ func TestOverviewRouteUsesDurationScope(t *testing.T) { } func TestRouteRejectsInvalidWindow(t *testing.T) { - h := NewObservabilityHandler(&fakeQueries{}) + h := NewObservabilityHandler(&fakeQueries{}, 30) e := echo.New() h.Register(e.Group("/api/observability")) req := httptest.NewRequest(http.MethodGet, "/api/observability/topology?window=forever", nil) @@ -102,7 +104,7 @@ func TestRouteRejectsInvalidWindow(t *testing.T) { func TestDependencyRouteForwardsScopeAndBounds(t *testing.T) { backend := &fakeQueries{} - h := NewObservabilityHandler(backend) + h := NewObservabilityHandler(backend, 30) now := time.Date(2026, 9, 30, 12, 0, 0, 0, time.UTC) h.now = func() time.Time { return now } e := echo.New() @@ -229,3 +231,42 @@ func TestObservabilityHandlersCarryADeadline(t *testing.T) { t.Fatalf("deadline left %s, want a positive value no greater than %s", seen, observabilityDeadline) } } + +func TestM2TraceAbsoluteWindow(t *testing.T) { + queries := &fakeQueries{} + h := NewObservabilityHandler(queries, 7) + now := time.Date(2026, 10, 5, 12, 0, 0, 0, time.UTC) + h.now = func() time.Time { return now } + e := echo.New() + h.Register(e.Group("/api/observability")) + cases := []struct { + query string + code int + }{ + {"?trace_id=abc&from=2026-10-01T12:00:00.123456789Z&to=2026-10-01T13:00:00.123456789Z&window=15m", 200}, + {"?from=2026-10-01T12:00:00Z", 400}, + {"?from=bad&to=2026-10-01T13:00:00Z", 400}, + {"?from=2026-10-01T13:00:00Z&to=2026-10-01T12:00:00Z", 400}, + {"?from=2026-09-01T12:00:00Z&to=2026-10-01T12:00:00Z", 400}, + {"?window=15m", 200}, + } + for _, tc := range cases { + rec := httptest.NewRecorder() + e.ServeHTTP(rec, httptest.NewRequest(http.MethodGet, "/api/observability/trace"+tc.query, nil)) + if rec.Code != tc.code { + t.Fatalf("%s: %d %s", tc.query, rec.Code, rec.Body) + } + if tc.code == 200 { + if tc.query == "?window=15m" { + if !queries.traceScope.End.Equal(now) || queries.traceScope.End.Sub(queries.traceScope.Start) != 15*time.Minute { + t.Fatalf("window changed: %+v", queries.traceScope) + } + } else { + want := time.Date(2026, 10, 1, 12, 0, 0, 123456789, time.UTC) + if !queries.traceScope.Start.Equal(want) || queries.traceScope.End.Sub(want) != time.Hour { + t.Fatalf("captured window lost: %+v", queries.traceScope) + } + } + } + } +} diff --git a/internal/api/panels.go b/internal/api/panels.go index 233bbb24..77c18838 100644 --- a/internal/api/panels.go +++ b/internal/api/panels.go @@ -10,9 +10,11 @@ import ( "github.com/labstack/echo/v5" "github.com/labstack/fanout/internal/panel" + "github.com/labstack/fanout/internal/query" ) type PanelEngine interface { + Exemplars(context.Context, panel.ExemplarRequest) (panel.ExemplarResponse, error) Run(context.Context, panel.RunRequest) ([]panel.Result, error) ResolveVariables(context.Context, panel.ResolveRequest) (map[string][]panel.Option, error) Schema(context.Context, panel.SchemaRequest) (*panel.Schema, error) @@ -28,6 +30,7 @@ func RegisterPanelRoutes(e *echo.Echo, engine PanelEngine) { h := &PanelHandler{engine: engine} read := RequireCapability(ReadTelemetry) e.POST("/api/panels/query", h.query, read) + e.POST("/api/panels/exemplars", h.exemplars, read) e.POST("/api/variables/resolve", h.resolve, read) e.GET("/api/telemetry/schema", h.schema, read) } @@ -88,11 +91,19 @@ func panelError(c *echo.Context, err error, unavailable string) error { // decodeStrict reads one JSON object, rejecting unknown fields and bodies // over limit, so a misspelled field fails loudly instead of being ignored. func decodeStrict(c *echo.Context, value any, limit int64) error { - decoder := json.NewDecoder(io.LimitReader(c.Request().Body, limit)) + reader := &io.LimitedReader{R: c.Request().Body, N: limit + 1} + decoder := json.NewDecoder(reader) decoder.DisallowUnknownFields() if err := decoder.Decode(value); err != nil { return echo.NewHTTPError(http.StatusBadRequest, "invalid request body: "+err.Error()) } + var extra any + if err := decoder.Decode(&extra); err != io.EOF { + return echo.NewHTTPError(http.StatusBadRequest, "invalid request body: trailing data after JSON value") + } + if reader.N <= 0 { + return echo.NewHTTPError(http.StatusBadRequest, "invalid request body: body exceeds limit") + } return nil } @@ -105,3 +116,31 @@ func writeProblems(c *echo.Context, err error) (bool, error) { } return true, c.JSON(http.StatusBadRequest, map[string]any{"message": "The dashboard spec is invalid.", "problems": problems}) } + +func (h *PanelHandler) exemplars(c *echo.Context) error { + var req panel.ExemplarRequest + if err := decodeStrict(c, &req, 512<<10); err != nil { + return err + } + out, err := h.engine.Exemplars(c.Request().Context(), req) + if err != nil { + return exemplarHTTPError(c, err) + } + return c.JSON(http.StatusOK, out) +} + +func exemplarHTTPError(c *echo.Context, err error) error { + if handled, writeErr := writeProblems(c, err); handled { + return writeErr + } + switch { + case errors.Is(err, context.DeadlineExceeded): + return echo.NewHTTPError(http.StatusGatewayTimeout, "Exemplars took longer than 10 seconds").Wrap(err) + case errors.Is(err, context.Canceled): + return nil + case errors.Is(err, query.ErrParquetReadWait): + return echo.NewHTTPError(http.StatusServiceUnavailable, "exemplars unavailable").Wrap(err) + default: + return echo.NewHTTPError(http.StatusInternalServerError, "exemplars unavailable").Wrap(err) + } +} diff --git a/internal/api/panels_test.go b/internal/api/panels_test.go index e22aa71f..339f9526 100644 --- a/internal/api/panels_test.go +++ b/internal/api/panels_test.go @@ -135,3 +135,20 @@ func TestFinalFixPanelBatchHTTPKeepsPartialResults(t *testing.T) { t.Fatalf("partial batch %d %s", rec.Code, rec.Body) } } + +func (f *fakePanels) Exemplars(context.Context, panel.ExemplarRequest) (panel.ExemplarResponse, error) { + return panel.ExemplarResponse{Traces: []panel.Exemplar{}}, nil +} +func TestM2ExemplarRoutePolicy(t *testing.T) { + rec := servePanels(t, &fakePanels{}, http.MethodPost, "/api/panels/exemplars", `{"dashboard":{"name":"Inline","panels":[]},"panel_id":"latency","from":"2026-10-01T12:00:00Z","to":"2026-10-01T12:05:00Z","dimensions":{}}`) + if rec.Code != 200 || !strings.Contains(rec.Body.String(), `"traces":[]`) { + t.Fatalf("%d %s", rec.Code, rec.Body) + } + policy, ok := classifyRoute(http.MethodPost, "/api/panels/exemplars") + if !ok || policy.capability != ReadTelemetry { + t.Fatalf("policy: %+v %v", policy, ok) + } + if _, ok := classifyRoute(http.MethodGet, "/api/panels/exemplars"); ok { + t.Fatal("GET accepted") + } +} diff --git a/internal/dashboard/layout.go b/internal/dashboard/layout.go index 81e0d2f9..6b6b94f9 100644 --- a/internal/dashboard/layout.go +++ b/internal/dashboard/layout.go @@ -32,6 +32,9 @@ func Pack(panels []panel.Panel) { h := heightRows[panels[i].Height] if h == 0 { h = heightRows["m"] + if panels[i].Viz == "service_map" { + h = heightRows["l"] + } } x, y := firstFit(placed, w, h) grid := panel.Grid{X: x, Y: y, W: w, H: h} @@ -95,6 +98,9 @@ func PackMissing(panels []panel.Panel) { h := heightRows[panels[i].Height] if h == 0 { h = heightRows["m"] + if panels[i].Viz == "service_map" { + h = heightRows["l"] + } } x, y := firstFit(placed, w, h) g := panel.Grid{X: x, Y: y, W: w, H: h} diff --git a/internal/dashboard/layout_test.go b/internal/dashboard/layout_test.go index 18b4904f..63598e96 100644 --- a/internal/dashboard/layout_test.go +++ b/internal/dashboard/layout_test.go @@ -7,6 +7,16 @@ import ( "github.com/labstack/fanout/internal/panel" ) +func TestServiceMapDefaultLayoutLarge(t *testing.T) { + for _, pack := range []func([]panel.Panel){Pack, PackMissing} { + panels := []panel.Panel{{ID: "map", Viz: "service_map", Width: 12}} + pack(panels) + if panels[0].Grid.H != 10 { + t.Fatalf("service map rows=%d", panels[0].Grid.H) + } + } +} + func TestPackFillsGapsWithoutStretching(t *testing.T) { panels := []panel.Panel{ {ID: "a", Width: 3, Height: "s"}, diff --git a/internal/intelligence/annotations_test.go b/internal/intelligence/annotations_test.go new file mode 100644 index 00000000..88d7eea5 --- /dev/null +++ b/internal/intelligence/annotations_test.go @@ -0,0 +1,136 @@ +package intelligence + +import ( + "context" + "github.com/labstack/fanout/internal/annotations" + "github.com/labstack/fanout/internal/config" + "github.com/labstack/fanout/internal/query" + "github.com/labstack/fanout/internal/query/writegate" + telemetrystore "github.com/labstack/fanout/internal/telemetry/store" + "testing" + "time" +) + +func TestM2FixDetectorPublishesWhilePersistenceBlocked(t *testing.T) { + cfg := config.Config{DataDir: t.TempDir(), DuckDBMemory: "256MB", DuckDBThreads: 2, DuckDBMaxConns: 2, RetentionDays: 30} + repo, err := telemetrystore.Open(cfg.TelemetryDir()) + if err != nil { + t.Fatal(err) + } + defer repo.Close() + duck, err := query.NewDuck(t.Context(), cfg, repo) + if err != nil { + t.Fatal(err) + } + defer duck.Close() + unlock := duck.WriteGate().Lock(writegate.WriteRollupService) + defer unlock() + d := NewDetector(duck, DefaultDetectorConfig()) + ctx, cancel := context.WithCancel(t.Context()) + defer cancel() + done := make(chan struct{}) + go func() { defer close(done); d.runCheck(ctx) }() + select { + case <-done: + case <-time.After(500 * time.Millisecond): + cancel() + <-done + t.Fatal("persistence blocked snapshot publication") + } + if d.LatestSnapshot() == nil { + t.Fatal("missing snapshot") + } +} + +func TestM2FixDetectorCoalescesPendingPersistence(t *testing.T) { + d := NewDetector(&query.Duck{}, DefaultDetectorConfig()) + ctx, cancel := context.WithCancel(t.Context()) + defer cancel() + entered := make(chan time.Time, 3) + release := make(chan struct{}) + done := make(chan struct{}) + go func() { + defer close(done) + d.persistAnnotations(ctx, func(ctx context.Context, _ []annotations.Anomaly, at time.Time) error { + entered <- at + select { + case <-release: + return nil + case <-ctx.Done(): + return ctx.Err() + } + }) + }() + defer func() { cancel(); <-done }() + now := time.Now().UTC() + publish := func(at time.Time) { d.publishSnapshot(IntelligenceSnapshot{GeneratedAt: at}) } + publish(now) + select { + case at := <-entered: + if !at.Equal(now) { + t.Fatal(at) + } + case <-time.After(time.Second): + t.Fatal("worker did not start") + } + published := make(chan struct{}) + go func() { publish(now.Add(time.Minute)); publish(now.Add(2 * time.Minute)); close(published) }() + select { + case <-published: + case <-time.After(time.Second): + t.Fatal("blocked persistence delayed publication") + } + if got := d.LatestSnapshot(); got == nil || !got.GeneratedAt.Equal(now.Add(2*time.Minute)) { + t.Fatalf("snapshot: %+v", got) + } + if len(d.annotationBatches) != 1 { + t.Fatalf("pending batches=%d", len(d.annotationBatches)) + } + close(release) + select { + case at := <-entered: + if !at.Equal(now.Add(2 * time.Minute)) { + t.Fatalf("pending batch was not replaced: %v", at) + } + case <-time.After(time.Second): + t.Fatal("pending batch not persisted") + } + select { + case at := <-entered: + t.Fatalf("extra batch persisted: %v", at) + case <-time.After(20 * time.Millisecond): + } +} + +func TestM2DetectorAnnotationMapping(t *testing.T) { + cfg := config.Config{DataDir: t.TempDir(), DuckDBMemory: "256MB", DuckDBThreads: 2, DuckDBMaxConns: 2, RetentionDays: 30} + repo, err := telemetrystore.Open(cfg.TelemetryDir()) + if err != nil { + t.Fatal(err) + } + defer repo.Close() + duck, err := query.NewDuck(t.Context(), cfg, repo) + if err != nil { + t.Fatal(err) + } + defer duck.Close() + at := time.Now().UTC().Truncate(time.Minute) + snapshot := IntelligenceSnapshot{GeneratedAt: at, Anomalies: []Anomaly{{ServiceName: "checkout", Type: AnomalyLatencyDegradation, ZScore: -4, DetectedAt: at, Description: "Slow"}, {ServiceName: "payment", Type: AnomalyVolumeChange, ZScore: 3, DetectedAt: at, Description: "Low volume"}}} + findings := detectorAnnotations(snapshot, "shop", 5*time.Minute) + if err := duck.RecordAnomalies(t.Context(), findings, at); err != nil { + t.Fatal(err) + } + got, err := annotations.New(duck).Read(t.Context(), annotations.Request{From: at.Add(-time.Hour), To: at.Add(time.Minute), Namespace: "shop"}) + if err != nil || len(got.Anomalies) != 2 { + t.Fatalf("persisted: %+v %v", got, err) + } + for _, a := range got.Anomalies { + want := "warn" + if a.Service == "checkout" { + want = "bad" + } + if a.Namespace != "shop" || a.Severity != want || !a.From.Equal(at.Add(-5*time.Minute)) || !a.To.Equal(at) { + t.Fatalf("mapping: %+v", a) + } + } +} diff --git a/internal/intelligence/detector.go b/internal/intelligence/detector.go index 90130268..f02bbbfa 100644 --- a/internal/intelligence/detector.go +++ b/internal/intelligence/detector.go @@ -18,6 +18,7 @@ import ( "sync" "time" + "github.com/labstack/fanout/internal/annotations" "github.com/labstack/fanout/internal/query" ) @@ -28,17 +29,25 @@ func isNoDataError(errMsg string) bool { // Detector runs intelligence detection on observability data type Detector struct { - duck *query.Duck - config DetectorConfig - mu sync.RWMutex - snapshot *IntelligenceSnapshot + duck *query.Duck + config DetectorConfig + mu sync.RWMutex + snapshot *IntelligenceSnapshot + annotationMu sync.Mutex + annotationBatches chan annotationBatch +} + +type annotationBatch struct { + findings []annotations.Anomaly + at time.Time } // NewDetector creates a new intelligence detector func NewDetector(duck *query.Duck, config DetectorConfig) *Detector { return &Detector{ - duck: duck, - config: config, + duck: duck, + config: config, + annotationBatches: make(chan annotationBatch, 1), } } @@ -53,6 +62,10 @@ func (d *Detector) Run(ctx context.Context) { ticker := time.NewTicker(d.config.CheckInterval) defer ticker.Stop() + persistenceCtx, cancel := context.WithCancel(ctx) + persistenceDone := make(chan struct{}) + go func() { defer close(persistenceDone); d.persistAnnotations(persistenceCtx, d.duck.RecordAnomalies) }() + defer func() { cancel(); <-persistenceDone }() // Run once on startup d.safeRunCheck(ctx) @@ -81,19 +94,52 @@ func (d *Detector) safeRunCheck(ctx context.Context) { // runCheck performs a single detection cycle func (d *Detector) runCheck(ctx context.Context) { snapshot := d.GenerateSnapshot(ctx) - - d.mu.Lock() - d.snapshot = &snapshot - d.mu.Unlock() + d.publishSnapshot(snapshot) anomalyCount := len(snapshot.Anomalies) patternCount := len(snapshot.Patterns) - if anomalyCount > 0 || patternCount > 0 { slog.Info("detection complete", "anomalies", anomalyCount, "patterns", patternCount, "health", snapshot.HealthScore) } } +func (d *Detector) publishSnapshot(snapshot IntelligenceSnapshot) { + d.mu.Lock() + d.snapshot = &snapshot + d.mu.Unlock() + batch := annotationBatch{detectorAnnotations(snapshot, d.duck.DefaultNamespace(), d.config.LookbackWindow), snapshot.GeneratedAt} + // Only the producer modifies the pending slot. Persistence can be blocked + // while a newer cycle replaces the single pending batch. + d.annotationMu.Lock() + defer d.annotationMu.Unlock() + select { + case d.annotationBatches <- batch: + return + default: + } + select { + case <-d.annotationBatches: + default: + } + d.annotationBatches <- batch +} + +func (d *Detector) persistAnnotations(ctx context.Context, record func(context.Context, []annotations.Anomaly, time.Time) error) { + for { + if ctx.Err() != nil { + return + } + select { + case <-ctx.Done(): + return + case batch := <-d.annotationBatches: + if err := record(ctx, batch.findings, batch.at); err != nil && ctx.Err() == nil { + slog.Error("persist detector annotations", "error", err) + } + } + } +} + // LatestSnapshot returns the most recent intelligence snapshot, or nil if none. func (d *Detector) LatestSnapshot() *IntelligenceSnapshot { d.mu.RLock() @@ -619,3 +665,16 @@ func toInt64(v interface{}) int64 { func toInt(v interface{}) int { return int(toInt64(v)) } + +func detectorAnnotations(snapshot IntelligenceSnapshot, namespace string, lookback time.Duration) []annotations.Anomaly { + findings := make([]annotations.Anomaly, 0, len(snapshot.Anomalies)) + for _, a := range snapshot.Anomalies { + severity := "warn" + if math.Abs(a.ZScore) >= 4 { + severity = "bad" + } + end := a.DetectedAt.UTC().Truncate(time.Minute) + findings = append(findings, annotations.Anomaly{Namespace: namespace, Service: a.ServiceName, Kind: string(a.Type), From: end.Add(-lookback), To: end, Title: a.Description, Severity: severity}) + } + return findings +} diff --git a/internal/mcp/apps/performance.html b/internal/mcp/apps/performance.html index 0eb03609..b6eedb1e 100644 --- a/internal/mcp/apps/performance.html +++ b/internal/mcp/apps/performance.html @@ -1,33 +1,33 @@ -Fanout service performance +- "app": Tool callable by the app from this server only`),csp:o2().optional(),permissions:o2().optional()}),X({mimeTypes:Y(K()).optional().describe('Array of supported MIME types for UI resources.\nMust include `"text/html;profile=mcp-app"` for MCP Apps support.')}),X({method:$(`ui/download-file`),params:X({contents:Y(Z([R3,z3])).describe(`Resource contents to download — embedded (inline data) or linked (host fetches). Uses standard MCP resource types.`)})}),X({method:$(`ui/message`),params:X({role:$(`user`).describe(`Message role, currently only "user" is supported.`),content:Y(B3).describe(`Message content blocks (text, image, etc.).`)})}),X({method:$(`ui/notifications/sandbox-resource-ready`),params:X({html:K().describe(`HTML content to load into the inner iframe.`),sandbox:K().optional().describe(`Optional override for the inner iframe's sandbox attribute.`),csp:D9.optional().describe(`CSP configuration from resource metadata.`),permissions:O9.optional().describe(`Sandbox permissions from resource metadata.`)})});var V9=X({method:$(`ui/notifications/tool-result`),params:Y3.describe(`Standard MCP tool execution result.`)}),H9=X({toolInfo:X({id:b4.optional().describe(`JSON-RPC id of the tools/call request.`),tool:K3.describe(`Tool definition including name, inputSchema, etc.`)}).optional().describe(`Metadata of the tool call that instantiated this App.`),theme:x9.optional().describe(`Current color theme preference.`),styles:N9.optional().describe(`Style configuration for theming the app.`),displayMode:S9.optional().describe(`How the UI is currently displayed.`),availableDisplayModes:Y(S9).optional().describe(`Display modes the host supports.`),containerDimensions:Z([X({height:q().describe(`Fixed container height in pixels.`)}),X({maxHeight:Z([q(),Q0()]).optional().describe(`Maximum container height in pixels.`)})]).and(Z([X({width:q().describe(`Fixed container width in pixels.`)}),X({maxWidth:Z([q(),Q0()]).optional().describe(`Maximum container width in pixels.`)})])).optional().describe(`Container dimensions. Represents the dimensions of the iframe or other +container holding the app. Specify either width or maxWidth, and either height or maxHeight.`),locale:K().optional().describe(`User's language and region preference in BCP 47 format.`),timeZone:K().optional().describe(`User's timezone in IANA format.`),userAgent:K().optional().describe(`Host application identifier.`),platform:Z([$(`web`),$(`desktop`),$(`mobile`)]).optional().describe(`Platform type for responsive design decisions.`),deviceCapabilities:X({touch:J().optional().describe(`Whether the device supports touch input.`),hover:J().optional().describe(`Whether the device supports hover interactions.`)}).optional().describe(`Device input capabilities.`),safeAreaInsets:X({top:q().describe(`Top safe area inset in pixels.`),right:q().describe(`Right safe area inset in pixels.`),bottom:q().describe(`Bottom safe area inset in pixels.`),left:q().describe(`Left safe area inset in pixels.`)}).optional().describe(`Mobile safe area boundaries in pixels.`)}).passthrough(),U9=X({method:$(`ui/notifications/host-context-changed`),params:H9.describe(`Partial context update containing only changed fields.`)});X({method:$(`ui/update-model-context`),params:X({content:Y(B3).optional().describe(`Context content blocks (text, image, etc.).`),structuredContent:Q(K(),i2().describe(`Structured content for machine-readable context data.`)).optional().describe(`Structured content for machine-readable context data.`)})}),X({method:$(`ui/initialize`),params:X({appInfo:N4.describe(`App identification (name and version).`),appCapabilities:R9.describe(`Features and capabilities this app provides.`),protocolVersion:K().describe(`Protocol version this app supports.`)})});var W9=X({protocolVersion:K().describe(`Negotiated protocol version string (e.g., "2025-11-21").`),hostInfo:N4.describe(`Host application identification and version.`),hostCapabilities:L9.describe(`Features and capabilities provided by the host.`),hostContext:H9.describe(`Rich context about the host environment.`)}).passthrough(),G9={target:`draft-2020-12`};async function K9(e,t){let n=e[`~standard`];if(n.jsonSchema)return n.jsonSchema[t](G9);throw Error(`Schema (vendor: ${n.vendor}) does not implement Standard JSON Schema (~standard.jsonSchema). Use a library that does (zod v4, ArkType, Valibot) or wrap your schema accordingly.`)}async function q9(e,t,n=``){let r=await e[`~standard`].validate(t);if(r.issues){let e=r.issues.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `);throw Error(n+e)}return r.value}function J9(e,t){let n={...e,...t};return t.experimental!==void 0&&(n.experimental={...e.experimental,...t.experimental}),t.tools!==void 0&&(n.tools={...e.tools,...t.tools}),n}var Y9=class e extends Y7{_appInfo;_appCapabilities;options;_hostCapabilities;_hostInfo;_hostContext;_registeredTools={};_initializedSent=!1;_registeredEvents=new Set;_events=new m9;_methods=new h9;setRequestHandler=(...e)=>{let[t,...n]=_9(`request`,e)??e;this._methods.claim(t,`setRequestHandler`),super.setRequestHandler.call(this,t,...n)};setNotificationHandler=(...e)=>{let[t,...n]=_9(`notification`,e)??e;this._methods.claim(t,`setNotificationHandler`),super.setNotificationHandler.call(this,t,...n)};removeRequestHandler=e=>{this._methods.release(e),super.removeRequestHandler(e)};removeNotificationHandler=e=>{this._methods.release(e),super.removeNotificationHandler(e)};replaceRequestHandler=(e,...t)=>{this._methods.replace(e),super.setRequestHandler.call(this,e,...t)};_assertInitialized(e){if(this._initializedSent)return;let t=`[ext-apps] App.${e}() called before connect() completed the ui/initialize handshake. Await app.connect() before calling this method, or move data loading to an ontoolresult handler.`;if(this.options?.strict)throw Error(t);console.warn(`${t}. This will throw in a future release.`)}eventSchemas={toolinput:k9,toolinputpartial:A9,toolresult:V9,toolcancelled:j9,hostcontextchanged:U9};static ONE_SHOT_EVENTS=new Set([`toolinput`,`toolinputpartial`,`toolresult`,`toolcancelled`]);_everHadListener=new Set;_assertHandlerTiming(t){if(!e.ONE_SHOT_EVENTS.has(t)||this._everHadListener.has(t)||(this._everHadListener.add(t),!this._initializedSent))return;let n=`[ext-apps] "${String(t)}" handler registered after connect() completed the ui/initialize handshake. The host may have already sent this notification. Register handlers before calling app.connect().`;if(this.options?.strict)throw Error(n);console.warn(n)}setEventHandler(e,t){t&&this._assertHandlerTiming(e),this._ensureEventSlot(e),this._events.setHandler(e,t)}addEventListener(e,t){this._assertHandlerTiming(e),this._ensureEventSlot(e),this._events.addEventListener(e,t)}removeEventListener(e,t){this._events.removeEventListener(e,t)}_ensureEventSlot(e){if(this._registeredEvents.has(e))return;let t=this.eventSchemas[e];if(!t)throw Error(`Unknown event: ${String(e)}`);this.setNotificationHandler(t.shape.method.value,{params:t.shape.params},t=>{let n=t;e===`hostcontextchanged`&&(this._hostContext={...this._hostContext,...n}),this._events.dispatch(e,n)}),this._registeredEvents.add(e)}getEventHandler(e){return this._events.getHandler(e)}warnIfRequestHandlerReplaced(e,t,n){t&&n&&console.warn(`[MCP Apps] ${e} handler replaced. Previous handler will no longer be called.`)}constructor(e,t={},n={autoResize:!0}){super(n),this._appInfo=e,this._appCapabilities=t,this.options=n,this._methods.replace(`notifications/cancelled`),this._methods.replace(`notifications/progress`),!n.allowUnsafeEval&&HJ({jitless:!0}),this.replaceRequestHandler(`ping`,e=>(console.log(`Received ping:`,e.params),{})),this.setEventHandler(`hostcontextchanged`,void 0)}buildContext(e){return e}registerAppCapabilities(e){if(this.transport)throw Error(`Cannot register capabilities after transport is established`);this._appCapabilities=J9(this._appCapabilities,e)}registerTool(e,t,n){if(this._registeredTools[e])throw Error(`Tool ${e} is already registered`);let r=this,i=()=>{r._initializedSent&&r._appCapabilities.tools?.listChanged&&r.sendToolListChanged()},a=t.inputSchema!==void 0,o={title:t.title,description:t.description,inputSchema:t.inputSchema,outputSchema:t.outputSchema,annotations:t.annotations,_meta:t._meta,enabled:!0,enable(){this.enabled=!0,i()},disable(){this.enabled=!1,i()},update(e){Object.assign(this,e),i()},remove(){r._registeredTools[e]===o&&(delete r._registeredTools[e],i())},handler:async(t,r)=>{if(!o.enabled)throw Error(`Tool ${e} is disabled`);let i;if(a){let a=o.inputSchema;i=await n(a?await q9(a,t??{},`Invalid input for tool ${e}: `):t??{},r)}else i=await n(r);return o.outputSchema&&!i.isError&&(i.structuredContent=await q9(o.outputSchema,i.structuredContent,`Invalid output for tool ${e}: `)),i}};return this._registeredTools[e]=o,!this._appCapabilities.tools&&!this.transport&&this.registerAppCapabilities({tools:{listChanged:!0}}),this.ensureToolHandlersInitialized(),i(),o}_toolHandlersInitialized=!1;ensureToolHandlersInitialized(){this._toolHandlersInitialized||(this._toolHandlersInitialized=!0,this.oncalltool=async(e,t)=>{let n=this._registeredTools[e.name];if(!n)throw Error(`Tool ${e.name} not found`);return n.handler(e.arguments,t)},this.onlisttools=async(e,t)=>({tools:await Promise.all(Object.entries(this._registeredTools).filter(([e,t])=>t.enabled).map(async([e,t])=>{let n={name:e,title:t.title,description:t.description,inputSchema:t.inputSchema?await K9(t.inputSchema,`input`):{type:`object`,properties:{}}};return t.outputSchema&&(n.outputSchema=await K9(t.outputSchema,`output`)),t.annotations&&(n.annotations=t.annotations),t._meta&&(n._meta=t._meta),n}))}))}async sendToolListChanged(e={}){this._assertInitialized(`sendToolListChanged`),await this.notification({method:`notifications/tools/list_changed`,params:e})}getHostCapabilities(){return this._hostCapabilities}getHostVersion(){return this._hostInfo}getHostContext(){return this._hostContext}get ontoolinput(){return this.getEventHandler(`toolinput`)}set ontoolinput(e){this.setEventHandler(`toolinput`,e)}get ontoolinputpartial(){return this.getEventHandler(`toolinputpartial`)}set ontoolinputpartial(e){this.setEventHandler(`toolinputpartial`,e)}get ontoolresult(){return this.getEventHandler(`toolresult`)}set ontoolresult(e){this.setEventHandler(`toolresult`,e)}get ontoolcancelled(){return this.getEventHandler(`toolcancelled`)}set ontoolcancelled(e){this.setEventHandler(`toolcancelled`,e)}get onhostcontextchanged(){return this.getEventHandler(`hostcontextchanged`)}set onhostcontextchanged(e){this.setEventHandler(`hostcontextchanged`,e)}_onteardown;get onteardown(){return this._onteardown}set onteardown(e){this.warnIfRequestHandlerReplaced(`onteardown`,this._onteardown,e),this._onteardown=e,this.replaceRequestHandler(`ui/resource-teardown`,{params:P9.shape.params,result:F9},(e,t)=>{if(!this._onteardown)throw Error(`No onteardown handler set`);return this._onteardown(e,t)})}_oncalltool;get oncalltool(){return this._oncalltool}set oncalltool(e){this.warnIfRequestHandlerReplaced(`oncalltool`,this._oncalltool,e),this._oncalltool=e,this.replaceRequestHandler(`tools/call`,(e,t)=>{if(!this._oncalltool)throw Error(`No oncalltool handler set`);return this._oncalltool(e.params,t)})}_onlisttools;get onlisttools(){return this._onlisttools}set onlisttools(e){this.warnIfRequestHandlerReplaced(`onlisttools`,this._onlisttools,e),this._onlisttools=e,this.replaceRequestHandler(`tools/list`,(e,t)=>{if(!this._onlisttools)throw Error(`No onlisttools handler set`);return this._onlisttools(e.params,t)})}assertCapabilityForMethod(e){if(e===`sampling/createMessage`&&!this._hostCapabilities?.sampling)throw Error(`Host does not support sampling (required for ${e})`)}assertRequestHandlerCapability(e){switch(e){case`tools/call`:case`tools/list`:if(!this._appCapabilities.tools)throw Error(`Client does not support tool capability (required for ${e})`);return;default:return}}assertNotificationCapability(e){}async callServerTool(e,t){if(this._assertInitialized(`callServerTool`),typeof e==`string`)throw Error(`callServerTool() expects an object as its first argument, but received a string ("${e}"). Did you mean: callServerTool({ name: "${e}", arguments: { ... } })?`);return await this.request({method:`tools/call`,params:e},{onprogress:()=>{},resetTimeoutOnProgress:!0,...t})}async readServerResource(e,t){return this._assertInitialized(`readServerResource`),await this.request({method:`resources/read`,params:e},t)}async listServerResources(e,t){return this._assertInitialized(`listServerResources`),await this.request({method:`resources/list`,params:e},t)}async createSamplingMessage(e,t){return this._assertInitialized(`createSamplingMessage`),await this.request({method:`sampling/createMessage`,params:e},t)}sendMessage(e,t){return this._assertInitialized(`sendMessage`),this.request({method:`ui/message`,params:e},E9,t)}sendLog(e){return this.notification({method:`notifications/message`,params:e})}updateModelContext(e,t){return this._assertInitialized(`updateModelContext`),this.request({method:`ui/update-model-context`,params:e},D4,t)}openLink(e,t){return this._assertInitialized(`openLink`),this.request({method:`ui/open-link`,params:e},w9,t)}sendOpenLink=this.openLink;downloadFile(e,t){return this._assertInitialized(`downloadFile`),this.request({method:`ui/download-file`,params:e},T9,t)}requestTeardown(e={}){return this.notification({method:`ui/notifications/request-teardown`,params:e})}requestDisplayMode(e,t){return this._assertInitialized(`requestDisplayMode`),this.request({method:`ui/request-display-mode`,params:e},z9,t)}sendSizeChanged(e){return this.notification({method:`ui/notifications/size-changed`,params:e})}setupSizeChangedNotifications(){let e=!1,t=0,n=0,r=()=>{e||(e=!0,requestAnimationFrame(()=>{e=!1;let r=document.documentElement,i=r.style.height;r.style.height=`max-content`;let a=Math.ceil(r.getBoundingClientRect().height);r.style.height=i;let o=Math.ceil(window.innerWidth);(o!==t||a!==n)&&(t=o,n=a,this.sendSizeChanged({width:o,height:a}))}))};r();let i=new ResizeObserver(r);return i.observe(document.documentElement),i.observe(document.body),()=>i.disconnect()}async connect(e=new b9(window.parent,window.parent),t){if(this.transport)throw Error(`App is already connected. Call close() before connecting again.`);this._initializedSent=!1;try{await super.connect(e);let n=await this.request({method:`ui/initialize`,params:{appCapabilities:this._appCapabilities,appInfo:this._appInfo,protocolVersion:y9}},W9,t);if(n===void 0)throw Error(`Server sent invalid initialize result: ${n}`);this._hostCapabilities=n.hostCapabilities,this._hostInfo=n.hostInfo,this._hostContext=n.hostContext,await this.notification({method:`ui/notifications/initialized`}),this._initializedSent=!0,this.options?.autoResize&&this.setupSizeChangedNotifications()}catch(e){throw this.close(),e}}};function X9({appInfo:e,capabilities:t,onAppCreated:n,autoResize:r=!0,strict:i}){let[a,o]=(0,U.useState)(null),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(null);return(0,U.useEffect)(()=>{let a=!0,s;async function l(){try{let l=new b9(window.parent,window.parent);if(s=new Y9(e,t,{autoResize:r,strict:i}),n?.(s),await s.connect(l),!a){s.close();return}o(s),c(!0),u(null)}catch(e){a&&(o(null),c(!1),u(e instanceof Error?e:Error(`Failed to connect`)))}}return l(),()=>{a=!1,s?.close()}},[]),{app:a,isConnected:s,error:l}}function Z9(e){let[t,n]=(0,U.useState)(null),[r,i]=(0,U.useState)({}),[a,o]=(0,U.useState)(),[s,c]=(0,U.useState)(null);function l(e){if(e.isError){c(`This view could not be refreshed. Please try again.`);return}c(null),n(e.structuredContent)}let u=X9({appInfo:{name:e,version:`1.0.0`},capabilities:{},onAppCreated:e=>{e.ontoolinput=e=>{i(e.arguments??{})},e.ontoolresult=l,e.onhostcontextchanged=e=>o(t=>({...t,...e})),e.onerror=e=>{console.error(`MCP app error`,e),c(`This view could not be refreshed. Please try again.`)}}});(0,U.useEffect)(()=>{u.app&&o(u.app.getHostContext())},[u.app]);async function d(e){if(u.app)try{l(await u.app.callServerTool({name:e,arguments:r}))}catch(t){console.error(`Tool call ${e} failed`,t),c(`This view could not be refreshed. Please try again.`)}}return{...u,result:t,toolInput:r,host:a,toolError:s,callTool:d}}async function ree(e,t){e&&await e.sendMessage({role:`user`,content:[{type:`text`,text:t}]})}lk([tx,HA]);function iee(){let{app:e,callTool:t,error:n,host:r,result:i,toolError:a}=Z9(`Fanout service performance`),[o,s]=(0,U.useState)(`activity`),c=r?.theme===`dark`;return(0,W.jsxs)(_H,{dark:c,children:[(0,W.jsx)(vH,{title:i?.data.service||`System performance`,summary:i?`Traffic, latency, and errors ${i.data.service?`for ${i.data.service}`:`across all services`}`:void 0,onRefresh:()=>t(`get_service_performance`),disabled:!e}),(0,W.jsx)(yH,{error:a??(n?`This view could not be loaded. Please try again.`:null),loading:!i&&!n&&!a?`Loading performance signals…`:void 0,retry:()=>void t(`get_service_performance`)}),i&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(bH,{active:o,onChange:s,items:[{id:`activity`,label:`Activity`},{id:`latency`,label:`Latency map`},{id:`endpoints`,label:`Endpoints`,count:i.data.endpoints.length},{id:`compare`,label:`Compare`}]}),o===`activity`&&(0,W.jsx)(aee,{data:i.data,dark:c,window:i.provenance.window}),o===`latency`&&(0,W.jsx)(cee,{data:i.data,dark:c,window:i.provenance.window}),o===`endpoints`&&(0,W.jsx)(lee,{endpoints:i.data.endpoints,onEndpoint:t=>ree(e,`Investigate ${t.method} ${t.path}. Explain its latency and errors.`)}),o===`compare`&&(0,W.jsx)(uee,{data:i.data}),(0,W.jsx)(SH,{left:mq(i.provenance.window),right:`Updated ${new Date(i.provenance.generated_at).toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`})} ${gq(i.provenance.generated_at)}`})]})]})}function aee({data:e,dark:t,window:n}){if(e.points.length===0)return(0,W.jsx)(xH,{tall:!0,icon:(0,W.jsx)(GV,{size:20,weight:`duotone`}),title:`No activity in this window`,children:`Trends will appear as activity is recorded.`});let{totals:r}=e,i=e.points.map(e=>e.time);return(0,W.jsxs)(UB,{px:{base:`md`,sm:`lg`},pb:`md`,children:[(0,W.jsxs)(zB,{cols:{base:1,xs:3},spacing:`sm`,children:[(0,W.jsx)(CH,{label:`Operations`,value:dq.format(r.spans)}),(0,W.jsx)(CH,{label:`P95 latency`,value:pq(r.p95_ms),color:r.p95_ms>=750?`warn`:`ok`}),(0,W.jsx)(CH,{label:`Error rate`,value:fq(r.error_rate),color:r.error_rate>=.01?`bad`:`ok`})]}),(0,W.jsx)(Q9,{dark:t,labels:i,title:`Traffic and logs`,window:n,series:[{name:`Operations`,data:e.points.map(e=>e.spans),color:AH(0,t)},{name:`Logs`,data:e.points.map(e=>e.log_count),color:AH(1,t)}]}),(0,W.jsx)(Q9,{dark:t,labels:i,title:`Latency and error correlation`,window:n,series:[{name:`P95 latency`,data:e.points.map(e=>e.p95_ms),color:kH(t).warn,axis:`duration`},{name:`Error rate`,data:e.points.map(e=>e.error_rate),color:kH(t).bad,axis:`percent`}]})]})}var oee={count:e=>dq.format(e),duration:pq,percent:fq},see={count:e=>dq.format(e),duration:pq,percent:e=>`${(e*100).toFixed(e>=.1?0:2)}%`};function Q9({labels:e,title:t,series:n,dark:r,window:i}){let a=(0,U.useMemo)(()=>{let t=OH(r),a=[...new Set(n.map(e=>e.axis??`count`))],o=e=>n.find(t=>t.name===e)?.axis??`count`;return{color:n.map(e=>e.color),grid:{left:46,right:a.length>1?54:18,top:42,bottom:30},legend:{top:5,left:0,textStyle:{color:t.muted,fontSize:iH.micro},icon:`circle`,itemWidth:7,itemHeight:7},tooltip:{trigger:`axis`,backgroundColor:t.surface,borderColor:t.border,textStyle:{color:t.text,fontSize:iH.micro},formatter:e=>f(e,(e,t)=>oee[o(t)](e))},xAxis:{type:`category`,data:e.map(e=>hq(e,i)),boundaryGap:!1,axisLine:{lineStyle:{color:t.border}},axisTick:{show:!1},axisLabel:{color:t.muted,fontSize:iH.micro,hideOverlap:!0}},yAxis:a.map((e,r)=>({type:`value`,position:r===0?`left`:`right`,min:0,...e===`percent`&&!n.some(e=>e.axis===`percent`&&e.data.some(e=>e>0))?{max:.01}:{},splitLine:r===0?{lineStyle:{color:t.grid}}:{show:!1},axisLabel:{color:t.muted,fontSize:iH.micro,formatter:t=>see[e](t)}})),series:n.map(e=>({name:e.name,type:`line`,yAxisIndex:a.indexOf(e.axis??`count`),data:e.data,smooth:.22,showSymbol:!1,lineStyle:{width:2},areaStyle:{opacity:.045}}))}},[r,e,n,i]);return(0,W.jsxs)(OR,{withBorder:!0,radius:`md`,p:`sm`,children:[(0,W.jsx)(Az,{fw:650,size:`sm`,mb:`xs`,children:t}),(0,W.jsx)(uq,{option:a,height:210,label:t})]})}function cee({data:e,dark:t,window:n}){let r=(0,U.useMemo)(()=>({services:[...new Set(e.heatmap.map(e=>e.service))],times:[...new Set(e.heatmap.map(e=>e.time))],values:new Map(e.heatmap.map(e=>[`${e.service}\u0000${e.time}`,e.p95_ms])),max:Math.max(...e.heatmap.map(e=>e.p95_ms),1)}),[e.heatmap]);if(r.services.length===0)return(0,W.jsx)(xH,{tall:!0,icon:(0,W.jsx)(UV,{size:20,weight:`duotone`}),title:`No latency samples yet`,children:`The heatmap will compare service latency across time buckets.`});let i=OH(t),a={grid:{left:105,right:20,top:20,bottom:78},tooltip:{position:`top`,backgroundColor:i.surface,borderColor:i.border,textStyle:{color:i.text,fontSize:iH.micro},formatter:e=>p(r.services[e.data[1]],pq(e.data[2]))},xAxis:{type:`category`,data:r.times.map(e=>hq(e,n)),splitArea:{show:!0},axisLabel:{color:i.muted,fontSize:iH.micro,hideOverlap:!0},axisLine:{lineStyle:{color:i.border}}},yAxis:{type:`category`,data:r.services,splitArea:{show:!0},axisLabel:{color:i.text,fontSize:iH.micro},axisLine:{lineStyle:{color:i.border}}},visualMap:{min:0,max:r.max,calculable:!0,orient:`horizontal`,left:`center`,bottom:0,itemWidth:12,itemHeight:90,text:[`slower`,`faster`],textGap:8,formatter:e=>pq(e),textStyle:{color:i.muted,fontSize:iH.micro},inRange:{color:[i.grid,kH(t).warn,kH(t).bad]}},series:[{type:`heatmap`,data:r.services.flatMap((e,t)=>r.times.map((n,i)=>[i,t,r.values.get(`${e}\u0000${n}`)??0]))}]};return(0,W.jsx)(OR,{withBorder:!0,radius:`md`,mx:{base:`md`,sm:`lg`},mb:`md`,p:`xs`,children:(0,W.jsx)(uq,{option:a,height:Math.max(280,r.services.length*32+110),label:`Service P95 latency heatmap`})})}function lee({endpoints:e,onEndpoint:t}){let n=wH(e,8);return e.length===0?(0,W.jsx)(xH,{tall:!0,icon:(0,W.jsx)(zV,{size:20,weight:`duotone`}),title:`No endpoints detected`,children:`HTTP routes and span operations will appear here as traffic arrives.`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(cV.ScrollContainer,{minWidth:700,children:(0,W.jsxs)(cV,{striped:!0,highlightOnHover:!0,verticalSpacing:`sm`,children:[(0,W.jsx)(cV.Thead,{children:(0,W.jsxs)(cV.Tr,{children:[(0,W.jsx)(cV.Th,{children:`Endpoint`}),(0,W.jsx)(cV.Th,{ta:`right`,children:`Calls`}),(0,W.jsx)(cV.Th,{ta:`right`,children:`P50`}),(0,W.jsx)(cV.Th,{ta:`right`,children:`P95`}),(0,W.jsx)(cV.Th,{ta:`right`,children:`P99`}),(0,W.jsx)(cV.Th,{ta:`right`,children:`Errors`})]})}),(0,W.jsx)(cV.Tbody,{children:n.pageItems.map(e=>(0,W.jsxs)(cV.Tr,{tabIndex:0,onClick:()=>t(e),onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&t(e)},style:{cursor:`pointer`},children:[(0,W.jsxs)(cV.Td,{children:[(0,W.jsx)(Nz,{variant:`light`,mr:`xs`,children:e.method}),(0,W.jsx)(Az,{component:`span`,ff:`monospace`,size:`sm`,children:e.path})]}),(0,W.jsx)(cV.Td,{ta:`right`,children:dq.format(e.calls)}),(0,W.jsx)(cV.Td,{ta:`right`,children:pq(e.p50_ms)}),(0,W.jsx)(cV.Td,{ta:`right`,children:pq(e.p95_ms)}),(0,W.jsx)(cV.Td,{ta:`right`,children:pq(e.p99_ms)}),(0,W.jsx)(cV.Td,{ta:`right`,children:(0,W.jsx)(Az,{c:DH(e.health),children:fq(e.error_rate)})})]},`${e.method}-${e.path}`))})]})}),(0,W.jsx)(EH,{...n,onChange:n.setPage})]})}function uee({data:e}){return e.comparison.length===0?(0,W.jsx)(xH,{tall:!0,icon:(0,W.jsx)(VV,{size:20,weight:`duotone`}),title:`Nothing to compare yet`,children:`Fanout compares the first and second half of the selected window.`}):(0,W.jsx)(cV.ScrollContainer,{minWidth:620,children:(0,W.jsxs)(cV,{striped:!0,verticalSpacing:`sm`,children:[(0,W.jsx)(cV.Thead,{children:(0,W.jsxs)(cV.Tr,{children:[(0,W.jsx)(cV.Th,{children:`Signal`}),(0,W.jsx)(cV.Th,{children:`Earlier`}),(0,W.jsx)(cV.Th,{children:`Change`}),(0,W.jsx)(cV.Th,{children:`Recent`})]})}),(0,W.jsx)(cV.Tbody,{children:e.comparison.map(e=>(0,W.jsxs)(cV.Tr,{children:[(0,W.jsxs)(cV.Td,{children:[(0,W.jsx)(Az,{fw:650,children:e.label}),(0,W.jsx)(Az,{c:`dimmed`,size:`xs`,children:e.unit})]}),(0,W.jsx)(cV.Td,{children:$9(e.before,e.unit)}),(0,W.jsxs)(cV.Td,{children:[(0,W.jsxs)(Nz,{color:e.direction===`improvement`?`ok`:e.direction===`regression`?`bad`:`gray`,variant:`light`,children:[e.change_pct>0?`↑`:e.change_pct<0?`↓`:`→`,` `,Math.abs(e.change_pct).toFixed(1),`%`]}),e.significant&&(0,W.jsx)(Az,{c:`dimmed`,size:`xs`,mt:3,children:`notable`})]}),(0,W.jsx)(cV.Td,{children:$9(e.after,e.unit)})]},e.label))})]})})}function $9(e,t){return t===`ms`?pq(e):t===`%`?`${e.toFixed(2)}%`:dq.format(e)}(0,YV.createRoot)(document.getElementById(`root`)).render((0,W.jsx)(U.StrictMode,{children:(0,W.jsx)(iee,{})}));
diff --git a/internal/mcp/apps/topology.html b/internal/mcp/apps/topology.html index 1a92220c..15773740 100644 --- a/internal/mcp/apps/topology.html +++ b/internal/mcp/apps/topology.html @@ -1,35 +1,35 @@ - Service topology +- "app": Tool callable by the app from this server only`),csp:R4().optional(),permissions:R4().optional()}),X({mimeTypes:Y(K()).optional().describe('Array of supported MIME types for UI resources.\nMust include `"text/html;profile=mcp-app"` for MCP Apps support.')}),X({method:$(`ui/download-file`),params:X({contents:Y(Z([g8,_8])).describe(`Resource contents to download — embedded (inline data) or linked (host fetches). Uses standard MCP resource types.`)})}),X({method:$(`ui/message`),params:X({role:$(`user`).describe(`Message role, currently only "user" is supported.`),content:Y(v8).describe(`Message content blocks (text, image, etc.).`)})}),X({method:$(`ui/notifications/sandbox-resource-ready`),params:X({html:K().describe(`HTML content to load into the inner iframe.`),sandbox:K().optional().describe(`Optional override for the inner iframe's sandbox attribute.`),csp:K9.optional().describe(`CSP configuration from resource metadata.`),permissions:q9.optional().describe(`Sandbox permissions from resource metadata.`)})});var xne=X({method:$(`ui/notifications/tool-result`),params:D8.describe(`Standard MCP tool execution result.`)}),X9=X({toolInfo:X({id:Q3.optional().describe(`JSON-RPC id of the tools/call request.`),tool:w8.describe(`Tool definition including name, inputSchema, etc.`)}).optional().describe(`Metadata of the tool call that instantiated this App.`),theme:one.optional().describe(`Current color theme preference.`),styles:mne.optional().describe(`Style configuration for theming the app.`),displayMode:G9.optional().describe(`How the UI is currently displayed.`),availableDisplayModes:Y(G9).optional().describe(`Display modes the host supports.`),containerDimensions:Z([X({height:q().describe(`Fixed container height in pixels.`)}),X({maxHeight:Z([q(),A4()]).optional().describe(`Maximum container height in pixels.`)})]).and(Z([X({width:q().describe(`Fixed container width in pixels.`)}),X({maxWidth:Z([q(),A4()]).optional().describe(`Maximum container width in pixels.`)})])).optional().describe(`Container dimensions. Represents the dimensions of the iframe or other +container holding the app. Specify either width or maxWidth, and either height or maxHeight.`),locale:K().optional().describe(`User's language and region preference in BCP 47 format.`),timeZone:K().optional().describe(`User's timezone in IANA format.`),userAgent:K().optional().describe(`Host application identifier.`),platform:Z([$(`web`),$(`desktop`),$(`mobile`)]).optional().describe(`Platform type for responsive design decisions.`),deviceCapabilities:X({touch:J().optional().describe(`Whether the device supports touch input.`),hover:J().optional().describe(`Whether the device supports hover interactions.`)}).optional().describe(`Device input capabilities.`),safeAreaInsets:X({top:q().describe(`Top safe area inset in pixels.`),right:q().describe(`Right safe area inset in pixels.`),bottom:q().describe(`Bottom safe area inset in pixels.`),left:q().describe(`Left safe area inset in pixels.`)}).optional().describe(`Mobile safe area boundaries in pixels.`)}).passthrough(),Sne=X({method:$(`ui/notifications/host-context-changed`),params:X9.describe(`Partial context update containing only changed fields.`)});X({method:$(`ui/update-model-context`),params:X({content:Y(v8).optional().describe(`Context content blocks (text, image, etc.).`),structuredContent:Q(K(),I4().describe(`Structured content for machine-readable context data.`)).optional().describe(`Structured content for machine-readable context data.`)})}),X({method:$(`ui/initialize`),params:X({appInfo:d6.describe(`App identification (name and version).`),appCapabilities:vne.describe(`Features and capabilities this app provides.`),protocolVersion:K().describe(`Protocol version this app supports.`)})});var Cne=X({protocolVersion:K().describe(`Negotiated protocol version string (e.g., "2025-11-21").`),hostInfo:d6.describe(`Host application identification and version.`),hostCapabilities:_ne.describe(`Features and capabilities provided by the host.`),hostContext:X9.describe(`Rich context about the host environment.`)}).passthrough(),wne={target:`draft-2020-12`};async function Z9(e,t){let n=e[`~standard`];if(n.jsonSchema)return n.jsonSchema[t](wne);throw Error(`Schema (vendor: ${n.vendor}) does not implement Standard JSON Schema (~standard.jsonSchema). Use a library that does (zod v4, ArkType, Valibot) or wrap your schema accordingly.`)}async function Q9(e,t,n=``){let r=await e[`~standard`].validate(t);if(r.issues){let e=r.issues.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `);throw Error(n+e)}return r.value}function Tne(e,t){let n={...e,...t};return t.experimental!==void 0&&(n.experimental={...e.experimental,...t.experimental}),t.tools!==void 0&&(n.tools={...e.tools,...t.tools}),n}var Ene=class e extends Vte{_appInfo;_appCapabilities;options;_hostCapabilities;_hostInfo;_hostContext;_registeredTools={};_initializedSent=!1;_registeredEvents=new Set;_events=new nne;_methods=new rne;setRequestHandler=(...e)=>{let[t,...n]=U9(`request`,e)??e;this._methods.claim(t,`setRequestHandler`),super.setRequestHandler.call(this,t,...n)};setNotificationHandler=(...e)=>{let[t,...n]=U9(`notification`,e)??e;this._methods.claim(t,`setNotificationHandler`),super.setNotificationHandler.call(this,t,...n)};removeRequestHandler=e=>{this._methods.release(e),super.removeRequestHandler(e)};removeNotificationHandler=e=>{this._methods.release(e),super.removeNotificationHandler(e)};replaceRequestHandler=(e,...t)=>{this._methods.replace(e),super.setRequestHandler.call(this,e,...t)};_assertInitialized(e){if(this._initializedSent)return;let t=`[ext-apps] App.${e}() called before connect() completed the ui/initialize handshake. Await app.connect() before calling this method, or move data loading to an ontoolresult handler.`;if(this.options?.strict)throw Error(t);console.warn(`${t}. This will throw in a future release.`)}eventSchemas={toolinput:J9,toolinputpartial:dne,toolresult:xne,toolcancelled:fne,hostcontextchanged:Sne};static ONE_SHOT_EVENTS=new Set([`toolinput`,`toolinputpartial`,`toolresult`,`toolcancelled`]);_everHadListener=new Set;_assertHandlerTiming(t){if(!e.ONE_SHOT_EVENTS.has(t)||this._everHadListener.has(t)||(this._everHadListener.add(t),!this._initializedSent))return;let n=`[ext-apps] "${String(t)}" handler registered after connect() completed the ui/initialize handshake. The host may have already sent this notification. Register handlers before calling app.connect().`;if(this.options?.strict)throw Error(n);console.warn(n)}setEventHandler(e,t){t&&this._assertHandlerTiming(e),this._ensureEventSlot(e),this._events.setHandler(e,t)}addEventListener(e,t){this._assertHandlerTiming(e),this._ensureEventSlot(e),this._events.addEventListener(e,t)}removeEventListener(e,t){this._events.removeEventListener(e,t)}_ensureEventSlot(e){if(this._registeredEvents.has(e))return;let t=this.eventSchemas[e];if(!t)throw Error(`Unknown event: ${String(e)}`);this.setNotificationHandler(t.shape.method.value,{params:t.shape.params},t=>{let n=t;e===`hostcontextchanged`&&(this._hostContext={...this._hostContext,...n}),this._events.dispatch(e,n)}),this._registeredEvents.add(e)}getEventHandler(e){return this._events.getHandler(e)}warnIfRequestHandlerReplaced(e,t,n){t&&n&&console.warn(`[MCP Apps] ${e} handler replaced. Previous handler will no longer be called.`)}constructor(e,t={},n={autoResize:!0}){super(n),this._appInfo=e,this._appCapabilities=t,this.options=n,this._methods.replace(`notifications/cancelled`),this._methods.replace(`notifications/progress`),!n.allowUnsafeEval&&bX({jitless:!0}),this.replaceRequestHandler(`ping`,e=>(console.log(`Received ping:`,e.params),{})),this.setEventHandler(`hostcontextchanged`,void 0)}buildContext(e){return e}registerAppCapabilities(e){if(this.transport)throw Error(`Cannot register capabilities after transport is established`);this._appCapabilities=Tne(this._appCapabilities,e)}registerTool(e,t,n){if(this._registeredTools[e])throw Error(`Tool ${e} is already registered`);let r=this,i=()=>{r._initializedSent&&r._appCapabilities.tools?.listChanged&&r.sendToolListChanged()},a=t.inputSchema!==void 0,o={title:t.title,description:t.description,inputSchema:t.inputSchema,outputSchema:t.outputSchema,annotations:t.annotations,_meta:t._meta,enabled:!0,enable(){this.enabled=!0,i()},disable(){this.enabled=!1,i()},update(e){Object.assign(this,e),i()},remove(){r._registeredTools[e]===o&&(delete r._registeredTools[e],i())},handler:async(t,r)=>{if(!o.enabled)throw Error(`Tool ${e} is disabled`);let i;if(a){let a=o.inputSchema;i=await n(a?await Q9(a,t??{},`Invalid input for tool ${e}: `):t??{},r)}else i=await n(r);return o.outputSchema&&!i.isError&&(i.structuredContent=await Q9(o.outputSchema,i.structuredContent,`Invalid output for tool ${e}: `)),i}};return this._registeredTools[e]=o,!this._appCapabilities.tools&&!this.transport&&this.registerAppCapabilities({tools:{listChanged:!0}}),this.ensureToolHandlersInitialized(),i(),o}_toolHandlersInitialized=!1;ensureToolHandlersInitialized(){this._toolHandlersInitialized||(this._toolHandlersInitialized=!0,this.oncalltool=async(e,t)=>{let n=this._registeredTools[e.name];if(!n)throw Error(`Tool ${e.name} not found`);return n.handler(e.arguments,t)},this.onlisttools=async(e,t)=>({tools:await Promise.all(Object.entries(this._registeredTools).filter(([e,t])=>t.enabled).map(async([e,t])=>{let n={name:e,title:t.title,description:t.description,inputSchema:t.inputSchema?await Z9(t.inputSchema,`input`):{type:`object`,properties:{}}};return t.outputSchema&&(n.outputSchema=await Z9(t.outputSchema,`output`)),t.annotations&&(n.annotations=t.annotations),t._meta&&(n._meta=t._meta),n}))}))}async sendToolListChanged(e={}){this._assertInitialized(`sendToolListChanged`),await this.notification({method:`notifications/tools/list_changed`,params:e})}getHostCapabilities(){return this._hostCapabilities}getHostVersion(){return this._hostInfo}getHostContext(){return this._hostContext}get ontoolinput(){return this.getEventHandler(`toolinput`)}set ontoolinput(e){this.setEventHandler(`toolinput`,e)}get ontoolinputpartial(){return this.getEventHandler(`toolinputpartial`)}set ontoolinputpartial(e){this.setEventHandler(`toolinputpartial`,e)}get ontoolresult(){return this.getEventHandler(`toolresult`)}set ontoolresult(e){this.setEventHandler(`toolresult`,e)}get ontoolcancelled(){return this.getEventHandler(`toolcancelled`)}set ontoolcancelled(e){this.setEventHandler(`toolcancelled`,e)}get onhostcontextchanged(){return this.getEventHandler(`hostcontextchanged`)}set onhostcontextchanged(e){this.setEventHandler(`hostcontextchanged`,e)}_onteardown;get onteardown(){return this._onteardown}set onteardown(e){this.warnIfRequestHandlerReplaced(`onteardown`,this._onteardown,e),this._onteardown=e,this.replaceRequestHandler(`ui/resource-teardown`,{params:hne.shape.params,result:gne},(e,t)=>{if(!this._onteardown)throw Error(`No onteardown handler set`);return this._onteardown(e,t)})}_oncalltool;get oncalltool(){return this._oncalltool}set oncalltool(e){this.warnIfRequestHandlerReplaced(`oncalltool`,this._oncalltool,e),this._oncalltool=e,this.replaceRequestHandler(`tools/call`,(e,t)=>{if(!this._oncalltool)throw Error(`No oncalltool handler set`);return this._oncalltool(e.params,t)})}_onlisttools;get onlisttools(){return this._onlisttools}set onlisttools(e){this.warnIfRequestHandlerReplaced(`onlisttools`,this._onlisttools,e),this._onlisttools=e,this.replaceRequestHandler(`tools/list`,(e,t)=>{if(!this._onlisttools)throw Error(`No onlisttools handler set`);return this._onlisttools(e.params,t)})}assertCapabilityForMethod(e){if(e===`sampling/createMessage`&&!this._hostCapabilities?.sampling)throw Error(`Host does not support sampling (required for ${e})`)}assertRequestHandlerCapability(e){switch(e){case`tools/call`:case`tools/list`:if(!this._appCapabilities.tools)throw Error(`Client does not support tool capability (required for ${e})`);return;default:return}}assertNotificationCapability(e){}async callServerTool(e,t){if(this._assertInitialized(`callServerTool`),typeof e==`string`)throw Error(`callServerTool() expects an object as its first argument, but received a string ("${e}"). Did you mean: callServerTool({ name: "${e}", arguments: { ... } })?`);return await this.request({method:`tools/call`,params:e},{onprogress:()=>{},resetTimeoutOnProgress:!0,...t})}async readServerResource(e,t){return this._assertInitialized(`readServerResource`),await this.request({method:`resources/read`,params:e},t)}async listServerResources(e,t){return this._assertInitialized(`listServerResources`),await this.request({method:`resources/list`,params:e},t)}async createSamplingMessage(e,t){return this._assertInitialized(`createSamplingMessage`),await this.request({method:`sampling/createMessage`,params:e},t)}sendMessage(e,t){return this._assertInitialized(`sendMessage`),this.request({method:`ui/message`,params:e},une,t)}sendLog(e){return this.notification({method:`notifications/message`,params:e})}updateModelContext(e,t){return this._assertInitialized(`updateModelContext`),this.request({method:`ui/update-model-context`,params:e},a6,t)}openLink(e,t){return this._assertInitialized(`openLink`),this.request({method:`ui/open-link`,params:e},cne,t)}sendOpenLink=this.openLink;downloadFile(e,t){return this._assertInitialized(`downloadFile`),this.request({method:`ui/download-file`,params:e},lne,t)}requestTeardown(e={}){return this.notification({method:`ui/notifications/request-teardown`,params:e})}requestDisplayMode(e,t){return this._assertInitialized(`requestDisplayMode`),this.request({method:`ui/request-display-mode`,params:e},yne,t)}sendSizeChanged(e){return this.notification({method:`ui/notifications/size-changed`,params:e})}setupSizeChangedNotifications(){let e=!1,t=0,n=0,r=()=>{e||(e=!0,requestAnimationFrame(()=>{e=!1;let r=document.documentElement,i=r.style.height;r.style.height=`max-content`;let a=Math.ceil(r.getBoundingClientRect().height);r.style.height=i;let o=Math.ceil(window.innerWidth);(o!==t||a!==n)&&(t=o,n=a,this.sendSizeChanged({width:o,height:a}))}))};r();let i=new ResizeObserver(r);return i.observe(document.documentElement),i.observe(document.body),()=>i.disconnect()}async connect(e=new W9(window.parent,window.parent),t){if(this.transport)throw Error(`App is already connected. Call close() before connecting again.`);this._initializedSent=!1;try{await super.connect(e);let n=await this.request({method:`ui/initialize`,params:{appCapabilities:this._appCapabilities,appInfo:this._appInfo,protocolVersion:ane}},Cne,t);if(n===void 0)throw Error(`Server sent invalid initialize result: ${n}`);this._hostCapabilities=n.hostCapabilities,this._hostInfo=n.hostInfo,this._hostContext=n.hostContext,await this.notification({method:`ui/notifications/initialized`}),this._initializedSent=!0,this.options?.autoResize&&this.setupSizeChangedNotifications()}catch(e){throw this.close(),e}}};function Dne({appInfo:e,capabilities:t,onAppCreated:n,autoResize:r=!0,strict:i}){let[a,o]=(0,U.useState)(null),[s,c]=(0,U.useState)(!1),[l,u]=(0,U.useState)(null);return(0,U.useEffect)(()=>{let a=!0,s;async function l(){try{let l=new W9(window.parent,window.parent);if(s=new Ene(e,t,{autoResize:r,strict:i}),n?.(s),await s.connect(l),!a){s.close();return}o(s),c(!0),u(null)}catch(e){a&&(o(null),c(!1),u(e instanceof Error?e:Error(`Failed to connect`)))}}return l(),()=>{a=!1,s?.close()}},[]),{app:a,isConnected:s,error:l}}function One(e){let[t,n]=(0,U.useState)(null),[r,i]=(0,U.useState)({}),[a,o]=(0,U.useState)(),[s,c]=(0,U.useState)(null);function l(e){if(e.isError){c(`This view could not be refreshed. Please try again.`);return}c(null),n(e.structuredContent)}let u=Dne({appInfo:{name:e,version:`1.0.0`},capabilities:{},onAppCreated:e=>{e.ontoolinput=e=>{i(e.arguments??{})},e.ontoolresult=l,e.onhostcontextchanged=e=>o(t=>({...t,...e})),e.onerror=e=>{console.error(`MCP app error`,e),c(`This view could not be refreshed. Please try again.`)}}});(0,U.useEffect)(()=>{u.app&&o(u.app.getHostContext())},[u.app]);async function d(e){if(u.app)try{l(await u.app.callServerTool({name:e,arguments:r}))}catch(t){console.error(`Tool call ${e} failed`,t),c(`This view could not be refreshed. Please try again.`)}}return{...u,result:t,toolInput:r,host:a,toolError:s,callTool:d}}async function kne(e,t){e&&await e.sendMessage({role:`user`,content:[{type:`text`,text:t}]})}sO([mM,XM,rN]);function Ane(){let{app:e,callTool:t,error:n,host:r,result:i,toolError:a}=One(`Fanout service topology`),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)(`graph`),u=r?.theme===`dark`;return(0,W.jsxs)(ZU,{dark:u,children:[(0,W.jsx)(QU,{title:`Service map`,summary:i?`${i.data.nodes.length} services connected by ${i.data.edges.length} routes`:void 0,onRefresh:()=>t(`get_service_topology`),disabled:!e}),(0,W.jsx)($U,{error:a??(n?`This view could not be loaded. Please try again.`:null),loading:!i&&!n&&!a?`Loading service relationships…`:void 0,retry:()=>void t(`get_service_topology`)}),i&&i.data.nodes.length===0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(tW,{tall:!0,icon:(0,W.jsx)(wU,{size:20,weight:`duotone`}),title:`No service relationships yet`,children:`Connections will appear as services communicate.`}),(0,W.jsx)(nW,{left:JJ(i.provenance.window),right:`No routes found`})]}),i&&i.data.nodes.length>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(eW,{active:c,onChange:l,items:[{id:`graph`,label:`Graph`},{id:`flow`,label:`Traffic flow`},{id:`matrix`,label:`Matrix`}]}),(0,W.jsx)(jne,{data:i.data,view:c,selected:o,dark:u,onSelect:s,onInvestigate:t=>kne(e,`Investigate dependencies and failures around ${t}.`)}),(0,W.jsx)(nW,{left:JJ(i.provenance.window),right:`${i.data.nodes.length} services · ${i.data.edges.length} routes`})]})]})}function jne({data:e,view:t,selected:n,dark:r,onSelect:i,onInvestigate:a}){let o=n?e.edges.filter(e=>e.caller===n||e.callee===n):e.edges;return(0,W.jsxs)(OH,{px:{base:`md`,sm:`lg`},pb:`md`,children:[(0,W.jsxs)(BB,{withBorder:!0,radius:`md`,p:`xs`,pos:`relative`,children:[t===`graph`&&(0,W.jsx)(Mne,{data:e,selected:n,dark:r,onSelect:i}),t===`flow`&&(0,W.jsx)(Nne,{data:e,dark:r,onSelect:i}),t===`matrix`&&(0,W.jsx)(Pne,{data:e,dark:r}),n&&(0,W.jsxs)(eH,{pos:`absolute`,top:`sm`,right:`sm`,size:`xs`,variant:`default`,leftSection:(0,W.jsx)(SU,{size:14,weight:`bold`}),onClick:()=>a(n),children:[`Investigate `,n]})]}),(0,W.jsx)(Fne,{edges:o,onSelect:i})]})}function Mne({data:e,selected:t,dark:n,onSelect:r}){let i=(0,U.useMemo)(()=>{let r=oW(n),i=sW(n);return{tooltip:{backgroundColor:r.surface,borderColor:r.border,textStyle:{color:r.text,fontSize:IU.micro}},series:[{type:`graph`,layout:`force`,roam:!0,draggable:!0,force:{repulsion:220,edgeLength:[80,150],gravity:.08},label:{show:!0,position:`bottom`,color:r.text,fontSize:IU.micro},edgeSymbol:[`none`,`arrow`],edgeSymbolSize:6,data:e.nodes.map(e=>({id:e.service,name:e.service,value:e.spans,symbol:cW(e.health),symbolSize:uW(e.health)*Math.min(46,24+Math.log10(Math.max(e.spans,1))*5),itemStyle:{color:r.surface,borderColor:$9(e.health,n),borderWidth:t===e.service?5:3,borderType:lW(e.health),opacity:t&&t!==e.service?.45:1}})),links:e.edges.map(e=>{let n=e.error_rate>=.05,a=t&&e.caller!==t&&e.callee!==t;return{source:e.caller,target:e.callee,value:e.calls,lineStyle:{width:n?4:Math.min(3.5,1+Math.log10(Math.max(e.calls,1))),color:n?i.bad:r.muted,opacity:a?.1:n?.95:.3,curveness:.08}}}),emphasis:{focus:`adjacency`,lineStyle:{opacity:.85}}}]}},[n,e,t]);return(0,W.jsx)(WJ,{option:i,height:350,label:`Interactive service dependency graph`,onClick:e=>{let t=e;t.dataType===`node`&&t.data?.id&&r(t.data.id)}})}function Nne({data:e,dark:t,onSelect:n}){let r=(0,U.useMemo)(()=>Ine(e.edges),[e.edges]),i=(0,U.useMemo)(()=>{let n=oW(t);return{tooltip:{trigger:`item`,backgroundColor:n.surface,borderColor:n.border,textStyle:{color:n.text,fontSize:IU.micro}},series:[{type:`sankey`,left:20,right:30,top:20,bottom:20,nodeWidth:14,nodeGap:12,draggable:!0,emphasis:{focus:`adjacency`},label:{color:n.text,fontSize:IU.micro},lineStyle:{color:`gradient`,opacity:.28,curveness:.55},data:e.nodes.map(e=>({name:e.service,itemStyle:{color:$9(e.health,t),borderColor:n.surface,borderWidth:2}})),links:r.map(e=>({source:e.caller,target:e.callee,value:Math.max(e.calls,1)}))}]}},[t,e.nodes,r]);return r.length===0?(0,W.jsx)(tW,{tall:!0,icon:(0,W.jsx)(bU,{size:20,weight:`duotone`}),title:`No traffic routes observed`,children:`Services are visible, but this window contains no direct service-to-service calls.`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(WJ,{option:i,height:350,label:`Primary service traffic flow`,onClick:e=>{let t=e;t.dataType===`node`&&t.name&&n(t.name)}}),(0,W.jsxs)(HV,{c:`dimmed`,size:`xs`,ta:`center`,children:[`Showing `,r.length,` primary routes from `,e.edges.length,` observed connections`]})]})}function Pne({data:e,dark:t}){let n=e.nodes.map(e=>e.service),r=Math.max(...e.edges.map(e=>e.error_rate),.01),i=(0,U.useMemo)(()=>{let i=oW(t),a=sW(t);return{grid:{left:100,right:25,top:15,bottom:80},tooltip:{backgroundColor:i.surface,borderColor:i.border,textStyle:{color:i.text,fontSize:IU.micro},formatter:e=>f(n[e.data[1]],n[e.data[0]],GJ.format(e.data[3]),qJ(e.data[4]),KJ(e.data[2]))},xAxis:{type:`category`,data:n,splitArea:{show:!0},axisLabel:{color:i.muted,rotate:35,fontSize:IU.micro},axisLine:{lineStyle:{color:i.border}}},yAxis:{type:`category`,data:n,splitArea:{show:!0},axisLabel:{color:i.text,fontSize:IU.micro},axisLine:{lineStyle:{color:i.border}}},visualMap:{min:0,max:r,calculable:!0,orient:`horizontal`,left:`center`,bottom:8,textStyle:{color:i.muted,fontSize:IU.micro},inRange:{color:[i.grid,a.warn,a.bad]}},series:[{type:`heatmap`,data:e.edges.map(e=>[n.indexOf(e.callee),n.indexOf(e.caller),e.error_rate,e.calls,e.average_ms])}]}},[t,e,r,n]);return(0,W.jsx)(WJ,{option:i,height:380,label:`Service dependency error matrix`})}function Fne({edges:e,onSelect:t}){let n=rW(e,6);return e.length===0?null:(0,W.jsxs)(BB,{withBorder:!0,radius:`md`,style:{overflow:`hidden`},children:[(0,W.jsx)(WH.ScrollContainer,{minWidth:520,children:(0,W.jsxs)(WH,{striped:!0,highlightOnHover:!0,verticalSpacing:`sm`,children:[(0,W.jsx)(WH.Thead,{children:(0,W.jsxs)(WH.Tr,{children:[(0,W.jsx)(WH.Th,{children:`Route`}),(0,W.jsx)(WH.Th,{children:`Calls`}),(0,W.jsx)(WH.Th,{children:`Latency`}),(0,W.jsx)(WH.Th,{children:`Errors`})]})}),(0,W.jsx)(WH.Tbody,{children:n.pageItems.map(e=>(0,W.jsxs)(WH.Tr,{tabIndex:0,onClick:()=>t(e.caller),onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&t(e.caller)},style:{cursor:`pointer`},children:[(0,W.jsx)(WH.Td,{children:(0,W.jsxs)(HV,{component:`span`,ff:`monospace`,size:`sm`,children:[e.caller,` → `,e.callee]})}),(0,W.jsx)(WH.Td,{children:GJ.format(e.calls)}),(0,W.jsx)(WH.Td,{children:qJ(e.average_ms)}),(0,W.jsx)(WH.Td,{children:KJ(e.error_rate)})]},`${e.caller}-${e.callee}-${e.type}`))})]})}),(0,W.jsx)(aW,{...n,onChange:n.setPage})]})}function $9(e,t){let n=sW(t);return e===`unhealthy`?n.bad:e===`degraded`?n.warn:e===`unknown`?oW(t).muted:n.ok}function Ine(e){let t=[],n=new Map,r=(e,t,i=new Set)=>{if(e===t)return!0;if(i.has(e))return!1;i.add(e);for(let a of n.get(e)??[])if(r(a,t,i))return!0;return!1};for(let i of[...e].sort((e,t)=>t.calls-e.calls||e.caller.localeCompare(t.caller)||e.callee.localeCompare(t.callee))){if(i.caller===i.callee||r(i.callee,i.caller))continue;let e=n.get(i.caller)??new Set;e.add(i.callee),n.set(i.caller,e),t.push(i)}return t}(0,OU.createRoot)(document.getElementById(`root`)).render((0,W.jsx)(U.StrictMode,{children:(0,W.jsx)(Ane,{})})); diff --git a/internal/mcp/apps/trace.html b/internal/mcp/apps/trace.html index fdaf4a4b..924f30b6 100644 --- a/internal/mcp/apps/trace.html +++ b/internal/mcp/apps/trace.html @@ -5,10 +5,10 @@ `);for(i=r=0;ri||c[r]!==l[i]){var u=` `+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{Pe=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Ne(n):``}function Ie(e,t){switch(e.tag){case 26:case 27:case 5:return Ne(e.type);case 16:return Ne(`Lazy`);case 13:return e.child!==t&&t!==null?Ne(`Suspense Fallback`):Ne(`Suspense`);case 19:return Ne(`SuspenseList`);case 0:case 15:return Fe(e.type,!1);case 11:return Fe(e.type.render,!1);case 1:return Fe(e.type,!0);case 31:return Ne(`Activity`);case 30:return Ne(`ViewTransition`);default:return``}}function Le(e){try{var t=``,n=null;do t+=Ie(e,n),n=e,e=e.return;while(e);return t}catch(e){return` Error generating stack: `+e.message+` -`+e.stack}}var Re=Object.prototype.hasOwnProperty,ze=t.unstable_scheduleCallback,Be=t.unstable_cancelCallback,Ve=t.unstable_shouldYield,He=t.unstable_requestPaint,Ue=t.unstable_now,We=t.unstable_getCurrentPriorityLevel,Ge=t.unstable_ImmediatePriority,Ke=t.unstable_UserBlockingPriority,qe=t.unstable_NormalPriority,Je=t.unstable_LowPriority,Ye=t.unstable_IdlePriority,Xe=t.log,Ze=t.unstable_setDisableYieldValue,Qe=null,$e=null;function et(e){if(typeof Xe==`function`&&Ze(e),$e&&typeof $e.setStrictMode==`function`)try{$e.setStrictMode(Qe,e)}catch{}}var tt=Math.clz32?Math.clz32:it,nt=Math.log,rt=Math.LN2;function it(e){return e>>>=0,e===0?32:31-(nt(e)/rt|0)|0}var at=256,ot=262144,st=4194304;function ct(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function lt(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=ct(n))):i=ct(o):i=ct(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=ct(n))):i=ct(o)):i=ct(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function ut(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function dt(e,t){t&8&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0n;n++)t.push(e);return t}function ht(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function gt(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0=pr),gr=` `,_r=!1;function vr(e,t){switch(e){case`keyup`:return dr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function yr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var br=!1;function xr(e,t){switch(e){case`compositionend`:return yr(t);case`keypress`:return t.which===32?(_r=!0,gr):null;case`textInput`:return e=t.data,e===gr&&_r?null:e;default:return null}}function Sr(e,t){if(br)return e===`compositionend`||!fr&&vr(e,t)?(e=Fn(),Pn=Nn=Mn=null,br=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Gr(n)}}function qr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?qr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Jr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Wr(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Wr(e.document)}return t}function Yr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Xr=kn&&`documentMode`in document&&11>=document.documentMode,Zr=null,Qr=null,$r=null,ei=!1;function ti(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ei||Zr==null||Zr!==Wr(r)||(r=Zr,`selectionStart`in r&&Yr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),$r&&Ur($r,r)||($r=r,r=ap(Qr,`onSelect`),0>=o,i-=o,Zi=1<<32-tt(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),oa&&$i(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),oa&&$i(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return oa&&$i(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&(_=v.alternate,_!==null&&h.delete(_.key===null?g:_.key)),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),oa&&$i(a,g),u}function _(e,r,o,c){if(typeof o==`object`&&o&&o.type===O&&o.key===null&&o.props.ref===void 0&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case E:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===O){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),uo(c,o),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===ae&&ro(l)===r.type){n(e,r.sibling),c=a(r,o.props),uo(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===O?(c=Ri(o.props.children,e.mode,c,o.key),uo(c,o),c.return=e,e=c):(c=Li(o.type,o.key,o.props,null,e.mode,c),uo(c,o),c.return=e,e=c)}return s(e);case D:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Vi(o,e.mode,c),c.return=e,e=c}return s(e);case ae:return o=ro(o),_(e,r,o,c)}if(he(o))return h(e,r,o,c);if(fe(o)){if(l=fe(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return _(e,r,lo(o),c);if(o.$$typeof===j)return _(e,r,Oa(e,o),c);fo(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=zi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{co=0;var i=_(e,t,n,r);return so=null,i}catch(t){if(t===Za||t===$a)throw t;var a=Ni(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var mo=po(!0),ho=po(!1),go=!1;function _o(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function vo(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function yo(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function bo(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,sd&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Ai(e),ki(e,null,n),t}return Ei(e,r,t,n),Ai(e)}function xo(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,vt(e,n)}}function So(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Co=!1;function wo(){if(Co){var e=Ha;if(e!==null)throw e}}function To(e,t,n,r){Co=!1;var i=e.updateQueue;go=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(ld&f)===f:(r&f)===f){f!==0&&f===Va&&(Co=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,h=s;f=t;var g=n;switch(h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(g,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(g,d,f):m,f==null)break a;d=T({},d,f);break a;case 2:go=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),_d|=o,e.lanes=o,e.memoizedState=d}}function Eo(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function Do(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=N.T,s={};s.types=o===null?null:o.types,N.T=s,mc(e,!1,t,n);try{var c=i(),l=N.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?pc(e,t,Ga(c,r),Hd(e)):pc(e,t,r,Hd(e))}catch(n){pc(e,t,{then:function(){},status:`rejected`,reason:n},Hd())}finally{P.p=a,o!==null&&s.types!==null&&(o.types=s.types),N.T=o}}function rc(){}function ic(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=ac(e).queue;nc(e,a,t,ge,n===null?rc:function(){return oc(e),n(r)})}function ac(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ge,baseState:ge,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:hs,lastRenderedState:ge},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:hs,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function oc(e){var t=ac(e);t.next===null&&(t=e.alternate.memoizedState),pc(e,t.next.queue,{},Hd())}function sc(){return Da(yh)}function cc(){return us().memoizedState}function lc(){return us().memoizedState}function uc(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=Hd();e=yo(n);var r=bo(t,e,n);r!==null&&(Gd(r,t,n),xo(r,t,n)),t={cache:Pa()},e.payload=t;return}t=t.return}}function dc(e,t,n){var r=Hd();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},hc(e)?gc(t,n):(n=Di(e,t,n,r),n!==null&&(Gd(n,e,r),_c(n,t,r)))}function fc(e,t,n){pc(e,t,n,Hd())}function pc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(hc(e))gc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Hr(s,o))return Ei(e,t,i,0),cd===null&&Ti(),!1}catch{}if(n=Di(e,t,i,r),n!==null)return Gd(n,e,r),_c(n,t,r),!0}return!1}function mc(e,t,n,r){if(r={lane:2,revertLane:Wf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},hc(e)){if(t)throw Error(i(479))}else t=Di(e,n,r,2),t!==null&&Gd(t,e,2)}function hc(e){var t=e.alternate;return e===R||t!==null&&t===R}function gc(e,t){Jo=qo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function _c(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,vt(e,n)}}var vc={readContext:Da,use:ps,useCallback:es,useContext:es,useEffect:es,useImperativeHandle:es,useLayoutEffect:es,useInsertionEffect:es,useMemo:es,useReducer:es,useRef:es,useState:es,useDebugValue:es,useDeferredValue:es,useTransition:es,useSyncExternalStore:es,useId:es,useHostTransitionStatus:es,useFormState:es,useActionState:es,useOptimistic:es,useMemoCache:es,useCacheRefresh:es,useEffectEvent:es},yc={readContext:Da,use:ps,useCallback:function(e,t){return ls().memoizedState=[e,t===void 0?null:t],e},useContext:Da,useEffect:Us,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Vs(4194308,4,Ys.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Vs(4194308,4,e,t)},useInsertionEffect:function(e,t){Vs(4,2,e,t)},useMemo:function(e,t){var n=ls();t=t===void 0?null:t;var r=e();if(Yo){et(!0);try{e()}finally{et(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=ls();if(n!==void 0){var i=n(t);if(Yo){et(!0);try{n(t)}finally{et(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=dc.bind(null,R,e),[r.memoizedState,e]},useRef:function(e){var t=ls();return e={current:e},t.memoizedState=e},useState:function(e){e=Ts(e);var t=e.queue,n=fc.bind(null,R,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Zs,useDeferredValue:function(e,t){return ec(ls(),e,t)},useTransition:function(){var e=Ts(!1);return e=nc.bind(null,R,e.queue,!0,!1),ls().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=R,a=ls();if(oa){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),cd===null)throw Error(i(349));ld&127||bs(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,Us(Ss.bind(null,r,o,e),[e]),r.flags|=2048,zs(9,{destroy:void 0},xs.bind(null,r,o,n,t),null),n},useId:function(){var e=ls(),t=cd.identifierPrefix;if(oa){var n=Qi,r=Zi;n=(r&~(1<<32-tt(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=Xo++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[Tt]=t,o[Et]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(mp(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&_l(t)}}return Sl(t),t.subtreeFlags&=-33554433,vl(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&_l(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=we.current,pa(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=ia,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[Tt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||dp(e.nodeValue,n)),e||ua(t,!0)}else e=xp(e).createTextNode(r),e[Tt]=t,t.stateNode=e}return Sl(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=pa(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[Tt]=t}else ma(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Sl(t),e=!1}else n=ha(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(zo(t),t):(zo(t),null);if(t.flags&128)throw Error(i(558))}return Sl(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=pa(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[Tt]=t}else ma(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Sl(t),a=!1}else a=ha(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(zo(t),t):(zo(t),null)}return zo(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),bl(t,t.updateQueue),Sl(t),null);case 4:return De(),e===null&&tp(t.stateNode.containerInfo),t.flags|=67108864,Sl(t),null;case 10:return xa(t.type),Sl(t),null;case 19:if(Ho(t),r=t.memoizedState,r===null)return Sl(t),null;if(a=!!(t.flags&128),o=r.rendering,o===null){if(a)xl(r,!1);else{if(gd!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=Uo(e),o!==null){for(t.flags|=128,xl(r,!1),e=o.updateQueue,t.updateQueue=e,bl(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Ii(n,e),n=n.sibling;return Vo(t,Bo.current&1|2),oa&&$i(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Ue()>Dd&&(t.flags|=128,a=!0,xl(r,!1),t.lanes=4194304)}}else{if(!a){if(e=Uo(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,bl(t,e),xl(r,!0),r.tail===null&&r.tailMode!==`collapsed`&&r.tailMode!==`visible`&&!o.alternate&&!oa)return Sl(t),null}else 2*Ue()-r.renderingStartTime>Dd&&n!==536870912&&(t.flags|=128,a=!0,xl(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}if(r.tail!==null){e=r.tail;a:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break a}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Ue(),e.sibling=null,o=Bo.current,o=a?o&1|2:o&1,r.tailMode===`visible`||r.tailMode===`collapsed`||!n||oa?Vo(t,o):(n=o,xe(No,t),xe(Bo,n),Po===null&&(Po=t)),oa&&$i(t,r.treeForkCount),e}return Sl(t),null;case 22:case 23:return zo(t),Mo(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(Sl(t),t.subtreeFlags&6&&(t.flags|=8192)):Sl(t),n=t.updateQueue,n!==null&&bl(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&be(qa),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),xa(Na),Sl(t),null;case 25:return null;case 30:return t.flags|=33554432,Sl(t),null}throw Error(i(156,t.tag))}function wl(e,t){switch(na(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return xa(Na),De(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Ae(t),null;case 31:if(t.memoizedState!==null){if(zo(t),t.alternate===null)throw Error(i(340));ma()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(zo(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));ma()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Ho(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return De(),null;case 10:return xa(t.type),null;case 22:case 23:return zo(t),Mo(),e!==null&&be(qa),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return xa(Na),null;case 25:return null;default:return null}}function Tl(e,t){switch(na(t),t.tag){case 3:xa(Na),De();break;case 26:case 27:case 5:Ae(t);break;case 4:De();break;case 31:t.memoizedState!==null&&zo(t);break;case 13:zo(t);break;case 19:Ho(t);break;case 10:xa(t.type);break;case 22:case 23:zo(t),Mo(),e!==null&&be(qa);break;case 24:xa(Na)}}function El(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){wf(t,t.return,e)}}function Dl(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){wf(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){wf(t,t.return,e)}}function Ol(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Do(t,n)}catch(t){wf(e,e.return,t)}}}function kl(e,t,n){n.props=Ec(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){wf(e,t,n)}}function Al(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:var i=e.stateNode,a=vi(e.memoizedProps,i);(i.ref===null||i.ref.name!==a)&&(i.ref=Kp(a)),r=i.ref;break;case 7:if(e.stateNode===null){var o=new qp(e);f(e.child,!1,um,o,void 0,void 0),e.stateNode=o}r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){wf(e,t,n)}}function jl(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){wf(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){wf(e,t,n)}else n.current=null}}function Ml(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n title`))),mp(r,t,n),r[Tt]=e,Rt(r),t=r;break a;case`link`:if(o=rh(`link`,`href`,a).get(t+(n.href||``))){for(s=0;sg&&(o=g,g=h,h=o);var _=Kr(s,h),v=Kr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,N.T=null,n=Fd,Fd=null;var o=jd,s=Nd;if(Ad=0,Md=jd=null,Nd=0,sd&6)throw Error(i(331));var c=sd;if(sd|=4,nd(o.current),Ju(o,o.current,s,n),sd=c,Lf(0,!1),$e&&typeof $e.onPostCommitFiberRoot==`function`)try{$e.onPostCommitFiberRoot(Qe,o)}catch{}return!0}finally{P.p=a,N.T=r,bf(e,t)}}function Cf(e,t,n){t=Ui(n,t),t=Mc(e.stateNode,t,2),e=bo(e,t,2),e!==null&&(ht(e,2),V(e))}function wf(e,t,n){if(e.tag===3)Cf(e,e,n);else for(;t!==null;){if(t.tag===3){Cf(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(kd===null||!kd.has(r))){e=Ui(n,e),n=Nc(2),r=bo(t,n,2),r!==null&&(Pc(n,r,t,e),ht(r,2),V(r));break}}t=t.return}}function Tf(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new od;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(md=!0,i.add(n),e=Ef.bind(null,e,t,n),t.then(e,e))}function Ef(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,cd===e&&(ld&n)===n&&(gd===4||gd===3&&(ld&62914560)===ld&&300>Ue()-Td?sd&2?yd|=n:Zd(e,0):yd|=n,xd===ld&&(xd=0)),V(e)}function Df(e,t){t===0&&(t=pt()),e=Oi(e,t),e!==null&&(ht(e,t),V(e))}function Of(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Df(e,n)}function kf(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),Df(e,n)}function Af(e,t){return ze(e,t)}var jf=null,Mf=null,Nf=!1,Pf=!1,Ff=!1,If=0;function V(e){e!==Mf&&e.next===null&&(Mf===null?jf=Mf=e:Mf=Mf.next=e),Pf=!0,Nf||(Nf=!0,Uf())}function Lf(e,t){if(!Ff&&Pf){Ff=!0;do for(var n=!1,r=jf;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-tt(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Hf(r,a))}else a=ld,a=lt(r,r===cd?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||ut(r,a)||(n=!0,Hf(r,a))}r=r.next}while(n);Ff=!1}}function Rf(){zf()}function zf(){Pf=Nf=!1;var e=0;If!==0&&Dp()&&(e=If);for(var t=Ue(),n=null,r=jf;r!==null;){var i=r.next,a=Bf(r,t);a===0?(r.next=null,n===null?jf=i:n.next=i,i===null&&(Mf=n)):(n=r,(e!==0||a&3)&&(Pf=!0)),r=i}Ad!==0&&Ad!==5||Lf(e,!1),If!==0&&(If=0)}function Bf(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&_p(d)&&(c=c.responseEnd,o+=u*(cdh){s.length=o;break}f=new Promise(Up.bind(f)),s.push(f)}}}if(0`u`?null:document;function Lm(e,t,n){var r=Im;if(r&&typeof t==`string`&&t){var i=an(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),jm.has(i)||(jm.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),mp(t,`link`,e),Rt(t),r.head.appendChild(t)))}}function Rm(e){Nm.D(e),Lm(`dns-prefetch`,e,null)}function zm(e,t){Nm.C(e,t),Lm(`preconnect`,e,t)}function Bm(e,t,n){Nm.L(e,t,n);var r=Im;if(r&&e&&t){var i=`link[rel="preload"][as="`+an(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+an(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+an(n.imageSizes)+`"]`)):i+=`[href="`+an(e)+`"]`;var a=i;switch(t){case`style`:a=Km(e);break;case`script`:a=Xm(e)}if(!(Am.has(a)||(e=T({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),Am.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(qm(a))||t===`script`&&r.querySelector(Zm(a))))){var o=r.createElement(`link`);mp(o,`link`,e),t===`style`&&(o[Mt]=!0,o.onload=o.onerror=function(){zt(o)}),Rt(o),r.head.appendChild(o)}}}function Vm(e,t){Nm.m(e,t);var n=Im;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+an(r)+`"][href="`+an(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Xm(e)}if(!Am.has(a)&&(e=T({rel:`modulepreload`,href:e},t),Am.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Zm(a)))return}r=n.createElement(`link`),mp(r,`link`,e),Rt(r),n.head.appendChild(r)}}}function Hm(e,t,n){Nm.S(e,t,n);var r=Im;if(r&&e){var i=Lt(r).hoistableStyles,a=Km(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(qm(a)))s.loading=5;else{e=T({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=Am.get(a))&&eh(e,n);var c=o=r.createElement(`link`);Rt(c),mp(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,$m(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Um(e,t){Nm.X(e,t);var n=Im;if(n&&e){var r=Lt(n).hoistableScripts,i=Xm(e),a=r.get(i);a||(a=n.querySelector(Zm(i)),a||(e=T({src:e,async:!0},t),(t=Am.get(i))&&th(e,t),a=n.createElement(`script`),Rt(a),mp(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Wm(e,t){Nm.M(e,t);var n=Im;if(n&&e){var r=Lt(n).hoistableScripts,i=Xm(e),a=r.get(i);a||(a=n.querySelector(Zm(i)),a||(e=T({src:e,async:!0,type:`module`},t),(t=Am.get(i))&&th(e,t),a=n.createElement(`script`),Rt(a),mp(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Gm(e,t,n,r){var a=(a=we.current)?Mm(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Km(n.href),t=Lt(a).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Km(n.href);var o=Lt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(qm(e)))?o._p||(s.instance=o,s.state.loading=5):(o=Am.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},Am.set(e,o)),Ym(a,e,o,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Xm(n),t=Lt(a).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Km(e){return`href="`+an(e)+`"`}function qm(e){return`link[rel="stylesheet"][`+e+`]`}function Jm(e){return T({},e,{"data-precedence":e.precedence,precedence:null})}function Ym(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[Mt]){r.loading=1;return}}else t=e.createElement(`link`),t[Mt]=!0,t.onload=t.onerror=zt.bind(null,t),mp(t,`link`,n),Rt(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Xm(e){return`[src="`+an(e)+`"]`}function Zm(e){return`script[async]`+e}function Qm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+an(n.href)+`"]`);if(r)return t.instance=r,Rt(r),r;var a=T({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Rt(r),mp(r,`style`,a),$m(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Km(n.href);var o=e.querySelector(qm(a));if(o)return t.state.loading|=4,t.instance=o,Rt(o),o;r=Jm(n),(a=Am.get(a))&&eh(r,a),o=(e.ownerDocument||e).createElement(`link`),Rt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),mp(o,`link`,r),t.state.loading|=4,$m(o,n.precedence,e),t.instance=o;case`script`:return o=Xm(n.src),(a=e.querySelector(Zm(o)))?(t.instance=a,Rt(a),a):(r=n,(a=Am.get(o))&&(r=T({},n),th(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),Rt(a),mp(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,$m(r,n.precedence,e));return t.instance}function $m(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function ah(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function oh(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function sh(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function ch(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function lh(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=ch(t),e.suspenseyImages.push(t)),e=hh.bind(e),t.decode().then(e,e))}function uh(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Km(r.href),a=t.querySelector(qm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=mh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Rt(a);return}a=t.ownerDocument||t,r=Jm(r),(i=Am.get(i))&&eh(r,i),a=a.createElement(`link`),Rt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),mp(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=mh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var dh=0;function fh(e,t){return e.stylesheets&&e.count===0&&_h(e,e.stylesheets),0dh?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function ph(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)_h(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function mh(){this.count--,ph(this)}function hh(){this.imgCount--,ph(this)}var gh=null;function _h(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,gh=new Map,t.forEach(vh,e),gh=null,mh.call(e))}function vh(e,t){if(!(t.state.loading&4)){var n=gh.get(e);if(n)var r=n.get(null);else{n=new Map,gh.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=Ou()}))(),Au=[`#fafafa`,`#e6e4de`,`#bfbdb6`,`#8b8e99`,`#565b69`,`#1d2433`,`#131721`,`#0b0e14`,`#080a10`,`#05070b`],ju=[`#f3ecfd`,`#ece3fb`,`#dcc9f7`,`#d2a6ff`,`#bf94ec`,`#a97ce0`,`#9163d6`,`#7c4dcc`,`#5b32a3`,`#40236f`],Mu=[`#eefbe6`,`#dcf7cc`,`#c2f0a6`,`#a5e880`,`#8fe06c`,`#7fd962`,`#66c04b`,`#4f9c3a`,`#3b7a2c`,`#2a5a1f`],Nu=[`#fff5e6`,`#ffe9c9`,`#ffd79b`,`#ffc571`,`#ffbc62`,`#ffb454`,`#ef9c33`,`#c87d21`,`#9c5f16`,`#74460f`],Pu=[`#fdecee`,`#fbd9dc`,`#f8b6bc`,`#f59099`,`#f37d87`,`#f26d78`,`#e04d5a`,`#c03642`,`#96262f`,`#6f1a21`],Fu=[`#e8f6ff`,`#ccebff`,`#a3daff`,`#7dcbff`,`#66c5ff`,`#59c2ff`,`#33a7e6`,`#1e86bd`,`#146694`,`#0d4a6d`],Iu={dark:{text:`#bfbdb6`,muted:`#8b8e99`,grid:`#1d2433`,surface:`#131721`,border:`#565b69`},light:{text:`#4a5058`,muted:`#6b7280`,grid:`#eceef0`,surface:`#fcfcfc`,border:`#a4abb4`}},Lu={dark:[`#66d0ee`,`#a97ce0`,`#5fe8ce`,`#cb55e8`,`#41b6f8`,`#d2a6ff`],light:[`#2b93b5`,`#7c4dcc`,`#1a9c86`,`#a12fbf`,`#2f7fd4`,`#9163d6`]},Ru={micro:11,small:12,body:14,title:16,section:22,page:32},zu={display:`"Geist Mono Variable", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace`,body:`"Geist Variable", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`},Bu={brand:ju,ok:Mu,warn:Nu,bad:Pu,info:Fu},Vu={light:7,dark:5};function Hu(e){let t=e.replace(`#`,``),n=t.length===3?[...t].map(e=>e+e).join(``):t,r=e=>{let t=parseInt(n.slice(e,e+2),16)/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4};return .2126*r(0)+.7152*r(2)+.0722*r(4)}function Uu(e){let t=Hu(e),n=1.05/(t+.05);return(t+.05)/.05>n?`var(--mantine-color-black)`:`var(--mantine-color-white)`}function Wu(e){return Object.fromEntries(Object.entries(Bu).map(([t,n])=>[`--fanout-color-${t}-contrast`,Uu(n[Vu[e]])]))}function Gu(e){return t=>{let n=t.color??Ju.primaryColor,r=e({...t,color:n}),i=t.variant===`filled`||t.variant===void 0;return t.autoContrast===!1||!i||!Object.hasOwn(Bu,n)?r:{...r,color:`var(--fanout-color-${n}-contrast)`}}}var Ku=.25,qu={xs:9,sm:10,md:11,lg:13,xl:16},Ju={primaryColor:`brand`,primaryShade:Vu,autoContrast:!0,luminanceThreshold:Ku,colors:{dark:Au,brand:ju,ok:Mu,warn:Nu,bad:Pu,info:Fu},defaultRadius:`md`,fontFamily:zu.body,fontFamilyMonospace:zu.display,headings:{fontFamily:zu.body,fontWeight:`600`},cursorType:`pointer`,components:{Tabs:{styles:(e,t)=>({tab:Zu(t.color,`--tabs-text-color`)})},Pagination:{styles:(e,t)=>({control:Zu(t.color,`--pagination-active-color`)})},Badge:{vars:(e,t)=>({root:Xu(t.size)})}}},Yu=()=>({variables:{"--mantine-color-error":`var(--mantine-color-bad-filled)`},light:{"--mantine-color-dimmed":Iu.light.muted,...Wu(`light`)},dark:Wu(`dark`)});function Xu(e){let t=qu[e??`md`];return t===void 0||t>=Ru.micro?{}:{"--badge-fz":`${Ru.micro/16}rem`}}function Zu(e,t){return!e||e===Ju.primaryColor?{[t]:`var(--fanout-color-${Ju.primaryColor}-contrast)`}:{}}var Qu=Yt({...Ju,variantColorResolver:Gu(it)});function $u({dark:e,children:t}){return(0,F.jsx)(Jt,{theme:Qu,cssVariablesResolver:Yu,forceColorScheme:e?`dark`:`light`,children:(0,F.jsx)(ms,{withBorder:!0,radius:`lg`,style:{overflow:`hidden`},children:t})})}function ed({title:e,summary:t,onRefresh:n,disabled:r}){return(0,F.jsxs)(cc,{justify:`space-between`,align:`flex-start`,wrap:`nowrap`,px:{base:`md`,sm:`lg`},pt:`sm`,pb:`xs`,children:[(0,F.jsxs)(L,{miw:0,children:[(0,F.jsx)(mu,{order:2,fz:`lg`,style:{overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:e}),t&&(0,F.jsx)(gc,{c:`dimmed`,size:`sm`,mt:2,children:t})]}),(0,F.jsx)(gl,{label:`Refresh this view`,children:(0,F.jsx)(Qs,{variant:`default`,size:`md`,"aria-label":`Refresh this view`,onClick:()=>void n(),disabled:r,children:(0,F.jsx)(xu,{size:15,weight:`bold`})})})]})}function td({error:e,loading:t,retry:n}){return e?(0,F.jsx)(dc,{color:`bad`,m:`md`,radius:`md`,children:(0,F.jsxs)(cc,{justify:`space-between`,children:[(0,F.jsx)(gc,{size:`sm`,children:e}),n&&(0,F.jsx)(Oc,{size:`compact-sm`,variant:`light`,color:`bad`,onClick:n,children:`Retry`})]})}):t?(0,F.jsxs)(Ac,{mih:160,p:`xl`,children:[(0,F.jsx)(Ws,{size:`sm`}),(0,F.jsx)(gc,{c:`dimmed`,size:`sm`,ml:`sm`,children:t})]}):null}function nd({active:e,items:t,onChange:n}){return(0,F.jsx)(ss,{type:`auto`,offsetScrollbars:!0,scrollbarSize:6,children:(0,F.jsx)(iu,{value:e,onChange:e=>e&&n(e),variant:`pills`,px:{base:`md`,sm:`lg`},pb:`sm`,children:(0,F.jsx)(iu.List,{style:{flexWrap:`nowrap`},children:t.map(e=>(0,F.jsx)(iu.Tab,{value:e.id,rightSection:e.count===void 0?void 0:(0,F.jsx)(yc,{size:`xs`,variant:`light`,children:e.count}),children:e.label},e.id))})})})}function rd({icon:e,title:t,children:n,tall:r=!1}){return(0,F.jsx)(Ac,{mih:r?220:130,p:`xl`,children:(0,F.jsxs)(cc,{wrap:`nowrap`,children:[(0,F.jsx)(su,{variant:`light`,size:`xl`,radius:`md`,children:e}),(0,F.jsxs)(L,{children:[(0,F.jsx)(gc,{fw:700,size:`sm`,children:t}),(0,F.jsx)(gc,{c:`dimmed`,size:`xs`,mt:3,children:n})]})]})})}function id({left:e,right:t}){return(0,F.jsxs)(cc,{justify:`space-between`,px:{base:`md`,sm:`lg`},py:`xs`,style:{borderTop:`1px solid var(--mantine-color-default-border)`},children:[(0,F.jsx)(gc,{c:`dimmed`,size:`xs`,children:e}),(0,F.jsx)(gc,{c:`dimmed`,size:`xs`,ta:`right`,children:t})]})}function ad({label:e,value:t,color:n}){return(0,F.jsxs)(ms,{withBorder:!0,radius:`md`,p:`sm`,children:[(0,F.jsx)(gc,{c:`dimmed`,size:`xs`,children:e}),(0,F.jsx)(gc,{fw:700,fz:`xl`,c:n,mt:3,children:t})]})}function od(e,t=8){let[n,r]=(0,C.useState)(1),i=Math.max(1,Math.ceil(e.length/t));(0,C.useEffect)(()=>{n>i&&r(i)},[n,i]);let a=(n-1)*t;return{page:n,setPage:r,totalPages:i,pageItems:e.slice(a,a+t),from:e.length===0?0:a+1,to:Math.min(a+t,e.length),total:e.length}}var sd={first:`First page`,previous:`Previous page`,next:`Next page`,last:`Last page`};function cd({page:e,totalPages:t,from:n,to:r,total:i,onChange:a}){return t<=1?null:(0,F.jsxs)(cc,{justify:`space-between`,gap:`sm`,px:{base:`md`,sm:`lg`},py:`xs`,style:{borderTop:`1px solid var(--mantine-color-default-border)`},children:[(0,F.jsxs)(gc,{c:`dimmed`,size:`xs`,children:[n,`–`,r,` of `,i]}),(0,F.jsx)(nl,{value:e,total:t,onChange:a,size:`xs`,withEdges:!0,"aria-label":`Table pages`,getItemProps:e=>({"aria-label":`Page ${e}`}),getControlProps:e=>({"aria-label":sd[e]})})]})}function z(e,t){let n=Lu[t?`dark`:`light`],r=0;for(let t of e)r=r*31+t.charCodeAt(0)|0;return n[Math.abs(r)%n.length]}function ld(e){let t=String(e).toUpperCase();return t===`ERROR`||t===`FATAL`?`bad`:t===`WARN`||t===`WARNING`?`warn`:t===`INFO`?`info`:`gray`}var ud=new Intl.NumberFormat(void 0,{maximumFractionDigits:0});function dd(e){if(!Number.isFinite(e))return`—`;if(e<0)return`-${dd(-e)}`;if(e===0)return`0ms`;if(e<.01)return`<0.01ms`;if(e<1)return`${e.toFixed(2)}ms`;if(Math.round(e*10)/10<100)return`${e.toFixed(1)}ms`;if(Math.round(e)<1e3)return`${Math.round(e)}ms`;let t=Math.round(e/100)/10;if(t<10)return`${(e/1e3).toFixed(2)}s`;if(t<60)return`${t.toFixed(1)}s`;let n=Math.round(e/1e3),r=Math.floor(n/60),i=n%60;if(r<60)return i===0?`${r}m`:`${r}m ${i}s`;let a=Math.floor(r/60),o=r%60;return o===0?`${a}h`:`${a}h ${o}m`}function fd(e){let[t,n]=e.split(`/`),r=new Date(t),i=new Date(n);if(Number.isNaN(r.valueOf())||Number.isNaN(i.valueOf()))return e;let a=Math.round((i.valueOf()-r.valueOf())/6e4);return a>=60&&a%60==0?`Last ${a/60}h`:`Last ${Math.max(a,1)}m`}function pd(e=new Date){let t=e instanceof Date?e:new Date(e);return Number.isNaN(t.valueOf())?pd(new Date):new Intl.DateTimeFormat([],{timeZoneName:`short`}).formatToParts(t).find(e=>e.type===`timeZoneName`)?.value??``}function md(e){let t=e instanceof Date?e:new Date(e);return Number.isNaN(t.valueOf())?String(e):t.toLocaleString([],{year:`numeric`,month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`,second:`2-digit`,timeZoneName:`short`})}var hd=Object.defineProperty,gd=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),_d=(e,t)=>{let n={};for(var r in e)hd(n,r,{get:e[r],enumerable:!0});return t&&hd(n,Symbol.toStringTag,{value:`Module`}),n},vd=new Set([`https://json-schema.org/draft/2019-09/schema`,`http://json-schema.org/draft/2019-09/schema`]);function yd(e){return typeof e==`string`&&vd.has(e.replace(/#$/,``))}function bd(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function xd(e,t=`|`){return e.map(e=>Jd(e)).join(t)}function Sd(e,t){return typeof t==`bigint`?t.toString():t}var Cd=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function wd(e){return new Cd(e)}function Td(e){return e==null}function Ed(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function Dd(e,t){let n=e/t,r=Math.round(n),i=4*2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r){let e=t._zod.def.shape[a];return r?r(e,a):e}):Pd(e,a,r?r(n.value,a):n.value))}}function Id(e,t){for(let n of Reflect.ownKeys(t)){let r=Object.getOwnPropertyDescriptor(t,n);r.enumerable&&(r.get?Nd(e,n,()=>t[n]):Pd(e,n,r.value))}}function Ld(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function Rd(e){return JSON.stringify(e)}function zd(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var Bd=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function Vd(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var Hd=wd(()=>{if(zf.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function Ud(e){if(Vd(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return Vd(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function Wd(e){return Ud(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var Gd=new Set([`string`,`number`,`symbol`]);function Kd(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function qd(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function B(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function Jd(e){return typeof e==`bigint`?e.toString()+`n`:typeof e==`string`?`"${e}"`:`${e}`}function Yd(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout===`optional`)}var Xd={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},Zd={int64:[BigInt(`-9223372036854775808`),BigInt(`9223372036854775807`)],uint64:[BigInt(0),BigInt(`18446744073709551615`)]};function Qd(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);let i={};return Fd(i,e,$d(e,t)),qd(e,Ld(n,{shape:i,checks:[]}))}function $d(e,t){let n=Md(e),r=[];for(let e of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(n,e)?.enumerable)throw Error(`Unrecognized key: "${String(e)}"`);t[e]&&r.push(e)}return r}function ef(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);let i=new Set($d(e,t)),a={};return Fd(a,e,Reflect.ownKeys(Md(e)).filter(e=>!i.has(e))),qd(e,Ld(n,{shape:a,checks:[]}))}function tf(e,t){if(!Ud(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=Md(e);for(let e of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return qd(e,Ld(e._zod.def,{shape:nf(e,t)}))}function nf(e,t){let n={};return Fd(n,e,Reflect.ownKeys(Md(e))),Id(n,t),n}function rf(e,t){if(!Ud(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return qd(e,Ld(e._zod.def,{shape:nf(e,t)}))}function af(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);let n={};return Fd(n,e,Reflect.ownKeys(Md(e))),Fd(n,t,Reflect.ownKeys(Md(t))),qd(e,Ld(e._zod.def,{shape:n,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function of(e,t,n,r=`partial`){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);let a=n?new Set($d(t,n)):void 0,o={};return Fd(o,t,Reflect.ownKeys(Md(t)),e&&((t,n)=>a&&!a.has(n)?t:new e({type:`optional`,innerType:t}))),qd(t,Ld(t._zod.def,{shape:o,checks:[]}))}function sf(e,t,n){let r=n?new Set($d(t,n)):void 0,i={};return Fd(i,t,Reflect.ownKeys(Md(t)),(t,n)=>r&&!r.has(n)?t:new e({type:`nonoptional`,innerType:t})),qd(t,Ld(t._zod.def,{shape:i}))}function cf(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function df(e){return typeof e==`string`?e:e?.message}function ff(e,t,n){var r;for(let i=t;ie;return t[Af]=!0,t}var Mf,Nf=Object.freeze({status:`aborted`}),Pf={value:void 0,enumerable:!1},Ff=`captureStackTrace`in Error?Error:null;function If(e){let t=Ff;if(t){let n=t.stackTraceLimit;if(typeof n==`number`){try{t.stackTraceLimit=0}catch{return Ff=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function V(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits=new Set}a.prototype=i;let o=n,s=o&&new WeakSet;function c(n,r){if(!n._zod){Pf.value=new a(r);try{Object.defineProperty(n,"_zod",Pf)}finally{Pf.value=void 0}}else if(n._zod.traits.has(e))return;if(n._zod.traits.add(e),t(n,r),s){let e=Object.getPrototypeOf(n),t=n._zod.constr.prototype,r=e;for(;r&&r!==t;)r=Object.getPrototypeOf(r);let i=r??e;s.has(i)||(s.add(i),yf(i,o))}let i=d.prototype;for(let e in i)Object.prototype.hasOwnProperty.call(i,e)&&(e in n||(n[e]=i[e].bind(n)))}let l=r?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(e){let t=r?.Parent?If(u):this;c(t,e);let n=t._zod.deferred;if(n){for(let e of n)e();t._zod.deferred=void 0}let i=globalThis.__zod_globalConfig?.postProcessor;return i&&i(t),t}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:t=>r?.Parent&&t instanceof r.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var Lf=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Rf=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Mf=globalThis).__zod_globalConfig??(Mf.__zod_globalConfig={});var zf=globalThis.__zod_globalConfig;function Bf(e){return e&&Object.assign(zf,e),zf}function Vf(){let e=this._zod;return e.message??=JSON.stringify(e.def,Sd,2),e.message}function Hf(e){this._zod.message=e}var Uf={get:Vf,set:Hf,enumerable:!0,configurable:!0},Wf={value:void 0,enumerable:!1},Gf=new WeakSet([Object.prototype,Error.prototype]),Kf=(e,t)=>{e.name=`$ZodError`,Wf.value=t,Object.defineProperty(e,"issues",Wf),Wf.value=void 0,Object.defineProperty(e,"message",Uf);let n=Object.getPrototypeOf(e);Gf.has(n)||(Gf.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let e=()=>this.message;return Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0})}}))},qf=V(`$ZodError`,Kf);V(`$ZodError`,Kf,void 0,{Parent:Error});function Jf(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t===`__proto__`?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function Yf(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?Jf(n,i.path[0],()=>[]).push(t(i)):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Xf(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i{let t=(n,r,i,a)=>{let o=i?{...i,async:!1}:{async:!1},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new Lf;if(s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>pf(e,o,Bf())));throw Bd(n,a?.callee??t),n}return s.value};return t},$f=e=>{let t=async(n,r,i,a)=>{let o=i?{...i,async:!0}:{async:!0},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>pf(e,o,Bf())));throw Bd(n,a?.callee??t),n}return s.value};return t},ep=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new Lf;return a.issues.length?tp(e,a.issues,i):{success:!0,data:a.value}};function tp(e,t,n){let r;return{success:!1,get error(){return r||(r=new e(t.map(e=>pf(e,n,Bf()))),t=void 0,n=void 0),r},set error(e){r=e,t=void 0,n=void 0}}}var np=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?tp(e,a.issues,i):{success:!0,data:a.value}},rp=Symbol.for(`zod.compile.invalid`),ip=Symbol.for(`zod.compile.fallback`),ap=((e,t,n)=>{let r=e._zod.bag.validator;if(r!==void 0){if(r(t)!==rp)return!0;if(r.definite===!0&&n===void 0)return!1}return op(e,t,n)});function op(e,t,n){let r=n?{...n,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},i=e._zod.bag.fallbackRun,a;if(i?(r[ip]=!0,a=i({value:t,issues:[]},r)):a=e._zod.run({value:t,issues:[]},r),a instanceof Promise)throw new Lf;return a.issues.length===0}var sp=async(e,t,n)=>{let r=n?{...n,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},i=e._zod.run({value:t,issues:[]},r);return i instanceof Promise&&(i=await i),i.issues.length===0},cp=e=>{let t=Qf(e),n=(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return t(e,r,o,Zf(n,a))};return n},lp=e=>{let t=Qf(e),n=(e,r,i,a)=>t(e,r,i,Zf(n,a));return n},up=e=>{let t=$f(e),n=async(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return await t(e,r,o,Zf(n,a))};return n},dp=e=>{let t=$f(e),n=async(e,r,i,a)=>await t(e,r,i,Zf(n,a));return n},fp=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return ep(e)(t,n,i)},pp=e=>(t,n,r)=>ep(e)(t,n,r),mp=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return np(e)(t,n,i)},hp=e=>async(t,n,r)=>np(e)(t,n,r),gp=/^[cC][0-9a-z]{6,}$/,_p=/^[0-9a-z]+$/,vp=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,yp=/^[0-9a-vA-V]{20}$/,bp=/^[A-Za-z0-9]{27}$/,xp=/^[a-zA-Z0-9_-]{21}$/;function Sp(e){return RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var Cp=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,wp=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Tp=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Ep=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Dp=`^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`;function Op(){return new RegExp(Dp,`u`)}var kp=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Ap=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,jp=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Mp=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Np=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Pp=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/,Fp=/^https?$/,Ip=/^\+[1-9]\d{6,14}$/,Lp=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`;function Rp(e){return RegExp(`^${e}$`)}var zp=Rp(Lp);function Bp(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Vp(e){return RegExp(`^${Bp(e)}$`)}function Hp(e){let t=[`Z`];e.offset&&t.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let n=`${Bp({precision:e.precision,seconds:!0})}(?:${t.join(`|`)})`,r=e.local?`${n}|${Bp({precision:e.precision})}`:n;return RegExp(`^${Lp}T(?:${r})$`)}var Up=/^[\s\S]{0,}$/,Wp=/^-?\d+$/,Gp=/^-?\d+(?:\.\d+)?$/,Kp=/^(?:true|false)$/i,qp=/^null$/i,Jp=/^undefined$/i,Yp=/^[^A-Z]*$/,Xp=/^[^a-z]*$/,Zp=V(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),Qp=e=>{let t=e.value;return!Td(t)&&t.length!==void 0},$p={number:`number`,bigint:`bigint`,object:`date`},em=V(`$ZodCheckLessThan`,(e,t)=>{Zp.init(e,t);let n=$p[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value{Zp.init(e,t);let n=$p[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:$p[typeof r.value]??n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),nm=V(`$ZodCheckMultipleOf`,(e,t)=>{Zp.init(e,t),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):Dd(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),rm=V(`$ZodCheckNumberFormat`,(e,t)=>{Zp.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=Xd[t.format];e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}sa&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),im=V(`$ZodCheckMaxLength`,(e,t)=>{var n;Zp.init(e,t),(n=e._zod.def).when??(n.when=Qp),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>t.maximum?hf(r):i)<=t.maximum)return;let a=gf(r);n.issues.push({origin:a,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),am=V(`$ZodCheckMinLength`,(e,t)=>{var n;Zp.init(e,t),(n=e._zod.def).when??(n.when=Qp),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>=t.minimum&&i=t.minimum)return;let a=gf(r);n.issues.push({origin:a,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),om=V(`$ZodCheckLengthEquals`,(e,t)=>{var n;Zp.init(e,t),(n=e._zod.def).when??(n.when=Qp),e._zod.check=n=>{let r=n.value,i=r.length,a=typeof r==`string`&&i>=t.length&&i<=t.length*2?hf(r):i;if(a===t.length)return;let o=gf(r),s=a>t.length;n.issues.push({origin:o,...s?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),sm=V(`$ZodCheckStringFormat`,(e,t)=>{var n,r;Zp.init(e,t),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),cm=V(`$ZodCheckRegex`,(e,t)=>{sm.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),lm=V(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=Yp,sm.init(e,t)}),um=V(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Xp,sm.init(e,t)}),dm=V(`$ZodCheckIncludes`,(e,t)=>{Zp.init(e,t);let n=Kd(t.includes);t.pattern=new RegExp(typeof t.position==`number`?`^.{${t.position},}${n}`:n),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),fm=V(`$ZodCheckStartsWith`,(e,t)=>{Zp.init(e,t);let n=RegExp(`^${Kd(t.prefix)}.*`);t.pattern??=n,e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),pm=V(`$ZodCheckEndsWith`,(e,t)=>{Zp.init(e,t);let n=RegExp(`.*${Kd(t.suffix)}$`);t.pattern??=n,e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),mm=V(`$ZodCheckOverwrite`,(e,t)=>{Zp.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),hm=class{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}indented(e){this.indent+=1;try{e(this)}finally{--this.indent}}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` +`+e.stack}}var Re=Object.prototype.hasOwnProperty,ze=t.unstable_scheduleCallback,Be=t.unstable_cancelCallback,Ve=t.unstable_shouldYield,He=t.unstable_requestPaint,Ue=t.unstable_now,We=t.unstable_getCurrentPriorityLevel,Ge=t.unstable_ImmediatePriority,Ke=t.unstable_UserBlockingPriority,qe=t.unstable_NormalPriority,Je=t.unstable_LowPriority,Ye=t.unstable_IdlePriority,Xe=t.log,Ze=t.unstable_setDisableYieldValue,Qe=null,$e=null;function et(e){if(typeof Xe==`function`&&Ze(e),$e&&typeof $e.setStrictMode==`function`)try{$e.setStrictMode(Qe,e)}catch{}}var tt=Math.clz32?Math.clz32:it,nt=Math.log,rt=Math.LN2;function it(e){return e>>>=0,e===0?32:31-(nt(e)/rt|0)|0}var at=256,ot=262144,st=4194304;function ct(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function lt(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=ct(n))):i=ct(o):i=ct(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=ct(n))):i=ct(o)):i=ct(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function ut(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function dt(e,t){t&8&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0n;n++)t.push(e);return t}function ht(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function gt(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0=pr),gr=` `,_r=!1;function vr(e,t){switch(e){case`keyup`:return dr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function yr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var br=!1;function xr(e,t){switch(e){case`compositionend`:return yr(t);case`keypress`:return t.which===32?(_r=!0,gr):null;case`textInput`:return e=t.data,e===gr&&_r?null:e;default:return null}}function Sr(e,t){if(br)return e===`compositionend`||!fr&&vr(e,t)?(e=Fn(),Pn=Nn=Mn=null,br=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Gr(n)}}function qr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?qr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Jr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Wr(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Wr(e.document)}return t}function Yr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Xr=kn&&`documentMode`in document&&11>=document.documentMode,Zr=null,Qr=null,$r=null,ei=!1;function ti(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ei||Zr==null||Zr!==Wr(r)||(r=Zr,`selectionStart`in r&&Yr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),$r&&Ur($r,r)||($r=r,r=ap(Qr,`onSelect`),0>=o,i-=o,Zi=1<<32-tt(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),oa&&$i(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),oa&&$i(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return oa&&$i(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&(_=v.alternate,_!==null&&h.delete(_.key===null?g:_.key)),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),oa&&$i(a,g),u}function _(e,r,o,c){if(typeof o==`object`&&o&&o.type===O&&o.key===null&&o.props.ref===void 0&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case E:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===O){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),uo(c,o),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===ae&&ro(l)===r.type){n(e,r.sibling),c=a(r,o.props),uo(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===O?(c=Ri(o.props.children,e.mode,c,o.key),uo(c,o),c.return=e,e=c):(c=Li(o.type,o.key,o.props,null,e.mode,c),uo(c,o),c.return=e,e=c)}return s(e);case D:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Vi(o,e.mode,c),c.return=e,e=c}return s(e);case ae:return o=ro(o),_(e,r,o,c)}if(he(o))return h(e,r,o,c);if(fe(o)){if(l=fe(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return _(e,r,lo(o),c);if(o.$$typeof===j)return _(e,r,Oa(e,o),c);fo(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=zi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{co=0;var i=_(e,t,n,r);return so=null,i}catch(t){if(t===Za||t===$a)throw t;var a=Ni(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var mo=po(!0),ho=po(!1),go=!1;function _o(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function vo(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function yo(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function bo(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,sd&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Ai(e),ki(e,null,n),t}return Ei(e,r,t,n),Ai(e)}function xo(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,vt(e,n)}}function So(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Co=!1;function wo(){if(Co){var e=Ha;if(e!==null)throw e}}function To(e,t,n,r){Co=!1;var i=e.updateQueue;go=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(ud&f)===f:(r&f)===f){f!==0&&f===Va&&(Co=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,h=s;f=t;var g=n;switch(h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(g,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(g,d,f):m,f==null)break a;d=T({},d,f);break a;case 2:go=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),vd|=o,e.lanes=o,e.memoizedState=d}}function Eo(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function Do(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=N.T,s={};s.types=o===null?null:o.types,N.T=s,mc(e,!1,t,n);try{var c=i(),l=N.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?pc(e,t,Ga(c,r),Ud(e)):pc(e,t,r,Ud(e))}catch(n){pc(e,t,{then:function(){},status:`rejected`,reason:n},Ud())}finally{P.p=a,o!==null&&s.types!==null&&(o.types=s.types),N.T=o}}function rc(){}function ic(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=ac(e).queue;nc(e,a,t,ge,n===null?rc:function(){return oc(e),n(r)})}function ac(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ge,baseState:ge,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:hs,lastRenderedState:ge},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:hs,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function oc(e){var t=ac(e);t.next===null&&(t=e.alternate.memoizedState),pc(e,t.next.queue,{},Ud())}function sc(){return Da(yh)}function cc(){return us().memoizedState}function lc(){return us().memoizedState}function uc(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=Ud();e=yo(n);var r=bo(t,e,n);r!==null&&(Kd(r,t,n),xo(r,t,n)),t={cache:Pa()},e.payload=t;return}t=t.return}}function dc(e,t,n){var r=Ud();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},hc(e)?gc(t,n):(n=Di(e,t,n,r),n!==null&&(Kd(n,e,r),_c(n,t,r)))}function fc(e,t,n){pc(e,t,n,Ud())}function pc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(hc(e))gc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Hr(s,o))return Ei(e,t,i,0),cd===null&&Ti(),!1}catch{}if(n=Di(e,t,i,r),n!==null)return Kd(n,e,r),_c(n,t,r),!0}return!1}function mc(e,t,n,r){if(r={lane:2,revertLane:Gf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},hc(e)){if(t)throw Error(i(479))}else t=Di(e,n,r,2),t!==null&&Kd(t,e,2)}function hc(e){var t=e.alternate;return e===R||t!==null&&t===R}function gc(e,t){Jo=qo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function _c(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,vt(e,n)}}var vc={readContext:Da,use:ps,useCallback:es,useContext:es,useEffect:es,useImperativeHandle:es,useLayoutEffect:es,useInsertionEffect:es,useMemo:es,useReducer:es,useRef:es,useState:es,useDebugValue:es,useDeferredValue:es,useTransition:es,useSyncExternalStore:es,useId:es,useHostTransitionStatus:es,useFormState:es,useActionState:es,useOptimistic:es,useMemoCache:es,useCacheRefresh:es,useEffectEvent:es},yc={readContext:Da,use:ps,useCallback:function(e,t){return ls().memoizedState=[e,t===void 0?null:t],e},useContext:Da,useEffect:Us,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Vs(4194308,4,Ys.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Vs(4194308,4,e,t)},useInsertionEffect:function(e,t){Vs(4,2,e,t)},useMemo:function(e,t){var n=ls();t=t===void 0?null:t;var r=e();if(Yo){et(!0);try{e()}finally{et(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=ls();if(n!==void 0){var i=n(t);if(Yo){et(!0);try{n(t)}finally{et(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=dc.bind(null,R,e),[r.memoizedState,e]},useRef:function(e){var t=ls();return e={current:e},t.memoizedState=e},useState:function(e){e=Ts(e);var t=e.queue,n=fc.bind(null,R,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Zs,useDeferredValue:function(e,t){return ec(ls(),e,t)},useTransition:function(){var e=Ts(!1);return e=nc.bind(null,R,e.queue,!0,!1),ls().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=R,a=ls();if(oa){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),cd===null)throw Error(i(349));ud&127||bs(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,Us(Ss.bind(null,r,o,e),[e]),r.flags|=2048,zs(9,{destroy:void 0},xs.bind(null,r,o,n,t),null),n},useId:function(){var e=ls(),t=cd.identifierPrefix;if(oa){var n=Qi,r=Zi;n=(r&~(1<<32-tt(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=Xo++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[Tt]=t,o[Et]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(mp(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&_l(t)}}return Sl(t),t.subtreeFlags&=-33554433,vl(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&_l(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=we.current,pa(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=ia,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[Tt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||dp(e.nodeValue,n)),e||ua(t,!0)}else e=xp(e).createTextNode(r),e[Tt]=t,t.stateNode=e}return Sl(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=pa(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[Tt]=t}else ma(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Sl(t),e=!1}else n=ha(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(zo(t),t):(zo(t),null);if(t.flags&128)throw Error(i(558))}return Sl(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=pa(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[Tt]=t}else ma(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Sl(t),a=!1}else a=ha(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(zo(t),t):(zo(t),null)}return zo(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),bl(t,t.updateQueue),Sl(t),null);case 4:return De(),e===null&&tp(t.stateNode.containerInfo),t.flags|=67108864,Sl(t),null;case 10:return xa(t.type),Sl(t),null;case 19:if(Ho(t),r=t.memoizedState,r===null)return Sl(t),null;if(a=!!(t.flags&128),o=r.rendering,o===null){if(a)xl(r,!1);else{if(_d!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=Uo(e),o!==null){for(t.flags|=128,xl(r,!1),e=o.updateQueue,t.updateQueue=e,bl(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Ii(n,e),n=n.sibling;return Vo(t,Bo.current&1|2),oa&&$i(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Ue()>Od&&(t.flags|=128,a=!0,xl(r,!1),t.lanes=4194304)}}else{if(!a){if(e=Uo(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,bl(t,e),xl(r,!0),r.tail===null&&r.tailMode!==`collapsed`&&r.tailMode!==`visible`&&!o.alternate&&!oa)return Sl(t),null}else 2*Ue()-r.renderingStartTime>Od&&n!==536870912&&(t.flags|=128,a=!0,xl(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}if(r.tail!==null){e=r.tail;a:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break a}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Ue(),e.sibling=null,o=Bo.current,o=a?o&1|2:o&1,r.tailMode===`visible`||r.tailMode===`collapsed`||!n||oa?Vo(t,o):(n=o,xe(No,t),xe(Bo,n),Po===null&&(Po=t)),oa&&$i(t,r.treeForkCount),e}return Sl(t),null;case 22:case 23:return zo(t),Mo(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(Sl(t),t.subtreeFlags&6&&(t.flags|=8192)):Sl(t),n=t.updateQueue,n!==null&&bl(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&be(qa),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),xa(Na),Sl(t),null;case 25:return null;case 30:return t.flags|=33554432,Sl(t),null}throw Error(i(156,t.tag))}function wl(e,t){switch(na(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return xa(Na),De(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Ae(t),null;case 31:if(t.memoizedState!==null){if(zo(t),t.alternate===null)throw Error(i(340));ma()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(zo(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));ma()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Ho(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return De(),null;case 10:return xa(t.type),null;case 22:case 23:return zo(t),Mo(),e!==null&&be(qa),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return xa(Na),null;case 25:return null;default:return null}}function Tl(e,t){switch(na(t),t.tag){case 3:xa(Na),De();break;case 26:case 27:case 5:Ae(t);break;case 4:De();break;case 31:t.memoizedState!==null&&zo(t);break;case 13:zo(t);break;case 19:Ho(t);break;case 10:xa(t.type);break;case 22:case 23:zo(t),Mo(),e!==null&&be(qa);break;case 24:xa(Na)}}function El(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Tf(t,t.return,e)}}function Dl(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Tf(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Tf(t,t.return,e)}}function Ol(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Do(t,n)}catch(t){Tf(e,e.return,t)}}}function kl(e,t,n){n.props=Ec(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Tf(e,t,n)}}function Al(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:var i=e.stateNode,a=vi(e.memoizedProps,i);(i.ref===null||i.ref.name!==a)&&(i.ref=Kp(a)),r=i.ref;break;case 7:if(e.stateNode===null){var o=new qp(e);f(e.child,!1,um,o,void 0,void 0),e.stateNode=o}r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Tf(e,t,n)}}function jl(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Tf(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Tf(e,t,n)}else n.current=null}}function Ml(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n title`))),mp(r,t,n),r[Tt]=e,Rt(r),t=r;break a;case`link`:if(o=rh(`link`,`href`,a).get(t+(n.href||``))){for(s=0;sg&&(o=g,g=h,h=o);var _=Kr(s,h),v=Kr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,N.T=null,n=Id,Id=null;var o=Md,s=Pd;if(jd=0,Nd=Md=null,Pd=0,sd&6)throw Error(i(331));var c=sd;if(sd|=4,nd(o.current),Ju(o,o.current,s,n),sd=c,B(0,!1),$e&&typeof $e.onPostCommitFiberRoot==`function`)try{$e.onPostCommitFiberRoot(Qe,o)}catch{}return!0}finally{P.p=a,N.T=r,xf(e,t)}}function wf(e,t,n){t=Ui(n,t),t=Mc(e.stateNode,t,2),e=bo(e,t,2),e!==null&&(ht(e,2),Rf(e))}function Tf(e,t,n){if(e.tag===3)wf(e,e,n);else for(;t!==null;){if(t.tag===3){wf(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(Ad===null||!Ad.has(r))){e=Ui(n,e),n=Nc(2),r=bo(t,n,2),r!==null&&(Pc(n,r,t,e),ht(r,2),Rf(r));break}}t=t.return}}function Ef(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new od;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(hd=!0,i.add(n),e=Df.bind(null,e,t,n),t.then(e,e))}function Df(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,cd===e&&(ud&n)===n&&(_d===4||_d===3&&(ud&62914560)===ud&&300>Ue()-Ed?sd&2?bd|=n:Qd(e,0):bd|=n,Sd===ud&&(Sd=0)),Rf(e)}function Of(e,t){t===0&&(t=pt()),e=Oi(e,t),e!==null&&(ht(e,t),Rf(e))}function kf(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Of(e,n)}function Af(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),Of(e,n)}function jf(e,t){return ze(e,t)}var Mf=null,Nf=null,Pf=!1,Ff=!1,If=!1,Lf=0;function Rf(e){e!==Nf&&e.next===null&&(Nf===null?Mf=Nf=e:Nf=Nf.next=e),Ff=!0,Pf||(Pf=!0,Wf())}function B(e,t){if(!If&&Ff){If=!0;do for(var n=!1,r=Mf;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-tt(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Uf(r,a))}else a=ud,a=lt(r,r===cd?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||ut(r,a)||(n=!0,Uf(r,a))}r=r.next}while(n);If=!1}}function zf(){Bf()}function Bf(){Ff=Pf=!1;var e=0;Lf!==0&&Dp()&&(e=Lf);for(var t=Ue(),n=null,r=Mf;r!==null;){var i=r.next,a=Vf(r,t);a===0?(r.next=null,n===null?Mf=i:n.next=i,i===null&&(Nf=n)):(n=r,(e!==0||a&3)&&(Ff=!0)),r=i}jd!==0&&jd!==5||B(e,!1),Lf!==0&&(Lf=0)}function Vf(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&_p(d)&&(c=c.responseEnd,o+=u*(cdh){s.length=o;break}f=new Promise(Up.bind(f)),s.push(f)}}}if(0`u`?null:document;function Lm(e,t,n){var r=Im;if(r&&typeof t==`string`&&t){var i=an(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),jm.has(i)||(jm.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),mp(t,`link`,e),Rt(t),r.head.appendChild(t)))}}function Rm(e){Nm.D(e),Lm(`dns-prefetch`,e,null)}function zm(e,t){Nm.C(e,t),Lm(`preconnect`,e,t)}function Bm(e,t,n){Nm.L(e,t,n);var r=Im;if(r&&e&&t){var i=`link[rel="preload"][as="`+an(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+an(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+an(n.imageSizes)+`"]`)):i+=`[href="`+an(e)+`"]`;var a=i;switch(t){case`style`:a=Km(e);break;case`script`:a=Xm(e)}if(!(Am.has(a)||(e=T({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),Am.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(qm(a))||t===`script`&&r.querySelector(Zm(a))))){var o=r.createElement(`link`);mp(o,`link`,e),t===`style`&&(o[Mt]=!0,o.onload=o.onerror=function(){zt(o)}),Rt(o),r.head.appendChild(o)}}}function Vm(e,t){Nm.m(e,t);var n=Im;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+an(r)+`"][href="`+an(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Xm(e)}if(!Am.has(a)&&(e=T({rel:`modulepreload`,href:e},t),Am.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Zm(a)))return}r=n.createElement(`link`),mp(r,`link`,e),Rt(r),n.head.appendChild(r)}}}function Hm(e,t,n){Nm.S(e,t,n);var r=Im;if(r&&e){var i=Lt(r).hoistableStyles,a=Km(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(qm(a)))s.loading=5;else{e=T({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=Am.get(a))&&eh(e,n);var c=o=r.createElement(`link`);Rt(c),mp(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,$m(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Um(e,t){Nm.X(e,t);var n=Im;if(n&&e){var r=Lt(n).hoistableScripts,i=Xm(e),a=r.get(i);a||(a=n.querySelector(Zm(i)),a||(e=T({src:e,async:!0},t),(t=Am.get(i))&&th(e,t),a=n.createElement(`script`),Rt(a),mp(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Wm(e,t){Nm.M(e,t);var n=Im;if(n&&e){var r=Lt(n).hoistableScripts,i=Xm(e),a=r.get(i);a||(a=n.querySelector(Zm(i)),a||(e=T({src:e,async:!0,type:`module`},t),(t=Am.get(i))&&th(e,t),a=n.createElement(`script`),Rt(a),mp(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Gm(e,t,n,r){var a=(a=we.current)?Mm(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Km(n.href),t=Lt(a).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Km(n.href);var o=Lt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(qm(e)))?o._p||(s.instance=o,s.state.loading=5):(o=Am.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},Am.set(e,o)),Ym(a,e,o,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Xm(n),t=Lt(a).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Km(e){return`href="`+an(e)+`"`}function qm(e){return`link[rel="stylesheet"][`+e+`]`}function Jm(e){return T({},e,{"data-precedence":e.precedence,precedence:null})}function Ym(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[Mt]){r.loading=1;return}}else t=e.createElement(`link`),t[Mt]=!0,t.onload=t.onerror=zt.bind(null,t),mp(t,`link`,n),Rt(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Xm(e){return`[src="`+an(e)+`"]`}function Zm(e){return`script[async]`+e}function Qm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+an(n.href)+`"]`);if(r)return t.instance=r,Rt(r),r;var a=T({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Rt(r),mp(r,`style`,a),$m(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Km(n.href);var o=e.querySelector(qm(a));if(o)return t.state.loading|=4,t.instance=o,Rt(o),o;r=Jm(n),(a=Am.get(a))&&eh(r,a),o=(e.ownerDocument||e).createElement(`link`),Rt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),mp(o,`link`,r),t.state.loading|=4,$m(o,n.precedence,e),t.instance=o;case`script`:return o=Xm(n.src),(a=e.querySelector(Zm(o)))?(t.instance=a,Rt(a),a):(r=n,(a=Am.get(o))&&(r=T({},n),th(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),Rt(a),mp(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,$m(r,n.precedence,e));return t.instance}function $m(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function ah(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function oh(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function sh(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function ch(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function lh(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=ch(t),e.suspenseyImages.push(t)),e=hh.bind(e),t.decode().then(e,e))}function uh(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Km(r.href),a=t.querySelector(qm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=mh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Rt(a);return}a=t.ownerDocument||t,r=Jm(r),(i=Am.get(i))&&eh(r,i),a=a.createElement(`link`),Rt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),mp(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=mh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var dh=0;function fh(e,t){return e.stylesheets&&e.count===0&&_h(e,e.stylesheets),0dh?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function ph(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)_h(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function mh(){this.count--,ph(this)}function hh(){this.imgCount--,ph(this)}var gh=null;function _h(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,gh=new Map,t.forEach(vh,e),gh=null,mh.call(e))}function vh(e,t){if(!(t.state.loading&4)){var n=gh.get(e);if(n)var r=n.get(null);else{n=new Map,gh.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=Ou()}))(),Au=[`#fafafa`,`#e6e4de`,`#bfbdb6`,`#8b8e99`,`#565b69`,`#1d2433`,`#131721`,`#0b0e14`,`#080a10`,`#05070b`],ju=[`#f3ecfd`,`#ece3fb`,`#dcc9f7`,`#d2a6ff`,`#bf94ec`,`#a97ce0`,`#9163d6`,`#7c4dcc`,`#5b32a3`,`#40236f`],Mu=[`#eefbe6`,`#dcf7cc`,`#c2f0a6`,`#a5e880`,`#8fe06c`,`#7fd962`,`#66c04b`,`#4f9c3a`,`#3b7a2c`,`#2a5a1f`],Nu=[`#fff5e6`,`#ffe9c9`,`#ffd79b`,`#ffc571`,`#ffbc62`,`#ffb454`,`#ef9c33`,`#c87d21`,`#9c5f16`,`#74460f`],Pu=[`#fdecee`,`#fbd9dc`,`#f8b6bc`,`#f59099`,`#f37d87`,`#f26d78`,`#e04d5a`,`#c03642`,`#96262f`,`#6f1a21`],Fu=[`#e8f6ff`,`#ccebff`,`#a3daff`,`#7dcbff`,`#66c5ff`,`#59c2ff`,`#33a7e6`,`#1e86bd`,`#146694`,`#0d4a6d`],Iu={dark:{text:`#bfbdb6`,muted:`#8b8e99`,grid:`#1d2433`,surface:`#131721`,border:`#565b69`},light:{text:`#4a5058`,muted:`#6b7280`,grid:`#eceef0`,surface:`#fcfcfc`,border:`#a4abb4`}},Lu={dark:[`#3987e5`,`#d95926`,`#199e70`,`#9085e9`,`#c98500`,`#d55181`],light:[`#2a78d6`,`#eb6834`,`#1baf7a`,`#4a3aa7`,`#eda100`,`#e87ba4`]},Ru={micro:11,small:12,body:14,title:16,section:22,page:32},zu={display:`"Geist Mono Variable", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace`,body:`"Geist Variable", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif`},Bu={brand:ju,ok:Mu,warn:Nu,bad:Pu,info:Fu},Vu={light:7,dark:5};function Hu(e){let t=e.replace(`#`,``),n=t.length===3?[...t].map(e=>e+e).join(``):t,r=e=>{let t=parseInt(n.slice(e,e+2),16)/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4};return .2126*r(0)+.7152*r(2)+.0722*r(4)}function Uu(e){let t=Hu(e),n=1.05/(t+.05);return(t+.05)/.05>n?`var(--mantine-color-black)`:`var(--mantine-color-white)`}function Wu(e){return Object.fromEntries(Object.entries(Bu).map(([t,n])=>[`--fanout-color-${t}-contrast`,Uu(n[Vu[e]])]))}function Gu(e){return t=>{let n=t.color??Ju.primaryColor,r=e({...t,color:n}),i=t.variant===`filled`||t.variant===void 0;return t.autoContrast===!1||!i||!Object.hasOwn(Bu,n)?r:{...r,color:`var(--fanout-color-${n}-contrast)`}}}var Ku=.25,qu={xs:9,sm:10,md:11,lg:13,xl:16},Ju={primaryColor:`brand`,primaryShade:Vu,autoContrast:!0,luminanceThreshold:Ku,colors:{dark:Au,brand:ju,ok:Mu,warn:Nu,bad:Pu,info:Fu},defaultRadius:`md`,fontFamily:zu.body,fontFamilyMonospace:zu.display,headings:{fontFamily:zu.body,fontWeight:`600`},cursorType:`pointer`,components:{Tabs:{styles:(e,t)=>({tab:Zu(t.color,`--tabs-text-color`)})},Pagination:{styles:(e,t)=>({control:Zu(t.color,`--pagination-active-color`)})},Badge:{vars:(e,t)=>({root:Xu(t.size)})}}},Yu=()=>({variables:{"--mantine-color-error":`var(--mantine-color-bad-filled)`},light:{"--mantine-color-dimmed":Iu.light.muted,...Wu(`light`)},dark:Wu(`dark`)});function Xu(e){let t=qu[e??`md`];return t===void 0||t>=Ru.micro?{}:{"--badge-fz":`${Ru.micro/16}rem`}}function Zu(e,t){return!e||e===Ju.primaryColor?{[t]:`var(--fanout-color-${Ju.primaryColor}-contrast)`}:{}}var Qu=Yt({...Ju,variantColorResolver:Gu(it)});function $u({dark:e,children:t}){return(0,F.jsx)(Jt,{theme:Qu,cssVariablesResolver:Yu,forceColorScheme:e?`dark`:`light`,children:(0,F.jsx)(ms,{withBorder:!0,radius:`lg`,style:{overflow:`hidden`},children:t})})}function ed({title:e,summary:t,onRefresh:n,disabled:r}){return(0,F.jsxs)(cc,{justify:`space-between`,align:`flex-start`,wrap:`nowrap`,px:{base:`md`,sm:`lg`},pt:`sm`,pb:`xs`,children:[(0,F.jsxs)(L,{miw:0,children:[(0,F.jsx)(mu,{order:2,fz:`lg`,style:{overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:e}),t&&(0,F.jsx)(gc,{c:`dimmed`,size:`sm`,mt:2,children:t})]}),(0,F.jsx)(gl,{label:`Refresh this view`,children:(0,F.jsx)(Qs,{variant:`default`,size:`md`,"aria-label":`Refresh this view`,onClick:()=>void n(),disabled:r,children:(0,F.jsx)(xu,{size:15,weight:`bold`})})})]})}function td({error:e,loading:t,retry:n}){return e?(0,F.jsx)(dc,{color:`bad`,m:`md`,radius:`md`,children:(0,F.jsxs)(cc,{justify:`space-between`,children:[(0,F.jsx)(gc,{size:`sm`,children:e}),n&&(0,F.jsx)(Oc,{size:`compact-sm`,variant:`light`,color:`bad`,onClick:n,children:`Retry`})]})}):t?(0,F.jsxs)(Ac,{mih:160,p:`xl`,children:[(0,F.jsx)(Ws,{size:`sm`}),(0,F.jsx)(gc,{c:`dimmed`,size:`sm`,ml:`sm`,children:t})]}):null}function nd({active:e,items:t,onChange:n}){return(0,F.jsx)(ss,{type:`auto`,offsetScrollbars:!0,scrollbarSize:6,children:(0,F.jsx)(iu,{value:e,onChange:e=>e&&n(e),variant:`pills`,px:{base:`md`,sm:`lg`},pb:`sm`,children:(0,F.jsx)(iu.List,{style:{flexWrap:`nowrap`},children:t.map(e=>(0,F.jsx)(iu.Tab,{value:e.id,rightSection:e.count===void 0?void 0:(0,F.jsx)(yc,{size:`xs`,variant:`light`,children:e.count}),children:e.label},e.id))})})})}function rd({icon:e,title:t,children:n,tall:r=!1}){return(0,F.jsx)(Ac,{mih:r?220:130,p:`xl`,children:(0,F.jsxs)(cc,{wrap:`nowrap`,children:[(0,F.jsx)(su,{variant:`light`,size:`xl`,radius:`md`,children:e}),(0,F.jsxs)(L,{children:[(0,F.jsx)(gc,{fw:700,size:`sm`,children:t}),(0,F.jsx)(gc,{c:`dimmed`,size:`xs`,mt:3,children:n})]})]})})}function id({left:e,right:t}){return(0,F.jsxs)(cc,{justify:`space-between`,px:{base:`md`,sm:`lg`},py:`xs`,style:{borderTop:`1px solid var(--mantine-color-default-border)`},children:[(0,F.jsx)(gc,{c:`dimmed`,size:`xs`,children:e}),(0,F.jsx)(gc,{c:`dimmed`,size:`xs`,ta:`right`,children:t})]})}function ad({label:e,value:t,color:n}){return(0,F.jsxs)(ms,{withBorder:!0,radius:`md`,p:`sm`,children:[(0,F.jsx)(gc,{c:`dimmed`,size:`xs`,children:e}),(0,F.jsx)(gc,{fw:700,fz:`xl`,c:n,mt:3,children:t})]})}function od(e,t=8){let[n,r]=(0,C.useState)(1),i=Math.max(1,Math.ceil(e.length/t));(0,C.useEffect)(()=>{n>i&&r(i)},[n,i]);let a=(n-1)*t;return{page:n,setPage:r,totalPages:i,pageItems:e.slice(a,a+t),from:e.length===0?0:a+1,to:Math.min(a+t,e.length),total:e.length}}var sd={first:`First page`,previous:`Previous page`,next:`Next page`,last:`Last page`};function cd({page:e,totalPages:t,from:n,to:r,total:i,onChange:a}){return t<=1?null:(0,F.jsxs)(cc,{justify:`space-between`,gap:`sm`,px:{base:`md`,sm:`lg`},py:`xs`,style:{borderTop:`1px solid var(--mantine-color-default-border)`},children:[(0,F.jsxs)(gc,{c:`dimmed`,size:`xs`,children:[n,`–`,r,` of `,i]}),(0,F.jsx)(nl,{value:e,total:t,onChange:a,size:`xs`,withEdges:!0,"aria-label":`Table pages`,getItemProps:e=>({"aria-label":`Page ${e}`}),getControlProps:e=>({"aria-label":sd[e]})})]})}function ld(e){return Iu[e?`dark`:`light`]}function ud(e,t){return Lu[t?`dark`:`light`][e]??ld(t).muted}function dd(e){let t=String(e).toUpperCase();return t===`ERROR`||t===`FATAL`?`bad`:t===`WARN`||t===`WARNING`?`warn`:t===`INFO`?`info`:`gray`}var fd=new Intl.NumberFormat(void 0,{maximumFractionDigits:0});function pd(e){if(!Number.isFinite(e))return`—`;if(e<0)return`-${pd(-e)}`;if(e===0)return`0ms`;if(e<.01)return`<0.01ms`;if(e<1)return`${e.toFixed(2)}ms`;if(Math.round(e*10)/10<100)return`${e.toFixed(1)}ms`;if(Math.round(e)<1e3)return`${Math.round(e)}ms`;let t=Math.round(e/100)/10;if(t<10)return`${(e/1e3).toFixed(2)}s`;if(t<60)return`${t.toFixed(1)}s`;let n=Math.round(e/1e3),r=Math.floor(n/60),i=n%60;if(r<60)return i===0?`${r}m`:`${r}m ${i}s`;let a=Math.floor(r/60),o=r%60;return o===0?`${a}h`:`${a}h ${o}m`}function md(e){let[t,n]=e.split(`/`),r=new Date(t),i=new Date(n);if(Number.isNaN(r.valueOf())||Number.isNaN(i.valueOf()))return e;let a=Math.round((i.valueOf()-r.valueOf())/6e4);return a>=60&&a%60==0?`Last ${a/60}h`:`Last ${Math.max(a,1)}m`}function hd(e=new Date){let t=e instanceof Date?e:new Date(e);return Number.isNaN(t.valueOf())?hd(new Date):new Intl.DateTimeFormat([],{timeZoneName:`short`}).formatToParts(t).find(e=>e.type===`timeZoneName`)?.value??``}function gd(e){let t=e instanceof Date?e:new Date(e);return Number.isNaN(t.valueOf())?String(e):t.toLocaleString([],{year:`numeric`,month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`,second:`2-digit`,timeZoneName:`short`})}var _d=Object.defineProperty,vd=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),yd=(e,t)=>{let n={};for(var r in e)_d(n,r,{get:e[r],enumerable:!0});return t&&_d(n,Symbol.toStringTag,{value:`Module`}),n},bd=new Set([`https://json-schema.org/draft/2019-09/schema`,`http://json-schema.org/draft/2019-09/schema`]);function xd(e){return typeof e==`string`&&bd.has(e.replace(/#$/,``))}function Sd(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function Cd(e,t=`|`){return e.map(e=>Xd(e)).join(t)}function wd(e,t){return typeof t==`bigint`?t.toString():t}var Td=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function Ed(e){return new Td(e)}function Dd(e){return e==null}function Od(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function kd(e,t){let n=e/t,r=Math.round(n),i=4*2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r){let e=t._zod.def.shape[a];return r?r(e,a):e}):Id(e,a,r?r(n.value,a):n.value))}}function Rd(e,t){for(let n of Reflect.ownKeys(t)){let r=Object.getOwnPropertyDescriptor(t,n);r.enumerable&&(r.get?Fd(e,n,()=>t[n]):Id(e,n,r.value))}}function zd(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function Bd(e){return JSON.stringify(e)}function Vd(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var Hd=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function Ud(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var Wd=Ed(()=>{if(Vf.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function Gd(e){if(Ud(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return Ud(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function Kd(e){return Gd(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var qd=new Set([`string`,`number`,`symbol`]);function Jd(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Yd(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function z(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function Xd(e){return typeof e==`bigint`?e.toString()+`n`:typeof e==`string`?`"${e}"`:`${e}`}function Zd(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout===`optional`)}var Qd={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},$d={int64:[BigInt(`-9223372036854775808`),BigInt(`9223372036854775807`)],uint64:[BigInt(0),BigInt(`18446744073709551615`)]};function ef(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);let i={};return Ld(i,e,tf(e,t)),Yd(e,zd(n,{shape:i,checks:[]}))}function tf(e,t){let n=Pd(e),r=[];for(let e of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(n,e)?.enumerable)throw Error(`Unrecognized key: "${String(e)}"`);t[e]&&r.push(e)}return r}function nf(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);let i=new Set(tf(e,t)),a={};return Ld(a,e,Reflect.ownKeys(Pd(e)).filter(e=>!i.has(e))),Yd(e,zd(n,{shape:a,checks:[]}))}function rf(e,t){if(!Gd(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=Pd(e);for(let e of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return Yd(e,zd(e._zod.def,{shape:af(e,t)}))}function af(e,t){let n={};return Ld(n,e,Reflect.ownKeys(Pd(e))),Rd(n,t),n}function of(e,t){if(!Gd(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return Yd(e,zd(e._zod.def,{shape:af(e,t)}))}function sf(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);let n={};return Ld(n,e,Reflect.ownKeys(Pd(e))),Ld(n,t,Reflect.ownKeys(Pd(t))),Yd(e,zd(e._zod.def,{shape:n,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function cf(e,t,n,r=`partial`){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);let a=n?new Set(tf(t,n)):void 0,o={};return Ld(o,t,Reflect.ownKeys(Pd(t)),e&&((t,n)=>a&&!a.has(n)?t:new e({type:`optional`,innerType:t}))),Yd(t,zd(t._zod.def,{shape:o,checks:[]}))}function lf(e,t,n){let r=n?new Set(tf(t,n)):void 0,i={};return Ld(i,t,Reflect.ownKeys(Pd(t)),(t,n)=>r&&!r.has(n)?t:new e({type:`nonoptional`,innerType:t})),Yd(t,zd(t._zod.def,{shape:i}))}function uf(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function pf(e){return typeof e==`string`?e:e?.message}function mf(e,t,n){var r;for(let i=t;ie;return t[Mf]=!0,t}var Pf,Ff=Object.freeze({status:`aborted`}),If={value:void 0,enumerable:!1},Lf=`captureStackTrace`in Error?Error:null;function Rf(e){let t=Lf;if(t){let n=t.stackTraceLimit;if(typeof n==`number`){try{t.stackTraceLimit=0}catch{return Lf=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function B(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits=new Set}a.prototype=i;let o=n,s=o&&new WeakSet;function c(n,r){if(!n._zod){If.value=new a(r);try{Object.defineProperty(n,"_zod",If)}finally{If.value=void 0}}else if(n._zod.traits.has(e))return;if(n._zod.traits.add(e),t(n,r),s){let e=Object.getPrototypeOf(n),t=n._zod.constr.prototype,r=e;for(;r&&r!==t;)r=Object.getPrototypeOf(r);let i=r??e;s.has(i)||(s.add(i),xf(i,o))}let i=d.prototype;for(let e in i)Object.prototype.hasOwnProperty.call(i,e)&&(e in n||(n[e]=i[e].bind(n)))}let l=r?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(e){let t=r?.Parent?Rf(u):this;c(t,e);let n=t._zod.deferred;if(n){for(let e of n)e();t._zod.deferred=void 0}let i=globalThis.__zod_globalConfig?.postProcessor;return i&&i(t),t}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:t=>r?.Parent&&t instanceof r.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var zf=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Bf=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Pf=globalThis).__zod_globalConfig??(Pf.__zod_globalConfig={});var Vf=globalThis.__zod_globalConfig;function Hf(e){return e&&Object.assign(Vf,e),Vf}function Uf(){let e=this._zod;return e.message??=JSON.stringify(e.def,wd,2),e.message}function Wf(e){this._zod.message=e}var Gf={get:Uf,set:Wf,enumerable:!0,configurable:!0},Kf={value:void 0,enumerable:!1},qf=new WeakSet([Object.prototype,Error.prototype]),Jf=(e,t)=>{e.name=`$ZodError`,Kf.value=t,Object.defineProperty(e,"issues",Kf),Kf.value=void 0,Object.defineProperty(e,"message",Gf);let n=Object.getPrototypeOf(e);qf.has(n)||(qf.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let e=()=>this.message;return Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0})}}))},Yf=B(`$ZodError`,Jf);B(`$ZodError`,Jf,void 0,{Parent:Error});function Xf(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t===`__proto__`?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function Zf(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?Xf(n,i.path[0],()=>[]).push(t(i)):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Qf(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i{let t=(n,r,i,a)=>{let o=i?{...i,async:!1}:{async:!1},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new zf;if(s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>hf(e,o,Hf())));throw Hd(n,a?.callee??t),n}return s.value};return t},ep=e=>{let t=async(n,r,i,a)=>{let o=i?{...i,async:!0}:{async:!0},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>hf(e,o,Hf())));throw Hd(n,a?.callee??t),n}return s.value};return t},tp=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new zf;return a.issues.length?np(e,a.issues,i):{success:!0,data:a.value}};function np(e,t,n){let r;return{success:!1,get error(){return r||(r=new e(t.map(e=>hf(e,n,Hf()))),t=void 0,n=void 0),r},set error(e){r=e,t=void 0,n=void 0}}}var rp=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?np(e,a.issues,i):{success:!0,data:a.value}},ip=Symbol.for(`zod.compile.invalid`),ap=Symbol.for(`zod.compile.fallback`),op=((e,t,n)=>{let r=e._zod.bag.validator;if(r!==void 0){if(r(t)!==ip)return!0;if(r.definite===!0&&n===void 0)return!1}return sp(e,t,n)});function sp(e,t,n){let r=n?{...n,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},i=e._zod.bag.fallbackRun,a;if(i?(r[ap]=!0,a=i({value:t,issues:[]},r)):a=e._zod.run({value:t,issues:[]},r),a instanceof Promise)throw new zf;return a.issues.length===0}var cp=async(e,t,n)=>{let r=n?{...n,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},i=e._zod.run({value:t,issues:[]},r);return i instanceof Promise&&(i=await i),i.issues.length===0},lp=e=>{let t=$f(e),n=(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return t(e,r,o,V(n,a))};return n},up=e=>{let t=$f(e),n=(e,r,i,a)=>t(e,r,i,V(n,a));return n},dp=e=>{let t=ep(e),n=async(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return await t(e,r,o,V(n,a))};return n},fp=e=>{let t=ep(e),n=async(e,r,i,a)=>await t(e,r,i,V(n,a));return n},pp=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return tp(e)(t,n,i)},mp=e=>(t,n,r)=>tp(e)(t,n,r),hp=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return rp(e)(t,n,i)},gp=e=>async(t,n,r)=>rp(e)(t,n,r),_p=/^[cC][0-9a-z]{6,}$/,vp=/^[0-9a-z]+$/,yp=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,bp=/^[0-9a-vA-V]{20}$/,xp=/^[A-Za-z0-9]{27}$/,Sp=/^[a-zA-Z0-9_-]{21}$/;function Cp(e){return RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var wp=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Tp=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Ep=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Dp=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Op=`^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`;function kp(){return new RegExp(Op,`u`)}var Ap=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,jp=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Mp=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Np=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Pp=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Fp=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/,Ip=/^https?$/,Lp=/^\+[1-9]\d{6,14}$/,Rp=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`;function zp(e){return RegExp(`^${e}$`)}var Bp=zp(Rp);function Vp(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Hp(e){return RegExp(`^${Vp(e)}$`)}function Up(e){let t=[`Z`];e.offset&&t.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let n=`${Vp({precision:e.precision,seconds:!0})}(?:${t.join(`|`)})`,r=e.local?`${n}|${Vp({precision:e.precision})}`:n;return RegExp(`^${Rp}T(?:${r})$`)}var Wp=/^[\s\S]{0,}$/,Gp=/^-?\d+$/,Kp=/^-?\d+(?:\.\d+)?$/,qp=/^(?:true|false)$/i,Jp=/^null$/i,Yp=/^undefined$/i,Xp=/^[^A-Z]*$/,Zp=/^[^a-z]*$/,Qp=B(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),$p=e=>{let t=e.value;return!Dd(t)&&t.length!==void 0},em={number:`number`,bigint:`bigint`,object:`date`},tm=B(`$ZodCheckLessThan`,(e,t)=>{Qp.init(e,t);let n=em[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value{Qp.init(e,t);let n=em[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:em[typeof r.value]??n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),rm=B(`$ZodCheckMultipleOf`,(e,t)=>{Qp.init(e,t),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):kd(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),im=B(`$ZodCheckNumberFormat`,(e,t)=>{Qp.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=Qd[t.format];e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}sa&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),am=B(`$ZodCheckMaxLength`,(e,t)=>{var n;Qp.init(e,t),(n=e._zod.def).when??(n.when=$p),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>t.maximum?_f(r):i)<=t.maximum)return;let a=vf(r);n.issues.push({origin:a,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),om=B(`$ZodCheckMinLength`,(e,t)=>{var n;Qp.init(e,t),(n=e._zod.def).when??(n.when=$p),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>=t.minimum&&i=t.minimum)return;let a=vf(r);n.issues.push({origin:a,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),sm=B(`$ZodCheckLengthEquals`,(e,t)=>{var n;Qp.init(e,t),(n=e._zod.def).when??(n.when=$p),e._zod.check=n=>{let r=n.value,i=r.length,a=typeof r==`string`&&i>=t.length&&i<=t.length*2?_f(r):i;if(a===t.length)return;let o=vf(r),s=a>t.length;n.issues.push({origin:o,...s?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),cm=B(`$ZodCheckStringFormat`,(e,t)=>{var n,r;Qp.init(e,t),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),lm=B(`$ZodCheckRegex`,(e,t)=>{cm.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),um=B(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=Xp,cm.init(e,t)}),dm=B(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Zp,cm.init(e,t)}),fm=B(`$ZodCheckIncludes`,(e,t)=>{Qp.init(e,t);let n=Jd(t.includes);t.pattern=new RegExp(typeof t.position==`number`?`^.{${t.position},}${n}`:n),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),pm=B(`$ZodCheckStartsWith`,(e,t)=>{Qp.init(e,t);let n=RegExp(`^${Jd(t.prefix)}.*`);t.pattern??=n,e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),mm=B(`$ZodCheckEndsWith`,(e,t)=>{Qp.init(e,t);let n=RegExp(`.*${Jd(t.suffix)}$`);t.pattern??=n,e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),hm=B(`$ZodCheckOverwrite`,(e,t)=>{Qp.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),gm=class{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}indented(e){this.indent+=1;try{e(this)}finally{--this.indent}}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` `).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.content??[``];return new e(...Object.keys(this.closed),`return function (${this.args.join(`, `)}) {\n${t.join(` -`)}\n};`)(...Object.values(this.closed))}},gm={major:4,minor:6,patch:5},_m=V(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=gm;let r=e._zod.def.checks,i=e._zod.traits.has(`$ZodCheck`)?[e,...r??[]]:r?.length?[...r]:[];for(let t of i)for(let n of t._zod.onattach)n(e);if(i.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(t,n,r)=>{if(t.memo)return t;let i=cf(t),a;for(let o of n){if(o._zod.def.when){if(lf(t)||!o._zod.def.when(t))continue}else if(i)continue;let n=t.issues.length,s=o._zod.check(t);if(s instanceof Promise&&r?.async===!1)throw new Lf;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,t.issues.length!==n&&(ff(t.issues,n,e),i||=cf(t,n))});else{if(t.issues.length===n)continue;ff(t.issues,n,e),i||=cf(t,n)}}return a?a.then(()=>t):t},n=(n,r,a)=>{if(cf(n))return n.aborted=!0,n;let o=t(r,i,a);if(o instanceof Promise){if(a.async===!1)throw new Lf;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(r,a)=>{if(a.skipChecks)return e._zod.parse(r,a);if(a.direction===`backward`){let t=e._zod.parse({value:r.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,r,a)):n(t,r,a)}let o=e._zod.parse(r,a);if(o instanceof Promise){if(a.async===!1)throw new Lf;return o.then(e=>t(e,i,a))}return t(o,i,a)}}},{get"~standard"(){return xf(this,`~standard`,bm(this))},set"~standard"(e){bf(this,`~standard`,e)}}),vm=(e,t)=>e.issues.length?{issues:e.issues.map(e=>pf(e,t,Bf()))}:{value:e.value};async function ym(e,t){let n={async:!0};return vm(await e._zod.run({value:t,issues:[]},n),n)}function bm(e){return{validate:t=>{let n={async:!1};try{let r=e._zod.run({value:t,issues:[]},n);if(!(r instanceof Promise))return vm(r,n)}catch{}return ym(e,t)},vendor:`zod`,version:1}}var xm=V(`$ZodString`,(e,t)=>{_m.init(e,t),e._zod.pattern=t.pattern??Up,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),Sm=V(`$ZodStringFormat`,(e,t)=>{sm.init(e,t),xm.init(e,t)}),Cm=V(`$ZodGUID`,(e,t)=>{t.pattern??=wp,Sm.init(e,t)}),wm=V(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=Tp(e)}else t.pattern??=Tp();Sm.init(e,t)}),Tm=V(`$ZodEmail`,(e,t)=>{t.pattern??=Ep,Sm.init(e,t)});function Em(e){try{return typeof URL<`u`&&typeof URL.canParse==`function`?URL.canParse(e):(new URL(e),!0)}catch{return!1}}function Dm(e,t){return!(`normalize`in t)&&!(`hostname`in t)&&!(`protocol`in t)?Em(e)||2:Om(e,t)}function Om(e,t){if(!t.normalize&&t.protocol?.source===Fp.source&&!/^https?:\/\//i.test(e))return 1;try{if(typeof URL<`u`){let t=URL;if(typeof t.parse==`function`)return t.parse(e)??2}return new URL(e)}catch{return 2}}var km=/[\t\n\r]/g;function Am(e){return e.replace(km,``)}function jm(e,t){return t.lastIndex=0,t.test(e.hostname)}function Mm(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(`:`)?e.protocol.slice(0,-1):e.protocol)}var Nm=V(`$ZodURL`,(e,t)=>{Sm.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),i=Dm(r,t);if(i===1){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}if(i===2){n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort});return}if(i===!0){n.value=Am(r);return}t.hostname&&!jm(i,t.hostname)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort}),t.protocol&&!Mm(i,t.protocol)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort}),n.value=t.normalize?i.href:Am(r);return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),Pm=V(`$ZodEmoji`,(e,t)=>{t.pattern??=Op(),Sm.init(e,t)}),Fm=V(`$ZodNanoID`,(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw Error(`Invalid nanoid length: ${t.length}`);t.pattern??=t.length===void 0?xp:Sp(t.length),Sm.init(e,t)}),Im=V(`$ZodCUID`,(e,t)=>{t.pattern??=gp,Sm.init(e,t)}),Lm=V(`$ZodCUID2`,(e,t)=>{t.pattern??=_p,Sm.init(e,t)}),Rm=V(`$ZodULID`,(e,t)=>{t.pattern??=vp,Sm.init(e,t)}),zm=V(`$ZodXID`,(e,t)=>{t.pattern??=yp,Sm.init(e,t)}),Bm=V(`$ZodKSUID`,(e,t)=>{t.pattern??=bp,Sm.init(e,t)}),Vm=V(`$ZodISODateTime`,(e,t)=>{t.pattern??=Hp(t),Sm.init(e,t)}),Hm=V(`$ZodISODate`,(e,t)=>{t.pattern??=zp,Sm.init(e,t)}),Um=V(`$ZodISOTime`,(e,t)=>{t.pattern??=Vp(t),Sm.init(e,t)}),Wm=V(`$ZodISODuration`,(e,t)=>{t.pattern??=Cp,Sm.init(e,t)}),Gm=V(`$ZodIPv4`,(e,t)=>{t.pattern??=kp,Sm.init(e,t)}),Km=/^[0-9a-fA-F:.]+$/;function qm(e){return Km.test(e)?Em(`http://[${e}]`):!1}var Jm=V(`$ZodIPv6`,(e,t)=>{t.pattern??=Ap,Sm.init(e,t),e._zod.check=n=>{qm(n.value)||n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}),Ym=V(`$ZodCIDRv4`,(e,t)=>{t.pattern??=jp,Sm.init(e,t)});function Xm(e){let t=e.split(`/`);if(t.length!==2)return!1;let[n,r]=t;if(!r)return!1;let i=Number(r);return`${i}`!==r||i<0||i>128?!1:qm(n)}var Zm=V(`$ZodCIDRv6`,(e,t)=>{t.pattern??=Mp,Sm.init(e,t),e._zod.check=n=>{Xm(n.value)||n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}});function Qm(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var $m=/^[0-9a-zA-Z+/]*={0,2}$/,eh=V(`$ZodBase64`,(e,t)=>{t.pattern??=$m,Sm.init(e,t),e._zod.check=n=>{Qm(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}}),th=/^[A-Za-z0-9_-]*$/;function nh(e){if(!th.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return Qm(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var rh=V(`$ZodBase64URL`,(e,t)=>{t.pattern??=th,Sm.init(e,t),e._zod.check=n=>{nh(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),ih=V(`$ZodE164`,(e,t)=>{t.pattern??=Ip,Sm.init(e,t)});function ah(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var oh=V(`$ZodJWT`,(e,t)=>{Sm.init(e,t),e._zod.check=n=>{ah(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),sh=V(`$ZodNumber`,(e,t)=>{_m.init(e,t),e._zod.pattern=Gp,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:String(i):void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),ch=V(`$ZodNumberFormat`,(e,t)=>{rm.init(e,t),sh.init(e,t)}),lh=V(`$ZodBoolean`,(e,t)=>{_m.init(e,t),e._zod.pattern=Kp,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),uh=V(`$ZodUndefined`,(e,t)=>{_m.init(e,t),e._zod.pattern=Jp,e._zod.values=new Set([void 0]),e._zod.parse=(t,n)=>{let r=t.value;return r===void 0||t.issues.push({expected:`undefined`,code:`invalid_type`,input:r,inst:e}),t}}),dh=V(`$ZodNull`,(e,t)=>{_m.init(e,t),e._zod.pattern=qp,e._zod.values=new Set([null]),e._zod.parse=(t,n)=>{let r=t.value;return r===null||t.issues.push({expected:`null`,code:`invalid_type`,input:r,inst:e}),t}}),fh=V(`$ZodAny`,(e,t)=>{_m.init(e,t),e._zod.parse=e=>e}),ph=V(`$ZodUnknown`,(e,t)=>{_m.init(e,t),e._zod.parse=e=>e}),mh=V(`$ZodNever`,(e,t)=>{_m.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function hh(e,t,n){e.issues.length&&t.issues.push(...uf(n,e.issues)),t.value[n]=e.value}var gh=V(`$ZodArray`,(e,t)=>{_m.init(e,t);let n=zf.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({expected:`array`,code:`invalid_type`,input:a,inst:e}),r;r.value=n?n.alloc(e,r,Array(a.length),i):Array(a.length);let o=[],s=i?.abortEarly;for(let e=0;ehh(t,r,e)));else if(hh(c,r,e),s&&c.issues.length!==0&&cf(c))break}return o.length?Promise.all(o).then(()=>r):r}});function _h(e,t,n,r,i,a){let o=n in r,s=a===`optional`;if(o||!s||i!==`optional`){if(e.issues.length){if(i!==void 0&&s&&!o)return;t.issues.push(...uf(n,e.issues))}if(!o&&i===void 0){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?(o||i===`defaulted`&&!s)&&(t.value[n]=void 0):t.value[n]=e.value}}var vh=[];function yh(e){let t=Object.keys(e.shape),n=Object.getOwnPropertySymbols(e.shape),r=n.length?n:vh,i=r.length?[...t,...r]:t;for(let t of i)if(!e.shape?.[t]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${String(t)}": expected a Zod schema`);let a=Yd(e.shape);return{...e,allKeys:i,symbolKeys:r,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(a)}}function bh(e,t,n,r,i,a,o){let s=[],c=i.keySet,l=i.catchall._zod,u=l.def.type,d=l.optin,f=l.optout,p=0;for(let i in t){if(o&&n.issues.length!==p){if(cf(n,p))break;p=n.issues.length}if(c.has(i))continue;if(i===`__proto__`){u===`never`&&s.push(i);continue}if(u===`never`){s.push(i);continue}let a=l.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>_h(e,n,i,t,d,f))):_h(a,n,i,t,d,f)}return s.length&&n.issues.push({code:`unrecognized_keys`,keys:s,input:t,inst:a,continue:!0}),e.length?Promise.all(e).then(()=>n):n}var xh=V(`$ZodObject`,(e,t)=>{_m.init(e,t);let n=Object.getOwnPropertyDescriptor(t,`shape`),r=n?.get?n.get.raw:t.shape??{};if(r){let e=()=>{let n={...r};return Object.defineProperty(t,"shape",{value:n}),e.raw=n,n};e.raw=r,Object.defineProperty(t,"shape",{get:e})}let i=wd(()=>yh(t));Of(e,`propValues`,e=>{let t=e.def.shape,n={};for(let e in t){let r=t[e]._zod;if(r.values){Object.prototype.hasOwnProperty.call(n,e)||Ad(n,e,new Set);for(let t of r.values)n[e].add(t);r.optin!==void 0&&n[e].add(void 0)}}return n});let a=Vd,o=t.catchall,s,c=zf.memoizer;c?.attach(e),e._zod.parse=(t,n)=>{s??=i.value;let r=t.value;if(!a(r))return t.issues.push({expected:`object`,code:`invalid_type`,input:r,inst:e}),t;t.value=c?c.alloc(e,t,{},n):{};let l=[],u=s.shape,d=n?.abortEarly,f=t.issues.length;for(let e of s.allKeys){if(d&&t.issues.length!==f){if(cf(t,f))break;f=t.issues.length}if(e===`__proto__`)continue;let i=u[e],a=i._zod.optin,o=i._zod.optout,s=i._zod.run({value:r[e],issues:[]},n);s instanceof Promise?l.push(s.then(n=>_h(n,t,e,r,a,o))):_h(s,t,e,r,a,o)}return o?bh(l,r,t,n,i.value,e,d===!0):l.length?Promise.all(l).then(()=>t):t}}),Sh=V(`$ZodObjectJIT`,(e,t)=>{xh.init(e,t);let n=e._zod.parse,r=wd(()=>yh(t)),i=zf.memoizer,a=t=>{let n=r.value,a=n.symbolKeys,o=new hm([`payload`,`ctx`],{shape:t,inst:e,memo:i,syms:a}),s=e=>`shape[${e}]._zod.run({ value: input[${e}], issues: [] }, ctx)`,c=(e,t)=>` +`)}\n};`)(...Object.values(this.closed))}},_m={major:4,minor:6,patch:5},vm=B(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=_m;let r=e._zod.def.checks,i=e._zod.traits.has(`$ZodCheck`)?[e,...r??[]]:r?.length?[...r]:[];for(let t of i)for(let n of t._zod.onattach)n(e);if(i.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(t,n,r)=>{if(t.memo)return t;let i=uf(t),a;for(let o of n){if(o._zod.def.when){if(df(t)||!o._zod.def.when(t))continue}else if(i)continue;let n=t.issues.length,s=o._zod.check(t);if(s instanceof Promise&&r?.async===!1)throw new zf;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,t.issues.length!==n&&(mf(t.issues,n,e),i||=uf(t,n))});else{if(t.issues.length===n)continue;mf(t.issues,n,e),i||=uf(t,n)}}return a?a.then(()=>t):t},n=(n,r,a)=>{if(uf(n))return n.aborted=!0,n;let o=t(r,i,a);if(o instanceof Promise){if(a.async===!1)throw new zf;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(r,a)=>{if(a.skipChecks)return e._zod.parse(r,a);if(a.direction===`backward`){let t=e._zod.parse({value:r.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,r,a)):n(t,r,a)}let o=e._zod.parse(r,a);if(o instanceof Promise){if(a.async===!1)throw new zf;return o.then(e=>t(e,i,a))}return t(o,i,a)}}},{get"~standard"(){return Cf(this,`~standard`,xm(this))},set"~standard"(e){Sf(this,`~standard`,e)}}),ym=(e,t)=>e.issues.length?{issues:e.issues.map(e=>hf(e,t,Hf()))}:{value:e.value};async function bm(e,t){let n={async:!0};return ym(await e._zod.run({value:t,issues:[]},n),n)}function xm(e){return{validate:t=>{let n={async:!1};try{let r=e._zod.run({value:t,issues:[]},n);if(!(r instanceof Promise))return ym(r,n)}catch{}return bm(e,t)},vendor:`zod`,version:1}}var Sm=B(`$ZodString`,(e,t)=>{vm.init(e,t),e._zod.pattern=t.pattern??Wp,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),Cm=B(`$ZodStringFormat`,(e,t)=>{cm.init(e,t),Sm.init(e,t)}),wm=B(`$ZodGUID`,(e,t)=>{t.pattern??=Tp,Cm.init(e,t)}),Tm=B(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=Ep(e)}else t.pattern??=Ep();Cm.init(e,t)}),Em=B(`$ZodEmail`,(e,t)=>{t.pattern??=Dp,Cm.init(e,t)});function Dm(e){try{return typeof URL<`u`&&typeof URL.canParse==`function`?URL.canParse(e):(new URL(e),!0)}catch{return!1}}function Om(e,t){return!(`normalize`in t)&&!(`hostname`in t)&&!(`protocol`in t)?Dm(e)||2:km(e,t)}function km(e,t){if(!t.normalize&&t.protocol?.source===Ip.source&&!/^https?:\/\//i.test(e))return 1;try{if(typeof URL<`u`){let t=URL;if(typeof t.parse==`function`)return t.parse(e)??2}return new URL(e)}catch{return 2}}var Am=/[\t\n\r]/g;function jm(e){return e.replace(Am,``)}function Mm(e,t){return t.lastIndex=0,t.test(e.hostname)}function Nm(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(`:`)?e.protocol.slice(0,-1):e.protocol)}var Pm=B(`$ZodURL`,(e,t)=>{Cm.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),i=Om(r,t);if(i===1){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}if(i===2){n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort});return}if(i===!0){n.value=jm(r);return}t.hostname&&!Mm(i,t.hostname)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort}),t.protocol&&!Nm(i,t.protocol)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort}),n.value=t.normalize?i.href:jm(r);return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),Fm=B(`$ZodEmoji`,(e,t)=>{t.pattern??=kp(),Cm.init(e,t)}),Im=B(`$ZodNanoID`,(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw Error(`Invalid nanoid length: ${t.length}`);t.pattern??=t.length===void 0?Sp:Cp(t.length),Cm.init(e,t)}),Lm=B(`$ZodCUID`,(e,t)=>{t.pattern??=_p,Cm.init(e,t)}),Rm=B(`$ZodCUID2`,(e,t)=>{t.pattern??=vp,Cm.init(e,t)}),zm=B(`$ZodULID`,(e,t)=>{t.pattern??=yp,Cm.init(e,t)}),Bm=B(`$ZodXID`,(e,t)=>{t.pattern??=bp,Cm.init(e,t)}),Vm=B(`$ZodKSUID`,(e,t)=>{t.pattern??=xp,Cm.init(e,t)}),Hm=B(`$ZodISODateTime`,(e,t)=>{t.pattern??=Up(t),Cm.init(e,t)}),Um=B(`$ZodISODate`,(e,t)=>{t.pattern??=Bp,Cm.init(e,t)}),Wm=B(`$ZodISOTime`,(e,t)=>{t.pattern??=Hp(t),Cm.init(e,t)}),Gm=B(`$ZodISODuration`,(e,t)=>{t.pattern??=wp,Cm.init(e,t)}),Km=B(`$ZodIPv4`,(e,t)=>{t.pattern??=Ap,Cm.init(e,t)}),qm=/^[0-9a-fA-F:.]+$/;function Jm(e){return qm.test(e)?Dm(`http://[${e}]`):!1}var Ym=B(`$ZodIPv6`,(e,t)=>{t.pattern??=jp,Cm.init(e,t),e._zod.check=n=>{Jm(n.value)||n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}),Xm=B(`$ZodCIDRv4`,(e,t)=>{t.pattern??=Mp,Cm.init(e,t)});function Zm(e){let t=e.split(`/`);if(t.length!==2)return!1;let[n,r]=t;if(!r)return!1;let i=Number(r);return`${i}`!==r||i<0||i>128?!1:Jm(n)}var Qm=B(`$ZodCIDRv6`,(e,t)=>{t.pattern??=Np,Cm.init(e,t),e._zod.check=n=>{Zm(n.value)||n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}});function $m(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var eh=/^[0-9a-zA-Z+/]*={0,2}$/,th=B(`$ZodBase64`,(e,t)=>{t.pattern??=eh,Cm.init(e,t),e._zod.check=n=>{$m(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}}),nh=/^[A-Za-z0-9_-]*$/;function rh(e){if(!nh.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return $m(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var ih=B(`$ZodBase64URL`,(e,t)=>{t.pattern??=nh,Cm.init(e,t),e._zod.check=n=>{rh(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),ah=B(`$ZodE164`,(e,t)=>{t.pattern??=Lp,Cm.init(e,t)});function oh(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var sh=B(`$ZodJWT`,(e,t)=>{Cm.init(e,t),e._zod.check=n=>{oh(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),ch=B(`$ZodNumber`,(e,t)=>{vm.init(e,t),e._zod.pattern=Kp,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:String(i):void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),lh=B(`$ZodNumberFormat`,(e,t)=>{im.init(e,t),ch.init(e,t)}),uh=B(`$ZodBoolean`,(e,t)=>{vm.init(e,t),e._zod.pattern=qp,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),dh=B(`$ZodUndefined`,(e,t)=>{vm.init(e,t),e._zod.pattern=Yp,e._zod.values=new Set([void 0]),e._zod.parse=(t,n)=>{let r=t.value;return r===void 0||t.issues.push({expected:`undefined`,code:`invalid_type`,input:r,inst:e}),t}}),fh=B(`$ZodNull`,(e,t)=>{vm.init(e,t),e._zod.pattern=Jp,e._zod.values=new Set([null]),e._zod.parse=(t,n)=>{let r=t.value;return r===null||t.issues.push({expected:`null`,code:`invalid_type`,input:r,inst:e}),t}}),ph=B(`$ZodAny`,(e,t)=>{vm.init(e,t),e._zod.parse=e=>e}),mh=B(`$ZodUnknown`,(e,t)=>{vm.init(e,t),e._zod.parse=e=>e}),hh=B(`$ZodNever`,(e,t)=>{vm.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function gh(e,t,n){e.issues.length&&t.issues.push(...ff(n,e.issues)),t.value[n]=e.value}var _h=B(`$ZodArray`,(e,t)=>{vm.init(e,t);let n=Vf.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({expected:`array`,code:`invalid_type`,input:a,inst:e}),r;r.value=n?n.alloc(e,r,Array(a.length),i):Array(a.length);let o=[],s=i?.abortEarly;for(let e=0;egh(t,r,e)));else if(gh(c,r,e),s&&c.issues.length!==0&&uf(c))break}return o.length?Promise.all(o).then(()=>r):r}});function vh(e,t,n,r,i,a){let o=n in r,s=a===`optional`;if(o||!s||i!==`optional`){if(e.issues.length){if(i!==void 0&&s&&!o)return;t.issues.push(...ff(n,e.issues))}if(!o&&i===void 0){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?(o||i===`defaulted`&&!s)&&(t.value[n]=void 0):t.value[n]=e.value}}var yh=[];function bh(e){let t=Object.keys(e.shape),n=Object.getOwnPropertySymbols(e.shape),r=n.length?n:yh,i=r.length?[...t,...r]:t;for(let t of i)if(!e.shape?.[t]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${String(t)}": expected a Zod schema`);let a=Zd(e.shape);return{...e,allKeys:i,symbolKeys:r,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(a)}}function xh(e,t,n,r,i,a,o){let s=[],c=i.keySet,l=i.catchall._zod,u=l.def.type,d=l.optin,f=l.optout,p=0;for(let i in t){if(o&&n.issues.length!==p){if(uf(n,p))break;p=n.issues.length}if(c.has(i))continue;if(i===`__proto__`){u===`never`&&s.push(i);continue}if(u===`never`){s.push(i);continue}let a=l.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>vh(e,n,i,t,d,f))):vh(a,n,i,t,d,f)}return s.length&&n.issues.push({code:`unrecognized_keys`,keys:s,input:t,inst:a,continue:!0}),e.length?Promise.all(e).then(()=>n):n}var Sh=B(`$ZodObject`,(e,t)=>{vm.init(e,t);let n=Object.getOwnPropertyDescriptor(t,`shape`),r=n?.get?n.get.raw:t.shape??{};if(r){let e=()=>{let n={...r};return Object.defineProperty(t,"shape",{value:n}),e.raw=n,n};e.raw=r,Object.defineProperty(t,"shape",{get:e})}let i=Ed(()=>bh(t));Af(e,`propValues`,e=>{let t=e.def.shape,n={};for(let e in t){let r=t[e]._zod;if(r.values){Object.prototype.hasOwnProperty.call(n,e)||Md(n,e,new Set);for(let t of r.values)n[e].add(t);r.optin!==void 0&&n[e].add(void 0)}}return n});let a=Ud,o=t.catchall,s,c=Vf.memoizer;c?.attach(e),e._zod.parse=(t,n)=>{s??=i.value;let r=t.value;if(!a(r))return t.issues.push({expected:`object`,code:`invalid_type`,input:r,inst:e}),t;t.value=c?c.alloc(e,t,{},n):{};let l=[],u=s.shape,d=n?.abortEarly,f=t.issues.length;for(let e of s.allKeys){if(d&&t.issues.length!==f){if(uf(t,f))break;f=t.issues.length}if(e===`__proto__`)continue;let i=u[e],a=i._zod.optin,o=i._zod.optout,s=i._zod.run({value:r[e],issues:[]},n);s instanceof Promise?l.push(s.then(n=>vh(n,t,e,r,a,o))):vh(s,t,e,r,a,o)}return o?xh(l,r,t,n,i.value,e,d===!0):l.length?Promise.all(l).then(()=>t):t}}),Ch=B(`$ZodObjectJIT`,(e,t)=>{Sh.init(e,t);let n=e._zod.parse,r=Ed(()=>bh(t)),i=Vf.memoizer,a=t=>{let n=r.value,a=n.symbolKeys,o=new gm([`payload`,`ctx`],{shape:t,inst:e,memo:i,syms:a}),s=e=>`shape[${e}]._zod.run({ value: input[${e}], issues: [] }, ctx)`,c=(e,t)=>` let ${e}_ab = false; for (let i = 0; i < ${e}.issues.length; i++) { const iss = ${e}.issues[i]; @@ -19,7 +19,7 @@ if (${e}_ab && ctx && ctx.abortEarly) { payload.value = newResult; return payload; - }`;o.write(`const input = payload.value;`);let l=Object.create(null),u=0;for(let e of n.allKeys)l[e]=`key_${u++}`;o.write(i?`const newResult = memo.alloc(inst, payload, {}, ctx);`:`const newResult = {};`);for(let e of n.allKeys){if(e===`__proto__`)continue;let n=l[e],r=typeof e==`symbol`?`syms[${a.indexOf(e)}]`:Rd(e),i=`${r} in input`,u=t[e],d=u?._zod?.optin,f=d!==void 0,p=u?._zod?.optout===`optional`;if(o.write(`const ${n} = ${s(r)};`),f&&p){let e=d===`optional`?`${n}_present`:`${n}.value !== undefined || ${n}_present`;o.write(` + }`;o.write(`const input = payload.value;`);let l=Object.create(null),u=0;for(let e of n.allKeys)l[e]=`key_${u++}`;o.write(i?`const newResult = memo.alloc(inst, payload, {}, ctx);`:`const newResult = {};`);for(let e of n.allKeys){if(e===`__proto__`)continue;let n=l[e],r=typeof e==`symbol`?`syms[${a.indexOf(e)}]`:Bd(e),i=`${r} in input`,u=t[e],d=u?._zod?.optin,f=d!==void 0,p=u?._zod?.optout===`optional`;if(o.write(`const ${n} = ${s(r)};`),f&&p){let e=d===`optional`?`${n}_present`:`${n}.value !== undefined || ${n}_present`;o.write(` const ${n}_present = ${i}; if (!${n}.issues.length || ${n}_present) { if (${n}.issues.length) {${c(n,r)} @@ -58,15 +58,15 @@ newResult[${r}] = ${n}.value; } - `)}return o.write(`payload.value = newResult;`),o.write(`return payload;`),o.compile()},o,s=Vd,c=!zf.jitless,l=c&&Hd.value,u=t.catchall,d;e._zod.parse=(i,f)=>{d??=r.value;let p=i.value;return s(p)?c&&l&&f?.async===!1&&f.jitless!==!0?(o||=a(t.shape),i=o(i,f),u?bh([],p,i,f,d,e,f?.abortEarly===!0):i):n(i,f):(i.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),i)}});function Ch(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!cf(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>pf(e,r,Bf())))}),t)}var wh=V(`$ZodUnion`,(e,t)=>{_m.init(e,t),Of(e,`optin`,e=>e.def.options.some(e=>e._zod.optin===`defaulted`)?`defaulted`:e.def.options.some(e=>e._zod.optin!==void 0)?`optional`:void 0),Of(e,`optout`,e=>e.def.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),Of(e,`values`,e=>{if(e.def.options.every(e=>e._zod.values))return new Set(e.def.options.flatMap(e=>Array.from(e._zod.values)))}),Of(e,`pattern`,e=>{if(e.def.options.every(e=>e._zod.pattern)){let t=e.def.options.map(e=>e._zod.pattern);return RegExp(`^(${t.map(e=>Ed(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>Ch(t,r,e,i)):Ch(o,r,e,i)}});function Th(e){let t=new Map;for(let n of e.options){let r=n._zod.propValues?.[e.discriminator];if(!r||r.size===0)throw Error(`Invalid discriminated union option at index "${e.options.indexOf(n)}"`);for(let e of r)if(t.has(e)){if(e!==void 0)throw Error(`Duplicate discriminator value "${String(e)}"`);t.set(e,null)}else t.set(e,n)}return t}var Eh=V(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,wh.init(e,t);let n=e._zod.parse;Of(e,`propValues`,e=>{let t={},n=0;for(let r of e.def.options){let i=r._zod.propValues;if(!i||Object.keys(i).length===0)throw Error(`Invalid discriminated union option at index "${e.def.options.indexOf(r)}"`);i[e.def.discriminator]?.has(void 0)&&n++;for(let[e,n]of Object.entries(i)){Object.prototype.hasOwnProperty.call(t,e)||Ad(t,e,new Set);for(let r of n)t[e].add(r)}}return!e.def.unionFallback&&n>1&&t[e.def.discriminator]?.delete(void 0),t}),t.options.forEach((e,n)=>{let r=jd(e._zod.def);if(r&&!Object.prototype.hasOwnProperty.call(r,t.discriminator))throw Error(`Invalid discriminated union option at index "${n}"`)});let r=wd(()=>Th(t));e._zod.parse=(i,a)=>{let o=i.value;if(!Vd(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=o?.[t.discriminator],c=r.value.get(s);return c&&(s!==void 0||a.direction!==`backward`)?c._zod.run(i,a):t.unionFallback||a.direction===`backward`?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,options:Array.from(r.value.keys()).filter(e=>r.value.get(e)!==null),input:o,path:[t.discriminator],inst:e}),i)}}),Dh=V(`$ZodIntersection`,(e,t)=>{_m.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>kh(e,t,n)):kh(e,i,a)}});function Oh(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(Ud(e)&&Ud(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};Object.prototype.hasOwnProperty.call(i,`__proto__`)&&delete i.__proto__;for(let n of r){if(n===`__proto__`)continue;let r=Oh(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r{let n;if(e.code===`unrecognized_keys`&&!e.path?.length)i??=e,n=e.keys;else if(e.code===`invalid_key`&&e.origin===`record`&&e.path?.length===1){let t=String(e.path[0]);a.has(t)||a.set(t,e),n=[t]}else return!1;for(let e of n)r.has(e)||r.set(e,{}),r.get(e)[t]=!0;return!0};for(let n of t.issues)o(n,`l`)||e.issues.push(n);for(let t of n.issues)o(t,`r`)||e.issues.push(t);let s=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(s.length){let t=i?s.filter(e=>i.keys.includes(e)):[];t.length&&e.issues.push({...i,keys:t});for(let n of s)!t.includes(n)&&a.has(n)&&e.issues.push(a.get(n))}let c=Oh(t.value,n.value);if(!c.valid){if(cf(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}var Ah=V(`$ZodRecord`,(e,t)=>{_m.init(e,t);let n=zf.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Ud(a))return r.issues.push({expected:`record`,code:`invalid_type`,input:a,inst:e}),r;let o=[],s=t.keyType._zod.values;if(s&&!t.partial){r.value=n?n.alloc(e,r,{},i):{};let c=new Set;for(let n of s)if(typeof n==`string`||typeof n==`number`||typeof n==`symbol`){if(c.add(typeof n==`number`?n.toString():n),n===`__proto__`)continue;let s=t.keyType._zod.run({value:n,issues:[]},i);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(s.issues.length){r.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>pf(e,i,Bf())),input:n,path:[n],inst:e});continue}let l=s.value;if(l===`__proto__`)continue;let u=t.valueType._zod.run({value:a[n],issues:[]},i);u instanceof Promise?o.push(u.then(e=>{e.issues.length&&r.issues.push(...uf(n,e.issues)),r.value[l]=e.value})):(u.issues.length&&r.issues.push(...uf(n,u.issues)),r.value[l]=u.value)}let l;for(let e in a)if(!c.has(e)){if(t.mode===`loose`){if(e===`__proto__`)continue;r.value[e]=a[e]}else l??=[],l.push(e)}l&&l.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:l,continue:!0})}else{r.value=n?n.alloc(e,r,{},i):{};let c;for(let n of Reflect.ownKeys(a)){if(n===`__proto__`||!Object.prototype.propertyIsEnumerable.call(a,n))continue;let l=t.keyType._zod.run({value:n,issues:[]},i);if(l instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(typeof n==`string`&&Gp.test(n)&&l.issues.length){let e=t.keyType._zod.run({value:Number(n),issues:[]},i);if(e instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);e.issues.length===0&&(l=e)}if(l.issues.length){t.mode===`loose`?r.value[n]=a[n]:s?(c??=[],c.push(n)):r.issues.push({code:`invalid_key`,origin:`record`,issues:l.issues.map(e=>pf(e,i,Bf())),input:n,path:[n],inst:e});continue}let u=l.value;if(u===`__proto__`)continue;let d=t.valueType._zod.run({value:a[n],issues:[]},i);d instanceof Promise?o.push(d.then(e=>{e.issues.length&&r.issues.push(...uf(n,e.issues)),r.value[u]=e.value})):(d.issues.length&&r.issues.push(...uf(n,d.issues)),r.value[u]=d.value)}c&&c.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:c,continue:!0})}return o.length?Promise.all(o).then(()=>r):r}}),jh=V(`$ZodEnum`,(e,t)=>{_m.init(e,t);let n=bd(t.entries),r=new Set(n);e._zod.values=r,Of(e,`pattern`,e=>{let t=bd(e.def.entries).filter(e=>Gd.has(typeof e));return RegExp(t.length?`^(${t.map(e=>Kd(e.toString())).join(`|`)})$`:`^[^\\s\\S]$`)}),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),Mh=V(`$ZodLiteral`,(e,t)=>{_m.init(e,t);let n=new Set(t.values);e._zod.values=n,Of(e,`pattern`,e=>{let t=e.def.values;return RegExp(t.length?`^(${t.map(e=>typeof e==`string`?Kd(e):e?Kd(e.toString()):String(e)).join(`|`)})$`:`^[^\\s\\S]$`)}),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),Nh=V(`$ZodTransform`,(e,t)=>{_m.init(e,t),e._zod.optin=`optional`,zf.memoizer?.guard(e),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Rf(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n));if(i instanceof Promise)throw new Lf;return n.value=i,n}});function Ph(e,t){return e.value=t.issues.length?void 0:t.value,e}var Fh=V(`$ZodOptional`,(e,t)=>{_m.init(e,t),Of(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),e._zod.optout=`optional`,Of(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t,void 0]):void 0}),Of(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${Ed(t.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(e.value===void 0){if(t.innerType._zod.optin!==`defaulted`)return e;let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(t=>Ph(e,t)):Ph(e,r)}return t.innerType._zod.run(e,n)}}),Ih=V(`$ZodExactOptional`,(e,t)=>{Fh.init(e,t),Of(e,`values`,e=>e.def.innerType._zod.values),Of(e,`pattern`,e=>e.def.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),Lh=V(`$ZodNullable`,(e,t)=>{_m.init(e,t),Of(e,`optin`,e=>e.def.innerType._zod.optin),Of(e,`optout`,e=>e.def.innerType._zod.optout),Of(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${Ed(t.source)}|null)$`):void 0}),Of(e,`values`,e=>e.def.innerType._zod.values?new Set([...e.def.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),Rh=V(`$ZodDefault`,(e,t)=>{_m.init(e,t),e._zod.optin=`defaulted`,Of(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>zh(e,t)):zh(r,t)}});function zh(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var Bh=V(`$ZodPrefault`,(e,t)=>{_m.init(e,t),e._zod.optin=`defaulted`,Of(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),Vh=V(`$ZodNonOptional`,(e,t)=>{_m.init(e,t),Of(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>Hh(t,e)):Hh(i,e)}});function Hh(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}function Uh(e,t,n,r){return t.issues.length?(e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map(e=>pf(e,r,Bf()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}var Wh=V(`$ZodCatch`,(e,t)=>{_m.init(e,t),Of(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),Of(e,`optout`,e=>e.def.innerType._zod.optout),Of(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(r=>Uh(e,r,t,n)):Uh(e,r,t,n)}}),Gh=V(`$ZodPipe`,(e,t)=>{_m.init(e,t),Of(e,`values`,e=>e.def.in._zod.values),Of(e,`optin`,e=>e.def.in._zod.optin),Of(e,`optout`,e=>e.def.out._zod.optout),Of(e,`propValues`,e=>e.def.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>Kh(e,t.in,n)):Kh(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>Kh(e,t.out,n)):Kh(r,t.out,n)}});function Kh(e,t,n){return e.issues.some(e=>e.code!==`unrecognized_keys`)?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}var qh=V(`$ZodPreprocess`,(e,t)=>{Gh.init(e,t)}),Jh=V(`$ZodReadonly`,(e,t)=>{_m.init(e,t),Of(e,`propValues`,e=>e.def.innerType._zod.propValues),Of(e,`values`,e=>e.def.innerType._zod.values),Of(e,`optin`,e=>e.def.innerType?._zod?.optin),Of(e,`optout`,e=>e.def.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Yh):Yh(r)}});function Yh(e){return e.memo||(e.value=Object.freeze(e.value)),e}var Xh=V(`$ZodLazy`,(e,t)=>{_m.init(e,t),kd(e._zod,`innerType`,()=>{let e=t;return e._cachedInner||=t.getter(),e._cachedInner}),Of(e,`pattern`,e=>e.innerType?._zod?.pattern),Of(e,`propValues`,e=>e.innerType?._zod?.propValues),Of(e,`optin`,e=>e.innerType?._zod?.optin??void 0),Of(e,`optout`,e=>e.innerType?._zod?.optout??void 0),e._zod.parse=(t,n)=>e._zod.innerType._zod.run(t,n)}),Zh=V(`$ZodCustom`,(e,t)=>{Zp.init(e,t),_m.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>Qh(t,n,r,e));Qh(i,n,r,e)}});function Qh(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(vf(e))}}var $h=class extends Error{constructor(){super(`Cannot parse a reference cycle that closes through a transform`),this.name=`ZodCyclicError`}},eg=`~memo`,tg=[];function ng(e){return typeof e==`object`&&!!e}function rg(e){return e.map(e=>e.path?{...e,path:e.path.slice()}:{...e})}var ig=new WeakMap,ag=0,og=1,sg=2;function cg(e,t,n){let r=ig.get(e);if(r!==void 0)return r?sg:ag;if(t.has(e))return sg;t.add(e);let i=ag,a=e=>{if(i!==sg&&e?._zod){let r=cg(e,t,n);r>i&&(i=r)}},o=(e,r)=>{let i=ag;for(let a of Reflect.ownKeys(e)){let o=Object.getOwnPropertyDescriptor(e,a);if(r&&!o.enumerable)continue;let s=o.get?og:o.value?._zod?cg(o.value,t,n):ag;s>i&&(i=s)}return i},s=e=>{e>i&&(i=e)},c=e._zod.def;switch(c.type){case`object`:{let e=jd(c);s(e?o(e,!0):og),a(c.catchall);break}case`array`:a(c.element);break;case`tuple`:for(let e of c.items)a(e);a(c.rest);break;case`record`:case`map`:a(c.keyType),a(c.valueType);break;case`set`:a(c.valueType);break;case`union`:for(let e of c.options)a(e);break;case`intersection`:a(c.left),a(c.right);break;case`optional`:case`nullable`:case`default`:case`prefault`:case`catch`:case`readonly`:case`nonoptional`:case`promise`:case`success`:a(c.innerType);break;case`pipe`:a(c.in),a(c.out);break;case`function`:a(c.input),a(c.output);break;case`lazy`:{let r=c._cachedInner??(n?e._zod.innerType:void 0);s(r?cg(r,t,!1):og);break}case`template_literal`:case`string`:case`number`:case`int`:case`boolean`:case`bigint`:case`symbol`:case`undefined`:case`null`:case`void`:case`never`:case`any`:case`unknown`:case`date`:case`nan`:case`enum`:case`literal`:case`file`:case`transform`:case`custom`:break;default:for(let e in c){let t=Object.getOwnPropertyDescriptor(c,e);if(!t||t.get)continue;let n=t.value;if(n&&typeof n==`object`){if(n._zod)a(n);else if(Array.isArray(n))for(let e of n)a(e)}}}return t.delete(e),lg(e,i)}function lg(e,t){return t!==og&&ig.set(e,t===sg),t}function ug(e,t){let n=e.buckets.get(t);return n||(n=new WeakMap,e.buckets.set(t,n)),n}var dg,fg=[],pg={alloc(e,t,n){let r=dg;if(!r)return n;dg=void 0;let i={value:n,issues:null};return r.set(t.value,i),fg.push(i),n},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,n=(e,n)=>{if(n.direction!==`backward`&&hg(n,e.value))throw new $h;return t(e,n)};e._zod.parse=n,e._zod.run===t&&(e._zod.run=n)})},attach(e){var t;let n,r=!1,i,a;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,o=(s,c)=>{if(n===void 0){let i=cg(e,new Set,!1);if(i===ag)return e._zod.parse=t,e._zod.run===o&&(e._zod.run=t),t(s,c);i===sg||r?n=!0:r=!0}let l=s.value;if(!ng(l))return t(s,c);let u=c[eg];u||(u={buckets:new WeakMap,backEdges:void 0},c[eg]=u);let d;i===c?d=a:(d=ug(u,e),i=c,a=d);let f=d.get(l);if(f)return s.value=f.value,f.issues?f.issues.length&&s.issues.push(...rg(f.issues)):(s.memo=!0,u.backEdges??(u.backEdges=new WeakSet),u.backEdges.add(f.value)),s;dg=d;let p=fg.length,m=t(s,c);dg=void 0;let h=fg.length>p?fg.pop():void 0;return m instanceof Promise?m.then(e=>(h&&(h.issues=e.issues.length?rg(e.issues):tg),e)):(h&&(h.issues=m.issues.length?rg(m.issues):tg),m)};e._zod.parse=o,e._zod.run===t&&(e._zod.run=o)})}};function mg(){return pg}function hg(e,t){let n=e[eg]?.backEdges;return n!==void 0&&ng(t)&&n.has(t)}var gg=()=>{let e={string:{unit:`characters`,verb:`to have`},file:{unit:`bytes`,verb:`to have`},array:{unit:`items`,verb:`to have`},set:{unit:`items`,verb:`to have`},map:{unit:`entries`,verb:`to have`}};function t(t){return e[t]??null}let n={regex:`input`,email:`email address`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datetime`,date:`ISO date`,time:`ISO time`,duration:`ISO duration`,ipv4:`IPv4 address`,ipv6:`IPv6 address`,mac:`MAC address`,cidrv4:`IPv4 range`,cidrv6:`IPv6 range`,base64:`base64-encoded string`,base64url:`base64url-encoded string`,json_string:`JSON string`,e164:`E.164 number`,currency_code:`currency code`,credit_card:`credit card number`,iban:`IBAN`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`};function i(e,t){return e===`number`&&typeof t==`number`&&!Number.isFinite(t)?String(t):r[e]??e}return e=>{switch(e.code){case`invalid_type`:return`Invalid input: expected ${i(e.expected)}, received ${i(_f(e.input),e.input)}`;case`invalid_value`:return e.values.length===1?`Invalid input: expected ${Jd(e.values[0])}`:`Invalid option: expected one of ${xd(e.values,`|`)}`;case`too_big`:{let n=e.exact?`exactly `:e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Too big: expected ${e.origin??`value`} to have ${n}${e.maximum.toString()} ${r.unit??`elements`}`:`Too big: expected ${e.origin??`value`} to be ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.exact?`exactly `:e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Too small: expected ${e.origin} to have ${n}${e.minimum.toString()} ${r.unit}`:`Too small: expected ${e.origin} to be ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Invalid string: must start with "${t.prefix}"`:t.format===`ends_with`?`Invalid string: must end with "${t.suffix}"`:t.format===`includes`?`Invalid string: must include "${t.includes}"`:t.format===`regex`?`Invalid string: must match pattern ${t.pattern}`:`Invalid ${n[t.format]??e.format}`}case`not_multiple_of`:return`Invalid number: must be a multiple of ${e.divisor}`;case`unrecognized_keys`:return`Unrecognized key${e.keys.length>1?`s`:``}: ${xd(e.keys,`, `)}`;case`invalid_key`:return`Invalid key in ${e.origin}`;case`invalid_union`:return e.options&&Array.isArray(e.options)&&e.options.length>0?`Invalid discriminator value. Expected ${e.options.map(e=>`'${e}'`).join(` | `)}`:e.inclusive===!1?`Invalid input: more than one option matched`:`Invalid input`;case`invalid_element`:return`Invalid value in ${e.origin}`;default:return`Invalid input`}}};function _g(){return{localeError:gg()}}var vg,yg=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function bg(){return new yg}(vg=globalThis).__zod_globalRegistry??(vg.__zod_globalRegistry=bg());var xg=globalThis.__zod_globalRegistry;function Sg(e){return e.checks&&=[...e.checks],e}function Cg(e,t){return new e(Sg({type:`string`,...B(t)}))}function wg(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...B(t)})}function Tg(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...B(t)})}function Eg(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...B(t)})}function Dg(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...B(t)})}function Og(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...B(t)})}function kg(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...B(t)})}function Ag(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...B(t)})}function jg(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...B(t)})}function Mg(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...B(t)})}function Ng(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...B(t)})}function Pg(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...B(t)})}function Fg(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...B(t)})}function Ig(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...B(t)})}function Lg(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...B(t)})}function Rg(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...B(t)})}function zg(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...B(t)})}function Bg(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...B(t)})}function Vg(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...B(t)})}function Hg(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...B(t)})}function Ug(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...B(t)})}function Wg(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...B(t)})}function Gg(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...B(t)})}function Kg(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...B(t)})}function qg(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...B(t)})}function Jg(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...B(t)})}function Yg(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...B(t)})}function Xg(e,t){return new e(Sg({type:`number`,checks:[],...B(t)}))}function Zg(e,t){return new e(Sg({type:`number`,coerce:!0,checks:[],...B(t)}))}function Qg(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...B(t)})}function $g(e,t){return new e({type:`boolean`,...B(t)})}function e_(e,t){return new e({type:`undefined`,...B(t)})}function t_(e,t){return new e({type:`null`,...B(t)})}function n_(e){return new e({type:`any`})}function r_(e){return new e({type:`unknown`})}function i_(e,t){return new e({type:`never`,...B(t)})}function a_(e,t){return new em({check:`less_than`,...B(t),value:e,inclusive:!1})}function o_(e,t){return new em({check:`less_than`,...B(t),value:e,inclusive:!0})}function s_(e,t){return new tm({check:`greater_than`,...B(t),value:e,inclusive:!1})}function c_(e,t){return new tm({check:`greater_than`,...B(t),value:e,inclusive:!0})}function l_(e,t){return new nm({check:`multiple_of`,...B(t),value:e})}function u_(e,t){return new im({check:`max_length`,...B(t),maximum:e})}function d_(e,t){return new am({check:`min_length`,...B(t),minimum:e})}function f_(e,t){return new om({check:`length_equals`,...B(t),length:e})}function p_(e,t){return new cm({check:`string_format`,format:`regex`,...B(t),pattern:e})}function m_(e){return new lm({check:`string_format`,format:`lowercase`,...B(e)})}function h_(e){return new um({check:`string_format`,format:`uppercase`,...B(e)})}function g_(e,t){return new dm({check:`string_format`,format:`includes`,...B(t),includes:e})}function __(e,t){return new fm({check:`string_format`,format:`starts_with`,...B(t),prefix:e})}function v_(e,t){return new pm({check:`string_format`,format:`ends_with`,...B(t),suffix:e})}function y_(e){return new mm({check:`overwrite`,tx:e})}function b_(e){return y_(t=>t.normalize(e))}function x_(){return y_(e=>e.trim())}function S_(){return y_(e=>e.toLowerCase())}function C_(){return y_(e=>e.toUpperCase())}function w_(){return y_(e=>zd(e))}function T_(e,t,n){return new e({type:`array`,element:t,...B(n)})}function E_(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...B(n)})}function D_(e,t){let n=O_(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(vf(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,`input`in r||(r.input=t.value),r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(vf(r))}},e(t.value,t)),t);return n}function O_(e,t){let n=new Zp({check:`custom`,...B(t)});return n._zod.check=e,n}function k_(e,...t){for(let n of t)for(let t of Reflect.ownKeys(n))Object.prototype.propertyIsEnumerable.call(n,t)&&Ad(e,t,n[t]);return e}function A_(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??xg,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,intersections:[],deferred:[],external:e?.external??void 0}}function j_(e,t,n,r,i){let a=typeof t.unrepresentable==`function`?t.unrepresentable({zodSchema:e,path:r.path,message:i}):t.unrepresentable;if(a===`any`)return!1;if(a===void 0||a===`throw`)throw Error(i);return Object.assign(n,a),!0}function M_(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,M_(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&k_(o.schema,c),t.io===`input`&&H_(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function N_(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function P_(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);if(e.external&&e.sharedDefsExtractedFor===e.external)return;let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${N_(a)}`}}let i=`#/${r}/`;if(t[1]===n&&!t[1].schema.id)return{ref:`#`};let a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+N_(a)}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/ + `)}return o.write(`payload.value = newResult;`),o.write(`return payload;`),o.compile()},o,s=Ud,c=!Vf.jitless,l=c&&Wd.value,u=t.catchall,d;e._zod.parse=(i,f)=>{d??=r.value;let p=i.value;return s(p)?c&&l&&f?.async===!1&&f.jitless!==!0?(o||=a(t.shape),i=o(i,f),u?xh([],p,i,f,d,e,f?.abortEarly===!0):i):n(i,f):(i.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),i)}});function wh(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!uf(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>hf(e,r,Hf())))}),t)}var Th=B(`$ZodUnion`,(e,t)=>{vm.init(e,t),Af(e,`optin`,e=>e.def.options.some(e=>e._zod.optin===`defaulted`)?`defaulted`:e.def.options.some(e=>e._zod.optin!==void 0)?`optional`:void 0),Af(e,`optout`,e=>e.def.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),Af(e,`values`,e=>{if(e.def.options.every(e=>e._zod.values))return new Set(e.def.options.flatMap(e=>Array.from(e._zod.values)))}),Af(e,`pattern`,e=>{if(e.def.options.every(e=>e._zod.pattern)){let t=e.def.options.map(e=>e._zod.pattern);return RegExp(`^(${t.map(e=>Od(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>wh(t,r,e,i)):wh(o,r,e,i)}});function Eh(e){let t=new Map;for(let n of e.options){let r=n._zod.propValues?.[e.discriminator];if(!r||r.size===0)throw Error(`Invalid discriminated union option at index "${e.options.indexOf(n)}"`);for(let e of r)if(t.has(e)){if(e!==void 0)throw Error(`Duplicate discriminator value "${String(e)}"`);t.set(e,null)}else t.set(e,n)}return t}var Dh=B(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,Th.init(e,t);let n=e._zod.parse;Af(e,`propValues`,e=>{let t={},n=0;for(let r of e.def.options){let i=r._zod.propValues;if(!i||Object.keys(i).length===0)throw Error(`Invalid discriminated union option at index "${e.def.options.indexOf(r)}"`);i[e.def.discriminator]?.has(void 0)&&n++;for(let[e,n]of Object.entries(i)){Object.prototype.hasOwnProperty.call(t,e)||Md(t,e,new Set);for(let r of n)t[e].add(r)}}return!e.def.unionFallback&&n>1&&t[e.def.discriminator]?.delete(void 0),t}),t.options.forEach((e,n)=>{let r=Nd(e._zod.def);if(r&&!Object.prototype.hasOwnProperty.call(r,t.discriminator))throw Error(`Invalid discriminated union option at index "${n}"`)});let r=Ed(()=>Eh(t));e._zod.parse=(i,a)=>{let o=i.value;if(!Ud(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=o?.[t.discriminator],c=r.value.get(s);return c&&(s!==void 0||a.direction!==`backward`)?c._zod.run(i,a):t.unionFallback||a.direction===`backward`?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,options:Array.from(r.value.keys()).filter(e=>r.value.get(e)!==null),input:o,path:[t.discriminator],inst:e}),i)}}),Oh=B(`$ZodIntersection`,(e,t)=>{vm.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>Ah(e,t,n)):Ah(e,i,a)}});function kh(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(Gd(e)&&Gd(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};Object.prototype.hasOwnProperty.call(i,`__proto__`)&&delete i.__proto__;for(let n of r){if(n===`__proto__`)continue;let r=kh(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r{let n;if(e.code===`unrecognized_keys`&&!e.path?.length)i??=e,n=e.keys;else if(e.code===`invalid_key`&&e.origin===`record`&&e.path?.length===1){let t=String(e.path[0]);a.has(t)||a.set(t,e),n=[t]}else return!1;for(let e of n)r.has(e)||r.set(e,{}),r.get(e)[t]=!0;return!0};for(let n of t.issues)o(n,`l`)||e.issues.push(n);for(let t of n.issues)o(t,`r`)||e.issues.push(t);let s=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(s.length){let t=i?s.filter(e=>i.keys.includes(e)):[];t.length&&e.issues.push({...i,keys:t});for(let n of s)!t.includes(n)&&a.has(n)&&e.issues.push(a.get(n))}let c=kh(t.value,n.value);if(!c.valid){if(uf(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}var jh=B(`$ZodRecord`,(e,t)=>{vm.init(e,t);let n=Vf.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Gd(a))return r.issues.push({expected:`record`,code:`invalid_type`,input:a,inst:e}),r;let o=[],s=t.keyType._zod.values;if(s&&!t.partial){r.value=n?n.alloc(e,r,{},i):{};let c=new Set;for(let n of s)if(typeof n==`string`||typeof n==`number`||typeof n==`symbol`){if(c.add(typeof n==`number`?n.toString():n),n===`__proto__`)continue;let s=t.keyType._zod.run({value:n,issues:[]},i);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(s.issues.length){r.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>hf(e,i,Hf())),input:n,path:[n],inst:e});continue}let l=s.value;if(l===`__proto__`)continue;let u=t.valueType._zod.run({value:a[n],issues:[]},i);u instanceof Promise?o.push(u.then(e=>{e.issues.length&&r.issues.push(...ff(n,e.issues)),r.value[l]=e.value})):(u.issues.length&&r.issues.push(...ff(n,u.issues)),r.value[l]=u.value)}let l;for(let e in a)if(!c.has(e)){if(t.mode===`loose`){if(e===`__proto__`)continue;r.value[e]=a[e]}else l??=[],l.push(e)}l&&l.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:l,continue:!0})}else{r.value=n?n.alloc(e,r,{},i):{};let c;for(let n of Reflect.ownKeys(a)){if(n===`__proto__`||!Object.prototype.propertyIsEnumerable.call(a,n))continue;let l=t.keyType._zod.run({value:n,issues:[]},i);if(l instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(typeof n==`string`&&Kp.test(n)&&l.issues.length){let e=t.keyType._zod.run({value:Number(n),issues:[]},i);if(e instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);e.issues.length===0&&(l=e)}if(l.issues.length){t.mode===`loose`?r.value[n]=a[n]:s?(c??=[],c.push(n)):r.issues.push({code:`invalid_key`,origin:`record`,issues:l.issues.map(e=>hf(e,i,Hf())),input:n,path:[n],inst:e});continue}let u=l.value;if(u===`__proto__`)continue;let d=t.valueType._zod.run({value:a[n],issues:[]},i);d instanceof Promise?o.push(d.then(e=>{e.issues.length&&r.issues.push(...ff(n,e.issues)),r.value[u]=e.value})):(d.issues.length&&r.issues.push(...ff(n,d.issues)),r.value[u]=d.value)}c&&c.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:c,continue:!0})}return o.length?Promise.all(o).then(()=>r):r}}),Mh=B(`$ZodEnum`,(e,t)=>{vm.init(e,t);let n=Sd(t.entries),r=new Set(n);e._zod.values=r,Af(e,`pattern`,e=>{let t=Sd(e.def.entries).filter(e=>qd.has(typeof e));return RegExp(t.length?`^(${t.map(e=>Jd(e.toString())).join(`|`)})$`:`^[^\\s\\S]$`)}),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),Nh=B(`$ZodLiteral`,(e,t)=>{vm.init(e,t);let n=new Set(t.values);e._zod.values=n,Af(e,`pattern`,e=>{let t=e.def.values;return RegExp(t.length?`^(${t.map(e=>typeof e==`string`?Jd(e):e?Jd(e.toString()):String(e)).join(`|`)})$`:`^[^\\s\\S]$`)}),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),Ph=B(`$ZodTransform`,(e,t)=>{vm.init(e,t),e._zod.optin=`optional`,Vf.memoizer?.guard(e),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Bf(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n));if(i instanceof Promise)throw new zf;return n.value=i,n}});function Fh(e,t){return e.value=t.issues.length?void 0:t.value,e}var Ih=B(`$ZodOptional`,(e,t)=>{vm.init(e,t),Af(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),e._zod.optout=`optional`,Af(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t,void 0]):void 0}),Af(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${Od(t.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(e.value===void 0){if(t.innerType._zod.optin!==`defaulted`)return e;let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(t=>Fh(e,t)):Fh(e,r)}return t.innerType._zod.run(e,n)}}),Lh=B(`$ZodExactOptional`,(e,t)=>{Ih.init(e,t),Af(e,`values`,e=>e.def.innerType._zod.values),Af(e,`pattern`,e=>e.def.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),Rh=B(`$ZodNullable`,(e,t)=>{vm.init(e,t),Af(e,`optin`,e=>e.def.innerType._zod.optin),Af(e,`optout`,e=>e.def.innerType._zod.optout),Af(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${Od(t.source)}|null)$`):void 0}),Af(e,`values`,e=>e.def.innerType._zod.values?new Set([...e.def.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),zh=B(`$ZodDefault`,(e,t)=>{vm.init(e,t),e._zod.optin=`defaulted`,Af(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>Bh(e,t)):Bh(r,t)}});function Bh(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var Vh=B(`$ZodPrefault`,(e,t)=>{vm.init(e,t),e._zod.optin=`defaulted`,Af(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),Hh=B(`$ZodNonOptional`,(e,t)=>{vm.init(e,t),Af(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>Uh(t,e)):Uh(i,e)}});function Uh(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}function Wh(e,t,n,r){return t.issues.length?(e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map(e=>hf(e,r,Hf()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}var Gh=B(`$ZodCatch`,(e,t)=>{vm.init(e,t),Af(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),Af(e,`optout`,e=>e.def.innerType._zod.optout),Af(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(r=>Wh(e,r,t,n)):Wh(e,r,t,n)}}),Kh=B(`$ZodPipe`,(e,t)=>{vm.init(e,t),Af(e,`values`,e=>e.def.in._zod.values),Af(e,`optin`,e=>e.def.in._zod.optin),Af(e,`optout`,e=>e.def.out._zod.optout),Af(e,`propValues`,e=>e.def.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>qh(e,t.in,n)):qh(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>qh(e,t.out,n)):qh(r,t.out,n)}});function qh(e,t,n){return e.issues.some(e=>e.code!==`unrecognized_keys`)?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}var Jh=B(`$ZodPreprocess`,(e,t)=>{Kh.init(e,t)}),Yh=B(`$ZodReadonly`,(e,t)=>{vm.init(e,t),Af(e,`propValues`,e=>e.def.innerType._zod.propValues),Af(e,`values`,e=>e.def.innerType._zod.values),Af(e,`optin`,e=>e.def.innerType?._zod?.optin),Af(e,`optout`,e=>e.def.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Xh):Xh(r)}});function Xh(e){return e.memo||(e.value=Object.freeze(e.value)),e}var Zh=B(`$ZodLazy`,(e,t)=>{vm.init(e,t),jd(e._zod,`innerType`,()=>{let e=t;return e._cachedInner||=t.getter(),e._cachedInner}),Af(e,`pattern`,e=>e.innerType?._zod?.pattern),Af(e,`propValues`,e=>e.innerType?._zod?.propValues),Af(e,`optin`,e=>e.innerType?._zod?.optin??void 0),Af(e,`optout`,e=>e.innerType?._zod?.optout??void 0),e._zod.parse=(t,n)=>e._zod.innerType._zod.run(t,n)}),Qh=B(`$ZodCustom`,(e,t)=>{Qp.init(e,t),vm.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>$h(t,n,r,e));$h(i,n,r,e)}});function $h(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(bf(e))}}var eg=class extends Error{constructor(){super(`Cannot parse a reference cycle that closes through a transform`),this.name=`ZodCyclicError`}},tg=`~memo`,ng=[];function rg(e){return typeof e==`object`&&!!e}function ig(e){return e.map(e=>e.path?{...e,path:e.path.slice()}:{...e})}var ag=new WeakMap,og=0,sg=1,cg=2;function lg(e,t,n){let r=ag.get(e);if(r!==void 0)return r?cg:og;if(t.has(e))return cg;t.add(e);let i=og,a=e=>{if(i!==cg&&e?._zod){let r=lg(e,t,n);r>i&&(i=r)}},o=(e,r)=>{let i=og;for(let a of Reflect.ownKeys(e)){let o=Object.getOwnPropertyDescriptor(e,a);if(r&&!o.enumerable)continue;let s=o.get?sg:o.value?._zod?lg(o.value,t,n):og;s>i&&(i=s)}return i},s=e=>{e>i&&(i=e)},c=e._zod.def;switch(c.type){case`object`:{let e=Nd(c);s(e?o(e,!0):sg),a(c.catchall);break}case`array`:a(c.element);break;case`tuple`:for(let e of c.items)a(e);a(c.rest);break;case`record`:case`map`:a(c.keyType),a(c.valueType);break;case`set`:a(c.valueType);break;case`union`:for(let e of c.options)a(e);break;case`intersection`:a(c.left),a(c.right);break;case`optional`:case`nullable`:case`default`:case`prefault`:case`catch`:case`readonly`:case`nonoptional`:case`promise`:case`success`:a(c.innerType);break;case`pipe`:a(c.in),a(c.out);break;case`function`:a(c.input),a(c.output);break;case`lazy`:{let r=c._cachedInner??(n?e._zod.innerType:void 0);s(r?lg(r,t,!1):sg);break}case`template_literal`:case`string`:case`number`:case`int`:case`boolean`:case`bigint`:case`symbol`:case`undefined`:case`null`:case`void`:case`never`:case`any`:case`unknown`:case`date`:case`nan`:case`enum`:case`literal`:case`file`:case`transform`:case`custom`:break;default:for(let e in c){let t=Object.getOwnPropertyDescriptor(c,e);if(!t||t.get)continue;let n=t.value;if(n&&typeof n==`object`){if(n._zod)a(n);else if(Array.isArray(n))for(let e of n)a(e)}}}return t.delete(e),ug(e,i)}function ug(e,t){return t!==sg&&ag.set(e,t===cg),t}function dg(e,t){let n=e.buckets.get(t);return n||(n=new WeakMap,e.buckets.set(t,n)),n}var fg,pg=[],mg={alloc(e,t,n){let r=fg;if(!r)return n;fg=void 0;let i={value:n,issues:null};return r.set(t.value,i),pg.push(i),n},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,n=(e,n)=>{if(n.direction!==`backward`&&gg(n,e.value))throw new eg;return t(e,n)};e._zod.parse=n,e._zod.run===t&&(e._zod.run=n)})},attach(e){var t;let n,r=!1,i,a;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,o=(s,c)=>{if(n===void 0){let i=lg(e,new Set,!1);if(i===og)return e._zod.parse=t,e._zod.run===o&&(e._zod.run=t),t(s,c);i===cg||r?n=!0:r=!0}let l=s.value;if(!rg(l))return t(s,c);let u=c[tg];u||(u={buckets:new WeakMap,backEdges:void 0},c[tg]=u);let d;i===c?d=a:(d=dg(u,e),i=c,a=d);let f=d.get(l);if(f)return s.value=f.value,f.issues?f.issues.length&&s.issues.push(...ig(f.issues)):(s.memo=!0,u.backEdges??(u.backEdges=new WeakSet),u.backEdges.add(f.value)),s;fg=d;let p=pg.length,m=t(s,c);fg=void 0;let h=pg.length>p?pg.pop():void 0;return m instanceof Promise?m.then(e=>(h&&(h.issues=e.issues.length?ig(e.issues):ng),e)):(h&&(h.issues=m.issues.length?ig(m.issues):ng),m)};e._zod.parse=o,e._zod.run===t&&(e._zod.run=o)})}};function hg(){return mg}function gg(e,t){let n=e[tg]?.backEdges;return n!==void 0&&rg(t)&&n.has(t)}var _g=()=>{let e={string:{unit:`characters`,verb:`to have`},file:{unit:`bytes`,verb:`to have`},array:{unit:`items`,verb:`to have`},set:{unit:`items`,verb:`to have`},map:{unit:`entries`,verb:`to have`}};function t(t){return e[t]??null}let n={regex:`input`,email:`email address`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datetime`,date:`ISO date`,time:`ISO time`,duration:`ISO duration`,ipv4:`IPv4 address`,ipv6:`IPv6 address`,mac:`MAC address`,cidrv4:`IPv4 range`,cidrv6:`IPv6 range`,base64:`base64-encoded string`,base64url:`base64url-encoded string`,json_string:`JSON string`,e164:`E.164 number`,currency_code:`currency code`,credit_card:`credit card number`,iban:`IBAN`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`};function i(e,t){return e===`number`&&typeof t==`number`&&!Number.isFinite(t)?String(t):r[e]??e}return e=>{switch(e.code){case`invalid_type`:return`Invalid input: expected ${i(e.expected)}, received ${i(yf(e.input),e.input)}`;case`invalid_value`:return e.values.length===1?`Invalid input: expected ${Xd(e.values[0])}`:`Invalid option: expected one of ${Cd(e.values,`|`)}`;case`too_big`:{let n=e.exact?`exactly `:e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Too big: expected ${e.origin??`value`} to have ${n}${e.maximum.toString()} ${r.unit??`elements`}`:`Too big: expected ${e.origin??`value`} to be ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.exact?`exactly `:e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Too small: expected ${e.origin} to have ${n}${e.minimum.toString()} ${r.unit}`:`Too small: expected ${e.origin} to be ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Invalid string: must start with "${t.prefix}"`:t.format===`ends_with`?`Invalid string: must end with "${t.suffix}"`:t.format===`includes`?`Invalid string: must include "${t.includes}"`:t.format===`regex`?`Invalid string: must match pattern ${t.pattern}`:`Invalid ${n[t.format]??e.format}`}case`not_multiple_of`:return`Invalid number: must be a multiple of ${e.divisor}`;case`unrecognized_keys`:return`Unrecognized key${e.keys.length>1?`s`:``}: ${Cd(e.keys,`, `)}`;case`invalid_key`:return`Invalid key in ${e.origin}`;case`invalid_union`:return e.options&&Array.isArray(e.options)&&e.options.length>0?`Invalid discriminator value. Expected ${e.options.map(e=>`'${e}'`).join(` | `)}`:e.inclusive===!1?`Invalid input: more than one option matched`:`Invalid input`;case`invalid_element`:return`Invalid value in ${e.origin}`;default:return`Invalid input`}}};function vg(){return{localeError:_g()}}var yg,bg=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function xg(){return new bg}(yg=globalThis).__zod_globalRegistry??(yg.__zod_globalRegistry=xg());var Sg=globalThis.__zod_globalRegistry;function Cg(e){return e.checks&&=[...e.checks],e}function wg(e,t){return new e(Cg({type:`string`,...z(t)}))}function Tg(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...z(t)})}function Eg(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...z(t)})}function Dg(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...z(t)})}function Og(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...z(t)})}function kg(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...z(t)})}function Ag(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...z(t)})}function jg(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...z(t)})}function Mg(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...z(t)})}function Ng(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...z(t)})}function Pg(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...z(t)})}function Fg(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...z(t)})}function Ig(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...z(t)})}function Lg(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...z(t)})}function Rg(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...z(t)})}function zg(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...z(t)})}function Bg(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...z(t)})}function Vg(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...z(t)})}function Hg(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...z(t)})}function Ug(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...z(t)})}function Wg(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...z(t)})}function Gg(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...z(t)})}function Kg(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...z(t)})}function qg(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...z(t)})}function Jg(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...z(t)})}function Yg(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...z(t)})}function Xg(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...z(t)})}function Zg(e,t){return new e(Cg({type:`number`,checks:[],...z(t)}))}function Qg(e,t){return new e(Cg({type:`number`,coerce:!0,checks:[],...z(t)}))}function $g(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...z(t)})}function e_(e,t){return new e({type:`boolean`,...z(t)})}function t_(e,t){return new e({type:`undefined`,...z(t)})}function n_(e,t){return new e({type:`null`,...z(t)})}function r_(e){return new e({type:`any`})}function i_(e){return new e({type:`unknown`})}function a_(e,t){return new e({type:`never`,...z(t)})}function o_(e,t){return new tm({check:`less_than`,...z(t),value:e,inclusive:!1})}function s_(e,t){return new tm({check:`less_than`,...z(t),value:e,inclusive:!0})}function c_(e,t){return new nm({check:`greater_than`,...z(t),value:e,inclusive:!1})}function l_(e,t){return new nm({check:`greater_than`,...z(t),value:e,inclusive:!0})}function u_(e,t){return new rm({check:`multiple_of`,...z(t),value:e})}function d_(e,t){return new am({check:`max_length`,...z(t),maximum:e})}function f_(e,t){return new om({check:`min_length`,...z(t),minimum:e})}function p_(e,t){return new sm({check:`length_equals`,...z(t),length:e})}function m_(e,t){return new lm({check:`string_format`,format:`regex`,...z(t),pattern:e})}function h_(e){return new um({check:`string_format`,format:`lowercase`,...z(e)})}function g_(e){return new dm({check:`string_format`,format:`uppercase`,...z(e)})}function __(e,t){return new fm({check:`string_format`,format:`includes`,...z(t),includes:e})}function v_(e,t){return new pm({check:`string_format`,format:`starts_with`,...z(t),prefix:e})}function y_(e,t){return new mm({check:`string_format`,format:`ends_with`,...z(t),suffix:e})}function b_(e){return new hm({check:`overwrite`,tx:e})}function x_(e){return b_(t=>t.normalize(e))}function S_(){return b_(e=>e.trim())}function C_(){return b_(e=>e.toLowerCase())}function w_(){return b_(e=>e.toUpperCase())}function T_(){return b_(e=>Vd(e))}function E_(e,t,n){return new e({type:`array`,element:t,...z(n)})}function D_(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...z(n)})}function O_(e,t){let n=k_(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(bf(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,`input`in r||(r.input=t.value),r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(bf(r))}},e(t.value,t)),t);return n}function k_(e,t){let n=new Qp({check:`custom`,...z(t)});return n._zod.check=e,n}function A_(e,...t){for(let n of t)for(let t of Reflect.ownKeys(n))Object.prototype.propertyIsEnumerable.call(n,t)&&Md(e,t,n[t]);return e}function j_(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??Sg,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,intersections:[],deferred:[],external:e?.external??void 0}}function M_(e,t,n,r,i){let a=typeof t.unrepresentable==`function`?t.unrepresentable({zodSchema:e,path:r.path,message:i}):t.unrepresentable;if(a===`any`)return!1;if(a===void 0||a===`throw`)throw Error(i);return Object.assign(n,a),!0}function N_(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,N_(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&A_(o.schema,c),t.io===`input`&&U_(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function P_(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function F_(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);if(e.external&&e.sharedDefsExtractedFor===e.external)return;let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${P_(a)}`}}let i=`#/${r}/`;if(t[1]===n&&!t[1].schema.id)return{ref:`#`};let a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+P_(a)}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/ -Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}r.count>1&&e.reused===`ref`&&a(n)}e.external&&(e.sharedDefsExtractedFor=e.external)}function F_(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let e of t){if(!e||typeof e!=`object`)return;F_(e);let t=Object.keys(e);if(t.length!==1||t[0]!==`type`)return;let r=e.type;for(let e of Array.isArray(r)?r:[r]){if(typeof e!=`string`)return;n.includes(e)||n.push(e)}}delete e.anyOf,e.type=n.length===1?n[0]:n}var I_=new Set([`type`,`properties`,`required`,`additionalProperties`]),L_=[`oneOf`,`anyOf`];function R_(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function z_(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!I_.has(e))return null;t.push(n)}let n={},r=new Set;for(let e of t){for(let r in e.properties){if(Object.prototype.hasOwnProperty.call(n,r))continue;let e=[];for(let n of t){let t=n.properties?.[r]??R_(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}Ad(n,r,e.length===1?e[0]:z_(e)??{allOf:e})}for(let t of e.required??[])r.add(t)}let i={type:`object`,properties:n};if(r.size&&(i.required=[...r]),t.every(e=>e.additionalProperties===!1))i.additionalProperties=!1;else{let e=[];for(let n of t){let t=R_(n);t&&!e.some(e=>JSON.stringify(e)===JSON.stringify(t))&&e.push(t)}e.length===1?i.additionalProperties=e[0]:e.length>1&&(i.additionalProperties={allOf:e})}return i}function B_(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of I_)if(t in e)return;let n=t.filter(e=>L_.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=z_(t);else{let e=n[0],i=L_.find(t=>Array.isArray(e[t]));if(Object.keys(e).length!==1)return;let a=t.filter(t=>t!==e),o=e[i].map(e=>z_([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,k_(e,r))}function V_(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):k_(i,s),k_(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let t of[...e.seen.entries()].reverse())r(t[0]);if(e.target!==`openapi-3.0`)for(let t of e.seen.entries())F_(t[1].def??t[1].schema);for(let t of e.deferred)t();if(e.intersections.length){let t=new Map;for(let n of e.seen.values())for(let e of[n.schema,n.def]){let n=e?.allOf;if(!Array.isArray(n))continue;let r=t.get(n);r?r.push(e):t.set(n,[e])}for(let n of e.intersections)for(let e of t.get(n)??[])B_(e)}}let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}k_(i,n.defId?n.schema:n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,Ad(o,e.defId,e.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:W_(t,`input`,e.processors),output:W_(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function H_(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return H_(r.element,n);if(r.type===`set`)return H_(r.valueType,n);if(r.type===`lazy`)return H_(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`||r.type===`catch`)return H_(r.innerType,n);if(r.type===`intersection`)return H_(r.left,n)||H_(r.right,n);if(r.type===`record`||r.type===`map`)return H_(r.keyType,n)||H_(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:H_(r.in,n)||H_(r.out,n);if(r.type===`object`){for(let e in r.shape)if(H_(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(H_(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(H_(e,n))return!0;return!!(r.rest&&H_(r.rest,n))}return!1}var U_=(e,t={})=>n=>{let r=A_({...n,processors:t});return M_(e,r),P_(r,e),V_(r,e)},W_=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=A_({...i??{},target:a,io:t,processors:n});return M_(e,o),P_(o,e),V_(o,e)},G_=(e,t,n)=>{(e[t]===void 0||n>e[t])&&(e[t]=n)},K_=(e,t,n)=>{(e[t]===void 0||n{G_(e,`minimum`,t),K_(e,`maximum`,t)},J_=(e,t)=>{e.multipleOf??=[],e.multipleOf.includes(t)||e.multipleOf.push(t)},Y_=(e,t)=>{e.patterns??=new Set,e.patterns.add(t)},X_=(e,t)=>{e.mime=e.mime?e.mime.filter(e=>t.includes(e)):[...t]},Z_=(e,t)=>{e.format=t,t.includes(`int`)&&(e.isInt=!0)},Q_=(e,t)=>G_(e,`minimum`,t.minimum),$_=(e,t)=>K_(e,`maximum`,t.maximum),ev=e=>(t,n)=>{Z_(t,n.format);let[r,i]=e[n.format];G_(t,`minimum`,r),K_(t,`maximum`,i)},tv={greater_than:(e,t)=>G_(e,t.inclusive?`minimum`:`exclusiveMinimum`,t.value),less_than:(e,t)=>K_(e,t.inclusive?`maximum`:`exclusiveMaximum`,t.value),multiple_of:(e,t)=>J_(e,t.value),number_format:ev(Xd),bigint_format:ev(Zd),min_length:Q_,max_length:$_,length_equals:(e,t)=>q_(e,t.length),min_size:Q_,max_size:$_,size_equals:(e,t)=>q_(e,t.size),string_format:(e,t)=>{Z_(e,t.format),t.pattern&&Y_(e,t.pattern),(t.format===`base64`||t.format===`base64url`)&&(e.contentEncoding=t.format),(t.local||t.precision===-1)&&(e.laxFormat=!0)},mime_type:(e,t)=>X_(e,t.mime)};function nv(e){let t={},n=e._zod.def,r=e._zod.traits.has(`$ZodCheck`)?[e,...n.checks??[]]:n.checks??[];for(let e of r)tv[e._zod.def.check]?.(t,e._zod.def);let i=e._zod.bag;i.minimum!==void 0&&G_(t,`minimum`,i.minimum),i.exclusiveMinimum!==void 0&&G_(t,`exclusiveMinimum`,i.exclusiveMinimum),i.maximum!==void 0&&K_(t,`maximum`,i.maximum),i.exclusiveMaximum!==void 0&&K_(t,`exclusiveMaximum`,i.exclusiveMaximum),i.multipleOf!==void 0&&J_(t,i.multipleOf),i.format!==void 0&&(t.format??=i.format,i.format.includes(`int`)&&(t.isInt=!0)),i.mime&&X_(t,i.mime);for(let e of i.patterns??[])Y_(t,e);return t}var rv={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},iv=new Map([[$m,Np],[th,Pp]]),av=e=>iv.get(e)??e,ov=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l,laxFormat:u}=nv(e);if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=rv[s]??s,i.format===``&&delete i.format,(s===`time`||u)&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c].map(av);e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},sv=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,multipleOf:s,exclusiveMaximum:c,exclusiveMinimum:l,isInt:u}=nv(e);i.type=u?`integer`:`number`;let d=typeof l==`number`&&l>=(a??-1/0),f=typeof c==`number`&&c<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;if(d?p?(i.minimum=l,i.exclusiveMinimum=!0):i.exclusiveMinimum=l:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=c,i.exclusiveMaximum=!0):i.exclusiveMaximum=c:typeof o==`number`&&(i.maximum=o),s){let n=new Set;for(let a of s)Number.isFinite(a)&&a!==0?n.add(Math.abs(a)):j_(e,t,i,r,`A multipleOf divisor of ${a} cannot be represented in JSON Schema`);let[a,...o]=n;a!==void 0&&(i.multipleOf=a),o.length&&(i.allOf=[...i.allOf??[],...o.map(e=>({multipleOf:e}))])}},cv=(e,t,n,r)=>{n.type=`boolean`},lv=(e,t,n,r)=>{j_(e,t,n,r,`BigInt cannot be represented in JSON Schema`)},uv=(e,t,n,r)=>{j_(e,t,n,r,`Symbols cannot be represented in JSON Schema`)},dv=(e,t,n,r)=>{t.target===`openapi-3.0`?(n.type=`string`,n.nullable=!0,n.enum=[null]):n.type=`null`},fv=(e,t,n,r)=>{j_(e,t,n,r,`Undefined cannot be represented in JSON Schema`)},pv=(e,t,n,r)=>{j_(e,t,n,r,`Void cannot be represented in JSON Schema`)},mv=(e,t,n,r)=>{n.not={}},hv=(e,t,n,r)=>{},gv=(e,t,n,r)=>{},_v=(e,t,n,r)=>{j_(e,t,n,r,`Date cannot be represented in JSON Schema`)},vv=(e,t,n,r)=>{let i=e._zod.def,a=bd(i.entries);if(a.length===0){n.not={};return}a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},yv=(e,t,n,r)=>{let i=e._zod.def;if(i.values.length===0){n.not={};return}let a=[];for(let o of i.values)if(o===void 0){if(j_(e,t,n,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof o==`bigint`){if(j_(e,t,n,r,`BigInt literals cannot be represented in JSON Schema`))return;a.push(Number(o))}else a.push(o);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},bv=(e,t,n,r)=>{j_(e,t,n,r,`NaN cannot be represented in JSON Schema`)},xv=(e,t,n,r)=>{let i=n,a=e._zod.pattern;if(!a)throw Error(`Pattern not found in template literal`);i.type=`string`,i.pattern=a.source},Sv=(e,t,n,r)=>{let i=n;i.type=`string`,i.format=`binary`,i.contentEncoding=`binary`;let{minimum:a,maximum:o,mime:s}=nv(e);a!==void 0&&(i.minLength=a),o!==void 0&&(i.maxLength=o),s&&(s.length===0?i.not={}:s.length===1?i.contentMediaType=s[0]:i.anyOf=s.map(e=>({contentMediaType:e})))},Cv=(e,t,n,r)=>{n.type=`boolean`},wv=(e,t,n,r)=>{j_(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},Tv=(e,t,n,r)=>{j_(e,t,n,r,`Function types cannot be represented in JSON Schema`)},Ev=(e,t,n,r)=>{j_(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},Dv=(e,t,n,r)=>{j_(e,t,n,r,`Map cannot be represented in JSON Schema`)},Ov=(e,t,n,r)=>{j_(e,t,n,r,`Set cannot be represented in JSON Schema`)},kv=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=nv(e);typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=M_(a.element,t,{...r,path:[...r.path,`items`]})};function Av(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?Av(t.out):t.type===`catch`?Av(t.innerType):e._zod.optin}var jv=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&j_(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)Ad(i.properties,e,M_(o[e],t,{...r,path:[...r.path,`properties`,e]}));let s=[];for(let e of Object.keys(o)){let n=a.shape[e];(t.io===`input`?Av(n)===void 0:n._zod.optout===void 0)&&s.push(e)}s.length>0&&(i.required=s),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=M_(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},Mv=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>M_(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},Nv=(e,t,n,r)=>{let i=e._zod.def,a=M_(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=M_(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1,c=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]];n.allOf=c,t.intersections.push(c)},Pv=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`array`;let o=t.target===`draft-2020-12`?`prefixItems`:`items`,s=t.target===`draft-2020-12`||t.target===`openapi-3.0`?`items`:`additionalItems`,c=a.items.map((e,n)=>M_(e,t,{...r,path:[...r.path,o,n]})),l=a.rest?M_(a.rest,t,{...r,path:[...r.path,s,...t.target===`openapi-3.0`?[a.items.length]:[]]}):null,u=a.items.length;for(;u>0;){let e=a.items[u-1];if(!(t.io===`input`?Av(e)!==void 0:e._zod.optout===`optional`))break;u--}let d=a.items.length,f=!a.rest;t.target===`draft-2020-12`?(i.prefixItems=c,f?i.items=!1:l&&(i.items=l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):t.target===`openapi-3.0`?(i.items={anyOf:c},l&&i.items.anyOf.push(l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):(i.items=c,f?i.additionalItems=!1:l&&(i.additionalItems=l),u>0&&(i.minItems=u),f&&(i.maxItems=d));let{minimum:p,maximum:m}=nv(e);typeof p==`number`&&(i.minItems=p),typeof m==`number`&&(i.maxItems=m)};function Fv(e,t,n){if(t.$ref){if(n.has(t))return t;n.add(t);let r=e.get(t)?.def;if(!r)return t;let i=Fv(e,r,n);return i===r?t:i}for(let r of[`anyOf`,`oneOf`]){let i=t[r];if(!Array.isArray(i))continue;let a=i.map(t=>Fv(e,t,n));a.some((e,t)=>e!==i[t])&&(t={...t,[r]:a})}let r=Array.isArray(t.type)?t.type:[t.type],i=!r.includes(`string`)&&r.some(e=>e===`number`||e===`integer`),a=t.enum??(t.const===void 0?void 0:[t.const]);if(!i&&!a?.some(e=>typeof e==`number`))return t;let{minimum:o,maximum:s,exclusiveMinimum:c,exclusiveMaximum:l,multipleOf:u,format:d,id:f,...p}=t;return p.enum?p.enum=p.enum.map(e=>typeof e==`number`?String(e):e):typeof p.const==`number`&&(p.const=String(p.const)),i?(p.type=`string`,a||(p.pattern=(r.includes(`number`)?Gp:Wp).source),p):p}var Iv=new WeakMap;function Lv(e){let t=new Map;for(let n of e.seen.values())n.def&&!t.has(n.schema)&&t.set(n.schema,n);let n=new Map;for(let r of Iv.get(e)??[]){let i=e.seen.get(r),a=(i?.def??i?.schema)?.propertyNames;if(!a||a===!0||n.has(a))continue;let o=Fv(t,a,new Set);o!==a&&n.set(a,o)}if(n.size)for(let t of e.seen.values())for(let e of[t.schema,t.def]){let t=e&&n.get(e.propertyNames);t&&(e.propertyNames=t)}}var Rv=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=nv(o).patterns;if(a.mode===`loose`&&s&&s.size>0){let e=M_(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)Ad(i.patternProperties,av(t).source,e)}else{if(t.target===`draft-07`||t.target===`draft-2020-12`){i.propertyNames=M_(a.keyType,t,{...r,path:[...r.path,`propertyNames`]});let n=Iv.get(t);n||(n=[],Iv.set(t,n),t.deferred.push(()=>Lv(t))),n.push(e)}i.additionalProperties=M_(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]})}let c=o._zod.values,l=t.io===`input`&&Av(a.valueType)!==void 0;if(c&&!a.partial&&!l){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e.map(String))}},zv=(e,t,n,r)=>{let i=e._zod.def,a=M_(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},Bv=(e,t,n,r)=>{let i=e._zod.def;M_(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Vv=Symbol();function Hv(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?(j_(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),Vv):JSON.parse(o)}var Uv=(e,t,n,r)=>{let i=e._zod.def;M_(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=Hv(i.defaultValue,e,t,n,r);o!==Vv&&(n.default=o)},Wv=(e,t,n,r)=>{let i=e._zod.def;M_(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=Hv(i.defaultValue,e,t,n,r);o!==Vv&&(n._prefault=o)},Gv=(e,t,n,r)=>{let i=e._zod.def;M_(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{j_(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},Kv=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;M_(o,t,r);let s=t.seen.get(e);s.ref=o},qv=(e,t,n,r)=>{let i=e._zod.def;M_(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},Jv=(e,t,n,r)=>{let i=e._zod.def;M_(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Yv=(e,t,n,r)=>{let i=e._zod.def;M_(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Xv=(e,t,n,r)=>{let i=e._zod.innerType;M_(i,t,r);let a=t.seen.get(e);a.ref=i},Zv={string:ov,number:sv,boolean:cv,bigint:lv,symbol:uv,null:dv,undefined:fv,void:pv,never:mv,any:hv,unknown:gv,date:_v,enum:vv,literal:yv,nan:bv,template_literal:xv,file:Sv,success:Cv,custom:wv,function:Tv,transform:Ev,map:Dv,set:Ov,array:kv,object:jv,union:Mv,intersection:Nv,tuple:Pv,record:Rv,nullable:zv,nonoptional:Bv,default:Uv,prefault:Wv,catch:Gv,pipe:Kv,readonly:qv,promise:Jv,optional:Yv,lazy:Xv};function Qv(e,t){if(`_idmap`in e){let n=e,r=A_({...t,processors:Zv}),i={};for(let e of n._idmap.entries()){let[t,n]=e;M_(n,r)}let a={};r.external={registry:n,uri:t?.uri,defs:i};for(let e of n._idmap.entries()){let[t,n]=e;P_(r,n),Ad(a,t,V_(r,n))}return Object.keys(i).length>0&&(a.__shared={[r.target===`draft-2020-12`?`$defs`:`definitions`]:i}),{schemas:a}}let n=A_({...t,processors:Zv});return M_(e,n),P_(n,e),V_(n,e)}var $v=new WeakSet([Object.prototype,Error.prototype]);function ey(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let e=n(this);return Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0})}})}var ty=V(`ZodError`,(e,t)=>{qf.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);$v.has(n)||($v.add(n),ey(n,`format`,e=>t=>Xf(e,t)),ey(n,`flatten`,e=>t=>Yf(e,t)),ey(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,Sd,2)}),ey(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,Sd,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),ny=Qf(ty),ry=$f(ty),iy=ep(ty),ay=np(ty),oy=cp(ty),sy=lp(ty),cy=up(ty),ly=dp(ty),uy=fp(ty),dy=pp(ty),fy=mp(ty),py=hp(ty);function my(){zf.localeError||Bf(_g())}function hy(){zf.memoizer||Bf({memoizer:mg()})}var gy=V(`ZodType`,(e,t)=>(my(),_m.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(Ld(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return qd(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(Lb(e,t))},superRefine(e,t){return this.check(Rb(e,t))},overwrite(e){return this.check(y_(e))},optional(){return $(this)},exactOptional(){return vb(this)},nullable(){return bb(this)},nullish(){return $(bb(this))},nonoptional(e){return Eb(this,e)},array(){return K(this)},or(e){return Y([this,e])},and(e){return ub(this,e)},transform(e){return Ab(this,hb(e))},default(e){return Sb(this,e)},prefault(e){return wb(this,e)},catch(e){return Ob(this,e)},pipe(e){return Ab(this,e)},readonly(){return Nb(this)},describe(e){let t=this.clone();return xg.add(t,{description:e}),t},meta(...e){if(e.length===0)return xg.get(this);let t=this.clone();return xg.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return xf(this,`~standard`,{...bm(this),jsonSchema:{input:W_(this,`input`),output:W_(this,`output`)}})},set"~standard"(e){bf(this,`~standard`,e)},parse:function e(t,n){return ny(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await ry(this,t,n,{callee:e})},safeParse(e,t){return iy(this,e,t)},async safeParseAsync(e,t){return ay(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){bf(this,`spa`,e)},validate(e,t){return ap(this,e,t)},validateAsync(e,t){return sp(this,e,t)},encode:function e(t,n){return oy(this,t,n,{callee:e})},decode:function e(t,n){return sy(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await cy(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await ly(this,t,n,{callee:e})},safeEncode(e,t){return uy(this,e,t)},safeDecode(e,t){return dy(this,e,t)},async safeEncodeAsync(e,t){return fy(this,e,t)},async safeDecodeAsync(e,t){return py(this,e,t)},toJSONSchema(e){return U_(this,{})(e)},get description(){return xg.get(this)?.description},get _def(){return this._zod.def}}),_y=V(`_ZodString`,(e,t)=>{xm.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ov(e,t,n,r)},Sf({format:e=>nv(e).format??null,minLength:e=>nv(e).minimum??null,maxLength:e=>nv(e).maximum??null},{regex(...e){return this.check(p_(...e))},includes(...e){return this.check(g_(...e))},startsWith(...e){return this.check(__(...e))},endsWith(...e){return this.check(v_(...e))},min(...e){return this.check(d_(...e))},max(...e){return this.check(u_(...e))},length(...e){return this.check(f_(...e))},nonempty(...e){return this.check(d_(1,...e))},lowercase(e){return this.check(m_(e))},uppercase(e){return this.check(h_(e))},trim(){return this.check(x_())},normalize(...e){return this.check(b_(...e))},toLowerCase(){return this.check(S_())},toUpperCase(){return this.check(C_())},slugify(){return this.check(w_())}})),vy=V(`ZodString`,(e,t)=>{xm.init(e,t),_y.init(e,t)},{email(e){return this.check(wg(wy,e))},url(e){return this.check(Ag(Oy,e))},jwt(e){return this.check(Gg(Wy,e))},emoji(e){return this.check(jg(Ay,e))},guid(e){return this.check(Tg(Ey,e))},uuid(e){return this.check(Eg(Dy,e))},uuidv4(e){return this.check(Dg(Dy,e))},uuidv6(e){return this.check(Og(Dy,e))},uuidv7(e){return this.check(kg(Dy,e))},nanoid(e){return this.check(Mg(jy,e))},cuid(e){return this.check(Ng(My,e))},cuid2(e){return this.check(Pg(Ny,e))},ulid(e){return this.check(Fg(Py,e))},base64(e){return this.check(Hg(Vy,e))},base64url(e){return this.check(Ug(Hy,e))},xid(e){return this.check(Ig(Fy,e))},ksuid(e){return this.check(Lg(Iy,e))},ipv4(e){return this.check(Rg(Ly,e))},ipv6(e){return this.check(zg(Ry,e))},cidrv4(e){return this.check(Bg(zy,e))},cidrv6(e){return this.check(Vg(By,e))},e164(e){return this.check(Wg(Uy,e))},datetime(e){return this.check(Kg(by,e))},date(e){return this.check(qg(xy,e))},time(e){return this.check(Jg(Sy,e))},duration(e){return this.check(Yg(Cy,e))}});function H(e){return Cg(vy,e)}var yy=V(`ZodStringFormat`,(e,t)=>{Sm.init(e,t),_y.init(e,t)}),by=V(`ZodISODateTime`,(e,t)=>{Vm.init(e,t),yy.init(e,t)}),xy=V(`ZodISODate`,(e,t)=>{Hm.init(e,t),yy.init(e,t)}),Sy=V(`ZodISOTime`,(e,t)=>{Um.init(e,t),yy.init(e,t)}),Cy=V(`ZodISODuration`,(e,t)=>{Wm.init(e,t),yy.init(e,t)}),wy=V(`ZodEmail`,(e,t)=>{Tm.init(e,t),yy.init(e,t)});function Ty(e){return wg(wy,e)}var Ey=V(`ZodGUID`,(e,t)=>{Cm.init(e,t),yy.init(e,t)}),Dy=V(`ZodUUID`,(e,t)=>{wm.init(e,t),yy.init(e,t)}),Oy=V(`ZodURL`,(e,t)=>{Nm.init(e,t),yy.init(e,t)});function ky(e){return Ag(Oy,e)}var Ay=V(`ZodEmoji`,(e,t)=>{Pm.init(e,t),yy.init(e,t)}),jy=V(`ZodNanoID`,(e,t)=>{Fm.init(e,t),yy.init(e,t)}),My=V(`ZodCUID`,(e,t)=>{Im.init(e,t),yy.init(e,t)}),Ny=V(`ZodCUID2`,(e,t)=>{Lm.init(e,t),yy.init(e,t)}),Py=V(`ZodULID`,(e,t)=>{Rm.init(e,t),yy.init(e,t)}),Fy=V(`ZodXID`,(e,t)=>{zm.init(e,t),yy.init(e,t)}),Iy=V(`ZodKSUID`,(e,t)=>{Bm.init(e,t),yy.init(e,t)}),Ly=V(`ZodIPv4`,(e,t)=>{Gm.init(e,t),yy.init(e,t)}),Ry=V(`ZodIPv6`,(e,t)=>{Jm.init(e,t),yy.init(e,t)}),zy=V(`ZodCIDRv4`,(e,t)=>{Ym.init(e,t),yy.init(e,t)}),By=V(`ZodCIDRv6`,(e,t)=>{Zm.init(e,t),yy.init(e,t)}),Vy=V(`ZodBase64`,(e,t)=>{eh.init(e,t),yy.init(e,t)}),Hy=V(`ZodBase64URL`,(e,t)=>{rh.init(e,t),yy.init(e,t)}),Uy=V(`ZodE164`,(e,t)=>{ih.init(e,t),yy.init(e,t)}),Wy=V(`ZodJWT`,(e,t)=>{oh.init(e,t),yy.init(e,t)}),Gy=V(`ZodNumber`,(e,t)=>{sh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>sv(e,t,n,r),e.isFinite=!0},Sf({minValue:e=>{let{minimum:t,exclusiveMinimum:n}=nv(e);return Math.max(t??-1/0,n??-1/0)},maxValue:e=>{let{maximum:t,exclusiveMaximum:n}=nv(e);return Math.min(t??1/0,n??1/0)},isInt:e=>{let{isInt:t,multipleOf:n}=nv(e);return!!t||!!n?.some(Number.isSafeInteger)},format:e=>nv(e).format??null},{gt(e,t){return this.check(s_(e,t))},gte(e,t){return this.check(c_(e,t))},min(e,t){return this.check(c_(e,t))},lt(e,t){return this.check(a_(e,t))},lte(e,t){return this.check(o_(e,t))},max(e,t){return this.check(o_(e,t))},int(e){return this.check(qy(e))},safe(e){return this.check(qy(e))},positive(e){return this.check(s_(0,e))},nonnegative(e){return this.check(c_(0,e))},negative(e){return this.check(a_(0,e))},nonpositive(e){return this.check(o_(0,e))},multipleOf(e,t){return this.check(l_(e,t))},step(e,t){return this.check(l_(e,t))},finite(){return this}}));function U(e){return Xg(Gy,e)}var Ky=V(`ZodNumberFormat`,(e,t)=>{ch.init(e,t),Gy.init(e,t)});function qy(e){return Qg(Ky,e)}var Jy=V(`ZodBoolean`,(e,t)=>{lh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>cv(e,t,n,r)});function W(e){return $g(Jy,e)}var Yy=V(`ZodUndefined`,(e,t)=>{uh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>fv(e,t,n,r)});function Xy(e){return e_(Yy,e)}var Zy=V(`ZodNull`,(e,t)=>{dh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>dv(e,t,n,r)});function Qy(e){return t_(Zy,e)}var $y=V(`ZodAny`,(e,t)=>{fh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function eb(){return n_($y)}var tb=V(`ZodUnknown`,(e,t)=>{ph.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function G(){return r_(tb)}var nb=V(`ZodNever`,(e,t)=>{mh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>mv(e,t,n,r)});function rb(e){return i_(nb,e)}var ib=V(`ZodArray`,(e,t)=>{hy(),gh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>kv(e,t,n,r),e.element=t.element},{min(e,t){return this.check(d_(e,t))},nonempty(e){return this.check(d_(1,e))},max(e,t){return this.check(u_(e,t))},length(e,t){return this.check(f_(e,t))},unwrap(){return this.element}});function K(e,t){return T_(ib,e,t)}var ab=V(`ZodObject`,(e,t)=>{hy(),Sh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>jv(e,t,n,r),kf(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return Z(Object.keys(this._zod.def.shape))},catchall(e){return this.clone(Ld(this._zod.def,{catchall:e}))},passthrough(){return this.clone(Ld(this._zod.def,{catchall:G()}))},loose(){return this.clone(Ld(this._zod.def,{catchall:G()}))},strict(){return this.clone(Ld(this._zod.def,{catchall:rb()}))},strip(){return this.clone(Ld(this._zod.def,{catchall:void 0}))},extend(e){return tf(this,e)},safeExtend(e){return rf(this,e)},merge(e){return af(this,e)},pick(e){return Qd(this,e)},omit(e){return ef(this,e)},partial(...e){return of(gb,this,e[0])},exactPartial(...e){return of(_b,this,e[0],`exactPartial`)},required(...e){return sf(Tb,this,e[0])}});function q(e,t){return new ab({type:`object`,shape:e??{},...B(t)})}function J(e,t){return new ab({type:`object`,shape:e,catchall:G(),...B(t)})}var ob=V(`ZodUnion`,(e,t)=>{wh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Mv(e,t,n,r),e.options=t.options});function Y(e,t){return new ob({type:`union`,options:e,...B(t)})}var sb=V(`ZodDiscriminatedUnion`,(e,t)=>{ob.init(e,t),Eh.init(e,t)});function cb(e,t,n){return new sb({type:`union`,options:t,discriminator:e,...B(n)})}var lb=V(`ZodIntersection`,(e,t)=>{Dh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Nv(e,t,n,r)});function ub(e,t){return new lb({type:`intersection`,left:e,right:t})}var db=V(`ZodRecord`,(e,t)=>{hy(),Ah.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Rv(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function X(e,t,n){return!t||!t._zod?new db({type:`record`,keyType:H(),valueType:e,...B(t)}):new db({type:`record`,keyType:e,valueType:t,...B(n)})}var fb=V(`ZodEnum`,(e,t)=>{jh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>vv(e,t,n,r),e.enum=t.entries,e.options=[...e._zod.values];let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new fb({...t,checks:[],...B(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new fb({...t,checks:[],...B(r),entries:i})}});function Z(e,t){return new fb({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...B(t)})}var pb=V(`ZodLiteral`,(e,t)=>{Mh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>yv(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function Q(e,t){return new pb({type:`literal`,values:Array.isArray(e)?e:[e],...B(t)})}var mb=V(`ZodTransform`,(e,t)=>{hy(),Nh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ev(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Rf(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(vf(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,`input`in t||(t.input=n.value),t.inst??=e,n.issues.push(vf(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function hb(e){return new mb({type:`transform`,transform:e})}var gb=V(`ZodOptional`,(e,t)=>{Fh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Yv(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function $(e){return new gb({type:`optional`,innerType:e})}var _b=V(`ZodExactOptional`,(e,t)=>{Ih.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Yv(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function vb(e){return new _b({type:`optional`,innerType:e})}var yb=V(`ZodNullable`,(e,t)=>{Lh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>zv(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function bb(e){return new yb({type:`nullable`,innerType:e})}var xb=V(`ZodDefault`,(e,t)=>{Rh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Uv(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function Sb(e,t){return new xb({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():Wd(t)}})}var Cb=V(`ZodPrefault`,(e,t)=>{Bh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Wv(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function wb(e,t){return new Cb({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():Wd(t)}})}var Tb=V(`ZodNonOptional`,(e,t)=>{Vh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Bv(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Eb(e,t){return new Tb({type:`nonoptional`,innerType:e,...B(t)})}var Db=V(`ZodCatch`,(e,t)=>{Wh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Gv(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function Ob(e,t){return new Db({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:jf(t)})}var kb=V(`ZodPipe`,(e,t)=>{Gh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Kv(e,t,n,r),e.in=t.in,e.out=t.out});function Ab(e,t){return new kb({type:`pipe`,in:e,out:t})}var jb=V(`ZodPreprocess`,(e,t)=>{kb.init(e,t),qh.init(e,t)}),Mb=V(`ZodReadonly`,(e,t)=>{Jh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>qv(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Nb(e){return new Mb({type:`readonly`,innerType:e})}var Pb=V(`ZodLazy`,(e,t)=>{Xh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Xv(e,t,n,r),e.unwrap=()=>e._zod.def.getter()});function Fb(e){return new Pb({type:`lazy`,getter:e})}var Ib=V(`ZodCustom`,(e,t)=>{Zh.init(e,t),gy.init(e,t),e._zod.processJSONSchema=(t,n,r)=>wv(e,t,n,r)});function Lb(e,t={}){return E_(Ib,e,t)}function Rb(e,t){return D_(e,t)}function zb(e,t){return new jb({type:`pipe`,in:hb(e),out:t})}var Bb={invalid_type:`invalid_type`,too_big:`too_big`,too_small:`too_small`,invalid_format:`invalid_format`,not_multiple_of:`not_multiple_of`,unrecognized_keys:`unrecognized_keys`,invalid_union:`invalid_union`,invalid_key:`invalid_key`,invalid_element:`invalid_element`,invalid_value:`invalid_value`,custom:`custom`},Vb;Vb||={};function Hb(e){return Kg(by,e)}function Ub(e){return qg(xy,e)}function Wb(e){return Zg(Gy,e)}var Gb=[`2025-11-25`,`2025-06-18`,`2025-03-26`,`2024-11-05`,`2024-10-07`],Kb=`io.modelcontextprotocol/related-task`,qb=`io.modelcontextprotocol/protocolVersion`,Jb=`io.modelcontextprotocol/clientInfo`,Yb=`io.modelcontextprotocol/serverInfo`,Xb=`io.modelcontextprotocol/clientCapabilities`,Zb=`io.modelcontextprotocol/subscriptionId`,Qb=`io.modelcontextprotocol/logLevel`,$b=Fb(()=>Y([H(),U(),W(),Qy(),X(H(),$b),K($b)])),ex=X(H(),$b),tx=K($b),nx=Y([H(),U().int()]),rx=H(),ix=q({ttl:U().optional()}),ax=q({taskId:H()}),ox=J({progressToken:nx.optional(),[Kb]:ax.optional()}),sx=q({_meta:ox.optional()}),cx=sx.extend({task:ix.optional()}),lx=q({method:H(),params:sx.loose().optional()}),ux=q({_meta:ox.optional()}),dx=q({method:H(),params:ux.loose().optional()}),fx=J({get[Yb](){return Dx.optional().catch(void 0)}}),px=J({_meta:fx.optional()}),mx=Y([H(),U().int()]),hx=q({jsonrpc:Q(`2.0`),id:mx,...lx.shape}).strict(),gx=q({jsonrpc:Q(`2.0`),...dx.shape}).strict(),_x=q({jsonrpc:Q(`2.0`),id:mx,result:px}).strict(),vx=q({jsonrpc:Q(`2.0`),id:mx.optional(),error:q({code:U().int(),message:H(),data:G().optional()})}).strict(),yx=Y([hx,gx,_x,vx]),bx=Y([_x,vx]),xx=px.strict(),Sx=ux.extend({requestId:mx.optional(),reason:H().optional()}),Cx=dx.extend({method:Q(`notifications/cancelled`),params:Sx}),wx=q({src:H(),mimeType:H().optional(),sizes:K(H()).optional(),theme:Z([`light`,`dark`]).optional()}),Tx=q({icons:K(wx).optional()}),Ex=q({name:H(),title:H().optional()}),Dx=Ex.extend({...Ex.shape,...Tx.shape,version:H(),websiteUrl:H().optional(),description:H().optional()}),Ox=zb(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,ub(q({form:ub(q({applyDefaults:W().optional()}),ex).optional(),url:ex.optional()}),ex.optional())),kx=J({list:ex.optional(),cancel:ex.optional(),requests:J({sampling:J({createMessage:ex.optional()}).optional(),elicitation:J({create:ex.optional()}).optional()}).optional()}),Ax=J({list:ex.optional(),cancel:ex.optional(),requests:J({tools:J({call:ex.optional()}).optional()}).optional()}),jx=q({experimental:X(H(),ex).optional(),sampling:q({context:ex.optional(),tools:ex.optional()}).optional(),elicitation:Ox.optional(),roots:q({listChanged:W().optional()}).optional(),tasks:kx.optional(),extensions:X(H(),ex).optional()}),Mx=sx.extend({protocolVersion:H(),capabilities:jx,clientInfo:Dx}),Nx=lx.extend({method:Q(`initialize`),params:Mx}),Px=q({experimental:X(H(),ex).optional(),logging:ex.optional(),completions:ex.optional(),prompts:q({listChanged:W().optional()}).optional(),resources:q({subscribe:W().optional(),listChanged:W().optional()}).optional(),tools:q({listChanged:W().optional()}).optional(),tasks:Ax.optional(),extensions:X(H(),ex).optional()}),Fx=px.extend({protocolVersion:H(),capabilities:Px,serverInfo:Dx,instructions:H().optional()}),Ix=dx.extend({method:Q(`notifications/initialized`),params:ux.optional()}),Lx=lx.extend({method:Q(`server/discover`),params:sx.optional()}),Rx=px.extend({supportedVersions:K(H()),capabilities:Px,instructions:H().optional()}),zx=lx.extend({method:Q(`ping`),params:sx.optional()}),Bx=q({progress:U(),total:$(U()),message:$(H())}),Vx=q({...ux.shape,...Bx.shape,progressToken:nx}),Hx=dx.extend({method:Q(`notifications/progress`),params:Vx}),Ux=sx.extend({cursor:rx.optional()}),Wx=lx.extend({params:Ux.optional()}),Gx=px.extend({nextCursor:rx.optional()}),Kx=q({uri:H(),mimeType:$(H()),_meta:X(H(),G()).optional()}),qx=Kx.extend({text:H()}),Jx=H().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:`Invalid Base64 string`}),Yx=Kx.extend({blob:Jx}),Xx=Z([`user`,`assistant`]),Zx=q({audience:K(Xx).optional(),priority:U().min(0).max(1).optional(),lastModified:Hb({offset:!0}).optional()}),Qx=q({...Ex.shape,...Tx.shape,uri:H(),description:$(H()),mimeType:$(H()),size:$(U()),annotations:Zx.optional(),_meta:$(J({}))}),$x=q({...Ex.shape,...Tx.shape,uriTemplate:H(),description:$(H()),mimeType:$(H()),annotations:Zx.optional(),_meta:$(J({}))}),eS=Wx.extend({method:Q(`resources/list`)}),tS=Gx.extend({resources:K(Qx)}),nS=Wx.extend({method:Q(`resources/templates/list`)}),rS=Gx.extend({resourceTemplates:K($x)}),iS=sx.extend({uri:H()}),aS=iS,oS=lx.extend({method:Q(`resources/read`),params:aS}),sS=px.extend({contents:K(Y([qx,Yx]))}),cS=dx.extend({method:Q(`notifications/resources/list_changed`),params:ux.optional()}),lS=iS,uS=lx.extend({method:Q(`resources/subscribe`),params:lS}),dS=iS,fS=lx.extend({method:Q(`resources/unsubscribe`),params:dS}),pS=q({toolsListChanged:W().optional(),promptsListChanged:W().optional(),resourcesListChanged:W().optional(),resourceSubscriptions:K(H()).optional()}),mS=sx.extend({notifications:pS}),hS=lx.extend({method:Q(`subscriptions/listen`),params:mS}),gS=ux.extend({notifications:pS}),_S=dx.extend({method:Q(`notifications/subscriptions/acknowledged`),params:gS}),vS=fx.extend({[Zb]:mx}),yS=px.extend({_meta:vS}),bS=ux.extend({uri:H()}),xS=dx.extend({method:Q(`notifications/resources/updated`),params:bS}),SS=q({name:H(),description:$(H()),required:$(W())}),CS=q({...Ex.shape,...Tx.shape,description:$(H()),arguments:$(K(SS)),_meta:$(J({}))}),wS=Wx.extend({method:Q(`prompts/list`)}),TS=Gx.extend({prompts:K(CS)}),ES=sx.extend({name:H(),arguments:X(H(),H()).optional()}),DS=lx.extend({method:Q(`prompts/get`),params:ES}),OS=q({type:Q(`text`),text:H(),annotations:Zx.optional(),_meta:X(H(),G()).optional()}),kS=q({type:Q(`image`),data:Jx,mimeType:H(),annotations:Zx.optional(),_meta:X(H(),G()).optional()}),AS=q({type:Q(`audio`),data:Jx,mimeType:H(),annotations:Zx.optional(),_meta:X(H(),G()).optional()}),jS=q({type:Q(`tool_use`),name:H(),id:H(),input:X(H(),G()),_meta:X(H(),G()).optional()}),MS=q({type:Q(`resource`),resource:Y([qx,Yx]),annotations:Zx.optional(),_meta:X(H(),G()).optional()}),NS=Qx.extend({type:Q(`resource_link`)}),PS=Y([OS,kS,AS,NS,MS]),FS=q({role:Xx,content:PS}),IS=px.extend({description:H().optional(),messages:K(FS)}),LS=dx.extend({method:Q(`notifications/prompts/list_changed`),params:ux.optional()}),RS=q({title:H().optional(),readOnlyHint:W().optional(),destructiveHint:W().optional(),idempotentHint:W().optional(),openWorldHint:W().optional()}),zS=q({taskSupport:Z([`required`,`optional`,`forbidden`]).optional()}),BS=q({...Ex.shape,...Tx.shape,description:H().optional(),inputSchema:q({type:Q(`object`),properties:X(H(),$b).optional(),required:K(H()).optional()}).catchall(G()),outputSchema:J({$schema:H().optional()}).optional(),annotations:RS.optional(),execution:zS.optional(),_meta:X(H(),G()).optional()}),VS=Wx.extend({method:Q(`tools/list`)}),HS=Gx.extend({tools:K(BS)}),US=px.extend({content:K(PS).default([]),structuredContent:G().optional(),isError:W().optional()}),WS=US.or(px.extend({toolResult:G()})),GS=cx.extend({name:H(),arguments:X(H(),G()).optional()}),KS=lx.extend({method:Q(`tools/call`),params:GS}),qS=dx.extend({method:Q(`notifications/tools/list_changed`),params:ux.optional()}),JS=q({autoRefresh:W().default(!0),debounceMs:U().int().nonnegative().default(300)}),YS=Z([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),XS=sx.extend({level:YS}),ZS=lx.extend({method:Q(`logging/setLevel`),params:XS}),QS=ux.extend({level:YS,logger:H().optional(),data:G()}),$S=dx.extend({method:Q(`notifications/message`),params:QS}),eC=q({name:H().optional()}),tC=q({hints:K(eC).optional(),costPriority:U().min(0).max(1).optional(),speedPriority:U().min(0).max(1).optional(),intelligencePriority:U().min(0).max(1).optional()}),nC=q({mode:Z([`auto`,`required`,`none`]).optional()}),rC=q({type:Q(`tool_result`),toolUseId:H().describe(`The unique identifier for the corresponding tool call.`),content:K(PS),structuredContent:G().optional(),isError:W().optional(),_meta:X(H(),G()).optional()}),iC=cb(`type`,[OS,kS,AS]),aC=cb(`type`,[OS,kS,AS,jS,rC]),oC=q({role:Xx,content:Y([aC,K(aC)]),_meta:X(H(),G()).optional()}),sC=cx.extend({messages:K(oC),modelPreferences:tC.optional(),systemPrompt:H().optional(),includeContext:Z([`none`,`thisServer`,`allServers`]).optional(),temperature:U().optional(),maxTokens:U().int(),stopSequences:K(H()).optional(),metadata:ex.optional(),tools:K(BS).optional(),toolChoice:nC.optional()}),cC=lx.extend({method:Q(`sampling/createMessage`),params:sC}),lC=px.extend({model:H(),stopReason:$(Z([`endTurn`,`stopSequence`,`maxTokens`]).or(H())),role:Xx,content:iC}),uC=px.extend({model:H(),stopReason:$(Z([`endTurn`,`stopSequence`,`maxTokens`,`toolUse`]).or(H())),role:Xx,content:Y([aC,K(aC)])}),dC=q({type:Q(`boolean`),title:H().optional(),description:H().optional(),default:W().optional()}),fC=q({type:Q(`string`),title:H().optional(),description:H().optional(),minLength:U().optional(),maxLength:U().optional(),format:Z([`email`,`uri`,`date`,`date-time`]).optional(),default:H().optional()}),pC=q({type:Z([`number`,`integer`]),title:H().optional(),description:H().optional(),minimum:U().optional(),maximum:U().optional(),default:U().optional()}),mC=q({type:Q(`string`),title:H().optional(),description:H().optional(),enum:K(H()),default:H().optional()}),hC=q({type:Q(`string`),title:H().optional(),description:H().optional(),oneOf:K(q({const:H(),title:H()})),default:H().optional()}),gC=q({type:Q(`string`),title:H().optional(),description:H().optional(),enum:K(H()),enumNames:K(H()).optional(),default:H().optional()}),_C=Y([mC,hC]),vC=q({type:Q(`array`),title:H().optional(),description:H().optional(),minItems:U().optional(),maxItems:U().optional(),items:q({type:Q(`string`),enum:K(H())}),default:K(H()).optional()}),yC=q({type:Q(`array`),title:H().optional(),description:H().optional(),minItems:U().optional(),maxItems:U().optional(),items:q({anyOf:K(q({const:H(),title:H()}))}),default:K(H()).optional()}),bC=Y([vC,yC]),xC=Y([gC,_C,bC]),SC=Y([xC,dC,fC,pC]),CC=cx.extend({mode:Q(`form`).optional(),message:H(),requestedSchema:q({type:Q(`object`),properties:X(H(),SC),required:K(H()).optional()}).catchall(G())}),wC=cx.extend({mode:Q(`url`),message:H(),elicitationId:H(),url:H().url()}),TC=Y([CC,wC]),EC=lx.extend({method:Q(`elicitation/create`),params:TC}),DC=ux.extend({elicitationId:H()}),OC=dx.extend({method:Q(`notifications/elicitation/complete`),params:DC}),kC=px.extend({action:Z([`accept`,`decline`,`cancel`]),content:zb(e=>e===null?void 0:e,X(H(),Y([H(),U(),W(),K(H())])).optional())}),AC=q({type:Q(`ref/resource`),uri:H()}),jC=q({type:Q(`ref/prompt`),name:H()}),MC=sx.extend({ref:Y([jC,AC]),argument:q({name:H(),value:H()}),context:q({arguments:X(H(),H()).optional()}).optional()}),NC=lx.extend({method:Q(`completion/complete`),params:MC}),PC=px.extend({completion:J({values:K(H()).max(100),total:$(U().int()),hasMore:$(W())})}),FC=q({uri:H().startsWith(`file://`),name:H().optional(),_meta:X(H(),G()).optional()}),IC=lx.extend({method:Q(`roots/list`),params:sx.optional()}),LC=px.extend({roots:K(FC)}),RC=dx.extend({method:Q(`notifications/roots/list_changed`),params:ux.optional()}),zC=J({ttl:U().optional(),pollInterval:U().optional()}),BC=Z([`working`,`input_required`,`completed`,`failed`,`cancelled`]),VC=q({taskId:H(),status:BC,ttl:Y([U(),Qy()]),createdAt:H(),lastUpdatedAt:H(),pollInterval:$(U()),statusMessage:$(H())}),HC=px.extend({task:VC}),UC=ux.merge(VC),WC=dx.extend({method:Q(`notifications/tasks/status`),params:UC}),GC=lx.extend({method:Q(`tasks/get`),params:sx.extend({taskId:H()})}),KC=px.merge(VC),qC=lx.extend({method:Q(`tasks/result`),params:sx.extend({taskId:H()})}),JC=px.loose(),YC=Wx.extend({method:Q(`tasks/list`)}),XC=Gx.extend({tasks:K(VC)}),ZC=lx.extend({method:Q(`tasks/cancel`),params:sx.extend({taskId:H()})}),QC=px.merge(VC),$C=Y([zx,Nx,Lx,NC,ZS,DS,wS,eS,nS,oS,uS,fS,hS,KS,VS]),ew=Y([Cx,Hx,Ix,RC]),tw=Y([xx,lC,uC,kC,LC]),nw=Y([zx,cC,EC,IC]),rw=Y([Cx,Hx,$S,xS,cS,qS,LS,_S,OC]),iw=Y([xx,Fx,Rx,PC,IS,TS,tS,rS,sS,US,HS,yS]),aw=ky().superRefine((e,t)=>{if(!URL.canParse(e))return t.addIssue({code:Bb.custom,message:`URL must be parseable`,fatal:!0}),Nf}).refine(e=>{let t=new URL(e);return t.protocol!==`javascript:`&&t.protocol!==`data:`&&t.protocol!==`vbscript:`},{message:`URL cannot use javascript:, data:, or vbscript: scheme`}),ow=J({resource:H().url(),authorization_servers:K(aw).optional(),jwks_uri:H().url().optional(),scopes_supported:K(H()).optional(),bearer_methods_supported:K(H()).optional(),resource_signing_alg_values_supported:K(H()).optional(),resource_name:H().optional(),resource_documentation:H().optional(),resource_policy_uri:H().url().optional(),resource_tos_uri:H().url().optional(),tls_client_certificate_bound_access_tokens:W().optional(),authorization_details_types_supported:K(H()).optional(),dpop_signing_alg_values_supported:K(H()).optional(),dpop_bound_access_tokens_required:W().optional()}),sw=J({issuer:H(),authorization_endpoint:aw,token_endpoint:aw,registration_endpoint:aw.optional(),scopes_supported:K(H()).optional(),response_types_supported:K(H()),response_modes_supported:K(H()).optional(),grant_types_supported:K(H()).optional(),token_endpoint_auth_methods_supported:K(H()).optional(),token_endpoint_auth_signing_alg_values_supported:K(H()).optional(),service_documentation:aw.optional(),revocation_endpoint:aw.optional(),revocation_endpoint_auth_methods_supported:K(H()).optional(),revocation_endpoint_auth_signing_alg_values_supported:K(H()).optional(),introspection_endpoint:H().optional(),introspection_endpoint_auth_methods_supported:K(H()).optional(),introspection_endpoint_auth_signing_alg_values_supported:K(H()).optional(),code_challenge_methods_supported:K(H()).optional(),client_id_metadata_document_supported:W().optional(),authorization_response_iss_parameter_supported:W().optional().catch(void 0),dpop_signing_alg_values_supported:K(H()).optional()}),cw=J({issuer:H(),authorization_endpoint:aw,token_endpoint:aw,userinfo_endpoint:aw.optional(),jwks_uri:aw,registration_endpoint:aw.optional(),scopes_supported:K(H()).optional(),response_types_supported:K(H()),response_modes_supported:K(H()).optional(),grant_types_supported:K(H()).optional(),acr_values_supported:K(H()).optional(),subject_types_supported:K(H()),id_token_signing_alg_values_supported:K(H()),id_token_encryption_alg_values_supported:K(H()).optional(),id_token_encryption_enc_values_supported:K(H()).optional(),userinfo_signing_alg_values_supported:K(H()).optional(),userinfo_encryption_alg_values_supported:K(H()).optional(),userinfo_encryption_enc_values_supported:K(H()).optional(),request_object_signing_alg_values_supported:K(H()).optional(),request_object_encryption_alg_values_supported:K(H()).optional(),request_object_encryption_enc_values_supported:K(H()).optional(),token_endpoint_auth_methods_supported:K(H()).optional(),token_endpoint_auth_signing_alg_values_supported:K(H()).optional(),display_values_supported:K(H()).optional(),claim_types_supported:K(H()).optional(),claims_supported:K(H()).optional(),service_documentation:H().optional(),claims_locales_supported:K(H()).optional(),ui_locales_supported:K(H()).optional(),claims_parameter_supported:W().optional(),request_parameter_supported:W().optional(),request_uri_parameter_supported:W().optional(),require_request_uri_registration:W().optional(),op_policy_uri:aw.optional(),op_tos_uri:aw.optional(),client_id_metadata_document_supported:W().optional(),authorization_response_iss_parameter_supported:W().optional().catch(void 0)}),lw=q({...cw.shape,...sw.pick({code_challenge_methods_supported:!0}).shape}),uw=q({access_token:H(),id_token:H().optional(),token_type:H(),expires_in:Wb().optional(),scope:H().optional(),refresh_token:H().optional(),issuer:H().optional().catch(void 0)}).strip(),dw=q({issued_token_type:Q(`urn:ietf:params:oauth:token-type:id-jag`),access_token:H(),token_type:H().optional(),expires_in:U().optional(),scope:H().optional()}).strip(),fw=q({error:H(),error_description:H().optional(),error_uri:H().optional()}),pw=aw.optional().or(Q(``).transform(()=>void 0)),mw=q({redirect_uris:K(aw),token_endpoint_auth_method:H().optional(),grant_types:K(H()).optional(),response_types:K(H()).optional(),application_type:H().optional(),client_name:H().optional(),client_uri:aw.optional(),logo_uri:pw,scope:H().optional(),contacts:K(H()).optional(),tos_uri:pw,policy_uri:H().optional(),jwks_uri:aw.optional(),jwks:eb().optional(),software_id:H().optional(),software_version:H().optional(),software_statement:H().optional()}).strip(),hw=q({client_id:H(),client_secret:H().optional(),client_id_issued_at:U().optional(),client_secret_expires_at:U().optional(),issuer:H().optional().catch(void 0)}).strip(),gw=mw.merge(hw),_w=q({error:H(),error_description:H().optional()}).strip(),vw=q({token:H(),token_type_hint:H().optional()}).strip(),yw=Symbol.for(`mcp.sdk.errorBrands`);function bw(e,t){let n=new Set,r=t;for(;typeof r==`function`;){let e=r.mcpBrand;Object.prototype.hasOwnProperty.call(r,`mcpBrand`)&&typeof e==`string`&&n.add(e),r=Object.getPrototypeOf(r)}n.size!==0&&Object.defineProperty(e,yw,{value:n,enumerable:!1,configurable:!0})}function xw(e,t){try{if(typeof t==`object`&&t&&Object.prototype.hasOwnProperty.call(e,`mcpBrand`)&&typeof e.mcpBrand==`string`&&Object.prototype.hasOwnProperty.call(t,yw)){let n=t[yw];if(n&&typeof n.has==`function`&&n.has(e.mcpBrand))return!0}}catch{}return Function.prototype[Symbol.hasInstance].call(e,t)}(class e extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.OAuthError`})}static[Symbol.hasInstance](e){return xw(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return xw(this,e)}constructor(e,t,n){super(t),this.code=e,this.errorUri=n,this.name=`OAuthError`,bw(this,new.target)}toResponseObject(){let e={error:this.code,error_description:this.message};return this.errorUri&&(e.error_uri=this.errorUri),e}static fromResponse(t){return new e(t.error,t.error_description??t.error,t.error_uri)}});var Sw=function(e){return e.NotConnected=`NOT_CONNECTED`,e.AlreadyConnected=`ALREADY_CONNECTED`,e.NotInitialized=`NOT_INITIALIZED`,e.CapabilityNotSupported=`CAPABILITY_NOT_SUPPORTED`,e.RequestTimeout=`REQUEST_TIMEOUT`,e.ConnectionClosed=`CONNECTION_CLOSED`,e.SendFailed=`SEND_FAILED`,e.InvalidResult=`INVALID_RESULT`,e.UnsupportedResultType=`UNSUPPORTED_RESULT_TYPE`,e.InputRequiredRoundsExceeded=`INPUT_REQUIRED_ROUNDS_EXCEEDED`,e.ListPaginationExceeded=`LIST_PAGINATION_EXCEEDED`,e.MethodNotSupportedByProtocolVersion=`METHOD_NOT_SUPPORTED_BY_PROTOCOL_VERSION`,e.EraNegotiationFailed=`ERA_NEGOTIATION_FAILED`,e.ClientHttpNotImplemented=`CLIENT_HTTP_NOT_IMPLEMENTED`,e.ClientHttpAuthentication=`CLIENT_HTTP_AUTHENTICATION`,e.ClientHttpForbidden=`CLIENT_HTTP_FORBIDDEN`,e.ClientHttpUnexpectedContent=`CLIENT_HTTP_UNEXPECTED_CONTENT`,e.ClientHttpFailedToOpenStream=`CLIENT_HTTP_FAILED_TO_OPEN_STREAM`,e.ClientHttpFailedToTerminateSession=`CLIENT_HTTP_FAILED_TO_TERMINATE_SESSION`,e}({}),Cw=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.SdkError`})}static[Symbol.hasInstance](e){return xw(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return xw(this,e)}constructor(e,t,n,r){super(t,r),this.code=e,this.data=n,this.name=`SdkError`,bw(this,new.target)}};(class extends Cw{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.SdkHttpError`})}constructor(e,t,n,r){super(e,t,n,r),this.name=`SdkHttpError`}get status(){return this.data.status}get statusText(){return this.data.statusText}});var ww=`2026-07-28`;function Tw(e){return e>=ww}function Ew(e){let t=e.structuredContent;return t===void 0||typeof t==`object`&&t&&!Array.isArray(t)||(e.content?.some(e=>e.type===`text`)??!1)?e:{...e,content:[...e.content??[],{type:`text`,text:JSON.stringify(t)}]}}var Dw=[`task`,`inputRequests`,`requestState`];function Ow(e){return typeof e!=`object`||!e||Array.isArray(e)||e.content!==void 0||Dw.some(t=>t in e)?e:{...e,content:[]}}function kw(){let e=Fb(()=>Y([H(),U(),W(),Qy(),X(H(),e),K(e)])),t=X(H(),e),n=Y([H(),U().int()]),r=H(),i=q({ttl:U().optional()}),a=q({taskId:H()}),o=J({progressToken:n.optional(),"io.modelcontextprotocol/related-task":a.optional()}),s=q({_meta:o.optional()}),c=s.extend({task:i.optional()}),l=q({method:H(),params:s.loose().optional()}),u=q({_meta:o.optional()}),d=q({method:H(),params:u.loose().optional()}),f=J({_meta:o.optional()}),p=Y([H(),U().int()]),m=f.strict(),h=u.extend({requestId:p.optional(),reason:H().optional()}),g=d.extend({method:Q(`notifications/cancelled`),params:h}),_=q({src:H(),mimeType:H().optional(),sizes:K(H()).optional(),theme:Z([`light`,`dark`]).optional()}),v=q({icons:K(_).optional()}),y=q({name:H(),title:H().optional()}),b=y.extend({...y.shape,...v.shape,version:H(),websiteUrl:H().optional(),description:H().optional()}),x=zb(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,ub(q({form:ub(q({applyDefaults:W().optional()}),t).optional(),url:t.optional()}),t.optional())),S=J({list:t.optional(),cancel:t.optional(),requests:J({sampling:J({createMessage:t.optional()}).optional(),elicitation:J({create:t.optional()}).optional()}).optional()}),C=J({list:t.optional(),cancel:t.optional(),requests:J({tools:J({call:t.optional()}).optional()}).optional()}),w=q({experimental:X(H(),t).optional(),sampling:q({context:t.optional(),tools:t.optional()}).optional(),elicitation:x.optional(),roots:q({listChanged:W().optional()}).optional(),tasks:S.optional(),extensions:X(H(),t).optional()}),T=s.extend({protocolVersion:H(),capabilities:w,clientInfo:b}),ee=l.extend({method:Q(`initialize`),params:T}),E=q({experimental:X(H(),t).optional(),logging:t.optional(),completions:t.optional(),prompts:q({listChanged:W().optional()}).optional(),resources:q({subscribe:W().optional(),listChanged:W().optional()}).optional(),tools:q({listChanged:W().optional()}).optional(),tasks:C.optional(),extensions:X(H(),t).optional()}),D=f.extend({protocolVersion:H(),capabilities:E,serverInfo:b,instructions:H().optional()}),O=d.extend({method:Q(`notifications/initialized`),params:u.optional()}),k=l.extend({method:Q(`ping`),params:s.optional()}),A=q({progress:U(),total:$(U()),message:$(H())}),te=q({...u.shape,...A.shape,progressToken:n}),j=d.extend({method:Q(`notifications/progress`),params:te}),M=s.extend({cursor:r.optional()}),ne=l.extend({params:M.optional()}),re=f.extend({nextCursor:r.optional()}),ie=q({uri:H(),mimeType:$(H()),_meta:X(H(),G()).optional()}),ae=ie.extend({text:H()}),oe=H().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:`Invalid Base64 string`}),se=ie.extend({blob:oe}),ce=Z([`user`,`assistant`]),le=q({audience:K(ce).optional(),priority:U().min(0).max(1).optional(),lastModified:Hb({offset:!0}).optional()}),ue=q({...y.shape,...v.shape,uri:H(),description:$(H()),mimeType:$(H()),size:$(U()),annotations:le.optional(),_meta:$(J({}))}),de=q({...y.shape,...v.shape,uriTemplate:H(),description:$(H()),mimeType:$(H()),annotations:le.optional(),_meta:$(J({}))}),fe=ne.extend({method:Q(`resources/list`)}),pe=re.extend({resources:K(ue)}),me=ne.extend({method:Q(`resources/templates/list`)}),he=re.extend({resourceTemplates:K(de)}),N=s.extend({uri:H()}),P=N,ge=l.extend({method:Q(`resources/read`),params:P}),_e=f.extend({contents:K(Y([ae,se]))}),ve=d.extend({method:Q(`notifications/resources/list_changed`),params:u.optional()}),ye=N,be=l.extend({method:Q(`resources/subscribe`),params:ye}),xe=N,Se=l.extend({method:Q(`resources/unsubscribe`),params:xe}),Ce=u.extend({uri:H()}),we=d.extend({method:Q(`notifications/resources/updated`),params:Ce}),Te=q({name:H(),description:$(H()),required:$(W())}),Ee=q({...y.shape,...v.shape,description:$(H()),arguments:$(K(Te)),_meta:$(J({}))}),De=ne.extend({method:Q(`prompts/list`)}),Oe=re.extend({prompts:K(Ee)}),ke=s.extend({name:H(),arguments:X(H(),H()).optional()}),Ae=l.extend({method:Q(`prompts/get`),params:ke}),je=q({type:Q(`text`),text:H(),annotations:le.optional(),_meta:X(H(),G()).optional()}),Me=q({type:Q(`image`),data:oe,mimeType:H(),annotations:le.optional(),_meta:X(H(),G()).optional()}),Ne=q({type:Q(`audio`),data:oe,mimeType:H(),annotations:le.optional(),_meta:X(H(),G()).optional()}),Pe=q({type:Q(`tool_use`),name:H(),id:H(),input:X(H(),G()),_meta:X(H(),G()).optional()}),Fe=q({type:Q(`resource`),resource:Y([ae,se]),annotations:le.optional(),_meta:X(H(),G()).optional()}),Ie=ue.extend({type:Q(`resource_link`)}),Le=Y([je,Me,Ne,Ie,Fe]),Re=q({role:ce,content:Le}),ze=f.extend({description:H().optional(),messages:K(Re)}),Be=d.extend({method:Q(`notifications/prompts/list_changed`),params:u.optional()}),Ve=q({title:H().optional(),readOnlyHint:W().optional(),destructiveHint:W().optional(),idempotentHint:W().optional(),openWorldHint:W().optional()}),He=q({taskSupport:Z([`required`,`optional`,`forbidden`]).optional()}),Ue=q({...y.shape,...v.shape,description:H().optional(),inputSchema:q({type:Q(`object`),properties:X(H(),e).optional(),required:K(H()).optional()}).catchall(G()),outputSchema:q({type:Q(`object`),properties:X(H(),e).optional(),required:K(H()).optional()}).catchall(G()).optional(),annotations:Ve.optional(),execution:He.optional(),_meta:X(H(),G()).optional()}),We=ne.extend({method:Q(`tools/list`)}),Ge=re.extend({tools:K(Ue)}),Ke=f.extend({content:K(Le),structuredContent:X(H(),G()).optional(),isError:W().optional()}),qe=c.extend({name:H(),arguments:X(H(),G()).optional()}),Je=l.extend({method:Q(`tools/call`),params:qe}),Ye=d.extend({method:Q(`notifications/tools/list_changed`),params:u.optional()}),Xe=Z([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),Ze=s.extend({level:Xe}),Qe=l.extend({method:Q(`logging/setLevel`),params:Ze}),$e=u.extend({level:Xe,logger:H().optional(),data:G()}),et=d.extend({method:Q(`notifications/message`),params:$e}),tt=q({name:H().optional()}),nt=q({hints:K(tt).optional(),costPriority:U().min(0).max(1).optional(),speedPriority:U().min(0).max(1).optional(),intelligencePriority:U().min(0).max(1).optional()}),rt=q({mode:Z([`auto`,`required`,`none`]).optional()}),it=q({type:Q(`tool_result`),toolUseId:H().describe(`The unique identifier for the corresponding tool call.`),content:K(Le),structuredContent:q({}).loose().optional(),isError:W().optional(),_meta:X(H(),G()).optional()}),at=cb(`type`,[je,Me,Ne]),ot=cb(`type`,[je,Me,Ne,Pe,it]),st=q({role:ce,content:Y([ot,K(ot)]),_meta:X(H(),G()).optional()}),ct=c.extend({messages:K(st),modelPreferences:nt.optional(),systemPrompt:H().optional(),includeContext:Z([`none`,`thisServer`,`allServers`]).optional(),temperature:U().optional(),maxTokens:U().int(),stopSequences:K(H()).optional(),metadata:t.optional(),tools:K(Ue).optional(),toolChoice:rt.optional()}),lt=l.extend({method:Q(`sampling/createMessage`),params:ct}),ut=f.extend({model:H(),stopReason:$(Z([`endTurn`,`stopSequence`,`maxTokens`]).or(H())),role:ce,content:at}),dt=f.extend({model:H(),stopReason:$(Z([`endTurn`,`stopSequence`,`maxTokens`,`toolUse`]).or(H())),role:ce,content:Y([ot,K(ot)])}),ft=q({type:Q(`boolean`),title:H().optional(),description:H().optional(),default:W().optional()}),pt=q({type:Q(`string`),title:H().optional(),description:H().optional(),minLength:U().optional(),maxLength:U().optional(),format:Z([`email`,`uri`,`date`,`date-time`]).optional(),default:H().optional()}),mt=q({type:Z([`number`,`integer`]),title:H().optional(),description:H().optional(),minimum:U().optional(),maximum:U().optional(),default:U().optional()}),ht=q({type:Q(`string`),title:H().optional(),description:H().optional(),enum:K(H()),default:H().optional()}),gt=q({type:Q(`string`),title:H().optional(),description:H().optional(),oneOf:K(q({const:H(),title:H()})),default:H().optional()}),_t=q({type:Q(`string`),title:H().optional(),description:H().optional(),enum:K(H()),enumNames:K(H()).optional(),default:H().optional()}),vt=Y([ht,gt]),yt=q({type:Q(`array`),title:H().optional(),description:H().optional(),minItems:U().optional(),maxItems:U().optional(),items:q({type:Q(`string`),enum:K(H())}),default:K(H()).optional()}),bt=q({type:Q(`array`),title:H().optional(),description:H().optional(),minItems:U().optional(),maxItems:U().optional(),items:q({anyOf:K(q({const:H(),title:H()}))}),default:K(H()).optional()}),xt=Y([yt,bt]),St=Y([_t,vt,xt]),Ct=Y([St,ft,pt,mt]),wt=c.extend({mode:Q(`form`).optional(),message:H(),requestedSchema:q({type:Q(`object`),properties:X(H(),Ct),required:K(H()).optional()}).catchall(G())}),Tt=c.extend({mode:Q(`url`),message:H(),elicitationId:H(),url:H().url()}),Et=Y([wt,Tt]),Dt=l.extend({method:Q(`elicitation/create`),params:Et}),Ot=u.extend({elicitationId:H()}),kt=d.extend({method:Q(`notifications/elicitation/complete`),params:Ot}),At=f.extend({action:Z([`accept`,`decline`,`cancel`]),content:zb(e=>e===null?void 0:e,X(H(),Y([H(),U(),W(),K(H())])).optional())}),jt=q({type:Q(`ref/resource`),uri:H()}),F=q({type:Q(`ref/prompt`),name:H()}),Mt=s.extend({ref:Y([F,jt]),argument:q({name:H(),value:H()}),context:q({arguments:X(H(),H()).optional()}).optional()}),Nt=l.extend({method:Q(`completion/complete`),params:Mt}),Pt=f.extend({completion:J({values:K(H()).max(100),total:$(U().int()),hasMore:$(W())})}),Ft=q({uri:H().startsWith(`file://`),name:H().optional(),_meta:X(H(),G()).optional()}),It=l.extend({method:Q(`roots/list`),params:s.optional()}),Lt=f.extend({roots:K(Ft)}),Rt=d.extend({method:Q(`notifications/roots/list_changed`),params:u.optional()}),zt=J({ttl:U().optional(),pollInterval:U().optional()}),Bt=Z([`working`,`input_required`,`completed`,`failed`,`cancelled`]),Vt=q({taskId:H(),status:Bt,ttl:Y([U(),Qy()]),createdAt:H(),lastUpdatedAt:H(),pollInterval:$(U()),statusMessage:$(H())}),Ht=f.extend({task:Vt}),Ut=u.merge(Vt),Wt=d.extend({method:Q(`notifications/tasks/status`),params:Ut}),Gt=l.extend({method:Q(`tasks/get`),params:s.extend({taskId:H()})}),Kt=f.merge(Vt),qt=l.extend({method:Q(`tasks/result`),params:s.extend({taskId:H()})}),Jt=f.loose(),I=ne.extend({method:Q(`tasks/list`)}),Yt=re.extend({tasks:K(Vt)}),Xt=l.extend({method:Q(`tasks/cancel`),params:s.extend({taskId:H()})});return{JSONValueSchema:e,JSONObjectSchema:t,ProgressTokenSchema:n,CursorSchema:r,TaskMetadataSchema:i,RelatedTaskMetadataSchema:a,RequestMetaSchema:o,BaseRequestParamsSchema:s,TaskAugmentedRequestParamsSchema:c,RequestSchema:l,NotificationsParamsSchema:u,NotificationSchema:d,ResultSchema:f,RequestIdSchema:p,EmptyResultSchema:m,CancelledNotificationParamsSchema:h,CancelledNotificationSchema:g,IconSchema:_,IconsSchema:v,BaseMetadataSchema:y,ImplementationSchema:b,ClientTasksCapabilitySchema:S,ServerTasksCapabilitySchema:C,ClientCapabilitiesSchema:w,InitializeRequestParamsSchema:T,InitializeRequestSchema:ee,ServerCapabilitiesSchema:E,InitializeResultSchema:D,InitializedNotificationSchema:O,PingRequestSchema:k,ProgressSchema:A,ProgressNotificationParamsSchema:te,ProgressNotificationSchema:j,PaginatedRequestParamsSchema:M,PaginatedRequestSchema:ne,PaginatedResultSchema:re,ResourceContentsSchema:ie,TextResourceContentsSchema:ae,BlobResourceContentsSchema:se,RoleSchema:ce,AnnotationsSchema:le,ResourceSchema:ue,ResourceTemplateSchema:de,ListResourcesRequestSchema:fe,ListResourcesResultSchema:pe,ListResourceTemplatesRequestSchema:me,ListResourceTemplatesResultSchema:he,ResourceRequestParamsSchema:N,ReadResourceRequestParamsSchema:P,ReadResourceRequestSchema:ge,ReadResourceResultSchema:_e,ResourceListChangedNotificationSchema:ve,SubscribeRequestParamsSchema:ye,SubscribeRequestSchema:be,UnsubscribeRequestParamsSchema:xe,UnsubscribeRequestSchema:Se,ResourceUpdatedNotificationParamsSchema:Ce,ResourceUpdatedNotificationSchema:we,PromptArgumentSchema:Te,PromptSchema:Ee,ListPromptsRequestSchema:De,ListPromptsResultSchema:Oe,GetPromptRequestParamsSchema:ke,GetPromptRequestSchema:Ae,TextContentSchema:je,ImageContentSchema:Me,AudioContentSchema:Ne,ToolUseContentSchema:Pe,EmbeddedResourceSchema:Fe,ResourceLinkSchema:Ie,ContentBlockSchema:Le,PromptMessageSchema:Re,GetPromptResultSchema:ze,PromptListChangedNotificationSchema:Be,ToolAnnotationsSchema:Ve,ToolExecutionSchema:He,ToolSchema:Ue,ListToolsRequestSchema:We,ListToolsResultSchema:Ge,CallToolResultSchema:Ke,CallToolRequestParamsSchema:qe,CallToolRequestSchema:Je,ToolListChangedNotificationSchema:Ye,LoggingLevelSchema:Xe,SetLevelRequestParamsSchema:Ze,SetLevelRequestSchema:Qe,LoggingMessageNotificationParamsSchema:$e,LoggingMessageNotificationSchema:et,ModelHintSchema:tt,ModelPreferencesSchema:nt,ToolChoiceSchema:rt,ToolResultContentSchema:it,SamplingContentSchema:at,SamplingMessageContentBlockSchema:ot,SamplingMessageSchema:st,CreateMessageRequestParamsSchema:ct,CreateMessageRequestSchema:lt,CreateMessageResultSchema:ut,CreateMessageResultWithToolsSchema:dt,BooleanSchemaSchema:ft,StringSchemaSchema:pt,NumberSchemaSchema:mt,UntitledSingleSelectEnumSchemaSchema:ht,TitledSingleSelectEnumSchemaSchema:gt,LegacyTitledEnumSchemaSchema:_t,SingleSelectEnumSchemaSchema:vt,UntitledMultiSelectEnumSchemaSchema:yt,TitledMultiSelectEnumSchemaSchema:bt,MultiSelectEnumSchemaSchema:xt,EnumSchemaSchema:St,PrimitiveSchemaDefinitionSchema:Ct,ElicitRequestFormParamsSchema:wt,ElicitRequestURLParamsSchema:Tt,ElicitRequestParamsSchema:Et,ElicitRequestSchema:Dt,ElicitationCompleteNotificationParamsSchema:Ot,ElicitationCompleteNotificationSchema:kt,ElicitResultSchema:At,ResourceTemplateReferenceSchema:jt,PromptReferenceSchema:F,CompleteRequestParamsSchema:Mt,CompleteRequestSchema:Nt,CompleteResultSchema:Pt,RootSchema:Ft,ListRootsRequestSchema:It,ListRootsResultSchema:Lt,RootsListChangedNotificationSchema:Rt,TaskCreationParamsSchema:zt,TaskStatusSchema:Bt,TaskSchema:Vt,CreateTaskResultSchema:Ht,TaskStatusNotificationParamsSchema:Ut,TaskStatusNotificationSchema:Wt,GetTaskRequestSchema:Gt,GetTaskResultSchema:Kt,GetTaskPayloadRequestSchema:qt,GetTaskPayloadResultSchema:Jt,ListTasksRequestSchema:I,ListTasksResultSchema:Yt,CancelTaskRequestSchema:Xt,CancelTaskResultSchema:f.merge(Vt),ClientRequestSchema:Y([k,ee,Nt,Qe,Ae,De,fe,me,ge,be,Se,Je,We,Gt,qt,I,Xt]),ClientNotificationSchema:Y([g,j,O,Rt,Wt]),ClientResultSchema:Y([m,ut,dt,At,Lt,Kt,Yt,Ht]),ServerRequestSchema:Y([k,lt,Dt,It,Gt,qt,I,Xt]),ServerNotificationSchema:Y([g,j,et,we,ve,Ye,Be,Wt,kt]),ServerResultSchema:Y([m,D,Pt,ze,Oe,pe,he,_e,Ke,Ge,Kt,Yt,Ht]),CallToolResultWireSchema:G().superRefine((e,t)=>{if(typeof e==`object`&&e&&!Array.isArray(e)&&e.content===void 0){for(let n of Dw)if(n in e){t.addIssue({code:`custom`,message:`content is required when the body carries '${n}' — another result family cannot default into an empty tools/call success`});return}}}).transform(Ow).pipe(Ke)}}var Aw;function jw(){return Aw??=kw()}function Mw(e){return e.type!==`object`}var Nw=new Set([`const`,`enum`,`default`,`examples`]),Pw=new Set([`properties`,`patternProperties`,`$defs`,`definitions`,`dependentSchemas`,`dependencies`]);function Fw(e){return e!==void 0&&!(typeof e==`string`&&e.startsWith(`#`))}function Iw(e){let t=typeof e.$schema==`string`?e.$schema:void 0;if(Fw(e.$id))return{...t!==void 0&&{$schema:t},type:`object`,properties:{result:e},required:[`result`]};let n=yd(e.$schema)&&e.$recursiveAnchor!==!0,r=(e,t)=>{if(Array.isArray(e))return e.map(e=>r(e,!1));if(typeof e!=`object`||!e||!t&&Fw(e.$id))return e;let i={},a=!1;for(let[o,s]of Object.entries(e))t?i[o]=r(s,!1):(o===`$ref`||o===`$dynamicRef`)&&typeof s==`string`?i[o]=s===`#`?`#/properties/result`:s.startsWith(`#/`)?`#/properties/result${s.slice(1)}`:s:o===`$recursiveRef`&&s===`#`&&n?a=!0:i[o]=Nw.has(o)?s:Pw.has(o)?r(s,!0):r(s,!1);return a&&(`$ref`in i?i.allOf=[...Array.isArray(i.allOf)?i.allOf:[],{$ref:`#/properties/result`}]:i.$ref=`#/properties/result`),i};return{...t!==void 0&&{$schema:t},type:`object`,properties:{result:r(e,!1)},required:[`result`]}}var Lw={ping:null,initialize:null,"completion/complete":null,"logging/setLevel":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"resources/subscribe":null,"resources/unsubscribe":null,"tools/call":null,"tools/list":null,"tasks/get":null,"tasks/result":null,"tasks/list":null,"tasks/cancel":null,"sampling/createMessage":null,"elicitation/create":null,"roots/list":null},Rw={"notifications/cancelled":null,"notifications/progress":null,"notifications/initialized":null,"notifications/roots/list_changed":null,"notifications/tasks/status":null,"notifications/message":null,"notifications/resources/updated":null,"notifications/resources/list_changed":null,"notifications/tools/list_changed":null,"notifications/prompts/list_changed":null,"notifications/elicitation/complete":null},zw={ping:null,initialize:null,"completion/complete":null,"logging/setLevel":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"resources/subscribe":null,"resources/unsubscribe":null,"tools/call":null,"tools/list":null,"sampling/createMessage":null,"elicitation/create":null,"roots/list":null},Bw;function Vw(){if(Bw)return Bw;let e=jw();return Bw={requestSchemas:{ping:e.PingRequestSchema,initialize:e.InitializeRequestSchema,"completion/complete":e.CompleteRequestSchema,"logging/setLevel":e.SetLevelRequestSchema,"prompts/get":e.GetPromptRequestSchema,"prompts/list":e.ListPromptsRequestSchema,"resources/list":e.ListResourcesRequestSchema,"resources/templates/list":e.ListResourceTemplatesRequestSchema,"resources/read":e.ReadResourceRequestSchema,"resources/subscribe":e.SubscribeRequestSchema,"resources/unsubscribe":e.UnsubscribeRequestSchema,"tools/call":e.CallToolRequestSchema,"tools/list":e.ListToolsRequestSchema,"tasks/get":e.GetTaskRequestSchema,"tasks/result":e.GetTaskPayloadRequestSchema,"tasks/list":e.ListTasksRequestSchema,"tasks/cancel":e.CancelTaskRequestSchema,"sampling/createMessage":e.CreateMessageRequestSchema,"elicitation/create":e.ElicitRequestSchema,"roots/list":e.ListRootsRequestSchema},notificationSchemas:{"notifications/cancelled":e.CancelledNotificationSchema,"notifications/progress":e.ProgressNotificationSchema,"notifications/initialized":e.InitializedNotificationSchema,"notifications/roots/list_changed":e.RootsListChangedNotificationSchema,"notifications/tasks/status":e.TaskStatusNotificationSchema,"notifications/message":e.LoggingMessageNotificationSchema,"notifications/resources/updated":e.ResourceUpdatedNotificationSchema,"notifications/resources/list_changed":e.ResourceListChangedNotificationSchema,"notifications/tools/list_changed":e.ToolListChangedNotificationSchema,"notifications/prompts/list_changed":e.PromptListChangedNotificationSchema,"notifications/elicitation/complete":e.ElicitationCompleteNotificationSchema},resultSchemas:{ping:e.EmptyResultSchema,initialize:e.InitializeResultSchema,"completion/complete":e.CompleteResultSchema,"logging/setLevel":e.EmptyResultSchema,"prompts/get":e.GetPromptResultSchema,"prompts/list":e.ListPromptsResultSchema,"resources/list":e.ListResourcesResultSchema,"resources/templates/list":e.ListResourceTemplatesResultSchema,"resources/read":e.ReadResourceResultSchema,"resources/subscribe":e.EmptyResultSchema,"resources/unsubscribe":e.EmptyResultSchema,"tools/call":e.CallToolResultWireSchema,"tools/list":e.ListToolsResultSchema,"sampling/createMessage":e.CreateMessageResultWithToolsSchema,"elicitation/create":e.ElicitResultSchema,"roots/list":e.ListRootsResultSchema}},Bw}function Hw(e){return Object.prototype.hasOwnProperty.call(Lw,e)}function Uw(e){return Object.prototype.hasOwnProperty.call(Rw,e)}function Ww(e){return Object.prototype.hasOwnProperty.call(zw,e)}function Gw(e){return Ww(e)?Vw().resultSchemas[e]:void 0}function Kw(e){return Hw(e)?Vw().requestSchemas[e]:void 0}function qw(e){return Uw(e)?Vw().notificationSchemas[e]:void 0}Object.keys(Lw),Object.keys(Rw);function Jw(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Yw(e,t){if(e===void 0)return{ok:!1,reason:`not-in-era`};let n=e.safeParse(t);return n.success?{ok:!0,value:n.data}:{ok:!1,reason:`invalid`,message:String(n.error)}}var Xw={ok:!1,reason:`not-in-era`};function Zw(e){return Jw(e)&&Jw(e.outputSchema)&&Mw(e.outputSchema)}function Qw(e){return e}var $w={era:`2025-11-25`,hasRequestMethod:Hw,hasNotificationMethod:Uw,validateRequest:(e,t)=>Yw(Kw(e),t),validateResult:(e,t)=>Yw(Gw(e),t),validateNotification:(e,t)=>Yw(qw(e),t),hasInputRequestMethod:()=>!1,validateInputRequest:()=>Xw,validateInputResponse:()=>Xw,samplingResultVariant:((e,t)=>{let n=jw();return Yw(e?n.CreateMessageResultWithToolsSchema:n.CreateMessageResultSchema,t)}),outboundEnvelope:e=>void 0,validateEnvelopeMeta:e=>[],projectCallToolResult(e,t){let n=Ew(e),r=n.structuredContent;if(r===void 0)return n;let i=typeof r!=`object`||!r||Array.isArray(r),a=t!==void 0&&Mw(t);return!i&&!a?n:{...n,structuredContent:{result:r}}},decodeResult(e,t){if(Jw(t)&&`resultType`in t){let e={...t};return delete e.resultType,{kind:`complete`,result:Qw(e)}}return{kind:`complete`,result:Qw(t)}},encodeResult(e,t){if(e!==`tools/list`)return t;let n=t.tools;return!Array.isArray(n)||!n.some(e=>Zw(e))?t:{...t,tools:n.map(e=>Zw(e)?{...e,outputSchema:Iw(e.outputSchema)}:e)}},encodeErrorCode:e=>e===-32002?-32602:e,checkInboundEnvelope:e=>void 0};function eT(){let e=Fb(()=>Y([H(),U(),W(),Qy(),X(H(),e),K(e)])),t=X(H(),e),n=Y([H(),U().int()]),r=H(),i=Y([H(),U().int()]),a=Z([`user`,`assistant`]),o=Z([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),s=H().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:`Invalid Base64 string`}),c=q({ttl:U().optional()}),l=q({taskId:H()}),u=J({progressToken:n.optional(),"io.modelcontextprotocol/related-task":l.optional()}),d=q({_meta:u.optional()}),f=d.extend({task:c.optional()}),p=q({_meta:u.optional()}),m=q({method:H(),params:p.loose().optional()}),h=q({src:H(),mimeType:H().optional(),sizes:K(H()).optional(),theme:Z([`light`,`dark`]).optional()}),g=q({icons:K(h).optional()}),_=q({name:H(),title:H().optional()}),v=_.extend({..._.shape,...g.shape,version:H(),websiteUrl:H().optional(),description:H().optional()}),y=zb(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,ub(q({form:ub(q({applyDefaults:W().optional()}),t).optional(),url:t.optional()}),t.optional())),b=J({list:t.optional(),cancel:t.optional(),requests:J({sampling:J({createMessage:t.optional()}).optional(),elicitation:J({create:t.optional()}).optional()}).optional()}),x=J({list:t.optional(),cancel:t.optional(),requests:J({tools:J({call:t.optional()}).optional()}).optional()}),S=q({experimental:X(H(),t).optional(),sampling:q({context:t.optional(),tools:t.optional()}).optional(),elicitation:y.optional(),roots:q({listChanged:W().optional()}).optional(),tasks:b.optional(),extensions:X(H(),t).optional()}),C=q({experimental:X(H(),t).optional(),logging:t.optional(),completions:t.optional(),prompts:q({listChanged:W().optional()}).optional(),resources:q({subscribe:W().optional(),listChanged:W().optional()}).optional(),tools:q({listChanged:W().optional()}).optional(),tasks:x.optional(),extensions:X(H(),t).optional()}),w=q({progress:U(),total:$(U()),message:$(H())}),T=q({...p.shape,...w.shape,progressToken:n}),ee=m.extend({method:Q(`notifications/progress`),params:T}),E=p.extend({level:o,logger:H().optional(),data:G()}),D=m.extend({method:Q(`notifications/message`),params:E}),O=q({uri:H(),mimeType:$(H()),_meta:X(H(),G()).optional()}),k=O.extend({text:H()}),A=O.extend({blob:s}),te=q({audience:K(a).optional(),priority:U().min(0).max(1).optional(),lastModified:Hb({offset:!0}).optional()}),j=q({..._.shape,...g.shape,uri:H(),description:$(H()),mimeType:$(H()),size:$(U()),annotations:te.optional(),_meta:$(J({}))}),M=q({..._.shape,...g.shape,uriTemplate:H(),description:$(H()),mimeType:$(H()),annotations:te.optional(),_meta:$(J({}))}),ne=m.extend({method:Q(`notifications/resources/list_changed`),params:p.optional()}),re=p.extend({uri:H()}),ie=m.extend({method:Q(`notifications/resources/updated`),params:re}),ae=q({name:H(),description:$(H()),required:$(W())}),oe=q({..._.shape,...g.shape,description:$(H()),arguments:$(K(ae)),_meta:$(J({}))}),se=m.extend({method:Q(`notifications/prompts/list_changed`),params:p.optional()}),ce=q({type:Q(`text`),text:H(),annotations:te.optional(),_meta:X(H(),G()).optional()}),le=q({type:Q(`image`),data:s,mimeType:H(),annotations:te.optional(),_meta:X(H(),G()).optional()}),ue=q({type:Q(`audio`),data:s,mimeType:H(),annotations:te.optional(),_meta:X(H(),G()).optional()}),de=q({type:Q(`tool_use`),name:H(),id:H(),input:X(H(),G()),_meta:X(H(),G()).optional()}),fe=q({type:Q(`resource`),resource:Y([k,A]),annotations:te.optional(),_meta:X(H(),G()).optional()}),pe=j.extend({type:Q(`resource_link`)}),me=Y([ce,le,ue,pe,fe]),he=q({role:a,content:me}),N=q({title:H().optional(),readOnlyHint:W().optional(),destructiveHint:W().optional(),idempotentHint:W().optional(),openWorldHint:W().optional()}),P=m.extend({method:Q(`notifications/tools/list_changed`),params:p.optional()}),ge=q({name:H().optional()}),_e=q({hints:K(ge).optional(),costPriority:U().min(0).max(1).optional(),speedPriority:U().min(0).max(1).optional(),intelligencePriority:U().min(0).max(1).optional()}),ve=q({mode:Z([`auto`,`required`,`none`]).optional()}),ye=q({type:Q(`boolean`),title:H().optional(),description:H().optional(),default:W().optional()}),be=q({type:Q(`string`),title:H().optional(),description:H().optional(),minLength:U().optional(),maxLength:U().optional(),format:Z([`email`,`uri`,`date`,`date-time`]).optional(),default:H().optional()}),xe=q({type:Z([`number`,`integer`]),title:H().optional(),description:H().optional(),minimum:U().optional(),maximum:U().optional(),default:U().optional()}),Se=q({type:Q(`string`),title:H().optional(),description:H().optional(),enum:K(H()),default:H().optional()}),Ce=q({type:Q(`string`),title:H().optional(),description:H().optional(),oneOf:K(q({const:H(),title:H()})),default:H().optional()}),we=q({type:Q(`string`),title:H().optional(),description:H().optional(),enum:K(H()),enumNames:K(H()).optional(),default:H().optional()}),Te=Y([Se,Ce]),Ee=q({type:Q(`array`),title:H().optional(),description:H().optional(),minItems:U().optional(),maxItems:U().optional(),items:q({type:Q(`string`),enum:K(H())}),default:K(H()).optional()}),De=q({type:Q(`array`),title:H().optional(),description:H().optional(),minItems:U().optional(),maxItems:U().optional(),items:q({anyOf:K(q({const:H(),title:H()}))}),default:K(H()).optional()}),Oe=Y([Ee,De]),ke=Y([we,Te,Oe]),Ae=Y([ke,ye,be,xe]),je=f.extend({mode:Q(`form`).optional(),message:H(),requestedSchema:q({type:Q(`object`),properties:X(H(),Ae),required:K(H()).optional()}).catchall(G())}),Me=q({type:Q(`ref/resource`),uri:H()}),Ne=q({type:Q(`ref/prompt`),name:H()}),Pe=q({uri:H().startsWith(`file://`),name:H().optional(),_meta:X(H(),G()).optional()}),Fe=S.shape,Ie=q({experimental:Fe.experimental,sampling:Fe.sampling,elicitation:Fe.elicitation,roots:Fe.roots,extensions:Fe.extensions}),Le=C.shape,Re=q({experimental:Le.experimental,logging:Le.logging,completions:Le.completions,prompts:Le.prompts,resources:Le.resources,tools:Le.tools,extensions:Le.extensions}),ze=J({progressToken:n.optional(),[qb]:H(),[Jb]:v.optional(),[Xb]:Ie,[Qb]:o.optional()}),Be=q({..._.shape,...g.shape,description:H().optional(),inputSchema:J({$schema:H().optional(),type:Q(`object`)}),outputSchema:J({$schema:H().optional()}).optional(),annotations:N.optional(),_meta:X(H(),G()).optional()}),Ve=q({type:Q(`tool_result`),toolUseId:H(),content:K(me),structuredContent:G().optional(),isError:W().optional(),_meta:X(H(),G()).optional()}),He=Y([ce,le,ue,de,Ve]),Ue=q({role:a,content:Y([He,K(He)]),_meta:X(H(),G()).optional()}),We=H(),Ge=J({[Yb]:v.optional().catch(void 0)}),Ke=Ge.optional();function qe(e){return J({_meta:Ke,resultType:We.default(`complete`),...e})}let Je=qe({}),Ye=qe({nextCursor:r.optional()}),Xe=qe({content:K(me),structuredContent:G().optional(),isError:W().optional()}),Ze=qe({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),tools:K(Be),nextCursor:r.optional()}),Qe=qe({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),prompts:K(oe),nextCursor:r.optional()}),$e=qe({description:H().optional(),messages:K(he)}),et=qe({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),resources:K(j),nextCursor:r.optional()}),tt=qe({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),resourceTemplates:K(M),nextCursor:r.optional()}),nt=qe({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),contents:K(Y([k,A]))}),rt=qe({completion:q({values:K(H()).max(100),total:U().int().optional(),hasMore:W().optional()}).loose()}),it=qe({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`])}),at=qe({ttlMs:U().int().min(0).catch(0),cacheScope:Z([`public`,`private`]).catch(`private`),supportedVersions:K(H()),capabilities:Re,instructions:H().optional()}),ot=q({messages:K(Ue),modelPreferences:_e.optional(),systemPrompt:H().optional(),includeContext:Z([`none`,`thisServer`,`allServers`]).optional(),temperature:U().optional(),maxTokens:U().int(),stopSequences:K(H()).optional(),metadata:t.optional(),tools:K(Be).optional(),toolChoice:ve.optional()}),st=q({method:Q(`sampling/createMessage`),params:ot}),ct=q({method:Q(`roots/list`),params:q({_meta:X(H(),G()).optional()}).optional()}),lt=q({...Ue.shape,model:H(),stopReason:H().optional()}),ut=q({roots:K(Pe)}),dt=q({action:Z([`accept`,`decline`,`cancel`]),content:X(H(),Y([H(),U(),W(),K(H())])).optional()}),ft=q({mode:Q(`url`),message:H(),url:H().url()}),pt=Y([je,ft]),mt=q({method:Q(`elicitation/create`),params:pt}),ht=Y([st,ct,mt]),gt=Y([lt,ut,dt]),_t=X(H(),ht),vt=X(H(),gt),yt=qe({inputRequests:_t.optional(),requestState:H().optional()}),bt={inputResponses:vt.optional(),requestState:H().optional()},xt=q({_meta:ze,...bt}),St=J({progressToken:n.optional()});function Ct(e,t){return q({method:Q(e),params:q({_meta:ze,...t})})}function wt(e,t){return q({method:Q(e),params:q({_meta:St.optional(),...t}).optional()})}let Tt={name:H(),arguments:X(H(),G()).optional(),...bt},Et={cursor:r.optional()},Dt=Ct(`tools/call`,Tt),Ot=Ct(`tools/list`,Et),kt=Ct(`prompts/list`,Et),At=Ct(`prompts/get`,{name:H(),arguments:X(H(),H()).optional(),...bt}),jt=Ct(`resources/list`,Et),F=Ct(`resources/templates/list`,Et),Mt=Ct(`resources/read`,{uri:H(),...bt}),Nt={ref:Y([Ne,Me]),argument:q({name:H(),value:H()}),context:q({arguments:X(H(),H()).optional()}).optional()},Pt=Ct(`completion/complete`,Nt),Ft=Ct(`server/discover`,{}),It=q({toolsListChanged:W().optional(),promptsListChanged:W().optional(),resourcesListChanged:W().optional(),resourceSubscriptions:K(H()).optional()}),Lt={notifications:It},Rt=Ct(`subscriptions/listen`,Lt),zt=Ge.extend({"io.modelcontextprotocol/subscriptionId":i}),Bt=J({_meta:zt,resultType:We.default(`complete`)}),Vt={"tools/call":wt(`tools/call`,Tt),"tools/list":wt(`tools/list`,Et),"prompts/get":wt(`prompts/get`,{name:H(),arguments:X(H(),H()).optional()}),"prompts/list":wt(`prompts/list`,Et),"resources/list":wt(`resources/list`,Et),"resources/templates/list":wt(`resources/templates/list`,Et),"resources/read":wt(`resources/read`,{uri:H()}),"completion/complete":wt(`completion/complete`,Nt),"server/discover":wt(`server/discover`,{}),"subscriptions/listen":wt(`subscriptions/listen`,Lt)};function Ht(e){return J({_meta:Ke,...e})}let Ut={"tools/call":Ht({content:K(me),structuredContent:G().optional(),isError:W().optional()}),"tools/list":Ht({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),tools:K(Be),nextCursor:r.optional()}),"prompts/get":Ht({description:H().optional(),messages:K(he)}),"prompts/list":Ht({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),prompts:K(oe),nextCursor:r.optional()}),"resources/list":Ht({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),resources:K(j),nextCursor:r.optional()}),"resources/templates/list":Ht({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),resourceTemplates:K(M),nextCursor:r.optional()}),"resources/read":Ht({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),contents:K(Y([k,A]))}),"completion/complete":Ht({completion:q({values:K(H()).max(100),total:U().int().optional(),hasMore:W().optional()}).loose()}),"server/discover":Ht({ttlMs:U().int().min(0).catch(0),cacheScope:Z([`public`,`private`]).catch(`private`),supportedVersions:K(H()),capabilities:Re,instructions:H().optional()}),"subscriptions/listen":Ht({})},Wt=J({"io.modelcontextprotocol/subscriptionId":i.optional()}),Gt=q({method:Q(`notifications/subscriptions/acknowledged`),params:q({_meta:Wt.optional(),notifications:It})}),Kt=q({_meta:Wt.optional(),requestId:i,reason:H().optional()}),qt=q({method:Q(`notifications/cancelled`),params:Kt}),Jt={"notifications/cancelled":qt,"notifications/progress":ee,"notifications/message":D,"notifications/resources/updated":ie,"notifications/resources/list_changed":ne,"notifications/tools/list_changed":P,"notifications/prompts/list_changed":se,"notifications/subscriptions/acknowledged":Gt},I=e=>q({jsonrpc:Q(`2.0`),id:Y([H(),U().int()]),result:e}).strict();return{JSONValueSchema:e,JSONObjectSchema:t,ProgressTokenSchema:n,CursorSchema:r,RequestIdSchema:i,RoleSchema:a,LoggingLevelSchema:o,TaskMetadataSchema:c,RelatedTaskMetadataSchema:l,RequestMetaSchema:u,BaseRequestParamsSchema:d,TaskAugmentedRequestParamsSchema:f,NotificationsParamsSchema:p,NotificationSchema:m,IconSchema:h,IconsSchema:g,BaseMetadataSchema:_,ImplementationSchema:v,ClientTasksCapabilitySchema:b,ServerTasksCapabilitySchema:x,ClientCapabilitiesSchema:S,ServerCapabilitiesSchema:C,ProgressSchema:w,ProgressNotificationParamsSchema:T,ProgressNotificationSchema:ee,LoggingMessageNotificationParamsSchema:E,LoggingMessageNotificationSchema:D,ResourceContentsSchema:O,TextResourceContentsSchema:k,BlobResourceContentsSchema:A,AnnotationsSchema:te,ResourceSchema:j,ResourceTemplateSchema:M,ResourceListChangedNotificationSchema:ne,ResourceUpdatedNotificationParamsSchema:re,ResourceUpdatedNotificationSchema:ie,PromptArgumentSchema:ae,PromptSchema:oe,PromptListChangedNotificationSchema:se,TextContentSchema:ce,ImageContentSchema:le,AudioContentSchema:ue,ToolUseContentSchema:de,EmbeddedResourceSchema:fe,ResourceLinkSchema:pe,ContentBlockSchema:me,PromptMessageSchema:he,ToolAnnotationsSchema:N,ToolListChangedNotificationSchema:P,ModelHintSchema:ge,ModelPreferencesSchema:_e,ToolChoiceSchema:ve,BooleanSchemaSchema:ye,StringSchemaSchema:be,NumberSchemaSchema:xe,UntitledSingleSelectEnumSchemaSchema:Se,TitledSingleSelectEnumSchemaSchema:Ce,LegacyTitledEnumSchemaSchema:we,SingleSelectEnumSchemaSchema:Te,UntitledMultiSelectEnumSchemaSchema:Ee,TitledMultiSelectEnumSchemaSchema:De,MultiSelectEnumSchemaSchema:Oe,EnumSchemaSchema:ke,PrimitiveSchemaDefinitionSchema:Ae,ElicitRequestFormParamsSchema:je,ResourceTemplateReferenceSchema:Me,PromptReferenceSchema:Ne,RootSchema:Pe,ClientCapabilities2026Schema:Ie,ServerCapabilities2026Schema:Re,RequestMetaEnvelopeSchema:ze,ToolSchema:Be,ToolResultContentSchema:Ve,SamplingMessageContentBlockSchema:He,SamplingMessageSchema:Ue,ResultTypeSchema:We,ResultMetaSchema:Ge,ResultSchema:Je,PaginatedResultSchema:Ye,CallToolResultSchema:Xe,ListToolsResultSchema:Ze,ListPromptsResultSchema:Qe,GetPromptResultSchema:$e,ListResourcesResultSchema:et,ListResourceTemplatesResultSchema:tt,ReadResourceResultSchema:nt,CompleteResultSchema:rt,CacheableResultSchema:it,DiscoverResultSchema:at,CreateMessageRequestParamsSchema:ot,CreateMessageRequestSchema:st,ListRootsRequestSchema:ct,CreateMessageResultSchema:lt,ListRootsResultSchema:ut,ElicitResultSchema:dt,ElicitRequestURLParamsSchema:ft,ElicitRequestParamsSchema:pt,ElicitRequestSchema:mt,InputRequestSchema:ht,InputResponseSchema:gt,InputRequestsSchema:_t,InputResponsesSchema:vt,InputRequiredResultSchema:yt,InputResponseRequestParamsSchema:xt,CallToolRequestSchema:Dt,ListToolsRequestSchema:Ot,ListPromptsRequestSchema:kt,GetPromptRequestSchema:At,ListResourcesRequestSchema:jt,ListResourceTemplatesRequestSchema:F,ReadResourceRequestSchema:Mt,CompleteRequestSchema:Pt,DiscoverRequestSchema:Ft,SubscriptionFilterSchema:It,SubscriptionsListenRequestSchema:Rt,SubscriptionsListenResultMetaSchema:zt,SubscriptionsListenResultSchema:Bt,dispatchRequestSchemas:Vt,dispatchResultSchemas:Ut,NotificationMetaSchema:Wt,SubscriptionsAcknowledgedNotificationSchema:Gt,CancelledNotificationParamsSchema:Kt,CancelledNotificationSchema:qt,notificationSchemas2026:Jt,JSONRPCResultResponseSchema:I(Je),CallToolResultResponseSchema:I(Y([Xe,yt])),ListToolsResultResponseSchema:I(Ze),ListPromptsResultResponseSchema:I(Qe),GetPromptResultResponseSchema:I(Y([$e,yt])),ListResourcesResultResponseSchema:I(et),ListResourceTemplatesResultResponseSchema:I(tt),ReadResourceResultResponseSchema:I(Y([nt,yt])),CompleteResultResponseSchema:I(rt),DiscoverResultResponseSchema:I(at)}}var tT;function nT(){return tT??=eT()}var rT=[`tools/list`,`prompts/list`,`resources/list`,`resources/templates/list`,`resources/read`,`server/discover`];function iT(e){return rT.includes(e)}var aT=Symbol(`modelcontextprotocol.resultCacheHintFallback`);function oT(e){return e[aT]}function sT(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function cT(e){return e===`public`||e===`private`}var lT=function(e){return e[e.ParseError=-32700]=`ParseError`,e[e.InvalidRequest=-32600]=`InvalidRequest`,e[e.MethodNotFound=-32601]=`MethodNotFound`,e[e.InvalidParams=-32602]=`InvalidParams`,e[e.InternalError=-32603]=`InternalError`,e[e.ResourceNotFound=-32002]=`ResourceNotFound`,e[e.MissingRequiredClientCapability=-32021]=`MissingRequiredClientCapability`,e[e.UnsupportedProtocolVersion=-32022]=`UnsupportedProtocolVersion`,e[e.UrlElicitationRequired=-32042]=`UrlElicitationRequired`,e}({}),uT=class e extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.ProtocolError`})}static[Symbol.hasInstance](e){return xw(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return xw(this,e)}constructor(e,t,n){super(t),this.code=e,this.data=n,this.name=`ProtocolError`,bw(this,new.target)}static fromError(t,n,r){if(t===lT.UrlElicitationRequired&&r){let e=r;if(e.elicitations)return new fT(e.elicitations,n)}if(t===lT.UnsupportedProtocolVersion&&r){let e=r;if(Array.isArray(e.supported)&&typeof e.requested==`string`)return new pT({supported:e.supported,requested:e.requested},n)}if(t===lT.InvalidParams||t===lT.ResourceNotFound){let e=r;if(typeof e?.uri==`string`&&(t===lT.ResourceNotFound||Object.keys(e).length===1))return new dT(e.uri,n)}if(t===lT.MissingRequiredClientCapability&&r){let e=r;if(e.requiredCapabilities!==null&&typeof e.requiredCapabilities==`object`&&!Array.isArray(e.requiredCapabilities))return new mT({requiredCapabilities:e.requiredCapabilities},n)}return new e(t,n,r)}},dT=class extends uT{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.ResourceNotFoundError`})}constructor(e,t=`Resource not found: ${e}`){super(lT.InvalidParams,t,{uri:e})}get uri(){return this.data.uri}},fT=class extends uT{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.UrlElicitationRequiredError`})}constructor(e,t=`URL elicitation${e.length>1?`s`:``} required`){super(lT.UrlElicitationRequired,t,{elicitations:e})}get elicitations(){return this.data?.elicitations??[]}},pT=class extends uT{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.UnsupportedProtocolVersionError`})}constructor(e,t=`Unsupported protocol version: ${e.requested}`){super(lT.UnsupportedProtocolVersion,t,e)}get supported(){return this.data.supported}get requested(){return this.data.requested}},mT=class extends uT{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.MissingRequiredClientCapabilityError`})}constructor(e,t=`Missing required client capabilities: ${Object.keys(e.requiredCapabilities).join(`, `)}`){super(lT.MissingRequiredClientCapability,t,e)}get requiredCapabilities(){return this.data.requiredCapabilities}},hT=0,gT=`private`,_T=[`tools/call`,`prompts/get`,`resources/read`];function vT(e,t){let n=t.resultType;if(n===void 0)return{...t,resultType:`complete`};if(n===`complete`||_T.includes(e))return t;throw new uT(lT.InternalError,`Handler for ${e} returned resultType '${String(n)}', but results of ${e} only support 'complete' on protocol revision 2026-07-28`)}function yT(e,t){let n=oT(t);if(t.resultType!==`complete`||!iT(e))return n===void 0?t:wT(t);let r=t,i=sT(r.ttlMs)?r.ttlMs:ST(n),a=cT(r.cacheScope)?r.cacheScope:CT(n),o={...r,ttlMs:i,cacheScope:a};return delete o[aT],o}function bT(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function xT(e,t){if(t===void 0)return e;let n=e._meta;return n===void 0?{...e,_meta:{[Yb]:t}}:!bT(n)||n[`io.modelcontextprotocol/serverInfo`]!==void 0?e:{...e,_meta:{...n,[Yb]:t}}}function ST(e){return e!==void 0&&sT(e.ttlMs)?e.ttlMs:hT}function CT(e){return e!==void 0&&cT(e.cacheScope)?e.cacheScope:gT}function wT(e){let t={...e};return delete t[aT],t}var TT=[`elicitation/create`,`sampling/createMessage`,`roots/list`],ET;function DT(){if(ET)return ET;let e=nT();return ET={request:{"elicitation/create":q({method:Q(`elicitation/create`),params:e.ElicitRequestParamsSchema}),"sampling/createMessage":q({method:Q(`sampling/createMessage`),params:e.CreateMessageRequestParamsSchema}),"roots/list":q({method:Q(`roots/list`),params:J({}).optional()})},response:{"elicitation/create":e.ElicitResultSchema,"sampling/createMessage":e.CreateMessageResultSchema,"roots/list":e.ListRootsResultSchema}},ET}function OT(e){return TT.includes(e)}function kT(e){return OT(e)?DT().request[e]:void 0}function AT(e){return OT(e)?DT().response[e]:void 0}var jT={"tools/call":null,"tools/list":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"completion/complete":null,"server/discover":null,"subscriptions/listen":null},MT={"notifications/cancelled":null,"notifications/progress":null,"notifications/message":null,"notifications/resources/updated":null,"notifications/resources/list_changed":null,"notifications/tools/list_changed":null,"notifications/prompts/list_changed":null,"notifications/subscriptions/acknowledged":null};function NT(e){return Object.prototype.hasOwnProperty.call(jT,e)}function PT(e){return Object.prototype.hasOwnProperty.call(MT,e)}function FT(e){return Object.prototype.hasOwnProperty.call(jT,e)}function IT(e){return NT(e)?nT().dispatchRequestSchemas[e]:void 0}function LT(e){return FT(e)?nT().dispatchResultSchemas[e]:void 0}function RT(e){return PT(e)?nT().notificationSchemas2026[e]:void 0}Object.keys(jT),Object.keys(MT);function zT(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function BT(e,t){if(e===void 0)return{ok:!1,reason:`not-in-era`};let n=e.safeParse(t);return n.success?{ok:!0,value:n.data}:{ok:!1,reason:`invalid`,message:String(n.error)}}var VT={ok:!1,reason:`not-in-era`},HT=[qb,Xb];function UT(e,t){let n=t,r=!1,i=()=>(r||=(n={...n},!0),n),a=t.tools;e===`tools/list`&&Array.isArray(a)&&a.some(e=>zT(e)&&`execution`in e)&&(i().tools=a.map(e=>{if(!zT(e)||!(`execution`in e))return e;let t={...e};return delete t.execution,t}));let o=t.capabilities;if(zT(o)&&`tasks`in o){let e={...o};delete e.tasks,i().capabilities=e}return n}var WT={era:`2026-07-28`,hasRequestMethod:NT,hasNotificationMethod:PT,hasInputRequestMethod:e=>kT(e)!==void 0,validateRequest:(e,t)=>BT(IT(e),t),validateResult:(e,t)=>BT(LT(e),t),validateNotification:(e,t)=>BT(RT(e),t),validateInputRequest:(e,t)=>BT(kT(e),t),validateInputResponse:(e,t)=>BT(AT(e),t),samplingResultVariant:()=>VT,outboundEnvelope(e){return{[qb]:e.protocolVersion,[Jb]:e.clientInfo,[Xb]:e.clientCapabilities,...e.logLevel!==void 0&&{"io.modelcontextprotocol/logLevel":e.logLevel}}},validateEnvelopeMeta(e){let t=[];for(let n of HT)n in e||t.push({key:n,problem:`missing`});let n=nT().RequestMetaEnvelopeSchema.safeParse(e);if(!n.success)for(let e of n.error.issues){let n=e.path.map(String),r=n.length>0?n.join(`.`):`_meta`;n.length===1&&t.some(e=>e.key===r&&e.problem===`missing`)||t.push({key:r,problem:e.message})}return t},projectCallToolResult:e=>Ew(e),inputRequestSchema:kT,decodeResult(e,t){if(!zT(t))return{kind:`invalid`,error:new Cw(Sw.InvalidResult,`Invalid result for ${e}: not an object`,{method:e})};let n=t.resultType;if(n===void 0)return{kind:`invalid`,error:new Cw(Sw.InvalidResult,`Invalid result for ${e}: missing required resultType — servers implementing protocol revision 2026-07-28 MUST include it (the absent-means-complete bridge applies only to earlier-revision servers)`,{method:e,violation:`missing-resultType`})};if(typeof n!=`string`)return{kind:`invalid`,error:new Cw(Sw.InvalidResult,`Invalid result for ${e}: non-string resultType`,{method:e,resultType:n})};if(n===`input_required`){let n=t.inputRequests,r=zT(n)?n:{},i=t.requestState,a=t._meta===void 0?void 0:nT().ResultMetaSchema.safeParse(t._meta),o=a?.success?a.data:void 0;return Object.keys(r).length===0&&typeof i!=`string`?{kind:`invalid`,error:new Cw(Sw.InvalidResult,`Invalid result for ${e}: input_required carries neither inputRequests nor requestState (every input_required result must include at least one of the two)`,{method:e,violation:`input-required-missing-both`})}:{kind:`input_required`,inputRequests:r,...typeof i==`string`&&{requestState:i},...o!==void 0&&{_meta:o}}}if(n!==`complete`)return{kind:`invalid`,error:new Cw(Sw.UnsupportedResultType,`Unsupported result type '${n}' for ${e}`,{resultType:n,method:e})};let r=KT(),i=Object.hasOwn(r,e)?r[e]:void 0;if(i!==void 0){let n=i.safeParse(t);if(!n.success)return{kind:`invalid`,error:new Cw(Sw.InvalidResult,`Invalid result for ${e}: ${n.error}`,{method:e})}}let a={...t};return delete a.resultType,{kind:`complete`,result:a}},encodeResult(e,t,n){return xT(yT(e,vT(e,UT(e,t))),n)},encodeErrorCode:e=>e===-32002?-32602:e,checkInboundEnvelope(e){if(e.envelope===void 0)return`Request is missing the required _meta envelope for protocol revision 2026-07-28 (io.modelcontextprotocol/protocolVersion, io.modelcontextprotocol/clientCapabilities)`;let t=nT().RequestMetaEnvelopeSchema.safeParse(e.envelope);if(!t.success)return`Invalid _meta envelope for protocol revision 2026-07-28: ${t.error.issues.map(e=>e.message).join(`; `)}`}},GT;function KT(){if(GT)return GT;let e=nT();return GT={"tools/call":e.CallToolResultSchema,"tools/list":e.ListToolsResultSchema,"prompts/get":e.GetPromptResultSchema,"prompts/list":e.ListPromptsResultSchema,"resources/list":e.ListResourcesResultSchema,"resources/templates/list":e.ListResourceTemplatesResultSchema,"resources/read":e.ReadResourceResultSchema,"completion/complete":e.CompleteResultSchema,"server/discover":e.DiscoverResultSchema},GT}var qT=`2026-07-28`;function JT(e){return e!==void 0&&Tw(e)?WT:$w}function YT(e){return e.revision===void 0?e.era===`modern`?WT.era:$w.era:JT(e.revision).era}function XT(e){return QT.some(t=>t.hasRequestMethod(e))}function ZT(e){return QT.some(t=>t.hasNotificationMethod(e))}var QT=[$w,WT],$T=_d({AnnotationsSchema:()=>Zx,AudioContentSchema:()=>AS,BaseMetadataSchema:()=>Ex,BaseRequestParamsSchema:()=>sx,BlobResourceContentsSchema:()=>Yx,BooleanSchemaSchema:()=>dC,CallToolRequestParamsSchema:()=>GS,CallToolRequestSchema:()=>KS,CallToolResultSchema:()=>US,CancelTaskRequestSchema:()=>ZC,CancelTaskResultSchema:()=>QC,CancelledNotificationParamsSchema:()=>Sx,CancelledNotificationSchema:()=>Cx,ClientCapabilitiesSchema:()=>jx,ClientNotificationSchema:()=>ew,ClientRequestSchema:()=>$C,ClientResultSchema:()=>tw,ClientTasksCapabilitySchema:()=>kx,CompatibilityCallToolResultSchema:()=>WS,CompleteRequestParamsSchema:()=>MC,CompleteRequestSchema:()=>NC,CompleteResultSchema:()=>PC,ContentBlockSchema:()=>PS,CreateMessageRequestParamsSchema:()=>sC,CreateMessageRequestSchema:()=>cC,CreateMessageResultSchema:()=>lC,CreateMessageResultWithToolsSchema:()=>uC,CreateTaskResultSchema:()=>HC,CursorSchema:()=>rx,DiscoverRequestSchema:()=>Lx,DiscoverResultSchema:()=>Rx,ElicitRequestFormParamsSchema:()=>CC,ElicitRequestParamsSchema:()=>TC,ElicitRequestSchema:()=>EC,ElicitRequestURLParamsSchema:()=>wC,ElicitResultSchema:()=>kC,ElicitationCompleteNotificationParamsSchema:()=>DC,ElicitationCompleteNotificationSchema:()=>OC,EmbeddedResourceSchema:()=>MS,EmptyResultSchema:()=>xx,EnumSchemaSchema:()=>xC,GetPromptRequestParamsSchema:()=>ES,GetPromptRequestSchema:()=>DS,GetPromptResultSchema:()=>IS,GetTaskPayloadRequestSchema:()=>qC,GetTaskPayloadResultSchema:()=>JC,GetTaskRequestSchema:()=>GC,GetTaskResultSchema:()=>KC,IconSchema:()=>wx,IconsSchema:()=>Tx,ImageContentSchema:()=>kS,ImplementationSchema:()=>Dx,InitializeRequestParamsSchema:()=>Mx,InitializeRequestSchema:()=>Nx,InitializeResultSchema:()=>Fx,InitializedNotificationSchema:()=>Ix,JSONArraySchema:()=>tx,JSONObjectSchema:()=>ex,JSONRPCErrorResponseSchema:()=>vx,JSONRPCMessageSchema:()=>yx,JSONRPCNotificationSchema:()=>gx,JSONRPCRequestSchema:()=>hx,JSONRPCResponseSchema:()=>bx,JSONRPCResultResponseSchema:()=>_x,JSONValueSchema:()=>$b,LegacyTitledEnumSchemaSchema:()=>gC,ListChangedOptionsBaseSchema:()=>JS,ListPromptsRequestSchema:()=>wS,ListPromptsResultSchema:()=>TS,ListResourceTemplatesRequestSchema:()=>nS,ListResourceTemplatesResultSchema:()=>rS,ListResourcesRequestSchema:()=>eS,ListResourcesResultSchema:()=>tS,ListRootsRequestSchema:()=>IC,ListRootsResultSchema:()=>LC,ListTasksRequestSchema:()=>YC,ListTasksResultSchema:()=>XC,ListToolsRequestSchema:()=>VS,ListToolsResultSchema:()=>HS,LoggingLevelSchema:()=>YS,LoggingMessageNotificationParamsSchema:()=>QS,LoggingMessageNotificationSchema:()=>$S,ModelHintSchema:()=>eC,ModelPreferencesSchema:()=>tC,MultiSelectEnumSchemaSchema:()=>bC,NotificationSchema:()=>dx,NotificationsParamsSchema:()=>ux,NumberSchemaSchema:()=>pC,PaginatedRequestParamsSchema:()=>Ux,PaginatedRequestSchema:()=>Wx,PaginatedResultSchema:()=>Gx,PingRequestSchema:()=>zx,PrimitiveSchemaDefinitionSchema:()=>SC,ProgressNotificationParamsSchema:()=>Vx,ProgressNotificationSchema:()=>Hx,ProgressSchema:()=>Bx,ProgressTokenSchema:()=>nx,PromptArgumentSchema:()=>SS,PromptListChangedNotificationSchema:()=>LS,PromptMessageSchema:()=>FS,PromptReferenceSchema:()=>jC,PromptSchema:()=>CS,ReadResourceRequestParamsSchema:()=>aS,ReadResourceRequestSchema:()=>oS,ReadResourceResultSchema:()=>sS,RelatedTaskMetadataSchema:()=>ax,RequestIdSchema:()=>mx,RequestMetaSchema:()=>ox,RequestSchema:()=>lx,ResourceContentsSchema:()=>Kx,ResourceLinkSchema:()=>NS,ResourceListChangedNotificationSchema:()=>cS,ResourceRequestParamsSchema:()=>iS,ResourceSchema:()=>Qx,ResourceTemplateReferenceSchema:()=>AC,ResourceTemplateSchema:()=>$x,ResourceUpdatedNotificationParamsSchema:()=>bS,ResourceUpdatedNotificationSchema:()=>xS,ResultMetaObjectSchema:()=>fx,ResultSchema:()=>px,RoleSchema:()=>Xx,RootSchema:()=>FC,RootsListChangedNotificationSchema:()=>RC,SamplingContentSchema:()=>iC,SamplingMessageContentBlockSchema:()=>aC,SamplingMessageSchema:()=>oC,ServerCapabilitiesSchema:()=>Px,ServerNotificationSchema:()=>rw,ServerRequestSchema:()=>nw,ServerResultSchema:()=>iw,ServerTasksCapabilitySchema:()=>Ax,SetLevelRequestParamsSchema:()=>XS,SetLevelRequestSchema:()=>ZS,SingleSelectEnumSchemaSchema:()=>_C,StringSchemaSchema:()=>fC,SubscribeRequestParamsSchema:()=>lS,SubscribeRequestSchema:()=>uS,SubscriptionFilterSchema:()=>pS,SubscriptionsAcknowledgedNotificationParamsSchema:()=>gS,SubscriptionsAcknowledgedNotificationSchema:()=>_S,SubscriptionsListenRequestParamsSchema:()=>mS,SubscriptionsListenRequestSchema:()=>hS,SubscriptionsListenResultMetaSchema:()=>vS,SubscriptionsListenResultSchema:()=>yS,TaskAugmentedRequestParamsSchema:()=>cx,TaskCreationParamsSchema:()=>zC,TaskMetadataSchema:()=>ix,TaskSchema:()=>VC,TaskStatusNotificationParamsSchema:()=>UC,TaskStatusNotificationSchema:()=>WC,TaskStatusSchema:()=>BC,TextContentSchema:()=>OS,TextResourceContentsSchema:()=>qx,TitledMultiSelectEnumSchemaSchema:()=>yC,TitledSingleSelectEnumSchemaSchema:()=>hC,ToolAnnotationsSchema:()=>RS,ToolChoiceSchema:()=>nC,ToolExecutionSchema:()=>zS,ToolListChangedNotificationSchema:()=>qS,ToolResultContentSchema:()=>rC,ToolSchema:()=>BS,ToolUseContentSchema:()=>jS,UnsubscribeRequestParamsSchema:()=>dS,UnsubscribeRequestSchema:()=>fS,UntitledMultiSelectEnumSchemaSchema:()=>vC,UntitledSingleSelectEnumSchemaSchema:()=>mC}),eE=e=>hx.safeParse(e).success,tE=e=>gx.safeParse(e).success,nE=e=>_x.safeParse(e).success,rE=e=>vx.safeParse(e).success;lT.InvalidRequest,lT.UnsupportedProtocolVersion,lT.InvalidParams,lT.MethodNotFound,lT.InvalidParams,lT.MissingRequiredClientCapability,lT.ParseError,lT.InvalidRequest,lT.MethodNotFound,lT.UnsupportedProtocolVersion,lT.MissingRequiredClientCapability;function iE(e,t){return iy(e,t)}function aE(e){return new Set(e.flatMap(e=>Object.keys(e.shape)))}function oE(e){if(e==null)return!1;let t=typeof e;return t!==`object`&&t!==`function`||!(`~standard`in e)?!1:typeof e[`~standard`]?.validate==`function`}var sE=!1,cE=`draft-2020-12`;function lE(e,t=`input`){let n=e[`~standard`],r;if(n.jsonSchema)r=n.jsonSchema[t]({target:cE});else if(n.vendor===`zod`){if(!(`_zod`in e))throw Error(`Schema appears to be from zod 3, which the SDK cannot convert to JSON Schema. Upgrade to zod >=4.2.0, or wrap your JSON Schema with fromJsonSchema().`);sE||(sE=!0,console.warn("[mcp-sdk] Your zod version does not implement `~standard.jsonSchema` (added in zod 4.2.0). Falling back to z.toJSONSchema(). Upgrade to zod >=4.2.0 to silence this warning.")),r=Qv(e,{target:cE,io:t})}else throw Error(`Schema library "${n.vendor}" does not implement StandardJSONSchemaV1 (\`~standard.jsonSchema\`). Upgrade to a version that does, or wrap your JSON Schema with fromJsonSchema().`);if(t===`output`)return r.type===void 0&&uE(r)?{type:`object`,...r}:r;if(r.type!==void 0&&r.type!==`object`)throw Error(`MCP tool and prompt schemas must describe objects (got type: ${JSON.stringify(r.type)}). Wrap your schema in z.object({...}) or equivalent.`);return{type:`object`,...r}}function uE(e){if(`properties`in e||`patternProperties`in e||`additionalProperties`in e||`required`in e)return!0;for(let t of[`oneOf`,`anyOf`,`allOf`]){let n=e[t];if(Array.isArray(n)&&n.length>0)return n.every(e=>typeof e==`object`&&!!e&&(e.type===`object`||uE(e)))}return!1}function dE(e){return e.path?.length?`${e.path.map(e=>String(typeof e==`object`?e.key:e)).join(`.`)}: ${e.message}`:e.message}async function fE(e,t){let n=await e[`~standard`].validate(t);return n.issues&&n.issues.length>0?{success:!1,error:n.issues.map(e=>dE(e)).join(`, `)}:{success:!0,data:n.value}}function pE(e){let t=Qv(e,{target:cE,io:`input`});return typeof t.pattern==`string`?t.pattern:void 0}var mE=/\\\.\\d\{(\d+)\}/;function hE(e){let t=mE.exec(e),n=[void 0,-1,0];return t&&n.push(Number(t[1])),[!1,!0].flatMap(e=>[!1,!0].flatMap(t=>n.map(n=>Hb({local:e,offset:t,precision:n}))))}function gE(e,t){let n;switch(e){case`email`:n=[Ty()];break;case`uri`:n=[ky()];break;case`date`:n=[Ub()];break;case`date-time`:n=hE(t)}return new Set(n.map(e=>pE(e)).filter(e=>e!==void 0))}function _E(e,t,n){return n!==`zod`||gE(e,t).has(t)}function vE(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function yE(e){try{return lE(e,`input`)}catch(e){let t=e instanceof Error?e.message:String(e);throw new uT(lT.InvalidParams,`Elicitation requestedSchema must describe an object with flat primitive properties: ${t}`)}}var bE=new Set([`$comment`,`deprecated`,`description`,`examples`,`readOnly`,`title`,`writeOnly`]);function xE(e){return bE.has(e)||e.startsWith(`x-`)}var SE=new Set([`$schema`,...Object.keys(CC.shape.requestedSchema.shape)]),CE={string:aE([fC,mC,hC,gC]),number:aE([pC]),integer:aE([pC]),boolean:aE([dC]),array:aE([vC,yC])},wE=new Set(fC.shape.format.unwrap().options);function TE(e,t,n,r){if(!vE(e))return e;let i=typeof e.type==`string`&&Object.hasOwn(CE,e.type)?CE[e.type]:void 0;if(i===void 0)return e;let a={};for(let[o,s]of Object.entries(e))i.has(o)||xE(o)?a[o]=s:o===`pattern`&&e.type===`string`&&typeof e.format==`string`?wE.has(e.format)?(typeof s!=`string`||!_E(e.format,s,n))&&r.push(`${t}.${o}`):a[o]=s:r.push(`${t}.${o}`);return a}function EE(e,t){let n={},r=[];for(let[i,a]of Object.entries(e))i===`properties`&&vE(a)?n[i]=Object.fromEntries(Object.entries(a).map(([e,n])=>[e,TE(n,`properties.${e}`,t,r)])):SE.has(i)?n[i]=a:xE(i)||r.push(i);if(r.length>0)throw new uT(lT.InvalidParams,`Elicitation requestedSchema contains unsupported JSON Schema constraint(s) after Standard Schema conversion: ${r.join(`, `)}`);return n}function DE(e,t){if(!vE(e.properties))return t;let n=Object.entries(e.properties).filter(([,e])=>!iE(SC,e).success).map(([e])=>`properties.${e}`);return n.length>0?n.join(`, `):t}function OE(e,t,n=``){return Array.isArray(e)&&Array.isArray(t)?e.flatMap((e,r)=>OE(e,t[r],`${n}[${r}]`)):!vE(e)||!vE(t)?[]:Object.entries(e).flatMap(([e,r])=>{let i=n?`${n}.${e}`:e;return Object.prototype.hasOwnProperty.call(t,e)?OE(r,t[e],i):xE(e)?[]:[i]})}function kE(e){if(!oE(e.requestedSchema))return{...e,mode:`form`,requestedSchema:e.requestedSchema};let t=e.requestedSchema[`~standard`].vendor,n=EE(yE(e.requestedSchema),t),r=iE(CC.shape.requestedSchema,n);if(!r.success)throw new uT(lT.InvalidParams,`Elicitation requestedSchema only supports flat primitive properties (string, number, integer, boolean, and string enums): ${DE(n,r.error.message)}`);let i=OE(n,r.data);if(i.length>0)throw new uT(lT.InvalidParams,`Elicitation requestedSchema contains unsupported JSON Schema constraint(s) after Standard Schema conversion: ${i.join(`, `)}`);let a=(r.data.required??[]).filter(e=>!Object.prototype.hasOwnProperty.call(r.data.properties,e));if(a.length>0)throw new uT(lT.InvalidParams,`Elicitation requestedSchema lists required properties that are not defined in properties: ${a.join(`, `)}`);return{...e,mode:`form`,requestedSchema:r.data}}function AE(e){let t=e.inputRequests!==void 0&&Object.keys(e.inputRequests).length>0,n=typeof e.requestState==`string`;if(!t&&!n)throw TypeError(`inputRequired() requires at least one of inputRequests (with at least one entry) or requestState (spec: every InputRequiredResult MUST include at least one of the two)`);return{resultType:`input_required`,...e.inputRequests!==void 0&&{inputRequests:e.inputRequests},...e.requestState!==void 0&&{requestState:e.requestState}}}Object.assign(AE,{elicit(e){try{return{method:`elicitation/create`,params:kE(e)}}catch(e){throw e instanceof uT?TypeError(e.message,{cause:e}):e}},elicitUrl(e){return{method:`elicitation/create`,params:{...e,mode:`url`}}},createMessage(e){return{method:`sampling/createMessage`,params:e}},listRoots(){return{method:`roots/list`}}});var jE=`AnnotationsSchema.AudioContentSchema.BaseMetadataSchema.BlobResourceContentsSchema.BooleanSchemaSchema.CallToolRequestSchema.CallToolRequestParamsSchema.CallToolResultSchema.CancelledNotificationSchema.CancelledNotificationParamsSchema.CancelTaskRequestSchema.CancelTaskResultSchema.ClientCapabilitiesSchema.ClientNotificationSchema.ClientRequestSchema.ClientResultSchema.CompatibilityCallToolResultSchema.CompleteRequestSchema.CompleteRequestParamsSchema.CompleteResultSchema.ContentBlockSchema.CreateMessageRequestSchema.CreateMessageRequestParamsSchema.CreateMessageResultSchema.CreateMessageResultWithToolsSchema.CreateTaskResultSchema.CursorSchema.DiscoverRequestSchema.DiscoverResultSchema.ElicitationCompleteNotificationSchema.ElicitationCompleteNotificationParamsSchema.ElicitRequestSchema.ElicitRequestFormParamsSchema.ElicitRequestParamsSchema.ElicitRequestURLParamsSchema.ElicitResultSchema.EmbeddedResourceSchema.EmptyResultSchema.EnumSchemaSchema.GetPromptRequestSchema.GetPromptRequestParamsSchema.GetPromptResultSchema.GetTaskPayloadRequestSchema.GetTaskPayloadResultSchema.GetTaskRequestSchema.GetTaskResultSchema.IconSchema.IconsSchema.ImageContentSchema.ImplementationSchema.InitializedNotificationSchema.InitializeRequestSchema.InitializeRequestParamsSchema.InitializeResultSchema.JSONArraySchema.JSONObjectSchema.JSONRPCErrorResponseSchema.JSONRPCMessageSchema.JSONRPCNotificationSchema.JSONRPCRequestSchema.JSONRPCResponseSchema.JSONRPCResultResponseSchema.JSONValueSchema.LegacyTitledEnumSchemaSchema.ListPromptsRequestSchema.ListPromptsResultSchema.ListResourcesRequestSchema.ListResourcesResultSchema.ListResourceTemplatesRequestSchema.ListResourceTemplatesResultSchema.ListRootsRequestSchema.ListRootsResultSchema.ListTasksRequestSchema.ListTasksResultSchema.ListToolsRequestSchema.ListToolsResultSchema.LoggingLevelSchema.LoggingMessageNotificationSchema.LoggingMessageNotificationParamsSchema.ModelHintSchema.ModelPreferencesSchema.MultiSelectEnumSchemaSchema.NotificationSchema.NumberSchemaSchema.PaginatedRequestSchema.PaginatedRequestParamsSchema.PaginatedResultSchema.PingRequestSchema.PrimitiveSchemaDefinitionSchema.ProgressSchema.ProgressNotificationSchema.ProgressNotificationParamsSchema.ProgressTokenSchema.PromptSchema.PromptArgumentSchema.PromptListChangedNotificationSchema.PromptMessageSchema.PromptReferenceSchema.ReadResourceRequestSchema.ReadResourceRequestParamsSchema.ReadResourceResultSchema.RelatedTaskMetadataSchema.RequestSchema.RequestIdSchema.RequestMetaSchema.ResourceSchema.ResourceContentsSchema.ResourceLinkSchema.ResourceListChangedNotificationSchema.ResourceRequestParamsSchema.ResourceTemplateSchema.ResourceTemplateReferenceSchema.ResourceUpdatedNotificationSchema.ResourceUpdatedNotificationParamsSchema.ResultMetaObjectSchema.ResultSchema.RoleSchema.RootSchema.RootsListChangedNotificationSchema.SamplingContentSchema.SamplingMessageSchema.SamplingMessageContentBlockSchema.ServerCapabilitiesSchema.ServerNotificationSchema.ServerRequestSchema.ServerResultSchema.SetLevelRequestSchema.SetLevelRequestParamsSchema.SingleSelectEnumSchemaSchema.StringSchemaSchema.SubscribeRequestSchema.SubscribeRequestParamsSchema.SubscriptionFilterSchema.SubscriptionsAcknowledgedNotificationSchema.SubscriptionsAcknowledgedNotificationParamsSchema.SubscriptionsListenRequestSchema.SubscriptionsListenRequestParamsSchema.SubscriptionsListenResultSchema.SubscriptionsListenResultMetaSchema.TaskAugmentedRequestParamsSchema.TaskCreationParamsSchema.TaskMetadataSchema.TaskSchema.TaskStatusSchema.TaskStatusNotificationSchema.TaskStatusNotificationParamsSchema.TextContentSchema.TextResourceContentsSchema.TitledMultiSelectEnumSchemaSchema.TitledSingleSelectEnumSchemaSchema.ToolSchema.ToolAnnotationsSchema.ToolChoiceSchema.ToolExecutionSchema.ToolListChangedNotificationSchema.ToolResultContentSchema.ToolUseContentSchema.UnsubscribeRequestSchema.UnsubscribeRequestParamsSchema.UntitledMultiSelectEnumSchemaSchema.UntitledSingleSelectEnumSchemaSchema`.split(`.`),ME={IdJagTokenExchangeResponseSchema:dw,OAuthClientInformationFullSchema:gw,OAuthClientInformationSchema:hw,OAuthClientMetadataSchema:mw,OAuthClientRegistrationErrorSchema:_w,OAuthErrorResponseSchema:fw,OAuthMetadataSchema:sw,OAuthProtectedResourceMetadataSchema:ow,OAuthTokenRevocationRequestSchema:vw,OAuthTokensSchema:uw,OpenIdProviderDiscoveryMetadataSchema:lw,OpenIdProviderMetadataSchema:cw},NE={},PE={};function FE(e,t){let n=e.slice(0,-6);NE[n]=t,PE[n]=e=>t.safeParse(e).success}for(let e of jE)FE(e,$T[e]);for(let[e,t]of Object.entries(ME))FE(e,t);Object.freeze(NE),Object.freeze(PE);function IE(e){switch(e){case`initialize`:case`notifications/initialized`:return JT(void 0);case`server/discover`:return JT(qT);default:return}}var LE=[qb,Jb,Xb,Qb],RE=[`inputResponses`,`requestState`];function zE(e,t){let n=e.params;if(!WE(n))return{message:e,lifted:{}};let r=n._meta,i=WE(r)?LE.filter(e=>e in r):[],a=t===`request`?RE.filter(e=>e in n):[];if(i.length===0&&a.length===0)return{message:e,lifted:{}};let o={},s={...n};if(i.length>0&&WE(r)){let e={},t={...r};for(let n of i)e[n]=r[n],delete t[n];o.envelope=e,Object.keys(t).length>0?s._meta=t:delete s._meta}for(let e of a)e===`inputResponses`&&(o.inputResponses=s[e]),e===`requestState`&&(o.requestState=s[e]),delete s[e];return{message:{...e,params:s},lifted:o}}function BE(e,t){let n=e.validateResult(t,void 0);if(n.ok||n.reason!==`not-in-era`)return{"~standard":{version:1,vendor:`mcp-wire-codec`,validate(n){let r=e.validateResult(t,n);return r.ok?{value:r.value}:{issues:[{message:r.reason===`invalid`?r.message:`not-in-era: ${t}`}]}}}}}function VE(e){return()=>e}var HE=VE(void 0),UE=class{_transport;_requestMessageId=0;_requestHandlers=new Map;_requestHandlerAbortControllers=new Map;_notificationHandlers=new Map;_responseHandlers=new Map;_progressHandlers=new Map;_timeoutInfo=new Map;_pendingDebouncedNotifications=new Set;_negotiatedProtocolVersion;_supportedProtocolVersions;onclose;onerror;fallbackRequestHandler;fallbackNotificationHandler;constructor(e){this._options=e,this._supportedProtocolVersions=e?.supportedProtocolVersions??Gb,this.setNotificationHandler(`notifications/cancelled`,e=>{this._oncancel(e)}),this.setNotificationHandler(`notifications/progress`,e=>{this._onprogress(e)}),this.setRequestHandler(`ping`,e=>({}))}_shouldDropInbound(e){}_outboundMetaEnvelope(){}_envelopeOutbound(e){let t=this._outboundMetaEnvelope();if(t===void 0)return e;let n=e.params??{};return{...e,params:{...n,_meta:{...t,...n._meta}}}}_resolveNonCompleteResult(e,t){return Promise.reject(new Cw(Sw.UnsupportedResultType,`Unsupported result type '${e.kind}' for ${t.request.method}`,{resultType:e.kind,method:t.request.method}))}_getRequestHandler(e){return this._requestHandlers.get(e)}async _oncancel(e){e.params.requestId!==void 0&&this._requestHandlerAbortControllers.get(e.params.requestId)?.abort(e.params.reason)}_setupTimeout(e,t,n,r,i=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(r,t),startTime:Date.now(),timeout:t,maxTotalTimeout:n,resetTimeoutOnProgress:i,onTimeout:r})}_resetTimeout(e){let t=this._timeoutInfo.get(e);if(!t)return!1;let n=Date.now()-t.startTime;if(t.maxTotalTimeout&&n>=t.maxTotalTimeout)throw this._timeoutInfo.delete(e),new Cw(Sw.RequestTimeout,`Maximum total timeout exceeded`,{maxTotalTimeout:t.maxTotalTimeout,totalElapsed:n});return clearTimeout(t.timeoutId),t.timeoutId=setTimeout(t.onTimeout,t.timeout),!0}_cleanupTimeout(e){let t=this._timeoutInfo.get(e);t&&(clearTimeout(t.timeoutId),this._timeoutInfo.delete(e))}async connect(e){this._transport=e;let t=this.transport?.onclose;this._transport.onclose=()=>{try{t?.()}finally{this._onclose()}};let n=this.transport?.onerror;this._transport.onerror=e=>{n?.(e),this._onerror(e)};let r=this._transport?.onmessage;this._transport.onmessage=(e,t)=>{r?.(e,t),nE(e)||rE(e)?this._onresponse(e):eE(e)?this._onrequest(e,t):tE(e)?this._onnotification(e,t):this._onerror(Error(`Unknown message type: ${JSON.stringify(e)}`))},e.setSupportedProtocolVersions?.(this._supportedProtocolVersions),await this._transport.start()}_onclose(){let e=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._pendingDebouncedNotifications.clear();for(let e of this._timeoutInfo.values())clearTimeout(e.timeoutId);this._timeoutInfo.clear();let t=this._requestHandlerAbortControllers;this._requestHandlerAbortControllers=new Map;let n=new Cw(Sw.ConnectionClosed,`Connection closed`);this._transport=void 0;try{this.onclose?.()}finally{for(let t of e.values())t(n);for(let e of t.values())e.abort(n)}}_onerror(e){this.onerror?.(e)}_onnotification(e,t){let{message:n}=zE(e,`notification`),r=this._negotiatedWireCodec();if(t?.classification===void 0&&this._shouldDropInbound(e)===`drop`)return;if(t?.classification!==void 0){let e=YT(t.classification);if(e!==r.era){this._onerror(Error(`Era mismatch on inbound notification '${n.method}': classified as ${e} but this instance serves ${r.era}`));return}}if(ZT(n.method)&&!r.hasNotificationMethod(n.method))return;let i=this._notificationHandlers.get(n.method),a=this.fallbackNotificationHandler;(i!==void 0||a!==void 0)&&Promise.resolve().then(()=>i===void 0?a(n):i(n,r)).catch(e=>this._onerror(Error(`Uncaught error in notification handler: ${e}`)))}_onrequest(e,t){let{message:n,lifted:r}=zE(e,`request`),i=this._negotiatedWireCodec();if(t?.classification===void 0&&this._shouldDropInbound(e)===`drop`){this._onerror(Error(`Dropped inbound request '${e.method}': not servable on this connection's protocol era`));return}let a=this._transport,o=(e,t,r)=>{let i={jsonrpc:`2.0`,id:n.id,error:{code:e,message:t,...r!==void 0&&{data:r}}};a?.send(i).catch(e=>this._onerror(Error(`Failed to send an error response: ${e}`)))};if(t?.classification!==void 0){let e=YT(t.classification);if(e!==i.era){this._onerror(Error(`Era mismatch on inbound request '${n.method}': classified as ${e} but this instance serves ${i.era}`));let r=t.classification.revision??e;o(lT.UnsupportedProtocolVersion,`Unsupported protocol version: ${r}`,{supported:this._supportedProtocolVersions,requested:r});return}}if(XT(n.method)&&!i.hasRequestMethod(n.method)){o(lT.MethodNotFound,`Method not found`);return}let s=this._requestHandlers.get(n.method)??this.fallbackRequestHandler;if(s===void 0){o(lT.MethodNotFound,`Method not found`);return}let c=i.checkInboundEnvelope(r);if(c!==void 0){o(lT.InvalidParams,c);return}let l=(e,t)=>this._notificationViaCodec(this._resolveOutboundCodec(e.method),e,{...t,relatedRequestId:n.id}),u=(e,t,r)=>this._requestWithSchemaViaCodec(this._resolveOutboundCodec(e.method),e,t,{...r,relatedRequestId:n.id}),d=new AbortController;this._requestHandlerAbortControllers.set(n.id,d);let f=r.inputResponses===void 0?void 0:KE(r.inputResponses),p={sessionId:a?.sessionId,mcpReq:{id:n.id,method:n.method,_meta:n.params?._meta,...r.envelope!==void 0&&{envelope:r.envelope},...f!==void 0&&{inputResponses:f.accepted},...f!==void 0&&f.droppedKeys.length>0&&{droppedInputResponseKeys:f.droppedKeys},requestState:r.requestState===void 0?HE:VE(r.requestState),signal:d.signal,send:((e,t,n)=>{let r=this._resolveOutboundCodec(e.method);if(this._assertOutboundRequestInEra(r,e.method),oE(t))return u(e,t,n);let i=BE(r,e.method);if(i===void 0)throw TypeError(`'${e.method}' is not a spec method; pass a result schema as the second argument to ctx.mcpReq.send().`);return u(e,i,t)}),notify:l},http:t?.authInfo?{authInfo:t.authInfo}:void 0},m=this.buildContext(p,t);Promise.resolve().then(()=>s(n,m)).then(async e=>{if(d.signal.aborted)return;let t;try{t=i.encodeResult(n.method,e,this._outboundServerInfo())}catch(e){this._onerror(Error(`Failed to encode result for ${n.method}: ${e}`)),o(lT.InternalError,`Internal error`);return}let r={result:t,jsonrpc:`2.0`,id:n.id};await a?.send(r)},async e=>{if(d.signal.aborted)return;let t=Number.isSafeInteger(e.code)?e.code:lT.InternalError,r={jsonrpc:`2.0`,id:n.id,error:{code:i.encodeErrorCode(t),message:e.message??`Internal error`,...e.data!==void 0&&{data:e.data}}};await a?.send(r)}).catch(e=>this._onerror(Error(`Failed to send response: ${e}`))).finally(()=>{this._requestHandlerAbortControllers.get(n.id)===d&&this._requestHandlerAbortControllers.delete(n.id)})}_onprogress(e){let{progressToken:t,...n}=e.params,r=Number(t),i=this._progressHandlers.get(r);if(!i){this._onerror(Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let a=this._responseHandlers.get(r),o=this._timeoutInfo.get(r);if(o&&a&&o.resetTimeoutOnProgress)try{this._resetTimeout(r)}catch(e){this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),a(e);return}i(n)}_onresponse(e){let t=Number(e.id),n=this._responseHandlers.get(t);if(n===void 0){this._onerror(Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}this._responseHandlers.delete(t),this._cleanupTimeout(t),this._progressHandlers.delete(t),nE(e)?n(e):n(uT.fromError(e.error.code,e.error.message,e.error.data))}get transport(){return this._transport}async close(){await this._transport?.close()}request(e,t,n){let r=this._resolveOutboundCodec(e.method);if(this._assertOutboundRequestInEra(r,e.method),oE(t))return this._requestWithSchemaViaCodec(r,e,t,n);let i=BE(r,e.method);if(i===void 0)throw TypeError(`'${e.method}' is not a spec method; pass a result schema as the second argument to request().`);return this._requestWithSchemaViaCodec(r,e,i,t)}_negotiatedWireCodec(){return JT(this._negotiatedProtocolVersion)}_wireCodec(){return this._negotiatedWireCodec()}_resolveOutboundCodec(e){if(this._negotiatedProtocolVersion===void 0){let t=IE(e);if(t)return t}return this._negotiatedWireCodec()}_assertOutboundRequestInEra(e,t){if(XT(t)&&!e.hasRequestMethod(t))throw new Cw(Sw.MethodNotSupportedByProtocolVersion,`Method '${t}' is not supported by the negotiated protocol version (wire era ${e.era})`,{method:t,era:e.era})}_requestWithSchema(e,t,n){let r=this._resolveOutboundCodec(e.method);return this._assertOutboundRequestInEra(r,e.method),this._requestWithSchemaViaCodec(r,e,t,n)}_requestWithSchemaViaCodec(e,t,n,r){let{relatedRequestId:i,resumptionToken:a,onresumptiontoken:o,headers:s}=r??{},c=Date.now(),l,u;return new Promise((d,f)=>{let p=e=>{f(e)};if(!this._transport){p(Error(`Not connected`));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(t.method)}catch(e){p(e);return}if(r?.signal?.aborted){let e=r.signal.reason;throw e instanceof Cw?e:new Cw(Sw.RequestTimeout,String(e))}let m=e.era===`2026-07-28`&&this._transport.hasPerRequestStream===!0?new AbortController:void 0,h=this._requestMessageId++;u=h;let g={...t,jsonrpc:`2.0`,id:h};r?.onprogress&&(this._progressHandlers.set(h,r.onprogress),g.params={...t.params,_meta:{...t.params?._meta,progressToken:h}});let _=this._envelopeOutbound(g),v=!1,y=e=>{v||(this._progressHandlers.delete(h),m===void 0?t.method!==`initialize`&&this._transport?.send(this._envelopeOutbound({jsonrpc:`2.0`,method:`notifications/cancelled`,params:{requestId:h,reason:String(e)}}),{relatedRequestId:i,resumptionToken:a,onresumptiontoken:o}).catch(e=>this._onerror(Error(`Failed to send cancellation: ${e}`))):m.abort(),f(e instanceof Cw?e:new Cw(Sw.RequestTimeout,String(e))))};this._responseHandlers.set(h,i=>{if(r?.signal?.aborted)return;if(v=!0,i instanceof Error)return f(i);let a;try{a=e.decodeResult(t.method,i.result)}catch(e){return f(e instanceof Error?e:Error(String(e)))}if(a.kind===`invalid`)return f(a.error);if(a.kind===`input_required`){if(r?.allowInputRequired===!0)return d(qE(a));let i={codec:e,request:t,resultSchema:n,options:r,flowStartedAt:c,retry:(r,i)=>this._requestWithSchemaViaCodec(e,r===void 0?{method:t.method}:{method:t.method,params:r},n,i)};return d(this._resolveNonCompleteResult(a,i))}let o=a.result;fE(n,o).then(e=>{e.success?d(e.data):f(new Cw(Sw.InvalidResult,`Invalid result for ${t.method}: ${e.error}`))},f)}),l=()=>y(r?.signal?.reason),r?.signal?.addEventListener(`abort`,l,{once:!0});let b=r?.timeout??6e4;this._setupTimeout(h,b,r?.maxTotalTimeout,()=>y(new Cw(Sw.RequestTimeout,`Request timed out`,{timeout:b})),r?.resetTimeoutOnProgress??!1),this._transport.send(_,{relatedRequestId:i,resumptionToken:a,onresumptiontoken:o,headers:s,requestSignal:m?.signal}).catch(e=>{this._progressHandlers.delete(h),f(e)})}).finally(()=>{l&&r?.signal?.removeEventListener(`abort`,l),u!==void 0&&(this._responseHandlers.delete(u),this._cleanupTimeout(u))})}async notification(e,t){return await this._notificationViaCodec(this._resolveOutboundCodec(e.method),e,t)}async _notificationViaCodec(e,t,n){if(!this._transport)throw new Cw(Sw.NotConnected,`Not connected`);if(ZT(t.method)&&!e.hasNotificationMethod(t.method))throw new Cw(Sw.MethodNotSupportedByProtocolVersion,`Notification '${t.method}' is not supported by the negotiated protocol version (wire era ${e.era})`,{method:t.method,era:e.era});this.assertNotificationCapability(t.method);let r=this._envelopeOutbound({jsonrpc:`2.0`,...t});if((this._options?.debouncedNotificationMethods??[]).includes(t.method)&&!t.params&&n?.relatedRequestId===void 0){if(this._pendingDebouncedNotifications.has(t.method))return;this._pendingDebouncedNotifications.add(t.method),Promise.resolve().then(()=>{this._pendingDebouncedNotifications.delete(t.method),this._transport&&this._transport?.send(r,n).catch(e=>this._onerror(e))});return}await this._transport.send(r,n)}setRequestHandler(e,t,n){this.assertRequestHandlerCapability(e);let r;if(typeof t==`function`){if(!XT(e))throw TypeError(`'${e}' is not a spec request method; pass schemas as the second argument to setRequestHandler().`);r=(n,r)=>{let i=this._negotiatedWireCodec(),a=i.validateRequest(e,n);if(!a.ok&&a.reason===`not-in-era`&&(a=i.validateInputRequest(e,n)),!a.ok)throw a.reason===`not-in-era`?new uT(lT.InternalError,`No wire schema for ${e} in the resolved era`):Error(a.message);return Promise.resolve(t(a.value,r))}}else if(n)r=async(r,i)=>{let a=await fE(t.params,{...r.params});if(!a.success)throw new uT(lT.InvalidParams,`Invalid params for ${e}: ${a.error}`);return n(a.data,i)};else throw TypeError(`setRequestHandler: handler is required`);this._requestHandlers.set(e,this._wrapHandler(e,r))}_wrapHandler(e,t){return t}_outboundServerInfo(){}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,t,n){if(typeof t==`function`){if(!ZT(e))throw TypeError(`'${e}' is not a spec notification method; pass schemas as the second argument to setNotificationHandler().`);this._notificationHandlers.set(e,(n,r)=>{let i=r.validateNotification(e,n);if(!i.ok)throw i.reason===`not-in-era`?new uT(lT.InternalError,`No wire schema for ${e} in the resolved era`):Error(i.message);return Promise.resolve(t(i.value))});return}if(!n)throw TypeError(`setNotificationHandler: handler is required`);this._notificationHandlers.set(e,async r=>{let i=await fE(t.params,{...r.params});if(!i.success)throw new uT(lT.InvalidParams,`Invalid params for notification ${e}: ${i.error}`);await n(i.data,r)})}removeNotificationHandler(e){this._notificationHandlers.delete(e)}};function WE(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function GE(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function KE(e){let t={},n=[];if(!GE(e))return{accepted:t,droppedKeys:n};for(let[r,i]of Object.entries(e)){if(!GE(i)||`method`in i||`result`in i){n.push(r);continue}t[r]=i}return{accepted:t,droppedKeys:n}}function qE(e){return{resultType:`input_required`,inputRequests:e.inputRequests,...e.requestState!==void 0&&{requestState:e.requestState},...e._meta!==void 0&&{_meta:e._meta}}}gd((e=>{var t=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,n=/\\([\u000b\u0020-\u00ff])/g,r=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;e.parse=i;function i(e){if(!e)throw TypeError(`argument string is required`);var i=typeof e==`object`?a(e):e;if(typeof i!=`string`)throw TypeError(`argument string is required to be a string`);var s=i.indexOf(`;`),c=s===-1?i.trim():i.slice(0,s).trim();if(!r.test(c))throw TypeError(`invalid media type`);var l=new o(c.toLowerCase());if(s!==-1){var u,d,f;for(t.lastIndex=s;d=t.exec(i);){if(d.index!==s)throw TypeError(`invalid parameter format`);s+=d[0].length,u=d[1].toLowerCase(),f=d[2],f.charCodeAt(0)===34&&(f=f.slice(1,-1),f.indexOf(`\\`)!==-1&&(f=f.replace(n,`$1`))),l.parameters[u]=f}if(s!==i.length)throw TypeError(`invalid parameter format`)}return l}function a(e){var t;if(typeof e.getHeader==`function`?t=e.getHeader(`content-type`):typeof e.headers==`object`&&(t=e.headers&&e.headers[`content-type`]),typeof t!=`string`)throw TypeError(`content-type header is missing from object`);return t}function o(e){this.parameters=Object.create(null),this.type=e}}))(),typeof self<`u`&&self.location&&self.location.origin!==`null`?new URL(self.location.origin+self.location.pathname+location.search):new URL(`https://github.com/cfworker`);var JE=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,YE=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,XE=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,ZE=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,QE=/^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,$E=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,eD=/^(?:\/(?:[^~/]|~0|~1)*)*$/,tD=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,nD=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,rD=/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,iD=/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i;function aD(e){return e.test.bind(e)}oD.bind(void 0,!1),aD(XE),aD(ZE),aD(QE),aD(YE),aD(rD),aD(iD),aD($E),aD(eD),aD(tD),aD(nD);function oD(e,t){let n=t.match(JE);if(!n)return!1;let r=+n[1],i=+n[2],a=+n[3],o=!!n[5];return(r<=23&&i<=59&&a<=59||r==23&&i==59&&a==60)&&(!e||o)}globalThis.crypto;var sD=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.OAuthClientFlowError`})}static[Symbol.hasInstance](e){return xw(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return xw(this,e)}constructor(e){super(e),this.name=new.target.name,bw(this,new.target)}};(class extends sD{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.IssuerMismatchError`})}kind;expected;received;constructor(e,t,n){super(`Issuer mismatch in ${e===`metadata`?`authorization server metadata (RFC 8414 §3.3)`:`authorization response (RFC 9207)`}: expected ${JSON.stringify(t)}, received ${JSON.stringify(n)}`),this.kind=e,this.expected=t,this.received=n}}),class extends sD{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.RegistrationRejectedError`})}status;body;submittedMetadata;constructor(e){super(`Dynamic Client Registration rejected (HTTP ${e.status}): ${e.body}`),this.status=e.status,this.body=e.body,this.submittedMetadata=e.submittedMetadata}},class extends sD{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.InsecureTokenEndpointError`})}tokenEndpoint;constructor(e){super(`Refusing to send credentials to non-https token endpoint '${e}'. OAuth token requests MUST use TLS (localhost / *.localhost / 127.0.0.1 / ::1 are exempt).`),this.tokenEndpoint=e}},class extends sD{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.AuthorizationServerMismatchError`})}constructor(e,t){super(`Authorization server mismatch: credentials are bound to ${JSON.stringify(e)} but this call resolved ${JSON.stringify(t)}; refusing to present them to a different authorization server`),this.recordedIssuer=e,this.currentIssuer=t}},class extends sD{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.InsufficientScopeError`})}requiredScope;resourceMetadataUrl;errorDescription;constructor(e){super(`Insufficient scope${e.requiredScope?`: required "${e.requiredScope}"`:``}`),this.requiredScope=e.requiredScope,this.resourceMetadataUrl=e.resourceMetadataUrl,this.errorDescription=e.errorDescription}},class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.UnauthorizedError`})}static[Symbol.hasInstance](e){return xw(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return xw(this,e)}constructor(e){super(e??`Unauthorized`),this.name=`UnauthorizedError`,bw(this,new.target)}},class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.SseError`})}static[Symbol.hasInstance](e){return xw(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return xw(this,e)}constructor(e,t,n){super(`SSE error: ${t}`),this.code=e,this.event=n,bw(this,new.target)}};var cD=class{_eventSlots=new Map;setHandler(e,t){let n=this._ensureEventSlot(e);n.onHandler&&t&&console.warn(`[MCP Apps] on${String(e)} handler replaced. Use addEventListener("${String(e)}", …) to add multiple listeners without replacing.`),n.onHandler=t}getHandler(e){return this._eventSlots.get(e)?.onHandler}addEventListener(e,t){this._ensureEventSlot(e).listeners.push(t)}removeEventListener(e,t){let n=this._eventSlots.get(e);if(!n)return;let r=n.listeners.indexOf(t);r!==-1&&n.listeners.splice(r,1)}dispatch(e,t){let n=this._eventSlots.get(e);if(n){n.onHandler?.(t);for(let e of[...n.listeners])e(t)}}_ensureEventSlot(e){let t=this._eventSlots.get(e);return t||(t={listeners:[]},this._eventSlots.set(e,t)),t}},lD=class{_methods=new Set;claim(e,t){if(this._methods.has(e))throw Error(`Handler for "${e}" already registered (via ${t}). Use addEventListener() to attach multiple listeners, or the on* setter for replace semantics.`);this._methods.add(e)}replace(e){this._methods.add(e)}release(e){this._methods.delete(e)}has(e){return this._methods.has(e)}},uD=new Set;function dD(e,t){let[n,r]=t,i=n?.shape;if(typeof i?.method?.value!=`string`)return;let a=i.method.value,o=e===`request`?`setRequestHandler`:`setNotificationHandler`;uD.has(o)||(uD.add(o),console.warn(`[ext-apps] ${o}(Schema, handler) is deprecated; use ${o}("${a}", { params: Schema.shape.params }, handler).`));let s=r;return[a,{params:i.params},e===`request`?(e,t)=>s({method:a,params:e},fD(t)):e=>s({method:a,params:e})]}function fD(e){return{signal:e.mcpReq.signal,requestId:e.mcpReq.id,sessionId:e.sessionId,_meta:e.mcpReq._meta,sendRequest:e.mcpReq.send,sendNotification:e.mcpReq.notify,authInfo:e.http?.authInfo}}var pD=`2026-01-26`,mD=class{eventTarget;eventSource;messageListener;constructor(e=window.parent,t){this.eventTarget=e,this.eventSource=t,this.messageListener=e=>{if(t&&e.source!==this.eventSource){console.debug(`Ignoring message from unknown source`,e);return}let n=yx.safeParse(e.data);n.success?(console.debug(`Parsed message`,n.data),this.onmessage?.(n.data)):e.data?.jsonrpc===`2.0`?(console.error(`Failed to parse message`,n.error.message,e),this.onerror?.(Error(`Invalid JSON-RPC message received: `+n.error.message))):console.debug(`Ignoring non-JSON-RPC message`,n.error.message,e)}}async start(){window.addEventListener(`message`,this.messageListener)}async send(e,t){e.method!==`ui/notifications/tool-input-partial`&&console.debug(`Sending message`,e),this.eventTarget.postMessage(e,`*`)}async close(){window.removeEventListener(`message`,this.messageListener),this.onclose?.()}onclose;onerror;onmessage;sessionId;setProtocolVersion},hD=Y([Q(`light`),Q(`dark`)]).describe(`Color theme preference for the host environment.`),gD=Y([Q(`inline`),Q(`fullscreen`),Q(`pip`)]).describe(`Display mode for UI presentation.`),_D=X(Y([Q(`--color-background-primary`),Q(`--color-background-secondary`),Q(`--color-background-tertiary`),Q(`--color-background-inverse`),Q(`--color-background-ghost`),Q(`--color-background-info`),Q(`--color-background-danger`),Q(`--color-background-success`),Q(`--color-background-warning`),Q(`--color-background-disabled`),Q(`--color-text-primary`),Q(`--color-text-secondary`),Q(`--color-text-tertiary`),Q(`--color-text-inverse`),Q(`--color-text-ghost`),Q(`--color-text-info`),Q(`--color-text-danger`),Q(`--color-text-success`),Q(`--color-text-warning`),Q(`--color-text-disabled`),Q(`--color-border-primary`),Q(`--color-border-secondary`),Q(`--color-border-tertiary`),Q(`--color-border-inverse`),Q(`--color-border-ghost`),Q(`--color-border-info`),Q(`--color-border-danger`),Q(`--color-border-success`),Q(`--color-border-warning`),Q(`--color-border-disabled`),Q(`--color-ring-primary`),Q(`--color-ring-secondary`),Q(`--color-ring-inverse`),Q(`--color-ring-info`),Q(`--color-ring-danger`),Q(`--color-ring-success`),Q(`--color-ring-warning`),Q(`--font-sans`),Q(`--font-mono`),Q(`--font-weight-normal`),Q(`--font-weight-medium`),Q(`--font-weight-semibold`),Q(`--font-weight-bold`),Q(`--font-text-xs-size`),Q(`--font-text-sm-size`),Q(`--font-text-md-size`),Q(`--font-text-lg-size`),Q(`--font-heading-xs-size`),Q(`--font-heading-sm-size`),Q(`--font-heading-md-size`),Q(`--font-heading-lg-size`),Q(`--font-heading-xl-size`),Q(`--font-heading-2xl-size`),Q(`--font-heading-3xl-size`),Q(`--font-text-xs-line-height`),Q(`--font-text-sm-line-height`),Q(`--font-text-md-line-height`),Q(`--font-text-lg-line-height`),Q(`--font-heading-xs-line-height`),Q(`--font-heading-sm-line-height`),Q(`--font-heading-md-line-height`),Q(`--font-heading-lg-line-height`),Q(`--font-heading-xl-line-height`),Q(`--font-heading-2xl-line-height`),Q(`--font-heading-3xl-line-height`),Q(`--border-radius-xs`),Q(`--border-radius-sm`),Q(`--border-radius-md`),Q(`--border-radius-lg`),Q(`--border-radius-xl`),Q(`--border-radius-full`),Q(`--border-width-regular`),Q(`--shadow-hairline`),Q(`--shadow-sm`),Q(`--shadow-md`),Q(`--shadow-lg`)]).describe(`CSS variable keys available to MCP apps for theming.`).describe(`Style variables for theming MCP apps. +Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}r.count>1&&e.reused===`ref`&&a(n)}e.external&&(e.sharedDefsExtractedFor=e.external)}function I_(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let e of t){if(!e||typeof e!=`object`)return;I_(e);let t=Object.keys(e);if(t.length!==1||t[0]!==`type`)return;let r=e.type;for(let e of Array.isArray(r)?r:[r]){if(typeof e!=`string`)return;n.includes(e)||n.push(e)}}delete e.anyOf,e.type=n.length===1?n[0]:n}var L_=new Set([`type`,`properties`,`required`,`additionalProperties`]),R_=[`oneOf`,`anyOf`];function z_(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function B_(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!L_.has(e))return null;t.push(n)}let n={},r=new Set;for(let e of t){for(let r in e.properties){if(Object.prototype.hasOwnProperty.call(n,r))continue;let e=[];for(let n of t){let t=n.properties?.[r]??z_(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}Md(n,r,e.length===1?e[0]:B_(e)??{allOf:e})}for(let t of e.required??[])r.add(t)}let i={type:`object`,properties:n};if(r.size&&(i.required=[...r]),t.every(e=>e.additionalProperties===!1))i.additionalProperties=!1;else{let e=[];for(let n of t){let t=z_(n);t&&!e.some(e=>JSON.stringify(e)===JSON.stringify(t))&&e.push(t)}e.length===1?i.additionalProperties=e[0]:e.length>1&&(i.additionalProperties={allOf:e})}return i}function V_(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of L_)if(t in e)return;let n=t.filter(e=>R_.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=B_(t);else{let e=n[0],i=R_.find(t=>Array.isArray(e[t]));if(Object.keys(e).length!==1)return;let a=t.filter(t=>t!==e),o=e[i].map(e=>B_([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,A_(e,r))}function H_(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):A_(i,s),A_(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let t of[...e.seen.entries()].reverse())r(t[0]);if(e.target!==`openapi-3.0`)for(let t of e.seen.entries())I_(t[1].def??t[1].schema);for(let t of e.deferred)t();if(e.intersections.length){let t=new Map;for(let n of e.seen.values())for(let e of[n.schema,n.def]){let n=e?.allOf;if(!Array.isArray(n))continue;let r=t.get(n);r?r.push(e):t.set(n,[e])}for(let n of e.intersections)for(let e of t.get(n)??[])V_(e)}}let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}A_(i,n.defId?n.schema:n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,Md(o,e.defId,e.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:G_(t,`input`,e.processors),output:G_(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function U_(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return U_(r.element,n);if(r.type===`set`)return U_(r.valueType,n);if(r.type===`lazy`)return U_(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`||r.type===`catch`)return U_(r.innerType,n);if(r.type===`intersection`)return U_(r.left,n)||U_(r.right,n);if(r.type===`record`||r.type===`map`)return U_(r.keyType,n)||U_(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:U_(r.in,n)||U_(r.out,n);if(r.type===`object`){for(let e in r.shape)if(U_(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(U_(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(U_(e,n))return!0;return!!(r.rest&&U_(r.rest,n))}return!1}var W_=(e,t={})=>n=>{let r=j_({...n,processors:t});return N_(e,r),F_(r,e),H_(r,e)},G_=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=j_({...i??{},target:a,io:t,processors:n});return N_(e,o),F_(o,e),H_(o,e)},K_=(e,t,n)=>{(e[t]===void 0||n>e[t])&&(e[t]=n)},q_=(e,t,n)=>{(e[t]===void 0||n{K_(e,`minimum`,t),q_(e,`maximum`,t)},Y_=(e,t)=>{e.multipleOf??=[],e.multipleOf.includes(t)||e.multipleOf.push(t)},X_=(e,t)=>{e.patterns??=new Set,e.patterns.add(t)},Z_=(e,t)=>{e.mime=e.mime?e.mime.filter(e=>t.includes(e)):[...t]},Q_=(e,t)=>{e.format=t,t.includes(`int`)&&(e.isInt=!0)},$_=(e,t)=>K_(e,`minimum`,t.minimum),ev=(e,t)=>q_(e,`maximum`,t.maximum),tv=e=>(t,n)=>{Q_(t,n.format);let[r,i]=e[n.format];K_(t,`minimum`,r),q_(t,`maximum`,i)},nv={greater_than:(e,t)=>K_(e,t.inclusive?`minimum`:`exclusiveMinimum`,t.value),less_than:(e,t)=>q_(e,t.inclusive?`maximum`:`exclusiveMaximum`,t.value),multiple_of:(e,t)=>Y_(e,t.value),number_format:tv(Qd),bigint_format:tv($d),min_length:$_,max_length:ev,length_equals:(e,t)=>J_(e,t.length),min_size:$_,max_size:ev,size_equals:(e,t)=>J_(e,t.size),string_format:(e,t)=>{Q_(e,t.format),t.pattern&&X_(e,t.pattern),(t.format===`base64`||t.format===`base64url`)&&(e.contentEncoding=t.format),(t.local||t.precision===-1)&&(e.laxFormat=!0)},mime_type:(e,t)=>Z_(e,t.mime)};function rv(e){let t={},n=e._zod.def,r=e._zod.traits.has(`$ZodCheck`)?[e,...n.checks??[]]:n.checks??[];for(let e of r)nv[e._zod.def.check]?.(t,e._zod.def);let i=e._zod.bag;i.minimum!==void 0&&K_(t,`minimum`,i.minimum),i.exclusiveMinimum!==void 0&&K_(t,`exclusiveMinimum`,i.exclusiveMinimum),i.maximum!==void 0&&q_(t,`maximum`,i.maximum),i.exclusiveMaximum!==void 0&&q_(t,`exclusiveMaximum`,i.exclusiveMaximum),i.multipleOf!==void 0&&Y_(t,i.multipleOf),i.format!==void 0&&(t.format??=i.format,i.format.includes(`int`)&&(t.isInt=!0)),i.mime&&Z_(t,i.mime);for(let e of i.patterns??[])X_(t,e);return t}var iv={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},av=new Map([[eh,Pp],[nh,Fp]]),ov=e=>av.get(e)??e,sv=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l,laxFormat:u}=rv(e);if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=iv[s]??s,i.format===``&&delete i.format,(s===`time`||u)&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c].map(ov);e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},cv=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,multipleOf:s,exclusiveMaximum:c,exclusiveMinimum:l,isInt:u}=rv(e);i.type=u?`integer`:`number`;let d=typeof l==`number`&&l>=(a??-1/0),f=typeof c==`number`&&c<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;if(d?p?(i.minimum=l,i.exclusiveMinimum=!0):i.exclusiveMinimum=l:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=c,i.exclusiveMaximum=!0):i.exclusiveMaximum=c:typeof o==`number`&&(i.maximum=o),s){let n=new Set;for(let a of s)Number.isFinite(a)&&a!==0?n.add(Math.abs(a)):M_(e,t,i,r,`A multipleOf divisor of ${a} cannot be represented in JSON Schema`);let[a,...o]=n;a!==void 0&&(i.multipleOf=a),o.length&&(i.allOf=[...i.allOf??[],...o.map(e=>({multipleOf:e}))])}},lv=(e,t,n,r)=>{n.type=`boolean`},uv=(e,t,n,r)=>{M_(e,t,n,r,`BigInt cannot be represented in JSON Schema`)},dv=(e,t,n,r)=>{M_(e,t,n,r,`Symbols cannot be represented in JSON Schema`)},fv=(e,t,n,r)=>{t.target===`openapi-3.0`?(n.type=`string`,n.nullable=!0,n.enum=[null]):n.type=`null`},pv=(e,t,n,r)=>{M_(e,t,n,r,`Undefined cannot be represented in JSON Schema`)},mv=(e,t,n,r)=>{M_(e,t,n,r,`Void cannot be represented in JSON Schema`)},hv=(e,t,n,r)=>{n.not={}},gv=(e,t,n,r)=>{},_v=(e,t,n,r)=>{},vv=(e,t,n,r)=>{M_(e,t,n,r,`Date cannot be represented in JSON Schema`)},yv=(e,t,n,r)=>{let i=e._zod.def,a=Sd(i.entries);if(a.length===0){n.not={};return}a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},bv=(e,t,n,r)=>{let i=e._zod.def;if(i.values.length===0){n.not={};return}let a=[];for(let o of i.values)if(o===void 0){if(M_(e,t,n,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof o==`bigint`){if(M_(e,t,n,r,`BigInt literals cannot be represented in JSON Schema`))return;a.push(Number(o))}else a.push(o);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},xv=(e,t,n,r)=>{M_(e,t,n,r,`NaN cannot be represented in JSON Schema`)},Sv=(e,t,n,r)=>{let i=n,a=e._zod.pattern;if(!a)throw Error(`Pattern not found in template literal`);i.type=`string`,i.pattern=a.source},Cv=(e,t,n,r)=>{let i=n;i.type=`string`,i.format=`binary`,i.contentEncoding=`binary`;let{minimum:a,maximum:o,mime:s}=rv(e);a!==void 0&&(i.minLength=a),o!==void 0&&(i.maxLength=o),s&&(s.length===0?i.not={}:s.length===1?i.contentMediaType=s[0]:i.anyOf=s.map(e=>({contentMediaType:e})))},wv=(e,t,n,r)=>{n.type=`boolean`},Tv=(e,t,n,r)=>{M_(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},Ev=(e,t,n,r)=>{M_(e,t,n,r,`Function types cannot be represented in JSON Schema`)},Dv=(e,t,n,r)=>{M_(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},Ov=(e,t,n,r)=>{M_(e,t,n,r,`Map cannot be represented in JSON Schema`)},kv=(e,t,n,r)=>{M_(e,t,n,r,`Set cannot be represented in JSON Schema`)},Av=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=rv(e);typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=N_(a.element,t,{...r,path:[...r.path,`items`]})};function jv(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?jv(t.out):t.type===`catch`?jv(t.innerType):e._zod.optin}var Mv=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&M_(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)Md(i.properties,e,N_(o[e],t,{...r,path:[...r.path,`properties`,e]}));let s=[];for(let e of Object.keys(o)){let n=a.shape[e];(t.io===`input`?jv(n)===void 0:n._zod.optout===void 0)&&s.push(e)}s.length>0&&(i.required=s),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=N_(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},Nv=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>N_(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},Pv=(e,t,n,r)=>{let i=e._zod.def,a=N_(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=N_(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1,c=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]];n.allOf=c,t.intersections.push(c)},Fv=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`array`;let o=t.target===`draft-2020-12`?`prefixItems`:`items`,s=t.target===`draft-2020-12`||t.target===`openapi-3.0`?`items`:`additionalItems`,c=a.items.map((e,n)=>N_(e,t,{...r,path:[...r.path,o,n]})),l=a.rest?N_(a.rest,t,{...r,path:[...r.path,s,...t.target===`openapi-3.0`?[a.items.length]:[]]}):null,u=a.items.length;for(;u>0;){let e=a.items[u-1];if(!(t.io===`input`?jv(e)!==void 0:e._zod.optout===`optional`))break;u--}let d=a.items.length,f=!a.rest;t.target===`draft-2020-12`?(i.prefixItems=c,f?i.items=!1:l&&(i.items=l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):t.target===`openapi-3.0`?(i.items={anyOf:c},l&&i.items.anyOf.push(l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):(i.items=c,f?i.additionalItems=!1:l&&(i.additionalItems=l),u>0&&(i.minItems=u),f&&(i.maxItems=d));let{minimum:p,maximum:m}=rv(e);typeof p==`number`&&(i.minItems=p),typeof m==`number`&&(i.maxItems=m)};function Iv(e,t,n){if(t.$ref){if(n.has(t))return t;n.add(t);let r=e.get(t)?.def;if(!r)return t;let i=Iv(e,r,n);return i===r?t:i}for(let r of[`anyOf`,`oneOf`]){let i=t[r];if(!Array.isArray(i))continue;let a=i.map(t=>Iv(e,t,n));a.some((e,t)=>e!==i[t])&&(t={...t,[r]:a})}let r=Array.isArray(t.type)?t.type:[t.type],i=!r.includes(`string`)&&r.some(e=>e===`number`||e===`integer`),a=t.enum??(t.const===void 0?void 0:[t.const]);if(!i&&!a?.some(e=>typeof e==`number`))return t;let{minimum:o,maximum:s,exclusiveMinimum:c,exclusiveMaximum:l,multipleOf:u,format:d,id:f,...p}=t;return p.enum?p.enum=p.enum.map(e=>typeof e==`number`?String(e):e):typeof p.const==`number`&&(p.const=String(p.const)),i?(p.type=`string`,a||(p.pattern=(r.includes(`number`)?Kp:Gp).source),p):p}var Lv=new WeakMap;function Rv(e){let t=new Map;for(let n of e.seen.values())n.def&&!t.has(n.schema)&&t.set(n.schema,n);let n=new Map;for(let r of Lv.get(e)??[]){let i=e.seen.get(r),a=(i?.def??i?.schema)?.propertyNames;if(!a||a===!0||n.has(a))continue;let o=Iv(t,a,new Set);o!==a&&n.set(a,o)}if(n.size)for(let t of e.seen.values())for(let e of[t.schema,t.def]){let t=e&&n.get(e.propertyNames);t&&(e.propertyNames=t)}}var zv=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=rv(o).patterns;if(a.mode===`loose`&&s&&s.size>0){let e=N_(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)Md(i.patternProperties,ov(t).source,e)}else{if(t.target===`draft-07`||t.target===`draft-2020-12`){i.propertyNames=N_(a.keyType,t,{...r,path:[...r.path,`propertyNames`]});let n=Lv.get(t);n||(n=[],Lv.set(t,n),t.deferred.push(()=>Rv(t))),n.push(e)}i.additionalProperties=N_(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]})}let c=o._zod.values,l=t.io===`input`&&jv(a.valueType)!==void 0;if(c&&!a.partial&&!l){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e.map(String))}},Bv=(e,t,n,r)=>{let i=e._zod.def,a=N_(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},Vv=(e,t,n,r)=>{let i=e._zod.def;N_(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Hv=Symbol();function Uv(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?(M_(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),Hv):JSON.parse(o)}var Wv=(e,t,n,r)=>{let i=e._zod.def;N_(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=Uv(i.defaultValue,e,t,n,r);o!==Hv&&(n.default=o)},Gv=(e,t,n,r)=>{let i=e._zod.def;N_(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=Uv(i.defaultValue,e,t,n,r);o!==Hv&&(n._prefault=o)},Kv=(e,t,n,r)=>{let i=e._zod.def;N_(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{M_(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},qv=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;N_(o,t,r);let s=t.seen.get(e);s.ref=o},Jv=(e,t,n,r)=>{let i=e._zod.def;N_(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},Yv=(e,t,n,r)=>{let i=e._zod.def;N_(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Xv=(e,t,n,r)=>{let i=e._zod.def;N_(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Zv=(e,t,n,r)=>{let i=e._zod.innerType;N_(i,t,r);let a=t.seen.get(e);a.ref=i},Qv={string:sv,number:cv,boolean:lv,bigint:uv,symbol:dv,null:fv,undefined:pv,void:mv,never:hv,any:gv,unknown:_v,date:vv,enum:yv,literal:bv,nan:xv,template_literal:Sv,file:Cv,success:wv,custom:Tv,function:Ev,transform:Dv,map:Ov,set:kv,array:Av,object:Mv,union:Nv,intersection:Pv,tuple:Fv,record:zv,nullable:Bv,nonoptional:Vv,default:Wv,prefault:Gv,catch:Kv,pipe:qv,readonly:Jv,promise:Yv,optional:Xv,lazy:Zv};function $v(e,t){if(`_idmap`in e){let n=e,r=j_({...t,processors:Qv}),i={};for(let e of n._idmap.entries()){let[t,n]=e;N_(n,r)}let a={};r.external={registry:n,uri:t?.uri,defs:i};for(let e of n._idmap.entries()){let[t,n]=e;F_(r,n),Md(a,t,H_(r,n))}return Object.keys(i).length>0&&(a.__shared={[r.target===`draft-2020-12`?`$defs`:`definitions`]:i}),{schemas:a}}let n=j_({...t,processors:Qv});return N_(e,n),F_(n,e),H_(n,e)}var ey=new WeakSet([Object.prototype,Error.prototype]);function ty(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let e=n(this);return Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0})}})}var ny=B(`ZodError`,(e,t)=>{Yf.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);ey.has(n)||(ey.add(n),ty(n,`format`,e=>t=>Qf(e,t)),ty(n,`flatten`,e=>t=>Zf(e,t)),ty(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,wd,2)}),ty(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,wd,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),ry=$f(ny),iy=ep(ny),ay=tp(ny),oy=rp(ny),sy=lp(ny),cy=up(ny),ly=dp(ny),uy=fp(ny),dy=pp(ny),fy=mp(ny),py=hp(ny),my=gp(ny);function hy(){Vf.localeError||Hf(vg())}function gy(){Vf.memoizer||Hf({memoizer:hg()})}var _y=B(`ZodType`,(e,t)=>(hy(),vm.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(zd(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return Yd(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(Rb(e,t))},superRefine(e,t){return this.check(zb(e,t))},overwrite(e){return this.check(b_(e))},optional(){return $(this)},exactOptional(){return yb(this)},nullable(){return xb(this)},nullish(){return $(xb(this))},nonoptional(e){return Db(this,e)},array(){return K(this)},or(e){return Y([this,e])},and(e){return db(this,e)},transform(e){return jb(this,gb(e))},default(e){return Cb(this,e)},prefault(e){return Tb(this,e)},catch(e){return kb(this,e)},pipe(e){return jb(this,e)},readonly(){return Pb(this)},describe(e){let t=this.clone();return Sg.add(t,{description:e}),t},meta(...e){if(e.length===0)return Sg.get(this);let t=this.clone();return Sg.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return Cf(this,`~standard`,{...xm(this),jsonSchema:{input:G_(this,`input`),output:G_(this,`output`)}})},set"~standard"(e){Sf(this,`~standard`,e)},parse:function e(t,n){return ry(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await iy(this,t,n,{callee:e})},safeParse(e,t){return ay(this,e,t)},async safeParseAsync(e,t){return oy(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){Sf(this,`spa`,e)},validate(e,t){return op(this,e,t)},validateAsync(e,t){return cp(this,e,t)},encode:function e(t,n){return sy(this,t,n,{callee:e})},decode:function e(t,n){return cy(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await ly(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await uy(this,t,n,{callee:e})},safeEncode(e,t){return dy(this,e,t)},safeDecode(e,t){return fy(this,e,t)},async safeEncodeAsync(e,t){return py(this,e,t)},async safeDecodeAsync(e,t){return my(this,e,t)},toJSONSchema(e){return W_(this,{})(e)},get description(){return Sg.get(this)?.description},get _def(){return this._zod.def}}),vy=B(`_ZodString`,(e,t)=>{Sm.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>sv(e,t,n,r)},wf({format:e=>rv(e).format??null,minLength:e=>rv(e).minimum??null,maxLength:e=>rv(e).maximum??null},{regex(...e){return this.check(m_(...e))},includes(...e){return this.check(__(...e))},startsWith(...e){return this.check(v_(...e))},endsWith(...e){return this.check(y_(...e))},min(...e){return this.check(f_(...e))},max(...e){return this.check(d_(...e))},length(...e){return this.check(p_(...e))},nonempty(...e){return this.check(f_(1,...e))},lowercase(e){return this.check(h_(e))},uppercase(e){return this.check(g_(e))},trim(){return this.check(S_())},normalize(...e){return this.check(x_(...e))},toLowerCase(){return this.check(C_())},toUpperCase(){return this.check(w_())},slugify(){return this.check(T_())}})),yy=B(`ZodString`,(e,t)=>{Sm.init(e,t),vy.init(e,t)},{email(e){return this.check(Tg(Ty,e))},url(e){return this.check(jg(ky,e))},jwt(e){return this.check(Kg(Gy,e))},emoji(e){return this.check(Mg(jy,e))},guid(e){return this.check(Eg(Dy,e))},uuid(e){return this.check(Dg(Oy,e))},uuidv4(e){return this.check(Og(Oy,e))},uuidv6(e){return this.check(kg(Oy,e))},uuidv7(e){return this.check(Ag(Oy,e))},nanoid(e){return this.check(Ng(My,e))},cuid(e){return this.check(Pg(Ny,e))},cuid2(e){return this.check(Fg(Py,e))},ulid(e){return this.check(Ig(Fy,e))},base64(e){return this.check(Ug(Hy,e))},base64url(e){return this.check(Wg(Uy,e))},xid(e){return this.check(Lg(Iy,e))},ksuid(e){return this.check(Rg(Ly,e))},ipv4(e){return this.check(zg(Ry,e))},ipv6(e){return this.check(Bg(zy,e))},cidrv4(e){return this.check(Vg(By,e))},cidrv6(e){return this.check(Hg(Vy,e))},e164(e){return this.check(Gg(Wy,e))},datetime(e){return this.check(qg(xy,e))},date(e){return this.check(Jg(Sy,e))},time(e){return this.check(Yg(Cy,e))},duration(e){return this.check(Xg(wy,e))}});function H(e){return wg(yy,e)}var by=B(`ZodStringFormat`,(e,t)=>{Cm.init(e,t),vy.init(e,t)}),xy=B(`ZodISODateTime`,(e,t)=>{Hm.init(e,t),by.init(e,t)}),Sy=B(`ZodISODate`,(e,t)=>{Um.init(e,t),by.init(e,t)}),Cy=B(`ZodISOTime`,(e,t)=>{Wm.init(e,t),by.init(e,t)}),wy=B(`ZodISODuration`,(e,t)=>{Gm.init(e,t),by.init(e,t)}),Ty=B(`ZodEmail`,(e,t)=>{Em.init(e,t),by.init(e,t)});function Ey(e){return Tg(Ty,e)}var Dy=B(`ZodGUID`,(e,t)=>{wm.init(e,t),by.init(e,t)}),Oy=B(`ZodUUID`,(e,t)=>{Tm.init(e,t),by.init(e,t)}),ky=B(`ZodURL`,(e,t)=>{Pm.init(e,t),by.init(e,t)});function Ay(e){return jg(ky,e)}var jy=B(`ZodEmoji`,(e,t)=>{Fm.init(e,t),by.init(e,t)}),My=B(`ZodNanoID`,(e,t)=>{Im.init(e,t),by.init(e,t)}),Ny=B(`ZodCUID`,(e,t)=>{Lm.init(e,t),by.init(e,t)}),Py=B(`ZodCUID2`,(e,t)=>{Rm.init(e,t),by.init(e,t)}),Fy=B(`ZodULID`,(e,t)=>{zm.init(e,t),by.init(e,t)}),Iy=B(`ZodXID`,(e,t)=>{Bm.init(e,t),by.init(e,t)}),Ly=B(`ZodKSUID`,(e,t)=>{Vm.init(e,t),by.init(e,t)}),Ry=B(`ZodIPv4`,(e,t)=>{Km.init(e,t),by.init(e,t)}),zy=B(`ZodIPv6`,(e,t)=>{Ym.init(e,t),by.init(e,t)}),By=B(`ZodCIDRv4`,(e,t)=>{Xm.init(e,t),by.init(e,t)}),Vy=B(`ZodCIDRv6`,(e,t)=>{Qm.init(e,t),by.init(e,t)}),Hy=B(`ZodBase64`,(e,t)=>{th.init(e,t),by.init(e,t)}),Uy=B(`ZodBase64URL`,(e,t)=>{ih.init(e,t),by.init(e,t)}),Wy=B(`ZodE164`,(e,t)=>{ah.init(e,t),by.init(e,t)}),Gy=B(`ZodJWT`,(e,t)=>{sh.init(e,t),by.init(e,t)}),Ky=B(`ZodNumber`,(e,t)=>{ch.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>cv(e,t,n,r),e.isFinite=!0},wf({minValue:e=>{let{minimum:t,exclusiveMinimum:n}=rv(e);return Math.max(t??-1/0,n??-1/0)},maxValue:e=>{let{maximum:t,exclusiveMaximum:n}=rv(e);return Math.min(t??1/0,n??1/0)},isInt:e=>{let{isInt:t,multipleOf:n}=rv(e);return!!t||!!n?.some(Number.isSafeInteger)},format:e=>rv(e).format??null},{gt(e,t){return this.check(c_(e,t))},gte(e,t){return this.check(l_(e,t))},min(e,t){return this.check(l_(e,t))},lt(e,t){return this.check(o_(e,t))},lte(e,t){return this.check(s_(e,t))},max(e,t){return this.check(s_(e,t))},int(e){return this.check(Jy(e))},safe(e){return this.check(Jy(e))},positive(e){return this.check(c_(0,e))},nonnegative(e){return this.check(l_(0,e))},negative(e){return this.check(o_(0,e))},nonpositive(e){return this.check(s_(0,e))},multipleOf(e,t){return this.check(u_(e,t))},step(e,t){return this.check(u_(e,t))},finite(){return this}}));function U(e){return Zg(Ky,e)}var qy=B(`ZodNumberFormat`,(e,t)=>{lh.init(e,t),Ky.init(e,t)});function Jy(e){return $g(qy,e)}var Yy=B(`ZodBoolean`,(e,t)=>{uh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>lv(e,t,n,r)});function W(e){return e_(Yy,e)}var Xy=B(`ZodUndefined`,(e,t)=>{dh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>pv(e,t,n,r)});function Zy(e){return t_(Xy,e)}var Qy=B(`ZodNull`,(e,t)=>{fh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>fv(e,t,n,r)});function $y(e){return n_(Qy,e)}var eb=B(`ZodAny`,(e,t)=>{ph.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function tb(){return r_(eb)}var nb=B(`ZodUnknown`,(e,t)=>{mh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function G(){return i_(nb)}var rb=B(`ZodNever`,(e,t)=>{hh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>hv(e,t,n,r)});function ib(e){return a_(rb,e)}var ab=B(`ZodArray`,(e,t)=>{gy(),_h.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Av(e,t,n,r),e.element=t.element},{min(e,t){return this.check(f_(e,t))},nonempty(e){return this.check(f_(1,e))},max(e,t){return this.check(d_(e,t))},length(e,t){return this.check(p_(e,t))},unwrap(){return this.element}});function K(e,t){return E_(ab,e,t)}var ob=B(`ZodObject`,(e,t)=>{gy(),Ch.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Mv(e,t,n,r),jf(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return Z(Object.keys(this._zod.def.shape))},catchall(e){return this.clone(zd(this._zod.def,{catchall:e}))},passthrough(){return this.clone(zd(this._zod.def,{catchall:G()}))},loose(){return this.clone(zd(this._zod.def,{catchall:G()}))},strict(){return this.clone(zd(this._zod.def,{catchall:ib()}))},strip(){return this.clone(zd(this._zod.def,{catchall:void 0}))},extend(e){return rf(this,e)},safeExtend(e){return of(this,e)},merge(e){return sf(this,e)},pick(e){return ef(this,e)},omit(e){return nf(this,e)},partial(...e){return cf(_b,this,e[0])},exactPartial(...e){return cf(vb,this,e[0],`exactPartial`)},required(...e){return lf(Eb,this,e[0])}});function q(e,t){return new ob({type:`object`,shape:e??{},...z(t)})}function J(e,t){return new ob({type:`object`,shape:e,catchall:G(),...z(t)})}var sb=B(`ZodUnion`,(e,t)=>{Th.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Nv(e,t,n,r),e.options=t.options});function Y(e,t){return new sb({type:`union`,options:e,...z(t)})}var cb=B(`ZodDiscriminatedUnion`,(e,t)=>{sb.init(e,t),Dh.init(e,t)});function lb(e,t,n){return new cb({type:`union`,options:t,discriminator:e,...z(n)})}var ub=B(`ZodIntersection`,(e,t)=>{Oh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Pv(e,t,n,r)});function db(e,t){return new ub({type:`intersection`,left:e,right:t})}var fb=B(`ZodRecord`,(e,t)=>{gy(),jh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>zv(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function X(e,t,n){return!t||!t._zod?new fb({type:`record`,keyType:H(),valueType:e,...z(t)}):new fb({type:`record`,keyType:e,valueType:t,...z(n)})}var pb=B(`ZodEnum`,(e,t)=>{Mh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>yv(e,t,n,r),e.enum=t.entries,e.options=[...e._zod.values];let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new pb({...t,checks:[],...z(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new pb({...t,checks:[],...z(r),entries:i})}});function Z(e,t){return new pb({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...z(t)})}var mb=B(`ZodLiteral`,(e,t)=>{Nh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>bv(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function Q(e,t){return new mb({type:`literal`,values:Array.isArray(e)?e:[e],...z(t)})}var hb=B(`ZodTransform`,(e,t)=>{gy(),Ph.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Dv(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Bf(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(bf(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,`input`in t||(t.input=n.value),t.inst??=e,n.issues.push(bf(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function gb(e){return new hb({type:`transform`,transform:e})}var _b=B(`ZodOptional`,(e,t)=>{Ih.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Xv(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function $(e){return new _b({type:`optional`,innerType:e})}var vb=B(`ZodExactOptional`,(e,t)=>{Lh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Xv(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function yb(e){return new vb({type:`optional`,innerType:e})}var bb=B(`ZodNullable`,(e,t)=>{Rh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Bv(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function xb(e){return new bb({type:`nullable`,innerType:e})}var Sb=B(`ZodDefault`,(e,t)=>{zh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Wv(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function Cb(e,t){return new Sb({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():Kd(t)}})}var wb=B(`ZodPrefault`,(e,t)=>{Vh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Gv(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Tb(e,t){return new wb({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():Kd(t)}})}var Eb=B(`ZodNonOptional`,(e,t)=>{Hh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Vv(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Db(e,t){return new Eb({type:`nonoptional`,innerType:e,...z(t)})}var Ob=B(`ZodCatch`,(e,t)=>{Gh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Kv(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function kb(e,t){return new Ob({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:Nf(t)})}var Ab=B(`ZodPipe`,(e,t)=>{Kh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>qv(e,t,n,r),e.in=t.in,e.out=t.out});function jb(e,t){return new Ab({type:`pipe`,in:e,out:t})}var Mb=B(`ZodPreprocess`,(e,t)=>{Ab.init(e,t),Jh.init(e,t)}),Nb=B(`ZodReadonly`,(e,t)=>{Yh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Jv(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Pb(e){return new Nb({type:`readonly`,innerType:e})}var Fb=B(`ZodLazy`,(e,t)=>{Zh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Zv(e,t,n,r),e.unwrap=()=>e._zod.def.getter()});function Ib(e){return new Fb({type:`lazy`,getter:e})}var Lb=B(`ZodCustom`,(e,t)=>{Qh.init(e,t),_y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Tv(e,t,n,r)});function Rb(e,t={}){return D_(Lb,e,t)}function zb(e,t){return O_(e,t)}function Bb(e,t){return new Mb({type:`pipe`,in:gb(e),out:t})}var Vb={invalid_type:`invalid_type`,too_big:`too_big`,too_small:`too_small`,invalid_format:`invalid_format`,not_multiple_of:`not_multiple_of`,unrecognized_keys:`unrecognized_keys`,invalid_union:`invalid_union`,invalid_key:`invalid_key`,invalid_element:`invalid_element`,invalid_value:`invalid_value`,custom:`custom`},Hb;Hb||={};function Ub(e){return qg(xy,e)}function Wb(e){return Jg(Sy,e)}function Gb(e){return Qg(Ky,e)}var Kb=[`2025-11-25`,`2025-06-18`,`2025-03-26`,`2024-11-05`,`2024-10-07`],qb=`io.modelcontextprotocol/related-task`,Jb=`io.modelcontextprotocol/protocolVersion`,Yb=`io.modelcontextprotocol/clientInfo`,Xb=`io.modelcontextprotocol/serverInfo`,Zb=`io.modelcontextprotocol/clientCapabilities`,Qb=`io.modelcontextprotocol/subscriptionId`,$b=`io.modelcontextprotocol/logLevel`,ex=Ib(()=>Y([H(),U(),W(),$y(),X(H(),ex),K(ex)])),tx=X(H(),ex),nx=K(ex),rx=Y([H(),U().int()]),ix=H(),ax=q({ttl:U().optional()}),ox=q({taskId:H()}),sx=J({progressToken:rx.optional(),[qb]:ox.optional()}),cx=q({_meta:sx.optional()}),lx=cx.extend({task:ax.optional()}),ux=q({method:H(),params:cx.loose().optional()}),dx=q({_meta:sx.optional()}),fx=q({method:H(),params:dx.loose().optional()}),px=J({get[Xb](){return Ox.optional().catch(void 0)}}),mx=J({_meta:px.optional()}),hx=Y([H(),U().int()]),gx=q({jsonrpc:Q(`2.0`),id:hx,...ux.shape}).strict(),_x=q({jsonrpc:Q(`2.0`),...fx.shape}).strict(),vx=q({jsonrpc:Q(`2.0`),id:hx,result:mx}).strict(),yx=q({jsonrpc:Q(`2.0`),id:hx.optional(),error:q({code:U().int(),message:H(),data:G().optional()})}).strict(),bx=Y([gx,_x,vx,yx]),xx=Y([vx,yx]),Sx=mx.strict(),Cx=dx.extend({requestId:hx.optional(),reason:H().optional()}),wx=fx.extend({method:Q(`notifications/cancelled`),params:Cx}),Tx=q({src:H(),mimeType:H().optional(),sizes:K(H()).optional(),theme:Z([`light`,`dark`]).optional()}),Ex=q({icons:K(Tx).optional()}),Dx=q({name:H(),title:H().optional()}),Ox=Dx.extend({...Dx.shape,...Ex.shape,version:H(),websiteUrl:H().optional(),description:H().optional()}),kx=Bb(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,db(q({form:db(q({applyDefaults:W().optional()}),tx).optional(),url:tx.optional()}),tx.optional())),Ax=J({list:tx.optional(),cancel:tx.optional(),requests:J({sampling:J({createMessage:tx.optional()}).optional(),elicitation:J({create:tx.optional()}).optional()}).optional()}),jx=J({list:tx.optional(),cancel:tx.optional(),requests:J({tools:J({call:tx.optional()}).optional()}).optional()}),Mx=q({experimental:X(H(),tx).optional(),sampling:q({context:tx.optional(),tools:tx.optional()}).optional(),elicitation:kx.optional(),roots:q({listChanged:W().optional()}).optional(),tasks:Ax.optional(),extensions:X(H(),tx).optional()}),Nx=cx.extend({protocolVersion:H(),capabilities:Mx,clientInfo:Ox}),Px=ux.extend({method:Q(`initialize`),params:Nx}),Fx=q({experimental:X(H(),tx).optional(),logging:tx.optional(),completions:tx.optional(),prompts:q({listChanged:W().optional()}).optional(),resources:q({subscribe:W().optional(),listChanged:W().optional()}).optional(),tools:q({listChanged:W().optional()}).optional(),tasks:jx.optional(),extensions:X(H(),tx).optional()}),Ix=mx.extend({protocolVersion:H(),capabilities:Fx,serverInfo:Ox,instructions:H().optional()}),Lx=fx.extend({method:Q(`notifications/initialized`),params:dx.optional()}),Rx=ux.extend({method:Q(`server/discover`),params:cx.optional()}),zx=mx.extend({supportedVersions:K(H()),capabilities:Fx,instructions:H().optional()}),Bx=ux.extend({method:Q(`ping`),params:cx.optional()}),Vx=q({progress:U(),total:$(U()),message:$(H())}),Hx=q({...dx.shape,...Vx.shape,progressToken:rx}),Ux=fx.extend({method:Q(`notifications/progress`),params:Hx}),Wx=cx.extend({cursor:ix.optional()}),Gx=ux.extend({params:Wx.optional()}),Kx=mx.extend({nextCursor:ix.optional()}),qx=q({uri:H(),mimeType:$(H()),_meta:X(H(),G()).optional()}),Jx=qx.extend({text:H()}),Yx=H().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:`Invalid Base64 string`}),Xx=qx.extend({blob:Yx}),Zx=Z([`user`,`assistant`]),Qx=q({audience:K(Zx).optional(),priority:U().min(0).max(1).optional(),lastModified:Ub({offset:!0}).optional()}),$x=q({...Dx.shape,...Ex.shape,uri:H(),description:$(H()),mimeType:$(H()),size:$(U()),annotations:Qx.optional(),_meta:$(J({}))}),eS=q({...Dx.shape,...Ex.shape,uriTemplate:H(),description:$(H()),mimeType:$(H()),annotations:Qx.optional(),_meta:$(J({}))}),tS=Gx.extend({method:Q(`resources/list`)}),nS=Kx.extend({resources:K($x)}),rS=Gx.extend({method:Q(`resources/templates/list`)}),iS=Kx.extend({resourceTemplates:K(eS)}),aS=cx.extend({uri:H()}),oS=aS,sS=ux.extend({method:Q(`resources/read`),params:oS}),cS=mx.extend({contents:K(Y([Jx,Xx]))}),lS=fx.extend({method:Q(`notifications/resources/list_changed`),params:dx.optional()}),uS=aS,dS=ux.extend({method:Q(`resources/subscribe`),params:uS}),fS=aS,pS=ux.extend({method:Q(`resources/unsubscribe`),params:fS}),mS=q({toolsListChanged:W().optional(),promptsListChanged:W().optional(),resourcesListChanged:W().optional(),resourceSubscriptions:K(H()).optional()}),hS=cx.extend({notifications:mS}),gS=ux.extend({method:Q(`subscriptions/listen`),params:hS}),_S=dx.extend({notifications:mS}),vS=fx.extend({method:Q(`notifications/subscriptions/acknowledged`),params:_S}),yS=px.extend({[Qb]:hx}),bS=mx.extend({_meta:yS}),xS=dx.extend({uri:H()}),SS=fx.extend({method:Q(`notifications/resources/updated`),params:xS}),CS=q({name:H(),description:$(H()),required:$(W())}),wS=q({...Dx.shape,...Ex.shape,description:$(H()),arguments:$(K(CS)),_meta:$(J({}))}),TS=Gx.extend({method:Q(`prompts/list`)}),ES=Kx.extend({prompts:K(wS)}),DS=cx.extend({name:H(),arguments:X(H(),H()).optional()}),OS=ux.extend({method:Q(`prompts/get`),params:DS}),kS=q({type:Q(`text`),text:H(),annotations:Qx.optional(),_meta:X(H(),G()).optional()}),AS=q({type:Q(`image`),data:Yx,mimeType:H(),annotations:Qx.optional(),_meta:X(H(),G()).optional()}),jS=q({type:Q(`audio`),data:Yx,mimeType:H(),annotations:Qx.optional(),_meta:X(H(),G()).optional()}),MS=q({type:Q(`tool_use`),name:H(),id:H(),input:X(H(),G()),_meta:X(H(),G()).optional()}),NS=q({type:Q(`resource`),resource:Y([Jx,Xx]),annotations:Qx.optional(),_meta:X(H(),G()).optional()}),PS=$x.extend({type:Q(`resource_link`)}),FS=Y([kS,AS,jS,PS,NS]),IS=q({role:Zx,content:FS}),LS=mx.extend({description:H().optional(),messages:K(IS)}),RS=fx.extend({method:Q(`notifications/prompts/list_changed`),params:dx.optional()}),zS=q({title:H().optional(),readOnlyHint:W().optional(),destructiveHint:W().optional(),idempotentHint:W().optional(),openWorldHint:W().optional()}),BS=q({taskSupport:Z([`required`,`optional`,`forbidden`]).optional()}),VS=q({...Dx.shape,...Ex.shape,description:H().optional(),inputSchema:q({type:Q(`object`),properties:X(H(),ex).optional(),required:K(H()).optional()}).catchall(G()),outputSchema:J({$schema:H().optional()}).optional(),annotations:zS.optional(),execution:BS.optional(),_meta:X(H(),G()).optional()}),HS=Gx.extend({method:Q(`tools/list`)}),US=Kx.extend({tools:K(VS)}),WS=mx.extend({content:K(FS).default([]),structuredContent:G().optional(),isError:W().optional()}),GS=WS.or(mx.extend({toolResult:G()})),KS=lx.extend({name:H(),arguments:X(H(),G()).optional()}),qS=ux.extend({method:Q(`tools/call`),params:KS}),JS=fx.extend({method:Q(`notifications/tools/list_changed`),params:dx.optional()}),YS=q({autoRefresh:W().default(!0),debounceMs:U().int().nonnegative().default(300)}),XS=Z([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),ZS=cx.extend({level:XS}),QS=ux.extend({method:Q(`logging/setLevel`),params:ZS}),$S=dx.extend({level:XS,logger:H().optional(),data:G()}),eC=fx.extend({method:Q(`notifications/message`),params:$S}),tC=q({name:H().optional()}),nC=q({hints:K(tC).optional(),costPriority:U().min(0).max(1).optional(),speedPriority:U().min(0).max(1).optional(),intelligencePriority:U().min(0).max(1).optional()}),rC=q({mode:Z([`auto`,`required`,`none`]).optional()}),iC=q({type:Q(`tool_result`),toolUseId:H().describe(`The unique identifier for the corresponding tool call.`),content:K(FS),structuredContent:G().optional(),isError:W().optional(),_meta:X(H(),G()).optional()}),aC=lb(`type`,[kS,AS,jS]),oC=lb(`type`,[kS,AS,jS,MS,iC]),sC=q({role:Zx,content:Y([oC,K(oC)]),_meta:X(H(),G()).optional()}),cC=lx.extend({messages:K(sC),modelPreferences:nC.optional(),systemPrompt:H().optional(),includeContext:Z([`none`,`thisServer`,`allServers`]).optional(),temperature:U().optional(),maxTokens:U().int(),stopSequences:K(H()).optional(),metadata:tx.optional(),tools:K(VS).optional(),toolChoice:rC.optional()}),lC=ux.extend({method:Q(`sampling/createMessage`),params:cC}),uC=mx.extend({model:H(),stopReason:$(Z([`endTurn`,`stopSequence`,`maxTokens`]).or(H())),role:Zx,content:aC}),dC=mx.extend({model:H(),stopReason:$(Z([`endTurn`,`stopSequence`,`maxTokens`,`toolUse`]).or(H())),role:Zx,content:Y([oC,K(oC)])}),fC=q({type:Q(`boolean`),title:H().optional(),description:H().optional(),default:W().optional()}),pC=q({type:Q(`string`),title:H().optional(),description:H().optional(),minLength:U().optional(),maxLength:U().optional(),format:Z([`email`,`uri`,`date`,`date-time`]).optional(),default:H().optional()}),mC=q({type:Z([`number`,`integer`]),title:H().optional(),description:H().optional(),minimum:U().optional(),maximum:U().optional(),default:U().optional()}),hC=q({type:Q(`string`),title:H().optional(),description:H().optional(),enum:K(H()),default:H().optional()}),gC=q({type:Q(`string`),title:H().optional(),description:H().optional(),oneOf:K(q({const:H(),title:H()})),default:H().optional()}),_C=q({type:Q(`string`),title:H().optional(),description:H().optional(),enum:K(H()),enumNames:K(H()).optional(),default:H().optional()}),vC=Y([hC,gC]),yC=q({type:Q(`array`),title:H().optional(),description:H().optional(),minItems:U().optional(),maxItems:U().optional(),items:q({type:Q(`string`),enum:K(H())}),default:K(H()).optional()}),bC=q({type:Q(`array`),title:H().optional(),description:H().optional(),minItems:U().optional(),maxItems:U().optional(),items:q({anyOf:K(q({const:H(),title:H()}))}),default:K(H()).optional()}),xC=Y([yC,bC]),SC=Y([_C,vC,xC]),CC=Y([SC,fC,pC,mC]),wC=lx.extend({mode:Q(`form`).optional(),message:H(),requestedSchema:q({type:Q(`object`),properties:X(H(),CC),required:K(H()).optional()}).catchall(G())}),TC=lx.extend({mode:Q(`url`),message:H(),elicitationId:H(),url:H().url()}),EC=Y([wC,TC]),DC=ux.extend({method:Q(`elicitation/create`),params:EC}),OC=dx.extend({elicitationId:H()}),kC=fx.extend({method:Q(`notifications/elicitation/complete`),params:OC}),AC=mx.extend({action:Z([`accept`,`decline`,`cancel`]),content:Bb(e=>e===null?void 0:e,X(H(),Y([H(),U(),W(),K(H())])).optional())}),jC=q({type:Q(`ref/resource`),uri:H()}),MC=q({type:Q(`ref/prompt`),name:H()}),NC=cx.extend({ref:Y([MC,jC]),argument:q({name:H(),value:H()}),context:q({arguments:X(H(),H()).optional()}).optional()}),PC=ux.extend({method:Q(`completion/complete`),params:NC}),FC=mx.extend({completion:J({values:K(H()).max(100),total:$(U().int()),hasMore:$(W())})}),IC=q({uri:H().startsWith(`file://`),name:H().optional(),_meta:X(H(),G()).optional()}),LC=ux.extend({method:Q(`roots/list`),params:cx.optional()}),RC=mx.extend({roots:K(IC)}),zC=fx.extend({method:Q(`notifications/roots/list_changed`),params:dx.optional()}),BC=J({ttl:U().optional(),pollInterval:U().optional()}),VC=Z([`working`,`input_required`,`completed`,`failed`,`cancelled`]),HC=q({taskId:H(),status:VC,ttl:Y([U(),$y()]),createdAt:H(),lastUpdatedAt:H(),pollInterval:$(U()),statusMessage:$(H())}),UC=mx.extend({task:HC}),WC=dx.merge(HC),GC=fx.extend({method:Q(`notifications/tasks/status`),params:WC}),KC=ux.extend({method:Q(`tasks/get`),params:cx.extend({taskId:H()})}),qC=mx.merge(HC),JC=ux.extend({method:Q(`tasks/result`),params:cx.extend({taskId:H()})}),YC=mx.loose(),XC=Gx.extend({method:Q(`tasks/list`)}),ZC=Kx.extend({tasks:K(HC)}),QC=ux.extend({method:Q(`tasks/cancel`),params:cx.extend({taskId:H()})}),$C=mx.merge(HC),ew=Y([Bx,Px,Rx,PC,QS,OS,TS,tS,rS,sS,dS,pS,gS,qS,HS]),tw=Y([wx,Ux,Lx,zC]),nw=Y([Sx,uC,dC,AC,RC]),rw=Y([Bx,lC,DC,LC]),iw=Y([wx,Ux,eC,SS,lS,JS,RS,vS,kC]),aw=Y([Sx,Ix,zx,FC,LS,ES,nS,iS,cS,WS,US,bS]),ow=Ay().superRefine((e,t)=>{if(!URL.canParse(e))return t.addIssue({code:Vb.custom,message:`URL must be parseable`,fatal:!0}),Ff}).refine(e=>{let t=new URL(e);return t.protocol!==`javascript:`&&t.protocol!==`data:`&&t.protocol!==`vbscript:`},{message:`URL cannot use javascript:, data:, or vbscript: scheme`}),sw=J({resource:H().url(),authorization_servers:K(ow).optional(),jwks_uri:H().url().optional(),scopes_supported:K(H()).optional(),bearer_methods_supported:K(H()).optional(),resource_signing_alg_values_supported:K(H()).optional(),resource_name:H().optional(),resource_documentation:H().optional(),resource_policy_uri:H().url().optional(),resource_tos_uri:H().url().optional(),tls_client_certificate_bound_access_tokens:W().optional(),authorization_details_types_supported:K(H()).optional(),dpop_signing_alg_values_supported:K(H()).optional(),dpop_bound_access_tokens_required:W().optional()}),cw=J({issuer:H(),authorization_endpoint:ow,token_endpoint:ow,registration_endpoint:ow.optional(),scopes_supported:K(H()).optional(),response_types_supported:K(H()),response_modes_supported:K(H()).optional(),grant_types_supported:K(H()).optional(),token_endpoint_auth_methods_supported:K(H()).optional(),token_endpoint_auth_signing_alg_values_supported:K(H()).optional(),service_documentation:ow.optional(),revocation_endpoint:ow.optional(),revocation_endpoint_auth_methods_supported:K(H()).optional(),revocation_endpoint_auth_signing_alg_values_supported:K(H()).optional(),introspection_endpoint:H().optional(),introspection_endpoint_auth_methods_supported:K(H()).optional(),introspection_endpoint_auth_signing_alg_values_supported:K(H()).optional(),code_challenge_methods_supported:K(H()).optional(),client_id_metadata_document_supported:W().optional(),authorization_response_iss_parameter_supported:W().optional().catch(void 0),dpop_signing_alg_values_supported:K(H()).optional()}),lw=J({issuer:H(),authorization_endpoint:ow,token_endpoint:ow,userinfo_endpoint:ow.optional(),jwks_uri:ow,registration_endpoint:ow.optional(),scopes_supported:K(H()).optional(),response_types_supported:K(H()),response_modes_supported:K(H()).optional(),grant_types_supported:K(H()).optional(),acr_values_supported:K(H()).optional(),subject_types_supported:K(H()),id_token_signing_alg_values_supported:K(H()),id_token_encryption_alg_values_supported:K(H()).optional(),id_token_encryption_enc_values_supported:K(H()).optional(),userinfo_signing_alg_values_supported:K(H()).optional(),userinfo_encryption_alg_values_supported:K(H()).optional(),userinfo_encryption_enc_values_supported:K(H()).optional(),request_object_signing_alg_values_supported:K(H()).optional(),request_object_encryption_alg_values_supported:K(H()).optional(),request_object_encryption_enc_values_supported:K(H()).optional(),token_endpoint_auth_methods_supported:K(H()).optional(),token_endpoint_auth_signing_alg_values_supported:K(H()).optional(),display_values_supported:K(H()).optional(),claim_types_supported:K(H()).optional(),claims_supported:K(H()).optional(),service_documentation:H().optional(),claims_locales_supported:K(H()).optional(),ui_locales_supported:K(H()).optional(),claims_parameter_supported:W().optional(),request_parameter_supported:W().optional(),request_uri_parameter_supported:W().optional(),require_request_uri_registration:W().optional(),op_policy_uri:ow.optional(),op_tos_uri:ow.optional(),client_id_metadata_document_supported:W().optional(),authorization_response_iss_parameter_supported:W().optional().catch(void 0)}),uw=q({...lw.shape,...cw.pick({code_challenge_methods_supported:!0}).shape}),dw=q({access_token:H(),id_token:H().optional(),token_type:H(),expires_in:Gb().optional(),scope:H().optional(),refresh_token:H().optional(),issuer:H().optional().catch(void 0)}).strip(),fw=q({issued_token_type:Q(`urn:ietf:params:oauth:token-type:id-jag`),access_token:H(),token_type:H().optional(),expires_in:U().optional(),scope:H().optional()}).strip(),pw=q({error:H(),error_description:H().optional(),error_uri:H().optional()}),mw=ow.optional().or(Q(``).transform(()=>void 0)),hw=q({redirect_uris:K(ow),token_endpoint_auth_method:H().optional(),grant_types:K(H()).optional(),response_types:K(H()).optional(),application_type:H().optional(),client_name:H().optional(),client_uri:ow.optional(),logo_uri:mw,scope:H().optional(),contacts:K(H()).optional(),tos_uri:mw,policy_uri:H().optional(),jwks_uri:ow.optional(),jwks:tb().optional(),software_id:H().optional(),software_version:H().optional(),software_statement:H().optional()}).strip(),gw=q({client_id:H(),client_secret:H().optional(),client_id_issued_at:U().optional(),client_secret_expires_at:U().optional(),issuer:H().optional().catch(void 0)}).strip(),_w=hw.merge(gw),vw=q({error:H(),error_description:H().optional()}).strip(),yw=q({token:H(),token_type_hint:H().optional()}).strip(),bw=Symbol.for(`mcp.sdk.errorBrands`);function xw(e,t){let n=new Set,r=t;for(;typeof r==`function`;){let e=r.mcpBrand;Object.prototype.hasOwnProperty.call(r,`mcpBrand`)&&typeof e==`string`&&n.add(e),r=Object.getPrototypeOf(r)}n.size!==0&&Object.defineProperty(e,bw,{value:n,enumerable:!1,configurable:!0})}function Sw(e,t){try{if(typeof t==`object`&&t&&Object.prototype.hasOwnProperty.call(e,`mcpBrand`)&&typeof e.mcpBrand==`string`&&Object.prototype.hasOwnProperty.call(t,bw)){let n=t[bw];if(n&&typeof n.has==`function`&&n.has(e.mcpBrand))return!0}}catch{}return Function.prototype[Symbol.hasInstance].call(e,t)}(class e extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.OAuthError`})}static[Symbol.hasInstance](e){return Sw(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Sw(this,e)}constructor(e,t,n){super(t),this.code=e,this.errorUri=n,this.name=`OAuthError`,xw(this,new.target)}toResponseObject(){let e={error:this.code,error_description:this.message};return this.errorUri&&(e.error_uri=this.errorUri),e}static fromResponse(t){return new e(t.error,t.error_description??t.error,t.error_uri)}});var Cw=function(e){return e.NotConnected=`NOT_CONNECTED`,e.AlreadyConnected=`ALREADY_CONNECTED`,e.NotInitialized=`NOT_INITIALIZED`,e.CapabilityNotSupported=`CAPABILITY_NOT_SUPPORTED`,e.RequestTimeout=`REQUEST_TIMEOUT`,e.ConnectionClosed=`CONNECTION_CLOSED`,e.SendFailed=`SEND_FAILED`,e.InvalidResult=`INVALID_RESULT`,e.UnsupportedResultType=`UNSUPPORTED_RESULT_TYPE`,e.InputRequiredRoundsExceeded=`INPUT_REQUIRED_ROUNDS_EXCEEDED`,e.ListPaginationExceeded=`LIST_PAGINATION_EXCEEDED`,e.MethodNotSupportedByProtocolVersion=`METHOD_NOT_SUPPORTED_BY_PROTOCOL_VERSION`,e.EraNegotiationFailed=`ERA_NEGOTIATION_FAILED`,e.ClientHttpNotImplemented=`CLIENT_HTTP_NOT_IMPLEMENTED`,e.ClientHttpAuthentication=`CLIENT_HTTP_AUTHENTICATION`,e.ClientHttpForbidden=`CLIENT_HTTP_FORBIDDEN`,e.ClientHttpUnexpectedContent=`CLIENT_HTTP_UNEXPECTED_CONTENT`,e.ClientHttpFailedToOpenStream=`CLIENT_HTTP_FAILED_TO_OPEN_STREAM`,e.ClientHttpFailedToTerminateSession=`CLIENT_HTTP_FAILED_TO_TERMINATE_SESSION`,e}({}),ww=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.SdkError`})}static[Symbol.hasInstance](e){return Sw(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Sw(this,e)}constructor(e,t,n,r){super(t,r),this.code=e,this.data=n,this.name=`SdkError`,xw(this,new.target)}};(class extends ww{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.SdkHttpError`})}constructor(e,t,n,r){super(e,t,n,r),this.name=`SdkHttpError`}get status(){return this.data.status}get statusText(){return this.data.statusText}});var Tw=`2026-07-28`;function Ew(e){return e>=Tw}function Dw(e){let t=e.structuredContent;return t===void 0||typeof t==`object`&&t&&!Array.isArray(t)||(e.content?.some(e=>e.type===`text`)??!1)?e:{...e,content:[...e.content??[],{type:`text`,text:JSON.stringify(t)}]}}var Ow=[`task`,`inputRequests`,`requestState`];function kw(e){return typeof e!=`object`||!e||Array.isArray(e)||e.content!==void 0||Ow.some(t=>t in e)?e:{...e,content:[]}}function Aw(){let e=Ib(()=>Y([H(),U(),W(),$y(),X(H(),e),K(e)])),t=X(H(),e),n=Y([H(),U().int()]),r=H(),i=q({ttl:U().optional()}),a=q({taskId:H()}),o=J({progressToken:n.optional(),"io.modelcontextprotocol/related-task":a.optional()}),s=q({_meta:o.optional()}),c=s.extend({task:i.optional()}),l=q({method:H(),params:s.loose().optional()}),u=q({_meta:o.optional()}),d=q({method:H(),params:u.loose().optional()}),f=J({_meta:o.optional()}),p=Y([H(),U().int()]),m=f.strict(),h=u.extend({requestId:p.optional(),reason:H().optional()}),g=d.extend({method:Q(`notifications/cancelled`),params:h}),_=q({src:H(),mimeType:H().optional(),sizes:K(H()).optional(),theme:Z([`light`,`dark`]).optional()}),v=q({icons:K(_).optional()}),y=q({name:H(),title:H().optional()}),b=y.extend({...y.shape,...v.shape,version:H(),websiteUrl:H().optional(),description:H().optional()}),x=Bb(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,db(q({form:db(q({applyDefaults:W().optional()}),t).optional(),url:t.optional()}),t.optional())),S=J({list:t.optional(),cancel:t.optional(),requests:J({sampling:J({createMessage:t.optional()}).optional(),elicitation:J({create:t.optional()}).optional()}).optional()}),C=J({list:t.optional(),cancel:t.optional(),requests:J({tools:J({call:t.optional()}).optional()}).optional()}),w=q({experimental:X(H(),t).optional(),sampling:q({context:t.optional(),tools:t.optional()}).optional(),elicitation:x.optional(),roots:q({listChanged:W().optional()}).optional(),tasks:S.optional(),extensions:X(H(),t).optional()}),T=s.extend({protocolVersion:H(),capabilities:w,clientInfo:b}),ee=l.extend({method:Q(`initialize`),params:T}),E=q({experimental:X(H(),t).optional(),logging:t.optional(),completions:t.optional(),prompts:q({listChanged:W().optional()}).optional(),resources:q({subscribe:W().optional(),listChanged:W().optional()}).optional(),tools:q({listChanged:W().optional()}).optional(),tasks:C.optional(),extensions:X(H(),t).optional()}),D=f.extend({protocolVersion:H(),capabilities:E,serverInfo:b,instructions:H().optional()}),O=d.extend({method:Q(`notifications/initialized`),params:u.optional()}),k=l.extend({method:Q(`ping`),params:s.optional()}),A=q({progress:U(),total:$(U()),message:$(H())}),te=q({...u.shape,...A.shape,progressToken:n}),j=d.extend({method:Q(`notifications/progress`),params:te}),M=s.extend({cursor:r.optional()}),ne=l.extend({params:M.optional()}),re=f.extend({nextCursor:r.optional()}),ie=q({uri:H(),mimeType:$(H()),_meta:X(H(),G()).optional()}),ae=ie.extend({text:H()}),oe=H().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:`Invalid Base64 string`}),se=ie.extend({blob:oe}),ce=Z([`user`,`assistant`]),le=q({audience:K(ce).optional(),priority:U().min(0).max(1).optional(),lastModified:Ub({offset:!0}).optional()}),ue=q({...y.shape,...v.shape,uri:H(),description:$(H()),mimeType:$(H()),size:$(U()),annotations:le.optional(),_meta:$(J({}))}),de=q({...y.shape,...v.shape,uriTemplate:H(),description:$(H()),mimeType:$(H()),annotations:le.optional(),_meta:$(J({}))}),fe=ne.extend({method:Q(`resources/list`)}),pe=re.extend({resources:K(ue)}),me=ne.extend({method:Q(`resources/templates/list`)}),he=re.extend({resourceTemplates:K(de)}),N=s.extend({uri:H()}),P=N,ge=l.extend({method:Q(`resources/read`),params:P}),_e=f.extend({contents:K(Y([ae,se]))}),ve=d.extend({method:Q(`notifications/resources/list_changed`),params:u.optional()}),ye=N,be=l.extend({method:Q(`resources/subscribe`),params:ye}),xe=N,Se=l.extend({method:Q(`resources/unsubscribe`),params:xe}),Ce=u.extend({uri:H()}),we=d.extend({method:Q(`notifications/resources/updated`),params:Ce}),Te=q({name:H(),description:$(H()),required:$(W())}),Ee=q({...y.shape,...v.shape,description:$(H()),arguments:$(K(Te)),_meta:$(J({}))}),De=ne.extend({method:Q(`prompts/list`)}),Oe=re.extend({prompts:K(Ee)}),ke=s.extend({name:H(),arguments:X(H(),H()).optional()}),Ae=l.extend({method:Q(`prompts/get`),params:ke}),je=q({type:Q(`text`),text:H(),annotations:le.optional(),_meta:X(H(),G()).optional()}),Me=q({type:Q(`image`),data:oe,mimeType:H(),annotations:le.optional(),_meta:X(H(),G()).optional()}),Ne=q({type:Q(`audio`),data:oe,mimeType:H(),annotations:le.optional(),_meta:X(H(),G()).optional()}),Pe=q({type:Q(`tool_use`),name:H(),id:H(),input:X(H(),G()),_meta:X(H(),G()).optional()}),Fe=q({type:Q(`resource`),resource:Y([ae,se]),annotations:le.optional(),_meta:X(H(),G()).optional()}),Ie=ue.extend({type:Q(`resource_link`)}),Le=Y([je,Me,Ne,Ie,Fe]),Re=q({role:ce,content:Le}),ze=f.extend({description:H().optional(),messages:K(Re)}),Be=d.extend({method:Q(`notifications/prompts/list_changed`),params:u.optional()}),Ve=q({title:H().optional(),readOnlyHint:W().optional(),destructiveHint:W().optional(),idempotentHint:W().optional(),openWorldHint:W().optional()}),He=q({taskSupport:Z([`required`,`optional`,`forbidden`]).optional()}),Ue=q({...y.shape,...v.shape,description:H().optional(),inputSchema:q({type:Q(`object`),properties:X(H(),e).optional(),required:K(H()).optional()}).catchall(G()),outputSchema:q({type:Q(`object`),properties:X(H(),e).optional(),required:K(H()).optional()}).catchall(G()).optional(),annotations:Ve.optional(),execution:He.optional(),_meta:X(H(),G()).optional()}),We=ne.extend({method:Q(`tools/list`)}),Ge=re.extend({tools:K(Ue)}),Ke=f.extend({content:K(Le),structuredContent:X(H(),G()).optional(),isError:W().optional()}),qe=c.extend({name:H(),arguments:X(H(),G()).optional()}),Je=l.extend({method:Q(`tools/call`),params:qe}),Ye=d.extend({method:Q(`notifications/tools/list_changed`),params:u.optional()}),Xe=Z([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),Ze=s.extend({level:Xe}),Qe=l.extend({method:Q(`logging/setLevel`),params:Ze}),$e=u.extend({level:Xe,logger:H().optional(),data:G()}),et=d.extend({method:Q(`notifications/message`),params:$e}),tt=q({name:H().optional()}),nt=q({hints:K(tt).optional(),costPriority:U().min(0).max(1).optional(),speedPriority:U().min(0).max(1).optional(),intelligencePriority:U().min(0).max(1).optional()}),rt=q({mode:Z([`auto`,`required`,`none`]).optional()}),it=q({type:Q(`tool_result`),toolUseId:H().describe(`The unique identifier for the corresponding tool call.`),content:K(Le),structuredContent:q({}).loose().optional(),isError:W().optional(),_meta:X(H(),G()).optional()}),at=lb(`type`,[je,Me,Ne]),ot=lb(`type`,[je,Me,Ne,Pe,it]),st=q({role:ce,content:Y([ot,K(ot)]),_meta:X(H(),G()).optional()}),ct=c.extend({messages:K(st),modelPreferences:nt.optional(),systemPrompt:H().optional(),includeContext:Z([`none`,`thisServer`,`allServers`]).optional(),temperature:U().optional(),maxTokens:U().int(),stopSequences:K(H()).optional(),metadata:t.optional(),tools:K(Ue).optional(),toolChoice:rt.optional()}),lt=l.extend({method:Q(`sampling/createMessage`),params:ct}),ut=f.extend({model:H(),stopReason:$(Z([`endTurn`,`stopSequence`,`maxTokens`]).or(H())),role:ce,content:at}),dt=f.extend({model:H(),stopReason:$(Z([`endTurn`,`stopSequence`,`maxTokens`,`toolUse`]).or(H())),role:ce,content:Y([ot,K(ot)])}),ft=q({type:Q(`boolean`),title:H().optional(),description:H().optional(),default:W().optional()}),pt=q({type:Q(`string`),title:H().optional(),description:H().optional(),minLength:U().optional(),maxLength:U().optional(),format:Z([`email`,`uri`,`date`,`date-time`]).optional(),default:H().optional()}),mt=q({type:Z([`number`,`integer`]),title:H().optional(),description:H().optional(),minimum:U().optional(),maximum:U().optional(),default:U().optional()}),ht=q({type:Q(`string`),title:H().optional(),description:H().optional(),enum:K(H()),default:H().optional()}),gt=q({type:Q(`string`),title:H().optional(),description:H().optional(),oneOf:K(q({const:H(),title:H()})),default:H().optional()}),_t=q({type:Q(`string`),title:H().optional(),description:H().optional(),enum:K(H()),enumNames:K(H()).optional(),default:H().optional()}),vt=Y([ht,gt]),yt=q({type:Q(`array`),title:H().optional(),description:H().optional(),minItems:U().optional(),maxItems:U().optional(),items:q({type:Q(`string`),enum:K(H())}),default:K(H()).optional()}),bt=q({type:Q(`array`),title:H().optional(),description:H().optional(),minItems:U().optional(),maxItems:U().optional(),items:q({anyOf:K(q({const:H(),title:H()}))}),default:K(H()).optional()}),xt=Y([yt,bt]),St=Y([_t,vt,xt]),Ct=Y([St,ft,pt,mt]),wt=c.extend({mode:Q(`form`).optional(),message:H(),requestedSchema:q({type:Q(`object`),properties:X(H(),Ct),required:K(H()).optional()}).catchall(G())}),Tt=c.extend({mode:Q(`url`),message:H(),elicitationId:H(),url:H().url()}),Et=Y([wt,Tt]),Dt=l.extend({method:Q(`elicitation/create`),params:Et}),Ot=u.extend({elicitationId:H()}),kt=d.extend({method:Q(`notifications/elicitation/complete`),params:Ot}),At=f.extend({action:Z([`accept`,`decline`,`cancel`]),content:Bb(e=>e===null?void 0:e,X(H(),Y([H(),U(),W(),K(H())])).optional())}),jt=q({type:Q(`ref/resource`),uri:H()}),F=q({type:Q(`ref/prompt`),name:H()}),Mt=s.extend({ref:Y([F,jt]),argument:q({name:H(),value:H()}),context:q({arguments:X(H(),H()).optional()}).optional()}),Nt=l.extend({method:Q(`completion/complete`),params:Mt}),Pt=f.extend({completion:J({values:K(H()).max(100),total:$(U().int()),hasMore:$(W())})}),Ft=q({uri:H().startsWith(`file://`),name:H().optional(),_meta:X(H(),G()).optional()}),It=l.extend({method:Q(`roots/list`),params:s.optional()}),Lt=f.extend({roots:K(Ft)}),Rt=d.extend({method:Q(`notifications/roots/list_changed`),params:u.optional()}),zt=J({ttl:U().optional(),pollInterval:U().optional()}),Bt=Z([`working`,`input_required`,`completed`,`failed`,`cancelled`]),Vt=q({taskId:H(),status:Bt,ttl:Y([U(),$y()]),createdAt:H(),lastUpdatedAt:H(),pollInterval:$(U()),statusMessage:$(H())}),Ht=f.extend({task:Vt}),Ut=u.merge(Vt),Wt=d.extend({method:Q(`notifications/tasks/status`),params:Ut}),Gt=l.extend({method:Q(`tasks/get`),params:s.extend({taskId:H()})}),Kt=f.merge(Vt),qt=l.extend({method:Q(`tasks/result`),params:s.extend({taskId:H()})}),Jt=f.loose(),I=ne.extend({method:Q(`tasks/list`)}),Yt=re.extend({tasks:K(Vt)}),Xt=l.extend({method:Q(`tasks/cancel`),params:s.extend({taskId:H()})});return{JSONValueSchema:e,JSONObjectSchema:t,ProgressTokenSchema:n,CursorSchema:r,TaskMetadataSchema:i,RelatedTaskMetadataSchema:a,RequestMetaSchema:o,BaseRequestParamsSchema:s,TaskAugmentedRequestParamsSchema:c,RequestSchema:l,NotificationsParamsSchema:u,NotificationSchema:d,ResultSchema:f,RequestIdSchema:p,EmptyResultSchema:m,CancelledNotificationParamsSchema:h,CancelledNotificationSchema:g,IconSchema:_,IconsSchema:v,BaseMetadataSchema:y,ImplementationSchema:b,ClientTasksCapabilitySchema:S,ServerTasksCapabilitySchema:C,ClientCapabilitiesSchema:w,InitializeRequestParamsSchema:T,InitializeRequestSchema:ee,ServerCapabilitiesSchema:E,InitializeResultSchema:D,InitializedNotificationSchema:O,PingRequestSchema:k,ProgressSchema:A,ProgressNotificationParamsSchema:te,ProgressNotificationSchema:j,PaginatedRequestParamsSchema:M,PaginatedRequestSchema:ne,PaginatedResultSchema:re,ResourceContentsSchema:ie,TextResourceContentsSchema:ae,BlobResourceContentsSchema:se,RoleSchema:ce,AnnotationsSchema:le,ResourceSchema:ue,ResourceTemplateSchema:de,ListResourcesRequestSchema:fe,ListResourcesResultSchema:pe,ListResourceTemplatesRequestSchema:me,ListResourceTemplatesResultSchema:he,ResourceRequestParamsSchema:N,ReadResourceRequestParamsSchema:P,ReadResourceRequestSchema:ge,ReadResourceResultSchema:_e,ResourceListChangedNotificationSchema:ve,SubscribeRequestParamsSchema:ye,SubscribeRequestSchema:be,UnsubscribeRequestParamsSchema:xe,UnsubscribeRequestSchema:Se,ResourceUpdatedNotificationParamsSchema:Ce,ResourceUpdatedNotificationSchema:we,PromptArgumentSchema:Te,PromptSchema:Ee,ListPromptsRequestSchema:De,ListPromptsResultSchema:Oe,GetPromptRequestParamsSchema:ke,GetPromptRequestSchema:Ae,TextContentSchema:je,ImageContentSchema:Me,AudioContentSchema:Ne,ToolUseContentSchema:Pe,EmbeddedResourceSchema:Fe,ResourceLinkSchema:Ie,ContentBlockSchema:Le,PromptMessageSchema:Re,GetPromptResultSchema:ze,PromptListChangedNotificationSchema:Be,ToolAnnotationsSchema:Ve,ToolExecutionSchema:He,ToolSchema:Ue,ListToolsRequestSchema:We,ListToolsResultSchema:Ge,CallToolResultSchema:Ke,CallToolRequestParamsSchema:qe,CallToolRequestSchema:Je,ToolListChangedNotificationSchema:Ye,LoggingLevelSchema:Xe,SetLevelRequestParamsSchema:Ze,SetLevelRequestSchema:Qe,LoggingMessageNotificationParamsSchema:$e,LoggingMessageNotificationSchema:et,ModelHintSchema:tt,ModelPreferencesSchema:nt,ToolChoiceSchema:rt,ToolResultContentSchema:it,SamplingContentSchema:at,SamplingMessageContentBlockSchema:ot,SamplingMessageSchema:st,CreateMessageRequestParamsSchema:ct,CreateMessageRequestSchema:lt,CreateMessageResultSchema:ut,CreateMessageResultWithToolsSchema:dt,BooleanSchemaSchema:ft,StringSchemaSchema:pt,NumberSchemaSchema:mt,UntitledSingleSelectEnumSchemaSchema:ht,TitledSingleSelectEnumSchemaSchema:gt,LegacyTitledEnumSchemaSchema:_t,SingleSelectEnumSchemaSchema:vt,UntitledMultiSelectEnumSchemaSchema:yt,TitledMultiSelectEnumSchemaSchema:bt,MultiSelectEnumSchemaSchema:xt,EnumSchemaSchema:St,PrimitiveSchemaDefinitionSchema:Ct,ElicitRequestFormParamsSchema:wt,ElicitRequestURLParamsSchema:Tt,ElicitRequestParamsSchema:Et,ElicitRequestSchema:Dt,ElicitationCompleteNotificationParamsSchema:Ot,ElicitationCompleteNotificationSchema:kt,ElicitResultSchema:At,ResourceTemplateReferenceSchema:jt,PromptReferenceSchema:F,CompleteRequestParamsSchema:Mt,CompleteRequestSchema:Nt,CompleteResultSchema:Pt,RootSchema:Ft,ListRootsRequestSchema:It,ListRootsResultSchema:Lt,RootsListChangedNotificationSchema:Rt,TaskCreationParamsSchema:zt,TaskStatusSchema:Bt,TaskSchema:Vt,CreateTaskResultSchema:Ht,TaskStatusNotificationParamsSchema:Ut,TaskStatusNotificationSchema:Wt,GetTaskRequestSchema:Gt,GetTaskResultSchema:Kt,GetTaskPayloadRequestSchema:qt,GetTaskPayloadResultSchema:Jt,ListTasksRequestSchema:I,ListTasksResultSchema:Yt,CancelTaskRequestSchema:Xt,CancelTaskResultSchema:f.merge(Vt),ClientRequestSchema:Y([k,ee,Nt,Qe,Ae,De,fe,me,ge,be,Se,Je,We,Gt,qt,I,Xt]),ClientNotificationSchema:Y([g,j,O,Rt,Wt]),ClientResultSchema:Y([m,ut,dt,At,Lt,Kt,Yt,Ht]),ServerRequestSchema:Y([k,lt,Dt,It,Gt,qt,I,Xt]),ServerNotificationSchema:Y([g,j,et,we,ve,Ye,Be,Wt,kt]),ServerResultSchema:Y([m,D,Pt,ze,Oe,pe,he,_e,Ke,Ge,Kt,Yt,Ht]),CallToolResultWireSchema:G().superRefine((e,t)=>{if(typeof e==`object`&&e&&!Array.isArray(e)&&e.content===void 0){for(let n of Ow)if(n in e){t.addIssue({code:`custom`,message:`content is required when the body carries '${n}' — another result family cannot default into an empty tools/call success`});return}}}).transform(kw).pipe(Ke)}}var jw;function Mw(){return jw??=Aw()}function Nw(e){return e.type!==`object`}var Pw=new Set([`const`,`enum`,`default`,`examples`]),Fw=new Set([`properties`,`patternProperties`,`$defs`,`definitions`,`dependentSchemas`,`dependencies`]);function Iw(e){return e!==void 0&&!(typeof e==`string`&&e.startsWith(`#`))}function Lw(e){let t=typeof e.$schema==`string`?e.$schema:void 0;if(Iw(e.$id))return{...t!==void 0&&{$schema:t},type:`object`,properties:{result:e},required:[`result`]};let n=xd(e.$schema)&&e.$recursiveAnchor!==!0,r=(e,t)=>{if(Array.isArray(e))return e.map(e=>r(e,!1));if(typeof e!=`object`||!e||!t&&Iw(e.$id))return e;let i={},a=!1;for(let[o,s]of Object.entries(e))t?i[o]=r(s,!1):(o===`$ref`||o===`$dynamicRef`)&&typeof s==`string`?i[o]=s===`#`?`#/properties/result`:s.startsWith(`#/`)?`#/properties/result${s.slice(1)}`:s:o===`$recursiveRef`&&s===`#`&&n?a=!0:i[o]=Pw.has(o)?s:Fw.has(o)?r(s,!0):r(s,!1);return a&&(`$ref`in i?i.allOf=[...Array.isArray(i.allOf)?i.allOf:[],{$ref:`#/properties/result`}]:i.$ref=`#/properties/result`),i};return{...t!==void 0&&{$schema:t},type:`object`,properties:{result:r(e,!1)},required:[`result`]}}var Rw={ping:null,initialize:null,"completion/complete":null,"logging/setLevel":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"resources/subscribe":null,"resources/unsubscribe":null,"tools/call":null,"tools/list":null,"tasks/get":null,"tasks/result":null,"tasks/list":null,"tasks/cancel":null,"sampling/createMessage":null,"elicitation/create":null,"roots/list":null},zw={"notifications/cancelled":null,"notifications/progress":null,"notifications/initialized":null,"notifications/roots/list_changed":null,"notifications/tasks/status":null,"notifications/message":null,"notifications/resources/updated":null,"notifications/resources/list_changed":null,"notifications/tools/list_changed":null,"notifications/prompts/list_changed":null,"notifications/elicitation/complete":null},Bw={ping:null,initialize:null,"completion/complete":null,"logging/setLevel":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"resources/subscribe":null,"resources/unsubscribe":null,"tools/call":null,"tools/list":null,"sampling/createMessage":null,"elicitation/create":null,"roots/list":null},Vw;function Hw(){if(Vw)return Vw;let e=Mw();return Vw={requestSchemas:{ping:e.PingRequestSchema,initialize:e.InitializeRequestSchema,"completion/complete":e.CompleteRequestSchema,"logging/setLevel":e.SetLevelRequestSchema,"prompts/get":e.GetPromptRequestSchema,"prompts/list":e.ListPromptsRequestSchema,"resources/list":e.ListResourcesRequestSchema,"resources/templates/list":e.ListResourceTemplatesRequestSchema,"resources/read":e.ReadResourceRequestSchema,"resources/subscribe":e.SubscribeRequestSchema,"resources/unsubscribe":e.UnsubscribeRequestSchema,"tools/call":e.CallToolRequestSchema,"tools/list":e.ListToolsRequestSchema,"tasks/get":e.GetTaskRequestSchema,"tasks/result":e.GetTaskPayloadRequestSchema,"tasks/list":e.ListTasksRequestSchema,"tasks/cancel":e.CancelTaskRequestSchema,"sampling/createMessage":e.CreateMessageRequestSchema,"elicitation/create":e.ElicitRequestSchema,"roots/list":e.ListRootsRequestSchema},notificationSchemas:{"notifications/cancelled":e.CancelledNotificationSchema,"notifications/progress":e.ProgressNotificationSchema,"notifications/initialized":e.InitializedNotificationSchema,"notifications/roots/list_changed":e.RootsListChangedNotificationSchema,"notifications/tasks/status":e.TaskStatusNotificationSchema,"notifications/message":e.LoggingMessageNotificationSchema,"notifications/resources/updated":e.ResourceUpdatedNotificationSchema,"notifications/resources/list_changed":e.ResourceListChangedNotificationSchema,"notifications/tools/list_changed":e.ToolListChangedNotificationSchema,"notifications/prompts/list_changed":e.PromptListChangedNotificationSchema,"notifications/elicitation/complete":e.ElicitationCompleteNotificationSchema},resultSchemas:{ping:e.EmptyResultSchema,initialize:e.InitializeResultSchema,"completion/complete":e.CompleteResultSchema,"logging/setLevel":e.EmptyResultSchema,"prompts/get":e.GetPromptResultSchema,"prompts/list":e.ListPromptsResultSchema,"resources/list":e.ListResourcesResultSchema,"resources/templates/list":e.ListResourceTemplatesResultSchema,"resources/read":e.ReadResourceResultSchema,"resources/subscribe":e.EmptyResultSchema,"resources/unsubscribe":e.EmptyResultSchema,"tools/call":e.CallToolResultWireSchema,"tools/list":e.ListToolsResultSchema,"sampling/createMessage":e.CreateMessageResultWithToolsSchema,"elicitation/create":e.ElicitResultSchema,"roots/list":e.ListRootsResultSchema}},Vw}function Uw(e){return Object.prototype.hasOwnProperty.call(Rw,e)}function Ww(e){return Object.prototype.hasOwnProperty.call(zw,e)}function Gw(e){return Object.prototype.hasOwnProperty.call(Bw,e)}function Kw(e){return Gw(e)?Hw().resultSchemas[e]:void 0}function qw(e){return Uw(e)?Hw().requestSchemas[e]:void 0}function Jw(e){return Ww(e)?Hw().notificationSchemas[e]:void 0}Object.keys(Rw),Object.keys(zw);function Yw(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Xw(e,t){if(e===void 0)return{ok:!1,reason:`not-in-era`};let n=e.safeParse(t);return n.success?{ok:!0,value:n.data}:{ok:!1,reason:`invalid`,message:String(n.error)}}var Zw={ok:!1,reason:`not-in-era`};function Qw(e){return Yw(e)&&Yw(e.outputSchema)&&Nw(e.outputSchema)}function $w(e){return e}var eT={era:`2025-11-25`,hasRequestMethod:Uw,hasNotificationMethod:Ww,validateRequest:(e,t)=>Xw(qw(e),t),validateResult:(e,t)=>Xw(Kw(e),t),validateNotification:(e,t)=>Xw(Jw(e),t),hasInputRequestMethod:()=>!1,validateInputRequest:()=>Zw,validateInputResponse:()=>Zw,samplingResultVariant:((e,t)=>{let n=Mw();return Xw(e?n.CreateMessageResultWithToolsSchema:n.CreateMessageResultSchema,t)}),outboundEnvelope:e=>void 0,validateEnvelopeMeta:e=>[],projectCallToolResult(e,t){let n=Dw(e),r=n.structuredContent;if(r===void 0)return n;let i=typeof r!=`object`||!r||Array.isArray(r),a=t!==void 0&&Nw(t);return!i&&!a?n:{...n,structuredContent:{result:r}}},decodeResult(e,t){if(Yw(t)&&`resultType`in t){let e={...t};return delete e.resultType,{kind:`complete`,result:$w(e)}}return{kind:`complete`,result:$w(t)}},encodeResult(e,t){if(e!==`tools/list`)return t;let n=t.tools;return!Array.isArray(n)||!n.some(e=>Qw(e))?t:{...t,tools:n.map(e=>Qw(e)?{...e,outputSchema:Lw(e.outputSchema)}:e)}},encodeErrorCode:e=>e===-32002?-32602:e,checkInboundEnvelope:e=>void 0};function tT(){let e=Ib(()=>Y([H(),U(),W(),$y(),X(H(),e),K(e)])),t=X(H(),e),n=Y([H(),U().int()]),r=H(),i=Y([H(),U().int()]),a=Z([`user`,`assistant`]),o=Z([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),s=H().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:`Invalid Base64 string`}),c=q({ttl:U().optional()}),l=q({taskId:H()}),u=J({progressToken:n.optional(),"io.modelcontextprotocol/related-task":l.optional()}),d=q({_meta:u.optional()}),f=d.extend({task:c.optional()}),p=q({_meta:u.optional()}),m=q({method:H(),params:p.loose().optional()}),h=q({src:H(),mimeType:H().optional(),sizes:K(H()).optional(),theme:Z([`light`,`dark`]).optional()}),g=q({icons:K(h).optional()}),_=q({name:H(),title:H().optional()}),v=_.extend({..._.shape,...g.shape,version:H(),websiteUrl:H().optional(),description:H().optional()}),y=Bb(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,db(q({form:db(q({applyDefaults:W().optional()}),t).optional(),url:t.optional()}),t.optional())),b=J({list:t.optional(),cancel:t.optional(),requests:J({sampling:J({createMessage:t.optional()}).optional(),elicitation:J({create:t.optional()}).optional()}).optional()}),x=J({list:t.optional(),cancel:t.optional(),requests:J({tools:J({call:t.optional()}).optional()}).optional()}),S=q({experimental:X(H(),t).optional(),sampling:q({context:t.optional(),tools:t.optional()}).optional(),elicitation:y.optional(),roots:q({listChanged:W().optional()}).optional(),tasks:b.optional(),extensions:X(H(),t).optional()}),C=q({experimental:X(H(),t).optional(),logging:t.optional(),completions:t.optional(),prompts:q({listChanged:W().optional()}).optional(),resources:q({subscribe:W().optional(),listChanged:W().optional()}).optional(),tools:q({listChanged:W().optional()}).optional(),tasks:x.optional(),extensions:X(H(),t).optional()}),w=q({progress:U(),total:$(U()),message:$(H())}),T=q({...p.shape,...w.shape,progressToken:n}),ee=m.extend({method:Q(`notifications/progress`),params:T}),E=p.extend({level:o,logger:H().optional(),data:G()}),D=m.extend({method:Q(`notifications/message`),params:E}),O=q({uri:H(),mimeType:$(H()),_meta:X(H(),G()).optional()}),k=O.extend({text:H()}),A=O.extend({blob:s}),te=q({audience:K(a).optional(),priority:U().min(0).max(1).optional(),lastModified:Ub({offset:!0}).optional()}),j=q({..._.shape,...g.shape,uri:H(),description:$(H()),mimeType:$(H()),size:$(U()),annotations:te.optional(),_meta:$(J({}))}),M=q({..._.shape,...g.shape,uriTemplate:H(),description:$(H()),mimeType:$(H()),annotations:te.optional(),_meta:$(J({}))}),ne=m.extend({method:Q(`notifications/resources/list_changed`),params:p.optional()}),re=p.extend({uri:H()}),ie=m.extend({method:Q(`notifications/resources/updated`),params:re}),ae=q({name:H(),description:$(H()),required:$(W())}),oe=q({..._.shape,...g.shape,description:$(H()),arguments:$(K(ae)),_meta:$(J({}))}),se=m.extend({method:Q(`notifications/prompts/list_changed`),params:p.optional()}),ce=q({type:Q(`text`),text:H(),annotations:te.optional(),_meta:X(H(),G()).optional()}),le=q({type:Q(`image`),data:s,mimeType:H(),annotations:te.optional(),_meta:X(H(),G()).optional()}),ue=q({type:Q(`audio`),data:s,mimeType:H(),annotations:te.optional(),_meta:X(H(),G()).optional()}),de=q({type:Q(`tool_use`),name:H(),id:H(),input:X(H(),G()),_meta:X(H(),G()).optional()}),fe=q({type:Q(`resource`),resource:Y([k,A]),annotations:te.optional(),_meta:X(H(),G()).optional()}),pe=j.extend({type:Q(`resource_link`)}),me=Y([ce,le,ue,pe,fe]),he=q({role:a,content:me}),N=q({title:H().optional(),readOnlyHint:W().optional(),destructiveHint:W().optional(),idempotentHint:W().optional(),openWorldHint:W().optional()}),P=m.extend({method:Q(`notifications/tools/list_changed`),params:p.optional()}),ge=q({name:H().optional()}),_e=q({hints:K(ge).optional(),costPriority:U().min(0).max(1).optional(),speedPriority:U().min(0).max(1).optional(),intelligencePriority:U().min(0).max(1).optional()}),ve=q({mode:Z([`auto`,`required`,`none`]).optional()}),ye=q({type:Q(`boolean`),title:H().optional(),description:H().optional(),default:W().optional()}),be=q({type:Q(`string`),title:H().optional(),description:H().optional(),minLength:U().optional(),maxLength:U().optional(),format:Z([`email`,`uri`,`date`,`date-time`]).optional(),default:H().optional()}),xe=q({type:Z([`number`,`integer`]),title:H().optional(),description:H().optional(),minimum:U().optional(),maximum:U().optional(),default:U().optional()}),Se=q({type:Q(`string`),title:H().optional(),description:H().optional(),enum:K(H()),default:H().optional()}),Ce=q({type:Q(`string`),title:H().optional(),description:H().optional(),oneOf:K(q({const:H(),title:H()})),default:H().optional()}),we=q({type:Q(`string`),title:H().optional(),description:H().optional(),enum:K(H()),enumNames:K(H()).optional(),default:H().optional()}),Te=Y([Se,Ce]),Ee=q({type:Q(`array`),title:H().optional(),description:H().optional(),minItems:U().optional(),maxItems:U().optional(),items:q({type:Q(`string`),enum:K(H())}),default:K(H()).optional()}),De=q({type:Q(`array`),title:H().optional(),description:H().optional(),minItems:U().optional(),maxItems:U().optional(),items:q({anyOf:K(q({const:H(),title:H()}))}),default:K(H()).optional()}),Oe=Y([Ee,De]),ke=Y([we,Te,Oe]),Ae=Y([ke,ye,be,xe]),je=f.extend({mode:Q(`form`).optional(),message:H(),requestedSchema:q({type:Q(`object`),properties:X(H(),Ae),required:K(H()).optional()}).catchall(G())}),Me=q({type:Q(`ref/resource`),uri:H()}),Ne=q({type:Q(`ref/prompt`),name:H()}),Pe=q({uri:H().startsWith(`file://`),name:H().optional(),_meta:X(H(),G()).optional()}),Fe=S.shape,Ie=q({experimental:Fe.experimental,sampling:Fe.sampling,elicitation:Fe.elicitation,roots:Fe.roots,extensions:Fe.extensions}),Le=C.shape,Re=q({experimental:Le.experimental,logging:Le.logging,completions:Le.completions,prompts:Le.prompts,resources:Le.resources,tools:Le.tools,extensions:Le.extensions}),ze=J({progressToken:n.optional(),[Jb]:H(),[Yb]:v.optional(),[Zb]:Ie,[$b]:o.optional()}),Be=q({..._.shape,...g.shape,description:H().optional(),inputSchema:J({$schema:H().optional(),type:Q(`object`)}),outputSchema:J({$schema:H().optional()}).optional(),annotations:N.optional(),_meta:X(H(),G()).optional()}),Ve=q({type:Q(`tool_result`),toolUseId:H(),content:K(me),structuredContent:G().optional(),isError:W().optional(),_meta:X(H(),G()).optional()}),He=Y([ce,le,ue,de,Ve]),Ue=q({role:a,content:Y([He,K(He)]),_meta:X(H(),G()).optional()}),We=H(),Ge=J({[Xb]:v.optional().catch(void 0)}),Ke=Ge.optional();function qe(e){return J({_meta:Ke,resultType:We.default(`complete`),...e})}let Je=qe({}),Ye=qe({nextCursor:r.optional()}),Xe=qe({content:K(me),structuredContent:G().optional(),isError:W().optional()}),Ze=qe({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),tools:K(Be),nextCursor:r.optional()}),Qe=qe({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),prompts:K(oe),nextCursor:r.optional()}),$e=qe({description:H().optional(),messages:K(he)}),et=qe({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),resources:K(j),nextCursor:r.optional()}),tt=qe({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),resourceTemplates:K(M),nextCursor:r.optional()}),nt=qe({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),contents:K(Y([k,A]))}),rt=qe({completion:q({values:K(H()).max(100),total:U().int().optional(),hasMore:W().optional()}).loose()}),it=qe({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`])}),at=qe({ttlMs:U().int().min(0).catch(0),cacheScope:Z([`public`,`private`]).catch(`private`),supportedVersions:K(H()),capabilities:Re,instructions:H().optional()}),ot=q({messages:K(Ue),modelPreferences:_e.optional(),systemPrompt:H().optional(),includeContext:Z([`none`,`thisServer`,`allServers`]).optional(),temperature:U().optional(),maxTokens:U().int(),stopSequences:K(H()).optional(),metadata:t.optional(),tools:K(Be).optional(),toolChoice:ve.optional()}),st=q({method:Q(`sampling/createMessage`),params:ot}),ct=q({method:Q(`roots/list`),params:q({_meta:X(H(),G()).optional()}).optional()}),lt=q({...Ue.shape,model:H(),stopReason:H().optional()}),ut=q({roots:K(Pe)}),dt=q({action:Z([`accept`,`decline`,`cancel`]),content:X(H(),Y([H(),U(),W(),K(H())])).optional()}),ft=q({mode:Q(`url`),message:H(),url:H().url()}),pt=Y([je,ft]),mt=q({method:Q(`elicitation/create`),params:pt}),ht=Y([st,ct,mt]),gt=Y([lt,ut,dt]),_t=X(H(),ht),vt=X(H(),gt),yt=qe({inputRequests:_t.optional(),requestState:H().optional()}),bt={inputResponses:vt.optional(),requestState:H().optional()},xt=q({_meta:ze,...bt}),St=J({progressToken:n.optional()});function Ct(e,t){return q({method:Q(e),params:q({_meta:ze,...t})})}function wt(e,t){return q({method:Q(e),params:q({_meta:St.optional(),...t}).optional()})}let Tt={name:H(),arguments:X(H(),G()).optional(),...bt},Et={cursor:r.optional()},Dt=Ct(`tools/call`,Tt),Ot=Ct(`tools/list`,Et),kt=Ct(`prompts/list`,Et),At=Ct(`prompts/get`,{name:H(),arguments:X(H(),H()).optional(),...bt}),jt=Ct(`resources/list`,Et),F=Ct(`resources/templates/list`,Et),Mt=Ct(`resources/read`,{uri:H(),...bt}),Nt={ref:Y([Ne,Me]),argument:q({name:H(),value:H()}),context:q({arguments:X(H(),H()).optional()}).optional()},Pt=Ct(`completion/complete`,Nt),Ft=Ct(`server/discover`,{}),It=q({toolsListChanged:W().optional(),promptsListChanged:W().optional(),resourcesListChanged:W().optional(),resourceSubscriptions:K(H()).optional()}),Lt={notifications:It},Rt=Ct(`subscriptions/listen`,Lt),zt=Ge.extend({"io.modelcontextprotocol/subscriptionId":i}),Bt=J({_meta:zt,resultType:We.default(`complete`)}),Vt={"tools/call":wt(`tools/call`,Tt),"tools/list":wt(`tools/list`,Et),"prompts/get":wt(`prompts/get`,{name:H(),arguments:X(H(),H()).optional()}),"prompts/list":wt(`prompts/list`,Et),"resources/list":wt(`resources/list`,Et),"resources/templates/list":wt(`resources/templates/list`,Et),"resources/read":wt(`resources/read`,{uri:H()}),"completion/complete":wt(`completion/complete`,Nt),"server/discover":wt(`server/discover`,{}),"subscriptions/listen":wt(`subscriptions/listen`,Lt)};function Ht(e){return J({_meta:Ke,...e})}let Ut={"tools/call":Ht({content:K(me),structuredContent:G().optional(),isError:W().optional()}),"tools/list":Ht({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),tools:K(Be),nextCursor:r.optional()}),"prompts/get":Ht({description:H().optional(),messages:K(he)}),"prompts/list":Ht({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),prompts:K(oe),nextCursor:r.optional()}),"resources/list":Ht({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),resources:K(j),nextCursor:r.optional()}),"resources/templates/list":Ht({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),resourceTemplates:K(M),nextCursor:r.optional()}),"resources/read":Ht({ttlMs:U().int().min(0),cacheScope:Z([`public`,`private`]),contents:K(Y([k,A]))}),"completion/complete":Ht({completion:q({values:K(H()).max(100),total:U().int().optional(),hasMore:W().optional()}).loose()}),"server/discover":Ht({ttlMs:U().int().min(0).catch(0),cacheScope:Z([`public`,`private`]).catch(`private`),supportedVersions:K(H()),capabilities:Re,instructions:H().optional()}),"subscriptions/listen":Ht({})},Wt=J({"io.modelcontextprotocol/subscriptionId":i.optional()}),Gt=q({method:Q(`notifications/subscriptions/acknowledged`),params:q({_meta:Wt.optional(),notifications:It})}),Kt=q({_meta:Wt.optional(),requestId:i,reason:H().optional()}),qt=q({method:Q(`notifications/cancelled`),params:Kt}),Jt={"notifications/cancelled":qt,"notifications/progress":ee,"notifications/message":D,"notifications/resources/updated":ie,"notifications/resources/list_changed":ne,"notifications/tools/list_changed":P,"notifications/prompts/list_changed":se,"notifications/subscriptions/acknowledged":Gt},I=e=>q({jsonrpc:Q(`2.0`),id:Y([H(),U().int()]),result:e}).strict();return{JSONValueSchema:e,JSONObjectSchema:t,ProgressTokenSchema:n,CursorSchema:r,RequestIdSchema:i,RoleSchema:a,LoggingLevelSchema:o,TaskMetadataSchema:c,RelatedTaskMetadataSchema:l,RequestMetaSchema:u,BaseRequestParamsSchema:d,TaskAugmentedRequestParamsSchema:f,NotificationsParamsSchema:p,NotificationSchema:m,IconSchema:h,IconsSchema:g,BaseMetadataSchema:_,ImplementationSchema:v,ClientTasksCapabilitySchema:b,ServerTasksCapabilitySchema:x,ClientCapabilitiesSchema:S,ServerCapabilitiesSchema:C,ProgressSchema:w,ProgressNotificationParamsSchema:T,ProgressNotificationSchema:ee,LoggingMessageNotificationParamsSchema:E,LoggingMessageNotificationSchema:D,ResourceContentsSchema:O,TextResourceContentsSchema:k,BlobResourceContentsSchema:A,AnnotationsSchema:te,ResourceSchema:j,ResourceTemplateSchema:M,ResourceListChangedNotificationSchema:ne,ResourceUpdatedNotificationParamsSchema:re,ResourceUpdatedNotificationSchema:ie,PromptArgumentSchema:ae,PromptSchema:oe,PromptListChangedNotificationSchema:se,TextContentSchema:ce,ImageContentSchema:le,AudioContentSchema:ue,ToolUseContentSchema:de,EmbeddedResourceSchema:fe,ResourceLinkSchema:pe,ContentBlockSchema:me,PromptMessageSchema:he,ToolAnnotationsSchema:N,ToolListChangedNotificationSchema:P,ModelHintSchema:ge,ModelPreferencesSchema:_e,ToolChoiceSchema:ve,BooleanSchemaSchema:ye,StringSchemaSchema:be,NumberSchemaSchema:xe,UntitledSingleSelectEnumSchemaSchema:Se,TitledSingleSelectEnumSchemaSchema:Ce,LegacyTitledEnumSchemaSchema:we,SingleSelectEnumSchemaSchema:Te,UntitledMultiSelectEnumSchemaSchema:Ee,TitledMultiSelectEnumSchemaSchema:De,MultiSelectEnumSchemaSchema:Oe,EnumSchemaSchema:ke,PrimitiveSchemaDefinitionSchema:Ae,ElicitRequestFormParamsSchema:je,ResourceTemplateReferenceSchema:Me,PromptReferenceSchema:Ne,RootSchema:Pe,ClientCapabilities2026Schema:Ie,ServerCapabilities2026Schema:Re,RequestMetaEnvelopeSchema:ze,ToolSchema:Be,ToolResultContentSchema:Ve,SamplingMessageContentBlockSchema:He,SamplingMessageSchema:Ue,ResultTypeSchema:We,ResultMetaSchema:Ge,ResultSchema:Je,PaginatedResultSchema:Ye,CallToolResultSchema:Xe,ListToolsResultSchema:Ze,ListPromptsResultSchema:Qe,GetPromptResultSchema:$e,ListResourcesResultSchema:et,ListResourceTemplatesResultSchema:tt,ReadResourceResultSchema:nt,CompleteResultSchema:rt,CacheableResultSchema:it,DiscoverResultSchema:at,CreateMessageRequestParamsSchema:ot,CreateMessageRequestSchema:st,ListRootsRequestSchema:ct,CreateMessageResultSchema:lt,ListRootsResultSchema:ut,ElicitResultSchema:dt,ElicitRequestURLParamsSchema:ft,ElicitRequestParamsSchema:pt,ElicitRequestSchema:mt,InputRequestSchema:ht,InputResponseSchema:gt,InputRequestsSchema:_t,InputResponsesSchema:vt,InputRequiredResultSchema:yt,InputResponseRequestParamsSchema:xt,CallToolRequestSchema:Dt,ListToolsRequestSchema:Ot,ListPromptsRequestSchema:kt,GetPromptRequestSchema:At,ListResourcesRequestSchema:jt,ListResourceTemplatesRequestSchema:F,ReadResourceRequestSchema:Mt,CompleteRequestSchema:Pt,DiscoverRequestSchema:Ft,SubscriptionFilterSchema:It,SubscriptionsListenRequestSchema:Rt,SubscriptionsListenResultMetaSchema:zt,SubscriptionsListenResultSchema:Bt,dispatchRequestSchemas:Vt,dispatchResultSchemas:Ut,NotificationMetaSchema:Wt,SubscriptionsAcknowledgedNotificationSchema:Gt,CancelledNotificationParamsSchema:Kt,CancelledNotificationSchema:qt,notificationSchemas2026:Jt,JSONRPCResultResponseSchema:I(Je),CallToolResultResponseSchema:I(Y([Xe,yt])),ListToolsResultResponseSchema:I(Ze),ListPromptsResultResponseSchema:I(Qe),GetPromptResultResponseSchema:I(Y([$e,yt])),ListResourcesResultResponseSchema:I(et),ListResourceTemplatesResultResponseSchema:I(tt),ReadResourceResultResponseSchema:I(Y([nt,yt])),CompleteResultResponseSchema:I(rt),DiscoverResultResponseSchema:I(at)}}var nT;function rT(){return nT??=tT()}var iT=[`tools/list`,`prompts/list`,`resources/list`,`resources/templates/list`,`resources/read`,`server/discover`];function aT(e){return iT.includes(e)}var oT=Symbol(`modelcontextprotocol.resultCacheHintFallback`);function sT(e){return e[oT]}function cT(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function lT(e){return e===`public`||e===`private`}var uT=function(e){return e[e.ParseError=-32700]=`ParseError`,e[e.InvalidRequest=-32600]=`InvalidRequest`,e[e.MethodNotFound=-32601]=`MethodNotFound`,e[e.InvalidParams=-32602]=`InvalidParams`,e[e.InternalError=-32603]=`InternalError`,e[e.ResourceNotFound=-32002]=`ResourceNotFound`,e[e.MissingRequiredClientCapability=-32021]=`MissingRequiredClientCapability`,e[e.UnsupportedProtocolVersion=-32022]=`UnsupportedProtocolVersion`,e[e.UrlElicitationRequired=-32042]=`UrlElicitationRequired`,e}({}),dT=class e extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.ProtocolError`})}static[Symbol.hasInstance](e){return Sw(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Sw(this,e)}constructor(e,t,n){super(t),this.code=e,this.data=n,this.name=`ProtocolError`,xw(this,new.target)}static fromError(t,n,r){if(t===uT.UrlElicitationRequired&&r){let e=r;if(e.elicitations)return new pT(e.elicitations,n)}if(t===uT.UnsupportedProtocolVersion&&r){let e=r;if(Array.isArray(e.supported)&&typeof e.requested==`string`)return new mT({supported:e.supported,requested:e.requested},n)}if(t===uT.InvalidParams||t===uT.ResourceNotFound){let e=r;if(typeof e?.uri==`string`&&(t===uT.ResourceNotFound||Object.keys(e).length===1))return new fT(e.uri,n)}if(t===uT.MissingRequiredClientCapability&&r){let e=r;if(e.requiredCapabilities!==null&&typeof e.requiredCapabilities==`object`&&!Array.isArray(e.requiredCapabilities))return new hT({requiredCapabilities:e.requiredCapabilities},n)}return new e(t,n,r)}},fT=class extends dT{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.ResourceNotFoundError`})}constructor(e,t=`Resource not found: ${e}`){super(uT.InvalidParams,t,{uri:e})}get uri(){return this.data.uri}},pT=class extends dT{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.UrlElicitationRequiredError`})}constructor(e,t=`URL elicitation${e.length>1?`s`:``} required`){super(uT.UrlElicitationRequired,t,{elicitations:e})}get elicitations(){return this.data?.elicitations??[]}},mT=class extends dT{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.UnsupportedProtocolVersionError`})}constructor(e,t=`Unsupported protocol version: ${e.requested}`){super(uT.UnsupportedProtocolVersion,t,e)}get supported(){return this.data.supported}get requested(){return this.data.requested}},hT=class extends dT{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.MissingRequiredClientCapabilityError`})}constructor(e,t=`Missing required client capabilities: ${Object.keys(e.requiredCapabilities).join(`, `)}`){super(uT.MissingRequiredClientCapability,t,e)}get requiredCapabilities(){return this.data.requiredCapabilities}},gT=0,_T=`private`,vT=[`tools/call`,`prompts/get`,`resources/read`];function yT(e,t){let n=t.resultType;if(n===void 0)return{...t,resultType:`complete`};if(n===`complete`||vT.includes(e))return t;throw new dT(uT.InternalError,`Handler for ${e} returned resultType '${String(n)}', but results of ${e} only support 'complete' on protocol revision 2026-07-28`)}function bT(e,t){let n=sT(t);if(t.resultType!==`complete`||!aT(e))return n===void 0?t:TT(t);let r=t,i=cT(r.ttlMs)?r.ttlMs:CT(n),a=lT(r.cacheScope)?r.cacheScope:wT(n),o={...r,ttlMs:i,cacheScope:a};return delete o[oT],o}function xT(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ST(e,t){if(t===void 0)return e;let n=e._meta;return n===void 0?{...e,_meta:{[Xb]:t}}:!xT(n)||n[`io.modelcontextprotocol/serverInfo`]!==void 0?e:{...e,_meta:{...n,[Xb]:t}}}function CT(e){return e!==void 0&&cT(e.ttlMs)?e.ttlMs:gT}function wT(e){return e!==void 0&&lT(e.cacheScope)?e.cacheScope:_T}function TT(e){let t={...e};return delete t[oT],t}var ET=[`elicitation/create`,`sampling/createMessage`,`roots/list`],DT;function OT(){if(DT)return DT;let e=rT();return DT={request:{"elicitation/create":q({method:Q(`elicitation/create`),params:e.ElicitRequestParamsSchema}),"sampling/createMessage":q({method:Q(`sampling/createMessage`),params:e.CreateMessageRequestParamsSchema}),"roots/list":q({method:Q(`roots/list`),params:J({}).optional()})},response:{"elicitation/create":e.ElicitResultSchema,"sampling/createMessage":e.CreateMessageResultSchema,"roots/list":e.ListRootsResultSchema}},DT}function kT(e){return ET.includes(e)}function AT(e){return kT(e)?OT().request[e]:void 0}function jT(e){return kT(e)?OT().response[e]:void 0}var MT={"tools/call":null,"tools/list":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"completion/complete":null,"server/discover":null,"subscriptions/listen":null},NT={"notifications/cancelled":null,"notifications/progress":null,"notifications/message":null,"notifications/resources/updated":null,"notifications/resources/list_changed":null,"notifications/tools/list_changed":null,"notifications/prompts/list_changed":null,"notifications/subscriptions/acknowledged":null};function PT(e){return Object.prototype.hasOwnProperty.call(MT,e)}function FT(e){return Object.prototype.hasOwnProperty.call(NT,e)}function IT(e){return Object.prototype.hasOwnProperty.call(MT,e)}function LT(e){return PT(e)?rT().dispatchRequestSchemas[e]:void 0}function RT(e){return IT(e)?rT().dispatchResultSchemas[e]:void 0}function zT(e){return FT(e)?rT().notificationSchemas2026[e]:void 0}Object.keys(MT),Object.keys(NT);function BT(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function VT(e,t){if(e===void 0)return{ok:!1,reason:`not-in-era`};let n=e.safeParse(t);return n.success?{ok:!0,value:n.data}:{ok:!1,reason:`invalid`,message:String(n.error)}}var HT={ok:!1,reason:`not-in-era`},UT=[Jb,Zb];function WT(e,t){let n=t,r=!1,i=()=>(r||=(n={...n},!0),n),a=t.tools;e===`tools/list`&&Array.isArray(a)&&a.some(e=>BT(e)&&`execution`in e)&&(i().tools=a.map(e=>{if(!BT(e)||!(`execution`in e))return e;let t={...e};return delete t.execution,t}));let o=t.capabilities;if(BT(o)&&`tasks`in o){let e={...o};delete e.tasks,i().capabilities=e}return n}var GT={era:`2026-07-28`,hasRequestMethod:PT,hasNotificationMethod:FT,hasInputRequestMethod:e=>AT(e)!==void 0,validateRequest:(e,t)=>VT(LT(e),t),validateResult:(e,t)=>VT(RT(e),t),validateNotification:(e,t)=>VT(zT(e),t),validateInputRequest:(e,t)=>VT(AT(e),t),validateInputResponse:(e,t)=>VT(jT(e),t),samplingResultVariant:()=>HT,outboundEnvelope(e){return{[Jb]:e.protocolVersion,[Yb]:e.clientInfo,[Zb]:e.clientCapabilities,...e.logLevel!==void 0&&{"io.modelcontextprotocol/logLevel":e.logLevel}}},validateEnvelopeMeta(e){let t=[];for(let n of UT)n in e||t.push({key:n,problem:`missing`});let n=rT().RequestMetaEnvelopeSchema.safeParse(e);if(!n.success)for(let e of n.error.issues){let n=e.path.map(String),r=n.length>0?n.join(`.`):`_meta`;n.length===1&&t.some(e=>e.key===r&&e.problem===`missing`)||t.push({key:r,problem:e.message})}return t},projectCallToolResult:e=>Dw(e),inputRequestSchema:AT,decodeResult(e,t){if(!BT(t))return{kind:`invalid`,error:new ww(Cw.InvalidResult,`Invalid result for ${e}: not an object`,{method:e})};let n=t.resultType;if(n===void 0)return{kind:`invalid`,error:new ww(Cw.InvalidResult,`Invalid result for ${e}: missing required resultType — servers implementing protocol revision 2026-07-28 MUST include it (the absent-means-complete bridge applies only to earlier-revision servers)`,{method:e,violation:`missing-resultType`})};if(typeof n!=`string`)return{kind:`invalid`,error:new ww(Cw.InvalidResult,`Invalid result for ${e}: non-string resultType`,{method:e,resultType:n})};if(n===`input_required`){let n=t.inputRequests,r=BT(n)?n:{},i=t.requestState,a=t._meta===void 0?void 0:rT().ResultMetaSchema.safeParse(t._meta),o=a?.success?a.data:void 0;return Object.keys(r).length===0&&typeof i!=`string`?{kind:`invalid`,error:new ww(Cw.InvalidResult,`Invalid result for ${e}: input_required carries neither inputRequests nor requestState (every input_required result must include at least one of the two)`,{method:e,violation:`input-required-missing-both`})}:{kind:`input_required`,inputRequests:r,...typeof i==`string`&&{requestState:i},...o!==void 0&&{_meta:o}}}if(n!==`complete`)return{kind:`invalid`,error:new ww(Cw.UnsupportedResultType,`Unsupported result type '${n}' for ${e}`,{resultType:n,method:e})};let r=qT(),i=Object.hasOwn(r,e)?r[e]:void 0;if(i!==void 0){let n=i.safeParse(t);if(!n.success)return{kind:`invalid`,error:new ww(Cw.InvalidResult,`Invalid result for ${e}: ${n.error}`,{method:e})}}let a={...t};return delete a.resultType,{kind:`complete`,result:a}},encodeResult(e,t,n){return ST(bT(e,yT(e,WT(e,t))),n)},encodeErrorCode:e=>e===-32002?-32602:e,checkInboundEnvelope(e){if(e.envelope===void 0)return`Request is missing the required _meta envelope for protocol revision 2026-07-28 (io.modelcontextprotocol/protocolVersion, io.modelcontextprotocol/clientCapabilities)`;let t=rT().RequestMetaEnvelopeSchema.safeParse(e.envelope);if(!t.success)return`Invalid _meta envelope for protocol revision 2026-07-28: ${t.error.issues.map(e=>e.message).join(`; `)}`}},KT;function qT(){if(KT)return KT;let e=rT();return KT={"tools/call":e.CallToolResultSchema,"tools/list":e.ListToolsResultSchema,"prompts/get":e.GetPromptResultSchema,"prompts/list":e.ListPromptsResultSchema,"resources/list":e.ListResourcesResultSchema,"resources/templates/list":e.ListResourceTemplatesResultSchema,"resources/read":e.ReadResourceResultSchema,"completion/complete":e.CompleteResultSchema,"server/discover":e.DiscoverResultSchema},KT}var JT=`2026-07-28`;function YT(e){return e!==void 0&&Ew(e)?GT:eT}function XT(e){return e.revision===void 0?e.era===`modern`?GT.era:eT.era:YT(e.revision).era}function ZT(e){return $T.some(t=>t.hasRequestMethod(e))}function QT(e){return $T.some(t=>t.hasNotificationMethod(e))}var $T=[eT,GT],eE=yd({AnnotationsSchema:()=>Qx,AudioContentSchema:()=>jS,BaseMetadataSchema:()=>Dx,BaseRequestParamsSchema:()=>cx,BlobResourceContentsSchema:()=>Xx,BooleanSchemaSchema:()=>fC,CallToolRequestParamsSchema:()=>KS,CallToolRequestSchema:()=>qS,CallToolResultSchema:()=>WS,CancelTaskRequestSchema:()=>QC,CancelTaskResultSchema:()=>$C,CancelledNotificationParamsSchema:()=>Cx,CancelledNotificationSchema:()=>wx,ClientCapabilitiesSchema:()=>Mx,ClientNotificationSchema:()=>tw,ClientRequestSchema:()=>ew,ClientResultSchema:()=>nw,ClientTasksCapabilitySchema:()=>Ax,CompatibilityCallToolResultSchema:()=>GS,CompleteRequestParamsSchema:()=>NC,CompleteRequestSchema:()=>PC,CompleteResultSchema:()=>FC,ContentBlockSchema:()=>FS,CreateMessageRequestParamsSchema:()=>cC,CreateMessageRequestSchema:()=>lC,CreateMessageResultSchema:()=>uC,CreateMessageResultWithToolsSchema:()=>dC,CreateTaskResultSchema:()=>UC,CursorSchema:()=>ix,DiscoverRequestSchema:()=>Rx,DiscoverResultSchema:()=>zx,ElicitRequestFormParamsSchema:()=>wC,ElicitRequestParamsSchema:()=>EC,ElicitRequestSchema:()=>DC,ElicitRequestURLParamsSchema:()=>TC,ElicitResultSchema:()=>AC,ElicitationCompleteNotificationParamsSchema:()=>OC,ElicitationCompleteNotificationSchema:()=>kC,EmbeddedResourceSchema:()=>NS,EmptyResultSchema:()=>Sx,EnumSchemaSchema:()=>SC,GetPromptRequestParamsSchema:()=>DS,GetPromptRequestSchema:()=>OS,GetPromptResultSchema:()=>LS,GetTaskPayloadRequestSchema:()=>JC,GetTaskPayloadResultSchema:()=>YC,GetTaskRequestSchema:()=>KC,GetTaskResultSchema:()=>qC,IconSchema:()=>Tx,IconsSchema:()=>Ex,ImageContentSchema:()=>AS,ImplementationSchema:()=>Ox,InitializeRequestParamsSchema:()=>Nx,InitializeRequestSchema:()=>Px,InitializeResultSchema:()=>Ix,InitializedNotificationSchema:()=>Lx,JSONArraySchema:()=>nx,JSONObjectSchema:()=>tx,JSONRPCErrorResponseSchema:()=>yx,JSONRPCMessageSchema:()=>bx,JSONRPCNotificationSchema:()=>_x,JSONRPCRequestSchema:()=>gx,JSONRPCResponseSchema:()=>xx,JSONRPCResultResponseSchema:()=>vx,JSONValueSchema:()=>ex,LegacyTitledEnumSchemaSchema:()=>_C,ListChangedOptionsBaseSchema:()=>YS,ListPromptsRequestSchema:()=>TS,ListPromptsResultSchema:()=>ES,ListResourceTemplatesRequestSchema:()=>rS,ListResourceTemplatesResultSchema:()=>iS,ListResourcesRequestSchema:()=>tS,ListResourcesResultSchema:()=>nS,ListRootsRequestSchema:()=>LC,ListRootsResultSchema:()=>RC,ListTasksRequestSchema:()=>XC,ListTasksResultSchema:()=>ZC,ListToolsRequestSchema:()=>HS,ListToolsResultSchema:()=>US,LoggingLevelSchema:()=>XS,LoggingMessageNotificationParamsSchema:()=>$S,LoggingMessageNotificationSchema:()=>eC,ModelHintSchema:()=>tC,ModelPreferencesSchema:()=>nC,MultiSelectEnumSchemaSchema:()=>xC,NotificationSchema:()=>fx,NotificationsParamsSchema:()=>dx,NumberSchemaSchema:()=>mC,PaginatedRequestParamsSchema:()=>Wx,PaginatedRequestSchema:()=>Gx,PaginatedResultSchema:()=>Kx,PingRequestSchema:()=>Bx,PrimitiveSchemaDefinitionSchema:()=>CC,ProgressNotificationParamsSchema:()=>Hx,ProgressNotificationSchema:()=>Ux,ProgressSchema:()=>Vx,ProgressTokenSchema:()=>rx,PromptArgumentSchema:()=>CS,PromptListChangedNotificationSchema:()=>RS,PromptMessageSchema:()=>IS,PromptReferenceSchema:()=>MC,PromptSchema:()=>wS,ReadResourceRequestParamsSchema:()=>oS,ReadResourceRequestSchema:()=>sS,ReadResourceResultSchema:()=>cS,RelatedTaskMetadataSchema:()=>ox,RequestIdSchema:()=>hx,RequestMetaSchema:()=>sx,RequestSchema:()=>ux,ResourceContentsSchema:()=>qx,ResourceLinkSchema:()=>PS,ResourceListChangedNotificationSchema:()=>lS,ResourceRequestParamsSchema:()=>aS,ResourceSchema:()=>$x,ResourceTemplateReferenceSchema:()=>jC,ResourceTemplateSchema:()=>eS,ResourceUpdatedNotificationParamsSchema:()=>xS,ResourceUpdatedNotificationSchema:()=>SS,ResultMetaObjectSchema:()=>px,ResultSchema:()=>mx,RoleSchema:()=>Zx,RootSchema:()=>IC,RootsListChangedNotificationSchema:()=>zC,SamplingContentSchema:()=>aC,SamplingMessageContentBlockSchema:()=>oC,SamplingMessageSchema:()=>sC,ServerCapabilitiesSchema:()=>Fx,ServerNotificationSchema:()=>iw,ServerRequestSchema:()=>rw,ServerResultSchema:()=>aw,ServerTasksCapabilitySchema:()=>jx,SetLevelRequestParamsSchema:()=>ZS,SetLevelRequestSchema:()=>QS,SingleSelectEnumSchemaSchema:()=>vC,StringSchemaSchema:()=>pC,SubscribeRequestParamsSchema:()=>uS,SubscribeRequestSchema:()=>dS,SubscriptionFilterSchema:()=>mS,SubscriptionsAcknowledgedNotificationParamsSchema:()=>_S,SubscriptionsAcknowledgedNotificationSchema:()=>vS,SubscriptionsListenRequestParamsSchema:()=>hS,SubscriptionsListenRequestSchema:()=>gS,SubscriptionsListenResultMetaSchema:()=>yS,SubscriptionsListenResultSchema:()=>bS,TaskAugmentedRequestParamsSchema:()=>lx,TaskCreationParamsSchema:()=>BC,TaskMetadataSchema:()=>ax,TaskSchema:()=>HC,TaskStatusNotificationParamsSchema:()=>WC,TaskStatusNotificationSchema:()=>GC,TaskStatusSchema:()=>VC,TextContentSchema:()=>kS,TextResourceContentsSchema:()=>Jx,TitledMultiSelectEnumSchemaSchema:()=>bC,TitledSingleSelectEnumSchemaSchema:()=>gC,ToolAnnotationsSchema:()=>zS,ToolChoiceSchema:()=>rC,ToolExecutionSchema:()=>BS,ToolListChangedNotificationSchema:()=>JS,ToolResultContentSchema:()=>iC,ToolSchema:()=>VS,ToolUseContentSchema:()=>MS,UnsubscribeRequestParamsSchema:()=>fS,UnsubscribeRequestSchema:()=>pS,UntitledMultiSelectEnumSchemaSchema:()=>yC,UntitledSingleSelectEnumSchemaSchema:()=>hC}),tE=e=>gx.safeParse(e).success,nE=e=>_x.safeParse(e).success,rE=e=>vx.safeParse(e).success,iE=e=>yx.safeParse(e).success;uT.InvalidRequest,uT.UnsupportedProtocolVersion,uT.InvalidParams,uT.MethodNotFound,uT.InvalidParams,uT.MissingRequiredClientCapability,uT.ParseError,uT.InvalidRequest,uT.MethodNotFound,uT.UnsupportedProtocolVersion,uT.MissingRequiredClientCapability;function aE(e,t){return ay(e,t)}function oE(e){return new Set(e.flatMap(e=>Object.keys(e.shape)))}function sE(e){if(e==null)return!1;let t=typeof e;return t!==`object`&&t!==`function`||!(`~standard`in e)?!1:typeof e[`~standard`]?.validate==`function`}var cE=!1,lE=`draft-2020-12`;function uE(e,t=`input`){let n=e[`~standard`],r;if(n.jsonSchema)r=n.jsonSchema[t]({target:lE});else if(n.vendor===`zod`){if(!(`_zod`in e))throw Error(`Schema appears to be from zod 3, which the SDK cannot convert to JSON Schema. Upgrade to zod >=4.2.0, or wrap your JSON Schema with fromJsonSchema().`);cE||(cE=!0,console.warn("[mcp-sdk] Your zod version does not implement `~standard.jsonSchema` (added in zod 4.2.0). Falling back to z.toJSONSchema(). Upgrade to zod >=4.2.0 to silence this warning.")),r=$v(e,{target:lE,io:t})}else throw Error(`Schema library "${n.vendor}" does not implement StandardJSONSchemaV1 (\`~standard.jsonSchema\`). Upgrade to a version that does, or wrap your JSON Schema with fromJsonSchema().`);if(t===`output`)return r.type===void 0&&dE(r)?{type:`object`,...r}:r;if(r.type!==void 0&&r.type!==`object`)throw Error(`MCP tool and prompt schemas must describe objects (got type: ${JSON.stringify(r.type)}). Wrap your schema in z.object({...}) or equivalent.`);return{type:`object`,...r}}function dE(e){if(`properties`in e||`patternProperties`in e||`additionalProperties`in e||`required`in e)return!0;for(let t of[`oneOf`,`anyOf`,`allOf`]){let n=e[t];if(Array.isArray(n)&&n.length>0)return n.every(e=>typeof e==`object`&&!!e&&(e.type===`object`||dE(e)))}return!1}function fE(e){return e.path?.length?`${e.path.map(e=>String(typeof e==`object`?e.key:e)).join(`.`)}: ${e.message}`:e.message}async function pE(e,t){let n=await e[`~standard`].validate(t);return n.issues&&n.issues.length>0?{success:!1,error:n.issues.map(e=>fE(e)).join(`, `)}:{success:!0,data:n.value}}function mE(e){let t=$v(e,{target:lE,io:`input`});return typeof t.pattern==`string`?t.pattern:void 0}var hE=/\\\.\\d\{(\d+)\}/;function gE(e){let t=hE.exec(e),n=[void 0,-1,0];return t&&n.push(Number(t[1])),[!1,!0].flatMap(e=>[!1,!0].flatMap(t=>n.map(n=>Ub({local:e,offset:t,precision:n}))))}function _E(e,t){let n;switch(e){case`email`:n=[Ey()];break;case`uri`:n=[Ay()];break;case`date`:n=[Wb()];break;case`date-time`:n=gE(t)}return new Set(n.map(e=>mE(e)).filter(e=>e!==void 0))}function vE(e,t,n){return n!==`zod`||_E(e,t).has(t)}function yE(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function bE(e){try{return uE(e,`input`)}catch(e){let t=e instanceof Error?e.message:String(e);throw new dT(uT.InvalidParams,`Elicitation requestedSchema must describe an object with flat primitive properties: ${t}`)}}var xE=new Set([`$comment`,`deprecated`,`description`,`examples`,`readOnly`,`title`,`writeOnly`]);function SE(e){return xE.has(e)||e.startsWith(`x-`)}var CE=new Set([`$schema`,...Object.keys(wC.shape.requestedSchema.shape)]),wE={string:oE([pC,hC,gC,_C]),number:oE([mC]),integer:oE([mC]),boolean:oE([fC]),array:oE([yC,bC])},TE=new Set(pC.shape.format.unwrap().options);function EE(e,t,n,r){if(!yE(e))return e;let i=typeof e.type==`string`&&Object.hasOwn(wE,e.type)?wE[e.type]:void 0;if(i===void 0)return e;let a={};for(let[o,s]of Object.entries(e))i.has(o)||SE(o)?a[o]=s:o===`pattern`&&e.type===`string`&&typeof e.format==`string`?TE.has(e.format)?(typeof s!=`string`||!vE(e.format,s,n))&&r.push(`${t}.${o}`):a[o]=s:r.push(`${t}.${o}`);return a}function DE(e,t){let n={},r=[];for(let[i,a]of Object.entries(e))i===`properties`&&yE(a)?n[i]=Object.fromEntries(Object.entries(a).map(([e,n])=>[e,EE(n,`properties.${e}`,t,r)])):CE.has(i)?n[i]=a:SE(i)||r.push(i);if(r.length>0)throw new dT(uT.InvalidParams,`Elicitation requestedSchema contains unsupported JSON Schema constraint(s) after Standard Schema conversion: ${r.join(`, `)}`);return n}function OE(e,t){if(!yE(e.properties))return t;let n=Object.entries(e.properties).filter(([,e])=>!aE(CC,e).success).map(([e])=>`properties.${e}`);return n.length>0?n.join(`, `):t}function kE(e,t,n=``){return Array.isArray(e)&&Array.isArray(t)?e.flatMap((e,r)=>kE(e,t[r],`${n}[${r}]`)):!yE(e)||!yE(t)?[]:Object.entries(e).flatMap(([e,r])=>{let i=n?`${n}.${e}`:e;return Object.prototype.hasOwnProperty.call(t,e)?kE(r,t[e],i):SE(e)?[]:[i]})}function AE(e){if(!sE(e.requestedSchema))return{...e,mode:`form`,requestedSchema:e.requestedSchema};let t=e.requestedSchema[`~standard`].vendor,n=DE(bE(e.requestedSchema),t),r=aE(wC.shape.requestedSchema,n);if(!r.success)throw new dT(uT.InvalidParams,`Elicitation requestedSchema only supports flat primitive properties (string, number, integer, boolean, and string enums): ${OE(n,r.error.message)}`);let i=kE(n,r.data);if(i.length>0)throw new dT(uT.InvalidParams,`Elicitation requestedSchema contains unsupported JSON Schema constraint(s) after Standard Schema conversion: ${i.join(`, `)}`);let a=(r.data.required??[]).filter(e=>!Object.prototype.hasOwnProperty.call(r.data.properties,e));if(a.length>0)throw new dT(uT.InvalidParams,`Elicitation requestedSchema lists required properties that are not defined in properties: ${a.join(`, `)}`);return{...e,mode:`form`,requestedSchema:r.data}}function jE(e){let t=e.inputRequests!==void 0&&Object.keys(e.inputRequests).length>0,n=typeof e.requestState==`string`;if(!t&&!n)throw TypeError(`inputRequired() requires at least one of inputRequests (with at least one entry) or requestState (spec: every InputRequiredResult MUST include at least one of the two)`);return{resultType:`input_required`,...e.inputRequests!==void 0&&{inputRequests:e.inputRequests},...e.requestState!==void 0&&{requestState:e.requestState}}}Object.assign(jE,{elicit(e){try{return{method:`elicitation/create`,params:AE(e)}}catch(e){throw e instanceof dT?TypeError(e.message,{cause:e}):e}},elicitUrl(e){return{method:`elicitation/create`,params:{...e,mode:`url`}}},createMessage(e){return{method:`sampling/createMessage`,params:e}},listRoots(){return{method:`roots/list`}}});var ME=`AnnotationsSchema.AudioContentSchema.BaseMetadataSchema.BlobResourceContentsSchema.BooleanSchemaSchema.CallToolRequestSchema.CallToolRequestParamsSchema.CallToolResultSchema.CancelledNotificationSchema.CancelledNotificationParamsSchema.CancelTaskRequestSchema.CancelTaskResultSchema.ClientCapabilitiesSchema.ClientNotificationSchema.ClientRequestSchema.ClientResultSchema.CompatibilityCallToolResultSchema.CompleteRequestSchema.CompleteRequestParamsSchema.CompleteResultSchema.ContentBlockSchema.CreateMessageRequestSchema.CreateMessageRequestParamsSchema.CreateMessageResultSchema.CreateMessageResultWithToolsSchema.CreateTaskResultSchema.CursorSchema.DiscoverRequestSchema.DiscoverResultSchema.ElicitationCompleteNotificationSchema.ElicitationCompleteNotificationParamsSchema.ElicitRequestSchema.ElicitRequestFormParamsSchema.ElicitRequestParamsSchema.ElicitRequestURLParamsSchema.ElicitResultSchema.EmbeddedResourceSchema.EmptyResultSchema.EnumSchemaSchema.GetPromptRequestSchema.GetPromptRequestParamsSchema.GetPromptResultSchema.GetTaskPayloadRequestSchema.GetTaskPayloadResultSchema.GetTaskRequestSchema.GetTaskResultSchema.IconSchema.IconsSchema.ImageContentSchema.ImplementationSchema.InitializedNotificationSchema.InitializeRequestSchema.InitializeRequestParamsSchema.InitializeResultSchema.JSONArraySchema.JSONObjectSchema.JSONRPCErrorResponseSchema.JSONRPCMessageSchema.JSONRPCNotificationSchema.JSONRPCRequestSchema.JSONRPCResponseSchema.JSONRPCResultResponseSchema.JSONValueSchema.LegacyTitledEnumSchemaSchema.ListPromptsRequestSchema.ListPromptsResultSchema.ListResourcesRequestSchema.ListResourcesResultSchema.ListResourceTemplatesRequestSchema.ListResourceTemplatesResultSchema.ListRootsRequestSchema.ListRootsResultSchema.ListTasksRequestSchema.ListTasksResultSchema.ListToolsRequestSchema.ListToolsResultSchema.LoggingLevelSchema.LoggingMessageNotificationSchema.LoggingMessageNotificationParamsSchema.ModelHintSchema.ModelPreferencesSchema.MultiSelectEnumSchemaSchema.NotificationSchema.NumberSchemaSchema.PaginatedRequestSchema.PaginatedRequestParamsSchema.PaginatedResultSchema.PingRequestSchema.PrimitiveSchemaDefinitionSchema.ProgressSchema.ProgressNotificationSchema.ProgressNotificationParamsSchema.ProgressTokenSchema.PromptSchema.PromptArgumentSchema.PromptListChangedNotificationSchema.PromptMessageSchema.PromptReferenceSchema.ReadResourceRequestSchema.ReadResourceRequestParamsSchema.ReadResourceResultSchema.RelatedTaskMetadataSchema.RequestSchema.RequestIdSchema.RequestMetaSchema.ResourceSchema.ResourceContentsSchema.ResourceLinkSchema.ResourceListChangedNotificationSchema.ResourceRequestParamsSchema.ResourceTemplateSchema.ResourceTemplateReferenceSchema.ResourceUpdatedNotificationSchema.ResourceUpdatedNotificationParamsSchema.ResultMetaObjectSchema.ResultSchema.RoleSchema.RootSchema.RootsListChangedNotificationSchema.SamplingContentSchema.SamplingMessageSchema.SamplingMessageContentBlockSchema.ServerCapabilitiesSchema.ServerNotificationSchema.ServerRequestSchema.ServerResultSchema.SetLevelRequestSchema.SetLevelRequestParamsSchema.SingleSelectEnumSchemaSchema.StringSchemaSchema.SubscribeRequestSchema.SubscribeRequestParamsSchema.SubscriptionFilterSchema.SubscriptionsAcknowledgedNotificationSchema.SubscriptionsAcknowledgedNotificationParamsSchema.SubscriptionsListenRequestSchema.SubscriptionsListenRequestParamsSchema.SubscriptionsListenResultSchema.SubscriptionsListenResultMetaSchema.TaskAugmentedRequestParamsSchema.TaskCreationParamsSchema.TaskMetadataSchema.TaskSchema.TaskStatusSchema.TaskStatusNotificationSchema.TaskStatusNotificationParamsSchema.TextContentSchema.TextResourceContentsSchema.TitledMultiSelectEnumSchemaSchema.TitledSingleSelectEnumSchemaSchema.ToolSchema.ToolAnnotationsSchema.ToolChoiceSchema.ToolExecutionSchema.ToolListChangedNotificationSchema.ToolResultContentSchema.ToolUseContentSchema.UnsubscribeRequestSchema.UnsubscribeRequestParamsSchema.UntitledMultiSelectEnumSchemaSchema.UntitledSingleSelectEnumSchemaSchema`.split(`.`),NE={IdJagTokenExchangeResponseSchema:fw,OAuthClientInformationFullSchema:_w,OAuthClientInformationSchema:gw,OAuthClientMetadataSchema:hw,OAuthClientRegistrationErrorSchema:vw,OAuthErrorResponseSchema:pw,OAuthMetadataSchema:cw,OAuthProtectedResourceMetadataSchema:sw,OAuthTokenRevocationRequestSchema:yw,OAuthTokensSchema:dw,OpenIdProviderDiscoveryMetadataSchema:uw,OpenIdProviderMetadataSchema:lw},PE={},FE={};function IE(e,t){let n=e.slice(0,-6);PE[n]=t,FE[n]=e=>t.safeParse(e).success}for(let e of ME)IE(e,eE[e]);for(let[e,t]of Object.entries(NE))IE(e,t);Object.freeze(PE),Object.freeze(FE);function LE(e){switch(e){case`initialize`:case`notifications/initialized`:return YT(void 0);case`server/discover`:return YT(JT);default:return}}var RE=[Jb,Yb,Zb,$b],zE=[`inputResponses`,`requestState`];function BE(e,t){let n=e.params;if(!GE(n))return{message:e,lifted:{}};let r=n._meta,i=GE(r)?RE.filter(e=>e in r):[],a=t===`request`?zE.filter(e=>e in n):[];if(i.length===0&&a.length===0)return{message:e,lifted:{}};let o={},s={...n};if(i.length>0&&GE(r)){let e={},t={...r};for(let n of i)e[n]=r[n],delete t[n];o.envelope=e,Object.keys(t).length>0?s._meta=t:delete s._meta}for(let e of a)e===`inputResponses`&&(o.inputResponses=s[e]),e===`requestState`&&(o.requestState=s[e]),delete s[e];return{message:{...e,params:s},lifted:o}}function VE(e,t){let n=e.validateResult(t,void 0);if(n.ok||n.reason!==`not-in-era`)return{"~standard":{version:1,vendor:`mcp-wire-codec`,validate(n){let r=e.validateResult(t,n);return r.ok?{value:r.value}:{issues:[{message:r.reason===`invalid`?r.message:`not-in-era: ${t}`}]}}}}}function HE(e){return()=>e}var UE=HE(void 0),WE=class{_transport;_requestMessageId=0;_requestHandlers=new Map;_requestHandlerAbortControllers=new Map;_notificationHandlers=new Map;_responseHandlers=new Map;_progressHandlers=new Map;_timeoutInfo=new Map;_pendingDebouncedNotifications=new Set;_negotiatedProtocolVersion;_supportedProtocolVersions;onclose;onerror;fallbackRequestHandler;fallbackNotificationHandler;constructor(e){this._options=e,this._supportedProtocolVersions=e?.supportedProtocolVersions??Kb,this.setNotificationHandler(`notifications/cancelled`,e=>{this._oncancel(e)}),this.setNotificationHandler(`notifications/progress`,e=>{this._onprogress(e)}),this.setRequestHandler(`ping`,e=>({}))}_shouldDropInbound(e){}_outboundMetaEnvelope(){}_envelopeOutbound(e){let t=this._outboundMetaEnvelope();if(t===void 0)return e;let n=e.params??{};return{...e,params:{...n,_meta:{...t,...n._meta}}}}_resolveNonCompleteResult(e,t){return Promise.reject(new ww(Cw.UnsupportedResultType,`Unsupported result type '${e.kind}' for ${t.request.method}`,{resultType:e.kind,method:t.request.method}))}_getRequestHandler(e){return this._requestHandlers.get(e)}async _oncancel(e){e.params.requestId!==void 0&&this._requestHandlerAbortControllers.get(e.params.requestId)?.abort(e.params.reason)}_setupTimeout(e,t,n,r,i=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(r,t),startTime:Date.now(),timeout:t,maxTotalTimeout:n,resetTimeoutOnProgress:i,onTimeout:r})}_resetTimeout(e){let t=this._timeoutInfo.get(e);if(!t)return!1;let n=Date.now()-t.startTime;if(t.maxTotalTimeout&&n>=t.maxTotalTimeout)throw this._timeoutInfo.delete(e),new ww(Cw.RequestTimeout,`Maximum total timeout exceeded`,{maxTotalTimeout:t.maxTotalTimeout,totalElapsed:n});return clearTimeout(t.timeoutId),t.timeoutId=setTimeout(t.onTimeout,t.timeout),!0}_cleanupTimeout(e){let t=this._timeoutInfo.get(e);t&&(clearTimeout(t.timeoutId),this._timeoutInfo.delete(e))}async connect(e){this._transport=e;let t=this.transport?.onclose;this._transport.onclose=()=>{try{t?.()}finally{this._onclose()}};let n=this.transport?.onerror;this._transport.onerror=e=>{n?.(e),this._onerror(e)};let r=this._transport?.onmessage;this._transport.onmessage=(e,t)=>{r?.(e,t),rE(e)||iE(e)?this._onresponse(e):tE(e)?this._onrequest(e,t):nE(e)?this._onnotification(e,t):this._onerror(Error(`Unknown message type: ${JSON.stringify(e)}`))},e.setSupportedProtocolVersions?.(this._supportedProtocolVersions),await this._transport.start()}_onclose(){let e=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._pendingDebouncedNotifications.clear();for(let e of this._timeoutInfo.values())clearTimeout(e.timeoutId);this._timeoutInfo.clear();let t=this._requestHandlerAbortControllers;this._requestHandlerAbortControllers=new Map;let n=new ww(Cw.ConnectionClosed,`Connection closed`);this._transport=void 0;try{this.onclose?.()}finally{for(let t of e.values())t(n);for(let e of t.values())e.abort(n)}}_onerror(e){this.onerror?.(e)}_onnotification(e,t){let{message:n}=BE(e,`notification`),r=this._negotiatedWireCodec();if(t?.classification===void 0&&this._shouldDropInbound(e)===`drop`)return;if(t?.classification!==void 0){let e=XT(t.classification);if(e!==r.era){this._onerror(Error(`Era mismatch on inbound notification '${n.method}': classified as ${e} but this instance serves ${r.era}`));return}}if(QT(n.method)&&!r.hasNotificationMethod(n.method))return;let i=this._notificationHandlers.get(n.method),a=this.fallbackNotificationHandler;(i!==void 0||a!==void 0)&&Promise.resolve().then(()=>i===void 0?a(n):i(n,r)).catch(e=>this._onerror(Error(`Uncaught error in notification handler: ${e}`)))}_onrequest(e,t){let{message:n,lifted:r}=BE(e,`request`),i=this._negotiatedWireCodec();if(t?.classification===void 0&&this._shouldDropInbound(e)===`drop`){this._onerror(Error(`Dropped inbound request '${e.method}': not servable on this connection's protocol era`));return}let a=this._transport,o=(e,t,r)=>{let i={jsonrpc:`2.0`,id:n.id,error:{code:e,message:t,...r!==void 0&&{data:r}}};a?.send(i).catch(e=>this._onerror(Error(`Failed to send an error response: ${e}`)))};if(t?.classification!==void 0){let e=XT(t.classification);if(e!==i.era){this._onerror(Error(`Era mismatch on inbound request '${n.method}': classified as ${e} but this instance serves ${i.era}`));let r=t.classification.revision??e;o(uT.UnsupportedProtocolVersion,`Unsupported protocol version: ${r}`,{supported:this._supportedProtocolVersions,requested:r});return}}if(ZT(n.method)&&!i.hasRequestMethod(n.method)){o(uT.MethodNotFound,`Method not found`);return}let s=this._requestHandlers.get(n.method)??this.fallbackRequestHandler;if(s===void 0){o(uT.MethodNotFound,`Method not found`);return}let c=i.checkInboundEnvelope(r);if(c!==void 0){o(uT.InvalidParams,c);return}let l=(e,t)=>this._notificationViaCodec(this._resolveOutboundCodec(e.method),e,{...t,relatedRequestId:n.id}),u=(e,t,r)=>this._requestWithSchemaViaCodec(this._resolveOutboundCodec(e.method),e,t,{...r,relatedRequestId:n.id}),d=new AbortController;this._requestHandlerAbortControllers.set(n.id,d);let f=r.inputResponses===void 0?void 0:qE(r.inputResponses),p={sessionId:a?.sessionId,mcpReq:{id:n.id,method:n.method,_meta:n.params?._meta,...r.envelope!==void 0&&{envelope:r.envelope},...f!==void 0&&{inputResponses:f.accepted},...f!==void 0&&f.droppedKeys.length>0&&{droppedInputResponseKeys:f.droppedKeys},requestState:r.requestState===void 0?UE:HE(r.requestState),signal:d.signal,send:((e,t,n)=>{let r=this._resolveOutboundCodec(e.method);if(this._assertOutboundRequestInEra(r,e.method),sE(t))return u(e,t,n);let i=VE(r,e.method);if(i===void 0)throw TypeError(`'${e.method}' is not a spec method; pass a result schema as the second argument to ctx.mcpReq.send().`);return u(e,i,t)}),notify:l},http:t?.authInfo?{authInfo:t.authInfo}:void 0},m=this.buildContext(p,t);Promise.resolve().then(()=>s(n,m)).then(async e=>{if(d.signal.aborted)return;let t;try{t=i.encodeResult(n.method,e,this._outboundServerInfo())}catch(e){this._onerror(Error(`Failed to encode result for ${n.method}: ${e}`)),o(uT.InternalError,`Internal error`);return}let r={result:t,jsonrpc:`2.0`,id:n.id};await a?.send(r)},async e=>{if(d.signal.aborted)return;let t=Number.isSafeInteger(e.code)?e.code:uT.InternalError,r={jsonrpc:`2.0`,id:n.id,error:{code:i.encodeErrorCode(t),message:e.message??`Internal error`,...e.data!==void 0&&{data:e.data}}};await a?.send(r)}).catch(e=>this._onerror(Error(`Failed to send response: ${e}`))).finally(()=>{this._requestHandlerAbortControllers.get(n.id)===d&&this._requestHandlerAbortControllers.delete(n.id)})}_onprogress(e){let{progressToken:t,...n}=e.params,r=Number(t),i=this._progressHandlers.get(r);if(!i){this._onerror(Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let a=this._responseHandlers.get(r),o=this._timeoutInfo.get(r);if(o&&a&&o.resetTimeoutOnProgress)try{this._resetTimeout(r)}catch(e){this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),a(e);return}i(n)}_onresponse(e){let t=Number(e.id),n=this._responseHandlers.get(t);if(n===void 0){this._onerror(Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}this._responseHandlers.delete(t),this._cleanupTimeout(t),this._progressHandlers.delete(t),rE(e)?n(e):n(dT.fromError(e.error.code,e.error.message,e.error.data))}get transport(){return this._transport}async close(){await this._transport?.close()}request(e,t,n){let r=this._resolveOutboundCodec(e.method);if(this._assertOutboundRequestInEra(r,e.method),sE(t))return this._requestWithSchemaViaCodec(r,e,t,n);let i=VE(r,e.method);if(i===void 0)throw TypeError(`'${e.method}' is not a spec method; pass a result schema as the second argument to request().`);return this._requestWithSchemaViaCodec(r,e,i,t)}_negotiatedWireCodec(){return YT(this._negotiatedProtocolVersion)}_wireCodec(){return this._negotiatedWireCodec()}_resolveOutboundCodec(e){if(this._negotiatedProtocolVersion===void 0){let t=LE(e);if(t)return t}return this._negotiatedWireCodec()}_assertOutboundRequestInEra(e,t){if(ZT(t)&&!e.hasRequestMethod(t))throw new ww(Cw.MethodNotSupportedByProtocolVersion,`Method '${t}' is not supported by the negotiated protocol version (wire era ${e.era})`,{method:t,era:e.era})}_requestWithSchema(e,t,n){let r=this._resolveOutboundCodec(e.method);return this._assertOutboundRequestInEra(r,e.method),this._requestWithSchemaViaCodec(r,e,t,n)}_requestWithSchemaViaCodec(e,t,n,r){let{relatedRequestId:i,resumptionToken:a,onresumptiontoken:o,headers:s}=r??{},c=Date.now(),l,u;return new Promise((d,f)=>{let p=e=>{f(e)};if(!this._transport){p(Error(`Not connected`));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(t.method)}catch(e){p(e);return}if(r?.signal?.aborted){let e=r.signal.reason;throw e instanceof ww?e:new ww(Cw.RequestTimeout,String(e))}let m=e.era===`2026-07-28`&&this._transport.hasPerRequestStream===!0?new AbortController:void 0,h=this._requestMessageId++;u=h;let g={...t,jsonrpc:`2.0`,id:h};r?.onprogress&&(this._progressHandlers.set(h,r.onprogress),g.params={...t.params,_meta:{...t.params?._meta,progressToken:h}});let _=this._envelopeOutbound(g),v=!1,y=e=>{v||(this._progressHandlers.delete(h),m===void 0?t.method!==`initialize`&&this._transport?.send(this._envelopeOutbound({jsonrpc:`2.0`,method:`notifications/cancelled`,params:{requestId:h,reason:String(e)}}),{relatedRequestId:i,resumptionToken:a,onresumptiontoken:o}).catch(e=>this._onerror(Error(`Failed to send cancellation: ${e}`))):m.abort(),f(e instanceof ww?e:new ww(Cw.RequestTimeout,String(e))))};this._responseHandlers.set(h,i=>{if(r?.signal?.aborted)return;if(v=!0,i instanceof Error)return f(i);let a;try{a=e.decodeResult(t.method,i.result)}catch(e){return f(e instanceof Error?e:Error(String(e)))}if(a.kind===`invalid`)return f(a.error);if(a.kind===`input_required`){if(r?.allowInputRequired===!0)return d(JE(a));let i={codec:e,request:t,resultSchema:n,options:r,flowStartedAt:c,retry:(r,i)=>this._requestWithSchemaViaCodec(e,r===void 0?{method:t.method}:{method:t.method,params:r},n,i)};return d(this._resolveNonCompleteResult(a,i))}let o=a.result;pE(n,o).then(e=>{e.success?d(e.data):f(new ww(Cw.InvalidResult,`Invalid result for ${t.method}: ${e.error}`))},f)}),l=()=>y(r?.signal?.reason),r?.signal?.addEventListener(`abort`,l,{once:!0});let b=r?.timeout??6e4;this._setupTimeout(h,b,r?.maxTotalTimeout,()=>y(new ww(Cw.RequestTimeout,`Request timed out`,{timeout:b})),r?.resetTimeoutOnProgress??!1),this._transport.send(_,{relatedRequestId:i,resumptionToken:a,onresumptiontoken:o,headers:s,requestSignal:m?.signal}).catch(e=>{this._progressHandlers.delete(h),f(e)})}).finally(()=>{l&&r?.signal?.removeEventListener(`abort`,l),u!==void 0&&(this._responseHandlers.delete(u),this._cleanupTimeout(u))})}async notification(e,t){return await this._notificationViaCodec(this._resolveOutboundCodec(e.method),e,t)}async _notificationViaCodec(e,t,n){if(!this._transport)throw new ww(Cw.NotConnected,`Not connected`);if(QT(t.method)&&!e.hasNotificationMethod(t.method))throw new ww(Cw.MethodNotSupportedByProtocolVersion,`Notification '${t.method}' is not supported by the negotiated protocol version (wire era ${e.era})`,{method:t.method,era:e.era});this.assertNotificationCapability(t.method);let r=this._envelopeOutbound({jsonrpc:`2.0`,...t});if((this._options?.debouncedNotificationMethods??[]).includes(t.method)&&!t.params&&n?.relatedRequestId===void 0){if(this._pendingDebouncedNotifications.has(t.method))return;this._pendingDebouncedNotifications.add(t.method),Promise.resolve().then(()=>{this._pendingDebouncedNotifications.delete(t.method),this._transport&&this._transport?.send(r,n).catch(e=>this._onerror(e))});return}await this._transport.send(r,n)}setRequestHandler(e,t,n){this.assertRequestHandlerCapability(e);let r;if(typeof t==`function`){if(!ZT(e))throw TypeError(`'${e}' is not a spec request method; pass schemas as the second argument to setRequestHandler().`);r=(n,r)=>{let i=this._negotiatedWireCodec(),a=i.validateRequest(e,n);if(!a.ok&&a.reason===`not-in-era`&&(a=i.validateInputRequest(e,n)),!a.ok)throw a.reason===`not-in-era`?new dT(uT.InternalError,`No wire schema for ${e} in the resolved era`):Error(a.message);return Promise.resolve(t(a.value,r))}}else if(n)r=async(r,i)=>{let a=await pE(t.params,{...r.params});if(!a.success)throw new dT(uT.InvalidParams,`Invalid params for ${e}: ${a.error}`);return n(a.data,i)};else throw TypeError(`setRequestHandler: handler is required`);this._requestHandlers.set(e,this._wrapHandler(e,r))}_wrapHandler(e,t){return t}_outboundServerInfo(){}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,t,n){if(typeof t==`function`){if(!QT(e))throw TypeError(`'${e}' is not a spec notification method; pass schemas as the second argument to setNotificationHandler().`);this._notificationHandlers.set(e,(n,r)=>{let i=r.validateNotification(e,n);if(!i.ok)throw i.reason===`not-in-era`?new dT(uT.InternalError,`No wire schema for ${e} in the resolved era`):Error(i.message);return Promise.resolve(t(i.value))});return}if(!n)throw TypeError(`setNotificationHandler: handler is required`);this._notificationHandlers.set(e,async r=>{let i=await pE(t.params,{...r.params});if(!i.success)throw new dT(uT.InvalidParams,`Invalid params for notification ${e}: ${i.error}`);await n(i.data,r)})}removeNotificationHandler(e){this._notificationHandlers.delete(e)}};function GE(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function KE(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function qE(e){let t={},n=[];if(!KE(e))return{accepted:t,droppedKeys:n};for(let[r,i]of Object.entries(e)){if(!KE(i)||`method`in i||`result`in i){n.push(r);continue}t[r]=i}return{accepted:t,droppedKeys:n}}function JE(e){return{resultType:`input_required`,inputRequests:e.inputRequests,...e.requestState!==void 0&&{requestState:e.requestState},...e._meta!==void 0&&{_meta:e._meta}}}vd((e=>{var t=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,n=/\\([\u000b\u0020-\u00ff])/g,r=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;e.parse=i;function i(e){if(!e)throw TypeError(`argument string is required`);var i=typeof e==`object`?a(e):e;if(typeof i!=`string`)throw TypeError(`argument string is required to be a string`);var s=i.indexOf(`;`),c=s===-1?i.trim():i.slice(0,s).trim();if(!r.test(c))throw TypeError(`invalid media type`);var l=new o(c.toLowerCase());if(s!==-1){var u,d,f;for(t.lastIndex=s;d=t.exec(i);){if(d.index!==s)throw TypeError(`invalid parameter format`);s+=d[0].length,u=d[1].toLowerCase(),f=d[2],f.charCodeAt(0)===34&&(f=f.slice(1,-1),f.indexOf(`\\`)!==-1&&(f=f.replace(n,`$1`))),l.parameters[u]=f}if(s!==i.length)throw TypeError(`invalid parameter format`)}return l}function a(e){var t;if(typeof e.getHeader==`function`?t=e.getHeader(`content-type`):typeof e.headers==`object`&&(t=e.headers&&e.headers[`content-type`]),typeof t!=`string`)throw TypeError(`content-type header is missing from object`);return t}function o(e){this.parameters=Object.create(null),this.type=e}}))(),typeof self<`u`&&self.location&&self.location.origin!==`null`?new URL(self.location.origin+self.location.pathname+location.search):new URL(`https://github.com/cfworker`);var YE=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,XE=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ZE=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,QE=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,$E=/^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,eD=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,tD=/^(?:\/(?:[^~/]|~0|~1)*)*$/,nD=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,rD=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,iD=/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,aD=/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i;function oD(e){return e.test.bind(e)}sD.bind(void 0,!1),oD(ZE),oD(QE),oD($E),oD(XE),oD(iD),oD(aD),oD(eD),oD(tD),oD(nD),oD(rD);function sD(e,t){let n=t.match(YE);if(!n)return!1;let r=+n[1],i=+n[2],a=+n[3],o=!!n[5];return(r<=23&&i<=59&&a<=59||r==23&&i==59&&a==60)&&(!e||o)}globalThis.crypto;var cD=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.OAuthClientFlowError`})}static[Symbol.hasInstance](e){return Sw(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Sw(this,e)}constructor(e){super(e),this.name=new.target.name,xw(this,new.target)}};(class extends cD{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.IssuerMismatchError`})}kind;expected;received;constructor(e,t,n){super(`Issuer mismatch in ${e===`metadata`?`authorization server metadata (RFC 8414 §3.3)`:`authorization response (RFC 9207)`}: expected ${JSON.stringify(t)}, received ${JSON.stringify(n)}`),this.kind=e,this.expected=t,this.received=n}}),class extends cD{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.RegistrationRejectedError`})}status;body;submittedMetadata;constructor(e){super(`Dynamic Client Registration rejected (HTTP ${e.status}): ${e.body}`),this.status=e.status,this.body=e.body,this.submittedMetadata=e.submittedMetadata}},class extends cD{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.InsecureTokenEndpointError`})}tokenEndpoint;constructor(e){super(`Refusing to send credentials to non-https token endpoint '${e}'. OAuth token requests MUST use TLS (localhost / *.localhost / 127.0.0.1 / ::1 are exempt).`),this.tokenEndpoint=e}},class extends cD{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.AuthorizationServerMismatchError`})}constructor(e,t){super(`Authorization server mismatch: credentials are bound to ${JSON.stringify(e)} but this call resolved ${JSON.stringify(t)}; refusing to present them to a different authorization server`),this.recordedIssuer=e,this.currentIssuer=t}},class extends cD{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.InsufficientScopeError`})}requiredScope;resourceMetadataUrl;errorDescription;constructor(e){super(`Insufficient scope${e.requiredScope?`: required "${e.requiredScope}"`:``}`),this.requiredScope=e.requiredScope,this.resourceMetadataUrl=e.resourceMetadataUrl,this.errorDescription=e.errorDescription}},class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.UnauthorizedError`})}static[Symbol.hasInstance](e){return Sw(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Sw(this,e)}constructor(e){super(e??`Unauthorized`),this.name=`UnauthorizedError`,xw(this,new.target)}},class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.SseError`})}static[Symbol.hasInstance](e){return Sw(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Sw(this,e)}constructor(e,t,n){super(`SSE error: ${t}`),this.code=e,this.event=n,xw(this,new.target)}};var lD=class{_eventSlots=new Map;setHandler(e,t){let n=this._ensureEventSlot(e);n.onHandler&&t&&console.warn(`[MCP Apps] on${String(e)} handler replaced. Use addEventListener("${String(e)}", …) to add multiple listeners without replacing.`),n.onHandler=t}getHandler(e){return this._eventSlots.get(e)?.onHandler}addEventListener(e,t){this._ensureEventSlot(e).listeners.push(t)}removeEventListener(e,t){let n=this._eventSlots.get(e);if(!n)return;let r=n.listeners.indexOf(t);r!==-1&&n.listeners.splice(r,1)}dispatch(e,t){let n=this._eventSlots.get(e);if(n){n.onHandler?.(t);for(let e of[...n.listeners])e(t)}}_ensureEventSlot(e){let t=this._eventSlots.get(e);return t||(t={listeners:[]},this._eventSlots.set(e,t)),t}},uD=class{_methods=new Set;claim(e,t){if(this._methods.has(e))throw Error(`Handler for "${e}" already registered (via ${t}). Use addEventListener() to attach multiple listeners, or the on* setter for replace semantics.`);this._methods.add(e)}replace(e){this._methods.add(e)}release(e){this._methods.delete(e)}has(e){return this._methods.has(e)}},dD=new Set;function fD(e,t){let[n,r]=t,i=n?.shape;if(typeof i?.method?.value!=`string`)return;let a=i.method.value,o=e===`request`?`setRequestHandler`:`setNotificationHandler`;dD.has(o)||(dD.add(o),console.warn(`[ext-apps] ${o}(Schema, handler) is deprecated; use ${o}("${a}", { params: Schema.shape.params }, handler).`));let s=r;return[a,{params:i.params},e===`request`?(e,t)=>s({method:a,params:e},pD(t)):e=>s({method:a,params:e})]}function pD(e){return{signal:e.mcpReq.signal,requestId:e.mcpReq.id,sessionId:e.sessionId,_meta:e.mcpReq._meta,sendRequest:e.mcpReq.send,sendNotification:e.mcpReq.notify,authInfo:e.http?.authInfo}}var mD=`2026-01-26`,hD=class{eventTarget;eventSource;messageListener;constructor(e=window.parent,t){this.eventTarget=e,this.eventSource=t,this.messageListener=e=>{if(t&&e.source!==this.eventSource){console.debug(`Ignoring message from unknown source`,e);return}let n=bx.safeParse(e.data);n.success?(console.debug(`Parsed message`,n.data),this.onmessage?.(n.data)):e.data?.jsonrpc===`2.0`?(console.error(`Failed to parse message`,n.error.message,e),this.onerror?.(Error(`Invalid JSON-RPC message received: `+n.error.message))):console.debug(`Ignoring non-JSON-RPC message`,n.error.message,e)}}async start(){window.addEventListener(`message`,this.messageListener)}async send(e,t){e.method!==`ui/notifications/tool-input-partial`&&console.debug(`Sending message`,e),this.eventTarget.postMessage(e,`*`)}async close(){window.removeEventListener(`message`,this.messageListener),this.onclose?.()}onclose;onerror;onmessage;sessionId;setProtocolVersion},gD=Y([Q(`light`),Q(`dark`)]).describe(`Color theme preference for the host environment.`),_D=Y([Q(`inline`),Q(`fullscreen`),Q(`pip`)]).describe(`Display mode for UI presentation.`),vD=X(Y([Q(`--color-background-primary`),Q(`--color-background-secondary`),Q(`--color-background-tertiary`),Q(`--color-background-inverse`),Q(`--color-background-ghost`),Q(`--color-background-info`),Q(`--color-background-danger`),Q(`--color-background-success`),Q(`--color-background-warning`),Q(`--color-background-disabled`),Q(`--color-text-primary`),Q(`--color-text-secondary`),Q(`--color-text-tertiary`),Q(`--color-text-inverse`),Q(`--color-text-ghost`),Q(`--color-text-info`),Q(`--color-text-danger`),Q(`--color-text-success`),Q(`--color-text-warning`),Q(`--color-text-disabled`),Q(`--color-border-primary`),Q(`--color-border-secondary`),Q(`--color-border-tertiary`),Q(`--color-border-inverse`),Q(`--color-border-ghost`),Q(`--color-border-info`),Q(`--color-border-danger`),Q(`--color-border-success`),Q(`--color-border-warning`),Q(`--color-border-disabled`),Q(`--color-ring-primary`),Q(`--color-ring-secondary`),Q(`--color-ring-inverse`),Q(`--color-ring-info`),Q(`--color-ring-danger`),Q(`--color-ring-success`),Q(`--color-ring-warning`),Q(`--font-sans`),Q(`--font-mono`),Q(`--font-weight-normal`),Q(`--font-weight-medium`),Q(`--font-weight-semibold`),Q(`--font-weight-bold`),Q(`--font-text-xs-size`),Q(`--font-text-sm-size`),Q(`--font-text-md-size`),Q(`--font-text-lg-size`),Q(`--font-heading-xs-size`),Q(`--font-heading-sm-size`),Q(`--font-heading-md-size`),Q(`--font-heading-lg-size`),Q(`--font-heading-xl-size`),Q(`--font-heading-2xl-size`),Q(`--font-heading-3xl-size`),Q(`--font-text-xs-line-height`),Q(`--font-text-sm-line-height`),Q(`--font-text-md-line-height`),Q(`--font-text-lg-line-height`),Q(`--font-heading-xs-line-height`),Q(`--font-heading-sm-line-height`),Q(`--font-heading-md-line-height`),Q(`--font-heading-lg-line-height`),Q(`--font-heading-xl-line-height`),Q(`--font-heading-2xl-line-height`),Q(`--font-heading-3xl-line-height`),Q(`--border-radius-xs`),Q(`--border-radius-sm`),Q(`--border-radius-md`),Q(`--border-radius-lg`),Q(`--border-radius-xl`),Q(`--border-radius-full`),Q(`--border-width-regular`),Q(`--shadow-hairline`),Q(`--shadow-sm`),Q(`--shadow-md`),Q(`--shadow-lg`)]).describe(`CSS variable keys available to MCP apps for theming.`).describe(`Style variables for theming MCP apps. Individual style keys are optional - hosts may provide any subset of these values. Values are strings containing CSS values (colors, sizes, font stacks, etc.). Note: This type uses \`Record\` rather than \`Partial>\` -for compatibility with Zod schema generation. Both are functionally equivalent for validation.`),Y([H(),Xy()]).describe(`Style variables for theming MCP apps. +for compatibility with Zod schema generation. Both are functionally equivalent for validation.`),Y([H(),Zy()]).describe(`Style variables for theming MCP apps. Individual style keys are optional - hosts may provide any subset of these values. Values are strings containing CSS values (colors, sizes, font stacks, etc.). @@ -78,10 +78,10 @@ Values are strings containing CSS values (colors, sizes, font stacks, etc.). Note: This type uses \`Record\` rather than \`Partial>\` -for compatibility with Zod schema generation. Both are functionally equivalent for validation.`);q({method:Q(`ui/open-link`),params:q({url:H().describe(`URL to open in the host's browser`)})});var vD=q({isError:W().optional().describe(`True if the host failed to open the URL (e.g., due to security policy).`)}).passthrough(),yD=q({isError:W().optional().describe(`True if the download failed (e.g., user cancelled or host denied).`)}).passthrough(),bD=q({isError:W().optional().describe(`True if the host rejected or failed to deliver the message.`)}).passthrough();q({method:Q(`ui/notifications/sandbox-proxy-ready`),params:q({})});var xD=q({connectDomains:K(H()).optional().describe(`Origins for network requests (fetch/XHR/WebSocket). +for compatibility with Zod schema generation. Both are functionally equivalent for validation.`);q({method:Q(`ui/open-link`),params:q({url:H().describe(`URL to open in the host's browser`)})});var yD=q({isError:W().optional().describe(`True if the host failed to open the URL (e.g., due to security policy).`)}).passthrough(),bD=q({isError:W().optional().describe(`True if the download failed (e.g., user cancelled or host denied).`)}).passthrough(),xD=q({isError:W().optional().describe(`True if the host rejected or failed to deliver the message.`)}).passthrough();q({method:Q(`ui/notifications/sandbox-proxy-ready`),params:q({})});var SD=q({connectDomains:K(H()).optional().describe(`Origins for network requests (fetch/XHR/WebSocket). - Maps to CSP \`connect-src\` directive -- Empty or omitted → no network connections (secure default)`),resourceDomains:K(H()).optional().describe("Origins for static resources (images, scripts, stylesheets, fonts, media).\n\n- Maps to CSP `img-src`, `script-src`, `style-src`, `font-src`, `media-src` directives\n- Wildcard subdomains supported: `https://*.example.com`\n- Empty or omitted → no network resources (secure default)"),frameDomains:K(H()).optional().describe("Origins for nested iframes.\n\n- Maps to CSP `frame-src` directive\n- Empty or omitted → no nested iframes allowed (`frame-src 'none'`)"),baseUriDomains:K(H()).optional().describe("Allowed base URIs for the document.\n\n- Maps to CSP `base-uri` directive\n- Empty or omitted → only same origin allowed (`base-uri 'self'`)")}),SD=q({camera:q({}).optional().describe(`Request camera access. +- Empty or omitted → no network connections (secure default)`),resourceDomains:K(H()).optional().describe("Origins for static resources (images, scripts, stylesheets, fonts, media).\n\n- Maps to CSP `img-src`, `script-src`, `style-src`, `font-src`, `media-src` directives\n- Wildcard subdomains supported: `https://*.example.com`\n- Empty or omitted → no network resources (secure default)"),frameDomains:K(H()).optional().describe("Origins for nested iframes.\n\n- Maps to CSP `frame-src` directive\n- Empty or omitted → no nested iframes allowed (`frame-src 'none'`)"),baseUriDomains:K(H()).optional().describe("Allowed base URIs for the document.\n\n- Maps to CSP `base-uri` directive\n- Empty or omitted → only same origin allowed (`base-uri 'self'`)")}),CD=q({camera:q({}).optional().describe(`Request camera access. Maps to Permission Policy \`camera\` feature.`),microphone:q({}).optional().describe(`Request microphone access. @@ -89,7 +89,7 @@ Maps to Permission Policy \`geolocation\` feature.`),clipboardWrite:q({}).optional().describe(`Request clipboard write access. -Maps to Permission Policy \`clipboard-write\` feature.`)});q({method:Q(`ui/notifications/size-changed`),params:q({width:U().optional().describe(`New width in pixels.`),height:U().optional().describe(`New height in pixels.`)})});var CD=q({method:Q(`ui/notifications/tool-input`),params:q({arguments:X(H(),G().describe(`Complete tool call arguments as key-value pairs.`)).optional().describe(`Complete tool call arguments as key-value pairs.`)})}),wD=q({method:Q(`ui/notifications/tool-input-partial`),params:q({arguments:X(H(),G().describe(`Partial tool call arguments (incomplete, may change).`)).optional().describe(`Partial tool call arguments (incomplete, may change).`)})}),TD=q({method:Q(`ui/notifications/tool-cancelled`),params:q({reason:H().optional().describe(`Optional reason for the cancellation (e.g., "user action", "timeout").`)})}),ED=q({fonts:H().optional()}),DD=q({variables:_D.optional().describe(`CSS variables for theming the app.`),css:ED.optional().describe(`CSS blocks that apps can inject.`)}),OD=q({method:Q(`ui/resource-teardown`),params:q({})}),kD=X(H(),G()),AD=q({text:q({}).optional().describe(`Host supports text content blocks.`),image:q({}).optional().describe(`Host supports image content blocks.`),audio:q({}).optional().describe(`Host supports audio content blocks.`),resource:q({}).optional().describe(`Host supports resource content blocks.`),resourceLink:q({}).optional().describe(`Host supports resource link content blocks.`),structuredContent:q({}).optional().describe(`Host supports structured content.`)});q({method:Q(`ui/notifications/request-teardown`),params:q({}).optional()});var jD=q({experimental:X(H(),X(H(),eb()).describe(`Experimental features keyed by identifier.`)).optional().describe(`Experimental features keyed by identifier.`),openLinks:q({}).optional().describe(`Host supports opening external URLs.`),downloadFile:q({}).optional().describe(`Host supports file downloads via ui/download-file.`),serverTools:q({listChanged:W().optional().describe(`Host supports tools/list_changed notifications.`)}).optional().describe(`Host can proxy tool calls to the MCP server.`),serverResources:q({listChanged:W().optional().describe(`Host supports resources/list_changed notifications.`)}).optional().describe(`Host can proxy resource reads to the MCP server.`),logging:q({}).optional().describe(`Host accepts log messages.`),sandbox:q({permissions:SD.optional().describe(`Permissions granted by the host (camera, microphone, geolocation).`),csp:xD.optional().describe(`CSP domains approved by the host.`)}).optional().describe(`Sandbox configuration applied by the host.`),updateModelContext:AD.optional().describe(`Host accepts context updates (ui/update-model-context) to be included in the model's context for future turns.`),message:AD.optional().describe(`Host supports receiving content messages (ui/message) from the view.`),sampling:q({tools:q({}).optional().describe("Host supports tool use via `tools` and `toolChoice` parameters.")}).optional().describe("Host supports LLM sampling (sampling/createMessage) from the view.\nMirrors the MCP `ClientCapabilities.sampling` shape so hosts can pass it through.")}),MD=q({experimental:X(H(),X(H(),eb()).describe(`Experimental features keyed by identifier.`)).optional().describe(`Experimental features keyed by identifier.`),tools:q({listChanged:W().optional().describe(`App supports tools/list_changed notifications.`)}).optional().describe(`App exposes MCP-style tools that the host can call.`),availableDisplayModes:K(gD).optional().describe(`Display modes the app supports.`)});q({method:Q(`ui/notifications/initialized`),params:q({}).optional()}),q({csp:xD.optional().describe(`Content Security Policy configuration for UI resources.`),permissions:SD.optional().describe(`Sandbox permissions requested by the UI resource.`),domain:H().optional().describe(`Dedicated origin for view sandbox. +Maps to Permission Policy \`clipboard-write\` feature.`)});q({method:Q(`ui/notifications/size-changed`),params:q({width:U().optional().describe(`New width in pixels.`),height:U().optional().describe(`New height in pixels.`)})});var wD=q({method:Q(`ui/notifications/tool-input`),params:q({arguments:X(H(),G().describe(`Complete tool call arguments as key-value pairs.`)).optional().describe(`Complete tool call arguments as key-value pairs.`)})}),TD=q({method:Q(`ui/notifications/tool-input-partial`),params:q({arguments:X(H(),G().describe(`Partial tool call arguments (incomplete, may change).`)).optional().describe(`Partial tool call arguments (incomplete, may change).`)})}),ED=q({method:Q(`ui/notifications/tool-cancelled`),params:q({reason:H().optional().describe(`Optional reason for the cancellation (e.g., "user action", "timeout").`)})}),DD=q({fonts:H().optional()}),OD=q({variables:vD.optional().describe(`CSS variables for theming the app.`),css:DD.optional().describe(`CSS blocks that apps can inject.`)}),kD=q({method:Q(`ui/resource-teardown`),params:q({})}),AD=X(H(),G()),jD=q({text:q({}).optional().describe(`Host supports text content blocks.`),image:q({}).optional().describe(`Host supports image content blocks.`),audio:q({}).optional().describe(`Host supports audio content blocks.`),resource:q({}).optional().describe(`Host supports resource content blocks.`),resourceLink:q({}).optional().describe(`Host supports resource link content blocks.`),structuredContent:q({}).optional().describe(`Host supports structured content.`)});q({method:Q(`ui/notifications/request-teardown`),params:q({}).optional()});var MD=q({experimental:X(H(),X(H(),tb()).describe(`Experimental features keyed by identifier.`)).optional().describe(`Experimental features keyed by identifier.`),openLinks:q({}).optional().describe(`Host supports opening external URLs.`),downloadFile:q({}).optional().describe(`Host supports file downloads via ui/download-file.`),serverTools:q({listChanged:W().optional().describe(`Host supports tools/list_changed notifications.`)}).optional().describe(`Host can proxy tool calls to the MCP server.`),serverResources:q({listChanged:W().optional().describe(`Host supports resources/list_changed notifications.`)}).optional().describe(`Host can proxy resource reads to the MCP server.`),logging:q({}).optional().describe(`Host accepts log messages.`),sandbox:q({permissions:CD.optional().describe(`Permissions granted by the host (camera, microphone, geolocation).`),csp:SD.optional().describe(`CSP domains approved by the host.`)}).optional().describe(`Sandbox configuration applied by the host.`),updateModelContext:jD.optional().describe(`Host accepts context updates (ui/update-model-context) to be included in the model's context for future turns.`),message:jD.optional().describe(`Host supports receiving content messages (ui/message) from the view.`),sampling:q({tools:q({}).optional().describe("Host supports tool use via `tools` and `toolChoice` parameters.")}).optional().describe("Host supports LLM sampling (sampling/createMessage) from the view.\nMirrors the MCP `ClientCapabilities.sampling` shape so hosts can pass it through.")}),ND=q({experimental:X(H(),X(H(),tb()).describe(`Experimental features keyed by identifier.`)).optional().describe(`Experimental features keyed by identifier.`),tools:q({listChanged:W().optional().describe(`App supports tools/list_changed notifications.`)}).optional().describe(`App exposes MCP-style tools that the host can call.`),availableDisplayModes:K(_D).optional().describe(`Display modes the app supports.`)});q({method:Q(`ui/notifications/initialized`),params:q({}).optional()}),q({csp:SD.optional().describe(`Content Security Policy configuration for UI resources.`),permissions:CD.optional().describe(`Sandbox permissions requested by the UI resource.`),domain:H().optional().describe(`Dedicated origin for view sandbox. Useful when views need stable, dedicated origins for OAuth callbacks, CORS policies, or API key allowlists. @@ -103,10 +103,10 @@ - \`true\`: request visible border + background - \`false\`: request no visible border + background -- omitted: host decides border`)}),q({method:Q(`ui/request-display-mode`),params:q({mode:gD.describe(`The display mode being requested.`)})});var ND=q({mode:gD.describe(`The display mode that was actually set. May differ from requested if not supported.`)}).passthrough(),PD=Y([Q(`model`),Q(`app`)]).describe(`Tool visibility scope - who can access the tool.`);q({resourceUri:H().optional(),visibility:K(PD).optional().describe(`Who can access this tool. Default: ["model", "app"] +- omitted: host decides border`)}),q({method:Q(`ui/request-display-mode`),params:q({mode:_D.describe(`The display mode being requested.`)})});var PD=q({mode:_D.describe(`The display mode that was actually set. May differ from requested if not supported.`)}).passthrough(),FD=Y([Q(`model`),Q(`app`)]).describe(`Tool visibility scope - who can access the tool.`);q({resourceUri:H().optional(),visibility:K(FD).optional().describe(`Who can access this tool. Default: ["model", "app"] - "model": Tool visible to and callable by the agent -- "app": Tool callable by the app from this server only`),csp:rb().optional(),permissions:rb().optional()}),q({mimeTypes:K(H()).optional().describe('Array of supported MIME types for UI resources.\nMust include `"text/html;profile=mcp-app"` for MCP Apps support.')}),q({method:Q(`ui/download-file`),params:q({contents:K(Y([MS,NS])).describe(`Resource contents to download — embedded (inline data) or linked (host fetches). Uses standard MCP resource types.`)})}),q({method:Q(`ui/message`),params:q({role:Q(`user`).describe(`Message role, currently only "user" is supported.`),content:K(PS).describe(`Message content blocks (text, image, etc.).`)})}),q({method:Q(`ui/notifications/sandbox-resource-ready`),params:q({html:H().describe(`HTML content to load into the inner iframe.`),sandbox:H().optional().describe(`Optional override for the inner iframe's sandbox attribute.`),csp:xD.optional().describe(`CSP configuration from resource metadata.`),permissions:SD.optional().describe(`Sandbox permissions from resource metadata.`)})});var FD=q({method:Q(`ui/notifications/tool-result`),params:US.describe(`Standard MCP tool execution result.`)}),ID=q({toolInfo:q({id:mx.optional().describe(`JSON-RPC id of the tools/call request.`),tool:BS.describe(`Tool definition including name, inputSchema, etc.`)}).optional().describe(`Metadata of the tool call that instantiated this App.`),theme:hD.optional().describe(`Current color theme preference.`),styles:DD.optional().describe(`Style configuration for theming the app.`),displayMode:gD.optional().describe(`How the UI is currently displayed.`),availableDisplayModes:K(gD).optional().describe(`Display modes the host supports.`),containerDimensions:Y([q({height:U().describe(`Fixed container height in pixels.`)}),q({maxHeight:Y([U(),Xy()]).optional().describe(`Maximum container height in pixels.`)})]).and(Y([q({width:U().describe(`Fixed container width in pixels.`)}),q({maxWidth:Y([U(),Xy()]).optional().describe(`Maximum container width in pixels.`)})])).optional().describe(`Container dimensions. Represents the dimensions of the iframe or other -container holding the app. Specify either width or maxWidth, and either height or maxHeight.`),locale:H().optional().describe(`User's language and region preference in BCP 47 format.`),timeZone:H().optional().describe(`User's timezone in IANA format.`),userAgent:H().optional().describe(`Host application identifier.`),platform:Y([Q(`web`),Q(`desktop`),Q(`mobile`)]).optional().describe(`Platform type for responsive design decisions.`),deviceCapabilities:q({touch:W().optional().describe(`Whether the device supports touch input.`),hover:W().optional().describe(`Whether the device supports hover interactions.`)}).optional().describe(`Device input capabilities.`),safeAreaInsets:q({top:U().describe(`Top safe area inset in pixels.`),right:U().describe(`Right safe area inset in pixels.`),bottom:U().describe(`Bottom safe area inset in pixels.`),left:U().describe(`Left safe area inset in pixels.`)}).optional().describe(`Mobile safe area boundaries in pixels.`)}).passthrough(),LD=q({method:Q(`ui/notifications/host-context-changed`),params:ID.describe(`Partial context update containing only changed fields.`)});q({method:Q(`ui/update-model-context`),params:q({content:K(PS).optional().describe(`Context content blocks (text, image, etc.).`),structuredContent:X(H(),G().describe(`Structured content for machine-readable context data.`)).optional().describe(`Structured content for machine-readable context data.`)})}),q({method:Q(`ui/initialize`),params:q({appInfo:Dx.describe(`App identification (name and version).`),appCapabilities:MD.describe(`Features and capabilities this app provides.`),protocolVersion:H().describe(`Protocol version this app supports.`)})});var RD=q({protocolVersion:H().describe(`Negotiated protocol version string (e.g., "2025-11-21").`),hostInfo:Dx.describe(`Host application identification and version.`),hostCapabilities:jD.describe(`Features and capabilities provided by the host.`),hostContext:ID.describe(`Rich context about the host environment.`)}).passthrough(),zD={target:`draft-2020-12`};async function BD(e,t){let n=e[`~standard`];if(n.jsonSchema)return n.jsonSchema[t](zD);throw Error(`Schema (vendor: ${n.vendor}) does not implement Standard JSON Schema (~standard.jsonSchema). Use a library that does (zod v4, ArkType, Valibot) or wrap your schema accordingly.`)}async function VD(e,t,n=``){let r=await e[`~standard`].validate(t);if(r.issues){let e=r.issues.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `);throw Error(n+e)}return r.value}function HD(e,t){let n={...e,...t};return t.experimental!==void 0&&(n.experimental={...e.experimental,...t.experimental}),t.tools!==void 0&&(n.tools={...e.tools,...t.tools}),n}var UD=class e extends UE{_appInfo;_appCapabilities;options;_hostCapabilities;_hostInfo;_hostContext;_registeredTools={};_initializedSent=!1;_registeredEvents=new Set;_events=new cD;_methods=new lD;setRequestHandler=(...e)=>{let[t,...n]=dD(`request`,e)??e;this._methods.claim(t,`setRequestHandler`),super.setRequestHandler.call(this,t,...n)};setNotificationHandler=(...e)=>{let[t,...n]=dD(`notification`,e)??e;this._methods.claim(t,`setNotificationHandler`),super.setNotificationHandler.call(this,t,...n)};removeRequestHandler=e=>{this._methods.release(e),super.removeRequestHandler(e)};removeNotificationHandler=e=>{this._methods.release(e),super.removeNotificationHandler(e)};replaceRequestHandler=(e,...t)=>{this._methods.replace(e),super.setRequestHandler.call(this,e,...t)};_assertInitialized(e){if(this._initializedSent)return;let t=`[ext-apps] App.${e}() called before connect() completed the ui/initialize handshake. Await app.connect() before calling this method, or move data loading to an ontoolresult handler.`;if(this.options?.strict)throw Error(t);console.warn(`${t}. This will throw in a future release.`)}eventSchemas={toolinput:CD,toolinputpartial:wD,toolresult:FD,toolcancelled:TD,hostcontextchanged:LD};static ONE_SHOT_EVENTS=new Set([`toolinput`,`toolinputpartial`,`toolresult`,`toolcancelled`]);_everHadListener=new Set;_assertHandlerTiming(t){if(!e.ONE_SHOT_EVENTS.has(t)||this._everHadListener.has(t)||(this._everHadListener.add(t),!this._initializedSent))return;let n=`[ext-apps] "${String(t)}" handler registered after connect() completed the ui/initialize handshake. The host may have already sent this notification. Register handlers before calling app.connect().`;if(this.options?.strict)throw Error(n);console.warn(n)}setEventHandler(e,t){t&&this._assertHandlerTiming(e),this._ensureEventSlot(e),this._events.setHandler(e,t)}addEventListener(e,t){this._assertHandlerTiming(e),this._ensureEventSlot(e),this._events.addEventListener(e,t)}removeEventListener(e,t){this._events.removeEventListener(e,t)}_ensureEventSlot(e){if(this._registeredEvents.has(e))return;let t=this.eventSchemas[e];if(!t)throw Error(`Unknown event: ${String(e)}`);this.setNotificationHandler(t.shape.method.value,{params:t.shape.params},t=>{let n=t;e===`hostcontextchanged`&&(this._hostContext={...this._hostContext,...n}),this._events.dispatch(e,n)}),this._registeredEvents.add(e)}getEventHandler(e){return this._events.getHandler(e)}warnIfRequestHandlerReplaced(e,t,n){t&&n&&console.warn(`[MCP Apps] ${e} handler replaced. Previous handler will no longer be called.`)}constructor(e,t={},n={autoResize:!0}){super(n),this._appInfo=e,this._appCapabilities=t,this.options=n,this._methods.replace(`notifications/cancelled`),this._methods.replace(`notifications/progress`),!n.allowUnsafeEval&&Bf({jitless:!0}),this.replaceRequestHandler(`ping`,e=>(console.log(`Received ping:`,e.params),{})),this.setEventHandler(`hostcontextchanged`,void 0)}buildContext(e){return e}registerAppCapabilities(e){if(this.transport)throw Error(`Cannot register capabilities after transport is established`);this._appCapabilities=HD(this._appCapabilities,e)}registerTool(e,t,n){if(this._registeredTools[e])throw Error(`Tool ${e} is already registered`);let r=this,i=()=>{r._initializedSent&&r._appCapabilities.tools?.listChanged&&r.sendToolListChanged()},a=t.inputSchema!==void 0,o={title:t.title,description:t.description,inputSchema:t.inputSchema,outputSchema:t.outputSchema,annotations:t.annotations,_meta:t._meta,enabled:!0,enable(){this.enabled=!0,i()},disable(){this.enabled=!1,i()},update(e){Object.assign(this,e),i()},remove(){r._registeredTools[e]===o&&(delete r._registeredTools[e],i())},handler:async(t,r)=>{if(!o.enabled)throw Error(`Tool ${e} is disabled`);let i;if(a){let a=o.inputSchema;i=await n(a?await VD(a,t??{},`Invalid input for tool ${e}: `):t??{},r)}else i=await n(r);return o.outputSchema&&!i.isError&&(i.structuredContent=await VD(o.outputSchema,i.structuredContent,`Invalid output for tool ${e}: `)),i}};return this._registeredTools[e]=o,!this._appCapabilities.tools&&!this.transport&&this.registerAppCapabilities({tools:{listChanged:!0}}),this.ensureToolHandlersInitialized(),i(),o}_toolHandlersInitialized=!1;ensureToolHandlersInitialized(){this._toolHandlersInitialized||(this._toolHandlersInitialized=!0,this.oncalltool=async(e,t)=>{let n=this._registeredTools[e.name];if(!n)throw Error(`Tool ${e.name} not found`);return n.handler(e.arguments,t)},this.onlisttools=async(e,t)=>({tools:await Promise.all(Object.entries(this._registeredTools).filter(([e,t])=>t.enabled).map(async([e,t])=>{let n={name:e,title:t.title,description:t.description,inputSchema:t.inputSchema?await BD(t.inputSchema,`input`):{type:`object`,properties:{}}};return t.outputSchema&&(n.outputSchema=await BD(t.outputSchema,`output`)),t.annotations&&(n.annotations=t.annotations),t._meta&&(n._meta=t._meta),n}))}))}async sendToolListChanged(e={}){this._assertInitialized(`sendToolListChanged`),await this.notification({method:`notifications/tools/list_changed`,params:e})}getHostCapabilities(){return this._hostCapabilities}getHostVersion(){return this._hostInfo}getHostContext(){return this._hostContext}get ontoolinput(){return this.getEventHandler(`toolinput`)}set ontoolinput(e){this.setEventHandler(`toolinput`,e)}get ontoolinputpartial(){return this.getEventHandler(`toolinputpartial`)}set ontoolinputpartial(e){this.setEventHandler(`toolinputpartial`,e)}get ontoolresult(){return this.getEventHandler(`toolresult`)}set ontoolresult(e){this.setEventHandler(`toolresult`,e)}get ontoolcancelled(){return this.getEventHandler(`toolcancelled`)}set ontoolcancelled(e){this.setEventHandler(`toolcancelled`,e)}get onhostcontextchanged(){return this.getEventHandler(`hostcontextchanged`)}set onhostcontextchanged(e){this.setEventHandler(`hostcontextchanged`,e)}_onteardown;get onteardown(){return this._onteardown}set onteardown(e){this.warnIfRequestHandlerReplaced(`onteardown`,this._onteardown,e),this._onteardown=e,this.replaceRequestHandler(`ui/resource-teardown`,{params:OD.shape.params,result:kD},(e,t)=>{if(!this._onteardown)throw Error(`No onteardown handler set`);return this._onteardown(e,t)})}_oncalltool;get oncalltool(){return this._oncalltool}set oncalltool(e){this.warnIfRequestHandlerReplaced(`oncalltool`,this._oncalltool,e),this._oncalltool=e,this.replaceRequestHandler(`tools/call`,(e,t)=>{if(!this._oncalltool)throw Error(`No oncalltool handler set`);return this._oncalltool(e.params,t)})}_onlisttools;get onlisttools(){return this._onlisttools}set onlisttools(e){this.warnIfRequestHandlerReplaced(`onlisttools`,this._onlisttools,e),this._onlisttools=e,this.replaceRequestHandler(`tools/list`,(e,t)=>{if(!this._onlisttools)throw Error(`No onlisttools handler set`);return this._onlisttools(e.params,t)})}assertCapabilityForMethod(e){if(e===`sampling/createMessage`&&!this._hostCapabilities?.sampling)throw Error(`Host does not support sampling (required for ${e})`)}assertRequestHandlerCapability(e){switch(e){case`tools/call`:case`tools/list`:if(!this._appCapabilities.tools)throw Error(`Client does not support tool capability (required for ${e})`);return;default:return}}assertNotificationCapability(e){}async callServerTool(e,t){if(this._assertInitialized(`callServerTool`),typeof e==`string`)throw Error(`callServerTool() expects an object as its first argument, but received a string ("${e}"). Did you mean: callServerTool({ name: "${e}", arguments: { ... } })?`);return await this.request({method:`tools/call`,params:e},{onprogress:()=>{},resetTimeoutOnProgress:!0,...t})}async readServerResource(e,t){return this._assertInitialized(`readServerResource`),await this.request({method:`resources/read`,params:e},t)}async listServerResources(e,t){return this._assertInitialized(`listServerResources`),await this.request({method:`resources/list`,params:e},t)}async createSamplingMessage(e,t){return this._assertInitialized(`createSamplingMessage`),await this.request({method:`sampling/createMessage`,params:e},t)}sendMessage(e,t){return this._assertInitialized(`sendMessage`),this.request({method:`ui/message`,params:e},bD,t)}sendLog(e){return this.notification({method:`notifications/message`,params:e})}updateModelContext(e,t){return this._assertInitialized(`updateModelContext`),this.request({method:`ui/update-model-context`,params:e},xx,t)}openLink(e,t){return this._assertInitialized(`openLink`),this.request({method:`ui/open-link`,params:e},vD,t)}sendOpenLink=this.openLink;downloadFile(e,t){return this._assertInitialized(`downloadFile`),this.request({method:`ui/download-file`,params:e},yD,t)}requestTeardown(e={}){return this.notification({method:`ui/notifications/request-teardown`,params:e})}requestDisplayMode(e,t){return this._assertInitialized(`requestDisplayMode`),this.request({method:`ui/request-display-mode`,params:e},ND,t)}sendSizeChanged(e){return this.notification({method:`ui/notifications/size-changed`,params:e})}setupSizeChangedNotifications(){let e=!1,t=0,n=0,r=()=>{e||(e=!0,requestAnimationFrame(()=>{e=!1;let r=document.documentElement,i=r.style.height;r.style.height=`max-content`;let a=Math.ceil(r.getBoundingClientRect().height);r.style.height=i;let o=Math.ceil(window.innerWidth);(o!==t||a!==n)&&(t=o,n=a,this.sendSizeChanged({width:o,height:a}))}))};r();let i=new ResizeObserver(r);return i.observe(document.documentElement),i.observe(document.body),()=>i.disconnect()}async connect(e=new mD(window.parent,window.parent),t){if(this.transport)throw Error(`App is already connected. Call close() before connecting again.`);this._initializedSent=!1;try{await super.connect(e);let n=await this.request({method:`ui/initialize`,params:{appCapabilities:this._appCapabilities,appInfo:this._appInfo,protocolVersion:pD}},RD,t);if(n===void 0)throw Error(`Server sent invalid initialize result: ${n}`);this._hostCapabilities=n.hostCapabilities,this._hostInfo=n.hostInfo,this._hostContext=n.hostContext,await this.notification({method:`ui/notifications/initialized`}),this._initializedSent=!0,this.options?.autoResize&&this.setupSizeChangedNotifications()}catch(e){throw this.close(),e}}};function WD({appInfo:e,capabilities:t,onAppCreated:n,autoResize:r=!0,strict:i}){let[a,o]=(0,C.useState)(null),[s,c]=(0,C.useState)(!1),[l,u]=(0,C.useState)(null);return(0,C.useEffect)(()=>{let a=!0,s;async function l(){try{let l=new mD(window.parent,window.parent);if(s=new UD(e,t,{autoResize:r,strict:i}),n?.(s),await s.connect(l),!a){s.close();return}o(s),c(!0),u(null)}catch(e){a&&(o(null),c(!1),u(e instanceof Error?e:Error(`Failed to connect`)))}}return l(),()=>{a=!1,s?.close()}},[]),{app:a,isConnected:s,error:l}}function GD(e){let[t,n]=(0,C.useState)(null),[r,i]=(0,C.useState)({}),[a,o]=(0,C.useState)(),[s,c]=(0,C.useState)(null);function l(e){if(e.isError){c(`This view could not be refreshed. Please try again.`);return}c(null),n(e.structuredContent)}let u=WD({appInfo:{name:e,version:`1.0.0`},capabilities:{},onAppCreated:e=>{e.ontoolinput=e=>{i(e.arguments??{})},e.ontoolresult=l,e.onhostcontextchanged=e=>o(t=>({...t,...e})),e.onerror=e=>{console.error(`MCP app error`,e),c(`This view could not be refreshed. Please try again.`)}}});(0,C.useEffect)(()=>{u.app&&o(u.app.getHostContext())},[u.app]);async function d(e){if(u.app)try{l(await u.app.callServerTool({name:e,arguments:r}))}catch(t){console.error(`Tool call ${e} failed`,t),c(`This view could not be refreshed. Please try again.`)}}return{...u,result:t,toolInput:r,host:a,toolError:s,callTool:d}}async function KD(e,t){e&&await e.sendMessage({role:`user`,content:[{type:`text`,text:t}]})}function qD(){let{app:e,callTool:t,error:n,host:r,result:i,toolError:a}=GD(`Fanout trace detail`),[o,s]=(0,C.useState)(`waterfall`),c=r?.theme===`dark`;return(0,F.jsxs)($u,{dark:c,children:[(0,F.jsx)(ed,{title:i?.data.trace_id?`Trace ${QD(i.data.trace_id)}`:`Trace analysis`,summary:i?`${i.data.spans.length} spans across ${i.data.services.length} services`:void 0,onRefresh:()=>t(`inspect_trace`),disabled:!e}),(0,F.jsx)(td,{error:a??(n?`This view could not be loaded. Please try again.`:null),loading:!i&&!n&&!a?`Finding a representative trace…`:void 0,retry:()=>void t(`inspect_trace`)}),i&&i.data.spans.length===0&&(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(rd,{tall:!0,icon:(0,F.jsx)(Tu,{size:20,weight:`duotone`}),title:`No traces in this window`,children:`Try a wider time window.`}),(0,F.jsx)(id,{left:fd(i.provenance.window),right:`No traces found`})]}),i&&i.data.spans.length>0&&(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(Tl,{cols:{base:2,sm:4},spacing:`sm`,px:{base:`md`,sm:`lg`},pb:`md`,children:[(0,F.jsx)(ad,{label:`Duration`,value:dd(i.data.duration_ms)}),(0,F.jsx)(ad,{label:`Spans`,value:ud.format(i.data.spans.length)}),(0,F.jsx)(ad,{label:`Services`,value:ud.format(i.data.services.length)}),(0,F.jsx)(ad,{label:`Status`,value:i.data.has_error?`Error`:`OK`,color:i.data.has_error?`bad`:`ok`})]}),(0,F.jsx)(nd,{active:o,onChange:s,items:[{id:`waterfall`,label:`Waterfall`,count:i.data.spans.length},{id:`flame`,label:`Flame graph`},{id:`logs`,label:`Correlated logs`,count:i.data.logs.length}]}),o===`waterfall`&&(0,F.jsx)(JD,{spans:i.data.spans,dark:c,onSpan:t=>KD(e,`Investigate span ${t.span_id} (${t.service} ${t.operation}) in trace ${i.data.trace_id}.`)}),o===`flame`&&(0,F.jsx)(YD,{spans:i.data.spans,dark:c,onSpan:t=>KD(e,`Investigate span ${t.span_id} (${t.service} ${t.operation}) in trace ${i.data.trace_id}.`)}),o===`logs`&&(0,F.jsx)(ZD,{entries:i.data.logs}),(0,F.jsx)(id,{left:fd(i.provenance.window),right:`Trace ${QD(i.data.trace_id)}`})]})]})}function JD({spans:e,dark:t,onSpan:n}){let r=Math.min(...e.map(e=>new Date(e.start).valueOf())),i=Math.max(...e.map(e=>new Date(e.start).valueOf()+e.duration_ms)),a=Math.max(i-r,1),o=od(e,8);return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(Jl.ScrollContainer,{minWidth:680,children:(0,F.jsxs)(Jl,{highlightOnHover:!0,verticalSpacing:`sm`,children:[(0,F.jsx)(Jl.Thead,{children:(0,F.jsxs)(Jl.Tr,{children:[(0,F.jsx)(Jl.Th,{w:230,children:`Operation`}),(0,F.jsx)(Jl.Th,{children:`Timeline`}),(0,F.jsx)(Jl.Th,{w:90,ta:`right`,children:`Duration`})]})}),(0,F.jsx)(Jl.Tbody,{children:o.pageItems.map(e=>{let i=(new Date(e.start).valueOf()-r)/a*100,o=Math.max(e.duration_ms/a*100,.6),s=e.status.toUpperCase().includes(`ERROR`);return(0,F.jsxs)(Jl.Tr,{tabIndex:0,onClick:()=>n(e),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&n(e)},style:{cursor:`pointer`},children:[(0,F.jsx)(Jl.Td,{children:(0,F.jsxs)(cc,{gap:`xs`,wrap:`nowrap`,children:[(0,F.jsx)(L,{w:8,h:8,bg:z(e.service,t),style:{borderRadius:`50%`,flex:`0 0 auto`}}),(0,F.jsxs)(L,{miw:0,children:[(0,F.jsx)(gc,{fw:600,size:`sm`,truncate:!0,children:e.operation}),(0,F.jsx)(gc,{c:`dimmed`,size:`xs`,truncate:!0,children:e.service})]})]})}),(0,F.jsx)(Jl.Td,{children:(0,F.jsx)(gl,{label:`${e.service} · ${e.operation} · ${dd(e.duration_ms)}`,withArrow:!0,children:(0,F.jsx)(L,{pos:`relative`,h:14,bg:`var(--mantine-color-default-hover)`,role:`img`,"aria-label":`${e.operation} on ${e.service} took ${dd(e.duration_ms)}`,style:{borderRadius:`var(--mantine-radius-sm)`},children:(0,F.jsx)(L,{pos:`absolute`,left:`${i}%`,w:`${Math.min(o,100-i)}%`,h:`100%`,bg:s?`bad`:z(e.service,t),style:{borderRadius:`var(--mantine-radius-sm)`,minWidth:3}})})})}),(0,F.jsx)(Jl.Td,{ta:`right`,children:(0,F.jsx)(gc,{size:`sm`,ff:`monospace`,children:dd(e.duration_ms)})})]},e.span_id)})})]})}),(0,F.jsx)(cd,{...o,onChange:o.setPage})]})}function YD({spans:e,dark:t,onSpan:n}){let r=(0,C.useMemo)(()=>XD(e),[e]),i=[...new Set(e.map(e=>e.service))];return(0,F.jsxs)(kl,{px:{base:`md`,sm:`lg`},pb:`md`,gap:`xs`,children:[(0,F.jsxs)(cc,{justify:`space-between`,children:[(0,F.jsx)(cc,{gap:`md`,children:i.map(e=>(0,F.jsxs)(cc,{gap:5,children:[(0,F.jsx)(L,{w:8,h:8,bg:z(e,t),style:{borderRadius:`50%`}}),(0,F.jsx)(gc,{c:`dimmed`,size:`xs`,children:e})]},e))}),(0,F.jsx)(yc,{variant:`light`,children:dd(r.total)})]}),(0,F.jsx)(ms,{withBorder:!0,radius:`md`,p:`sm`,children:(0,F.jsx)(ss,{type:`auto`,offsetScrollbars:!0,children:(0,F.jsxs)(L,{miw:760,children:[(0,F.jsx)(L,{pos:`relative`,h:22,mb:4,children:[0,25,50,75,100].map(e=>(0,F.jsx)(gc,{pos:`absolute`,left:`${e}%`,c:`dimmed`,size:`xs`,style:{transform:e===100?`translateX(-100%)`:e?`translateX(-50%)`:void 0},children:dd(r.total*e/100)},e))}),(0,F.jsxs)(L,{pos:`relative`,h:Math.max(150,r.laneCount*36+12),bg:`var(--mantine-color-default-hover)`,style:{overflow:`hidden`,borderRadius:`var(--mantine-radius-md)`},children:[[0,25,50,75,100].map(e=>(0,F.jsx)(L,{pos:`absolute`,left:`${e}%`,top:0,bottom:0,style:{borderLeft:`1px solid var(--mantine-color-default-border)`}},e)),r.frames.map(({span:e,lane:r,left:i,width:a})=>{let o=e.status.toUpperCase().includes(`ERROR`),s=a<7;return(0,F.jsx)(gl,{label:`${e.service} · ${e.operation} · ${dd(e.duration_ms)}`,withArrow:!0,children:(0,F.jsx)(Oc,{variant:`filled`,color:o?`bad`:z(e.service,t),"aria-label":`${e.operation} · ${e.service} · ${dd(e.duration_ms)}`,pos:`absolute`,left:`${i}%`,top:r*36+6,w:`${Math.max(a,.35)}%`,h:30,px:s?2:`xs`,size:`compact-xs`,onClick:()=>n(e),style:{overflow:`hidden`,minWidth:3},children:(0,F.jsxs)(gc,{component:`span`,size:`xs`,fw:700,truncate:!0,children:[s?``:e.operation,a>=12?` · ${dd(e.duration_ms)}`:``]})})},e.span_id)})]})]})})}),(0,F.jsx)(gc,{c:`dimmed`,size:`xs`,children:`Width represents wall-clock duration; lanes preserve span hierarchy without overlap.`})]})}function XD(e){let t=Math.min(...e.map(e=>new Date(e.start).valueOf())),n=Math.max(...e.map(e=>new Date(e.start).valueOf()+e.duration_ms)),r=Math.max(n-t,1),i=new Map(e.map(e=>[e.span_id,e])),a=(e,t=new Set)=>{if(!e.parent_span_id||t.has(e.span_id))return 0;let n=i.get(e.parent_span_id);return n?(t.add(e.span_id),1+a(n,t)):0},o=e.map(e=>{let n=new Date(e.start).valueOf();return{span:e,depth:a(e),start:n,end:n+e.duration_ms,left:(n-t)/r*100,width:e.duration_ms/r*100}}).sort((e,t)=>e.depth-t.depth||e.start-t.start||t.span.duration_ms-e.span.duration_ms),s=[],c=0;for(let e of[...new Set(o.map(e=>e.depth))].sort((e,t)=>e-t)){let t=[];for(let n of o.filter(t=>t.depth===e)){let e=t.findIndex(e=>e<=n.start);e===-1&&(e=t.length),t[e]=n.end,s.push({...n,lane:c+e})}c+=Math.max(t.length,1)}return{frames:s,laneCount:c,total:r}}function ZD({entries:e}){let t=od(e,6);return e.length===0?(0,F.jsx)(rd,{tall:!0,icon:(0,F.jsx)(Cu,{size:20,weight:`duotone`}),title:`No correlated logs`,children:`No logs in this window carry the selected trace ID.`}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(Jl.ScrollContainer,{minWidth:620,children:(0,F.jsxs)(Jl,{striped:!0,verticalSpacing:`xs`,children:[(0,F.jsx)(Jl.Thead,{children:(0,F.jsxs)(Jl.Tr,{children:[(0,F.jsxs)(Jl.Th,{children:[`Time (`,pd(t.pageItems[0]?.time),`)`]}),(0,F.jsx)(Jl.Th,{children:`Level`}),(0,F.jsx)(Jl.Th,{children:`Service`}),(0,F.jsx)(Jl.Th,{children:`Message`})]})}),(0,F.jsx)(Jl.Tbody,{children:t.pageItems.map((e,n)=>(0,F.jsxs)(Jl.Tr,{children:[(0,F.jsx)(Jl.Td,{style:{whiteSpace:`nowrap`},children:(0,F.jsx)(gc,{size:`xs`,ff:`monospace`,title:md(e.time),children:new Date(e.time).toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`,second:`2-digit`})})}),(0,F.jsx)(Jl.Td,{children:(0,F.jsx)(yc,{size:`sm`,color:ld(e.severity),variant:`light`,children:e.severity||`LOG`})}),(0,F.jsx)(Jl.Td,{children:(0,F.jsx)(gc,{fw:600,size:`sm`,children:e.service})}),(0,F.jsx)(Jl.Td,{children:(0,F.jsx)(gc,{size:`sm`,lineClamp:2,title:e.body,children:e.body})})]},`${e.time}-${t.from+n}`))})]})}),(0,F.jsx)(cd,{...t,onChange:t.setPage})]})}function QD(e){return e.length>12?`${e.slice(0,8)}…${e.slice(-4)}`:e}(0,ku.createRoot)(document.getElementById(`root`)).render((0,F.jsx)(C.StrictMode,{children:(0,F.jsx)(qD,{})})); +- "app": Tool callable by the app from this server only`),csp:ib().optional(),permissions:ib().optional()}),q({mimeTypes:K(H()).optional().describe('Array of supported MIME types for UI resources.\nMust include `"text/html;profile=mcp-app"` for MCP Apps support.')}),q({method:Q(`ui/download-file`),params:q({contents:K(Y([NS,PS])).describe(`Resource contents to download — embedded (inline data) or linked (host fetches). Uses standard MCP resource types.`)})}),q({method:Q(`ui/message`),params:q({role:Q(`user`).describe(`Message role, currently only "user" is supported.`),content:K(FS).describe(`Message content blocks (text, image, etc.).`)})}),q({method:Q(`ui/notifications/sandbox-resource-ready`),params:q({html:H().describe(`HTML content to load into the inner iframe.`),sandbox:H().optional().describe(`Optional override for the inner iframe's sandbox attribute.`),csp:SD.optional().describe(`CSP configuration from resource metadata.`),permissions:CD.optional().describe(`Sandbox permissions from resource metadata.`)})});var ID=q({method:Q(`ui/notifications/tool-result`),params:WS.describe(`Standard MCP tool execution result.`)}),LD=q({toolInfo:q({id:hx.optional().describe(`JSON-RPC id of the tools/call request.`),tool:VS.describe(`Tool definition including name, inputSchema, etc.`)}).optional().describe(`Metadata of the tool call that instantiated this App.`),theme:gD.optional().describe(`Current color theme preference.`),styles:OD.optional().describe(`Style configuration for theming the app.`),displayMode:_D.optional().describe(`How the UI is currently displayed.`),availableDisplayModes:K(_D).optional().describe(`Display modes the host supports.`),containerDimensions:Y([q({height:U().describe(`Fixed container height in pixels.`)}),q({maxHeight:Y([U(),Zy()]).optional().describe(`Maximum container height in pixels.`)})]).and(Y([q({width:U().describe(`Fixed container width in pixels.`)}),q({maxWidth:Y([U(),Zy()]).optional().describe(`Maximum container width in pixels.`)})])).optional().describe(`Container dimensions. Represents the dimensions of the iframe or other +container holding the app. Specify either width or maxWidth, and either height or maxHeight.`),locale:H().optional().describe(`User's language and region preference in BCP 47 format.`),timeZone:H().optional().describe(`User's timezone in IANA format.`),userAgent:H().optional().describe(`Host application identifier.`),platform:Y([Q(`web`),Q(`desktop`),Q(`mobile`)]).optional().describe(`Platform type for responsive design decisions.`),deviceCapabilities:q({touch:W().optional().describe(`Whether the device supports touch input.`),hover:W().optional().describe(`Whether the device supports hover interactions.`)}).optional().describe(`Device input capabilities.`),safeAreaInsets:q({top:U().describe(`Top safe area inset in pixels.`),right:U().describe(`Right safe area inset in pixels.`),bottom:U().describe(`Bottom safe area inset in pixels.`),left:U().describe(`Left safe area inset in pixels.`)}).optional().describe(`Mobile safe area boundaries in pixels.`)}).passthrough(),RD=q({method:Q(`ui/notifications/host-context-changed`),params:LD.describe(`Partial context update containing only changed fields.`)});q({method:Q(`ui/update-model-context`),params:q({content:K(FS).optional().describe(`Context content blocks (text, image, etc.).`),structuredContent:X(H(),G().describe(`Structured content for machine-readable context data.`)).optional().describe(`Structured content for machine-readable context data.`)})}),q({method:Q(`ui/initialize`),params:q({appInfo:Ox.describe(`App identification (name and version).`),appCapabilities:ND.describe(`Features and capabilities this app provides.`),protocolVersion:H().describe(`Protocol version this app supports.`)})});var zD=q({protocolVersion:H().describe(`Negotiated protocol version string (e.g., "2025-11-21").`),hostInfo:Ox.describe(`Host application identification and version.`),hostCapabilities:MD.describe(`Features and capabilities provided by the host.`),hostContext:LD.describe(`Rich context about the host environment.`)}).passthrough(),BD={target:`draft-2020-12`};async function VD(e,t){let n=e[`~standard`];if(n.jsonSchema)return n.jsonSchema[t](BD);throw Error(`Schema (vendor: ${n.vendor}) does not implement Standard JSON Schema (~standard.jsonSchema). Use a library that does (zod v4, ArkType, Valibot) or wrap your schema accordingly.`)}async function HD(e,t,n=``){let r=await e[`~standard`].validate(t);if(r.issues){let e=r.issues.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `);throw Error(n+e)}return r.value}function UD(e,t){let n={...e,...t};return t.experimental!==void 0&&(n.experimental={...e.experimental,...t.experimental}),t.tools!==void 0&&(n.tools={...e.tools,...t.tools}),n}var WD=class e extends WE{_appInfo;_appCapabilities;options;_hostCapabilities;_hostInfo;_hostContext;_registeredTools={};_initializedSent=!1;_registeredEvents=new Set;_events=new lD;_methods=new uD;setRequestHandler=(...e)=>{let[t,...n]=fD(`request`,e)??e;this._methods.claim(t,`setRequestHandler`),super.setRequestHandler.call(this,t,...n)};setNotificationHandler=(...e)=>{let[t,...n]=fD(`notification`,e)??e;this._methods.claim(t,`setNotificationHandler`),super.setNotificationHandler.call(this,t,...n)};removeRequestHandler=e=>{this._methods.release(e),super.removeRequestHandler(e)};removeNotificationHandler=e=>{this._methods.release(e),super.removeNotificationHandler(e)};replaceRequestHandler=(e,...t)=>{this._methods.replace(e),super.setRequestHandler.call(this,e,...t)};_assertInitialized(e){if(this._initializedSent)return;let t=`[ext-apps] App.${e}() called before connect() completed the ui/initialize handshake. Await app.connect() before calling this method, or move data loading to an ontoolresult handler.`;if(this.options?.strict)throw Error(t);console.warn(`${t}. This will throw in a future release.`)}eventSchemas={toolinput:wD,toolinputpartial:TD,toolresult:ID,toolcancelled:ED,hostcontextchanged:RD};static ONE_SHOT_EVENTS=new Set([`toolinput`,`toolinputpartial`,`toolresult`,`toolcancelled`]);_everHadListener=new Set;_assertHandlerTiming(t){if(!e.ONE_SHOT_EVENTS.has(t)||this._everHadListener.has(t)||(this._everHadListener.add(t),!this._initializedSent))return;let n=`[ext-apps] "${String(t)}" handler registered after connect() completed the ui/initialize handshake. The host may have already sent this notification. Register handlers before calling app.connect().`;if(this.options?.strict)throw Error(n);console.warn(n)}setEventHandler(e,t){t&&this._assertHandlerTiming(e),this._ensureEventSlot(e),this._events.setHandler(e,t)}addEventListener(e,t){this._assertHandlerTiming(e),this._ensureEventSlot(e),this._events.addEventListener(e,t)}removeEventListener(e,t){this._events.removeEventListener(e,t)}_ensureEventSlot(e){if(this._registeredEvents.has(e))return;let t=this.eventSchemas[e];if(!t)throw Error(`Unknown event: ${String(e)}`);this.setNotificationHandler(t.shape.method.value,{params:t.shape.params},t=>{let n=t;e===`hostcontextchanged`&&(this._hostContext={...this._hostContext,...n}),this._events.dispatch(e,n)}),this._registeredEvents.add(e)}getEventHandler(e){return this._events.getHandler(e)}warnIfRequestHandlerReplaced(e,t,n){t&&n&&console.warn(`[MCP Apps] ${e} handler replaced. Previous handler will no longer be called.`)}constructor(e,t={},n={autoResize:!0}){super(n),this._appInfo=e,this._appCapabilities=t,this.options=n,this._methods.replace(`notifications/cancelled`),this._methods.replace(`notifications/progress`),!n.allowUnsafeEval&&Hf({jitless:!0}),this.replaceRequestHandler(`ping`,e=>(console.log(`Received ping:`,e.params),{})),this.setEventHandler(`hostcontextchanged`,void 0)}buildContext(e){return e}registerAppCapabilities(e){if(this.transport)throw Error(`Cannot register capabilities after transport is established`);this._appCapabilities=UD(this._appCapabilities,e)}registerTool(e,t,n){if(this._registeredTools[e])throw Error(`Tool ${e} is already registered`);let r=this,i=()=>{r._initializedSent&&r._appCapabilities.tools?.listChanged&&r.sendToolListChanged()},a=t.inputSchema!==void 0,o={title:t.title,description:t.description,inputSchema:t.inputSchema,outputSchema:t.outputSchema,annotations:t.annotations,_meta:t._meta,enabled:!0,enable(){this.enabled=!0,i()},disable(){this.enabled=!1,i()},update(e){Object.assign(this,e),i()},remove(){r._registeredTools[e]===o&&(delete r._registeredTools[e],i())},handler:async(t,r)=>{if(!o.enabled)throw Error(`Tool ${e} is disabled`);let i;if(a){let a=o.inputSchema;i=await n(a?await HD(a,t??{},`Invalid input for tool ${e}: `):t??{},r)}else i=await n(r);return o.outputSchema&&!i.isError&&(i.structuredContent=await HD(o.outputSchema,i.structuredContent,`Invalid output for tool ${e}: `)),i}};return this._registeredTools[e]=o,!this._appCapabilities.tools&&!this.transport&&this.registerAppCapabilities({tools:{listChanged:!0}}),this.ensureToolHandlersInitialized(),i(),o}_toolHandlersInitialized=!1;ensureToolHandlersInitialized(){this._toolHandlersInitialized||(this._toolHandlersInitialized=!0,this.oncalltool=async(e,t)=>{let n=this._registeredTools[e.name];if(!n)throw Error(`Tool ${e.name} not found`);return n.handler(e.arguments,t)},this.onlisttools=async(e,t)=>({tools:await Promise.all(Object.entries(this._registeredTools).filter(([e,t])=>t.enabled).map(async([e,t])=>{let n={name:e,title:t.title,description:t.description,inputSchema:t.inputSchema?await VD(t.inputSchema,`input`):{type:`object`,properties:{}}};return t.outputSchema&&(n.outputSchema=await VD(t.outputSchema,`output`)),t.annotations&&(n.annotations=t.annotations),t._meta&&(n._meta=t._meta),n}))}))}async sendToolListChanged(e={}){this._assertInitialized(`sendToolListChanged`),await this.notification({method:`notifications/tools/list_changed`,params:e})}getHostCapabilities(){return this._hostCapabilities}getHostVersion(){return this._hostInfo}getHostContext(){return this._hostContext}get ontoolinput(){return this.getEventHandler(`toolinput`)}set ontoolinput(e){this.setEventHandler(`toolinput`,e)}get ontoolinputpartial(){return this.getEventHandler(`toolinputpartial`)}set ontoolinputpartial(e){this.setEventHandler(`toolinputpartial`,e)}get ontoolresult(){return this.getEventHandler(`toolresult`)}set ontoolresult(e){this.setEventHandler(`toolresult`,e)}get ontoolcancelled(){return this.getEventHandler(`toolcancelled`)}set ontoolcancelled(e){this.setEventHandler(`toolcancelled`,e)}get onhostcontextchanged(){return this.getEventHandler(`hostcontextchanged`)}set onhostcontextchanged(e){this.setEventHandler(`hostcontextchanged`,e)}_onteardown;get onteardown(){return this._onteardown}set onteardown(e){this.warnIfRequestHandlerReplaced(`onteardown`,this._onteardown,e),this._onteardown=e,this.replaceRequestHandler(`ui/resource-teardown`,{params:kD.shape.params,result:AD},(e,t)=>{if(!this._onteardown)throw Error(`No onteardown handler set`);return this._onteardown(e,t)})}_oncalltool;get oncalltool(){return this._oncalltool}set oncalltool(e){this.warnIfRequestHandlerReplaced(`oncalltool`,this._oncalltool,e),this._oncalltool=e,this.replaceRequestHandler(`tools/call`,(e,t)=>{if(!this._oncalltool)throw Error(`No oncalltool handler set`);return this._oncalltool(e.params,t)})}_onlisttools;get onlisttools(){return this._onlisttools}set onlisttools(e){this.warnIfRequestHandlerReplaced(`onlisttools`,this._onlisttools,e),this._onlisttools=e,this.replaceRequestHandler(`tools/list`,(e,t)=>{if(!this._onlisttools)throw Error(`No onlisttools handler set`);return this._onlisttools(e.params,t)})}assertCapabilityForMethod(e){if(e===`sampling/createMessage`&&!this._hostCapabilities?.sampling)throw Error(`Host does not support sampling (required for ${e})`)}assertRequestHandlerCapability(e){switch(e){case`tools/call`:case`tools/list`:if(!this._appCapabilities.tools)throw Error(`Client does not support tool capability (required for ${e})`);return;default:return}}assertNotificationCapability(e){}async callServerTool(e,t){if(this._assertInitialized(`callServerTool`),typeof e==`string`)throw Error(`callServerTool() expects an object as its first argument, but received a string ("${e}"). Did you mean: callServerTool({ name: "${e}", arguments: { ... } })?`);return await this.request({method:`tools/call`,params:e},{onprogress:()=>{},resetTimeoutOnProgress:!0,...t})}async readServerResource(e,t){return this._assertInitialized(`readServerResource`),await this.request({method:`resources/read`,params:e},t)}async listServerResources(e,t){return this._assertInitialized(`listServerResources`),await this.request({method:`resources/list`,params:e},t)}async createSamplingMessage(e,t){return this._assertInitialized(`createSamplingMessage`),await this.request({method:`sampling/createMessage`,params:e},t)}sendMessage(e,t){return this._assertInitialized(`sendMessage`),this.request({method:`ui/message`,params:e},xD,t)}sendLog(e){return this.notification({method:`notifications/message`,params:e})}updateModelContext(e,t){return this._assertInitialized(`updateModelContext`),this.request({method:`ui/update-model-context`,params:e},Sx,t)}openLink(e,t){return this._assertInitialized(`openLink`),this.request({method:`ui/open-link`,params:e},yD,t)}sendOpenLink=this.openLink;downloadFile(e,t){return this._assertInitialized(`downloadFile`),this.request({method:`ui/download-file`,params:e},bD,t)}requestTeardown(e={}){return this.notification({method:`ui/notifications/request-teardown`,params:e})}requestDisplayMode(e,t){return this._assertInitialized(`requestDisplayMode`),this.request({method:`ui/request-display-mode`,params:e},PD,t)}sendSizeChanged(e){return this.notification({method:`ui/notifications/size-changed`,params:e})}setupSizeChangedNotifications(){let e=!1,t=0,n=0,r=()=>{e||(e=!0,requestAnimationFrame(()=>{e=!1;let r=document.documentElement,i=r.style.height;r.style.height=`max-content`;let a=Math.ceil(r.getBoundingClientRect().height);r.style.height=i;let o=Math.ceil(window.innerWidth);(o!==t||a!==n)&&(t=o,n=a,this.sendSizeChanged({width:o,height:a}))}))};r();let i=new ResizeObserver(r);return i.observe(document.documentElement),i.observe(document.body),()=>i.disconnect()}async connect(e=new hD(window.parent,window.parent),t){if(this.transport)throw Error(`App is already connected. Call close() before connecting again.`);this._initializedSent=!1;try{await super.connect(e);let n=await this.request({method:`ui/initialize`,params:{appCapabilities:this._appCapabilities,appInfo:this._appInfo,protocolVersion:mD}},zD,t);if(n===void 0)throw Error(`Server sent invalid initialize result: ${n}`);this._hostCapabilities=n.hostCapabilities,this._hostInfo=n.hostInfo,this._hostContext=n.hostContext,await this.notification({method:`ui/notifications/initialized`}),this._initializedSent=!0,this.options?.autoResize&&this.setupSizeChangedNotifications()}catch(e){throw this.close(),e}}};function GD({appInfo:e,capabilities:t,onAppCreated:n,autoResize:r=!0,strict:i}){let[a,o]=(0,C.useState)(null),[s,c]=(0,C.useState)(!1),[l,u]=(0,C.useState)(null);return(0,C.useEffect)(()=>{let a=!0,s;async function l(){try{let l=new hD(window.parent,window.parent);if(s=new WD(e,t,{autoResize:r,strict:i}),n?.(s),await s.connect(l),!a){s.close();return}o(s),c(!0),u(null)}catch(e){a&&(o(null),c(!1),u(e instanceof Error?e:Error(`Failed to connect`)))}}return l(),()=>{a=!1,s?.close()}},[]),{app:a,isConnected:s,error:l}}function KD(e){let[t,n]=(0,C.useState)(null),[r,i]=(0,C.useState)({}),[a,o]=(0,C.useState)(),[s,c]=(0,C.useState)(null);function l(e){if(e.isError){c(`This view could not be refreshed. Please try again.`);return}c(null),n(e.structuredContent)}let u=GD({appInfo:{name:e,version:`1.0.0`},capabilities:{},onAppCreated:e=>{e.ontoolinput=e=>{i(e.arguments??{})},e.ontoolresult=l,e.onhostcontextchanged=e=>o(t=>({...t,...e})),e.onerror=e=>{console.error(`MCP app error`,e),c(`This view could not be refreshed. Please try again.`)}}});(0,C.useEffect)(()=>{u.app&&o(u.app.getHostContext())},[u.app]);async function d(e){if(u.app)try{l(await u.app.callServerTool({name:e,arguments:r}))}catch(t){console.error(`Tool call ${e} failed`,t),c(`This view could not be refreshed. Please try again.`)}}return{...u,result:t,toolInput:r,host:a,toolError:s,callTool:d}}async function qD(e,t){e&&await e.sendMessage({role:`user`,content:[{type:`text`,text:t}]})}function JD(){let{app:e,callTool:t,error:n,host:r,result:i,toolError:a}=KD(`Fanout trace detail`),[o,s]=(0,C.useState)(`waterfall`),c=r?.theme===`dark`;return(0,F.jsxs)($u,{dark:c,children:[(0,F.jsx)(ed,{title:i?.data.trace_id?`Trace ${$D(i.data.trace_id)}`:`Trace analysis`,summary:i?`${i.data.spans.length} spans across ${i.data.services.length} services`:void 0,onRefresh:()=>t(`inspect_trace`),disabled:!e}),(0,F.jsx)(td,{error:a??(n?`This view could not be loaded. Please try again.`:null),loading:!i&&!n&&!a?`Finding a representative trace…`:void 0,retry:()=>void t(`inspect_trace`)}),i&&i.data.spans.length===0&&(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(rd,{tall:!0,icon:(0,F.jsx)(Tu,{size:20,weight:`duotone`}),title:`No traces in this window`,children:`Try a wider time window.`}),(0,F.jsx)(id,{left:md(i.provenance.window),right:`No traces found`})]}),i&&i.data.spans.length>0&&(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(Tl,{cols:{base:2,sm:4},spacing:`sm`,px:{base:`md`,sm:`lg`},pb:`md`,children:[(0,F.jsx)(ad,{label:`Duration`,value:pd(i.data.duration_ms)}),(0,F.jsx)(ad,{label:`Spans`,value:fd.format(i.data.spans.length)}),(0,F.jsx)(ad,{label:`Services`,value:fd.format(i.data.services.length)}),(0,F.jsx)(ad,{label:`Status`,value:i.data.has_error?`Error`:`OK`,color:i.data.has_error?`bad`:`ok`})]}),(0,F.jsx)(nd,{active:o,onChange:s,items:[{id:`waterfall`,label:`Waterfall`,count:i.data.spans.length},{id:`flame`,label:`Flame graph`},{id:`logs`,label:`Correlated logs`,count:i.data.logs.length}]}),o===`waterfall`&&(0,F.jsx)(YD,{spans:i.data.spans,dark:c,onSpan:t=>qD(e,`Investigate span ${t.span_id} (${t.service} ${t.operation}) in trace ${i.data.trace_id}.`)}),o===`flame`&&(0,F.jsx)(XD,{spans:i.data.spans,dark:c,onSpan:t=>qD(e,`Investigate span ${t.span_id} (${t.service} ${t.operation}) in trace ${i.data.trace_id}.`)}),o===`logs`&&(0,F.jsx)(QD,{entries:i.data.logs}),(0,F.jsx)(id,{left:md(i.provenance.window),right:`Trace ${$D(i.data.trace_id)}`})]})]})}function YD({spans:e,dark:t,onSpan:n}){let r=Math.min(...e.map(e=>new Date(e.start).valueOf())),i=Math.max(...e.map(e=>new Date(e.start).valueOf()+e.duration_ms)),a=Math.max(i-r,1),o=[...new Set(e.map(e=>e.service))],s=od(e,8);return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(Jl.ScrollContainer,{minWidth:680,children:(0,F.jsxs)(Jl,{highlightOnHover:!0,verticalSpacing:`sm`,children:[(0,F.jsx)(Jl.Thead,{children:(0,F.jsxs)(Jl.Tr,{children:[(0,F.jsx)(Jl.Th,{w:230,children:`Operation`}),(0,F.jsx)(Jl.Th,{children:`Timeline`}),(0,F.jsx)(Jl.Th,{w:90,ta:`right`,children:`Duration`})]})}),(0,F.jsx)(Jl.Tbody,{children:s.pageItems.map(e=>{let i=(new Date(e.start).valueOf()-r)/a*100,s=Math.max(e.duration_ms/a*100,.6),c=e.status.toUpperCase().includes(`ERROR`);return(0,F.jsxs)(Jl.Tr,{tabIndex:0,onClick:()=>n(e),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&n(e)},style:{cursor:`pointer`},children:[(0,F.jsx)(Jl.Td,{children:(0,F.jsxs)(cc,{gap:`xs`,wrap:`nowrap`,children:[(0,F.jsx)(L,{w:8,h:8,bg:ud(o.indexOf(e.service),t),style:{borderRadius:`50%`,flex:`0 0 auto`}}),(0,F.jsxs)(L,{miw:0,children:[(0,F.jsx)(gc,{fw:600,size:`sm`,truncate:!0,children:e.operation}),(0,F.jsx)(gc,{c:`dimmed`,size:`xs`,truncate:!0,children:e.service})]})]})}),(0,F.jsx)(Jl.Td,{children:(0,F.jsx)(gl,{label:`${e.service} · ${e.operation} · ${pd(e.duration_ms)}`,withArrow:!0,children:(0,F.jsx)(L,{pos:`relative`,h:14,bg:`var(--mantine-color-default-hover)`,role:`img`,"aria-label":`${e.operation} on ${e.service} took ${pd(e.duration_ms)}`,style:{borderRadius:`var(--mantine-radius-sm)`},children:(0,F.jsx)(L,{pos:`absolute`,left:`${i}%`,w:`${Math.min(s,100-i)}%`,h:`100%`,bg:c?`bad`:ud(o.indexOf(e.service),t),style:{borderRadius:`var(--mantine-radius-sm)`,minWidth:3}})})})}),(0,F.jsx)(Jl.Td,{ta:`right`,children:(0,F.jsx)(gc,{size:`sm`,ff:`monospace`,children:pd(e.duration_ms)})})]},e.span_id)})})]})}),(0,F.jsx)(cd,{...s,onChange:s.setPage})]})}function XD({spans:e,dark:t,onSpan:n}){let r=(0,C.useMemo)(()=>ZD(e),[e]),i=[...new Set(e.map(e=>e.service))];return(0,F.jsxs)(kl,{px:{base:`md`,sm:`lg`},pb:`md`,gap:`xs`,children:[(0,F.jsxs)(cc,{justify:`space-between`,children:[(0,F.jsx)(cc,{gap:`md`,children:i.map(e=>(0,F.jsxs)(cc,{gap:5,children:[(0,F.jsx)(L,{w:8,h:8,bg:ud(i.indexOf(e),t),style:{borderRadius:`50%`}}),(0,F.jsx)(gc,{c:`dimmed`,size:`xs`,children:e})]},e))}),(0,F.jsx)(yc,{variant:`light`,children:pd(r.total)})]}),(0,F.jsx)(ms,{withBorder:!0,radius:`md`,p:`sm`,children:(0,F.jsx)(ss,{type:`auto`,offsetScrollbars:!0,children:(0,F.jsxs)(L,{miw:760,children:[(0,F.jsx)(L,{pos:`relative`,h:22,mb:4,children:[0,25,50,75,100].map(e=>(0,F.jsx)(gc,{pos:`absolute`,left:`${e}%`,c:`dimmed`,size:`xs`,style:{transform:e===100?`translateX(-100%)`:e?`translateX(-50%)`:void 0},children:pd(r.total*e/100)},e))}),(0,F.jsxs)(L,{pos:`relative`,h:Math.max(150,r.laneCount*36+12),bg:`var(--mantine-color-default-hover)`,style:{overflow:`hidden`,borderRadius:`var(--mantine-radius-md)`},children:[[0,25,50,75,100].map(e=>(0,F.jsx)(L,{pos:`absolute`,left:`${e}%`,top:0,bottom:0,style:{borderLeft:`1px solid var(--mantine-color-default-border)`}},e)),r.frames.map(({span:e,lane:r,left:a,width:o})=>{let s=e.status.toUpperCase().includes(`ERROR`),c=o<7;return(0,F.jsx)(gl,{label:`${e.service} · ${e.operation} · ${pd(e.duration_ms)}`,withArrow:!0,children:(0,F.jsx)(Oc,{variant:`filled`,color:s?`bad`:ud(i.indexOf(e.service),t),"aria-label":`${e.operation} · ${e.service} · ${pd(e.duration_ms)}`,pos:`absolute`,left:`${a}%`,top:r*36+6,w:`${Math.max(o,.35)}%`,h:30,px:c?2:`xs`,size:`compact-xs`,onClick:()=>n(e),style:{overflow:`hidden`,minWidth:3},children:(0,F.jsxs)(gc,{component:`span`,size:`xs`,fw:700,truncate:!0,children:[c?``:e.operation,o>=12?` · ${pd(e.duration_ms)}`:``]})})},e.span_id)})]})]})})}),(0,F.jsx)(gc,{c:`dimmed`,size:`xs`,children:`Width represents wall-clock duration; lanes preserve span hierarchy without overlap.`})]})}function ZD(e){let t=Math.min(...e.map(e=>new Date(e.start).valueOf())),n=Math.max(...e.map(e=>new Date(e.start).valueOf()+e.duration_ms)),r=Math.max(n-t,1),i=new Map(e.map(e=>[e.span_id,e])),a=(e,t=new Set)=>{if(!e.parent_span_id||t.has(e.span_id))return 0;let n=i.get(e.parent_span_id);return n?(t.add(e.span_id),1+a(n,t)):0},o=e.map(e=>{let n=new Date(e.start).valueOf();return{span:e,depth:a(e),start:n,end:n+e.duration_ms,left:(n-t)/r*100,width:e.duration_ms/r*100}}).sort((e,t)=>e.depth-t.depth||e.start-t.start||t.span.duration_ms-e.span.duration_ms),s=[],c=0;for(let e of[...new Set(o.map(e=>e.depth))].sort((e,t)=>e-t)){let t=[];for(let n of o.filter(t=>t.depth===e)){let e=t.findIndex(e=>e<=n.start);e===-1&&(e=t.length),t[e]=n.end,s.push({...n,lane:c+e})}c+=Math.max(t.length,1)}return{frames:s,laneCount:c,total:r}}function QD({entries:e}){let t=od(e,6);return e.length===0?(0,F.jsx)(rd,{tall:!0,icon:(0,F.jsx)(Cu,{size:20,weight:`duotone`}),title:`No correlated logs`,children:`No logs in this window carry the selected trace ID.`}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(Jl.ScrollContainer,{minWidth:620,children:(0,F.jsxs)(Jl,{striped:!0,verticalSpacing:`xs`,children:[(0,F.jsx)(Jl.Thead,{children:(0,F.jsxs)(Jl.Tr,{children:[(0,F.jsxs)(Jl.Th,{children:[`Time (`,hd(t.pageItems[0]?.time),`)`]}),(0,F.jsx)(Jl.Th,{children:`Level`}),(0,F.jsx)(Jl.Th,{children:`Service`}),(0,F.jsx)(Jl.Th,{children:`Message`})]})}),(0,F.jsx)(Jl.Tbody,{children:t.pageItems.map((e,n)=>(0,F.jsxs)(Jl.Tr,{children:[(0,F.jsx)(Jl.Td,{style:{whiteSpace:`nowrap`},children:(0,F.jsx)(gc,{size:`xs`,ff:`monospace`,title:gd(e.time),children:new Date(e.time).toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`,second:`2-digit`})})}),(0,F.jsx)(Jl.Td,{children:(0,F.jsx)(yc,{size:`sm`,color:dd(e.severity),variant:`light`,children:e.severity||`LOG`})}),(0,F.jsx)(Jl.Td,{children:(0,F.jsx)(gc,{fw:600,size:`sm`,children:e.service})}),(0,F.jsx)(Jl.Td,{children:(0,F.jsx)(gc,{size:`sm`,lineClamp:2,title:e.body,children:e.body})})]},`${e.time}-${t.from+n}`))})]})}),(0,F.jsx)(cd,{...t,onChange:t.setPage})]})}function $D(e){return e.length>12?`${e.slice(0,8)}…${e.slice(-4)}`:e}(0,ku.createRoot)(document.getElementById(`root`)).render((0,F.jsx)(C.StrictMode,{children:(0,F.jsx)(JD,{})}));
diff --git a/internal/mcp/dashboards.go b/internal/mcp/dashboards.go index d3bbf715..50b0007b 100644 --- a/internal/mcp/dashboards.go +++ b/internal/mcp/dashboards.go @@ -57,12 +57,12 @@ const ( var dashboardTools = [...]mcp.Tool{ { Name: "list_dashboards", Title: "List dashboards", - Description: "List the authenticated user's dashboards with panel counts and versions.", + Description: "List the authenticated user's dashboards with panel counts and versions. See create_dashboard for the spec guide.", Annotations: &mcp.ToolAnnotations{ReadOnlyHint: true, OpenWorldHint: boolPtr(false)}, }, { Name: "get_dashboard", Title: "Get dashboard", - Description: "Read one dashboard's complete spec and version. Read it before editing so operations name real panel ids.", + Description: "Read one dashboard's complete spec and version. Read it before editing so operations name real panel ids. See create_dashboard for the spec guide.", Annotations: &mcp.ToolAnnotations{ReadOnlyHint: true, OpenWorldHint: boolPtr(false)}, }, { @@ -72,12 +72,12 @@ var dashboardTools = [...]mcp.Tool{ }, { Name: "replace_dashboard", Title: "Replace dashboard", - Description: "Replace a dashboard's whole spec; omitted panels are removed. Use only for a redesign the user asked for; use edit_dashboard to change a few panels.", + Description: "Replace a dashboard's whole spec; omitted panels are removed. Use only for a redesign the user asked for; use edit_dashboard to change a few panels. See create_dashboard for the spec guide.", Annotations: &mcp.ToolAnnotations{DestructiveHint: boolPtr(true), IdempotentHint: true, OpenWorldHint: boolPtr(false)}, }, { Name: "edit_dashboard", Title: "Edit dashboard", - Description: "Change a dashboard with typed operations, applied in order and saved as one version: add_panel, update_panel (set replaces the named fields), remove_panel, move_panel, set_variable, remove_variable, set_time, rename. Panels not named are left unchanged. Only edit when the user asks to change that dashboard.", + Description: "Change a dashboard with typed operations, applied in order and saved as one version: add_panel, update_panel (set replaces the named fields), remove_panel, move_panel, set_variable, remove_variable, set_time, rename. Panels not named are left unchanged. Only edit when the user asks to change that dashboard. See create_dashboard for the spec guide.", Annotations: &mcp.ToolAnnotations{DestructiveHint: boolPtr(true), OpenWorldHint: boolPtr(false)}, }, } diff --git a/internal/mcp/panel_examples.go b/internal/mcp/panel_examples.go new file mode 100644 index 00000000..2ba6c839 --- /dev/null +++ b/internal/mcp/panel_examples.go @@ -0,0 +1,9 @@ +package mcp + +const m2SpecGuide = `state_timeline needs at least one threshold marked warn or bad, rather than only ok. Annotations attach only to timeseries, heatmap and state_timeline panels, scoped by service and namespace filters. drill: logs needs query.from=logs. Drill is not available on metrics. Every table format's field must exist in the returned frame; formatting cannot reference an absent column. A structured-table sparkline field must be a measure alias from that table's query. service_link needs variable to name the query or custom variable selected by the link. highlight applies to logs and log_patterns, at most 200 characters. split: deploy needs a service equality filter, as a literal or a single-value variable; other filters are allowed. When the service is All, a split: deploy panel shows the plain bar with a note explaining the missing service scope. Use service_map for dependency context, health for service health; neither proves causality.` + +const investigationExample = `{"name":"Investigation shapes","annotations":{"deploys":true,"anomalies":true},"variables":[{"name":"service","kind":"query","from":"spans","field":"service"}],"panels":[{"id":"latency_heat","title":"Latency over time","viz":"heatmap","query":{"from":"spans","where":["service = $service"],"measures":["count()"],"bucket":"auto","histogram":{"field":"duration_ms","buckets":"log2"}},"drill":"traces"},{"id":"latency_hist","title":"Latency by operation","viz":"histogram","query":{"from":"spans","where":["service = $service"],"measures":["count()"],"by":["operation"],"histogram":{"field":"duration_ms","buckets":"log2"}},"drill":"traces"},{"id":"items","title":"Calls versus tail latency","viz":"scatter","query":{"from":"spans","where":["service = $service"],"measures":["count() as rows","p95(duration_ms) as tail_latency"],"by":["operation"]},"drill":"traces"},{"id":"states","title":"Error states","viz":"state_timeline","query":{"from":"spans","where":["service = $service"],"measures":["error_rate()"],"by":["operation"],"bucket":"auto"},"thresholds":[{"value":5,"status":"bad"}],"drill":"traces"},{"id":"log_rows","title":"Recent logs","viz":"logs","query":{"from":"logs","where":["service = $service"],"sort":"time","limit":100},"drill":"logs"},{"id":"patterns","title":"Repeated log patterns","viz":"log_patterns","query":{"from":"logs","where":["service = $service"],"measures":["count()"],"by":["body_template"],"bucket":"auto","limit":50},"drill":"logs"},{"id":"trace_rows","title":"Slow traces","viz":"traces","query":{"from":"spans","where":["service = $service"],"sort":"duration_ms","limit":20},"drill":"traces"},{"id":"map","title":"Service calls","viz":"service_map","query":{"from":"spans"}},{"id":"health","title":"Service health","viz":"health","query":{"from":"spans"}}]}` + +const paymentExample = `{"name":"Interaction shapes","variables":[{"name":"service","kind":"query","from":"spans","field":"service"}],"panels":[{"id":"hist","title":"Metric distribution","viz":"histogram","query":{"from":"metrics","where":["service = $service"],"measures":["count()"],"histogram":{"field":"value","buckets":"explicit"}}},{"id":"table","title":"Service calls and trends","viz":"table","query":{"from":"spans","measures":["count() as calls"],"by":["service"]},"options":{"columns":[{"field":"service","format":"service_link","variable":"service"},{"field":"calls","format":"sparkline"}]}},{"id":"prior","title":"Service calls one day earlier","viz":"bar","query":{"from":"spans","measures":["count()"],"by":["service"]},"click":{"set_variable":"service"},"time":{"shift":"1d"}}]}` + +const specGuide = baseSpecGuide + " " + m2SpecGuide + " Example 1: Reference shapes; use only the types the question needs. " + investigationExample + " Example 2: Reference shapes; use only the types the question needs. " + paymentExample diff --git a/internal/mcp/panel_examples_test.go b/internal/mcp/panel_examples_test.go new file mode 100644 index 00000000..5902493c --- /dev/null +++ b/internal/mcp/panel_examples_test.go @@ -0,0 +1,190 @@ +package mcp + +import ( + "encoding/json" + "strings" + "testing" + + "github.com/labstack/fanout/internal/panel" +) + +func TestM2ExamplesAndPreviewCoverNewTypes(t *testing.T) { + s := newPanelServer(t) + coverage := map[string]int{} + for example, text := range []string{investigationExample, paymentExample} { + var d panel.Dashboard + if err := json.Unmarshal([]byte(text), &d); err != nil { + t.Fatal(err) + } + wantPanels := []int{9, 3}[example] + if len(d.Panels) != wantPanels { + t.Errorf("example %d has %d panels, want %d", example+1, len(d.Panels), wantPanels) + } + if example == 0 { + counts := map[string]int{} + for _, p := range d.Panels { + counts[p.Viz]++ + } + for _, viz := range []string{"heatmap", "histogram", "scatter", "state_timeline", "logs", "log_patterns", "traces", "service_map", "health"} { + if counts[viz] != 1 { + t.Errorf("first example has %d %s panels, want one", counts[viz], viz) + } + } + } + for _, variable := range d.Variables { + if variable.Kind != "query" { + t.Errorf("example %d uses invented variable values: %+v", example+1, variable) + } + } + if example == 1 { + if len(d.Panels) != 3 { + t.Fatal("second example must have three panels") + } + histogram, table, shifted := d.Panels[0], d.Panels[1], d.Panels[2] + if histogram.Viz != "histogram" || histogram.Query == nil || histogram.Query.From != "metrics" || strings.Contains(histogram.Title, "by operation") { + t.Error("second example must start with an accurately titled metric histogram") + } + formats := map[string]bool{} + if table.Viz == "table" && table.Options != nil { + for _, column := range table.Options.Columns { + formats[column.Format] = true + if column.Format == "service_link" && column.Variable == "" { + t.Error("service_link omits variable") + } + } + } + if !formats["service_link"] || !formats["sparkline"] { + t.Error("second example needs service_link and sparkline table columns") + } + if shifted.Click == nil || shifted.Click.SetVariable == "" || shifted.Time == nil || shifted.Time.Shift == "" { + t.Error("second example needs click and a time shift on one panel") + } + } + if err := s.panels.Validate(t.Context(), &d); err != nil { + t.Fatalf("%s: %v", d.Name, err) + } + _, result, err := s.previewPanels(t.Context(), nil, PreviewInput{Panels: d.Panels, Time: &d.Time, Variables: d.Variables}) + if err != nil { + t.Fatal(err) + } + if len(result.Panels) != len(d.Panels) { + t.Fatalf("preview lost panels: %+v", result) + } + for i, preview := range result.Panels { + if preview.Status != "ok" && preview.Status != "empty" { + t.Fatalf("%s: %+v", d.Panels[i].Viz, preview) + } + if preview.Status == "empty" && preview.Diagnosis == "" { + t.Fatalf("unexplained empty %s", preview.ID) + } + coverage[d.Panels[i].Viz]++ + } + } + for _, viz := range []string{"heatmap", "histogram", "scatter", "state_timeline", "logs", "log_patterns", "traces", "service_map", "health"} { + if coverage[viz] < 1 { + t.Fatalf("%s has %d examples", viz, coverage[viz]) + } + } +} + +func TestM2DescriptionsExposeAnalysisContract(t *testing.T) { + docs, err := DescribeTools(t.Context()) + if err != nil { + t.Fatal(err) + } + seen := map[string]bool{} + for _, doc := range docs { + fullGuide := doc.Name == "create_dashboard" + if !fullGuide { + if !strings.HasSuffix(doc.Name, "_dashboard") && !strings.HasSuffix(doc.Name, "_dashboards") && !strings.HasSuffix(doc.Name, "_panels") && !strings.HasSuffix(doc.Name, "_panel") { + continue + } + seen[doc.Name] = true + pointer := "See create_dashboard for the spec guide." + if doc.Name == "preview_panels" { + pointer = "Spec guide: see create_dashboard." + } + if !strings.Contains(doc.Description, pointer) { + t.Errorf("%s omits the spec guide pointer", doc.Name) + } + for _, guide := range []string{baseSpecGuide, m2SpecGuide, investigationExample, paymentExample} { + if strings.Contains(doc.Description, guide) { + t.Errorf("%s duplicates the full guide or examples", doc.Name) + } + } + continue + } + seen[doc.Name] = true + for _, guide := range []string{baseSpecGuide, m2SpecGuide, investigationExample, paymentExample} { + if !strings.Contains(doc.Description, guide) { + t.Errorf("%s omits the full guide or examples", doc.Name) + } + } + if strings.Count(doc.Description, "Reference shapes; use only the types the question needs.") != 2 { + t.Error("both examples must carry the reference-shape label") + } + for _, term := range []string{"heatmap", "histogram", "scatter", "state_timeline", "logs", "log_patterns", "traces", "service_map", "health", "set_variable", "drill", "annotations", "split", "columns"} { + if !strings.Contains(doc.Description, term) { + t.Errorf("%s omits %s", doc.Name, term) + } + } + } + for _, name := range []string{"preview_panels", "create_dashboard", "replace_dashboard", "edit_dashboard"} { + if !seen[name] { + t.Fatalf("missing description %s: %+v", name, seen) + } + } + if RequiredToolScope("preview_panels") != "" || RequiredToolScope("create_dashboard") != "dashboard:manage" { + t.Fatal("M1 authorization changed") + } +} + +func TestM2SpecGuidePinsAnalysisSemantics(t *testing.T) { + for _, sentence := range []string{ + "state_timeline needs at least one threshold marked warn or bad, rather than only ok.", + "Annotations attach only to timeseries, heatmap and state_timeline panels, scoped by service and namespace filters.", + "drill: logs needs query.from=logs.", + "Drill is not available on metrics.", + "Every table format's field must exist in the returned frame; formatting cannot reference an absent column.", + "A structured-table sparkline field must be a measure alias from that table's query.", + "service_link needs variable to name the query or custom variable selected by the link.", + "highlight applies to logs and log_patterns, at most 200 characters.", + "split: deploy needs a service equality filter, as a literal or a single-value variable; other filters are allowed.", + "When the service is All, a split: deploy panel shows the plain bar with a note explaining the missing service scope.", + "Use service_map for dependency context, health for service health; neither proves causality.", + } { + if !strings.Contains(m2SpecGuide, sentence) { + t.Errorf("guide omits %q", sentence) + } + } +} + +func TestM2SpecGuideIsLimitedToCreate(t *testing.T) { + docs, err := DescribeTools(t.Context()) + if err != nil { + t.Fatal(err) + } + for _, doc := range docs { + want := 0 + if doc.Name == "create_dashboard" { + want = 1 + } + for _, guide := range []string{baseSpecGuide, m2SpecGuide, investigationExample, paymentExample} { + if got := strings.Count(doc.Description, guide); got != want { + t.Errorf("%s contains guidance %d times, want %d", doc.Name, got, want) + } + } + if doc.Name == "get_telemetry_schema" && !strings.Contains(doc.Description, "See create_dashboard for the spec guide.") { + t.Error("telemetry schema omits the spec guide pointer") + } + } +} + +func TestM2GuidanceSize(t *testing.T) { + if size := len([]rune(m2SpecGuide)); size > 1100 { + t.Errorf("M2 guide has %d characters, want about 1000", size) + } + if size := len([]rune(investigationExample + paymentExample)); size > 2900 { + t.Errorf("examples have %d characters, want about 2600", size) + } +} diff --git a/internal/mcp/panels.go b/internal/mcp/panels.go index 9780c0fa..eaab860b 100644 --- a/internal/mcp/panels.go +++ b/internal/mcp/panels.go @@ -42,18 +42,18 @@ type PreviewOutput struct { Problems []panel.Problem `json:"problems,omitempty"` } -const specGuide = `A dashboard is {name, description, time:{range}, variables, panels}. Each panel: {id (lowercase), title, viz, width 1-12, query or sql}. viz: stat or gauge (one measure; gauge needs min and max), timeseries (bucket auto, at most one by), bar (one or two by), table (up to three by), text (content in Markdown). query: {from: spans|logs|metrics, where: [filter expressions], measures: [fn(field) as alias], by: [fields], bucket, sort, limit}. Measures: count(), rate() per second, error_rate() percent, share() percent, avg/min/max/sum(field), last(value) for metrics, p50/p75/p90/p95/p99(field), quantile(field, 0.999), count_distinct(field). Fields are columns from get_telemetry_schema or attributes['key'] / resource['key'] with the key written literally. Filters are SQL boolean expressions: service = $service, kind = 'SPAN_KIND_SERVER', status = 'STATUS_CODE_ERROR', http_route IN $routes, attributes['http.response.status_code']::INTEGER >= 500. Variables: {name, kind: query|custom|constant|text, from, field, default, include_all}; $__all selects All and removes filters that use the variable. sql: one SELECT over spans, logs, metrics, service_rollup or edge_rollup that filters time with $__window(column). Use values exactly as get_telemetry_schema lists them. Example panel: {"id":"latency","title":"Checkout latency","viz":"timeseries","width":8,"query":{"from":"spans","where":["service = 'checkout'","kind = 'SPAN_KIND_SERVER'"],"measures":["p50(duration_ms)","p95(duration_ms)","p99(duration_ms)"],"bucket":"auto"},"unit":"ms","thresholds":[{"value":1500,"status":"bad"}]}.` +const baseSpecGuide = `A dashboard is {name, description, time:{range}, variables, panels}. Each panel: {id (lowercase), title, viz, width 1-12, query or sql}. viz: stat or gauge (one measure; gauge needs min and max), timeseries (bucket auto, at most one by), bar (one or two by), table (up to three by), text (content in Markdown), heatmap (bucket auto, no by), histogram (at most one by), scatter (exactly two measures in x then y order, one item dimension and an optional colour dimension), state_timeline (one measure, one item dimension, bucket auto and thresholds required). Rollup panel types are service_map (dependency graph) and health (overview metrics, error trend and health distribution). They require query.from=spans, no measures, by, bucket or sort, and only namespace/service equality filters with a literal or single-value variable; explicit casts and values with surrounding whitespace are rejected. Reads default to 400 services/edges and are capped at 400 even when query.limit is larger. Service scope applies before the limit; map nodes carry p95_ms and edges carry average_ms; error_rate is percent. Row panel types are logs, log_patterns and traces. Logs and traces take no measures, by or bucket. Patterns use count() by body_template. Each pattern returns dominant severity (most frequent; ties go to the higher severity), top service (most frequent; ties use service name ascending), count and a dense trend, computed in the same bounded query after redaction and scoped filters. Redaction applies before filtering, grouping, display and drill-down. Row panels cannot use SQL. "erroring" means slowest erroring traces: filter to erroring traces, then rank by root duration. Trace candidate ranking is approximate when filters exclude the root span, as with exemplars. Categorical charts use fixed-order colour slots. Categorical options.top defaults to 6, maximum 6. Structured panels: the server computes Other; series are chosen worst-first by confidence (Wilson lower bound for error rates; at least 20 samples for latency); the rest fold into Other (N). Count, rate, sum and share rank largest first. Error rates require at least 20 requests for eligible Wilson ranking (z=1.96). Percentiles, quantile, avg, max and min require at least 20 non-null numeric samples for eligible value ranking and use better (explicit or inferred). Ineligible series follow eligible ones by sample count descending. Ties use sample count descending, then name ascending. SQL panels: series past six are left out, with a note. state_timeline defaults to 8 rows, maximum 20; other noncategorical panels use the same limits. Scatter supports options.x_scale and options.y_scale (log or linear), with distinct x_unit for x and unit for y, each inferred independently when omitted. Rows returned use the count unit. State timelines preserve null and absent buckets as unknown and keep the top items without merging them into Other. Item panels require structured queries. SQL panels cannot use scatter or state_timeline. Items rank by volume (row count) for top N. Previous-period comparison is not drawn for scatter or state_timeline. Distribution panels use a structured query with one count() measure and histogram: {field: duration_ms, buckets: log2} for spans or {field: value, buckets: explicit, temporality: cumulative|delta} for metrics. Negative span durations clamp to [0,1); +Inf goes to overflow; NaN is excluded because it is not a measurement. Metric histograms default to cumulative: last minus first per bound, clamped at zero; a series whose counter resets mid-window contributes 0 for that window. Delta histograms sum observation weights. query: {from: spans|logs|metrics, where: [filter expressions], measures: [fn(field) as alias], by: [fields], bucket, sort, limit}. Measures: count(), rate() per second, error_rate() percent, share() percent, avg/min/max/sum(field), last(value) for metrics, p50/p75/p90/p95/p99(field), quantile(field, 0.999), count_distinct(field). Fields are columns from get_telemetry_schema or attributes['key'] / resource['key'] with the key written literally. Filters are SQL boolean expressions: service = $service, kind = 'SPAN_KIND_SERVER', status = 'STATUS_CODE_ERROR', http_route IN $routes, attributes['http.response.status_code']::INTEGER >= 500. Variables: {name, kind: query|custom|constant|text, from, field, default, include_all}; $__all selects All and removes filters that use the variable. sql: one SELECT over spans, logs, metrics, service_rollup or edge_rollup that filters time with $__window(column). Use values exactly as get_telemetry_schema lists them. Example panel: {"id":"latency","title":"Checkout latency","viz":"timeseries","width":8,"query":{"from":"spans","where":["service = 'checkout'","kind = 'SPAN_KIND_SERVER'"],"measures":["p50(duration_ms)","p95(duration_ms)","p99(duration_ms)"],"bucket":"auto"},"unit":"ms","thresholds":[{"value":1500,"status":"bad"}]}.` func (s *Server) registerPanelTools() { readOnly := &mcp.ToolAnnotations{ReadOnlyHint: true, OpenWorldHint: boolPtr(false)} mcp.AddTool(s.mcp, &mcp.Tool{ Name: "get_telemetry_schema", Title: "Telemetry schema", - Description: "List the signals, columns with their common values, attribute keys seen per service, metric names, services, measure functions and units. Read this before drafting panels so filters use values that exist.", + Description: "List the signals, columns with their common values, attribute keys seen per service, metric names, services, measure functions and units. Read this before drafting panels so filters use values that exist. See create_dashboard for the spec guide.", Annotations: readOnly, }, s.telemetrySchema) mcp.AddTool(s.mcp, &mcp.Tool{ Name: "preview_panels", Title: "Preview panels", - Description: "Check and run panels without saving them. Each panel reports ok with rows and a sample, empty with the reason, error, or invalid with the exact field and a suggestion. Fix every invalid panel and replace or explain every empty one before saving. " + specGuide, + Description: "Check and run panels without saving them. Each panel reports ok with rows and a sample, empty with the reason, error, or invalid with the exact field and a suggestion. Fix every invalid panel and replace or explain every empty one before saving. Spec guide: see create_dashboard.", Annotations: readOnly, }, s.previewPanels) } diff --git a/internal/mcp/panels_distribution_test.go b/internal/mcp/panels_distribution_test.go new file mode 100644 index 00000000..39cf7bf4 --- /dev/null +++ b/internal/mcp/panels_distribution_test.go @@ -0,0 +1,14 @@ +package mcp + +import ( + "strings" + "testing" +) + +func TestM2DistributionSpecGuide(t *testing.T) { + for _, phrase := range []string{"NaN is excluded", "last minus first", "counter resets mid-window contributes 0"} { + if !strings.Contains(specGuide, phrase) { + t.Errorf("spec guide must include %q", phrase) + } + } +} diff --git a/internal/mcp/panels_test.go b/internal/mcp/panels_test.go index 47589dd2..c66051b5 100644 --- a/internal/mcp/panels_test.go +++ b/internal/mcp/panels_test.go @@ -7,6 +7,7 @@ import ( "github.com/labstack/fanout/internal/config" "github.com/labstack/fanout/internal/dashboard" + "github.com/labstack/fanout/internal/observability" "github.com/labstack/fanout/internal/panel" "github.com/labstack/fanout/internal/query" appstore "github.com/labstack/fanout/internal/store" @@ -34,6 +35,7 @@ func newPanelServer(t *testing.T) *Server { t.Fatal(err) } executor := panel.NewExecutor(duck, 30) + executor.SetRollupReader(observability.New(duck, duck, 30)) return New(&fakeObservability{}, dashboard.New(sqlite.DB, executor), executor, "test") } @@ -94,3 +96,57 @@ func TestDashboardToolScopes(t *testing.T) { } } } + +func TestM2ItemsSpecGuide(t *testing.T) { + for _, phrase := range []string{ + "Scatter supports options.x_scale and options.y_scale (log or linear)", + "distinct x_unit for x and unit for y", + "Rows returned use the count unit", + "SQL panels cannot use scatter or state_timeline", + "Items rank by volume (row count) for top N", + "Previous-period comparison is not drawn for scatter or state_timeline", + } { + if !strings.Contains(specGuide, phrase) { + t.Errorf("spec guide missing %q", phrase) + } + } +} + +func TestM2RowsFixSpecGuide(t *testing.T) { + for _, phrase := range []string{ + "Row panel types are logs, log_patterns and traces.", + "Logs and traces take no measures, by or bucket.", + "Patterns use count() by body_template.", + "Redaction applies before filtering, grouping, display and drill-down.", + "Row panels cannot use SQL.", + `"erroring" means slowest erroring traces: filter to erroring traces, then rank by root duration.`, + "Trace candidate ranking is approximate when filters exclude the root span, as with exemplars.", + } { + if !strings.Contains(specGuide, phrase) { + t.Errorf("guide missing %q", phrase) + } + } + if strings.Contains(specGuide, "bucket auto or a supported interval") { + t.Error("row guide repeats bucket schema") + } +} + +func TestM4SeriesGuide(t *testing.T) { + for _, phrase := range []string{"Structured panels: the server computes Other", "SQL panels: series past six are left out, with a note", "state_timeline defaults to 8 rows, maximum 20"} { + if !strings.Contains(specGuide, phrase) { + t.Errorf("guide missing %q", phrase) + } + } +} + +func TestI4RankingGuide(t *testing.T) { + if !strings.Contains(specGuide, "series are chosen worst-first by confidence (Wilson lower bound for error rates; at least 20 samples for latency); the rest fold into Other (N)") { + t.Fatal("missing ranking semantics") + } +} + +func TestQ4ConfidenceGuide(t *testing.T) { + if !strings.Contains(specGuide, "series are chosen worst-first by confidence (Wilson lower bound for error rates; at least 20 samples for latency)") { + t.Fatal("missing confidence semantics") + } +} diff --git a/internal/mcp/preview_patterns_test.go b/internal/mcp/preview_patterns_test.go new file mode 100644 index 00000000..2537c8d7 --- /dev/null +++ b/internal/mcp/preview_patterns_test.go @@ -0,0 +1,20 @@ +package mcp + +import ( + "github.com/labstack/fanout/internal/panel" + "reflect" + "strings" + "testing" +) + +func TestPreviewPatternContextGuide(t *testing.T) { + for _, term := range []string{"dominant severity", "ties go to the higher severity", "top service", "same bounded query"} { + if !strings.Contains(baseSpecGuide, term) { + t.Errorf("guide missing %q", term) + } + } + field, _ := reflect.TypeFor[panel.Panel]().FieldByName("Viz") + if !strings.Contains(field.Tag.Get("jsonschema"), "dominant severity") { + t.Error("spec description omits log pattern context") + } +} diff --git a/internal/metrics/metrics.go b/internal/metrics/metrics.go index 0cf8c761..1426f446 100644 --- a/internal/metrics/metrics.go +++ b/internal/metrics/metrics.go @@ -16,6 +16,7 @@ const ( RollupService RollupComponent = "service" RollupReadCache RollupComponent = "read_cache" RollupEdge RollupComponent = "edge" + RollupVersion RollupComponent = "version" ) type RollupResult string @@ -554,7 +555,7 @@ func UpdateQueueDepth(signal string, depth int) { func validateRollupComponent(component RollupComponent) { switch component { - case RollupService, RollupReadCache, RollupEdge: + case RollupService, RollupReadCache, RollupEdge, RollupVersion: return default: panic("metrics: invalid rollup component: " + string(component)) diff --git a/internal/observability/contracts.go b/internal/observability/contracts.go index 6c83d425..f3f97ec2 100644 --- a/internal/observability/contracts.go +++ b/internal/observability/contracts.go @@ -16,6 +16,7 @@ const ( // reads it from a query param, so any caller — including models — may select // any namespace. Do not rely on it for access control. type Scope struct { + Service string `json:"service,omitempty"` Namespace string `json:"namespace"` Start time.Time `json:"start"` End time.Time `json:"end"` diff --git a/internal/observability/overview.go b/internal/observability/overview.go index c17659f2..6391e1cc 100644 --- a/internal/observability/overview.go +++ b/internal/observability/overview.go @@ -15,7 +15,7 @@ SELECT CAST(SUM(log_count) AS BIGINT) AS log_count, CAST(SUM(metric_count) AS BIGINT) AS metric_count FROM service_rollup -WHERE bucket >= ? AND bucket < ? AND (? = '' OR namespace = ?) +WHERE bucket >= ? AND bucket < ? AND (? = '' OR namespace = ?) AND (? = '' OR service = ?) GROUP BY service ORDER BY error_rate DESC, p95_ms DESC, spans DESC, service ASC LIMIT ?` @@ -70,7 +70,7 @@ func (s *Service) Overview(ctx context.Context, scope Scope, limit int) (Result[ } func (s *Service) serviceHealth(ctx context.Context, scope Scope, limit int) ([]ServiceHealth, error) { - rows, err := s.db.QueryContext(ctx, overviewQuery, scope.Start, scope.End, scope.Namespace, scope.Namespace, limit) + rows, err := s.db.QueryContext(ctx, overviewQuery, scope.Start, scope.End, scope.Namespace, scope.Namespace, scope.Service, scope.Service, limit) if err != nil { return nil, fmt.Errorf("query service health: %w", err) } diff --git a/internal/observability/redact.go b/internal/observability/redact.go index 34861713..10591ce9 100644 --- a/internal/observability/redact.go +++ b/internal/observability/redact.go @@ -10,8 +10,9 @@ import ( // file as security-sensitive. // // Coverage boundary: redaction is applied ONLY to log body fields on the -// read path — Logs entries, trace-correlated logs, and the SQL-side search -// filter built from these same patterns (see redactLogBodySQL). Span +// read path — Logs entries, trace-correlated logs, panel reads (structured and +// SQL), variable options, empty-panel diagnosis, exemplars, and the SQL-side +// search filter built from these same patterns (see redactLogBodySQL). Span // status_message, span/log attributes, and all on-disk data are NOT // redacted. // @@ -100,3 +101,6 @@ func redactLogBodySQL(column string) string { } return expr } + +// RedactLogBodySQL shares the existing read-path expression with panel projections. +func RedactLogBodySQL(column string) string { return redactLogBodySQL(column) } diff --git a/internal/observability/service_test.go b/internal/observability/service_test.go index 1fbd18c3..bec8a27f 100644 --- a/internal/observability/service_test.go +++ b/internal/observability/service_test.go @@ -117,7 +117,7 @@ func TestOverviewReturnsCanonicalEnvelope(t *testing.T) { AddRow("checkout", int64(1000), 0.08, 80.0, 2200.0, int64(20), int64(10)). AddRow("catalog", int64(500), 0.0, 25.0, 100.0, int64(4), int64(2)) mock.ExpectQuery(regexp.QuoteMeta(overviewQuery)). - WithArgs(start, end, "prod", "prod", 100). + WithArgs(start, end, "prod", "prod", "", "", 100). WillReturnRows(rows) result, err := svc.Overview(context.Background(), Scope{Namespace: "prod", Start: start, End: end}, 0) @@ -146,7 +146,7 @@ func TestOverviewReportsEmptyWindowAsUnknownNotHealthy(t *testing.T) { start := time.Date(2026, 7, 20, 11, 0, 0, 0, time.UTC) end := start.Add(time.Hour) mock.ExpectQuery(regexp.QuoteMeta(overviewQuery)). - WithArgs(start, end, "nonexistent", "nonexistent", 100). + WithArgs(start, end, "nonexistent", "nonexistent", "", "", 100). WillReturnRows(sqlmock.NewRows([]string{"service", "spans", "error_rate", "p50_ms", "p95_ms", "log_count", "metric_count"})) result, err := svc.Overview(context.Background(), Scope{Namespace: "nonexistent", Start: start, End: end}, 0) @@ -172,12 +172,12 @@ func TestTopologyUsesSharedNodesAndTypedEdges(t *testing.T) { start := time.Date(2026, 7, 20, 11, 0, 0, 0, time.UTC) end := start.Add(time.Hour) mock.ExpectQuery(regexp.QuoteMeta(overviewQuery)). - WithArgs(start, end, "prod", "prod", 50). + WithArgs(start, end, "prod", "prod", "", "", 50). WillReturnRows(sqlmock.NewRows([]string{"service", "spans", "error_rate", "p50_ms", "p95_ms", "log_count", "metric_count"}). AddRow("checkout", int64(10), 0.0, 20.0, 40.0, int64(1), int64(1)). AddRow("postgres", int64(10), 0.0, 10.0, 20.0, int64(0), int64(0))) mock.ExpectQuery(regexp.QuoteMeta(topologyEdgesQuery)). - WithArgs(start, end, "prod", "prod", 50). + WithArgs(start, end, "prod", "prod", "", "", "", 50). WillReturnRows(sqlmock.NewRows([]string{"caller", "callee", "edge_type", "calls", "average_ms", "error_rate"}). AddRow("checkout", "postgres", "call", int64(10), 12.5, 0.0)) diff --git a/internal/observability/topology.go b/internal/observability/topology.go index 8e11c2bd..e9116d5d 100644 --- a/internal/observability/topology.go +++ b/internal/observability/topology.go @@ -14,7 +14,7 @@ SELECT COALESCE(SUM(avg_ms * calls) / NULLIF(SUM(calls), 0), 0) AS average_ms, COALESCE(SUM(error_rate * calls) / NULLIF(SUM(calls), 0), 0) AS error_rate FROM edge_rollup -WHERE bucket >= ? AND bucket < ? AND (? = '' OR namespace = ?) +WHERE bucket >= ? AND bucket < ? AND (? = '' OR namespace = ?) AND (? = '' OR caller = ? OR callee = ?) GROUP BY caller, callee, edge_type ORDER BY calls DESC, caller ASC, callee ASC LIMIT ?` @@ -33,7 +33,7 @@ func (s *Service) Topology(ctx context.Context, scope Scope, limit int) (Result[ if err != nil { return Result[Topology]{}, err } - rows, err := s.db.QueryContext(ctx, topologyEdgesQuery, scope.Start, scope.End, scope.Namespace, scope.Namespace, limit) + rows, err := s.db.QueryContext(ctx, topologyEdgesQuery, scope.Start, scope.End, scope.Namespace, scope.Namespace, scope.Service, scope.Service, scope.Service, limit) if err != nil { return Result[Topology]{}, fmt.Errorf("query topology edges: %w", err) } diff --git a/internal/panel/annotation_scope.go b/internal/panel/annotation_scope.go new file mode 100644 index 00000000..79e4749c --- /dev/null +++ b/internal/panel/annotation_scope.go @@ -0,0 +1,178 @@ +package panel + +import ( + "context" + "fmt" + "strings" +) + +type AnnotationService struct { + Namespace string `json:"namespace"` + Service string `json:"service"` +} +type AnnotationMatch struct { + Services []AnnotationService `json:"services"` + NamespaceScoped bool `json:"namespace_scoped,omitempty"` + Limited bool `json:"limited,omitempty"` +} + +func annotationOnly(n any) bool { + switch v := n.(type) { + case map[string]any: + if v["class"] == "COLUMN_REF" { + name := fieldText(v) + return name == "service" || name == "namespace" + } + for _, child := range v { + if !annotationOnly(child) { + return false + } + } + case []any: + for _, child := range v { + if !annotationOnly(child) { + return false + } + } + } + return true +} +func annotationNamespace(n any) bool { + switch v := n.(type) { + case map[string]any: + if v["class"] == "COLUMN_REF" && fieldText(v) == "namespace" { + return true + } + for _, child := range v { + if annotationNamespace(child) { + return true + } + } + case []any: + for _, child := range v { + if annotationNamespace(child) { + return true + } + } + } + return false +} + +// exact=false means another signal field was omitted. AND can retain known +// necessary restrictions; OR and NOT containing unknown fields cannot. +func annotationPredicate(n any) (any, bool) { + if annotationOnly(n) { + return n, true + } + v, ok := n.(map[string]any) + if !ok || v["class"] != "CONJUNCTION" || v["type"] != "CONJUNCTION_AND" { + return nil, false + } + children, _ := v["children"].([]any) + kept := []any{} + exact := true + for _, child := range children { + projected, complete := annotationPredicate(child) + exact = exact && complete + if projected != nil { + kept = append(kept, projected) + } + } + if len(kept) == 0 { + return nil, false + } + if len(kept) == 1 { + return kept[0], exact + } + clone := map[string]any{} + for key, value := range v { + clone[key] = value + } + clone["children"] = kept + return clone, exact +} + +type AnnotationFilter struct { + Filter Filter + NamespaceScoped bool +} + +func projectAnnotationFilter(ctx context.Context, parser Parser, sig *signal, vars map[string]Variable, f Filter) (*AnnotationFilter, error) { + tree, err := parser.ParseSQL(ctx, "SELECT 1 FROM "+sig.name+" WHERE ("+f.Source+")") + if err != nil { + return nil, err + } + projected, _ := annotationPredicate(tree["where_clause"]) + if projected == nil { + return nil, nil + } + namespaceScoped := annotationNamespace(projected) + tree["where_clause"] = projected + rendered, err := parser.RenderSQL(ctx, tree) + if err != nil { + return nil, err + } + prefix := "SELECT 1 FROM " + sig.name + " WHERE " + if !strings.HasPrefix(rendered, prefix) { + return nil, fmt.Errorf("annotation scope could not be rendered") + } + checked, err := checkFilter(ctx, parser, sig, vars, strings.TrimPrefix(rendered, prefix)) + if err != nil { + return nil, err + } + return &AnnotationFilter{Filter: checked, NamespaceScoped: namespaceScoped}, nil +} +func (e *Executor) annotationScope(ctx context.Context, p *Panel, filters []AnnotationFilter, scope Scope) (*AnnotationMatch, error) { + clauses := []string{} + args := []any{} + namespaceScoped := false + for _, projected := range filters { + f := projected.Filter + if scope.dropped(f) { + continue + } + empty := false + for _, name := range f.Params { + if v := scope.Vars[name]; !v.All && len(v.Values) == 0 { + empty = true + } + } + if empty { + clauses = append(clauses, "FALSE") + continue + } + predicate, _, bound, err := bindParams(f.Expr, scope.lookup(f)) + if err != nil { + return nil, err + } + namespaceScoped = namespaceScoped || projected.NamespaceScoped + clauses = append(clauses, "("+predicate+")") + args = append(args, bound...) + } + if len(clauses) == 0 { + return nil, nil + } + out := &AnnotationMatch{Services: []AnnotationService{}, NamespaceScoped: namespaceScoped} + rows, err := e.engine.QueryContext(ctx, `WITH keys AS ( + SELECT namespace,service FROM version_rollup UNION SELECT namespace,service FROM anomaly_log UNION SELECT namespace,service FROM service_rollup) +SELECT DISTINCT namespace,service FROM keys WHERE `+strings.Join(clauses, " AND ")+` ORDER BY namespace,service LIMIT 1001`, args...) + if err != nil { + return nil, err + } + defer rows.Close() + for rows.Next() { + var item AnnotationService + if err := rows.Scan(&item.Namespace, &item.Service); err != nil { + return nil, err + } + out.Services = append(out.Services, item) + } + if err := rows.Err(); err != nil { + return nil, err + } + if len(out.Services) > 1000 { + out.Services = out.Services[:1000] + out.Limited = true + } + return out, nil +} diff --git a/internal/panel/annotation_scope_test.go b/internal/panel/annotation_scope_test.go new file mode 100644 index 00000000..7ffa148a --- /dev/null +++ b/internal/panel/annotation_scope_test.go @@ -0,0 +1,244 @@ +package panel + +import ( + "context" + "errors" + "slices" + "strings" + "testing" + "time" + + "github.com/labstack/fanout/internal/queryrows" +) + +func TestM2AnnotationScopeUsesCheckedAST(t *testing.T) { + engine, _ := newTestEngine(t) + at := fixtureStart + _, err := engine.DB.Exec(`INSERT INTO version_rollup VALUES ('shop','checkout','v1',?::TIMESTAMP_NS::TIMESTAMPTZ_NS,?::TIMESTAMP_NS::TIMESTAMPTZ_NS),('shop','payment','v1',?::TIMESTAMP_NS::TIMESTAMPTZ_NS,?::TIMESTAMP_NS::TIMESTAMPTZ_NS)`, at, at, at, at) + if err != nil { + t.Fatal(err) + } + e := NewExecutor(engine, 30) + sig, _ := lookupSignal("spans") + vars := map[string]Variable{"services": {Name: "services", Kind: "custom", Options: []string{"checkout", "payment"}, Multi: true, IncludeAll: true}} + scope := Scope{Start: at, End: at.Add(time.Hour), Vars: map[string]Value{"services": {Values: []string{"checkout"}}}} + p := &Panel{ID: "p", Title: "P", Viz: "timeseries", Query: &Query{From: "spans"}} + for _, expr := range []string{"service IN $services", "service LIKE '%out'", "namespace = 'shop' AND service = 'checkout' AND http_route = '/cart'"} { + f, err := checkFilter(t.Context(), engine, sig, vars, expr) + if err != nil { + t.Fatal(err) + } + got, err := e.annotationScope(t.Context(), p, projectedFilters(t, engine, sig, vars, f), scope) + if err != nil { + t.Fatal(err) + } + if got == nil || len(got.Services) != 1 || got.Services[0].Service != "checkout" { + t.Fatalf("%s: %+v", expr, got) + } + } + f, err := checkFilter(t.Context(), engine, sig, vars, "service = 'checkout' OR http_route = '/cart'") + if err != nil { + t.Fatal(err) + } + got, err := e.annotationScope(t.Context(), p, projectedFilters(t, engine, sig, vars, f), scope) + if err != nil || got != nil { + t.Fatalf("mixed OR must remain unscoped for annotation service matching: %+v %v", got, err) + } + f, err = checkFilter(t.Context(), engine, sig, vars, "service IN $services") + if err != nil { + t.Fatal(err) + } + scope.Vars["services"] = Value{All: true} + got, err = e.annotationScope(t.Context(), p, projectedFilters(t, engine, sig, vars, f), scope) + if err != nil || got != nil { + t.Fatalf("All: %+v %v", got, err) + } + scope.Vars["services"] = Value{Values: []string{}} + got, err = e.annotationScope(t.Context(), p, projectedFilters(t, engine, sig, vars, f), scope) + if err != nil || got == nil || len(got.Services) != 0 { + t.Fatalf("empty list: %+v %v", got, err) + } +} +func projectedFilters(t *testing.T, parser Parser, sig *signal, vars map[string]Variable, f Filter) []AnnotationFilter { + t.Helper() + projected, err := projectAnnotationFilter(t.Context(), parser, sig, vars, f) + if err != nil { + t.Fatal(err) + } + if projected == nil { + return nil + } + return []AnnotationFilter{*projected} +} +func TestM2AnnotationScopeRunPanelAndAllSources(t *testing.T) { + engine, _ := newTestEngine(t) + at := fixtureStart + if _, err := engine.DB.Exec(`INSERT INTO service_rollup VALUES ('shop',?,'checkout',1,1,1,2,0,0,0)`, at); err != nil { + t.Fatal(err) + } + if _, err := engine.DB.Exec(`INSERT INTO anomaly_log VALUES ('shop','anomalyonly','latency',?::TIMESTAMP_NS::TIMESTAMPTZ_NS,?::TIMESTAMP_NS::TIMESTAMPTZ_NS,'Slow','warn')`, at, at.Add(time.Minute)); err != nil { + t.Fatal(err) + } + e := NewExecutor(engine, 30) + e.now = func() time.Time { return at.Add(time.Hour) } + d := Dashboard{Name: "Scope", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "p", Title: "P", Viz: "timeseries", Query: &Query{From: "spans", Measures: []string{"count()"}, Bucket: "5m", Where: []string{"namespace = 'shop'"}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + scope := got[0].AnnotationScope + if scope == nil || !scope.NamespaceScoped || len(scope.Services) != 2 || scope.Services[0].Service != "anomalyonly" || scope.Services[1].Service != "checkout" { + t.Fatalf("runPanel not wired or keys incomplete: %+v", got) + } +} + +type failExtraParse struct { + Parser + parses int + failure error +} + +func (p *failExtraParse) ParseSQL(ctx context.Context, text string) (map[string]any, error) { + p.parses++ + if p.parses == 3 { + return nil, p.failure + } + return p.Parser.ParseSQL(ctx, text) +} +func TestM2CheckOperationalFailures(t *testing.T) { + engine, _ := newTestEngine(t) + for _, failure := range []error{context.Canceled, context.DeadlineExceeded} { + for _, p := range []Panel{ + {ID: "p", Title: "P", Viz: "health", Query: &Query{From: "spans", Where: []string{"service = 'checkout'"}}}, + {ID: "p", Title: "P", Viz: "bar", Options: &Options{Split: "deploy"}, Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"operation"}, Where: []string{"service = 'checkout'"}}}, + {ID: "p", Title: "P", Viz: "timeseries", Query: &Query{From: "spans", Measures: []string{"count()"}, Bucket: "auto", Where: []string{"service = 'checkout'"}}}, + } { + d := Dashboard{Name: "Operational", Panels: []Panel{p}} + Normalize(&d) + parser := &failExtraParse{Parser: engine, failure: failure} + _, problems, err := Check(t.Context(), parser, &d) + if !errors.Is(err, failure) || len(problems) != 0 || parser.parses != 3 { + t.Fatalf("%s converted operational error to Problems: %+v %v calls=%d", p.Viz, problems, err, parser.parses) + } + } + } +} + +type annotationParseCounter struct { + Engine + parses int +} + +func (p *annotationParseCounter) ParseSQL(ctx context.Context, text string) (map[string]any, error) { + p.parses++ + return p.Engine.ParseSQL(ctx, text) +} +func TestM2AnnotationProjectionMemoized(t *testing.T) { + e := newFixtureExecutor(t) + counter := &annotationParseCounter{Engine: e.engine} + e.engine = counter + d := Dashboard{Name: "Memoized", Panels: []Panel{{ID: "p", Title: "P", Viz: "timeseries", Query: &Query{From: "spans", Measures: []string{"count()"}, Bucket: "auto", Where: []string{"service = 'checkout'"}}}}} + Normalize(&d) + first, err := e.check(t.Context(), &d) + if err != nil { + t.Fatal(err) + } + count := counter.parses + second, err := e.check(t.Context(), &d) + if err != nil || first != second || count == 0 || counter.parses != count { + t.Fatalf("memoization: %v count=%d now=%d", err, count, counter.parses) + } + scope := Scope{Start: e.now().Add(-time.Hour), End: e.now(), Vars: map[string]Value{}} + for i := 0; i < 2; i++ { + if _, err := e.annotationScope(t.Context(), &d.Panels[0], first.AnnotationFilters["p"], scope); err != nil { + t.Fatal(err) + } + } + if counter.parses != count { + t.Fatalf("runtime reparsed annotation predicate: %d -> %d", count, counter.parses) + } +} + +func TestM2AnnotationProjectionOmitsOnlySignalRestrictions(t *testing.T) { + engine, _ := newTestEngine(t) + at := fixtureStart + if _, err := engine.DB.Exec(`INSERT INTO version_rollup VALUES ('shop','checkout','v1',?::TIMESTAMP_NS::TIMESTAMPTZ_NS,?::TIMESTAMP_NS::TIMESTAMPTZ_NS),('shop','payment','v1',?::TIMESTAMP_NS::TIMESTAMPTZ_NS,?::TIMESTAMP_NS::TIMESTAMPTZ_NS)`, at, at, at, at); err != nil { + t.Fatal(err) + } + e := NewExecutor(engine, 30) + sig, _ := lookupSignal("spans") + vars := map[string]Variable{ + "service": {Name: "service", Kind: "custom", Options: []string{"checkout", "payment"}}, + "route": {Name: "route", Kind: "custom", Options: []string{"/cart"}, IncludeAll: true}, + } + scope := Scope{Vars: map[string]Value{"service": {Values: []string{"checkout"}}, "route": {All: true}}} + p := &Panel{ID: "p", Viz: "timeseries", Query: &Query{From: "spans"}} + for _, expr := range []string{ + "service = $service AND http_route = $route", + "namespace = 'shop' AND CAST(service AS VARCHAR) = $service AND http_route = $route", + "service = $service AND NOT (http_route = $route)", + "service = $service AND (namespace = 'shop' OR http_route = $route)", + } { + f, err := checkFilter(t.Context(), engine, sig, vars, expr) + if err != nil { + t.Fatal(err) + } + filters := projectedFilters(t, engine, sig, vars, f) + if len(filters) != 1 || !slices.Equal(filters[0].Filter.Params, []string{"service"}) { + t.Fatalf("%s retained omitted route parameter: %+v", expr, filters) + } + got, err := e.annotationScope(t.Context(), p, filters, scope) + if err != nil || got == nil || !slices.Equal(got.Services, []AnnotationService{{Namespace: "shop", Service: "checkout"}}) { + t.Fatalf("%s: %+v %v", expr, got, err) + } + } + for _, expr := range []string{"service = $service OR http_route = $route", "NOT (service = $service AND http_route = $route)"} { + f, err := checkFilter(t.Context(), engine, sig, vars, expr) + if err != nil { + t.Fatal(err) + } + if filters := projectedFilters(t, engine, sig, vars, f); filters != nil { + t.Fatalf("mixed OR/NOT must remain unscoped: %s %+v", expr, filters) + } + } +} + +type annotationQueryFailure struct { + Engine +} + +func (e *annotationQueryFailure) QueryContext(ctx context.Context, text string, args ...any) (queryrows.Rows, error) { + if strings.Contains(text, "WITH keys AS") { + return nil, context.DeadlineExceeded + } + return e.Engine.QueryContext(ctx, text, args...) +} + +func TestM2AnnotationScopeFailurePreservesFrame(t *testing.T) { + e := newFixtureExecutor(t) + e.engine = &annotationQueryFailure{Engine: e.engine} + d := shopDashboard() + d.Panels = d.Panels[:1] + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || len(got) != 1 || got[0].Status != StatusOK || got[0].Frame == nil || got[0].Frame.Rows != 12 || got[0].AnnotationScope != nil || got[0].AnnotationError != "Annotation scope is unavailable." { + t.Fatalf("annotation failure discarded frame: %+v %v", got, err) + } +} + +func TestM2AnnotationScopeLimit(t *testing.T) { + engine, _ := newTestEngine(t) + at := fixtureStart + if _, err := engine.DB.Exec(`INSERT INTO version_rollup SELECT 'shop', 'service' || lpad(i::VARCHAR, 4, '0'), 'v1', ?::TIMESTAMP_NS::TIMESTAMPTZ_NS, ?::TIMESTAMP_NS::TIMESTAMPTZ_NS FROM range(1001) t(i)`, at, at); err != nil { + t.Fatal(err) + } + sig, _ := lookupSignal("spans") + f, err := checkFilter(t.Context(), engine, sig, nil, "namespace = 'shop'") + if err != nil { + t.Fatal(err) + } + p := &Panel{ID: "p", Viz: "timeseries", Query: &Query{From: "spans"}} + got, err := NewExecutor(engine, 30).annotationScope(t.Context(), p, projectedFilters(t, engine, sig, nil, f), Scope{}) + if err != nil || got == nil || !got.Limited || !got.NamespaceScoped || len(got.Services) != 1000 || got.Services[999].Service != "service0999" { + t.Fatalf("bounded scope: %+v %v", got, err) + } +} diff --git a/internal/panel/bucket.go b/internal/panel/bucket.go index cfcbc835..0a4dc585 100644 --- a/internal/panel/bucket.go +++ b/internal/panel/bucket.go @@ -12,6 +12,27 @@ var autoIntervals = []time.Duration{ 30 * time.Minute, time.Hour, 3 * time.Hour, 6 * time.Hour, 12 * time.Hour, 24 * time.Hour, } +// Cell plots need wider time buckets than lines. Widths are rounded outer panel +// widths, so reserve 160px for body padding, axis labels and rounding error. +// At normal widths target 60–90 columns; narrow panels use fewer to retain 8px +// slots. The extra 20m step keeps a 24h window in that range (72–73 columns). +func autoCellInterval(window time.Duration, widthPx int) time.Duration { + if widthPx <= 0 { + widthPx = 640 + } + points := time.Duration(min(max((widthPx-160)/8, 2), 90)) + intervals := []time.Duration{ + 10 * time.Second, 30 * time.Second, time.Minute, 5 * time.Minute, 10 * time.Minute, 15 * time.Minute, + 20 * time.Minute, 30 * time.Minute, time.Hour, 3 * time.Hour, 6 * time.Hour, 12 * time.Hour, 24 * time.Hour, + } + for _, interval := range intervals { + if window/interval+1 <= points { + return interval + } + } + return intervals[len(intervals)-1] +} + // AutoInterval picks the finest standard interval, 10 seconds or longer, // that keeps a series at one point per four pixels or fewer, so a 24-hour // line stays legible instead of becoming a band. diff --git a/internal/panel/check.go b/internal/panel/check.go index 85bee11e..74774d7c 100644 --- a/internal/panel/check.go +++ b/internal/panel/check.go @@ -19,9 +19,10 @@ type Parser interface { // Checked is what the database-backed checks produced. type Checked struct { - Filters map[string][]Filter // panel id → filters - VarFilters map[string][]Filter // variable name → filters - Measures map[string][]Measure // panel id → measures + AnnotationFilters map[string][]AnnotationFilter // panel id → projected annotation filters + Filters map[string][]Filter // panel id → filters + VarFilters map[string][]Filter // variable name → filters + Measures map[string][]Measure // panel id → measures } // isOperational reports whether err is the engine's or the caller's failure @@ -41,7 +42,7 @@ func Check(ctx context.Context, parser Parser, d *Dashboard) (*Checked, Problems if len(problems) > 0 { return nil, problems, nil } - checked := &Checked{Filters: map[string][]Filter{}, VarFilters: map[string][]Filter{}, Measures: map[string][]Measure{}} + checked := &Checked{AnnotationFilters: map[string][]AnnotationFilter{}, Filters: map[string][]Filter{}, VarFilters: map[string][]Filter{}, Measures: map[string][]Measure{}} earlier := map[string]Variable{} for i, v := range d.Variables { if v.Kind == "query" { @@ -82,7 +83,51 @@ func Check(ctx context.Context, parser Parser, d *Dashboard) (*Checked, Problems continue } checked.Filters[p.ID] = append(checked.Filters[p.ID], f) + if err := checkDeployScope(ctx, parser, p, f); err != nil { + if isOperational(err) { + return nil, nil, err + } + problems.addHint(path+".options.split", SafeError(err), "use standalone service and optional namespace equalities") + } + + if p.Viz == "timeseries" || p.Viz == "heatmap" || p.Viz == "state_timeline" { + projected, err := projectAnnotationFilter(ctx, parser, sig, earlier, f) + if err != nil { + if isOperational(err) { + return nil, nil, err + } + problems.addHint(fmt.Sprintf("%s.query.where[%d]", path, j), SafeError(err), "use a supported service or namespace predicate") + } else if projected != nil { + checked.AnnotationFilters[p.ID] = append(checked.AnnotationFilters[p.ID], *projected) + } + } + + if p.Viz == "health" || p.Viz == "service_map" { + sample := Scope{Vars: map[string]Value{}} + for name := range earlier { + sample.Vars[name] = Value{Values: []string{"check"}} + } + if _, _, err := rollupFilterValue(ctx, parser, f, sample); err != nil { + if isOperational(err) { + return nil, nil, err + } + problems.addHint(fmt.Sprintf("%s.query.where[%d]", path, j), SafeError(err), "use namespace or service equality with a literal or single-value variable") + } + } + + } + if p.Options != nil && p.Options.Split == "deploy" { + found := false + for _, f := range checked.Filters[p.ID] { + if f.EqField == "service" { + found = true + } + } + if !found { + problems.addHint(path+".options.split", "deploy split requires a service equality filter", "add service = 'name' or service = $service") + } } + case p.SQL != "": if err := checkSQLPanel(ctx, parser, p, earlier); err != nil { if isOperational(err) { diff --git a/internal/panel/check_test.go b/internal/panel/check_test.go index 514bcea9..419cce50 100644 --- a/internal/panel/check_test.go +++ b/internal/panel/check_test.go @@ -109,3 +109,29 @@ func TestCheckReturnsOperationalErrorsNotProblems(t *testing.T) { t.Fatalf("err = %v, problems = %v", err, problems) } } + +func TestFinalFixSQLCTEsCannotShadowTelemetry(t *testing.T) { + engine, _ := newTestEngine(t) + for _, name := range []string{"logs", "spans", "metrics", "service_rollup", "edge_rollup", "LOGS", "safe"} { + t.Run(name, func(t *testing.T) { + d := Dashboard{Name: "CTE", Panels: []Panel{{ID: "p", Title: "P", Viz: "table", SQL: "WITH " + name + " AS (SELECT * FROM logs WHERE $__window(time)) SELECT count(*) FROM " + name}}} + Normalize(&d) + _, problems, err := Check(t.Context(), engine, &d) + if err != nil { + t.Fatal(err) + } + if name == "safe" { + if len(problems) > 0 { + t.Fatalf("normal CTE rejected: %v", problems) + } + return + } + for _, p := range problems { + if p.Path == "panels[0].sql" && p.Message == "CTE names must not shadow telemetry relations" { + return + } + } + t.Fatalf("shadow accepted: %v", problems) + }) + } +} diff --git a/internal/panel/compile.go b/internal/panel/compile.go index 837b34d2..99d8acfd 100644 --- a/internal/panel/compile.go +++ b/internal/panel/compile.go @@ -71,9 +71,11 @@ type Column struct { // Compiled is one statement ready to run. type Compiled struct { - SQL string - Args []any - Columns []Column + SQL string + Args []any + Columns []Column + TrendInterval time.Duration + TrendStart time.Time } // dropped reports whether a filter references a variable set to @@ -136,6 +138,16 @@ func buildWhere(sig *signal, filters []Filter, scope Scope) (string, []any, erro // selected as "_t" and named "time" in the frame, so it never collides with a // signal's own time column. func compileQuery(p *Panel, measures []Measure, filters []Filter, scope Scope) (Compiled, error) { + if p.Viz == "logs" || p.Viz == "log_patterns" || p.Viz == "traces" { + return compileRows(p, filters, scope) + } + if p.Viz == "heatmap" || p.Viz == "histogram" { + return compileDistribution(p, filters, scope) + } + if p.Viz == "scatter" || p.Viz == "state_timeline" { + return compileItems(p, measures, filters, scope) + } + q := p.Query sig, ok := lookupSignal(q.From) if !ok { @@ -163,13 +175,18 @@ func compileQuery(p *Panel, measures []Measure, filters []Filter, scope Scope) ( columns = append(columns, Column{Name: "time", Type: "time", Role: "time"}) } top := 0 + foldDimension := -1 if bucket != "" && len(dims) == 1 { top = p.Top() + foldDimension = 0 + } else if p.Viz == "bar" && len(dims) == 2 { + top = p.Top() + foldDimension = 1 } for i, d := range dims { expr := d.stringSQL() - if top > 0 && i == 0 { - expr = fmt.Sprintf("CASE WHEN %s IN (SELECT d FROM top) THEN %s ELSE 'Other' END", expr, expr) + if top > 0 && i == foldDimension { + expr = fmt.Sprintf("CASE WHEN coalesce(%s, '') IN (SELECT d FROM top) THEN %s ELSE (SELECT 'Other (' || count(*)::VARCHAR || ')' FROM candidates WHERE d NOT IN (SELECT d FROM top)) END", expr, expr) } selects = append(selects, fmt.Sprintf("coalesce(%s, '') AS %s", expr, quoteIdent(d.alias()))) groups = append(groups, expr) @@ -192,9 +209,37 @@ func compileQuery(p *Panel, measures []Measure, filters []Filter, scope Scope) ( columns = append(columns, Column{Name: m.Alias, Type: "number", Role: "measure", Unit: unit}) } var b strings.Builder - b.WriteString("WITH base AS (SELECT * FROM " + sig.name + " WHERE " + where + ")") + b.WriteString("WITH base AS (SELECT * FROM " + structuredSource(sig.name) + " WHERE " + where + ")") if top > 0 { - fmt.Fprintf(&b, ", top AS (SELECT %s AS d FROM base GROUP BY 1 ORDER BY count(*) DESC LIMIT %d)", dims[0].stringSQL(), top) + // Rank over the complete panel window, before bucket aggregation. Volume + // measures retain largest-first semantics even when higher is better. + direction := "DESC" + first := measures[0] + rankPanel, rankQuery := *p, *p.Query + rankQuery.Measures = []string{first.Text} + rankPanel.Query = &rankQuery + better := p.Better + if better == "" { + better = inferBetter(&rankPanel) + } + if !first.Additive && first.Func != "share" && better == "higher" { + direction = "ASC" + } + value := measureSQL(first, sig, scope.End.Sub(scope.Start).Seconds(), "") + samples, extra := "count(*)", "" + order := "value " + direction + " NULLS LAST, n DESC, d" + switch first.Func { + case "error_rate": + // The common 20-sample floor prevents tiny request series from + // displacing supported failures (even 1/2 has a 9.45% bound). + extra = ", sum(" + errorCase(sig) + ") AS errors, " + wilsonLowerSQL() + " AS confidence" + order = "(n >= 20) DESC, CASE WHEN n >= 20 THEN confidence END DESC NULLS LAST, n DESC, d" + case "p50", "p75", "p90", "p95", "p99", "quantile", "avg", "max", "min": + // Count actual numeric samples, not rows with missing values. + samples = "count(" + first.Field.numberSQL() + ")" + order = "(n >= 20) DESC, CASE WHEN n >= 20 THEN value END " + direction + " NULLS LAST, n DESC, d" + } + fmt.Fprintf(&b, ", candidates AS (SELECT coalesce(%s, '') AS d, %s AS value, %s AS n%s FROM base GROUP BY 1), top AS (SELECT d FROM candidates ORDER BY %s LIMIT %d)", dims[foldDimension].stringSQL(), value, samples, extra, order, top) } b.WriteString(" SELECT " + strings.Join(selects, ", ") + " FROM base") if len(groups) > 0 { @@ -211,10 +256,7 @@ func measureSQL(m Measure, sig *signal, seconds float64, partition string) strin case "rate": return "count(*) / " + sqlFloat(seconds) case "error_rate": - if sig.name == "logs" { - return "100.0 * avg(CASE WHEN upper(severity) IN ('ERROR', 'FATAL', 'CRITICAL') OR severity_number >= 17 THEN 1.0 ELSE 0.0 END)" - } - return "100.0 * avg(CASE WHEN status IN ('STATUS_CODE_ERROR', 'ERROR') THEN 1.0 ELSE 0.0 END)" + return "100.0 * avg(" + errorCase(sig) + ")" case "share": return fmt.Sprintf("100.0 * count(*) / sum(count(*)) OVER (%s)", partition) case "avg", "min", "max", "sum": @@ -228,6 +270,20 @@ func measureSQL(m Measure, sig *signal, seconds float64, partition string) strin } } +// Both displayed rates and ranking use exactly the same error definition. +func errorCase(sig *signal) string { + if sig.name == "logs" { + return "CASE WHEN upper(severity) IN ('ERROR', 'FATAL', 'CRITICAL') OR severity_number >= 17 THEN 1.0 ELSE 0.0 END" + } + return "CASE WHEN status IN ('STATUS_CODE_ERROR', 'ERROR') THEN 1.0 ELSE 0.0 END" +} + +// Wilson's 95% lower bound (z=1.96), using candidate aggregate aliases. +// Floating point divisors prevent integer division and n*n overflow. +func wilsonLowerSQL() string { + return "greatest(0.0, (errors / n + 3.8416 / (2.0 * n) - 1.96 * sqrt((errors / n) * (1.0 - errors / n) / n + 3.8416 / (4.0 * n * n))) / (1.0 + 3.8416 / n))" +} + func sqlFloat(v float64) string { text := strconv.FormatFloat(v, 'f', -1, 64) if !strings.Contains(text, ".") { diff --git a/internal/panel/compile_test.go b/internal/panel/compile_test.go index eb061bb4..4df528d5 100644 --- a/internal/panel/compile_test.go +++ b/internal/panel/compile_test.go @@ -40,7 +40,7 @@ func TestCompileTimeseriesBindsVariables(t *testing.T) { if err != nil { t.Fatal(err) } - want := `WITH base AS (SELECT * FROM spans WHERE ` + spanWindow + ` AND ((service = CAST(? AS VARCHAR))) AND ((kind = 'SPAN_KIND_SERVER'))) SELECT epoch_ms(time_bucket(INTERVAL '60 seconds', "start_time"::TIMESTAMP_NS))::BIGINT AS "_t", quantile_cont("duration_ms", 0.5)::DOUBLE AS "p50", quantile_cont("duration_ms", 0.95)::DOUBLE AS "p95" FROM base GROUP BY time_bucket(INTERVAL '60 seconds', "start_time"::TIMESTAMP_NS) ORDER BY "_t" LIMIT 18000` + want := `WITH base AS (SELECT * FROM spans WHERE ` + spanWindow + ` AND ((service = CAST(? AS VARCHAR))) AND ((kind = 'SPAN_KIND_SERVER'))) SELECT epoch_ms(time_bucket(INTERVAL '60 seconds', "start_time"::TIMESTAMP_NS))::BIGINT AS "_t", quantile_cont("duration_ms", 0.5)::DOUBLE AS "p50", quantile_cont("duration_ms", 0.95)::DOUBLE AS "p95" FROM base GROUP BY time_bucket(INTERVAL '60 seconds', "start_time"::TIMESTAMP_NS) ORDER BY "_t" LIMIT 14000` if got.SQL != want { t.Fatalf("sql\n got: %s\nwant: %s", got.SQL, want) } @@ -63,8 +63,8 @@ func TestCompileGroupedSeriesFoldsIntoOther(t *testing.T) { t.Fatal(err) } bucket := `time_bucket(INTERVAL '300 seconds', "start_time"::TIMESTAMP_NS)` - other := `CASE WHEN "service" IN (SELECT d FROM top) THEN "service" ELSE 'Other' END` - want := `WITH base AS (SELECT * FROM spans WHERE ` + spanWindow + `), top AS (SELECT "service" AS d FROM base GROUP BY 1 ORDER BY count(*) DESC LIMIT 3) SELECT epoch_ms(` + bucket + `)::BIGINT AS "_t", coalesce(` + other + `, '') AS "service", count(*) / 300.0 AS "rate" FROM base GROUP BY ` + bucket + `, ` + other + ` ORDER BY "_t", 2 LIMIT 8000` + other := `CASE WHEN coalesce("service", '') IN (SELECT d FROM top) THEN "service" ELSE (SELECT 'Other (' || count(*)::VARCHAR || ')' FROM candidates WHERE d NOT IN (SELECT d FROM top)) END` + want := `WITH base AS (SELECT * FROM spans WHERE ` + spanWindow + `), candidates AS (SELECT coalesce("service", '') AS d, count(*) / 3600.0 AS value, count(*) AS n FROM base GROUP BY 1), top AS (SELECT d FROM candidates ORDER BY value DESC NULLS LAST, n DESC, d LIMIT 3) SELECT epoch_ms(` + bucket + `)::BIGINT AS "_t", coalesce(` + other + `, '') AS "service", count(*) / 300.0 AS "rate" FROM base GROUP BY ` + bucket + `, ` + other + ` ORDER BY "_t", 2 LIMIT 8000` if got.SQL != want { t.Fatalf("sql\n got: %s\nwant: %s", got.SQL, want) } @@ -111,8 +111,8 @@ func TestCompileShareAndLogs(t *testing.T) { t.Fatal(err) } bucket := `time_bucket(INTERVAL '60 seconds', "time"::TIMESTAMP_NS)` - other := `CASE WHEN "severity" IN (SELECT d FROM top) THEN "severity" ELSE 'Other' END` - want := `WITH base AS (SELECT * FROM logs WHERE "time" >= ?::TIMESTAMP_NS::TIMESTAMPTZ_NS AND "time" < ?::TIMESTAMP_NS::TIMESTAMPTZ_NS), top AS (SELECT "severity" AS d FROM base GROUP BY 1 ORDER BY count(*) DESC LIMIT 8) SELECT epoch_ms(` + bucket + `)::BIGINT AS "_t", coalesce(` + other + `, '') AS "severity", 100.0 * count(*) / sum(count(*)) OVER (PARTITION BY ` + bucket + `) AS "share" FROM base GROUP BY ` + bucket + `, ` + other + ` ORDER BY "_t", 2 LIMIT 18000` + other := `CASE WHEN coalesce("severity", '') IN (SELECT d FROM top) THEN "severity" ELSE (SELECT 'Other (' || count(*)::VARCHAR || ')' FROM candidates WHERE d NOT IN (SELECT d FROM top)) END` + want := `WITH base AS (SELECT * FROM (` + redactedLogSource() + `) WHERE "time" >= ?::TIMESTAMP_NS::TIMESTAMPTZ_NS AND "time" < ?::TIMESTAMP_NS::TIMESTAMPTZ_NS), candidates AS (SELECT coalesce("severity", '') AS d, 100.0 * count(*) / sum(count(*)) OVER () AS value, count(*) AS n FROM base GROUP BY 1), top AS (SELECT d FROM candidates ORDER BY value DESC NULLS LAST, n DESC, d LIMIT 6) SELECT epoch_ms(` + bucket + `)::BIGINT AS "_t", coalesce(` + other + `, '') AS "severity", 100.0 * count(*) / sum(count(*)) OVER (PARTITION BY ` + bucket + `) AS "share" FROM base GROUP BY ` + bucket + `, ` + other + ` ORDER BY "_t", 2 LIMIT 14000` if got.SQL != want { t.Fatalf("sql\n got: %s\nwant: %s", got.SQL, want) } diff --git a/internal/panel/confidence_ranking_test.go b/internal/panel/confidence_ranking_test.go new file mode 100644 index 00000000..316a6bad --- /dev/null +++ b/internal/panel/confidence_ranking_test.go @@ -0,0 +1,131 @@ +package panel + +import ( + "context" + "fmt" + "reflect" + "strings" + "testing" + "time" + + "github.com/labstack/fanout/internal/queryrows" + "github.com/labstack/fanout/internal/telemetry" +) + +type confidenceCounter struct { + Engine + queries int +} + +func (e *confidenceCounter) QueryContext(ctx context.Context, text string, args ...any) (queryrows.Rows, error) { + if strings.Contains(text, "candidates AS (") { + e.queries++ + } + return e.Engine.QueryContext(ctx, text, args...) +} + +func TestQ4ConfidenceRankingEngine(t *testing.T) { + duck, repo := newTestEngine(t) + spans := make([]telemetry.Span, 0, 262000) + add := func(route, service string, n, errors int, latency float64) { + for i := range n { + status := "STATUS_CODE_OK" + if i < errors { + status = "STATUS_CODE_ERROR" + } + id := fmt.Sprintf("%s-%s-%d", route, service, i) + spans = append(spans, telemetry.Span{Namespace: "shop", ServiceName: service, TraceID: id, SpanID: id, HTTPRoute: route, Kind: "SPAN_KIND_SERVER", StatusCode: status, StartUnixNanos: fixtureStart.UnixNano(), EndUnixNanos: fixtureStart.UnixNano() + int64(latency*1e6), DurationMS: latency}) + } + } + add("/rates", "A", 2, 1, 1) + add("/rates", "B", 100000, 10000, 1) + add("/rates", "C", 1000, 400, 1) + for _, service := range []string{"D", "E", "F"} { + add("/rates", service, 50000, 500, 1) + } + add("/low", "low", 500, 200, 1) + add("/wilson", "small", 20, 8, 1) + add("/wilson", "busy", 10000, 3000, 1) + add("/latency", "outlier", 3, 0, 10000) + add("/latency", "nineteen", 19, 0, 5000) + add("/latency", "eligible-a", 20, 0, 100) + add("/latency", "eligible-b", 25, 0, 100) + add("/latency", "eligible-c", 21, 0, 80) + add("/latency", "eligible-d", 20, 0, 50) + // Twenty rows with only three actual numeric samples remain ineligible. + add("/nullable", "outlier", 20, 0, 10000) + for i := len(spans) - 20; i < len(spans)-17; i++ { + spans[i].Attributes = map[string]any{"latency": 10000.0} + } + add("/nullable", "eligible", 20, 0, 100) + for i := len(spans) - 20; i < len(spans); i++ { + spans[i].Attributes = map[string]any{"latency": 100.0} + } + commit(t, repo, spans, nil) + counter := &confidenceCounter{Engine: duck} + e := NewExecutor(counter, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + cases := []struct { + name, measure, where, better string + top int + kept []string + }{ + {"tiny rate folded", "error_rate()", "http_route = '/rates'", "", 3, []string{"B", "C", "D"}}, + {"low volume real failure", "error_rate()", "http_route IN ('/low', '/rates') AND service NOT IN ('A','B','C')", "", 1, []string{"low"}}, + {"Wilson beats raw fraction", "error_rate()", "http_route = '/wilson'", "", 1, []string{"busy"}}, + {"volume unchanged", "count()", "http_route = '/rates'", "higher", 3, []string{"B", "D", "E"}}, + {"rate unchanged", "rate()", "http_route = '/rates'", "", 3, []string{"B", "D", "E"}}, + {"share unchanged", "share()", "http_route = '/rates'", "higher", 3, []string{"B", "D", "E"}}, + {"sum unchanged", "sum(duration_ms)", "http_route = '/rates'", "higher", 3, []string{"B", "D", "E"}}, + {"ineligible ordered by samples", "p95(duration_ms)", "http_route = '/latency' AND service IN ('nineteen','outlier')", "", 1, []string{"nineteen"}}, + {"nullable samples", "avg(attributes['latency'])", "http_route = '/nullable'", "", 1, []string{"eligible"}}, + {"higher better preserved", "avg(duration_ms)", "http_route = '/latency'", "higher", 1, []string{"eligible-d"}}, + } + for _, measure := range []string{"p50(duration_ms)", "p75(duration_ms)", "p90(duration_ms)", "p95(duration_ms)", "p99(duration_ms)", "quantile(duration_ms, 0.999)", "avg(duration_ms)", "max(duration_ms)", "min(duration_ms)"} { + cases = append(cases, struct { + name, measure, where, better string + top int + kept []string + }{measure, measure, "http_route = '/latency'", "", 3, []string{"eligible-a", "eligible-b", "eligible-c"}}) + } + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + before := counter.queries + d := Dashboard{Name: "Confidence", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "s", Title: "S", Viz: "timeseries", Better: tc.better, Options: &Options{Top: tc.top}, Query: &Query{From: "spans", Measures: []string{tc.measure}, By: []string{"service"}, Where: []string{tc.where}, Bucket: "1m"}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || len(got) != 1 || got[0].Status != StatusOK || got[0].Frame == nil { + t.Fatalf("run: %+v %v", got, err) + } + if counter.queries-before != 1 { + t.Fatalf("ranking queries=%d, want one", counter.queries-before) + } + var kept []string + folded := false + for _, name := range got[0].Frame.Values[1] { + if strings.HasPrefix(name.(string), "Other (") { + folded = true + } else { + kept = append(kept, name.(string)) + } + } + if !reflect.DeepEqual(kept, tc.kept) || !folded { + t.Fatalf("kept=%v want=%v folded=%v frame=%+v", kept, tc.kept, folded, got[0].Frame) + } + if tc.name == "tiny rate folded" { + for row, name := range got[0].Frame.Values[1] { + want, ok := map[string]float64{"B": 10, "C": 40, "D": 1}[name.(string)] + if ok && got[0].Frame.Values[2][row] != want { + t.Fatalf("display rate changed to confidence score: %+v", got[0].Frame) + } + } + } + }) + } +} + +func TestQ4ConfidenceSchemaText(t *testing.T) { + field, _ := reflect.TypeFor[Options]().FieldByName("Top") + if !strings.Contains(field.Tag.Get("jsonschema"), "series are chosen worst-first by confidence (Wilson lower bound for error rates; at least 20 samples for latency)") { + t.Fatal("missing confidence semantics in schema") + } +} diff --git a/internal/panel/deploy_split.go b/internal/panel/deploy_split.go new file mode 100644 index 00000000..0adfcf6c --- /dev/null +++ b/internal/panel/deploy_split.go @@ -0,0 +1,198 @@ +package panel + +import ( + "context" + "fmt" + + "github.com/labstack/fanout/internal/annotations" +) + +func (e *Executor) runDeploySplit(ctx context.Context, p *Panel, checked *Checked, scope Scope) (*Frame, string, error) { + copyPanel := *p + copyOptions := *p.Options + copyOptions.Split = "" + copyPanel.Options = ©Options + request := annotations.Request{From: scope.Start, To: scope.End} + seen := map[string]string{} + for _, f := range checked.Filters[p.ID] { + if scope.dropped(f) { + if f.EqField == "service" { + frame, text, err := e.runScope(ctx, ©Panel, checked, scope) + if frame != nil { + frame.Note = "Service is All; showing the unsplit whole-window frame." + } + return frame, text, err + } + continue + } + if f.EqField == "service" || f.EqField == "namespace" { + field, value, err := rollupFilterValue(ctx, e.engine, f, scope) + if err != nil { + return nil, "", err + } + if old, ok := seen[field]; ok && old != value { + return nil, "", fmt.Errorf("deploy split scope equalities disagree") + } + seen[field] = value + if field == "namespace" { + request.Namespace = value + } else { + request.Services = []string{value} + } + } + } + if len(request.Services) != 1 { + return nil, "", fmt.Errorf("deploy split requires one active service equality") + } + history, err := annotations.New(e.engine).Read(ctx, request) + if err != nil { + return nil, "", err + } + var latest *annotations.Deploy + for i := range history.Deploys { + at := history.Deploys[i].At + if at.After(scope.Start) && at.Before(scope.End) && (latest == nil || at.After(latest.At)) { + latest = &history.Deploys[i] + } + } + if latest == nil { + f, text, err := e.runScope(ctx, ©Panel, checked, scope) + if f != nil { + f.Note = "No deploy in this panel's time range; showing the whole window." + } + return f, text, err + } + before, after := scope, scope + before.End = latest.At + after.Start = latest.At + a, sqlA, err := e.runScope(ctx, ©Panel, checked, before) + if err != nil { + return nil, sqlA, err + } + b, sqlB, err := e.runScope(ctx, ©Panel, checked, after) + if err != nil { + return nil, sqlB, err + } + columns := append([]Column{a.Columns[0], {Name: "period", Type: "string", Role: "dimension"}}, a.Columns[1:]...) + f := newFrame(columns) + f.Periods = map[string]Time{"Before deploy": {From: &before.Start, To: &before.End}, "Since deploy": {From: &after.Start, To: &after.End}} + f.Truncated = a.Truncated || b.Truncated || history.Truncated + for _, part := range []struct { + frame *Frame + label string + }{{a, "Before deploy"}, {b, "Since deploy"}} { + for r := 0; r < part.frame.Rows; r++ { + row := []any{part.frame.Values[0][r], part.label} + for i := 1; i < len(part.frame.Columns); i++ { + row = append(row, part.frame.Values[i][r]) + } + appendPanelRow(f, row...) + } + } + f.Note = "Split at " + latest.At.Format("2006-01-02T15:04:05.999999999Z07:00") + " · " + latest.Service + " " + latest.Version + return f, sqlA + "; " + sqlB, nil +} +func validateDisplayOptions(p *Panel, path string, vars map[string]Variable, problems *Problems) { + if p.Options == nil { + return + } + if p.Options.Split != "" && (p.Options.Split != "deploy" || p.Viz != "bar" || p.Query == nil || len(p.Query.By) != 1 || len(p.Query.Measures) != 1) { + problems.addHint(path+".options.split", "deploy split needs a structured bar with one category and one measure", "use a separate panel per measure") + } + if len(p.Options.Columns) > 30 { + problems.add(path+".options.columns", "at most 30 column formats") + } + if len(p.Options.Columns) > 0 && p.Viz != "table" { + problems.add(path+".options.columns", "column formats apply to table panels") + } + seen := map[string]bool{} + for _, c := range p.Options.Columns { + if c.Field == "" || seen[c.Field] { + problems.add(path+".options.columns", "column fields must be nonempty and unique") + } + seen[c.Field] = true + switch c.Format { + case "unit", "bar", "status", "sparkline", "trace_link", "service_link", "log_template": + default: + problems.add(path+".options.columns", "unknown column format") + } + if c.Unit != "" { + if _, ok := unitFamilies[c.Unit]; !ok { + problems.add(path+".options.columns", "unknown column unit") + } + } + if c.Format == "service_link" { + v, ok := vars[c.Variable] + if !ok || (v.Kind != "query" && v.Kind != "custom") { + problems.addHint(path+".options.columns", "service_link requires a query or custom variable", "set variable to the name of a query or custom variable") + } + } + if p.Query != nil { + sig, ok := lookupSignal(p.Query.From) + if !ok { + continue + } + columns := map[string]bool{} + for _, by := range p.Query.By { + ref, err := sig.field(by) + if err == nil { + columns[ref.alias()] = true + } + } + var ignored Problems + measureAliases := map[string]bool{} + for _, m := range parseMeasures(sig, p.Query.Measures, "", &ignored) { + columns[m.Alias] = true + measureAliases[m.Alias] = true + } + if c.Format == "sparkline" { + if !measureAliases[c.Field] { + problems.addHint(path+".options.columns", "structured sparklines require a measure column", "choose a measure field; the executor attaches its trend") + } + } + if !columns[c.Field] { + problems.add(path+".options.columns", "formatted field does not exist in the structured frame") + } + } + } +} + +func checkDeployScope(ctx context.Context, parser Parser, p *Panel, f Filter) error { + if p.Options == nil || p.Options.Split != "deploy" { + return nil + } + tree, err := parser.ParseSQL(ctx, "SELECT 1 FROM spans WHERE ("+f.Source+")") + if err != nil { + return err + } + scoped := false + var walk func(any) + walk = func(n any) { + switch v := n.(type) { + case map[string]any: + if v["class"] == "COLUMN_REF" && (fieldText(v) == "service" || fieldText(v) == "namespace") { + scoped = true + } + for _, child := range v { + walk(child) + } + case []any: + for _, child := range v { + walk(child) + } + } + } + walk(tree["where_clause"]) + if !scoped { + return nil + } + if f.EqField != "service" && f.EqField != "namespace" { + return Problems{{Path: "options.split", Message: "deploy split requires standalone service/namespace equalities"}} + } + sample := Scope{Vars: map[string]Value{}} + for _, name := range f.Params { + sample.Vars[name] = Value{Values: []string{"check"}} + } + _, _, err = rollupFilterValue(ctx, parser, f, sample) + return err +} diff --git a/internal/panel/deploy_split_test.go b/internal/panel/deploy_split_test.go new file mode 100644 index 00000000..a061eb97 --- /dev/null +++ b/internal/panel/deploy_split_test.go @@ -0,0 +1,155 @@ +package panel + +import ( + "encoding/json" + "errors" + "slices" + "strings" + "testing" + "time" +) + +func TestM2DeploySplitUsesEffectiveWindowAndRates(t *testing.T) { + engine, repo := newTestEngine(t) + commit(t, repo, shopSpans(), nil) + at := fixtureStart + _, err := engine.DB.Exec(`INSERT INTO version_rollup VALUES ('shop','checkout','v1',?::TIMESTAMP_NS::TIMESTAMPTZ_NS,?::TIMESTAMP_NS::TIMESTAMPTZ_NS),('shop','checkout','v2',?::TIMESTAMP_NS::TIMESTAMPTZ_NS,?::TIMESTAMP_NS::TIMESTAMPTZ_NS)`, at.Add(-time.Hour), at, at.Add(15*time.Minute), at.Add(time.Hour)) + if err != nil { + t.Fatal(err) + } + e := NewExecutor(engine, 30) + e.now = func() time.Time { return at.Add(time.Hour) } + d := shopDashboard() + d.Panels = d.Panels[2:3] + d.Panels[0].Query.Measures = []string{"rate()"} + d.Panels[0].Options = &Options{Split: "deploy"} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + f := got[0].Frame + if got[0].Status != "ok" || f.Rows != 4 || f.Columns[1].Name != "period" { + t.Fatalf("split: %+v", got) + } + raw, err := json.Marshal(f) + if err != nil { + t.Fatal(err) + } + var wire struct { + Periods map[string]struct{ From, To time.Time } + } + if err := json.Unmarshal(raw, &wire); err != nil { + t.Fatal(err) + } + if before, since := wire.Periods["Before deploy"], wire.Periods["Since deploy"]; !before.From.Equal(at) || !before.To.Equal(at.Add(15*time.Minute)) || !since.From.Equal(before.To) || !since.To.Equal(at.Add(time.Hour)) { + t.Fatalf("missing period windows: %s", raw) + } + req := ExemplarRequest{Dashboard: d, PanelID: d.Panels[0].ID, From: at, To: at.Add(15 * time.Minute), Dimensions: map[string]string{"http_route": "/cart"}} + exemplars, err := e.Exemplars(t.Context(), req) + if err != nil || len(exemplars.Traces) != 15 { + t.Fatalf("before exemplars: %+v %v", exemplars, err) + } + for _, trace := range exemplars.Traces { + if !trace.Start.Before(req.To) { + t.Fatalf("since trace in before selection: %+v", trace) + } + } + for _, v := range f.Values[2] { + if v.(float64) != 1.0/60 { + t.Fatalf("rate used full window: %v", f.Values) + } + } + d.Panels[0].Time = &PanelTime{Range: "15m"} + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Frame.Note == "" || len(got[0].Frame.Columns) != 2 { + t.Fatalf("no deploy: %+v %v", got, err) + } +} + +func TestM2DeploySplitAllFallsBackAndRequiresEquality(t *testing.T) { + e := newFixtureExecutor(t) + d := shopDashboard() + d.Panels = d.Panels[2:3] + d.Panels[0].Options = &Options{Split: "deploy"} + d.Variables[0].IncludeAll = true + got, err := e.Run(t.Context(), RunRequest{Dashboard: d, Vars: map[string]Value{"service": {All: true}}}) + if err != nil || got[0].Frame == nil || got[0].Frame.Note != "Service is All; showing the unsplit whole-window frame." || len(got[0].Frame.Columns) != 2 { + t.Fatalf("All: %+v %v", got, err) + } + d.Panels[0].Query.Where = nil + err = e.Validate(t.Context(), &d) + var problems Problems + want := Problem{Path: "panels[0].options.split", Message: "deploy split requires a service equality filter", Hint: "add service = 'name' or service = $service"} + if !errors.As(err, &problems) || !slices.Contains(problems, want) { + t.Fatalf("got %v want %+v", err, want) + } +} + +func TestM2DeploySplitLatestDeployAndBoundaries(t *testing.T) { + engine, repo := newTestEngine(t) + commit(t, repo, shopSpans(), nil) + at := fixtureStart + for i, offset := range []time.Duration{-time.Hour, 0, 15 * time.Minute, 45 * time.Minute, time.Hour} { + if _, err := engine.DB.Exec(`INSERT INTO version_rollup VALUES ('shop','checkout',?,?::TIMESTAMP_NS::TIMESTAMPTZ_NS,?::TIMESTAMP_NS::TIMESTAMPTZ_NS)`, string(rune('a'+i)), at.Add(offset), at.Add(offset)); err != nil { + t.Fatal(err) + } + } + e := NewExecutor(engine, 30) + e.now = func() time.Time { return at.Add(time.Hour) } + d := shopDashboard() + d.Panels = d.Panels[2:3] + d.Panels[0].Options = &Options{Split: "deploy"} + d.Panels[0].Query.Where = append(d.Panels[0].Query.Where, "namespace = 'shop'") + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + f := got[0].Frame + wantNote := "Split at " + at.Add(45*time.Minute).Format("2006-01-02T15:04:05.999999999Z07:00") + " · checkout d" + if got[0].Status != StatusOK || f == nil || f.Note != wantNote || f.Rows != 4 { + t.Fatalf("latest deploy: %+v", got) + } + for r := range f.Rows { + want := 45.0 + if f.Values[1][r] == "Since deploy" { + want = 15 + } + if f.Values[2][r] != want { + t.Fatalf("wrong subwindow count: %+v", f) + } + } + d.Panels[0].Time = &PanelTime{Range: "15m"} + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Frame == nil || got[0].Frame.Note != "No deploy in this panel's time range; showing the whole window." { + t.Fatalf("boundary deploy should remain unsplit: %+v %v", got, err) + } +} + +func TestM2DeploySplitChecksASTScopeReferences(t *testing.T) { + e := newFixtureExecutor(t) + for _, tc := range []struct { + expr string + valid bool + }{ + {"http_route = '/service/namespace'", true}, + {"namespace = 'shop'", true}, + {"'shop' = namespace", true}, + {"service LIKE '%out'", false}, + {"namespace IN ('shop')", false}, + {"service = 'checkout' OR http_route = '/cart'", false}, + {"service = 'checkout' AND namespace = 'shop'", false}, + {"CAST(service AS VARCHAR) = 'checkout'", false}, + {"namespace = service", false}, + } { + t.Run(tc.expr, func(t *testing.T) { + d := shopDashboard() + d.Panels = d.Panels[2:3] + d.Panels[0].Options = &Options{Split: "deploy"} + d.Panels[0].Query.Where = []string{"service = $service", tc.expr} + err := e.Validate(t.Context(), &d) + if tc.valid && err != nil || !tc.valid && (err == nil || !strings.Contains(err.Error(), "options.split")) { + t.Fatalf("valid=%v: %v", tc.valid, err) + } + }) + } +} diff --git a/internal/panel/diagnose.go b/internal/panel/diagnose.go index d5845508..66f14b49 100644 --- a/internal/panel/diagnose.go +++ b/internal/panel/diagnose.go @@ -21,6 +21,9 @@ func (e *Executor) diagnose(ctx context.Context, p *Panel, filters []Filter, sco if p.Query == nil { return "The query returned no rows for this time range." } + if p.Viz == "traces" && p.Query.Sort == "errors" { + return "No erroring traces in this range" + } sig, _ := lookupSignal(p.Query.From) ctx = queryrows.WithWindow(ctx, queryrows.Window{Start: scope.Start, End: scope.End}) active := make([]Filter, 0, len(filters)) @@ -29,6 +32,17 @@ func (e *Executor) diagnose(ctx context.Context, p *Panel, filters []Filter, sco active = append(active, f) } } + if (p.Viz == "logs" || p.Viz == "log_patterns") && p.Options != nil && p.Options.Highlight != "" { + // The highlight is applied separately from the structured filters. Only + // blame it when those active filters would otherwise return log rows. + n, err := e.count(ctx, sig, active, scope) + if err != nil { + return "" + } + if n > 0 { + return fmt.Sprintf("No logs contain %q in this range", p.Options.Highlight) + } + } total, err := e.count(ctx, sig, nil, scope) if err != nil { return "" @@ -64,7 +78,7 @@ func (e *Executor) count(ctx context.Context, sig *signal, filters []Filter, sco if err != nil { return 0, err } - rows, err := e.engine.QueryContext(ctx, "SELECT count(*) FROM "+sig.name+" WHERE "+where, args...) + rows, err := e.engine.QueryContext(ctx, "SELECT count(*) FROM "+structuredSource(sig.name)+" WHERE "+where, args...) if err != nil { return 0, err } @@ -88,7 +102,7 @@ func (e *Executor) topValues(ctx context.Context, sig *signal, fieldText string, return "" } expr := ref.stringSQL() - rows, err := e.engine.QueryContext(ctx, fmt.Sprintf("SELECT %s AS v, count(*) AS n FROM %s WHERE %s AND %s IS NOT NULL GROUP BY 1 ORDER BY 2 DESC, 1 LIMIT 5", expr, sig.name, where, expr), args...) + rows, err := e.engine.QueryContext(ctx, fmt.Sprintf("SELECT %s AS v, count(*) AS n FROM %s WHERE %s AND %s IS NOT NULL GROUP BY 1 ORDER BY 2 DESC, 1 LIMIT 5", expr, structuredSource(sig.name), where, expr), args...) if err != nil { return "" } diff --git a/internal/panel/diagnose_regression_test.go b/internal/panel/diagnose_regression_test.go index 439f6477..905fed4d 100644 --- a/internal/panel/diagnose_regression_test.go +++ b/internal/panel/diagnose_regression_test.go @@ -8,8 +8,43 @@ import ( "time" "github.com/labstack/fanout/internal/queryrows" + "github.com/labstack/fanout/internal/telemetry" ) +func TestDiagnosisHighlightOnlyWhenActiveFiltersMatch(t *testing.T) { + engine, repo := newTestEngine(t) + n := fixtureStart.UnixNano() + commit(t, repo, nil, []telemetry.Log{{ServiceName: "checkout", Namespace: "shop", Body: "request accepted", BodyTemplate: "request accepted", EventUnixNanos: n, TimeUnixNanos: n, IngestedAt: n}}) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + for _, viz := range []string{"logs", "log_patterns"} { + t.Run(viz, func(t *testing.T) { + p := Panel{ID: "logs", Title: "Logs", Viz: viz, Options: &Options{Highlight: "error"}, Query: &Query{From: "logs", Where: []string{"service = 'missing'"}}} + if viz == "log_patterns" { + p.Query.Measures = []string{"count()"} + p.Query.By = []string{"body_template"} + p.Query.Bucket = "auto" + } + d := Dashboard{Name: "Diagnosis", Time: Time{Range: "1h"}, Panels: []Panel{p}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + if r := got[0]; r.Status != StatusEmpty || !strings.Contains(r.Diagnosis, "match service = 'missing'") || strings.Contains(r.Diagnosis, "No logs contain") { + t.Errorf("filter-caused empty result blames highlight: %+v", r) + } + d.Panels[0].Query.Where = []string{"service = 'checkout'"} + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + if r := got[0]; r.Status != StatusEmpty || r.Diagnosis != `No logs contain "error" in this range` { + t.Errorf("highlight-caused emptiness not diagnosed: %+v", r) + } + }) + } +} + func TestDiagnosisNamesOnlyEmptyingRouteFilter(t *testing.T) { engine, repo := newTestEngine(t) spans := shopSpans() diff --git a/internal/panel/distribution.go b/internal/panel/distribution.go new file mode 100644 index 00000000..23b3e037 --- /dev/null +++ b/internal/panel/distribution.go @@ -0,0 +1,145 @@ +package panel + +import ( + "fmt" + "sort" + "strings" + "time" +) + +const analysisCellLimit = 20000 + +func distributionRows(p *Panel, columns int) int { + n := analysisCellLimit / max(columns, 1) + if p.Viz == "histogram" { + n = min(n, 1000) + } + if p.Query.Limit > 0 { + n = min(n, p.Query.Limit) + } + return n +} +func compileDistribution(p *Panel, filters []Filter, scope Scope) (Compiled, error) { + sig, _ := lookupSignal(p.Query.From) + where, args, err := buildWhere(sig, filters, scope) + if err != nil { + return Compiled{}, err + } + columns := []Column{} + prefix := []string{} + groups := []string{} + if p.Viz == "heatmap" { + prefix = append(prefix, fmt.Sprintf("epoch_ms(time_bucket(INTERVAL '%d seconds',t::TIMESTAMP_NS))::BIGINT AS time", int64(scope.Interval.Seconds()))) + groups = append(groups, "time") + columns = append(columns, Column{Name: "time", Type: "time", Role: "time"}) + } + dimSelect := "'' AS dim" + if len(p.Query.By) > 0 { + ref, err := sig.field(p.Query.By[0]) + if err != nil { + return Compiled{}, err + } + dimSelect = "coalesce(" + ref.stringSQL() + ",'') AS dim" + prefix = append(prefix, "dim") + groups = append(groups, "dim") + columns = append(columns, Column{Name: ref.alias(), Type: "string", Role: "dimension"}) + } + unit := "ms" + raw := "" + if sig.name == "spans" { + raw = fmt.Sprintf(`SELECT %s AS t,%s, +CASE WHEN duration_ms<1 THEN 0 ELSE pow(2,least(32,floor(log2(duration_ms)))) END AS lo, +CASE WHEN duration_ms 0 { + cte += fmt.Sprintf(",top AS (SELECT dim FROM raw GROUP BY dim ORDER BY sum(n) DESC,dim LIMIT %d),folded AS (SELECT * REPLACE (CASE WHEN dim IN (SELECT dim FROM top) THEN dim ELSE (SELECT 'Other (' || count(DISTINCT dim)::VARCHAR || ')' FROM raw WHERE dim NOT IN (SELECT dim FROM top)) END AS dim) FROM raw)", p.Top()) + source = "folded" + } + text := cte + " SELECT " + strings.Join(prefix, ",") + " FROM " + source + " GROUP BY " + strings.Join(groups, ",") + order := "bucket_lower NULLS FIRST,bucket_upper NULLS LAST" + if p.Viz == "heatmap" { + order = "time DESC," + order + } + if len(p.Query.By) > 0 { + order = "dim," + order + } + n := distributionRows(p, len(columns)) + text += " ORDER BY " + order + fmt.Sprintf(" LIMIT %d", n+1) + return Compiled{SQL: text, Args: args, Columns: columns}, nil +} + +func metricHistogramRaw(dimSelect, where, temporality string, interval time.Duration, heat bool) string { + period := "0::BIGINT" + if heat { + period = fmt.Sprintf("epoch_ms(time_bucket(INTERVAL '%d seconds',time::TIMESTAMP_NS))", int64(interval/time.Second)) + } + delta := "FALSE" + if temporality == "delta" { + delta = "TRUE" + } + // Keep the reset clamp defensively; the final n>0 also filters negatives. + return fmt.Sprintf(`WITH points AS ( + SELECT *,%s,%s AS period, + TRY(from_json(hist_bounds_json,'["DOUBLE"]')) AS bounds, + TRY(from_json(hist_counts_json,'["UBIGINT"]')) AS counts + FROM metrics WHERE %s AND type='histogram'), expanded AS ( + SELECT namespace,service,name,unit,scope_name,scope_version,attributes,resource,dim,period,time AS t,ingested_unix_nano, + CASE WHEN i=1 THEN NULL ELSE bounds[i-1] END AS lo, + CASE WHEN i<=len(bounds) THEN bounds[i] END AS hi,n::DOUBLE AS n + FROM points,UNNEST(counts) WITH ORDINALITY AS u(n,i) + WHERE bounds IS NOT NULL AND counts IS NOT NULL AND len(counts)=len(bounds)+1), increases AS ( + SELECT dim,period,lo,hi,max(t) AS t, + CASE WHEN %s THEN sum(n) ELSE greatest(0,arg_max(n,(t,ingested_unix_nano))-arg_min(n,(t,ingested_unix_nano))) END::DOUBLE AS n + FROM expanded GROUP BY namespace,service,name,unit,scope_name,scope_version,attributes,resource,dim,period,lo,hi) + SELECT t,dim,lo,hi,n FROM increases WHERE n>0`, dimSelect, period, where, delta) +} + +func boundAnalysisFrame(f *Frame) { + if f == nil || len(f.Columns) == 0 || f.Columns[0].Role != "time" || f.Rows == 0 { + return + } + order := make([]int, f.Rows) + for i := range order { + order[i] = i + } + sort.SliceStable(order, func(i, j int) bool { return f.Values[0][order[i]].(int64) < f.Values[0][order[j]].(int64) }) + for c := range f.Values { + values := make([]any, len(order)) + for r, index := range order { + values[r] = f.Values[c][index] + } + f.Values[c] = values + } + cut := 0 + if f.Truncated { + oldest := f.Values[0][0] + for cut < f.Rows && f.Values[0][cut] == oldest { + cut++ + } + } + times := []int{} + for r := cut; r < f.Rows; r++ { + if r == cut || f.Values[0][r] != f.Values[0][r-1] { + times = append(times, r) + } + } + if len(times) > maxSeriesPoints { + cut = times[len(times)-maxSeriesPoints] + f.Truncated = true + } + if cut > 0 { + for c := range f.Values { + f.Values[c] = f.Values[c][cut:] + } + f.Rows -= cut + } +} diff --git a/internal/panel/distribution_test.go b/internal/panel/distribution_test.go new file mode 100644 index 00000000..d82357c0 --- /dev/null +++ b/internal/panel/distribution_test.go @@ -0,0 +1,405 @@ +package panel + +import ( + "fmt" + "math" + "reflect" + "slices" + "strings" + "testing" + "time" + + "github.com/labstack/fanout/internal/telemetry" + telemetrystore "github.com/labstack/fanout/internal/telemetry/store" +) + +func TestM2DistributionCounts(t *testing.T) { + e := newFixtureExecutor(t) + d := shopDashboard() + d.Panels = []Panel{{ID: "h", Title: "Latency distribution", Viz: "histogram", Query: &Query{From: "spans", Where: []string{"service = $service"}, Measures: []string{"count()"}, Histogram: &Histogram{Field: "duration_ms", Buckets: "log2"}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + f := got[0].Frame + if got[0].Status != "ok" || f == nil || f.Rows != 3 { + t.Fatalf("distribution: %+v", got) + } + var n float64 + for _, v := range f.Values[2] { + n += v.(float64) + } + if n != 120 { + t.Fatalf("count=%v", n) + } + engine, repo := newTestEngine(t) + at := fixtureStart.UnixNano() + err = repo.Commit(t.Context(), telemetrystore.Batch{ID: "hist-metric", Metrics: []telemetry.Metric{{Namespace: "shop", ServiceName: "checkout", Name: "latency", Type: "histogram", TimeUnixNanos: at, EventUnixNanos: at, IngestedAt: at, HistBoundsJSON: "[10,20]", HistCountsJSON: "[2,3,5]", HistCount: 10}}}) + if err != nil { + t.Fatal(err) + } + e = NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d.Variables = nil + d.Panels[0].Query = &Query{From: "metrics", Where: []string{"name = 'latency'"}, Measures: []string{"count()"}, Histogram: &Histogram{Field: "value", Buckets: "explicit", Temporality: "delta"}} + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + f = got[0].Frame + if got[0].Status != "ok" || f.Rows != 3 || f.Values[2][2].(float64) != 5 || f.Values[1][2] != nil { + t.Fatalf("weighted overflow: %+v", got) + } +} +func TestM2MetricHistogramTemporality(t *testing.T) { + engine, repo := newTestEngine(t) + metrics := []telemetry.Metric{} + for scrape, counts := range []string{"[10,20,30]", "[12,23,34]", "[15,27,40]"} { + n := fixtureStart.Add(time.Duration(scrape) * time.Minute).UnixNano() + metrics = append(metrics, telemetry.Metric{Namespace: "shop", ServiceName: "checkout", Name: "latency", Type: "histogram", Unit: "ms", TimeUnixNanos: n, EventUnixNanos: n, IngestedAt: n, HistBoundsJSON: "[10,20]", HistCountsJSON: counts, HistCount: 100, Attributes: map[string]any{"series": "a"}}) + } + for scrape, counts := range []string{"[100,100,100]", "[101,101,101]", "[102,102,102]"} { + n := fixtureStart.Add(time.Duration(scrape) * time.Minute).UnixNano() + metrics = append(metrics, telemetry.Metric{Namespace: "shop", ServiceName: "checkout", Name: "latency", Type: "histogram", Unit: "ms", TimeUnixNanos: n, EventUnixNanos: n, IngestedAt: n, HistBoundsJSON: "[10,20]", HistCountsJSON: counts, Attributes: map[string]any{"series": "b"}}) + } + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: "scrapes", Metrics: metrics}); err != nil { + t.Fatal(err) + } + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Hist", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "h", Title: "H", Viz: "histogram", Unit: "ms", Query: &Query{From: "metrics", Where: []string{"name = 'latency'"}, Measures: []string{"count()"}, Histogram: &Histogram{Field: "value", Buckets: "explicit"}}}}} + for _, temporality := range []string{"", "cumulative", "delta"} { + d.Panels[0].Query.Histogram.Temporality = temporality + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != "ok" { + t.Fatalf("hist: %+v %v", got, err) + } + want := []float64{7, 9, 12} + if temporality == "delta" { + want = []float64{340, 373, 407} + } + f := got[0].Frame + if f.Rows != 3 { + t.Fatalf("rows=%d", f.Rows) + } + for i, n := range want { + if f.Values[2][i] != n { + t.Fatalf("%q bucket %d=%v want %v", temporality, i, f.Values[2][i], n) + } + } + } + // A resetting series contributes max(last-first,0), not unsigned underflow. + d.Panels[0].Query.Histogram.Temporality = "" + n := fixtureStart.UnixNano() + reset := []telemetry.Metric{{ServiceName: "reset", Name: "reset", Type: "histogram", EventUnixNanos: n, IngestedAt: n, HistBoundsJSON: "[10]", HistCountsJSON: "[20,30]"}, {ServiceName: "reset", Name: "reset", Type: "histogram", EventUnixNanos: n + int64(time.Minute), IngestedAt: n + 1, HistBoundsJSON: "[10]", HistCountsJSON: "[1,2]"}} + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: "reset", Metrics: reset}); err != nil { + t.Fatal(err) + } + d.Panels[0].Query.Where = []string{"name = 'reset'"} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != "empty" { + t.Fatalf("reset: %+v %v", got, err) + } +} +func TestM2DistributionBudget(t *testing.T) { + engine, repo := newTestEngine(t) + spans := []telemetry.Span{} + for m := range 1440 { + for b := range 32 { + n := fixtureStart.Add(time.Duration(m) * time.Minute).UnixNano() + spans = append(spans, telemetry.Span{TraceID: "t", SpanID: "s", ServiceName: "checkout", Kind: "SPAN_KIND_SERVER", StartUnixNanos: n, EndUnixNanos: n + 1000, DurationMS: float64(uint64(1) << b), IngestedAt: n}) + } + } + commit(t, repo, spans, nil) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(24 * time.Hour) } + d := Dashboard{Name: "Heat", Time: Time{Range: "24h"}, Panels: []Panel{{ID: "heat", Title: "Heat", Viz: "heatmap", Query: &Query{From: "spans", Measures: []string{"count()"}, Bucket: "1m", Histogram: &Histogram{Field: "duration_ms", Buckets: "log2"}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + f := got[0].Frame + if f == nil || !f.Truncated || f.Rows*len(f.Columns) > analysisCellLimit { + t.Fatalf("unbounded heat: %+v", got) + } + // Auto must obey the same transfer and time-point budgets. + d.Panels[0].Query.Bucket = "auto" + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != "ok" || got[0].Frame == nil { + t.Fatalf("auto heat: %+v %v", got, err) + } + f = got[0].Frame + if f.Rows*len(f.Columns) > analysisCellLimit { + t.Fatalf("auto heat has %d cells", f.Rows*len(f.Columns)) + } + times := map[any]bool{} + for _, at := range f.Values[0] { + times[at] = true + } + if len(times) > maxSeriesPoints || got[0].Interval == "" { + t.Fatalf("auto heat time budget: %+v", got[0]) + } + d.Panels[0].Query.Bucket = "1m" + original := d.Panels[0] + d.Panels = nil + for i := 0; i < 11; i++ { + copy := original + copy.ID = fmt.Sprintf("bounded_%d", i) + d.Panels = append(d.Panels, copy) + } + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + cells := 0 + for _, r := range got { + if r.Frame != nil { + cells += r.Frame.Rows * len(r.Frame.Columns) + } + } + if cells > 200000 { + t.Fatalf("batch has %d cells", cells) + } + +} +func TestM2DistributionValidation(t *testing.T) { + cases := []struct { + p Panel + want Problem + }{ + {Panel{ID: "h", Title: "H", Viz: "heatmap", Query: &Query{From: "spans", Measures: []string{"count()"}}}, Problem{Path: "panels[0].query.histogram", Message: "distribution panels require a histogram", Hint: "spans: duration_ms/log2; metrics: value/explicit"}}, + {Panel{ID: "h", Title: "H", Viz: "histogram", Query: &Query{From: "spans", Measures: []string{"p95(duration_ms)"}, Histogram: &Histogram{Field: "duration_ms", Buckets: "log2"}}}, Problem{Path: "panels[0].query.measures", Message: "distribution counts require count()", Hint: "use count() as the observation weight"}}, + {Panel{ID: "h", Title: "H", Viz: "heatmap", Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service"}, Bucket: "auto", Histogram: &Histogram{Field: "duration_ms", Buckets: "log2"}}}, Problem{Path: "panels[0].query.by", Message: "heatmap panels group by at most 0 field(s)", Hint: ""}}, + {Panel{ID: "h", Title: "H", Viz: "histogram", Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service", "name"}, Histogram: &Histogram{Field: "duration_ms", Buckets: "log2"}}}, Problem{Path: "panels[0].query.by", Message: "histogram panels group by at most 1 field(s)", Hint: ""}}, + {Panel{ID: "h", Title: "H", Viz: "histogram", Query: &Query{From: "spans", Measures: []string{"count()"}, Histogram: &Histogram{Field: "duration_ms", Buckets: "explicit"}}}, Problem{Path: "panels[0].query.histogram", Message: "use spans duration_ms/log2 or metrics value/explicit", Hint: ""}}, + {Panel{ID: "h", Title: "H", Viz: "histogram", Query: &Query{From: "spans", Measures: []string{"count()"}, Histogram: &Histogram{Field: "value", Buckets: "log2"}}}, Problem{Path: "panels[0].query.histogram", Message: "use spans duration_ms/log2 or metrics value/explicit", Hint: ""}}, + {Panel{ID: "h", Title: "H", Viz: "heatmap", SQL: "SELECT count(*) FROM spans"}, Problem{Path: "panels[0].query", Message: "distribution panels require a structured query", Hint: ""}}, + {Panel{ID: "h", Title: "H", Viz: "histogram", SQL: "SELECT count(*) FROM spans"}, Problem{Path: "panels[0].query", Message: "distribution panels require a structured query", Hint: ""}}, + } + for _, tc := range cases { + d := Dashboard{Name: "Rule", Panels: []Panel{tc.p}} + Normalize(&d) + got := Validate(&d) + if !slices.Contains(got, tc.want) { + t.Fatalf("got %+v want %+v", got, tc.want) + } + } +} + +func TestM2DistributionMalformedHistogram(t *testing.T) { + for _, tc := range []struct{ name, bounds, counts string }{ + {"invalid_bounds", "not json", "[100,200]"}, + {"invalid_counts", "[10]", "not json"}, + {"null_bounds", "null", "[100,200]"}, + {"null_counts", "[10]", "null"}, + {"mismatched_lengths", "[10,20]", "[100,200]"}, + } { + t.Run(tc.name, func(t *testing.T) { + engine, repo := newTestEngine(t) + at := fixtureStart.UnixNano() + base := telemetry.Metric{ServiceName: "checkout", Name: "latency", Type: "histogram", EventUnixNanos: at, IngestedAt: at} + bad, good := base, base + bad.HistBoundsJSON, bad.HistCountsJSON = tc.bounds, tc.counts + good.HistBoundsJSON, good.HistCountsJSON = "[10]", "[2,3]" + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: "malformed", Metrics: []telemetry.Metric{bad, good}}); err != nil { + t.Fatal(err) + } + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Hist", Panels: []Panel{{ID: "h", Title: "H", Viz: "histogram", Query: &Query{From: "metrics", Measures: []string{"count()"}, Histogram: &Histogram{Field: "value", Buckets: "explicit", Temporality: "delta"}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != "ok" || got[0].Frame == nil { + t.Fatalf("malformed histogram: %+v %v", got, err) + } + f := got[0].Frame + if f.Rows != 2 || !slices.Equal(f.Values[2], []any{float64(2), float64(3)}) { + t.Fatalf("bad row contributed: %+v", f) + } + }) + } +} + +func TestM2DistributionSpanBoundaries(t *testing.T) { + for _, tc := range []struct { + name string + durations []float64 + lower, upper, counts []any + }{ + {"unusual", []float64{-5, math.NaN(), math.Inf(1), 8}, []any{float64(0), float64(8), float64(1 << 32)}, []any{float64(1), float64(16), nil}, []any{float64(1), float64(1), float64(1)}}, + {"boundaries", []float64{0, (1 << 32) - 1, 1 << 32}, []any{float64(0), float64(1 << 31), float64(1 << 32)}, []any{float64(1), float64(1 << 32), nil}, []any{float64(1), float64(1), float64(1)}}, + } { + t.Run(tc.name, func(t *testing.T) { + engine, repo := newTestEngine(t) + var spans []telemetry.Span + for i, duration := range tc.durations { + at := fixtureStart.Add(time.Duration(i) * time.Second).UnixNano() + spans = append(spans, telemetry.Span{TraceID: fmt.Sprint(i), SpanID: "s", ServiceName: "checkout", StartUnixNanos: at, EndUnixNanos: at + 1000, IngestedAt: at, DurationMS: duration}) + } + commit(t, repo, spans, nil) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Hist", Panels: []Panel{{ID: "h", Title: "H", Viz: "histogram", Query: &Query{From: "spans", Measures: []string{"count()"}, Histogram: &Histogram{Field: "duration_ms", Buckets: "log2"}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != "ok" || got[0].Frame == nil { + t.Fatalf("span histogram: %+v %v", got, err) + } + f := got[0].Frame + if f.Rows != len(tc.counts) || !slices.Equal(f.Values[0], tc.lower) || !slices.Equal(f.Values[1], tc.upper) || !slices.Equal(f.Values[2], tc.counts) { + t.Fatalf("buckets: %+v", f) + } + if f.Columns[0].Unit != "ms" || f.Columns[1].Unit != "ms" || f.Columns[2].Unit != "count" { + t.Fatalf("units: %+v", f.Columns) + } + }) + } +} + +func TestM2DistributionSpanOther(t *testing.T) { + engine, repo := newTestEngine(t) + var spans []telemetry.Span + for i, service := range []string{"a", "a", "a", "b", "b", "c"} { + at := fixtureStart.Add(time.Duration(i) * time.Second).UnixNano() + spans = append(spans, telemetry.Span{TraceID: fmt.Sprint(i), SpanID: "s", ServiceName: service, StartUnixNanos: at, EndUnixNanos: at + 1000, IngestedAt: at, DurationMS: 8}) + } + commit(t, repo, spans, nil) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Hist", Panels: []Panel{{ID: "h", Title: "H", Viz: "histogram", Options: &Options{Top: 1}, Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service"}, Histogram: &Histogram{Field: "duration_ms", Buckets: "log2"}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != "ok" || got[0].Frame == nil { + t.Fatalf("split histogram: %+v %v", got, err) + } + f := got[0].Frame + if f.Rows != 2 || f.Columns[0].Name != "service" || !slices.Equal(f.Values[0], []any{"Other (2)", "a"}) || !slices.Equal(f.Values[3], []any{float64(3), float64(3)}) { + t.Fatalf("folded histogram: %+v", f) + } +} + +func TestM2DistributionSchemaDescriptions(t *testing.T) { + for _, tc := range []struct{ field, phrase string }{ + {"Field", "NaN is excluded"}, + {"Temporality", "last minus first"}, + {"Temporality", "counter resets mid-window contributes 0"}, + } { + field, ok := reflect.TypeFor[Histogram]().FieldByName(tc.field) + if !ok || !strings.Contains(field.Tag.Get("jsonschema"), tc.phrase) { + t.Errorf("%s description must include %q", tc.field, tc.phrase) + } + } +} + +func TestM2MetricHistogramHeatmap(t *testing.T) { + engine, repo := newTestEngine(t) + var metrics []telemetry.Metric + for i, counts := range []string{"[10,20]", "[12,24]", "[15,30]", "[18,36]"} { + minute := []int{0, 1, 5, 6}[i] + n := fixtureStart.Add(time.Duration(minute) * time.Minute).UnixNano() + metrics = append(metrics, telemetry.Metric{ServiceName: "checkout", Name: "latency", Type: "histogram", EventUnixNanos: n, IngestedAt: n, HistBoundsJSON: "[10]", HistCountsJSON: counts}) + } + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: "heat-scrapes", Metrics: metrics}); err != nil { + t.Fatal(err) + } + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Heat", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "h", Title: "H", Viz: "heatmap", Unit: "ms", Query: &Query{From: "metrics", Measures: []string{"count()"}, Bucket: "5m", Histogram: &Histogram{Field: "value", Buckets: "explicit"}}}}} + for _, temporality := range []string{"", "delta"} { + d.Panels[0].Query.Histogram.Temporality = temporality + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != "ok" { + t.Fatalf("heat: %+v %v", got, err) + } + f := got[0].Frame + want := []any{float64(2), float64(4), float64(3), float64(6)} + if temporality == "delta" { + want = []any{float64(22), float64(44), float64(33), float64(66)} + } + if f.Rows != 4 || !slices.Equal(f.Values[3], want) || f.Values[0][0] != fixtureStart.UnixMilli() || f.Values[0][2] != fixtureStart.Add(5*time.Minute).UnixMilli() { + t.Fatalf("%q frame: %+v", temporality, f) + } + if f.Columns[1].Unit != "ms" || f.Columns[3].Unit != "count" || f.Values[1][0] != nil || f.Values[2][1] != nil { + t.Fatalf("bounds/units: %+v", f) + } + } + // A transfer cap must retain the newest complete bucket, dropping the + // partially transferred older bucket before rendering. + d.Panels[0].Query.Limit = 3 + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != "ok" { + t.Fatalf("limited heat: %+v %v", got, err) + } + f := got[0].Frame + if !f.Truncated || f.Rows != 2 || f.Values[0][0] != fixtureStart.Add(5*time.Minute).UnixMilli() { + t.Fatalf("clipped heat: %+v", f) + } +} + +func TestM2MetricHistogramSeriesIdentity(t *testing.T) { + engine, repo := newTestEngine(t) + base := telemetry.Metric{Namespace: "shop", ServiceName: "checkout", Name: "latency", Type: "histogram", Unit: "ms", HistBoundsJSON: "[10]"} + series := []telemetry.Metric{base, base, base, base, base, base, base, base} + series[1].Namespace = "other" + series[2].ServiceName = "other" + series[3].Name = "other" + series[4].Unit = "s" + series[5].ScopeName = "other" + series[6].Attributes = map[string]any{"identity": int64(1)} + series[7].Resource = map[string]any{"identity": true} + var metrics []telemetry.Metric + for _, metric := range series { + for scrape, counts := range []string{"[10,20]", "[11,22]"} { + m := metric + n := fixtureStart.Add(time.Duration(scrape) * time.Minute).UnixNano() + m.EventUnixNanos, m.IngestedAt, m.HistCountsJSON = n, n, counts + metrics = append(metrics, m) + } + } + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: "identity", Metrics: metrics}); err != nil { + t.Fatal(err) + } + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Hist", Panels: []Panel{{ID: "h", Title: "H", Viz: "histogram", Query: &Query{From: "metrics", Measures: []string{"count()"}, Histogram: &Histogram{Field: "value", Buckets: "explicit"}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != "ok" { + t.Fatalf("identity: %+v %v", got, err) + } + f := got[0].Frame + if f.Rows != 2 || !slices.Equal(f.Values[2], []any{float64(8), float64(16)}) { + t.Fatalf("series merged: %+v", f) + } +} + +func TestM2DistributionTemporalityValidation(t *testing.T) { + for _, tc := range []struct{ from, field, buckets, temporality string }{ + {"spans", "duration_ms", "log2", "delta"}, + {"spans", "duration_ms", "log2", "cumulative"}, + {"metrics", "value", "explicit", "unknown"}, + } { + d := Dashboard{Name: "Rule", Panels: []Panel{{ID: "h", Title: "H", Viz: "histogram", Query: &Query{From: tc.from, Measures: []string{"count()"}, Histogram: &Histogram{Field: tc.field, Buckets: tc.buckets, Temporality: tc.temporality}}}}} + Normalize(&d) + want := Problem{Path: "panels[0].query.histogram.temporality", Message: "temporality applies to metric histograms and must be cumulative or delta", Hint: "omit for the OTel cumulative default"} + if got := Validate(&d); !slices.Contains(got, want) { + t.Fatalf("got %+v want %+v", got, want) + } + } +} + +func TestM2DistributionTimePointBound(t *testing.T) { + f := newFrame([]Column{{Name: "time", Type: "time", Role: "time"}, {Name: "count", Type: "number", Role: "measure"}}) + for i := maxSeriesPoints; i >= 0; i-- { + for b := range 2 { + f.Values[0] = append(f.Values[0], int64(i)) + f.Values[1] = append(f.Values[1], float64(2*i+b)) + f.Rows++ + } + } + boundAnalysisFrame(f) + if !f.Truncated || f.Rows != 2*maxSeriesPoints || f.Values[0][0] != int64(1) || f.Values[0][f.Rows-1] != int64(maxSeriesPoints) { + t.Fatalf("time cap: rows=%d truncated=%v", f.Rows, f.Truncated) + } + for i, count := range f.Values[1] { + if count != float64(i+2) { + t.Fatalf("column alignment at %d: %v", i, count) + } + } +} diff --git a/internal/panel/drill_logs_test.go b/internal/panel/drill_logs_test.go new file mode 100644 index 00000000..baf114e3 --- /dev/null +++ b/internal/panel/drill_logs_test.go @@ -0,0 +1,81 @@ +package panel + +import ( + "errors" + "slices" + "testing" + "time" + + "github.com/labstack/fanout/internal/telemetry" +) + +func TestM2DrillLogsKeepCheckedSelection(t *testing.T) { + engine, repo := newTestEngine(t) + at := fixtureStart.UnixNano() + commit(t, repo, nil, []telemetry.Log{{ServiceName: "checkout", Severity: "ERROR", Body: "failed", TimeUnixNanos: at, EventUnixNanos: at, IngestedAt: at}, {ServiceName: "frontend", Severity: "INFO", Body: "ok", TimeUnixNanos: at, EventUnixNanos: at, IngestedAt: at}}) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Logs", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "levels", Title: "Levels", Viz: "bar", Query: &Query{From: "logs", Where: []string{"service = 'checkout'"}, Measures: []string{"count()"}, By: []string{"severity"}}}}} + req := ExemplarRequest{Dashboard: d, PanelID: "levels", Kind: "logs", From: fixtureStart, To: fixtureStart.Add(time.Minute), Dimensions: map[string]string{"severity": "ERROR"}} + got, err := e.Exemplars(t.Context(), req) + if err != nil { + t.Fatal(err) + } + if got.Logs == nil || got.Logs.Rows != 1 || got.Logs.Values[2][0] != "checkout" { + t.Fatalf("logs: %+v", got) + } + req.Dimensions = map[string]string{"severity": "INFO"} + got, err = e.Exemplars(t.Context(), req) + if err != nil || got.Logs.Rows != 0 { + t.Fatalf("guard escaped: %+v %v", got, err) + } +} + +func TestM2ExemplarKindValidation(t *testing.T) { + e := newFixtureExecutor(t) + req := ExemplarRequest{Dashboard: shopDashboard(), PanelID: "by_route", Kind: "other", From: fixtureStart, To: fixtureStart.Add(time.Minute)} + _, err := e.Exemplars(t.Context(), req) + var got Problems + want := Problem{Path: "kind", Message: "kind must be traces or logs", Hint: "choose traces or logs"} + if !errors.As(err, &got) || !slices.Contains(got, want) { + t.Fatalf("got %v want %+v", err, want) + } +} +func TestM2ExemplarCapturedWindowDoesNotMove(t *testing.T) { + e := newFixtureExecutor(t) + from, to := fixtureStart, fixtureStart.Add(time.Hour) + d := shopDashboard() + d.Panels[2].Time = &PanelTime{Shift: "1h"} + req := ExemplarRequest{Dashboard: d, PanelID: "by_route", Time: &Time{From: &from, To: &to, Refresh: "off"}, From: from, To: to} + e.now = func() time.Time { return fixtureStart.Add(10 * time.Hour) } + got, err := e.Exemplars(t.Context(), req) + if err != nil || len(got.Traces) != 20 { + t.Fatalf("request clock or double shift changed selection: %+v %v", got, err) + } +} + +func TestM2DrillLogsCapAndSource(t *testing.T) { + engine, repo := newTestEngine(t) + logs := make([]telemetry.Log, 201) + for i := range logs { + at := fixtureStart.Add(time.Duration(i) * time.Millisecond).UnixNano() + logs[i] = telemetry.Log{ServiceName: "checkout", Severity: "ERROR", Body: "failed", TimeUnixNanos: at, EventUnixNanos: at, IngestedAt: at} + } + commit(t, repo, nil, logs) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Logs", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "levels", Title: "Levels", Viz: "bar", Query: &Query{From: "logs", Measures: []string{"count()"}, By: []string{"severity"}}}}} + req := ExemplarRequest{Dashboard: d, PanelID: "levels", Kind: "logs", From: fixtureStart, To: fixtureStart.Add(time.Minute), Dimensions: map[string]string{"severity": "ERROR"}} + got, err := e.Exemplars(t.Context(), req) + if err != nil || got.Logs == nil || got.Logs.Rows != 200 || !got.Logs.Truncated || len(got.Traces) != 0 { + t.Fatalf("cap: %+v %v", got, err) + } + req.Dashboard.Panels[0].Query.From = "spans" + req.Dashboard.Panels[0].Query.By = []string{"service"} + req.Dimensions = nil + _, err = e.Exemplars(t.Context(), req) + var problems Problems + if !errors.As(err, &problems) || !slices.Contains(problems, Problem{Path: "kind", Message: "log selections need a logs-source panel"}) { + t.Fatalf("source accepted: %v", err) + } +} diff --git a/internal/panel/exec.go b/internal/panel/exec.go index dfc40d90..d0258cb1 100644 --- a/internal/panel/exec.go +++ b/internal/panel/exec.go @@ -39,16 +39,20 @@ type RunRequest struct { } type Result struct { - ID string `json:"id"` - Status string `json:"status"` - Frame *Frame `json:"frame,omitempty"` - Previous *Frame `json:"previous,omitempty"` - Error string `json:"error,omitempty"` - Diagnosis string `json:"diagnosis,omitempty"` - SQL string `json:"sql,omitempty"` - Interval string `json:"interval,omitempty"` - ElapsedMS int64 `json:"elapsed_ms"` - Better string `json:"better,omitempty"` + AnnotationScope *AnnotationMatch `json:"annotation_scope,omitempty"` + AnnotationError string `json:"annotation_error,omitempty"` + ID string `json:"id"` + Status string `json:"status"` + Frame *Frame `json:"frame,omitempty"` + Previous *Frame `json:"previous,omitempty"` + Error string `json:"error,omitempty"` + Diagnosis string `json:"diagnosis,omitempty"` + SQL string `json:"sql,omitempty"` + Interval string `json:"interval,omitempty"` + ElapsedMS int64 `json:"elapsed_ms"` + FromMS int64 `json:"from_ms"` + ToMS int64 `json:"to_ms"` + Better string `json:"better,omitempty"` // ShiftMS is how far Previous sits behind Frame, so a client can overlay it // without guessing from the first populated bucket. ShiftMS int64 `json:"shift_ms,omitempty"` @@ -56,6 +60,7 @@ type Result struct { type Executor struct { engine Engine + rollups RollupReader maxWindow time.Duration now func() time.Time timeout time.Duration @@ -123,6 +128,7 @@ func (e *Executor) check(ctx context.Context, d *Dashboard) (*Checked, error) { // failure in its own result, so one broken panel cannot blank a dashboard. func (e *Executor) Run(ctx context.Context, req RunRequest) ([]Result, error) { caller := ctx + now := e.now() d := req.Dashboard Normalize(&d) if len(req.Panels) > len(d.Panels) { @@ -178,7 +184,7 @@ func (e *Executor) Run(ctx context.Context, req RunRequest) ([]Result, error) { return nil, problems } } - start, end, err := resolveWindow(t, nil, e.now(), e.maxWindow) + start, end, err := resolveWindow(t, nil, now, e.maxWindow) if err != nil { return nil, Problems{{Path: "time", Message: err.Error()}} } @@ -197,7 +203,7 @@ func (e *Executor) Run(ctx context.Context, req RunRequest) ([]Result, error) { if ctx.Err() != nil { return nil } - result := e.runPanel(ctx, p, checked, t, vars, req.Widths[p.ID], compare) + result := e.runPanel(ctx, p, checked, t, now, vars, req.Widths[p.ID], compare) if ctx.Err() == context.DeadlineExceeded { result = Result{ID: p.ID, Status: StatusError, Error: BatchDeadlineError, ElapsedMS: result.ElapsedMS} } @@ -251,15 +257,66 @@ func limitBatchFrames(results []Result) { for j := range f.Values { f.Values[j] = f.Values[j][start : start+rows] } + for name, series := range f.Trends { + f.Trends[name] = series[start : start+rows] + } f.Rows = rows f.Truncated = true } remaining -= rows * len(f.Columns) + // Pattern trends are JSON arrays in a fixed row projection. Count + // their points just like structured table trends, not as one cell. + if f.Trend != nil { + for column, c := range f.Columns { + if c.Name != "trend" || c.Type != "json" { + continue + } + for row, value := range f.Values[column] { + var points []float64 + text, ok := value.(string) + if !ok || json.Unmarshal([]byte(text), &points) != nil { + continue + } + if len(points) > remaining { + f.Values[column][row] = "[]" + f.Truncated = true + f.addNote("Some pattern trends were omitted to stay within the response budget.") + continue + } + remaining -= len(points) + } + } + } + if f.Health != nil { + points := min(len(f.Health.ErrorTrend), remaining) + if points < len(f.Health.ErrorTrend) { + f.Health.ErrorTrend = f.Health.ErrorTrend[len(f.Health.ErrorTrend)-points:] + f.Truncated = true + f.addNote("Health error trend was truncated to stay within the response budget.") + } + remaining -= points + } + names := make([]string, 0, len(f.Trends)) + for name := range f.Trends { + names = append(names, name) + } + slices.Sort(names) + for _, name := range names { + for row, series := range f.Trends[name] { + if len(series) > remaining { + f.Trends[name][row] = nil + f.Truncated = true + f.addNote("Some row trends were omitted to stay within the response budget.") + continue + } + remaining -= len(series) + } + } } } } -func (e *Executor) runPanel(ctx context.Context, p *Panel, checked *Checked, t Time, vars map[string]Value, width int, compare bool) (res Result) { +func (e *Executor) runPanel(ctx context.Context, p *Panel, checked *Checked, t Time, now time.Time, vars map[string]Value, width int, compare bool) (res Result) { parent := ctx started := time.Now() res = Result{ID: p.ID, Status: StatusOK} @@ -270,10 +327,11 @@ func (e *Executor) runPanel(ctx context.Context, p *Panel, checked *Checked, t T if p.Viz == "text" { return res } - start, end, err := resolveWindow(t, p.Time, e.now(), e.maxWindow) + start, end, err := resolveWindow(t, p.Time, now, e.maxWindow) if err != nil { return failed(res, err, parent.Err() == nil) } + res.FromMS, res.ToMS = start.UnixMilli(), end.UnixMilli() ctx, cancel := context.WithTimeout(ctx, e.timeout) defer cancel() reduces := vizSpecs[p.Viz].reduces @@ -281,6 +339,8 @@ func (e *Executor) runPanel(ctx context.Context, p *Panel, checked *Checked, t T switch { case reduces: interval = AutoInterval(end.Sub(start), 240) + case p.Query != nil && p.Query.Bucket == "auto" && (p.Viz == "heatmap" || p.Viz == "state_timeline"): + interval = autoCellInterval(end.Sub(start), width) case p.Query != nil: interval = bucketInterval(p.Query.Bucket, end.Sub(start), width) default: @@ -293,9 +353,21 @@ func (e *Executor) runPanel(ctx context.Context, p *Panel, checked *Checked, t T return failed(res, err, parent.Err() == nil) } res.Frame, res.SQL = frame, sqlText + // Trend failures are recorded on the frame and preserve the main table. + _ = e.attachTableTrends(ctx, p, checked, scope, frame) + if p.Query != nil && (p.Viz == "timeseries" || p.Viz == "heatmap" || p.Viz == "state_timeline") { + res.AnnotationScope, err = e.annotationScope(ctx, p, checked.AnnotationFilters[p.ID], scope) + if err != nil { + res.AnnotationError = "Annotation scope is unavailable." + } + } + if interval > 0 && (reduces || p.Query == nil || p.Query.Bucket != "") { res.Interval = formatInterval(interval) } + if frame.Trend != nil { + res.Interval = formatInterval(time.Duration(frame.Trend.StepMS) * time.Millisecond) + } if (p.Viz == "stat" || p.Viz == "gauge") && p.Query != nil { totals, err := e.totals(ctx, p, checked, scope, frame) if err != nil { @@ -344,6 +416,13 @@ func (e *Executor) totals(ctx context.Context, p *Panel, checked *Checked, scope func (e *Executor) runScope(ctx context.Context, p *Panel, checked *Checked, scope Scope) (*Frame, string, error) { ctx = queryrows.WithWindow(ctx, queryrows.Window{Start: scope.Start, End: scope.End}) + if p.Options != nil && p.Options.Split == "deploy" { + return e.runDeploySplit(ctx, p, checked, scope) + } + + if p.Viz == "health" || p.Viz == "service_map" { + return e.runRollupPanel(ctx, p, checked.Filters[p.ID], scope) + } if p.Query != nil { compiled, err := compileQuery(p, checked.Measures[p.ID], checked.Filters[p.ID], scope) if err != nil { @@ -357,9 +436,27 @@ func (e *Executor) runScope(ctx context.Context, p *Panel, checked *Checked, sco if scope.Interval > 0 { rowLimit = 0 // Buckets are already bounded by interval and top-N. } + if p.Viz == "heatmap" || p.Viz == "histogram" || p.Viz == "scatter" || p.Viz == "state_timeline" { + rowLimit = distributionRows(p, len(compiled.Columns)) + if p.Viz == "scatter" { + rowLimit = min(rowLimit, 1000) + } + } + if p.Viz == "logs" || p.Viz == "traces" { + rowLimit = rowLimitForPanel(p) + } + if p.Viz == "log_patterns" { + rowLimit = patternLimit(p) + } frame, err := scanFrame(rows, compiled.Columns, rowLimit) if frame != nil { - frame.bucketed = scope.Interval > 0 + frame.bucketed = scope.Interval > 0 && len(compiled.Columns) > 0 && compiled.Columns[0].Role == "time" + if compiled.TrendInterval > 0 { + frame.Trend = &Trend{StartMS: compiled.TrendStart.UnixMilli(), StepMS: compiled.TrendInterval.Milliseconds()} + } + } + if err == nil && (p.Viz == "heatmap" || p.Viz == "state_timeline") { + boundAnalysisFrame(frame) } return frame, compiled.SQL, err } diff --git a/internal/panel/exec_test.go b/internal/panel/exec_test.go index b33abbac..787a4d34 100644 --- a/internal/panel/exec_test.go +++ b/internal/panel/exec_test.go @@ -2,12 +2,50 @@ package panel import ( "context" + "encoding/json" "errors" "strings" + "sync/atomic" "testing" "time" ) +func TestRunResolvesOneInstantForAllPanelWindows(t *testing.T) { + e := newFixtureExecutor(t) + var calls atomic.Int64 + e.now = func() time.Time { + return fixtureStart.Add(time.Hour).Add(time.Duration(calls.Add(1)-1) * 27 * time.Millisecond) + } + d := Dashboard{Name: "Shared window", Time: Time{Range: "1h"}, Panels: []Panel{ + {ID: "current", Title: "Current", Viz: "timeseries", Query: &Query{From: "spans", Measures: []string{"count()"}, Bucket: "5m"}}, + {ID: "other", Title: "Other", Viz: "timeseries", Query: &Query{From: "spans", Measures: []string{"count()"}, Bucket: "5m"}}, + {ID: "prior", Title: "Prior", Viz: "timeseries", Time: &PanelTime{Shift: "1d"}, Query: &Query{From: "spans", Measures: []string{"count()"}, Bucket: "5m"}}, + }} + results, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + got := byID(results) + for _, r := range results { + if r.Status == StatusError { + t.Fatalf("panel failed: %+v", r) + } + } + current, other, prior := got["current"], got["other"], got["prior"] + if current.FromMS != other.FromMS || current.ToMS != other.ToMS { + t.Errorf("unshifted windows differ: current=%+v other=%+v", current, other) + } + if current.FromMS-prior.FromMS != 86400000 || current.ToMS-prior.ToMS != 86400000 { + t.Errorf("1d shift differs from 86400000ms: current=%+v prior=%+v", current, prior) + } + if current.FromMS != fixtureStart.UnixMilli() || current.ToMS != fixtureStart.Add(time.Hour).UnixMilli() { + t.Errorf("batch instant drifted: %+v", current) + } + if calls.Load() != 1 { + t.Errorf("clock called %d times, want one batch instant", calls.Load()) + } +} + func newFixtureExecutor(t *testing.T) *Executor { t.Helper() d, repo := newTestEngine(t) @@ -232,3 +270,21 @@ func TestRunWarmCacheCancelledContextIsError(t *testing.T) { t.Fatalf("err = %v", err) } } + +func TestFinalFixEmptyVariableOptionsWire(t *testing.T) { + engine, _ := newTestEngine(t) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := shopDashboard() + options, err := e.ResolveVariables(t.Context(), ResolveRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + raw, err := json.Marshal(options) + if err != nil { + t.Fatal(err) + } + if string(raw) != `{"route":[],"service":[]}` { + t.Fatalf("empty wire options: %s", raw) + } +} diff --git a/internal/panel/exemplars.go b/internal/panel/exemplars.go new file mode 100644 index 00000000..68aa3378 --- /dev/null +++ b/internal/panel/exemplars.go @@ -0,0 +1,271 @@ +package panel + +import ( + "context" + "fmt" + "math" + "slices" + "sort" + "strings" + "time" + + "github.com/labstack/fanout/internal/queryrows" +) + +type SelectionBucket struct { + Lower float64 `json:"lower"` + Upper *float64 `json:"upper,omitempty"` +} +type ExemplarRequest struct { + Dashboard Dashboard `json:"dashboard"` + PanelID string `json:"panel_id"` + Kind string `json:"kind,omitempty"` + Time *Time `json:"time,omitempty"` + From time.Time `json:"from"` + To time.Time `json:"to"` + Dimensions map[string]string `json:"dimensions,omitempty"` + Bucket *SelectionBucket `json:"bucket,omitempty"` + Vars map[string]Value `json:"vars,omitempty"` +} +type Exemplar struct { + TraceID string `json:"trace_id"` + Namespace string `json:"namespace"` + Service string `json:"service"` + Operation string `json:"operation"` + DurationMS float64 `json:"duration_ms"` + Status string `json:"status"` + Start time.Time `json:"start"` +} +type ExemplarResponse struct { + Logs *Frame `json:"logs,omitempty"` + Traces []Exemplar `json:"traces"` + Truncated bool `json:"truncated,omitempty"` +} + +func selectionWhere(p *Panel, filters []Filter, scope Scope, dimensions map[string]string, bucket *SelectionBucket) (string, []any, error) { + sig, _ := lookupSignal(p.Query.From) + where, args, err := buildWhere(sig, filters, scope) + if err != nil { + return "", nil, err + } + if len(dimensions) > 3 { + return "", nil, Problems{{Path: "dimensions", Message: "at most 3 dimensions", Hint: "select at most three panel grouping fields"}} + } + names := make([]string, 0, len(dimensions)) + for name := range dimensions { + names = append(names, name) + } + sort.Strings(names) + for _, name := range names { + if (!slices.Contains(p.Query.By, name) && !((p.Viz == "health" || p.Viz == "service_map") && name == "service")) || len(dimensions[name]) > 500 { + return "", nil, Problems{{Path: "dimensions", Message: "dimensions must name query.by fields and values at most 500 characters", Hint: "select one of the panel grouping fields"}} + } + if (dimensions[name] == "Other" || strings.HasPrefix(dimensions[name], "Other (") && strings.HasSuffix(dimensions[name], ")")) && p.Viz == "timeseries" && len(p.Query.By) == 1 && p.Top() > 0 { + return "", nil, Problems{{Path: "dimensions", Message: "Other groups several values; pick a named series"}} + } + ref, err := sig.field(name) + if err != nil { + return "", nil, err + } + where += " AND coalesce(" + ref.stringSQL() + ",'')=?" + args = append(args, dimensions[name]) + } + if bucket != nil { + if p.Query.From != "spans" || p.Query.Histogram == nil || p.Query.Histogram.Field != "duration_ms" || math.IsNaN(bucket.Lower) || math.IsInf(bucket.Lower, 0) || bucket.Lower < 0 { + return "", nil, Problems{{Path: "bucket", Message: "bucket needs a spans duration_ms histogram and a finite nonnegative lower bound", Hint: "select a finite duration bucket"}} + } + where += " AND duration_ms>=?" + args = append(args, bucket.Lower) + if bucket.Upper != nil { + if math.IsNaN(*bucket.Upper) || math.IsInf(*bucket.Upper, 0) || *bucket.Upper <= bucket.Lower { + return "", nil, Problems{{Path: "bucket.upper", Message: "upper must be finite and greater than lower", Hint: "select a larger upper bound or omit it for overflow"}} + } + where += " AND duration_ms 0 { + return out, problems + } + } + override := p.Time + if req.Time != nil && req.Time.From != nil && req.Time.To != nil { + override = nil + } // The browser captured the effective window. + start, end, err := resolveWindow(t, override, now, e.maxWindow) + if err != nil { + return out, Problems{{Path: "time", Message: err.Error()}} + } + if req.From.IsZero() || req.To.IsZero() || !req.From.Before(req.To) { + return out, Problems{{Path: "from", Message: "selection needs a positive absolute range"}} + } + if !inTimestampNSRange(req.From) || !inTimestampNSRange(req.To) { + return out, Problems{{Path: "from", Message: "selection times must be within the TIMESTAMP_NS range (1677–2262)"}} + } + lo, hi := req.From.UTC(), req.To.UTC() + if lo.Before(start) { + lo = start + } + if hi.After(end) { + hi = end + } + if !lo.Before(hi) { + return out, outsideSelection() + } + vars, err := e.values(ctx, &d, checked, start, end, req.Vars) + if err != nil { + return out, err + } + where, args, err := selectionWhere(p, checked.Filters[p.ID], Scope{Start: lo, End: hi, Vars: vars}, req.Dimensions, req.Bucket) + if err != nil { + return out, err + } + if req.Kind == "logs" { + if p.Query.From != "logs" { + return out, Problems{{Path: "kind", Message: "log selections need a logs-source panel"}} + } + copyPanel := *p + copyQuery := *p.Query + copyQuery.Limit = 200 + copyQuery.Bucket = "" + copyQuery.Sort = "time" + copyPanel.Query = ©Query + copyPanel.Viz = "logs" + scope := Scope{Start: lo, End: hi, Vars: vars} + compiled, err := compileRowsWhere(©Panel, where, args, scope) + if err != nil { + return out, err + } + logCtx := queryrows.WithWindow(ctx, queryrows.Window{Start: lo, End: hi}) + rows, err := e.engine.QueryContext(logCtx, compiled.SQL, compiled.Args...) + if err != nil { + return out, fmt.Errorf("drill logs: %s", SafeError(err)) + } + out.Logs, err = scanFrame(rows, compiled.Columns, 200) + return out, err + } + + if p.Query.From == "logs" && p.Options != nil && p.Options.Highlight != "" { + where += " AND contains(lower(body),lower(?))" + args = append(args, p.Options.Highlight) + } + // Candidate membership is filtered; root metadata is selected within the full panel window. + candidateSource := structuredSource(p.Query.From) + text := checkedTraceSQL(candidateSource, where, 21, "duration_ms DESC,trace_id,namespace", "start_time::TIMESTAMP_NS") + args = append(args, start, end) + ctx = queryrows.WithWindow(ctx, queryrows.Window{Start: start, End: end}) + rows, err := e.engine.QueryContext(ctx, text, args...) + if err != nil { + return out, exemplarError(ctx, err) + } + defer rows.Close() + for rows.Next() { + var trace Exemplar + var capped bool + if err := rows.Scan(&trace.TraceID, &trace.Namespace, &trace.Service, &trace.Operation, &trace.DurationMS, &trace.Status, &trace.Start, &capped); err != nil { + return out, exemplarError(ctx, err) + } + out.Truncated = out.Truncated || capped + if trace.TraceID == "" { + continue + } // The cap summary survives an empty roots result. + trace.Start = trace.Start.UTC() + out.Traces = append(out.Traces, trace) + } + if err := rows.Err(); err != nil { + return out, exemplarError(ctx, err) + } + if len(out.Traces) > 20 { + out.Traces = out.Traces[:20] + out.Truncated = true + } + // A 21st root or a 1,001st candidate proves truncation; exactly 20 does not. + return out, nil +} +func traceRootsSQL() string { + return `SELECT s.trace_id,s.namespace,s.service,s.operation,s.duration_ms,CASE WHEN max(CASE WHEN s.status IN ('STATUS_CODE_ERROR','ERROR') THEN 1 ELSE 0 END) OVER(PARTITION BY s.namespace,s.trace_id)>0 THEN 'STATUS_CODE_ERROR' ELSE coalesce(s.status,'') END AS status,s.start_time,row_number() OVER(PARTITION BY s.namespace,s.trace_id ORDER BY (coalesce(s.parent_span_id,'')='') DESC,s.start_time,s.span_id) AS n +FROM spans s JOIN candidates c ON s.namespace=c.namespace AND s.trace_id=c.trace_id +WHERE s.start_time>=?::TIMESTAMP_NS::TIMESTAMPTZ_NS AND s.start_time'' GROUP BY namespace,trace_id ORDER BY candidate_rank LIMIT 1001), +candidates AS (SELECT namespace,trace_id FROM candidate_probe WHERE candidate_rank<=1000), roots AS (%s) +SELECT coalesce(trace_id,''),coalesce(namespace,''),coalesce(service,''),coalesce(operation,''),coalesce(duration_ms,0),coalesce(status,''),coalesce(start_time,TIMESTAMP_NS '1970-01-01'),capped +FROM (SELECT count(*)>1000 AS capped FROM candidate_probe) cap LEFT JOIN +(SELECT trace_id,namespace,service,operation,duration_ms,status,%s AS start_time FROM roots WHERE n=1 ORDER BY %s LIMIT %d) selected ON TRUE +ORDER BY %s`, candidateOrder, source, where, traceRootsSQL(), startProjection, order, limit, order) +} + +// Bound matching trace candidates before the root window functions. Like +// exemplars, ranking is approximate when filters exclude the root span. +func checkedTraceRowsSQL(where string, limit int, order string) string { + limit = min(limit, 1001) + candidateOrder := "max(duration_ms) DESC,namespace,trace_id" + if strings.HasPrefix(order, "start_time ASC") { + candidateOrder = "min(start_time) ASC,namespace,trace_id" + } + return fmt.Sprintf(`WITH candidates AS (SELECT namespace,trace_id FROM spans WHERE %s AND trace_id<>'' GROUP BY namespace,trace_id ORDER BY %s LIMIT %d), roots AS (%s) +SELECT coalesce(trace_id,''),coalesce(namespace,''),coalesce(service,''),coalesce(operation,''),coalesce(duration_ms,0),coalesce(status,''),epoch_ms(start_time::TIMESTAMP_NS)::BIGINT AS start +FROM roots WHERE n=1 ORDER BY %s LIMIT %d`, where, candidateOrder, limit, traceRootsSQL(), order, limit) +} + +// The safe message preserves errors.Is without exposing paths in Error(). +type exemplarReadError struct { + message string + cause error +} + +func (e exemplarReadError) Error() string { return e.message } +func (e exemplarReadError) Unwrap() error { return e.cause } +func exemplarError(ctx context.Context, err error) error { + if ctx.Err() != nil { + return ctx.Err() + } + if isOperational(err) { + return err + } + return fmt.Errorf("exemplars: %w", exemplarReadError{message: SafeError(err), cause: err}) +} +func outsideSelection() error { + return Problems{{Path: "from", Message: "selection does not overlap the panel window"}} +} diff --git a/internal/panel/exemplars_fix_test.go b/internal/panel/exemplars_fix_test.go new file mode 100644 index 00000000..9eaaae43 --- /dev/null +++ b/internal/panel/exemplars_fix_test.go @@ -0,0 +1,311 @@ +package panel + +import ( + "context" + "errors" + "fmt" + "slices" + "strings" + "testing" + "time" + + "github.com/labstack/fanout/internal/query" + "github.com/labstack/fanout/internal/queryrows" + "github.com/labstack/fanout/internal/telemetry" +) + +type exemplarProbeEngine struct { + Engine + query func(context.Context, string, ...any) (queryrows.Rows, error) +} + +func (e exemplarProbeEngine) QueryContext(ctx context.Context, text string, args ...any) (queryrows.Rows, error) { + return e.query(ctx, text, args...) +} + +func exemplarDashboard(from string) Dashboard { + return Dashboard{Name: "Selection", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "p", Title: "P", Viz: "bar", Query: &Query{From: from, Measures: []string{"count()"}, By: []string{"service"}}}}} +} + +func exemplarRequest(d Dashboard) ExemplarRequest { + return ExemplarRequest{Dashboard: d, PanelID: "p", From: fixtureStart, To: fixtureStart.Add(time.Hour)} +} + +func TestM2FixExemplarDeadlineAndCancel(t *testing.T) { + for _, canceled := range []bool{false, true} { + t.Run(fmt.Sprint(canceled), func(t *testing.T) { + engine, _ := newTestEngine(t) + ctx, cancel := context.WithCancel(t.Context()) + defer cancel() + probe := exemplarProbeEngine{Engine: engine, query: func(ctx context.Context, _ string, _ ...any) (queryrows.Rows, error) { + if canceled { + cancel() + } + <-ctx.Done() + // Native engines may return an interrupt rather than ctx.Err(). + return nil, errors.New("engine interrupted") + }} + e := NewExecutor(probe, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + e.timeout = 20 * time.Millisecond + _, err := e.Exemplars(ctx, exemplarRequest(exemplarDashboard("spans"))) + want := context.DeadlineExceeded + if canceled { + want = context.Canceled + } + if !errors.Is(err, want) { + t.Fatalf("got %v, want %v", err, want) + } + }) + } +} + +func TestM2FixExemplarSafeErrors(t *testing.T) { + engine, _ := newTestEngine(t) + failure := fmt.Errorf("read '/private/telemetry/batch/logs.parquet': %w", query.ErrParquetReadWait) + probe := exemplarProbeEngine{Engine: engine, query: func(context.Context, string, ...any) (queryrows.Rows, error) { return nil, failure }} + e := NewExecutor(probe, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + _, err := e.Exemplars(t.Context(), exemplarRequest(exemplarDashboard("spans"))) + if !errors.Is(err, query.ErrParquetReadWait) || strings.Contains(err.Error(), "/private/telemetry") || !strings.Contains(err.Error(), "") { + t.Fatalf("lost safe error chain: %v", err) + } +} + +func TestM2FixExemplarDimensionBindingAndProjection(t *testing.T) { + engine, _ := newTestEngine(t) + value := "x'); DROP TABLE spans; --" + called := false + probe := exemplarProbeEngine{Engine: engine, query: func(ctx context.Context, text string, args ...any) (queryrows.Rows, error) { + called = true + if strings.Contains(text, value) || strings.Contains(text, sqlString(value)) || !slices.Contains(args, any(value)) { + t.Fatalf("dimension not bound: %s %+v", text, args) + } + if strings.Contains(text, "s.*") { + t.Fatal("roots reads unused columns") + } + node, err := engine.ParseSQL(ctx, text) + if err != nil { + t.Fatal(err) + } + ctes := node["cte_map"].(map[string]any)["map"].([]any) + for _, entry := range ctes { + entry := entry.(map[string]any) + if entry["key"] == "roots" { + root := entry["value"].(map[string]any)["query_node"].(map[string]any) + if got := len(root["select_list"].([]any)); got != 8 { + t.Fatalf("roots selects %d columns, want 8", got) + } + } + } + return engine.QueryContext(ctx, text, args...) + }} + e := NewExecutor(probe, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + req := exemplarRequest(exemplarDashboard("spans")) + req.Dimensions = map[string]string{"service": value} + if _, err := e.Exemplars(t.Context(), req); err != nil { + t.Fatal(err) + } + if !called { + t.Fatal("no candidate query") + } +} + +type exemplarFailureRows struct { + queryrows.Rows + next func() bool + err error + scan func() error +} + +func (r *exemplarFailureRows) Close() error { return nil } +func (r *exemplarFailureRows) Next() bool { return r.next() } +func (r *exemplarFailureRows) Err() error { return r.err } +func (r *exemplarFailureRows) Scan(...any) error { return r.scan() } + +func TestM2FixExemplarRowFailures(t *testing.T) { + for _, phase := range []string{"rows", "scan"} { + for _, canceled := range []bool{false, true} { + t.Run(fmt.Sprintf("%s/%v", phase, canceled), func(t *testing.T) { + engine, _ := newTestEngine(t) + ctx, cancel := context.WithCancel(t.Context()) + defer cancel() + probe := exemplarProbeEngine{Engine: engine, query: func(ctx context.Context, _ string, _ ...any) (queryrows.Rows, error) { + wait := func() error { + if canceled { + cancel() + } + <-ctx.Done() + return errors.New("engine interrupted") + } + r := &exemplarFailureRows{} + if phase == "rows" { + r.next = func() bool { r.err = wait(); return false } + } else { + r.next = func() bool { return true } + r.scan = wait + } + return r, nil + }} + e := NewExecutor(probe, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + e.timeout = 20 * time.Millisecond + _, err := e.Exemplars(ctx, exemplarRequest(exemplarDashboard("spans"))) + want := context.DeadlineExceeded + if canceled { + want = context.Canceled + } + if !errors.Is(err, want) { + t.Fatalf("%v, want %v", err, want) + } + }) + } + } +} + +func TestM2FixExemplarProblems(t *testing.T) { + e := newFixtureExecutor(t) + for _, name := range []string{"missing", "sql", "metrics", "outside", "other", "dimensions", "early", "late", "selection_early"} { + t.Run(name, func(t *testing.T) { + req := exemplarRequest(exemplarDashboard("spans")) + path := "panel_id" + switch name { + case "missing": + req.PanelID = "" + case "sql": + req.Dashboard.Panels[0].Query = nil + req.Dashboard.Panels[0].Viz = "table" + req.Dashboard.Panels[0].SQL = "SELECT service FROM spans WHERE $__window(start_time)" + case "metrics": + req.Dashboard.Panels[0].Query.From = "metrics" + req.Dashboard.Panels[0].Query.Measures = []string{"sum(value)"} + case "outside": + req.From = fixtureStart.Add(-time.Hour) + req.To = fixtureStart + path = "from" + case "other": + req.Dashboard.Panels[0].Viz = "timeseries" + req.Dimensions = map[string]string{"service": "Other"} + path = "dimensions" + case "dimensions": + req.Dimensions = map[string]string{"a": "1", "b": "2", "c": "3", "d": "4"} + path = "dimensions" + case "early", "late": + year := 1600 + if name == "late" { + year = 2300 + } + start := time.Date(year, 1, 1, 0, 0, 0, 0, time.UTC) + end := start.Add(time.Hour) + req.Time = &Time{From: &start, To: &end} + req.From, req.To = start, end + path = "time" + case "selection_early": + req.From = time.Date(1600, 1, 1, 0, 0, 0, 0, time.UTC) + path = "from" + } + _, err := e.Exemplars(t.Context(), req) + var problems Problems + if !errors.As(err, &problems) || len(problems) == 0 || problems[0].Path != path { + t.Fatalf("got %v, want %s Problem", err, path) + } + if name == "other" && problems[0].Message != "Other groups several values; pick a named series" { + t.Fatal(problems) + } + if name == "dimensions" && problems[0].Hint == "" { + t.Fatal("missing hint") + } + }) + } +} + +func TestM2FixExemplarClipsMatchingSpan(t *testing.T) { + engine, repo := newTestEngine(t) + n := fixtureStart.UnixNano() + commit(t, repo, []telemetry.Span{ + {Namespace: "n", TraceID: "t", SpanID: "outside", ServiceName: "match", StartUnixNanos: n - int64(time.Minute), EndUnixNanos: n - int64(time.Minute) + 1000000, DurationMS: 1, IngestedAt: n}, + {Namespace: "n", TraceID: "t", SpanID: "inside", ServiceName: "other", StartUnixNanos: n, EndUnixNanos: n + 1000000, DurationMS: 1, IngestedAt: n}, + }, nil) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + req := exemplarRequest(exemplarDashboard("spans")) + req.Dimensions = map[string]string{"service": "match"} + // The selection starts before the panel window, so only the clip keeps + // the outside span out. + req.From = fixtureStart.Add(-2 * time.Minute) + got, err := e.Exemplars(t.Context(), req) + if err != nil || len(got.Traces) != 0 { + t.Fatalf("outside match escaped clip: %+v %v", got, err) + } +} + +func TestM2FixExemplarCandidateCapAndSlowest(t *testing.T) { + engine, repo := newTestEngine(t) + n := fixtureStart.UnixNano() + var spans []telemetry.Span + for i := range 1005 { + spans = append(spans, telemetry.Span{Namespace: "n", TraceID: fmt.Sprintf("t%04d", i), SpanID: "root", ServiceName: "s", StartUnixNanos: n, EndUnixNanos: n + int64(i+1)*1000000, DurationMS: float64(i + 1), IngestedAt: n}) + } + commit(t, repo, spans, nil) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + got, err := e.Exemplars(t.Context(), exemplarRequest(exemplarDashboard("spans"))) + if err != nil || len(got.Traces) != 20 || !got.Truncated || got.Traces[0].DurationMS != 1005 { + t.Fatalf("slowest: %+v %v", got, err) + } + p := Panel{Query: &Query{From: "spans"}} + where, args, _ := selectionWhere(&p, nil, Scope{Start: fixtureStart, End: fixtureStart.Add(time.Hour)}, nil, nil) + args = append(args, fixtureStart, fixtureStart.Add(time.Hour)) + rows, err := engine.QueryContext(t.Context(), checkedTraceSQL("spans", where, 2000, "duration_ms DESC,trace_id,namespace", "start_time::TIMESTAMP_NS"), args...) + if err != nil { + t.Fatal(err) + } + defer rows.Close() + count := 0 + for rows.Next() { + count++ + } + if err := rows.Err(); err != nil { + t.Fatal(err) + } + if count != 1000 { + t.Fatalf("candidate cap: got %d", count) + } +} + +func TestM2FixExemplarTruncation(t *testing.T) { + for _, count := range []int{20, 21} { + t.Run(fmt.Sprint(count), func(t *testing.T) { + engine, repo := newTestEngine(t) + n := fixtureStart.UnixNano() + var spans []telemetry.Span + for i := range count { + spans = append(spans, telemetry.Span{Namespace: "n", TraceID: fmt.Sprint(i), SpanID: "r", StartUnixNanos: n, EndUnixNanos: n + 1000000, DurationMS: 1, IngestedAt: n}) + } + commit(t, repo, spans, nil) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + got, err := e.Exemplars(t.Context(), exemplarRequest(exemplarDashboard("spans"))) + if err != nil || got.Truncated != (count > 20) { + t.Fatalf("count %d: %+v %v", count, got, err) + } + }) + } +} + +func TestM2FixExemplarLogCapWithoutRoots(t *testing.T) { + engine, repo := newTestEngine(t) + n := fixtureStart.UnixNano() + var logs []telemetry.Log + for i := range 1001 { + logs = append(logs, telemetry.Log{Namespace: "n", TraceID: fmt.Sprintf("t%04d", i), Body: "failed", EventUnixNanos: n, IngestedAt: n}) + } + commit(t, repo, nil, logs) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + got, err := e.Exemplars(t.Context(), exemplarRequest(exemplarDashboard("logs"))) + if err != nil || len(got.Traces) != 0 || !got.Truncated { + t.Fatalf("lost cap summary: %+v %v", got, err) + } +} diff --git a/internal/panel/exemplars_test.go b/internal/panel/exemplars_test.go new file mode 100644 index 00000000..c461b922 --- /dev/null +++ b/internal/panel/exemplars_test.go @@ -0,0 +1,94 @@ +package panel + +import ( + "errors" + "github.com/labstack/fanout/internal/telemetry" + "math" + "slices" + "testing" + "time" +) + +func TestM2ExemplarsCheckedScope(t *testing.T) { + e := newFixtureExecutor(t) + req := ExemplarRequest{Dashboard: shopDashboard(), PanelID: "by_route", From: fixtureStart.Add(30 * time.Minute), To: fixtureStart.Add(31 * time.Minute), Dimensions: map[string]string{"http_route": "/cart"}} + got, err := e.Exemplars(t.Context(), req) + if err != nil { + t.Fatal(err) + } + if len(got.Traces) != 1 || got.Traces[0].Service != "checkout" || got.Traces[0].DurationMS != 900 || got.Traces[0].Status != "STATUS_CODE_ERROR" { + t.Fatalf("traces: %+v", got) + } + req.Vars = map[string]Value{"service": {Values: []string{"frontend"}}} + got, err = e.Exemplars(t.Context(), req) + if err != nil || len(got.Traces) != 0 { + t.Fatalf("filter escaped: %+v %v", got, err) + } + req.From = fixtureStart.Add(-time.Hour) + req.To = fixtureStart.Add(2 * time.Hour) + req.Dimensions = nil + req.Vars = nil + got, err = e.Exemplars(t.Context(), req) + if err != nil || len(got.Traces) != 20 || !got.Truncated { + t.Fatalf("cap: %+v %v", got, err) + } +} +func TestM2ExemplarsRejectForgedDimensions(t *testing.T) { + e := newFixtureExecutor(t) + req := ExemplarRequest{Dashboard: shopDashboard(), PanelID: "by_route", From: fixtureStart, To: fixtureStart.Add(time.Hour), Dimensions: map[string]string{"service": "frontend"}} + _, err := e.Exemplars(t.Context(), req) + var problems Problems + want := Problem{Path: "dimensions", Message: "dimensions must name query.by fields and values at most 500 characters", Hint: "select one of the panel grouping fields"} + if !errors.As(err, &problems) || !slices.Contains(problems, want) { + t.Fatalf("got %v want %+v", err, want) + } + req.Dimensions = map[string]string{"http_route": "x'); DROP TABLE spans; --"} + got, err := e.Exemplars(t.Context(), req) + if err != nil || len(got.Traces) != 0 { + t.Fatalf("hostile value: %+v %v", got, err) + } + req.Dashboard.Panels[2].Query.Where = []string{"service IN (SELECT service FROM spans)"} + if _, err := e.Exemplars(t.Context(), req); err == nil { + t.Fatal("guard bypass") + } +} +func TestM2ExemplarBucketValidation(t *testing.T) { + p := &Panel{Query: &Query{From: "spans", Histogram: &Histogram{Field: "duration_ms", Buckets: "log2"}}} + scope := Scope{Start: fixtureStart, End: fixtureStart.Add(time.Hour)} + bad := math.NaN() + upper := 1.0 + cases := []struct { + bucket *SelectionBucket + want Problem + }{ + {&SelectionBucket{Lower: bad}, Problem{Path: "bucket", Message: "bucket needs a spans duration_ms histogram and a finite nonnegative lower bound", Hint: "select a finite duration bucket"}}, + {&SelectionBucket{Lower: 2, Upper: &upper}, Problem{Path: "bucket.upper", Message: "upper must be finite and greater than lower", Hint: "select a larger upper bound or omit it for overflow"}}, + } + for _, tc := range cases { + _, _, err := selectionWhere(p, nil, scope, nil, tc.bucket) + var got Problems + if !errors.As(err, &got) || !slices.Contains(got, tc.want) { + t.Fatalf("got %v want %+v", err, tc.want) + } + } +} +func TestM2ExemplarsLogsCandidateUsesRedactedBody(t *testing.T) { + engine, repo := newTestEngine(t) + n := fixtureStart.UnixNano() + spans := []telemetry.Span{{Namespace: "shop", ServiceName: "checkout", TraceID: "log-trace", SpanID: "root", Name: "root", DurationMS: 1, StartUnixNanos: n, EndUnixNanos: n + 1000000, IngestedAt: n}} + logs := []telemetry.Log{{Namespace: "shop", ServiceName: "checkout", TraceID: "log-trace", Body: "token=secret failed", BodyTemplate: "token=secret failed", EventUnixNanos: n, IngestedAt: n}} + commit(t, repo, spans, logs) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Log lineage", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "p", Title: "P", Viz: "bar", Query: &Query{From: "logs", Where: []string{"body LIKE '%failed%'"}, Measures: []string{"count()"}, By: []string{"severity"}}}}} + req := ExemplarRequest{Dashboard: d, PanelID: "p", From: fixtureStart, To: fixtureStart.Add(time.Minute)} + got, err := e.Exemplars(t.Context(), req) + if err != nil || len(got.Traces) != 1 || got.Traces[0].TraceID != "log-trace" { + t.Fatalf("logs candidate: %+v %v", got, err) + } + req.Dashboard.Panels[0].Query.Where = []string{"body LIKE '%secret%'"} + got, err = e.Exemplars(t.Context(), req) + if err != nil || len(got.Traces) != 0 { + t.Fatalf("searched unredacted source: %+v %v", got, err) + } +} diff --git a/internal/panel/final_fix_test.go b/internal/panel/final_fix_test.go index 58cf0f7e..e5da1020 100644 --- a/internal/panel/final_fix_test.go +++ b/internal/panel/final_fix_test.go @@ -128,7 +128,7 @@ func TestFinalFixSeriesRowCap(t *testing.T) { duck, repo := newTestEngine(t) spans := shopSpans() base := spans[0] - for i := range 3000 { + for i := range 4000 { sp := base sp.SpanID = fmt.Sprintf("extra%d", i) sp.TraceID = sp.SpanID diff --git a/internal/panel/frame.go b/internal/panel/frame.go index 51818327..610ca5e3 100644 --- a/internal/panel/frame.go +++ b/internal/panel/frame.go @@ -5,23 +5,36 @@ import ( "fmt" "math" "math/big" + "strings" "time" + "github.com/labstack/fanout/internal/observability" "github.com/labstack/fanout/internal/queryrows" ) // Frame is a columnar query result: one array of values per column. type Frame struct { - Columns []Column `json:"columns"` - Values [][]any `json:"values"` - Rows int `json:"rows"` - Totals []any `json:"totals,omitempty"` - Truncated bool `json:"truncated,omitempty"` + Periods map[string]Time `json:"periods,omitempty"` + Trends map[string][][]any `json:"trends,omitempty"` + Note string `json:"note,omitempty"` + Health *HealthFrame `json:"health,omitempty"` + Columns []Column `json:"columns"` + Values [][]any `json:"values"` + Rows int `json:"rows"` + Totals []any `json:"totals,omitempty"` + Truncated bool `json:"truncated,omitempty"` + Trend *Trend `json:"trend,omitempty"` // Only structured time buckets are exempt from the row cap. A SQL time // column is still subject to the SQL panel cap. bucketed bool } +// Trend locates each point in a row panel's dense trend array. +type Trend struct { + StartMS int64 `json:"start_ms"` + StepMS int64 `json:"step_ms"` +} + const ( maxFrameRows = 1000 sqlPanelRows = 1000 @@ -35,6 +48,16 @@ func newFrame(columns []Column) *Frame { return f } +func (f *Frame) addNote(note string) { + if strings.Contains(f.Note, note) { + return + } + if f.Note != "" { + f.Note += " " + } + f.Note += note +} + // scanFrame reads a compiled query whose column types are known. func scanFrame(rows queryrows.Rows, columns []Column, maxRows int) (*Frame, error) { defer rows.Close() @@ -224,3 +247,12 @@ func totalsOf(f *Frame) []any { } return out } + +type HealthFrame struct { + Health string `json:"health"` + Counts observability.HealthCounts `json:"counts"` + TotalSpans int64 `json:"total_spans"` + ErrorRate float64 `json:"error_rate"` + ServiceCount int `json:"service_count"` + ErrorTrend []float64 `json:"error_trend"` +} diff --git a/internal/panel/heat_density_test.go b/internal/panel/heat_density_test.go new file mode 100644 index 00000000..9e093ac6 --- /dev/null +++ b/internal/panel/heat_density_test.go @@ -0,0 +1,54 @@ +package panel + +import ( + "strings" + "testing" + "time" +) + +func TestH1WidthAwareCellBuckets(t *testing.T) { + e := newFixtureExecutor(t) + d := Dashboard{Name: "Density", Time: Time{Range: "24h"}, Panels: []Panel{ + {ID: "heat", Title: "Heat", Viz: "heatmap", Query: &Query{From: "spans", Measures: []string{"count()"}, Bucket: "auto", Histogram: &Histogram{Field: "duration_ms", Buckets: "log2"}}}, + {ID: "state", Title: "State", Viz: "state_timeline", Thresholds: []Threshold{{Value: 5, Status: "bad"}}, Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service"}, Bucket: "auto"}}, + {ID: "line", Title: "Line", Viz: "timeseries", Query: &Query{From: "spans", Measures: []string{"count()"}, Bucket: "auto"}}, + }} + fixed := d.Panels[0] + fixed.ID = "fixed" + q := *fixed.Query + q.Bucket = "5m" + fixed.Query = &q + d.Panels = append(d.Panels, fixed) + results, err := e.Run(t.Context(), RunRequest{Dashboard: d, Widths: map[string]int{"heat": 800, "state": 800, "line": 800, "fixed": 800}}) + if err != nil { + t.Fatal(err) + } + got := byID(results) + for _, id := range []string{"heat", "state"} { + r := got[id] + interval, err := time.ParseDuration(r.Interval) + if err != nil || r.Status != StatusOK || interval <= 0 { + t.Fatalf("%s: %+v / %v", id, r, err) + } + columns := 24*time.Hour/interval + 1 + if columns < 60 || columns > 90 { + t.Errorf("%s at 800px: %d columns, want 60–90 (%s)", id, columns, r.Interval) + } + if !strings.Contains(r.SQL, "INTERVAL '1200 seconds'") { + t.Errorf("%s did not execute 20m grouping: %s", id, r.SQL) + } + } + if got["line"].Interval != "10m" || got["fixed"].Interval != "5m" { + t.Errorf("line/fixed buckets changed: %s / %s", got["line"].Interval, got["fixed"].Interval) + } + for _, id := range []string{"heat", "state"} { + results, err = e.Run(t.Context(), RunRequest{Dashboard: d, Panels: []string{id}, Widths: map[string]int{id: 400}}) + if err != nil || results[0].Status != StatusOK { + t.Fatalf("narrow %s: %+v / %v", id, results, err) + } + interval, err := time.ParseDuration(results[0].Interval) + if err != nil || interval <= 20*time.Minute { + t.Errorf("narrow %s was not coarser: %s / %v", id, results[0].Interval, err) + } + } +} diff --git a/internal/panel/interaction_test.go b/internal/panel/interaction_test.go new file mode 100644 index 00000000..5628709c --- /dev/null +++ b/internal/panel/interaction_test.go @@ -0,0 +1,28 @@ +package panel + +import ( + "testing" + "time" +) + +func TestM2PanelTimeWindow(t *testing.T) { + e := newFixtureExecutor(t) + d := shopDashboard() + d.Panels = d.Panels[:1] + d.Panels[0].Time = &PanelTime{Range: "15m"} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + if got[0].FromMS != fixtureStart.Add(45*time.Minute).UnixMilli() || got[0].ToMS != fixtureStart.Add(time.Hour).UnixMilli() { + t.Fatalf("window: %+v", got[0]) + } + d.Panels[0].Time = &PanelTime{Shift: "1h"} + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + if got[0].FromMS != fixtureStart.Add(-time.Hour).UnixMilli() || got[0].ToMS != fixtureStart.UnixMilli() { + t.Fatalf("shift: %+v", got[0]) + } +} diff --git a/internal/panel/items.go b/internal/panel/items.go new file mode 100644 index 00000000..4f07bbe2 --- /dev/null +++ b/internal/panel/items.go @@ -0,0 +1,131 @@ +package panel + +import ( + "fmt" + "strings" +) + +func compileItems(p *Panel, measures []Measure, filters []Filter, scope Scope) (Compiled, error) { + sig, _ := lookupSignal(p.Query.From) + where, args, err := buildWhere(sig, filters, scope) + if err != nil { + return Compiled{}, err + } + item, err := sig.field(p.Query.By[0]) + if err != nil { + return Compiled{}, err + } + itemSQL := "coalesce(" + item.stringSQL() + ",'')" + selects, groups := []string{}, []string{} + columns := []Column{} + if p.Viz == "state_timeline" { + expr := fmt.Sprintf("epoch_ms(time_bucket(INTERVAL '%d seconds',%s::TIMESTAMP_NS))::BIGINT", int64(scope.Interval.Seconds()), quoteIdent(sig.time)) + selects = append(selects, expr+" AS time") + groups = append(groups, expr) + columns = append(columns, Column{Name: "time", Type: "time", Role: "time"}) + } + selects = append(selects, itemSQL+" AS "+quoteIdent(item.alias())) + groups = append(groups, itemSQL) + columns = append(columns, Column{Name: item.alias(), Type: "string", Role: "dimension"}) + if len(p.Query.By) == 2 { + ref, err := sig.field(p.Query.By[1]) + if err != nil { + return Compiled{}, err + } + expr := "coalesce(" + ref.stringSQL() + ",'')" + selects = append(selects, expr+" AS "+quoteIdent(ref.alias())) + groups = append(groups, expr) + columns = append(columns, Column{Name: ref.alias(), Type: "string", Role: "dimension"}) + } + seconds := scope.End.Sub(scope.Start).Seconds() + if p.Viz == "state_timeline" { + seconds = scope.Interval.Seconds() + } + partition := "" + if p.Viz == "state_timeline" { + partition = "PARTITION BY " + groups[0] + } + for i, m := range measures { + unit := m.Unit + if unit == "none" { + unit = "" + } + if p.Viz == "scatter" && i == 0 && p.XUnit != "" { + unit = p.XUnit + } + if p.Unit != "" && (p.Viz != "scatter" || i == 1) { + unit = p.Unit + } + selects = append(selects, measureSQL(m, sig, seconds, partition)+" AS "+quoteIdent(m.Alias)) + columns = append(columns, Column{Name: m.Alias, Type: "number", Role: "measure", Unit: unit}) + } + text := "WITH base AS (SELECT * FROM " + structuredSource(sig.name) + " WHERE " + where + ")" + if p.Viz == "state_timeline" { + text += fmt.Sprintf(", items AS (SELECT %s AS item FROM base GROUP BY 1 ORDER BY count(*) DESC,item LIMIT %d)", itemSQL, p.Top()) + } + aggregates := "SELECT " + strings.Join(selects, ",") + " FROM base GROUP BY " + strings.Join(groups, ",") + if p.Viz == "state_timeline" { + // Compute bucket shares across all items before filtering to the top N. + text += ", bucket_items AS (" + aggregates + ") SELECT * FROM bucket_items WHERE " + quoteIdent(item.alias()) + " IN (SELECT item FROM items)" + } else { + text += " " + aggregates + } + n := distributionRows(p, len(columns)) + if p.Viz == "scatter" { + n = min(n, 1000) + } + if p.Viz == "state_timeline" { + text += fmt.Sprintf(" ORDER BY time DESC,2 LIMIT %d", n+1) + } else { + name, direction := measures[0].Alias, "DESC" + if p.Query.Sort != "" { + name = strings.TrimPrefix(p.Query.Sort, "+") + if strings.HasPrefix(p.Query.Sort, "+") { + direction = "ASC" + } + } + text += fmt.Sprintf(" ORDER BY %s %s,1 LIMIT %d", quoteIdent(name), direction, n+1) + } + return Compiled{SQL: text, Args: args, Columns: columns}, nil +} +func validateItems(p *Panel, path string, problems *Problems) { + if p.Options != nil { + for name, value := range map[string]string{"x_scale": p.Options.XScale, "y_scale": p.Options.YScale} { + if value != "" && (p.Viz != "scatter" || (value != "linear" && value != "log")) { + problems.add(path+".options."+name, "axis scales apply only to scatter and must be linear or log") + } + } + } + if p.XUnit != "" { + if p.Viz != "scatter" { + problems.addHint(path+".x_unit", "x_unit applies only to scatter", "remove x_unit or use scatter") + } + if _, ok := unitFamilies[p.XUnit]; !ok { + problems.addHint(path+".x_unit", "unknown x unit", "use one of "+strings.Join(unitNames(), ", ")) + } + } + if p.Viz != "scatter" && p.Viz != "state_timeline" { + return + } + if p.Query == nil { + problems.add(path+".query", "item panels require structured queries") + return + } + if p.Viz == "scatter" && len(p.Query.Measures) != 2 { + problems.addHint(path+".query.measures", "scatter requires exactly two measures", "select x and y measures in that order") + } + if p.Viz == "state_timeline" { + if p.Query.Sort != "" { + problems.add(path+".query.sort", "state_timeline has fixed chronological ordering") + } + if len(p.Query.Measures) != 1 { + problems.add(path+".query.measures", "state_timeline requires one measure") + } + if len(p.Thresholds) == 0 { + problems.addHint(path+".thresholds", "state_timeline requires thresholds", "set a warn or bad boundary for the selected measure") + } + } + if p.Options != nil && p.Options.Style != "" { + problems.add(path+".options.style", "item panels cannot stack or set line styles") + } +} diff --git a/internal/panel/items_test.go b/internal/panel/items_test.go new file mode 100644 index 00000000..57dd3fcc --- /dev/null +++ b/internal/panel/items_test.go @@ -0,0 +1,343 @@ +package panel + +import ( + "encoding/json" + "fmt" + "math" + "slices" + "strings" + "testing" + "time" + + "github.com/labstack/fanout/internal/telemetry" +) + +func TestM2ItemsExecute(t *testing.T) { + e := newFixtureExecutor(t) + d := shopDashboard() + d.Panels = []Panel{ + {ID: "scatter", Title: "Mean and tail latency", Viz: "scatter", Query: &Query{From: "spans", Measures: []string{"avg(duration_ms)", "p95(duration_ms)"}, By: []string{"http_route", "service"}}, Options: &Options{XScale: "log", YScale: "linear"}}, + {ID: "states", Title: "Latency states", Viz: "state_timeline", Query: &Query{From: "spans", Measures: []string{"p95(duration_ms)"}, By: []string{"service"}, Bucket: "5m"}, Thresholds: []Threshold{{Value: 500, Status: "bad"}}}, + } + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + if got[0].Status != "ok" || got[0].Frame.Rows != 3 || len(got[0].Frame.Columns) != 4 { + t.Fatalf("scatter: %+v", got[0]) + } + if got[1].Status != "ok" || got[1].Frame.Rows != 24 || got[1].Better != "lower" { + t.Fatalf("timeline: %+v", got[1]) + } +} +func TestM2TimelineBudget(t *testing.T) { + engine, repo := newTestEngine(t) + spans := []telemetry.Span{} + for m := range 1440 { + for s := range 20 { + n := fixtureStart.Add(time.Duration(m) * time.Minute).UnixNano() + spans = append(spans, telemetry.Span{TraceID: fmt.Sprint(m, s), SpanID: "s", ServiceName: fmt.Sprint(s), StartUnixNanos: n, EndUnixNanos: n + 1000000, DurationMS: 1, IngestedAt: n}) + } + } + commit(t, repo, spans, nil) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(24 * time.Hour) } + d := Dashboard{Name: "States", Time: Time{Range: "24h"}, Panels: []Panel{{ID: "states", Title: "States", Viz: "state_timeline", Options: &Options{Top: 6}, Thresholds: []Threshold{{Value: 5, Status: "bad"}}, Query: &Query{From: "spans", Measures: []string{"p95(duration_ms)"}, By: []string{"service"}, Bucket: "1m"}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + f := got[0].Frame + if f == nil || !f.Truncated || f.Rows*len(f.Columns) > analysisCellLimit { + t.Fatalf("budget: %+v", got) + } + for _, v := range f.Values[1] { + if v == "Other" { + t.Fatal("item identities merged") + } + } + original := d.Panels[0] + d.Panels = nil + for i := 0; i < 11; i++ { + copy := original + copy.ID = fmt.Sprintf("bounded_%d", i) + d.Panels = append(d.Panels, copy) + } + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + cells := 0 + for _, r := range got { + if r.Frame != nil { + cells += r.Frame.Rows * len(r.Frame.Columns) + } + } + if cells > 200000 { + t.Fatalf("batch has %d cells", cells) + } + +} +func TestM2ItemsValidation(t *testing.T) { + mixed := Panel{ID: "s", Title: "S", Viz: "scatter", XUnit: "count", Unit: "ms", Query: &Query{From: "spans", Measures: []string{"count()", "p95(duration_ms)"}, By: []string{"service"}}} + d := Dashboard{Name: "Mixed", Panels: []Panel{mixed}} + Normalize(&d) + if got := Validate(&d); len(got) != 0 { + t.Fatalf("mixed-axis scatter rejected: %+v", got) + } + cases := []struct { + panel Panel + want Problem + }{ + {Panel{ID: "s", Title: "S", Viz: "state_timeline", Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service"}}}, Problem{Path: "panels[0].thresholds", Message: "state_timeline requires thresholds", Hint: "set a warn or bad boundary for the selected measure"}}, + {Panel{ID: "s", Title: "S", Viz: "scatter", Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service"}}}, Problem{Path: "panels[0].query.measures", Message: "scatter requires exactly two measures", Hint: "select x and y measures in that order"}}, + {Panel{ID: "s", Title: "S", Viz: "bar", XUnit: "count", Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service"}}}, Problem{Path: "panels[0].x_unit", Message: "x_unit applies only to scatter", Hint: "remove x_unit or use scatter"}}, + } + unknown := mixed + unknown.XUnit = "rows" + cases = append(cases, struct { + panel Panel + want Problem + }{unknown, Problem{Path: "panels[0].x_unit", Message: "unknown x unit", Hint: "use one of " + strings.Join(unitNames(), ", ")}}) + for _, tc := range cases { + d := Dashboard{Name: "Rule", Panels: []Panel{tc.panel}} + Normalize(&d) + got := Validate(&d) + if !slices.Contains(got, tc.want) { + t.Fatalf("got %+v want %+v", got, tc.want) + } + } +} +func TestM2TimelineSharePartitionsByBucket(t *testing.T) { + e := newFixtureExecutor(t) + d := Dashboard{Name: "Share", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "s", Title: "S", Viz: "state_timeline", Thresholds: []Threshold{{Value: 50, Status: "warn"}}, Query: &Query{From: "spans", Measures: []string{"share()"}, By: []string{"service"}, Bucket: "5m"}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Frame == nil { + t.Fatalf("share: %+v %v", got, err) + } + sums := map[any]float64{} + f := got[0].Frame + for i, bucket := range f.Values[0] { + sums[bucket] += f.Values[2][i].(float64) + } + for bucket, sum := range sums { + if math.Abs(sum-100) > 1e-9 { + t.Fatalf("bucket %v share=%v", bucket, sum) + } + } +} + +func TestM2TimelineShareBeforeTopN(t *testing.T) { + engine, repo := newTestEngine(t) + const buckets = 3 + var spans []telemetry.Span + for bucket := range buckets { + for service := range 12 { + for event := range 12 - service { + n := fixtureStart.Add(time.Duration(bucket) * 5 * time.Minute).UnixNano() + spans = append(spans, telemetry.Span{TraceID: fmt.Sprintf("%d_%d_%d", bucket, service, event), SpanID: "s", ServiceName: fmt.Sprintf("svc%02d", service), StartUnixNanos: n, EndUnixNanos: n + 1000000, DurationMS: 1, IngestedAt: n}) + } + } + } + commit(t, repo, spans, nil) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Share", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "s", Title: "S", Viz: "state_timeline", Thresholds: []Threshold{{Value: 50, Status: "warn"}}, Query: &Query{From: "spans", Measures: []string{"share()"}, By: []string{"service"}, Bucket: "5m"}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != StatusOK { + t.Fatalf("share: %+v %v", got, err) + } + f := got[0].Frame + if f.Rows != buckets*8 { + t.Fatalf("rows = %d, want %d", f.Rows, buckets*8) + } + sums := map[any]float64{} + counts := map[any]int{} + for i, bucket := range f.Values[0] { + sums[bucket] += f.Values[2][i].(float64) + counts[bucket]++ + if service := f.Values[1][i].(string); service >= "svc08" { + t.Errorf("non-top service returned: %s", service) + } + } + if len(sums) != buckets { + t.Fatalf("buckets = %d, want %d", len(sums), buckets) + } + for bucket, sum := range sums { + if counts[bucket] != 8 || sum >= 100 || math.Abs(sum-100.0*68/78) > 1e-9 { + t.Errorf("bucket %v: rows=%d share=%v, want 8 rows and %v", bucket, counts[bucket], sum, 100.0*68/78) + } + } +} + +func TestM2ItemsUnitNormalization(t *testing.T) { + engine, repo := newTestEngine(t) + n := fixtureStart.UnixNano() + commit(t, repo, nil, []telemetry.Log{{ServiceName: "svc", SeverityNumber: 9, EventUnixNanos: n, IngestedAt: n}}) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + for _, tc := range []struct { + name, x, y, wantX, wantY string + }{ + {"inferred", "", "", "", ""}, + {"explicit_none", "none", "none", "none", "none"}, + {"explicit_units", "count", "count", "count", "count"}, + } { + t.Run(tc.name, func(t *testing.T) { + d := Dashboard{Name: "Units", Panels: []Panel{{ID: "s", Title: "S", Viz: "scatter", XUnit: tc.x, Unit: tc.y, Query: &Query{From: "logs", Measures: []string{"avg(severity_number)", "max(severity_number)"}, By: []string{"service"}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != StatusOK { + t.Fatalf("scatter: %+v %v", got, err) + } + cols := got[0].Frame.Columns + if cols[1].Unit != tc.wantX || cols[2].Unit != tc.wantY { + t.Errorf("units = %+v, want x=%q y=%q", cols, tc.wantX, tc.wantY) + } + }) + } + for _, unit := range []string{"", "none", "count"} { + t.Run("timeline/"+unit, func(t *testing.T) { + d := Dashboard{Name: "Units", Panels: []Panel{{ID: "s", Title: "S", Viz: "state_timeline", Unit: unit, Thresholds: []Threshold{{Value: 10, Status: "warn"}}, Query: &Query{From: "logs", Measures: []string{"avg(severity_number)"}, By: []string{"service"}, Bucket: "5m"}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != StatusOK { + t.Fatalf("timeline: %+v %v", got, err) + } + if got := got[0].Frame.Columns[2].Unit; got != unit { + t.Errorf("unit = %q, want %q", got, unit) + } + }) + } +} + +func TestM2ItemsScatterAxisUnits(t *testing.T) { + e := newFixtureExecutor(t) + for _, tc := range []struct { + name, x, y, wantX, wantY string + }{ + {"inferred", "", "", "count", "ms"}, + {"x_override", "none", "", "none", "ms"}, + {"y_override", "", "ns", "count", "ns"}, + {"both_overrides", "none", "ns", "none", "ns"}, + } { + t.Run(tc.name, func(t *testing.T) { + d := Dashboard{Name: "Axes", Panels: []Panel{{ID: "s", Title: "S", Viz: "scatter", XUnit: tc.x, Unit: tc.y, Query: &Query{From: "spans", Measures: []string{"count()", "p95(duration_ms)"}, By: []string{"service"}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != StatusOK { + t.Fatalf("scatter: %+v %v", got, err) + } + cols := got[0].Frame.Columns + if cols[1].Name != "count" || cols[1].Unit != tc.wantX || cols[2].Name != "p95" || cols[2].Unit != tc.wantY { + t.Fatalf("axes: %+v", cols) + } + }) + } +} + +func TestM2ItemsOptionsValidation(t *testing.T) { + for _, tc := range []struct { + name string + panel Panel + paths []string + }{ + {"invalid_scales", Panel{Viz: "scatter", Options: &Options{XScale: "sqrt", YScale: "sqrt"}, Query: &Query{From: "spans", Measures: []string{"count()", "rate()"}, By: []string{"service"}}}, []string{"options.x_scale", "options.y_scale"}}, + {"bar_scales", Panel{Viz: "bar", Options: &Options{XScale: "log", YScale: "linear"}, Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service"}}}, []string{"options.x_scale", "options.y_scale"}}, + {"text_axes", Panel{Viz: "text", Content: "Notes", XUnit: "count", Options: &Options{XScale: "log", YScale: "linear"}}, []string{"x_unit", "options.x_scale", "options.y_scale"}}, + {"timeline_style_and_sort", Panel{Viz: "state_timeline", Options: &Options{Style: "stacked"}, Thresholds: []Threshold{{Value: 5, Status: "bad"}}, Query: &Query{From: "spans", Measures: []string{"p95(duration_ms)"}, By: []string{"service"}, Sort: "p95"}}, []string{"options.style", "query.sort"}}, + {"sql_scatter", Panel{Viz: "scatter", SQL: "SELECT service, count(*) FROM spans WHERE $__window(start_time) GROUP BY 1"}, []string{"query"}}, + } { + t.Run(tc.name, func(t *testing.T) { + tc.panel.ID, tc.panel.Title = "p", "P" + d := Dashboard{Name: "Validation", Panels: []Panel{tc.panel}} + Normalize(&d) + got := Validate(&d) + for _, path := range tc.paths { + if !slices.ContainsFunc(got, func(p Problem) bool { return p.Path == "panels[0]."+path }) { + t.Errorf("missing %s: %+v", path, got) + } + } + }) + } +} + +func TestM2ItemsLogsUseRedactedSource(t *testing.T) { + engine, repo := newTestEngine(t) + n := fixtureStart.UnixNano() + commit(t, repo, nil, []telemetry.Log{{Body: "token=bodysecret failed", BodyTemplate: "token=templatesecret failed", EventUnixNanos: n, IngestedAt: n}}) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + for _, viz := range []string{"scatter", "state_timeline"} { + for _, field := range []string{"body", "body_template"} { + t.Run(viz+"/"+field, func(t *testing.T) { + p := Panel{ID: "p", Title: "P", Viz: viz, Query: &Query{From: "logs", Measures: []string{"count()", "rate()"}, By: []string{field}}} + if viz == "state_timeline" { + p.Query.Measures = []string{"count()"} + p.Query.Bucket = "5m" + p.Thresholds = []Threshold{{Value: 5, Status: "bad"}} + } + d := Dashboard{Name: "Logs", Panels: []Panel{p}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != StatusOK { + t.Fatalf("logs: %+v %v", got, err) + } + data, err := json.Marshal(got) + if err != nil || strings.Contains(string(data), "bodysecret") || strings.Contains(string(data), "templatesecret") || !strings.Contains(string(data), "[REDACTED]") { + t.Fatalf("redaction: %s %v", data, err) + } + p.Query.Where = []string{field + " LIKE '%secret%'"} + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != StatusEmpty { + t.Fatalf("raw search matched: %+v %v", got, err) + } + }) + } + } +} + +func TestM2TimelinePreservesUnknownBuckets(t *testing.T) { + engine, repo := newTestEngine(t) + n := fixtureStart.UnixNano() + commit(t, repo, []telemetry.Span{{TraceID: "t", SpanID: "s", ServiceName: "svc", StartUnixNanos: n, EndUnixNanos: n + 1000000, DurationMS: 1, IngestedAt: n}}, nil) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Unknown", Panels: []Panel{{ID: "s", Title: "S", Viz: "state_timeline", Thresholds: []Threshold{{Value: 5, Status: "bad"}}, Query: &Query{From: "spans", Measures: []string{"avg(attributes['missing'])"}, By: []string{"service"}, Bucket: "5m"}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != StatusOK { + t.Fatalf("timeline: %+v %v", got, err) + } + f := got[0].Frame + if f.Rows != 1 || f.Values[0][0] != fixtureStart.UnixMilli() || f.Values[2][0] != nil { + t.Fatalf("null or absent bucket became healthy: %+v", f) + } +} + +func TestM2TimelineBudgetKeepsNewestCompleteBuckets(t *testing.T) { + e := newFixtureExecutor(t) + d := Dashboard{Name: "States", Panels: []Panel{{ID: "s", Title: "S", Viz: "state_timeline", Thresholds: []Threshold{{Value: 500, Status: "bad"}}, Query: &Query{From: "spans", Measures: []string{"p95(duration_ms)"}, By: []string{"service"}, Bucket: "5m"}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != StatusOK { + t.Fatalf("timeline: %+v %v", got, err) + } + // Leave nine response cells: only one complete two-item bucket fits. + filler := newFrame(make([]Column, 200)) + filler.Rows = 999 + for c := range filler.Values { + filler.Values[c] = make([]any, filler.Rows) + } + filler.Totals = make([]any, 191) + results := []Result{{Frame: filler}, got[0]} + limitBatchFrames(results) + f := results[1].Frame + latest := fixtureStart.Add(55 * time.Minute).UnixMilli() + if !f.Truncated || f.Rows != 2 || f.Values[0][0] != latest || f.Values[0][1] != latest { + t.Fatalf("budget dropped newest data or split an item bucket: %+v", f) + } + d.Panels[0].Query.Limit = 5 + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != StatusOK { + t.Fatalf("limited timeline: %+v %v", got, err) + } + f = got[0].Frame + if !f.Truncated || f.Rows != 4 || f.Values[0][0] != fixtureStart.Add(50*time.Minute).UnixMilli() || f.Values[0][3] != latest { + t.Fatalf("row limit did not preserve complete newest buckets: %+v", f) + } +} diff --git a/internal/panel/log_source.go b/internal/panel/log_source.go new file mode 100644 index 00000000..bd8288ab --- /dev/null +++ b/internal/panel/log_source.go @@ -0,0 +1,16 @@ +package panel + +import "github.com/labstack/fanout/internal/observability" + +func redactedLogSource() string { + // Qualifying the physical relation also prevents an author's logs CTE from + // capturing this trusted source when embedded in a SQL-panel subquery. + return `SELECT * REPLACE (` + observability.RedactLogBodySQL("body") + ` AS body,` + observability.RedactLogBodySQL("body_template") + ` AS body_template) FROM main.logs` +} + +func structuredSource(signal string) string { + if signal == "logs" { + return "(" + redactedLogSource() + ")" + } + return signal +} diff --git a/internal/panel/log_source_fix_test.go b/internal/panel/log_source_fix_test.go new file mode 100644 index 00000000..0e872834 --- /dev/null +++ b/internal/panel/log_source_fix_test.go @@ -0,0 +1,113 @@ +package panel + +import ( + "encoding/json" + "errors" + "strings" + "testing" + "time" + + "github.com/labstack/fanout/internal/telemetry" +) + +func TestM2FixLogReadRedaction(t *testing.T) { + engine, repo := newTestEngine(t) + n := fixtureStart.UnixNano() + commit(t, repo, []telemetry.Span{{Namespace: "n", TraceID: "t", SpanID: "r", StartUnixNanos: n, EndUnixNanos: n + 1000000, DurationMS: 1, IngestedAt: n}}, []telemetry.Log{{Namespace: "n", TraceID: "t", Body: "token=bodysecret failed", BodyTemplate: "token=templatesecret failed", EventUnixNanos: n, IngestedAt: n}}) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + for _, field := range []string{"body", "body_template"} { + t.Run(field, func(t *testing.T) { + d := exemplarDashboard("logs") + d.Panels[0].Query.By = []string{field} + results, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || len(results) != 1 || results[0].Status != "ok" { + t.Fatalf("grouping: %+v %v", results, err) + } + data, _ := json.Marshal(results) + if strings.Contains(string(data), "bodysecret") || strings.Contains(string(data), "templatesecret") || !strings.Contains(string(data), "[REDACTED]") { + t.Fatalf("grouping leaked: %s", data) + } + d.Panels[0].Query.Where = []string{field + " LIKE '%secret%'"} + results, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || results[0].Status != "empty" { + t.Fatalf("raw search matched: %+v %v", results, err) + } + d.Panels[0].Query.Where = []string{field + " = 'missing'"} + results, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || strings.Contains(results[0].Diagnosis, "secret") || !strings.Contains(results[0].Diagnosis, "[REDACTED]") { + t.Fatalf("diagnosis leaked: %+v %v", results, err) + } + d.Panels[0].Query.Where = []string{field + " LIKE '%secret%'", "service = 'missing'"} + results, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || !strings.Contains(results[0].Diagnosis, "filters together match none") { + t.Fatalf("diagnosis counted a raw secret: %+v %v", results, err) + } + d.Panels[0].Query.Where = nil + d.Variables = []Variable{{Name: "text", Kind: "query", From: "logs", Field: field}} + options, err := e.ResolveVariables(t.Context(), ResolveRequest{Dashboard: d}) + data, _ = json.Marshal(options) + if err != nil || strings.Contains(string(data), "bodysecret") || strings.Contains(string(data), "templatesecret") || !strings.Contains(string(data), "[REDACTED]") { + t.Fatalf("options leaked: %s %v", data, err) + } + d.Variables[0].Where = []string{field + " LIKE '%secret%'"} + options, err = e.ResolveVariables(t.Context(), ResolveRequest{Dashboard: d}) + if err != nil || len(options["text"]) != 0 { + t.Fatalf("variable raw search: %+v %v", options, err) + } + req := exemplarRequest(d) + req.Dashboard.Variables = nil + req.Dashboard.Panels[0].Query.Where = []string{field + " LIKE '%secret%'"} + got, err := e.Exemplars(t.Context(), req) + if err != nil || len(got.Traces) != 0 { + t.Fatalf("exemplar raw search: %+v %v", got, err) + } + }) + } + for _, sql := range []string{ + "SELECT body, body_template FROM logs WHERE $__window(time)", + "SELECT body FROM logs WHERE $__window(time) AND body LIKE '%secret%'", + "SELECT l.body FROM main.logs l WHERE $__window(l.time)", + "WITH x AS (SELECT * FROM logs WHERE $__window(time)) SELECT body FROM x", + "WITH history AS (SELECT body, time FROM main.logs) SELECT body FROM history WHERE $__window(time)", + "WITH history AS (SELECT service, time FROM main.logs) SELECT service FROM history WHERE $__window(time)", + "SELECT logs.body FROM logs WHERE $__window(logs.time)", + "WITH history AS (SELECT service FROM spans) SELECT l.body FROM main.logs l WHERE $__window(l.time)", + "SELECT body FROM telemetry.logs WHERE $__window(ingested_at)", + "WITH x AS (SELECT 1 AS one) SELECT body FROM logs, x WHERE $__window(time)", + } { + t.Run(sql, func(t *testing.T) { + d := exemplarDashboard("logs") + d.Panels[0] = Panel{ID: "p", Title: "SQL", Viz: "table", SQL: sql} + results, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || len(results) != 1 || results[0].Status == "error" { + t.Fatalf("SQL redaction: %+v %v", results, err) + } + data, _ := json.Marshal(results) + if strings.Contains(string(data), "bodysecret") || strings.Contains(string(data), "templatesecret") { + t.Fatalf("SQL leaked: %s", data) + } + if strings.Contains(sql, "LIKE") && results[0].Status != "empty" { + t.Fatalf("SQL raw filter matched: %s", data) + } + }) + } +} + +func TestM2FixSQLLogRedactionKeepsBoundary(t *testing.T) { + e := newFixtureExecutor(t) + for _, sql := range []string{ + "SELECT body FROM private.logs WHERE $__window(time)", + "SELECT body FROM memory.main.logs WHERE $__window(time)", + "SELECT body FROM read_parquet('/private/telemetry/logs.parquet') WHERE $__window(time)", + "SELECT body, getvariable('secret') FROM logs WHERE $__window(time)", + } { + d := exemplarDashboard("logs") + d.Panels[0] = Panel{ID: "p", Title: "SQL", Viz: "table", SQL: sql} + _, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + var problems Problems + if !errors.As(err, &problems) { + t.Fatalf("unsafe SQL accepted: %s %v", sql, err) + } + } +} diff --git a/internal/panel/preview_patterns_test.go b/internal/panel/preview_patterns_test.go new file mode 100644 index 00000000..2990dca9 --- /dev/null +++ b/internal/panel/preview_patterns_test.go @@ -0,0 +1,174 @@ +package panel + +import ( + "context" + "encoding/json" + "fmt" + "strings" + "testing" + "time" + + "github.com/labstack/fanout/internal/queryrows" + "github.com/labstack/fanout/internal/telemetry" +) + +type previewPatternCounter struct { + Engine + queries int +} + +func (e *previewPatternCounter) QueryContext(ctx context.Context, text string, args ...any) (queryrows.Rows, error) { + if strings.Contains(text, "patterns AS (") { + e.queries++ + } + return e.Engine.QueryContext(ctx, text, args...) +} + +func TestPreviewPatternContextEngine(t *testing.T) { + engine, repo := newTestEngine(t) + logs := []telemetry.Log{} + add := func(pattern, severity, service string, n int) { + for range n { + at := fixtureStart.Add(time.Duration(len(logs)) * time.Second).UnixNano() + logs = append(logs, telemetry.Log{Namespace: "shop", Body: pattern, BodyTemplate: pattern, Severity: severity, ServiceName: service, EventUnixNanos: at, TimeUnixNanos: at, IngestedAt: at}) + } + } + add("token=secret failed <*> ", "WARN", "checkout", 3) + add("token=other failed <*> ", "ERROR", "payments", 2) + add("token=other failed <*> ", "INFO", "payments", 2) + add("tie <*> ", "WARN", "zeta", 2) + add("tie <*> ", "ERROR", "alpha", 2) + add("fatal <*> ", "ERROR", "payments", 1) + add("fatal <*> ", "fatal", "checkout", 1) + add("numbered <*> ", "INFO", "zeta", 1) + logs[len(logs)-1].SeverityNumber = 9 + add("numbered <*> ", "INFO2", "alpha", 1) + logs[len(logs)-1].SeverityNumber = 10 + // This out-of-window context must not influence the dominant values. + at := fixtureStart.Add(-time.Second).UnixNano() + logs = append(logs, telemetry.Log{Body: "token=secret failed <*> ", BodyTemplate: "token=secret failed <*> ", Severity: "FATAL", ServiceName: "outside", EventUnixNanos: at, TimeUnixNanos: at, IngestedAt: at}) + commit(t, repo, nil, logs) + counter := &previewPatternCounter{Engine: engine} + e := NewExecutor(counter, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Context", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "p", Title: "Patterns", Viz: "log_patterns", Query: &Query{From: "logs", By: []string{"body_template"}, Measures: []string{"count()"}, Bucket: "auto"}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + if counter.queries != 1 { + t.Fatalf("context queries=%d", counter.queries) + } + f := got[0].Frame + if got[0].Status != StatusOK || f == nil { + t.Fatalf("result=%+v", got) + } + cols := map[string]int{} + for i, c := range f.Columns { + cols[c.Name] = i + } + for _, name := range []string{"severity", "service"} { + if _, ok := cols[name]; !ok { + t.Fatalf("missing %s: %+v", name, f.Columns) + } + } + want := map[string]struct { + severity, service string + count float64 + }{"token=[REDACTED] failed <*> ": {"WARN", "payments", 7}, "tie <*> ": {"ERROR", "alpha", 4}, "fatal <*> ": {"FATAL", "checkout", 2}, "numbered <*> ": {"INFO2", "alpha", 2}} + for r := 0; r < f.Rows; r++ { + pattern := f.Values[cols["body_template"]][r].(string) + w, ok := want[pattern] + if !ok { + t.Fatalf("unredacted/unexpected %q", pattern) + } + if f.Values[cols["severity"]][r] != w.severity || f.Values[cols["service"]][r] != w.service || f.Values[cols["count"]][r] != w.count { + t.Fatalf("context %q: %+v", pattern, f.Values) + } + var trend []float64 + if err := json.Unmarshal([]byte(f.Values[cols["trend"]][r].(string)), &trend); err != nil { + t.Fatal(err) + } + var total float64 + for _, n := range trend { + total += n + } + if total != w.count || len(trend) > 240 { + t.Fatalf("trend=%v", trend) + } + } + if f.Rows != len(want) { + t.Fatalf("rows=%d", f.Rows) + } +} + +func TestFinal2PatternContextIsAggregated(t *testing.T) { + p := &Panel{ID: "p", Viz: "log_patterns", Query: &Query{From: "logs", Measures: []string{"count()"}, By: []string{"body_template"}}} + c, err := compileRows(p, nil, Scope{Start: compileStart, End: compileEnd, Interval: time.Minute}) + if err != nil { + t.Fatal(err) + } + start := strings.Index(c.SQL, "context AS (") + if start < 0 { + t.Fatalf("missing context aggregate: %s", c.SQL) + } + end := strings.Index(c.SQL[start:], "),\nseverity_counts") + if end < 0 { + t.Fatalf("missing context aggregate: %s", c.SQL) + } + contextSQL := c.SQL[start : start+end] + if !strings.Contains(contextSQL, "GROUP BY") || !strings.Contains(contextSQL, "count(*)") { + t.Fatalf("row-level materialized context: %s", contextSQL) + } +} + +func TestPreviewPatternContextBudgetsEngine(t *testing.T) { + engine, repo := newTestEngine(t) + logs := []telemetry.Log{} + for i := 0; i < 60; i++ { + at := fixtureStart.UnixNano() + pattern := fmt.Sprintf("pattern %d <*> ", i) + logs = append(logs, telemetry.Log{Namespace: "shop", Body: pattern, BodyTemplate: pattern, Severity: "INFO", ServiceName: "s", EventUnixNanos: at, TimeUnixNanos: at, IngestedAt: at}) + } + commit(t, repo, nil, logs) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(3 * time.Hour) } + d := Dashboard{Name: "Budgets", Time: Time{Range: "3h"}} + for i := 0; i < 30; i++ { + d.Panels = append(d.Panels, Panel{ID: fmt.Sprintf("p%d", i), Title: "Patterns", Viz: "log_patterns", Query: &Query{From: "logs", By: []string{"body_template"}, Measures: []string{"count()"}, Bucket: "10s", Limit: 80}}) + } + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + cells := 0 + for _, r := range got { + if r.Status != StatusOK || r.Frame == nil { + t.Fatalf("result=%+v", r) + } + f := r.Frame + if f.Rows > 50 || !f.Truncated || len(f.Columns) != 5 { + t.Fatalf("budget: rows=%d columns=%d truncated=%v", f.Rows, len(f.Columns), f.Truncated) + } + cells += f.Rows * len(f.Columns) + trendIndex := -1 + for i, c := range f.Columns { + if c.Name == "trend" { + trendIndex = i + } + } + for _, value := range f.Values[trendIndex] { + var trend []float64 + if err := json.Unmarshal([]byte(value.(string)), &trend); err != nil { + t.Fatal(err) + } + if len(trend) > 240 { + t.Fatal("unbounded trend") + } + cells += len(trend) + } + } + if cells > 200000 { + t.Fatalf("batch cells=%d", cells) + } +} diff --git a/internal/panel/rollup_panels.go b/internal/panel/rollup_panels.go new file mode 100644 index 00000000..1e3ec5c0 --- /dev/null +++ b/internal/panel/rollup_panels.go @@ -0,0 +1,157 @@ +package panel + +import ( + "context" + "fmt" + "strings" + + "github.com/labstack/fanout/internal/observability" +) + +type RollupReader interface { + Topology(context.Context, observability.Scope, int) (observability.Result[observability.Topology], error) + Overview(context.Context, observability.Scope, int) (observability.Result[observability.Overview], error) + Performance(context.Context, observability.Scope, observability.PerformanceOptions) (observability.Result[observability.Performance], error) +} + +func (e *Executor) SetRollupReader(reader RollupReader) { e.rollups = reader } +func rollupFilterNode(n any) map[string]any { + v, _ := n.(map[string]any) + return v +} +func rollupFilterValue(ctx context.Context, parser Parser, f Filter, scope Scope) (string, string, error) { + tree, err := parser.ParseSQL(ctx, "SELECT 1 FROM spans WHERE ("+f.Source+")") + if err != nil { + return "", "", err + } + // Parse the author's source, not the canonical filter with its injected + // parameter casts. Explicit casts cannot be represented by a string scope. + node := rollupFilterNode(tree["where_clause"]) + if node == nil || node["class"] != "COMPARISON" || node["type"] != "COMPARE_EQUAL" { + return "", "", fmt.Errorf("rollup panels support equality filters on namespace or service") + } + left, right := rollupFilterNode(node["left"]), rollupFilterNode(node["right"]) + if left["class"] != "COLUMN_REF" { + left, right = right, left + } + field := fieldText(left) + if left["class"] != "COLUMN_REF" || (field != "service" && field != "namespace") { + return "", "", fmt.Errorf("rollup panels support equality filters on namespace or service") + } + switch right["class"] { + case "CONSTANT": + value := constantText(right) + if value == "" { + return "", "", fmt.Errorf("scope equality requires a nonempty string") + } + if value != strings.TrimSpace(value) { + return "", "", fmt.Errorf("rollup equality cannot preserve surrounding whitespace") + } + return field, value, nil + case "PARAMETER": + name, _ := right["identifier"].(string) + v, ok := scope.Vars[name] + if !ok || v.All || len(v.Values) != 1 || v.Values[0] == "" { + return "", "", fmt.Errorf("rollup equality needs one selected value") + } + if v.Values[0] != strings.TrimSpace(v.Values[0]) { + return "", "", fmt.Errorf("rollup equality cannot preserve surrounding whitespace") + } + return field, v.Values[0], nil + default: + return "", "", fmt.Errorf("rollup equality needs a literal or variable") + } +} +func (e *Executor) runRollupPanel(ctx context.Context, p *Panel, filters []Filter, scope Scope) (*Frame, string, error) { + if e.rollups == nil { + return nil, "", fmt.Errorf("rollup reader unavailable") + } + request := observability.Scope{Start: scope.Start, End: scope.End} + seen := map[string]string{} + for _, f := range filters { + if scope.dropped(f) { + continue + } + field, value, err := rollupFilterValue(ctx, e.engine, f, scope) + if err != nil { + return nil, "", err + } + if prior, ok := seen[field]; ok && prior != value { + columns := healthColumns() + if p.Viz == "service_map" { + columns = mapColumns() + } + return newFrame(columns), "observability: conflicting scope filters", nil + } + seen[field] = value + if field == "namespace" { + request.Namespace = value + } else { + request.Service = value + } + } + limit := 400 + if p.Query.Limit > 0 { + limit = min(400, p.Query.Limit) + } + if p.Viz == "health" { + result, err := e.rollups.Overview(ctx, request, limit) + if err != nil { + return nil, "", err + } + f := newFrame(healthColumns()) + f.Truncated = len(result.Data.Services) == limit + performance, err := e.rollups.Performance(ctx, request, observability.PerformanceOptions{Service: request.Service, Limit: 1}) + if err != nil { + return nil, "", err + } + f.Health = &HealthFrame{Health: string(result.Data.Health), Counts: result.Data.Counts, TotalSpans: result.Data.TotalSpans, ErrorRate: result.Data.ErrorRate * 100, ServiceCount: result.Data.ServiceCount, ErrorTrend: []float64{}} + for _, point := range performance.Data.Points { + f.Health.ErrorTrend = append(f.Health.ErrorTrend, point.ErrorRate*100) + } + for _, s := range result.Data.Services { + appendPanelRow(f, s.Service, string(s.Health), float64(s.Spans), s.ErrorRate*100, s.P50MS, s.P95MS, float64(s.LogCount), float64(s.MetricCount)) + } + return f, "observability.Service.Overview", nil + } + result, err := e.rollups.Topology(ctx, request, limit) + if err != nil { + return nil, "", err + } + f := newFrame(mapColumns()) + f.Truncated = len(result.Data.Nodes) == limit || len(result.Data.Edges) == limit + for _, n := range result.Data.Nodes { + appendPanelRow(f, "node", n.Service, "", "", "", nil, nil, n.ErrorRate*100, string(n.Health), n.P95MS, float64(n.Spans)) + } + for _, edge := range result.Data.Edges { + appendPanelRow(f, "edge", "", edge.Caller, edge.Callee, edge.Type, float64(edge.Calls), edge.AverageMS, edge.ErrorRate*100, "", nil, nil) + } + return f, "observability.Service.Topology", nil +} +func mapColumns() []Column { + return []Column{{Name: "kind", Type: "string", Role: "dimension"}, {Name: "service", Type: "string", Role: "dimension"}, {Name: "caller", Type: "string", Role: "dimension"}, {Name: "callee", Type: "string", Role: "dimension"}, {Name: "edge_type", Type: "string", Role: "dimension"}, {Name: "calls", Type: "number", Role: "measure", Unit: "count"}, {Name: "average_ms", Type: "number", Role: "measure", Unit: "ms"}, {Name: "error_rate", Type: "number", Role: "measure", Unit: "percent"}, {Name: "health", Type: "string", Role: "dimension"}, {Name: "p95_ms", Type: "number", Role: "measure", Unit: "ms"}, {Name: "spans", Type: "number", Role: "measure", Unit: "count"}} +} +func healthColumns() []Column { + return []Column{{Name: "service", Type: "string", Role: "dimension"}, {Name: "health", Type: "string", Role: "dimension"}, {Name: "spans", Type: "number", Role: "measure", Unit: "count"}, {Name: "error_rate", Type: "number", Role: "measure", Unit: "percent"}, {Name: "p50_ms", Type: "number", Role: "measure", Unit: "ms"}, {Name: "p95_ms", Type: "number", Role: "measure", Unit: "ms"}, {Name: "log_count", Type: "number", Role: "measure", Unit: "count"}, {Name: "metric_count", Type: "number", Role: "measure", Unit: "count"}} +} +func appendPanelRow(f *Frame, values ...any) { + for i, v := range values { + f.Values[i] = append(f.Values[i], v) + } + f.Rows++ +} +func validateRollupPanel(p *Panel, path string, problems *Problems) { + if p.Viz != "health" && p.Viz != "service_map" { + return + } + if p.Query == nil || p.Query.From != "spans" { + problems.add(path+".query", "health and service_map require a structured spans scope") + return + } + if len(p.Query.Measures) > 0 || len(p.Query.By) > 0 || p.Query.Bucket != "" { + problems.add(path+".query", "rollup panels use scope filters and a limit, without measures, dimensions or buckets") + } + if p.Query.Sort != "" || p.Options != nil && strings.TrimSpace(p.Options.Style) != "" { + problems.add(path+".options", "rollup panels have fixed health and graph encodings") + } +} diff --git a/internal/panel/rollup_panels_test.go b/internal/panel/rollup_panels_test.go new file mode 100644 index 00000000..cb46b662 --- /dev/null +++ b/internal/panel/rollup_panels_test.go @@ -0,0 +1,210 @@ +package panel + +import ( + "errors" + "reflect" + "slices" + "strings" + "testing" + "time" + + "github.com/labstack/fanout/internal/observability" +) + +func TestM2RollupPanelsReuseServices(t *testing.T) { + engine, _ := newTestEngine(t) + at := fixtureStart + _, err := engine.DB.Exec(`INSERT INTO service_rollup(namespace,bucket,service,spans,served_spans,p50_ms,p95_ms,error_rate,log_count,metric_count) VALUES ('shop',?,'checkout',10,10,50,100,.1,2,3),('shop',?,'payment',20,20,20,40,0,1,1)`, at, at) + if err != nil { + t.Fatal(err) + } + _, err = engine.DB.Exec(`INSERT INTO edge_rollup VALUES ('shop',?,'checkout','payment',10,20,.1,'call')`, at) + if err != nil { + t.Fatal(err) + } + reader := observability.New(engine, engine, 30) + e := NewExecutor(engine, 30) + e.SetRollupReader(reader) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Overview", Time: Time{Range: "1h"}, Panels: []Panel{ + {ID: "health", Title: "Health", Viz: "health", Query: &Query{From: "spans", Where: []string{"namespace = 'shop'"}}}, + {ID: "map", Title: "Map", Viz: "service_map", Query: &Query{From: "spans", Where: []string{"namespace = 'shop'"}}}, + }} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + overview, err := reader.Overview(t.Context(), observability.Scope{Namespace: "shop", Start: at, End: at.Add(time.Hour)}, 400) + if err != nil { + t.Fatal(err) + } + if got[0].Status != "ok" || got[0].Frame.Rows != len(overview.Data.Services) || got[0].Frame.Values[3][0].(float64) != 10 { + t.Fatalf("overview frame: %+v", got[0]) + } + if got[1].Status != "ok" || got[1].Frame.Rows != 3 || got[1].Frame.Values[7][2].(float64) != 10 { + t.Fatalf("edges: %+v", got[1]) + } + if got[1].Frame.Columns[9].Name != "p95_ms" || got[1].Frame.Values[9][0] != float64(100) || got[1].Frame.Values[6][0] != nil || got[1].Frame.Values[9][2] != nil || got[1].Frame.Values[6][2] != float64(20) { + t.Fatalf("mixed node/edge latency semantics: %+v", got[1].Frame) + } + d.Panels[0].Query.Where = []string{"namespace = 'missing'"} + d.Panels = d.Panels[:1] + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != "empty" { + t.Fatalf("empty health: %+v %v", got, err) + } +} + +func TestM2RollupPanelsAggregateContract(t *testing.T) { + engine, _ := newTestEngine(t) + at := fixtureStart + _, err := engine.DB.Exec(`INSERT INTO service_rollup VALUES ('shop',?,'checkout',10,10,50,100,.1,2,3),('shop',?,'checkout',30,30,70,200,0,4,5),('shop',?,'payment',20,20,20,40,0,1,1)`, at, at.Add(10*time.Minute), at) + if err != nil { + t.Fatal(err) + } + reader := observability.New(engine, engine, 30) + e := NewExecutor(engine, 30) + e.SetRollupReader(reader) + e.now = func() time.Time { return at.Add(time.Hour) } + d := Dashboard{Name: "Health", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "h", Title: "H", Viz: "health", Query: &Query{From: "spans", Where: []string{"namespace = 'shop'", "'checkout' = service"}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + scope := observability.Scope{Namespace: "shop", Service: "checkout", Start: at, End: at.Add(time.Hour)} + o, err := reader.Overview(t.Context(), scope, 400) + if err != nil { + t.Fatal(err) + } + p, err := reader.Performance(t.Context(), scope, observability.PerformanceOptions{Service: "checkout", Limit: 1}) + if err != nil { + t.Fatal(err) + } + want := &HealthFrame{Health: string(o.Data.Health), Counts: o.Data.Counts, TotalSpans: o.Data.TotalSpans, ErrorRate: o.Data.ErrorRate * 100, ServiceCount: o.Data.ServiceCount, ErrorTrend: []float64{}} + for _, point := range p.Data.Points { + want.ErrorTrend = append(want.ErrorTrend, point.ErrorRate*100) + } + if got[0].Frame == nil || !reflect.DeepEqual(got[0].Frame.Health, want) { + t.Fatalf("health aggregate got %+v want %+v", got, want) + } + if got[0].Frame.Rows != 1 || got[0].Frame.Values[5][0] != float64(200) { + t.Fatalf("service p95: %+v", got[0]) + } +} + +func TestM2RollupPanelsRejectCastSemantics(t *testing.T) { + e := newFixtureExecutor(t) + for _, where := range []string{"CAST(service AS BOOLEAN) = CAST('true' AS BOOLEAN)", "service = CAST('checkout' AS BOOLEAN)"} { + d := Dashboard{Name: "Cast", Panels: []Panel{{ID: "h", Title: "H", Viz: "health", Query: &Query{From: "spans", Where: []string{where}}}}} + if err := e.Validate(t.Context(), &d); err == nil { + t.Fatalf("silently discarded cast in %s", where) + } + } +} + +func TestM2RollupPanelsRejectNormalizedEquality(t *testing.T) { + e := newFixtureExecutor(t) + scope := Scope{Vars: map[string]Value{"s": {Values: []string{" checkout "}}}} + for _, where := range []string{"namespace = ' shop '", "service = ' checkout '", "service = $s"} { + if _, _, err := rollupFilterValue(t.Context(), e.engine, Filter{Source: where}, scope); err == nil { + t.Fatalf("scope normalization would change equality: %s", where) + } + } +} + +func TestM2RollupPanelsScopesAndSelection(t *testing.T) { + e := newFixtureExecutor(t) + for _, viz := range []string{"health", "service_map"} { + p := Panel{ID: "p", Title: "P", Viz: viz, Query: &Query{From: "spans"}} + scope := Scope{Start: fixtureStart, End: fixtureStart.Add(time.Hour), Vars: map[string]Value{"s": {Values: []string{"checkout"}}}} + field, value, err := rollupFilterValue(t.Context(), e.engine, Filter{Source: "$s = service"}, scope) + if err != nil || field != "service" || value != "checkout" { + t.Fatalf("variable: %s %s %v", field, value, err) + } + for _, v := range []Value{{All: true}, {Values: []string{"checkout", "payment"}}, {Values: []string{""}}} { + scope.Vars["s"] = v + if _, _, err := rollupFilterValue(t.Context(), e.engine, Filter{Source: "service = $s"}, scope); err == nil { + t.Fatalf("accepted %+v", v) + } + } + where, args, err := selectionWhere(&p, nil, scope, map[string]string{"service": "checkout"}, nil) + if err != nil || !strings.Contains(where, "service") || args[len(args)-1] != "checkout" { + t.Fatalf("selection %s %+v %v", where, args, err) + } + if _, _, err := selectionWhere(&p, nil, scope, map[string]string{"operation": "pay"}, nil); err == nil { + t.Fatal("accepted non-service selection") + } + frame, _, err := e.runRollupPanel(t.Context(), &p, nil, scope) + if err == nil || frame != nil { + t.Fatalf("missing reader: %+v %v", frame, err) + } + } +} + +func TestM2RollupPanelsValidateScopeOnly(t *testing.T) { + for _, viz := range []string{"health", "service_map"} { + for _, q := range []*Query{{From: "logs"}, {From: "spans", Measures: []string{"count()"}}, {From: "spans", By: []string{"service"}}, {From: "spans", Bucket: "auto"}, {From: "spans", Sort: "spans"}} { + d := Dashboard{Name: "Scope", Panels: []Panel{{ID: "p", Title: "P", Viz: viz, Query: q}}} + Normalize(&d) + if len(Validate(&d)) == 0 { + t.Fatalf("accepted %s %+v", viz, q) + } + } + } +} +func TestM2RollupPanelsApplyServiceBeforeLimit(t *testing.T) { + engine, _ := newTestEngine(t) + at := fixtureStart + _, err := engine.DB.Exec(`INSERT INTO service_rollup SELECT 'shop',?,'noisy-'||i,100,100,3000,4000,.5,0,0 FROM generate_series(1,500) AS t(i)`, at) + if err != nil { + t.Fatal(err) + } + _, err = engine.DB.Exec(`INSERT INTO service_rollup VALUES ('shop',?,'quiet',1,1,1,2,0,0,0)`, at) + if err != nil { + t.Fatal(err) + } + _, err = engine.DB.Exec(`INSERT INTO edge_rollup SELECT 'shop',?,'noisy-'||i,'sink',100,100,.5,'call' FROM generate_series(1,500) AS t(i)`, at) + if err != nil { + t.Fatal(err) + } + _, err = engine.DB.Exec(`INSERT INTO edge_rollup VALUES ('shop',?,'quiet','sink',1,2,0,'call')`, at) + if err != nil { + t.Fatal(err) + } + e := NewExecutor(engine, 30) + e.SetRollupReader(observability.New(engine, engine, 30)) + e.now = func() time.Time { return at.Add(time.Hour) } + d := Dashboard{Name: "Quiet", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "h", Title: "H", Viz: "health", Query: &Query{From: "spans", Where: []string{"namespace = 'shop'", "service = 'quiet'"}}}, {ID: "m", Title: "M", Viz: "service_map", Query: &Query{From: "spans", Where: []string{"namespace = 'shop'", "service = 'quiet'"}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + if got[0].Frame.Rows != 1 || got[0].Frame.Values[0][0] != "quiet" || got[1].Frame.Rows != 2 { + t.Fatalf("post-limit scope loss: %+v", got) + } + for i := range d.Panels { + d.Panels[i].Query.Where = []string{"namespace = 'shop'"} + d.Panels[i].Query.Limit = 1000 + } + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Frame.Rows != 400 || got[1].Frame.Rows != 800 || !got[0].Frame.Truncated || !got[1].Frame.Truncated { + t.Fatalf("400 per-read cap: %+v %v", got, err) + } +} +func TestM2RollupPanelsRejectUnrepresentableFilters(t *testing.T) { + e := newFixtureExecutor(t) + cases := []struct{ where, message string }{ + {"http_route = '/cart'", "rollup panels support equality filters on namespace or service"}, + {"service <> 'checkout'", "rollup panels support equality filters on namespace or service"}, + {"service = operation", "rollup equality needs a literal or variable"}, + } + for _, tc := range cases { + d := Dashboard{Name: "Map", Panels: []Panel{{ID: "map", Title: "Map", Viz: "service_map", Query: &Query{From: "spans", Where: []string{tc.where}}}}} + err := e.Validate(t.Context(), &d) + var got Problems + want := Problem{Path: "panels[0].query.where[0]", Message: tc.message, Hint: "use namespace or service equality with a literal or single-value variable"} + if !errors.As(err, &got) || !slices.Contains(got, want) { + t.Fatalf("%s: got %v want %+v", tc.where, err, want) + } + } +} diff --git a/internal/panel/round2_test.go b/internal/panel/round2_test.go index e2490470..835ce219 100644 --- a/internal/panel/round2_test.go +++ b/internal/panel/round2_test.go @@ -29,7 +29,7 @@ func TestRound2SeriesKeepsNewestBucket(t *testing.T) { commit(t, repo, spans, nil) e := NewExecutor(duck, 30) e.now = func() time.Time { return fixtureStart.Add(time.Hour) } - d := Dashboard{Name: "Series", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "series", Title: "Series", Viz: "timeseries", Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service"}, Bucket: "30s"}, Options: &Options{Top: 20}}}} + d := Dashboard{Name: "Series", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "series", Title: "Series", Viz: "timeseries", Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service"}, Bucket: "30s"}, Options: &Options{Top: 6}}}} results, err := e.Run(t.Context(), RunRequest{Dashboard: d}) if err != nil { t.Fatal(err) @@ -38,7 +38,7 @@ func TestRound2SeriesKeepsNewestBucket(t *testing.T) { if f == nil { t.Fatalf("missing frame: %+v", results[0]) } - if f.Rows != 1080 || f.Truncated { + if f.Rows != 840 || f.Truncated { t.Fatalf("rows=%d truncated=%v", f.Rows, f.Truncated) } if got := f.Values[0][f.Rows-1]; got != fixtureStart.Add(time.Hour-30*time.Second).UnixMilli() { diff --git a/internal/panel/rowpanels.go b/internal/panel/rowpanels.go new file mode 100644 index 00000000..1ef14115 --- /dev/null +++ b/internal/panel/rowpanels.go @@ -0,0 +1,186 @@ +package panel + +import ( + "fmt" + "strings" + "time" + "unicode/utf8" +) + +func patternLimit(p *Panel) int { + if p.Query.Limit > 0 { + return min(50, p.Query.Limit) + } + return 20 +} +func rowLimitForPanel(p *Panel) int { + if p.Query.Limit > 0 { + return min(1000, p.Query.Limit) + } + return 1000 +} +func compileRows(p *Panel, filters []Filter, scope Scope) (Compiled, error) { + sig, ok := lookupSignal(p.Query.From) + if !ok { + return Compiled{}, fmt.Errorf("unknown signal %q", p.Query.From) + } + where, args, err := buildWhere(sig, filters, scope) + if err != nil { + return Compiled{}, err + } + return compileRowsWhere(p, where, args, scope) +} + +func compileRowsWhere(p *Panel, where string, args []any, scope Scope) (Compiled, error) { + if p.Viz == "traces" { + order := "duration_ms DESC,trace_id,namespace" + if p.Query.Sort == "errors" { + where += " AND status IN ('STATUS_CODE_ERROR','ERROR')" + } + if p.Query.Sort == "+start" { + order = "start_time ASC,trace_id,namespace" + } + text := checkedTraceRowsSQL(where, rowLimitForPanel(p)+1, order) + args = append(args, scope.Start.UTC(), scope.End.UTC()) + return Compiled{SQL: text, Args: args, Columns: []Column{{Name: "trace_id", Type: "string", Role: "dimension"}, {Name: "namespace", Type: "string", Role: "dimension"}, {Name: "service", Type: "string", Role: "dimension"}, {Name: "operation", Type: "string", Role: "dimension"}, {Name: "duration_ms", Type: "number", Role: "measure", Unit: "ms"}, {Name: "status", Type: "string", Role: "dimension"}, {Name: "start", Type: "time", Role: "time"}}}, nil + } + redacted := redactedLogSource() + if p.Options != nil && p.Options.Highlight != "" { + where += " AND contains(lower(body),lower(?))" + args = append(args, p.Options.Highlight) + } + base := "WITH redacted AS (" + redacted + "),base AS (SELECT * FROM redacted WHERE " + where + ")" + if p.Viz == "logs" { + order := "DESC" + if p.Query.Sort == "+time" { + order = "ASC" + } + return Compiled{SQL: base + ` SELECT epoch_ms(time::TIMESTAMP_NS)::BIGINT AS time,coalesce(severity,''),coalesce(service,''),CASE WHEN length(body)>2000 THEN left(body,1999)||'…' ELSE coalesce(body,'') END,coalesce(trace_id,''),coalesce(namespace,'') FROM base ORDER BY base.time ` + order + fmt.Sprintf(" LIMIT %d", rowLimitForPanel(p)+1), Args: args, Columns: []Column{{Name: "time", Type: "time", Role: "time"}, {Name: "severity", Type: "string", Role: "dimension"}, {Name: "service", Type: "string", Role: "dimension"}, {Name: "body", Type: "string", Role: "dimension"}, {Name: "trace_id", Type: "string", Role: "dimension"}, {Name: "namespace", Type: "string", Role: "dimension"}}}, nil + } + interval := max(scope.Interval, AutoInterval(scope.End.Sub(scope.Start), 960)) + seconds := int64(interval / time.Second) + lo := alignedBucketMillis(scope.Start, interval) + points := int((scope.End.Sub(time.UnixMilli(lo))-time.Nanosecond)/interval + 1) + for points > 240 { + interval *= 2 + seconds = int64(interval / time.Second) + lo = alignedBucketMillis(scope.Start, interval) + points = int((scope.End.Sub(time.UnixMilli(lo))-time.Nanosecond)/interval + 1) + } + limit := patternLimit(p) + text := base + fmt.Sprintf(`, +patterns AS (SELECT coalesce(body_template,'') AS pattern,count(*)::DOUBLE AS total FROM base GROUP BY 1 ORDER BY total DESC,pattern LIMIT %d), +context AS (SELECT coalesce(base.body_template,'') AS pattern,coalesce(nullif(upper(severity),''),'UNSPECIFIED') AS severity,coalesce(service,'') AS service,count(*) AS n,max(coalesce(nullif(severity_number,0),CASE WHEN upper(severity) IN ('FATAL','CRITICAL') THEN 21 WHEN upper(severity)='ERROR' THEN 17 WHEN upper(severity) IN ('WARN','WARNING') THEN 13 WHEN upper(severity)='INFO' THEN 9 WHEN upper(severity)='DEBUG' THEN 5 WHEN upper(severity)='TRACE' THEN 1 ELSE 0 END)) AS severity_rank FROM base SEMI JOIN patterns p ON coalesce(base.body_template,'')=p.pattern GROUP BY 1,2,3), +severity_counts AS (SELECT pattern,severity,sum(n) AS n,max(severity_rank) AS severity_rank FROM context GROUP BY pattern,severity), +severities AS (SELECT pattern,arg_max(severity,struct_pack(n:=n,rank:=severity_rank,label:=severity)) AS severity FROM severity_counts GROUP BY pattern), +service_counts AS (SELECT pattern,service,sum(n) AS n FROM context GROUP BY pattern,service), +services AS (SELECT pattern,first(service ORDER BY n DESC,service ASC) AS service FROM service_counts GROUP BY pattern), +buckets AS (SELECT coalesce(body_template,'') AS pattern,epoch_ms(time_bucket(INTERVAL '%d seconds',time::TIMESTAMP_NS,'1970-01-01'::TIMESTAMP_NS))::BIGINT AS point,count(*)::DOUBLE AS n FROM base SEMI JOIN patterns p ON coalesce(base.body_template,'')=p.pattern GROUP BY 1,2), +dense AS (SELECT p.pattern,p.total,%d+r.i*%d AS point FROM patterns p CROSS JOIN range(%d) r(i)) +SELECT d.pattern,d.total,CAST(to_json(list(coalesce(b.n,0) ORDER BY d.point)) AS VARCHAR) AS trend,s.severity,v.service +FROM dense d LEFT JOIN buckets b ON d.pattern=b.pattern AND d.point=b.point JOIN severities s ON s.pattern=d.pattern JOIN services v ON v.pattern=d.pattern +GROUP BY d.pattern,d.total,s.severity,v.service ORDER BY d.total DESC,d.pattern`, limit+1, seconds, lo, interval.Milliseconds(), points) + return Compiled{SQL: text, Args: args, TrendInterval: interval, TrendStart: time.UnixMilli(lo).UTC(), Columns: []Column{{Name: "body_template", Type: "string", Role: "dimension"}, {Name: "count", Type: "number", Role: "measure", Unit: "count"}, {Name: "trend", Type: "json", Role: "dimension", Unit: "count"}, {Name: "severity", Type: "string", Role: "dimension"}, {Name: "service", Type: "string", Role: "dimension"}}}, nil +} +func alignedBucketMillis(t time.Time, interval time.Duration) int64 { + n, width := t.UnixMilli(), interval.Milliseconds() + q := n / width + if n%width < 0 { + q-- + } + return q * width +} + +func validateRows(p *Panel, path string, problems *Problems) { + isRow := p.Viz == "logs" || p.Viz == "traces" || p.Viz == "log_patterns" + if p.Options != nil && p.Options.Highlight != "" { + if p.Viz != "logs" && p.Viz != "log_patterns" { + problems.addHint(path+".options.highlight", "highlight applies only to logs and log_patterns", "remove highlight or use a logs or log_patterns panel") + } + if utf8.RuneCountInString(p.Options.Highlight) > 200 { + problems.addHint(path+".options.highlight", "highlight is limited to 200 characters", "shorten highlight to at most 200 characters") + } + } + if !isRow { + return + } + if p.Unit != "" { + problems.addHint(path+".unit", "row panels cannot set unit", "remove unit; row columns have fixed units") + } + if len(p.Thresholds) > 0 { + problems.addHint(path+".thresholds", "row panels cannot set thresholds", "remove thresholds") + } + if p.Options != nil { + if strings.TrimSpace(p.Options.Style) != "" { + problems.addHint(path+".options.style", "row panels cannot set chart styles", "remove options.style") + } + if p.Options.Top != 0 { + problems.addHint(path+".options.top", "row panels cannot set options.top", "remove options.top; use query.limit") + } + if p.Options.Scale != "" { + problems.addHint(path+".options.scale", "row panels cannot set options.scale", "remove options.scale") + } + } + from := "logs" + if p.Viz == "traces" { + from = "spans" + } + if p.SQL != "" { + problems.addHint(path+".sql", "row panels cannot use SQL", "use query {from: "+from+"}") + } + if p.Query == nil { + if p.SQL == "" { + problems.addHint(path+".query", "row panels require a structured query", "use query {from: "+from+"}") + } + return + } + q := p.Query + if q.Limit < 0 || q.Limit > 1000 { + problems.addHint(path+".query.limit", "limit must be 0 to 1000", "use a limit from 1 to 1000 or omit it for the default") + } + if q.Histogram != nil { + problems.addHint(path+".query.histogram", "histogram applies only to heatmap and histogram", "remove histogram or use a heatmap or histogram panel") + } + if p.Viz == "traces" { + if q.From != "spans" { + problems.addHint(path+".query.from", "traces reads spans", "use query {from: spans}") + } + if q.Sort != "" && q.Sort != "duration_ms" && q.Sort != "errors" && q.Sort != "+start" { + problems.addHint(path+".query.sort", "traces sort is duration_ms, errors or +start", "use sort duration_ms, errors, +start or omit sort") + } + } else { + if q.From != "logs" { + problems.addHint(path+".query.from", "logs and log_patterns read logs", "use query {from: logs}") + } + } + if p.Viz == "logs" && q.Sort != "" && q.Sort != "time" && q.Sort != "+time" { + problems.addHint(path+".query.sort", "logs sort is time or +time", "use sort time, +time or omit sort") + } + if p.Viz == "log_patterns" { + if len(q.By) != 1 || q.By[0] != "body_template" { + problems.addHint(path+".query.by", "log_patterns groups by body_template", "use by [body_template]") + } + if len(q.Measures) != 1 || q.Measures[0] != "count()" { + problems.addHint(path+".query.measures", "log_patterns requires count()", "use measures [count()]") + } + if q.Sort != "" && q.Sort != "count" { + problems.addHint(path+".query.sort", "log_patterns sort is count", "use sort count or omit sort") + } + if q.Bucket != "" && q.Bucket != "auto" { + if _, ok := buckets[q.Bucket]; !ok { + problems.addHint(path+".query.bucket", "bucket must be auto or a supported interval", "use auto, 10s, 30s, 1m, 5m, 10m, 15m, 30m, 1h, 3h, 6h, 12h or 1d") + } + } + } + if p.Viz == "logs" || p.Viz == "traces" { + if len(q.Measures) > 0 { + problems.addHint(path+".query.measures", "fixed row projections do not take aggregate measures", "remove measures; use log_patterns for counts or a table for aggregates") + } + if len(q.By) > 0 { + problems.addHint(path+".query.by", "logs and traces panels do not group; use log_patterns or a table", "remove by or use log_patterns or a table") + } + if q.Bucket != "" { + problems.addHint(path+".query.bucket", "logs and traces panels do not take a bucket", "remove bucket") + } + } +} diff --git a/internal/panel/rowpanels_test.go b/internal/panel/rowpanels_test.go new file mode 100644 index 00000000..9112e3aa --- /dev/null +++ b/internal/panel/rowpanels_test.go @@ -0,0 +1,546 @@ +package panel + +import ( + "encoding/json" + "fmt" + "reflect" + "strings" + "testing" + "time" + + "github.com/labstack/fanout/internal/telemetry" +) + +func TestM2RowsFixCandidateBound(t *testing.T) { + for _, tc := range []struct{ sort, order string }{{"", "max(duration_ms) DESC"}, {"+start", "min(start_time) ASC"}, {"errors", "max(duration_ms) DESC"}} { + for _, limit := range []int{2, 1000, 2000} { + p := Panel{Viz: "traces", Query: &Query{From: "spans", Sort: tc.sort, Limit: limit}} + c, err := compileRows(&p, nil, Scope{Start: fixtureStart, End: fixtureStart.Add(time.Hour)}) + if err != nil { + t.Fatal(err) + } + candidate, _, ok := strings.Cut(c.SQL, "), roots AS") + want := fmt.Sprintf("ORDER BY %s,namespace,trace_id LIMIT %d", tc.order, min(limit, 1000)+1) + if !ok || !strings.Contains(candidate, want) || strings.Contains(candidate, "OVER(") { + t.Errorf("sort=%q: candidate must be bounded before windows: %s", tc.sort, c.SQL) + } + if tc.sort == "errors" && !strings.Contains(candidate, "status IN ('STATUS_CODE_ERROR','ERROR')") { + t.Error("missing erroring filter") + } + } + } +} + +func TestM2RowsFixProblems(t *testing.T) { + base := func(viz string) Panel { + p := Panel{ID: "p", Title: "Rows", Viz: viz, Query: &Query{From: "logs"}} + if viz == "traces" { + p.Query.From = "spans" + } + if viz == "log_patterns" { + p.Query.Measures = []string{"count()"} + p.Query.By = []string{"body_template"} + } + return p + } + for _, tc := range []struct { + name, viz string + edit func(*Panel) + want Problems + }{ + {"sql", "logs", func(p *Panel) { p.Query = nil; p.SQL = "SELECT * FROM logs" }, Problems{{Path: "panels[0].sql", Message: "row panels cannot use SQL", Hint: "use query {from: logs}"}}}, + {"trace sql", "traces", func(p *Panel) { p.Query = nil; p.SQL = "SELECT * FROM spans" }, Problems{{Path: "panels[0].sql", Message: "row panels cannot use SQL", Hint: "use query {from: spans}"}}}, + {"missing query", "logs", func(p *Panel) { p.Query = nil }, Problems{{Path: "panels[0].query", Message: "row panels require a structured query", Hint: "use query {from: logs}"}}}, + {"patterns sql", "log_patterns", func(p *Panel) { p.Query = nil; p.SQL = "SELECT * FROM logs" }, Problems{{Path: "panels[0].sql", Message: "row panels cannot use SQL", Hint: "use query {from: logs}"}}}, + {"patterns contract", "log_patterns", func(p *Panel) { + p.Query.By = []string{"service"} + p.Query.Measures = []string{"rate()"} + p.Query.Sort = "+count" + }, Problems{ + {Path: "panels[0].query.by", Message: "log_patterns groups by body_template", Hint: "use by [body_template]"}, + {Path: "panels[0].query.measures", Message: "log_patterns requires count()", Hint: "use measures [count()]"}, + {Path: "panels[0].query.sort", Message: "log_patterns sort is count", Hint: "use sort count or omit sort"}, + }}, + {"highlight scope", "traces", func(p *Panel) { p.Options = &Options{Highlight: "x"} }, Problems{{Path: "panels[0].options.highlight", Message: "highlight applies only to logs and log_patterns", Hint: "remove highlight or use a logs or log_patterns panel"}}}, + {"highlight size", "logs", func(p *Panel) { p.Options = &Options{Highlight: strings.Repeat("界", 201)} }, Problems{{Path: "panels[0].options.highlight", Message: "highlight is limited to 200 characters", Hint: "shorten highlight to at most 200 characters"}}}, + {"source", "logs", func(p *Panel) { p.Query.From = "spans" }, Problems{{Path: "panels[0].query.from", Message: "logs and log_patterns read logs", Hint: "use query {from: logs}"}}}, + {"trace source", "traces", func(p *Panel) { p.Query.From = "logs" }, Problems{{Path: "panels[0].query.from", Message: "traces reads spans", Hint: "use query {from: spans}"}}}, + {"log sort", "logs", func(p *Panel) { p.Query.Sort = "foo" }, Problems{{Path: "panels[0].query.sort", Message: "logs sort is time or +time", Hint: "use sort time, +time or omit sort"}}}, + {"trace sort", "traces", func(p *Panel) { p.Query.Sort = "foo" }, Problems{{Path: "panels[0].query.sort", Message: "traces sort is duration_ms, errors or +start", Hint: "use sort duration_ms, errors, +start or omit sort"}}}, + {"measures", "logs", func(p *Panel) { p.Query.Measures = []string{"count()"} }, Problems{{Path: "panels[0].query.measures", Message: "fixed row projections do not take aggregate measures", Hint: "remove measures; use log_patterns for counts or a table for aggregates"}}}, + {"by", "logs", func(p *Panel) { p.Query.By = []string{"service"} }, Problems{{Path: "panels[0].query.by", Message: "logs and traces panels do not group; use log_patterns or a table", Hint: "remove by or use log_patterns or a table"}}}, + {"bucket", "traces", func(p *Panel) { p.Query.Bucket = "auto" }, Problems{{Path: "panels[0].query.bucket", Message: "logs and traces panels do not take a bucket", Hint: "remove bucket"}}}, + {"style", "logs", func(p *Panel) { p.Options = &Options{Style: "line"} }, Problems{{Path: "panels[0].options.style", Message: "row panels cannot set chart styles", Hint: "remove options.style"}}}, + {"unit", "logs", func(p *Panel) { p.Unit = "ms" }, Problems{{Path: "panels[0].unit", Message: "row panels cannot set unit", Hint: "remove unit; row columns have fixed units"}}}, + {"thresholds", "traces", func(p *Panel) { p.Thresholds = []Threshold{{Value: 1, Status: "bad"}} }, Problems{{Path: "panels[0].thresholds", Message: "row panels cannot set thresholds", Hint: "remove thresholds"}}}, + {"top", "log_patterns", func(p *Panel) { p.Options = &Options{Top: 2} }, Problems{{Path: "panels[0].options.top", Message: "row panels cannot set options.top", Hint: "remove options.top; use query.limit"}}}, + {"scale", "logs", func(p *Panel) { p.Options = &Options{Scale: "log"} }, Problems{{Path: "panels[0].options.scale", Message: "row panels cannot set options.scale", Hint: "remove options.scale"}}}, + {"limit", "logs", func(p *Panel) { p.Query.Limit = 1001 }, Problems{{Path: "panels[0].query.limit", Message: "limit must be 0 to 1000", Hint: "use a limit from 1 to 1000 or omit it for the default"}}}, + {"histogram", "logs", func(p *Panel) { p.Query.Histogram = &Histogram{} }, Problems{{Path: "panels[0].query.histogram", Message: "histogram applies only to heatmap and histogram", Hint: "remove histogram or use a heatmap or histogram panel"}}}, + {"pattern bucket", "log_patterns", func(p *Panel) { p.Query.Bucket = "2s" }, Problems{{Path: "panels[0].query.bucket", Message: "bucket must be auto or a supported interval", Hint: "use auto, 10s, 30s, 1m, 5m, 10m, 15m, 30m, 1h, 3h, 6h, 12h or 1d"}}}, + {"empty filter", "logs", func(p *Panel) { p.Query.Where = []string{" "} }, Problems{{Path: "panels[0].query.where[0]", Message: "filters are 1 to 500 characters", Hint: "use a nonempty filter of at most 500 characters"}}}, + {"filter count", "logs", func(p *Panel) { + for range 17 { + p.Query.Where = append(p.Query.Where, "service = 's'") + } + }, Problems{{Path: "panels[0].query.where", Message: "at most 16 filters per query", Hint: "remove filters until at most 16 remain"}}}, + } { + t.Run(tc.name, func(t *testing.T) { + p := base(tc.viz) + tc.edit(&p) + d := Dashboard{Name: "Rows", Panels: []Panel{p}} + Normalize(&d) + if got := Validate(&d); !reflect.DeepEqual(got, tc.want) { + t.Fatalf("got %#v; want %#v", got, tc.want) + } + }) + } + // Every row type rejects every inapplicable option, independently. + for _, viz := range []string{"logs", "traces", "log_patterns"} { + p := base(viz) + p.Unit = "count" + p.Thresholds = []Threshold{{Value: 1, Status: "bad"}} + p.Options = &Options{Top: 2, Scale: "linear"} + d := Dashboard{Name: "Rows", Panels: []Panel{p}} + Normalize(&d) + got := Validate(&d) + if len(got) != 4 { + t.Fatalf("%s: %#v", viz, got) + } + for _, problem := range got { + if problem.Hint == "" { + t.Fatalf("missing hint: %#v", problem) + } + } + } + // Non-row panels receive the same specific highlight applicability rule. + p := base("table") + p.Query.Measures = []string{"count()"} + p.Options = &Options{Highlight: "x"} + d := Dashboard{Name: "Rows", Panels: []Panel{p}} + Normalize(&d) + want := Problems{{Path: "panels[0].options.highlight", Message: "highlight applies only to logs and log_patterns", Hint: "remove highlight or use a logs or log_patterns panel"}} + if got := Validate(&d); !reflect.DeepEqual(got, want) { + t.Fatalf("table highlight: %#v", got) + } +} + +func TestM2RowsFixPatternRankingAndBound(t *testing.T) { + engine, repo := newTestEngine(t) + var logs []telemetry.Log + for i, count := range []int{1, 3, 2} { + for range count { + n := fixtureStart.UnixNano() + body := fmt.Sprintf("pattern-%d", i) + logs = append(logs, telemetry.Log{Body: body, BodyTemplate: body, EventUnixNanos: n, TimeUnixNanos: n, IngestedAt: n}) + } + } + commit(t, repo, nil, logs) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + p := Panel{ID: "p", Title: "Patterns", Viz: "log_patterns", Query: &Query{From: "logs", Measures: []string{"count()"}, By: []string{"body_template"}, Bucket: "auto", Limit: 2}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: Dashboard{Name: "Patterns", Time: Time{Range: "1h"}, Panels: []Panel{p}}}) + if err != nil { + t.Fatal(err) + } + f := got[0].Frame + if got[0].Status != StatusOK || f.Rows != 2 || !f.Truncated || f.Values[0][0] != "pattern-1" || f.Values[0][1] != "pattern-2" || f.Values[1][0] != float64(3) || f.Values[1][1] != float64(2) { + t.Fatalf("rank: %+v %+v", got, f) + } + c, err := compileRows(&p, nil, Scope{Start: fixtureStart, End: fixtureStart.Add(time.Hour), Interval: time.Minute}) + if err != nil { + t.Fatal(err) + } + buckets, _, _ := strings.Cut(strings.Split(c.SQL, "buckets AS (")[1], "),\ndense") + if !strings.Contains(buckets, "SEMI JOIN patterns") { + t.Fatalf("unbounded buckets: %s", buckets) + } + // With only two candidates (one row and its sentinel), ascending + // candidate ranking would drop the most frequent pattern entirely. + p.Query.Limit = 1 + got, err = e.Run(t.Context(), RunRequest{Dashboard: Dashboard{Name: "Patterns", Time: Time{Range: "1h"}, Panels: []Panel{p}}}) + if err != nil { + t.Fatal(err) + } + f = got[0].Frame + if got[0].Status != StatusOK || f.Rows != 1 || !f.Truncated || f.Values[0][0] != "pattern-1" || f.Values[1][0] != float64(3) { + t.Fatalf("candidate rank: %+v", f) + } +} + +func TestM2RowsFixRedactedExemplarHighlight(t *testing.T) { + engine, repo := newTestEngine(t) + n := fixtureStart.UnixNano() + spans := []telemetry.Span{{Namespace: "shop", TraceID: "secret", SpanID: "root", ServiceName: "s", Name: "root", StartUnixNanos: n, EndUnixNanos: n + int64(time.Millisecond), DurationMS: 1, IngestedAt: n}} + logs := []telemetry.Log{{Namespace: "shop", TraceID: "secret", Body: "token=s3cr3t", EventUnixNanos: n, TimeUnixNanos: n, IngestedAt: n}} + commit(t, repo, spans, logs) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Logs", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "p", Title: "Logs", Viz: "logs", Query: &Query{From: "logs"}, Options: &Options{}}}} + for _, tc := range []struct { + highlight string + want int + }{{"s3cr3t", 0}, {"[REDACTED]", 1}} { + d.Panels[0].Options.Highlight = tc.highlight + got, err := e.Exemplars(t.Context(), ExemplarRequest{Dashboard: d, PanelID: "p", From: fixtureStart, To: fixtureStart.Add(time.Hour)}) + if err != nil { + t.Fatal(err) + } + if len(got.Traces) != tc.want || (tc.want > 0 && (got.Traces[0].TraceID != "secret" || got.Traces[0].Namespace != "shop")) { + t.Fatalf("highlight=%q: %+v", tc.highlight, got) + } + } +} + +func TestM2RowsFixErroringRootRanking(t *testing.T) { + engine, repo := newTestEngine(t) + n := fixtureStart.UnixNano() + var spans []telemetry.Span + for i, duration := range []float64{10, 100, 1000} { + root := telemetry.Span{Namespace: "shop", TraceID: fmt.Sprintf("t%d", i), SpanID: "root", ServiceName: "s", StartUnixNanos: n, EndUnixNanos: n + int64(time.Millisecond), DurationMS: duration, IngestedAt: n} + spans = append(spans, root) + if i < 2 { + child := root + child.SpanID = "child" + child.ParentSpanID = "root" + child.DurationMS = float64(200 - i*100) + child.StatusCode = "ERROR" + spans = append(spans, child) + } + } + commit(t, repo, spans, nil) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Erroring", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "p", Title: "Traces", Viz: "traces", Query: &Query{From: "spans", Sort: "errors", Limit: 2}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + f := got[0].Frame + if got[0].Status != StatusOK || f.Rows != 2 || f.Values[0][0] != "t1" || f.Values[4][0] != float64(100) || f.Values[0][1] != "t0" || f.Values[5][0] != "STATUS_CODE_ERROR" { + t.Fatalf("error filter then root duration: %+v %+v", got, f) + } +} + +func TestM2RowsFixTrendMetadata(t *testing.T) { + engine, repo := newTestEngine(t) + n := fixtureStart.UnixNano() + commit(t, repo, nil, []telemetry.Log{{Body: "pattern", BodyTemplate: "pattern", EventUnixNanos: n, TimeUnixNanos: n, IngestedAt: n}}) + e := NewExecutor(engine, 30) + for _, tc := range []struct { + window time.Duration + bucket, want string + step time.Duration + }{{30 * 24 * time.Hour, "auto", "6h", 6 * time.Hour}, {7 * 24 * time.Hour, "10s", "1h", time.Hour}} { + start := fixtureStart.Add(-time.Hour) + end := start.Add(tc.window) + e.now = func() time.Time { return end } + p := Panel{ID: "p", Title: "Patterns", Viz: "log_patterns", Query: &Query{From: "logs", Measures: []string{"count()"}, By: []string{"body_template"}, Bucket: tc.bucket}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: Dashboard{Name: "Trends", Time: Time{From: &start, To: &end}, Panels: []Panel{p}}, Widths: map[string]int{"p": 1600}}) + if err != nil { + t.Fatal(err) + } + if got[0].Status != StatusOK || got[0].Interval != tc.want { + t.Errorf("window=%v: %+v", tc.window, got[0]) + } + c, err := compileRows(&p, nil, Scope{Start: start, End: end, Interval: bucketInterval(tc.bucket, tc.window, 1600)}) + if err != nil { + t.Fatal(err) + } + wantStart := start.Truncate(tc.step).UTC() + if c.TrendInterval != tc.step || !c.TrendStart.Equal(wantStart) { + t.Errorf("compiler metadata: interval=%v start=%v", c.TrendInterval, c.TrendStart) + } + raw, _ := json.Marshal(got[0].Frame) + var frame struct { + Trend *struct { + StartMS int64 `json:"start_ms"` + StepMS int64 `json:"step_ms"` + } `json:"trend"` + } + if err := json.Unmarshal(raw, &frame); err != nil { + t.Fatal(err) + } + if frame.Trend == nil || frame.Trend.StartMS != wantStart.UnixMilli() || frame.Trend.StepMS != tc.step.Milliseconds() { + t.Errorf("frame metadata: %s", raw) + } + var trend []float64 + _ = json.Unmarshal([]byte(got[0].Frame.Values[2][0].(string)), &trend) + var total float64 + for _, v := range trend { + total += v + } + if len(trend) > 240 || total != 1 { + t.Fatalf("trend=%v", trend) + } + } +} + +func TestM2RowsFixEmptyDiagnosisAndBodyCap(t *testing.T) { + engine, repo := newTestEngine(t) + n := fixtureStart.UnixNano() + long := strings.Repeat("界", 1990) + " token=s3cr3t " + strings.Repeat("尾", 30) + // The JSON password straddles the 2,000-character cut. Its redaction + // needs the closing quote, so cutting before redacting would leak a + // prefix of the secret. + straddle := strings.Repeat("a", 1975) + `{"password":"hunter2hunter2hunter2"} tail` + logs := []telemetry.Log{{Body: long, EventUnixNanos: n, TimeUnixNanos: n, IngestedAt: n}, {Body: strings.Repeat("界", 2000), EventUnixNanos: n + 1, TimeUnixNanos: n + 1, IngestedAt: n}, {Body: straddle, EventUnixNanos: n + 2, TimeUnixNanos: n + 2, IngestedAt: n}} + span := telemetry.Span{TraceID: "ok", SpanID: "root", StartUnixNanos: n, EndUnixNanos: n + int64(time.Millisecond), DurationMS: 1, IngestedAt: n} + commit(t, repo, []telemetry.Span{span}, logs) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Rows", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "p", Title: "Logs", Viz: "logs", Query: &Query{From: "logs", Sort: "+time"}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + want := strings.Repeat("界", 1990) + " token=[R…" + if got[0].Status != StatusOK || got[0].Frame.Values[3][0] != want || got[0].Frame.Values[3][1] != strings.Repeat("界", 2000) { + t.Errorf("body cap after redaction: got %d characters", len([]rune(got[0].Frame.Values[3][0].(string)))) + } + if body, _ := got[0].Frame.Values[3][2].(string); strings.Contains(body, "hunter") { + t.Errorf("secret straddling the cut leaked: %q", body[len(body)-40:]) + } + d.Panels[0].Options = &Options{Highlight: "s3cr3t"} + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + if got[0].Status != StatusEmpty || got[0].Diagnosis != `No logs contain "s3cr3t" in this range` { + t.Fatalf("highlight diagnosis: %+v", got) + } + d.Panels[0] = Panel{ID: "p", Title: "Traces", Viz: "traces", Query: &Query{From: "spans", Sort: "errors"}} + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + if got[0].Status != StatusEmpty || got[0].Diagnosis != "No erroring traces in this range" { + t.Fatalf("erroring diagnosis: %+v", got) + } +} + +func TestM2RowsExecuteAndRedact(t *testing.T) { + engine, repo := newTestEngine(t) + at := fixtureStart.UnixNano() + logs := []telemetry.Log{ + {Namespace: "shop", ServiceName: "checkout", TimeUnixNanos: at, EventUnixNanos: at, IngestedAt: at, Body: "payment token=hidden failed", BodyTemplate: "payment token=hidden failed", Severity: "ERROR", SeverityNumber: 17, TraceID: "t"}, + {Namespace: "shop", ServiceName: "checkout", TimeUnixNanos: at + int64(time.Minute), EventUnixNanos: at + int64(time.Minute), IngestedAt: at, Body: "payment token=hidden failed", BodyTemplate: "payment token=hidden failed", Severity: "ERROR", SeverityNumber: 17, TraceID: "t"}, + } + commit(t, repo, shopSpans(), logs) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Rows", Time: Time{Range: "1h"}, Panels: []Panel{ + {ID: "logs", Title: "Errors", Viz: "logs", Options: &Options{Highlight: "failed"}, Query: &Query{From: "logs", Where: []string{"service = 'checkout'"}}}, + {ID: "patterns", Title: "Patterns", Viz: "log_patterns", Query: &Query{From: "logs", Measures: []string{"count()"}, By: []string{"body_template"}, Bucket: "auto"}}, + {ID: "traces", Title: "Slow traces", Viz: "traces", Query: &Query{From: "spans", Where: []string{"service = 'checkout'"}, Sort: "duration_ms", Limit: 20}}, + }} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + for _, r := range got { + if r.Status != "ok" { + t.Fatalf("row panel: %+v", r) + } + raw, _ := json.Marshal(r.Frame) + if strings.Contains(string(raw), "hidden") { + t.Fatal("secret in rows") + } + } + if got[0].Frame.Rows != 2 || got[1].Frame.Rows != 1 || got[1].Frame.Values[1][0].(float64) != 2 || got[2].Frame.Rows != 20 { + t.Fatalf("frames: %+v", got) + } + var trend []float64 + if err := json.Unmarshal([]byte(got[1].Frame.Values[2][0].(string)), &trend); err != nil || len(trend) > 240 { + t.Fatalf("trend %v %v", trend, err) + } + var total float64 + for _, n := range trend { + total += n + } + if total != 2 { + t.Fatalf("trend count %v", total) + } + d.Panels = d.Panels[:1] + d.Panels[0].Options.Highlight = "hidden" + got, err = e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != "empty" { + t.Fatalf("unredacted search: %+v %v", got, err) + } +} +func TestM2RowsCap(t *testing.T) { + engine, repo := newTestEngine(t) + logs := make([]telemetry.Log, 1002) + for i := range logs { + n := fixtureStart.Add(time.Duration(i) * time.Millisecond).UnixNano() + logs[i] = telemetry.Log{ServiceName: "s", TimeUnixNanos: n, EventUnixNanos: n, IngestedAt: n, Body: fmt.Sprint(i)} + } + commit(t, repo, nil, logs) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Rows", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "logs", Title: "Logs", Viz: "logs", Query: &Query{From: "logs"}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + if got[0].Frame.Rows != 1000 || !got[0].Frame.Truncated { + t.Fatalf("cap: %+v", got) + } + d.Panels[0].Query.Where = []string{"body IN (SELECT body FROM logs)"} + if _, err := e.Run(t.Context(), RunRequest{Dashboard: d}); err == nil { + t.Fatal("row guard bypass") + } +} + +func TestM2LogPatternsHonoursLimit50(t *testing.T) { + engine, repo := newTestEngine(t) + logs := []telemetry.Log{} + for i := range 60 { + n := fixtureStart.UnixNano() + logs = append(logs, telemetry.Log{ServiceName: "s", Body: fmt.Sprintf("pattern-%d", i), BodyTemplate: fmt.Sprintf("pattern-%d", i), EventUnixNanos: n, IngestedAt: n}) + } + commit(t, repo, nil, logs) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Patterns", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "p", Title: "P", Viz: "log_patterns", Query: &Query{From: "logs", Measures: []string{"count()"}, By: []string{"body_template"}, Bucket: "auto"}}}} + for _, tc := range []struct{ limit, want int }{{0, 20}, {30, 30}, {50, 50}, {80, 50}} { + d.Panels[0].Query.Limit = tc.limit + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Frame == nil || got[0].Frame.Rows != tc.want { + t.Fatalf("limit=%d: %+v %v", tc.limit, got, err) + } + } +} + +func TestM2RowsNanosecondOrderingAndPatternTail(t *testing.T) { + engine, repo := newTestEngine(t) + start := fixtureStart + end := start.Add(30*time.Second + time.Nanosecond) + logs := []telemetry.Log{} + for _, tc := range []struct { + offset time.Duration + body string + }{ + {time.Nanosecond, "first"}, {2 * time.Nanosecond, "second"}, {30 * time.Second, "tail"}, + } { + n := start.Add(tc.offset).UnixNano() + logs = append(logs, telemetry.Log{Namespace: "shop", ServiceName: "s", Body: tc.body, BodyTemplate: "pattern", EventUnixNanos: n, TimeUnixNanos: n, IngestedAt: n}) + } + commit(t, repo, nil, logs) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return end } + d := Dashboard{Name: "Precise rows", Time: Time{From: &start, To: &end}, Panels: []Panel{ + {ID: "logs", Title: "Logs", Viz: "logs", Query: &Query{From: "logs", Limit: 2}}, + {ID: "patterns", Title: "Patterns", Viz: "log_patterns", Query: &Query{From: "logs", Measures: []string{"count()"}, By: []string{"body_template"}, Bucket: "30s"}}, + }} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + if got[0].Status != StatusOK || got[0].Frame.Values[3][0] != "tail" || got[0].Frame.Values[3][1] != "second" || !got[0].Frame.Truncated { + t.Fatalf("nanosecond sort: %+v", got[0]) + } + var trend []float64 + if got[1].Status != StatusOK { + t.Fatalf("patterns: %+v", got[1]) + } + if err := json.Unmarshal([]byte(got[1].Frame.Values[2][0].(string)), &trend); err != nil { + t.Fatal(err) + } + var total float64 + for _, n := range trend { + total += n + } + if total != 3 { + t.Fatalf("tail lost: count=%v trend=%v", got[1].Frame.Values[1][0], trend) + } +} + +func TestM2RowsTraceSortsAndSentinel(t *testing.T) { + engine, repo := newTestEngine(t) + spans := make([]telemetry.Span, 1002) + for i := range spans { + n := fixtureStart.Add(time.Duration(i) * time.Millisecond).UnixNano() + spans[i] = telemetry.Span{Namespace: "shop", TraceID: fmt.Sprintf("t%04d", i), SpanID: "root", ServiceName: "s", Name: "root", StartUnixNanos: n, EndUnixNanos: n + int64(time.Millisecond), DurationMS: float64(i + 1), IngestedAt: n} + } + child := spans[0] + child.ParentSpanID, child.SpanID, child.StatusCode, child.DurationMS = "root", "child", "ERROR", 5000 + other := spans[0] + other.Namespace, other.DurationMS = "other", 2000 + spans = append(spans, child, other) + commit(t, repo, spans, nil) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Traces", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "traces", Title: "Traces", Viz: "traces", Query: &Query{From: "spans"}}}} + for _, tc := range []struct { + sort string + limit, rows int + first, namespace string + truncated bool + }{ + {"", 0, 1000, "t0000", "other", true}, + {"+start", 2, 2, "t0000", "other", true}, + {"errors", 20, 1, "t0000", "shop", false}, + } { + d.Panels[0].Query.Sort, d.Panels[0].Query.Limit = tc.sort, tc.limit + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil { + t.Fatal(err) + } + f := got[0].Frame + if got[0].Status != StatusOK || f.Rows != tc.rows || f.Truncated != tc.truncated || len(f.Columns) != 7 || f.Values[0][0] != tc.first || f.Values[1][0] != tc.namespace || f.Values[6][0] != fixtureStart.UnixMilli() { + t.Fatalf("sort=%q: %+v frame=%+v", tc.sort, got[0], f) + } + if tc.sort == "errors" && (f.Values[5][0] != "STATUS_CODE_ERROR" || f.Values[4][0] != float64(1)) { + t.Fatalf("child error/root metadata: %+v", f) + } + } + d.Panels[0].Query.Where = []string{"service = 'absent'"} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != StatusEmpty || got[0].Frame.Rows != 0 { + t.Fatalf("empty: %+v %v", got, err) + } +} + +func TestM2RowsValidation(t *testing.T) { + for _, tc := range []struct { + name, viz, from, sort, bucket, highlight string + measures, by []string + valid bool + }{ + {name: "logs", viz: "logs", from: "logs", sort: "+time", valid: true}, + {name: "traces", viz: "traces", from: "spans", sort: "+start", valid: true}, + {name: "patterns", viz: "log_patterns", from: "logs", sort: "count", measures: []string{"count()"}, by: []string{"body_template"}, valid: true}, + {name: "unicode highlight", viz: "logs", from: "logs", highlight: strings.Repeat("界", 200), valid: true}, + {name: "long highlight", viz: "logs", from: "logs", highlight: strings.Repeat("界", 201)}, + {name: "trace highlight", viz: "traces", from: "spans", highlight: "error"}, + {name: "nonlog highlight", viz: "table", from: "logs", measures: []string{"count()"}, highlight: "error"}, + {name: "log measure", viz: "logs", from: "logs", measures: []string{"count()"}}, + {name: "trace measure", viz: "traces", from: "spans", measures: []string{"count()"}}, + {name: "log grouping", viz: "logs", from: "logs", by: []string{"service"}}, + {name: "trace grouping", viz: "traces", from: "spans", by: []string{"service"}}, + {name: "log bucket", viz: "logs", from: "logs", bucket: "auto"}, + {name: "trace bucket", viz: "traces", from: "spans", bucket: "auto"}, + {name: "log source", viz: "logs", from: "spans"}, + {name: "trace source", viz: "traces", from: "logs"}, + {name: "log sql sort", viz: "logs", from: "logs", sort: "time DESC; SELECT 1"}, + {name: "trace sort", viz: "traces", from: "spans", sort: "start"}, + {name: "pattern grouping", viz: "log_patterns", from: "logs", measures: []string{"count()"}, by: []string{"service"}}, + {name: "pattern measure", viz: "log_patterns", from: "logs", measures: []string{"rate()"}, by: []string{"body_template"}}, + } { + t.Run(tc.name, func(t *testing.T) { + d := Dashboard{Name: "Rows", Panels: []Panel{{ID: "p", Title: "Rows", Viz: tc.viz, Options: &Options{Highlight: tc.highlight}, Query: &Query{From: tc.from, Sort: tc.sort, Bucket: tc.bucket, Measures: tc.measures, By: tc.by}}}} + Normalize(&d) + if problems := Validate(&d); (len(problems) == 0) != tc.valid { + t.Fatalf("valid=%v: %v", tc.valid, problems) + } + }) + } + for _, viz := range []string{"logs", "log_patterns", "traces"} { + d := Dashboard{Name: "SQL rows", Panels: []Panel{{ID: "p", Title: "Rows", Viz: viz, SQL: "SELECT * FROM logs"}}} + Normalize(&d) + if len(Validate(&d)) == 0 { + t.Fatalf("%s accepted SQL", viz) + } + } +} diff --git a/internal/panel/series_palette_test.go b/internal/panel/series_palette_test.go new file mode 100644 index 00000000..58ac44e3 --- /dev/null +++ b/internal/panel/series_palette_test.go @@ -0,0 +1,211 @@ +package panel + +import ( + "fmt" + "slices" + "testing" + "time" +) + +func TestSeriesTopDefaultAndClamp(t *testing.T) { + for _, top := range []int{0, 6, 8, 20} { + p := Panel{Viz: "timeseries", Options: &Options{Top: top}} + if got := p.Top(); got != 6 { + t.Errorf("top=%d: got %d, want 6", top, got) + } + } + if got := (&Panel{Viz: "timeseries"}).Top(); got != 6 { + t.Errorf("omitted options: got %d, want 6", got) + } +} + +func TestSeriesTopEightValidationProblem(t *testing.T) { + d := Dashboard{Name: "Series", Panels: []Panel{{ID: "s", Title: "S", Viz: "timeseries", Options: &Options{Top: 8}, Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service"}}}}} + Normalize(&d) + for _, problem := range Validate(&d) { + if problem.Path == "panels[0].options.top" && problem.Hint != "" { + return + } + } + t.Fatal("top: 8 must produce an options.top Problem with a hint") +} + +func TestSeriesSeventhFoldsIntoOther(t *testing.T) { + duck, repo := newTestEngine(t) + spans := shopSpans()[:0] + base := shopSpans()[0] + for service := range 7 { + for event := range 7 - service { + sp := base + sp.SpanID = fmt.Sprintf("s%d_e%d", service, event) + sp.TraceID = sp.SpanID + sp.ServiceName = fmt.Sprintf("svc%d", service) + sp.StartUnixNanos = fixtureStart.UnixNano() + spans = append(spans, sp) + } + } + commit(t, repo, spans, nil) + e := NewExecutor(duck, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Series", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "s", Title: "S", Viz: "timeseries", Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service"}, Bucket: "1m"}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Frame == nil { + t.Fatalf("run: %+v %v", got, err) + } + f := got[0].Frame + for row, name := range f.Values[1] { + if name == "Other (1)" && f.Values[2][row] == float64(1) && f.Rows == 7 { + return + } + } + t.Fatalf("seventh service was not folded into Other: %+v", f) +} + +func TestGroupedBarOtherAggregatesBeforeErrorRate(t *testing.T) { + duck, repo := newTestEngine(t) + spans := shopSpans()[:0] + base := shopSpans()[0] + for service := range 8 { + for event := range 8 - service { + sp := base + sp.SpanID = fmt.Sprintf("s%d_e%d", service, event) + sp.TraceID = sp.SpanID + sp.ServiceName = fmt.Sprintf("svc%d", service) + sp.HTTPRoute = "/cart" + sp.StatusCode = "STATUS_CODE_OK" + if service == 7 { + sp.StatusCode = "STATUS_CODE_ERROR" + } + spans = append(spans, sp) + } + } + commit(t, repo, spans, nil) + e := NewExecutor(duck, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Bars", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "s", Title: "S", Viz: "bar", Better: "higher", Query: &Query{From: "spans", Measures: []string{"error_rate()"}, By: []string{"http_route", "service"}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Frame == nil { + t.Fatalf("run: %+v %v", got, err) + } + f := got[0].Frame + for row, name := range f.Values[1] { + if name == "Other (2)" && f.Rows == 7 { + if value := f.Values[2][row].(float64); value < 33.33 || value > 33.34 { + t.Fatalf("Other error rate=%v, want weighted 100/3", value) + } + return + } + } + t.Fatalf("missing grouped-bar Other: %+v", f) +} + +func TestM3TimelineTwelveRows(t *testing.T) { + duck, repo := newTestEngine(t) + spans := shopSpans()[:0] + for i := range 12 { + sp := shopSpans()[0] + sp.SpanID = fmt.Sprint(i) + sp.TraceID = sp.SpanID + sp.ServiceName = fmt.Sprintf("svc%02d", i) + spans = append(spans, sp) + } + commit(t, repo, spans, nil) + e := NewExecutor(duck, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Rows", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "states", Title: "States", Viz: "state_timeline", Options: &Options{Top: 12}, Thresholds: []Threshold{{Value: 5, Status: "bad"}}, Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service"}, Bucket: "1m"}}}} + Normalize(&d) + if problems := Validate(&d); len(problems) != 0 { + t.Fatalf("timeline rejected: %+v", problems) + } + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Frame == nil || got[0].Frame.Rows != 12 { + t.Fatalf("12 rows: %+v %v", got, err) + } + if (&Panel{Viz: "state_timeline"}).Top() != 8 || (&Panel{Viz: "state_timeline", Options: &Options{Top: 30}}).Top() != 20 { + t.Fatal("timeline defaults and cap") + } + d.Panels[0].Viz = "timeseries" + if problems := Validate(&d); len(problems) == 0 { + t.Fatal("categorical top 12 accepted") + } +} + +func TestI4WorstFirstSeries(t *testing.T) { + duck, repo := newTestEngine(t) + spans := shopSpans()[:0] + for service := range 6 { + volume := 100 + if service == 5 { + volume = 25 + } + for event := range volume { + sp := shopSpans()[0] + sp.SpanID = fmt.Sprintf("s%d_e%d", service, event) + sp.TraceID = sp.SpanID + sp.ServiceName = fmt.Sprintf("svc%d", service) + sp.StatusCode = "STATUS_CODE_OK" + if event == 0 || service == 5 && event < 10 { + sp.StatusCode = "STATUS_CODE_ERROR" + } + sp.DurationMS = float64(10 + service) + if service == 0 { + sp.DurationMS = 2000 + } + if service == 5 { + sp.DurationMS = 1000 + } + sp.EndUnixNanos = sp.StartUnixNanos + int64(sp.DurationMS*1e6) + spans = append(spans, sp) + } + } + commit(t, repo, spans, nil) + e := NewExecutor(duck, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + for _, tc := range []struct { + measure, better string + kept []string + }{ + {"error_rate()", "", []string{"svc0", "svc1", "svc5"}}, + {"count()", "", []string{"svc0", "svc1", "svc2"}}, + {"p95(duration_ms)", "", []string{"svc0", "svc4", "svc5"}}, + {"avg(duration_ms)", "higher", []string{"svc1", "svc2", "svc3"}}, + } { + t.Run(tc.measure+tc.better, func(t *testing.T) { + d := Dashboard{Name: "Ranking", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "s", Title: "S", Viz: "timeseries", Better: tc.better, Options: &Options{Top: 3}, Query: &Query{From: "spans", Measures: []string{tc.measure}, By: []string{"service"}, Bucket: "1m"}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Frame == nil { + t.Fatalf("run: %+v %v", got, err) + } + f := got[0].Frame + var kept []string + folded := false + for row, name := range f.Values[1] { + if name == "Other (3)" { + folded = true + continue + } + kept = append(kept, name.(string)) + if tc.measure == "error_rate()" && name == "svc5" && f.Values[2][row] != float64(40) { + t.Fatalf("display error rate %v", f.Values[2][row]) + } + } + slices.Sort(kept) + if !slices.Equal(kept, tc.kept) || !folded || f.Rows != 4 { + t.Fatalf("kept=%v want=%v fold=%v frame=%+v", kept, tc.kept, folded, f) + } + }) + } +} + +func TestM3NonCategoricalLimits(t *testing.T) { + for _, viz := range []string{"bar", "table", "state_timeline", "scatter", "heatmap"} { + p := Panel{Viz: viz} + if p.Top() != 8 { + t.Errorf("%s default %d, want 8", viz, p.Top()) + } + p.Options = &Options{Top: 12} + if p.Top() != 12 { + t.Errorf("%s top12 clamped", viz) + } + } +} diff --git a/internal/panel/spec.go b/internal/panel/spec.go index 3268f549..d97e2d07 100644 --- a/internal/panel/spec.go +++ b/internal/panel/spec.go @@ -51,12 +51,13 @@ type Panel struct { ID string `json:"id" jsonschema:"Stable identifier: lowercase letters, digits and underscores; edits address panels by id"` Title string `json:"title" jsonschema:"Panel title, at most 80 characters; may reference $variables"` Description string `json:"description,omitempty" jsonschema:"Help text, at most 280 characters"` - Viz string `json:"viz" jsonschema:"stat, gauge, timeseries, bar, table or text"` + Viz string `json:"viz" jsonschema:"stat, gauge, timeseries, bar, table, text, heatmap, histogram, scatter, state_timeline, logs, log_patterns, traces, service_map or health; log_patterns returns body_template, count, trend, dominant severity (frequency then higher severity) and top service"` Width int `json:"width,omitempty" jsonschema:"Grid columns from 1 to 12; default depends on viz"` Height string `json:"height,omitempty" jsonschema:"s, m or l; default depends on viz"` Query *Query `json:"query,omitempty" jsonschema:"Structured query; exactly one of query or sql, except text panels"` SQL string `json:"sql,omitempty" jsonschema:"One read-only SELECT over spans, logs, metrics, service_rollup or edge_rollup; must use $__window(time_column)"` Unit string `json:"unit,omitempty" jsonschema:"ms, s, ns, percent, ratio, count, per_second, per_minute, bytes or none; inferred when omitted"` + XUnit string `json:"x_unit,omitempty" jsonschema:"scatter x axis unit; unit describes y"` Reduce string `json:"reduce,omitempty" jsonschema:"stat and gauge: window (default), last, mean, min, max or sum"` Thresholds []Threshold `json:"thresholds,omitempty" jsonschema:"Up to 4 status boundaries"` Better string `json:"better,omitempty" jsonschema:"lower or higher; inferred for known measures"` @@ -73,17 +74,18 @@ type Panel struct { type Query struct { From string `json:"from" jsonschema:"spans, logs or metrics"` Where []string `json:"where,omitempty" jsonschema:"Filter expressions joined by AND, e.g. service = $service or attributes['http.route'] = '/cart'"` - Measures []string `json:"measures" jsonschema:"1 to 6 of fn(field) [as alias]: count(), rate(), error_rate(), share(), avg, min, max, sum, last, p50, p75, p90, p95, p99, quantile(field, q), count_distinct(field)"` + Measures []string `json:"measures,omitempty" jsonschema:"Fixed logs, traces, service_map and health take no measures; other queries take 1 to 6 of fn(field) [as alias]: count(), rate(), error_rate(), share(), avg, min, max, sum, last, p50, p75, p90, p95, p99, quantile(field, q), count_distinct(field)"` By []string `json:"by,omitempty" jsonschema:"Up to 3 grouping fields: columns or attributes['key']"` Bucket string `json:"bucket,omitempty" jsonschema:"auto or 10s, 30s, 1m, 5m, 10m, 15m, 30m, 1h, 3h, 6h, 12h, 1d; required for timeseries"` Histogram *Histogram `json:"histogram,omitempty" jsonschema:"heatmap and histogram panels (milestone 2)"` - Sort string `json:"sort,omitempty" jsonschema:"Measure alias to order by, descending; prefix + for ascending"` - Limit int `json:"limit,omitempty" jsonschema:"Row limit, at most 1000"` + Sort string `json:"sort,omitempty" jsonschema:"Measure alias descending (+ ascending); logs: time or +time; traces: duration_ms, errors or +start; log_patterns: count"` + Limit int `json:"limit,omitempty" jsonschema:"Row limit, at most 1000; logs and traces default 1000; log_patterns default 20, capped at 50; health and service_map default 400, capped at 400"` } type Histogram struct { - Field string `json:"field"` - Buckets string `json:"buckets,omitempty"` + Temporality string `json:"temporality,omitempty" jsonschema:"metric histograms: cumulative (also unknown/default) or delta; cumulative uses last minus first per bound, clamped at zero; a series whose counter resets mid-window contributes 0 for that window"` + Field string `json:"field" jsonschema:"spans duration_ms with log2 buckets or metrics value with explicit buckets; negative span durations clamp to [0,1), +Inf goes to overflow, NaN is excluded because it is not a measurement"` + Buckets string `json:"buckets,omitempty"` } type Threshold struct { @@ -93,10 +95,23 @@ type Threshold struct { } type Options struct { - Style string `json:"style,omitempty" jsonschema:"timeseries: line, area, bars or stacked (additive measures only)"` - Scale string `json:"scale,omitempty" jsonschema:"linear or log"` - Top int `json:"top,omitempty" jsonschema:"Series limit; the rest become Other; default 8"` - Legend string `json:"legend,omitempty" jsonschema:"auto or hidden"` + Split string `json:"split,omitempty" jsonschema:"bar: deploy, comparing before and since the latest deploy"` + Columns []ColumnFormat `json:"columns,omitempty" jsonschema:"table column formats"` + + Highlight string `json:"highlight,omitempty" jsonschema:"logs and log_patterns: literal redacted-body search, at most 200 characters"` + Style string `json:"style,omitempty" jsonschema:"timeseries: line, area, bars or stacked (additive measures only)"` + Scale string `json:"scale,omitempty" jsonschema:"linear or log"` + Top int `json:"top,omitempty" jsonschema:"Categorical series default/max 6; structured series are chosen worst-first by confidence (Wilson lower bound for error rates; at least 20 samples for latency); the rest fold into Other (N); error rates also require 20 requests for eligible ranking; SQL series past six are left out with a note; noncategorical rows default 8 max 20"` + Legend string `json:"legend,omitempty" jsonschema:"auto or hidden"` + XScale string `json:"x_scale,omitempty" jsonschema:"scatter x axis: linear or log"` + YScale string `json:"y_scale,omitempty" jsonschema:"scatter y axis: linear or log"` +} + +type ColumnFormat struct { + Field string `json:"field"` + Format string `json:"format" jsonschema:"unit, bar, status, sparkline, trace_link, service_link or log_template"` + Unit string `json:"unit,omitempty"` + Variable string `json:"variable,omitempty" jsonschema:"service_link: query or custom variable to select"` } type Click struct { @@ -115,10 +130,30 @@ type Grid struct { H int `json:"h"` } -// Top is the series limit for a grouped time series. +// categoricalSeries reports whether top controls categorical colour slots. +func (p *Panel) categoricalSeries() bool { + switch p.Viz { + case "timeseries": + return true + case "bar": + return p.Query != nil && (len(p.Query.By) == 2 || len(p.Query.Measures) > 1) + case "scatter": + return p.Query != nil && len(p.Query.By) == 2 + case "histogram": + return p.Query != nil && len(p.Query.By) == 1 + default: + return false + } +} + +// Top limits categorical series or independently coloured item rows. func (p *Panel) Top() int { + maximum, fallback := 20, 8 + if p.categoricalSeries() { + maximum, fallback = 6, 6 + } if p.Options != nil && p.Options.Top > 0 { - return min(p.Options.Top, 20) + return min(p.Options.Top, maximum) } - return 8 + return fallback } diff --git a/internal/panel/sqlpanel.go b/internal/panel/sqlpanel.go index 865586e4..42a6028b 100644 --- a/internal/panel/sqlpanel.go +++ b/internal/panel/sqlpanel.go @@ -50,6 +50,9 @@ func canonicalSQL(ctx context.Context, parser Parser, expanded string) (string, if err != nil { return "", err } + if err := redactSQLLogTables(ctx, parser, node, nil); err != nil { + return "", err + } rendered, err := parser.RenderSQL(ctx, node) if err != nil { return "", err @@ -60,3 +63,95 @@ func canonicalSQL(ctx context.Context, parser Parser, expanded string) (string, } return rendered, nil } + +// Replace physical logs references with a redacted relation under the same +// alias. Work on DuckDB's AST, never string substitutions: literals and CTE +// names keep their meaning, and PrepareTelemetrySQL still validates every +// underlying relation and function after rendering. Disallowed schemas and +// catalogs stay intact so the boundary rejects them. +func redactSQLLogTables(ctx context.Context, parser Parser, value any, ctes map[string]bool) error { + switch node := value.(type) { + case map[string]any: + if cteMap, ok := node["cte_map"].(map[string]any); ok { + scope := copyCTEScope(ctes) + entries, _ := cteMap["map"].([]any) + for _, entry := range entries { + entry, _ := entry.(map[string]any) + name, _ := entry["key"].(string) + switch strings.ToLower(name) { + case "logs", "spans", "metrics", "service_rollup", "edge_rollup": + return errors.New("CTE names must not shadow telemetry relations") + } + definition, _ := entry["value"].(map[string]any) + if err := redactSQLLogTables(ctx, parser, definition, scope); err != nil { + return err + } + scope[strings.ToLower(name)] = true + } + ctes = scope + } + kind, _ := node["type"].(string) + if kind == "BASE_TABLE" { + name, _ := node["table_name"].(string) + schema, _ := node["schema_name"].(string) + catalog, _ := node["catalog_name"].(string) + cte := catalog == "" && ((schema == "" && ctes[strings.ToLower(name)]) || (schema == "recurring" && ctes["recurring:"+strings.ToLower(name)])) + if strings.EqualFold(name, "logs") && !cte && catalog == "" && (schema == "" || schema == "main" || schema == "telemetry") { + projection, err := parser.ParseSQL(ctx, "SELECT * FROM ("+redactedLogSource()+") AS logs") + if err != nil { + return err + } + replacement, ok := projection["from_table"].(map[string]any) + if !ok { + return errors.New("missing redacted logs projection") + } + if alias, _ := node["alias"].(string); alias != "" { + replacement["alias"] = alias + } + // Preserve sampling and any column aliases on the original TableRef. + for _, key := range []string{"sample", "column_name_alias"} { + if v, ok := node[key]; ok { + replacement[key] = v + } + } + for key := range node { + delete(node, key) + } + for key, child := range replacement { + node[key] = child + } + return nil // Do not recursively redact the trusted inner logs reference. + } + } + for key, child := range node { + if key == "cte_map" { + continue + } + scope := ctes + if kind == "RECURSIVE_CTE_NODE" && key == "right" { + scope = copyCTEScope(ctes) + name, _ := node["cte_name"].(string) + scope[strings.ToLower(name)] = true + scope["recurring:"+strings.ToLower(name)] = true + } + if err := redactSQLLogTables(ctx, parser, child, scope); err != nil { + return err + } + } + case []any: + for _, child := range node { + if err := redactSQLLogTables(ctx, parser, child, ctes); err != nil { + return err + } + } + } + return nil +} + +func copyCTEScope(ctes map[string]bool) map[string]bool { + scope := make(map[string]bool, len(ctes)+2) + for name, visible := range ctes { + scope[name] = visible + } + return scope +} diff --git a/internal/panel/table_fix_test.go b/internal/panel/table_fix_test.go new file mode 100644 index 00000000..70494ebb --- /dev/null +++ b/internal/panel/table_fix_test.go @@ -0,0 +1,155 @@ +package panel + +import ( + "context" + "go/ast" + "go/parser" + "go/token" + "strings" + "testing" + "time" + + "github.com/labstack/fanout/internal/queryrows" +) + +type countingTableTrendEngine struct { + Engine + queries int +} + +func (e *countingTableTrendEngine) QueryContext(ctx context.Context, text string, args ...any) (queryrows.Rows, error) { + if strings.HasPrefix(text, "SELECT epoch_ms(time_bucket(") || strings.HasPrefix(text, "WITH _trend_scope AS") { + e.queries++ + } + return e.Engine.QueryContext(ctx, text, args...) +} + +func TestM2TableFixOneTrendQuery(t *testing.T) { + e := newFixtureExecutor(t) + counter := &countingTableTrendEngine{Engine: e.engine} + e.engine = counter + d := Dashboard{Name: "Three rows", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "p", Title: "P", Viz: "table", Query: &Query{From: "spans", By: []string{"service", "http_route"}, Measures: []string{"count()", "avg(duration_ms) as latency"}}, Options: &Options{Columns: []ColumnFormat{{Field: "count", Format: "sparkline"}, {Field: "latency", Format: "sparkline"}}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || len(got) != 1 || got[0].Status != StatusOK || got[0].Frame.Rows < 3 { + t.Fatalf("table: %+v %v", got, err) + } + if counter.queries != 1 { + t.Fatalf("trend queries=%d, want exactly one for %d rows", counter.queries, got[0].Frame.Rows) + } +} + +func TestM2TableFixHealthBudgetNotesEveryFrame(t *testing.T) { + first := newFrame([]Column{{Name: "n", Type: "number", Role: "measure"}}) + first.bucketed = true + for range 199999 { + appendPanelRow(first, float64(1)) + } + current := &Frame{Note: "Current scope.", Health: &HealthFrame{ErrorTrend: []float64{1, 2, 3}}} + previous := &Frame{Note: "Previous scope.", Health: &HealthFrame{ErrorTrend: []float64{4, 5}}} + limitBatchFrames([]Result{{Frame: first}, {Frame: current, Previous: previous}}) + for _, f := range []*Frame{current, previous} { + if !f.Truncated || !strings.Contains(f.Note, "Health error trend was truncated to stay within the response budget.") || !strings.Contains(f.Note, "scope.") { + t.Fatalf("missing health truncation note: %+v", f) + } + } + if len(current.Health.ErrorTrend) != 1 || current.Health.ErrorTrend[0] != 3 || len(previous.Health.ErrorTrend) != 0 { + t.Fatalf("health budget: current=%v previous=%v", current.Health.ErrorTrend, previous.Health.ErrorTrend) + } +} + +type overflowingTableTrendEngine struct{ Engine } + +func (e overflowingTableTrendEngine) QueryContext(ctx context.Context, text string, args ...any) (queryrows.Rows, error) { + if strings.HasPrefix(text, "SELECT epoch_ms(time_bucket(") || strings.HasPrefix(text, "WITH _trend_scope AS") { + return e.Engine.QueryContext(ctx, "SELECT i::BIGINT, 'checkout', 1.0 FROM range(10002) t(i)") + } + return e.Engine.QueryContext(ctx, text, args...) +} + +func TestM2TableFixTrendNotesAppend(t *testing.T) { + for _, mode := range []string{"failure", "allocation", "query"} { + t.Run(mode, func(t *testing.T) { + e := newFixtureExecutor(t) + p := Panel{ID: "p", Title: "P", Viz: "table", Query: &Query{From: "spans", By: []string{"service"}, Measures: []string{"count()"}}, Options: &Options{Columns: []ColumnFormat{{Field: "count", Format: "sparkline"}}}} + d := Dashboard{Name: "Notes", Panels: []Panel{p}} + Normalize(&d) + checked, problems, err := Check(t.Context(), e.engine, &d) + if err != nil || len(problems) > 0 { + t.Fatalf("check: %v %v", problems, err) + } + f := newFrame([]Column{{Name: "service", Type: "string", Role: "dimension"}, {Name: "count", Type: "number", Role: "measure"}}) + rows := 1 + if mode == "allocation" { + rows = 400 + } + for range rows { + appendPanelRow(f, "checkout", float64(120)) + } + f.Note = "Existing scope note." + want := "Table trends are limited by the cell budget." + switch mode { + case "failure": + e.engine = failingTableTrendEngine{e.engine} + want = "Table trends unavailable." + case "query": + e.engine = overflowingTableTrendEngine{e.engine} + } + err = e.attachTableTrends(t.Context(), &p, checked, Scope{Start: fixtureStart, End: fixtureStart.Add(time.Hour)}, f) + if (err != nil) != (mode == "failure") || f.Note != "Existing scope note. "+want || f.Rows != rows { + t.Fatalf("note=%q rows=%d err=%v", f.Note, f.Rows, err) + } + }) + } +} + +func TestM2TableFixBatchTrendNote(t *testing.T) { + first := newFrame([]Column{{Name: "n", Type: "number", Role: "measure"}}) + first.bucketed = true + for range 199997 { + appendPanelRow(first, float64(1)) + } + f := newFrame([]Column{{Name: "n", Type: "number", Role: "measure"}}) + appendPanelRow(f, float64(1)) + f.Note = "Existing note." + f.Trends = map[string][][]any{"a": {{1, 2, 3}}, "b": {{4, 5, 6}}} + limitBatchFrames([]Result{{Frame: first}, {Frame: f}}) + if f.Rows != 1 || !f.Truncated || f.Note != "Existing note. Some row trends were omitted to stay within the response budget." { + t.Fatalf("trend-only budget: %+v", f) + } +} + +func TestM2TableFixServiceLinkVariableHint(t *testing.T) { + p := Panel{Viz: "table", Options: &Options{Columns: []ColumnFormat{{Field: "service", Format: "service_link"}}}} + var problems Problems + validateDisplayOptions(&p, "panels[0]", nil, &problems) + if len(problems) != 1 || problems[0].Path != "panels[0].options.columns" || problems[0].Message != "service_link requires a query or custom variable" || problems[0].Hint == "" { + t.Fatalf("missing path/hint: %+v", problems) + } +} + +// This structural regression checks the requested single-parse invariant; +// parsing twice has identical output and cannot be caught by result assertions. +func TestM2TableFixSingleMeasureParse(t *testing.T) { + file, err := parser.ParseFile(token.NewFileSet(), "deploy_split.go", nil, 0) + if err != nil { + t.Fatal(err) + } + count := 0 + for _, decl := range file.Decls { + fn, ok := decl.(*ast.FuncDecl) + if !ok || fn.Name.Name != "validateDisplayOptions" { + continue + } + ast.Inspect(fn.Body, func(n ast.Node) bool { + if call, ok := n.(*ast.CallExpr); ok { + if name, ok := call.Fun.(*ast.Ident); ok && name.Name == "parseMeasures" { + count++ + } + } + return true + }) + } + if count != 1 { + t.Fatalf("parseMeasures calls=%d, want one", count) + } +} diff --git a/internal/panel/table_trends.go b/internal/panel/table_trends.go new file mode 100644 index 00000000..5c797d51 --- /dev/null +++ b/internal/panel/table_trends.go @@ -0,0 +1,173 @@ +package panel + +import ( + "context" + "encoding/json" + "fmt" + "strings" + "time" + + "github.com/labstack/fanout/internal/queryrows" +) + +func trendKey(values []string) string { raw, _ := json.Marshal(values); return string(raw) } +func (e *Executor) attachTableTrends(ctx context.Context, p *Panel, checked *Checked, scope Scope, f *Frame) (err error) { + defer func() { + if err != nil && f != nil { + f.addNote("Table trends unavailable.") + } + }() + if p.Viz != "table" || p.Query == nil || p.Options == nil || f == nil || f.Rows == 0 { + return nil + } + wanted := map[string]bool{} + for _, format := range p.Options.Columns { + if format.Format == "sparkline" { + wanted[format.Field] = true + } + } + if len(wanted) == 0 { + return nil + } + sig, _ := lookupSignal(p.Query.From) + where, args, err := buildWhere(sig, checked.Filters[p.ID], scope) + if err != nil { + return err + } + originalWhere := where + dimensions := []FieldRef{} + dimensionSQL := []string{} + indices := []int{} + for _, by := range p.Query.By { + ref, err := sig.field(by) + if err != nil { + return err + } + dimensions = append(dimensions, ref) + dimensionSQL = append(dimensionSQL, "coalesce("+ref.stringSQL()+",'')") + index := -1 + for i, c := range f.Columns { + if c.Name == ref.alias() { + index = i + break + } + } + if index < 0 { + return fmt.Errorf("trend dimension missing") + } + indices = append(indices, index) + } + rowKeys := map[string]int{} + tuples := []string{} + for r := 0; r < f.Rows; r++ { + values := []string{} + slots := []string{} + for _, index := range indices { + value, _ := f.Values[index][r].(string) + values = append(values, value) + slots = append(slots, "?") + args = append(args, value) + } + rowKeys[trendKey(values)] = r + if len(slots) > 0 { + tuples = append(tuples, "("+strings.Join(slots, ",")+")") + } + } + if len(dimensionSQL) > 0 { + where += " AND (" + strings.Join(dimensionSQL, ",") + ") IN (" + strings.Join(tuples, ",") + ")" + } + interval := max(time.Minute, AutoInterval(scope.End.Sub(scope.Start), 960)) + // Count every intersecting bucket, including an end a nanosecond past + // a boundary. Duration alone can miss the last bucket of an unaligned window. + for (scope.End.Add(-time.Nanosecond).UnixMilli()-alignedBucketMillis(scope.Start, interval))/interval.Milliseconds()+1 > 240 { + interval *= 2 + } + bucket := fmt.Sprintf("time_bucket(INTERVAL '%d seconds',%s::TIMESTAMP_NS,'1970-01-01'::TIMESTAMP_NS)", int64(interval/time.Second), quoteIdent(sig.time)) + selects := []string{"epoch_ms(" + bucket + ")::BIGINT AS _t"} + groups := []string{bucket} + columns := []Column{{Name: "time", Type: "time", Role: "time"}} + for i, ref := range dimensions { + selects = append(selects, dimensionSQL[i]+" AS "+quoteIdent(ref.alias())) + groups = append(groups, dimensionSQL[i]) + columns = append(columns, Column{Name: ref.alias(), Type: "string", Role: "dimension"}) + } + names := []string{} + share := false + for _, m := range checked.Measures[p.ID] { + if wanted[m.Alias] { + expression := measureSQL(m, sig, interval.Seconds(), "PARTITION BY "+bucket) + if m.Func == "share" { + share = true + expression = "100.0*count(*)/nullif(max(_trend_total),0)" + } + selects = append(selects, expression+" AS "+quoteIdent(m.Alias)) + columns = append(columns, Column{Name: m.Alias, Type: "number", Role: "measure", Unit: m.Unit}) + names = append(names, m.Alias) + } + } + if len(names) == 0 { + return nil + } + limit := analysisCellLimit / len(columns) + text := "SELECT " + strings.Join(selects, ",") + " FROM " + structuredSource(sig.name) + " WHERE " + where + " GROUP BY " + strings.Join(groups, ",") + fmt.Sprintf(" ORDER BY _t DESC LIMIT %d", limit+1) + if share { + // Totals cover the checked scope; only the displayed tuples are restricted. + tupleWhere := "TRUE" + if len(dimensionSQL) > 0 { + tupleWhere = "(" + strings.Join(dimensionSQL, ",") + ") IN (" + strings.Join(tuples, ",") + ")" + } + text = "WITH _trend_scope AS (SELECT * FROM " + structuredSource(sig.name) + " WHERE " + originalWhere + "), _trend_totals AS (SELECT " + bucket + " AS _trend_bucket,count(*) AS _trend_total FROM _trend_scope GROUP BY 1) SELECT " + strings.Join(selects, ",") + " FROM _trend_scope JOIN _trend_totals ON " + bucket + "=_trend_bucket WHERE " + tupleWhere + " GROUP BY " + strings.Join(groups, ",") + fmt.Sprintf(" ORDER BY _t DESC LIMIT %d", limit+1) + } + rows, err := e.engine.QueryContext(queryrows.WithWindow(ctx, queryrows.Window{Start: scope.Start, End: scope.End}), text, args...) + if err != nil { + return err + } + trend, err := scanFrame(rows, columns, limit) + if err != nil { + return err + } + boundAnalysisFrame(trend) + f.Trends = map[string][][]any{} + lo := alignedBucketMillis(scope.Start, interval) + points := int((scope.End.Add(-time.Nanosecond).UnixMilli()-lo)/interval.Milliseconds() + 1) + points = min(points, 240) + budget := analysisCellLimit + for _, name := range names { + series := make([][]any, f.Rows) + for r := range series { + if budget < points { + f.Truncated = true + f.addNote("Table trends are limited by the cell budget.") + continue + } + series[r] = make([]any, points) + budget -= points + } + f.Trends[name] = series + } + for r := 0; r < trend.Rows; r++ { + values := []string{} + for i := range dimensions { + value, _ := trend.Values[i+1][r].(string) + values = append(values, value) + } + row, ok := rowKeys[trendKey(values)] + if !ok { + continue + } + point := int((trend.Values[0][r].(int64) - lo) / interval.Milliseconds()) + if point < 0 || point >= points { + continue + } + for i, name := range names { + if len(f.Trends[name][row]) > point { + f.Trends[name][row][point] = trend.Values[len(dimensions)+1+i][r] + } + } + } + if trend.Truncated { + f.Truncated = true + f.addNote("Table trends are limited by the cell budget.") + } + return nil +} diff --git a/internal/panel/table_trends_test.go b/internal/panel/table_trends_test.go new file mode 100644 index 00000000..3993e295 --- /dev/null +++ b/internal/panel/table_trends_test.go @@ -0,0 +1,309 @@ +package panel + +import ( + "context" + "errors" + "fmt" + "strings" + "testing" + "time" + + "github.com/labstack/fanout/internal/queryrows" + "github.com/labstack/fanout/internal/telemetry" +) + +func TestM2StructuredTableSparklineRejectsDimension(t *testing.T) { + e := newFixtureExecutor(t) + d := Dashboard{Name: "Invalid trend", Panels: []Panel{{ID: "p", Title: "P", Viz: "table", Query: &Query{From: "spans", Measures: []string{"count()"}, By: []string{"service"}}, Options: &Options{Columns: []ColumnFormat{{Field: "service", Format: "sparkline"}}}}}} + Normalize(&d) + _, problems, err := Check(t.Context(), e.engine, &d) + if err != nil { + t.Fatal(err) + } + found := false + for _, problem := range problems { + if problem.Path == "panels[0].options.columns" && problem.Message == "structured sparklines require a measure column" && problem.Hint == "choose a measure field; the executor attaches its trend" { + found = true + } + } + if !found { + t.Fatalf("missing dimension trend validation: %+v", problems) + } +} + +func TestM2TableTrendsRedactedLogSource(t *testing.T) { + engine, repo := newTestEngine(t) + n := fixtureStart.UnixNano() + commit(t, repo, nil, []telemetry.Log{{ServiceName: "checkout", BodyTemplate: "token=templatesecret failed <*>", EventUnixNanos: n, IngestedAt: n}}) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Log trends", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "p", Title: "P", Viz: "table", Query: &Query{From: "logs", By: []string{"body_template"}, Measures: []string{"count()"}}, Options: &Options{Columns: []ColumnFormat{{Field: "count", Format: "sparkline"}, {Field: "body_template", Format: "log_template"}}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || len(got) != 1 || got[0].Status != StatusOK { + t.Fatalf("logs: %+v %v", got, err) + } + f := got[0].Frame + if !strings.Contains(f.Values[0][0].(string), "[REDACTED]") { + t.Fatalf("template not redacted: %v", f.Values) + } + var total float64 + for _, value := range f.Trends["count"][0] { + if value != nil { + total += value.(float64) + } + } + if total != 1 { + t.Fatalf("redacted grouping lost trend: %v", f.Trends) + } +} + +type failingTableTrendEngine struct{ Engine } + +func (e failingTableTrendEngine) QueryContext(ctx context.Context, text string, args ...any) (queryrows.Rows, error) { + if strings.HasPrefix(text, "SELECT epoch_ms(time_bucket(") { + return nil, errors.New("trend unavailable") + } + return e.Engine.QueryContext(ctx, text, args...) +} +func TestM2TableTrendFailurePreservesTable(t *testing.T) { + e := newFixtureExecutor(t) + e.engine = failingTableTrendEngine{e.engine} + d := shopDashboard() + d.Panels = d.Panels[2:3] + d.Panels[0].Viz = "table" + d.Panels[0].Options = &Options{Columns: []ColumnFormat{{Field: "count", Format: "sparkline"}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != StatusOK || got[0].Frame.Rows != 2 || got[0].Frame.Note != "Table trends unavailable." { + t.Fatalf("main table lost: %+v %v", got, err) + } +} + +func TestM2TableTrendsMultipleMeasuresDimensionsAndWindow(t *testing.T) { + e := newFixtureExecutor(t) + d := shopDashboard() + d.Panels = d.Panels[2:3] + p := &d.Panels[0] + p.Viz = "table" + p.Query.By = []string{"service", "http_route"} + p.Query.Measures = []string{"count()", "avg(duration_ms) as latency"} + p.Options = &Options{Columns: []ColumnFormat{{Field: "count", Format: "sparkline"}, {Field: "latency", Format: "sparkline"}}} + start, end := fixtureStart.Add(30*time.Second), fixtureStart.Add(31*time.Minute+30*time.Second) + d.Time = Time{From: &start, To: &end} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != StatusOK { + t.Fatalf("multi trend: %+v %v", got, err) + } + f := got[0].Frame + for row := 0; row < f.Rows; row++ { + counts, latency := f.Trends["count"][row], f.Trends["latency"][row] + if len(counts) != 32 || len(latency) != 32 || counts[0] != nil { + t.Fatalf("clipped series: %v %v", counts, latency) + } + var total float64 + for _, value := range counts { + if value != nil { + total += value.(float64) + } + } + if total != f.Values[2][row].(float64) { + t.Fatalf("row mismatch: %v %v", counts, f.Values[2][row]) + } + if f.Values[1][row] == "/cart" && (latency[1] != float64(100) || latency[31] != float64(900)) { + t.Fatalf("wrong measure: %v", latency) + } + } +} + +func TestM2TableTrendsNanosecondEnd(t *testing.T) { + e := newFixtureExecutor(t) + d := shopDashboard() + d.Panels = d.Panels[2:3] + d.Panels[0].Viz = "table" + d.Panels[0].Options = &Options{Columns: []ColumnFormat{{Field: "count", Format: "sparkline"}}} + start, end := fixtureStart, fixtureStart.Add(time.Minute+time.Nanosecond) + d.Time = Time{From: &start, To: &end} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != StatusOK { + t.Fatalf("ns end: %+v %v", got, err) + } + f := got[0].Frame + for row, series := range f.Trends["count"] { + if len(series) != 2 || series[0] != float64(1) || series[1] != float64(1) || f.Values[1][row] != float64(2) { + t.Fatalf("ns-clipped series lost last point: %v", series) + } + } +} + +func TestM2TableTrendsPerTableCellBudget(t *testing.T) { + engine, repo := newTestEngine(t) + spans := shopSpans()[:1] + for i := 1; i < 200; i++ { + span := spans[0] + span.ServiceName = fmt.Sprintf("service-'%d", i) + span.TraceID = fmt.Sprintf("trace-%d", i) + spans = append(spans, span) + } + commit(t, repo, spans, nil) + e := NewExecutor(engine, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Bounded trends", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "p", Title: "P", Viz: "table", Query: &Query{From: "spans", By: []string{"service"}, Measures: []string{"count()", "avg(duration_ms) as latency"}, Limit: 200}, Options: &Options{Columns: []ColumnFormat{{Field: "count", Format: "sparkline"}, {Field: "latency", Format: "sparkline"}}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != StatusOK { + t.Fatalf("budget query: %+v %v", got, err) + } + f := got[0].Frame + if f.Rows != 200 || !f.Truncated || f.Note != "Table trends are limited by the cell budget." { + t.Fatalf("budget note/rows: %+v", f) + } + points := 0 + for name, series := range f.Trends { + if len(series) != f.Rows { + t.Fatalf("%s rows=%d", name, len(series)) + } + for row, values := range series { + points += len(values) + if len(values) > 0 && (len(values) > 240 || values[0] != f.Values[map[string]int{"count": 1, "latency": 2}[name]][row]) { + t.Fatalf("%s row %d not aligned: %v", name, row, values) + } + } + } + if points != 19980 || points > analysisCellLimit { + t.Fatalf("points=%d", points) + } +} + +func TestM2TableTrendsBatchRowsHealthAndDeterminism(t *testing.T) { + first := newFrame([]Column{{Name: "count", Type: "number", Role: "measure"}}) + first.bucketed = true + for i := 0; i < 199995; i++ { + appendPanelRow(first, float64(i)) + } + last := newFrame([]Column{{Name: "count", Type: "number", Role: "measure"}}) + for i := 0; i < 10; i++ { + appendPanelRow(last, float64(i)) + } + last.Totals = []any{float64(10)} + last.Trends = map[string][][]any{"count": make([][]any, 10)} + for i := range last.Trends["count"] { + last.Trends["count"][i] = []any{float64(i)} + } + results := []Result{{Frame: first}, {Frame: last}} + limitBatchFrames(results) + if last.Rows != 4 || len(last.Trends["count"]) != 4 || !last.Truncated { + t.Fatalf("row alignment: %+v", last) + } + for _, series := range last.Trends["count"] { + if len(series) != 0 { + t.Fatalf("exceeded shared budget: %+v", last) + } + } + first.Totals = []any{float64(1)} + for i := 0; i < 10; i++ { + f := newFrame([]Column{{Name: "n", Type: "number", Role: "measure"}}) + appendPanelRow(f, float64(1)) + f.Health = &HealthFrame{ErrorTrend: []float64{1, 2}} + f.Trends = map[string][][]any{"z": {{1}}, "a": {{1}}} + limitBatchFrames([]Result{{Frame: first}, {Frame: f}}) + if len(f.Health.ErrorTrend) != 2 || len(f.Trends["a"][0]) != 1 || f.Trends["z"][0] != nil { + t.Fatalf("nondeterministic budget: %+v", f) + } + } +} + +func TestM2StructuredTableSparklineMeasure(t *testing.T) { + e := newFixtureExecutor(t) + d := shopDashboard() + d.Panels = d.Panels[2:3] + d.Panels[0].Viz = "table" + d.Panels[0].Options = &Options{Columns: []ColumnFormat{{Field: "count", Format: "sparkline"}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != "ok" { + t.Fatalf("table: %+v %v", got, err) + } + f := got[0].Frame + series := f.Trends["count"] + if len(series) != f.Rows { + t.Fatalf("row trends: %+v", f) + } + points := 0 + for r, trend := range series { + var total float64 + for _, v := range trend { + points++ + if v != nil { + total += v.(float64) + } + } + if total != f.Values[1][r].(float64) { + t.Fatalf("row %d trend=%v main=%v", r, total, f.Values[1][r]) + } + } + if points > analysisCellLimit { + t.Fatalf("unbounded points=%d", points) + } + results := make([]Result, 20) + for i := range results { + f := newFrame([]Column{{Name: "service", Type: "string", Role: "dimension"}, {Name: "count", Type: "number", Role: "measure"}}) + f.Trends = map[string][][]any{"count": make([][]any, 100)} + for row := 0; row < 100; row++ { + appendPanelRow(f, fmt.Sprintf("service-%d", row), float64(200)) + f.Trends["count"][row] = make([]any, 200) + } + results[i] = Result{ID: fmt.Sprintf("table-%d", i), Status: StatusOK, Frame: f} + } + limitBatchFrames(results) + cells := 0 + for _, r := range results { + if r.Frame == nil { + continue + } + cells += r.Frame.Rows * len(r.Frame.Columns) + for _, rows := range r.Frame.Trends { + for _, trend := range rows { + cells += len(trend) + } + } + } + if cells > 200000 { + t.Fatalf("batch cells=%d", cells) + } +} + +func TestFinalFixLimitedShareTrendUsesOriginalScope(t *testing.T) { + engine, repo := newTestEngine(t) + spans := []telemetry.Span{} + for minute := range 2 { + for i := range 100 { + at := fixtureStart.Add(time.Duration(minute) * time.Minute).UnixNano() + service := "A" + if i >= 90 { + service = "B" + } + spans = append(spans, telemetry.Span{ServiceName: service, TraceID: fmt.Sprintf("%d-%d", minute, i), SpanID: fmt.Sprint(i), StartUnixNanos: at, EndUnixNanos: at + 1000000, IngestedAt: at}) + } + } + commit(t, repo, spans, nil) + counter := &countingTableTrendEngine{Engine: engine} + e := NewExecutor(counter, 30) + e.now = func() time.Time { return fixtureStart.Add(time.Hour) } + d := Dashboard{Name: "Shares", Time: Time{Range: "1h"}, Panels: []Panel{{ID: "p", Title: "P", Viz: "table", Query: &Query{From: "spans", By: []string{"service"}, Measures: []string{"share()"}, Limit: 1}, Options: &Options{Columns: []ColumnFormat{{Field: "share", Format: "sparkline"}}}}}} + got, err := e.Run(t.Context(), RunRequest{Dashboard: d}) + if err != nil || got[0].Status != StatusOK { + t.Fatalf("run: %+v %v", got, err) + } + if counter.queries != 1 { + t.Fatalf("trend queries=%d", counter.queries) + } + f := got[0].Frame + if f.Rows != 1 || f.Values[0][0] != "A" || f.Values[1][0] != float64(90) { + t.Fatalf("main shares: %+v", f) + } + for _, v := range f.Trends["share"][0] { + if v != nil && v != float64(90) { + t.Fatalf("wrong denominator: %v", f.Trends) + } + } + if f.Trends["share"][0][0] != float64(90) { + t.Fatalf("missing share points: %+v", f) + } +} diff --git a/internal/panel/timerange.go b/internal/panel/timerange.go index 36527f54..d55bff30 100644 --- a/internal/panel/timerange.go +++ b/internal/panel/timerange.go @@ -3,6 +3,7 @@ package panel import ( "errors" "fmt" + "math" "time" ) @@ -13,6 +14,9 @@ func resolveWindow(t Time, override *PanelTime, now time.Time, maxWindow time.Du var start, end time.Time if t.From != nil && t.To != nil { start, end = t.From.UTC(), t.To.UTC() + if !inTimestampNSRange(start) || !inTimestampNSRange(end) { + return time.Time{}, time.Time{}, errors.New("times must be within the TIMESTAMP_NS range (1677–2262)") + } } else { span, ok := ranges[t.Range] if !ok { @@ -40,8 +44,16 @@ func resolveWindow(t Time, override *PanelTime, now time.Time, maxWindow time.Du if !start.Before(end) { return time.Time{}, time.Time{}, errors.New("the time range must start before it ends") } + if !inTimestampNSRange(start) || !inTimestampNSRange(end) { + return time.Time{}, time.Time{}, errors.New("times must be within the TIMESTAMP_NS range (1677–2262)") + } if maxWindow > 0 && end.Sub(start) > maxWindow { start = end.Add(-maxWindow) } return start, end, nil } + +func inTimestampNSRange(t time.Time) bool { + // DuckDB reserves the signed extrema for infinite timestamps. + return !t.Before(time.Unix(0, math.MinInt64+1)) && !t.After(time.Unix(0, math.MaxInt64-1)) +} diff --git a/internal/panel/validate.go b/internal/panel/validate.go index d0ed6911..6790acd1 100644 --- a/internal/panel/validate.go +++ b/internal/panel/validate.go @@ -21,15 +21,24 @@ type vizSpec struct { } var vizSpecs = map[string]vizSpec{ - "stat": {width: 3, height: "s", query: true, reduces: true}, - "gauge": {width: 3, height: "s", query: true, reduces: true}, - "timeseries": {width: 6, height: "m", query: true, maxBy: 1, bucket: true}, - "bar": {width: 6, height: "m", query: true, minBy: 1, maxBy: 2}, - "table": {width: 12, height: "m", query: true, maxBy: 3}, - "text": {width: 4, height: "s"}, + "service_map": {width: 12, height: "l", query: true}, + "health": {width: 12, height: "m", query: true}, + "logs": {width: 12, height: "l", query: true}, + "log_patterns": {width: 12, height: "m", query: true, minBy: 1, maxBy: 1, bucket: true}, + "traces": {width: 12, height: "m", query: true}, + "stat": {width: 3, height: "s", query: true, reduces: true}, + "gauge": {width: 3, height: "s", query: true, reduces: true}, + "timeseries": {width: 6, height: "m", query: true, maxBy: 1, bucket: true}, + "bar": {width: 6, height: "m", query: true, minBy: 1, maxBy: 2}, + "table": {width: 12, height: "m", query: true, maxBy: 3}, + "text": {width: 4, height: "s"}, + "heatmap": {width: 6, height: "m", query: true, bucket: true}, + "histogram": {width: 6, height: "m", query: true, maxBy: 1}, + "scatter": {width: 6, height: "m", query: true, minBy: 1, maxBy: 2}, + "state_timeline": {width: 6, height: "m", query: true, minBy: 1, maxBy: 1, bucket: true}, } -var vizOrder = []string{"stat", "gauge", "timeseries", "bar", "table", "text"} +var vizOrder = []string{"stat", "gauge", "timeseries", "bar", "table", "text", "heatmap", "histogram", "scatter", "state_timeline", "logs", "log_patterns", "traces", "service_map", "health"} var ( idPattern = regexp.MustCompile(`^[a-z][a-z0-9_]{0,39}$`) @@ -266,7 +275,10 @@ func validatePanel(p *Panel, path string, vars map[string]Variable, problems *Pr if utf8.RuneCountInString(p.SQL) > 8000 { problems.add(path+".sql", "SQL is limited to 8000 characters") } + validateDisplayOptions(p, path, vars, problems) if p.Viz == "text" { + validateItems(p, path, problems) + validateRows(p, path, problems) if p.Query != nil || p.SQL != "" { problems.add(path, "text panels have content, not a query") } @@ -275,11 +287,15 @@ func validatePanel(p *Panel, path string, vars map[string]Variable, problems *Pr } return } + isRow := p.Viz == "logs" || p.Viz == "traces" || p.Viz == "log_patterns" + validateRows(p, path, problems) if (p.Query == nil) == (strings.TrimSpace(p.SQL) == "") { - problems.add(path, "set exactly one of query or sql") + if !isRow { + problems.add(path, "set exactly one of query or sql") + } return } - if p.Unit != "" { + if p.Unit != "" && !isRow { if _, ok := unitFamilies[p.Unit]; !ok { problems.addHint(path+".unit", fmt.Sprintf("unknown unit %q", p.Unit), "use one of "+strings.Join(unitNames(), ", ")) } @@ -294,10 +310,13 @@ func validatePanel(p *Panel, path string, vars map[string]Variable, problems *Pr if p.Viz == "gauge" && (p.Min == nil || p.Max == nil || *p.Min >= *p.Max) { problems.add(path, "gauge panels need min and max, with min below max") } - if len(p.Thresholds) > 4 { + if len(p.Thresholds) > 4 && !isRow { problems.add(path+".thresholds", "at most 4 thresholds") } for i, t := range p.Thresholds { + if isRow { + break + } if !slices.Contains([]string{"ok", "warn", "bad"}, t.Status) { problems.add(fmt.Sprintf("%s.thresholds[%d].status", path, i), "status must be ok, warn or bad") } @@ -308,6 +327,10 @@ func validatePanel(p *Panel, path string, vars map[string]Variable, problems *Pr if p.Drill != "" && p.Drill != "traces" && p.Drill != "logs" { problems.add(path+".drill", "drill must be traces or logs") } + if p.Drill != "" && (p.Query == nil || p.Query.From == "metrics" || p.Drill == "logs" && p.Query.From != "logs") { + problems.add(path+".drill", "drill requires structured span/log lineage; logs drill requires a logs source") + } + if p.Click != nil { v, ok := vars[p.Click.SetVariable] if !ok || (v.Kind != "query" && v.Kind != "custom") { @@ -327,16 +350,28 @@ func validatePanel(p *Panel, path string, vars map[string]Variable, problems *Pr } } if p.Options != nil { - if p.Options.Style != "" && !slices.Contains([]string{"line", "area", "bars", "stacked"}, p.Options.Style) { + maximum := 20 + if p.categoricalSeries() { + maximum = 6 + } + if !isRow && p.Options.Top > maximum { + problems.addHint(path+".options.top", fmt.Sprintf("top must be at most %d", maximum), fmt.Sprintf("set options.top to %d or less", maximum)) + } + if !isRow && p.Options.Style != "" && !slices.Contains([]string{"line", "area", "bars", "stacked"}, p.Options.Style) { problems.add(path+".options.style", "style must be line, area, bars or stacked") } - if p.Options.Scale != "" && p.Options.Scale != "linear" && p.Options.Scale != "log" { + if !isRow && p.Options.Scale != "" && p.Options.Scale != "linear" && p.Options.Scale != "log" { problems.add(path+".options.scale", "scale must be linear or log") } if p.Options.Legend != "" && p.Options.Legend != "auto" && p.Options.Legend != "hidden" { problems.add(path+".options.legend", "legend must be auto or hidden") } } + if (p.Viz == "heatmap" || p.Viz == "histogram") && p.Query == nil { + problems.add(path+".query", "distribution panels require a structured query") + } + validateItems(p, path, problems) + validateRollupPanel(p, path, problems) if p.Query != nil { validateQuery(p, spec, path+".query", problems) } else { @@ -373,6 +408,19 @@ func mapKeys(vars map[string]Variable) []string { func validateQuery(p *Panel, spec vizSpec, path string, problems *Problems) { q := p.Query + if p.Viz == "logs" || p.Viz == "traces" || p.Viz == "log_patterns" { + // Fixed projections are checked field by field in validateRows; avoid + // duplicate aggregate-query Problems for the same rejected field. + if len(q.Where) > 16 { + problems.addHint(path+".where", "at most 16 filters per query", "remove filters until at most 16 remain") + } + for i, w := range q.Where { + if strings.TrimSpace(w) == "" || len(w) > 500 { + problems.addHint(fmt.Sprintf("%s.where[%d]", path, i), "filters are 1 to 500 characters", "use a nonempty filter of at most 500 characters") + } + } + return + } if len(q.Where) > 16 { problems.add(path+".where", "at most 16 filters per query") } @@ -386,8 +434,11 @@ func validateQuery(p *Panel, spec vizSpec, path string, problems *Problems) { problems.add(fmt.Sprintf("%s.where[%d]", path, i), "filters are 1 to 500 characters") } } - if len(q.Measures) == 0 || len(q.Measures) > 6 { - problems.add(path+".measures", "a query has 1 to 6 measures") + if (len(q.Measures) == 0 && p.Viz != "logs" && p.Viz != "traces" && p.Viz != "health" && p.Viz != "service_map") || len(q.Measures) > 6 { + problems.add(path+".measures", "a query has 1 to 6 measures; fixed logs and traces take none") + } + if len(q.Measures) > 1 && ((p.Viz == "timeseries" && len(q.By) > 0) || (p.Viz == "bar" && len(q.By) == 2)) { + problems.addHint(path+".measures", "grouped panels show one measure", "use one panel per measure, or remove by") } measures := parseMeasures(sig, q.Measures, path+".measures", problems) if len(q.By) < spec.minBy { @@ -423,13 +474,29 @@ func validateQuery(p *Panel, spec vizSpec, path string, problems *Problems) { problems.add(path+".bucket", "bucket must be auto or one of 10s, 30s, 1m, 5m, 10m, 15m, 30m, 1h, 3h, 6h, 12h, 1d") } } - if q.Histogram != nil { - problems.add(path+".histogram", "histograms need the heatmap or histogram viz, which arrive in a later release") + if p.Viz == "heatmap" || p.Viz == "histogram" { + if q.Histogram == nil { + problems.addHint(path+".histogram", "distribution panels require a histogram", "spans: duration_ms/log2; metrics: value/explicit") + } else if (q.From != "spans" || q.Histogram.Field != "duration_ms" || q.Histogram.Buckets != "log2") && + (q.From != "metrics" || q.Histogram.Field != "value" || q.Histogram.Buckets != "explicit") { + problems.add(path+".histogram", "use spans duration_ms/log2 or metrics value/explicit") + } + if q.Histogram != nil && q.Histogram.Temporality != "" && (q.From != "metrics" || (q.Histogram.Temporality != "cumulative" && q.Histogram.Temporality != "delta")) { + problems.addHint(path+".histogram.temporality", "temporality applies to metric histograms and must be cumulative or delta", "omit for the OTel cumulative default") + } + if len(q.Measures) != 1 || q.Measures[0] != "count()" { + problems.addHint(path+".measures", "distribution counts require count()", "use count() as the observation weight") + } + if p.SQL != "" { + problems.add(path+".sql", "distribution panels use a structured histogram") + } + } else if q.Histogram != nil { + problems.add(path+".histogram", "histogram applies only to heatmap and histogram") } if q.Limit < 0 || q.Limit > 1000 { problems.add(path+".limit", "limit must be 0 to 1000") } - if q.Sort != "" { + if q.Sort != "" && p.Viz != "logs" && p.Viz != "traces" { alias := strings.TrimPrefix(q.Sort, "+") if !slices.ContainsFunc(measures, func(m Measure) bool { return m.Alias == alias }) { problems.add(path+".sort", fmt.Sprintf("sort %q must name a measure alias", q.Sort)) @@ -440,7 +507,7 @@ func validateQuery(p *Panel, spec vizSpec, path string, problems *Problems) { families[unitFamilies[m.Unit]] = true } delete(families, "none") - if len(families) > 1 && p.Viz != "table" { + if len(families) > 1 && p.Viz != "table" && p.Viz != "scatter" { problems.add(path+".measures", "these measures have different units and would share one axis; split them into separate panels") } if p.Options != nil && p.Options.Style == "stacked" { diff --git a/internal/panel/validate_test.go b/internal/panel/validate_test.go index efcd9612..256977f0 100644 --- a/internal/panel/validate_test.go +++ b/internal/panel/validate_test.go @@ -73,6 +73,14 @@ func TestNormalizeFillsDefaults(t *testing.T) { } } +func TestNormalizeServiceMapLargeDefault(t *testing.T) { + d := Dashboard{Name: "Map", Panels: []Panel{{ID: "map", Title: "Map", Viz: "service_map", Query: &Query{From: "spans"}}}} + Normalize(&d) + if d.Panels[0].Height != "l" { + t.Fatalf("service map height=%q", d.Panels[0].Height) + } +} + func TestValidateReportsPathsAndHints(t *testing.T) { cases := []struct { name, mutate, path, contains string @@ -137,3 +145,39 @@ func TestProblemsError(t *testing.T) { t.Fatal(err.Error()) } } + +func TestM2VizOrder(t *testing.T) { + if len(vizOrder) != 15 { + t.Fatalf("vizOrder has %d types, want 15", len(vizOrder)) + } + seen := map[string]bool{} + for _, viz := range vizOrder { + if seen[viz] { + t.Fatalf("duplicate %s", viz) + } + seen[viz] = true + if _, ok := vizSpecs[viz]; !ok { + t.Fatalf("unregistered %s", viz) + } + } +} + +func TestFinalFixGroupedPanelsRequireOneMeasure(t *testing.T) { + for _, tc := range []struct { + viz string + by []string + }{ + {"timeseries", []string{"service"}}, {"bar", []string{"service", "operation"}}, + } { + t.Run(tc.viz, func(t *testing.T) { + d := Dashboard{Name: "Grouped", Panels: []Panel{{ID: "p", Title: "P", Viz: tc.viz, Query: &Query{From: "spans", By: tc.by, Measures: []string{"p50(duration_ms)", "p95(duration_ms)"}}}}} + Normalize(&d) + for _, p := range Validate(&d) { + if p.Path == "panels[0].query.measures" && p.Message == "grouped panels show one measure" && p.Hint == "use one panel per measure, or remove by" { + return + } + } + t.Fatal("missing grouped measure problem") + }) + } +} diff --git a/internal/panel/variables.go b/internal/panel/variables.go index 9813f790..e58462f2 100644 --- a/internal/panel/variables.go +++ b/internal/panel/variables.go @@ -23,6 +23,7 @@ type ResolveRequest struct { // variable, resolving them in order so a variable that filters on an earlier // one sees that variable's current value. func (e *Executor) ResolveVariables(ctx context.Context, req ResolveRequest) (map[string][]Option, error) { + now := e.now() ctx, cancel := context.WithTimeout(ctx, 20*time.Second) defer cancel() d := req.Dashboard @@ -35,7 +36,7 @@ func (e *Executor) ResolveVariables(ctx context.Context, req ResolveRequest) (ma if req.Time != nil { t = *req.Time } - start, end, err := resolveWindow(t, nil, e.now(), e.maxWindow) + start, end, err := resolveWindow(t, nil, now, e.maxWindow) if err != nil { return nil, Problems{{Path: "time", Message: err.Error()}} } @@ -103,12 +104,12 @@ func (e *Executor) optionsFor(ctx context.Context, v Variable, checked *Checked, } expr := ref.stringSQL() ctx = queryrows.WithWindow(ctx, queryrows.Window{Start: start, End: end}) - rows, err := e.engine.QueryContext(ctx, fmt.Sprintf("SELECT %s AS v, count(*) AS n FROM %s WHERE %s AND %s IS NOT NULL AND %s <> '' GROUP BY 1 ORDER BY 2 DESC, 1 LIMIT 500", expr, sig.name, where, expr, expr), args...) + rows, err := e.engine.QueryContext(ctx, fmt.Sprintf("SELECT %s AS v, count(*) AS n FROM %s WHERE %s AND %s IS NOT NULL AND %s <> '' GROUP BY 1 ORDER BY 2 DESC, 1 LIMIT 500", expr, structuredSource(sig.name), where, expr, expr), args...) if err != nil { return nil, fmt.Errorf("list values for $%s: %w", v.Name, err) } defer rows.Close() - var out []Option + out := []Option{} for rows.Next() { var o Option if err := rows.Scan(&o.Value, &o.Count); err != nil { diff --git a/internal/query/annotations.go b/internal/query/annotations.go new file mode 100644 index 00000000..ed407032 --- /dev/null +++ b/internal/query/annotations.go @@ -0,0 +1,520 @@ +package query + +import ( + "context" + "database/sql" + "encoding/json" + "errors" + "fmt" + "log/slog" + "sort" + "strings" + "time" + + "github.com/labstack/fanout/internal/annotations" + "github.com/labstack/fanout/internal/metrics" + "github.com/labstack/fanout/internal/query/writegate" + "github.com/labstack/fanout/internal/telemetry" +) + +const createVersionRollupTable = `CREATE TABLE version_rollup ( + namespace VARCHAR, service VARCHAR, service_version VARCHAR, + first_seen TIMESTAMPTZ_NS, last_seen TIMESTAMPTZ_NS, + PRIMARY KEY(namespace,service,service_version))` +const createVersionBatchesTable = `CREATE TABLE version_rollup_batches (batch_id VARCHAR PRIMARY KEY,max_ingested BIGINT)` +const createAnomalyLogTable = `CREATE TABLE anomaly_log ( + namespace VARCHAR,service VARCHAR,kind VARCHAR,start_time TIMESTAMPTZ_NS,end_time TIMESTAMPTZ_NS, + title VARCHAR,severity VARCHAR,PRIMARY KEY(namespace,service,kind,start_time))` + +type versionRollupFailure struct { + failures int + retrySingly bool + nextAttempt time.Time +} + +func nextVersionRollupFailure(previous versionRollupFailure, now time.Time) versionRollupFailure { + previous.failures++ + delay := min(time.Minute< 0 { + break + } + if len(pending) == 0 && (size > 64000 || d.versionRollupFailures[b.ID].retrySingly) { + // Oversized batches and failed groups retry alone under the 10s deadline. + pending = append(pending, b) + break + } + if len(pending) >= 64 || count+size > 64000 { + break + } + pending = append(pending, b) + count += size + } + attempted := false + // writeGate protects this disposable, per-process retry state. Failed batches + // remain unmarked, so a later committed pass still discloses limited history. + defer func() { + for _, b := range pending { + if retErr == nil { + delete(d.versionRollupFailures, b.ID) + continue + } + if !attempted { + continue + } + if d.versionRollupFailures == nil { + d.versionRollupFailures = make(map[string]versionRollupFailure) + } + failure := nextVersionRollupFailure(d.versionRollupFailures[b.ID], time.Now()) + failure.retrySingly = failure.retrySingly || len(pending) > 1 + d.versionRollupFailures[b.ID] = failure + } + }() + retired := []string{} + for id := range marked { + d.cachePublishMu.Lock() + publishing := d.cachePublishing[id] + d.cachePublishMu.Unlock() + if !active[id] && !publishing { + retired = append(retired, id) + } + } + remaining := 0 + for _, b := range batches { + if !marked[b.ID] { + remaining++ + } + } + limited := int64(0) + if remaining > len(pending) { + limited = 1 + } + retirementDue := d.versionRollupPasses%64 == 0 + if len(pending) == 0 && len(retired) == 0 && !retirementDue { + var previous int64 + if err := d.writer().QueryRowContext(ctx, `SELECT coalesce(max(last_ingested_unix_nano),0) FROM rollup_state WHERE cache_key='version_rollup_v1_limited'`).Scan(&previous); err != nil { + return 0, err + } + if previous == limited { + return 0, nil + } + } + tx, err := d.writer().BeginTx(ctx, nil) + if err != nil { + return 0, err + } + defer func() { _ = tx.Rollback() }() + for _, id := range retired { + if _, err := tx.ExecContext(ctx, `DELETE FROM version_rollup_batches WHERE batch_id=?`, id); err != nil { + return 0, err + } + } + parts := []string{} + for _, signal := range []string{"spans", "logs", "metrics"} { + selected := []telemetry.BatchMetadata{} + for _, b := range pending { + if _, n := batchTime(b, signal); n > 0 { + selected = append(selected, b) + } + } + if len(selected) == 0 { + continue + } + version, column := `TRY_CAST(resource['service.version'] AS VARCHAR)`, "time" + if signal == "spans" { + version = "service_version" + column = "start_time" + } + parts = append(parts, fmt.Sprintf(`SELECT coalesce(namespace,'') AS namespace,coalesce(service,'') AS service,%s AS service_version,%s AS t FROM (%s)`, version, column, cleanSource(signal, d.physicalSource(signal, selected)))) + } + if len(parts) > 0 { + statement := `INSERT INTO version_rollup SELECT namespace,service,service_version,min(t),max(t) FROM (` + strings.Join(parts, " UNION ALL ") + `) WHERE service<>'' AND service_version IS NOT NULL AND service_version<>'' GROUP BY 1,2,3 +ON CONFLICT(namespace,service,service_version) DO UPDATE SET first_seen=least(version_rollup.first_seen,excluded.first_seen),last_seen=greatest(version_rollup.last_seen,excluded.last_seen)` + attempted = true + res, err := tx.ExecContext(ctx, statement) + if err != nil { + return 0, err + } + if rows, err := res.RowsAffected(); err == nil { + materialized = rows + } else { + slog.Warn("version rollup rows affected unavailable", "err", err) + } + } + for _, b := range pending { + if _, err := tx.ExecContext(ctx, `INSERT INTO version_rollup_batches VALUES (?,?)`, b.ID, b.MaxIngestedNanos); err != nil { + return 0, err + } + } + // Retire inactive services once every 64 committed passes, including startup. + if retirementDue { + if _, err := tx.ExecContext(ctx, `DELETE FROM version_rollup WHERE (namespace,service) IN (SELECT namespace,service FROM version_rollup GROUP BY 1,2 HAVING max(last_seen) 100000 { + res, err := tx.ExecContext(ctx, `DELETE FROM version_rollup WHERE (namespace,service,service_version) NOT IN ( + SELECT namespace,service,service_version FROM ( + SELECT *,row_number() OVER(PARTITION BY namespace,service ORDER BY first_seen,service_version) AS initial_rank FROM version_rollup) + ORDER BY (initial_rank=1) DESC,last_seen DESC,namespace,service,service_version LIMIT 100000)`) + if err != nil { + return 0, err + } + removed, err := res.RowsAffected() + if err != nil { + return 0, err + } + if removed > 0 { + if err := storeRollupWatermark(ctx, tx, "version_rollup_v1_history_limited", 1); err != nil { + return 0, err + } + } + } + if err := storeRollupWatermark(ctx, tx, "version_rollup_v1_limited", limited); err != nil { + return 0, err + } + if err := tx.Commit(); err != nil { + return 0, err + } + d.versionRollupPasses++ + return int64(len(pending)), nil +} + +// boundedAnomalies keeps the latest 10,000 inputs, drops invalid ranges, and +// leaves the caller's slice unchanged. +func boundedAnomalies(findings []annotations.Anomaly) []annotations.Anomaly { + findings = append([]annotations.Anomaly(nil), findings...) + sort.SliceStable(findings, func(i, j int) bool { return findings[i].To.Before(findings[j].To) }) + if len(findings) > 10000 { + findings = findings[len(findings)-10000:] + } + valid := findings[:0] + for _, a := range findings { + if a.From.Before(a.To) { + valid = append(valid, a) + } + } + return valid +} + +// JSON is only the bulk transport into the private write table; stored times +// remain native nanosecond UTC instants. +const anomalyRowsSQL = `SELECT value->>'namespace' AS namespace,value->>'service' AS service,value->>'kind' AS kind, + make_timestamp_ns((value->>'start_nanos')::BIGINT)::TIMESTAMPTZ_NS AS start_time, + make_timestamp_ns((value->>'end_nanos')::BIGINT)::TIMESTAMPTZ_NS AS end_time, + value->>'title' AS title,value->>'severity' AS severity FROM json_each(?)` + +func encodeAnomalies(findings []annotations.Anomaly) ([]byte, error) { + type row struct { + Namespace string `json:"namespace"` + Service string `json:"service"` + Kind string `json:"kind"` + Start int64 `json:"start_nanos"` + End int64 `json:"end_nanos"` + Title string `json:"title"` + Severity string `json:"severity"` + } + rows := make([]row, 0, len(findings)) + for _, a := range findings { + rows = append(rows, row{a.Namespace, a.Service, a.Kind, a.From.UnixNano(), a.To.UnixNano(), a.Title, a.Severity}) + } + return json.Marshal(rows) +} + +func mergeAnomalies(existing, incoming []annotations.Anomaly) []annotations.Anomaly { + type episode struct { + a annotations.Anomaly + priority int + } + all := make([]episode, 0, len(existing)+len(incoming)) + for _, a := range existing { + all = append(all, episode{a, -1}) + } + for i, a := range incoming { + all = append(all, episode{a, i}) + } + sort.SliceStable(all, func(i, j int) bool { + a, b := all[i].a, all[j].a + if a.Namespace != b.Namespace { + return a.Namespace < b.Namespace + } + if a.Service != b.Service { + return a.Service < b.Service + } + if a.Kind != b.Kind { + return a.Kind < b.Kind + } + return a.From.Before(b.From) + }) + merged := make([]episode, 0, len(all)) + for _, e := range all { + if len(merged) > 0 { + last := &merged[len(merged)-1] + if last.a.Namespace == e.a.Namespace && last.a.Service == e.a.Service && last.a.Kind == e.a.Kind && !e.a.From.After(last.a.To) { + if e.a.To.After(last.a.To) { + last.a.To = e.a.To + } + if e.priority > last.priority { + last.a.Title = e.a.Title + last.a.Severity = e.a.Severity + last.priority = e.priority + } + continue + } + } + merged = append(merged, e) + } + out := make([]annotations.Anomaly, 0, len(merged)) + for _, e := range merged { + out = append(out, e.a) + } + return out +} + +func (d *Duck) RecordAnomalies(ctx context.Context, findings []annotations.Anomaly, now time.Time) error { + ctx, cancel := context.WithTimeout(ctx, 10*time.Second) + defer cancel() + unlock, err := d.writeGate.LockContext(ctx, writegate.WriteAnomalyLog) + if err != nil { + return err + } + defer unlock() + tx, err := d.writer().BeginTx(ctx, nil) + if err != nil { + return err + } + defer func() { _ = tx.Rollback() }() + findings = boundedAnomalies(findings) + encoded, err := encodeAnomalies(findings) + if err != nil { + return err + } + // One bounds relation and one query load the overlapping rows for all keys. + if _, err := tx.ExecContext(ctx, `CREATE TEMP TABLE annotation_bounds AS SELECT namespace,service,kind,min(start_time) AS start_time,max(end_time) AS end_time FROM (`+anomalyRowsSQL+`) GROUP BY 1,2,3`, string(encoded)); err != nil { + return err + } + overlap := `a.namespace=b.namespace AND a.service=b.service AND a.kind=b.kind AND a.end_time>=b.start_time AND a.start_time<=b.end_time` + rows, err := tx.QueryContext(ctx, `SELECT a.namespace,a.service,a.kind,a.start_time::TIMESTAMP_NS,a.end_time::TIMESTAMP_NS,a.title,a.severity FROM anomaly_log a WHERE EXISTS (SELECT 1 FROM annotation_bounds b WHERE `+overlap+`)`) + if err != nil { + return err + } + existing := []annotations.Anomaly{} + for rows.Next() { + var a annotations.Anomaly + if err := rows.Scan(&a.Namespace, &a.Service, &a.Kind, &a.From, &a.To, &a.Title, &a.Severity); err != nil { + rows.Close() + return err + } + existing = append(existing, a) + } + err = rows.Err() + rows.Close() + if err != nil { + return err + } + encoded, err = encodeAnomalies(mergeAnomalies(existing, findings)) + if err != nil { + return err + } + if _, err := tx.ExecContext(ctx, `CREATE TEMP TABLE annotation_updates AS `+anomalyRowsSQL, string(encoded)); err != nil { + return err + } + if _, err := tx.ExecContext(ctx, `CREATE TEMP TABLE annotation_candidates AS SELECT * FROM ( + SELECT * FROM anomaly_log a WHERE NOT EXISTS (SELECT 1 FROM annotation_bounds b WHERE `+overlap+`) + UNION ALL SELECT * FROM annotation_updates) WHERE end_time>=?::TIMESTAMP_NS::TIMESTAMPTZ_NS`, now.UTC().Add(-30*24*time.Hour)); err != nil { + return err + } + var count int + if err := tx.QueryRowContext(ctx, `SELECT count(*) FROM annotation_candidates`).Scan(&count); err != nil { + return err + } + retained := `SELECT * FROM annotation_candidates` + if count > 10000 { + retained += ` ORDER BY end_time DESC,namespace,service,kind,start_time LIMIT 10000` + } + // One delete covers merged episodes, expired rows, and (only if necessary) + // history overflow. Unaffected episodes stay in place. + if _, err := tx.ExecContext(ctx, `DELETE FROM anomaly_log a WHERE EXISTS (SELECT 1 FROM annotation_bounds b WHERE `+overlap+`) OR (namespace,service,kind,start_time) NOT IN (SELECT namespace,service,kind,start_time FROM (`+retained+`))`); err != nil { + return err + } + if _, err := tx.ExecContext(ctx, `INSERT INTO anomaly_log SELECT f.* FROM (`+retained+`) f WHERE EXISTS (SELECT 1 FROM annotation_updates u WHERE f.namespace=u.namespace AND f.service=u.service AND f.kind=u.kind AND f.start_time=u.start_time)`); err != nil { + return err + } + for _, table := range []string{"annotation_candidates", "annotation_updates", "annotation_bounds"} { + if _, err := tx.ExecContext(ctx, `DROP TABLE `+table); err != nil { + return err + } + } + return tx.Commit() +} + +func (d *Duck) DrainVersionRollup(ctx context.Context) (int64, error) { + return drainVersionRollup(ctx, d.RefreshVersionRollup) +} + +// The phase budget governs starting passes; each in-flight pass has its own +// deadline derived from the caller and releases its gates before returning. +func drainVersionRollup(ctx context.Context, refresh func(context.Context) (int64, error)) (int64, error) { + deadline := time.Now().Add(2 * time.Second) + var total int64 + for ctx.Err() == nil && time.Now().Before(deadline) { + n, err := refresh(ctx) + if err != nil { + if ctx.Err() != nil { + return total, ctx.Err() + } + return total, err + } + total += n + if n == 0 { + return total, nil + } + } + return total, ctx.Err() +} + +func (d *Duck) transferVersionMarker(ctx context.Context, output telemetry.BatchMetadata, inputs []string) error { + unlock, err := d.writeGate.LockContext(ctx, writegate.WriteRollupVersion) + if err != nil { + return err + } + defer unlock() + tx, err := d.writer().BeginTx(ctx, nil) + if err != nil { + return err + } + defer func() { _ = tx.Rollback() }() + for _, id := range inputs { + var count int + if err := tx.QueryRowContext(ctx, `SELECT count(*) FROM version_rollup_batches WHERE batch_id=?`, id).Scan(&count); err != nil { + return err + } + if count == 0 { + return nil + } // The full output must be read when any input is cold. + } + if _, err := tx.ExecContext(ctx, `INSERT INTO version_rollup_batches VALUES (?,?) ON CONFLICT(batch_id) DO UPDATE SET max_ingested=greatest(version_rollup_batches.max_ingested,excluded.max_ingested)`, output.ID, output.MaxIngestedNanos); err != nil { + return err + } + return tx.Commit() +} diff --git a/internal/query/annotations_fix_test.go b/internal/query/annotations_fix_test.go new file mode 100644 index 00000000..6c265446 --- /dev/null +++ b/internal/query/annotations_fix_test.go @@ -0,0 +1,467 @@ +package query + +import ( + "bytes" + "context" + "errors" + "fmt" + "go/ast" + "go/parser" + "go/token" + "log/slog" + "strings" + "testing" + "time" + + "github.com/DATA-DOG/go-sqlmock" + "github.com/labstack/fanout/internal/annotations" + "github.com/labstack/fanout/internal/metrics" + "github.com/labstack/fanout/internal/query/writegate" + "github.com/labstack/fanout/internal/telemetry" + telemetrystore "github.com/labstack/fanout/internal/telemetry/store" + "github.com/prometheus/client_golang/prometheus/testutil" +) + +func TestM2FixVersionHistoryDeletesOnlyWhenNeeded(t *testing.T) { + _, repo := versionEngine(t) + db, mock, err := sqlmock.New() + if err != nil { + t.Fatal(err) + } + defer db.Close() + d := &Duck{DB: db, repository: repo, versionRollupPasses: 1} + mock.ExpectQuery(`SELECT batch_id FROM version_rollup_batches`).WillReturnRows(sqlmock.NewRows([]string{"batch_id"})) + + mock.ExpectQuery(`SELECT coalesce\(max\(last_ingested_unix_nano\),0\) FROM rollup_state`).WillReturnRows(sqlmock.NewRows([]string{"max"}).AddRow(0)) + if _, err := d.RefreshVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + if err := mock.ExpectationsWereMet(); err != nil { + t.Fatal(err) + } +} + +func TestM2VersionFailureDoesNotStarveNewBatches(t *testing.T) { + _, repo := versionEngine(t) + at := time.Now().UTC().Add(-time.Hour) + commitVersionLogs(t, repo, "a-old", at, 64001) + commitVersionLogs(t, repo, "b-new", at.Add(time.Minute), 1) + commitVersionLogs(t, repo, "c-new", at.Add(2*time.Minute), 1) + db, mock, err := sqlmock.New() + if err != nil { + t.Fatal(err) + } + defer db.Close() + d := &Duck{DB: db, repository: repo, versionRollupPasses: 1} + mock.ExpectQuery(`SELECT batch_id FROM version_rollup_batches`).WillReturnRows(sqlmock.NewRows([]string{"batch_id"})) + + mock.ExpectBegin() + mock.ExpectExec(`(?s)INSERT INTO version_rollup SELECT.*a-old`).WillReturnError(context.DeadlineExceeded) + mock.ExpectRollback() + if _, err := d.RefreshVersionRollup(t.Context()); !errors.Is(err, context.DeadlineExceeded) { + t.Fatalf("first failure=%v", err) + } + mock.ExpectQuery(`SELECT batch_id FROM version_rollup_batches`).WillReturnRows(sqlmock.NewRows([]string{"batch_id"})) + + mock.ExpectBegin() + mock.ExpectExec(`(?s)INSERT INTO version_rollup SELECT.*c-new.*b-new`).WillReturnResult(sqlmock.NewResult(0, 1)) + for i, id := range []string{"b-new", "c-new"} { + mock.ExpectExec(`INSERT INTO version_rollup_batches`).WithArgs(id, at.Add(time.Duration(i+1)*time.Minute).UnixNano()).WillReturnResult(sqlmock.NewResult(0, 1)) + } + mock.ExpectQuery(`SELECT count\(\*\) FROM version_rollup`).WillReturnRows(sqlmock.NewRows([]string{"count"}).AddRow(1)) + mock.ExpectExec(`INSERT INTO rollup_state`).WithArgs("version_rollup_v1_limited", int64(1)).WillReturnResult(sqlmock.NewResult(0, 1)) + + mock.ExpectCommit() + if n, err := d.RefreshVersionRollup(t.Context()); err != nil || n != 2 { + t.Fatalf("new batches=%d %v", n, err) + } + failure := d.versionRollupFailures["a-old"] + if failure.failures != 1 || time.Until(failure.nextAttempt) < 59*time.Second || time.Until(failure.nextAttempt) > time.Minute { + t.Fatalf("initial backoff=%+v", failure) + } + // Expire the in-memory deadline without sleeping for a minute. + failure.nextAttempt = time.Now().Add(-time.Second) + d.versionRollupFailures["a-old"] = failure + mock.ExpectQuery(`SELECT batch_id FROM version_rollup_batches`).WillReturnRows(sqlmock.NewRows([]string{"batch_id"}).AddRow("b-new").AddRow("c-new")) + + mock.ExpectBegin() + mock.ExpectExec(`(?s)INSERT INTO version_rollup SELECT.*a-old`).WillReturnResult(sqlmock.NewResult(0, 1)) + mock.ExpectExec(`INSERT INTO version_rollup_batches`).WithArgs("a-old", at.UnixNano()).WillReturnResult(sqlmock.NewResult(0, 1)) + mock.ExpectQuery(`SELECT count\(\*\) FROM version_rollup`).WillReturnRows(sqlmock.NewRows([]string{"count"}).AddRow(2)) + mock.ExpectExec(`INSERT INTO rollup_state`).WithArgs("version_rollup_v1_limited", int64(0)).WillReturnResult(sqlmock.NewResult(0, 1)) + + mock.ExpectCommit() + if n, err := d.RefreshVersionRollup(t.Context()); err != nil || n != 1 { + t.Fatalf("expired retry=%d %v", n, err) + } + if len(d.versionRollupFailures) != 0 { + t.Fatalf("successful retry retained failures: %+v", d.versionRollupFailures) + } + if err := mock.ExpectationsWereMet(); err != nil { + t.Fatal(err) + } +} + +func TestM2VersionFailureBackoffCapsAtThirtyMinutes(t *testing.T) { + at := time.Now() + failure := versionRollupFailure{} + for i, minutes := range []int{1, 2, 4, 8, 16, 30, 30, 30} { + failure = nextVersionRollupFailure(failure, at) + if failure.failures != i+1 || failure.nextAttempt.Sub(at) != time.Duration(minutes)*time.Minute { + t.Fatalf("attempt %d: %+v", i+1, failure) + } + } +} + +func TestM2FixVersionPassTimeoutWarnAndMetric(t *testing.T) { + d, _ := versionEngine(t) + unlock := d.writeGate.Lock(writegate.WriteRollupService) + defer unlock() + counter := metrics.RollupComponentTotal.WithLabelValues("version", "error") + before := testutil.ToFloat64(counter) + var log bytes.Buffer + logger := slog.Default() + slog.SetDefault(slog.New(slog.NewTextHandler(&log, nil))) + defer slog.SetDefault(logger) + ctx, cancel := context.WithTimeout(t.Context(), 20*time.Millisecond) + defer cancel() + if _, err := d.RefreshVersionRollup(ctx); !errors.Is(err, context.DeadlineExceeded) { + t.Fatalf("timeout=%v", err) + } + if after := testutil.ToFloat64(counter); after != before+1 { + t.Fatalf("timeout counter=%v want %v", after, before+1) + } + if output := log.String(); !strings.Contains(output, "level=WARN") || !strings.Contains(output, "version rollup pass timed out") { + t.Fatalf("missing timeout warning: %s", output) + } +} + +func TestM2FixVersionMetricsCountRows(t *testing.T) { + d, repo := versionEngine(t) + now := time.Now().UTC().UnixNano() + logs := []telemetry.Log{} + for _, version := range []string{"v1", "v2"} { + logs = append(logs, telemetry.Log{ServiceName: "svc", Resource: map[string]any{"service.version": version}, EventUnixNanos: now, IngestedAt: now}) + } + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: "metrics", Logs: logs}); err != nil { + t.Fatal(err) + } + counter := metrics.RollupComponentRows.WithLabelValues("version") + before := testutil.ToFloat64(counter) + if n, err := d.RefreshVersionRollup(t.Context()); err != nil || n != 1 { + t.Fatalf("pass=%d %v", n, err) + } + if after := testutil.ToFloat64(counter); after != before+2 { + t.Fatalf("materialized rows=%v want %v", after-before, 2) + } +} + +func TestM2FixDrainBudgetBounded(t *testing.T) { + ctx, cancel := context.WithTimeout(t.Context(), 4*time.Second) + defer cancel() + started := time.Now() + var passes int + n, err := drainVersionRollup(ctx, func(ctx context.Context) (int64, error) { + passes++ + select { + case <-time.After(25 * time.Millisecond): + return 1, nil + case <-ctx.Done(): + return 0, ctx.Err() + } + }) + elapsed := time.Since(started) + if err != nil || elapsed < 1900*time.Millisecond || elapsed > 2500*time.Millisecond || n != int64(passes) { + t.Fatalf("unbounded/incorrect drain: passes=%d n=%d elapsed=%v err=%v", passes, n, elapsed, err) + } +} + +func TestM2FixDrainReleasesGateBetweenPasses(t *testing.T) { + d, repo := versionEngine(t) + now := time.Now().UTC().UnixNano() + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: "yield", Logs: []telemetry.Log{{ServiceName: "svc", EventUnixNanos: now, IngestedAt: now}}}); err != nil { + t.Fatal(err) + } + ctx, cancel := context.WithTimeout(t.Context(), time.Second) + defer cancel() + serviceDone := make(chan error, 1) + passes := 0 + n, err := drainVersionRollup(ctx, func(ctx context.Context) (int64, error) { + passes++ + if passes == 2 { + select { + case err := <-serviceDone: + if err != nil { + return 0, err + } + case <-ctx.Done(): + return 0, ctx.Err() + } + } + n, err := d.RefreshVersionRollup(ctx) + if passes == 1 { + go func() { _, err := d.refreshServiceRollup(ctx); serviceDone <- err }() + } + return n, err + }) + if err != nil || n != 1 || passes != 2 { + t.Fatalf("service could not acquire gate: %d passes=%d %v", n, passes, err) + } +} + +func TestM2FixSingleDrainRegistration(t *testing.T) { + file, err := parser.ParseFile(token.NewFileSet(), "duck.go", nil, 0) + if err != nil { + t.Fatal(err) + } + for _, decl := range file.Decls { + fn, ok := decl.(*ast.FuncDecl) + if !ok || (fn.Name.Name != "rollupOnce" && fn.Name.Name != "runReadCacheLoop") { + continue + } + count := 0 + ast.Inspect(fn.Body, func(n ast.Node) bool { + if call, ok := n.(*ast.CallExpr); ok { + if sel, ok := call.Fun.(*ast.SelectorExpr); ok && sel.Sel.Name == "DrainVersionRollup" { + count++ + } + } + return true + }) + want := 0 + if fn.Name.Name == "runReadCacheLoop" { + want = 1 + } + if count != want { + t.Fatalf("%s has %d drain registrations, want %d", fn.Name.Name, count, want) + } + } +} + +func TestM2FixAnomalyInputTruncation(t *testing.T) { + now := time.Now().UTC() + findings := make([]annotations.Anomaly, 10002) + for i := range findings { + findings[i] = annotations.Anomaly{Service: fmt.Sprint(i), From: now.Add(-time.Minute), To: now.Add(time.Duration(10002-i) * time.Nanosecond)} + } + started := time.Now() + got := boundedAnomalies(findings) + if len(got) != 10000 || got[0].Service != "9999" || got[len(got)-1].Service != "0" { + t.Fatalf("incorrect latest input selection: len=%d first=%s last=%s", len(got), got[0].Service, got[len(got)-1].Service) + } + if findings[0].Service != "0" { + t.Fatal("input mutated") + } + if time.Since(started) >= time.Second { + t.Fatal("truncation exceeded 1s") + } + t.Logf("input truncation took %v", time.Since(started)) +} + +func TestM2FixSlowVersionPassCommits(t *testing.T) { + d, repo := versionEngine(t) + now := time.Now().UTC().UnixNano() + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: "slow", Logs: []telemetry.Log{{ServiceName: "svc", Resource: map[string]any{"service.version": "v1"}, EventUnixNanos: now, IngestedAt: now}}}); err != nil { + t.Fatal(err) + } + unlock := d.writeGate.Lock(writegate.WriteRollupService) + timer := time.AfterFunc(2200*time.Millisecond, unlock) + defer func() { + if timer.Stop() { + unlock() + } + }() + n, err := d.DrainVersionRollup(t.Context()) + if err != nil || n != 1 { + t.Fatalf("slow pass must commit: batches=%d err=%v", n, err) + } + var count int + if err := d.DB.QueryRow(`SELECT count(*) FROM version_rollup_batches WHERE batch_id='slow'`).Scan(&count); err != nil || count != 1 { + t.Fatalf("marker=%d err=%v", count, err) + } +} + +func TestM2FixAnomalyMergePerformance(t *testing.T) { + d, _ := versionEngine(t) + // A nanosecond component makes a microsecond clock (macOS) exercise what Linux sees. + now := time.Now().UTC().Truncate(time.Microsecond).Add(123 * time.Nanosecond) + if _, err := d.DB.Exec(`INSERT INTO anomaly_log SELECT 'shop','svc-'||i,'latency',?::TIMESTAMP_NS::TIMESTAMPTZ_NS,?::TIMESTAMP_NS::TIMESTAMPTZ_NS,'old','warn' FROM generate_series(1,10000) t(i)`, now.Add(-5*time.Minute), now); err != nil { + t.Fatal(err) + } + findings := make([]annotations.Anomaly, 10000) + for i := range findings { + findings[i] = annotations.Anomaly{Namespace: "shop", Service: fmt.Sprint("svc-", i+1), Kind: "latency", From: now.Add(-time.Minute), To: now.Add(time.Minute), Title: "new", Severity: "bad"} + } + start := time.Now() + ctx, cancel := context.WithTimeout(t.Context(), 2*time.Second) + defer cancel() + if err := d.RecordAnomalies(ctx, findings, now); err != nil { + t.Fatal(err) + } + if elapsed := time.Since(start); elapsed >= 2*time.Second { + t.Fatalf("merge took %v", elapsed) + } + t.Logf("10,000 overlapping findings merged in %v", time.Since(start)) + var count int + if err := d.DB.QueryRow(`SELECT count(*) FROM anomaly_log WHERE title='new' AND severity='bad' AND start_time=?::TIMESTAMP_NS::TIMESTAMPTZ_NS AND end_time=?::TIMESTAMP_NS::TIMESTAMPTZ_NS`, now.Add(-5*time.Minute), now.Add(time.Minute)).Scan(&count); err != nil || count != 10000 { + t.Fatalf("merged=%d %v", count, err) + } +} + +func TestM2FixOversizedVersionBatch(t *testing.T) { + d, repo := versionEngine(t) + now := time.Now().UTC().UnixNano() + logs := make([]telemetry.Log, 64001) + for i := range logs { + logs[i] = telemetry.Log{ServiceName: "oversized", Resource: map[string]any{"service.version": "v1"}, EventUnixNanos: now, IngestedAt: now} + } + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: "oversized", Logs: logs}); err != nil { + t.Fatal(err) + } + var log bytes.Buffer + logger := slog.Default() + slog.SetDefault(slog.New(slog.NewTextHandler(&log, nil))) + defer slog.SetDefault(logger) + if n, err := d.RefreshVersionRollup(t.Context()); err != nil || n != 1 { + t.Fatalf("oversized pass: %d %v", n, err) + } + if n, err := d.RefreshVersionRollup(t.Context()); err != nil || n != 0 { + t.Fatalf("oversized retry: %d %v", n, err) + } + if output := log.String(); strings.Contains(output, "version rollup batch exceeds row budget") { + t.Fatalf("oversized warning spam: %s", output) + } + var count, limited int + if err := d.DB.QueryRow(`SELECT count(*) FROM version_rollup`).Scan(&count); err != nil || count != 1 { + t.Fatalf("oversized scanned=%d %v", count, err) + } + if err := d.DB.QueryRow(`SELECT last_ingested_unix_nano FROM rollup_state WHERE cache_key='version_rollup_v1_limited'`).Scan(&limited); err != nil || limited != 0 { + t.Fatalf("limited=%d %v", limited, err) + } + if err := d.DB.QueryRow(`SELECT count(*) FROM version_rollup_batches WHERE batch_id='oversized'`).Scan(&count); err != nil || count != 1 { + t.Fatalf("oversized batch acknowledged=%d %v", count, err) + } +} + +func TestM2FixVersionMarkerColdInput(t *testing.T) { + d, _ := versionEngine(t) + if _, err := d.DB.Exec(`INSERT INTO version_rollup_batches VALUES ('warm',1)`); err != nil { + t.Fatal(err) + } + if err := d.transferVersionMarker(t.Context(), telemetry.BatchMetadata{ID: "output", MaxIngestedNanos: 2}, []string{"warm", "cold"}); err != nil { + t.Fatal(err) + } + var count int + if err := d.DB.QueryRow(`SELECT count(*) FROM version_rollup_batches WHERE batch_id='output'`).Scan(&count); err != nil || count != 0 { + t.Fatalf("cold output marked=%d %v", count, err) + } +} + +func TestFinalFixOrdinaryFailedBatchRetriesSingly(t *testing.T) { + _, repo := versionEngine(t) + at := time.Now().UTC().Add(-time.Hour) + commitVersionLogs(t, repo, "a-bad", at, 1) + commitVersionLogs(t, repo, "b-good", at.Add(time.Minute), 1) + db, mock, err := sqlmock.New() + if err != nil { + t.Fatal(err) + } + defer db.Close() + d := &Duck{DB: db, repository: repo, versionRollupPasses: 1} + failed := func(pattern string) { + mock.ExpectQuery(`SELECT batch_id FROM version_rollup_batches`).WillReturnRows(sqlmock.NewRows([]string{"batch_id"})) + + mock.ExpectBegin() + mock.ExpectExec(pattern).WillReturnError(errors.New("unreadable A")) + mock.ExpectRollback() + } + failed(`(?s)INSERT INTO version_rollup SELECT.*b-good.*a-bad`) + if _, err := d.RefreshVersionRollup(t.Context()); err == nil { + t.Fatal("expected multi-pass failure") + } + for id, failure := range d.versionRollupFailures { + failure.nextAttempt = at + d.versionRollupFailures[id] = failure + } + failed(`(?s)INSERT INTO version_rollup SELECT.*read_parquet\(\[\x27[^\x27]*a-bad[^\x27]*\x27\]`) + if _, err := d.RefreshVersionRollup(t.Context()); err == nil { + t.Fatal("expected single A failure") + } + if err := mock.ExpectationsWereMet(); err != nil { + t.Fatal(err) + } + mock.ExpectQuery(`SELECT batch_id FROM version_rollup_batches`).WillReturnRows(sqlmock.NewRows([]string{"batch_id"})) + + mock.ExpectBegin() + mock.ExpectExec(`(?s)INSERT INTO version_rollup SELECT.*b-good`).WillReturnResult(sqlmock.NewResult(0, 1)) + mock.ExpectExec(`INSERT INTO version_rollup_batches`).WithArgs("b-good", at.Add(time.Minute).UnixNano()).WillReturnResult(sqlmock.NewResult(0, 1)) + mock.ExpectQuery(`SELECT count\(\*\) FROM version_rollup`).WillReturnRows(sqlmock.NewRows([]string{"count"}).AddRow(1)) + mock.ExpectExec(`INSERT INTO rollup_state`).WithArgs("version_rollup_v1_limited", int64(1)).WillReturnResult(sqlmock.NewResult(0, 1)) + + mock.ExpectCommit() + if n, err := d.RefreshVersionRollup(t.Context()); err != nil || n != 1 { + t.Fatalf("healthy B withheld: %d %v", n, err) + } + if d.versionRollupFailures["a-bad"].failures != 2 || d.versionRollupFailures["b-good"].failures != 0 { + t.Fatalf("failures: %+v", d.versionRollupFailures) + } + if err := mock.ExpectationsWereMet(); err != nil { + t.Fatal(err) + } +} +func TestFinalFixVersionBudgetStartsAfterGate(t *testing.T) { + d, repo := versionEngine(t) + commitVersionLogs(t, repo, "healthy", time.Now().UTC().Add(-time.Hour), 1) + unlock := d.writeGate.Lock(writegate.WriteRollupService) + timer := time.AfterFunc(10100*time.Millisecond, unlock) + defer func() { + if timer.Stop() { + unlock() + } + }() + if n, err := d.RefreshVersionRollup(t.Context()); err != nil || n != 1 { + t.Fatalf("gate wait consumed pass budget: %d %v", n, err) + } + if len(d.versionRollupFailures) != 0 { + t.Fatalf("gate wait backoff: %+v", d.versionRollupFailures) + } +} +func TestFinalFixGateTimeoutDoesNotBackOff(t *testing.T) { + d, repo := versionEngine(t) + commitVersionLogs(t, repo, "healthy", time.Now().UTC().Add(-time.Hour), 1) + unlock := d.writeGate.Lock(writegate.WriteRollupService) + defer unlock() + ctx, cancel := context.WithTimeout(t.Context(), 20*time.Millisecond) + defer cancel() + if _, err := d.RefreshVersionRollup(ctx); !errors.Is(err, context.DeadlineExceeded) { + t.Fatal(err) + } + if len(d.versionRollupFailures) != 0 { + t.Fatalf("gate-wait failure penalized batch: %+v", d.versionRollupFailures) + } +} + +func TestFinalFixIdleVersionPassDoesNotWrite(t *testing.T) { + d, _ := versionEngine(t) + if _, err := d.RefreshVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } // startup retirement is due + stamp := func() string { + var s string + if err := d.DB.QueryRow(`SELECT coalesce(string_agg(cache_key||'='||updated_at::VARCHAR,',' ORDER BY cache_key),'') FROM rollup_state WHERE cache_key LIKE 'version_rollup%'`).Scan(&s); err != nil { + t.Fatal(err) + } + return s + } + before := stamp() + if n, err := d.RefreshVersionRollup(t.Context()); err != nil || n != 0 { + t.Fatalf("idle: %d %v", n, err) + } + if after := stamp(); after != before { + t.Fatalf("idle wrote state: before=%s after=%s", before, after) + } + var unused int + if err := d.DB.QueryRow(`SELECT count(*) FROM rollup_state WHERE cache_key='version_rollup_v1'`).Scan(&unused); err != nil || unused != 0 { + t.Fatalf("unused watermark: %d %v", unused, err) + } +} diff --git a/internal/query/annotations_test.go b/internal/query/annotations_test.go new file mode 100644 index 00000000..3eb7668a --- /dev/null +++ b/internal/query/annotations_test.go @@ -0,0 +1,429 @@ +package query + +import ( + "context" + "errors" + "fmt" + "strings" + "testing" + "time" + + "github.com/labstack/fanout/internal/annotations" + "github.com/labstack/fanout/internal/config" + "github.com/labstack/fanout/internal/queryrows" + "github.com/labstack/fanout/internal/telemetry" + telemetrystore "github.com/labstack/fanout/internal/telemetry/store" +) + +func TestM2AnnotationWidenedRangeAccepted(t *testing.T) { + d, _ := versionEngine(t) + from := time.Date(2026, 10, 1, 0, 0, 0, 0, time.UTC) + for _, days := range []int{31, 430} { + got, err := annotations.New(d).Read(t.Context(), annotations.Request{From: from, To: from.Add(time.Duration(days) * 24 * time.Hour)}) + if err != nil || len(got.Deploys) != 0 || len(got.Anomalies) != 0 { + t.Fatalf("%d-day range: %+v %v", days, got, err) + } + } +} + +func TestM2AnnotationWidenedRangeRejected(t *testing.T) { + d, _ := versionEngine(t) + from := time.Date(2026, 10, 1, 0, 0, 0, 0, time.UTC) + _, err := annotations.New(d).Read(t.Context(), annotations.Request{From: from, To: from.Add(430*24*time.Hour + time.Nanosecond)}) + const want = "annotations need a positive range of at most 430 days and at most 100 services" + if !errors.Is(err, annotations.ErrRequest) || err.Error() != want { + t.Fatalf("range just over 430 days: want ErrRequest %q, got %v", want, err) + } +} + +func versionEngine(t *testing.T) (*Duck, *telemetrystore.Repository) { + t.Helper() + cfg := config.Config{DataDir: t.TempDir(), DuckDBMemory: "256MB", DuckDBThreads: 2, DuckDBMaxConns: 4, RetentionDays: 30} + repo, err := telemetrystore.Open(cfg.TelemetryDir()) + if err != nil { + t.Fatal(err) + } + d, err := NewDuck(t.Context(), cfg, repo) + if err != nil { + t.Fatal(err) + } + t.Cleanup(func() { _ = d.Close(); _ = repo.Close() }) + return d, repo +} + +func TestM2VersionIncrementalLateBatch(t *testing.T) { + d, repo := versionEngine(t) + at := time.Now().UTC().Add(-time.Hour) + add := func(id, version string, offset time.Duration) { + t.Helper() + n := at.Add(offset).UnixNano() + err := repo.Commit(t.Context(), telemetrystore.Batch{ID: id, Spans: []telemetry.Span{{ + Namespace: "shop", ServiceName: "checkout", ServiceVersion: version, + TraceID: id, SpanID: id, Name: "checkout", Kind: "SPAN_KIND_SERVER", + StartUnixNanos: n, EndUnixNanos: n + 1000000, DurationMS: 1, + IngestedAt: at.UnixNano(), + }}}) + if err != nil { + t.Fatal(err) + } + } + add("v-first", "v1", 0) + if _, err := d.RefreshVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + add("v-late", "v2", 10*time.Minute) // Same ingestion tip; published later. + if _, err := d.RefreshVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + if n, err := d.RefreshVersionRollup(t.Context()); err != nil || n != 0 { + t.Fatalf("noop: %d %v", n, err) + } + got, err := annotations.New(d).Read(t.Context(), annotations.Request{From: at.Add(-time.Minute), To: at.Add(time.Hour), Namespace: "shop", Services: []string{"checkout"}}) + if err != nil { + t.Fatal(err) + } + if len(got.Deploys) != 1 || got.Deploys[0].Version != "v2" || !got.Deploys[0].At.Equal(at.Add(10*time.Minute)) { + t.Fatalf("deploys: %+v", got) + } + var markers int + if err := d.DB.QueryRow(`SELECT count(*) FROM version_rollup_batches`).Scan(&markers); err != nil || markers != 2 { + t.Fatalf("batch markers: %d %v", markers, err) + } +} + +func TestM2AnnotationHistoryBounds(t *testing.T) { + started := time.Now() + d, _ := versionEngine(t) + now := time.Now().UTC() + if _, err := d.DB.Exec(`INSERT INTO anomaly_log SELECT 'shop','service-'||i,'latency',(?::TIMESTAMP_NS-i*INTERVAL '1 minute'-INTERVAL '1 minute')::TIMESTAMPTZ_NS,(?::TIMESTAMP_NS-i*INTERVAL '1 minute')::TIMESTAMPTZ_NS,'Slow','warn' FROM generate_series(1,10000) t(i)`, now, now); err != nil { + t.Fatal(err) + } + finding := annotations.Anomaly{Namespace: "shop", Service: "new", Kind: "latency", From: now.Add(-time.Minute), To: now, Title: "Slow", Severity: "warn"} + if err := d.RecordAnomalies(t.Context(), []annotations.Anomaly{finding}, now); err != nil { + t.Fatal(err) + } + var n int + if err := d.DB.QueryRow(`SELECT count(*) FROM anomaly_log`).Scan(&n); err != nil || n != 10000 { + t.Fatalf("cap: %d %v", n, err) + } + if err := d.DB.QueryRow(`SELECT count(*) FROM anomaly_log WHERE service='service-10000'`).Scan(&n); err != nil || n != 0 { + t.Fatalf("oldest survived: %d %v", n, err) + } + if err := d.RecordAnomalies(t.Context(), nil, now.Add(31*24*time.Hour)); err != nil { + t.Fatal(err) + } + if err := d.DB.QueryRow(`SELECT count(*) FROM anomaly_log`).Scan(&n); err != nil || n != 0 { + t.Fatalf("age: %d %v", n, err) + } + if elapsed := time.Since(started); elapsed >= time.Second { + t.Fatalf("history bounds exceeded 1s: %v", elapsed) + } + t.Logf("history bounds took %v", time.Since(started)) +} + +func TestM2AnnotationSourcesNoRawScan(t *testing.T) { + d, repo := versionEngine(t) + at := time.Now().UTC().Add(-time.Hour) + for i, version := range []string{"v1", "v2"} { + n := at.Add(time.Duration(i) * time.Minute).UnixNano() + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: fmt.Sprint("scan-", i), Spans: []telemetry.Span{{Namespace: "shop", ServiceName: "checkout", ServiceVersion: version, TraceID: "trace", SpanID: fmt.Sprint(i), StartUnixNanos: n, EndUnixNanos: n + 1, IngestedAt: n}}, Logs: []telemetry.Log{{Namespace: "shop", ServiceName: "checkout", Body: "real log", EventUnixNanos: n, IngestedAt: n}}}); err != nil { + t.Fatal(err) + } + } + if _, err := d.DrainVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + counter := &annotationCountingEngine{Duck: d} + got, err := annotations.New(counter).Read(t.Context(), annotations.Request{From: at, To: at.Add(time.Hour), Namespace: "shop"}) + if err != nil || len(got.Deploys) != 1 || counter.calls != 3 || counter.raw != 0 { + t.Fatalf("cache reads: %+v calls=%d raw=%d err=%v", got, counter.calls, counter.raw, err) + } +} + +type annotationCountingEngine struct { + *Duck + calls, raw int +} + +func (e *annotationCountingEngine) QueryContext(ctx context.Context, text string, args ...any) (queryrows.Rows, error) { + e.calls++ + for _, source := range []string{"FROM spans", "FROM logs", "FROM metrics", "read_parquet"} { + if strings.Contains(text, source) { + e.raw++ + return nil, fmt.Errorf("raw telemetry read: %s", source) + } + } + return e.Duck.QueryContext(ctx, text, args...) +} + +func TestM2VersionPassAndHistoryCaps(t *testing.T) { + d, repo := versionEngine(t) + at := time.Now().UTC().Add(-time.Hour) + for i := 0; i < 65; i++ { + id := fmt.Sprintf("version-%03d", i) + n := at.Add(time.Duration(i) * time.Millisecond).UnixNano() + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: id, Spans: []telemetry.Span{{Namespace: "shop", ServiceName: "checkout", ServiceVersion: "v1", TraceID: id, SpanID: id, Name: "root", StartUnixNanos: n, EndUnixNanos: n + 1000, DurationMS: .001, IngestedAt: n}}}); err != nil { + t.Fatal(err) + } + } + if n, err := d.RefreshVersionRollup(t.Context()); err != nil || n != 64 { + t.Fatalf("first pass %d %v", n, err) + } + if n, err := d.RefreshVersionRollup(t.Context()); err != nil || n != 1 { + t.Fatalf("remaining pass %d %v", n, err) + } + _, err := d.DB.Exec(`DELETE FROM version_rollup`) + if err != nil { + t.Fatal(err) + } + _, err = d.DB.Exec(`INSERT INTO version_rollup SELECT 'shop','checkout','v-'||i,(?::TIMESTAMP_NS + i*INTERVAL '1 millisecond')::TIMESTAMPTZ_NS,(?::TIMESTAMP_NS + i*INTERVAL '1 millisecond')::TIMESTAMPTZ_NS FROM generate_series(1,100005) t(i)`, at, at) + if err != nil { + t.Fatal(err) + } + d.versionRollupPasses = 64 // Make retirement due for the directly seeded cache rows. + if _, err := d.RefreshVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + var count, initial int + if err := d.DB.QueryRow(`SELECT count(*),count(*) FILTER(WHERE service_version='v-1') FROM version_rollup`).Scan(&count, &initial); err != nil || count != 100000 || initial != 1 { + t.Fatalf("bounded history: %d initial %d %v", count, initial, err) + } + got, err := annotations.New(d).Read(t.Context(), annotations.Request{From: at, To: at.Add(time.Hour), Namespace: "shop"}) + if err != nil || !got.Truncated || len(got.Deploys) != 1000 { + t.Fatalf("disclosed cap: %+v %v", got, err) + } +} +func TestM2VersionDrainAndLimitedReset(t *testing.T) { + d, repo := versionEngine(t) + at := time.Now().UTC().Add(-time.Hour) + for i := range 70 { + n := at.UnixNano() + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: fmt.Sprintf("drain-%03d", i), Logs: []telemetry.Log{{Namespace: "shop", ServiceName: "checkout", Resource: map[string]any{"service.version": "v2"}, EventUnixNanos: n, IngestedAt: n}}}); err != nil { + t.Fatal(err) + } + } + if _, err := d.RefreshVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + var limited int + if err := d.DB.QueryRow(`SELECT last_ingested_unix_nano FROM rollup_state WHERE cache_key='version_rollup_v1_limited'`).Scan(&limited); err != nil || limited != 1 { + t.Fatalf("backlog flag=%d %v", limited, err) + } + if n, err := d.DrainVersionRollup(t.Context()); err != nil || n != 6 { + t.Fatalf("drain=%d %v", n, err) + } + if err := d.DB.QueryRow(`SELECT last_ingested_unix_nano FROM rollup_state WHERE cache_key='version_rollup_v1_limited'`).Scan(&limited); err != nil || limited != 0 { + t.Fatalf("stuck backlog=%d %v", limited, err) + } + var marked int + if err := d.DB.QueryRow(`SELECT count(*) FROM version_rollup_batches`).Scan(&marked); err != nil || marked != 70 { + t.Fatalf("markers=%d %v", marked, err) + } +} + +func commitVersionLogs(t *testing.T, repo *telemetrystore.Repository, id string, at time.Time, size int) { + t.Helper() + logs := make([]telemetry.Log, size) + for i := range logs { + n := at.UnixNano() + version := "v1" + if i == len(logs)-1 { + n = at.Add(time.Minute).UnixNano() + version = "v2" + } + logs[i] = telemetry.Log{Namespace: "shop", ServiceName: "checkout", Resource: map[string]any{"service.version": version}, EventUnixNanos: n, IngestedAt: at.UnixNano()} + } + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: id, Logs: logs}); err != nil { + t.Fatal(err) + } +} + +func TestM2VersionOversizedBatchDrains(t *testing.T) { + d, repo := versionEngine(t) + at := time.Now().UTC().Add(-time.Hour) + commitVersionLogs(t, repo, "oversized", at, 64001) + if n, err := d.DrainVersionRollup(t.Context()); err != nil || n != 1 { + t.Fatalf("oversized drain=%d %v", n, err) + } + var marked, limited int + if err := d.DB.QueryRow(`SELECT count(*) FROM version_rollup_batches WHERE batch_id='oversized'`).Scan(&marked); err != nil || marked != 1 { + t.Fatalf("oversized marker=%d %v", marked, err) + } + if err := d.DB.QueryRow(`SELECT last_ingested_unix_nano FROM rollup_state WHERE cache_key='version_rollup_v1_limited'`).Scan(&limited); err != nil || limited != 0 { + t.Fatalf("drained limited=%d %v", limited, err) + } + got, err := annotations.New(d).Read(t.Context(), annotations.Request{From: at, To: at.Add(time.Hour), Namespace: "shop"}) + if err != nil || got.Truncated || len(got.Deploys) != 1 || got.Deploys[0].Version != "v2" { + t.Fatalf("oversized annotations=%+v %v", got, err) + } +} + +func TestM2VersionMixedBatchPasses(t *testing.T) { + d, repo := versionEngine(t) + at := time.Now().UTC().Add(-time.Hour) + for i, size := range []int{1, 64001, 2, 64002, 3} { + commitVersionLogs(t, repo, fmt.Sprintf("mixed-%d", i), at.Add(time.Duration(i)*time.Minute), size) + } + for pass := range 5 { + if n, err := d.RefreshVersionRollup(t.Context()); err != nil || n != 1 { + t.Fatalf("pass %d processed=%d %v", pass, n, err) + } + var marked, limited int + if err := d.DB.QueryRow(`SELECT count(*) FROM version_rollup_batches WHERE batch_id=?`, fmt.Sprintf("mixed-%d", pass)).Scan(&marked); err != nil || marked != 1 { + t.Fatalf("oldest batch on pass %d marked=%d %v", pass, marked, err) + } + want := 1 + if pass == 4 { + want = 0 + } + if err := d.DB.QueryRow(`SELECT last_ingested_unix_nano FROM rollup_state WHERE cache_key='version_rollup_v1_limited'`).Scan(&limited); err != nil || limited != want { + t.Fatalf("pass %d limited=%d want=%d %v", pass, limited, want, err) + } + } + if n, err := d.RefreshVersionRollup(t.Context()); err != nil || n != 0 { + t.Fatalf("drained pass=%d %v", n, err) + } +} +func TestM2VersionResourceLogsAndMetrics(t *testing.T) { + d, repo := versionEngine(t) + at := time.Now().UTC().Add(-time.Hour) + n := at.UnixNano() + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: "resources", Logs: []telemetry.Log{{Namespace: "shop", ServiceName: "logsvc", Resource: map[string]any{"service.version": "log-v"}, EventUnixNanos: n, IngestedAt: n}}, Metrics: []telemetry.Metric{{Namespace: "shop", ServiceName: "metricsvc", Name: "n", Type: "gauge", Resource: map[string]any{"service.version": "metric-v"}, EventUnixNanos: n, IngestedAt: n}}}); err != nil { + t.Fatal(err) + } + if _, err := d.DrainVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + rows, err := d.DB.Query(`SELECT service,service_version,first_seen::TIMESTAMP_NS FROM version_rollup ORDER BY service`) + if err != nil { + t.Fatal(err) + } + defer rows.Close() + for _, want := range [][2]string{{"logsvc", "log-v"}, {"metricsvc", "metric-v"}} { + var service, version string + var first time.Time + if !rows.Next() { + t.Fatal("missing resource row") + } + if err := rows.Scan(&service, &version, &first); err != nil || service != want[0] || version != want[1] || !first.Equal(at) { + t.Fatalf("%s %s %v %v", service, version, first, err) + } + } + if rows.Next() || rows.Err() != nil { + t.Fatalf("extra rows or error: %v", rows.Err()) + } +} +func TestM2VersionMarkersCompactionRetention(t *testing.T) { + d, repo := versionEngine(t) + at := time.Now().UTC().Truncate(time.Hour) + for i := range 8 { + n := at.Add(time.Duration(i) * time.Second).UnixNano() + if err := repo.Commit(t.Context(), telemetrystore.Batch{ID: fmt.Sprint("part-", i), Spans: []telemetry.Span{{Namespace: "shop", ServiceName: "checkout", ServiceVersion: "v1", TraceID: "trace", SpanID: fmt.Sprint(i), StartUnixNanos: n, EndUnixNanos: n + 1, IngestedAt: at.UnixNano()}}}); err != nil { + t.Fatal(err) + } + } + if _, err := d.DrainVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + if n, err := repo.CompactParquet(t.Context(), d, 8); err != nil || n != 8 { + t.Fatalf("compact=%d %v", n, err) + } + var n int + if err := d.DB.QueryRow(`SELECT count(*) FROM version_rollup_batches`).Scan(&n); err != nil || n != 9 { + t.Fatalf("output marker not transferred=%d %v", n, err) + } + if count, err := d.RefreshVersionRollup(t.Context()); err != nil || count != 0 { + t.Fatalf("rescanned processed output=%d %v", count, err) + } + if err := d.DB.QueryRow(`SELECT count(*) FROM version_rollup_batches`).Scan(&n); err != nil || n != 1 { + t.Fatalf("retired inputs=%d %v", n, err) + } + if count, err := repo.PruneParquet(t.Context(), d, at.Add(time.Hour).UnixNano(), 8); err != nil || count != 1 { + t.Fatalf("prune=%d %v", count, err) + } + if _, err := d.RefreshVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + if err := d.DB.QueryRow(`SELECT count(*) FROM version_rollup_batches`).Scan(&n); err != nil || n != 0 { + t.Fatalf("retention markers=%d %v", n, err) + } +} +func TestM2AnomalyCoalescesOpenEpisode(t *testing.T) { + d, _ := versionEngine(t) + at := time.Now().UTC().Add(-time.Hour) + a := annotations.Anomaly{Namespace: "shop", Service: "checkout", Kind: "latency", From: at, To: at.Add(5 * time.Minute), Title: "Slow", Severity: "warn"} + if err := d.RecordAnomalies(t.Context(), []annotations.Anomaly{a}, at.Add(time.Hour)); err != nil { + t.Fatal(err) + } + a.From = at.Add(time.Minute) + a.To = at.Add(6 * time.Minute) + a.Severity = "bad" + if err := d.RecordAnomalies(t.Context(), []annotations.Anomaly{a}, at.Add(time.Hour)); err != nil { + t.Fatal(err) + } + var count int + var first, last time.Time + var severity string + if err := d.DB.QueryRow(`SELECT count(*),min(start_time)::TIMESTAMP_NS,max(end_time)::TIMESTAMP_NS,max(severity) FROM anomaly_log`).Scan(&count, &first, &last, &severity); err != nil || count != 1 || !first.Equal(at) || !last.Equal(a.To) || severity != "bad" { + t.Fatalf("episode=%d %v %v %s %v", count, first, last, severity, err) + } + a.From = at.Add(20 * time.Minute) + a.To = at.Add(25 * time.Minute) + if err := d.RecordAnomalies(t.Context(), []annotations.Anomaly{a}, at.Add(time.Hour)); err != nil { + t.Fatal(err) + } + if err := d.DB.QueryRow(`SELECT count(*) FROM anomaly_log`).Scan(&count); err != nil || count != 2 { + t.Fatalf("separate episodes=%d %v", count, err) + } +} + +func TestFinalFixVersionSchemaRebuildClearsPair(t *testing.T) { + for _, table := range []string{"version_rollup", "version_rollup_batches"} { + t.Run(table, func(t *testing.T) { + d, repo := versionEngine(t) + commitVersionLogs(t, repo, "rebuild", time.Now().UTC().Add(-time.Hour), 3) + if _, err := d.RefreshVersionRollup(t.Context()); err != nil { + t.Fatal(err) + } + column := "last_seen" + if table == "version_rollup_batches" { + column = "max_ingested" + } + if _, err := d.DB.Exec("ALTER TABLE " + table + " DROP COLUMN " + column); err != nil { + t.Fatal(err) + } + if err := createAnnotationTables(d.DB); err != nil { + t.Fatal(err) + } + for _, q := range []string{"SELECT count(*) FROM version_rollup", "SELECT count(*) FROM version_rollup_batches", "SELECT count(*) FROM rollup_state WHERE cache_key LIKE 'version_rollup%'"} { + var n int + if err := d.DB.QueryRow(q).Scan(&n); err != nil || n != 0 { + t.Fatalf("stale paired state: %s count=%d err=%v", q, n, err) + } + } + if n, err := d.RefreshVersionRollup(t.Context()); err != nil || n != 1 { + t.Fatalf("history not reread: %d %v", n, err) + } + var n int + if err := d.DB.QueryRow("SELECT count(*) FROM version_rollup").Scan(&n); err != nil || n == 0 { + t.Fatalf("missing rebuilt history: %d %v", n, err) + } + }) + } +} + +type annotationCountingReader struct { + queryrows.Queryer + engine *annotationCountingEngine +} + +func (r annotationCountingReader) QueryContext(ctx context.Context, q string, args ...any) (queryrows.Rows, error) { + r.engine.calls++ + if strings.Contains(q, "FROM spans") || strings.Contains(q, "FROM logs") || strings.Contains(q, "FROM metrics") { + r.engine.raw++ + } + return r.Queryer.QueryContext(ctx, q, args...) +} +func (d *annotationCountingEngine) WithReadTransaction(ctx context.Context, read func(queryrows.Queryer) error) error { + return d.Duck.WithReadTransaction(ctx, func(db queryrows.Queryer) error { return read(annotationCountingReader{Queryer: db, engine: d}) }) +} diff --git a/internal/query/batch_cache.go b/internal/query/batch_cache.go index b56802b8..5353d367 100644 --- a/internal/query/batch_cache.go +++ b/internal/query/batch_cache.go @@ -501,6 +501,9 @@ func (d *Duck) PublishParquetReplacement(ctx context.Context, output telemetry.B slog.Warn("compaction cache transfer failed; output will be cached from Parquet", "err", err) } unlock() + if err := d.transferVersionMarker(ctx, output, inputs); err != nil { + slog.Warn("compaction version marker transfer failed; output will be read", "err", err) + } return d.PublishParquet(ctx, publish) } diff --git a/internal/query/duck.go b/internal/query/duck.go index e9b84b93..3a9d95b7 100644 --- a/internal/query/duck.go +++ b/internal/query/duck.go @@ -55,6 +55,9 @@ type Duck struct { // writeGate serializes writes to the rebuildable DuckDB rollup cache. writeGate writegate.WriteGate cacheGate writegate.WriteGate + // Protected by writeGate; controls periodic version-history retirement. + versionRollupPasses uint64 + versionRollupFailures map[string]versionRollupFailure // parquetMu pins immutable files for active DuckDB readers. Its reader-first // gate keeps a queued maintenance publish from stalling unrelated new reads. parquetMu parquetReadGate @@ -620,6 +623,11 @@ func (d *Duck) runReadCacheLoop(ctx context.Context) { } else if rows > 0 { delay = 100 * time.Millisecond } + if batches, err := d.DrainVersionRollup(ctx); err != nil && ctx.Err() == nil { + slog.Warn("version rollup failed", "err", err) + } else if batches > 0 { + delay = 100 * time.Millisecond + } } } @@ -2017,3 +2025,9 @@ LIMIT %d; } return out, rows.Err() } + +// WithReadTransaction keeps derived annotation rows and completeness flags in +// one read snapshot. Its callback only receives the query surface. +func (d *Duck) WithReadTransaction(ctx context.Context, read func(queryrows.Queryer) error) error { + return (queryrows.SQLAdapter{DB: d.DB}).WithReadTransaction(ctx, read) +} diff --git a/internal/query/views.go b/internal/query/views.go index 76bf9277..4c9c5a60 100644 --- a/internal/query/views.go +++ b/internal/query/views.go @@ -297,6 +297,9 @@ func CreateCacheTables(db *sql.DB) error { if err := forgetRollupProgress(db, "endpoint_rollup"); err != nil { return err } + if err := createAnnotationTables(db); err != nil { + return err + } return createBatchCaches(db) } diff --git a/internal/query/writegate/write_gate.go b/internal/query/writegate/write_gate.go index 7d9faefa..8922c5f7 100644 --- a/internal/query/writegate/write_gate.go +++ b/internal/query/writegate/write_gate.go @@ -20,6 +20,8 @@ const ( WriteRollupService WriteOperation = "rollup_service" WriteReadCache WriteOperation = "read_cache" WriteRollupEdge WriteOperation = "rollup_edge" + WriteRollupVersion WriteOperation = "rollup_version" + WriteAnomalyLog WriteOperation = "anomaly_log" WriteMaintenance WriteOperation = "maintenance" ) diff --git a/internal/queryrows/rows.go b/internal/queryrows/rows.go index 265489c2..d5252ede 100644 --- a/internal/queryrows/rows.go +++ b/internal/queryrows/rows.go @@ -3,6 +3,7 @@ package queryrows import ( "context" "database/sql" + "fmt" ) // Rows is the database row-stream surface used by query consumers. Keeping it @@ -30,3 +31,23 @@ type SQLAdapter struct{ DB SQLQueryer } func (a SQLAdapter) QueryContext(ctx context.Context, query string, args ...any) (Rows, error) { return a.DB.QueryContext(ctx, query, args...) } + +// ReadTransactioner runs related reads on one connection and database snapshot. +type ReadTransactioner interface { + WithReadTransaction(context.Context, func(Queryer) error) error +} + +func (a SQLAdapter) WithReadTransaction(ctx context.Context, read func(Queryer) error) error { + db, ok := a.DB.(interface { + BeginTx(context.Context, *sql.TxOptions) (*sql.Tx, error) + }) + if !ok { + return fmt.Errorf("query database does not support read transactions") + } + tx, err := db.BeginTx(ctx, nil) + if err != nil { + return err + } + defer func() { _ = tx.Rollback() }() + return read(SQLAdapter{DB: tx}) +} diff --git a/internal/ui/dist/assets/Tooltip-B37f_b7x.js b/internal/ui/dist/assets/Tooltip-B37f_b7x.js new file mode 100644 index 00000000..0ffb1cdf --- /dev/null +++ b/internal/ui/dist/assets/Tooltip-B37f_b7x.js @@ -0,0 +1 @@ +import{$ as e,A as t,C as n,K as r,M as i,P as a,Q as o,St as s,T as c,X as l,Y as u,_t as d,b as f,et as p,ft as m,nt as h,ot as g,vt as _,yt as v,z as y}from"./brand-BUxUP_Hq.js";var b=s(_(),1),x=d(),S=s(v(),1);function C(e){return Array.isArray(e)||e===null?!1:typeof e==`object`&&e.type!==S.Fragment}function w(e){let t=(0,S.createContext)(null);return[t,()=>{let n=(0,S.use)(t);if(n===null)throw Error(e);return n}]}var T={app:100,modal:200,popover:300,overlay:400,max:9999};function E(e){return T[e]}function D(e){let t=(0,S.useRef)(e);return(0,S.useEffect)(()=>{t.current=e}),(0,S.useMemo)(()=>((...e)=>t.current?.(...e)),[])}function O(e,t){let{delay:n,flushOnUnmount:r,leading:i,maxWait:a}=typeof t==`number`?{delay:t,flushOnUnmount:!1,leading:!1,maxWait:void 0}:t,o=D(e),s=(0,S.useRef)(0),c=(0,S.useRef)(0),l=(0,S.useRef)(null),u=(0,S.useMemo)(()=>{let e=Object.assign((...t)=>{window.clearTimeout(s.current),l.current=t;let r=e._isFirstCall;e._isFirstCall=!1;function u(){window.clearTimeout(s.current),window.clearTimeout(c.current),s.current=0,c.current=0,e._isFirstCall=!0,e._hasPendingCallback=!1}function d(){a!==void 0&&c.current===0&&(c.current=window.setTimeout(()=>{if(s.current!==0){let e=l.current;u(),o(...e)}},a))}if(i&&r){o(...t),e.flush=()=>{s.current!==0&&(u(),o(...t))},e.cancel=()=>{u()},s.current=window.setTimeout(()=>{u()},n),d();return}if(i&&!r){e._hasPendingCallback=!0,e.flush=()=>{s.current!==0&&(u(),o(...t))},e.cancel=()=>{u()},s.current=window.setTimeout(()=>{u()},n),d();return}e._hasPendingCallback=!0;let f=()=>{s.current!==0&&(u(),o(...t))};e.flush=f,e.cancel=()=>{u()},s.current=window.setTimeout(f,n),d()},{flush:()=>{},cancel:()=>{},isPending:()=>e._hasPendingCallback,_isFirstCall:!0,_hasPendingCallback:!1});return e},[o,n,i,a]);return(0,S.useEffect)(()=>()=>{r?u.flush():u.cancel()},[u,r]),u}function k(e){return e?.props?.ref}function A(e){let t=S.Children.toArray(e);return t.length!==1||!C(t[0])?null:t[0]}function j(e,t){return Array.isArray(e)?[...e].reduce((e,n)=>({...e,...j(n,t)}),{}):typeof e==`function`?e(t):e??{}}var M=(0,S.createContext)({dir:`ltr`,toggleDirection:()=>{},setDirection:()=>{}});function N(){return(0,S.use)(M)}var[P,F]=w(`ScrollArea.Root component was not found in tree`);function I(e,t){let n=(0,S.useEffectEvent)(t);h(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e])}function ee(e){let{style:t,...n}=e,r=F(),[i,a]=(0,S.useState)(0),[o,s]=(0,S.useState)(0),c=!!(i&&o);return I(r.scrollbarX,()=>{let e=r.scrollbarX?.offsetHeight||0;r.onCornerHeightChange(e),s(e)}),I(r.scrollbarY,()=>{let e=r.scrollbarY?.offsetWidth||0;r.onCornerWidthChange(e),a(e)}),c?(0,x.jsx)(`div`,{...n,style:{...t,width:i,height:o}}):null}function te(e){let t=F(),n=!!(t.scrollbarX&&t.scrollbarY);return t.type!==`scroll`&&n?(0,x.jsx)(ee,{...e}):null}var ne={scrollHideDelay:1e3,type:`hover`};function re(t){let{type:r,scrollHideDelay:a,scrollbars:o,getStyles:s,ref:c,...l}=i(`ScrollAreaRoot`,ne,t),[u,d]=(0,S.useState)(null),[f,p]=(0,S.useState)(null),[m,h]=(0,S.useState)(null),[g,_]=(0,S.useState)(null),[v,y]=(0,S.useState)(null),[b,C]=(0,S.useState)(0),[w,T]=(0,S.useState)(0),[E,D]=(0,S.useState)(!1),[O,k]=(0,S.useState)(!1),A=e(c,d);return(0,x.jsx)(P,{value:{type:r,scrollHideDelay:a,scrollArea:u,viewport:f,onViewportChange:p,content:m,onContentChange:h,scrollbarX:g,onScrollbarXChange:_,scrollbarXEnabled:E,onScrollbarXEnabledChange:D,scrollbarY:v,onScrollbarYChange:y,scrollbarYEnabled:O,onScrollbarYEnabledChange:k,onCornerWidthChange:C,onCornerHeightChange:T,getStyles:s},children:(0,x.jsx)(n,{...l,ref:A,__vars:{"--sa-corner-width":o===`xy`?`${b}px`:`0px`,"--sa-corner-height":o===`xy`?`${w}px`:`0px`}})})}re.displayName=`@mantine/core/ScrollAreaRoot`;function ie(e,t){let n=e/t;return Number.isNaN(n)?0:n}function ae(e){let t=ie(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function oe(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function L(e,[t,n]){return Math.min(n,Math.max(t,e))}function se(e,t,n=`ltr`){let r=ae(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,c=L(e,n===`ltr`?[0,o]:[o*-1,0]);return oe([0,o],[0,s])(c)}function ce(e,t,n,r=`ltr`){let i=ae(n),a=i/2,o=t||a,s=i-o,c=n.scrollbar.paddingStart+o,l=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d=r===`ltr`?[0,u]:[u*-1,0];return oe([c,l],d)(e)}function le(e,t){return e>0&&e{e?.(r),(n===!1||!r.defaultPrevented)&&t?.(r)}}var[de,fe]=w(`ScrollAreaScrollbar was not found in tree`);function pe(t){let{sizes:n,hasThumb:r,onThumbChange:i,onThumbPointerUp:a,onThumbPointerDown:o,onThumbPositionChange:s,onDragScroll:c,onWheelScroll:l,onResize:u,ref:d,...f}=t,p=F(),[m,h]=(0,S.useState)(null),g=e(d,h),_=(0,S.useRef)(null),v=(0,S.useRef)(``),{viewport:y}=p,b=n.content-n.viewport,C=(0,S.useEffectEvent)(l),w=D(s),T=O(u,10),E=e=>{if(_.current){let t=e.clientX-_.current.left,n=e.clientY-_.current.top;c({x:t,y:n})}};return(0,S.useEffect)(()=>{let e=e=>{let t=e.target;m?.contains(t)&&C(e,b)};return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[y,m,b]),(0,S.useEffect)(w,[n,w]),I(m,T),I(p.content,T),(0,x.jsx)(de,{value:{scrollbar:m,hasThumb:r,onThumbChange:D(i),onThumbPointerUp:D(a),onThumbPositionChange:w,onThumbPointerDown:D(o)},children:(0,x.jsx)(`div`,{...f,ref:g,"data-mantine-scrollbar":!0,style:{position:`absolute`,...f.style},onPointerDown:R(t.onPointerDown,e=>{e.preventDefault(),e.button===0&&(e.target.setPointerCapture(e.pointerId),_.current=m.getBoundingClientRect(),v.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,E(e))}),onPointerMove:R(t.onPointerMove,E),onPointerUp:R(t.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&(e.preventDefault(),t.releasePointerCapture(e.pointerId))}),onLostPointerCapture:()=>{document.body.style.webkitUserSelect=v.current,_.current=null}})})}var me=t=>{let{sizes:n,onSizesChange:r,style:i,ref:a,...o}=t,s=F(),[c,l]=(0,S.useState)(),u=(0,S.useRef)(null),d=e(a,u,s.onScrollbarXChange);return(0,S.useEffect)(()=>{u.current&&l(getComputedStyle(u.current))},[u]),(0,x.jsx)(pe,{"data-orientation":`horizontal`,...o,ref:d,sizes:n,style:{...i,"--sa-thumb-width":`${ae(n)}px`},onThumbPointerDown:e=>t.onThumbPointerDown(e.x),onDragScroll:e=>t.onDragScroll(e.x),onWheelScroll:(e,n)=>{if(s.viewport){let r=s.viewport.scrollLeft+e.deltaX;t.onWheelScroll(r),le(r,n)&&e.preventDefault()}},onResize:()=>{u.current&&s.viewport&&c&&r({content:s.viewport.scrollWidth,viewport:s.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:ue(c.paddingLeft),paddingEnd:ue(c.paddingRight)}})}})};me.displayName=`@mantine/core/ScrollAreaScrollbarX`;function he(t){let{sizes:n,onSizesChange:r,style:i,ref:a,...o}=t,s=F(),[c,l]=(0,S.useState)(),u=(0,S.useRef)(null),d=e(a,u,s.onScrollbarYChange);return(0,S.useEffect)(()=>{u.current&&l(window.getComputedStyle(u.current))},[]),(0,x.jsx)(pe,{...o,"data-orientation":`vertical`,ref:d,sizes:n,style:{"--sa-thumb-height":`${ae(n)}px`,...i},onThumbPointerDown:e=>t.onThumbPointerDown(e.y),onDragScroll:e=>t.onDragScroll(e.y),onWheelScroll:(e,n)=>{if(s.viewport){let r=s.viewport.scrollTop+e.deltaY;t.onWheelScroll(r),le(r,n)&&e.preventDefault()}},onResize:()=>{u.current&&s.viewport&&c&&r({content:s.viewport.scrollHeight,viewport:s.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:ue(c.paddingTop),paddingEnd:ue(c.paddingBottom)}})}})}he.displayName=`@mantine/core/ScrollAreaScrollbarY`;function z(e){let{orientation:t=`vertical`,...n}=e,{dir:r}=N(),i=F(),a=(0,S.useRef)(null),o=(0,S.useRef)(0),[s,c]=(0,S.useState)({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=ie(s.viewport,s.content),u={...n,sizes:s,onSizesChange:c,hasThumb:l>0&&l<1,onThumbChange:e=>{a.current=e},onThumbPointerUp:()=>{o.current=0},onThumbPointerDown:e=>{o.current=e}},d=(e,t)=>ce(e,o.current,s,t);return t===`horizontal`?(0,x.jsx)(me,{...u,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=se(e,s,r);a.current.style.transform=`translate3d(${t}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=d(e,r))}}):t===`vertical`?(0,x.jsx)(he,{...u,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=se(e,s);s.scrollbar.size===0?a.current.style.setProperty(`--thumb-opacity`,`0`):a.current.style.setProperty(`--thumb-opacity`,`1`),a.current.style.transform=`translate3d(0, ${t}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=d(e))}}):null}z.displayName=`@mantine/core/ScrollAreaScrollbarVisible`;function ge(e){let t=F(),{forceMount:n,...r}=e,[i,a]=(0,S.useState)(!1),o=e.orientation===`horizontal`,s=O(()=>{if(t.viewport){let e=t.viewport.offsetWidth{let{scrollArea:e}=r,t=0;if(e){let n=()=>{window.clearTimeout(t),a(!0)},i=()=>{t=window.setTimeout(()=>a(!1),r.scrollHideDelay)};return e.addEventListener(`pointerenter`,n),e.addEventListener(`pointerleave`,i),()=>{window.clearTimeout(t),e.removeEventListener(`pointerenter`,n),e.removeEventListener(`pointerleave`,i)}}},[r.scrollArea,r.scrollHideDelay]),t||i?(0,x.jsx)(ge,{"data-state":i?`visible`:`hidden`,...n}):null}_e.displayName=`@mantine/core/ScrollAreaScrollbarHover`;function ve(e){let{forceMount:t,...n}=e,r=F(),i=e.orientation===`horizontal`,[a,o]=(0,S.useState)(`hidden`),s=O(()=>o(`idle`),100);return(0,S.useEffect)(()=>{if(a===`idle`){let e=window.setTimeout(()=>o(`hidden`),r.scrollHideDelay);return()=>window.clearTimeout(e)}},[a,r.scrollHideDelay]),(0,S.useEffect)(()=>{let{viewport:e}=r,t=i?`scrollLeft`:`scrollTop`;if(e){let n=e[t],r=()=>{let r=e[t];n!==r&&(o(`scrolling`),s()),n=r};return e.addEventListener(`scroll`,r),()=>e.removeEventListener(`scroll`,r)}},[r.viewport,i,s]),t||a!==`hidden`?(0,x.jsx)(z,{"data-state":a===`hidden`?`hidden`:`visible`,...n,onPointerEnter:R(e.onPointerEnter,()=>o(`interacting`)),onPointerLeave:R(e.onPointerLeave,()=>o(`idle`))}):null}function ye(e){let{forceMount:t,...n}=e,r=F(),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:a}=r,o=e.orientation===`horizontal`;return(0,S.useEffect)(()=>(o?i(!0):a(!0),()=>{o?i(!1):a(!1)}),[o,i,a]),r.type===`hover`?(0,x.jsx)(_e,{...n,forceMount:t}):r.type===`scroll`?(0,x.jsx)(ve,{...n,forceMount:t}):r.type===`auto`?(0,x.jsx)(ge,{...n,forceMount:t}):r.type===`always`?(0,x.jsx)(z,{...n}):null}ye.displayName=`@mantine/core/ScrollAreaScrollbar`;function B(e,t=()=>{}){let n={left:e.scrollLeft,top:e.scrollTop},r=0;return(function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)})(),()=>window.cancelAnimationFrame(r)}function be(t){let{style:n,ref:r,...i}=t,a=F(),o=fe(),{onThumbPositionChange:s}=o,c=e(r,o.onThumbChange),l=(0,S.useRef)(void 0),u=O(()=>{l.current&&=(l.current(),void 0)},100);return(0,S.useEffect)(()=>{let{viewport:e}=a;if(e){let t=()=>{if(u(),!l.current){let t=B(e,s);l.current=t,s()}};return s(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[a.viewport,u,s]),(0,x.jsx)(`div`,{"data-state":o.hasThumb?`visible`:`hidden`,...i,ref:c,style:{width:`var(--sa-thumb-width)`,height:`var(--sa-thumb-height)`,...n},onPointerDownCapture:R(t.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;o.onThumbPointerDown({x:n,y:r})}),onPointerUp:R(t.onPointerUp,o.onThumbPointerUp)})}be.displayName=`@mantine/core/ScrollAreaThumb`;function xe(e){let{forceMount:t,...n}=e,r=fe();return t||r.hasThumb?(0,x.jsx)(be,{...n}):null}xe.displayName=`@mantine/core/ScrollAreaThumb`;function Se({children:t,style:r,ref:i,onWheel:a,...o}){let s=F(),c=e(i,s.onViewportChange),l=e=>{if(a?.(e),s.scrollbarXEnabled&&s.viewport&&e.shiftKey){let{scrollTop:t,scrollHeight:n,clientHeight:r,scrollWidth:i,clientWidth:a}=s.viewport,o=t<1,c=t>=n-r-1;i>a&&(o||c)&&e.stopPropagation()}};return(0,x.jsx)(n,{...o,ref:c,onWheel:l,"data-scrollarea-viewport":!0,style:{overflowX:s.scrollbarXEnabled?`scroll`:`hidden`,overflowY:s.scrollbarYEnabled?`scroll`:`hidden`,...r},children:(0,x.jsx)(`div`,{...s.getStyles(`content`),ref:s.onContentChange,children:t})})}Se.displayName=`@mantine/core/ScrollAreaViewport`;var Ce={root:`m_d57069b5`,content:`m_b1336c6`,viewport:`m_c0783ff9`,viewportInner:`m_f8f631dd`,scrollbar:`m_c44ba933`,thumb:`m_d8b5e363`,corner:`m_21657268`};function we(){return typeof window<`u`}function Te(e){return Ee(e)?(e.nodeName||``).toLowerCase():`#document`}function V(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function H(e){return((Ee(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Ee(e){return we()?e instanceof Node||e instanceof V(e).Node:!1}function U(e){return we()?e instanceof Element||e instanceof V(e).Element:!1}function W(e){return we()?e instanceof HTMLElement||e instanceof V(e).HTMLElement:!1}function De(e){return!we()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof V(e).ShadowRoot}function Oe(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=G(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function ke(e){return/^(table|td|th)$/.test(Te(e))}function Ae(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var je=/transform|translate|scale|rotate|perspective|filter/,Me=/paint|layout|strict|content/,Ne=e=>!!e&&e!==`none`,Pe;function Fe(e){let t=U(e)?G(e):e;return Ne(t.transform)||Ne(t.translate)||Ne(t.scale)||Ne(t.rotate)||Ne(t.perspective)||!Le()&&(Ne(t.backdropFilter)||Ne(t.filter))||je.test(t.willChange||``)||Me.test(t.contain||``)}function Ie(e){let t=Be(e);for(;W(t)&&!Re(t);){if(Fe(t))return t;if(Ae(t))return null;t=Be(t)}return null}function Le(){return Pe??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Pe}function Re(e){return/^(html|body|#document)$/.test(Te(e))}function G(e){return V(e).getComputedStyle(e)}function ze(e){return U(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Be(e){if(Te(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||De(e)&&e.host||H(e);return De(t)?t.host:t}function Ve(e){let t=Be(e);return Re(t)?(e.ownerDocument||e).body:W(t)&&Oe(t)?t:Ve(t)}function He(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=Ve(e),i=r===e.ownerDocument?.body,a=V(r);if(i){let e=Ue(a);return t.concat(a,a.visualViewport||[],Oe(r)?r:[],e&&n?He(e):[])}return t.concat(r,He(r,[],n))}function Ue(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}var We=[`top`,`right`,`bottom`,`left`],K=Math.min,q=Math.max,Ge=Math.round,Ke=Math.floor,qe=e=>({x:e,y:e}),Je={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function Ye(e,t,n){return q(e,K(t,n))}function J(e,t){return typeof e==`function`?e(t):e}function Y(e){return e.split(`-`)[0]}function Xe(e){return e.split(`-`)[1]}function Ze(e){return e===`x`?`y`:`x`}function Qe(e){return e===`y`?`height`:`width`}function X(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function $e(e){return Ze(X(e))}function et(e,t,n){n===void 0&&(n=!1);let r=Xe(e),i=$e(e),a=Qe(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=lt(o)),[o,lt(o)]}function tt(e){let t=lt(e);return[nt(e),t,nt(t)]}function nt(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var rt=[`left`,`right`],it=[`right`,`left`],at=[`top`,`bottom`],ot=[`bottom`,`top`];function st(e,t,n){switch(e){case`top`:case`bottom`:return n?t?it:rt:t?rt:it;case`left`:case`right`:return t?at:ot;default:return[]}}function ct(e,t,n,r){let i=Xe(e),a=st(Y(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(nt)))),a}function lt(e){let t=Y(e);return Je[t]+e.slice(t.length)}function ut(e){return{top:e.top??0,right:e.right??0,bottom:e.bottom??0,left:e.left??0}}function dt(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:ut(e)}function ft(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function pt(){let e=navigator.userAgentData;return e!=null&&e.platform?e.platform:navigator.platform}function mt(){let e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map(e=>{let{brand:t,version:n}=e;return t+`/`+n}).join(` `):navigator.userAgent}function ht(){return/apple/i.test(navigator.vendor)}function gt(){return pt().toLowerCase().startsWith(`mac`)&&!navigator.maxTouchPoints}function _t(){return mt().includes(`jsdom/`)}var vt=`data-floating-ui-focusable`,yt=`input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])`;function bt(e){let t=e.activeElement;for(;((n=t)==null||(n=n.shadowRoot)==null?void 0:n.activeElement)!=null;){var n;t=t.shadowRoot.activeElement}return t}function xt(e,t){if(!e||!t)return!1;let n=t.getRootNode==null?void 0:t.getRootNode();if(e.contains(t))return!0;if(n&&De(n)){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode||n.host}}return!1}function St(e){return`composedPath`in e?e.composedPath()[0]:e.target}function Ct(e,t){if(t==null)return!1;if(`composedPath`in e)return e.composedPath().includes(t);let n=e;return n.target!=null&&t.contains(n.target)}function wt(e){return e.matches(`html,body`)}function Tt(e){return e?.ownerDocument||document}function Et(e){return W(e)&&e.matches(yt)}function Dt(e){if(!e||_t())return!0;try{return e.matches(`:focus-visible`)}catch{return!0}}function Ot(e){return e?e.hasAttribute(vt)?e:e.querySelector(`[`+vt+`]`)||e:null}function kt(e,t,n){return n===void 0&&(n=!0),e.filter(e=>e.parentId===t&&(!n||e.context?.open)).flatMap(t=>[t,...kt(e,t.id,n)])}function At(e){return`nativeEvent`in e}function jt(e,t){let n=[`mouse`,`pen`];return t||n.push(``,void 0),n.includes(e)}var Z=typeof document<`u`?S.useLayoutEffect:function(){},Mt={...S};function Nt(e){let t=S.useRef(e);return Z(()=>{t.current=e}),t}var Pt=Mt.useInsertionEffect||(e=>e());function Q(e){let t=S.useRef(()=>{});return Pt(()=>{t.current=e}),S.useCallback(function(){var e=[...arguments];return t.current==null?void 0:t.current(...e)},[])}function Ft(e,t,n){let{reference:r,floating:i}=e,a=X(t),o=$e(t),s=Qe(o),c=Y(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}let m=Xe(t);return m&&(p[o]+=f*(m===`end`?1:-1)*(n&&l?-1:1)),p}async function It(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=J(t,e),p=dt(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=ft(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=ft(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var Lt=50,Rt=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:It},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=Ft(l,r,c),f=r,p=0,m={};for(let n=0;n({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=J(e,t)||{};if(l==null)return{};let d=dt(u),f={x:n,y:r},p=$e(i),m=Qe(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=K(d[_],T),D=K(d[v],T),O=C-h[m]-D,k=C/2-h[m]/2+w,A=Ye(E,k,O),j=!c.arrow&&Xe(i)!=null&&k!==A&&a.reference[m]/2-(ke<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(u!==`alignment`||_===X(t)||T.every(e=>X(e.placement)!==_||e.overflows[0]>0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=X(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o}if(r!==n)return{reset:{placement:n}}}return{}}}};function Vt(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Ht(e){return We.some(t=>e[t]>=0)}var Ut=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=J(e,t);switch(i){case`referenceHidden`:{let e=Vt(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:Ht(e)}}}case`escaped`:{let e=Vt(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:Ht(e)}}}default:return{}}}}};function Wt(e){let t=K(...e.map(e=>e.left)),n=K(...e.map(e=>e.top)),r=q(...e.map(e=>e.right)),i=q(...e.map(e=>e.bottom));return{x:t,y:n,width:r-t,height:i-n}}function Gt(e){let t=e.slice().sort((e,t)=>e.y-t.y),n=[],r=null;for(let e=0;er.height/2?n.push([i]):n[n.length-1].push(i),r=i}return n.map(e=>ft(Wt(e)))}var Kt=function(e){return e===void 0&&(e={}),{name:`inline`,options:e,async fn(t){let{placement:n,elements:r,rects:i,platform:a,strategy:o}=t,{padding:s=2,x:c,y:l}=J(e,t),u=Array.from(await(a.getClientRects==null?void 0:a.getClientRects(r.reference))||[]);if(!u.length)return{};let d=Gt(u),f=ft(Wt(u)),p=dt(s);function m(){if(d.length===2&&(d[0].left>d[1].right||d[1].left>d[0].right)&&c!=null&&l!=null)return d.find(e=>c>e.left-p.left&&ce.top-p.top&&l=2){if(X(n)===`y`){let e=d[0],t=d[d.length-1],r=Y(n)===`top`,i=e.top,a=t.bottom,o=r?e.left:t.left;return ft({x:o,y:i,width:(r?e.right:t.right)-o,height:a-i})}let e=Y(n)===`left`,t=q(...d.map(e=>e.right)),r=K(...d.map(e=>e.left)),i=d.filter(n=>e?n.left===r:n.right===t),a=i[0].top,o=i[i.length-1].bottom;return ft({x:r,y:a,width:t-r,height:o-a})}return f}let h=await a.getElementRects({reference:{getBoundingClientRect:m},floating:r.floating,strategy:o});return i.reference.x!==h.reference.x||i.reference.y!==h.reference.y||i.reference.width!==h.reference.width||i.reference.height!==h.reference.height?{reset:{rects:h}}:{}}}},qt=new Set([`left`,`top`]);async function Jt(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=Y(n),s=Xe(n),c=X(n)===`y`,l=qt.has(o)?-1:1,u=a&&c?-1:1,d=J(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var Yt=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await Jt(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},Xt=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=J(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=X(i),p=Ze(f),m=u[p],h=u[f],g=(e,t)=>Ye(t+d[e===`y`?`top`:`left`],t,t-d[e===`y`?`bottom`:`right`]);o&&(m=g(p,m)),s&&(h=g(f,h));let _=c.fn({...t,[p]:m,[f]:h});return{..._,data:{x:_.x-n,y:_.y-r,enabled:{[p]:o,[f]:s}}}}}},Zt=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=J(e,t),u={x:n,y:r},d=X(i),f=Ze(d),p=u[f],m=u[d],h=J(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:h.mainAxis??0,crossAxis:h.crossAxis??0};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=qt.has(Y(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);mr&&(m=r)}return{[f]:p,[d]:m}}}},Qt=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){let{placement:n,rects:r,platform:i,elements:a}=t,{apply:o=()=>{},...s}=J(e,t),c=await i.detectOverflow(t,s),l=Y(n),u=Xe(n),d=X(n)===`y`,{width:f,height:p}=r.floating,m,h;l===`top`||l===`bottom`?(m=l,h=u===(await(i.isRTL==null?void 0:i.isRTL(a.floating))?`start`:`end`)?`left`:`right`):(h=l,m=u===`end`?`top`:`bottom`);let g=p-c.top-c.bottom,_=f-c.left-c.right,v=K(p-c[m],g),y=K(f-c[h],_),b=t.middlewareData.shift,x=!b,S=v,C=y;b!=null&&b.enabled.x&&(C=_),b!=null&&b.enabled.y&&(S=g),x&&!u&&(d?C=f-2*q(c.left,c.right):S=p-2*q(c.top,c.bottom)),await o({...t,availableWidth:C,availableHeight:S});let w=await i.getDimensions(a.floating);return f!==w.width||p!==w.height?{reset:{rects:!0}}:{}}}};function $t(e){let t=G(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=W(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=Ge(n)!==a||Ge(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function en(e){return U(e)?e:e.contextElement}function tn(e){let t=en(e);if(!W(t))return qe(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=$t(t),o=(a?Ge(n.width):n.width)/r,s=(a?Ge(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var nn=qe(0);function rn(e){let t=V(e);return!Le()||!t.visualViewport?nn:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function an(e,t,n){return t===void 0&&(t=!1),!!n&&t&&n===V(e)}function on(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=en(e),o=qe(1);t&&(r?U(r)&&(o=tn(r)):o=tn(e));let s=an(a,n,r)?rn(a):qe(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a&&r){let e=V(a),t=U(r)?V(r):r,n=e,i=Ue(n);for(;i&&t!==n;){let e=tn(i),t=i.getBoundingClientRect(),r=G(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=V(i),i=Ue(n)}}return ft({width:u,height:d,x:c,y:l})}function sn(e,t){let n=ze(e).scrollLeft;return t?t.left+n:on(H(e)).left+n}function cn(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-sn(e,n),y:n.top+t.scrollTop}}function ln(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=H(r),s=t?Ae(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=qe(1),u=qe(0),d=W(r);if((d||!a)&&((Te(r)!==`body`||Oe(o))&&(c=ze(r)),d)){let e=on(r);l=tn(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?cn(o,c):qe(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function un(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function dn(e){let t=ze(e),n=e.ownerDocument.body,r=q(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=q(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight),a=-t.scrollLeft+sn(e),o=-t.scrollTop;return G(n).direction===`rtl`&&(a+=q(e.clientWidth,n.clientWidth)-r),{width:r,height:i,x:a,y:o}}var fn=25;function pn(e,t,n){n===void 0&&(n=`viewport`);let r=n===`layoutViewport`,i=V(e),a=H(e),o=i.visualViewport,s=a.clientWidth,c=a.clientHeight,l=0,u=0;if(o){let e=!Le()||t===`fixed`;r?e||(l=-o.offsetLeft,u=-o.offsetTop):(s=o.width,c=o.height,e&&(l=o.offsetLeft,u=o.offsetTop))}if(sn(a)<=0){let e=a.ownerDocument,t=e.body,n=getComputedStyle(t),r=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,i=Math.abs(a.clientWidth-t.clientWidth-r),o=getComputedStyle(a).scrollbarGutter===`stable both-edges`?i/2:i;o<=fn&&(s-=o)}return{width:s,height:c,x:l,y:u}}function mn(e,t){let n=on(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=tn(e);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function hn(e,t,n){let r;if(t===`viewport`||t===`layoutViewport`)r=pn(e,n,t);else if(t===`document`)r=dn(H(e));else if(U(t))r=mn(t,n);else{let n=rn(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return ft(r)}function gn(e,t){let n=t.get(e);if(n)return n;let r=He(e,[],!1).filter(e=>U(e)&&Te(e)!==`body`),i=null,a=G(e).position===`fixed`,o=a?Be(e):e;for(;U(o)&&!Re(o);){let e=G(o),t=Fe(o),n=i?i.position:a?`fixed`:``;!t&&(n===`fixed`||n===`absolute`&&e.position===`static`)?r=r.filter(e=>e!==o):i=e,o=Be(o)}return t.set(e,r),r}function _n(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Ae(t)?[]:gn(t,this._c):[].concat(n),r],o=hn(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e{s(!1,1e-7)},1e3)}y=!1}try{r=new IntersectionObserver(b,{...v,root:a.ownerDocument})}catch{r=new IntersectionObserver(b,v)}r.observe(e)}let c=V(e),l=()=>s(n);return c.addEventListener(`resize`,l),s(!0),()=>{c.removeEventListener(`resize`,l),o()}}function On(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=en(e),u=i||a?[...l?He(l):[],...t?He(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n),a&&e.addEventListener(`resize`,n)});let d=l&&s?Dn(l,n,a):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?on(e):null;c&&g();function g(){let t=on(e);h&&!En(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var kn=Yt,An=Xt,jn=Bt,Mn=Qt,Nn=Ut,Pn=zt,Fn=Kt,In=Zt,Ln=(e,t,n)=>{let r=new Map,i=n??{},a={...Tn,...i.platform,_c:r};return Rt(e,t,{...i,platform:a})},Rn=typeof document<`u`?S.useLayoutEffect:function(){};function zn(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`function`&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e==`object`){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!zn(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){let n=i[r];if(!(n===`_owner`&&e.$$typeof)&&!zn(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function Bn(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Vn(e,t){let n=Bn(e);return Math.round(t*n)/n}function Hn(e){let t=S.useRef(e);return Rn(()=>{t.current=e}),t}function Un(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:s=!0,whileElementsMounted:c,open:l}=e,[u,d]=S.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,p]=S.useState(r);zn(f,r)||p(r);let[m,h]=S.useState(null),[g,_]=S.useState(null),v=S.useCallback(e=>{e!==w.current&&(w.current=e,h(e))},[]),y=S.useCallback(e=>{e!==T.current&&(T.current=e,_(e))},[]),x=a||m,C=o||g,w=S.useRef(null),T=S.useRef(null),E=S.useRef(u),D=c!=null,O=Hn(c),k=Hn(i),A=Hn(l),j=S.useCallback(()=>{if(!w.current||!T.current)return;let e={placement:t,strategy:n,middleware:f};k.current&&(e.platform=k.current),Ln(w.current,T.current,e).then(e=>{let t={...e,isPositioned:A.current!==!1};M.current&&!zn(E.current,t)&&(E.current=t,b.flushSync(()=>{d(t)}))})},[f,t,n,k,A]);Rn(()=>{l===!1&&E.current.isPositioned&&(E.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[l]);let M=S.useRef(!1);Rn(()=>(M.current=!0,()=>{M.current=!1}),[]),Rn(()=>{if(x&&(w.current=x),C&&(T.current=C),x&&C){if(O.current)return O.current(x,C,j);j()}},[x,C,j,O,D]);let N=S.useMemo(()=>({reference:w,floating:T,setReference:v,setFloating:y}),[v,y]),P=S.useMemo(()=>({reference:x,floating:C}),[x,C]),F=S.useMemo(()=>{let e={position:n,left:0,top:0};if(!P.floating)return e;let t=Vn(P.floating,u.x),r=Vn(P.floating,u.y);return s?{...e,transform:`translate(`+t+`px, `+r+`px)`,...Bn(P.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,s,P.floating,u.x,u.y]);return S.useMemo(()=>({...u,update:j,refs:N,elements:P,floatingStyles:F}),[u,j,N,P,F])}var Wn=e=>{function t(e){return{}.hasOwnProperty.call(e,`current`)}return{name:`arrow`,options:e,fn(n){let{element:r,padding:i}=typeof e==`function`?e(n):e;return r&&t(r)?r.current==null?{}:Pn({element:r.current,padding:i}).fn(n):r?Pn({element:r,padding:i}).fn(n):{}}}},Gn=(e,t)=>{let n=kn(e);return{name:n.name,fn:n.fn,options:[e,t]}},Kn=(e,t)=>{let n=An(e);return{name:n.name,fn:n.fn,options:[e,t]}},qn=(e,t)=>({fn:In(e).fn,options:[e,t]}),Jn=(e,t)=>{let n=jn(e);return{name:n.name,fn:n.fn,options:[e,t]}},Yn=(e,t)=>{let n=Mn(e);return{name:n.name,fn:n.fn,options:[e,t]}},Xn=(e,t)=>{let n=Nn(e);return{name:n.name,fn:n.fn,options:[e,t]}},Zn=(e,t)=>{let n=Fn(e);return{name:n.name,fn:n.fn,options:[e,t]}},Qn=(e,t)=>{let n=Wn(e);return{name:n.name,fn:n.fn,options:[e,t]}};function $n(e){let t=S.useRef(void 0),n=S.useCallback(t=>{let n=e.map(e=>{if(e!=null){if(typeof e==`function`){let n=e,r=n(t);return typeof r==`function`?r:()=>{n(null)}}return e.current=t,()=>{e.current=null}}});return()=>{n.forEach(e=>e?.())}},e);return S.useMemo(()=>e.every(e=>e==null)?null:e=>{t.current&&=(t.current(),void 0),e!=null&&(t.current=n(e))},e)}var er=`data-floating-ui-focusable`,tr=`active`,nr=`selected`,rr=`ArrowLeft`,ir=`ArrowRight`,ar=`ArrowUp`,or=`ArrowDown`,sr=[rr,ir],cr=[ar,or];[...sr,...cr];var lr={...S},ur=!1,dr=0,fr=()=>`floating-ui-`+Math.random().toString(36).slice(2,6)+dr++;function pr(){let[e,t]=S.useState(()=>ur?fr():void 0);return Z(()=>{e??t(fr())},[]),S.useEffect(()=>{ur=!0},[]),e}var mr=lr.useId||pr;function hr(){let e=new Map;return{emit(t,n){var r;(r=e.get(t))==null||r.forEach(e=>e(n))},on(t,n){e.has(t)||e.set(t,new Set),e.get(t).add(n)},off(t,n){var r;(r=e.get(t))==null||r.delete(n)}}}var gr=S.createContext(null),_r=S.createContext(null),vr=()=>S.useContext(gr)?.id||null,yr=()=>S.useContext(_r);function br(e){return`data-floating-ui-`+e}function $(e){e.current!==-1&&(clearTimeout(e.current),e.current=-1)}var xr=br(`safe-polygon`);function Sr(e,t,n){if(n&&!jt(n))return 0;if(typeof e==`number`)return e;if(typeof e==`function`){let n=e();return typeof n==`number`?n:n?.[t]}return e?.[t]}function Cr(e){return typeof e==`function`?e():e}function wr(e,t){t===void 0&&(t={});let{open:n,onOpenChange:r,dataRef:i,events:a,elements:o}=e,{enabled:s=!0,delay:c=0,handleClose:l=null,mouseOnly:u=!1,restMs:d=0,move:f=!0}=t,p=yr(),m=vr(),h=Nt(l),g=Nt(c),_=Nt(n),v=Nt(d),y=S.useRef(),b=S.useRef(-1),x=S.useRef(),C=S.useRef(-1),w=S.useRef(!0),T=S.useRef(!1),E=S.useRef(()=>{}),D=S.useRef(!1),O=Q(()=>{let e=i.current.openEvent?.type;return e?.includes(`mouse`)&&e!==`mousedown`});S.useEffect(()=>{if(!s)return;function e(e){let{open:t}=e;t||($(b),$(C),w.current=!0,D.current=!1)}return a.on(`openchange`,e),()=>{a.off(`openchange`,e)}},[s,a]),S.useEffect(()=>{if(!s||!h.current||!n)return;function e(e){O()&&r(!1,e,`hover`)}let t=Tt(o.floating).documentElement;return t.addEventListener(`mouseleave`,e),()=>{t.removeEventListener(`mouseleave`,e)}},[o.floating,n,r,s,h,O]);let k=S.useCallback(function(e,t,n){t===void 0&&(t=!0),n===void 0&&(n=`hover`);let i=Sr(g.current,`close`,y.current);i&&!x.current?($(b),b.current=window.setTimeout(()=>r(!1,e,n),i)):t&&($(b),r(!1,e,n))},[g,r]),A=Q(()=>{E.current(),x.current=void 0}),j=Q(()=>{if(T.current){let e=Tt(o.floating).body;e.style.pointerEvents=``,e.removeAttribute(xr),T.current=!1}}),M=Q(()=>i.current.openEvent?[`click`,`mousedown`].includes(i.current.openEvent.type):!1);S.useEffect(()=>{if(!s)return;function e(e){if($(b),w.current=!1,u&&!jt(y.current)||Cr(v.current)>0&&!Sr(g.current,`open`))return;let t=Sr(g.current,`open`,y.current);t?b.current=window.setTimeout(()=>{_.current||r(!0,e,`hover`)},t):n||r(!0,e,`hover`)}function t(e){if(M()){j();return}E.current();let t=Tt(o.floating);if($(C),D.current=!1,h.current&&i.current.floatingContext){n||$(b),x.current=h.current({...i.current.floatingContext,tree:p,x:e.clientX,y:e.clientY,onClose(){j(),A(),M()||k(e,!0,`safe-polygon`)}});let r=x.current;t.addEventListener(`mousemove`,r),E.current=()=>{t.removeEventListener(`mousemove`,r)};return}(y.current!==`touch`||!xt(o.floating,e.relatedTarget))&&k(e)}function a(e){M()||i.current.floatingContext&&(h.current==null||h.current({...i.current.floatingContext,tree:p,x:e.clientX,y:e.clientY,onClose(){j(),A(),M()||k(e)}})(e))}function c(){$(b)}function l(e){M()||k(e,!1)}if(U(o.domReference)){let r=o.domReference,i=o.floating;return n&&r.addEventListener(`mouseleave`,a),f&&r.addEventListener(`mousemove`,e,{once:!0}),r.addEventListener(`mouseenter`,e),r.addEventListener(`mouseleave`,t),i&&(i.addEventListener(`mouseleave`,a),i.addEventListener(`mouseenter`,c),i.addEventListener(`mouseleave`,l)),()=>{n&&r.removeEventListener(`mouseleave`,a),f&&r.removeEventListener(`mousemove`,e),r.removeEventListener(`mouseenter`,e),r.removeEventListener(`mouseleave`,t),i&&(i.removeEventListener(`mouseleave`,a),i.removeEventListener(`mouseenter`,c),i.removeEventListener(`mouseleave`,l))}}},[o,s,e,u,f,k,A,j,r,n,_,p,g,h,i,M,v]),Z(()=>{var e;if(s&&n&&(e=h.current)!=null&&(e=e.__options)!=null&&e.blockPointerEvents&&O()){T.current=!0;let e=o.floating;if(U(o.domReference)&&e){var t;let n=Tt(o.floating).body;n.setAttribute(xr,``);let r=o.domReference,i=p==null||(t=p.nodesRef.current.find(e=>e.id===m))==null||(t=t.context)==null?void 0:t.elements.floating;return i&&(i.style.pointerEvents=``),n.style.pointerEvents=`none`,r.style.pointerEvents=`auto`,e.style.pointerEvents=`auto`,()=>{n.style.pointerEvents=``,r.style.pointerEvents=``,e.style.pointerEvents=``}}}},[s,n,m,o,p,h,O]),Z(()=>{n||(y.current=void 0,D.current=!1,A(),j())},[n,A,j]),S.useEffect(()=>()=>{A(),$(b),$(C),j()},[s,o.domReference,A,j]);let N=S.useMemo(()=>{function e(e){y.current=e.pointerType}return{onPointerDown:e,onPointerEnter:e,onMouseMove(e){let{nativeEvent:t}=e;function i(){!w.current&&!_.current&&r(!0,t,`hover`)}(!u||jt(y.current))&&(n||Cr(v.current)===0||D.current&&e.movementX**2+e.movementY**2<2||($(C),y.current===`touch`?i():(D.current=!0,C.current=window.setTimeout(i,Cr(v.current)))))}}},[u,r,n,_,v]);return S.useMemo(()=>s?{reference:N}:{},[s,N])}var Tr=()=>{},Er=S.createContext({delay:0,initialDelay:0,timeoutMs:0,currentId:null,setCurrentId:Tr,setState:Tr,isInstantPhase:!1}),Dr=()=>S.useContext(Er);function Or(e){let{children:t,delay:n,timeoutMs:r=0}=e,[i,a]=S.useReducer((e,t)=>({...e,...t}),{delay:n,timeoutMs:r,initialDelay:n,currentId:null,isInstantPhase:!1}),o=S.useRef(null),s=S.useCallback(e=>{a({currentId:e})},[]);return Z(()=>{i.currentId?o.current===null?o.current=i.currentId:i.isInstantPhase||a({isInstantPhase:!0}):(i.isInstantPhase&&a({isInstantPhase:!1}),o.current=null)},[i.currentId,i.isInstantPhase]),(0,x.jsx)(Er.Provider,{value:S.useMemo(()=>({...i,setState:a,setCurrentId:s}),[i,s]),children:t})}function kr(e,t){t===void 0&&(t={});let{open:n,onOpenChange:r,floatingId:i}=e,{id:a,enabled:o=!0}=t,s=a??i,c=Dr(),{currentId:l,setCurrentId:u,initialDelay:d,setState:f,timeoutMs:p}=c;return Z(()=>{o&&l&&(f({delay:{open:1,close:Sr(d,`close`)}}),l!==s&&r(!1))},[o,s,r,f,l,d]),Z(()=>{function e(){r(!1),f({delay:d,currentId:null})}if(o&&l&&!n&&l===s){if(p){let t=window.setTimeout(e,p);return()=>{clearTimeout(t)}}e()}},[o,n,f,l,s,r,d,p]),Z(()=>{o&&u!==Tr&&n&&u(s)},[o,n,u,s]),c}function Ar(e,t){if(!e||!t)return!1;let n=t.getRootNode==null?void 0:t.getRootNode();if(e.contains(t))return!0;if(n&&De(n)){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode||n.host}}return!1}function jr(e){return`composedPath`in e?e.composedPath()[0]:e.target}var Mr={pointerdown:`onPointerDown`,mousedown:`onMouseDown`,click:`onClick`},Nr={pointerdown:`onPointerDownCapture`,mousedown:`onMouseDownCapture`,click:`onClickCapture`},Pr=e=>({escapeKey:typeof e==`boolean`?e:e?.escapeKey??!1,outsidePress:typeof e==`boolean`?e:e?.outsidePress??!0});function Fr(e,t){t===void 0&&(t={});let{open:n,onOpenChange:r,elements:i,dataRef:a}=e,{enabled:o=!0,escapeKey:s=!0,outsidePress:c=!0,outsidePressEvent:l=`pointerdown`,referencePress:u=!1,referencePressEvent:d=`pointerdown`,ancestorScroll:f=!1,bubbles:p,capture:m}=t,h=yr(),g=Q(typeof c==`function`?c:()=>!1),_=typeof c==`function`?g:c,v=S.useRef(!1),{escapeKey:y,outsidePress:b}=Pr(p),{escapeKey:x,outsidePress:C}=Pr(m),w=S.useRef(!1),T=Q(e=>{if(!n||!o||!s||e.key!==`Escape`||w.current)return;let t=a.current.floatingContext?.nodeId,i=h?kt(h.nodesRef.current,t):[];if(!y&&(e.stopPropagation(),i.length>0)){let e=!0;if(i.forEach(t=>{var n;if((n=t.context)!=null&&n.open&&!t.context.dataRef.current.__escapeKeyBubbles){e=!1;return}}),!e)return}r(!1,At(e)?e.nativeEvent:e,`escape-key`)}),E=Q(e=>{var t;let n=()=>{var t;T(e),(t=St(e))==null||t.removeEventListener(`keydown`,n)};(t=St(e))==null||t.addEventListener(`keydown`,n)}),D=Q(e=>{let t=a.current.insideReactTree;a.current.insideReactTree=!1;let n=v.current;if(v.current=!1,l===`click`&&n||t||typeof _==`function`&&!_(e))return;let o=St(e),s=`[`+br(`inert`)+`]`,c=Tt(i.floating).querySelectorAll(s),u=U(o)?o:null;for(;u&&!Re(u);){let e=Be(u);if(Re(e)||!U(e))break;u=e}if(c.length&&U(o)&&!wt(o)&&!xt(o,i.floating)&&Array.from(c).every(e=>!xt(u,e)))return;if(W(o)&&A){let t=Re(o),n=G(o),r=/auto|scroll/,i=t||r.test(n.overflowX),a=t||r.test(n.overflowY),s=i&&o.clientWidth>0&&o.scrollWidth>o.clientWidth,c=a&&o.clientHeight>0&&o.scrollHeight>o.clientHeight,l=n.direction===`rtl`,u=c&&(l?e.offsetX<=o.offsetWidth-o.clientWidth:e.offsetX>o.clientWidth),d=s&&e.offsetY>o.clientHeight;if(u||d)return}let d=a.current.floatingContext?.nodeId,f=h&&kt(h.nodesRef.current,d).some(t=>Ct(e,t.context?.elements.floating));if(Ct(e,i.floating)||Ct(e,i.domReference)||f)return;let p=h?kt(h.nodesRef.current,d):[];if(p.length>0){let e=!0;if(p.forEach(t=>{var n;if((n=t.context)!=null&&n.open&&!t.context.dataRef.current.__outsidePressBubbles){e=!1;return}}),!e)return}r(!1,e,`outside-press`)}),O=Q(e=>{var t;let n=()=>{var t;D(e),(t=St(e))==null||t.removeEventListener(l,n)};(t=St(e))==null||t.addEventListener(l,n)});S.useEffect(()=>{if(!n||!o)return;a.current.__escapeKeyBubbles=y,a.current.__outsidePressBubbles=b;let e=-1;function t(e){r(!1,e,`ancestor-scroll`)}function c(){window.clearTimeout(e),w.current=!0}function u(){e=window.setTimeout(()=>{w.current=!1},Le()?5:0)}let d=Tt(i.floating);s&&(d.addEventListener(`keydown`,x?E:T,x),d.addEventListener(`compositionstart`,c),d.addEventListener(`compositionend`,u)),_&&d.addEventListener(l,C?O:D,C);let p=[];return f&&(U(i.domReference)&&(p=He(i.domReference)),U(i.floating)&&(p=p.concat(He(i.floating))),!U(i.reference)&&i.reference&&i.reference.contextElement&&(p=p.concat(He(i.reference.contextElement)))),p=p.filter(e=>e!==d.defaultView?.visualViewport),p.forEach(e=>{e.addEventListener(`scroll`,t)}),()=>{s&&(d.removeEventListener(`keydown`,x?E:T,x),d.removeEventListener(`compositionstart`,c),d.removeEventListener(`compositionend`,u)),_&&d.removeEventListener(l,C?O:D,C),p.forEach(e=>{e.removeEventListener(`scroll`,t)}),window.clearTimeout(e)}},[a,i,s,_,l,n,r,f,o,y,b,T,x,E,D,C,O]),S.useEffect(()=>{a.current.insideReactTree=!1},[a,_,l]);let k=S.useMemo(()=>({onKeyDown:T,...u&&{[Mr[d]]:e=>{r(!1,e.nativeEvent,`reference-press`)},...d!==`click`&&{onClick(e){r(!1,e.nativeEvent,`reference-press`)}}}}),[T,r,u,d]),A=S.useMemo(()=>{function e(e){e.button===0&&(v.current=!0)}return{onKeyDown:T,onMouseDown:e,onMouseUp:e,[Nr[l]]:()=>{a.current.insideReactTree=!0}}},[T,l,a]);return S.useMemo(()=>o?{reference:k,floating:A}:{},[o,k,A])}function Ir(e){let{open:t=!1,onOpenChange:n,elements:r}=e,i=mr(),a=S.useRef({}),[o]=S.useState(()=>hr()),s=vr()!=null,[c,l]=S.useState(r.reference),u=Q((e,t,r)=>{a.current.openEvent=e?t:void 0,o.emit(`openchange`,{open:e,event:t,reason:r,nested:s}),n?.(e,t,r)}),d=S.useMemo(()=>({setPositionReference:l}),[]),f=S.useMemo(()=>({reference:c||r.reference||null,floating:r.floating||null,domReference:r.reference}),[c,r.reference,r.floating]);return S.useMemo(()=>({dataRef:a,open:t,onOpenChange:u,elements:f,events:o,floatingId:i,refs:d}),[t,u,f,o,i,d])}function Lr(e){let{elements:t,...n}=e===void 0?{}:e,{nodeId:r}=n,i=Ir({...n,elements:{reference:t?.reference??null,floating:t?.floating??null}}),a=n.rootContext||i,o=a.elements,[s,c]=S.useState(null),[l,u]=S.useState(null),d=o?.domReference||s,f=S.useRef(null),p=yr();Z(()=>{d&&(f.current=d)},[d]);let m=Un({...n,elements:{...o,...l&&{reference:l}}}),h=S.useCallback(e=>{let t=U(e)?{getBoundingClientRect:()=>e.getBoundingClientRect(),getClientRects:()=>e.getClientRects(),contextElement:e}:e;u(t),m.refs.setReference(t)},[m.refs]),g=S.useCallback(e=>{(U(e)||e===null)&&(f.current=e,c(e)),(U(m.refs.reference.current)||m.refs.reference.current===null||e!==null&&!U(e))&&m.refs.setReference(e)},[m.refs]),_=S.useMemo(()=>({...m.refs,setReference:g,setPositionReference:h,domReference:f}),[m.refs,g,h]),v=S.useMemo(()=>({...m.elements,domReference:d}),[m.elements,d]),y=S.useMemo(()=>({...m,...a,refs:_,elements:v,nodeId:r}),[m,_,v,r,a]);return Z(()=>{a.dataRef.current.floatingContext=y;let e=p?.nodesRef.current.find(e=>e.id===r);e&&(e.context=y)}),S.useMemo(()=>({...m,context:y,refs:_,elements:v}),[m,_,v,y])}function Rr(){return gt()&&ht()}function zr(e,t){t===void 0&&(t={});let{open:n,onOpenChange:r,events:i,dataRef:a,elements:o}=e,{enabled:s=!0,visibleOnly:c=!0}=t,l=S.useRef(!1),u=S.useRef(-1),d=S.useRef(!0);S.useEffect(()=>{if(!s)return;let e=V(o.domReference);function t(){!n&&W(o.domReference)&&o.domReference===bt(Tt(o.domReference))&&(l.current=!0)}function r(){d.current=!0}function i(){d.current=!1}return e.addEventListener(`blur`,t),Rr()&&(e.addEventListener(`keydown`,r,!0),e.addEventListener(`pointerdown`,i,!0)),()=>{e.removeEventListener(`blur`,t),Rr()&&(e.removeEventListener(`keydown`,r,!0),e.removeEventListener(`pointerdown`,i,!0))}},[o.domReference,n,s]),S.useEffect(()=>{if(!s)return;function e(e){let{reason:t}=e;(t===`reference-press`||t===`escape-key`)&&(l.current=!0)}return i.on(`openchange`,e),()=>{i.off(`openchange`,e)}},[i,s]),S.useEffect(()=>()=>{$(u)},[]);let f=S.useMemo(()=>({onMouseLeave(){l.current=!1},onFocus(e){if(l.current)return;let t=St(e.nativeEvent);if(c&&U(t)){if(Rr()&&!e.relatedTarget){if(!d.current&&!Et(t))return}else if(!Dt(t))return}r(!0,e.nativeEvent,`focus`)},onBlur(e){l.current=!1;let t=e.relatedTarget,n=e.nativeEvent,i=U(t)&&t.hasAttribute(br(`focus-guard`))&&t.getAttribute(`data-type`)===`outside`;u.current=window.setTimeout(()=>{let e=bt(o.domReference?o.domReference.ownerDocument:document);(t||e!==o.domReference)&&(xt(a.current.floatingContext?.refs.floating.current,e)||xt(o.domReference,e)||i||r(!1,n,`focus`))})}}),[a,o.domReference,r,c]);return S.useMemo(()=>s?{reference:f}:{},[s,f])}function Br(e,t,n){let r=new Map,i=n===`item`,a=e;if(i&&e){let{[tr]:t,[nr]:n,...r}=e;a=r}return{...n===`floating`&&{tabIndex:-1,[er]:``},...a,...t.map(t=>{let r=t?t[n]:null;return typeof r==`function`?e?r(e):null:r}).concat(e).reduce((e,t)=>(t&&Object.entries(t).forEach(t=>{let[n,a]=t;if(!(i&&[tr,nr].includes(n))){if(n.indexOf(`on`)===0){if(r.has(n)||r.set(n,[]),typeof a==`function`){var o;(o=r.get(n))==null||o.push(a),e[n]=function(){var e=[...arguments];return r.get(n)?.map(t=>t(...e)).find(e=>e!==void 0)}}}else e[n]=a}}),e),{})}}function Vr(e){e===void 0&&(e=[]);let t=e.map(e=>e?.reference),n=e.map(e=>e?.floating),r=e.map(e=>e?.item),i=S.useCallback(t=>Br(t,e,`reference`),t),a=S.useCallback(t=>Br(t,e,`floating`),n),o=S.useCallback(t=>Br(t,e,`item`),r);return S.useMemo(()=>({getReferenceProps:i,getFloatingProps:a,getItemProps:o}),[i,a,o])}var Hr=new Map([[`select`,`listbox`],[`combobox`,`listbox`],[`label`,!1]]);function Ur(e,t){t===void 0&&(t={});let{open:n,elements:r,floatingId:i}=e,{enabled:a=!0,role:o=`dialog`}=t,s=mr(),c=r.domReference?.id||s,l=S.useMemo(()=>Ot(r.floating)?.id||i,[r.floating,i]),u=Hr.get(o)??o,d=vr()!=null,f=S.useMemo(()=>u===`tooltip`||o===`label`?{[`aria-`+(o===`label`?`labelledby`:`describedby`)]:n?l:void 0}:{"aria-expanded":n?`true`:`false`,"aria-haspopup":u===`alertdialog`?`dialog`:u,"aria-controls":n?l:void 0,...u===`listbox`&&{role:`combobox`},...u===`menu`&&{id:c},...u===`menu`&&d&&{role:`menuitem`},...o===`select`&&{"aria-autocomplete":`none`},...o===`combobox`&&{"aria-autocomplete":`list`}},[u,l,d,n,c,o]),p=S.useMemo(()=>{let e={id:l,...u&&{role:u}};return u===`tooltip`||o===`label`?e:{...e,...u===`menu`&&{"aria-labelledby":c}}},[u,l,c,o]),m=S.useCallback(e=>{let{active:t,selected:n}=e,r={role:`option`,...t&&{id:l+`-fui-option`}};switch(o){case`select`:case`combobox`:return{...r,"aria-selected":n}}return{}},[l,o]);return S.useMemo(()=>a?{reference:f,floating:p,item:m}:{},[a,f,p,m])}function Wr(e,t,n){return n===void 0&&(n=!0),e.filter(e=>e.parentId===t&&(!n||e.context?.open)).flatMap(t=>[t,...Wr(e,t.id,n)])}function Gr(e,t){let[n,r]=e,i=!1,a=t.length;for(let e=0,o=a-1;e=r!=l>=r&&n<=(c-a)*(r-s)/(l-s)+a&&(i=!i)}return i}function Kr(e,t){return e[0]>=t.x&&e[0]<=t.x+t.width&&e[1]>=t.y&&e[1]<=t.y+t.height}function qr(e){e===void 0&&(e={});let{buffer:t=.5,blockPointerEvents:n=!1,requireIntent:r=!0}=e,i={current:-1},a=!1,o=null,s=null,c=typeof performance<`u`?performance.now():0;function l(e,t){let n=performance.now(),r=n-c;if(o===null||s===null||r===0)return o=e,s=t,c=n,null;let i=e-o,a=t-s,l=Math.sqrt(i*i+a*a)/r;return o=e,s=t,c=n,l}let u=e=>{let{x:n,y:o,placement:s,elements:c,onClose:u,nodeId:d,tree:f}=e;return function(e){function p(){$(i),u()}if($(i),!c.domReference||!c.floating||s==null||n==null||o==null)return;let{clientX:m,clientY:h}=e,g=[m,h],_=jr(e),v=e.type===`mouseleave`,y=Ar(c.floating,_),b=Ar(c.domReference,_),x=c.domReference.getBoundingClientRect(),S=c.floating.getBoundingClientRect(),C=s.split(`-`)[0],w=n>S.right-S.width/2,T=o>S.bottom-S.height/2,E=Kr(g,x),D=S.width>x.width,O=S.height>x.height,k=(D?x:S).left,A=(D?x:S).right,j=(O?x:S).top,M=(O?x:S).bottom;if(y&&(a=!0,!v))return;if(b&&(a=!1),b&&!v){a=!0;return}if(v&&U(e.relatedTarget)&&Ar(c.floating,e.relatedTarget)||f&&Wr(f.nodesRef.current,d).length)return;if(C===`top`&&o>=x.bottom-1||C===`bottom`&&o<=x.top+1||C===`left`&&n>=x.right-1||C===`right`&&n<=x.left+1)return p();let N=[];switch(C){case`top`:N=[[k,x.top+1],[k,S.bottom-1],[A,S.bottom-1],[A,x.top+1]];break;case`bottom`:N=[[k,S.top+1],[k,x.bottom-1],[A,x.bottom-1],[A,S.top+1]];break;case`left`:N=[[S.right-1,M],[S.right-1,j],[x.left+1,j],[x.left+1,M]];break;case`right`:N=[[x.right-1,M],[x.right-1,j],[S.left+1,j],[S.left+1,M]]}function P(e){let[n,r]=e;switch(C){case`top`:return[[D?n+t/2:w?n+t*4:n-t*4,r+t+1],[D?n-t/2:w?n+t*4:n-t*4,r+t+1],[S.left,w||D?S.bottom-t:S.top],[S.right,w?D?S.bottom-t:S.top:S.bottom-t]];case`bottom`:return[[D?n+t/2:w?n+t*4:n-t*4,r-t],[D?n-t/2:w?n+t*4:n-t*4,r-t],[S.left,w||D?S.top+t:S.bottom],[S.right,w?D?S.top+t:S.bottom:S.top+t]];case`left`:{let e=[n+t+1,O?r+t/2:T?r+t*4:r-t*4],i=[n+t+1,O?r-t/2:T?r+t*4:r-t*4];return[[T||O?S.right-t:S.left,S.top],[T?O?S.right-t:S.left:S.right-t,S.bottom],e,i]}case`right`:return[[n-t,O?r+t/2:T?r+t*4:r-t*4],[n-t,O?r-t/2:T?r+t*4:r-t*4],[T||O?S.left+t:S.right,S.top],[T?O?S.left+t:S.right:S.left+t,S.bottom]]}}if(!Gr([m,h],N)){if(a&&!E)return p();if(!v&&r){let t=l(e.clientX,e.clientY);if(t!==null&&t<.1)return p()}Gr([m,h],P([n,o]))?!a&&r&&(i.current=window.setTimeout(p,40)):p()}}};return u.__options={blockPointerEvents:n},u}var Jr={scrollHideDelay:1e3,type:`hover`,scrollbars:`xy`},Yr=l((e,{scrollbarSize:t,overscrollBehavior:n,scrollbars:r})=>{let i=n;return n&&r&&(r===`x`?i=`${n} auto`:r===`y`&&(i=`auto ${n}`)),{root:{"--scrollarea-scrollbar-size":m(t),"--scrollarea-over-scroll-behavior":i}}}),Xr=c(e=>{let n=i(`ScrollArea`,Jr,e),{classNames:r,className:a,style:o,styles:s,unstyled:c,scrollbarSize:l,vars:u,type:d,scrollHideDelay:f,viewportProps:p,viewportRef:m,onScrollPositionChange:g,children:_,offsetScrollbars:v,scrollbars:y,onBottomReached:b,onTopReached:C,onLeftReached:w,onRightReached:T,overscrollBehavior:E,startScrollPosition:D,verticalScrollbarPosition:O,attributes:k,...A}=n,[j,M]=(0,S.useState)(!1),[N,P]=(0,S.useState)(!1),[F,ee]=(0,S.useState)(!1),ne=(0,S.useRef)(!0),ie=(0,S.useRef)(!1),ae=(0,S.useRef)(!0),oe=(0,S.useRef)(!1),L=t({name:`ScrollArea`,props:n,classes:Ce,className:a,style:o,classNames:r,styles:s,unstyled:c,attributes:k,vars:u,varsResolver:Yr}),se=(0,S.useRef)(null),[ce,le]=(0,S.useState)(null),ue=$n([m,se,(0,S.useCallback)(e=>{le(t=>t===e?t:e)},[])]);return I(v===`present`?ce:null,()=>{let e=se.current;e&&(P(e.scrollHeight>e.clientHeight),ee(e.scrollWidth>e.clientWidth))}),h(()=>{D&&se.current&&se.current.scrollTo({left:D.x??0,top:D.y??0})},[]),(0,x.jsxs)(re,{getStyles:L,type:d===`never`?`always`:d,scrollHideDelay:f,scrollbars:y,...L(`root`),...A,children:[(0,x.jsx)(Se,{...p,...L(`viewport`,{style:p?.style}),ref:ue,"data-offset-scrollbars":v===!0?`xy`:v||void 0,"data-scrollbars":y||void 0,"data-vertical-scrollbar-position":O||void 0,"data-horizontal-hidden":v===`present`&&!F?`true`:void 0,"data-vertical-hidden":v===`present`&&!N?`true`:void 0,onScroll:e=>{p?.onScroll?.(e),g?.({x:e.currentTarget.scrollLeft,y:e.currentTarget.scrollTop});let{scrollTop:t,scrollHeight:n,clientHeight:r,scrollLeft:i,scrollWidth:a,clientWidth:o}=e.currentTarget,s=t-(n-r)>=-.8,c=t===0;s&&!ie.current&&b?.(),c&&!ne.current&&C?.(),ie.current=s,ne.current=c;let l=i-(a-o)>=-.8,u=i===0;l&&!oe.current&&T?.(),u&&!ae.current&&w?.(),oe.current=l,ae.current=u},children:_}),(y===`xy`||y===`x`)&&(0,x.jsx)(ye,{...L(`scrollbar`),orientation:`horizontal`,"data-vertical-scrollbar-position":O||void 0,"data-hidden":d===`never`||v===`present`&&!F||void 0,forceMount:!0,onMouseEnter:()=>M(!0),onMouseLeave:()=>M(!1),children:(0,x.jsx)(xe,{...L(`thumb`)})}),(y===`xy`||y===`y`)&&(0,x.jsx)(ye,{...L(`scrollbar`),orientation:`vertical`,"data-vertical-scrollbar-position":O||void 0,"data-hidden":d===`never`||v===`present`&&!N||void 0,forceMount:!0,onMouseEnter:()=>M(!0),onMouseLeave:()=>M(!1),children:(0,x.jsx)(xe,{...L(`thumb`)})}),(0,x.jsx)(te,{...L(`corner`),"data-vertical-scrollbar-position":O||void 0,"data-hovered":j||void 0,"data-hidden":d===`never`||void 0})]})});Xr.displayName=`@mantine/core/ScrollArea`;var Zr=c(e=>{let{children:t,classNames:r,styles:a,scrollbarSize:o,scrollHideDelay:s,type:c,dir:l,offsetScrollbars:u,overscrollBehavior:d,viewportRef:f,onScrollPositionChange:p,unstyled:m,variant:h,viewportProps:g,scrollbars:_,style:v,vars:y,onBottomReached:b,onTopReached:C,startScrollPosition:w,verticalScrollbarPosition:T,onOverflowChange:E,...D}=i(`ScrollAreaAutosize`,Jr,e),O=(0,S.useRef)(null),[k,A]=(0,S.useState)(null),j=$n([f,O,(0,S.useCallback)(e=>{A(t=>t===e?t:e)},[])]),M=(0,S.useRef)(!1),N=(0,S.useRef)(!1),P=(0,S.useEffectEvent)(()=>{let e=O.current;if(!e||!E)return;let t=e.scrollHeight>e.clientHeight;t!==M.current&&(N.current?E(t):(N.current=!0,t&&E(!0)),M.current=t)});return I(E?k:null,P),(0,x.jsx)(n,{...D,variant:h,style:[{display:`flex`,overflow:`hidden`},v],children:(0,x.jsx)(n,{style:{display:`flex`,flexDirection:`column`,flex:1,overflow:`hidden`,..._===`y`&&{minWidth:0},..._===`x`&&{minHeight:0},..._===`xy`&&{minWidth:0,minHeight:0},..._===!1&&{minWidth:0,minHeight:0}},children:(0,x.jsx)(Xr,{classNames:r,styles:a,scrollHideDelay:s,scrollbarSize:o,type:c,dir:l,offsetScrollbars:u,overscrollBehavior:d,viewportRef:j,onScrollPositionChange:p,unstyled:m,variant:h,viewportProps:g,vars:y,scrollbars:_,onBottomReached:b,onTopReached:C,startScrollPosition:w,verticalScrollbarPosition:T,"data-autosize":`true`,children:t})})})});Xr.classes=Ce,Xr.varsResolver=Yr,Zr.displayName=`@mantine/core/ScrollAreaAutosize`,Zr.classes=Ce,Xr.Autosize=Zr;function Qr(e,t,n,r){return e===`center`||r===`center`?{top:t}:e===`end`?{bottom:n}:e===`start`?{top:n}:{}}function $r(e,t,n,r,i){return e===`center`||r===`center`?{left:t}:e===`end`?{[i===`ltr`?`right`:`left`]:n}:e===`start`?{[i===`ltr`?`left`:`right`]:n}:{}}var ei={bottom:`borderTopLeftRadius`,left:`borderTopRightRadius`,right:`borderBottomLeftRadius`,top:`borderBottomRightRadius`};function ti({position:e,arrowSize:t,dir:n}){let[r,i]=e.split(`-`);if(!i)return;let a={width:t,height:t,position:`absolute`};if(r===`bottom`){let e=i===`start`,r=e?n===`ltr`?`left`:`right`:n===`ltr`?`right`:`left`;return{...a,top:-t,[r]:0,clipPath:e===(n===`rtl`)?`polygon(100% 0%, 0% 100%, 100% 100%)`:`polygon(0% 0%, 0% 100%, 100% 100%)`}}if(r===`top`){let e=i===`start`,r=e?n===`ltr`?`left`:`right`:n===`ltr`?`right`:`left`;return{...a,bottom:-t,[r]:0,clipPath:e===(n===`rtl`)?`polygon(0% 0%, 100% 0%, 100% 100%)`:`polygon(0% 0%, 100% 0%, 0% 100%)`}}if(r===`left`)return{...a,right:-t,[i===`start`?`top`:`bottom`]:0,clipPath:i===`start`?`polygon(0% 0%, 100% 0%, 0% 100%)`:`polygon(0% 0%, 0% 100%, 100% 100%)`};if(r===`right`)return{...a,left:-t,[i===`start`?`top`:`bottom`]:0,clipPath:i===`start`?`polygon(0% 0%, 100% 0%, 100% 100%)`:`polygon(100% 0%, 0% 100%, 100% 100%)`}}function ni({position:e,arrowSize:t,arrowOffset:n,arrowRadius:r,arrowPosition:i,arrowX:a,arrowY:o,dir:s}){if(i===`merge`){let n=ti({position:e,arrowSize:t,dir:s});if(n)return n}let[c,l=`center`]=e.split(`-`),u={width:t,height:t,transform:`rotate(45deg)`,position:`absolute`,[ei[c]]:r},d=-t/2;return c===`left`?{...u,...Qr(l,o,n,i),right:d,borderLeftColor:`transparent`,borderBottomColor:`transparent`,clipPath:`polygon(100% 0, 0 0, 100% 100%)`}:c===`right`?{...u,...Qr(l,o,n,i),left:d,borderRightColor:`transparent`,borderTopColor:`transparent`,clipPath:`polygon(0 100%, 0 0, 100% 100%)`}:c===`top`?{...u,...$r(l,a,n,i,s),bottom:d,borderTopColor:`transparent`,borderLeftColor:`transparent`,clipPath:`polygon(0 100%, 100% 100%, 100% 0)`}:c===`bottom`?{...u,...$r(l,a,n,i,s),top:d,borderBottomColor:`transparent`,borderRightColor:`transparent`,clipPath:`polygon(0 100%, 0 0, 100% 0)`}:{}}function ri({position:e,dir:t}){let[n,r]=e.split(`-`);if(!r)return;let i=r===`start`&&t===`ltr`||r===`end`&&t===`rtl`;if(n===`bottom`)return i?{borderTopLeftRadius:0}:{borderTopRightRadius:0};if(n===`top`)return i?{borderBottomLeftRadius:0}:{borderBottomRightRadius:0};if(n===`left`)return r===`start`?{borderTopRightRadius:0}:{borderBottomRightRadius:0};if(n===`right`)return r===`start`?{borderTopLeftRadius:0}:{borderBottomLeftRadius:0}}function ii({position:e,arrowSize:t,arrowOffset:n,arrowRadius:r,arrowPosition:i,visible:a,arrowX:o,arrowY:s,style:c,...l}){let{dir:u}=N();return a?(0,x.jsx)(`div`,{role:`presentation`,...l,style:{...c,...ni({position:e,arrowSize:t,arrowOffset:n,arrowRadius:r,arrowPosition:i,dir:u,arrowX:o,arrowY:s})}}):null}ii.displayName=`@mantine/core/FloatingArrow`;function ai(e,t){if(e===`rtl`&&(t.includes(`right`)||t.includes(`left`))){let[e,n]=t.split(`-`),r=e===`right`?`left`:`right`;return n===void 0?r:`${r}-${n}`}return t}function oi(e){let t=document.createElement(`div`);return t.setAttribute(`data-portal`,`true`),typeof e.className==`string`&&t.classList.add(...e.className.split(` `).filter(Boolean)),typeof e.style==`object`&&Object.assign(t.style,e.style),typeof e.id==`string`&&t.setAttribute(`id`,e.id),t}var si=null;function ci({target:e,reuseTargetNode:t,...n}){if(e)return typeof e==`string`?document.querySelector(e)||oi(n):e;if(t){if(si){if(document.body.contains(si))return si;si=null}let e=document.querySelector(`[data-mantine-shared-portal-node]`);if(e)return si=e,e;let t=oi(n);return t.setAttribute(`data-mantine-shared-portal-node`,`true`),document.body.appendChild(t),si=t,t}return oi(n)}var li={reuseTargetNode:!0},ui=c(e=>{let{children:t,target:n,reuseTargetNode:r,ref:a,...s}=i(`Portal`,li,e),[c,l]=(0,S.useState)(!1),u=(0,S.useRef)(null);return h(()=>(l(!0),u.current=ci({target:n,reuseTargetNode:r,...s}),o(a,u.current),!n&&!r&&u.current&&document.body.appendChild(u.current),()=>{!n&&!r&&u.current&&document.body.removeChild(u.current)}),[n]),!c||!u.current?null:(0,b.createPortal)((0,x.jsx)(x.Fragment,{children:t}),u.current)});ui.displayName=`@mantine/core/Portal`;var di=c(({withinPortal:e=!0,children:t,...n})=>y()===`test`||!e?(0,x.jsx)(x.Fragment,{children:t}):(0,x.jsx)(ui,{...n,children:t}));di.displayName=`@mantine/core/OptionalPortal`;var fi={duration:100,transition:`fade`};function pi(e,t){return{...fi,...t,...e}}function mi({offset:e,position:t,defaultOpened:n}){let[r,i]=(0,S.useState)(n),a=(0,S.useRef)(null),{x:o,y:s,elements:c,refs:l,update:u,placement:d}=Lr({placement:t,middleware:[Kn({crossAxis:!0,padding:5,rootBoundary:`document`})]}),f=d.includes(`right`)?e:t.includes(`left`)?e*-1:0,p=d.includes(`bottom`)?e:t.includes(`top`)?e*-1:0,m=(0,S.useCallback)(({clientX:e,clientY:t})=>{Number.isFinite(e)&&Number.isFinite(t)&&l.setPositionReference({getBoundingClientRect(){return{width:0,height:0,x:e,y:t,left:e+f,top:t+p,right:e,bottom:t}}})},[c.reference]);return(0,S.useEffect)(()=>{if(l.floating.current){let e=a.current;e.addEventListener(`mousemove`,m);let t=He(l.floating.current);return t.forEach(e=>{e.addEventListener(`scroll`,u)}),()=>{e.removeEventListener(`mousemove`,m),t.forEach(e=>{e.removeEventListener(`scroll`,u)})}}},[c.reference,l.floating.current,u,m,r]),{handleMouseMove:m,x:o,y:s,opened:r,setOpened:i,boundaryRef:a,floating:l.setFloating}}var hi={tooltip:`m_1b3c8819`,arrow:`m_f898399f`},gi={refProp:`ref`,withinPortal:!0,offset:10,position:`right`,zIndex:E(`popover`)},_i=l((e,{radius:t,color:n})=>({tooltip:{"--tooltip-radius":t===void 0?void 0:g(t),"--tooltip-bg":n?r(n,e):void 0,"--tooltip-color":n?`var(--mantine-color-white)`:void 0}})),vi=c(r=>{let o=i(`TooltipFloating`,gi,r),{children:s,refProp:c,withinPortal:l,style:u,className:d,classNames:f,styles:p,unstyled:m,radius:h,color:g,label:_,offset:v,position:y,multiline:b,zIndex:C,disabled:w,defaultOpened:T,variant:E,vars:D,portalProps:O,attributes:M,ref:N,...P}=o,F=a(),I=t({name:`TooltipFloating`,props:o,classes:hi,className:d,style:u,classNames:f,styles:p,unstyled:m,attributes:M,rootSelector:`tooltip`,vars:D,varsResolver:_i}),{handleMouseMove:ee,x:te,y:ne,opened:re,boundaryRef:ie,floating:ae,setOpened:oe}=mi({offset:v,position:y,defaultOpened:T}),L=A(s);if(!L)throw Error(`[@mantine/core] Tooltip.Floating component children should be an element or a component that accepts ref, fragments, strings, numbers and other primitive values are not supported`);let se=e(ie,k(L),N),ce=L.props,le=e=>{ce.onMouseEnter?.(e),ee(e),oe(!0)},ue=e=>{ce.onMouseLeave?.(e),oe(!1)};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(di,{...O,withinPortal:l,children:(0,x.jsx)(n,{...P,...I(`tooltip`,{style:{...j(u,F),zIndex:C,display:!w&&re?`block`:`none`,top:Number.isFinite(ne)?Math.round(ne):``,left:Number.isFinite(te)?Math.round(te):``}}),variant:E,ref:ae,mod:{multiline:b},children:_})}),(0,S.cloneElement)(L,{...ce,[c]:se,onMouseEnter:le,onMouseLeave:ue})]})});vi.classes=hi,vi.varsResolver=_i,vi.displayName=`@mantine/core/TooltipFloating`;var yi=(0,S.createContext)({withinGroup:!1}),bi={openDelay:0,closeDelay:0};function xi(e){let{openDelay:t,closeDelay:n,children:r}=i(`TooltipGroup`,bi,e);return(0,x.jsx)(yi,{value:{withinGroup:!0},children:(0,x.jsx)(Or,{delay:{open:t,close:n},children:r})})}xi.displayName=`@mantine/core/TooltipGroup`,xi.extend=e=>e;function Si(e){if(e===void 0)return{shift:!0,flip:!0};let t={...e};return e.shift===void 0&&(t.shift=!0),e.flip===void 0&&(t.flip=!0),t}function Ci(e){let t=Si(e.middlewares),n=[Gn(e.offset)];return t.shift&&n.push(Kn(typeof t.shift==`boolean`?{padding:8}:{padding:8,...t.shift})),t.flip&&n.push(typeof t.flip==`boolean`?Jn():Jn(t.flip)),n.push(Qn({element:e.arrowRef,padding:e.arrowOffset})),t.inline?n.push(typeof t.inline==`boolean`?Zn():Zn(t.inline)):e.inline&&n.push(Zn()),n}function wi(e){let[t,n]=(0,S.useState)(e.defaultOpened),r=typeof e.opened==`boolean`?e.opened:t,i=(0,S.use)(yi).withinGroup,a=p(),o=(0,S.useCallback)(e=>{n(e),e&&v(a)},[a]),{x:s,y:c,context:l,refs:u,placement:d,middlewareData:{arrow:{x:f,y:m}={}}}=Lr({strategy:e.strategy,placement:e.position,open:r,onOpenChange:o,middleware:Ci(e),whileElementsMounted:On}),{delay:g,currentId:_,setCurrentId:v}=kr(l,{id:a}),{getReferenceProps:y,getFloatingProps:b}=Vr([wr(l,{enabled:e.events?.hover,delay:i?g:{open:e.openDelay,close:e.closeDelay},mouseOnly:!e.events?.touch,handleClose:e.interactive?qr():null}),zr(l,{enabled:e.events?.focus,visibleOnly:!0}),Ur(l,{role:`tooltip`}),Fr(l,{enabled:e.opened===void 0})]),x=(0,S.useRef)(d);h(()=>{x.current!==d&&(x.current=d,e.onPositionChange?.(d))},[d]);let C=r&&_&&_!==a;return{x:s,y:c,arrowX:f,arrowY:m,reference:u.setReference,floating:u.setFloating,getFloatingProps:b,getReferenceProps:y,isGroupPhase:C,opened:r,placement:d}}var Ti={position:`top`,refProp:`ref`,withinPortal:!0,arrowSize:4,arrowOffset:5,arrowRadius:0,arrowPosition:`side`,offset:5,transitionProps:{duration:100,transition:`fade`},events:{hover:!0,focus:!1,touch:!1},zIndex:E(`popover`),middlewares:{flip:!0,shift:!0,inline:!1}},Ei=l((e,{radius:t,color:n,variant:r,autoContrast:i})=>{let a=e.variantColorResolver({theme:e,color:n||e.primaryColor,autoContrast:i,variant:r||`filled`});return{tooltip:{"--tooltip-radius":t===void 0?void 0:g(t),"--tooltip-bg":n?a.background:void 0,"--tooltip-color":n?a.color:void 0}}}),Di=c(r=>{let a=i(`Tooltip`,Ti,r),{children:o,position:s,refProp:c,label:l,openDelay:d,closeDelay:p,onPositionChange:m,opened:h,defaultOpened:g,withinPortal:_,radius:v,color:y,classNames:b,styles:C,unstyled:w,style:T,className:E,withArrow:D,arrowSize:O,arrowOffset:j,arrowRadius:M,arrowPosition:P,offset:F,transitionProps:I,multiline:ee,events:te,interactive:ne,zIndex:re,disabled:ie,onClick:ae,onMouseEnter:oe,onMouseLeave:L,inline:se,variant:ce,keepMounted:le,vars:ue,portalProps:R,mod:de,floatingStrategy:fe,middlewares:pe,autoContrast:me,attributes:he,target:z,ref:ge,..._e}=a,{dir:ve}=N(),ye=(0,S.useRef)(null),B=wi({position:ai(ve,s),closeDelay:p,openDelay:d,onPositionChange:m,opened:h,defaultOpened:g,events:te,interactive:ne,arrowRef:ye,arrowOffset:j,offset:typeof F==`number`?F+(D?O/2:0):F,inline:se,strategy:fe,middlewares:pe});(0,S.useEffect)(()=>{let e=z instanceof HTMLElement?z:typeof z==`string`?document.querySelector(z):z?.current||null;e&&B.reference(e)},[z,B]);let be=t({name:`Tooltip`,props:a,classes:hi,className:E,style:T,classNames:b,styles:C,unstyled:w,attributes:he,rootSelector:`tooltip`,vars:ue,varsResolver:Ei}),xe=A(o);if(!z&&!xe)throw Error(`[@mantine/core] Tooltip component children should be an element or a component that accepts ref, fragments, strings, numbers and other primitive values are not supported`);let Se=be(`tooltip`),Ce=ne&&!ie&&!!B.opened,we=P===`merge`&&D?ri({position:B.placement,dir:ve}):void 0;if(z){let e=pi(I,{duration:100,transition:`fade`});return(0,x.jsx)(x.Fragment,{children:(0,x.jsx)(di,{...R,withinPortal:_,children:(0,x.jsx)(f,{...e,keepMounted:le,mounted:!ie&&!!B.opened,duration:B.isGroupPhase?10:e.duration,children:e=>(0,x.jsxs)(n,{..._e,"data-fixed":fe===`fixed`||void 0,variant:ce,mod:[{multiline:ee,interactive:Ce},de],...Se,...B.getFloatingProps({ref:B.floating,className:Se.className,style:{...Se.style,...e,...we,zIndex:re,top:B.y??0,left:B.x??0}}),children:[l,(0,x.jsx)(ii,{ref:ye,arrowX:B.arrowX,arrowY:B.arrowY,visible:D,position:B.placement,arrowSize:O,arrowOffset:j,arrowRadius:M,arrowPosition:P,...be(`arrow`)})]})})})})}let Te=xe.props,V=e(B.reference,k(xe),ge),H=pi(I,{duration:100,transition:`fade`});return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(di,{...R,withinPortal:_,children:(0,x.jsx)(f,{...H,keepMounted:le,mounted:!ie&&!!B.opened,duration:B.isGroupPhase?10:H.duration,children:e=>(0,x.jsxs)(n,{..._e,"data-fixed":fe===`fixed`||void 0,variant:ce,mod:[{multiline:ee,interactive:Ce},de],...B.getFloatingProps({ref:B.floating,className:be(`tooltip`).className,style:{...be(`tooltip`).style,...e,...we,zIndex:re,top:B.y??0,left:B.x??0}}),children:[l,(0,x.jsx)(ii,{ref:ye,arrowX:B.arrowX,arrowY:B.arrowY,visible:D,position:B.placement,arrowSize:O,arrowOffset:j,arrowRadius:M,arrowPosition:P,...be(`arrow`)})]})})}),(0,S.cloneElement)(xe,B.getReferenceProps({onClick:ae,onMouseEnter:oe,onMouseLeave:L,onMouseMove:a.onMouseMove,onPointerDown:a.onPointerDown,onPointerEnter:a.onPointerEnter,...Te,className:u(E,Te.className),[c]:V}))]})});Di.classes=hi,Di.varsResolver=Ei,Di.displayName=`@mantine/core/Tooltip`,Di.Floating=vi,Di.Group=xi;export{k as C,C as D,w as E,A as S,E as T,Kn as _,ri as a,ue as b,Lr as c,Qn as d,Jn as f,Gn as g,qn as h,ii as i,wr as l,Zn as m,di as n,Xr as o,Xn as p,ai as r,qr as s,Di as t,Vr as u,Yn as v,D as w,N as x,On as y}; \ No newline at end of file diff --git a/internal/ui/dist/assets/Tooltip-Bef-UcCW.js b/internal/ui/dist/assets/Tooltip-Bef-UcCW.js deleted file mode 100644 index 6c88bb13..00000000 --- a/internal/ui/dist/assets/Tooltip-Bef-UcCW.js +++ /dev/null @@ -1 +0,0 @@ -import{A as e,J as t,L as n,M as r,O as i,Q as a,S as o,W as s,X as c,Z as l,_t as u,et as d,ft as f,it as p,lt as m,mt as h,pt as g,q as _,w as v,y}from"./brand-eOqp_Ed4.js";var b=u(g(),1),x=f(),S=u(h(),1);function C(e){return Array.isArray(e)||e===null?!1:typeof e==`object`&&e.type!==S.Fragment}function w(e){let t=(0,S.createContext)(null);return[t,()=>{let n=(0,S.use)(t);if(n===null)throw Error(e);return n}]}var T={app:100,modal:200,popover:300,overlay:400,max:9999};function E(e){return T[e]}function D(e){let t=(0,S.useRef)(e);return(0,S.useEffect)(()=>{t.current=e}),(0,S.useMemo)(()=>((...e)=>t.current?.(...e)),[])}function O(e,t){let{delay:n,flushOnUnmount:r,leading:i,maxWait:a}=typeof t==`number`?{delay:t,flushOnUnmount:!1,leading:!1,maxWait:void 0}:t,o=D(e),s=(0,S.useRef)(0),c=(0,S.useRef)(0),l=(0,S.useRef)(null),u=(0,S.useMemo)(()=>{let e=Object.assign((...t)=>{window.clearTimeout(s.current),l.current=t;let r=e._isFirstCall;e._isFirstCall=!1;function u(){window.clearTimeout(s.current),window.clearTimeout(c.current),s.current=0,c.current=0,e._isFirstCall=!0,e._hasPendingCallback=!1}function d(){a!==void 0&&c.current===0&&(c.current=window.setTimeout(()=>{if(s.current!==0){let e=l.current;u(),o(...e)}},a))}if(i&&r){o(...t),e.flush=()=>{s.current!==0&&(u(),o(...t))},e.cancel=()=>{u()},s.current=window.setTimeout(()=>{u()},n),d();return}if(i&&!r){e._hasPendingCallback=!0,e.flush=()=>{s.current!==0&&(u(),o(...t))},e.cancel=()=>{u()},s.current=window.setTimeout(()=>{u()},n),d();return}e._hasPendingCallback=!0;let f=()=>{s.current!==0&&(u(),o(...t))};e.flush=f,e.cancel=()=>{u()},s.current=window.setTimeout(f,n),d()},{flush:()=>{},cancel:()=>{},isPending:()=>e._hasPendingCallback,_isFirstCall:!0,_hasPendingCallback:!1});return e},[o,n,i,a]);return(0,S.useEffect)(()=>()=>{r?u.flush():u.cancel()},[u,r]),u}function k(e){return e?.props?.ref}function A(e){let t=S.Children.toArray(e);return t.length!==1||!C(t[0])?null:t[0]}function j(e,t){return Array.isArray(e)?[...e].reduce((e,n)=>({...e,...j(n,t)}),{}):typeof e==`function`?e(t):e??{}}var M=(0,S.createContext)({dir:`ltr`,toggleDirection:()=>{},setDirection:()=>{}});function N(){return(0,S.use)(M)}var[P,F]=w(`ScrollArea.Root component was not found in tree`);function I(e,t){let n=(0,S.useEffectEvent)(t);d(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e])}function ee(e){let{style:t,...n}=e,r=F(),[i,a]=(0,S.useState)(0),[o,s]=(0,S.useState)(0),c=!!(i&&o);return I(r.scrollbarX,()=>{let e=r.scrollbarX?.offsetHeight||0;r.onCornerHeightChange(e),s(e)}),I(r.scrollbarY,()=>{let e=r.scrollbarY?.offsetWidth||0;r.onCornerWidthChange(e),a(e)}),c?(0,x.jsx)(`div`,{...n,style:{...t,width:i,height:o}}):null}function te(e){let t=F(),n=!!(t.scrollbarX&&t.scrollbarY);return t.type!==`scroll`&&n?(0,x.jsx)(ee,{...e}):null}var ne={scrollHideDelay:1e3,type:`hover`};function re(t){let{type:n,scrollHideDelay:r,scrollbars:i,getStyles:a,ref:s,...c}=e(`ScrollAreaRoot`,ne,t),[u,d]=(0,S.useState)(null),[f,p]=(0,S.useState)(null),[m,h]=(0,S.useState)(null),[g,_]=(0,S.useState)(null),[v,y]=(0,S.useState)(null),[b,C]=(0,S.useState)(0),[w,T]=(0,S.useState)(0),[E,D]=(0,S.useState)(!1),[O,k]=(0,S.useState)(!1),A=l(s,d);return(0,x.jsx)(P,{value:{type:n,scrollHideDelay:r,scrollArea:u,viewport:f,onViewportChange:p,content:m,onContentChange:h,scrollbarX:g,onScrollbarXChange:_,scrollbarXEnabled:E,onScrollbarXEnabledChange:D,scrollbarY:v,onScrollbarYChange:y,scrollbarYEnabled:O,onScrollbarYEnabledChange:k,onCornerWidthChange:C,onCornerHeightChange:T,getStyles:a},children:(0,x.jsx)(o,{...c,ref:A,__vars:{"--sa-corner-width":i===`xy`?`${b}px`:`0px`,"--sa-corner-height":i===`xy`?`${w}px`:`0px`}})})}re.displayName=`@mantine/core/ScrollAreaRoot`;function ie(e,t){let n=e/t;return Number.isNaN(n)?0:n}function ae(e){let t=ie(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function oe(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function L(e,[t,n]){return Math.min(n,Math.max(t,e))}function se(e,t,n=`ltr`){let r=ae(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,c=L(e,n===`ltr`?[0,o]:[o*-1,0]);return oe([0,o],[0,s])(c)}function ce(e,t,n,r=`ltr`){let i=ae(n),a=i/2,o=t||a,s=i-o,c=n.scrollbar.paddingStart+o,l=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d=r===`ltr`?[0,u]:[u*-1,0];return oe([c,l],d)(e)}function le(e,t){return e>0&&e{e?.(r),(n===!1||!r.defaultPrevented)&&t?.(r)}}var[de,fe]=w(`ScrollAreaScrollbar was not found in tree`);function pe(e){let{sizes:t,hasThumb:n,onThumbChange:r,onThumbPointerUp:i,onThumbPointerDown:a,onThumbPositionChange:o,onDragScroll:s,onWheelScroll:c,onResize:u,ref:d,...f}=e,p=F(),[m,h]=(0,S.useState)(null),g=l(d,h),_=(0,S.useRef)(null),v=(0,S.useRef)(``),{viewport:y}=p,b=t.content-t.viewport,C=(0,S.useEffectEvent)(c),w=D(o),T=O(u,10),E=e=>{if(_.current){let t=e.clientX-_.current.left,n=e.clientY-_.current.top;s({x:t,y:n})}};return(0,S.useEffect)(()=>{let e=e=>{let t=e.target;m?.contains(t)&&C(e,b)};return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[y,m,b]),(0,S.useEffect)(w,[t,w]),I(m,T),I(p.content,T),(0,x.jsx)(de,{value:{scrollbar:m,hasThumb:n,onThumbChange:D(r),onThumbPointerUp:D(i),onThumbPositionChange:w,onThumbPointerDown:D(a)},children:(0,x.jsx)(`div`,{...f,ref:g,"data-mantine-scrollbar":!0,style:{position:`absolute`,...f.style},onPointerDown:R(e.onPointerDown,e=>{e.preventDefault(),e.button===0&&(e.target.setPointerCapture(e.pointerId),_.current=m.getBoundingClientRect(),v.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,E(e))}),onPointerMove:R(e.onPointerMove,E),onPointerUp:R(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&(e.preventDefault(),t.releasePointerCapture(e.pointerId))}),onLostPointerCapture:()=>{document.body.style.webkitUserSelect=v.current,_.current=null}})})}var me=e=>{let{sizes:t,onSizesChange:n,style:r,ref:i,...a}=e,o=F(),[s,c]=(0,S.useState)(),u=(0,S.useRef)(null),d=l(i,u,o.onScrollbarXChange);return(0,S.useEffect)(()=>{u.current&&c(getComputedStyle(u.current))},[u]),(0,x.jsx)(pe,{"data-orientation":`horizontal`,...a,ref:d,sizes:t,style:{...r,"--sa-thumb-width":`${ae(t)}px`},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,n)=>{if(o.viewport){let r=o.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),le(r,n)&&t.preventDefault()}},onResize:()=>{u.current&&o.viewport&&s&&n({content:o.viewport.scrollWidth,viewport:o.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:ue(s.paddingLeft),paddingEnd:ue(s.paddingRight)}})}})};me.displayName=`@mantine/core/ScrollAreaScrollbarX`;function he(e){let{sizes:t,onSizesChange:n,style:r,ref:i,...a}=e,o=F(),[s,c]=(0,S.useState)(),u=(0,S.useRef)(null),d=l(i,u,o.onScrollbarYChange);return(0,S.useEffect)(()=>{u.current&&c(window.getComputedStyle(u.current))},[]),(0,x.jsx)(pe,{...a,"data-orientation":`vertical`,ref:d,sizes:t,style:{"--sa-thumb-height":`${ae(t)}px`,...r},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,n)=>{if(o.viewport){let r=o.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),le(r,n)&&t.preventDefault()}},onResize:()=>{u.current&&o.viewport&&s&&n({content:o.viewport.scrollHeight,viewport:o.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:ue(s.paddingTop),paddingEnd:ue(s.paddingBottom)}})}})}he.displayName=`@mantine/core/ScrollAreaScrollbarY`;function z(e){let{orientation:t=`vertical`,...n}=e,{dir:r}=N(),i=F(),a=(0,S.useRef)(null),o=(0,S.useRef)(0),[s,c]=(0,S.useState)({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=ie(s.viewport,s.content),u={...n,sizes:s,onSizesChange:c,hasThumb:l>0&&l<1,onThumbChange:e=>{a.current=e},onThumbPointerUp:()=>{o.current=0},onThumbPointerDown:e=>{o.current=e}},d=(e,t)=>ce(e,o.current,s,t);return t===`horizontal`?(0,x.jsx)(me,{...u,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=se(e,s,r);a.current.style.transform=`translate3d(${t}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=d(e,r))}}):t===`vertical`?(0,x.jsx)(he,{...u,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=se(e,s);s.scrollbar.size===0?a.current.style.setProperty(`--thumb-opacity`,`0`):a.current.style.setProperty(`--thumb-opacity`,`1`),a.current.style.transform=`translate3d(0, ${t}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=d(e))}}):null}z.displayName=`@mantine/core/ScrollAreaScrollbarVisible`;function ge(e){let t=F(),{forceMount:n,...r}=e,[i,a]=(0,S.useState)(!1),o=e.orientation===`horizontal`,s=O(()=>{if(t.viewport){let e=t.viewport.offsetWidth{let{scrollArea:e}=r,t=0;if(e){let n=()=>{window.clearTimeout(t),a(!0)},i=()=>{t=window.setTimeout(()=>a(!1),r.scrollHideDelay)};return e.addEventListener(`pointerenter`,n),e.addEventListener(`pointerleave`,i),()=>{window.clearTimeout(t),e.removeEventListener(`pointerenter`,n),e.removeEventListener(`pointerleave`,i)}}},[r.scrollArea,r.scrollHideDelay]),t||i?(0,x.jsx)(ge,{"data-state":i?`visible`:`hidden`,...n}):null}_e.displayName=`@mantine/core/ScrollAreaScrollbarHover`;function ve(e){let{forceMount:t,...n}=e,r=F(),i=e.orientation===`horizontal`,[a,o]=(0,S.useState)(`hidden`),s=O(()=>o(`idle`),100);return(0,S.useEffect)(()=>{if(a===`idle`){let e=window.setTimeout(()=>o(`hidden`),r.scrollHideDelay);return()=>window.clearTimeout(e)}},[a,r.scrollHideDelay]),(0,S.useEffect)(()=>{let{viewport:e}=r,t=i?`scrollLeft`:`scrollTop`;if(e){let n=e[t],r=()=>{let r=e[t];n!==r&&(o(`scrolling`),s()),n=r};return e.addEventListener(`scroll`,r),()=>e.removeEventListener(`scroll`,r)}},[r.viewport,i,s]),t||a!==`hidden`?(0,x.jsx)(z,{"data-state":a===`hidden`?`hidden`:`visible`,...n,onPointerEnter:R(e.onPointerEnter,()=>o(`interacting`)),onPointerLeave:R(e.onPointerLeave,()=>o(`idle`))}):null}function ye(e){let{forceMount:t,...n}=e,r=F(),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:a}=r,o=e.orientation===`horizontal`;return(0,S.useEffect)(()=>(o?i(!0):a(!0),()=>{o?i(!1):a(!1)}),[o,i,a]),r.type===`hover`?(0,x.jsx)(_e,{...n,forceMount:t}):r.type===`scroll`?(0,x.jsx)(ve,{...n,forceMount:t}):r.type===`auto`?(0,x.jsx)(ge,{...n,forceMount:t}):r.type===`always`?(0,x.jsx)(z,{...n}):null}ye.displayName=`@mantine/core/ScrollAreaScrollbar`;function B(e,t=()=>{}){let n={left:e.scrollLeft,top:e.scrollTop},r=0;return(function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)})(),()=>window.cancelAnimationFrame(r)}function be(e){let{style:t,ref:n,...r}=e,i=F(),a=fe(),{onThumbPositionChange:o}=a,s=l(n,a.onThumbChange),c=(0,S.useRef)(void 0),u=O(()=>{c.current&&=(c.current(),void 0)},100);return(0,S.useEffect)(()=>{let{viewport:e}=i;if(e){let t=()=>{if(u(),!c.current){let t=B(e,o);c.current=t,o()}};return o(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[i.viewport,u,o]),(0,x.jsx)(`div`,{"data-state":a.hasThumb?`visible`:`hidden`,...r,ref:s,style:{width:`var(--sa-thumb-width)`,height:`var(--sa-thumb-height)`,...t},onPointerDownCapture:R(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;a.onThumbPointerDown({x:n,y:r})}),onPointerUp:R(e.onPointerUp,a.onThumbPointerUp)})}be.displayName=`@mantine/core/ScrollAreaThumb`;function xe(e){let{forceMount:t,...n}=e,r=fe();return t||r.hasThumb?(0,x.jsx)(be,{...n}):null}xe.displayName=`@mantine/core/ScrollAreaThumb`;function Se({children:e,style:t,ref:n,onWheel:r,...i}){let a=F(),s=l(n,a.onViewportChange),c=e=>{if(r?.(e),a.scrollbarXEnabled&&a.viewport&&e.shiftKey){let{scrollTop:t,scrollHeight:n,clientHeight:r,scrollWidth:i,clientWidth:o}=a.viewport,s=t<1,c=t>=n-r-1;i>o&&(s||c)&&e.stopPropagation()}};return(0,x.jsx)(o,{...i,ref:s,onWheel:c,"data-scrollarea-viewport":!0,style:{overflowX:a.scrollbarXEnabled?`scroll`:`hidden`,overflowY:a.scrollbarYEnabled?`scroll`:`hidden`,...t},children:(0,x.jsx)(`div`,{...a.getStyles(`content`),ref:a.onContentChange,children:e})})}Se.displayName=`@mantine/core/ScrollAreaViewport`;var Ce={root:`m_d57069b5`,content:`m_b1336c6`,viewport:`m_c0783ff9`,viewportInner:`m_f8f631dd`,scrollbar:`m_c44ba933`,thumb:`m_d8b5e363`,corner:`m_21657268`};function we(){return typeof window<`u`}function Te(e){return Ee(e)?(e.nodeName||``).toLowerCase():`#document`}function V(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function H(e){return((Ee(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Ee(e){return we()?e instanceof Node||e instanceof V(e).Node:!1}function U(e){return we()?e instanceof Element||e instanceof V(e).Element:!1}function W(e){return we()?e instanceof HTMLElement||e instanceof V(e).HTMLElement:!1}function De(e){return!we()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof V(e).ShadowRoot}function Oe(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=G(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function ke(e){return/^(table|td|th)$/.test(Te(e))}function Ae(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var je=/transform|translate|scale|rotate|perspective|filter/,Me=/paint|layout|strict|content/,Ne=e=>!!e&&e!==`none`,Pe;function Fe(e){let t=U(e)?G(e):e;return Ne(t.transform)||Ne(t.translate)||Ne(t.scale)||Ne(t.rotate)||Ne(t.perspective)||!Le()&&(Ne(t.backdropFilter)||Ne(t.filter))||je.test(t.willChange||``)||Me.test(t.contain||``)}function Ie(e){let t=Be(e);for(;W(t)&&!Re(t);){if(Fe(t))return t;if(Ae(t))return null;t=Be(t)}return null}function Le(){return Pe??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Pe}function Re(e){return/^(html|body|#document)$/.test(Te(e))}function G(e){return V(e).getComputedStyle(e)}function ze(e){return U(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Be(e){if(Te(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||De(e)&&e.host||H(e);return De(t)?t.host:t}function Ve(e){let t=Be(e);return Re(t)?(e.ownerDocument||e).body:W(t)&&Oe(t)?t:Ve(t)}function He(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=Ve(e),i=r===e.ownerDocument?.body,a=V(r);if(i){let e=Ue(a);return t.concat(a,a.visualViewport||[],Oe(r)?r:[],e&&n?He(e):[])}return t.concat(r,He(r,[],n))}function Ue(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}var We=[`top`,`right`,`bottom`,`left`],K=Math.min,q=Math.max,Ge=Math.round,Ke=Math.floor,qe=e=>({x:e,y:e}),Je={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function Ye(e,t,n){return q(e,K(t,n))}function J(e,t){return typeof e==`function`?e(t):e}function Y(e){return e.split(`-`)[0]}function Xe(e){return e.split(`-`)[1]}function Ze(e){return e===`x`?`y`:`x`}function Qe(e){return e===`y`?`height`:`width`}function X(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function $e(e){return Ze(X(e))}function et(e,t,n){n===void 0&&(n=!1);let r=Xe(e),i=$e(e),a=Qe(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=lt(o)),[o,lt(o)]}function tt(e){let t=lt(e);return[nt(e),t,nt(t)]}function nt(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var rt=[`left`,`right`],it=[`right`,`left`],at=[`top`,`bottom`],ot=[`bottom`,`top`];function st(e,t,n){switch(e){case`top`:case`bottom`:return n?t?it:rt:t?rt:it;case`left`:case`right`:return t?at:ot;default:return[]}}function ct(e,t,n,r){let i=Xe(e),a=st(Y(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(nt)))),a}function lt(e){let t=Y(e);return Je[t]+e.slice(t.length)}function ut(e){return{top:e.top??0,right:e.right??0,bottom:e.bottom??0,left:e.left??0}}function dt(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:ut(e)}function ft(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function pt(){let e=navigator.userAgentData;return e!=null&&e.platform?e.platform:navigator.platform}function mt(){let e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map(e=>{let{brand:t,version:n}=e;return t+`/`+n}).join(` `):navigator.userAgent}function ht(){return/apple/i.test(navigator.vendor)}function gt(){return pt().toLowerCase().startsWith(`mac`)&&!navigator.maxTouchPoints}function _t(){return mt().includes(`jsdom/`)}var vt=`data-floating-ui-focusable`,yt=`input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])`;function bt(e){let t=e.activeElement;for(;((n=t)==null||(n=n.shadowRoot)==null?void 0:n.activeElement)!=null;){var n;t=t.shadowRoot.activeElement}return t}function xt(e,t){if(!e||!t)return!1;let n=t.getRootNode==null?void 0:t.getRootNode();if(e.contains(t))return!0;if(n&&De(n)){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode||n.host}}return!1}function St(e){return`composedPath`in e?e.composedPath()[0]:e.target}function Ct(e,t){if(t==null)return!1;if(`composedPath`in e)return e.composedPath().includes(t);let n=e;return n.target!=null&&t.contains(n.target)}function wt(e){return e.matches(`html,body`)}function Tt(e){return e?.ownerDocument||document}function Et(e){return W(e)&&e.matches(yt)}function Dt(e){if(!e||_t())return!0;try{return e.matches(`:focus-visible`)}catch{return!0}}function Ot(e){return e?e.hasAttribute(vt)?e:e.querySelector(`[`+vt+`]`)||e:null}function kt(e,t,n){return n===void 0&&(n=!0),e.filter(e=>e.parentId===t&&(!n||e.context?.open)).flatMap(t=>[t,...kt(e,t.id,n)])}function At(e){return`nativeEvent`in e}function jt(e,t){let n=[`mouse`,`pen`];return t||n.push(``,void 0),n.includes(e)}var Z=typeof document<`u`?S.useLayoutEffect:function(){},Mt={...S};function Nt(e){let t=S.useRef(e);return Z(()=>{t.current=e}),t}var Pt=Mt.useInsertionEffect||(e=>e());function Q(e){let t=S.useRef(()=>{});return Pt(()=>{t.current=e}),S.useCallback(function(){var e=[...arguments];return t.current==null?void 0:t.current(...e)},[])}function Ft(e,t,n){let{reference:r,floating:i}=e,a=X(t),o=$e(t),s=Qe(o),c=Y(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}let m=Xe(t);return m&&(p[o]+=f*(m===`end`?1:-1)*(n&&l?-1:1)),p}async function It(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=J(t,e),p=dt(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=ft(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=ft(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var Lt=50,Rt=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:It},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=Ft(l,r,c),f=r,p=0,m={};for(let n=0;n({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=J(e,t)||{};if(l==null)return{};let d=dt(u),f={x:n,y:r},p=$e(i),m=Qe(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=K(d[_],T),D=K(d[v],T),O=C-h[m]-D,k=C/2-h[m]/2+w,A=Ye(E,k,O),j=!c.arrow&&Xe(i)!=null&&k!==A&&a.reference[m]/2-(ke<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(u!==`alignment`||_===X(t)||T.every(e=>X(e.placement)!==_||e.overflows[0]>0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=X(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o}if(r!==n)return{reset:{placement:n}}}return{}}}};function Vt(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Ht(e){return We.some(t=>e[t]>=0)}var Ut=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=J(e,t);switch(i){case`referenceHidden`:{let e=Vt(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:Ht(e)}}}case`escaped`:{let e=Vt(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:Ht(e)}}}default:return{}}}}};function Wt(e){let t=K(...e.map(e=>e.left)),n=K(...e.map(e=>e.top)),r=q(...e.map(e=>e.right)),i=q(...e.map(e=>e.bottom));return{x:t,y:n,width:r-t,height:i-n}}function Gt(e){let t=e.slice().sort((e,t)=>e.y-t.y),n=[],r=null;for(let e=0;er.height/2?n.push([i]):n[n.length-1].push(i),r=i}return n.map(e=>ft(Wt(e)))}var Kt=function(e){return e===void 0&&(e={}),{name:`inline`,options:e,async fn(t){let{placement:n,elements:r,rects:i,platform:a,strategy:o}=t,{padding:s=2,x:c,y:l}=J(e,t),u=Array.from(await(a.getClientRects==null?void 0:a.getClientRects(r.reference))||[]);if(!u.length)return{};let d=Gt(u),f=ft(Wt(u)),p=dt(s);function m(){if(d.length===2&&(d[0].left>d[1].right||d[1].left>d[0].right)&&c!=null&&l!=null)return d.find(e=>c>e.left-p.left&&ce.top-p.top&&l=2){if(X(n)===`y`){let e=d[0],t=d[d.length-1],r=Y(n)===`top`,i=e.top,a=t.bottom,o=r?e.left:t.left;return ft({x:o,y:i,width:(r?e.right:t.right)-o,height:a-i})}let e=Y(n)===`left`,t=q(...d.map(e=>e.right)),r=K(...d.map(e=>e.left)),i=d.filter(n=>e?n.left===r:n.right===t),a=i[0].top,o=i[i.length-1].bottom;return ft({x:r,y:a,width:t-r,height:o-a})}return f}let h=await a.getElementRects({reference:{getBoundingClientRect:m},floating:r.floating,strategy:o});return i.reference.x!==h.reference.x||i.reference.y!==h.reference.y||i.reference.width!==h.reference.width||i.reference.height!==h.reference.height?{reset:{rects:h}}:{}}}},qt=new Set([`left`,`top`]);async function Jt(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=Y(n),s=Xe(n),c=X(n)===`y`,l=qt.has(o)?-1:1,u=a&&c?-1:1,d=J(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var Yt=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await Jt(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},Xt=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=J(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=X(i),p=Ze(f),m=u[p],h=u[f],g=(e,t)=>Ye(t+d[e===`y`?`top`:`left`],t,t-d[e===`y`?`bottom`:`right`]);o&&(m=g(p,m)),s&&(h=g(f,h));let _=c.fn({...t,[p]:m,[f]:h});return{..._,data:{x:_.x-n,y:_.y-r,enabled:{[p]:o,[f]:s}}}}}},Zt=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=J(e,t),u={x:n,y:r},d=X(i),f=Ze(d),p=u[f],m=u[d],h=J(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:h.mainAxis??0,crossAxis:h.crossAxis??0};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=qt.has(Y(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);mr&&(m=r)}return{[f]:p,[d]:m}}}},Qt=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){let{placement:n,rects:r,platform:i,elements:a}=t,{apply:o=()=>{},...s}=J(e,t),c=await i.detectOverflow(t,s),l=Y(n),u=Xe(n),d=X(n)===`y`,{width:f,height:p}=r.floating,m,h;l===`top`||l===`bottom`?(m=l,h=u===(await(i.isRTL==null?void 0:i.isRTL(a.floating))?`start`:`end`)?`left`:`right`):(h=l,m=u===`end`?`top`:`bottom`);let g=p-c.top-c.bottom,_=f-c.left-c.right,v=K(p-c[m],g),y=K(f-c[h],_),b=t.middlewareData.shift,x=!b,S=v,C=y;b!=null&&b.enabled.x&&(C=_),b!=null&&b.enabled.y&&(S=g),x&&!u&&(d?C=f-2*q(c.left,c.right):S=p-2*q(c.top,c.bottom)),await o({...t,availableWidth:C,availableHeight:S});let w=await i.getDimensions(a.floating);return f!==w.width||p!==w.height?{reset:{rects:!0}}:{}}}};function $t(e){let t=G(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=W(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=Ge(n)!==a||Ge(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function en(e){return U(e)?e:e.contextElement}function tn(e){let t=en(e);if(!W(t))return qe(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=$t(t),o=(a?Ge(n.width):n.width)/r,s=(a?Ge(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var nn=qe(0);function rn(e){let t=V(e);return!Le()||!t.visualViewport?nn:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function an(e,t,n){return t===void 0&&(t=!1),!!n&&t&&n===V(e)}function on(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=en(e),o=qe(1);t&&(r?U(r)&&(o=tn(r)):o=tn(e));let s=an(a,n,r)?rn(a):qe(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a&&r){let e=V(a),t=U(r)?V(r):r,n=e,i=Ue(n);for(;i&&t!==n;){let e=tn(i),t=i.getBoundingClientRect(),r=G(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=V(i),i=Ue(n)}}return ft({width:u,height:d,x:c,y:l})}function sn(e,t){let n=ze(e).scrollLeft;return t?t.left+n:on(H(e)).left+n}function cn(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-sn(e,n),y:n.top+t.scrollTop}}function ln(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=H(r),s=t?Ae(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=qe(1),u=qe(0),d=W(r);if((d||!a)&&((Te(r)!==`body`||Oe(o))&&(c=ze(r)),d)){let e=on(r);l=tn(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?cn(o,c):qe(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function un(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function dn(e){let t=ze(e),n=e.ownerDocument.body,r=q(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=q(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight),a=-t.scrollLeft+sn(e),o=-t.scrollTop;return G(n).direction===`rtl`&&(a+=q(e.clientWidth,n.clientWidth)-r),{width:r,height:i,x:a,y:o}}var fn=25;function pn(e,t,n){n===void 0&&(n=`viewport`);let r=n===`layoutViewport`,i=V(e),a=H(e),o=i.visualViewport,s=a.clientWidth,c=a.clientHeight,l=0,u=0;if(o){let e=!Le()||t===`fixed`;r?e||(l=-o.offsetLeft,u=-o.offsetTop):(s=o.width,c=o.height,e&&(l=o.offsetLeft,u=o.offsetTop))}if(sn(a)<=0){let e=a.ownerDocument,t=e.body,n=getComputedStyle(t),r=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,i=Math.abs(a.clientWidth-t.clientWidth-r),o=getComputedStyle(a).scrollbarGutter===`stable both-edges`?i/2:i;o<=fn&&(s-=o)}return{width:s,height:c,x:l,y:u}}function mn(e,t){let n=on(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=tn(e);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function hn(e,t,n){let r;if(t===`viewport`||t===`layoutViewport`)r=pn(e,n,t);else if(t===`document`)r=dn(H(e));else if(U(t))r=mn(t,n);else{let n=rn(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return ft(r)}function gn(e,t){let n=t.get(e);if(n)return n;let r=He(e,[],!1).filter(e=>U(e)&&Te(e)!==`body`),i=null,a=G(e).position===`fixed`,o=a?Be(e):e;for(;U(o)&&!Re(o);){let e=G(o),t=Fe(o),n=i?i.position:a?`fixed`:``;!t&&(n===`fixed`||n===`absolute`&&e.position===`static`)?r=r.filter(e=>e!==o):i=e,o=Be(o)}return t.set(e,r),r}function _n(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Ae(t)?[]:gn(t,this._c):[].concat(n),r],o=hn(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e{s(!1,1e-7)},1e3)}y=!1}try{r=new IntersectionObserver(b,{...v,root:a.ownerDocument})}catch{r=new IntersectionObserver(b,v)}r.observe(e)}let c=V(e),l=()=>s(n);return c.addEventListener(`resize`,l),s(!0),()=>{c.removeEventListener(`resize`,l),o()}}function On(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=en(e),u=i||a?[...l?He(l):[],...t?He(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n),a&&e.addEventListener(`resize`,n)});let d=l&&s?Dn(l,n,a):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?on(e):null;c&&g();function g(){let t=on(e);h&&!En(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var kn=Yt,An=Xt,jn=Bt,Mn=Qt,Nn=Ut,Pn=zt,Fn=Kt,In=Zt,Ln=(e,t,n)=>{let r=new Map,i=n??{},a={...Tn,...i.platform,_c:r};return Rt(e,t,{...i,platform:a})},Rn=typeof document<`u`?S.useLayoutEffect:function(){};function zn(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`function`&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e==`object`){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!zn(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){let n=i[r];if(!(n===`_owner`&&e.$$typeof)&&!zn(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function Bn(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Vn(e,t){let n=Bn(e);return Math.round(t*n)/n}function Hn(e){let t=S.useRef(e);return Rn(()=>{t.current=e}),t}function Un(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:s=!0,whileElementsMounted:c,open:l}=e,[u,d]=S.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,p]=S.useState(r);zn(f,r)||p(r);let[m,h]=S.useState(null),[g,_]=S.useState(null),v=S.useCallback(e=>{e!==w.current&&(w.current=e,h(e))},[]),y=S.useCallback(e=>{e!==T.current&&(T.current=e,_(e))},[]),x=a||m,C=o||g,w=S.useRef(null),T=S.useRef(null),E=S.useRef(u),D=c!=null,O=Hn(c),k=Hn(i),A=Hn(l),j=S.useCallback(()=>{if(!w.current||!T.current)return;let e={placement:t,strategy:n,middleware:f};k.current&&(e.platform=k.current),Ln(w.current,T.current,e).then(e=>{let t={...e,isPositioned:A.current!==!1};M.current&&!zn(E.current,t)&&(E.current=t,b.flushSync(()=>{d(t)}))})},[f,t,n,k,A]);Rn(()=>{l===!1&&E.current.isPositioned&&(E.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[l]);let M=S.useRef(!1);Rn(()=>(M.current=!0,()=>{M.current=!1}),[]),Rn(()=>{if(x&&(w.current=x),C&&(T.current=C),x&&C){if(O.current)return O.current(x,C,j);j()}},[x,C,j,O,D]);let N=S.useMemo(()=>({reference:w,floating:T,setReference:v,setFloating:y}),[v,y]),P=S.useMemo(()=>({reference:x,floating:C}),[x,C]),F=S.useMemo(()=>{let e={position:n,left:0,top:0};if(!P.floating)return e;let t=Vn(P.floating,u.x),r=Vn(P.floating,u.y);return s?{...e,transform:`translate(`+t+`px, `+r+`px)`,...Bn(P.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,s,P.floating,u.x,u.y]);return S.useMemo(()=>({...u,update:j,refs:N,elements:P,floatingStyles:F}),[u,j,N,P,F])}var Wn=e=>{function t(e){return{}.hasOwnProperty.call(e,`current`)}return{name:`arrow`,options:e,fn(n){let{element:r,padding:i}=typeof e==`function`?e(n):e;return r&&t(r)?r.current==null?{}:Pn({element:r.current,padding:i}).fn(n):r?Pn({element:r,padding:i}).fn(n):{}}}},Gn=(e,t)=>{let n=kn(e);return{name:n.name,fn:n.fn,options:[e,t]}},Kn=(e,t)=>{let n=An(e);return{name:n.name,fn:n.fn,options:[e,t]}},qn=(e,t)=>({fn:In(e).fn,options:[e,t]}),Jn=(e,t)=>{let n=jn(e);return{name:n.name,fn:n.fn,options:[e,t]}},Yn=(e,t)=>{let n=Mn(e);return{name:n.name,fn:n.fn,options:[e,t]}},Xn=(e,t)=>{let n=Nn(e);return{name:n.name,fn:n.fn,options:[e,t]}},Zn=(e,t)=>{let n=Fn(e);return{name:n.name,fn:n.fn,options:[e,t]}},Qn=(e,t)=>{let n=Wn(e);return{name:n.name,fn:n.fn,options:[e,t]}};function $n(e){let t=S.useRef(void 0),n=S.useCallback(t=>{let n=e.map(e=>{if(e!=null){if(typeof e==`function`){let n=e,r=n(t);return typeof r==`function`?r:()=>{n(null)}}return e.current=t,()=>{e.current=null}}});return()=>{n.forEach(e=>e?.())}},e);return S.useMemo(()=>e.every(e=>e==null)?null:e=>{t.current&&=(t.current(),void 0),e!=null&&(t.current=n(e))},e)}var er=`data-floating-ui-focusable`,tr=`active`,nr=`selected`,rr=`ArrowLeft`,ir=`ArrowRight`,ar=`ArrowUp`,or=`ArrowDown`,sr=[rr,ir],cr=[ar,or];[...sr,...cr];var lr={...S},ur=!1,dr=0,fr=()=>`floating-ui-`+Math.random().toString(36).slice(2,6)+dr++;function pr(){let[e,t]=S.useState(()=>ur?fr():void 0);return Z(()=>{e??t(fr())},[]),S.useEffect(()=>{ur=!0},[]),e}var mr=lr.useId||pr;function hr(){let e=new Map;return{emit(t,n){var r;(r=e.get(t))==null||r.forEach(e=>e(n))},on(t,n){e.has(t)||e.set(t,new Set),e.get(t).add(n)},off(t,n){var r;(r=e.get(t))==null||r.delete(n)}}}var gr=S.createContext(null),_r=S.createContext(null),vr=()=>S.useContext(gr)?.id||null,yr=()=>S.useContext(_r);function br(e){return`data-floating-ui-`+e}function $(e){e.current!==-1&&(clearTimeout(e.current),e.current=-1)}var xr=br(`safe-polygon`);function Sr(e,t,n){if(n&&!jt(n))return 0;if(typeof e==`number`)return e;if(typeof e==`function`){let n=e();return typeof n==`number`?n:n?.[t]}return e?.[t]}function Cr(e){return typeof e==`function`?e():e}function wr(e,t){t===void 0&&(t={});let{open:n,onOpenChange:r,dataRef:i,events:a,elements:o}=e,{enabled:s=!0,delay:c=0,handleClose:l=null,mouseOnly:u=!1,restMs:d=0,move:f=!0}=t,p=yr(),m=vr(),h=Nt(l),g=Nt(c),_=Nt(n),v=Nt(d),y=S.useRef(),b=S.useRef(-1),x=S.useRef(),C=S.useRef(-1),w=S.useRef(!0),T=S.useRef(!1),E=S.useRef(()=>{}),D=S.useRef(!1),O=Q(()=>{let e=i.current.openEvent?.type;return e?.includes(`mouse`)&&e!==`mousedown`});S.useEffect(()=>{if(!s)return;function e(e){let{open:t}=e;t||($(b),$(C),w.current=!0,D.current=!1)}return a.on(`openchange`,e),()=>{a.off(`openchange`,e)}},[s,a]),S.useEffect(()=>{if(!s||!h.current||!n)return;function e(e){O()&&r(!1,e,`hover`)}let t=Tt(o.floating).documentElement;return t.addEventListener(`mouseleave`,e),()=>{t.removeEventListener(`mouseleave`,e)}},[o.floating,n,r,s,h,O]);let k=S.useCallback(function(e,t,n){t===void 0&&(t=!0),n===void 0&&(n=`hover`);let i=Sr(g.current,`close`,y.current);i&&!x.current?($(b),b.current=window.setTimeout(()=>r(!1,e,n),i)):t&&($(b),r(!1,e,n))},[g,r]),A=Q(()=>{E.current(),x.current=void 0}),j=Q(()=>{if(T.current){let e=Tt(o.floating).body;e.style.pointerEvents=``,e.removeAttribute(xr),T.current=!1}}),M=Q(()=>i.current.openEvent?[`click`,`mousedown`].includes(i.current.openEvent.type):!1);S.useEffect(()=>{if(!s)return;function e(e){if($(b),w.current=!1,u&&!jt(y.current)||Cr(v.current)>0&&!Sr(g.current,`open`))return;let t=Sr(g.current,`open`,y.current);t?b.current=window.setTimeout(()=>{_.current||r(!0,e,`hover`)},t):n||r(!0,e,`hover`)}function t(e){if(M()){j();return}E.current();let t=Tt(o.floating);if($(C),D.current=!1,h.current&&i.current.floatingContext){n||$(b),x.current=h.current({...i.current.floatingContext,tree:p,x:e.clientX,y:e.clientY,onClose(){j(),A(),M()||k(e,!0,`safe-polygon`)}});let r=x.current;t.addEventListener(`mousemove`,r),E.current=()=>{t.removeEventListener(`mousemove`,r)};return}(y.current!==`touch`||!xt(o.floating,e.relatedTarget))&&k(e)}function a(e){M()||i.current.floatingContext&&(h.current==null||h.current({...i.current.floatingContext,tree:p,x:e.clientX,y:e.clientY,onClose(){j(),A(),M()||k(e)}})(e))}function c(){$(b)}function l(e){M()||k(e,!1)}if(U(o.domReference)){let r=o.domReference,i=o.floating;return n&&r.addEventListener(`mouseleave`,a),f&&r.addEventListener(`mousemove`,e,{once:!0}),r.addEventListener(`mouseenter`,e),r.addEventListener(`mouseleave`,t),i&&(i.addEventListener(`mouseleave`,a),i.addEventListener(`mouseenter`,c),i.addEventListener(`mouseleave`,l)),()=>{n&&r.removeEventListener(`mouseleave`,a),f&&r.removeEventListener(`mousemove`,e),r.removeEventListener(`mouseenter`,e),r.removeEventListener(`mouseleave`,t),i&&(i.removeEventListener(`mouseleave`,a),i.removeEventListener(`mouseenter`,c),i.removeEventListener(`mouseleave`,l))}}},[o,s,e,u,f,k,A,j,r,n,_,p,g,h,i,M,v]),Z(()=>{var e;if(s&&n&&(e=h.current)!=null&&(e=e.__options)!=null&&e.blockPointerEvents&&O()){T.current=!0;let e=o.floating;if(U(o.domReference)&&e){var t;let n=Tt(o.floating).body;n.setAttribute(xr,``);let r=o.domReference,i=p==null||(t=p.nodesRef.current.find(e=>e.id===m))==null||(t=t.context)==null?void 0:t.elements.floating;return i&&(i.style.pointerEvents=``),n.style.pointerEvents=`none`,r.style.pointerEvents=`auto`,e.style.pointerEvents=`auto`,()=>{n.style.pointerEvents=``,r.style.pointerEvents=``,e.style.pointerEvents=``}}}},[s,n,m,o,p,h,O]),Z(()=>{n||(y.current=void 0,D.current=!1,A(),j())},[n,A,j]),S.useEffect(()=>()=>{A(),$(b),$(C),j()},[s,o.domReference,A,j]);let N=S.useMemo(()=>{function e(e){y.current=e.pointerType}return{onPointerDown:e,onPointerEnter:e,onMouseMove(e){let{nativeEvent:t}=e;function i(){!w.current&&!_.current&&r(!0,t,`hover`)}(!u||jt(y.current))&&(n||Cr(v.current)===0||D.current&&e.movementX**2+e.movementY**2<2||($(C),y.current===`touch`?i():(D.current=!0,C.current=window.setTimeout(i,Cr(v.current)))))}}},[u,r,n,_,v]);return S.useMemo(()=>s?{reference:N}:{},[s,N])}var Tr=()=>{},Er=S.createContext({delay:0,initialDelay:0,timeoutMs:0,currentId:null,setCurrentId:Tr,setState:Tr,isInstantPhase:!1}),Dr=()=>S.useContext(Er);function Or(e){let{children:t,delay:n,timeoutMs:r=0}=e,[i,a]=S.useReducer((e,t)=>({...e,...t}),{delay:n,timeoutMs:r,initialDelay:n,currentId:null,isInstantPhase:!1}),o=S.useRef(null),s=S.useCallback(e=>{a({currentId:e})},[]);return Z(()=>{i.currentId?o.current===null?o.current=i.currentId:i.isInstantPhase||a({isInstantPhase:!0}):(i.isInstantPhase&&a({isInstantPhase:!1}),o.current=null)},[i.currentId,i.isInstantPhase]),(0,x.jsx)(Er.Provider,{value:S.useMemo(()=>({...i,setState:a,setCurrentId:s}),[i,s]),children:t})}function kr(e,t){t===void 0&&(t={});let{open:n,onOpenChange:r,floatingId:i}=e,{id:a,enabled:o=!0}=t,s=a??i,c=Dr(),{currentId:l,setCurrentId:u,initialDelay:d,setState:f,timeoutMs:p}=c;return Z(()=>{o&&l&&(f({delay:{open:1,close:Sr(d,`close`)}}),l!==s&&r(!1))},[o,s,r,f,l,d]),Z(()=>{function e(){r(!1),f({delay:d,currentId:null})}if(o&&l&&!n&&l===s){if(p){let t=window.setTimeout(e,p);return()=>{clearTimeout(t)}}e()}},[o,n,f,l,s,r,d,p]),Z(()=>{o&&u!==Tr&&n&&u(s)},[o,n,u,s]),c}function Ar(e,t){if(!e||!t)return!1;let n=t.getRootNode==null?void 0:t.getRootNode();if(e.contains(t))return!0;if(n&&De(n)){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode||n.host}}return!1}function jr(e){return`composedPath`in e?e.composedPath()[0]:e.target}var Mr={pointerdown:`onPointerDown`,mousedown:`onMouseDown`,click:`onClick`},Nr={pointerdown:`onPointerDownCapture`,mousedown:`onMouseDownCapture`,click:`onClickCapture`},Pr=e=>({escapeKey:typeof e==`boolean`?e:e?.escapeKey??!1,outsidePress:typeof e==`boolean`?e:e?.outsidePress??!0});function Fr(e,t){t===void 0&&(t={});let{open:n,onOpenChange:r,elements:i,dataRef:a}=e,{enabled:o=!0,escapeKey:s=!0,outsidePress:c=!0,outsidePressEvent:l=`pointerdown`,referencePress:u=!1,referencePressEvent:d=`pointerdown`,ancestorScroll:f=!1,bubbles:p,capture:m}=t,h=yr(),g=Q(typeof c==`function`?c:()=>!1),_=typeof c==`function`?g:c,v=S.useRef(!1),{escapeKey:y,outsidePress:b}=Pr(p),{escapeKey:x,outsidePress:C}=Pr(m),w=S.useRef(!1),T=Q(e=>{if(!n||!o||!s||e.key!==`Escape`||w.current)return;let t=a.current.floatingContext?.nodeId,i=h?kt(h.nodesRef.current,t):[];if(!y&&(e.stopPropagation(),i.length>0)){let e=!0;if(i.forEach(t=>{var n;if((n=t.context)!=null&&n.open&&!t.context.dataRef.current.__escapeKeyBubbles){e=!1;return}}),!e)return}r(!1,At(e)?e.nativeEvent:e,`escape-key`)}),E=Q(e=>{var t;let n=()=>{var t;T(e),(t=St(e))==null||t.removeEventListener(`keydown`,n)};(t=St(e))==null||t.addEventListener(`keydown`,n)}),D=Q(e=>{let t=a.current.insideReactTree;a.current.insideReactTree=!1;let n=v.current;if(v.current=!1,l===`click`&&n||t||typeof _==`function`&&!_(e))return;let o=St(e),s=`[`+br(`inert`)+`]`,c=Tt(i.floating).querySelectorAll(s),u=U(o)?o:null;for(;u&&!Re(u);){let e=Be(u);if(Re(e)||!U(e))break;u=e}if(c.length&&U(o)&&!wt(o)&&!xt(o,i.floating)&&Array.from(c).every(e=>!xt(u,e)))return;if(W(o)&&A){let t=Re(o),n=G(o),r=/auto|scroll/,i=t||r.test(n.overflowX),a=t||r.test(n.overflowY),s=i&&o.clientWidth>0&&o.scrollWidth>o.clientWidth,c=a&&o.clientHeight>0&&o.scrollHeight>o.clientHeight,l=n.direction===`rtl`,u=c&&(l?e.offsetX<=o.offsetWidth-o.clientWidth:e.offsetX>o.clientWidth),d=s&&e.offsetY>o.clientHeight;if(u||d)return}let d=a.current.floatingContext?.nodeId,f=h&&kt(h.nodesRef.current,d).some(t=>Ct(e,t.context?.elements.floating));if(Ct(e,i.floating)||Ct(e,i.domReference)||f)return;let p=h?kt(h.nodesRef.current,d):[];if(p.length>0){let e=!0;if(p.forEach(t=>{var n;if((n=t.context)!=null&&n.open&&!t.context.dataRef.current.__outsidePressBubbles){e=!1;return}}),!e)return}r(!1,e,`outside-press`)}),O=Q(e=>{var t;let n=()=>{var t;D(e),(t=St(e))==null||t.removeEventListener(l,n)};(t=St(e))==null||t.addEventListener(l,n)});S.useEffect(()=>{if(!n||!o)return;a.current.__escapeKeyBubbles=y,a.current.__outsidePressBubbles=b;let e=-1;function t(e){r(!1,e,`ancestor-scroll`)}function c(){window.clearTimeout(e),w.current=!0}function u(){e=window.setTimeout(()=>{w.current=!1},Le()?5:0)}let d=Tt(i.floating);s&&(d.addEventListener(`keydown`,x?E:T,x),d.addEventListener(`compositionstart`,c),d.addEventListener(`compositionend`,u)),_&&d.addEventListener(l,C?O:D,C);let p=[];return f&&(U(i.domReference)&&(p=He(i.domReference)),U(i.floating)&&(p=p.concat(He(i.floating))),!U(i.reference)&&i.reference&&i.reference.contextElement&&(p=p.concat(He(i.reference.contextElement)))),p=p.filter(e=>e!==d.defaultView?.visualViewport),p.forEach(e=>{e.addEventListener(`scroll`,t)}),()=>{s&&(d.removeEventListener(`keydown`,x?E:T,x),d.removeEventListener(`compositionstart`,c),d.removeEventListener(`compositionend`,u)),_&&d.removeEventListener(l,C?O:D,C),p.forEach(e=>{e.removeEventListener(`scroll`,t)}),window.clearTimeout(e)}},[a,i,s,_,l,n,r,f,o,y,b,T,x,E,D,C,O]),S.useEffect(()=>{a.current.insideReactTree=!1},[a,_,l]);let k=S.useMemo(()=>({onKeyDown:T,...u&&{[Mr[d]]:e=>{r(!1,e.nativeEvent,`reference-press`)},...d!==`click`&&{onClick(e){r(!1,e.nativeEvent,`reference-press`)}}}}),[T,r,u,d]),A=S.useMemo(()=>{function e(e){e.button===0&&(v.current=!0)}return{onKeyDown:T,onMouseDown:e,onMouseUp:e,[Nr[l]]:()=>{a.current.insideReactTree=!0}}},[T,l,a]);return S.useMemo(()=>o?{reference:k,floating:A}:{},[o,k,A])}function Ir(e){let{open:t=!1,onOpenChange:n,elements:r}=e,i=mr(),a=S.useRef({}),[o]=S.useState(()=>hr()),s=vr()!=null,[c,l]=S.useState(r.reference),u=Q((e,t,r)=>{a.current.openEvent=e?t:void 0,o.emit(`openchange`,{open:e,event:t,reason:r,nested:s}),n?.(e,t,r)}),d=S.useMemo(()=>({setPositionReference:l}),[]),f=S.useMemo(()=>({reference:c||r.reference||null,floating:r.floating||null,domReference:r.reference}),[c,r.reference,r.floating]);return S.useMemo(()=>({dataRef:a,open:t,onOpenChange:u,elements:f,events:o,floatingId:i,refs:d}),[t,u,f,o,i,d])}function Lr(e){let{elements:t,...n}=e===void 0?{}:e,{nodeId:r}=n,i=Ir({...n,elements:{reference:t?.reference??null,floating:t?.floating??null}}),a=n.rootContext||i,o=a.elements,[s,c]=S.useState(null),[l,u]=S.useState(null),d=o?.domReference||s,f=S.useRef(null),p=yr();Z(()=>{d&&(f.current=d)},[d]);let m=Un({...n,elements:{...o,...l&&{reference:l}}}),h=S.useCallback(e=>{let t=U(e)?{getBoundingClientRect:()=>e.getBoundingClientRect(),getClientRects:()=>e.getClientRects(),contextElement:e}:e;u(t),m.refs.setReference(t)},[m.refs]),g=S.useCallback(e=>{(U(e)||e===null)&&(f.current=e,c(e)),(U(m.refs.reference.current)||m.refs.reference.current===null||e!==null&&!U(e))&&m.refs.setReference(e)},[m.refs]),_=S.useMemo(()=>({...m.refs,setReference:g,setPositionReference:h,domReference:f}),[m.refs,g,h]),v=S.useMemo(()=>({...m.elements,domReference:d}),[m.elements,d]),y=S.useMemo(()=>({...m,...a,refs:_,elements:v,nodeId:r}),[m,_,v,r,a]);return Z(()=>{a.dataRef.current.floatingContext=y;let e=p?.nodesRef.current.find(e=>e.id===r);e&&(e.context=y)}),S.useMemo(()=>({...m,context:y,refs:_,elements:v}),[m,_,v,y])}function Rr(){return gt()&&ht()}function zr(e,t){t===void 0&&(t={});let{open:n,onOpenChange:r,events:i,dataRef:a,elements:o}=e,{enabled:s=!0,visibleOnly:c=!0}=t,l=S.useRef(!1),u=S.useRef(-1),d=S.useRef(!0);S.useEffect(()=>{if(!s)return;let e=V(o.domReference);function t(){!n&&W(o.domReference)&&o.domReference===bt(Tt(o.domReference))&&(l.current=!0)}function r(){d.current=!0}function i(){d.current=!1}return e.addEventListener(`blur`,t),Rr()&&(e.addEventListener(`keydown`,r,!0),e.addEventListener(`pointerdown`,i,!0)),()=>{e.removeEventListener(`blur`,t),Rr()&&(e.removeEventListener(`keydown`,r,!0),e.removeEventListener(`pointerdown`,i,!0))}},[o.domReference,n,s]),S.useEffect(()=>{if(!s)return;function e(e){let{reason:t}=e;(t===`reference-press`||t===`escape-key`)&&(l.current=!0)}return i.on(`openchange`,e),()=>{i.off(`openchange`,e)}},[i,s]),S.useEffect(()=>()=>{$(u)},[]);let f=S.useMemo(()=>({onMouseLeave(){l.current=!1},onFocus(e){if(l.current)return;let t=St(e.nativeEvent);if(c&&U(t)){if(Rr()&&!e.relatedTarget){if(!d.current&&!Et(t))return}else if(!Dt(t))return}r(!0,e.nativeEvent,`focus`)},onBlur(e){l.current=!1;let t=e.relatedTarget,n=e.nativeEvent,i=U(t)&&t.hasAttribute(br(`focus-guard`))&&t.getAttribute(`data-type`)===`outside`;u.current=window.setTimeout(()=>{let e=bt(o.domReference?o.domReference.ownerDocument:document);(t||e!==o.domReference)&&(xt(a.current.floatingContext?.refs.floating.current,e)||xt(o.domReference,e)||i||r(!1,n,`focus`))})}}),[a,o.domReference,r,c]);return S.useMemo(()=>s?{reference:f}:{},[s,f])}function Br(e,t,n){let r=new Map,i=n===`item`,a=e;if(i&&e){let{[tr]:t,[nr]:n,...r}=e;a=r}return{...n===`floating`&&{tabIndex:-1,[er]:``},...a,...t.map(t=>{let r=t?t[n]:null;return typeof r==`function`?e?r(e):null:r}).concat(e).reduce((e,t)=>(t&&Object.entries(t).forEach(t=>{let[n,a]=t;if(!(i&&[tr,nr].includes(n))){if(n.indexOf(`on`)===0){if(r.has(n)||r.set(n,[]),typeof a==`function`){var o;(o=r.get(n))==null||o.push(a),e[n]=function(){var e=[...arguments];return r.get(n)?.map(t=>t(...e)).find(e=>e!==void 0)}}}else e[n]=a}}),e),{})}}function Vr(e){e===void 0&&(e=[]);let t=e.map(e=>e?.reference),n=e.map(e=>e?.floating),r=e.map(e=>e?.item),i=S.useCallback(t=>Br(t,e,`reference`),t),a=S.useCallback(t=>Br(t,e,`floating`),n),o=S.useCallback(t=>Br(t,e,`item`),r);return S.useMemo(()=>({getReferenceProps:i,getFloatingProps:a,getItemProps:o}),[i,a,o])}var Hr=new Map([[`select`,`listbox`],[`combobox`,`listbox`],[`label`,!1]]);function Ur(e,t){t===void 0&&(t={});let{open:n,elements:r,floatingId:i}=e,{enabled:a=!0,role:o=`dialog`}=t,s=mr(),c=r.domReference?.id||s,l=S.useMemo(()=>Ot(r.floating)?.id||i,[r.floating,i]),u=Hr.get(o)??o,d=vr()!=null,f=S.useMemo(()=>u===`tooltip`||o===`label`?{[`aria-`+(o===`label`?`labelledby`:`describedby`)]:n?l:void 0}:{"aria-expanded":n?`true`:`false`,"aria-haspopup":u===`alertdialog`?`dialog`:u,"aria-controls":n?l:void 0,...u===`listbox`&&{role:`combobox`},...u===`menu`&&{id:c},...u===`menu`&&d&&{role:`menuitem`},...o===`select`&&{"aria-autocomplete":`none`},...o===`combobox`&&{"aria-autocomplete":`list`}},[u,l,d,n,c,o]),p=S.useMemo(()=>{let e={id:l,...u&&{role:u}};return u===`tooltip`||o===`label`?e:{...e,...u===`menu`&&{"aria-labelledby":c}}},[u,l,c,o]),m=S.useCallback(e=>{let{active:t,selected:n}=e,r={role:`option`,...t&&{id:l+`-fui-option`}};switch(o){case`select`:case`combobox`:return{...r,"aria-selected":n}}return{}},[l,o]);return S.useMemo(()=>a?{reference:f,floating:p,item:m}:{},[a,f,p,m])}function Wr(e,t,n){return n===void 0&&(n=!0),e.filter(e=>e.parentId===t&&(!n||e.context?.open)).flatMap(t=>[t,...Wr(e,t.id,n)])}function Gr(e,t){let[n,r]=e,i=!1,a=t.length;for(let e=0,o=a-1;e=r!=l>=r&&n<=(c-a)*(r-s)/(l-s)+a&&(i=!i)}return i}function Kr(e,t){return e[0]>=t.x&&e[0]<=t.x+t.width&&e[1]>=t.y&&e[1]<=t.y+t.height}function qr(e){e===void 0&&(e={});let{buffer:t=.5,blockPointerEvents:n=!1,requireIntent:r=!0}=e,i={current:-1},a=!1,o=null,s=null,c=typeof performance<`u`?performance.now():0;function l(e,t){let n=performance.now(),r=n-c;if(o===null||s===null||r===0)return o=e,s=t,c=n,null;let i=e-o,a=t-s,l=Math.sqrt(i*i+a*a)/r;return o=e,s=t,c=n,l}let u=e=>{let{x:n,y:o,placement:s,elements:c,onClose:u,nodeId:d,tree:f}=e;return function(e){function p(){$(i),u()}if($(i),!c.domReference||!c.floating||s==null||n==null||o==null)return;let{clientX:m,clientY:h}=e,g=[m,h],_=jr(e),v=e.type===`mouseleave`,y=Ar(c.floating,_),b=Ar(c.domReference,_),x=c.domReference.getBoundingClientRect(),S=c.floating.getBoundingClientRect(),C=s.split(`-`)[0],w=n>S.right-S.width/2,T=o>S.bottom-S.height/2,E=Kr(g,x),D=S.width>x.width,O=S.height>x.height,k=(D?x:S).left,A=(D?x:S).right,j=(O?x:S).top,M=(O?x:S).bottom;if(y&&(a=!0,!v))return;if(b&&(a=!1),b&&!v){a=!0;return}if(v&&U(e.relatedTarget)&&Ar(c.floating,e.relatedTarget)||f&&Wr(f.nodesRef.current,d).length)return;if(C===`top`&&o>=x.bottom-1||C===`bottom`&&o<=x.top+1||C===`left`&&n>=x.right-1||C===`right`&&n<=x.left+1)return p();let N=[];switch(C){case`top`:N=[[k,x.top+1],[k,S.bottom-1],[A,S.bottom-1],[A,x.top+1]];break;case`bottom`:N=[[k,S.top+1],[k,x.bottom-1],[A,x.bottom-1],[A,S.top+1]];break;case`left`:N=[[S.right-1,M],[S.right-1,j],[x.left+1,j],[x.left+1,M]];break;case`right`:N=[[x.right-1,M],[x.right-1,j],[S.left+1,j],[S.left+1,M]]}function P(e){let[n,r]=e;switch(C){case`top`:return[[D?n+t/2:w?n+t*4:n-t*4,r+t+1],[D?n-t/2:w?n+t*4:n-t*4,r+t+1],[S.left,w||D?S.bottom-t:S.top],[S.right,w?D?S.bottom-t:S.top:S.bottom-t]];case`bottom`:return[[D?n+t/2:w?n+t*4:n-t*4,r-t],[D?n-t/2:w?n+t*4:n-t*4,r-t],[S.left,w||D?S.top+t:S.bottom],[S.right,w?D?S.top+t:S.bottom:S.top+t]];case`left`:{let e=[n+t+1,O?r+t/2:T?r+t*4:r-t*4],i=[n+t+1,O?r-t/2:T?r+t*4:r-t*4];return[[T||O?S.right-t:S.left,S.top],[T?O?S.right-t:S.left:S.right-t,S.bottom],e,i]}case`right`:return[[n-t,O?r+t/2:T?r+t*4:r-t*4],[n-t,O?r-t/2:T?r+t*4:r-t*4],[T||O?S.left+t:S.right,S.top],[T?O?S.left+t:S.right:S.left+t,S.bottom]]}}if(!Gr([m,h],N)){if(a&&!E)return p();if(!v&&r){let t=l(e.clientX,e.clientY);if(t!==null&&t<.1)return p()}Gr([m,h],P([n,o]))?!a&&r&&(i.current=window.setTimeout(p,40)):p()}}};return u.__options={blockPointerEvents:n},u}var Jr={scrollHideDelay:1e3,type:`hover`,scrollbars:`xy`},Yr=t((e,{scrollbarSize:t,overscrollBehavior:n,scrollbars:r})=>{let i=n;return n&&r&&(r===`x`?i=`${n} auto`:r===`y`&&(i=`auto ${n}`)),{root:{"--scrollarea-scrollbar-size":m(t),"--scrollarea-over-scroll-behavior":i}}}),Xr=v(t=>{let n=e(`ScrollArea`,Jr,t),{classNames:r,className:a,style:o,styles:s,unstyled:c,scrollbarSize:l,vars:u,type:f,scrollHideDelay:p,viewportProps:m,viewportRef:h,onScrollPositionChange:g,children:_,offsetScrollbars:v,scrollbars:y,onBottomReached:b,onTopReached:C,onLeftReached:w,onRightReached:T,overscrollBehavior:E,startScrollPosition:D,verticalScrollbarPosition:O,attributes:k,...A}=n,[j,M]=(0,S.useState)(!1),[N,P]=(0,S.useState)(!1),[F,ee]=(0,S.useState)(!1),ne=(0,S.useRef)(!0),ie=(0,S.useRef)(!1),ae=(0,S.useRef)(!0),oe=(0,S.useRef)(!1),L=i({name:`ScrollArea`,props:n,classes:Ce,className:a,style:o,classNames:r,styles:s,unstyled:c,attributes:k,vars:u,varsResolver:Yr}),se=(0,S.useRef)(null),[ce,le]=(0,S.useState)(null),ue=$n([h,se,(0,S.useCallback)(e=>{le(t=>t===e?t:e)},[])]);return I(v===`present`?ce:null,()=>{let e=se.current;e&&(P(e.scrollHeight>e.clientHeight),ee(e.scrollWidth>e.clientWidth))}),d(()=>{D&&se.current&&se.current.scrollTo({left:D.x??0,top:D.y??0})},[]),(0,x.jsxs)(re,{getStyles:L,type:f===`never`?`always`:f,scrollHideDelay:p,scrollbars:y,...L(`root`),...A,children:[(0,x.jsx)(Se,{...m,...L(`viewport`,{style:m?.style}),ref:ue,"data-offset-scrollbars":v===!0?`xy`:v||void 0,"data-scrollbars":y||void 0,"data-vertical-scrollbar-position":O||void 0,"data-horizontal-hidden":v===`present`&&!F?`true`:void 0,"data-vertical-hidden":v===`present`&&!N?`true`:void 0,onScroll:e=>{m?.onScroll?.(e),g?.({x:e.currentTarget.scrollLeft,y:e.currentTarget.scrollTop});let{scrollTop:t,scrollHeight:n,clientHeight:r,scrollLeft:i,scrollWidth:a,clientWidth:o}=e.currentTarget,s=t-(n-r)>=-.8,c=t===0;s&&!ie.current&&b?.(),c&&!ne.current&&C?.(),ie.current=s,ne.current=c;let l=i-(a-o)>=-.8,u=i===0;l&&!oe.current&&T?.(),u&&!ae.current&&w?.(),oe.current=l,ae.current=u},children:_}),(y===`xy`||y===`x`)&&(0,x.jsx)(ye,{...L(`scrollbar`),orientation:`horizontal`,"data-vertical-scrollbar-position":O||void 0,"data-hidden":f===`never`||v===`present`&&!F||void 0,forceMount:!0,onMouseEnter:()=>M(!0),onMouseLeave:()=>M(!1),children:(0,x.jsx)(xe,{...L(`thumb`)})}),(y===`xy`||y===`y`)&&(0,x.jsx)(ye,{...L(`scrollbar`),orientation:`vertical`,"data-vertical-scrollbar-position":O||void 0,"data-hidden":f===`never`||v===`present`&&!N||void 0,forceMount:!0,onMouseEnter:()=>M(!0),onMouseLeave:()=>M(!1),children:(0,x.jsx)(xe,{...L(`thumb`)})}),(0,x.jsx)(te,{...L(`corner`),"data-vertical-scrollbar-position":O||void 0,"data-hovered":j||void 0,"data-hidden":f===`never`||void 0})]})});Xr.displayName=`@mantine/core/ScrollArea`;var Zr=v(t=>{let{children:n,classNames:r,styles:i,scrollbarSize:a,scrollHideDelay:s,type:c,dir:l,offsetScrollbars:u,overscrollBehavior:d,viewportRef:f,onScrollPositionChange:p,unstyled:m,variant:h,viewportProps:g,scrollbars:_,style:v,vars:y,onBottomReached:b,onTopReached:C,startScrollPosition:w,verticalScrollbarPosition:T,onOverflowChange:E,...D}=e(`ScrollAreaAutosize`,Jr,t),O=(0,S.useRef)(null),[k,A]=(0,S.useState)(null),j=$n([f,O,(0,S.useCallback)(e=>{A(t=>t===e?t:e)},[])]),M=(0,S.useRef)(!1),N=(0,S.useRef)(!1),P=(0,S.useEffectEvent)(()=>{let e=O.current;if(!e||!E)return;let t=e.scrollHeight>e.clientHeight;t!==M.current&&(N.current?E(t):(N.current=!0,t&&E(!0)),M.current=t)});return I(E?k:null,P),(0,x.jsx)(o,{...D,variant:h,style:[{display:`flex`,overflow:`hidden`},v],children:(0,x.jsx)(o,{style:{display:`flex`,flexDirection:`column`,flex:1,overflow:`hidden`,..._===`y`&&{minWidth:0},..._===`x`&&{minHeight:0},..._===`xy`&&{minWidth:0,minHeight:0},..._===!1&&{minWidth:0,minHeight:0}},children:(0,x.jsx)(Xr,{classNames:r,styles:i,scrollHideDelay:s,scrollbarSize:a,type:c,dir:l,offsetScrollbars:u,overscrollBehavior:d,viewportRef:j,onScrollPositionChange:p,unstyled:m,variant:h,viewportProps:g,vars:y,scrollbars:_,onBottomReached:b,onTopReached:C,startScrollPosition:w,verticalScrollbarPosition:T,"data-autosize":`true`,children:n})})})});Xr.classes=Ce,Xr.varsResolver=Yr,Zr.displayName=`@mantine/core/ScrollAreaAutosize`,Zr.classes=Ce,Xr.Autosize=Zr;function Qr(e,t,n,r){return e===`center`||r===`center`?{top:t}:e===`end`?{bottom:n}:e===`start`?{top:n}:{}}function $r(e,t,n,r,i){return e===`center`||r===`center`?{left:t}:e===`end`?{[i===`ltr`?`right`:`left`]:n}:e===`start`?{[i===`ltr`?`left`:`right`]:n}:{}}var ei={bottom:`borderTopLeftRadius`,left:`borderTopRightRadius`,right:`borderBottomLeftRadius`,top:`borderBottomRightRadius`};function ti({position:e,arrowSize:t,dir:n}){let[r,i]=e.split(`-`);if(!i)return;let a={width:t,height:t,position:`absolute`};if(r===`bottom`){let e=i===`start`,r=e?n===`ltr`?`left`:`right`:n===`ltr`?`right`:`left`;return{...a,top:-t,[r]:0,clipPath:e===(n===`rtl`)?`polygon(100% 0%, 0% 100%, 100% 100%)`:`polygon(0% 0%, 0% 100%, 100% 100%)`}}if(r===`top`){let e=i===`start`,r=e?n===`ltr`?`left`:`right`:n===`ltr`?`right`:`left`;return{...a,bottom:-t,[r]:0,clipPath:e===(n===`rtl`)?`polygon(0% 0%, 100% 0%, 100% 100%)`:`polygon(0% 0%, 100% 0%, 0% 100%)`}}if(r===`left`)return{...a,right:-t,[i===`start`?`top`:`bottom`]:0,clipPath:i===`start`?`polygon(0% 0%, 100% 0%, 0% 100%)`:`polygon(0% 0%, 0% 100%, 100% 100%)`};if(r===`right`)return{...a,left:-t,[i===`start`?`top`:`bottom`]:0,clipPath:i===`start`?`polygon(0% 0%, 100% 0%, 100% 100%)`:`polygon(100% 0%, 0% 100%, 100% 100%)`}}function ni({position:e,arrowSize:t,arrowOffset:n,arrowRadius:r,arrowPosition:i,arrowX:a,arrowY:o,dir:s}){if(i===`merge`){let n=ti({position:e,arrowSize:t,dir:s});if(n)return n}let[c,l=`center`]=e.split(`-`),u={width:t,height:t,transform:`rotate(45deg)`,position:`absolute`,[ei[c]]:r},d=-t/2;return c===`left`?{...u,...Qr(l,o,n,i),right:d,borderLeftColor:`transparent`,borderBottomColor:`transparent`,clipPath:`polygon(100% 0, 0 0, 100% 100%)`}:c===`right`?{...u,...Qr(l,o,n,i),left:d,borderRightColor:`transparent`,borderTopColor:`transparent`,clipPath:`polygon(0 100%, 0 0, 100% 100%)`}:c===`top`?{...u,...$r(l,a,n,i,s),bottom:d,borderTopColor:`transparent`,borderLeftColor:`transparent`,clipPath:`polygon(0 100%, 100% 100%, 100% 0)`}:c===`bottom`?{...u,...$r(l,a,n,i,s),top:d,borderBottomColor:`transparent`,borderRightColor:`transparent`,clipPath:`polygon(0 100%, 0 0, 100% 0)`}:{}}function ri({position:e,dir:t}){let[n,r]=e.split(`-`);if(!r)return;let i=r===`start`&&t===`ltr`||r===`end`&&t===`rtl`;if(n===`bottom`)return i?{borderTopLeftRadius:0}:{borderTopRightRadius:0};if(n===`top`)return i?{borderBottomLeftRadius:0}:{borderBottomRightRadius:0};if(n===`left`)return r===`start`?{borderTopRightRadius:0}:{borderBottomRightRadius:0};if(n===`right`)return r===`start`?{borderTopLeftRadius:0}:{borderBottomLeftRadius:0}}function ii({position:e,arrowSize:t,arrowOffset:n,arrowRadius:r,arrowPosition:i,visible:a,arrowX:o,arrowY:s,style:c,...l}){let{dir:u}=N();return a?(0,x.jsx)(`div`,{role:`presentation`,...l,style:{...c,...ni({position:e,arrowSize:t,arrowOffset:n,arrowRadius:r,arrowPosition:i,dir:u,arrowX:o,arrowY:s})}}):null}ii.displayName=`@mantine/core/FloatingArrow`;function ai(e,t){if(e===`rtl`&&(t.includes(`right`)||t.includes(`left`))){let[e,n]=t.split(`-`),r=e===`right`?`left`:`right`;return n===void 0?r:`${r}-${n}`}return t}function oi(e){let t=document.createElement(`div`);return t.setAttribute(`data-portal`,`true`),typeof e.className==`string`&&t.classList.add(...e.className.split(` `).filter(Boolean)),typeof e.style==`object`&&Object.assign(t.style,e.style),typeof e.id==`string`&&t.setAttribute(`id`,e.id),t}var si=null;function ci({target:e,reuseTargetNode:t,...n}){if(e)return typeof e==`string`?document.querySelector(e)||oi(n):e;if(t){if(si){if(document.body.contains(si))return si;si=null}let e=document.querySelector(`[data-mantine-shared-portal-node]`);if(e)return si=e,e;let t=oi(n);return t.setAttribute(`data-mantine-shared-portal-node`,`true`),document.body.appendChild(t),si=t,t}return oi(n)}var li={reuseTargetNode:!0},ui=v(t=>{let{children:n,target:r,reuseTargetNode:i,ref:a,...o}=e(`Portal`,li,t),[s,l]=(0,S.useState)(!1),u=(0,S.useRef)(null);return d(()=>(l(!0),u.current=ci({target:r,reuseTargetNode:i,...o}),c(a,u.current),!r&&!i&&u.current&&document.body.appendChild(u.current),()=>{!r&&!i&&u.current&&document.body.removeChild(u.current)}),[r]),!s||!u.current?null:(0,b.createPortal)((0,x.jsx)(x.Fragment,{children:n}),u.current)});ui.displayName=`@mantine/core/Portal`;var di=v(({withinPortal:e=!0,children:t,...r})=>n()===`test`||!e?(0,x.jsx)(x.Fragment,{children:t}):(0,x.jsx)(ui,{...r,children:t}));di.displayName=`@mantine/core/OptionalPortal`;var fi={duration:100,transition:`fade`};function pi(e,t){return{...fi,...t,...e}}function mi({offset:e,position:t,defaultOpened:n}){let[r,i]=(0,S.useState)(n),a=(0,S.useRef)(null),{x:o,y:s,elements:c,refs:l,update:u,placement:d}=Lr({placement:t,middleware:[Kn({crossAxis:!0,padding:5,rootBoundary:`document`})]}),f=d.includes(`right`)?e:t.includes(`left`)?e*-1:0,p=d.includes(`bottom`)?e:t.includes(`top`)?e*-1:0,m=(0,S.useCallback)(({clientX:e,clientY:t})=>{Number.isFinite(e)&&Number.isFinite(t)&&l.setPositionReference({getBoundingClientRect(){return{width:0,height:0,x:e,y:t,left:e+f,top:t+p,right:e,bottom:t}}})},[c.reference]);return(0,S.useEffect)(()=>{if(l.floating.current){let e=a.current;e.addEventListener(`mousemove`,m);let t=He(l.floating.current);return t.forEach(e=>{e.addEventListener(`scroll`,u)}),()=>{e.removeEventListener(`mousemove`,m),t.forEach(e=>{e.removeEventListener(`scroll`,u)})}}},[c.reference,l.floating.current,u,m,r]),{handleMouseMove:m,x:o,y:s,opened:r,setOpened:i,boundaryRef:a,floating:l.setFloating}}var hi={tooltip:`m_1b3c8819`,arrow:`m_f898399f`},gi={refProp:`ref`,withinPortal:!0,offset:10,position:`right`,zIndex:E(`popover`)},_i=t((e,{radius:t,color:n})=>({tooltip:{"--tooltip-radius":t===void 0?void 0:p(t),"--tooltip-bg":n?s(n,e):void 0,"--tooltip-color":n?`var(--mantine-color-white)`:void 0}})),vi=v(t=>{let n=e(`TooltipFloating`,gi,t),{children:a,refProp:s,withinPortal:c,style:u,className:d,classNames:f,styles:p,unstyled:m,radius:h,color:g,label:_,offset:v,position:y,multiline:b,zIndex:C,disabled:w,defaultOpened:T,variant:E,vars:D,portalProps:O,attributes:M,ref:N,...P}=n,F=r(),I=i({name:`TooltipFloating`,props:n,classes:hi,className:d,style:u,classNames:f,styles:p,unstyled:m,attributes:M,rootSelector:`tooltip`,vars:D,varsResolver:_i}),{handleMouseMove:ee,x:te,y:ne,opened:re,boundaryRef:ie,floating:ae,setOpened:oe}=mi({offset:v,position:y,defaultOpened:T}),L=A(a);if(!L)throw Error(`[@mantine/core] Tooltip.Floating component children should be an element or a component that accepts ref, fragments, strings, numbers and other primitive values are not supported`);let se=l(ie,k(L),N),ce=L.props,le=e=>{ce.onMouseEnter?.(e),ee(e),oe(!0)},ue=e=>{ce.onMouseLeave?.(e),oe(!1)};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(di,{...O,withinPortal:c,children:(0,x.jsx)(o,{...P,...I(`tooltip`,{style:{...j(u,F),zIndex:C,display:!w&&re?`block`:`none`,top:Number.isFinite(ne)?Math.round(ne):``,left:Number.isFinite(te)?Math.round(te):``}}),variant:E,ref:ae,mod:{multiline:b},children:_})}),(0,S.cloneElement)(L,{...ce,[s]:se,onMouseEnter:le,onMouseLeave:ue})]})});vi.classes=hi,vi.varsResolver=_i,vi.displayName=`@mantine/core/TooltipFloating`;var yi=(0,S.createContext)({withinGroup:!1}),bi={openDelay:0,closeDelay:0};function xi(t){let{openDelay:n,closeDelay:r,children:i}=e(`TooltipGroup`,bi,t);return(0,x.jsx)(yi,{value:{withinGroup:!0},children:(0,x.jsx)(Or,{delay:{open:n,close:r},children:i})})}xi.displayName=`@mantine/core/TooltipGroup`,xi.extend=e=>e;function Si(e){if(e===void 0)return{shift:!0,flip:!0};let t={...e};return e.shift===void 0&&(t.shift=!0),e.flip===void 0&&(t.flip=!0),t}function Ci(e){let t=Si(e.middlewares),n=[Gn(e.offset)];return t.shift&&n.push(Kn(typeof t.shift==`boolean`?{padding:8}:{padding:8,...t.shift})),t.flip&&n.push(typeof t.flip==`boolean`?Jn():Jn(t.flip)),n.push(Qn({element:e.arrowRef,padding:e.arrowOffset})),t.inline?n.push(typeof t.inline==`boolean`?Zn():Zn(t.inline)):e.inline&&n.push(Zn()),n}function wi(e){let[t,n]=(0,S.useState)(e.defaultOpened),r=typeof e.opened==`boolean`?e.opened:t,i=(0,S.use)(yi).withinGroup,o=a(),s=(0,S.useCallback)(e=>{n(e),e&&v(o)},[o]),{x:c,y:l,context:u,refs:f,placement:p,middlewareData:{arrow:{x:m,y:h}={}}}=Lr({strategy:e.strategy,placement:e.position,open:r,onOpenChange:s,middleware:Ci(e),whileElementsMounted:On}),{delay:g,currentId:_,setCurrentId:v}=kr(u,{id:o}),{getReferenceProps:y,getFloatingProps:b}=Vr([wr(u,{enabled:e.events?.hover,delay:i?g:{open:e.openDelay,close:e.closeDelay},mouseOnly:!e.events?.touch,handleClose:e.interactive?qr():null}),zr(u,{enabled:e.events?.focus,visibleOnly:!0}),Ur(u,{role:`tooltip`}),Fr(u,{enabled:e.opened===void 0})]),x=(0,S.useRef)(p);d(()=>{x.current!==p&&(x.current=p,e.onPositionChange?.(p))},[p]);let C=r&&_&&_!==o;return{x:c,y:l,arrowX:m,arrowY:h,reference:f.setReference,floating:f.setFloating,getFloatingProps:b,getReferenceProps:y,isGroupPhase:C,opened:r,placement:p}}var Ti={position:`top`,refProp:`ref`,withinPortal:!0,arrowSize:4,arrowOffset:5,arrowRadius:0,arrowPosition:`side`,offset:5,transitionProps:{duration:100,transition:`fade`},events:{hover:!0,focus:!1,touch:!1},zIndex:E(`popover`),middlewares:{flip:!0,shift:!0,inline:!1}},Ei=t((e,{radius:t,color:n,variant:r,autoContrast:i})=>{let a=e.variantColorResolver({theme:e,color:n||e.primaryColor,autoContrast:i,variant:r||`filled`});return{tooltip:{"--tooltip-radius":t===void 0?void 0:p(t),"--tooltip-bg":n?a.background:void 0,"--tooltip-color":n?a.color:void 0}}}),Di=v(t=>{let n=e(`Tooltip`,Ti,t),{children:r,position:a,refProp:s,label:c,openDelay:u,closeDelay:d,onPositionChange:f,opened:p,defaultOpened:m,withinPortal:h,radius:g,color:v,classNames:b,styles:C,unstyled:w,style:T,className:E,withArrow:D,arrowSize:O,arrowOffset:j,arrowRadius:M,arrowPosition:P,offset:F,transitionProps:I,multiline:ee,events:te,interactive:ne,zIndex:re,disabled:ie,onClick:ae,onMouseEnter:oe,onMouseLeave:L,inline:se,variant:ce,keepMounted:le,vars:ue,portalProps:R,mod:de,floatingStrategy:fe,middlewares:pe,autoContrast:me,attributes:he,target:z,ref:ge,..._e}=n,{dir:ve}=N(),ye=(0,S.useRef)(null),B=wi({position:ai(ve,a),closeDelay:d,openDelay:u,onPositionChange:f,opened:p,defaultOpened:m,events:te,interactive:ne,arrowRef:ye,arrowOffset:j,offset:typeof F==`number`?F+(D?O/2:0):F,inline:se,strategy:fe,middlewares:pe});(0,S.useEffect)(()=>{let e=z instanceof HTMLElement?z:typeof z==`string`?document.querySelector(z):z?.current||null;e&&B.reference(e)},[z,B]);let be=i({name:`Tooltip`,props:n,classes:hi,className:E,style:T,classNames:b,styles:C,unstyled:w,attributes:he,rootSelector:`tooltip`,vars:ue,varsResolver:Ei}),xe=A(r);if(!z&&!xe)throw Error(`[@mantine/core] Tooltip component children should be an element or a component that accepts ref, fragments, strings, numbers and other primitive values are not supported`);let Se=be(`tooltip`),Ce=ne&&!ie&&!!B.opened,we=P===`merge`&&D?ri({position:B.placement,dir:ve}):void 0;if(z){let e=pi(I,{duration:100,transition:`fade`});return(0,x.jsx)(x.Fragment,{children:(0,x.jsx)(di,{...R,withinPortal:h,children:(0,x.jsx)(y,{...e,keepMounted:le,mounted:!ie&&!!B.opened,duration:B.isGroupPhase?10:e.duration,children:e=>(0,x.jsxs)(o,{..._e,"data-fixed":fe===`fixed`||void 0,variant:ce,mod:[{multiline:ee,interactive:Ce},de],...Se,...B.getFloatingProps({ref:B.floating,className:Se.className,style:{...Se.style,...e,...we,zIndex:re,top:B.y??0,left:B.x??0}}),children:[c,(0,x.jsx)(ii,{ref:ye,arrowX:B.arrowX,arrowY:B.arrowY,visible:D,position:B.placement,arrowSize:O,arrowOffset:j,arrowRadius:M,arrowPosition:P,...be(`arrow`)})]})})})})}let Te=xe.props,V=l(B.reference,k(xe),ge),H=pi(I,{duration:100,transition:`fade`});return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(di,{...R,withinPortal:h,children:(0,x.jsx)(y,{...H,keepMounted:le,mounted:!ie&&!!B.opened,duration:B.isGroupPhase?10:H.duration,children:e=>(0,x.jsxs)(o,{..._e,"data-fixed":fe===`fixed`||void 0,variant:ce,mod:[{multiline:ee,interactive:Ce},de],...B.getFloatingProps({ref:B.floating,className:be(`tooltip`).className,style:{...be(`tooltip`).style,...e,...we,zIndex:re,top:B.y??0,left:B.x??0}}),children:[c,(0,x.jsx)(ii,{ref:ye,arrowX:B.arrowX,arrowY:B.arrowY,visible:D,position:B.placement,arrowSize:O,arrowOffset:j,arrowRadius:M,arrowPosition:P,...be(`arrow`)})]})})}),(0,S.cloneElement)(xe,B.getReferenceProps({onClick:ae,onMouseEnter:oe,onMouseLeave:L,onMouseMove:n.onMouseMove,onPointerDown:n.onPointerDown,onPointerEnter:n.onPointerEnter,...Te,className:_(E,Te.className),[s]:V}))]})});Di.classes=hi,Di.varsResolver=Ei,Di.displayName=`@mantine/core/Tooltip`,Di.Floating=vi,Di.Group=xi;export{k as C,C as D,w as E,A as S,E as T,Kn as _,ri as a,ue as b,Lr as c,Qn as d,Jn as f,Gn as g,qn as h,ii as i,wr as l,Zn as m,di as n,Xr as o,Xn as p,ai as r,qr as s,Di as t,Vr as u,Yn as v,D as w,N as x,On as y}; \ No newline at end of file diff --git a/internal/ui/dist/assets/WarningCircle.es-CVethYG9.js b/internal/ui/dist/assets/WarningCircle.es-CVethYG9.js deleted file mode 100644 index a814e783..00000000 --- a/internal/ui/dist/assets/WarningCircle.es-CVethYG9.js +++ /dev/null @@ -1 +0,0 @@ -import{_t as e,a as t,mt as n}from"./brand-eOqp_Ed4.js";import{S as r,T as i,f as a,i as o,m as s,u as c,v as l,x as u}from"./useQuery-B6EnqqkT.js";var d=class extends a{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),u(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&s(t.mutationKey)!==s(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onSubscribe(){this.listeners.size===1&&this.#n&&(this.#n.addObserver(this),this.#i())}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??o();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){c.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},f=e(n(),1);function p(e,t){let n=i(t),[a]=f.useState(()=>new d(n,e));f.useEffect(()=>{a.setOptions(e)},[a,e]);let o=f.useSyncExternalStore(f.useCallback(e=>a.subscribe(c.batchCalls(e)),[a]),()=>a.getCurrentResult(),()=>a.getCurrentResult()),s=f.useCallback((...e)=>{a.mutate(e[0],e[1]).catch(l)},[a]);if(o.error&&r(a.options.throwOnError,[o.error]))throw o.error;return{...o,mutate:s,mutateAsync:o.mutate}}var m=new Map([[`bold`,f.createElement(f.Fragment,null,f.createElement(`path`,{d:`M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Zm-12-80V80a12,12,0,0,1,24,0v52a12,12,0,0,1-24,0Zm28,40a16,16,0,1,1-16-16A16,16,0,0,1,144,172Z`}))],[`duotone`,f.createElement(f.Fragment,null,f.createElement(`path`,{d:`M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z`,opacity:`0.2`}),f.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm-8-80V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,172Z`}))],[`fill`,f.createElement(f.Fragment,null,f.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-8,56a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm8,104a12,12,0,1,1,12-12A12,12,0,0,1,128,184Z`}))],[`light`,f.createElement(f.Fragment,null,f.createElement(`path`,{d:`M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm0,192a90,90,0,1,1,90-90A90.1,90.1,0,0,1,128,218Zm-6-82V80a6,6,0,0,1,12,0v56a6,6,0,0,1-12,0Zm16,36a10,10,0,1,1-10-10A10,10,0,0,1,138,172Z`}))],[`regular`,f.createElement(f.Fragment,null,f.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm-8-80V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,172Z`}))],[`thin`,f.createElement(f.Fragment,null,f.createElement(`path`,{d:`M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm0,192a92,92,0,1,1,92-92A92.1,92.1,0,0,1,128,220Zm-4-84V80a4,4,0,0,1,8,0v56a4,4,0,0,1-8,0Zm12,36a8,8,0,1,1-8-8A8,8,0,0,1,136,172Z`}))]]),h=f.forwardRef((e,n)=>f.createElement(t,{ref:n,...e,weights:m}));h.displayName=`WarningCircleIcon`;var g=h;export{p as n,g as t}; \ No newline at end of file diff --git a/internal/ui/dist/assets/WarningCircle.es-HuL_Shey.js b/internal/ui/dist/assets/WarningCircle.es-HuL_Shey.js new file mode 100644 index 00000000..172460f3 --- /dev/null +++ b/internal/ui/dist/assets/WarningCircle.es-HuL_Shey.js @@ -0,0 +1 @@ +import{M as e,St as t,Y as n,_t as r,a as i,f as a,w as o,yt as s}from"./brand-BUxUP_Hq.js";import{S as c,T as l,f as u,i as d,m as f,u as p,v as m,x as h}from"./useQuery-Do7gxLQ4.js";var g={root:`m_849cf0da`},_=r(),v={underline:`hover`},y=o(t=>{let{underline:r,className:i,unstyled:o,mod:s,...c}=e(`Anchor`,v,t);return(0,_.jsx)(a,{component:`a`,className:n({[g.root]:!o},i),...c,mod:[{underline:r},s],__staticSelector:`Anchor`,unstyled:o})});y.classes=g,y.displayName=`@mantine/core/Anchor`;var b=class extends u{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),h(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&f(t.mutationKey)!==f(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onSubscribe(){this.listeners.size===1&&this.#n&&(this.#n.addObserver(this),this.#i())}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??d();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){p.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},x=t(s(),1);function S(e,t){let n=l(t),[r]=x.useState(()=>new b(n,e));x.useEffect(()=>{r.setOptions(e)},[r,e]);let i=x.useSyncExternalStore(x.useCallback(e=>r.subscribe(p.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),a=x.useCallback((...e)=>{r.mutate(e[0],e[1]).catch(m)},[r]);if(i.error&&c(r.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:a,mutateAsync:i.mutate}}var C=new Map([[`bold`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Zm-12-80V80a12,12,0,0,1,24,0v52a12,12,0,0,1-24,0Zm28,40a16,16,0,1,1-16-16A16,16,0,0,1,144,172Z`}))],[`duotone`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z`,opacity:`0.2`}),x.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm-8-80V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,172Z`}))],[`fill`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-8,56a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm8,104a12,12,0,1,1,12-12A12,12,0,0,1,128,184Z`}))],[`light`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm0,192a90,90,0,1,1,90-90A90.1,90.1,0,0,1,128,218Zm-6-82V80a6,6,0,0,1,12,0v56a6,6,0,0,1-12,0Zm16,36a10,10,0,1,1-10-10A10,10,0,0,1,138,172Z`}))],[`regular`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm-8-80V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,172Z`}))],[`thin`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm0,192a92,92,0,1,1,92-92A92.1,92.1,0,0,1,128,220Zm-4-84V80a4,4,0,0,1,8,0v56a4,4,0,0,1-8,0Zm12,36a8,8,0,1,1-8-8A8,8,0,0,1,136,172Z`}))]]),w=x.forwardRef((e,t)=>x.createElement(i,{ref:t,...e,weights:C}));w.displayName=`WarningCircleIcon`;var T=w;export{S as n,y as r,T as t}; \ No newline at end of file diff --git a/internal/ui/dist/assets/auth-B4efqRtx.js b/internal/ui/dist/assets/auth-B4efqRtx.js new file mode 100644 index 00000000..07dab9a3 --- /dev/null +++ b/internal/ui/dist/assets/auth-B4efqRtx.js @@ -0,0 +1 @@ +import{A as e,C as t,K as n,M as r,Q as i,St as a,T as o,X as s,_ as c,_t as l,a as u,c as d,ct as f,d as p,et as m,f as h,h as ee,ht as g,i as te,j as ne,l as _,m as v,o as y,p as b,r as re,t as x,u as ie,x as ae,y as oe,yt as se}from"./brand-BUxUP_Hq.js";var S=a(se(),1),C=S.use,w=S.useLayoutEffect;function ce(e){let t=g();return S.useCallback(n=>t.navigate({...n,from:n.from??e?.from}),[e?.from,t])}function T(e){let t=g(),n=ce(),r=S.useRef(null);return w(()=>{r.current!==e&&(n(e),r.current=e)},[t,e,n]),null}function E({value:e,defaultValue:t,finalValue:n,onChange:r=()=>{}}){let[i,a]=(0,S.useState)(t===void 0?n:t);return e===void 0?[i,(e,...t)=>{a(e),r?.(e,...t)},!1]:[e,r,!0]}var D={root:`m_b183c0a2`},O=l(),k=s((e,{color:t})=>({root:{"--code-bg":t?n(t,e):void 0}})),A=o(n=>{let i=r(`Code`,null,n),{classNames:a,className:o,style:s,styles:c,unstyled:l,vars:u,color:d,block:f,mod:p,attributes:m,...h}=i,ee=e({name:`Code`,props:i,classes:D,className:o,style:s,classNames:a,styles:c,unstyled:l,attributes:m,vars:u,varsResolver:k});return(0,O.jsx)(t,{component:f?`pre`:`code`,mod:[{block:f},p],...ee(`root`),...h,dir:`ltr`})});A.classes=D,A.varsResolver=k,A.displayName=`@mantine/core/Code`;function j(e,t){if(e<1)return[];let n=Array(e).fill(``);if(t){let r=t.trim().split(``);for(let t=0;t({root:{"--pin-input-size":f(t??`sm`,`pin-input-size`)}})),N=o(t=>{let{name:n,form:a,className:o,value:s,defaultValue:l,variant:u,gap:d,style:f,size:p,classNames:h,styles:g,unstyled:te,length:_,onChange:v,onComplete:y,manageFocus:b,autoFocus:re,error:x,success:ie,radius:ae,disabled:oe,oneTimeCode:se,placeholder:C,type:w,mask:ce,readOnly:T,inputType:D,inputMode:k,ariaLabel:A,vars:N,id:P,hiddenInputProps:F,rootRef:I,getInputProps:L,attributes:R,ref:fe,...z}=r([`Input`,`PinInput`],de,t),B=m(P),V=e({name:`PinInput`,classes:le,props:t,className:o,style:f,classNames:h,styles:g,unstyled:te,attributes:R,vars:N,varsResolver:M}),{resolvedClassNames:pe,resolvedStyles:me}=ne({classNames:h,styles:g,props:t}),[he,ge]=(0,S.useState)(-1),H=(0,S.useRef)([]),U=_??4,W=(0,S.useRef)(!1),[G,K]=E({value:s===void 0?void 0:j(U,s),defaultValue:l?.split(``).slice(0,U),finalValue:j(U,``),onChange:e=>{let t=e.join(``).trim();v?.(t),t.length===U&&!W.current?(W.current=!0,y?.(t)):t.length(w instanceof RegExp?w:w&&w in ue?ue[w]:null)?.test(e),Y=(e,t)=>{if(b){if(e===`next`){let e=t+1;e=0&&H.current[e]?.focus()}}},X=(e,t)=>{let n=[...q];return n[t]=e,K(n),n},Z=(e,t)=>{let n=e.target.value;if(n.length>1){if(n.length>2){if(J(n)){K(j(U,n));let e=Math.min(n.length,U);e{let{ctrlKey:n,metaKey:r,key:i,shiftKey:a,target:o}=e,s=o.value;if(k===`numeric`){let t=[`Backspace`,`Tab`,`Control`,`Delete`,`ArrowLeft`,`ArrowRight`],a=n||r;if(!(t.includes(i)||a||!Number.isNaN(Number(i)))){e.preventDefault();return}}switch(i){case`ArrowLeft`:e.preventDefault(),Y(`prev`,t);break;case`ArrowRight`:e.preventDefault(),Y(`next`,t);break;case`Tab`:a&&t>0&&b&&(e.preventDefault(),Y(`prev`,t));break;case` `:e.preventDefault(),Y(`next`,t);break;case`Delete`:e.preventDefault(),X(``,t);break;case`Backspace`:s===``?(e.preventDefault(),Y(`prev`,t)):(X(``,t),t0&&i===q[t]&&(e.preventDefault(),Y(`next`,t))}},ve=(e,t)=>{e.target.select(),ge(t)},ye=()=>{ge(-1)},$=e=>{e.preventDefault();let t=e.clipboardData.getData(`text/plain`).replace(/[\n\r\s]+/g,``);if(J(t.trim())){let e=j(U,t);K(e);let n=e.filter(e=>e!==``).length;n>=U?H.current[U-1]?.focus():H.current[n]?.focus()}};return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(c,{...z,...V(`root`),ref:I,role:`group`,id:B,gap:d,unstyled:te,wrap:`nowrap`,variant:u,__size:p,dir:`ltr`,children:q.map((e,t)=>(0,S.createElement)(ee,{component:`input`,...V(`pinInput`,{style:{"--input-padding":`0`,"--input-text-align":`center`}}),classNames:pe,styles:me,size:p,__staticSelector:`PinInput`,id:`${B}-${t+1}`,key:`${B}-${t}`,inputMode:k||(w===`number`?`numeric`:`text`),onChange:e=>Z(e,t),onKeyDown:e=>Q(e,t),onFocus:e=>ve(e,t),onBlur:ye,onPaste:$,type:D||(ce?`password`:w===`number`?`tel`:`text`),radius:ae,error:x,success:ie,variant:u,disabled:oe,ref:e=>{e&&(t===0&&i(fe,e),H.current[t]=e)},autoComplete:se?`one-time-code`:`off`,placeholder:he===t?``:C,value:e,autoFocus:re&&t===0,unstyled:te,"aria-label":A,readOnly:T,...L?.(t)}))}),(0,O.jsx)(`input`,{type:`hidden`,name:n,form:a,value:_e,...F})]})});N.classes={...le,...v.classes},N.varsResolver=M,N.displayName=`@mantine/core/PinInput`;var P=o(e=>{let t=r([`Input`,`InputWrapper`,`TextInput`],null,e);return(0,O.jsx)(v,{component:`input`,...t,__staticSelector:`TextInput`})});P.classes=v.classes,P.displayName=`@mantine/core/TextInput`;var F=new Map([[`bold`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M228,128a12,12,0,0,1-12,12H69l51.52,51.51a12,12,0,0,1-17,17l-72-72a12,12,0,0,1,0-17l72-72a12,12,0,0,1,17,17L69,116H216A12,12,0,0,1,228,128Z`}))],[`duotone`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M112,56V200L40,128Z`,opacity:`0.2`}),S.createElement(`path`,{d:`M216,120H120V56a8,8,0,0,0-13.66-5.66l-72,72a8,8,0,0,0,0,11.32l72,72A8,8,0,0,0,120,200V136h96a8,8,0,0,0,0-16ZM104,180.69,51.31,128,104,75.31Z`}))],[`fill`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H120v64a8,8,0,0,1-13.66,5.66l-72-72a8,8,0,0,1,0-11.32l72-72A8,8,0,0,1,120,56v64h96A8,8,0,0,1,224,128Z`}))],[`light`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M222,128a6,6,0,0,1-6,6H54.49l61.75,61.76a6,6,0,1,1-8.48,8.48l-72-72a6,6,0,0,1,0-8.48l72-72a6,6,0,0,1,8.48,8.48L54.49,122H216A6,6,0,0,1,222,128Z`}))],[`regular`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H59.31l58.35,58.34a8,8,0,0,1-11.32,11.32l-72-72a8,8,0,0,1,0-11.32l72-72a8,8,0,0,1,11.32,11.32L59.31,120H216A8,8,0,0,1,224,128Z`}))],[`thin`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M220,128a4,4,0,0,1-4,4H49.66l65.17,65.17a4,4,0,0,1-5.66,5.66l-72-72a4,4,0,0,1,0-5.66l72-72a4,4,0,0,1,5.66,5.66L49.66,124H216A4,4,0,0,1,220,128Z`}))]]),I=new Map([[`bold`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M224.49,136.49l-72,72a12,12,0,0,1-17-17L187,140H40a12,12,0,0,1,0-24H187L135.51,64.48a12,12,0,0,1,17-17l72,72A12,12,0,0,1,224.49,136.49Z`}))],[`duotone`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M216,128l-72,72V56Z`,opacity:`0.2`}),S.createElement(`path`,{d:`M221.66,122.34l-72-72A8,8,0,0,0,136,56v64H40a8,8,0,0,0,0,16h96v64a8,8,0,0,0,13.66,5.66l72-72A8,8,0,0,0,221.66,122.34ZM152,180.69V75.31L204.69,128Z`}))],[`fill`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M221.66,133.66l-72,72A8,8,0,0,1,136,200V136H40a8,8,0,0,1,0-16h96V56a8,8,0,0,1,13.66-5.66l72,72A8,8,0,0,1,221.66,133.66Z`}))],[`light`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M220.24,132.24l-72,72a6,6,0,0,1-8.48-8.48L201.51,134H40a6,6,0,0,1,0-12H201.51L139.76,60.24a6,6,0,0,1,8.48-8.48l72,72A6,6,0,0,1,220.24,132.24Z`}))],[`regular`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z`}))],[`thin`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M218.83,130.83l-72,72a4,4,0,0,1-5.66-5.66L206.34,132H40a4,4,0,0,1,0-8H206.34L141.17,58.83a4,4,0,0,1,5.66-5.66l72,72A4,4,0,0,1,218.83,130.83Z`}))]]),L=new Map([[`bold`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M256,136a12,12,0,0,1-12,12h-8v8a12,12,0,0,1-24,0v-8h-8a12,12,0,0,1,0-24h8v-8a12,12,0,0,1,24,0v8h8A12,12,0,0,1,256,136Zm-54.81,56.28a12,12,0,1,1-18.38,15.44C169.12,191.42,145,172,108,172c-28.89,0-55.46,12.68-74.81,35.72a12,12,0,0,1-18.38-15.44A124.08,124.08,0,0,1,63.5,156.53a72,72,0,1,1,89,0A124,124,0,0,1,201.19,192.28ZM108,148a48,48,0,1,0-48-48A48.05,48.05,0,0,0,108,148Z`}))],[`duotone`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M168,100a60,60,0,1,1-60-60A60,60,0,0,1,168,100Z`,opacity:`0.2`}),S.createElement(`path`,{d:`M256,136a8,8,0,0,1-8,8H232v16a8,8,0,0,1-16,0V144H200a8,8,0,0,1,0-16h16V112a8,8,0,0,1,16,0v16h16A8,8,0,0,1,256,136Zm-57.87,58.85a8,8,0,0,1-12.26,10.3C165.75,181.19,138.09,168,108,168s-57.75,13.19-77.87,37.15a8,8,0,0,1-12.25-10.3c14.94-17.78,33.52-30.41,54.17-37.17a68,68,0,1,1,71.9,0C164.6,164.44,183.18,177.07,198.13,194.85ZM108,152a52,52,0,1,0-52-52A52.06,52.06,0,0,0,108,152Z`}))],[`fill`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M256,136a8,8,0,0,1-8,8H232v16a8,8,0,0,1-16,0V144H200a8,8,0,0,1,0-16h16V112a8,8,0,0,1,16,0v16h16A8,8,0,0,1,256,136ZM144,157.68a68,68,0,1,0-71.9,0c-20.65,6.76-39.23,19.39-54.17,37.17A8,8,0,0,0,24,208H192a8,8,0,0,0,6.13-13.15C183.18,177.07,164.6,164.44,144,157.68Z`}))],[`light`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M254,136a6,6,0,0,1-6,6H230v18a6,6,0,0,1-12,0V142H200a6,6,0,0,1,0-12h18V112a6,6,0,0,1,12,0v18h18A6,6,0,0,1,254,136Zm-57.41,60.14a6,6,0,1,1-9.18,7.72C166.9,179.45,138.69,166,108,166s-58.89,13.45-79.41,37.86a6,6,0,0,1-9.18-7.72C35.14,177.41,55,164.48,77,158.25a66,66,0,1,1,62,0C161,164.48,180.86,177.41,196.59,196.14ZM108,154a54,54,0,1,0-54-54A54.06,54.06,0,0,0,108,154Z`}))],[`regular`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M256,136a8,8,0,0,1-8,8H232v16a8,8,0,0,1-16,0V144H200a8,8,0,0,1,0-16h16V112a8,8,0,0,1,16,0v16h16A8,8,0,0,1,256,136Zm-57.87,58.85a8,8,0,0,1-12.26,10.3C165.75,181.19,138.09,168,108,168s-57.75,13.19-77.87,37.15a8,8,0,0,1-12.25-10.3c14.94-17.78,33.52-30.41,54.17-37.17a68,68,0,1,1,71.9,0C164.6,164.44,183.18,177.07,198.13,194.85ZM108,152a52,52,0,1,0-52-52A52.06,52.06,0,0,0,108,152Z`}))],[`thin`,S.createElement(S.Fragment,null,S.createElement(`path`,{d:`M252,136a4,4,0,0,1-4,4H228v20a4,4,0,0,1-8,0V140H200a4,4,0,0,1,0-8h20V112a4,4,0,0,1,8,0v20h20A4,4,0,0,1,252,136Zm-56.94,61.43a4,4,0,0,1-6.12,5.14C168,177.7,139.3,164,108,164s-60,13.7-80.94,38.57a4,4,0,1,1-6.12-5.14c16.71-19.9,38.13-33.13,61.89-38.59a64,64,0,1,1,50.34,0C156.93,164.3,178.35,177.53,195.06,197.43ZM108,156a56,56,0,1,0-56-56A56.06,56.06,0,0,0,108,156Z`}))]]),R=S.forwardRef((e,t)=>S.createElement(u,{ref:t,...e,weights:F}));R.displayName=`ArrowLeftIcon`;var fe=R,z=S.forwardRef((e,t)=>S.createElement(u,{ref:t,...e,weights:I}));z.displayName=`ArrowRightIcon`;var B=z,V=S.forwardRef((e,t)=>S.createElement(u,{ref:t,...e,weights:L}));V.displayName=`UserPlusIcon`;var pe=V,me=`fanout.access-token`,he=`fanout:unauthorized`;function ge(){let e=new URLSearchParams(window.location.search).get(`return_to`);if(!e)return``;let t=new URL(e,window.location.origin);return t.origin!==window.location.origin||t.pathname!==`/api/auth/oauth/authorize`?``:`${t.pathname}${t.search}`}function H(e){return!e||typeof e!=`object`||!(`id`in e)||typeof e.id!=`string`||e.id===``?`none`:`user`}function U(){localStorage.removeItem(me)}function W(){U(),window.dispatchEvent(new Event(he))}async function G(e,t={}){let n=new Headers(t.headers);n.set(`Fanout-Request`,`1`);let r=await fetch(e,{...t,headers:n,credentials:`same-origin`});if(r.status===401&&W(),r.status===403){let e=await r.clone().json().catch(()=>({}));throw Error(e.message??e.error??`You do not have permission to perform this action.`)}return r}async function K(){let e=await G(`/api/auth/logout`,{method:`POST`});if(!e.ok&&e.status!==401)throw Error(`Sign-out failed — your session is still active.`);e.status!==401&&W(),window.location.assign(`/`)}var q=(0,S.createContext)(null);function _e(){let e=(0,S.useContext)(q);if(!e)throw Error(`Fanout runtime status is unavailable`);return e}var J=(0,S.createContext)(null);function Y(){let e=(0,S.useContext)(J);if(!e)throw Error(`Fanout viewer is unavailable`);return e}function X(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.id!=`string`||t.id===``?null:{id:t.id,email:typeof t.email==`string`?t.email:``,name:typeof t.name==`string`?t.name:``,role:typeof t.role==`string`?t.role:``}}async function Z(e,t){let n=await fetch(e,{method:t===void 0?`GET`:`POST`,headers:t===void 0?void 0:{"Content-Type":`application/json`},body:t===void 0?void 0:JSON.stringify(t),credentials:`same-origin`}),r=await n.json().catch(()=>({}));if(!n.ok)throw Error(r.message??r.error??`Request failed (${n.status})`);return r}function Q({children:e,wide:n=!1}){return(0,O.jsx)(t,{mih:`100dvh`,style:{background:`radial-gradient(circle at 50% -12%, var(--mantine-color-brand-light), transparent 38%), linear-gradient(180deg, var(--mantine-color-default-hover), var(--mantine-color-body) 62%)`},children:(0,O.jsx)(ie,{mih:`100dvh`,px:`md`,py:48,children:(0,O.jsx)(_,{size:n?680:480,w:`100%`,children:(0,O.jsx)(ae,{radius:28,p:{base:24,sm:40},style:{background:`var(--mantine-color-body)`,border:`1px solid var(--mantine-color-default-border)`,boxShadow:`var(--mantine-shadow-xl)`},children:e})})})})}function ve(){return typeof window>`u`?``:new URLSearchParams(window.location.search).get(`setup_token`)??``}function ye(){return typeof window>`u`?``:new URLSearchParams(window.location.search).get(`login_token`)??``}function $({children:e}){let n=ce(),[r,i]=(0,S.useState)(null),[a,o]=(0,S.useState)(!1),[s,l]=(0,S.useState)(`none`),[u,f]=(0,S.useState)(null),[m,ee]=(0,S.useState)(!1),[g,ne]=(0,S.useState)(``),[_,v]=(0,S.useState)(``),[ae,se]=(0,S.useState)(ve),[C,w]=(0,S.useState)(ye),[T,E]=(0,S.useState)(``),[D,k]=(0,S.useState)(!1),[j,le]=(0,S.useState)(0),[ue,de]=(0,S.useState)(()=>Date.now()),[M,F]=(0,S.useState)(!1),[I,L]=(0,S.useState)(``),[R,z]=(0,S.useState)(null),[V,me]=(0,S.useState)(!1),W=(0,S.useRef)(null),G=ge(),K=s===`user`;async function _e(){let e=await fetch(`/api/auth/me`,{credentials:`same-origin`});if(!e.ok){l(`none`),f(null);return}let t=await e.json().catch(()=>null);l(H(t)),f(X(t))}async function Y(){try{let e=await fetch(`/api/auth/me`,{credentials:`same-origin`});if(!e.ok)return;f(X(await e.json().catch(()=>null)))}catch{}}(0,S.useEffect)(()=>{let e=new URL(window.location.href);(e.searchParams.has(`setup_token`)||e.searchParams.has(`login_token`))&&(e.searchParams.delete(`setup_token`),e.searchParams.delete(`login_token`),n({href:e.pathname+e.search+e.hash,replace:!0}))},[n]),(0,S.useEffect)(()=>{U(),Z(`/api/auth/status`).then(i).catch(e=>L(String(e))).finally(()=>o(!0)),_e().catch(()=>l(`none`)).finally(()=>ee(!0));let e=()=>{l(`none`),f(null)};return window.addEventListener(he,e),()=>window.removeEventListener(he,e)},[]),(0,S.useEffect)(()=>{m&&s===`none`&&C&&(F(!0),L(``),Z(`/api/auth/link/verify`,{token:C}).then(()=>{l(`user`),Y()}).catch(e=>L(e instanceof Error?e.message:String(e))).finally(()=>{w(``),F(!1)}))},[C,m,s]),(0,S.useEffect)(()=>{K&&m&&G&&window.location.replace(G)},[K,G,m]),(0,S.useEffect)(()=>{if(j<=Date.now())return;let e=setInterval(()=>{de(Date.now()),Date.now()>=j&&clearInterval(e)},1e3);return()=>clearInterval(e)},[j]);let $=Math.max(0,Math.ceil((j-ue)/1e3));(0,S.useEffect)(()=>{D&&!M&&I&&W.current?.querySelector(`input`)?.focus()},[M,D,I]);async function be(e){try{await navigator.clipboard.writeText(e),me(!0)}catch{L(`Clipboard access failed. Select and copy the token manually.`)}}if(R?.ingest_token)return(0,O.jsx)(Q,{wide:!0,children:(0,O.jsxs)(d,{gap:`lg`,children:[(0,O.jsx)(x,{}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(h,{c:`brand`,fw:700,size:`xs`,tt:`uppercase`,lts:`0.12em`,children:`Setup complete`}),(0,O.jsx)(y,{order:1,mt:`xs`,fz:{base:28,sm:32},lh:1.08,children:`Save your ingest token`})]}),(0,O.jsx)(h,{c:`dimmed`,children:`Fanout shows this token once. Store it with your collector secrets before continuing.`}),(0,O.jsxs)(d,{gap:`xs`,children:[(0,O.jsx)(h,{size:`sm`,fw:600,children:`OTLP endpoint`}),(0,O.jsx)(A,{block:!0,children:R.suggested_endpoint??window.location.origin})]}),(0,O.jsxs)(d,{gap:`xs`,children:[(0,O.jsx)(h,{size:`sm`,fw:600,children:`Header`}),(0,O.jsxs)(A,{block:!0,children:[R.ingest_header_name??`Authorization`,`: Bearer `,R.ingest_token]})]}),I&&(0,O.jsx)(b,{color:`bad`,radius:`md`,children:I}),(0,O.jsxs)(c,{grow:!0,align:`stretch`,children:[(0,O.jsx)(p,{variant:`light`,radius:`md`,leftSection:V?(0,O.jsx)(te,{size:16,weight:`bold`}):(0,O.jsx)(re,{size:16}),onClick:()=>void be(`${R.ingest_header_name??`Authorization`}: Bearer ${R.ingest_token}`),children:V?`Copied`:`Copy header`}),(0,O.jsx)(p,{radius:`md`,rightSection:(0,O.jsx)(B,{size:16,weight:`bold`}),onClick:()=>{l(`user`),z(null),Y()},children:`Continue to Fanout`})]}),(0,O.jsx)(p,{variant:`subtle`,size:`compact-xs`,onClick:()=>void be(R.ingest_token??``),children:`Copy token only`})]})});if(!m||!a||C)return(0,O.jsx)(ie,{mih:`100dvh`,children:(0,O.jsx)(oe,{size:`sm`})});if(!r)return(0,O.jsx)(Q,{children:(0,O.jsxs)(d,{gap:`lg`,children:[(0,O.jsx)(x,{}),(0,O.jsx)(y,{order:1,children:`Fanout is unavailable`}),(0,O.jsx)(b,{color:`bad`,radius:`md`,children:I||`Authentication status could not be loaded.`})]})});if(K&&G)return null;if(K)return(0,O.jsx)(q.Provider,{value:r,children:(0,O.jsx)(J.Provider,{value:u??{id:``,email:g,name:_,role:``},children:e})});if(r&&!r.setup_required&&r.auth_mode===`oidc`){let e=G?`/api/auth/oidc/start?return_to=${encodeURIComponent(G)}`:`/api/auth/oidc/start`;return(0,O.jsx)(Q,{children:(0,O.jsxs)(d,{gap:28,children:[(0,O.jsx)(x,{}),(0,O.jsxs)(d,{gap:10,children:[(0,O.jsx)(h,{c:`brand`,fw:700,size:`xs`,tt:`uppercase`,lts:`0.12em`,children:`Secure workspace`}),(0,O.jsx)(y,{order:1,fz:{base:28,sm:32},lh:1.08,children:`Sign in`}),(0,O.jsx)(h,{c:`dimmed`,size:`md`,lh:1.6,children:`Use your organization's identity provider to continue.`})]}),I&&(0,O.jsx)(b,{color:`bad`,radius:`md`,children:I}),(0,O.jsx)(p,{component:`a`,href:e,size:`md`,radius:`md`,rightSection:(0,O.jsx)(B,{size:17,weight:`bold`}),children:`Continue with SSO`})]})})}async function xe(){F(!0),L(``);try{await Z(`/api/auth/code/send`,{email:g}),k(!0),E(``),le(Date.now()+3e4),de(Date.now())}catch(e){L(e instanceof Error?e.message:String(e))}finally{F(!1)}}async function Se(e){F(!0),L(``);try{await Z(`/api/auth/code/verify`,{email:g,code:e}),l(`user`),k(!1),E(``),le(0),Y()}catch(e){E(``),L(e instanceof Error?e.message:String(e))}finally{F(!1)}}function Ce(){k(!1),E(``),L(``)}async function we(e){e.preventDefault(),F(!0),L(``);try{if(r?.setup_required){let e=await Z(`/api/auth/setup`,{email:g,name:_,setup_token:ae});e.ingest_token?z(e):(l(`user`),Y())}else if(D){await Se(T);return}else{await xe();return}}catch(e){L(e instanceof Error?e.message:String(e))}finally{F(!1)}}let Te=D&&!r?.setup_required,Ee=r?.setup_required?`Create the first admin`:Te?`Check your email`:r?.self_signup?`Sign in or create an account`:`Sign in`,De=r?.setup_required?`Use the one-time token printed by the Fanout process.`:r?.smtp_configured?Te?`We sent a code to ${g}.`:r?.self_signup?`Enter your email to sign in or create a viewer account. No password needed.`:`Enter your email and we’ll send a short verification code. No password needed.`:`Email delivery is not configured. Ask the operator to run fanout login-link with your email address.`;return(0,O.jsx)(Q,{children:(0,O.jsxs)(d,{gap:28,children:[(0,O.jsx)(x,{}),(0,O.jsxs)(d,{gap:10,children:[(0,O.jsx)(h,{c:`brand`,fw:700,size:`xs`,tt:`uppercase`,lts:`0.12em`,children:r?.setup_required?`One-time setup`:`Secure workspace`}),(0,O.jsx)(y,{order:1,fz:{base:28,sm:32},lh:1.08,children:Ee}),De&&(0,O.jsx)(h,{c:`dimmed`,size:`md`,lh:1.6,maw:390,children:De})]}),(0,O.jsx)(`form`,{onSubmit:we,children:(0,O.jsxs)(d,{gap:`md`,children:[(0,O.jsx)(P,{label:`Email`,placeholder:`you@company.com`,type:`email`,required:!0,value:g,onChange:e=>ne(e.currentTarget.value),disabled:D,variant:`filled`,radius:`md`,size:`md`,autoFocus:!D}),r?.setup_required&&(0,O.jsx)(P,{label:`Name`,placeholder:`Your name`,value:_,onChange:e=>v(e.currentTarget.value),variant:`filled`,radius:`md`,size:`md`}),r?.setup_required&&(0,O.jsx)(P,{label:`Setup token`,placeholder:`from the setup URL printed at startup`,required:!0,value:ae,onChange:e=>se(e.currentTarget.value),autoComplete:`one-time-code`,variant:`filled`,radius:`md`,size:`md`}),Te&&(0,O.jsxs)(d,{gap:`xs`,children:[(0,O.jsx)(h,{size:`sm`,fw:600,children:`Verification code`}),(0,O.jsx)(t,{ref:W,children:(0,O.jsx)(N,{length:6,type:`number`,oneTimeCode:!0,autoFocus:!0,value:T,onChange:E,onComplete:e=>void Se(e),disabled:M,error:!!I,size:`md`,radius:`md`,"aria-label":`Verification code`,getInputProps:e=>({"aria-label":`Digit ${e+1}`})})}),(0,O.jsxs)(c,{justify:`space-between`,gap:`xs`,children:[(0,O.jsxs)(h,{c:`dimmed`,size:`xs`,children:[`Sent to `,g]}),(0,O.jsx)(p,{variant:`subtle`,size:`compact-xs`,leftSection:(0,O.jsx)(fe,{size:12,weight:`bold`}),onClick:Ce,disabled:M,children:`Change email`})]}),(0,O.jsxs)(c,{justify:`space-between`,gap:`xs`,children:[(0,O.jsx)(h,{c:`dimmed`,size:`xs`,children:`Codes expire in 5 minutes`}),(0,O.jsx)(p,{variant:`subtle`,size:`compact-xs`,onClick:()=>void xe(),disabled:M||$>0,children:$>0?`Resend in ${$}s`:`Resend code`})]})]}),I&&(0,O.jsx)(b,{color:`bad`,radius:`md`,children:I}),Te?(0,O.jsx)(p,{type:`submit`,size:`md`,radius:`md`,mt:4,loading:M,disabled:M||T.length<6,rightSection:(0,O.jsx)(B,{size:17,weight:`bold`}),children:`Verify code`}):(0,O.jsx)(p,{type:`submit`,size:`md`,radius:`md`,mt:4,loading:M,disabled:!r||!r.setup_required&&!r.smtp_configured,leftSection:r?.setup_required?(0,O.jsx)(pe,{size:17,weight:`bold`}):void 0,rightSection:r?.setup_required?void 0:(0,O.jsx)(B,{size:17,weight:`bold`}),children:r?.setup_required?`Create admin`:`Send code`})]})})]})})}export{K as a,E as c,C as d,w as f,G as i,T as l,_e as n,P as o,Y as r,A as s,$ as t,ce as u}; \ No newline at end of file diff --git a/internal/ui/dist/assets/auth-BZHrLj_K.js b/internal/ui/dist/assets/auth-BZHrLj_K.js deleted file mode 100644 index 591dfcb5..00000000 --- a/internal/ui/dist/assets/auth-BZHrLj_K.js +++ /dev/null @@ -1 +0,0 @@ -import{A as e,J as t,O as n,Q as r,S as i,W as a,X as ee,_t as o,a as s,b as te,c,d as l,f as u,ft as d,g as f,i as ne,k as re,l as ie,m as p,mt as m,o as h,ot as g,p as _,r as ae,s as v,t as oe,u as y,v as se,w as b}from"./brand-eOqp_Ed4.js";var x=o(m(),1),ce=x.use,S=x.useLayoutEffect,C=x.createContext(null);function w(e){return x.useContext(C)}function le(e){let t=w();return x.useCallback(n=>t.navigate({...n,from:n.from??e?.from}),[e?.from,t])}function T(e){let t=w(),n=le(),r=x.useRef(null);return S(()=>{r.current!==e&&(n(e),r.current=e)},[t,e,n]),null}function E({value:e,defaultValue:t,finalValue:n,onChange:r=()=>{}}){let[i,a]=(0,x.useState)(t===void 0?n:t);return e===void 0?[i,(e,...t)=>{a(e),r?.(e,...t)},!1]:[e,r,!0]}var D={root:`m_b183c0a2`},O=d(),k=t((e,{color:t})=>({root:{"--code-bg":t?a(t,e):void 0}})),A=b(t=>{let r=e(`Code`,null,t),{classNames:a,className:ee,style:o,styles:s,unstyled:te,vars:c,color:l,block:u,mod:d,attributes:f,...ne}=r,re=n({name:`Code`,props:r,classes:D,className:ee,style:o,classNames:a,styles:s,unstyled:te,attributes:f,vars:c,varsResolver:k});return(0,O.jsx)(i,{component:u?`pre`:`code`,mod:[{block:u},d],...re(`root`),...ne,dir:`ltr`})});A.classes=D,A.varsResolver=k,A.displayName=`@mantine/core/Code`;function j(e,t){if(e<1)return[];let n=Array(e).fill(``);if(t){let r=t.trim().split(``);for(let t=0;t({root:{"--pin-input-size":g(t??`sm`,`pin-input-size`)}})),P=b(t=>{let{name:i,form:a,className:o,value:s,defaultValue:te,variant:c,gap:l,style:u,size:d,classNames:ne,styles:ie,unstyled:m,length:h,onChange:g,onComplete:_,manageFocus:ae,autoFocus:v,error:oe,success:y,radius:se,disabled:b,oneTimeCode:ce,placeholder:S,type:C,mask:w,readOnly:le,inputType:T,inputMode:D,ariaLabel:k,vars:A,id:P,hiddenInputProps:F,rootRef:I,getInputProps:L,attributes:R,ref:z,...fe}=e([`Input`,`PinInput`],M,t),B=r(P),V=n({name:`PinInput`,classes:ue,props:t,className:o,style:u,classNames:ne,styles:ie,unstyled:m,attributes:R,vars:A,varsResolver:N}),{resolvedClassNames:pe,resolvedStyles:me}=re({classNames:ne,styles:ie,props:t}),[he,H]=(0,x.useState)(-1),U=(0,x.useRef)([]),W=h??4,G=(0,x.useRef)(!1),[K,q]=E({value:s===void 0?void 0:j(W,s),defaultValue:te?.split(``).slice(0,W),finalValue:j(W,``),onChange:e=>{let t=e.join(``).trim();g?.(t),t.length===W&&!G.current?(G.current=!0,_?.(t)):t.length(C instanceof RegExp?C:C&&C in de?de[C]:null)?.test(e),X=(e,t)=>{if(ae){if(e===`next`){let e=t+1;e=0&&U.current[e]?.focus()}}},Z=(e,t)=>{let n=[...J];return n[t]=e,q(n),n},_e=(e,t)=>{let n=e.target.value;if(n.length>1){if(n.length>2){if(Y(n)){q(j(W,n));let e=Math.min(n.length,W);e{let{ctrlKey:n,metaKey:r,key:i,shiftKey:a,target:ee}=e,o=ee.value;if(D===`numeric`){let t=[`Backspace`,`Tab`,`Control`,`Delete`,`ArrowLeft`,`ArrowRight`],a=n||r;if(!(t.includes(i)||a||!Number.isNaN(Number(i)))){e.preventDefault();return}}switch(i){case`ArrowLeft`:e.preventDefault(),X(`prev`,t);break;case`ArrowRight`:e.preventDefault(),X(`next`,t);break;case`Tab`:a&&t>0&&ae&&(e.preventDefault(),X(`prev`,t));break;case` `:e.preventDefault(),X(`next`,t);break;case`Delete`:e.preventDefault(),Z(``,t);break;case`Backspace`:o===``?(e.preventDefault(),X(`prev`,t)):(Z(``,t),t0&&i===J[t]&&(e.preventDefault(),X(`next`,t))}},$=(e,t)=>{e.target.select(),H(t)},ve=()=>{H(-1)},ye=e=>{e.preventDefault();let t=e.clipboardData.getData(`text/plain`).replace(/[\n\r\s]+/g,``);if(Y(t.trim())){let e=j(W,t);q(e);let n=e.filter(e=>e!==``).length;n>=W?U.current[W-1]?.focus():U.current[n]?.focus()}};return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(f,{...fe,...V(`root`),ref:I,role:`group`,id:B,gap:l,unstyled:m,wrap:`nowrap`,variant:c,__size:d,dir:`ltr`,children:J.map((e,t)=>(0,x.createElement)(p,{component:`input`,...V(`pinInput`,{style:{"--input-padding":`0`,"--input-text-align":`center`}}),classNames:pe,styles:me,size:d,__staticSelector:`PinInput`,id:`${B}-${t+1}`,key:`${B}-${t}`,inputMode:D||(C===`number`?`numeric`:`text`),onChange:e=>_e(e,t),onKeyDown:e=>Q(e,t),onFocus:e=>$(e,t),onBlur:ve,onPaste:ye,type:T||(w?`password`:C===`number`?`tel`:`text`),radius:se,error:oe,success:y,variant:c,disabled:b,ref:e=>{e&&(t===0&&ee(z,e),U.current[t]=e)},autoComplete:ce?`one-time-code`:`off`,placeholder:he===t?``:S,value:e,autoFocus:v&&t===0,unstyled:m,"aria-label":k,readOnly:le,...L?.(t)}))}),(0,O.jsx)(`input`,{type:`hidden`,name:i,form:a,value:ge,...F})]})});P.classes={...ue,..._.classes},P.varsResolver=N,P.displayName=`@mantine/core/PinInput`;var F=b(t=>{let n=e([`Input`,`InputWrapper`,`TextInput`],null,t);return(0,O.jsx)(_,{component:`input`,...n,__staticSelector:`TextInput`})});F.classes=_.classes,F.displayName=`@mantine/core/TextInput`;var I=new Map([[`bold`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M228,128a12,12,0,0,1-12,12H69l51.52,51.51a12,12,0,0,1-17,17l-72-72a12,12,0,0,1,0-17l72-72a12,12,0,0,1,17,17L69,116H216A12,12,0,0,1,228,128Z`}))],[`duotone`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M112,56V200L40,128Z`,opacity:`0.2`}),x.createElement(`path`,{d:`M216,120H120V56a8,8,0,0,0-13.66-5.66l-72,72a8,8,0,0,0,0,11.32l72,72A8,8,0,0,0,120,200V136h96a8,8,0,0,0,0-16ZM104,180.69,51.31,128,104,75.31Z`}))],[`fill`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H120v64a8,8,0,0,1-13.66,5.66l-72-72a8,8,0,0,1,0-11.32l72-72A8,8,0,0,1,120,56v64h96A8,8,0,0,1,224,128Z`}))],[`light`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M222,128a6,6,0,0,1-6,6H54.49l61.75,61.76a6,6,0,1,1-8.48,8.48l-72-72a6,6,0,0,1,0-8.48l72-72a6,6,0,0,1,8.48,8.48L54.49,122H216A6,6,0,0,1,222,128Z`}))],[`regular`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H59.31l58.35,58.34a8,8,0,0,1-11.32,11.32l-72-72a8,8,0,0,1,0-11.32l72-72a8,8,0,0,1,11.32,11.32L59.31,120H216A8,8,0,0,1,224,128Z`}))],[`thin`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M220,128a4,4,0,0,1-4,4H49.66l65.17,65.17a4,4,0,0,1-5.66,5.66l-72-72a4,4,0,0,1,0-5.66l72-72a4,4,0,0,1,5.66,5.66L49.66,124H216A4,4,0,0,1,220,128Z`}))]]),L=new Map([[`bold`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M224.49,136.49l-72,72a12,12,0,0,1-17-17L187,140H40a12,12,0,0,1,0-24H187L135.51,64.48a12,12,0,0,1,17-17l72,72A12,12,0,0,1,224.49,136.49Z`}))],[`duotone`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M216,128l-72,72V56Z`,opacity:`0.2`}),x.createElement(`path`,{d:`M221.66,122.34l-72-72A8,8,0,0,0,136,56v64H40a8,8,0,0,0,0,16h96v64a8,8,0,0,0,13.66,5.66l72-72A8,8,0,0,0,221.66,122.34ZM152,180.69V75.31L204.69,128Z`}))],[`fill`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M221.66,133.66l-72,72A8,8,0,0,1,136,200V136H40a8,8,0,0,1,0-16h96V56a8,8,0,0,1,13.66-5.66l72,72A8,8,0,0,1,221.66,133.66Z`}))],[`light`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M220.24,132.24l-72,72a6,6,0,0,1-8.48-8.48L201.51,134H40a6,6,0,0,1,0-12H201.51L139.76,60.24a6,6,0,0,1,8.48-8.48l72,72A6,6,0,0,1,220.24,132.24Z`}))],[`regular`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z`}))],[`thin`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M218.83,130.83l-72,72a4,4,0,0,1-5.66-5.66L206.34,132H40a4,4,0,0,1,0-8H206.34L141.17,58.83a4,4,0,0,1,5.66-5.66l72,72A4,4,0,0,1,218.83,130.83Z`}))]]),R=new Map([[`bold`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M256,136a12,12,0,0,1-12,12h-8v8a12,12,0,0,1-24,0v-8h-8a12,12,0,0,1,0-24h8v-8a12,12,0,0,1,24,0v8h8A12,12,0,0,1,256,136Zm-54.81,56.28a12,12,0,1,1-18.38,15.44C169.12,191.42,145,172,108,172c-28.89,0-55.46,12.68-74.81,35.72a12,12,0,0,1-18.38-15.44A124.08,124.08,0,0,1,63.5,156.53a72,72,0,1,1,89,0A124,124,0,0,1,201.19,192.28ZM108,148a48,48,0,1,0-48-48A48.05,48.05,0,0,0,108,148Z`}))],[`duotone`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M168,100a60,60,0,1,1-60-60A60,60,0,0,1,168,100Z`,opacity:`0.2`}),x.createElement(`path`,{d:`M256,136a8,8,0,0,1-8,8H232v16a8,8,0,0,1-16,0V144H200a8,8,0,0,1,0-16h16V112a8,8,0,0,1,16,0v16h16A8,8,0,0,1,256,136Zm-57.87,58.85a8,8,0,0,1-12.26,10.3C165.75,181.19,138.09,168,108,168s-57.75,13.19-77.87,37.15a8,8,0,0,1-12.25-10.3c14.94-17.78,33.52-30.41,54.17-37.17a68,68,0,1,1,71.9,0C164.6,164.44,183.18,177.07,198.13,194.85ZM108,152a52,52,0,1,0-52-52A52.06,52.06,0,0,0,108,152Z`}))],[`fill`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M256,136a8,8,0,0,1-8,8H232v16a8,8,0,0,1-16,0V144H200a8,8,0,0,1,0-16h16V112a8,8,0,0,1,16,0v16h16A8,8,0,0,1,256,136ZM144,157.68a68,68,0,1,0-71.9,0c-20.65,6.76-39.23,19.39-54.17,37.17A8,8,0,0,0,24,208H192a8,8,0,0,0,6.13-13.15C183.18,177.07,164.6,164.44,144,157.68Z`}))],[`light`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M254,136a6,6,0,0,1-6,6H230v18a6,6,0,0,1-12,0V142H200a6,6,0,0,1,0-12h18V112a6,6,0,0,1,12,0v18h18A6,6,0,0,1,254,136Zm-57.41,60.14a6,6,0,1,1-9.18,7.72C166.9,179.45,138.69,166,108,166s-58.89,13.45-79.41,37.86a6,6,0,0,1-9.18-7.72C35.14,177.41,55,164.48,77,158.25a66,66,0,1,1,62,0C161,164.48,180.86,177.41,196.59,196.14ZM108,154a54,54,0,1,0-54-54A54.06,54.06,0,0,0,108,154Z`}))],[`regular`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M256,136a8,8,0,0,1-8,8H232v16a8,8,0,0,1-16,0V144H200a8,8,0,0,1,0-16h16V112a8,8,0,0,1,16,0v16h16A8,8,0,0,1,256,136Zm-57.87,58.85a8,8,0,0,1-12.26,10.3C165.75,181.19,138.09,168,108,168s-57.75,13.19-77.87,37.15a8,8,0,0,1-12.25-10.3c14.94-17.78,33.52-30.41,54.17-37.17a68,68,0,1,1,71.9,0C164.6,164.44,183.18,177.07,198.13,194.85ZM108,152a52,52,0,1,0-52-52A52.06,52.06,0,0,0,108,152Z`}))],[`thin`,x.createElement(x.Fragment,null,x.createElement(`path`,{d:`M252,136a4,4,0,0,1-4,4H228v20a4,4,0,0,1-8,0V140H200a4,4,0,0,1,0-8h20V112a4,4,0,0,1,8,0v20h20A4,4,0,0,1,252,136Zm-56.94,61.43a4,4,0,0,1-6.12,5.14C168,177.7,139.3,164,108,164s-60,13.7-80.94,38.57a4,4,0,1,1-6.12-5.14c16.71-19.9,38.13-33.13,61.89-38.59a64,64,0,1,1,50.34,0C156.93,164.3,178.35,177.53,195.06,197.43ZM108,156a56,56,0,1,0-56-56A56.06,56.06,0,0,0,108,156Z`}))]]),z=x.forwardRef((e,t)=>x.createElement(s,{ref:t,...e,weights:I}));z.displayName=`ArrowLeftIcon`;var fe=z,B=x.forwardRef((e,t)=>x.createElement(s,{ref:t,...e,weights:L}));B.displayName=`ArrowRightIcon`;var V=B,pe=x.forwardRef((e,t)=>x.createElement(s,{ref:t,...e,weights:R}));pe.displayName=`UserPlusIcon`;var me=pe,he=`fanout.access-token`,H=`fanout:unauthorized`;function U(){let e=new URLSearchParams(window.location.search).get(`return_to`);if(!e)return``;let t=new URL(e,window.location.origin);return t.origin!==window.location.origin||t.pathname!==`/api/auth/oauth/authorize`?``:`${t.pathname}${t.search}`}function W(e){return!e||typeof e!=`object`||!(`id`in e)||typeof e.id!=`string`||e.id===``?`none`:`user`}function G(){localStorage.removeItem(he)}function K(){G(),window.dispatchEvent(new Event(H))}async function q(e,t={}){let n=new Headers(t.headers);n.set(`Fanout-Request`,`1`);let r=await fetch(e,{...t,headers:n,credentials:`same-origin`});if(r.status===401&&K(),r.status===403){let e=await r.clone().json().catch(()=>({}));throw Error(e.message??e.error??`You do not have permission to perform this action.`)}return r}async function J(){let e=await q(`/api/auth/logout`,{method:`POST`});if(!e.ok&&e.status!==401)throw Error(`Sign-out failed — your session is still active.`);e.status!==401&&K(),window.location.assign(`/`)}var ge=(0,x.createContext)(null);function Y(){let e=(0,x.useContext)(ge);if(!e)throw Error(`Fanout runtime status is unavailable`);return e}var X=(0,x.createContext)(null);function Z(){let e=(0,x.useContext)(X);if(!e)throw Error(`Fanout viewer is unavailable`);return e}function _e(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.id!=`string`||t.id===``?null:{id:t.id,email:typeof t.email==`string`?t.email:``,name:typeof t.name==`string`?t.name:``,role:typeof t.role==`string`?t.role:``}}async function Q(e,t){let n=await fetch(e,{method:t===void 0?`GET`:`POST`,headers:t===void 0?void 0:{"Content-Type":`application/json`},body:t===void 0?void 0:JSON.stringify(t),credentials:`same-origin`}),r=await n.json().catch(()=>({}));if(!n.ok)throw Error(r.message??r.error??`Request failed (${n.status})`);return r}function $({children:e,wide:t=!1}){return(0,O.jsx)(i,{mih:`100dvh`,style:{background:`radial-gradient(circle at 50% -12%, var(--mantine-color-brand-light), transparent 38%), linear-gradient(180deg, var(--mantine-color-default-hover), var(--mantine-color-body) 62%)`},children:(0,O.jsx)(ie,{mih:`100dvh`,px:`md`,py:48,children:(0,O.jsx)(c,{size:t?680:480,w:`100%`,children:(0,O.jsx)(te,{radius:28,p:{base:24,sm:40},style:{background:`var(--mantine-color-body)`,border:`1px solid var(--mantine-color-default-border)`,boxShadow:`var(--mantine-shadow-xl)`},children:e})})})})}function ve(){return typeof window>`u`?``:new URLSearchParams(window.location.search).get(`setup_token`)??``}function ye(){return typeof window>`u`?``:new URLSearchParams(window.location.search).get(`login_token`)??``}function be({children:e}){let t=le(),[n,r]=(0,x.useState)(null),[a,ee]=(0,x.useState)(!1),[o,s]=(0,x.useState)(`none`),[te,c]=(0,x.useState)(null),[d,re]=(0,x.useState)(!1),[p,m]=(0,x.useState)(``),[g,_]=(0,x.useState)(``),[b,ce]=(0,x.useState)(ve),[S,C]=(0,x.useState)(ye),[w,T]=(0,x.useState)(``),[E,D]=(0,x.useState)(!1),[k,j]=(0,x.useState)(0),[ue,de]=(0,x.useState)(()=>Date.now()),[M,N]=(0,x.useState)(!1),[I,L]=(0,x.useState)(``),[R,z]=(0,x.useState)(null),[B,pe]=(0,x.useState)(!1),he=(0,x.useRef)(null),K=U(),q=o===`user`;async function J(){let e=await fetch(`/api/auth/me`,{credentials:`same-origin`});if(!e.ok){s(`none`),c(null);return}let t=await e.json().catch(()=>null);s(W(t)),c(_e(t))}async function Y(){try{let e=await fetch(`/api/auth/me`,{credentials:`same-origin`});if(!e.ok)return;c(_e(await e.json().catch(()=>null)))}catch{}}(0,x.useEffect)(()=>{let e=new URL(window.location.href);(e.searchParams.has(`setup_token`)||e.searchParams.has(`login_token`))&&(e.searchParams.delete(`setup_token`),e.searchParams.delete(`login_token`),t({href:e.pathname+e.search+e.hash,replace:!0}))},[t]),(0,x.useEffect)(()=>{G(),Q(`/api/auth/status`).then(r).catch(e=>L(String(e))).finally(()=>ee(!0)),J().catch(()=>s(`none`)).finally(()=>re(!0));let e=()=>{s(`none`),c(null)};return window.addEventListener(H,e),()=>window.removeEventListener(H,e)},[]),(0,x.useEffect)(()=>{d&&o===`none`&&S&&(N(!0),L(``),Q(`/api/auth/link/verify`,{token:S}).then(()=>{s(`user`),Y()}).catch(e=>L(e instanceof Error?e.message:String(e))).finally(()=>{C(``),N(!1)}))},[S,d,o]),(0,x.useEffect)(()=>{q&&d&&K&&window.location.replace(K)},[q,K,d]),(0,x.useEffect)(()=>{if(k<=Date.now())return;let e=setInterval(()=>{de(Date.now()),Date.now()>=k&&clearInterval(e)},1e3);return()=>clearInterval(e)},[k]);let Z=Math.max(0,Math.ceil((k-ue)/1e3));(0,x.useEffect)(()=>{E&&!M&&I&&he.current?.querySelector(`input`)?.focus()},[M,E,I]);async function be(e){try{await navigator.clipboard.writeText(e),pe(!0)}catch{L(`Clipboard access failed. Select and copy the token manually.`)}}if(R?.ingest_token)return(0,O.jsx)($,{wide:!0,children:(0,O.jsxs)(v,{gap:`lg`,children:[(0,O.jsx)(oe,{}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(l,{c:`brand`,fw:700,size:`xs`,tt:`uppercase`,lts:`0.12em`,children:`Setup complete`}),(0,O.jsx)(h,{order:1,mt:`xs`,fz:{base:28,sm:32},lh:1.08,children:`Save your ingest token`})]}),(0,O.jsx)(l,{c:`dimmed`,children:`Fanout shows this token once. Store it with your collector secrets before continuing.`}),(0,O.jsxs)(v,{gap:`xs`,children:[(0,O.jsx)(l,{size:`sm`,fw:600,children:`OTLP endpoint`}),(0,O.jsx)(A,{block:!0,children:R.suggested_endpoint??window.location.origin})]}),(0,O.jsxs)(v,{gap:`xs`,children:[(0,O.jsx)(l,{size:`sm`,fw:600,children:`Header`}),(0,O.jsxs)(A,{block:!0,children:[R.ingest_header_name??`Authorization`,`: Bearer `,R.ingest_token]})]}),I&&(0,O.jsx)(u,{color:`bad`,radius:`md`,children:I}),(0,O.jsxs)(f,{grow:!0,align:`stretch`,children:[(0,O.jsx)(y,{variant:`light`,radius:`md`,leftSection:B?(0,O.jsx)(ne,{size:16,weight:`bold`}):(0,O.jsx)(ae,{size:16}),onClick:()=>void be(`${R.ingest_header_name??`Authorization`}: Bearer ${R.ingest_token}`),children:B?`Copied`:`Copy header`}),(0,O.jsx)(y,{radius:`md`,rightSection:(0,O.jsx)(V,{size:16,weight:`bold`}),onClick:()=>{s(`user`),z(null),Y()},children:`Continue to Fanout`})]}),(0,O.jsx)(y,{variant:`subtle`,size:`compact-xs`,onClick:()=>void be(R.ingest_token??``),children:`Copy token only`})]})});if(!d||!a||S)return(0,O.jsx)(ie,{mih:`100dvh`,children:(0,O.jsx)(se,{size:`sm`})});if(!n)return(0,O.jsx)($,{children:(0,O.jsxs)(v,{gap:`lg`,children:[(0,O.jsx)(oe,{}),(0,O.jsx)(h,{order:1,children:`Fanout is unavailable`}),(0,O.jsx)(u,{color:`bad`,radius:`md`,children:I||`Authentication status could not be loaded.`})]})});if(q&&K)return null;if(q)return(0,O.jsx)(ge.Provider,{value:n,children:(0,O.jsx)(X.Provider,{value:te??{id:``,email:p,name:g,role:``},children:e})});if(n&&!n.setup_required&&n.auth_mode===`oidc`){let e=K?`/api/auth/oidc/start?return_to=${encodeURIComponent(K)}`:`/api/auth/oidc/start`;return(0,O.jsx)($,{children:(0,O.jsxs)(v,{gap:28,children:[(0,O.jsx)(oe,{}),(0,O.jsxs)(v,{gap:10,children:[(0,O.jsx)(l,{c:`brand`,fw:700,size:`xs`,tt:`uppercase`,lts:`0.12em`,children:`Secure workspace`}),(0,O.jsx)(h,{order:1,fz:{base:28,sm:32},lh:1.08,children:`Sign in`}),(0,O.jsx)(l,{c:`dimmed`,size:`md`,lh:1.6,children:`Use your organization's identity provider to continue.`})]}),I&&(0,O.jsx)(u,{color:`bad`,radius:`md`,children:I}),(0,O.jsx)(y,{component:`a`,href:e,size:`md`,radius:`md`,rightSection:(0,O.jsx)(V,{size:17,weight:`bold`}),children:`Continue with SSO`})]})})}async function xe(){N(!0),L(``);try{await Q(`/api/auth/code/send`,{email:p}),D(!0),T(``),j(Date.now()+3e4),de(Date.now())}catch(e){L(e instanceof Error?e.message:String(e))}finally{N(!1)}}async function Se(e){N(!0),L(``);try{await Q(`/api/auth/code/verify`,{email:p,code:e}),s(`user`),D(!1),T(``),j(0),Y()}catch(e){T(``),L(e instanceof Error?e.message:String(e))}finally{N(!1)}}function Ce(){D(!1),T(``),L(``)}async function we(e){e.preventDefault(),N(!0),L(``);try{if(n?.setup_required){let e=await Q(`/api/auth/setup`,{email:p,name:g,setup_token:b});e.ingest_token?z(e):(s(`user`),Y())}else if(E){await Se(w);return}else{await xe();return}}catch(e){L(e instanceof Error?e.message:String(e))}finally{N(!1)}}let Te=E&&!n?.setup_required,Ee=n?.setup_required?`Create the first admin`:Te?`Check your email`:n?.self_signup?`Sign in or create an account`:`Sign in`,De=n?.setup_required?`Use the one-time token printed by the Fanout process.`:n?.smtp_configured?Te?`We sent a code to ${p}.`:n?.self_signup?`Enter your email to sign in or create a viewer account. No password needed.`:`Enter your email and we’ll send a short verification code. No password needed.`:`Email delivery is not configured. Ask the operator to run fanout login-link with your email address.`;return(0,O.jsx)($,{children:(0,O.jsxs)(v,{gap:28,children:[(0,O.jsx)(oe,{}),(0,O.jsxs)(v,{gap:10,children:[(0,O.jsx)(l,{c:`brand`,fw:700,size:`xs`,tt:`uppercase`,lts:`0.12em`,children:n?.setup_required?`One-time setup`:`Secure workspace`}),(0,O.jsx)(h,{order:1,fz:{base:28,sm:32},lh:1.08,children:Ee}),De&&(0,O.jsx)(l,{c:`dimmed`,size:`md`,lh:1.6,maw:390,children:De})]}),(0,O.jsx)(`form`,{onSubmit:we,children:(0,O.jsxs)(v,{gap:`md`,children:[(0,O.jsx)(F,{label:`Email`,placeholder:`you@company.com`,type:`email`,required:!0,value:p,onChange:e=>m(e.currentTarget.value),disabled:E,variant:`filled`,radius:`md`,size:`md`,autoFocus:!E}),n?.setup_required&&(0,O.jsx)(F,{label:`Name`,placeholder:`Your name`,value:g,onChange:e=>_(e.currentTarget.value),variant:`filled`,radius:`md`,size:`md`}),n?.setup_required&&(0,O.jsx)(F,{label:`Setup token`,placeholder:`from the setup URL printed at startup`,required:!0,value:b,onChange:e=>ce(e.currentTarget.value),autoComplete:`one-time-code`,variant:`filled`,radius:`md`,size:`md`}),Te&&(0,O.jsxs)(v,{gap:`xs`,children:[(0,O.jsx)(l,{size:`sm`,fw:600,children:`Verification code`}),(0,O.jsx)(i,{ref:he,children:(0,O.jsx)(P,{length:6,type:`number`,oneTimeCode:!0,autoFocus:!0,value:w,onChange:T,onComplete:e=>void Se(e),disabled:M,error:!!I,size:`md`,radius:`md`,"aria-label":`Verification code`,getInputProps:e=>({"aria-label":`Digit ${e+1}`})})}),(0,O.jsxs)(f,{justify:`space-between`,gap:`xs`,children:[(0,O.jsxs)(l,{c:`dimmed`,size:`xs`,children:[`Sent to `,p]}),(0,O.jsx)(y,{variant:`subtle`,size:`compact-xs`,leftSection:(0,O.jsx)(fe,{size:12,weight:`bold`}),onClick:Ce,disabled:M,children:`Change email`})]}),(0,O.jsxs)(f,{justify:`space-between`,gap:`xs`,children:[(0,O.jsx)(l,{c:`dimmed`,size:`xs`,children:`Codes expire in 5 minutes`}),(0,O.jsx)(y,{variant:`subtle`,size:`compact-xs`,onClick:()=>void xe(),disabled:M||Z>0,children:Z>0?`Resend in ${Z}s`:`Resend code`})]})]}),I&&(0,O.jsx)(u,{color:`bad`,radius:`md`,children:I}),Te?(0,O.jsx)(y,{type:`submit`,size:`md`,radius:`md`,mt:4,loading:M,disabled:M||w.length<6,rightSection:(0,O.jsx)(V,{size:17,weight:`bold`}),children:`Verify code`}):(0,O.jsx)(y,{type:`submit`,size:`md`,radius:`md`,mt:4,loading:M,disabled:!n||!n.setup_required&&!n.smtp_configured,leftSection:n?.setup_required?(0,O.jsx)(me,{size:17,weight:`bold`}):void 0,rightSection:n?.setup_required?void 0:(0,O.jsx)(V,{size:17,weight:`bold`}),children:n?.setup_required?`Create admin`:`Send code`})]})})]})})}export{J as a,E as c,w as d,C as f,q as i,T as l,S as m,Y as n,F as o,ce as p,Z as r,A as s,be as t,le as u}; \ No newline at end of file diff --git a/internal/ui/dist/assets/brand-BUxUP_Hq.js b/internal/ui/dist/assets/brand-BUxUP_Hq.js new file mode 100644 index 00000000..348aa34a --- /dev/null +++ b/internal/ui/dist/assets/brand-BUxUP_Hq.js @@ -0,0 +1 @@ +var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n)),u=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.for(`react.view_transition`),m=Symbol.iterator;function h(e){return typeof e!=`object`||!e?null:(e=m&&e[m]||e[`@@iterator`],typeof e==`function`?e:null)}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function y(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function b(){}b.prototype=y.prototype;function x(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}var S=x.prototype=new b;S.constructor=x,_(S,y.prototype),S.isPureReactComponent=!0;var C=Array.isArray;function w(){}var T={H:null,A:null,T:null,S:null},E=Object.prototype.hasOwnProperty;function D(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function O(e,t){return D(e.type,t,e.props)}function k(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function A(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var j=/\/+/g;function M(e,t){return typeof e==`object`&&e&&e.key!=null?A(``+e.key):t.toString(36)}function N(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(w,w):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function P(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,P(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+M(e,0):a,C(o)?(i=``,c!=null&&(i=c.replace(j,`$&/`)+`/`),P(o,r,i,``,function(e){return e})):o!=null&&(k(o)&&(o=O(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(j,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(C(e))for(var u=0;u{t.exports=u()})),f=o((e=>{var t=d();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=f()})),m=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),h=o(((e,t)=>{t.exports=m()})),g=l(d(),1),_=g.createContext(null);function v(e){return g.useContext(_)}var y=h();function b(e){return Object.keys(e)}function x(e){return e&&typeof e==`object`&&!Array.isArray(e)}function S(e,t){let n={...e},r=t;return x(e)&&x(t)&&Object.keys(t).forEach(t=>{x(r[t])&&t in e?n[t]=S(n[t],r[t]):n[t]=r[t]}),n}function C(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}function w(e){return e===`0rem`?`0rem`:`calc(${e} * var(--mantine-scale))`}function T(e,{shouldScale:t=!1}={}){function n(r){if(r===0||r===`0`)return`0${e}`;if(typeof r==`number`){let n=`${r/16}${e}`;return t?w(n):n}if(typeof r==`string`){if(r===``||r.startsWith(`calc(`)||r.startsWith(`clamp(`)||r.includes(`rgba(`))return r;if(r.includes(`,`))return r.split(`,`).map(e=>n(e)).join(`,`);if(r.includes(` `))return r.split(` `).map(e=>n(e)).join(` `);let i=r.replace(`px`,``);if(!Number.isNaN(Number(i))){let n=`${Number(i)/16}${e}`;return t?w(n):n}}return r}return n}var E=T(`rem`,{shouldScale:!0}),D=T(`em`);function O(e){return Object.keys(e).reduce((t,n)=>(e[n]!==void 0&&(t[n]=e[n]),t),{})}function k(e){if(typeof e==`number`)return!0;if(typeof e==`string`){if(e.startsWith(`calc(`)||e.startsWith(`var(`)||e.includes(` `)&&e.trim()!==``)return!0;let t=/^[+-]?[0-9]+(\.[0-9]+)?(px|em|rem|ex|ch|lh|rlh|vw|vh|vmin|vmax|vb|vi|svw|svh|lvw|lvh|dvw|dvh|cm|mm|in|pt|pc|q|cqw|cqh|cqi|cqb|cqmin|cqmax|%)?$/;return e.trim().split(/\s+/).every(e=>t.test(e))}return!1}function A(e,t=`size`,n=!0){if(e!==void 0)return k(e)?n?E(e):e:`var(--${t}-${e})`}function j(e){return A(e,`mantine-spacing`)}function M(e){return e===void 0?`var(--mantine-radius-default)`:A(e,`mantine-radius`)}function N(e){return A(e,`mantine-font-size`)}function P(e){return A(e,`mantine-line-height`,!1)}function F(e){if(e)return A(e,`mantine-shadow`,!1)}function ee(e=`mantine-`){return`${e}${Math.random().toString(36).slice(2,11)}`}function te(e,t){if(typeof t==`boolean`)return t;if(typeof window<`u`&&`matchMedia`in window)try{return window.matchMedia(e).matches}catch{return!1}return!1}function I(e,t,{getInitialValueInEffect:n}={getInitialValueInEffect:!0}){let[r,i]=(0,g.useState)(n?t:te(e));return(0,g.useEffect)(()=>{try{if(`matchMedia`in window){let t=window.matchMedia(e);i(t.matches);let n=e=>i(e.matches);return t.addEventListener(`change`,n),()=>{t.removeEventListener(`change`,n)}}}catch{return}},[e]),r||!1}var L=typeof document<`u`?g.useLayoutEffect:g.useEffect;function ne(e,t){return e.length!==t.length||t.some((t,n)=>!Object.is(t,e[n]))}function R(e,t){let n=(0,g.useRef)(!1),r=(0,g.useRef)(null),i=(0,g.useRef)(void 0),a={};(0,g.useEffect)(()=>{let o=r.current===a,s=i.current;if(r.current=a,i.current=t,!n.current){n.current=!0;return}if(!o&&!(t&&s&&!ne(s,t)))return e()},t)}function re(e){let t=(0,g.useId)(),[n,r]=(0,g.useState)(`mantine-${t.replace(/:/g,``)}`),i=(0,g.useRef)(!1);return L(()=>{i.current||(i.current=!0,r(ee()))},[]),typeof e==`string`?e:n}function z(e,t){if(typeof e==`function`)return e(t);typeof e==`object`&&e&&`current`in e&&(e.current=t)}function ie(...e){let t=new Map;return n=>{if(e.forEach(e=>{let r=z(e,n);r&&t.set(e,r)}),t.size>0)return()=>{e.forEach(e=>{let n=t.get(e);n&&typeof n==`function`?n():z(e,null)}),t.clear()}}}function ae(...e){return(0,g.useCallback)(ie(...e),e)}function oe(e,t){return I(`(prefers-reduced-motion: reduce)`,e,t)}function B(e){return e}function se(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;t{Object.entries(e).forEach(([e,n])=>{t[e]?t[e]=V(t[e],n):t[e]=n})}),t}function U({theme:e,classNames:t,props:n,stylesCtx:r}){return ce((Array.isArray(t)?t:[t]).map(t=>typeof t==`function`?t(e,n,r):t||H))}function le({theme:e,styles:t,props:n,stylesCtx:r}){let i=Array.isArray(t)?t:[t],a={};for(let t of i)typeof t==`function`?Object.assign(a,t(e,n,r)):t&&Object.assign(a,t);return a}function ue(e,t){return typeof e.primaryShade==`number`?e.primaryShade:t===`dark`?e.primaryShade.dark:e.primaryShade.light}function de(e){return/^#?([0-9A-F]{3}){1,2}([0-9A-F]{2})?$/i.test(e)}function fe(e){let t=e.replace(`#`,``);if(t.length===3){let e=t.split(``);t=[e[0],e[0],e[1],e[1],e[2],e[2]].join(``)}if(t.length===8){let e=parseInt(t.slice(6,8),16)/255;return{r:parseInt(t.slice(0,2),16),g:parseInt(t.slice(2,4),16),b:parseInt(t.slice(4,6),16),a:e}}let n=parseInt(t,16);return{r:n>>16&255,g:n>>8&255,b:n&255,a:1}}function pe(e){let[t,n,r,i]=e.replace(/[^0-9,./]/g,``).split(/[/,]/).map(Number);return{r:t,g:n,b:r,a:i===void 0?1:i}}function me(e){let t=e.match(/^hsla?\(\s*(\d+)\s*,\s*(\d+%)\s*,\s*(\d+%)\s*(,\s*(0?\.\d+|\d+(\.\d+)?))?\s*\)$/i);if(!t)return{r:0,g:0,b:0,a:1};let n=parseInt(t[1],10),r=parseInt(t[2],10)/100,i=parseInt(t[3],10)/100,a=t[5]?parseFloat(t[5]):void 0,o=(1-Math.abs(2*i-1))*r,s=n/60,c=o*(1-Math.abs(s%2-1)),l=i-o/2,u,d,f;return s>=0&&s<1?(u=o,d=c,f=0):s>=1&&s<2?(u=c,d=o,f=0):s>=2&&s<3?(u=0,d=o,f=c):s>=3&&s<4?(u=0,d=c,f=o):s>=4&&s<5?(u=c,d=0,f=o):(u=o,d=0,f=c),{r:Math.round((u+l)*255),g:Math.round((d+l)*255),b:Math.round((f+l)*255),a:a||1}}function he(e){return de(e)?fe(e):e.startsWith(`rgb`)?pe(e):e.startsWith(`hsl`)?me(e):{r:0,g:0,b:0,a:1}}function ge(e){return e<=.03928?e/12.92:((e+.055)/1.055)**2.4}function _e(e){let t=e.match(/oklch\((.*?)%\s/);return t?parseFloat(t[1]):null}function ve(e){if(e.startsWith(`oklch(`))return(_e(e)||0)/100;let{r:t,g:n,b:r}=he(e),i=t/255,a=n/255,o=r/255,s=ge(i),c=ge(a),l=ge(o);return .2126*s+.7152*c+.0722*l}function ye(e,t=.179){return!e.startsWith(`var(`)&&ve(e)>t}function be({color:e,theme:t,colorScheme:n}){if(typeof e!=`string`)throw Error(`[@mantine/core] Failed to parse color. Expected color to be a string, instead got ${typeof e}`);if(e===`bright`)return{color:e,value:n===`dark`?t.white:t.black,shade:void 0,isThemeColor:!1,isLight:ye(n===`dark`?t.white:t.black,t.luminanceThreshold),variable:`--mantine-color-bright`};if(e===`dimmed`)return{color:e,value:n===`dark`?t.colors.dark[2]:t.colors.gray[7],shade:void 0,isThemeColor:!1,isLight:ye(n===`dark`?t.colors.dark[2]:t.colors.gray[6],t.luminanceThreshold),variable:`--mantine-color-dimmed`};if(e===`white`||e===`black`)return{color:e,value:e===`white`?t.white:t.black,shade:void 0,isThemeColor:!1,isLight:ye(e===`white`?t.white:t.black,t.luminanceThreshold),variable:`--mantine-color-${e}`};let[r,i]=e.split(`.`),a=i?Number(i):void 0,o=r in t.colors;if(o){let e=a===void 0?t.colors[r][ue(t,n||`light`)]:t.colors[r][a];return{color:r,value:e,shade:a,isThemeColor:o,isLight:ye(e,t.luminanceThreshold),variable:i?`--mantine-color-${r}-${a}`:`--mantine-color-${r}-filled`}}return{color:e,value:e,isThemeColor:o,isLight:ye(e,t.luminanceThreshold),shade:a,variable:void 0}}function xe(e,t){let n=be({color:e||t.primaryColor,theme:t});return n.variable?`var(${n.variable})`:e}function Se(e){return!!e&&typeof e==`object`&&`mantine-virtual-color`in e}function Ce(e,t){if(e.startsWith(`var(`))return`color-mix(in srgb, ${e}, black ${t*100}%)`;let{r:n,g:r,b:i,a}=he(e),o=1-t,s=e=>Math.round(e*o);return`rgba(${s(n)}, ${s(r)}, ${s(i)}, ${a})`}function we(e,t){let n={from:e?.from||t.defaultGradient.from,to:e?.to||t.defaultGradient.to,deg:e?.deg??t.defaultGradient.deg??0},r=xe(n.from,t),i=xe(n.to,t);return`linear-gradient(${n.deg}deg, ${r} 0%, ${i} 100%)`}function W(e,t){if(typeof e!=`string`||t>1||t<0)return`rgba(0, 0, 0, 1)`;if(e.startsWith(`var(`))return`color-mix(in srgb, ${e}, transparent ${(1-t)*100}%)`;if(e.startsWith(`oklch`))return e.includes(`/`)?e.replace(/\/\s*[\d.]+\s*\)/,`/ ${t})`):e.replace(`)`,` / ${t})`);let{r:n,g:r,b:i}=he(e);return`rgba(${n}, ${r}, ${i}, ${t})`}var Te=W,Ee=({color:e,theme:t,variant:n,gradient:r,autoContrast:i})=>{let a=be({color:e,theme:t}),o=typeof i==`boolean`?i:t.autoContrast;if(n===`none`)return{background:`transparent`,hover:`transparent`,color:`inherit`,border:`none`};if(n===`filled`){let n=a.isThemeColor&&a.shade===void 0&&Se(t.colors[a.color]),r=o?n?`var(--mantine-color-${a.color}-contrast)`:a.isLight?`var(--mantine-color-black)`:`var(--mantine-color-white)`:`var(--mantine-color-white)`;return a.isThemeColor?a.shade===void 0?{background:`var(--mantine-color-${e}-filled)`,hover:`var(--mantine-color-${e}-filled-hover)`,color:r,border:`${E(1)} solid transparent`}:{background:`var(--mantine-color-${a.color}-${a.shade})`,hover:`var(--mantine-color-${a.color}-${a.shade===9?8:a.shade+1})`,color:r,border:`${E(1)} solid transparent`}:{background:e,hover:Ce(e,.1),color:r,border:`${E(1)} solid transparent`}}if(n===`light`){if(a.isThemeColor){if(a.shade===void 0)return{background:`var(--mantine-color-${e}-light)`,hover:`var(--mantine-color-${e}-light-hover)`,color:`var(--mantine-color-${e}-light-color)`,border:`${E(1)} solid transparent`};let n=t.colors[a.color][a.shade];return{background:n,hover:Ce(n,.1),color:`var(--mantine-color-${a.color}-light-color)`,border:`${E(1)} solid transparent`}}return{background:W(e,.1),hover:W(e,.12),color:e,border:`${E(1)} solid transparent`}}if(n===`outline`)return a.isThemeColor?a.shade===void 0?{background:`transparent`,hover:`var(--mantine-color-${e}-outline-hover)`,color:`var(--mantine-color-${e}-outline)`,border:`${E(1)} solid var(--mantine-color-${e}-outline)`}:{background:`transparent`,hover:W(t.colors[a.color][a.shade],.05),color:`var(--mantine-color-${a.color}-${a.shade})`,border:`${E(1)} solid var(--mantine-color-${a.color}-${a.shade})`}:{background:`transparent`,hover:W(e,.05),color:e,border:`${E(1)} solid ${e}`};if(n===`subtle`){if(a.isThemeColor){if(a.shade===void 0)return{background:`transparent`,hover:`var(--mantine-color-${e}-light-hover)`,color:`var(--mantine-color-${e}-light-color)`,border:`${E(1)} solid transparent`};let n=t.colors[a.color][a.shade];return{background:`transparent`,hover:W(n,.12),color:`var(--mantine-color-${a.color}-${Math.min(a.shade,6)})`,border:`${E(1)} solid transparent`}}return{background:`transparent`,hover:W(e,.12),color:e,border:`${E(1)} solid transparent`}}return n===`transparent`?a.isThemeColor?a.shade===void 0?{background:`transparent`,hover:`transparent`,color:`var(--mantine-color-${e}-light-color)`,border:`${E(1)} solid transparent`}:{background:`transparent`,hover:`transparent`,color:`var(--mantine-color-${a.color}-${Math.min(a.shade,6)})`,border:`${E(1)} solid transparent`}:{background:`transparent`,hover:`transparent`,color:e,border:`${E(1)} solid transparent`}:n===`white`?a.isThemeColor?a.shade===void 0?{background:`var(--mantine-color-white)`,hover:Ce(t.white,.01),color:`var(--mantine-color-${e}-filled)`,border:`${E(1)} solid transparent`}:{background:`var(--mantine-color-white)`,hover:Ce(t.white,.01),color:`var(--mantine-color-${a.color}-${a.shade})`,border:`${E(1)} solid transparent`}:{background:`var(--mantine-color-white)`,hover:Ce(t.white,.01),color:e,border:`${E(1)} solid transparent`}:n===`gradient`?{background:we(r,t),hover:we(r,t),color:`var(--mantine-color-white)`,border:`none`}:n==="default"?{background:`var(--mantine-color-default)`,hover:`var(--mantine-color-default-hover)`,color:`var(--mantine-color-default-color)`,border:`${E(1)} solid var(--mantine-color-default-border)`}:{}},De=(0,g.createContext)(null);function G(){let e=(0,g.use)(De);if(!e)throw Error(`[@mantine/core] MantineProvider was not found in tree`);return e}function Oe(){return G().cssVariablesResolver}function ke(){return G().classNamesPrefix}function Ae(){return G().getStyleNonce}function je(){return G().withStaticClasses}function Me(){return G().headless}function Ne(){return G().stylesTransform?.sx}function Pe(){return G().stylesTransform?.styles}function Fe(){return G().env||`default`}function Ie(){return G().deduplicateInlineStyles}var Le={dark:[`#C9C9C9`,`#b8b8b8`,`#828282`,`#696969`,`#424242`,`#3b3b3b`,`#2e2e2e`,`#242424`,`#1f1f1f`,`#141414`],gray:[`#f8f9fa`,`#f1f3f5`,`#e9ecef`,`#dee2e6`,`#ced4da`,`#adb5bd`,`#868e96`,`#495057`,`#343a40`,`#212529`],red:[`#fff5f5`,`#ffe3e3`,`#ffc9c9`,`#ffa8a8`,`#ff8787`,`#ff6b6b`,`#fa5252`,`#f03e3e`,`#e03131`,`#c92a2a`],pink:[`#fff0f6`,`#ffdeeb`,`#fcc2d7`,`#faa2c1`,`#f783ac`,`#f06595`,`#e64980`,`#d6336c`,`#c2255c`,`#a61e4d`],grape:[`#f8f0fc`,`#f3d9fa`,`#eebefa`,`#e599f7`,`#da77f2`,`#cc5de8`,`#be4bdb`,`#ae3ec9`,`#9c36b5`,`#862e9c`],violet:[`#f3f0ff`,`#e5dbff`,`#d0bfff`,`#b197fc`,`#9775fa`,`#845ef7`,`#7950f2`,`#7048e8`,`#6741d9`,`#5f3dc4`],indigo:[`#edf2ff`,`#dbe4ff`,`#bac8ff`,`#91a7ff`,`#748ffc`,`#5c7cfa`,`#4c6ef5`,`#4263eb`,`#3b5bdb`,`#364fc7`],blue:[`#e7f5ff`,`#d0ebff`,`#a5d8ff`,`#74c0fc`,`#4dabf7`,`#339af0`,`#228be6`,`#1c7ed6`,`#1971c2`,`#1864ab`],cyan:[`#e3fafc`,`#c5f6fa`,`#99e9f2`,`#66d9e8`,`#3bc9db`,`#22b8cf`,`#15aabf`,`#1098ad`,`#0c8599`,`#0b7285`],teal:[`#e6fcf5`,`#c3fae8`,`#96f2d7`,`#63e6be`,`#38d9a9`,`#20c997`,`#12b886`,`#0ca678`,`#099268`,`#087f5b`],green:[`#ebfbee`,`#d3f9d8`,`#b2f2bb`,`#8ce99a`,`#69db7c`,`#51cf66`,`#40c057`,`#37b24d`,`#2f9e44`,`#2b8a3e`],lime:[`#f4fce3`,`#e9fac8`,`#d8f5a2`,`#c0eb75`,`#a9e34b`,`#94d82d`,`#82c91e`,`#74b816`,`#66a80f`,`#5c940d`],yellow:[`#fff9db`,`#fff3bf`,`#ffec99`,`#ffe066`,`#ffd43b`,`#fcc419`,`#fab005`,`#f59f00`,`#f08c00`,`#e67700`],orange:[`#fff4e6`,`#ffe8cc`,`#ffd8a8`,`#ffc078`,`#ffa94d`,`#ff922b`,`#fd7e14`,`#f76707`,`#e8590c`,`#d9480f`]},Re=`-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji`,ze={scale:1,fontSmoothing:!0,focusRing:`auto`,white:`#fff`,black:`#000`,colors:Le,primaryShade:{light:6,dark:8},primaryColor:`blue`,variantColorResolver:Ee,autoContrast:!1,luminanceThreshold:.3,fontFamily:Re,fontFamilyMonospace:`ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace`,respectReducedMotion:!1,cursorType:`default`,defaultGradient:{from:`blue`,to:`cyan`,deg:45},defaultRadius:`md`,activeClassName:`mantine-active`,focusClassName:``,headings:{fontFamily:Re,fontWeight:`700`,textWrap:`wrap`,sizes:{h1:{fontSize:E(34),lineHeight:`1.3`},h2:{fontSize:E(26),lineHeight:`1.35`},h3:{fontSize:E(22),lineHeight:`1.4`},h4:{fontSize:E(18),lineHeight:`1.45`},h5:{fontSize:E(16),lineHeight:`1.5`},h6:{fontSize:E(14),lineHeight:`1.5`}}},fontSizes:{xs:E(12),sm:E(14),md:E(16),lg:E(18),xl:E(20)},lineHeights:{xs:`1.4`,sm:`1.45`,md:`1.55`,lg:`1.6`,xl:`1.65`},fontWeights:{regular:`400`,medium:`600`,bold:`700`},radius:{xs:E(2),sm:E(4),md:E(8),lg:E(16),xl:E(32)},spacing:{xs:E(10),sm:E(12),md:E(16),lg:E(20),xl:E(32)},breakpoints:{xs:`36em`,sm:`48em`,md:`62em`,lg:`75em`,xl:`88em`},shadows:{xs:`0 ${E(1)} ${E(3)} rgba(0, 0, 0, 0.05), 0 ${E(1)} ${E(2)} rgba(0, 0, 0, 0.1)`,sm:`0 ${E(1)} ${E(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${E(10)} ${E(15)} ${E(-5)}, rgba(0, 0, 0, 0.04) 0 ${E(7)} ${E(7)} ${E(-5)}`,md:`0 ${E(1)} ${E(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${E(20)} ${E(25)} ${E(-5)}, rgba(0, 0, 0, 0.04) 0 ${E(10)} ${E(10)} ${E(-5)}`,lg:`0 ${E(1)} ${E(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${E(28)} ${E(23)} ${E(-7)}, rgba(0, 0, 0, 0.04) 0 ${E(12)} ${E(12)} ${E(-7)}`,xl:`0 ${E(1)} ${E(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${E(36)} ${E(28)} ${E(-7)}, rgba(0, 0, 0, 0.04) 0 ${E(17)} ${E(17)} ${E(-7)}`},other:{},components:{}},Be=`[@mantine/core] MantineProvider: Invalid theme.primaryColor, it accepts only key of theme.colors, learn more – https://mantine.dev/theming/colors/#primary-color`,Ve=`[@mantine/core] MantineProvider: Invalid theme.primaryShade, it accepts only 0-9 integers or an object { light: 0-9, dark: 0-9 }`;function He(e){return e<0||e>9?!1:parseInt(e.toString(),10)===e}function Ue(e){if(!(e.primaryColor in e.colors))throw Error(Be);if(typeof e.primaryShade==`object`&&(!He(e.primaryShade.dark)||!He(e.primaryShade.light))||typeof e.primaryShade==`number`&&!He(e.primaryShade))throw Error(Ve)}function We(e,t){if(!t)return Ue(e),e;let n=S(e,t);return t.fontFamily&&!t.headings?.fontFamily&&(n.headings={...n.headings,fontFamily:t.fontFamily}),Ue(n),n}var Ge=(0,g.createContext)(null),Ke=()=>(0,g.use)(Ge)||ze;function qe(){let e=(0,g.use)(Ge);if(!e)throw Error(`@mantine/core: MantineProvider was not found in component tree, make sure you have it in your app`);return e}function Je({theme:e,children:t,inherit:n=!0}){let r=Ke(),i=(0,g.useMemo)(()=>We(n?r:ze,e),[e,r,n]);return(0,y.jsx)(Ge,{value:i,children:t})}Je.displayName=`@mantine/core/MantineThemeProvider`;function K(e,t,n){let r=qe(),i=(Array.isArray(e)?e:[e]).filter(Boolean),a={};for(let e of i){let t=r.components[e]?.defaultProps,n=typeof t==`function`?t(r):t;n&&(a={...a,...n})}return{...t,...a,...O(n)}}function Ye({classNames:e,styles:t,props:n,stylesCtx:r}){let i=qe();return{resolvedClassNames:e===void 0?void 0:U({theme:i,classNames:e,props:n,stylesCtx:r||void 0}),resolvedStyles:t===void 0?void 0:le({theme:i,styles:t,props:n,stylesCtx:r||void 0})}}var Xe={always:`mantine-focus-always`,auto:`mantine-focus-auto`,never:`mantine-focus-never`};function Ze({theme:e,options:t,unstyled:n}){return V(t?.focusable&&!n&&(e.focusClassName||Xe[e.focusRing]),t?.active&&!n&&e.activeClassName)}function Qe(e,t,n=1){if(Object.is(e,t))return!0;if(n===0||typeof e!=`object`||typeof t!=`object`||e===null||t===null)return!1;if(Array.isArray(e)||Array.isArray(t)){if(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length)return!1;for(let r=0;r`${t}-${e}-${n}`)}function it({options:e,classes:t,selector:n,unstyled:r}){return e?.variant&&!r?t[`${n}--${e.variant}`]:void 0}function at({theme:e,options:t,themeName:n,selector:r,classNamesPrefix:i,resolvedClassNames:a,resolvedThemeClassNames:o,classes:s,unstyled:c,className:l,rootSelector:u,props:d,stylesCtx:f,withStaticClasses:p,headless:m,transformedStyles:h}){return V(Ze({theme:e,options:t,unstyled:c||m}),o.map(e=>e[r]),it({options:t,classes:s,selector:r,unstyled:c||m}),a[r],et({selector:r,stylesCtx:f,theme:e,classNames:h,props:d}),$e({selector:r,stylesCtx:f,options:t,props:d,theme:e}),tt({rootSelector:u,selector:r,className:l}),nt({selector:r,classes:s,unstyled:c||m}),p&&!m&&rt({themeName:n,classNamesPrefix:i,selector:r,withStaticClass:t?.withStaticClass}),t?.className)}function ot({style:e,theme:t}){return Array.isArray(e)?e.reduce((e,n)=>({...e,...ot({style:n,theme:t})}),{}):typeof e==`function`?e(t):e??{}}function st({theme:e,selector:t,options:n,props:r,stylesCtx:i,rootSelector:a,withStylesTransform:o,resolvedStyles:s,resolvedThemeStyles:c,resolvedVars:l,resolvedRootStyle:u}){return{...c[t],...s[t],...!o&&le({theme:e,styles:n?.styles,props:n?.props||r,stylesCtx:i})[t],...l[t],...a===t?u:null,...ot({style:n?.style,theme:e})}}function ct(e){return e.reduce((e,t)=>(t&&Object.keys(t).forEach(n=>{e[n]={...e[n],...O(t[n])}}),e),{})}function lt({props:e,stylesCtx:t,themeName:n,theme:r}){let i=Pe()?.();return{getTransformedStyles:a=>i?[...a.map(n=>i(n,{props:e,theme:r,ctx:t})),...n.map(n=>i(r.components[n]?.styles,{props:e,theme:r,ctx:t}))].filter(Boolean):[],withStylesTransform:!!i}}function q({name:e,classes:t,props:n,stylesCtx:r,className:i,style:a,rootSelector:o=`root`,unstyled:s,classNames:c,styles:l,vars:u,varsResolver:d,attributes:f,stable:p}){let m=qe(),h=ke(),g=je(),_=Me(),v=(Array.isArray(e)?e:[e]).filter(e=>e),{withStylesTransform:y,getTransformedStyles:b}=lt({props:n,stylesCtx:r,themeName:v,theme:m}),x=U({theme:m,classNames:c,props:n,stylesCtx:r}),S=v.map(e=>U({theme:m,classNames:m.components[e]?.classNames,props:n,stylesCtx:r})),C=y?{}:le({theme:m,styles:l,props:n,stylesCtx:r}),w={};if(!y)for(let e of v){let t=le({theme:m,styles:m.components[e]?.styles,props:n,stylesCtx:r});for(let e of Object.keys(t))w[e]={...w[e],...t[e]}}let T=ct([_?{}:d?.(m,n,r),...v.map(e=>m.components?.[e]?.vars?.(m,n,r)),u?.(m,n,r)]),E=ot({style:a,theme:m});return ut((e,a)=>({...f?.[e],className:at({theme:m,options:a,themeName:v,selector:e,classNamesPrefix:h,resolvedClassNames:x,resolvedThemeClassNames:S,classes:t,unstyled:s,className:i,rootSelector:o,props:n,stylesCtx:r,withStaticClasses:g,headless:_,transformedStyles:b([a?.styles,l])}),style:st({theme:m,selector:e,options:a,props:n,stylesCtx:r,rootSelector:o,withStylesTransform:y,resolvedStyles:C,resolvedThemeStyles:w,resolvedVars:T,resolvedRootStyle:E})}),!!p,[m,h,g,_,y?n:null,t,s,i,o,f,r,x,S,C,w,T,E])}function ut(e,t,n){let r=(0,g.useRef)(null);return t?((!r.current||!Qe(r.current.deps,n,3))&&(r.current={deps:n,getStyles:e}),r.current.getStyles):e}function dt(e){return b(e).reduce((t,n)=>e[n]===void 0?t:`${t}${C(n)}:${e[n]};`,``).trim()}function ft({selector:e,styles:t,media:n,container:r}){let i=t?dt(t):``,a=Array.isArray(n)?n.map(t=>`@media${t.query}{${e}{${dt(t.styles)}}}`):[],o=Array.isArray(r)?r.map(t=>`@container ${t.query}{${e}{${dt(t.styles)}}}`):[];return`${i?`${e}{${i}}`:``}${a.join(``)}${o.join(``)}`.trim()}function pt(e){let t=5381;for(let n=0;n>>0).toString(36)}function mt({deduplicate:e,...t}){let n=Ae(),r=ft(t);return e?(0,y.jsx)(`style`,{href:`mantine-${pt(r)}`,precedence:`mantine`,nonce:n?.(),children:r}):(0,y.jsx)(`style`,{"data-mantine-styles":`inline`,nonce:n?.(),dangerouslySetInnerHTML:{__html:r}})}function ht(e){let t=5381;for(let n=0;n>>0).toString(36)}function gt(e,t){return`__mdi__-${ht(`${e?dt(e):``}|${Array.isArray(t)?t.map(e=>`${e.query}:${dt(e.styles)}`).join(`|`):``}`)}`}function _t(e){let{m:t,mx:n,my:r,mt:i,mb:a,ml:o,mr:s,me:c,ms:l,mis:u,mie:d,p:f,px:p,py:m,pt:h,pb:g,pl:_,pr:v,pe:y,ps:b,pis:x,pie:S,bd:C,bdrs:w,bg:T,c:E,opacity:D,ff:k,fz:A,fw:j,lts:M,ta:N,lh:P,fs:F,tt:ee,td:te,w:I,miw:L,maw:ne,h:R,mih:re,mah:z,bgsz:ie,bgp:ae,bgr:oe,bga:B,pos:se,top:V,left:H,bottom:ce,right:U,inset:le,display:ue,flex:de,hiddenFrom:fe,visibleFrom:pe,lightHidden:me,darkHidden:he,sx:ge,..._e}=e;return{styleProps:O({m:t,mx:n,my:r,mt:i,mb:a,ml:o,mr:s,me:c,ms:l,mis:u,mie:d,p:f,px:p,py:m,pt:h,pb:g,pl:_,pr:v,pis:x,pie:S,pe:y,ps:b,bd:C,bg:T,c:E,opacity:D,ff:k,fz:A,fw:j,lts:M,ta:N,lh:P,fs:F,tt:ee,td:te,w:I,miw:L,maw:ne,h:R,mih:re,mah:z,bgsz:ie,bgp:ae,bgr:oe,bga:B,pos:se,top:V,left:H,bottom:ce,right:U,inset:le,display:ue,flex:de,bdrs:w,hiddenFrom:fe,visibleFrom:pe,lightHidden:me,darkHidden:he,sx:ge}),rest:_e}}var vt={m:{type:`spacing`,property:`margin`},mt:{type:`spacing`,property:`marginTop`},mb:{type:`spacing`,property:`marginBottom`},ml:{type:`spacing`,property:`marginLeft`},mr:{type:`spacing`,property:`marginRight`},ms:{type:`spacing`,property:`marginInlineStart`},me:{type:`spacing`,property:`marginInlineEnd`},mis:{type:`spacing`,property:`marginInlineStart`},mie:{type:`spacing`,property:`marginInlineEnd`},mx:{type:`spacing`,property:`marginInline`},my:{type:`spacing`,property:`marginBlock`},p:{type:`spacing`,property:`padding`},pt:{type:`spacing`,property:`paddingTop`},pb:{type:`spacing`,property:`paddingBottom`},pl:{type:`spacing`,property:`paddingLeft`},pr:{type:`spacing`,property:`paddingRight`},ps:{type:`spacing`,property:`paddingInlineStart`},pe:{type:`spacing`,property:`paddingInlineEnd`},pis:{type:`spacing`,property:`paddingInlineStart`},pie:{type:`spacing`,property:`paddingInlineEnd`},px:{type:`spacing`,property:`paddingInline`},py:{type:`spacing`,property:`paddingBlock`},bd:{type:`border`,property:`border`},bdrs:{type:`radius`,property:`borderRadius`},bg:{type:`color`,property:`background`},c:{type:`textColor`,property:`color`},opacity:{type:`identity`,property:`opacity`},ff:{type:`fontFamily`,property:`fontFamily`},fz:{type:`fontSize`,property:`fontSize`},fw:{type:`identity`,property:`fontWeight`},lts:{type:`size`,property:`letterSpacing`},ta:{type:`identity`,property:`textAlign`},lh:{type:`lineHeight`,property:`lineHeight`},fs:{type:`identity`,property:`fontStyle`},tt:{type:`identity`,property:`textTransform`},td:{type:`identity`,property:`textDecoration`},w:{type:`spacing`,property:`width`},miw:{type:`spacing`,property:`minWidth`},maw:{type:`spacing`,property:`maxWidth`},h:{type:`spacing`,property:`height`},mih:{type:`spacing`,property:`minHeight`},mah:{type:`spacing`,property:`maxHeight`},bgsz:{type:`size`,property:`backgroundSize`},bgp:{type:`identity`,property:`backgroundPosition`},bgr:{type:`identity`,property:`backgroundRepeat`},bga:{type:`identity`,property:`backgroundAttachment`},pos:{type:`identity`,property:`position`},top:{type:`size`,property:`top`},left:{type:`size`,property:`left`},bottom:{type:`size`,property:`bottom`},right:{type:`size`,property:`right`},inset:{type:`size`,property:`inset`},display:{type:`identity`,property:`display`},flex:{type:`identity`,property:`flex`}};function yt(e,t){let n=be({color:e,theme:t});return n.color===`dimmed`?`var(--mantine-color-dimmed)`:n.color===`bright`?`var(--mantine-color-bright)`:n.variable?`var(${n.variable})`:n.color}function bt(e,t){let n=be({color:e,theme:t});return n.isThemeColor&&n.shade===void 0?`var(--mantine-color-${n.color}-text)`:yt(e,t)}function xt(e,t){if(typeof e==`number`)return E(e);if(typeof e==`string`){let[n,r,...i]=e.split(` `).filter(e=>e.trim()!==``),a=`${E(n)}`;return r&&(a+=` ${r}`),i.length>0&&(a+=` ${yt(i.join(` `),t)}`),a.trim()}return e}var St={text:`var(--mantine-font-family)`,mono:`var(--mantine-font-family-monospace)`,monospace:`var(--mantine-font-family-monospace)`,heading:`var(--mantine-font-family-headings)`,headings:`var(--mantine-font-family-headings)`};function Ct(e){return typeof e==`string`&&e in St?St[e]:e}var wt=[`h1`,`h2`,`h3`,`h4`,`h5`,`h6`];function Tt(e,t){return typeof e==`string`&&e in t.fontSizes?`var(--mantine-font-size-${e})`:typeof e==`string`&&wt.includes(e)?`var(--mantine-${e}-font-size)`:typeof e==`number`||typeof e==`string`?E(e):e}function Et(e){return e}var Dt=[`h1`,`h2`,`h3`,`h4`,`h5`,`h6`];function Ot(e,t){return typeof e==`string`&&e in t.lineHeights?`var(--mantine-line-height-${e})`:typeof e==`string`&&Dt.includes(e)?`var(--mantine-${e}-line-height)`:e}function kt(e,t){return typeof e==`string`&&e in t.radius?`var(--mantine-radius-${e})`:typeof e==`number`||typeof e==`string`?E(e):e}function At(e){return typeof e==`number`?E(e):e}function jt(e,t){if(typeof e==`number`)return E(e);if(typeof e==`string`){let n=e.replace(`-`,``);if(!(n in t.spacing))return E(e);let r=`--mantine-spacing-${n}`;return e.startsWith(`-`)?`calc(var(${r}) * -1)`:`var(${r})`}return e}var Mt={color:yt,textColor:bt,fontSize:Tt,spacing:jt,radius:kt,identity:Et,size:At,lineHeight:Ot,fontFamily:Ct,border:xt};function Nt(e){return e.replace(`(min-width: `,``).replace(`em)`,``)}function Pt({media:e,...t}){let n=Object.keys(e).sort((e,t)=>Number(Nt(e))-Number(Nt(t))).map(t=>({query:t,styles:e[t]}));return{...t,media:n}}function Ft(e){if(typeof e!=`object`||!e)return!1;let t=Object.keys(e);return t.length!==1||t[0]!==`base`}function It(e){return typeof e==`object`&&e?`base`in e?e.base:void 0:e}function Lt(e){return typeof e==`object`&&e?b(e).filter(e=>e!==`base`):[]}function Rt(e,t){return typeof e==`object`&&e&&t in e?e[t]:e}function zt({styleProps:e,data:t,theme:n}){return Pt(b(e).reduce((r,i)=>{if(i===`hiddenFrom`||i===`visibleFrom`||i===`sx`)return r;let a=t[i],o=Array.isArray(a.property)?a.property:[a.property],s=It(e[i]);if(!Ft(e[i]))return o.forEach(e=>{r.inlineStyles[e]=Mt[a.type](s,n)}),r;r.hasResponsiveStyles=!0;let c=Lt(e[i]);return o.forEach(t=>{s!=null&&(r.styles[t]=Mt[a.type](s,n)),c.forEach(o=>{let s=`(min-width: ${n.breakpoints[o]})`;r.media[s]={...r.media[s],[t]:Mt[a.type](Rt(e[i],o),n)}})}),r},{hasResponsiveStyles:!1,styles:{},inlineStyles:{},media:{}}))}function Bt(){return`__m__-${(0,g.useId)().replace(/[:«»]/g,``)}`}function Vt(e){return e}var Ht=Vt;function Ut(e){return e}function J(e){let t=e;return t.extend=Ut,t.withProps=e=>{let n=n=>(0,y.jsx)(t,{...e,...n});return n.extend=t.extend,n.displayName=`WithProps(${t.displayName})`,n},t}function Wt(e){return J(e)}function Y(e){let t=e;return t.withProps=e=>{let n=n=>(0,y.jsx)(t,{...e,...n});return n.extend=t.extend,n.displayName=`WithProps(${t.displayName})`,n},t.extend=Ut,t}function Gt(e){return`data-${(e.startsWith(`data-`)?e.slice(5):e).replace(/([a-z])([A-Z])/g,`$1-$2`).toLowerCase()}`}function Kt(e){return Object.keys(e).reduce((t,n)=>{let r=e[n];return r===void 0||r===``||r===!1||r===null||(t[Gt(n)]=e[n]),t},{})}function qt(e){return e?typeof e==`string`?{[Gt(e)]:!0}:Array.isArray(e)?[...e].reduce((e,t)=>({...e,...qt(t)}),{}):Kt(e):null}function Jt(e,t){return Array.isArray(e)?[...e].reduce((e,n)=>({...e,...Jt(n,t)}),{}):typeof e==`function`?e(t):e??{}}function Yt({theme:e,style:t,vars:n,styleProps:r}){let i=Jt(t,e),a=Jt(n,e);return{...i,...a,...r}}function Xt({component:e,style:t,__vars:n,className:r,variant:i,mod:a,size:o,hiddenFrom:s,visibleFrom:c,lightHidden:l,darkHidden:u,renderRoot:d,__size:f,ref:p,...m}){let h=qe(),g=e||`div`,{styleProps:_,rest:v}=_t(m),b=Ne()?.()?.(_.sx),x=Bt(),S=zt({styleProps:_,theme:h,data:vt}),C=Ie(),w=C&&S.hasResponsiveStyles?gt(S.styles,S.media):x,T={ref:p,style:Yt({theme:h,style:t,vars:n,styleProps:S.inlineStyles}),className:V(r,b,{[w]:S.hasResponsiveStyles,"mantine-light-hidden":l,"mantine-dark-hidden":u,[`mantine-hidden-from-${s}`]:s,[`mantine-visible-from-${c}`]:c}),"data-variant":i,"data-size":k(o)?void 0:o||void 0,size:f,...qt(a),...v};return(0,y.jsxs)(y.Fragment,{children:[S.hasResponsiveStyles&&(0,y.jsx)(mt,{selector:`.${w}`,styles:S.styles,media:S.media,deduplicate:C}),typeof d==`function`?d(T):(0,y.jsx)(g,{...T})]})}Xt.displayName=`@mantine/core/Box`;var X=Ht(Xt),Zt={root:`m_87cf2631`},Qt={__staticSelector:`UnstyledButton`},$t=Y(e=>{let t=K(`UnstyledButton`,Qt,e),{className:n,component:r=`button`,__staticSelector:i,unstyled:a,classNames:o,styles:s,style:c,attributes:l,...u}=t,d=q({name:i,props:t,classes:Zt,className:n,style:c,classNames:o,styles:s,unstyled:a,attributes:l});return(0,y.jsx)(X,{...d(`root`,{focusable:!0}),component:r,type:r===`button`?`button`:void 0,...u})});$t.classes=Zt,$t.displayName=`@mantine/core/UnstyledButton`;var en={root:`m_1b7284a3`},tn=B((e,{radius:t,shadow:n})=>({root:{"--paper-radius":t===void 0?void 0:M(t),"--paper-shadow":F(n)}})),nn=Y(e=>{let t=K(`Paper`,null,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,withBorder:s,vars:c,radius:l,shadow:u,variant:d,mod:f,attributes:p,...m}=t,h=q({name:`Paper`,props:t,classes:en,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:p,vars:c,varsResolver:tn});return(0,y.jsx)(X,{mod:[{withBorder:s},f],...h(`root`),variant:d,...m})});nn.classes=en,nn.varsResolver=tn,nn.displayName=`@mantine/core/Paper`;var rn=e=>({in:{opacity:1,transform:`scale(1)`},out:{opacity:0,transform:`scale(.9) translateY(${e===`bottom`?10:-10}px)`},transitionProperty:`transform, opacity`}),an={fade:{in:{opacity:1},out:{opacity:0},transitionProperty:`opacity`},"fade-up":{in:{opacity:1,transform:`translateY(0)`},out:{opacity:0,transform:`translateY(30px)`},transitionProperty:`opacity, transform`},"fade-down":{in:{opacity:1,transform:`translateY(0)`},out:{opacity:0,transform:`translateY(-30px)`},transitionProperty:`opacity, transform`},"fade-left":{in:{opacity:1,transform:`translateX(0)`},out:{opacity:0,transform:`translateX(30px)`},transitionProperty:`opacity, transform`},"fade-right":{in:{opacity:1,transform:`translateX(0)`},out:{opacity:0,transform:`translateX(-30px)`},transitionProperty:`opacity, transform`},scale:{in:{opacity:1,transform:`scale(1)`},out:{opacity:0,transform:`scale(0)`},common:{transformOrigin:`top`},transitionProperty:`transform, opacity`},"scale-y":{in:{opacity:1,transform:`scaleY(1)`},out:{opacity:0,transform:`scaleY(0)`},common:{transformOrigin:`top`},transitionProperty:`transform, opacity`},"scale-x":{in:{opacity:1,transform:`scaleX(1)`},out:{opacity:0,transform:`scaleX(0)`},common:{transformOrigin:`left`},transitionProperty:`transform, opacity`},"skew-up":{in:{opacity:1,transform:`translateY(0) skew(0deg, 0deg)`},out:{opacity:0,transform:`translateY(-20px) skew(-10deg, -5deg)`},common:{transformOrigin:`top`},transitionProperty:`transform, opacity`},"skew-down":{in:{opacity:1,transform:`translateY(0) skew(0deg, 0deg)`},out:{opacity:0,transform:`translateY(20px) skew(-10deg, -5deg)`},common:{transformOrigin:`bottom`},transitionProperty:`transform, opacity`},"rotate-left":{in:{opacity:1,transform:`translateY(0) rotate(0deg)`},out:{opacity:0,transform:`translateY(20px) rotate(-5deg)`},common:{transformOrigin:`bottom`},transitionProperty:`transform, opacity`},"rotate-right":{in:{opacity:1,transform:`translateY(0) rotate(0deg)`},out:{opacity:0,transform:`translateY(20px) rotate(5deg)`},common:{transformOrigin:`top`},transitionProperty:`transform, opacity`},"slide-down":{in:{opacity:1,transform:`translateY(0)`},out:{opacity:0,transform:`translateY(-100%)`},common:{transformOrigin:`top`},transitionProperty:`transform, opacity`},"slide-up":{in:{opacity:1,transform:`translateY(0)`},out:{opacity:0,transform:`translateY(100%)`},common:{transformOrigin:`bottom`},transitionProperty:`transform, opacity`},"slide-left":{in:{opacity:1,transform:`translateX(0)`},out:{opacity:0,transform:`translateX(100%)`},common:{transformOrigin:`left`},transitionProperty:`transform, opacity`},"slide-right":{in:{opacity:1,transform:`translateX(0)`},out:{opacity:0,transform:`translateX(-100%)`},common:{transformOrigin:`right`},transitionProperty:`transform, opacity`},pop:{...rn(`bottom`),common:{transformOrigin:`center center`}},"pop-bottom-left":{...rn(`bottom`),common:{transformOrigin:`bottom left`}},"pop-bottom-right":{...rn(`bottom`),common:{transformOrigin:`bottom right`}},"pop-top-left":{...rn(`top`),common:{transformOrigin:`top left`}},"pop-top-right":{...rn(`top`),common:{transformOrigin:`top right`}}},on={entering:`in`,entered:`in`,exiting:`out`,exited:`out`,"pre-exiting":`out`,"pre-entering":`out`};function sn({transition:e,state:t,duration:n,timingFunction:r}){let i={WebkitBackfaceVisibility:`hidden`,transitionDuration:`${n}ms`,transitionTimingFunction:r};return typeof e==`string`?e in an?{transitionProperty:an[e].transitionProperty,...i,...an[e].common,...an[e][on[t]]}:{}:{transitionProperty:e.transitionProperty,...i,...e.common,...e[on[t]]}}var cn=l(p(),1);function ln({duration:e,exitDuration:t,timingFunction:n,mounted:r,onEnter:i,onExit:a,onEntered:o,onExited:s,enterDelay:c,exitDelay:l}){let u=qe(),d=oe(),f=u.respectReducedMotion?d:!1,[p,m]=(0,g.useState)(f?0:e),[h,_]=(0,g.useState)(r?`entered`:`exited`),v=(0,g.useRef)(-1),y=(0,g.useRef)(-1),b=(0,g.useRef)(-1);function x(){window.clearTimeout(v.current),window.clearTimeout(y.current),cancelAnimationFrame(b.current)}let S=n=>{x();let r=n?i:a,c=n?o:s,l=f?0:n?e:t;m(l),l===0?(typeof r==`function`&&r(),typeof c==`function`&&c(),_(n?`entered`:`exited`)):b.current=requestAnimationFrame(()=>{cn.flushSync(()=>{_(n?`pre-entering`:`pre-exiting`)}),b.current=requestAnimationFrame(()=>{typeof r==`function`&&r(),_(n?`entering`:`exiting`),v.current=window.setTimeout(()=>{typeof c==`function`&&c(),_(n?`entered`:`exited`)},l)})})},C=e=>{if(x(),typeof(e?c:l)!=`number`){S(e);return}y.current=window.setTimeout(()=>{S(e)},e?c:l)};return R(()=>{C(r)},[r]),(0,g.useEffect)(()=>()=>{x()},[]),{transitionDuration:p,transitionStatus:h,transitionTimingFunction:n||`ease`}}function un({keepMounted:e,keepMountedMode:t=`activity`,transition:n=`fade`,duration:r=250,exitDuration:i=r,mounted:a,children:o,timingFunction:s=`ease`,onExit:c,onEntered:l,onEnter:u,onExited:d,enterDelay:f,exitDelay:p}){let m=Fe(),{transitionDuration:h,transitionStatus:_,transitionTimingFunction:v}=ln({mounted:a,exitDuration:i,duration:r,timingFunction:s,onExit:c,onEntered:l,onEnter:u,onExited:d,enterDelay:f,exitDelay:p});if(m===`test`)return a?(0,y.jsx)(y.Fragment,{children:o({})}):e?o({display:`none`}):null;if(h===0)return e?t===`display-none`?a?(0,y.jsx)(y.Fragment,{children:o({})}):o({display:`none`}):(0,y.jsx)(g.Activity,{mode:a?`visible`:`hidden`,children:o({})}):a?(0,y.jsx)(y.Fragment,{children:o({})}):null;let b=_===`exited`;if(e){let e=o(b?t===`display-none`?{display:`none`}:{}:sn({transition:n,duration:h,state:_,timingFunction:v}));return t===`display-none`?e:(0,y.jsx)(g.Activity,{mode:b?`hidden`:`visible`,children:e})}return b?null:(0,y.jsx)(y.Fragment,{children:o(sn({transition:n,duration:h,state:_,timingFunction:v}))})}un.displayName=`@mantine/core/Transition`;var Z={root:`m_5ae2e3c`,barsLoader:`m_7a2bd4cd`,bar:`m_870bb79`,"bars-loader-animation":`m_5d2b3b9d`,dotsLoader:`m_4e3f22d7`,dot:`m_870c4af`,"loader-dots-animation":`m_aac34a1`,ovalLoader:`m_b34414df`,"oval-loader-animation":`m_f8e89c4b`},dn=({className:e,...t})=>(0,y.jsxs)(X,{component:`span`,className:V(Z.barsLoader,e),...t,children:[(0,y.jsx)(`span`,{className:Z.bar}),(0,y.jsx)(`span`,{className:Z.bar}),(0,y.jsx)(`span`,{className:Z.bar})]});dn.displayName=`@mantine/core/Bars`;var fn=({className:e,...t})=>(0,y.jsxs)(X,{component:`span`,className:V(Z.dotsLoader,e),...t,children:[(0,y.jsx)(`span`,{className:Z.dot}),(0,y.jsx)(`span`,{className:Z.dot}),(0,y.jsx)(`span`,{className:Z.dot})]});fn.displayName=`@mantine/core/Dots`;var pn=({className:e,...t})=>(0,y.jsx)(X,{component:`span`,className:V(Z.ovalLoader,e),...t});pn.displayName=`@mantine/core/Oval`;var mn={bars:dn,oval:pn,dots:fn},hn={loaders:mn,type:`oval`},gn=B((e,{size:t,color:n})=>({root:{"--loader-size":A(t,`loader-size`),"--loader-color":n?xe(n,e):void 0}})),_n=J(e=>{let t=K(`Loader`,hn,e),{size:n,color:r,type:i,vars:a,className:o,style:s,classNames:c,styles:l,unstyled:u,loaders:d,variant:f,children:p,attributes:m,...h}=t,g=q({name:`Loader`,props:t,classes:Z,className:o,style:s,classNames:c,styles:l,unstyled:u,attributes:m,vars:a,varsResolver:gn});return p?(0,y.jsx)(X,{...g(`root`),...h,children:p}):(0,y.jsx)(X,{...g(`root`),component:d[i],variant:f,size:n,...h})});_n.defaultLoaders=mn,_n.classes=Z,_n.varsResolver=gn,_n.displayName=`@mantine/core/Loader`;function vn({size:e=`var(--cb-icon-size, 70%)`,style:t,...n}){return(0,y.jsx)(`svg`,{viewBox:`0 0 15 15`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,style:{...t,width:e,height:e},...n,children:(0,y.jsx)(`path`,{d:`M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z`,fill:`currentColor`,fillRule:`evenodd`,clipRule:`evenodd`})})}vn.displayName=`@mantine/core/CloseIcon`;var yn={root:`m_86a44da5`,"root--subtle":`m_220c80f2`},bn={variant:`subtle`},xn=B((e,{size:t,radius:n,iconSize:r})=>({root:{"--cb-size":A(t,`cb-size`),"--cb-radius":n===void 0?void 0:M(n),"--cb-icon-size":E(r)}})),Sn=Y(e=>{let t=K(`CloseButton`,bn,e),{iconSize:n,children:r,vars:i,radius:a,className:o,classNames:s,style:c,styles:l,unstyled:u,"data-disabled":d,disabled:f,variant:p,icon:m,mod:h,attributes:g,__staticSelector:_,...v}=t,b=q({name:_||`CloseButton`,props:t,className:o,style:c,classes:yn,classNames:s,styles:l,unstyled:u,attributes:g,vars:i,varsResolver:xn});return(0,y.jsxs)($t,{...v,unstyled:u,variant:p,disabled:f,mod:[{disabled:f||d},h],...b(`root`,{variant:p,active:!f&&!d}),children:[m||(0,y.jsx)(vn,{}),r]})});Sn.classes=yn,Sn.varsResolver=xn,Sn.displayName=`@mantine/core/CloseButton`;function Cn(e){return g.Children.toArray(e).filter(Boolean)}var wn={root:`m_4081bf90`},Tn={preventGrowOverflow:!0,gap:`md`,align:`center`,justify:`flex-start`,wrap:`wrap`},En=B((e,{grow:t,preventGrowOverflow:n,gap:r,align:i,justify:a,wrap:o},{childWidth:s})=>({root:{"--group-child-width":t&&n?s:void 0,"--group-gap":j(r),"--group-align":i,"--group-justify":a,"--group-wrap":o}})),Dn=J(e=>{let t=K(`Group`,Tn,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,children:s,gap:c,align:l,justify:u,wrap:d,grow:f,preventGrowOverflow:p,vars:m,variant:h,__size:g,mod:_,attributes:v,...b}=t,x=Cn(s),S=x.length,C=j(c??`md`),w=q({name:`Group`,props:t,stylesCtx:{childWidth:`calc(${100/S}% - (${C} - ${C} / ${S}))`},className:r,style:i,classes:wn,classNames:n,styles:a,unstyled:o,attributes:v,vars:m,varsResolver:En});return(0,y.jsx)(X,{...w(`root`),variant:h,mod:[{grow:f},_],size:g,...b,children:x})});Dn.classes=wn,Dn.varsResolver=En,Dn.displayName=`@mantine/core/Group`;var On=(0,g.createContext)({size:`sm`}),kn=J(e=>{let t=K(`InputClearButton`,null,e),{size:n,variant:r,vars:i,classNames:a,styles:o,...s}=t,c=(0,g.use)(On),{resolvedClassNames:l,resolvedStyles:u}=Ye({classNames:a,styles:o,props:t});return(0,y.jsx)(Sn,{variant:r||`transparent`,size:n||c?.size||`sm`,classNames:l,styles:u,__staticSelector:`InputClearButton`,style:{pointerEvents:`all`,background:`var(--input-bg)`,...s.style},...s})});kn.displayName=`@mantine/core/InputClearButton`;var An={xs:7,sm:8,md:10,lg:12,xl:15};function jn({__clearable:e,__clearSection:t,rightSection:n,__defaultRightSection:r,size:i=`sm`,__clearSectionMode:a=`both`}){let o=e&&t;return a===`rightSection`?n===null?null:n||r:a===`clear`?n===null?null:o||r:o&&(n||r)?(0,y.jsxs)(`div`,{"data-combined-clear-section":!0,style:{display:`flex`,gap:2,alignItems:`center`,paddingInlineEnd:An[i]},children:[o,n||r]}):n===null?null:n||o||r}var Mn=(0,g.createContext)({offsetBottom:!1,offsetTop:!1,describedBy:void 0,getStyles:null,inputId:void 0,labelId:void 0}),Q={wrapper:`m_6c018570`,input:`m_8fb7ebe7`,bottomSection:`m_93f4ed57`,section:`m_82577fc2`,placeholder:`m_88bacfd0`,root:`m_46b77525`,label:`m_8fdc1311`,required:`m_78a94662`,error:`m_8f816625`,success:`m_9d9d40e0`,description:`m_fe47ce59`},Nn=B((e,{size:t})=>({description:{"--input-description-size":t===void 0?void 0:`calc(${N(t)} - ${E(2)})`}})),Pn=J(e=>{let t=K(`InputDescription`,null,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,__staticSelector:c,__inheritStyles:l=!0,attributes:u,...d}=K(`InputDescription`,null,t),f=(0,g.use)(Mn),p=q({name:[`InputWrapper`,c],props:t,classes:Q,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:u,rootSelector:`description`,vars:s,varsResolver:Nn}),m=l&&f?.getStyles||p;return(0,y.jsx)(X,{component:`p`,...m(`description`,f?.getStyles?{className:r,style:i}:void 0),...d})});Pn.classes=Q,Pn.varsResolver=Nn,Pn.displayName=`@mantine/core/InputDescription`;var Fn=B((e,{size:t})=>({error:{"--input-error-size":t===void 0?void 0:`calc(${N(t)} - ${E(2)})`}})),In=J(e=>{let t=K(`InputError`,null,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,attributes:c,__staticSelector:l,__inheritStyles:u=!0,...d}=t,f=q({name:[`InputWrapper`,l],props:t,classes:Q,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:c,rootSelector:`error`,vars:s,varsResolver:Fn}),p=(0,g.use)(Mn),m=u&&p?.getStyles||f;return(0,y.jsx)(X,{component:`p`,...m(`error`,p?.getStyles?{className:r,style:i}:void 0),...d})});In.classes=Q,In.varsResolver=Fn,In.displayName=`@mantine/core/InputError`;var Ln={labelElement:`label`},Rn=B((e,{size:t})=>({label:{"--input-label-size":N(t),"--input-asterisk-color":void 0}})),zn=J(e=>{let t=K(`InputLabel`,Ln,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,labelElement:c,required:l,htmlFor:u,onMouseDown:d,children:f,__staticSelector:p,mod:m,attributes:h,..._}=t,v=q({name:[`InputWrapper`,p],props:t,classes:Q,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:h,rootSelector:`label`,vars:s,varsResolver:Rn}),b=(0,g.use)(Mn),x=b?.getStyles||v,S=_.component||c,C=typeof S!=`string`||S===`label`;return(0,y.jsxs)(X,{...x(`label`,b?.getStyles?{className:r,style:i}:void 0),component:c,htmlFor:C?u:void 0,mod:[{required:l},m],onMouseDown:e=>{d?.(e),!e.defaultPrevented&&e.detail>1&&e.preventDefault()},..._,children:[f,l&&(0,y.jsx)(`span`,{...x(`required`),"aria-hidden":!0,children:` *`})]})});zn.classes=Q,zn.varsResolver=Rn,zn.displayName=`@mantine/core/InputLabel`;var Bn=J(e=>{let t=K(`InputPlaceholder`,null,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,__staticSelector:c,error:l,mod:u,attributes:d,...f}=t,p=q({name:[`InputPlaceholder`,c],props:t,classes:Q,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:d,rootSelector:`placeholder`});return(0,y.jsx)(X,{...p(`placeholder`),mod:[{error:!!l},u],component:`span`,...f})});Bn.classes=Q,Bn.displayName=`@mantine/core/InputPlaceholder`;var Vn=B((e,{size:t})=>({success:{"--input-success-size":t===void 0?void 0:`calc(${N(t)} - ${E(2)})`}})),Hn=J(e=>{let t=K(`InputSuccess`,null,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,attributes:c,__staticSelector:l,__inheritStyles:u=!0,...d}=t,f=q({name:[`InputWrapper`,l],props:t,classes:Q,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:c,rootSelector:`success`,vars:s,varsResolver:Vn}),p=(0,g.use)(Mn),m=u&&p?.getStyles||f;return(0,y.jsx)(X,{component:`p`,...m(`success`,p?.getStyles?{className:r,style:i}:void 0),...d})});Hn.classes=Q,Hn.varsResolver=Vn,Hn.displayName=`@mantine/core/InputSuccess`;function Un(e,{hasDescription:t,hasError:n}){let r=e.findIndex(e=>e===`input`),i=e.slice(0,r),a=e.slice(r+1),o=t&&i.includes(`description`)||n&&i.includes(`error`);return{offsetBottom:t&&a.includes(`description`)||n&&a.includes(`error`),offsetTop:o}}var Wn={labelElement:`label`,inputContainer:e=>e,inputWrapperOrder:[`label`,`description`,`input`,`error`]},Gn=B((e,{size:t})=>({label:{"--input-label-size":N(t),"--input-asterisk-color":void 0},error:{"--input-error-size":t===void 0?void 0:`calc(${N(t)} - ${E(2)})`},success:{"--input-success-size":t===void 0?void 0:`calc(${N(t)} - ${E(2)})`},description:{"--input-description-size":t===void 0?void 0:`calc(${N(t)} - ${E(2)})`}})),Kn=J(e=>{let t=K(`InputWrapper`,Wn,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,size:c,variant:l,__staticSelector:u,inputContainer:d,inputWrapperOrder:f,label:p,error:m,success:h,description:_,labelProps:v,descriptionProps:b,errorProps:x,successProps:S,labelElement:C,children:w,withAsterisk:T,id:E,required:D,__stylesApiProps:O,mod:k,attributes:A,...j}=t,M=q({name:[`InputWrapper`,u],props:O||t,classes:Q,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:A,vars:s,varsResolver:Gn}),N={size:c,variant:l,__staticSelector:u},P=re(E),F=typeof T==`boolean`?T:D,ee=x?.id||`${P}-error`,te=S?.id||`${P}-success`,I=b?.id||`${P}-description`,L=P,ne=!!m&&typeof m!=`boolean`,R=!!h&&typeof h!=`boolean`&&!m,z=!!_,ie=ne&&f.includes(`error`),ae=R&&f.includes(`error`),oe=z&&f.includes(`description`),B=`${ie?ee:``} ${ae?te:``} ${oe?I:``}`,se=B.trim().length>0?B.trim():void 0,V=v?.id||`${P}-label`,H=p&&(0,y.jsx)(zn,{labelElement:C,id:V,htmlFor:L,required:F,...N,...v,children:p},`label`),ce=z&&(0,y.jsx)(Pn,{...b,...N,size:b?.size||N.size,id:b?.id||I,children:_},`description`),U=(0,y.jsx)(g.Fragment,{children:d(w)},`input`),le=ne&&(0,g.createElement)(In,{...x,...N,size:x?.size||N.size,key:`error`,id:x?.id||ee},m),ue=R&&(0,g.createElement)(Hn,{...S,...N,size:S?.size||N.size,key:`success`,id:S?.id||te},h),de=f.map(e=>{switch(e){case`label`:return H;case`input`:return U;case`description`:return ce;case`error`:return le||ue;default:return null}});return(0,y.jsx)(Mn,{value:{getStyles:M,describedBy:se,inputId:L,labelId:H&&f.includes(`label`)?V:void 0,...Un(f,{hasDescription:z,hasError:ne||R})},children:(0,y.jsx)(X,{variant:l,size:c,mod:[{error:!!m,success:!!h&&!m},k],id:C===`label`?void 0:E,...M(`root`),...j,children:de})})});Kn.classes=Q,Kn.varsResolver=Gn,Kn.displayName=`@mantine/core/InputWrapper`;var qn={variant:`default`,leftSectionPointerEvents:`none`,rightSectionPointerEvents:`none`,withAria:!0,withErrorStyles:!0,withSuccessStyles:!0,size:`sm`,loading:!1,loadingPosition:`right`},Jn=B((e,t,n)=>({wrapper:{"--input-margin-top":n.offsetTop?`calc(var(--mantine-spacing-xs) / 2)`:void 0,"--input-margin-bottom":n.offsetBottom?`calc(var(--mantine-spacing-xs) / 2)`:void 0,"--input-height":A(t.size,`input-height`),"--input-fz":N(t.size),"--input-radius":t.radius===void 0?void 0:M(t.radius),"--input-left-section-width":t.leftSectionWidth===void 0?void 0:E(t.leftSectionWidth),"--input-right-section-width":t.rightSectionWidth===void 0?void 0:E(t.rightSectionWidth),"--input-padding-y":t.multiline?A(t.size,`input-padding-y`):void 0,"--input-left-section-pointer-events":t.leftSectionPointerEvents,"--input-right-section-pointer-events":t.rightSectionPointerEvents}})),$=Y(e=>{let t=K(`Input`,qn,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,required:s,__staticSelector:c,__stylesApiProps:l,size:u,wrapperProps:d,error:f,success:p,disabled:m,leftSection:h,leftSectionProps:_,leftSectionWidth:v,rightSection:b,rightSectionProps:x,rightSectionWidth:S,rightSectionPointerEvents:C,leftSectionPointerEvents:w,variant:T,vars:E,pointer:D,multiline:O,radius:k,id:A,withAria:j,withErrorStyles:M,withSuccessStyles:N,mod:P,inputSize:F,attributes:ee,__clearSection:te,__clearable:I,__clearSectionMode:L,__defaultRightSection:ne,loading:R,loadingPosition:re,__bottomSection:z,__bottomSectionProps:ie,rootRef:ae,dir:oe,...B}=t,{styleProps:se,rest:V}=_t(B),H=(0,g.use)(Mn),ce={offsetBottom:H?.offsetBottom,offsetTop:H?.offsetTop},U=q({name:[`Input`,c],props:l||t,classes:Q,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:ee,stylesCtx:ce,rootSelector:`wrapper`,vars:E,varsResolver:Jn}),le=j?{required:s,disabled:m,"aria-invalid":f?!0:void 0,"aria-describedby":H?.describedBy,id:H?.inputId||A}:{},ue=R?(0,y.jsx)(_n,{size:re===`left`?`calc(var(--input-left-section-size) / 2)`:`calc(var(--input-right-section-size) / 2)`}):null,de=R&&re===`left`?ue:h,fe=jn({__clearable:I,__clearSection:te,rightSection:R&&re===`right`?ue:b,__defaultRightSection:ne,size:u,__clearSectionMode:L});return(0,y.jsx)(On,{value:{size:u||`sm`},children:(0,y.jsxs)(X,{ref:ae,dir:oe,...U(`wrapper`),...se,...d,mod:[{error:!!f&&M,success:!!p&&!f&&N,pointer:D,disabled:m,multiline:O,withRightSection:!!fe,withLeftSection:!!de,withBottomSection:!!z},P],variant:T,size:u,children:[de&&(0,y.jsx)(`div`,{..._,"data-position":`left`,...U(`section`,{className:_?.className,style:_?.style}),children:de}),(0,y.jsx)(X,{component:`input`,...V,...le,required:s,mod:{disabled:m,error:!!f&&M,success:!!p&&!f&&N},variant:T,__size:F,...U(`input`)}),z&&(0,y.jsx)(`div`,{...ie,...U(`bottomSection`,{className:ie?.className,style:ie?.style}),children:z}),fe&&(0,y.jsx)(`div`,{...x,"data-position":`right`,...U(`section`,{className:x?.className,style:x?.style}),children:fe})]})})});$.classes=Q,$.varsResolver=Jn,$.Wrapper=Kn,$.Label=zn,$.Error=In,$.Success=Hn,$.Description=Pn,$.Placeholder=Bn,$.ClearButton=kn,$.displayName=`@mantine/core/Input`;function Yn(e,t,n){let r=K([`Input`,`InputWrapper`,e],t,n),{label:i,description:a,error:o,success:s,required:c,classNames:l,styles:u,className:d,unstyled:f,__staticSelector:p,__stylesApiProps:m,errorProps:h,successProps:g,labelProps:_,descriptionProps:v,wrapperProps:y,id:b,size:x,style:S,inputContainer:C,inputWrapperOrder:w,withAsterisk:T,variant:E,vars:D,mod:O,attributes:k,...A}=r,{styleProps:j,rest:M}=_t(A),N={label:i,description:a,error:o,success:s,required:c,classNames:l,className:d,__staticSelector:p,__stylesApiProps:m||r,errorProps:h,successProps:g,labelProps:_,descriptionProps:v,unstyled:f,styles:u,size:x,style:S,inputContainer:C,inputWrapperOrder:w,withAsterisk:T,variant:E,id:b,mod:O,attributes:k,...y};return{...M,classNames:l,styles:u,unstyled:f,wrapperProps:{...N,...j},inputProps:{required:c,classNames:l,styles:u,unstyled:f,size:x,__staticSelector:p,__stylesApiProps:m||r,error:o,success:s,variant:E,id:b,attributes:k}}}var Xn={__staticSelector:`InputBase`,withAria:!0,size:`sm`},Zn=Y(e=>{let{inputProps:t,wrapperProps:n,...r}=Yn(`InputBase`,Xn,e);return(0,y.jsx)($.Wrapper,{...n,children:(0,y.jsx)($,{...t,...r})})});Zn.classes={...$.classes,...$.Wrapper.classes},Zn.displayName=`@mantine/core/InputBase`;var Qn={root:`m_66836ed3`,wrapper:`m_a5d60502`,body:`m_667c2793`,title:`m_6a03f287`,label:`m_698f4f23`,icon:`m_667f2a6a`,message:`m_7fa78076`,closeButton:`m_87f54839`},$n=B((e,{radius:t,color:n,variant:r,autoContrast:i})=>{let a=e.variantColorResolver({color:n||e.primaryColor,theme:e,variant:r||`light`,autoContrast:i});return{root:{"--alert-radius":t===void 0?void 0:M(t),"--alert-bg":n||r?a.background:void 0,"--alert-color":a.color,"--alert-bd":n||r?a.border:void 0}}}),er=J(e=>{let t=K(`Alert`,null,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,radius:c,color:l,title:u,children:d,id:f,icon:p,withCloseButton:m,onClose:h,closeButtonLabel:g,variant:_,autoContrast:v,role:b,attributes:x,...S}=t,C=q({name:`Alert`,classes:Qn,props:t,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:x,vars:s,varsResolver:$n}),w=re(f),T=u&&`${w}-title`||void 0,E=`${w}-body`;return(0,y.jsx)(X,{id:w,...C(`root`,{variant:_}),variant:_,...S,role:b||`alert`,"aria-describedby":d?E:void 0,"aria-labelledby":u?T:void 0,children:(0,y.jsxs)(`div`,{...C(`wrapper`),children:[p&&(0,y.jsx)(`div`,{...C(`icon`),children:p}),(0,y.jsxs)(`div`,{...C(`body`),children:[u&&(0,y.jsx)(`div`,{...C(`title`),"data-with-close-button":m||void 0,children:(0,y.jsx)(`span`,{id:T,...C(`label`),children:u})}),d&&(0,y.jsx)(`div`,{id:E,...C(`message`),"data-variant":_,children:d})]}),m&&(0,y.jsx)(Sn,{...C(`closeButton`),onClick:h,variant:`transparent`,size:16,iconSize:16,"aria-label":g,unstyled:o})]})})});er.classes=Qn,er.varsResolver=$n,er.displayName=`@mantine/core/Alert`;var tr={root:`m_b6d8b162`};function nr(e){if(e===`start`)return`start`;if(e===`end`||e)return`end`}var rr={inherit:!1},ir=B((e,{variant:t,lineClamp:n,gradient:r,size:i,textWrap:a})=>({root:{"--text-fz":N(i),"--text-lh":P(i),"--text-gradient":t===`gradient`?we(r,e):void 0,"--text-line-clamp":typeof n==`number`?n.toString():void 0,"--text-text-wrap":a}})),ar=Y(e=>{let t=K(`Text`,rr,e),{lineClamp:n,truncate:r,inline:i,inherit:a,gradient:o,span:s,textWrap:c,__staticSelector:l,vars:u,className:d,style:f,classNames:p,styles:m,unstyled:h,variant:g,mod:_,size:v,attributes:b,...x}=t,S=q({name:[`Text`,l],props:t,classes:tr,className:d,style:f,classNames:p,styles:m,unstyled:h,attributes:b,vars:u,varsResolver:ir});return(0,y.jsx)(X,{...S(`root`,{focusable:!0}),component:s?`span`:`p`,variant:g,mod:[{truncate:nr(r),lineClamp:typeof n==`number`,inline:i,inherit:a},_],size:v,...x})});ar.classes=tr,ar.varsResolver=ir,ar.displayName=`@mantine/core/Text`;var or={root:`m_77c9d27d`,inner:`m_80f1301b`,label:`m_811560b9`,section:`m_a74036a`,loader:`m_a25b86ee`,group:`m_80d6d844`,groupSection:`m_70be2a01`},sr={orientation:`horizontal`},cr=B((e,{borderWidth:t})=>({group:{"--button-border-width":E(t)}})),lr=J(e=>{let t=K(`ButtonGroup`,sr,e),{className:n,style:r,classNames:i,styles:a,unstyled:o,orientation:s,vars:c,borderWidth:l,mod:u,attributes:d,...f}=K(`ButtonGroup`,sr,e),p=q({name:`ButtonGroup`,props:t,classes:or,className:n,style:r,classNames:i,styles:a,unstyled:o,attributes:d,vars:c,varsResolver:cr,rootSelector:`group`});return(0,y.jsx)(X,{...p(`group`),mod:[{orientation:s},u],role:`group`,...f})});lr.classes=or,lr.varsResolver=cr,lr.displayName=`@mantine/core/ButtonGroup`;var ur=B((e,{radius:t,color:n,gradient:r,variant:i,autoContrast:a,size:o})=>{let s=e.variantColorResolver({color:n||e.primaryColor,theme:e,gradient:r,variant:i||`filled`,autoContrast:a});return{groupSection:{"--section-height":A(o,`section-height`),"--section-padding-x":A(o,`section-padding-x`),"--section-fz":o?.includes(`compact`)?N(o.replace(`compact-`,``)):N(o),"--section-radius":t===void 0?void 0:M(t),"--section-bg":n||i?s.background:void 0,"--section-color":s.color,"--section-bd":n||i?s.border:void 0}}}),dr=J(e=>{let t=K(`ButtonGroupSection`,null,e),{className:n,style:r,classNames:i,styles:a,unstyled:o,vars:s,gradient:c,radius:l,autoContrast:u,attributes:d,...f}=t,p=q({name:`ButtonGroupSection`,props:t,classes:or,className:n,style:r,classNames:i,styles:a,unstyled:o,attributes:d,vars:s,varsResolver:ur,rootSelector:`groupSection`});return(0,y.jsx)(X,{...p(`groupSection`),...f})});dr.classes=or,dr.varsResolver=ur,dr.displayName=`@mantine/core/ButtonGroupSection`;var fr={in:{opacity:1,transform:`translate(-50%, calc(-50% + ${E(1)}))`},out:{opacity:0,transform:`translate(-50%, -200%)`},common:{transformOrigin:`center`},transitionProperty:`transform, opacity`},pr=B((e,{radius:t,color:n,gradient:r,variant:i,size:a,justify:o,autoContrast:s})=>{let c=e.variantColorResolver({color:n||e.primaryColor,theme:e,gradient:r,variant:i||`filled`,autoContrast:s});return{root:{"--button-justify":o,"--button-height":A(a,`button-height`),"--button-padding-x":A(a,`button-padding-x`),"--button-fz":a?.includes(`compact`)?N(a.replace(`compact-`,``)):N(a),"--button-radius":t===void 0?void 0:M(t),"--button-bg":n||i?c.background:void 0,"--button-hover":n||i?c.hover:void 0,"--button-color":c.color,"--button-bd":n||i?c.border:void 0,"--button-hover-color":n||i?c.hoverColor:void 0}}}),mr=Y(e=>{let t=K(`Button`,null,e),{style:n,vars:r,className:i,color:a,disabled:o,children:s,leftSection:c,rightSection:l,fullWidth:u,variant:d,radius:f,loading:p,loaderProps:m,gradient:h,classNames:g,styles:_,unstyled:v,"data-disabled":b,autoContrast:x,mod:S,attributes:C,...w}=t,T=q({name:`Button`,props:t,classes:or,className:i,style:n,classNames:g,styles:_,unstyled:v,attributes:C,vars:r,varsResolver:pr}),E=!!c,D=!!l;return(0,y.jsxs)($t,{...T(`root`,{active:!o&&!p&&!b}),unstyled:v,variant:d,disabled:o||p,mod:[{disabled:o||b,loading:p,block:u,"with-left-section":E,"with-right-section":D},S],...w,children:[typeof p==`boolean`&&(0,y.jsx)(un,{mounted:p,transition:fr,duration:150,children:e=>(0,y.jsx)(X,{component:`span`,...T(`loader`,{style:e}),"aria-hidden":!0,children:(0,y.jsx)(_n,{color:`var(--button-color)`,size:`calc(var(--button-height) / 1.8)`,...m})})}),(0,y.jsxs)(`span`,{...T(`inner`),children:[c&&(0,y.jsx)(X,{component:`span`,...T(`section`),mod:{position:`left`},children:c}),(0,y.jsx)(X,{component:`span`,mod:{loading:p},...T(`label`),children:s}),l&&(0,y.jsx)(X,{component:`span`,...T(`section`),mod:{position:`right`},children:l})]})]})});mr.classes=or,mr.varsResolver=pr,mr.displayName=`@mantine/core/Button`,mr.Group=lr,mr.GroupSection=dr;var hr={root:`m_4451eb3a`},gr=Y(e=>{let t=K(`Center`,null,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,inline:c,mod:l,attributes:u,...d}=t,f=q({name:`Center`,props:t,classes:hr,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:u,vars:s});return(0,y.jsx)(X,{mod:[{inline:c},l],...f(`root`),...d})});gr.classes=hr,gr.displayName=`@mantine/core/Center`;var _r={root:`m_7485cace`},vr={strategy:`block`},yr=B((e,{size:t,fluid:n})=>({root:{"--container-size":n?void 0:A(t,`container-size`)}})),br=J(e=>{let t=K(`Container`,vr,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,fluid:c,mod:l,attributes:u,strategy:d,...f}=t,p=q({name:`Container`,classes:_r,props:t,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:u,vars:s,varsResolver:yr});return(0,y.jsx)(X,{mod:[{fluid:c,strategy:d},l],...p(`root`),...f})});br.classes=_r,br.varsResolver=yr,br.displayName=`@mantine/core/Container`;var xr={root:`m_6d731127`},Sr={gap:`md`,align:`stretch`,justify:`flex-start`},Cr=B((e,{gap:t,align:n,justify:r})=>({root:{"--stack-gap":j(t),"--stack-align":n,"--stack-justify":r}})),wr=J(e=>{let t=K(`Stack`,Sr,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,align:c,justify:l,gap:u,variant:d,attributes:f,...p}=t,m=q({name:`Stack`,props:t,classes:xr,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:f,vars:s,varsResolver:Cr});return(0,y.jsx)(X,{...m(`root`),variant:d,...p})});wr.classes=xr,wr.varsResolver=Cr,wr.displayName=`@mantine/core/Stack`;var Tr={root:`m_7341320d`},Er=B((e,{size:t,radius:n,variant:r,gradient:i,color:a,autoContrast:o})=>{let s=e.variantColorResolver({color:a||e.primaryColor,theme:e,gradient:i,variant:r||`filled`,autoContrast:o});return{root:{"--ti-size":A(t,`ti-size`),"--ti-radius":n===void 0?void 0:M(n),"--ti-bg":a||r?s.background:void 0,"--ti-color":a||r?s.color:void 0,"--ti-bd":a||r?s.border:void 0}}}),Dr=J(e=>{let t=K(`ThemeIcon`,null,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,autoContrast:c,attributes:l,...u}=t,d=q({name:`ThemeIcon`,classes:Tr,props:t,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:l,vars:s,varsResolver:Er});return(0,y.jsx)(X,{...d(`root`),...u})});Dr.classes=Tr,Dr.varsResolver=Er,Dr.displayName=`@mantine/core/ThemeIcon`;var Or=[`h1`,`h2`,`h3`,`h4`,`h5`,`h6`],kr=[`xs`,`sm`,`md`,`lg`,`xl`];function Ar(e,t){let n=t===void 0?`h${e}`:t;return Or.includes(n)?{fontSize:`var(--mantine-${n}-font-size)`,fontWeight:`var(--mantine-${n}-font-weight)`,lineHeight:`var(--mantine-${n}-line-height)`}:kr.includes(n)?{fontSize:`var(--mantine-font-size-${n})`,fontWeight:`var(--mantine-h${e}-font-weight)`,lineHeight:`var(--mantine-h${e}-line-height)`}:{fontSize:E(n),fontWeight:`var(--mantine-h${e}-font-weight)`,lineHeight:`var(--mantine-h${e}-line-height)`}}var jr={root:`m_8a5d1357`},Mr={order:1},Nr=B((e,{order:t,size:n,lineClamp:r,textWrap:i})=>{let a=Ar(t||1,n);return{root:{"--title-fw":a.fontWeight,"--title-lh":a.lineHeight,"--title-fz":a.fontSize,"--title-line-clamp":typeof r==`number`?r.toString():void 0,"--title-text-wrap":i}}}),Pr=J(e=>{let t=K(`Title`,Mr,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,order:s,vars:c,size:l,variant:u,lineClamp:d,textWrap:f,mod:p,attributes:m,...h}=t,g=q({name:`Title`,props:t,classes:jr,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:m,vars:c,varsResolver:Nr});return[1,2,3,4,5,6].includes(s)?(0,y.jsx)(X,{...g(`root`),component:`h${s}`,variant:u,mod:[{order:s,lineClamp:typeof d==`number`},p],size:l,...h}):null});Pr.classes=jr,Pr.varsResolver=Nr,Pr.displayName=`@mantine/core/Title`;var Fr=new Map([[`bold`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z`}))],[`duotone`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M232,56V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56Z`,opacity:`0.2`}),g.createElement(`path`,{d:`M205.66,85.66l-96,96a8,8,0,0,1-11.32,0l-40-40a8,8,0,0,1,11.32-11.32L104,164.69l90.34-90.35a8,8,0,0,1,11.32,11.32Z`}))],[`fill`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM205.66,85.66l-96,96a8,8,0,0,1-11.32,0l-40-40a8,8,0,0,1,11.32-11.32L104,164.69l90.34-90.35a8,8,0,0,1,11.32,11.32Z`}))],[`light`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M228.24,76.24l-128,128a6,6,0,0,1-8.48,0l-56-56a6,6,0,0,1,8.48-8.48L96,191.51,219.76,67.76a6,6,0,0,1,8.48,8.48Z`}))],[`regular`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z`}))],[`thin`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M226.83,74.83l-128,128a4,4,0,0,1-5.66,0l-56-56a4,4,0,0,1,5.66-5.66L96,194.34,221.17,69.17a4,4,0,1,1,5.66,5.66Z`}))]]),Ir=new Map([[`bold`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z`}))],[`duotone`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M216,40V168H168V88H88V40Z`,opacity:`0.2`}),g.createElement(`path`,{d:`M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32ZM160,208H48V96H160Zm48-48H176V88a8,8,0,0,0-8-8H96V48H208Z`}))],[`fill`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32Zm-8,128H176V88a8,8,0,0,0-8-8H96V48H208Z`}))],[`light`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M216,34H88a6,6,0,0,0-6,6V82H40a6,6,0,0,0-6,6V216a6,6,0,0,0,6,6H168a6,6,0,0,0,6-6V174h42a6,6,0,0,0,6-6V40A6,6,0,0,0,216,34ZM162,210H46V94H162Zm48-48H174V88a6,6,0,0,0-6-6H94V46H210Z`}))],[`regular`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32ZM160,208H48V96H160Zm48-48H176V88a8,8,0,0,0-8-8H96V48H208Z`}))],[`thin`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M216,36H88a4,4,0,0,0-4,4V84H40a4,4,0,0,0-4,4V216a4,4,0,0,0,4,4H168a4,4,0,0,0,4-4V172h44a4,4,0,0,0,4-4V40A4,4,0,0,0,216,36ZM164,212H44V92H164Zm48-48H172V88a4,4,0,0,0-4-4H92V44H212Z`}))]]),Lr=(0,g.createContext)({color:`currentColor`,size:`1em`,weight:`regular`,mirrored:!1}),Rr=g.forwardRef((e,t)=>{let{alt:n,color:r,size:i,weight:a,mirrored:o,children:s,weights:c,...l}=e,{color:u=`currentColor`,size:d,weight:f=`regular`,mirrored:p=!1,...m}=g.useContext(Lr);return g.createElement(`svg`,{ref:t,xmlns:`http://www.w3.org/2000/svg`,width:i??d,height:i??d,fill:r??u,viewBox:`0 0 256 256`,transform:o||p?`scale(-1, 1)`:void 0,...m,...l},!!n&&g.createElement(`title`,null,n),s,c.get(a??f))});Rr.displayName=`IconBase`;var zr=g.forwardRef((e,t)=>g.createElement(Rr,{ref:t,...e,weights:Fr}));zr.displayName=`CheckIcon`;var Br=zr,Vr=g.forwardRef((e,t)=>g.createElement(Rr,{ref:t,...e,weights:Ir}));Vr.displayName=`CopyIcon`;var Hr=Vr,Ur={small:{fontSize:15,gap:12,tracking:`0.16em`},regular:{fontSize:18,gap:14,tracking:`0.17em`},large:{fontSize:22,gap:16,tracking:`0.18em`}};function Wr({size:e=`regular`}){let t=Ur[e];return(0,y.jsxs)(Dn,{component:`span`,gap:t.gap,wrap:`nowrap`,"aria-label":`Fanout`,children:[(0,y.jsx)(Gr,{size:e}),(0,y.jsx)(ar,{component:`span`,fz:t.fontSize,fw:800,lh:1,lts:t.tracking,tt:`uppercase`,children:`Fanout`})]})}function Gr({size:e=`regular`}){let t={small:32,regular:46,large:50}[e];return(0,y.jsx)(Dr,{size:t,variant:`transparent`,"aria-hidden":`true`,children:(0,y.jsx)(Kr,{})})}function Kr(){let e=(0,g.useId)().replace(/[^a-zA-Z0-9-]/g,``),t=`fo-top-${e}`,n=`fo-mid-${e}`,r=`fo-bot-${e}`;return(0,y.jsxs)(`svg`,{viewBox:`35 44 200 200`,width:`100%`,height:`100%`,"aria-hidden":`true`,children:[(0,y.jsxs)(`defs`,{children:[(0,y.jsxs)(`linearGradient`,{id:t,x1:`54`,y1:`52`,x2:`210`,y2:`104`,gradientUnits:`userSpaceOnUse`,children:[(0,y.jsx)(`stop`,{offset:`0`,stopColor:`#5FE8CE`}),(0,y.jsx)(`stop`,{offset:`0.55`,stopColor:`#81E4B9`}),(0,y.jsx)(`stop`,{offset:`1`,stopColor:`#D9F276`})]}),(0,y.jsxs)(`linearGradient`,{id:n,x1:`58`,y1:`112`,x2:`176`,y2:`154`,gradientUnits:`userSpaceOnUse`,children:[(0,y.jsx)(`stop`,{offset:`0`,stopColor:`#536FFF`}),(0,y.jsx)(`stop`,{offset:`0.52`,stopColor:`#41B6F8`}),(0,y.jsx)(`stop`,{offset:`1`,stopColor:`#66D0EE`})]}),(0,y.jsxs)(`linearGradient`,{id:r,x1:`58`,y1:`166`,x2:`145`,y2:`220`,gradientUnits:`userSpaceOnUse`,children:[(0,y.jsx)(`stop`,{offset:`0`,stopColor:`#725BFF`}),(0,y.jsx)(`stop`,{offset:`0.52`,stopColor:`#9A50F4`}),(0,y.jsx)(`stop`,{offset:`1`,stopColor:`#CB55E8`})]})]}),(0,y.jsx)(`path`,{d:`M58 116V88C58 67 75 52 96 52H191C204 52 212 61 212 72C212 84 203 94 191 94H101C82 94 67 102 58 116Z`,fill:`url(#${t})`}),(0,y.jsx)(`path`,{d:`M58 170V139C58 120 72 107 91 107H162C174 107 182 115 182 126C182 137 174 145 162 145H99C79 145 66 154 58 170Z`,fill:`url(#${n})`}),(0,y.jsx)(`path`,{d:`M58 219V188C58 170 71 157 89 157H126C138 157 146 165 146 176C146 187 138 195 126 195H100C89 195 84 200 84 211C84 225 74 235 61 235H58Z`,fill:`url(#${r})`})]})}export{ae as $,q as A,Ae as B,X as C,Bt as D,Wt as E,ze as F,Se as G,Te as H,De as I,ue as J,xe as K,G as L,K as M,Je as N,_t as O,qe as P,z as Q,Oe as R,$t as S,l as St,J as T,W as U,Ee as V,Ce as W,B as X,V as Y,oe as Z,Dn as _,h as _t,Rr as a,N as at,un as b,o as bt,wr as c,A as ct,mr as d,D as dt,re as et,ar as f,E as ft,Mn as g,_ as gt,$ as h,v as ht,Br as i,ee as it,Ye as j,mt as k,br as l,j as lt,Zn as m,b as mt,Gr as n,L as nt,Pr as o,M as ot,er as p,S as pt,be as q,Hr as r,I as rt,Dr as s,F as st,Wr as t,R as tt,gr as u,O as ut,Sn as v,p as vt,Y as w,nn as x,s as xt,_n as y,d as yt,Fe as z}; \ No newline at end of file diff --git a/internal/ui/dist/assets/brand-eOqp_Ed4.js b/internal/ui/dist/assets/brand-eOqp_Ed4.js deleted file mode 100644 index 1ce437db..00000000 --- a/internal/ui/dist/assets/brand-eOqp_Ed4.js +++ /dev/null @@ -1 +0,0 @@ -var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n)),u=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.for(`react.view_transition`),m=Symbol.iterator;function h(e){return typeof e!=`object`||!e?null:(e=m&&e[m]||e[`@@iterator`],typeof e==`function`?e:null)}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function y(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function b(){}b.prototype=y.prototype;function x(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}var S=x.prototype=new b;S.constructor=x,_(S,y.prototype),S.isPureReactComponent=!0;var C=Array.isArray;function w(){}var T={H:null,A:null,T:null,S:null},E=Object.prototype.hasOwnProperty;function D(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function O(e,t){return D(e.type,t,e.props)}function k(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function A(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var j=/\/+/g;function M(e,t){return typeof e==`object`&&e&&e.key!=null?A(``+e.key):t.toString(36)}function N(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(w,w):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function P(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,P(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+M(e,0):a,C(o)?(i=``,c!=null&&(i=c.replace(j,`$&/`)+`/`),P(o,r,i,``,function(e){return e})):o!=null&&(k(o)&&(o=O(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(j,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(C(e))for(var u=0;u{t.exports=u()})),f=o((e=>{var t=d();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=f()})),m=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),h=o(((e,t)=>{t.exports=m()})),g=l(d(),1),_=h();function v(e){return Object.keys(e)}function y(e){return e&&typeof e==`object`&&!Array.isArray(e)}function b(e,t){let n={...e},r=t;return y(e)&&y(t)&&Object.keys(t).forEach(t=>{y(r[t])&&t in e?n[t]=b(n[t],r[t]):n[t]=r[t]}),n}function x(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}function S(e){return e===`0rem`?`0rem`:`calc(${e} * var(--mantine-scale))`}function C(e,{shouldScale:t=!1}={}){function n(r){if(r===0||r===`0`)return`0${e}`;if(typeof r==`number`){let n=`${r/16}${e}`;return t?S(n):n}if(typeof r==`string`){if(r===``||r.startsWith(`calc(`)||r.startsWith(`clamp(`)||r.includes(`rgba(`))return r;if(r.includes(`,`))return r.split(`,`).map(e=>n(e)).join(`,`);if(r.includes(` `))return r.split(` `).map(e=>n(e)).join(` `);let i=r.replace(`px`,``);if(!Number.isNaN(Number(i))){let n=`${Number(i)/16}${e}`;return t?S(n):n}}return r}return n}var w=C(`rem`,{shouldScale:!0}),T=C(`em`);function E(e){return Object.keys(e).reduce((t,n)=>(e[n]!==void 0&&(t[n]=e[n]),t),{})}function D(e){if(typeof e==`number`)return!0;if(typeof e==`string`){if(e.startsWith(`calc(`)||e.startsWith(`var(`)||e.includes(` `)&&e.trim()!==``)return!0;let t=/^[+-]?[0-9]+(\.[0-9]+)?(px|em|rem|ex|ch|lh|rlh|vw|vh|vmin|vmax|vb|vi|svw|svh|lvw|lvh|dvw|dvh|cm|mm|in|pt|pc|q|cqw|cqh|cqi|cqb|cqmin|cqmax|%)?$/;return e.trim().split(/\s+/).every(e=>t.test(e))}return!1}function O(e,t=`size`,n=!0){if(e!==void 0)return D(e)?n?w(e):e:`var(--${t}-${e})`}function k(e){return O(e,`mantine-spacing`)}function A(e){return e===void 0?`var(--mantine-radius-default)`:O(e,`mantine-radius`)}function j(e){return O(e,`mantine-font-size`)}function M(e){return O(e,`mantine-line-height`,!1)}function N(e){if(e)return O(e,`mantine-shadow`,!1)}function P(e=`mantine-`){return`${e}${Math.random().toString(36).slice(2,11)}`}function F(e,t){if(typeof t==`boolean`)return t;if(typeof window<`u`&&`matchMedia`in window)try{return window.matchMedia(e).matches}catch{return!1}return!1}function ee(e,t,{getInitialValueInEffect:n}={getInitialValueInEffect:!0}){let[r,i]=(0,g.useState)(n?t:F(e));return(0,g.useEffect)(()=>{try{if(`matchMedia`in window){let t=window.matchMedia(e);i(t.matches);let n=e=>i(e.matches);return t.addEventListener(`change`,n),()=>{t.removeEventListener(`change`,n)}}}catch{return}},[e]),r||!1}var I=typeof document<`u`?g.useLayoutEffect:g.useEffect;function te(e,t){return e.length!==t.length||t.some((t,n)=>!Object.is(t,e[n]))}function L(e,t){let n=(0,g.useRef)(!1),r=(0,g.useRef)(null),i=(0,g.useRef)(void 0),a={};(0,g.useEffect)(()=>{let o=r.current===a,s=i.current;if(r.current=a,i.current=t,!n.current){n.current=!0;return}if(!o&&!(t&&s&&!te(s,t)))return e()},t)}function ne(e){let t=(0,g.useId)(),[n,r]=(0,g.useState)(`mantine-${t.replace(/:/g,``)}`),i=(0,g.useRef)(!1);return I(()=>{i.current||(i.current=!0,r(P()))},[]),typeof e==`string`?e:n}function R(e,t){if(typeof e==`function`)return e(t);typeof e==`object`&&e&&`current`in e&&(e.current=t)}function z(...e){let t=new Map;return n=>{if(e.forEach(e=>{let r=R(e,n);r&&t.set(e,r)}),t.size>0)return()=>{e.forEach(e=>{let n=t.get(e);n&&typeof n==`function`?n():R(e,null)}),t.clear()}}}function B(...e){return(0,g.useCallback)(z(...e),e)}function re(e,t){return ee(`(prefers-reduced-motion: reduce)`,e,t)}function V(e){return e}function ie(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;t{Object.entries(e).forEach(([e,n])=>{t[e]?t[e]=H(t[e],n):t[e]=n})}),t}function U({theme:e,classNames:t,props:n,stylesCtx:r}){return oe((Array.isArray(t)?t:[t]).map(t=>typeof t==`function`?t(e,n,r):t||ae))}function se({theme:e,styles:t,props:n,stylesCtx:r}){let i=Array.isArray(t)?t:[t],a={};for(let t of i)typeof t==`function`?Object.assign(a,t(e,n,r)):t&&Object.assign(a,t);return a}function W(e,t){return typeof e.primaryShade==`number`?e.primaryShade:t===`dark`?e.primaryShade.dark:e.primaryShade.light}function ce(e){return/^#?([0-9A-F]{3}){1,2}([0-9A-F]{2})?$/i.test(e)}function le(e){let t=e.replace(`#`,``);if(t.length===3){let e=t.split(``);t=[e[0],e[0],e[1],e[1],e[2],e[2]].join(``)}if(t.length===8){let e=parseInt(t.slice(6,8),16)/255;return{r:parseInt(t.slice(0,2),16),g:parseInt(t.slice(2,4),16),b:parseInt(t.slice(4,6),16),a:e}}let n=parseInt(t,16);return{r:n>>16&255,g:n>>8&255,b:n&255,a:1}}function ue(e){let[t,n,r,i]=e.replace(/[^0-9,./]/g,``).split(/[/,]/).map(Number);return{r:t,g:n,b:r,a:i===void 0?1:i}}function de(e){let t=e.match(/^hsla?\(\s*(\d+)\s*,\s*(\d+%)\s*,\s*(\d+%)\s*(,\s*(0?\.\d+|\d+(\.\d+)?))?\s*\)$/i);if(!t)return{r:0,g:0,b:0,a:1};let n=parseInt(t[1],10),r=parseInt(t[2],10)/100,i=parseInt(t[3],10)/100,a=t[5]?parseFloat(t[5]):void 0,o=(1-Math.abs(2*i-1))*r,s=n/60,c=o*(1-Math.abs(s%2-1)),l=i-o/2,u,d,f;return s>=0&&s<1?(u=o,d=c,f=0):s>=1&&s<2?(u=c,d=o,f=0):s>=2&&s<3?(u=0,d=o,f=c):s>=3&&s<4?(u=0,d=c,f=o):s>=4&&s<5?(u=c,d=0,f=o):(u=o,d=0,f=c),{r:Math.round((u+l)*255),g:Math.round((d+l)*255),b:Math.round((f+l)*255),a:a||1}}function fe(e){return ce(e)?le(e):e.startsWith(`rgb`)?ue(e):e.startsWith(`hsl`)?de(e):{r:0,g:0,b:0,a:1}}function pe(e){return e<=.03928?e/12.92:((e+.055)/1.055)**2.4}function me(e){let t=e.match(/oklch\((.*?)%\s/);return t?parseFloat(t[1]):null}function he(e){if(e.startsWith(`oklch(`))return(me(e)||0)/100;let{r:t,g:n,b:r}=fe(e),i=t/255,a=n/255,o=r/255,s=pe(i),c=pe(a),l=pe(o);return .2126*s+.7152*c+.0722*l}function ge(e,t=.179){return!e.startsWith(`var(`)&&he(e)>t}function _e({color:e,theme:t,colorScheme:n}){if(typeof e!=`string`)throw Error(`[@mantine/core] Failed to parse color. Expected color to be a string, instead got ${typeof e}`);if(e===`bright`)return{color:e,value:n===`dark`?t.white:t.black,shade:void 0,isThemeColor:!1,isLight:ge(n===`dark`?t.white:t.black,t.luminanceThreshold),variable:`--mantine-color-bright`};if(e===`dimmed`)return{color:e,value:n===`dark`?t.colors.dark[2]:t.colors.gray[7],shade:void 0,isThemeColor:!1,isLight:ge(n===`dark`?t.colors.dark[2]:t.colors.gray[6],t.luminanceThreshold),variable:`--mantine-color-dimmed`};if(e===`white`||e===`black`)return{color:e,value:e===`white`?t.white:t.black,shade:void 0,isThemeColor:!1,isLight:ge(e===`white`?t.white:t.black,t.luminanceThreshold),variable:`--mantine-color-${e}`};let[r,i]=e.split(`.`),a=i?Number(i):void 0,o=r in t.colors;if(o){let e=a===void 0?t.colors[r][W(t,n||`light`)]:t.colors[r][a];return{color:r,value:e,shade:a,isThemeColor:o,isLight:ge(e,t.luminanceThreshold),variable:i?`--mantine-color-${r}-${a}`:`--mantine-color-${r}-filled`}}return{color:e,value:e,isThemeColor:o,isLight:ge(e,t.luminanceThreshold),shade:a,variable:void 0}}function ve(e,t){let n=_e({color:e||t.primaryColor,theme:t});return n.variable?`var(${n.variable})`:e}function ye(e){return!!e&&typeof e==`object`&&`mantine-virtual-color`in e}function be(e,t){if(e.startsWith(`var(`))return`color-mix(in srgb, ${e}, black ${t*100}%)`;let{r:n,g:r,b:i,a}=fe(e),o=1-t,s=e=>Math.round(e*o);return`rgba(${s(n)}, ${s(r)}, ${s(i)}, ${a})`}function xe(e,t){let n={from:e?.from||t.defaultGradient.from,to:e?.to||t.defaultGradient.to,deg:e?.deg??t.defaultGradient.deg??0},r=ve(n.from,t),i=ve(n.to,t);return`linear-gradient(${n.deg}deg, ${r} 0%, ${i} 100%)`}function Se(e,t){if(typeof e!=`string`||t>1||t<0)return`rgba(0, 0, 0, 1)`;if(e.startsWith(`var(`))return`color-mix(in srgb, ${e}, transparent ${(1-t)*100}%)`;if(e.startsWith(`oklch`))return e.includes(`/`)?e.replace(/\/\s*[\d.]+\s*\)/,`/ ${t})`):e.replace(`)`,` / ${t})`);let{r:n,g:r,b:i}=fe(e);return`rgba(${n}, ${r}, ${i}, ${t})`}var Ce=Se,we=({color:e,theme:t,variant:n,gradient:r,autoContrast:i})=>{let a=_e({color:e,theme:t}),o=typeof i==`boolean`?i:t.autoContrast;if(n===`none`)return{background:`transparent`,hover:`transparent`,color:`inherit`,border:`none`};if(n===`filled`){let n=a.isThemeColor&&a.shade===void 0&&ye(t.colors[a.color]),r=o?n?`var(--mantine-color-${a.color}-contrast)`:a.isLight?`var(--mantine-color-black)`:`var(--mantine-color-white)`:`var(--mantine-color-white)`;return a.isThemeColor?a.shade===void 0?{background:`var(--mantine-color-${e}-filled)`,hover:`var(--mantine-color-${e}-filled-hover)`,color:r,border:`${w(1)} solid transparent`}:{background:`var(--mantine-color-${a.color}-${a.shade})`,hover:`var(--mantine-color-${a.color}-${a.shade===9?8:a.shade+1})`,color:r,border:`${w(1)} solid transparent`}:{background:e,hover:be(e,.1),color:r,border:`${w(1)} solid transparent`}}if(n===`light`){if(a.isThemeColor){if(a.shade===void 0)return{background:`var(--mantine-color-${e}-light)`,hover:`var(--mantine-color-${e}-light-hover)`,color:`var(--mantine-color-${e}-light-color)`,border:`${w(1)} solid transparent`};let n=t.colors[a.color][a.shade];return{background:n,hover:be(n,.1),color:`var(--mantine-color-${a.color}-light-color)`,border:`${w(1)} solid transparent`}}return{background:Se(e,.1),hover:Se(e,.12),color:e,border:`${w(1)} solid transparent`}}if(n===`outline`)return a.isThemeColor?a.shade===void 0?{background:`transparent`,hover:`var(--mantine-color-${e}-outline-hover)`,color:`var(--mantine-color-${e}-outline)`,border:`${w(1)} solid var(--mantine-color-${e}-outline)`}:{background:`transparent`,hover:Se(t.colors[a.color][a.shade],.05),color:`var(--mantine-color-${a.color}-${a.shade})`,border:`${w(1)} solid var(--mantine-color-${a.color}-${a.shade})`}:{background:`transparent`,hover:Se(e,.05),color:e,border:`${w(1)} solid ${e}`};if(n===`subtle`){if(a.isThemeColor){if(a.shade===void 0)return{background:`transparent`,hover:`var(--mantine-color-${e}-light-hover)`,color:`var(--mantine-color-${e}-light-color)`,border:`${w(1)} solid transparent`};let n=t.colors[a.color][a.shade];return{background:`transparent`,hover:Se(n,.12),color:`var(--mantine-color-${a.color}-${Math.min(a.shade,6)})`,border:`${w(1)} solid transparent`}}return{background:`transparent`,hover:Se(e,.12),color:e,border:`${w(1)} solid transparent`}}return n===`transparent`?a.isThemeColor?a.shade===void 0?{background:`transparent`,hover:`transparent`,color:`var(--mantine-color-${e}-light-color)`,border:`${w(1)} solid transparent`}:{background:`transparent`,hover:`transparent`,color:`var(--mantine-color-${a.color}-${Math.min(a.shade,6)})`,border:`${w(1)} solid transparent`}:{background:`transparent`,hover:`transparent`,color:e,border:`${w(1)} solid transparent`}:n===`white`?a.isThemeColor?a.shade===void 0?{background:`var(--mantine-color-white)`,hover:be(t.white,.01),color:`var(--mantine-color-${e}-filled)`,border:`${w(1)} solid transparent`}:{background:`var(--mantine-color-white)`,hover:be(t.white,.01),color:`var(--mantine-color-${a.color}-${a.shade})`,border:`${w(1)} solid transparent`}:{background:`var(--mantine-color-white)`,hover:be(t.white,.01),color:e,border:`${w(1)} solid transparent`}:n===`gradient`?{background:xe(r,t),hover:xe(r,t),color:`var(--mantine-color-white)`,border:`none`}:n==="default"?{background:`var(--mantine-color-default)`,hover:`var(--mantine-color-default-hover)`,color:`var(--mantine-color-default-color)`,border:`${w(1)} solid var(--mantine-color-default-border)`}:{}},Te=(0,g.createContext)(null);function G(){let e=(0,g.use)(Te);if(!e)throw Error(`[@mantine/core] MantineProvider was not found in tree`);return e}function Ee(){return G().cssVariablesResolver}function De(){return G().classNamesPrefix}function Oe(){return G().getStyleNonce}function ke(){return G().withStaticClasses}function Ae(){return G().headless}function je(){return G().stylesTransform?.sx}function Me(){return G().stylesTransform?.styles}function Ne(){return G().env||`default`}function Pe(){return G().deduplicateInlineStyles}var Fe={dark:[`#C9C9C9`,`#b8b8b8`,`#828282`,`#696969`,`#424242`,`#3b3b3b`,`#2e2e2e`,`#242424`,`#1f1f1f`,`#141414`],gray:[`#f8f9fa`,`#f1f3f5`,`#e9ecef`,`#dee2e6`,`#ced4da`,`#adb5bd`,`#868e96`,`#495057`,`#343a40`,`#212529`],red:[`#fff5f5`,`#ffe3e3`,`#ffc9c9`,`#ffa8a8`,`#ff8787`,`#ff6b6b`,`#fa5252`,`#f03e3e`,`#e03131`,`#c92a2a`],pink:[`#fff0f6`,`#ffdeeb`,`#fcc2d7`,`#faa2c1`,`#f783ac`,`#f06595`,`#e64980`,`#d6336c`,`#c2255c`,`#a61e4d`],grape:[`#f8f0fc`,`#f3d9fa`,`#eebefa`,`#e599f7`,`#da77f2`,`#cc5de8`,`#be4bdb`,`#ae3ec9`,`#9c36b5`,`#862e9c`],violet:[`#f3f0ff`,`#e5dbff`,`#d0bfff`,`#b197fc`,`#9775fa`,`#845ef7`,`#7950f2`,`#7048e8`,`#6741d9`,`#5f3dc4`],indigo:[`#edf2ff`,`#dbe4ff`,`#bac8ff`,`#91a7ff`,`#748ffc`,`#5c7cfa`,`#4c6ef5`,`#4263eb`,`#3b5bdb`,`#364fc7`],blue:[`#e7f5ff`,`#d0ebff`,`#a5d8ff`,`#74c0fc`,`#4dabf7`,`#339af0`,`#228be6`,`#1c7ed6`,`#1971c2`,`#1864ab`],cyan:[`#e3fafc`,`#c5f6fa`,`#99e9f2`,`#66d9e8`,`#3bc9db`,`#22b8cf`,`#15aabf`,`#1098ad`,`#0c8599`,`#0b7285`],teal:[`#e6fcf5`,`#c3fae8`,`#96f2d7`,`#63e6be`,`#38d9a9`,`#20c997`,`#12b886`,`#0ca678`,`#099268`,`#087f5b`],green:[`#ebfbee`,`#d3f9d8`,`#b2f2bb`,`#8ce99a`,`#69db7c`,`#51cf66`,`#40c057`,`#37b24d`,`#2f9e44`,`#2b8a3e`],lime:[`#f4fce3`,`#e9fac8`,`#d8f5a2`,`#c0eb75`,`#a9e34b`,`#94d82d`,`#82c91e`,`#74b816`,`#66a80f`,`#5c940d`],yellow:[`#fff9db`,`#fff3bf`,`#ffec99`,`#ffe066`,`#ffd43b`,`#fcc419`,`#fab005`,`#f59f00`,`#f08c00`,`#e67700`],orange:[`#fff4e6`,`#ffe8cc`,`#ffd8a8`,`#ffc078`,`#ffa94d`,`#ff922b`,`#fd7e14`,`#f76707`,`#e8590c`,`#d9480f`]},Ie=`-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji`,Le={scale:1,fontSmoothing:!0,focusRing:`auto`,white:`#fff`,black:`#000`,colors:Fe,primaryShade:{light:6,dark:8},primaryColor:`blue`,variantColorResolver:we,autoContrast:!1,luminanceThreshold:.3,fontFamily:Ie,fontFamilyMonospace:`ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace`,respectReducedMotion:!1,cursorType:`default`,defaultGradient:{from:`blue`,to:`cyan`,deg:45},defaultRadius:`md`,activeClassName:`mantine-active`,focusClassName:``,headings:{fontFamily:Ie,fontWeight:`700`,textWrap:`wrap`,sizes:{h1:{fontSize:w(34),lineHeight:`1.3`},h2:{fontSize:w(26),lineHeight:`1.35`},h3:{fontSize:w(22),lineHeight:`1.4`},h4:{fontSize:w(18),lineHeight:`1.45`},h5:{fontSize:w(16),lineHeight:`1.5`},h6:{fontSize:w(14),lineHeight:`1.5`}}},fontSizes:{xs:w(12),sm:w(14),md:w(16),lg:w(18),xl:w(20)},lineHeights:{xs:`1.4`,sm:`1.45`,md:`1.55`,lg:`1.6`,xl:`1.65`},fontWeights:{regular:`400`,medium:`600`,bold:`700`},radius:{xs:w(2),sm:w(4),md:w(8),lg:w(16),xl:w(32)},spacing:{xs:w(10),sm:w(12),md:w(16),lg:w(20),xl:w(32)},breakpoints:{xs:`36em`,sm:`48em`,md:`62em`,lg:`75em`,xl:`88em`},shadows:{xs:`0 ${w(1)} ${w(3)} rgba(0, 0, 0, 0.05), 0 ${w(1)} ${w(2)} rgba(0, 0, 0, 0.1)`,sm:`0 ${w(1)} ${w(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${w(10)} ${w(15)} ${w(-5)}, rgba(0, 0, 0, 0.04) 0 ${w(7)} ${w(7)} ${w(-5)}`,md:`0 ${w(1)} ${w(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${w(20)} ${w(25)} ${w(-5)}, rgba(0, 0, 0, 0.04) 0 ${w(10)} ${w(10)} ${w(-5)}`,lg:`0 ${w(1)} ${w(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${w(28)} ${w(23)} ${w(-7)}, rgba(0, 0, 0, 0.04) 0 ${w(12)} ${w(12)} ${w(-7)}`,xl:`0 ${w(1)} ${w(3)} rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 ${w(36)} ${w(28)} ${w(-7)}, rgba(0, 0, 0, 0.04) 0 ${w(17)} ${w(17)} ${w(-7)}`},other:{},components:{}},Re=`[@mantine/core] MantineProvider: Invalid theme.primaryColor, it accepts only key of theme.colors, learn more – https://mantine.dev/theming/colors/#primary-color`,ze=`[@mantine/core] MantineProvider: Invalid theme.primaryShade, it accepts only 0-9 integers or an object { light: 0-9, dark: 0-9 }`;function Be(e){return e<0||e>9?!1:parseInt(e.toString(),10)===e}function Ve(e){if(!(e.primaryColor in e.colors))throw Error(Re);if(typeof e.primaryShade==`object`&&(!Be(e.primaryShade.dark)||!Be(e.primaryShade.light))||typeof e.primaryShade==`number`&&!Be(e.primaryShade))throw Error(ze)}function He(e,t){if(!t)return Ve(e),e;let n=b(e,t);return t.fontFamily&&!t.headings?.fontFamily&&(n.headings={...n.headings,fontFamily:t.fontFamily}),Ve(n),n}var Ue=(0,g.createContext)(null),We=()=>(0,g.use)(Ue)||Le;function Ge(){let e=(0,g.use)(Ue);if(!e)throw Error(`@mantine/core: MantineProvider was not found in component tree, make sure you have it in your app`);return e}function Ke({theme:e,children:t,inherit:n=!0}){let r=We(),i=(0,g.useMemo)(()=>He(n?r:Le,e),[e,r,n]);return(0,_.jsx)(Ue,{value:i,children:t})}Ke.displayName=`@mantine/core/MantineThemeProvider`;function K(e,t,n){let r=Ge(),i=(Array.isArray(e)?e:[e]).filter(Boolean),a={};for(let e of i){let t=r.components[e]?.defaultProps,n=typeof t==`function`?t(r):t;n&&(a={...a,...n})}return{...t,...a,...E(n)}}function qe({classNames:e,styles:t,props:n,stylesCtx:r}){let i=Ge();return{resolvedClassNames:e===void 0?void 0:U({theme:i,classNames:e,props:n,stylesCtx:r||void 0}),resolvedStyles:t===void 0?void 0:se({theme:i,styles:t,props:n,stylesCtx:r||void 0})}}var Je={always:`mantine-focus-always`,auto:`mantine-focus-auto`,never:`mantine-focus-never`};function Ye({theme:e,options:t,unstyled:n}){return H(t?.focusable&&!n&&(e.focusClassName||Je[e.focusRing]),t?.active&&!n&&e.activeClassName)}function Xe(e,t,n=1){if(Object.is(e,t))return!0;if(n===0||typeof e!=`object`||typeof t!=`object`||e===null||t===null)return!1;if(Array.isArray(e)||Array.isArray(t)){if(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length)return!1;for(let r=0;r`${t}-${e}-${n}`)}function nt({options:e,classes:t,selector:n,unstyled:r}){return e?.variant&&!r?t[`${n}--${e.variant}`]:void 0}function rt({theme:e,options:t,themeName:n,selector:r,classNamesPrefix:i,resolvedClassNames:a,resolvedThemeClassNames:o,classes:s,unstyled:c,className:l,rootSelector:u,props:d,stylesCtx:f,withStaticClasses:p,headless:m,transformedStyles:h}){return H(Ye({theme:e,options:t,unstyled:c||m}),o.map(e=>e[r]),nt({options:t,classes:s,selector:r,unstyled:c||m}),a[r],Qe({selector:r,stylesCtx:f,theme:e,classNames:h,props:d}),Ze({selector:r,stylesCtx:f,options:t,props:d,theme:e}),$e({rootSelector:u,selector:r,className:l}),et({selector:r,classes:s,unstyled:c||m}),p&&!m&&tt({themeName:n,classNamesPrefix:i,selector:r,withStaticClass:t?.withStaticClass}),t?.className)}function it({style:e,theme:t}){return Array.isArray(e)?e.reduce((e,n)=>({...e,...it({style:n,theme:t})}),{}):typeof e==`function`?e(t):e??{}}function at({theme:e,selector:t,options:n,props:r,stylesCtx:i,rootSelector:a,withStylesTransform:o,resolvedStyles:s,resolvedThemeStyles:c,resolvedVars:l,resolvedRootStyle:u}){return{...c[t],...s[t],...!o&&se({theme:e,styles:n?.styles,props:n?.props||r,stylesCtx:i})[t],...l[t],...a===t?u:null,...it({style:n?.style,theme:e})}}function ot(e){return e.reduce((e,t)=>(t&&Object.keys(t).forEach(n=>{e[n]={...e[n],...E(t[n])}}),e),{})}function st({props:e,stylesCtx:t,themeName:n,theme:r}){let i=Me()?.();return{getTransformedStyles:a=>i?[...a.map(n=>i(n,{props:e,theme:r,ctx:t})),...n.map(n=>i(r.components[n]?.styles,{props:e,theme:r,ctx:t}))].filter(Boolean):[],withStylesTransform:!!i}}function q({name:e,classes:t,props:n,stylesCtx:r,className:i,style:a,rootSelector:o=`root`,unstyled:s,classNames:c,styles:l,vars:u,varsResolver:d,attributes:f,stable:p}){let m=Ge(),h=De(),g=ke(),_=Ae(),v=(Array.isArray(e)?e:[e]).filter(e=>e),{withStylesTransform:y,getTransformedStyles:b}=st({props:n,stylesCtx:r,themeName:v,theme:m}),x=U({theme:m,classNames:c,props:n,stylesCtx:r}),S=v.map(e=>U({theme:m,classNames:m.components[e]?.classNames,props:n,stylesCtx:r})),C=y?{}:se({theme:m,styles:l,props:n,stylesCtx:r}),w={};if(!y)for(let e of v){let t=se({theme:m,styles:m.components[e]?.styles,props:n,stylesCtx:r});for(let e of Object.keys(t))w[e]={...w[e],...t[e]}}let T=ot([_?{}:d?.(m,n,r),...v.map(e=>m.components?.[e]?.vars?.(m,n,r)),u?.(m,n,r)]),E=it({style:a,theme:m});return ct((e,a)=>({...f?.[e],className:rt({theme:m,options:a,themeName:v,selector:e,classNamesPrefix:h,resolvedClassNames:x,resolvedThemeClassNames:S,classes:t,unstyled:s,className:i,rootSelector:o,props:n,stylesCtx:r,withStaticClasses:g,headless:_,transformedStyles:b([a?.styles,l])}),style:at({theme:m,selector:e,options:a,props:n,stylesCtx:r,rootSelector:o,withStylesTransform:y,resolvedStyles:C,resolvedThemeStyles:w,resolvedVars:T,resolvedRootStyle:E})}),!!p,[m,h,g,_,y?n:null,t,s,i,o,f,r,x,S,C,w,T,E])}function ct(e,t,n){let r=(0,g.useRef)(null);return t?((!r.current||!Xe(r.current.deps,n,3))&&(r.current={deps:n,getStyles:e}),r.current.getStyles):e}function lt(e){return v(e).reduce((t,n)=>e[n]===void 0?t:`${t}${x(n)}:${e[n]};`,``).trim()}function ut({selector:e,styles:t,media:n,container:r}){let i=t?lt(t):``,a=Array.isArray(n)?n.map(t=>`@media${t.query}{${e}{${lt(t.styles)}}}`):[],o=Array.isArray(r)?r.map(t=>`@container ${t.query}{${e}{${lt(t.styles)}}}`):[];return`${i?`${e}{${i}}`:``}${a.join(``)}${o.join(``)}`.trim()}function dt(e){let t=5381;for(let n=0;n>>0).toString(36)}function ft({deduplicate:e,...t}){let n=Oe(),r=ut(t);return e?(0,_.jsx)(`style`,{href:`mantine-${dt(r)}`,precedence:`mantine`,nonce:n?.(),children:r}):(0,_.jsx)(`style`,{"data-mantine-styles":`inline`,nonce:n?.(),dangerouslySetInnerHTML:{__html:r}})}function pt(e){let t=5381;for(let n=0;n>>0).toString(36)}function mt(e,t){return`__mdi__-${pt(`${e?lt(e):``}|${Array.isArray(t)?t.map(e=>`${e.query}:${lt(e.styles)}`).join(`|`):``}`)}`}function ht(e){let{m:t,mx:n,my:r,mt:i,mb:a,ml:o,mr:s,me:c,ms:l,mis:u,mie:d,p:f,px:p,py:m,pt:h,pb:g,pl:_,pr:v,pe:y,ps:b,pis:x,pie:S,bd:C,bdrs:w,bg:T,c:D,opacity:O,ff:k,fz:A,fw:j,lts:M,ta:N,lh:P,fs:F,tt:ee,td:I,w:te,miw:L,maw:ne,h:R,mih:z,mah:B,bgsz:re,bgp:V,bgr:ie,bga:H,pos:ae,top:oe,left:U,bottom:se,right:W,inset:ce,display:le,flex:ue,hiddenFrom:de,visibleFrom:fe,lightHidden:pe,darkHidden:me,sx:he,...ge}=e;return{styleProps:E({m:t,mx:n,my:r,mt:i,mb:a,ml:o,mr:s,me:c,ms:l,mis:u,mie:d,p:f,px:p,py:m,pt:h,pb:g,pl:_,pr:v,pis:x,pie:S,pe:y,ps:b,bd:C,bg:T,c:D,opacity:O,ff:k,fz:A,fw:j,lts:M,ta:N,lh:P,fs:F,tt:ee,td:I,w:te,miw:L,maw:ne,h:R,mih:z,mah:B,bgsz:re,bgp:V,bgr:ie,bga:H,pos:ae,top:oe,left:U,bottom:se,right:W,inset:ce,display:le,flex:ue,bdrs:w,hiddenFrom:de,visibleFrom:fe,lightHidden:pe,darkHidden:me,sx:he}),rest:ge}}var gt={m:{type:`spacing`,property:`margin`},mt:{type:`spacing`,property:`marginTop`},mb:{type:`spacing`,property:`marginBottom`},ml:{type:`spacing`,property:`marginLeft`},mr:{type:`spacing`,property:`marginRight`},ms:{type:`spacing`,property:`marginInlineStart`},me:{type:`spacing`,property:`marginInlineEnd`},mis:{type:`spacing`,property:`marginInlineStart`},mie:{type:`spacing`,property:`marginInlineEnd`},mx:{type:`spacing`,property:`marginInline`},my:{type:`spacing`,property:`marginBlock`},p:{type:`spacing`,property:`padding`},pt:{type:`spacing`,property:`paddingTop`},pb:{type:`spacing`,property:`paddingBottom`},pl:{type:`spacing`,property:`paddingLeft`},pr:{type:`spacing`,property:`paddingRight`},ps:{type:`spacing`,property:`paddingInlineStart`},pe:{type:`spacing`,property:`paddingInlineEnd`},pis:{type:`spacing`,property:`paddingInlineStart`},pie:{type:`spacing`,property:`paddingInlineEnd`},px:{type:`spacing`,property:`paddingInline`},py:{type:`spacing`,property:`paddingBlock`},bd:{type:`border`,property:`border`},bdrs:{type:`radius`,property:`borderRadius`},bg:{type:`color`,property:`background`},c:{type:`textColor`,property:`color`},opacity:{type:`identity`,property:`opacity`},ff:{type:`fontFamily`,property:`fontFamily`},fz:{type:`fontSize`,property:`fontSize`},fw:{type:`identity`,property:`fontWeight`},lts:{type:`size`,property:`letterSpacing`},ta:{type:`identity`,property:`textAlign`},lh:{type:`lineHeight`,property:`lineHeight`},fs:{type:`identity`,property:`fontStyle`},tt:{type:`identity`,property:`textTransform`},td:{type:`identity`,property:`textDecoration`},w:{type:`spacing`,property:`width`},miw:{type:`spacing`,property:`minWidth`},maw:{type:`spacing`,property:`maxWidth`},h:{type:`spacing`,property:`height`},mih:{type:`spacing`,property:`minHeight`},mah:{type:`spacing`,property:`maxHeight`},bgsz:{type:`size`,property:`backgroundSize`},bgp:{type:`identity`,property:`backgroundPosition`},bgr:{type:`identity`,property:`backgroundRepeat`},bga:{type:`identity`,property:`backgroundAttachment`},pos:{type:`identity`,property:`position`},top:{type:`size`,property:`top`},left:{type:`size`,property:`left`},bottom:{type:`size`,property:`bottom`},right:{type:`size`,property:`right`},inset:{type:`size`,property:`inset`},display:{type:`identity`,property:`display`},flex:{type:`identity`,property:`flex`}};function _t(e,t){let n=_e({color:e,theme:t});return n.color===`dimmed`?`var(--mantine-color-dimmed)`:n.color===`bright`?`var(--mantine-color-bright)`:n.variable?`var(${n.variable})`:n.color}function vt(e,t){let n=_e({color:e,theme:t});return n.isThemeColor&&n.shade===void 0?`var(--mantine-color-${n.color}-text)`:_t(e,t)}function yt(e,t){if(typeof e==`number`)return w(e);if(typeof e==`string`){let[n,r,...i]=e.split(` `).filter(e=>e.trim()!==``),a=`${w(n)}`;return r&&(a+=` ${r}`),i.length>0&&(a+=` ${_t(i.join(` `),t)}`),a.trim()}return e}var bt={text:`var(--mantine-font-family)`,mono:`var(--mantine-font-family-monospace)`,monospace:`var(--mantine-font-family-monospace)`,heading:`var(--mantine-font-family-headings)`,headings:`var(--mantine-font-family-headings)`};function xt(e){return typeof e==`string`&&e in bt?bt[e]:e}var St=[`h1`,`h2`,`h3`,`h4`,`h5`,`h6`];function Ct(e,t){return typeof e==`string`&&e in t.fontSizes?`var(--mantine-font-size-${e})`:typeof e==`string`&&St.includes(e)?`var(--mantine-${e}-font-size)`:typeof e==`number`||typeof e==`string`?w(e):e}function wt(e){return e}var Tt=[`h1`,`h2`,`h3`,`h4`,`h5`,`h6`];function Et(e,t){return typeof e==`string`&&e in t.lineHeights?`var(--mantine-line-height-${e})`:typeof e==`string`&&Tt.includes(e)?`var(--mantine-${e}-line-height)`:e}function Dt(e,t){return typeof e==`string`&&e in t.radius?`var(--mantine-radius-${e})`:typeof e==`number`||typeof e==`string`?w(e):e}function Ot(e){return typeof e==`number`?w(e):e}function kt(e,t){if(typeof e==`number`)return w(e);if(typeof e==`string`){let n=e.replace(`-`,``);if(!(n in t.spacing))return w(e);let r=`--mantine-spacing-${n}`;return e.startsWith(`-`)?`calc(var(${r}) * -1)`:`var(${r})`}return e}var At={color:_t,textColor:vt,fontSize:Ct,spacing:kt,radius:Dt,identity:wt,size:Ot,lineHeight:Et,fontFamily:xt,border:yt};function jt(e){return e.replace(`(min-width: `,``).replace(`em)`,``)}function Mt({media:e,...t}){let n=Object.keys(e).sort((e,t)=>Number(jt(e))-Number(jt(t))).map(t=>({query:t,styles:e[t]}));return{...t,media:n}}function Nt(e){if(typeof e!=`object`||!e)return!1;let t=Object.keys(e);return t.length!==1||t[0]!==`base`}function Pt(e){return typeof e==`object`&&e?`base`in e?e.base:void 0:e}function Ft(e){return typeof e==`object`&&e?v(e).filter(e=>e!==`base`):[]}function It(e,t){return typeof e==`object`&&e&&t in e?e[t]:e}function Lt({styleProps:e,data:t,theme:n}){return Mt(v(e).reduce((r,i)=>{if(i===`hiddenFrom`||i===`visibleFrom`||i===`sx`)return r;let a=t[i],o=Array.isArray(a.property)?a.property:[a.property],s=Pt(e[i]);if(!Nt(e[i]))return o.forEach(e=>{r.inlineStyles[e]=At[a.type](s,n)}),r;r.hasResponsiveStyles=!0;let c=Ft(e[i]);return o.forEach(t=>{s!=null&&(r.styles[t]=At[a.type](s,n)),c.forEach(o=>{let s=`(min-width: ${n.breakpoints[o]})`;r.media[s]={...r.media[s],[t]:At[a.type](It(e[i],o),n)}})}),r},{hasResponsiveStyles:!1,styles:{},inlineStyles:{},media:{}}))}function Rt(){return`__m__-${(0,g.useId)().replace(/[:«»]/g,``)}`}function zt(e){return e}var Bt=zt;function Vt(e){return e}function J(e){let t=e;return t.extend=Vt,t.withProps=e=>{let n=n=>(0,_.jsx)(t,{...e,...n});return n.extend=t.extend,n.displayName=`WithProps(${t.displayName})`,n},t}function Ht(e){return J(e)}function Y(e){let t=e;return t.withProps=e=>{let n=n=>(0,_.jsx)(t,{...e,...n});return n.extend=t.extend,n.displayName=`WithProps(${t.displayName})`,n},t.extend=Vt,t}function Ut(e){return`data-${(e.startsWith(`data-`)?e.slice(5):e).replace(/([a-z])([A-Z])/g,`$1-$2`).toLowerCase()}`}function Wt(e){return Object.keys(e).reduce((t,n)=>{let r=e[n];return r===void 0||r===``||r===!1||r===null||(t[Ut(n)]=e[n]),t},{})}function Gt(e){return e?typeof e==`string`?{[Ut(e)]:!0}:Array.isArray(e)?[...e].reduce((e,t)=>({...e,...Gt(t)}),{}):Wt(e):null}function Kt(e,t){return Array.isArray(e)?[...e].reduce((e,n)=>({...e,...Kt(n,t)}),{}):typeof e==`function`?e(t):e??{}}function qt({theme:e,style:t,vars:n,styleProps:r}){let i=Kt(t,e),a=Kt(n,e);return{...i,...a,...r}}function Jt({component:e,style:t,__vars:n,className:r,variant:i,mod:a,size:o,hiddenFrom:s,visibleFrom:c,lightHidden:l,darkHidden:u,renderRoot:d,__size:f,ref:p,...m}){let h=Ge(),g=e||`div`,{styleProps:v,rest:y}=ht(m),b=je()?.()?.(v.sx),x=Rt(),S=Lt({styleProps:v,theme:h,data:gt}),C=Pe(),w=C&&S.hasResponsiveStyles?mt(S.styles,S.media):x,T={ref:p,style:qt({theme:h,style:t,vars:n,styleProps:S.inlineStyles}),className:H(r,b,{[w]:S.hasResponsiveStyles,"mantine-light-hidden":l,"mantine-dark-hidden":u,[`mantine-hidden-from-${s}`]:s,[`mantine-visible-from-${c}`]:c}),"data-variant":i,"data-size":D(o)?void 0:o||void 0,size:f,...Gt(a),...y};return(0,_.jsxs)(_.Fragment,{children:[S.hasResponsiveStyles&&(0,_.jsx)(ft,{selector:`.${w}`,styles:S.styles,media:S.media,deduplicate:C}),typeof d==`function`?d(T):(0,_.jsx)(g,{...T})]})}Jt.displayName=`@mantine/core/Box`;var X=Bt(Jt),Yt={root:`m_87cf2631`},Xt={__staticSelector:`UnstyledButton`},Zt=Y(e=>{let t=K(`UnstyledButton`,Xt,e),{className:n,component:r=`button`,__staticSelector:i,unstyled:a,classNames:o,styles:s,style:c,attributes:l,...u}=t,d=q({name:i,props:t,classes:Yt,className:n,style:c,classNames:o,styles:s,unstyled:a,attributes:l});return(0,_.jsx)(X,{...d(`root`,{focusable:!0}),component:r,type:r===`button`?`button`:void 0,...u})});Zt.classes=Yt,Zt.displayName=`@mantine/core/UnstyledButton`;var Qt={root:`m_1b7284a3`},$t=V((e,{radius:t,shadow:n})=>({root:{"--paper-radius":t===void 0?void 0:A(t),"--paper-shadow":N(n)}})),en=Y(e=>{let t=K(`Paper`,null,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,withBorder:s,vars:c,radius:l,shadow:u,variant:d,mod:f,attributes:p,...m}=t,h=q({name:`Paper`,props:t,classes:Qt,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:p,vars:c,varsResolver:$t});return(0,_.jsx)(X,{mod:[{withBorder:s},f],...h(`root`),variant:d,...m})});en.classes=Qt,en.varsResolver=$t,en.displayName=`@mantine/core/Paper`;var tn=e=>({in:{opacity:1,transform:`scale(1)`},out:{opacity:0,transform:`scale(.9) translateY(${e===`bottom`?10:-10}px)`},transitionProperty:`transform, opacity`}),nn={fade:{in:{opacity:1},out:{opacity:0},transitionProperty:`opacity`},"fade-up":{in:{opacity:1,transform:`translateY(0)`},out:{opacity:0,transform:`translateY(30px)`},transitionProperty:`opacity, transform`},"fade-down":{in:{opacity:1,transform:`translateY(0)`},out:{opacity:0,transform:`translateY(-30px)`},transitionProperty:`opacity, transform`},"fade-left":{in:{opacity:1,transform:`translateX(0)`},out:{opacity:0,transform:`translateX(30px)`},transitionProperty:`opacity, transform`},"fade-right":{in:{opacity:1,transform:`translateX(0)`},out:{opacity:0,transform:`translateX(-30px)`},transitionProperty:`opacity, transform`},scale:{in:{opacity:1,transform:`scale(1)`},out:{opacity:0,transform:`scale(0)`},common:{transformOrigin:`top`},transitionProperty:`transform, opacity`},"scale-y":{in:{opacity:1,transform:`scaleY(1)`},out:{opacity:0,transform:`scaleY(0)`},common:{transformOrigin:`top`},transitionProperty:`transform, opacity`},"scale-x":{in:{opacity:1,transform:`scaleX(1)`},out:{opacity:0,transform:`scaleX(0)`},common:{transformOrigin:`left`},transitionProperty:`transform, opacity`},"skew-up":{in:{opacity:1,transform:`translateY(0) skew(0deg, 0deg)`},out:{opacity:0,transform:`translateY(-20px) skew(-10deg, -5deg)`},common:{transformOrigin:`top`},transitionProperty:`transform, opacity`},"skew-down":{in:{opacity:1,transform:`translateY(0) skew(0deg, 0deg)`},out:{opacity:0,transform:`translateY(20px) skew(-10deg, -5deg)`},common:{transformOrigin:`bottom`},transitionProperty:`transform, opacity`},"rotate-left":{in:{opacity:1,transform:`translateY(0) rotate(0deg)`},out:{opacity:0,transform:`translateY(20px) rotate(-5deg)`},common:{transformOrigin:`bottom`},transitionProperty:`transform, opacity`},"rotate-right":{in:{opacity:1,transform:`translateY(0) rotate(0deg)`},out:{opacity:0,transform:`translateY(20px) rotate(5deg)`},common:{transformOrigin:`top`},transitionProperty:`transform, opacity`},"slide-down":{in:{opacity:1,transform:`translateY(0)`},out:{opacity:0,transform:`translateY(-100%)`},common:{transformOrigin:`top`},transitionProperty:`transform, opacity`},"slide-up":{in:{opacity:1,transform:`translateY(0)`},out:{opacity:0,transform:`translateY(100%)`},common:{transformOrigin:`bottom`},transitionProperty:`transform, opacity`},"slide-left":{in:{opacity:1,transform:`translateX(0)`},out:{opacity:0,transform:`translateX(100%)`},common:{transformOrigin:`left`},transitionProperty:`transform, opacity`},"slide-right":{in:{opacity:1,transform:`translateX(0)`},out:{opacity:0,transform:`translateX(-100%)`},common:{transformOrigin:`right`},transitionProperty:`transform, opacity`},pop:{...tn(`bottom`),common:{transformOrigin:`center center`}},"pop-bottom-left":{...tn(`bottom`),common:{transformOrigin:`bottom left`}},"pop-bottom-right":{...tn(`bottom`),common:{transformOrigin:`bottom right`}},"pop-top-left":{...tn(`top`),common:{transformOrigin:`top left`}},"pop-top-right":{...tn(`top`),common:{transformOrigin:`top right`}}},rn={entering:`in`,entered:`in`,exiting:`out`,exited:`out`,"pre-exiting":`out`,"pre-entering":`out`};function an({transition:e,state:t,duration:n,timingFunction:r}){let i={WebkitBackfaceVisibility:`hidden`,transitionDuration:`${n}ms`,transitionTimingFunction:r};return typeof e==`string`?e in nn?{transitionProperty:nn[e].transitionProperty,...i,...nn[e].common,...nn[e][rn[t]]}:{}:{transitionProperty:e.transitionProperty,...i,...e.common,...e[rn[t]]}}var on=l(p(),1);function sn({duration:e,exitDuration:t,timingFunction:n,mounted:r,onEnter:i,onExit:a,onEntered:o,onExited:s,enterDelay:c,exitDelay:l}){let u=Ge(),d=re(),f=u.respectReducedMotion?d:!1,[p,m]=(0,g.useState)(f?0:e),[h,_]=(0,g.useState)(r?`entered`:`exited`),v=(0,g.useRef)(-1),y=(0,g.useRef)(-1),b=(0,g.useRef)(-1);function x(){window.clearTimeout(v.current),window.clearTimeout(y.current),cancelAnimationFrame(b.current)}let S=n=>{x();let r=n?i:a,c=n?o:s,l=f?0:n?e:t;m(l),l===0?(typeof r==`function`&&r(),typeof c==`function`&&c(),_(n?`entered`:`exited`)):b.current=requestAnimationFrame(()=>{on.flushSync(()=>{_(n?`pre-entering`:`pre-exiting`)}),b.current=requestAnimationFrame(()=>{typeof r==`function`&&r(),_(n?`entering`:`exiting`),v.current=window.setTimeout(()=>{typeof c==`function`&&c(),_(n?`entered`:`exited`)},l)})})},C=e=>{if(x(),typeof(e?c:l)!=`number`){S(e);return}y.current=window.setTimeout(()=>{S(e)},e?c:l)};return L(()=>{C(r)},[r]),(0,g.useEffect)(()=>()=>{x()},[]),{transitionDuration:p,transitionStatus:h,transitionTimingFunction:n||`ease`}}function cn({keepMounted:e,keepMountedMode:t=`activity`,transition:n=`fade`,duration:r=250,exitDuration:i=r,mounted:a,children:o,timingFunction:s=`ease`,onExit:c,onEntered:l,onEnter:u,onExited:d,enterDelay:f,exitDelay:p}){let m=Ne(),{transitionDuration:h,transitionStatus:v,transitionTimingFunction:y}=sn({mounted:a,exitDuration:i,duration:r,timingFunction:s,onExit:c,onEntered:l,onEnter:u,onExited:d,enterDelay:f,exitDelay:p});if(m===`test`)return a?(0,_.jsx)(_.Fragment,{children:o({})}):e?o({display:`none`}):null;if(h===0)return e?t===`display-none`?a?(0,_.jsx)(_.Fragment,{children:o({})}):o({display:`none`}):(0,_.jsx)(g.Activity,{mode:a?`visible`:`hidden`,children:o({})}):a?(0,_.jsx)(_.Fragment,{children:o({})}):null;let b=v===`exited`;if(e){let e=o(b?t===`display-none`?{display:`none`}:{}:an({transition:n,duration:h,state:v,timingFunction:y}));return t===`display-none`?e:(0,_.jsx)(g.Activity,{mode:b?`hidden`:`visible`,children:e})}return b?null:(0,_.jsx)(_.Fragment,{children:o(an({transition:n,duration:h,state:v,timingFunction:y}))})}cn.displayName=`@mantine/core/Transition`;var Z={root:`m_5ae2e3c`,barsLoader:`m_7a2bd4cd`,bar:`m_870bb79`,"bars-loader-animation":`m_5d2b3b9d`,dotsLoader:`m_4e3f22d7`,dot:`m_870c4af`,"loader-dots-animation":`m_aac34a1`,ovalLoader:`m_b34414df`,"oval-loader-animation":`m_f8e89c4b`},ln=({className:e,...t})=>(0,_.jsxs)(X,{component:`span`,className:H(Z.barsLoader,e),...t,children:[(0,_.jsx)(`span`,{className:Z.bar}),(0,_.jsx)(`span`,{className:Z.bar}),(0,_.jsx)(`span`,{className:Z.bar})]});ln.displayName=`@mantine/core/Bars`;var un=({className:e,...t})=>(0,_.jsxs)(X,{component:`span`,className:H(Z.dotsLoader,e),...t,children:[(0,_.jsx)(`span`,{className:Z.dot}),(0,_.jsx)(`span`,{className:Z.dot}),(0,_.jsx)(`span`,{className:Z.dot})]});un.displayName=`@mantine/core/Dots`;var dn=({className:e,...t})=>(0,_.jsx)(X,{component:`span`,className:H(Z.ovalLoader,e),...t});dn.displayName=`@mantine/core/Oval`;var fn={bars:ln,oval:dn,dots:un},pn={loaders:fn,type:`oval`},mn=V((e,{size:t,color:n})=>({root:{"--loader-size":O(t,`loader-size`),"--loader-color":n?ve(n,e):void 0}})),hn=J(e=>{let t=K(`Loader`,pn,e),{size:n,color:r,type:i,vars:a,className:o,style:s,classNames:c,styles:l,unstyled:u,loaders:d,variant:f,children:p,attributes:m,...h}=t,g=q({name:`Loader`,props:t,classes:Z,className:o,style:s,classNames:c,styles:l,unstyled:u,attributes:m,vars:a,varsResolver:mn});return p?(0,_.jsx)(X,{...g(`root`),...h,children:p}):(0,_.jsx)(X,{...g(`root`),component:d[i],variant:f,size:n,...h})});hn.defaultLoaders=fn,hn.classes=Z,hn.varsResolver=mn,hn.displayName=`@mantine/core/Loader`;function gn({size:e=`var(--cb-icon-size, 70%)`,style:t,...n}){return(0,_.jsx)(`svg`,{viewBox:`0 0 15 15`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,style:{...t,width:e,height:e},...n,children:(0,_.jsx)(`path`,{d:`M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z`,fill:`currentColor`,fillRule:`evenodd`,clipRule:`evenodd`})})}gn.displayName=`@mantine/core/CloseIcon`;var _n={root:`m_86a44da5`,"root--subtle":`m_220c80f2`},vn={variant:`subtle`},yn=V((e,{size:t,radius:n,iconSize:r})=>({root:{"--cb-size":O(t,`cb-size`),"--cb-radius":n===void 0?void 0:A(n),"--cb-icon-size":w(r)}})),bn=Y(e=>{let t=K(`CloseButton`,vn,e),{iconSize:n,children:r,vars:i,radius:a,className:o,classNames:s,style:c,styles:l,unstyled:u,"data-disabled":d,disabled:f,variant:p,icon:m,mod:h,attributes:g,__staticSelector:v,...y}=t,b=q({name:v||`CloseButton`,props:t,className:o,style:c,classes:_n,classNames:s,styles:l,unstyled:u,attributes:g,vars:i,varsResolver:yn});return(0,_.jsxs)(Zt,{...y,unstyled:u,variant:p,disabled:f,mod:[{disabled:f||d},h],...b(`root`,{variant:p,active:!f&&!d}),children:[m||(0,_.jsx)(gn,{}),r]})});bn.classes=_n,bn.varsResolver=yn,bn.displayName=`@mantine/core/CloseButton`;function xn(e){return g.Children.toArray(e).filter(Boolean)}var Sn={root:`m_4081bf90`},Cn={preventGrowOverflow:!0,gap:`md`,align:`center`,justify:`flex-start`,wrap:`wrap`},wn=V((e,{grow:t,preventGrowOverflow:n,gap:r,align:i,justify:a,wrap:o},{childWidth:s})=>({root:{"--group-child-width":t&&n?s:void 0,"--group-gap":k(r),"--group-align":i,"--group-justify":a,"--group-wrap":o}})),Tn=J(e=>{let t=K(`Group`,Cn,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,children:s,gap:c,align:l,justify:u,wrap:d,grow:f,preventGrowOverflow:p,vars:m,variant:h,__size:g,mod:v,attributes:y,...b}=t,x=xn(s),S=x.length,C=k(c??`md`),w=q({name:`Group`,props:t,stylesCtx:{childWidth:`calc(${100/S}% - (${C} - ${C} / ${S}))`},className:r,style:i,classes:Sn,classNames:n,styles:a,unstyled:o,attributes:y,vars:m,varsResolver:wn});return(0,_.jsx)(X,{...w(`root`),variant:h,mod:[{grow:f},v],size:g,...b,children:x})});Tn.classes=Sn,Tn.varsResolver=wn,Tn.displayName=`@mantine/core/Group`;var En=(0,g.createContext)({size:`sm`}),Dn=J(e=>{let t=K(`InputClearButton`,null,e),{size:n,variant:r,vars:i,classNames:a,styles:o,...s}=t,c=(0,g.use)(En),{resolvedClassNames:l,resolvedStyles:u}=qe({classNames:a,styles:o,props:t});return(0,_.jsx)(bn,{variant:r||`transparent`,size:n||c?.size||`sm`,classNames:l,styles:u,__staticSelector:`InputClearButton`,style:{pointerEvents:`all`,background:`var(--input-bg)`,...s.style},...s})});Dn.displayName=`@mantine/core/InputClearButton`;var On={xs:7,sm:8,md:10,lg:12,xl:15};function kn({__clearable:e,__clearSection:t,rightSection:n,__defaultRightSection:r,size:i=`sm`,__clearSectionMode:a=`both`}){let o=e&&t;return a===`rightSection`?n===null?null:n||r:a===`clear`?n===null?null:o||r:o&&(n||r)?(0,_.jsxs)(`div`,{"data-combined-clear-section":!0,style:{display:`flex`,gap:2,alignItems:`center`,paddingInlineEnd:On[i]},children:[o,n||r]}):n===null?null:n||o||r}var An=(0,g.createContext)({offsetBottom:!1,offsetTop:!1,describedBy:void 0,getStyles:null,inputId:void 0,labelId:void 0}),Q={wrapper:`m_6c018570`,input:`m_8fb7ebe7`,bottomSection:`m_93f4ed57`,section:`m_82577fc2`,placeholder:`m_88bacfd0`,root:`m_46b77525`,label:`m_8fdc1311`,required:`m_78a94662`,error:`m_8f816625`,success:`m_9d9d40e0`,description:`m_fe47ce59`},jn=V((e,{size:t})=>({description:{"--input-description-size":t===void 0?void 0:`calc(${j(t)} - ${w(2)})`}})),Mn=J(e=>{let t=K(`InputDescription`,null,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,__staticSelector:c,__inheritStyles:l=!0,attributes:u,...d}=K(`InputDescription`,null,t),f=(0,g.use)(An),p=q({name:[`InputWrapper`,c],props:t,classes:Q,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:u,rootSelector:`description`,vars:s,varsResolver:jn}),m=l&&f?.getStyles||p;return(0,_.jsx)(X,{component:`p`,...m(`description`,f?.getStyles?{className:r,style:i}:void 0),...d})});Mn.classes=Q,Mn.varsResolver=jn,Mn.displayName=`@mantine/core/InputDescription`;var Nn=V((e,{size:t})=>({error:{"--input-error-size":t===void 0?void 0:`calc(${j(t)} - ${w(2)})`}})),Pn=J(e=>{let t=K(`InputError`,null,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,attributes:c,__staticSelector:l,__inheritStyles:u=!0,...d}=t,f=q({name:[`InputWrapper`,l],props:t,classes:Q,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:c,rootSelector:`error`,vars:s,varsResolver:Nn}),p=(0,g.use)(An),m=u&&p?.getStyles||f;return(0,_.jsx)(X,{component:`p`,...m(`error`,p?.getStyles?{className:r,style:i}:void 0),...d})});Pn.classes=Q,Pn.varsResolver=Nn,Pn.displayName=`@mantine/core/InputError`;var Fn={labelElement:`label`},In=V((e,{size:t})=>({label:{"--input-label-size":j(t),"--input-asterisk-color":void 0}})),Ln=J(e=>{let t=K(`InputLabel`,Fn,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,labelElement:c,required:l,htmlFor:u,onMouseDown:d,children:f,__staticSelector:p,mod:m,attributes:h,...v}=t,y=q({name:[`InputWrapper`,p],props:t,classes:Q,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:h,rootSelector:`label`,vars:s,varsResolver:In}),b=(0,g.use)(An),x=b?.getStyles||y,S=v.component||c,C=typeof S!=`string`||S===`label`;return(0,_.jsxs)(X,{...x(`label`,b?.getStyles?{className:r,style:i}:void 0),component:c,htmlFor:C?u:void 0,mod:[{required:l},m],onMouseDown:e=>{d?.(e),!e.defaultPrevented&&e.detail>1&&e.preventDefault()},...v,children:[f,l&&(0,_.jsx)(`span`,{...x(`required`),"aria-hidden":!0,children:` *`})]})});Ln.classes=Q,Ln.varsResolver=In,Ln.displayName=`@mantine/core/InputLabel`;var Rn=J(e=>{let t=K(`InputPlaceholder`,null,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,__staticSelector:c,error:l,mod:u,attributes:d,...f}=t,p=q({name:[`InputPlaceholder`,c],props:t,classes:Q,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:d,rootSelector:`placeholder`});return(0,_.jsx)(X,{...p(`placeholder`),mod:[{error:!!l},u],component:`span`,...f})});Rn.classes=Q,Rn.displayName=`@mantine/core/InputPlaceholder`;var zn=V((e,{size:t})=>({success:{"--input-success-size":t===void 0?void 0:`calc(${j(t)} - ${w(2)})`}})),Bn=J(e=>{let t=K(`InputSuccess`,null,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,attributes:c,__staticSelector:l,__inheritStyles:u=!0,...d}=t,f=q({name:[`InputWrapper`,l],props:t,classes:Q,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:c,rootSelector:`success`,vars:s,varsResolver:zn}),p=(0,g.use)(An),m=u&&p?.getStyles||f;return(0,_.jsx)(X,{component:`p`,...m(`success`,p?.getStyles?{className:r,style:i}:void 0),...d})});Bn.classes=Q,Bn.varsResolver=zn,Bn.displayName=`@mantine/core/InputSuccess`;function Vn(e,{hasDescription:t,hasError:n}){let r=e.findIndex(e=>e===`input`),i=e.slice(0,r),a=e.slice(r+1),o=t&&i.includes(`description`)||n&&i.includes(`error`);return{offsetBottom:t&&a.includes(`description`)||n&&a.includes(`error`),offsetTop:o}}var Hn={labelElement:`label`,inputContainer:e=>e,inputWrapperOrder:[`label`,`description`,`input`,`error`]},Un=V((e,{size:t})=>({label:{"--input-label-size":j(t),"--input-asterisk-color":void 0},error:{"--input-error-size":t===void 0?void 0:`calc(${j(t)} - ${w(2)})`},success:{"--input-success-size":t===void 0?void 0:`calc(${j(t)} - ${w(2)})`},description:{"--input-description-size":t===void 0?void 0:`calc(${j(t)} - ${w(2)})`}})),Wn=J(e=>{let t=K(`InputWrapper`,Hn,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,size:c,variant:l,__staticSelector:u,inputContainer:d,inputWrapperOrder:f,label:p,error:m,success:h,description:v,labelProps:y,descriptionProps:b,errorProps:x,successProps:S,labelElement:C,children:w,withAsterisk:T,id:E,required:D,__stylesApiProps:O,mod:k,attributes:A,...j}=t,M=q({name:[`InputWrapper`,u],props:O||t,classes:Q,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:A,vars:s,varsResolver:Un}),N={size:c,variant:l,__staticSelector:u},P=ne(E),F=typeof T==`boolean`?T:D,ee=x?.id||`${P}-error`,I=S?.id||`${P}-success`,te=b?.id||`${P}-description`,L=P,R=!!m&&typeof m!=`boolean`,z=!!h&&typeof h!=`boolean`&&!m,B=!!v,re=R&&f.includes(`error`),V=z&&f.includes(`error`),ie=B&&f.includes(`description`),H=`${re?ee:``} ${V?I:``} ${ie?te:``}`,ae=H.trim().length>0?H.trim():void 0,oe=y?.id||`${P}-label`,U=p&&(0,_.jsx)(Ln,{labelElement:C,id:oe,htmlFor:L,required:F,...N,...y,children:p},`label`),se=B&&(0,_.jsx)(Mn,{...b,...N,size:b?.size||N.size,id:b?.id||te,children:v},`description`),W=(0,_.jsx)(g.Fragment,{children:d(w)},`input`),ce=R&&(0,g.createElement)(Pn,{...x,...N,size:x?.size||N.size,key:`error`,id:x?.id||ee},m),le=z&&(0,g.createElement)(Bn,{...S,...N,size:S?.size||N.size,key:`success`,id:S?.id||I},h),ue=f.map(e=>{switch(e){case`label`:return U;case`input`:return W;case`description`:return se;case`error`:return ce||le;default:return null}});return(0,_.jsx)(An,{value:{getStyles:M,describedBy:ae,inputId:L,labelId:U&&f.includes(`label`)?oe:void 0,...Vn(f,{hasDescription:B,hasError:R||z})},children:(0,_.jsx)(X,{variant:l,size:c,mod:[{error:!!m,success:!!h&&!m},k],id:C===`label`?void 0:E,...M(`root`),...j,children:ue})})});Wn.classes=Q,Wn.varsResolver=Un,Wn.displayName=`@mantine/core/InputWrapper`;var Gn={variant:`default`,leftSectionPointerEvents:`none`,rightSectionPointerEvents:`none`,withAria:!0,withErrorStyles:!0,withSuccessStyles:!0,size:`sm`,loading:!1,loadingPosition:`right`},Kn=V((e,t,n)=>({wrapper:{"--input-margin-top":n.offsetTop?`calc(var(--mantine-spacing-xs) / 2)`:void 0,"--input-margin-bottom":n.offsetBottom?`calc(var(--mantine-spacing-xs) / 2)`:void 0,"--input-height":O(t.size,`input-height`),"--input-fz":j(t.size),"--input-radius":t.radius===void 0?void 0:A(t.radius),"--input-left-section-width":t.leftSectionWidth===void 0?void 0:w(t.leftSectionWidth),"--input-right-section-width":t.rightSectionWidth===void 0?void 0:w(t.rightSectionWidth),"--input-padding-y":t.multiline?O(t.size,`input-padding-y`):void 0,"--input-left-section-pointer-events":t.leftSectionPointerEvents,"--input-right-section-pointer-events":t.rightSectionPointerEvents}})),$=Y(e=>{let t=K(`Input`,Gn,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,required:s,__staticSelector:c,__stylesApiProps:l,size:u,wrapperProps:d,error:f,success:p,disabled:m,leftSection:h,leftSectionProps:v,leftSectionWidth:y,rightSection:b,rightSectionProps:x,rightSectionWidth:S,rightSectionPointerEvents:C,leftSectionPointerEvents:w,variant:T,vars:E,pointer:D,multiline:O,radius:k,id:A,withAria:j,withErrorStyles:M,withSuccessStyles:N,mod:P,inputSize:F,attributes:ee,__clearSection:I,__clearable:te,__clearSectionMode:L,__defaultRightSection:ne,loading:R,loadingPosition:z,__bottomSection:B,__bottomSectionProps:re,rootRef:V,dir:ie,...H}=t,{styleProps:ae,rest:oe}=ht(H),U=(0,g.use)(An),se={offsetBottom:U?.offsetBottom,offsetTop:U?.offsetTop},W=q({name:[`Input`,c],props:l||t,classes:Q,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:ee,stylesCtx:se,rootSelector:`wrapper`,vars:E,varsResolver:Kn}),ce=j?{required:s,disabled:m,"aria-invalid":f?!0:void 0,"aria-describedby":U?.describedBy,id:U?.inputId||A}:{},le=R?(0,_.jsx)(hn,{size:z===`left`?`calc(var(--input-left-section-size) / 2)`:`calc(var(--input-right-section-size) / 2)`}):null,ue=R&&z===`left`?le:h,de=kn({__clearable:te,__clearSection:I,rightSection:R&&z===`right`?le:b,__defaultRightSection:ne,size:u,__clearSectionMode:L});return(0,_.jsx)(En,{value:{size:u||`sm`},children:(0,_.jsxs)(X,{ref:V,dir:ie,...W(`wrapper`),...ae,...d,mod:[{error:!!f&&M,success:!!p&&!f&&N,pointer:D,disabled:m,multiline:O,withRightSection:!!de,withLeftSection:!!ue,withBottomSection:!!B},P],variant:T,size:u,children:[ue&&(0,_.jsx)(`div`,{...v,"data-position":`left`,...W(`section`,{className:v?.className,style:v?.style}),children:ue}),(0,_.jsx)(X,{component:`input`,...oe,...ce,required:s,mod:{disabled:m,error:!!f&&M,success:!!p&&!f&&N},variant:T,__size:F,...W(`input`)}),B&&(0,_.jsx)(`div`,{...re,...W(`bottomSection`,{className:re?.className,style:re?.style}),children:B}),de&&(0,_.jsx)(`div`,{...x,"data-position":`right`,...W(`section`,{className:x?.className,style:x?.style}),children:de})]})})});$.classes=Q,$.varsResolver=Kn,$.Wrapper=Wn,$.Label=Ln,$.Error=Pn,$.Success=Bn,$.Description=Mn,$.Placeholder=Rn,$.ClearButton=Dn,$.displayName=`@mantine/core/Input`;function qn(e,t,n){let r=K([`Input`,`InputWrapper`,e],t,n),{label:i,description:a,error:o,success:s,required:c,classNames:l,styles:u,className:d,unstyled:f,__staticSelector:p,__stylesApiProps:m,errorProps:h,successProps:g,labelProps:_,descriptionProps:v,wrapperProps:y,id:b,size:x,style:S,inputContainer:C,inputWrapperOrder:w,withAsterisk:T,variant:E,vars:D,mod:O,attributes:k,...A}=r,{styleProps:j,rest:M}=ht(A),N={label:i,description:a,error:o,success:s,required:c,classNames:l,className:d,__staticSelector:p,__stylesApiProps:m||r,errorProps:h,successProps:g,labelProps:_,descriptionProps:v,unstyled:f,styles:u,size:x,style:S,inputContainer:C,inputWrapperOrder:w,withAsterisk:T,variant:E,id:b,mod:O,attributes:k,...y};return{...M,classNames:l,styles:u,unstyled:f,wrapperProps:{...N,...j},inputProps:{required:c,classNames:l,styles:u,unstyled:f,size:x,__staticSelector:p,__stylesApiProps:m||r,error:o,success:s,variant:E,id:b,attributes:k}}}var Jn={__staticSelector:`InputBase`,withAria:!0,size:`sm`},Yn=Y(e=>{let{inputProps:t,wrapperProps:n,...r}=qn(`InputBase`,Jn,e);return(0,_.jsx)($.Wrapper,{...n,children:(0,_.jsx)($,{...t,...r})})});Yn.classes={...$.classes,...$.Wrapper.classes},Yn.displayName=`@mantine/core/InputBase`;var Xn={root:`m_66836ed3`,wrapper:`m_a5d60502`,body:`m_667c2793`,title:`m_6a03f287`,label:`m_698f4f23`,icon:`m_667f2a6a`,message:`m_7fa78076`,closeButton:`m_87f54839`},Zn=V((e,{radius:t,color:n,variant:r,autoContrast:i})=>{let a=e.variantColorResolver({color:n||e.primaryColor,theme:e,variant:r||`light`,autoContrast:i});return{root:{"--alert-radius":t===void 0?void 0:A(t),"--alert-bg":n||r?a.background:void 0,"--alert-color":a.color,"--alert-bd":n||r?a.border:void 0}}}),Qn=J(e=>{let t=K(`Alert`,null,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,radius:c,color:l,title:u,children:d,id:f,icon:p,withCloseButton:m,onClose:h,closeButtonLabel:g,variant:v,autoContrast:y,role:b,attributes:x,...S}=t,C=q({name:`Alert`,classes:Xn,props:t,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:x,vars:s,varsResolver:Zn}),w=ne(f),T=u&&`${w}-title`||void 0,E=`${w}-body`;return(0,_.jsx)(X,{id:w,...C(`root`,{variant:v}),variant:v,...S,role:b||`alert`,"aria-describedby":d?E:void 0,"aria-labelledby":u?T:void 0,children:(0,_.jsxs)(`div`,{...C(`wrapper`),children:[p&&(0,_.jsx)(`div`,{...C(`icon`),children:p}),(0,_.jsxs)(`div`,{...C(`body`),children:[u&&(0,_.jsx)(`div`,{...C(`title`),"data-with-close-button":m||void 0,children:(0,_.jsx)(`span`,{id:T,...C(`label`),children:u})}),d&&(0,_.jsx)(`div`,{id:E,...C(`message`),"data-variant":v,children:d})]}),m&&(0,_.jsx)(bn,{...C(`closeButton`),onClick:h,variant:`transparent`,size:16,iconSize:16,"aria-label":g,unstyled:o})]})})});Qn.classes=Xn,Qn.varsResolver=Zn,Qn.displayName=`@mantine/core/Alert`;var $n={root:`m_b6d8b162`};function er(e){if(e===`start`)return`start`;if(e===`end`||e)return`end`}var tr={inherit:!1},nr=V((e,{variant:t,lineClamp:n,gradient:r,size:i,textWrap:a})=>({root:{"--text-fz":j(i),"--text-lh":M(i),"--text-gradient":t===`gradient`?xe(r,e):void 0,"--text-line-clamp":typeof n==`number`?n.toString():void 0,"--text-text-wrap":a}})),rr=Y(e=>{let t=K(`Text`,tr,e),{lineClamp:n,truncate:r,inline:i,inherit:a,gradient:o,span:s,textWrap:c,__staticSelector:l,vars:u,className:d,style:f,classNames:p,styles:m,unstyled:h,variant:g,mod:v,size:y,attributes:b,...x}=t,S=q({name:[`Text`,l],props:t,classes:$n,className:d,style:f,classNames:p,styles:m,unstyled:h,attributes:b,vars:u,varsResolver:nr});return(0,_.jsx)(X,{...S(`root`,{focusable:!0}),component:s?`span`:`p`,variant:g,mod:[{truncate:er(r),lineClamp:typeof n==`number`,inline:i,inherit:a},v],size:y,...x})});rr.classes=$n,rr.varsResolver=nr,rr.displayName=`@mantine/core/Text`;var ir={root:`m_77c9d27d`,inner:`m_80f1301b`,label:`m_811560b9`,section:`m_a74036a`,loader:`m_a25b86ee`,group:`m_80d6d844`,groupSection:`m_70be2a01`},ar={orientation:`horizontal`},or=V((e,{borderWidth:t})=>({group:{"--button-border-width":w(t)}})),sr=J(e=>{let t=K(`ButtonGroup`,ar,e),{className:n,style:r,classNames:i,styles:a,unstyled:o,orientation:s,vars:c,borderWidth:l,mod:u,attributes:d,...f}=K(`ButtonGroup`,ar,e),p=q({name:`ButtonGroup`,props:t,classes:ir,className:n,style:r,classNames:i,styles:a,unstyled:o,attributes:d,vars:c,varsResolver:or,rootSelector:`group`});return(0,_.jsx)(X,{...p(`group`),mod:[{orientation:s},u],role:`group`,...f})});sr.classes=ir,sr.varsResolver=or,sr.displayName=`@mantine/core/ButtonGroup`;var cr=V((e,{radius:t,color:n,gradient:r,variant:i,autoContrast:a,size:o})=>{let s=e.variantColorResolver({color:n||e.primaryColor,theme:e,gradient:r,variant:i||`filled`,autoContrast:a});return{groupSection:{"--section-height":O(o,`section-height`),"--section-padding-x":O(o,`section-padding-x`),"--section-fz":o?.includes(`compact`)?j(o.replace(`compact-`,``)):j(o),"--section-radius":t===void 0?void 0:A(t),"--section-bg":n||i?s.background:void 0,"--section-color":s.color,"--section-bd":n||i?s.border:void 0}}}),lr=J(e=>{let t=K(`ButtonGroupSection`,null,e),{className:n,style:r,classNames:i,styles:a,unstyled:o,vars:s,gradient:c,radius:l,autoContrast:u,attributes:d,...f}=t,p=q({name:`ButtonGroupSection`,props:t,classes:ir,className:n,style:r,classNames:i,styles:a,unstyled:o,attributes:d,vars:s,varsResolver:cr,rootSelector:`groupSection`});return(0,_.jsx)(X,{...p(`groupSection`),...f})});lr.classes=ir,lr.varsResolver=cr,lr.displayName=`@mantine/core/ButtonGroupSection`;var ur={in:{opacity:1,transform:`translate(-50%, calc(-50% + ${w(1)}))`},out:{opacity:0,transform:`translate(-50%, -200%)`},common:{transformOrigin:`center`},transitionProperty:`transform, opacity`},dr=V((e,{radius:t,color:n,gradient:r,variant:i,size:a,justify:o,autoContrast:s})=>{let c=e.variantColorResolver({color:n||e.primaryColor,theme:e,gradient:r,variant:i||`filled`,autoContrast:s});return{root:{"--button-justify":o,"--button-height":O(a,`button-height`),"--button-padding-x":O(a,`button-padding-x`),"--button-fz":a?.includes(`compact`)?j(a.replace(`compact-`,``)):j(a),"--button-radius":t===void 0?void 0:A(t),"--button-bg":n||i?c.background:void 0,"--button-hover":n||i?c.hover:void 0,"--button-color":c.color,"--button-bd":n||i?c.border:void 0,"--button-hover-color":n||i?c.hoverColor:void 0}}}),fr=Y(e=>{let t=K(`Button`,null,e),{style:n,vars:r,className:i,color:a,disabled:o,children:s,leftSection:c,rightSection:l,fullWidth:u,variant:d,radius:f,loading:p,loaderProps:m,gradient:h,classNames:g,styles:v,unstyled:y,"data-disabled":b,autoContrast:x,mod:S,attributes:C,...w}=t,T=q({name:`Button`,props:t,classes:ir,className:i,style:n,classNames:g,styles:v,unstyled:y,attributes:C,vars:r,varsResolver:dr}),E=!!c,D=!!l;return(0,_.jsxs)(Zt,{...T(`root`,{active:!o&&!p&&!b}),unstyled:y,variant:d,disabled:o||p,mod:[{disabled:o||b,loading:p,block:u,"with-left-section":E,"with-right-section":D},S],...w,children:[typeof p==`boolean`&&(0,_.jsx)(cn,{mounted:p,transition:ur,duration:150,children:e=>(0,_.jsx)(X,{component:`span`,...T(`loader`,{style:e}),"aria-hidden":!0,children:(0,_.jsx)(hn,{color:`var(--button-color)`,size:`calc(var(--button-height) / 1.8)`,...m})})}),(0,_.jsxs)(`span`,{...T(`inner`),children:[c&&(0,_.jsx)(X,{component:`span`,...T(`section`),mod:{position:`left`},children:c}),(0,_.jsx)(X,{component:`span`,mod:{loading:p},...T(`label`),children:s}),l&&(0,_.jsx)(X,{component:`span`,...T(`section`),mod:{position:`right`},children:l})]})]})});fr.classes=ir,fr.varsResolver=dr,fr.displayName=`@mantine/core/Button`,fr.Group=sr,fr.GroupSection=lr;var pr={root:`m_4451eb3a`},mr=Y(e=>{let t=K(`Center`,null,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,inline:c,mod:l,attributes:u,...d}=t,f=q({name:`Center`,props:t,classes:pr,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:u,vars:s});return(0,_.jsx)(X,{mod:[{inline:c},l],...f(`root`),...d})});mr.classes=pr,mr.displayName=`@mantine/core/Center`;var hr={root:`m_7485cace`},gr={strategy:`block`},_r=V((e,{size:t,fluid:n})=>({root:{"--container-size":n?void 0:O(t,`container-size`)}})),vr=J(e=>{let t=K(`Container`,gr,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,fluid:c,mod:l,attributes:u,strategy:d,...f}=t,p=q({name:`Container`,classes:hr,props:t,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:u,vars:s,varsResolver:_r});return(0,_.jsx)(X,{mod:[{fluid:c,strategy:d},l],...p(`root`),...f})});vr.classes=hr,vr.varsResolver=_r,vr.displayName=`@mantine/core/Container`;var yr={root:`m_6d731127`},br={gap:`md`,align:`stretch`,justify:`flex-start`},xr=V((e,{gap:t,align:n,justify:r})=>({root:{"--stack-gap":k(t),"--stack-align":n,"--stack-justify":r}})),Sr=J(e=>{let t=K(`Stack`,br,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,align:c,justify:l,gap:u,variant:d,attributes:f,...p}=t,m=q({name:`Stack`,props:t,classes:yr,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:f,vars:s,varsResolver:xr});return(0,_.jsx)(X,{...m(`root`),variant:d,...p})});Sr.classes=yr,Sr.varsResolver=xr,Sr.displayName=`@mantine/core/Stack`;var Cr={root:`m_7341320d`},wr=V((e,{size:t,radius:n,variant:r,gradient:i,color:a,autoContrast:o})=>{let s=e.variantColorResolver({color:a||e.primaryColor,theme:e,gradient:i,variant:r||`filled`,autoContrast:o});return{root:{"--ti-size":O(t,`ti-size`),"--ti-radius":n===void 0?void 0:A(n),"--ti-bg":a||r?s.background:void 0,"--ti-color":a||r?s.color:void 0,"--ti-bd":a||r?s.border:void 0}}}),Tr=J(e=>{let t=K(`ThemeIcon`,null,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,autoContrast:c,attributes:l,...u}=t,d=q({name:`ThemeIcon`,classes:Cr,props:t,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:l,vars:s,varsResolver:wr});return(0,_.jsx)(X,{...d(`root`),...u})});Tr.classes=Cr,Tr.varsResolver=wr,Tr.displayName=`@mantine/core/ThemeIcon`;var Er=[`h1`,`h2`,`h3`,`h4`,`h5`,`h6`],Dr=[`xs`,`sm`,`md`,`lg`,`xl`];function Or(e,t){let n=t===void 0?`h${e}`:t;return Er.includes(n)?{fontSize:`var(--mantine-${n}-font-size)`,fontWeight:`var(--mantine-${n}-font-weight)`,lineHeight:`var(--mantine-${n}-line-height)`}:Dr.includes(n)?{fontSize:`var(--mantine-font-size-${n})`,fontWeight:`var(--mantine-h${e}-font-weight)`,lineHeight:`var(--mantine-h${e}-line-height)`}:{fontSize:w(n),fontWeight:`var(--mantine-h${e}-font-weight)`,lineHeight:`var(--mantine-h${e}-line-height)`}}var kr={root:`m_8a5d1357`},Ar={order:1},jr=V((e,{order:t,size:n,lineClamp:r,textWrap:i})=>{let a=Or(t||1,n);return{root:{"--title-fw":a.fontWeight,"--title-lh":a.lineHeight,"--title-fz":a.fontSize,"--title-line-clamp":typeof r==`number`?r.toString():void 0,"--title-text-wrap":i}}}),Mr=J(e=>{let t=K(`Title`,Ar,e),{classNames:n,className:r,style:i,styles:a,unstyled:o,order:s,vars:c,size:l,variant:u,lineClamp:d,textWrap:f,mod:p,attributes:m,...h}=t,g=q({name:`Title`,props:t,classes:kr,className:r,style:i,classNames:n,styles:a,unstyled:o,attributes:m,vars:c,varsResolver:jr});return[1,2,3,4,5,6].includes(s)?(0,_.jsx)(X,{...g(`root`),component:`h${s}`,variant:u,mod:[{order:s,lineClamp:typeof d==`number`},p],size:l,...h}):null});Mr.classes=kr,Mr.varsResolver=jr,Mr.displayName=`@mantine/core/Title`;var Nr=new Map([[`bold`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z`}))],[`duotone`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M232,56V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56Z`,opacity:`0.2`}),g.createElement(`path`,{d:`M205.66,85.66l-96,96a8,8,0,0,1-11.32,0l-40-40a8,8,0,0,1,11.32-11.32L104,164.69l90.34-90.35a8,8,0,0,1,11.32,11.32Z`}))],[`fill`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM205.66,85.66l-96,96a8,8,0,0,1-11.32,0l-40-40a8,8,0,0,1,11.32-11.32L104,164.69l90.34-90.35a8,8,0,0,1,11.32,11.32Z`}))],[`light`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M228.24,76.24l-128,128a6,6,0,0,1-8.48,0l-56-56a6,6,0,0,1,8.48-8.48L96,191.51,219.76,67.76a6,6,0,0,1,8.48,8.48Z`}))],[`regular`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z`}))],[`thin`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M226.83,74.83l-128,128a4,4,0,0,1-5.66,0l-56-56a4,4,0,0,1,5.66-5.66L96,194.34,221.17,69.17a4,4,0,1,1,5.66,5.66Z`}))]]),Pr=new Map([[`bold`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z`}))],[`duotone`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M216,40V168H168V88H88V40Z`,opacity:`0.2`}),g.createElement(`path`,{d:`M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32ZM160,208H48V96H160Zm48-48H176V88a8,8,0,0,0-8-8H96V48H208Z`}))],[`fill`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32Zm-8,128H176V88a8,8,0,0,0-8-8H96V48H208Z`}))],[`light`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M216,34H88a6,6,0,0,0-6,6V82H40a6,6,0,0,0-6,6V216a6,6,0,0,0,6,6H168a6,6,0,0,0,6-6V174h42a6,6,0,0,0,6-6V40A6,6,0,0,0,216,34ZM162,210H46V94H162Zm48-48H174V88a6,6,0,0,0-6-6H94V46H210Z`}))],[`regular`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32ZM160,208H48V96H160Zm48-48H176V88a8,8,0,0,0-8-8H96V48H208Z`}))],[`thin`,g.createElement(g.Fragment,null,g.createElement(`path`,{d:`M216,36H88a4,4,0,0,0-4,4V84H40a4,4,0,0,0-4,4V216a4,4,0,0,0,4,4H168a4,4,0,0,0,4-4V172h44a4,4,0,0,0,4-4V40A4,4,0,0,0,216,36ZM164,212H44V92H164Zm48-48H172V88a4,4,0,0,0-4-4H92V44H212Z`}))]]),Fr=(0,g.createContext)({color:`currentColor`,size:`1em`,weight:`regular`,mirrored:!1}),Ir=g.forwardRef((e,t)=>{let{alt:n,color:r,size:i,weight:a,mirrored:o,children:s,weights:c,...l}=e,{color:u=`currentColor`,size:d,weight:f=`regular`,mirrored:p=!1,...m}=g.useContext(Fr);return g.createElement(`svg`,{ref:t,xmlns:`http://www.w3.org/2000/svg`,width:i??d,height:i??d,fill:r??u,viewBox:`0 0 256 256`,transform:o||p?`scale(-1, 1)`:void 0,...m,...l},!!n&&g.createElement(`title`,null,n),s,c.get(a??f))});Ir.displayName=`IconBase`;var Lr=g.forwardRef((e,t)=>g.createElement(Ir,{ref:t,...e,weights:Nr}));Lr.displayName=`CheckIcon`;var Rr=Lr,zr=g.forwardRef((e,t)=>g.createElement(Ir,{ref:t,...e,weights:Pr}));zr.displayName=`CopyIcon`;var Br=zr,Vr={small:{fontSize:15,gap:12,tracking:`0.16em`},regular:{fontSize:18,gap:14,tracking:`0.17em`},large:{fontSize:22,gap:16,tracking:`0.18em`}};function Hr({size:e=`regular`}){let t=Vr[e];return(0,_.jsxs)(Tn,{component:`span`,gap:t.gap,wrap:`nowrap`,"aria-label":`Fanout`,children:[(0,_.jsx)(Ur,{size:e}),(0,_.jsx)(rr,{component:`span`,fz:t.fontSize,fw:800,lh:1,lts:t.tracking,tt:`uppercase`,children:`Fanout`})]})}function Ur({size:e=`regular`}){let t={small:32,regular:46,large:50}[e];return(0,_.jsx)(Tr,{size:t,variant:`transparent`,"aria-hidden":`true`,children:(0,_.jsx)(Wr,{})})}function Wr(){let e=(0,g.useId)().replace(/[^a-zA-Z0-9-]/g,``),t=`fo-top-${e}`,n=`fo-mid-${e}`,r=`fo-bot-${e}`;return(0,_.jsxs)(`svg`,{viewBox:`35 44 200 200`,width:`100%`,height:`100%`,"aria-hidden":`true`,children:[(0,_.jsxs)(`defs`,{children:[(0,_.jsxs)(`linearGradient`,{id:t,x1:`54`,y1:`52`,x2:`210`,y2:`104`,gradientUnits:`userSpaceOnUse`,children:[(0,_.jsx)(`stop`,{offset:`0`,stopColor:`#5FE8CE`}),(0,_.jsx)(`stop`,{offset:`0.55`,stopColor:`#81E4B9`}),(0,_.jsx)(`stop`,{offset:`1`,stopColor:`#D9F276`})]}),(0,_.jsxs)(`linearGradient`,{id:n,x1:`58`,y1:`112`,x2:`176`,y2:`154`,gradientUnits:`userSpaceOnUse`,children:[(0,_.jsx)(`stop`,{offset:`0`,stopColor:`#536FFF`}),(0,_.jsx)(`stop`,{offset:`0.52`,stopColor:`#41B6F8`}),(0,_.jsx)(`stop`,{offset:`1`,stopColor:`#66D0EE`})]}),(0,_.jsxs)(`linearGradient`,{id:r,x1:`58`,y1:`166`,x2:`145`,y2:`220`,gradientUnits:`userSpaceOnUse`,children:[(0,_.jsx)(`stop`,{offset:`0`,stopColor:`#725BFF`}),(0,_.jsx)(`stop`,{offset:`0.52`,stopColor:`#9A50F4`}),(0,_.jsx)(`stop`,{offset:`1`,stopColor:`#CB55E8`})]})]}),(0,_.jsx)(`path`,{d:`M58 116V88C58 67 75 52 96 52H191C204 52 212 61 212 72C212 84 203 94 191 94H101C82 94 67 102 58 116Z`,fill:`url(#${t})`}),(0,_.jsx)(`path`,{d:`M58 170V139C58 120 72 107 91 107H162C174 107 182 115 182 126C182 137 174 145 162 145H99C79 145 66 154 58 170Z`,fill:`url(#${n})`}),(0,_.jsx)(`path`,{d:`M58 219V188C58 170 71 157 89 157H126C138 157 146 165 146 176C146 187 138 195 126 195H100C89 195 84 200 84 211C84 225 74 235 61 235H58Z`,fill:`url(#${r})`})]})}export{L as $,K as A,Ce as B,Y as C,ft as D,ht as E,G as F,_e as G,be as H,Ee as I,V as J,W as K,Ne as L,Ge as M,Le as N,q as O,Te as P,ne as Q,Oe as R,X as S,Ht as T,ye as U,Se as V,ve as W,R as X,re as Y,B as Z,bn as _,l as _t,Ir as a,N as at,en as b,vr as c,T as ct,rr as d,v as dt,I as et,Qn as f,h as ft,Tn as g,s as gt,An as h,o as ht,Rr as i,A as it,Ke as j,qe as k,mr as l,w as lt,$ as m,d as mt,Ur as n,P as nt,Mr as o,O as ot,Yn as p,p as pt,H as q,Br as r,j as rt,Sr as s,k as st,Hr as t,ee as tt,fr as u,b as ut,hn as v,J as w,Zt as x,cn as y,we as z}; \ No newline at end of file diff --git a/internal/ui/dist/assets/chat-B9SGNK3k.js b/internal/ui/dist/assets/chat-B9SGNK3k.js new file mode 100644 index 00000000..ce24c807 --- /dev/null +++ b/internal/ui/dist/assets/chat-B9SGNK3k.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mcp-app-frame-BJYd06Jq.js","assets/brand-BUxUP_Hq.js","assets/auth-B4efqRtx.js","assets/use-computed-color-scheme-BdszbBN3.js","assets/index-DET0nsjw.js","assets/preload-helper-BP8lmrjQ.js","assets/theme-Ck1QYR6z.js","assets/Tooltip-B37f_b7x.js","assets/useQuery-Do7gxLQ4.js","assets/index-wXPNOnWm.css"])))=>i.map(i=>d[i]); +import{$ as e,A as t,C as n,M as r,St as i,T as a,_ as o,_t as s,a as c,c as l,d as u,f as d,i as f,l as p,m,n as h,o as g,p as _,r as v,u as y,x as b,y as x,yt as S}from"./brand-BUxUP_Hq.js";import{a as C,c as w,o as T,s as E,t as D}from"./preload-helper-BP8lmrjQ.js";import{t as O}from"./Tooltip-B37f_b7x.js";import{c as k,l as A,n as j,o as ee,s as M}from"./format-BmrjoVVN.js";import{i as N}from"./index-DET0nsjw.js";var P=i(S(),1),F=s(),I=[`borderBottomWidth`,`borderLeftWidth`,`borderRightWidth`,`borderTopWidth`,`boxSizing`,`fontFamily`,`fontSize`,`fontStyle`,`fontWeight`,`letterSpacing`,`lineHeight`,`paddingBottom`,`paddingLeft`,`paddingRight`,`paddingTop`,`tabSize`,`textIndent`,`textRendering`,`textTransform`,`width`,`wordBreak`,`wordSpacing`,`scrollbarGutter`],L={"min-height":`0`,"max-height":`none`,height:`0`,visibility:`hidden`,overflow:`hidden`,position:`absolute`,"z-index":`-1000`,top:`0`,right:`0`,display:`block`};function R(e){Object.keys(L).forEach(t=>{e.style.setProperty(t,L[t],`important`)})}function z(e){let t=window.getComputedStyle(e);if(t===null)return null;let n={};for(let e of I)n[e]=t[e];return n.boxSizing===``?null:{sizingStyle:n,paddingSize:parseFloat(n.paddingBottom)+parseFloat(n.paddingTop),borderSize:parseFloat(n.borderBottomWidth)+parseFloat(n.borderTopWidth)}}var B=null;function te(e,t,n=1,r=1/0){B||(B=document.createElement(`textarea`),B.setAttribute(`tabindex`,`-1`),B.setAttribute(`aria-hidden`,`true`),B.setAttribute(`aria-label`,`autosize measurement`),R(B)),B.parentNode===null&&document.body.appendChild(B);let{paddingSize:i,borderSize:a,sizingStyle:o}=e,{boxSizing:s}=o;Object.keys(o).forEach(e=>{B.style[e]=o[e]}),R(B),B.value=t;let c=s===`border-box`?B.scrollHeight+a:B.scrollHeight-i;B.value=t,c=s===`border-box`?B.scrollHeight+a:B.scrollHeight-i,B.value=`x`;let l=B.scrollHeight-i,u=l*n;s===`border-box`&&(u=u+i+a),c=Math.max(u,c);let d=l*r;return s===`border-box`&&(d=d+i+a),c=Math.min(d,c),[c,l]}function ne({maxRows:t,minRows:n,onChange:r,ref:i,...a}){let o=a.value!==void 0,s=(0,P.useRef)(null),c=e(s,i),l=(0,P.useRef)(0),u=(0,P.useRef)(0),d=()=>{let e=s.current;if(!e)return;let r=z(e);if(!r)return;let[i]=te(r,e.value||e.placeholder||`x`,n,t);l.current!==i&&(l.current=i,e.style.setProperty(`height`,`${i}px`,`important`))},f=(0,P.useEffectEvent)(d),p=e=>{o||d(),r?.(e)};return(0,P.useLayoutEffect)(d),(0,P.useEffect)(()=>{let e=()=>d();return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),(0,P.useEffect)(()=>{let e=s.current;if(!e||typeof ResizeObserver>`u`)return;u.current=e.offsetWidth;let t=0,n=new ResizeObserver(()=>{s.current&&s.current.offsetWidth!==u.current&&(u.current=s.current.offsetWidth,cancelAnimationFrame(t),t=requestAnimationFrame(f))});return n.observe(e),()=>{cancelAnimationFrame(t),n.disconnect()}},[]),(0,P.useEffect)(()=>{let e=()=>d();return document.fonts.addEventListener(`loadingdone`,e),()=>document.fonts.removeEventListener(`loadingdone`,e)},[]),(0,P.useEffect)(()=>{let e=e=>{if(s.current?.form===e.target&&!o){let e=s.current.value;requestAnimationFrame(()=>{s.current&&e!==s.current.value&&d()})}};return document.body.addEventListener(`reset`,e),()=>document.body.removeEventListener(`reset`,e)},[o]),(0,F.jsx)(`textarea`,{rows:n,...a,onChange:p,ref:c})}var V=a(e=>{let{autosize:t,maxRows:n,minRows:i,__staticSelector:a,resize:o,bottomSection:s,bottomSectionProps:c,...l}=r([`Input`,`InputWrapper`,`Textarea`],null,e),u=t&&A()!==`test`,d=u?{maxRows:n,minRows:i}:{};return(0,F.jsx)(m,{component:u?ne:`textarea`,...l,__staticSelector:a||`Textarea`,__bottomSection:s,__bottomSectionProps:c,multiline:!0,"data-no-overflow":t&&n===void 0||void 0,__vars:{"--input-resize":o},...d})});V.classes=m.classes,V.displayName=`@mantine/core/Textarea`;var H={root:`m_d08caa0`},U=a(e=>{let i=r(`Typography`,null,e),{classNames:a,className:o,style:s,styles:c,unstyled:l,attributes:u,...d}=i,f=t({name:`Typography`,classes:H,props:i,className:o,style:s,classNames:a,styles:c,unstyled:l,attributes:u});return(0,F.jsx)(n,{...f(`root`),...d})});U.classes=H,U.displayName=`@mantine/core/Typography`;var W=new Map([[`bold`,P.createElement(P.Fragment,null,P.createElement(`path`,{d:`M230.14,25.86a20,20,0,0,0-19.57-5.11l-.22.07L18.44,79a20,20,0,0,0-3.06,37.25L99,157l40.71,83.65a19.81,19.81,0,0,0,18,11.38c.57,0,1.15,0,1.73-.07A19.82,19.82,0,0,0,177,237.56L235.18,45.65a1.42,1.42,0,0,0,.07-.22A20,20,0,0,0,230.14,25.86ZM156.91,221.07l-34.37-70.64,46-45.95a12,12,0,0,0-17-17l-46,46L34.93,99.09,210,46Z`}))],[`duotone`,P.createElement(P.Fragment,null,P.createElement(`path`,{d:`M223.69,42.18l-58.22,192a8,8,0,0,1-14.92,1.25L108,148,20.58,105.45a8,8,0,0,1,1.25-14.92l192-58.22A8,8,0,0,1,223.69,42.18Z`,opacity:`0.2`}),P.createElement(`path`,{d:`M227.32,28.68a16,16,0,0,0-15.66-4.08l-.15,0L19.57,82.84a16,16,0,0,0-2.49,29.8L102,154l41.3,84.87A15.86,15.86,0,0,0,157.74,248q.69,0,1.38-.06a15.88,15.88,0,0,0,14-11.51l58.2-191.94c0-.05,0-.1,0-.15A16,16,0,0,0,227.32,28.68ZM157.83,231.85l-.05.14,0-.07-40.06-82.3,48-48a8,8,0,0,0-11.31-11.31l-48,48L24.08,98.25l-.07,0,.14,0L216,40Z`}))],[`fill`,P.createElement(P.Fragment,null,P.createElement(`path`,{d:`M231.4,44.34s0,.1,0,.15l-58.2,191.94a15.88,15.88,0,0,1-14,11.51q-.69.06-1.38.06a15.86,15.86,0,0,1-14.42-9.15L107,164.15a4,4,0,0,1,.77-4.58l57.92-57.92a8,8,0,0,0-11.31-11.31L96.43,148.26a4,4,0,0,1-4.58.77L17.08,112.64a16,16,0,0,1,2.49-29.8l191.94-58.2.15,0A16,16,0,0,1,231.4,44.34Z`}))],[`light`,P.createElement(P.Fragment,null,P.createElement(`path`,{d:`M225.88,30.12a13.83,13.83,0,0,0-13.7-3.58l-.11,0L20.14,84.77A14,14,0,0,0,18,110.85l85.56,41.64L145.12,238a13.87,13.87,0,0,0,12.61,8c.4,0,.81,0,1.21-.05a13.9,13.9,0,0,0,12.29-10.09l58.2-191.93,0-.11A13.83,13.83,0,0,0,225.88,30.12Zm-8,10.4L159.73,232.43l0,.11a2,2,0,0,1-3.76.26l-40.68-83.58,49-49a6,6,0,1,0-8.49-8.49l-49,49L23.15,100a2,2,0,0,1,.31-3.74l.11,0L215.48,38.08a1.94,1.94,0,0,1,1.92.52A2,2,0,0,1,217.92,40.52Z`}))],[`regular`,P.createElement(P.Fragment,null,P.createElement(`path`,{d:`M227.32,28.68a16,16,0,0,0-15.66-4.08l-.15,0L19.57,82.84a16,16,0,0,0-2.49,29.8L102,154l41.3,84.87A15.86,15.86,0,0,0,157.74,248q.69,0,1.38-.06a15.88,15.88,0,0,0,14-11.51l58.2-191.94c0-.05,0-.1,0-.15A16,16,0,0,0,227.32,28.68ZM157.83,231.85l-.05.14,0-.07-40.06-82.3,48-48a8,8,0,0,0-11.31-11.31l-48,48L24.08,98.25l-.07,0,.14,0L216,40Z`}))],[`thin`,P.createElement(P.Fragment,null,P.createElement(`path`,{d:`M224.47,31.52a11.87,11.87,0,0,0-11.82-3L20.74,86.67a12,12,0,0,0-1.91,22.38L105,151l41.92,86.15A11.88,11.88,0,0,0,157.74,244c.34,0,.69,0,1,0a11.89,11.89,0,0,0,10.52-8.63l58.21-192,0-.08A11.85,11.85,0,0,0,224.47,31.52Zm-4.62,9.54-58.23,192a4,4,0,0,1-7.48.59l-41.3-84.86,50-50a4,4,0,1,0-5.66-5.66l-50,50-84.9-41.31a3.88,3.88,0,0,1-2.27-4,3.93,3.93,0,0,1,3-3.54L214.9,36.16A3.93,3.93,0,0,1,216,36a4,4,0,0,1,2.79,1.19A3.93,3.93,0,0,1,219.85,41.06Z`}))]]),G=new Map([[`bold`,P.createElement(P.Fragment,null,P.createElement(`path`,{d:`M200,36H56A20,20,0,0,0,36,56V200a20,20,0,0,0,20,20H200a20,20,0,0,0,20-20V56A20,20,0,0,0,200,36Zm-4,160H60V60H196Z`}))],[`duotone`,P.createElement(P.Fragment,null,P.createElement(`path`,{d:`M208,56V200a8,8,0,0,1-8,8H56a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8H200A8,8,0,0,1,208,56Z`,opacity:`0.2`}),P.createElement(`path`,{d:`M200,40H56A16,16,0,0,0,40,56V200a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V56A16,16,0,0,0,200,40Zm0,160H56V56H200V200Z`}))],[`fill`,P.createElement(P.Fragment,null,P.createElement(`path`,{d:`M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z`}))],[`light`,P.createElement(P.Fragment,null,P.createElement(`path`,{d:`M200,42H56A14,14,0,0,0,42,56V200a14,14,0,0,0,14,14H200a14,14,0,0,0,14-14V56A14,14,0,0,0,200,42Zm2,158a2,2,0,0,1-2,2H56a2,2,0,0,1-2-2V56a2,2,0,0,1,2-2H200a2,2,0,0,1,2,2Z`}))],[`regular`,P.createElement(P.Fragment,null,P.createElement(`path`,{d:`M200,40H56A16,16,0,0,0,40,56V200a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V56A16,16,0,0,0,200,40Zm0,160H56V56H200V200Z`}))],[`thin`,P.createElement(P.Fragment,null,P.createElement(`path`,{d:`M200,44H56A12,12,0,0,0,44,56V200a12,12,0,0,0,12,12H200a12,12,0,0,0,12-12V56A12,12,0,0,0,200,44Zm4,156a4,4,0,0,1-4,4H56a4,4,0,0,1-4-4V56a4,4,0,0,1,4-4H200a4,4,0,0,1,4,4Z`}))]]),K=P.forwardRef((e,t)=>P.createElement(c,{ref:t,...e,weights:W}));K.displayName=`PaperPlaneTiltIcon`;var q=K,J=P.forwardRef((e,t)=>P.createElement(c,{ref:t,...e,weights:G}));J.displayName=`StopIcon`;var Y=J,X=64,re=300;function ie(){let e=(0,P.useRef)(null),t=(0,P.useRef)(!0),n=(0,P.useRef)(()=>{}),r=(0,P.useRef)(null),i=(0,P.useCallback)(()=>{let n=e.current;n&&t.current&&(n.scrollTop=n.scrollHeight)},[]);return{scrollRef:(0,P.useCallback)(r=>{if(n.current(),e.current=r,!r)return;let i=0,a=!1,o=()=>{i=Date.now()},s=()=>{a=!0},c=()=>{a=!1},l=()=>{r.scrollHeight-r.clientHeight-r.scrollTop<=X?t.current=!0:(a||Date.now()-i{r.removeEventListener(`scroll`,l),r.removeEventListener(`wheel`,o),r.removeEventListener(`touchmove`,o),r.removeEventListener(`keydown`,o),r.removeEventListener(`pointerdown`,s),window.removeEventListener(`pointerup`,c),n.current=()=>{}},t.current=!0,r.scrollTop=r.scrollHeight},[]),contentRef:(0,P.useCallback)(e=>{r.current?.disconnect(),r.current=null,e&&(r.current=new ResizeObserver(i),r.current.observe(e))},[i]),toBottom:(0,P.useCallback)(()=>{t.current=!0,i()},[i])}}function ae(e=1500){let[t,n]=(0,P.useState)(`idle`),r=(0,P.useRef)(null);(0,P.useEffect)(()=>()=>{r.current&&clearTimeout(r.current)},[]);function i(t){r.current&&clearTimeout(r.current),n(`idle`),(navigator.clipboard?navigator.clipboard.writeText(t):Promise.reject(Error(`clipboard unavailable`))).then(()=>n(`copied`),()=>n(`failed`)).finally(()=>{r.current=setTimeout(()=>n(`idle`),e)})}return{state:t,copy:i}}var oe=(0,P.lazy)(()=>D(()=>import(`./mcp-app-frame-BJYd06Jq.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]))),se=[`Summarize system health for the last hour`,`Find the source of elevated errors`,`Map the current service dependencies`,`Show the slowest endpoints`];function ce(){let{agentAvailable:e,messages:t,messageTimes:r,ready:i,running:a,activity:s,error:c,threadMissing:f,send:m,retry:h,reloadThread:v,newThread:S}=T(),{scrollRef:C,contentRef:E,toBottom:D}=ie(),O=t.filter(e=>e.role===`user`).at(-1)?.id;if((0,P.useEffect)(()=>{O&&D()},[O,D]),!e)return(0,F.jsx)(p,{size:`sm`,py:96,children:(0,F.jsx)(b,{withBorder:!0,radius:`lg`,p:{base:`xl`,sm:40},children:(0,F.jsxs)(l,{gap:`md`,children:[(0,F.jsx)(d,{c:`brand`,fw:700,size:`xs`,tt:`uppercase`,lts:`0.12em`,children:`Optional capability`}),(0,F.jsx)(g,{order:1,fz:28,children:`Chat is not configured`}),(0,F.jsx)(d,{c:`dimmed`,children:`Add an AI provider key to enable chat. Telemetry ingest, dashboards, traces, logs, and metrics remain available without it.`}),(0,F.jsx)(u,{component:`a`,href:`/dashboards`,variant:`light`,mt:`sm`,children:`Open dashboards`})]})})});let k=new Map(t.flatMap(e=>{if(e.role!==`tool`||e.error)return[];let n=N(e.toolCallId,e.content,t);return n?[[e.id,n]]:[]})),A=t.filter(e=>e.role!==`tool`||k.has(e.id));return(0,F.jsxs)(n,{className:`chat-pane`,children:[(0,F.jsx)(n,{className:`chat-scroll`,ref:C,tabIndex:0,role:`log`,"aria-label":`Conversation`,children:(0,F.jsxs)(p,{size:880,px:{base:`md`,sm:`xl`},py:`lg`,ref:E,children:[f&&(0,F.jsx)(_,{color:`warn`,radius:`lg`,title:`This chat no longer exists`,children:(0,F.jsxs)(o,{justify:`space-between`,children:[(0,F.jsx)(d,{size:`sm`,children:`It was deleted, or the link is wrong.`}),(0,F.jsx)(u,{size:`compact-sm`,variant:`light`,onClick:S,children:`New chat`})]})}),!f&&!i&&c&&(0,F.jsx)(Z,{message:c,onRetry:v,onNewThread:S}),!f&&!i&&!c&&(0,F.jsxs)(y,{mih:`40vh`,children:[(0,F.jsx)(x,{size:`sm`}),(0,F.jsx)(d,{c:`dimmed`,size:`sm`,ml:`sm`,children:`Loading chat`})]}),!f&&i&&(0,F.jsxs)(F.Fragment,{children:[A.length===0&&(0,F.jsx)(ue,{onSelect:m}),(0,F.jsxs)(l,{gap:`lg`,"aria-live":`polite`,children:[A.map(e=>{let t=k.get(e.id);return t?(0,F.jsx)(b,{withBorder:!0,radius:`md`,p:`sm`,"data-dashboard-result":t.id,children:(0,F.jsxs)(o,{justify:`space-between`,gap:`sm`,children:[(0,F.jsxs)(n,{miw:0,children:[(0,F.jsx)(d,{size:`xs`,c:`dimmed`,children:t.label}),(0,F.jsx)(d,{size:`sm`,fw:500,style:{overflowWrap:`anywhere`},children:t.name})]}),(0,F.jsx)(u,{renderRoot:e=>(0,F.jsx)(w,{...e,to:`/dashboards/$dashboardId`,params:{dashboardId:t.id},search:{}}),variant:`subtle`,size:`compact-sm`,children:`Open dashboard`})]})},e.id):(0,F.jsx)(de,{message:e,time:r[e.id],send:m},e.id)}),a&&(0,F.jsxs)(o,{gap:`xs`,children:[(0,F.jsx)(x,{type:`dots`,size:`sm`}),(0,F.jsx)(d,{c:`dimmed`,size:`sm`,children:s||`Analyzing your system`})]}),c&&(0,F.jsx)(Z,{message:c,onRetry:h})]})]})]})}),!f&&(0,F.jsx)(le,{})]})}function Z({message:e,onRetry:t,onNewThread:n}){return(0,F.jsx)(_,{color:`bad`,radius:`lg`,title:`Something went wrong`,children:(0,F.jsxs)(o,{justify:`space-between`,gap:`sm`,wrap:`nowrap`,children:[(0,F.jsx)(d,{size:`sm`,children:e}),(0,F.jsxs)(o,{gap:`xs`,wrap:`nowrap`,children:[n&&(0,F.jsx)(u,{size:`compact-sm`,variant:`subtle`,color:`bad`,onClick:n,children:`New chat`}),(0,F.jsx)(u,{size:`compact-sm`,variant:`light`,color:`bad`,onClick:t,children:`Retry`})]})]})})}function le(){let{input:e,setInput:t,inputRef:r,submit:i,send:a,stop:s,ready:c,running:l}=T();return(0,F.jsx)(n,{className:`chat-composer`,children:(0,F.jsxs)(p,{size:880,px:{base:`md`,sm:`xl`},children:[(0,F.jsx)(b,{component:`form`,onSubmit:i,className:`chat-composer-field`,withBorder:!0,radius:24,py:6,pl:`lg`,pr:6,children:(0,F.jsxs)(o,{align:`flex-end`,gap:`xs`,wrap:`nowrap`,children:[(0,F.jsx)(V,{ref:r,"aria-label":`Message Fanout`,value:e,onChange:e=>t(e.currentTarget.value),onKeyDown:t=>{t.key===`Enter`&&!t.shiftKey&&(t.preventDefault(),a(e))},placeholder:l?`Fanout is working…`:`Ask about health, errors, or latency…`,disabled:!c,autosize:!0,minRows:1,maxRows:8,variant:`unstyled`,flex:1}),l?(0,F.jsx)(O,{label:`Stop`,children:(0,F.jsx)(E,{type:`button`,variant:`default`,size:40,radius:`xl`,"aria-label":`Stop`,onClick:s,children:(0,F.jsx)(Y,{size:16,weight:`fill`})})}):(0,F.jsx)(E,{type:`submit`,variant:`filled`,size:40,radius:`xl`,disabled:!e.trim()||!c,"aria-label":`Send message`,children:(0,F.jsx)(q,{size:17,weight:`fill`})})]})}),(0,F.jsx)(d,{c:`dimmed`,size:`xs`,ta:`center`,mt:6,children:`Enter to send, Shift+Enter for a new line`})]})})}function ue({onSelect:e}){return(0,F.jsxs)(l,{align:`center`,gap:`md`,pt:{base:32,sm:88},pb:`xl`,ta:`center`,children:[(0,F.jsx)(h,{size:`large`}),(0,F.jsx)(g,{order:1,fz:24,fw:500,lh:1.25,maw:560,children:`What do you want to know about your system?`}),(0,F.jsx)(o,{justify:`center`,gap:`xs`,mt:`xs`,maw:720,children:se.map(t=>(0,F.jsx)(u,{variant:`default`,size:`sm`,radius:`xl`,onClick:()=>void e(t),children:t},t))})]})}function de({message:e,time:t,send:r}){if(e.role===`activity`){let t=e;return t.activityType===`mcp-app`?(0,F.jsx)(b,{withBorder:!0,radius:`lg`,style:{overflow:`hidden`},"aria-label":C(t.content.toolName),children:(0,F.jsx)(P.Suspense,{fallback:(0,F.jsx)(y,{mih:180,children:(0,F.jsx)(x,{size:`sm`})}),children:(0,F.jsx)(oe,{content:t.content,onMessage:r})})}):null}let i=typeof e.content==`string`?e.content:JSON.stringify(e.content);if(!i&&e.role===`assistant`)return null;let a=e.role===`user`,s=t?new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`2-digit`}).format(new Date(t)):``;return(0,F.jsxs)(n,{className:`chat-message`,"data-role":a?`user`:`assistant`,children:[a?(0,F.jsx)(b,{radius:`lg`,px:`md`,py:`sm`,bg:`var(--mantine-color-brand-light)`,maw:`70%`,ml:`auto`,w:`fit-content`,children:(0,F.jsx)(d,{style:{whiteSpace:`pre-wrap`},children:i})}):(0,F.jsx)(U,{className:`chat-markdown`,children:(0,F.jsx)(M,{remarkPlugins:[ee],components:fe,children:i})}),(0,F.jsxs)(o,{className:`chat-message-meta`,gap:6,justify:a?`flex-end`:`flex-start`,mt:4,children:[s&&t&&(0,F.jsx)(d,{c:`dimmed`,size:`xs`,title:j(t),children:s}),!a&&(0,F.jsx)(Q,{text:i,label:`Copy message`})]})]})}function Q({text:e,label:t}){let{state:n,copy:r}=ae();return(0,F.jsx)(O,{label:n===`failed`?`Could not copy`:n===`copied`?`Copied`:t,children:(0,F.jsx)(E,{variant:`subtle`,color:`gray`,size:`sm`,"aria-label":t,"data-state":n===`idle`?void 0:n,onClick:()=>r(e),children:n===`copied`?(0,F.jsx)(f,{size:13,weight:`bold`}):(0,F.jsx)(v,{size:13})})})}var fe={table:({children:e})=>(0,F.jsx)(n,{className:`chat-table`,children:(0,F.jsx)(k,{striped:!0,highlightOnHover:!0,withTableBorder:!0,verticalSpacing:`xs`,fz:`sm`,children:e})}),thead:({children:e})=>(0,F.jsx)(k.Thead,{children:e}),tbody:({children:e})=>(0,F.jsx)(k.Tbody,{children:e}),tr:({children:e})=>(0,F.jsx)(k.Tr,{children:e}),th:({children:e})=>(0,F.jsx)(k.Th,{children:e}),td:({children:e})=>(0,F.jsx)(k.Td,{children:e}),pre:({children:e})=>(0,F.jsx)(pe,{children:e}),a:({href:e,children:t})=>(0,F.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,children:t})};function pe({children:e}){let t=$(e);return(0,F.jsxs)(n,{className:`chat-code`,pos:`relative`,children:[(0,F.jsx)(n,{className:`chat-code-actions`,pos:`absolute`,top:6,right:6,children:(0,F.jsx)(Q,{text:t,label:`Copy code`})}),(0,F.jsx)(`pre`,{children:e})]})}function $(e){return typeof e==`string`?e:Array.isArray(e)?e.map($).join(``):e&&typeof e==`object`&&`props`in e?$(e.props.children):``}export{ce as t}; \ No newline at end of file diff --git a/internal/ui/dist/assets/chat-Cesgwa1O.js b/internal/ui/dist/assets/chat-Cesgwa1O.js deleted file mode 100644 index 170a8265..00000000 --- a/internal/ui/dist/assets/chat-Cesgwa1O.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mcp-app-frame-Bz7U304u.js","assets/brand-eOqp_Ed4.js","assets/auth-BZHrLj_K.js","assets/use-computed-color-scheme-_1Kex6aU.js","assets/index-Byh_fBCG.js","assets/tokens-D12raFtt.js","assets/Tooltip-Bef-UcCW.js","assets/useQuery-B6EnqqkT.js","assets/preload-helper-CAfbhz7u.js","assets/index-BaklyCJJ.css"])))=>i.map(i=>d[i]); -import{A as e,O as t,S as n,Z as r,_t as i,a,b as o,c as s,d as c,f as l,ft as u,g as d,i as f,l as p,mt as m,n as h,o as g,p as _,r as v,s as y,u as b,v as x,w as S}from"./brand-eOqp_Ed4.js";import{t as C}from"./Tooltip-Bef-UcCW.js";import{a as w,i as T,n as E,o as D,s as ee}from"./format-HB47ZCa3.js";import{a as O,o as k,s as A,t as te}from"./preload-helper-CAfbhz7u.js";var j=i(m(),1),M=u(),N=[`borderBottomWidth`,`borderLeftWidth`,`borderRightWidth`,`borderTopWidth`,`boxSizing`,`fontFamily`,`fontSize`,`fontStyle`,`fontWeight`,`letterSpacing`,`lineHeight`,`paddingBottom`,`paddingLeft`,`paddingRight`,`paddingTop`,`tabSize`,`textIndent`,`textRendering`,`textTransform`,`width`,`wordBreak`,`wordSpacing`,`scrollbarGutter`],P={"min-height":`0`,"max-height":`none`,height:`0`,visibility:`hidden`,overflow:`hidden`,position:`absolute`,"z-index":`-1000`,top:`0`,right:`0`,display:`block`};function F(e){Object.keys(P).forEach(t=>{e.style.setProperty(t,P[t],`important`)})}function I(e){let t=window.getComputedStyle(e);if(t===null)return null;let n={};for(let e of N)n[e]=t[e];return n.boxSizing===``?null:{sizingStyle:n,paddingSize:parseFloat(n.paddingBottom)+parseFloat(n.paddingTop),borderSize:parseFloat(n.borderBottomWidth)+parseFloat(n.borderTopWidth)}}var L=null;function R(e,t,n=1,r=1/0){L||(L=document.createElement(`textarea`),L.setAttribute(`tabindex`,`-1`),L.setAttribute(`aria-hidden`,`true`),L.setAttribute(`aria-label`,`autosize measurement`),F(L)),L.parentNode===null&&document.body.appendChild(L);let{paddingSize:i,borderSize:a,sizingStyle:o}=e,{boxSizing:s}=o;Object.keys(o).forEach(e=>{L.style[e]=o[e]}),F(L),L.value=t;let c=s===`border-box`?L.scrollHeight+a:L.scrollHeight-i;L.value=t,c=s===`border-box`?L.scrollHeight+a:L.scrollHeight-i,L.value=`x`;let l=L.scrollHeight-i,u=l*n;s===`border-box`&&(u=u+i+a),c=Math.max(u,c);let d=l*r;return s===`border-box`&&(d=d+i+a),c=Math.min(d,c),[c,l]}function ne({maxRows:e,minRows:t,onChange:n,ref:i,...a}){let o=a.value!==void 0,s=(0,j.useRef)(null),c=r(s,i),l=(0,j.useRef)(0),u=(0,j.useRef)(0),d=()=>{let n=s.current;if(!n)return;let r=I(n);if(!r)return;let[i]=R(r,n.value||n.placeholder||`x`,t,e);l.current!==i&&(l.current=i,n.style.setProperty(`height`,`${i}px`,`important`))},f=(0,j.useEffectEvent)(d),p=e=>{o||d(),n?.(e)};return(0,j.useLayoutEffect)(d),(0,j.useEffect)(()=>{let e=()=>d();return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),(0,j.useEffect)(()=>{let e=s.current;if(!e||typeof ResizeObserver>`u`)return;u.current=e.offsetWidth;let t=0,n=new ResizeObserver(()=>{s.current&&s.current.offsetWidth!==u.current&&(u.current=s.current.offsetWidth,cancelAnimationFrame(t),t=requestAnimationFrame(f))});return n.observe(e),()=>{cancelAnimationFrame(t),n.disconnect()}},[]),(0,j.useEffect)(()=>{let e=()=>d();return document.fonts.addEventListener(`loadingdone`,e),()=>document.fonts.removeEventListener(`loadingdone`,e)},[]),(0,j.useEffect)(()=>{let e=e=>{if(s.current?.form===e.target&&!o){let e=s.current.value;requestAnimationFrame(()=>{s.current&&e!==s.current.value&&d()})}};return document.body.addEventListener(`reset`,e),()=>document.body.removeEventListener(`reset`,e)},[o]),(0,M.jsx)(`textarea`,{rows:t,...a,onChange:p,ref:c})}var z=S(t=>{let{autosize:n,maxRows:r,minRows:i,__staticSelector:a,resize:o,bottomSection:s,bottomSectionProps:c,...l}=e([`Input`,`InputWrapper`,`Textarea`],null,t),u=n&&ee()!==`test`,d=u?{maxRows:r,minRows:i}:{};return(0,M.jsx)(_,{component:u?ne:`textarea`,...l,__staticSelector:a||`Textarea`,__bottomSection:s,__bottomSectionProps:c,multiline:!0,"data-no-overflow":n&&r===void 0||void 0,__vars:{"--input-resize":o},...d})});z.classes=_.classes,z.displayName=`@mantine/core/Textarea`;var B={root:`m_d08caa0`},V=S(r=>{let i=e(`Typography`,null,r),{classNames:a,className:o,style:s,styles:c,unstyled:l,attributes:u,...d}=i,f=t({name:`Typography`,classes:B,props:i,className:o,style:s,classNames:a,styles:c,unstyled:l,attributes:u});return(0,M.jsx)(n,{...f(`root`),...d})});V.classes=B,V.displayName=`@mantine/core/Typography`;var H=new Map([[`bold`,j.createElement(j.Fragment,null,j.createElement(`path`,{d:`M230.14,25.86a20,20,0,0,0-19.57-5.11l-.22.07L18.44,79a20,20,0,0,0-3.06,37.25L99,157l40.71,83.65a19.81,19.81,0,0,0,18,11.38c.57,0,1.15,0,1.73-.07A19.82,19.82,0,0,0,177,237.56L235.18,45.65a1.42,1.42,0,0,0,.07-.22A20,20,0,0,0,230.14,25.86ZM156.91,221.07l-34.37-70.64,46-45.95a12,12,0,0,0-17-17l-46,46L34.93,99.09,210,46Z`}))],[`duotone`,j.createElement(j.Fragment,null,j.createElement(`path`,{d:`M223.69,42.18l-58.22,192a8,8,0,0,1-14.92,1.25L108,148,20.58,105.45a8,8,0,0,1,1.25-14.92l192-58.22A8,8,0,0,1,223.69,42.18Z`,opacity:`0.2`}),j.createElement(`path`,{d:`M227.32,28.68a16,16,0,0,0-15.66-4.08l-.15,0L19.57,82.84a16,16,0,0,0-2.49,29.8L102,154l41.3,84.87A15.86,15.86,0,0,0,157.74,248q.69,0,1.38-.06a15.88,15.88,0,0,0,14-11.51l58.2-191.94c0-.05,0-.1,0-.15A16,16,0,0,0,227.32,28.68ZM157.83,231.85l-.05.14,0-.07-40.06-82.3,48-48a8,8,0,0,0-11.31-11.31l-48,48L24.08,98.25l-.07,0,.14,0L216,40Z`}))],[`fill`,j.createElement(j.Fragment,null,j.createElement(`path`,{d:`M231.4,44.34s0,.1,0,.15l-58.2,191.94a15.88,15.88,0,0,1-14,11.51q-.69.06-1.38.06a15.86,15.86,0,0,1-14.42-9.15L107,164.15a4,4,0,0,1,.77-4.58l57.92-57.92a8,8,0,0,0-11.31-11.31L96.43,148.26a4,4,0,0,1-4.58.77L17.08,112.64a16,16,0,0,1,2.49-29.8l191.94-58.2.15,0A16,16,0,0,1,231.4,44.34Z`}))],[`light`,j.createElement(j.Fragment,null,j.createElement(`path`,{d:`M225.88,30.12a13.83,13.83,0,0,0-13.7-3.58l-.11,0L20.14,84.77A14,14,0,0,0,18,110.85l85.56,41.64L145.12,238a13.87,13.87,0,0,0,12.61,8c.4,0,.81,0,1.21-.05a13.9,13.9,0,0,0,12.29-10.09l58.2-191.93,0-.11A13.83,13.83,0,0,0,225.88,30.12Zm-8,10.4L159.73,232.43l0,.11a2,2,0,0,1-3.76.26l-40.68-83.58,49-49a6,6,0,1,0-8.49-8.49l-49,49L23.15,100a2,2,0,0,1,.31-3.74l.11,0L215.48,38.08a1.94,1.94,0,0,1,1.92.52A2,2,0,0,1,217.92,40.52Z`}))],[`regular`,j.createElement(j.Fragment,null,j.createElement(`path`,{d:`M227.32,28.68a16,16,0,0,0-15.66-4.08l-.15,0L19.57,82.84a16,16,0,0,0-2.49,29.8L102,154l41.3,84.87A15.86,15.86,0,0,0,157.74,248q.69,0,1.38-.06a15.88,15.88,0,0,0,14-11.51l58.2-191.94c0-.05,0-.1,0-.15A16,16,0,0,0,227.32,28.68ZM157.83,231.85l-.05.14,0-.07-40.06-82.3,48-48a8,8,0,0,0-11.31-11.31l-48,48L24.08,98.25l-.07,0,.14,0L216,40Z`}))],[`thin`,j.createElement(j.Fragment,null,j.createElement(`path`,{d:`M224.47,31.52a11.87,11.87,0,0,0-11.82-3L20.74,86.67a12,12,0,0,0-1.91,22.38L105,151l41.92,86.15A11.88,11.88,0,0,0,157.74,244c.34,0,.69,0,1,0a11.89,11.89,0,0,0,10.52-8.63l58.21-192,0-.08A11.85,11.85,0,0,0,224.47,31.52Zm-4.62,9.54-58.23,192a4,4,0,0,1-7.48.59l-41.3-84.86,50-50a4,4,0,1,0-5.66-5.66l-50,50-84.9-41.31a3.88,3.88,0,0,1-2.27-4,3.93,3.93,0,0,1,3-3.54L214.9,36.16A3.93,3.93,0,0,1,216,36a4,4,0,0,1,2.79,1.19A3.93,3.93,0,0,1,219.85,41.06Z`}))]]),U=new Map([[`bold`,j.createElement(j.Fragment,null,j.createElement(`path`,{d:`M200,36H56A20,20,0,0,0,36,56V200a20,20,0,0,0,20,20H200a20,20,0,0,0,20-20V56A20,20,0,0,0,200,36Zm-4,160H60V60H196Z`}))],[`duotone`,j.createElement(j.Fragment,null,j.createElement(`path`,{d:`M208,56V200a8,8,0,0,1-8,8H56a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8H200A8,8,0,0,1,208,56Z`,opacity:`0.2`}),j.createElement(`path`,{d:`M200,40H56A16,16,0,0,0,40,56V200a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V56A16,16,0,0,0,200,40Zm0,160H56V56H200V200Z`}))],[`fill`,j.createElement(j.Fragment,null,j.createElement(`path`,{d:`M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z`}))],[`light`,j.createElement(j.Fragment,null,j.createElement(`path`,{d:`M200,42H56A14,14,0,0,0,42,56V200a14,14,0,0,0,14,14H200a14,14,0,0,0,14-14V56A14,14,0,0,0,200,42Zm2,158a2,2,0,0,1-2,2H56a2,2,0,0,1-2-2V56a2,2,0,0,1,2-2H200a2,2,0,0,1,2,2Z`}))],[`regular`,j.createElement(j.Fragment,null,j.createElement(`path`,{d:`M200,40H56A16,16,0,0,0,40,56V200a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V56A16,16,0,0,0,200,40Zm0,160H56V56H200V200Z`}))],[`thin`,j.createElement(j.Fragment,null,j.createElement(`path`,{d:`M200,44H56A12,12,0,0,0,44,56V200a12,12,0,0,0,12,12H200a12,12,0,0,0,12-12V56A12,12,0,0,0,200,44Zm4,156a4,4,0,0,1-4,4H56a4,4,0,0,1-4-4V56a4,4,0,0,1,4-4H200a4,4,0,0,1,4,4Z`}))]]),W=j.forwardRef((e,t)=>j.createElement(a,{ref:t,...e,weights:H}));W.displayName=`PaperPlaneTiltIcon`;var G=W,K=j.forwardRef((e,t)=>j.createElement(a,{ref:t,...e,weights:U}));K.displayName=`StopIcon`;var q=K,J=64,Y=300;function X(){let e=(0,j.useRef)(null),t=(0,j.useRef)(!0),n=(0,j.useRef)(()=>{}),r=(0,j.useRef)(null),i=(0,j.useCallback)(()=>{let n=e.current;n&&t.current&&(n.scrollTop=n.scrollHeight)},[]);return{scrollRef:(0,j.useCallback)(r=>{if(n.current(),e.current=r,!r)return;let i=0,a=!1,o=()=>{i=Date.now()},s=()=>{a=!0},c=()=>{a=!1},l=()=>{r.scrollHeight-r.clientHeight-r.scrollTop<=J?t.current=!0:(a||Date.now()-i{r.removeEventListener(`scroll`,l),r.removeEventListener(`wheel`,o),r.removeEventListener(`touchmove`,o),r.removeEventListener(`keydown`,o),r.removeEventListener(`pointerdown`,s),window.removeEventListener(`pointerup`,c),n.current=()=>{}},t.current=!0,r.scrollTop=r.scrollHeight},[]),contentRef:(0,j.useCallback)(e=>{r.current?.disconnect(),r.current=null,e&&(r.current=new ResizeObserver(i),r.current.observe(e))},[i]),toBottom:(0,j.useCallback)(()=>{t.current=!0,i()},[i])}}function re(e=1500){let[t,n]=(0,j.useState)(`idle`),r=(0,j.useRef)(null);(0,j.useEffect)(()=>()=>{r.current&&clearTimeout(r.current)},[]);function i(t){r.current&&clearTimeout(r.current),n(`idle`),(navigator.clipboard?navigator.clipboard.writeText(t):Promise.reject(Error(`clipboard unavailable`))).then(()=>n(`copied`),()=>n(`failed`)).finally(()=>{r.current=setTimeout(()=>n(`idle`),e)})}return{state:t,copy:i}}var ie=(0,j.lazy)(()=>te(()=>import(`./mcp-app-frame-Bz7U304u.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]))),ae=[`Summarize system health for the last hour`,`Find the source of elevated errors`,`Map the current service dependencies`,`Show the slowest endpoints`];function oe(){let{agentAvailable:e,messages:t,messageTimes:r,ready:i,running:a,activity:u,error:f,threadMissing:m,send:h,retry:_,reloadThread:v,newThread:S}=k(),{scrollRef:C,contentRef:w,toBottom:T}=X(),E=t.filter(e=>e.role===`user`).at(-1)?.id;if((0,j.useEffect)(()=>{E&&T()},[E,T]),!e)return(0,M.jsx)(s,{size:`sm`,py:96,children:(0,M.jsx)(o,{withBorder:!0,radius:`lg`,p:{base:`xl`,sm:40},children:(0,M.jsxs)(y,{gap:`md`,children:[(0,M.jsx)(c,{c:`brand`,fw:700,size:`xs`,tt:`uppercase`,lts:`0.12em`,children:`Optional capability`}),(0,M.jsx)(g,{order:1,fz:28,children:`Chat is not configured`}),(0,M.jsx)(c,{c:`dimmed`,children:`Add an AI provider key to enable chat. Telemetry ingest, dashboards, traces, logs, and metrics remain available without it.`}),(0,M.jsx)(b,{component:`a`,href:`/dashboards`,variant:`light`,mt:`sm`,children:`Open dashboards`})]})})});let D=t.filter(e=>e.role!==`tool`);return(0,M.jsxs)(n,{className:`chat-pane`,children:[(0,M.jsx)(n,{className:`chat-scroll`,ref:C,tabIndex:0,role:`log`,"aria-label":`Conversation`,children:(0,M.jsxs)(s,{size:880,px:{base:`md`,sm:`xl`},py:`lg`,ref:w,children:[m&&(0,M.jsx)(l,{color:`warn`,radius:`lg`,title:`This chat no longer exists`,children:(0,M.jsxs)(d,{justify:`space-between`,children:[(0,M.jsx)(c,{size:`sm`,children:`It was deleted, or the link is wrong.`}),(0,M.jsx)(b,{size:`compact-sm`,variant:`light`,onClick:S,children:`New chat`})]})}),!m&&!i&&f&&(0,M.jsx)(Z,{message:f,onRetry:v,onNewThread:S}),!m&&!i&&!f&&(0,M.jsxs)(p,{mih:`40vh`,children:[(0,M.jsx)(x,{size:`sm`}),(0,M.jsx)(c,{c:`dimmed`,size:`sm`,ml:`sm`,children:`Loading chat`})]}),!m&&i&&(0,M.jsxs)(M.Fragment,{children:[D.length===0&&(0,M.jsx)(ce,{onSelect:h}),(0,M.jsxs)(y,{gap:`lg`,"aria-live":`polite`,children:[D.map(e=>(0,M.jsx)(le,{message:e,time:r[e.id],send:h},e.id)),a&&(0,M.jsxs)(d,{gap:`xs`,children:[(0,M.jsx)(x,{type:`dots`,size:`sm`}),(0,M.jsx)(c,{c:`dimmed`,size:`sm`,children:u||`Analyzing your system`})]}),f&&(0,M.jsx)(Z,{message:f,onRetry:_})]})]})]})}),!m&&(0,M.jsx)(se,{})]})}function Z({message:e,onRetry:t,onNewThread:n}){return(0,M.jsx)(l,{color:`bad`,radius:`lg`,title:`Something went wrong`,children:(0,M.jsxs)(d,{justify:`space-between`,gap:`sm`,wrap:`nowrap`,children:[(0,M.jsx)(c,{size:`sm`,children:e}),(0,M.jsxs)(d,{gap:`xs`,wrap:`nowrap`,children:[n&&(0,M.jsx)(b,{size:`compact-sm`,variant:`subtle`,color:`bad`,onClick:n,children:`New chat`}),(0,M.jsx)(b,{size:`compact-sm`,variant:`light`,color:`bad`,onClick:t,children:`Retry`})]})]})})}function se(){let{input:e,setInput:t,inputRef:r,submit:i,send:a,stop:l,ready:u,running:f}=k();return(0,M.jsx)(n,{className:`chat-composer`,children:(0,M.jsxs)(s,{size:880,px:{base:`md`,sm:`xl`},children:[(0,M.jsx)(o,{component:`form`,onSubmit:i,className:`chat-composer-field`,withBorder:!0,radius:24,py:6,pl:`lg`,pr:6,children:(0,M.jsxs)(d,{align:`flex-end`,gap:`xs`,wrap:`nowrap`,children:[(0,M.jsx)(z,{ref:r,"aria-label":`Message Fanout`,value:e,onChange:e=>t(e.currentTarget.value),onKeyDown:t=>{t.key===`Enter`&&!t.shiftKey&&(t.preventDefault(),a(e))},placeholder:f?`Fanout is working…`:`Ask about health, errors, or latency…`,disabled:!u,autosize:!0,minRows:1,maxRows:8,variant:`unstyled`,flex:1}),f?(0,M.jsx)(C,{label:`Stop`,children:(0,M.jsx)(A,{type:`button`,variant:`default`,size:40,radius:`xl`,"aria-label":`Stop`,onClick:l,children:(0,M.jsx)(q,{size:16,weight:`fill`})})}):(0,M.jsx)(A,{type:`submit`,variant:`filled`,size:40,radius:`xl`,disabled:!e.trim()||!u,"aria-label":`Send message`,children:(0,M.jsx)(G,{size:17,weight:`fill`})})]})}),(0,M.jsx)(c,{c:`dimmed`,size:`xs`,ta:`center`,mt:6,children:`Enter to send, Shift+Enter for a new line`})]})})}function ce({onSelect:e}){return(0,M.jsxs)(y,{align:`center`,gap:`md`,pt:{base:32,sm:88},pb:`xl`,ta:`center`,children:[(0,M.jsx)(h,{size:`large`}),(0,M.jsx)(g,{order:1,fz:24,fw:500,lh:1.25,maw:560,children:`What do you want to know about your system?`}),(0,M.jsx)(d,{justify:`center`,gap:`xs`,mt:`xs`,maw:720,children:ae.map(t=>(0,M.jsx)(b,{variant:`default`,size:`sm`,radius:`xl`,onClick:()=>void e(t),children:t},t))})]})}function le({message:e,time:t,send:r}){if(e.role===`activity`){let t=e;return t.activityType===`mcp-app`?(0,M.jsx)(o,{withBorder:!0,radius:`lg`,style:{overflow:`hidden`},"aria-label":O(t.content.toolName),children:(0,M.jsx)(j.Suspense,{fallback:(0,M.jsx)(p,{mih:180,children:(0,M.jsx)(x,{size:`sm`})}),children:(0,M.jsx)(ie,{content:t.content,onMessage:r})})}):null}let i=typeof e.content==`string`?e.content:JSON.stringify(e.content);if(!i&&e.role===`assistant`)return null;let a=e.role===`user`,s=t?new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`2-digit`}).format(new Date(t)):``;return(0,M.jsxs)(n,{className:`chat-message`,"data-role":a?`user`:`assistant`,children:[a?(0,M.jsx)(o,{radius:`lg`,px:`md`,py:`sm`,bg:`var(--mantine-color-brand-light)`,maw:`70%`,ml:`auto`,w:`fit-content`,children:(0,M.jsx)(c,{style:{whiteSpace:`pre-wrap`},children:i})}):(0,M.jsx)(V,{className:`chat-markdown`,children:(0,M.jsx)(w,{remarkPlugins:[T],components:ue,children:i})}),(0,M.jsxs)(d,{className:`chat-message-meta`,gap:6,justify:a?`flex-end`:`flex-start`,mt:4,children:[s&&t&&(0,M.jsx)(c,{c:`dimmed`,size:`xs`,title:E(t),children:s}),!a&&(0,M.jsx)(Q,{text:i,label:`Copy message`})]})]})}function Q({text:e,label:t}){let{state:n,copy:r}=re();return(0,M.jsx)(C,{label:n===`failed`?`Could not copy`:n===`copied`?`Copied`:t,children:(0,M.jsx)(A,{variant:`subtle`,color:`gray`,size:`sm`,"aria-label":t,"data-state":n===`idle`?void 0:n,onClick:()=>r(e),children:n===`copied`?(0,M.jsx)(f,{size:13,weight:`bold`}):(0,M.jsx)(v,{size:13})})})}var ue={table:({children:e})=>(0,M.jsx)(n,{className:`chat-table`,children:(0,M.jsx)(D,{striped:!0,highlightOnHover:!0,withTableBorder:!0,verticalSpacing:`xs`,fz:`sm`,children:e})}),thead:({children:e})=>(0,M.jsx)(D.Thead,{children:e}),tbody:({children:e})=>(0,M.jsx)(D.Tbody,{children:e}),tr:({children:e})=>(0,M.jsx)(D.Tr,{children:e}),th:({children:e})=>(0,M.jsx)(D.Th,{children:e}),td:({children:e})=>(0,M.jsx)(D.Td,{children:e}),pre:({children:e})=>(0,M.jsx)(de,{children:e}),a:({href:e,children:t})=>(0,M.jsx)(`a`,{href:e,target:`_blank`,rel:`noopener noreferrer`,children:t})};function de({children:e}){let t=$(e);return(0,M.jsxs)(n,{className:`chat-code`,pos:`relative`,children:[(0,M.jsx)(n,{className:`chat-code-actions`,pos:`absolute`,top:6,right:6,children:(0,M.jsx)(Q,{text:t,label:`Copy code`})}),(0,M.jsx)(`pre`,{children:e})]})}function $(e){return typeof e==`string`?e:Array.isArray(e)?e.map($).join(``):e&&typeof e==`object`&&`props`in e?$(e.props.children):``}export{oe as t}; \ No newline at end of file diff --git a/internal/ui/dist/assets/chat._threadId-9RFXIZ1e.js b/internal/ui/dist/assets/chat._threadId-9RFXIZ1e.js deleted file mode 100644 index 8b3bb906..00000000 --- a/internal/ui/dist/assets/chat._threadId-9RFXIZ1e.js +++ /dev/null @@ -1 +0,0 @@ -import{t as e}from"./chat-Cesgwa1O.js";var t=e;export{t as component}; \ No newline at end of file diff --git a/internal/ui/dist/assets/chat._threadId-CECIYka-.js b/internal/ui/dist/assets/chat._threadId-CECIYka-.js new file mode 100644 index 00000000..5802f487 --- /dev/null +++ b/internal/ui/dist/assets/chat._threadId-CECIYka-.js @@ -0,0 +1 @@ +import{t as e}from"./chat-B9SGNK3k.js";var t=e;export{t as component}; \ No newline at end of file diff --git a/internal/ui/dist/assets/chat.index-9RFXIZ1e.js b/internal/ui/dist/assets/chat.index-9RFXIZ1e.js deleted file mode 100644 index 8b3bb906..00000000 --- a/internal/ui/dist/assets/chat.index-9RFXIZ1e.js +++ /dev/null @@ -1 +0,0 @@ -import{t as e}from"./chat-Cesgwa1O.js";var t=e;export{t as component}; \ No newline at end of file diff --git a/internal/ui/dist/assets/chat.index-CECIYka-.js b/internal/ui/dist/assets/chat.index-CECIYka-.js new file mode 100644 index 00000000..5802f487 --- /dev/null +++ b/internal/ui/dist/assets/chat.index-CECIYka-.js @@ -0,0 +1 @@ +import{t as e}from"./chat-B9SGNK3k.js";var t=e;export{t as component}; \ No newline at end of file diff --git a/internal/ui/dist/assets/dashboards._dashboardId-BwOctTYv.js b/internal/ui/dist/assets/dashboards._dashboardId-BwOctTYv.js deleted file mode 100644 index 132319f1..00000000 --- a/internal/ui/dist/assets/dashboards._dashboardId-BwOctTYv.js +++ /dev/null @@ -1 +0,0 @@ -import{ft as e}from"./brand-eOqp_Ed4.js";import{u as t}from"./auth-BZHrLj_K.js";import{f as n,h as r}from"./tokens-D12raFtt.js";import{t as i}from"./page-BEErwk1M.js";import{t as a}from"./index-Byh_fBCG.js";var o=e();function s(){let{dashboardId:e}=a.useParams(),s=n(a.useSearch()),c=t(),l=(e,t,n)=>void c({to:`/dashboards/$dashboardId`,params:{dashboardId:e},search:r(t),replace:n});return(0,o.jsx)(i,{dashboardId:e,search:s,onSearch:(t,n)=>l(e,t,n),onOpen:(e,t)=>l(e,{},t)})}export{s as component}; \ No newline at end of file diff --git a/internal/ui/dist/assets/dashboards._dashboardId-IotNJusj.js b/internal/ui/dist/assets/dashboards._dashboardId-IotNJusj.js new file mode 100644 index 00000000..02d08d68 --- /dev/null +++ b/internal/ui/dist/assets/dashboards._dashboardId-IotNJusj.js @@ -0,0 +1 @@ +import{_t as e}from"./brand-BUxUP_Hq.js";import{u as t}from"./auth-B4efqRtx.js";import{_ as n,m as r}from"./theme-Ck1QYR6z.js";import{t as i}from"./page-DCM1FyLW.js";import{t as a}from"./index-DET0nsjw.js";var o=e();function s(){let{dashboardId:e}=a.useParams(),s=r(a.useSearch()),c=t(),l=(t,r,i)=>void c({to:`/dashboards/$dashboardId`,params:{dashboardId:t},search:n(r),replace:i,resetScroll:t!==e});return(0,o.jsx)(i,{dashboardId:e,search:s,onSearch:(t,n)=>l(e,t,n),onOpen:(e,t)=>l(e,{},t)})}export{s as component}; \ No newline at end of file diff --git a/internal/ui/dist/assets/dashboards.index-CaihJ2L8.js b/internal/ui/dist/assets/dashboards.index-CaihJ2L8.js new file mode 100644 index 00000000..0ee6649c --- /dev/null +++ b/internal/ui/dist/assets/dashboards.index-CaihJ2L8.js @@ -0,0 +1 @@ +import{_t as e}from"./brand-BUxUP_Hq.js";import{u as t}from"./auth-B4efqRtx.js";import{_ as n,m as r}from"./theme-Ck1QYR6z.js";import{t as i}from"./page-DCM1FyLW.js";import{n as a}from"./index-DET0nsjw.js";var o=e();function s(){let e=r(a.useSearch()),s=t();return(0,o.jsx)(i,{search:e,onSearch:()=>void 0,onOpen:(t,r)=>void s({to:`/dashboards/$dashboardId`,params:{dashboardId:t},search:n(e),replace:r})})}export{s as component}; \ No newline at end of file diff --git a/internal/ui/dist/assets/dashboards.index-zL4w6VKJ.js b/internal/ui/dist/assets/dashboards.index-zL4w6VKJ.js deleted file mode 100644 index 6b77bc47..00000000 --- a/internal/ui/dist/assets/dashboards.index-zL4w6VKJ.js +++ /dev/null @@ -1 +0,0 @@ -import{ft as e}from"./brand-eOqp_Ed4.js";import{u as t}from"./auth-BZHrLj_K.js";import{f as n,h as r}from"./tokens-D12raFtt.js";import{t as i}from"./page-BEErwk1M.js";import{n as a}from"./index-Byh_fBCG.js";var o=e();function s(){let e=n(a.useSearch()),s=t();return(0,o.jsx)(i,{search:e,onSearch:()=>void 0,onOpen:(t,n)=>void s({to:`/dashboards/$dashboardId`,params:{dashboardId:t},search:r(e),replace:n})})}export{s as component}; \ No newline at end of file diff --git a/internal/ui/dist/assets/format-HB47ZCa3.js b/internal/ui/dist/assets/format-BmrjoVVN.js similarity index 98% rename from internal/ui/dist/assets/format-HB47ZCa3.js rename to internal/ui/dist/assets/format-BmrjoVVN.js index 98212767..e4d6ddca 100644 --- a/internal/ui/dist/assets/format-HB47ZCa3.js +++ b/internal/ui/dist/assets/format-BmrjoVVN.js @@ -1,5 +1,5 @@ -import{A as e,J as t,O as n,S as r,W as i,_t as a,ft as o,gt as s,ht as c,lt as l,mt as u,st as d,w as f}from"./brand-eOqp_Ed4.js";import{E as p,o as m}from"./Tooltip-Bef-UcCW.js";function h(){return`development`}var[g,_]=p(`Table component was not found in the tree`),v={table:`m_b23fa0ef`,th:`m_4e7aa4f3`,tr:`m_4e7aa4fd`,td:`m_4e7aa4ef`,tbody:`m_b2404537`,thead:`m_b242d975`,caption:`m_9e5a3ac7`,scrollContainer:`m_a100c15`,scrollContainerInner:`m_62259741`},y=o();function b(e,t){if(!t)return;let n={};return t.columnBorder&&e.withColumnBorders&&(n[`data-with-column-border`]=!0),t.rowBorder&&e.withRowBorders&&(n[`data-with-row-border`]=!0),t.striped&&e.striped&&(n[`data-striped`]=e.striped),t.highlightOnHover&&e.highlightOnHover&&(n[`data-hover`]=!0),t.captionSide&&e.captionSide&&(n[`data-side`]=e.captionSide),t.stickyHeader&&e.stickyHeader&&(n[`data-sticky`]=!0),n}function x(t,n){let i=`Table${t.charAt(0).toUpperCase()}${t.slice(1)}`,a=f(a=>{let o=e(i,{},a),{classNames:s,className:c,style:l,styles:u,...d}=o,f=_();return(0,y.jsx)(r,{component:t,...b(f,n),...f.getStyles(t,{className:c,classNames:s,style:l,styles:u,props:o}),...d})});return a.displayName=`@mantine/core/${i}`,a.classes=v,a}var S=x(`th`,{columnBorder:!0}),C=x(`td`,{columnBorder:!0}),w=x(`tr`,{rowBorder:!0,striped:!0,highlightOnHover:!0}),T=x(`thead`,{stickyHeader:!0}),E=x(`tbody`),D=x(`tfoot`),O=x(`caption`,{captionSide:!0}),ee={type:`scrollarea`},te=t((e,{minWidth:t,maxHeight:n,type:r})=>({scrollContainer:{"--table-min-width":l(t),"--table-max-height":l(n),"--table-overflow":r===`native`?`auto`:void 0}})),ne=f(t=>{let i=e(`TableScrollContainer`,ee,t),{classNames:a,className:o,style:s,styles:c,unstyled:l,vars:u,children:d,minWidth:f,maxHeight:p,type:h,scrollAreaProps:g,attributes:_,...b}=i,x=n({name:`TableScrollContainer`,classes:v,props:i,className:o,style:s,classNames:a,styles:c,unstyled:l,attributes:_,vars:u,varsResolver:te,rootSelector:`scrollContainer`});return(0,y.jsx)(r,{component:h===`scrollarea`?m:`div`,...h===`scrollarea`?p?{offsetScrollbars:`xy`,...g}:{offsetScrollbars:`x`,...g}:{},...x(`scrollContainer`),...b,children:(0,y.jsx)(`div`,{...x(`scrollContainerInner`),children:d})})});ne.classes=v,ne.varsResolver=te,ne.displayName=`@mantine/core/TableScrollContainer`;function k({data:e}){return(0,y.jsxs)(y.Fragment,{children:[e.caption&&(0,y.jsx)(O,{children:e.caption}),e.head&&(0,y.jsx)(T,{children:(0,y.jsx)(w,{children:e.head.map((e,t)=>(0,y.jsx)(S,{children:e},t))})}),e.body&&(0,y.jsx)(E,{children:e.body.map((e,t)=>(0,y.jsx)(w,{children:e.map((e,t)=>(0,y.jsx)(C,{children:e},t))},t))}),e.foot&&(0,y.jsx)(D,{children:(0,y.jsx)(w,{children:e.foot.map((e,t)=>(0,y.jsx)(S,{children:e},t))})})]})}k.displayName=`@mantine/core/TableDataRenderer`;var A=a(u(),1),re={withRowBorders:!0,verticalSpacing:7},ie=t((e,{layout:t,captionSide:n,horizontalSpacing:r,verticalSpacing:a,borderColor:o,stripedColor:s,highlightOnHoverColor:c,striped:u,highlightOnHover:f,stickyHeaderOffset:p,stickyHeader:m})=>({table:{"--table-layout":t,"--table-caption-side":n,"--table-horizontal-spacing":d(r),"--table-vertical-spacing":d(a),"--table-border-color":o?i(o,e):void 0,"--table-striped-color":u&&s?i(s,e):void 0,"--table-highlight-on-hover-color":f&&c?i(c,e):void 0,"--table-sticky-header-offset":m?l(p):void 0}})),j=f(t=>{let i=e(`Table`,re,t),{classNames:a,className:o,style:s,styles:c,unstyled:l,vars:u,horizontalSpacing:d,verticalSpacing:f,captionSide:p,stripedColor:m,highlightOnHoverColor:h,striped:_,highlightOnHover:b,withColumnBorders:x,withRowBorders:S,withTableBorder:C,borderColor:w,layout:T,data:E,children:D,stickyHeader:O,stickyHeaderOffset:ee,mod:te,tabularNums:ne,attributes:j,...ae}=i,oe=n({name:`Table`,props:i,className:o,style:s,classes:v,classNames:a,styles:c,unstyled:l,attributes:j,rootSelector:`table`,vars:u,varsResolver:ie,stable:!0}),se=_===!0?`odd`:_||void 0,ce=p||`bottom`,le=(0,A.useMemo)(()=>({getStyles:oe,stickyHeader:O,striped:se,highlightOnHover:b,withColumnBorders:x,withRowBorders:S,captionSide:ce}),[oe,O,se,b,x,S,ce]);return(0,y.jsx)(g,{value:le,children:(0,y.jsx)(r,{component:`table`,mod:[{withTableBorder:C,tabularNums:ne},te],...oe(`table`),...ae,children:D||!!E&&(0,y.jsx)(k,{data:E})})})});j.classes=v,j.varsResolver=ie,j.displayName=`@mantine/core/Table`,j.Td=C,j.Th=S,j.Tr=w,j.Thead=T,j.Tbody=E,j.Tfoot=D,j.Caption=O,j.ScrollContainer=ne,j.DataRenderer=k;function ae(e,t){let n=t||{};return(e[e.length-1]===``?[...e,``]:e).join((n.padRight?` `:``)+`,`+(n.padLeft===!1?``:` `)).trim()}var oe=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,se=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,ce={};function le(e,t){return((t||ce).jsx?se:oe).test(e)}var ue=/[ \t\n\f\r]/g;function de(e){return typeof e==`object`?e.type===`text`&&fe(e.value):fe(e)}function fe(e){return e.replace(ue,``)===``}var pe=class{constructor(e,t,n){this.normal=t,this.property=e,n&&(this.space=n)}};pe.prototype.normal={},pe.prototype.property={},pe.prototype.space=void 0;function me(e,t){let n={},r={};for(let t of e)Object.assign(n,t.property),Object.assign(r,t.normal);return new pe(n,r,t)}function he(e){return e.toLowerCase()}var M=class{constructor(e,t){this.attribute=t,this.property=e}};M.prototype.attribute=``,M.prototype.booleanish=!1,M.prototype.boolean=!1,M.prototype.commaOrSpaceSeparated=!1,M.prototype.commaSeparated=!1,M.prototype.defined=!1,M.prototype.mustUseProperty=!1,M.prototype.number=!1,M.prototype.overloadedBoolean=!1,M.prototype.property=``,M.prototype.spaceSeparated=!1,M.prototype.space=void 0;var ge=s({boolean:()=>N,booleanish:()=>P,commaOrSpaceSeparated:()=>R,commaSeparated:()=>L,number:()=>F,overloadedBoolean:()=>ve,spaceSeparated:()=>I}),_e=0,N=z(),P=z(),ve=z(),F=z(),I=z(),L=z(),R=z();function z(){return 2**++_e}var ye=Object.keys(ge),be=class extends M{constructor(e,t,n,r){let i=-1;if(super(e,t),xe(this,`space`,r),typeof n==`number`)for(;++i4&&n.slice(0,4)===`data`&&Pe.test(t)){if(t.charAt(4)===`-`){let e=t.slice(5).replace(Ne,Le);r=`data`+e.charAt(0).toUpperCase()+e.slice(1)}else{let e=t.slice(4);if(!Ne.test(e)){let n=e.replace(Me,Ie);n.charAt(0)!==`-`&&(n=`-`+n),t=`data`+n}}i=be}return new i(r,t)}function Ie(e){return`-`+e.toLowerCase()}function Le(e){return e.charAt(1).toUpperCase()}var Re=me([Ce,Ee,Oe,ke,Ae],`html`),ze=me([Ce,De,Oe,ke,Ae],`svg`);function Be(e){return e.join(` `).trim()}var Ve=c(((e,t)=>{var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,r=/\n/g,i=/^\s*/,a=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,o=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,c=/^[;\s]*/,l=/^\s+|\s+$/g;function u(e,t){if(typeof e!=`string`)throw TypeError(`First argument must be a string`);if(!e)return[];t||={};var l=1,u=1;function f(e){var t=e.match(r);t&&(l+=t.length);var n=e.lastIndexOf(` -`);u=~n?e.length-n:u+e.length}function p(){var e={line:l,column:u};return function(t){return t.position=new m(e),_(),t}}function m(e){this.start=e,this.end={line:l,column:u},this.source=t.source}m.prototype.content=e;function h(n){var r=Error(t.source+`:`+l+`:`+u+`: `+n);if(r.reason=n,r.filename=t.source,r.line=l,r.column=u,r.source=e,!t.silent)throw r}function g(t){var n=t.exec(e);if(n){var r=n[0];return f(r),e=e.slice(r.length),n}}function _(){g(i)}function v(e){var t;for(e||=[];t=y();)t!==!1&&e.push(t);return e}function y(){var t=p();if(e.charAt(0)==`/`&&e.charAt(1)==`*`){for(var n=2;e.charAt(n)!=``&&(e.charAt(n)!=`*`||e.charAt(n+1)!=`/`);)++n;if(n+=2,e.charAt(n-1)===``)return h(`End of comment missing`);var r=e.slice(2,n-2);return u+=2,f(r),e=e.slice(n),u+=2,t({type:`comment`,comment:r})}}function b(){var e=p(),t=g(a);if(t){if(y(),!g(o))return h(`property missing ':'`);var r=g(s),i=e({type:`declaration`,property:d(t[0].replace(n,``)),value:r?d(r[0].replace(n,``)):``});return g(c),i}}function x(){var e=[];v(e);for(var t;t=b();)t!==!1&&(e.push(t),v(e));return e}return _(),x()}function d(e){return e?e.replace(l,``):``}t.exports=u})),He=c((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.default=r;var n=t(Ve());function r(e,t){let r=null;if(!e||typeof e!=`string`)return r;let i=(0,n.default)(e),a=typeof t==`function`;return i.forEach(e=>{if(e.type!==`declaration`)return;let{property:n,value:i}=e;a?t(n,i,e):i&&(r||={},r[n]=i)}),r}})),Ue=c((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,i=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,o=function(e){return!e||r.test(e)||t.test(e)},s=function(e,t){return t.toUpperCase()},c=function(e,t){return`${t}-`};e.camelCase=function(e,t){return t===void 0&&(t={}),o(e)?e:(e=e.toLowerCase(),e=t.reactCompat?e.replace(a,c):e.replace(i,c),e.replace(n,s))}})),We=c(((e,t)=>{var n=(e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}})(He()),r=Ue();function i(e,t){var i={};return!e||typeof e!=`string`||(0,n.default)(e,function(e,n){e&&n&&(i[(0,r.camelCase)(e,t)]=n)}),i}i.default=i,t.exports=i})),Ge=qe(`end`),Ke=qe(`start`);function qe(e){return t;function t(t){let n=t&&t.position&&t.position[e]||{};if(typeof n.line==`number`&&n.line>0&&typeof n.column==`number`&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset==`number`&&n.offset>-1?n.offset:void 0}}}function Je(e){let t=Ke(e),n=Ge(e);if(t&&n)return{start:t,end:n}}function Ye(e){return!e||typeof e!=`object`?``:`position`in e||`type`in e?Ze(e.position):`start`in e||`end`in e?Ze(e):`line`in e||`column`in e?Xe(e):``}function Xe(e){return Qe(e&&e.line)+`:`+Qe(e&&e.column)}function Ze(e){return Xe(e&&e.start)+`-`+Xe(e&&e.end)}function Qe(e){return e&&typeof e==`number`?e:1}var B=class extends Error{constructor(e,t,n){super(),typeof t==`string`&&(n=t,t=void 0);let r=``,i={},a=!1;if(t&&(i=`line`in t&&`column`in t||`start`in t&&`end`in t?{place:t}:`type`in t?{ancestors:[t],place:t.position}:{...t}),typeof e==`string`?r=e:!i.cause&&e&&(a=!0,r=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof n==`string`){let e=n.indexOf(`:`);e===-1?i.ruleId=n:(i.source=n.slice(0,e),i.ruleId=n.slice(e+1))}if(!i.place&&i.ancestors&&i.ancestors){let e=i.ancestors[i.ancestors.length-1];e&&(i.place=e.position)}let o=i.place&&`start`in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=o?o.column:void 0,this.fatal=void 0,this.file=``,this.message=r,this.line=o?o.line:void 0,this.name=Ye(i.place)||`1:1`,this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack==`string`?i.cause.stack:``,this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};B.prototype.file=``,B.prototype.name=``,B.prototype.reason=``,B.prototype.message=``,B.prototype.stack=``,B.prototype.column=void 0,B.prototype.line=void 0,B.prototype.ancestors=void 0,B.prototype.cause=void 0,B.prototype.fatal=void 0,B.prototype.place=void 0,B.prototype.ruleId=void 0,B.prototype.source=void 0;var $e=a(We(),1),et={}.hasOwnProperty,tt=new Map,nt=/[A-Z]/g,rt=new Set([`table`,`tbody`,`thead`,`tfoot`,`tr`]),it=new Set([`td`,`th`]),at=`https://github.com/syntax-tree/hast-util-to-jsx-runtime`;function ot(e,t){if(!t||t.Fragment===void 0)throw TypeError("Expected `Fragment` in options");let n=t.filePath||void 0,r;if(t.development){if(typeof t.jsxDEV!=`function`)throw TypeError("Expected `jsxDEV` in options when `development: true`");r=_t(n,t.jsxDEV)}else{if(typeof t.jsx!=`function`)throw TypeError("Expected `jsx` in production options");if(typeof t.jsxs!=`function`)throw TypeError("Expected `jsxs` in production options");r=gt(n,t.jsx,t.jsxs)}let i={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:r,elementAttributeNameCase:t.elementAttributeNameCase||`react`,evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space===`svg`?ze:Re,stylePropertyNameCase:t.stylePropertyNameCase||`dom`,tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},a=st(i,e,void 0);return a&&typeof a!=`string`?a:i.create(e,i.Fragment,{children:a||void 0},void 0)}function st(e,t,n){if(t.type===`element`)return ct(e,t,n);if(t.type===`mdxFlowExpression`||t.type===`mdxTextExpression`)return lt(e,t);if(t.type===`mdxJsxFlowElement`||t.type===`mdxJsxTextElement`)return dt(e,t,n);if(t.type===`mdxjsEsm`)return ut(e,t);if(t.type===`root`)return ft(e,t,n);if(t.type===`text`)return pt(e,t)}function ct(e,t,n){let r=e.schema,i=r;t.tagName.toLowerCase()===`svg`&&r.space===`html`&&(i=ze,e.schema=i),e.ancestors.push(t);let a=Ct(e,t.tagName,!1),o=vt(e,t),s=bt(e,t);return rt.has(t.tagName)&&(s=s.filter(function(e){return typeof e!=`string`||!de(e)})),mt(e,o,a,t),ht(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function lt(e,t){if(t.data&&t.data.estree&&e.evaluater){let n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}wt(e,t.position)}function ut(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);wt(e,t.position)}function dt(e,t,n){let r=e.schema,i=r;t.name===`svg`&&r.space===`html`&&(i=ze,e.schema=i),e.ancestors.push(t);let a=t.name===null?e.Fragment:Ct(e,t.name,!0),o=yt(e,t),s=bt(e,t);return mt(e,o,a,t),ht(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function ft(e,t,n){let r={};return ht(r,bt(e,t)),e.create(t,e.Fragment,r,n)}function pt(e,t){return t.value}function mt(e,t,n,r){typeof n!=`string`&&n!==e.Fragment&&e.passNode&&(t.node=r)}function ht(e,t){if(t.length>0){let n=t.length>1?t:t[0];n&&(e.children=n)}}function gt(e,t,n){return r;function r(e,r,i,a){let o=Array.isArray(i.children)?n:t;return a?o(r,i,a):o(r,i)}}function _t(e,t){return n;function n(n,r,i,a){let o=Array.isArray(i.children),s=Ke(n);return t(r,i,a,o,{columnNumber:s?s.column-1:void 0,fileName:e,lineNumber:s?s.line:void 0},void 0)}}function vt(e,t){let n={},r,i;for(i in t.properties)if(i!==`children`&&et.call(t.properties,i)){let a=xt(e,i,t.properties[i]);if(a){let[i,o]=a;e.tableCellAlignToStyle&&i===`align`&&typeof o==`string`&&it.has(t.tagName)?r=o:n[i]=o}}if(r){let t=n.style||={};t[e.stylePropertyNameCase===`css`?`text-align`:`textAlign`]=r}return n}function yt(e,t){let n={};for(let r of t.attributes)if(r.type===`mdxJsxExpressionAttribute`){if(r.data&&r.data.estree&&e.evaluater){let t=r.data.estree.body[0];t.type;let i=t.expression;i.type;let a=i.properties[0];a.type,Object.assign(n,e.evaluater.evaluateExpression(a.argument))}else wt(e,t.position)}else{let i=r.name,a;if(r.value&&typeof r.value==`object`){if(r.value.data&&r.value.data.estree&&e.evaluater){let t=r.value.data.estree.body[0];t.type,a=e.evaluater.evaluateExpression(t.expression)}else wt(e,t.position)}else a=r.value===null||r.value;n[i]=a}return n}function bt(e,t){let n=[],r=-1,i=e.passKeys?new Map:tt;for(;++ri?0:i+t:t>i?i:t,n=n>0?n:0,r.length<1e4)o=Array.from(r),o.unshift(t,n),e.splice(...o);else for(n&&e.splice(t,n);a0?(V(e,e.length,0,t),e):t}var It={}.hasOwnProperty;function Lt(e){let t={},n=-1;for(;++n13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)==65535||(n&65535)==65534||n>1114111?`�`:String.fromCodePoint(n)}function U(e){return e.replace(/[\t\n\r ]+/g,` `).replace(/^ | $/g,``).toLowerCase().toUpperCase()}var W=Jt(/[A-Za-z]/),G=Jt(/[\dA-Za-z]/),Vt=Jt(/[#-'*+\--9=?A-Z^-~]/);function Ht(e){return e!==null&&(e<32||e===127)}var Ut=Jt(/\d/),Wt=Jt(/[\dA-Fa-f]/),Gt=Jt(/[!-/:-@[-`{-~]/);function K(e){return e!==null&&e<-2}function q(e){return e!==null&&(e<0||e===32)}function J(e){return e===-2||e===-1||e===32}var Kt=Jt(/\p{P}|\p{S}/u),qt=Jt(/\s/);function Jt(e){return t;function t(t){return t!==null&&t>-1&&e.test(String.fromCharCode(t))}}function Yt(e){let t=[],n=-1,r=0,i=0;for(;++n55295&&a<57344){let t=e.charCodeAt(n+1);a<56320&&t>56319&&t<57344?(o=String.fromCharCode(a,t),i=1):o=`�`}else o=String.fromCharCode(a);o&&=(t.push(e.slice(r,n),encodeURIComponent(o)),r=n+i+1,``),i&&=(n+=i,0)}return t.join(``)+e.slice(r)}function Y(e,t,n,r){let i=r?r-1:1/0,a=0;return o;function o(r){return J(r)?(e.enter(n),s(r)):t(r)}function s(r){return J(r)&&a++0&&J(t)?(e.enter(r),c(t)):l(t)}function c(t){return J(t)&&o=i?t(e):n(e)}}var Zt={tokenize:Qt};function Qt(e){let t=e.attempt(this.parser.constructs.contentInitial,r,i),n;return t;function r(n){if(n===null){e.consume(n);return}return e.enter(`lineEnding`),e.consume(n),e.exit(`lineEnding`),Y(e,t,`linePrefix`)}function i(t){return e.enter(`paragraph`),a(t)}function a(t){let r=e.enter(`chunkText`,{contentType:`text`,previous:n});return n&&(n.next=r),n=r,o(t)}function o(t){if(t===null){e.exit(`chunkText`),e.exit(`paragraph`),e.consume(t);return}return K(t)?(e.consume(t),e.exit(`chunkText`),a):(e.consume(t),o)}}var $t=class{constructor(){this.index=new Map,this.map=[]}add(e,t,n){en(this,e,t,n,!1)}addBefore(e,t,n){en(this,e,t,n,!0)}consume(e){if(this.map.sort(function(e,t){return e[0]-t[0]}),this.map.length===0)return;let t=this.map.length,n=[];for(;t>0;)--t,n.push(e.slice(this.map[t][0]+this.map[t][1]),this.map[t][2]),e.length=this.map[t][0];n.push(e.slice()),e.length=0;let r=n.pop();for(;r;){for(let t of r)e.push(t);r=n.pop()}this.map.length=0,this.index.clear()}};function en(e,t,n,r,i){if(n===0&&r.length===0)return;let a=e.index.get(t);if(a){a[1]+=n,i?(r.push(...a[2]),a[2]=r):a[2].push(...r);return}let o=[t,n,r];e.map.push(o),e.index.set(t,o)}var tn={tokenize:rn},nn={tokenize:an};function rn(e){let t=this,n=[],r=0,i,a,o;return s;function s(i){if(ro))return;let n=t.events.length,a=n,s,c;for(;a--;)if(t.events[a][0]===`exit`&&t.events[a][1].type===`chunkFlow`){if(s){c=t.events[a][1].end;break}s=!0}for(_(r),e=n;er;){let r=n[i];t.containerState=r[1],r[0].exit.call(t,e)}n.length=r}function v(){i.write([null]),a=void 0,i=void 0,t.containerState._closeFlow=void 0}}function an(e,t,n){return Y(e,e.attempt(this.parser.constructs.document,t,n),`linePrefix`,this.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)}function on(e){if(e===null||q(e)||qt(e))return 1;if(Kt(e))return 2}function sn(e,t,n){let r=[],i=-1;for(;++i1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1,o={...e[i][1].end},s={...e[n][1].start};dn(o,-a),dn(s,a);let c={type:a>1?`strongSequence`:`emphasisSequence`,start:o,end:{...e[i][1].end}},l={type:a>1?`strongSequence`:`emphasisSequence`,start:{...e[n][1].start},end:s},u={type:a>1?`strongText`:`emphasisText`,start:{...e[i][1].end},end:{...e[n][1].start}},d={type:a>1?`strong`:`emphasis`,start:{...c.start},end:{...l.end}};e[i][1].end={...c.start},e[n][1].start={...l.end},r=[],e[i][1].end.offset-e[i][1].start.offset&&(r=H(r,[[`enter`,e[i][1],t],[`exit`,e[i][1],t]])),r=H(r,[[`enter`,d,t],[`enter`,c,t],[`exit`,c,t],[`enter`,u,t]]),r=H(r,sn(t.parser.constructs.insideSpan.null,e.slice(i+1,n),t)),r=H(r,[[`exit`,u,t],[`enter`,l,t],[`exit`,l,t],[`exit`,d,t]]);let f=0;e[n][1].end.offset-e[n][1].start.offset&&(f=2,r=H(r,[[`enter`,e[n][1],t],[`exit`,e[n][1],t]])),V(e,i-1,n-i+3,r),n=i+r.length-f-2;break}}for(n=-1;++n0&&J(t)?Y(e,v,`linePrefix`,a+1)(t):v(t)}function v(t){return t===null||K(t)?e.check(wn,h,b)(t):(e.enter(`codeFlowValue`),y(t))}function y(t){return t===null||K(t)?(e.exit(`codeFlowValue`),v(t)):(e.consume(t),y)}function b(n){return e.exit(`codeFenced`),t(n)}function x(e,t,n){let i=0;return a;function a(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),c}function c(t){return e.enter(`codeFencedFence`),J(t)?Y(e,l,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):l(t)}function l(t){return t===s?(e.enter(`codeFencedFenceSequence`),u(t)):n(t)}function u(t){return t===s?(i++,e.consume(t),u):i>=o?(e.exit(`codeFencedFenceSequence`),J(t)?Y(e,d,`whitespace`)(t):d(t)):n(t)}function d(r){return r===null||K(r)?(e.exit(`codeFencedFence`),t(r)):n(r)}}}var On={name:`codeIndented`,tokenize:An},kn={partial:!0,tokenize:jn};function An(e,t,n){return r;function r(t){return e.enter(`codeIndented`),Xt(e,i,n,`linePrefix`,4,4)(t)}function i(t){return t===null?o(t):K(t)?e.attempt(kn,i,o)(t):(e.enter(`codeFlowValue`),a(t))}function a(t){return t===null||K(t)?(e.exit(`codeFlowValue`),i(t)):(e.consume(t),a)}function o(n){return e.exit(`codeIndented`),t(n)}}function jn(e,t,n){let r=this;return i;function i(o){return r.parser.lazy[r.now().line]?n(o):K(o)?(e.enter(`lineEnding`),e.consume(o),e.exit(`lineEnding`),i):Xt(e,t,a,`linePrefix`,4,4)(o)}function a(e){return K(e)?i(e):n(e)}}var Mn={name:`codeText`,previous:Pn,resolve:Nn,tokenize:Fn};function Nn(e){let t=e.length-4,n=3,r,i;if((e[n][1].type===`lineEnding`||e[n][1].type===`space`)&&(e[t][1].type===`lineEnding`||e[t][1].type===`space`)){for(r=n;++r=this.left.length+this.right.length)throw RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(e,t,n){let r=t||0;this.setCursor(Math.trunc(e));let i=this.right.splice(this.right.length-r,1/0);return n&&Ln(this.left,n),i.reverse()}pop(){return this.setCursor(1/0),this.left.pop()}push(e){this.setCursor(1/0),this.left.push(e)}pushMany(e){this.setCursor(1/0),Ln(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),Ln(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0)){if(e=4?t(i):e.interrupt(r.parser.constructs.flow,n,t)(i)}}function Gn(e,t,n,r,i,a,o,s,c){let l=c||1/0,u=0;return d;function d(t){return t===60?(e.enter(r),e.enter(i),e.enter(a),e.consume(t),e.exit(a),f):t===null||t===32||t===41||Ht(t)?n(t):(e.enter(r),e.enter(o),e.enter(s),e.enter(`chunkString`,{contentType:`string`}),h(t))}function f(n){return n===62?(e.enter(a),e.consume(n),e.exit(a),e.exit(i),e.exit(r),t):(e.enter(s),e.enter(`chunkString`,{contentType:`string`}),p(n))}function p(t){return t===62?(e.exit(`chunkString`),e.exit(s),f(t)):t===null||t===60||K(t)?n(t):(e.consume(t),t===92?m:p)}function m(t){return t===60||t===62||t===92?(e.consume(t),p):p(t)}function h(i){return!u&&(i===null||i===41||q(i))?(e.exit(`chunkString`),e.exit(s),e.exit(o),e.exit(r),t(i)):u999||l===null||l===91||l===93&&!c||l===94&&!s&&`_hiddenFootnoteSupport`in o.parser.constructs?n(l):l===93?(e.exit(a),e.enter(i),e.consume(l),e.exit(i),e.exit(r),t):K(l)?(e.enter(`lineEnding`),e.consume(l),e.exit(`lineEnding`),u):(e.enter(`chunkString`,{contentType:`string`}),d(l))}function d(t){return t===null||t===91||t===93||K(t)||s++>999?(e.exit(`chunkString`),u(t)):(e.consume(t),c||=!J(t),t===92?f:d)}function f(t){return t===91||t===92||t===93?(e.consume(t),s++,d):d(t)}}function qn(e,t,n,r,i,a){let o;return s;function s(t){return t===34||t===39||t===40?(e.enter(r),e.enter(i),e.consume(t),e.exit(i),o=t===40?41:t,c):n(t)}function c(n){return n===o?(e.enter(i),e.consume(n),e.exit(i),e.exit(r),t):(e.enter(a),l(n))}function l(t){return t===o?(e.exit(a),c(o)):t===null?n(t):K(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),Y(e,l,`linePrefix`)):(e.enter(`chunkString`,{contentType:`string`}),u(t))}function u(t){return t===o||t===null||K(t)?(e.exit(`chunkString`),l(t)):(e.consume(t),t===92?d:u)}function d(t){return t===o||t===92?(e.consume(t),u):u(t)}}function Jn(e,t){let n;return r;function r(i){return K(i)?(e.enter(`lineEnding`),e.consume(i),e.exit(`lineEnding`),n=!0,r):J(i)?Y(e,r,n?`linePrefix`:`lineSuffix`)(i):t(i)}}var Yn={name:`definition`,tokenize:Zn},Xn={partial:!0,tokenize:Qn};function Zn(e,t,n){let r=this,i;return a;function a(t){return e.enter(`definition`),o(t)}function o(t){return Kn.call(r,e,s,n,`definitionLabel`,`definitionLabelMarker`,`definitionLabelString`)(t)}function s(t){return i=U(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),c):n(t)}function c(t){return q(t)?Jn(e,l)(t):l(t)}function l(t){return Gn(e,u,n,`definitionDestination`,`definitionDestinationLiteral`,`definitionDestinationLiteralMarker`,`definitionDestinationRaw`,`definitionDestinationString`)(t)}function u(t){return e.attempt(Xn,d,d)(t)}function d(t){return J(t)?Y(e,f,`whitespace`)(t):f(t)}function f(a){return a===null||K(a)?(e.exit(`definition`),r.parser.defined.push(i),t(a)):n(a)}}function Qn(e,t,n){return r;function r(t){return q(t)?Jn(e,i)(t):n(t)}function i(t){return qn(e,a,n,`definitionTitle`,`definitionTitleMarker`,`definitionTitleString`)(t)}function a(t){return J(t)?Y(e,o,`whitespace`)(t):o(t)}function o(e){return e===null||K(e)?t(e):n(e)}}var $n={name:`hardBreakEscape`,tokenize:er};function er(e,t,n){return r;function r(t){return e.enter(`hardBreakEscape`),e.consume(t),i}function i(r){return K(r)?(e.exit(`hardBreakEscape`),t(r)):n(r)}}var tr={name:`headingAtx`,resolve:nr,tokenize:rr};function nr(e,t){let n=e.length-2,r=3;if(e[r][1].type===`whitespace`&&(r+=2),n-2>r&&e[n][1].type===`whitespace`&&(n-=2),e[n][1].type===`atxHeadingSequence`&&(r===n-1||n-4>r&&e[n-2][1].type===`whitespace`)&&(n-=r+1===n?2:4),n>r){let i={type:`atxHeadingText`,start:e[r][1].start,end:e[n][1].end},a={type:`chunkText`,start:e[r][1].start,end:e[n][1].end,contentType:`text`};V(e,r,n-r+1,[[`enter`,i,t],[`enter`,a,t],[`exit`,a,t],[`exit`,i,t]])}return e}function rr(e,t,n){let r=0;return i;function i(t){return e.enter(`atxHeading`),a(t)}function a(t){return e.enter(`atxHeadingSequence`),o(t)}function o(t){return t===35&&r++<6?(e.consume(t),o):t===null||q(t)?(e.exit(`atxHeadingSequence`),s(t)):n(t)}function s(n){return n===35?(e.enter(`atxHeadingSequence`),c(n)):n===null||K(n)?(e.exit(`atxHeading`),t(n)):J(n)?Y(e,s,`whitespace`)(n):(e.enter(`atxHeadingText`),l(n))}function c(t){return t===35?(e.consume(t),c):(e.exit(`atxHeadingSequence`),s(t))}function l(t){return t===null||t===35||q(t)?(e.exit(`atxHeadingText`),s(t)):(e.consume(t),l)}}var ir=`address.article.aside.base.basefont.blockquote.body.caption.center.col.colgroup.dd.details.dialog.dir.div.dl.dt.fieldset.figcaption.figure.footer.form.frame.frameset.h1.h2.h3.h4.h5.h6.head.header.hr.html.iframe.legend.li.link.main.menu.menuitem.nav.noframes.ol.optgroup.option.p.param.search.section.summary.table.tbody.td.tfoot.th.thead.title.tr.track.ul`.split(`.`),ar=[`pre`,`script`,`style`,`textarea`],or={concrete:!0,name:`htmlFlow`,resolveTo:cr,tokenize:lr},sr={partial:!0,tokenize:ur};function cr(e){let t=e.length;for(;t--&&(e[t][0]!==`enter`||e[t][1].type!==`htmlFlow`););return t>1&&e[t-2][1].type===`linePrefix`&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function lr(e,t,n){let r=this,i,a,o,s,c;return l;function l(e){return u(e)}function u(t){return e.enter(`htmlFlow`),e.enter(`htmlFlowData`),e.consume(t),d}function d(s){return s===33?(e.consume(s),f):s===47?(e.consume(s),a=!0,h):s===63?(e.consume(s),i=3,r.interrupt?t:j):W(s)?(e.consume(s),o=String.fromCharCode(s),g):n(s)}function f(a){return a===45?(e.consume(a),i=2,p):a===91?(e.consume(a),i=5,s=0,m):W(a)?(e.consume(a),i=4,r.interrupt?t:j):n(a)}function p(i){return i===45?(e.consume(i),r.interrupt?t:j):n(i)}function m(i){return i===`CDATA[`.charCodeAt(s++)?(e.consume(i),s===6?r.interrupt?t:O:m):n(i)}function h(t){return W(t)?(e.consume(t),o=String.fromCharCode(t),g):n(t)}function g(s){if(s===null||s===47||s===62||q(s)){let c=s===47,l=o.toLowerCase();return!c&&!a&&ar.includes(l)?(i=1,r.interrupt?t(s):O(s)):ir.includes(o.toLowerCase())?(i=6,c?(e.consume(s),_):r.interrupt?t(s):O(s)):(i=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(s):a?v(s):y(s))}return s===45||G(s)?(e.consume(s),o+=String.fromCharCode(s),g):n(s)}function _(i){return i===62?(e.consume(i),r.interrupt?t:O):n(i)}function v(t){return J(t)?(e.consume(t),v):E(t)}function y(t){return t===47?(e.consume(t),E):t===58||t===95||W(t)?(e.consume(t),b):J(t)?(e.consume(t),y):E(t)}function b(t){return t===45||t===46||t===58||t===95||G(t)?(e.consume(t),b):x(t)}function x(t){return t===61?(e.consume(t),S):J(t)?(e.consume(t),x):y(t)}function S(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),c=t,C):J(t)?(e.consume(t),S):w(t)}function C(t){return t===c?(e.consume(t),c=null,T):t===null||K(t)?n(t):(e.consume(t),C)}function w(t){return t===null||t===34||t===39||t===47||t===60||t===61||t===62||t===96||q(t)?x(t):(e.consume(t),w)}function T(e){return e===47||e===62||J(e)?y(e):n(e)}function E(t){return t===62?(e.consume(t),D):n(t)}function D(t){return t===null||K(t)?O(t):J(t)?(e.consume(t),D):n(t)}function O(t){return t===45&&i===2?(e.consume(t),k):t===60&&i===1?(e.consume(t),A):t===62&&i===4?(e.consume(t),ae):t===63&&i===3?(e.consume(t),j):t===93&&i===5?(e.consume(t),ie):K(t)&&(i===6||i===7)?(e.exit(`htmlFlowData`),e.check(sr,oe,ee)(t)):t===null||K(t)?(e.exit(`htmlFlowData`),ee(t)):(e.consume(t),O)}function ee(t){return e.check(wn,te,oe)(t)}function te(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),ne}function ne(t){return t===null||K(t)?ee(t):(e.enter(`htmlFlowData`),O(t))}function k(t){return t===45?(e.consume(t),j):O(t)}function A(t){return t===47?(e.consume(t),o=``,re):O(t)}function re(t){if(t===62){let n=o.toLowerCase();return ar.includes(n)?(e.consume(t),ae):O(t)}return W(t)&&o.length<8?(e.consume(t),o+=String.fromCharCode(t),re):O(t)}function ie(t){return t===93?(e.consume(t),j):O(t)}function j(t){return t===62?(e.consume(t),ae):t===45&&i===2?(e.consume(t),j):O(t)}function ae(t){return t===null||K(t)?(e.exit(`htmlFlowData`),oe(t)):(e.consume(t),ae)}function oe(n){return e.exit(`htmlFlow`),t(n)}}function ur(e,t,n){return r;function r(r){return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),e.attempt(mn,t,n)}}var dr={name:`htmlText`,tokenize:fr};function fr(e,t,n){let r=this,i,a,o;return s;function s(t){return e.enter(`htmlText`),e.enter(`htmlTextData`),e.consume(t),c}function c(t){return t===33?(e.consume(t),l):t===47?(e.consume(t),x):t===63?(e.consume(t),y):W(t)?(e.consume(t),w):n(t)}function l(t){return t===45?(e.consume(t),u):t===91?(e.consume(t),a=0,m):W(t)?(e.consume(t),v):n(t)}function u(t){return t===45?(e.consume(t),p):n(t)}function d(t){return t===null?n(t):t===45?(e.consume(t),f):K(t)?(o=d,A(t)):(e.consume(t),d)}function f(t){return t===45?(e.consume(t),p):d(t)}function p(e){return e===62?k(e):e===45?f(e):d(e)}function m(t){return t===`CDATA[`.charCodeAt(a++)?(e.consume(t),a===6?h:m):n(t)}function h(t){return t===null?n(t):t===93?(e.consume(t),g):K(t)?(o=h,A(t)):(e.consume(t),h)}function g(t){return t===93?(e.consume(t),_):h(t)}function _(t){return t===62?k(t):t===93?(e.consume(t),_):h(t)}function v(t){return t===null||t===62?k(t):K(t)?(o=v,A(t)):(e.consume(t),v)}function y(t){return t===null?n(t):t===63?(e.consume(t),b):K(t)?(o=y,A(t)):(e.consume(t),y)}function b(e){return e===62?k(e):y(e)}function x(t){return W(t)?(e.consume(t),S):n(t)}function S(t){return t===45||G(t)?(e.consume(t),S):C(t)}function C(t){return K(t)?(o=C,A(t)):J(t)?(e.consume(t),C):k(t)}function w(t){return t===45||G(t)?(e.consume(t),w):t===47||t===62||q(t)?T(t):n(t)}function T(t){return t===47?(e.consume(t),k):t===58||t===95||W(t)?(e.consume(t),E):K(t)?(o=T,A(t)):J(t)?(e.consume(t),T):k(t)}function E(t){return t===45||t===46||t===58||t===95||G(t)?(e.consume(t),E):D(t)}function D(t){return t===61?(e.consume(t),O):K(t)?(o=D,A(t)):J(t)?(e.consume(t),D):T(t)}function O(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),i=t,ee):K(t)?(o=O,A(t)):J(t)?(e.consume(t),O):(e.consume(t),te)}function ee(t){return t===i?(e.consume(t),i=void 0,ne):t===null?n(t):K(t)?(o=ee,A(t)):(e.consume(t),ee)}function te(t){return t===null||t===34||t===39||t===60||t===61||t===96?n(t):t===47||t===62||q(t)?T(t):(e.consume(t),te)}function ne(e){return e===47||e===62||q(e)?T(e):n(e)}function k(r){return r===62?(e.consume(r),e.exit(`htmlTextData`),e.exit(`htmlText`),t):n(r)}function A(t){return e.exit(`htmlTextData`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),re}function re(t){return J(t)?Y(e,ie,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):ie(t)}function ie(t){return e.enter(`htmlTextData`),o(t)}}var pr={name:`labelEnd`,resolveAll:_r,resolveTo:vr,tokenize:yr},mr={tokenize:br},hr={tokenize:xr},gr={tokenize:Sr};function _r(e){let t=-1,n=[];for(;++t0&&i[i.length-1]._balanced;)i.pop();a=i[i.length-1]}return s;function s(t){return a?a._inactive?d(t):(o=r.parser.defined.includes(U(r.sliceSerialize({start:a.end,end:r.now()}))),e.enter(`labelEnd`),e.enter(`labelMarker`),e.consume(t),e.exit(`labelMarker`),e.exit(`labelEnd`),c):n(t)}function c(t){return t===40?e.attempt(mr,u,o?u:d)(t):t===91?e.attempt(hr,u,o?l:d)(t):o?u(t):d(t)}function l(t){return e.attempt(gr,u,d)(t)}function u(e){return i.pop(),t(e)}function d(e){return a._balanced=!0,n(e)}}function br(e,t,n){return r;function r(t){return e.enter(`resource`),e.enter(`resourceMarker`),e.consume(t),e.exit(`resourceMarker`),i}function i(t){return q(t)?Jn(e,a)(t):a(t)}function a(t){return t===41?u(t):Gn(e,o,s,`resourceDestination`,`resourceDestinationLiteral`,`resourceDestinationLiteralMarker`,`resourceDestinationRaw`,`resourceDestinationString`,32)(t)}function o(t){return q(t)?Jn(e,c)(t):u(t)}function s(e){return n(e)}function c(t){return t===34||t===39||t===40?qn(e,l,n,`resourceTitle`,`resourceTitleMarker`,`resourceTitleString`)(t):u(t)}function l(t){return q(t)?Jn(e,u)(t):u(t)}function u(r){return r===41?(e.enter(`resourceMarker`),e.consume(r),e.exit(`resourceMarker`),e.exit(`resource`),t):n(r)}}function xr(e,t,n){let r=this;return i;function i(t){return Kn.call(r,e,a,o,`reference`,`referenceMarker`,`referenceString`)(t)}function a(e){return r.parser.defined.includes(U(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)))?t(e):n(e)}function o(e){return n(e)}}function Sr(e,t,n){return r;function r(t){return e.enter(`reference`),e.enter(`referenceMarker`),e.consume(t),e.exit(`referenceMarker`),i}function i(r){return r===93?(e.enter(`referenceMarker`),e.consume(r),e.exit(`referenceMarker`),e.exit(`reference`),t):n(r)}}var Cr={name:`labelStartImage`,resolveAll:pr.resolveAll,tokenize:wr};function wr(e,t,n){let r=this,i;return a;function a(t){return e.enter(`labelImage`),e.enter(`labelImageMarker`),e.consume(t),e.exit(`labelImageMarker`),o}function o(t){return t===91?(e.enter(`labelMarker`),e.consume(t),e.exit(`labelMarker`),i=e.exit(`labelImage`),s):n(t)}function s(e){return e===94&&`_hiddenFootnoteSupport`in r.parser.constructs?n(e):(r._labelStarts=r._labelStarts||[],r._labelStarts.push(i),t(e))}}var Tr={name:`labelStartLink`,resolveAll:pr.resolveAll,tokenize:Er};function Er(e,t,n){let r=this,i;return a;function a(t){return e.enter(`labelLink`),e.enter(`labelMarker`),e.consume(t),e.exit(`labelMarker`),i=e.exit(`labelLink`),o}function o(e){return e===94&&`_hiddenFootnoteSupport`in r.parser.constructs?n(e):(r._labelStarts=r._labelStarts||[],r._labelStarts.push(i),t(e))}}var Dr={name:`lineEnding`,tokenize:Or};function Or(e,t){return n;function n(n){return e.enter(`lineEnding`),e.consume(n),e.exit(`lineEnding`),Y(e,t,`linePrefix`)}}var kr={name:`thematicBreak`,tokenize:Ar};function Ar(e,t,n){let r=0,i;return a;function a(t){return e.enter(`thematicBreak`),o(t)}function o(e){return i=e,s(e)}function s(a){return a===i?(e.enter(`thematicBreakSequence`),c(a)):r>=3&&(a===null||K(a))?(e.exit(`thematicBreak`),t(a)):n(a)}function c(t){return t===i?(e.consume(t),r++,c):(e.exit(`thematicBreakSequence`),J(t)?Y(e,s,`whitespace`)(t):s(t))}}var X={continuation:{tokenize:Pr},exit:Ir,name:`list`,tokenize:Nr},jr={partial:!0,tokenize:Lr},Mr={partial:!0,tokenize:Fr};function Nr(e,t,n){let r=this,i=r.events[r.events.length-1],a=i&&i[1].type===`linePrefix`?i[2].sliceSerialize(i[1],!0).length:0,o=0;return s;function s(t){let i=r.containerState.type||(t===42||t===43||t===45?`listUnordered`:`listOrdered`);if(i===`listUnordered`?!r.containerState.marker||t===r.containerState.marker:Ut(t)){if(r.containerState.type||(r.containerState.type=i,e.enter(i,{_container:!0})),i===`listUnordered`)return e.enter(`listItemPrefix`),t===42||t===45?e.check(kr,n,l)(t):l(t);if(!r.interrupt||t===49)return e.enter(`listItemPrefix`),e.enter(`listItemValue`),c(t)}return n(t)}function c(t){return Ut(t)&&++o<10?(e.consume(t),c):(!r.interrupt||o<2)&&(r.containerState.marker?t===r.containerState.marker:t===41||t===46)?(e.exit(`listItemValue`),l(t)):n(t)}function l(t){return e.enter(`listItemMarker`),e.consume(t),e.exit(`listItemMarker`),r.containerState.marker=r.containerState.marker||t,e.check(mn,r.interrupt?n:u,e.attempt(jr,f,d))}function u(e){return r.containerState.initialBlankLine=!0,a++,f(e)}function d(t){return J(t)?(e.enter(`listItemPrefixWhitespace`),e.consume(t),e.exit(`listItemPrefixWhitespace`),f):n(t)}function f(n){return r.containerState.size=a+r.sliceSerialize(e.exit(`listItemPrefix`),!0).length,t(n)}}function Pr(e,t,n){let r=this;return r.containerState._closeFlow=void 0,e.check(mn,i,a);function i(n){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,Y(e,t,`listItemIndent`,r.containerState.size+1)(n)}function a(n){return r.containerState.furtherBlankLines||!J(n)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,o(n)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(Mr,t,o)(n))}function o(i){return r.containerState._closeFlow=!0,r.interrupt=void 0,Y(e,e.attempt(X,t,n),`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(i)}}function Fr(e,t,n){let r=this;return Y(e,i,`listItemIndent`,r.containerState.size+1);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`listItemIndent`&&i[2].sliceSerialize(i[1],!0).length===r.containerState.size?t(e):n(e)}}function Ir(e){e.exit(this.containerState.type)}function Lr(e,t,n){let r=this;return Y(e,i,`listItemPrefixWhitespace`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:5);function i(e){let i=r.events[r.events.length-1];return!J(e)&&i&&i[1].type===`listItemPrefixWhitespace`?t(e):n(e)}}var Rr={name:`setextUnderline`,resolveTo:zr,tokenize:Br};function zr(e,t){let n=new $t,r=e.length,i,a,o;for(;r--;)if(e[r][0]===`enter`){if(e[r][1].type===`content`){i=r;break}e[r][1].type===`paragraph`&&(a=r)}else e[r][1].type===`content`&&n.add(r,1,[]),!o&&e[r][1].type===`definition`&&(o=r);let s={type:`setextHeading`,start:{...e[i][1].start},end:{...e[e.length-1][1].end}};return e[a][1].type=`setextHeadingText`,o?(n.add(a,0,[[`enter`,s,t]]),n.add(o+1,0,[[`exit`,e[i][1],t]]),e[i][1].end={...e[o][1].end}):e[i][1]=s,n.add(e.length,0,[[`exit`,s,t]]),n.consume(e),e}function Br(e,t,n){let r=this,i;return a;function a(t){let a=r.events.length,s;for(;a--;)if(r.events[a][1].type!==`lineEnding`&&r.events[a][1].type!==`linePrefix`&&r.events[a][1].type!==`content`){s=r.events[a][1].type===`paragraph`;break}return!r.parser.lazy[r.now().line]&&(r.interrupt||s)?(e.enter(`setextHeadingLine`),i=t,o(t)):n(t)}function o(t){return e.enter(`setextHeadingLineSequence`),s(t)}function s(t){return t===i?(e.consume(t),s):(e.exit(`setextHeadingLineSequence`),J(t)?Y(e,c,`lineSuffix`)(t):c(t))}function c(r){return r===null||K(r)?(e.exit(`setextHeadingLine`),t(r)):n(r)}}var Vr={tokenize:Hr};function Hr(e){let t=this,n=e.attempt(mn,r,e.attempt(this.parser.constructs.flowInitial,i,Y(e,e.attempt(this.parser.constructs.flow,i,e.attempt(Bn,i)),`linePrefix`)));return n;function r(r){if(r===null){e.consume(r);return}return e.enter(`lineEndingBlank`),e.consume(r),e.exit(`lineEndingBlank`),t.currentConstruct=void 0,n}function i(r){if(r===null){e.consume(r);return}return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),t.currentConstruct=void 0,n}}var Ur={resolveAll:qr()},Wr=Kr(`string`),Gr=Kr(`text`);function Kr(e){return{resolveAll:qr(e===`text`?Jr:void 0),tokenize:t};function t(t){let n=this,r=this.parser.constructs[e],i=t.attempt(r,a,o);return a;function a(e){return c(e)?i(e):o(e)}function o(e){if(e===null){t.consume(e);return}return t.enter(`data`),t.consume(e),s}function s(e){return c(e)?(t.exit(`data`),i(e)):(t.consume(e),s)}function c(e){if(e===null)return!0;let t=r[e],i=-1;if(t)for(;++iri,contentInitial:()=>Zr,disable:()=>ii,document:()=>Xr,flow:()=>$r,flowInitial:()=>Qr,insideSpan:()=>ni,string:()=>ei,text:()=>ti}),Xr={42:X,43:X,45:X,48:X,49:X,50:X,51:X,52:X,53:X,54:X,55:X,56:X,57:X,62:gn},Zr={91:Yn},Qr={[-2]:On,[-1]:On,32:On},$r={35:tr,42:kr,45:[Rr,kr],60:or,61:Rr,95:kr,96:En,126:En},ei={38:Sn,92:bn},ti={[-5]:Dr,[-4]:Dr,[-3]:Dr,33:Cr,38:Sn,42:cn,60:[fn,dr],91:Tr,92:[$n,bn],93:pr,95:cn,96:Mn},ni={null:[cn,Ur]},ri={null:[42,95]},ii={null:[]};function ai(e,t,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0},i={},a=[],o=[],s=[],c={attempt:C(x),check:C(S),consume:v,enter:y,exit:b,interrupt:C(S,{interrupt:!0})},l={code:null,containerState:{},defineSkip:h,events:[],now:m,parser:e,previous:null,sliceSerialize:f,sliceStream:p,write:d},u=t.tokenize.call(l,c);return t.resolveAll&&a.push(t),l;function d(e){return o=H(o,e),g(),o[o.length-1]===null?(w(t,0),l.events=sn(a,l.events,l),l.events):[]}function f(e,t){return si(p(e),t)}function p(e){return oi(o,e)}function m(){let{_bufferIndex:e,_index:t,line:n,column:i,offset:a}=r;return{_bufferIndex:e,_index:t,line:n,column:i,offset:a}}function h(e){i[e.line]=e.column,E()}function g(){for(;r._index-1){let e=o[0];typeof e==`string`?o[0]=e.slice(r):o.shift()}a>0&&o.push(e[i].slice(0,a))}return o}function si(e,t){let n=-1,r=[],i;for(;++n{let o=r(i,{},a),{classNames:s,className:c,style:l,styles:u,...d}=o,f=_();return(0,y.jsx)(t,{component:e,...b(f,n),...f.getStyles(e,{className:c,classNames:s,style:l,styles:u,props:o}),...d})});return o.displayName=`@mantine/core/${i}`,o.classes=v,o}var S=x(`th`,{columnBorder:!0}),C=x(`td`,{columnBorder:!0}),w=x(`tr`,{rowBorder:!0,striped:!0,highlightOnHover:!0}),T=x(`thead`,{stickyHeader:!0}),E=x(`tbody`),D=x(`tfoot`),O=x(`caption`,{captionSide:!0}),ee={type:`scrollarea`},te=o((e,{minWidth:t,maxHeight:n,type:r})=>({scrollContainer:{"--table-min-width":l(t),"--table-max-height":l(n),"--table-overflow":r===`native`?`auto`:void 0}})),ne=a(n=>{let i=r(`TableScrollContainer`,ee,n),{classNames:a,className:o,style:s,styles:c,unstyled:l,vars:u,children:d,minWidth:f,maxHeight:p,type:h,scrollAreaProps:g,attributes:_,...b}=i,x=e({name:`TableScrollContainer`,classes:v,props:i,className:o,style:s,classNames:a,styles:c,unstyled:l,attributes:_,vars:u,varsResolver:te,rootSelector:`scrollContainer`});return(0,y.jsx)(t,{component:h===`scrollarea`?m:`div`,...h===`scrollarea`?p?{offsetScrollbars:`xy`,...g}:{offsetScrollbars:`x`,...g}:{},...x(`scrollContainer`),...b,children:(0,y.jsx)(`div`,{...x(`scrollContainerInner`),children:d})})});ne.classes=v,ne.varsResolver=te,ne.displayName=`@mantine/core/TableScrollContainer`;function k({data:e}){return(0,y.jsxs)(y.Fragment,{children:[e.caption&&(0,y.jsx)(O,{children:e.caption}),e.head&&(0,y.jsx)(T,{children:(0,y.jsx)(w,{children:e.head.map((e,t)=>(0,y.jsx)(S,{children:e},t))})}),e.body&&(0,y.jsx)(E,{children:e.body.map((e,t)=>(0,y.jsx)(w,{children:e.map((e,t)=>(0,y.jsx)(C,{children:e},t))},t))}),e.foot&&(0,y.jsx)(D,{children:(0,y.jsx)(w,{children:e.foot.map((e,t)=>(0,y.jsx)(S,{children:e},t))})})]})}k.displayName=`@mantine/core/TableDataRenderer`;var A=i(f(),1),re={withRowBorders:!0,verticalSpacing:7},ie=o((e,{layout:t,captionSide:r,horizontalSpacing:i,verticalSpacing:a,borderColor:o,stripedColor:s,highlightOnHoverColor:c,striped:d,highlightOnHover:f,stickyHeaderOffset:p,stickyHeader:m})=>({table:{"--table-layout":t,"--table-caption-side":r,"--table-horizontal-spacing":u(i),"--table-vertical-spacing":u(a),"--table-border-color":o?n(o,e):void 0,"--table-striped-color":d&&s?n(s,e):void 0,"--table-highlight-on-hover-color":f&&c?n(c,e):void 0,"--table-sticky-header-offset":m?l(p):void 0}})),j=a(n=>{let i=r(`Table`,re,n),{classNames:a,className:o,style:s,styles:c,unstyled:l,vars:u,horizontalSpacing:d,verticalSpacing:f,captionSide:p,stripedColor:m,highlightOnHoverColor:h,striped:_,highlightOnHover:b,withColumnBorders:x,withRowBorders:S,withTableBorder:C,borderColor:w,layout:T,data:E,children:D,stickyHeader:O,stickyHeaderOffset:ee,mod:te,tabularNums:ne,attributes:j,...ae}=i,oe=e({name:`Table`,props:i,className:o,style:s,classes:v,classNames:a,styles:c,unstyled:l,attributes:j,rootSelector:`table`,vars:u,varsResolver:ie,stable:!0}),se=_===!0?`odd`:_||void 0,ce=p||`bottom`,le=(0,A.useMemo)(()=>({getStyles:oe,stickyHeader:O,striped:se,highlightOnHover:b,withColumnBorders:x,withRowBorders:S,captionSide:ce}),[oe,O,se,b,x,S,ce]);return(0,y.jsx)(g,{value:le,children:(0,y.jsx)(t,{component:`table`,mod:[{withTableBorder:C,tabularNums:ne},te],...oe(`table`),...ae,children:D||!!E&&(0,y.jsx)(k,{data:E})})})});j.classes=v,j.varsResolver=ie,j.displayName=`@mantine/core/Table`,j.Td=C,j.Th=S,j.Tr=w,j.Thead=T,j.Tbody=E,j.Tfoot=D,j.Caption=O,j.ScrollContainer=ne,j.DataRenderer=k;function ae(e,t){let n=t||{};return(e[e.length-1]===``?[...e,``]:e).join((n.padRight?` `:``)+`,`+(n.padLeft===!1?``:` `)).trim()}var oe=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,se=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,ce={};function le(e,t){return((t||ce).jsx?se:oe).test(e)}var ue=/[ \t\n\f\r]/g;function de(e){return typeof e==`object`?e.type===`text`&&fe(e.value):fe(e)}function fe(e){return e.replace(ue,``)===``}var pe=class{constructor(e,t,n){this.normal=t,this.property=e,n&&(this.space=n)}};pe.prototype.normal={},pe.prototype.property={},pe.prototype.space=void 0;function me(e,t){let n={},r={};for(let t of e)Object.assign(n,t.property),Object.assign(r,t.normal);return new pe(n,r,t)}function he(e){return e.toLowerCase()}var M=class{constructor(e,t){this.attribute=t,this.property=e}};M.prototype.attribute=``,M.prototype.booleanish=!1,M.prototype.boolean=!1,M.prototype.commaOrSpaceSeparated=!1,M.prototype.commaSeparated=!1,M.prototype.defined=!1,M.prototype.mustUseProperty=!1,M.prototype.number=!1,M.prototype.overloadedBoolean=!1,M.prototype.property=``,M.prototype.spaceSeparated=!1,M.prototype.space=void 0;var ge=d({boolean:()=>N,booleanish:()=>P,commaOrSpaceSeparated:()=>R,commaSeparated:()=>L,number:()=>F,overloadedBoolean:()=>ve,spaceSeparated:()=>I}),_e=0,N=z(),P=z(),ve=z(),F=z(),I=z(),L=z(),R=z();function z(){return 2**++_e}var ye=Object.keys(ge),be=class extends M{constructor(e,t,n,r){let i=-1;if(super(e,t),xe(this,`space`,r),typeof n==`number`)for(;++i4&&n.slice(0,4)===`data`&&Pe.test(t)){if(t.charAt(4)===`-`){let e=t.slice(5).replace(Ne,Le);r=`data`+e.charAt(0).toUpperCase()+e.slice(1)}else{let e=t.slice(4);if(!Ne.test(e)){let n=e.replace(Me,Ie);n.charAt(0)!==`-`&&(n=`-`+n),t=`data`+n}}i=be}return new i(r,t)}function Ie(e){return`-`+e.toLowerCase()}function Le(e){return e.charAt(1).toUpperCase()}var Re=me([Ce,Ee,Oe,ke,Ae],`html`),ze=me([Ce,De,Oe,ke,Ae],`svg`);function Be(e){return e.join(` `).trim()}var Ve=c(((e,t)=>{var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,r=/\n/g,i=/^\s*/,a=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,o=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,c=/^[;\s]*/,l=/^\s+|\s+$/g;function u(e,t){if(typeof e!=`string`)throw TypeError(`First argument must be a string`);if(!e)return[];t||={};var l=1,u=1;function f(e){var t=e.match(r);t&&(l+=t.length);var n=e.lastIndexOf(` +`);u=~n?e.length-n:u+e.length}function p(){var e={line:l,column:u};return function(t){return t.position=new m(e),_(),t}}function m(e){this.start=e,this.end={line:l,column:u},this.source=t.source}m.prototype.content=e;function h(n){var r=Error(t.source+`:`+l+`:`+u+`: `+n);if(r.reason=n,r.filename=t.source,r.line=l,r.column=u,r.source=e,!t.silent)throw r}function g(t){var n=t.exec(e);if(n){var r=n[0];return f(r),e=e.slice(r.length),n}}function _(){g(i)}function v(e){var t;for(e||=[];t=y();)t!==!1&&e.push(t);return e}function y(){var t=p();if(e.charAt(0)==`/`&&e.charAt(1)==`*`){for(var n=2;e.charAt(n)!=``&&(e.charAt(n)!=`*`||e.charAt(n+1)!=`/`);)++n;if(n+=2,e.charAt(n-1)===``)return h(`End of comment missing`);var r=e.slice(2,n-2);return u+=2,f(r),e=e.slice(n),u+=2,t({type:`comment`,comment:r})}}function b(){var e=p(),t=g(a);if(t){if(y(),!g(o))return h(`property missing ':'`);var r=g(s),i=e({type:`declaration`,property:d(t[0].replace(n,``)),value:r?d(r[0].replace(n,``)):``});return g(c),i}}function x(){var e=[];v(e);for(var t;t=b();)t!==!1&&(e.push(t),v(e));return e}return _(),x()}function d(e){return e?e.replace(l,``):``}t.exports=u})),He=c((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.default=r;var n=t(Ve());function r(e,t){let r=null;if(!e||typeof e!=`string`)return r;let i=(0,n.default)(e),a=typeof t==`function`;return i.forEach(e=>{if(e.type!==`declaration`)return;let{property:n,value:i}=e;a?t(n,i,e):i&&(r||={},r[n]=i)}),r}})),Ue=c((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,i=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,o=function(e){return!e||r.test(e)||t.test(e)},s=function(e,t){return t.toUpperCase()},c=function(e,t){return`${t}-`};e.camelCase=function(e,t){return t===void 0&&(t={}),o(e)?e:(e=e.toLowerCase(),e=t.reactCompat?e.replace(a,c):e.replace(i,c),e.replace(n,s))}})),We=c(((e,t)=>{var n=(e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}})(He()),r=Ue();function i(e,t){var i={};return!e||typeof e!=`string`||(0,n.default)(e,function(e,n){e&&n&&(i[(0,r.camelCase)(e,t)]=n)}),i}i.default=i,t.exports=i})),Ge=qe(`end`),Ke=qe(`start`);function qe(e){return t;function t(t){let n=t&&t.position&&t.position[e]||{};if(typeof n.line==`number`&&n.line>0&&typeof n.column==`number`&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset==`number`&&n.offset>-1?n.offset:void 0}}}function Je(e){let t=Ke(e),n=Ge(e);if(t&&n)return{start:t,end:n}}function Ye(e){return!e||typeof e!=`object`?``:`position`in e||`type`in e?Ze(e.position):`start`in e||`end`in e?Ze(e):`line`in e||`column`in e?Xe(e):``}function Xe(e){return Qe(e&&e.line)+`:`+Qe(e&&e.column)}function Ze(e){return Xe(e&&e.start)+`-`+Xe(e&&e.end)}function Qe(e){return e&&typeof e==`number`?e:1}var B=class extends Error{constructor(e,t,n){super(),typeof t==`string`&&(n=t,t=void 0);let r=``,i={},a=!1;if(t&&(i=`line`in t&&`column`in t||`start`in t&&`end`in t?{place:t}:`type`in t?{ancestors:[t],place:t.position}:{...t}),typeof e==`string`?r=e:!i.cause&&e&&(a=!0,r=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof n==`string`){let e=n.indexOf(`:`);e===-1?i.ruleId=n:(i.source=n.slice(0,e),i.ruleId=n.slice(e+1))}if(!i.place&&i.ancestors&&i.ancestors){let e=i.ancestors[i.ancestors.length-1];e&&(i.place=e.position)}let o=i.place&&`start`in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=o?o.column:void 0,this.fatal=void 0,this.file=``,this.message=r,this.line=o?o.line:void 0,this.name=Ye(i.place)||`1:1`,this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack==`string`?i.cause.stack:``,this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};B.prototype.file=``,B.prototype.name=``,B.prototype.reason=``,B.prototype.message=``,B.prototype.stack=``,B.prototype.column=void 0,B.prototype.line=void 0,B.prototype.ancestors=void 0,B.prototype.cause=void 0,B.prototype.fatal=void 0,B.prototype.place=void 0,B.prototype.ruleId=void 0,B.prototype.source=void 0;var $e=i(We(),1),et={}.hasOwnProperty,tt=new Map,nt=/[A-Z]/g,rt=new Set([`table`,`tbody`,`thead`,`tfoot`,`tr`]),it=new Set([`td`,`th`]),at=`https://github.com/syntax-tree/hast-util-to-jsx-runtime`;function ot(e,t){if(!t||t.Fragment===void 0)throw TypeError("Expected `Fragment` in options");let n=t.filePath||void 0,r;if(t.development){if(typeof t.jsxDEV!=`function`)throw TypeError("Expected `jsxDEV` in options when `development: true`");r=_t(n,t.jsxDEV)}else{if(typeof t.jsx!=`function`)throw TypeError("Expected `jsx` in production options");if(typeof t.jsxs!=`function`)throw TypeError("Expected `jsxs` in production options");r=gt(n,t.jsx,t.jsxs)}let i={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:r,elementAttributeNameCase:t.elementAttributeNameCase||`react`,evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space===`svg`?ze:Re,stylePropertyNameCase:t.stylePropertyNameCase||`dom`,tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},a=st(i,e,void 0);return a&&typeof a!=`string`?a:i.create(e,i.Fragment,{children:a||void 0},void 0)}function st(e,t,n){if(t.type===`element`)return ct(e,t,n);if(t.type===`mdxFlowExpression`||t.type===`mdxTextExpression`)return lt(e,t);if(t.type===`mdxJsxFlowElement`||t.type===`mdxJsxTextElement`)return dt(e,t,n);if(t.type===`mdxjsEsm`)return ut(e,t);if(t.type===`root`)return ft(e,t,n);if(t.type===`text`)return pt(e,t)}function ct(e,t,n){let r=e.schema,i=r;t.tagName.toLowerCase()===`svg`&&r.space===`html`&&(i=ze,e.schema=i),e.ancestors.push(t);let a=Ct(e,t.tagName,!1),o=vt(e,t),s=bt(e,t);return rt.has(t.tagName)&&(s=s.filter(function(e){return typeof e!=`string`||!de(e)})),mt(e,o,a,t),ht(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function lt(e,t){if(t.data&&t.data.estree&&e.evaluater){let n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}wt(e,t.position)}function ut(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);wt(e,t.position)}function dt(e,t,n){let r=e.schema,i=r;t.name===`svg`&&r.space===`html`&&(i=ze,e.schema=i),e.ancestors.push(t);let a=t.name===null?e.Fragment:Ct(e,t.name,!0),o=yt(e,t),s=bt(e,t);return mt(e,o,a,t),ht(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function ft(e,t,n){let r={};return ht(r,bt(e,t)),e.create(t,e.Fragment,r,n)}function pt(e,t){return t.value}function mt(e,t,n,r){typeof n!=`string`&&n!==e.Fragment&&e.passNode&&(t.node=r)}function ht(e,t){if(t.length>0){let n=t.length>1?t:t[0];n&&(e.children=n)}}function gt(e,t,n){return r;function r(e,r,i,a){let o=Array.isArray(i.children)?n:t;return a?o(r,i,a):o(r,i)}}function _t(e,t){return n;function n(n,r,i,a){let o=Array.isArray(i.children),s=Ke(n);return t(r,i,a,o,{columnNumber:s?s.column-1:void 0,fileName:e,lineNumber:s?s.line:void 0},void 0)}}function vt(e,t){let n={},r,i;for(i in t.properties)if(i!==`children`&&et.call(t.properties,i)){let a=xt(e,i,t.properties[i]);if(a){let[i,o]=a;e.tableCellAlignToStyle&&i===`align`&&typeof o==`string`&&it.has(t.tagName)?r=o:n[i]=o}}if(r){let t=n.style||={};t[e.stylePropertyNameCase===`css`?`text-align`:`textAlign`]=r}return n}function yt(e,t){let n={};for(let r of t.attributes)if(r.type===`mdxJsxExpressionAttribute`){if(r.data&&r.data.estree&&e.evaluater){let t=r.data.estree.body[0];t.type;let i=t.expression;i.type;let a=i.properties[0];a.type,Object.assign(n,e.evaluater.evaluateExpression(a.argument))}else wt(e,t.position)}else{let i=r.name,a;if(r.value&&typeof r.value==`object`){if(r.value.data&&r.value.data.estree&&e.evaluater){let t=r.value.data.estree.body[0];t.type,a=e.evaluater.evaluateExpression(t.expression)}else wt(e,t.position)}else a=r.value===null||r.value;n[i]=a}return n}function bt(e,t){let n=[],r=-1,i=e.passKeys?new Map:tt;for(;++ri?0:i+t:t>i?i:t,n=n>0?n:0,r.length<1e4)o=Array.from(r),o.unshift(t,n),e.splice(...o);else for(n&&e.splice(t,n);a0?(V(e,e.length,0,t),e):t}var It={}.hasOwnProperty;function Lt(e){let t={},n=-1;for(;++n13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)==65535||(n&65535)==65534||n>1114111?`�`:String.fromCodePoint(n)}function U(e){return e.replace(/[\t\n\r ]+/g,` `).replace(/^ | $/g,``).toLowerCase().toUpperCase()}var W=Jt(/[A-Za-z]/),G=Jt(/[\dA-Za-z]/),Vt=Jt(/[#-'*+\--9=?A-Z^-~]/);function Ht(e){return e!==null&&(e<32||e===127)}var Ut=Jt(/\d/),Wt=Jt(/[\dA-Fa-f]/),Gt=Jt(/[!-/:-@[-`{-~]/);function K(e){return e!==null&&e<-2}function q(e){return e!==null&&(e<0||e===32)}function J(e){return e===-2||e===-1||e===32}var Kt=Jt(/\p{P}|\p{S}/u),qt=Jt(/\s/);function Jt(e){return t;function t(t){return t!==null&&t>-1&&e.test(String.fromCharCode(t))}}function Yt(e){let t=[],n=-1,r=0,i=0;for(;++n55295&&a<57344){let t=e.charCodeAt(n+1);a<56320&&t>56319&&t<57344?(o=String.fromCharCode(a,t),i=1):o=`�`}else o=String.fromCharCode(a);o&&=(t.push(e.slice(r,n),encodeURIComponent(o)),r=n+i+1,``),i&&=(n+=i,0)}return t.join(``)+e.slice(r)}function Y(e,t,n,r){let i=r?r-1:1/0,a=0;return o;function o(r){return J(r)?(e.enter(n),s(r)):t(r)}function s(r){return J(r)&&a++0&&J(t)?(e.enter(r),c(t)):l(t)}function c(t){return J(t)&&o=i?t(e):n(e)}}var Zt={tokenize:Qt};function Qt(e){let t=e.attempt(this.parser.constructs.contentInitial,r,i),n;return t;function r(n){if(n===null){e.consume(n);return}return e.enter(`lineEnding`),e.consume(n),e.exit(`lineEnding`),Y(e,t,`linePrefix`)}function i(t){return e.enter(`paragraph`),a(t)}function a(t){let r=e.enter(`chunkText`,{contentType:`text`,previous:n});return n&&(n.next=r),n=r,o(t)}function o(t){if(t===null){e.exit(`chunkText`),e.exit(`paragraph`),e.consume(t);return}return K(t)?(e.consume(t),e.exit(`chunkText`),a):(e.consume(t),o)}}var $t=class{constructor(){this.index=new Map,this.map=[]}add(e,t,n){en(this,e,t,n,!1)}addBefore(e,t,n){en(this,e,t,n,!0)}consume(e){if(this.map.sort(function(e,t){return e[0]-t[0]}),this.map.length===0)return;let t=this.map.length,n=[];for(;t>0;)--t,n.push(e.slice(this.map[t][0]+this.map[t][1]),this.map[t][2]),e.length=this.map[t][0];n.push(e.slice()),e.length=0;let r=n.pop();for(;r;){for(let t of r)e.push(t);r=n.pop()}this.map.length=0,this.index.clear()}};function en(e,t,n,r,i){if(n===0&&r.length===0)return;let a=e.index.get(t);if(a){a[1]+=n,i?(r.push(...a[2]),a[2]=r):a[2].push(...r);return}let o=[t,n,r];e.map.push(o),e.index.set(t,o)}var tn={tokenize:rn},nn={tokenize:an};function rn(e){let t=this,n=[],r=0,i,a,o;return s;function s(i){if(ro))return;let n=t.events.length,a=n,s,c;for(;a--;)if(t.events[a][0]===`exit`&&t.events[a][1].type===`chunkFlow`){if(s){c=t.events[a][1].end;break}s=!0}for(_(r),e=n;er;){let r=n[i];t.containerState=r[1],r[0].exit.call(t,e)}n.length=r}function v(){i.write([null]),a=void 0,i=void 0,t.containerState._closeFlow=void 0}}function an(e,t,n){return Y(e,e.attempt(this.parser.constructs.document,t,n),`linePrefix`,this.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)}function on(e){if(e===null||q(e)||qt(e))return 1;if(Kt(e))return 2}function sn(e,t,n){let r=[],i=-1;for(;++i1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1,o={...e[i][1].end},s={...e[n][1].start};dn(o,-a),dn(s,a);let c={type:a>1?`strongSequence`:`emphasisSequence`,start:o,end:{...e[i][1].end}},l={type:a>1?`strongSequence`:`emphasisSequence`,start:{...e[n][1].start},end:s},u={type:a>1?`strongText`:`emphasisText`,start:{...e[i][1].end},end:{...e[n][1].start}},d={type:a>1?`strong`:`emphasis`,start:{...c.start},end:{...l.end}};e[i][1].end={...c.start},e[n][1].start={...l.end},r=[],e[i][1].end.offset-e[i][1].start.offset&&(r=H(r,[[`enter`,e[i][1],t],[`exit`,e[i][1],t]])),r=H(r,[[`enter`,d,t],[`enter`,c,t],[`exit`,c,t],[`enter`,u,t]]),r=H(r,sn(t.parser.constructs.insideSpan.null,e.slice(i+1,n),t)),r=H(r,[[`exit`,u,t],[`enter`,l,t],[`exit`,l,t],[`exit`,d,t]]);let f=0;e[n][1].end.offset-e[n][1].start.offset&&(f=2,r=H(r,[[`enter`,e[n][1],t],[`exit`,e[n][1],t]])),V(e,i-1,n-i+3,r),n=i+r.length-f-2;break}}for(n=-1;++n0&&J(t)?Y(e,v,`linePrefix`,a+1)(t):v(t)}function v(t){return t===null||K(t)?e.check(wn,h,b)(t):(e.enter(`codeFlowValue`),y(t))}function y(t){return t===null||K(t)?(e.exit(`codeFlowValue`),v(t)):(e.consume(t),y)}function b(n){return e.exit(`codeFenced`),t(n)}function x(e,t,n){let i=0;return a;function a(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),c}function c(t){return e.enter(`codeFencedFence`),J(t)?Y(e,l,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):l(t)}function l(t){return t===s?(e.enter(`codeFencedFenceSequence`),u(t)):n(t)}function u(t){return t===s?(i++,e.consume(t),u):i>=o?(e.exit(`codeFencedFenceSequence`),J(t)?Y(e,d,`whitespace`)(t):d(t)):n(t)}function d(r){return r===null||K(r)?(e.exit(`codeFencedFence`),t(r)):n(r)}}}var On={name:`codeIndented`,tokenize:An},kn={partial:!0,tokenize:jn};function An(e,t,n){return r;function r(t){return e.enter(`codeIndented`),Xt(e,i,n,`linePrefix`,4,4)(t)}function i(t){return t===null?o(t):K(t)?e.attempt(kn,i,o)(t):(e.enter(`codeFlowValue`),a(t))}function a(t){return t===null||K(t)?(e.exit(`codeFlowValue`),i(t)):(e.consume(t),a)}function o(n){return e.exit(`codeIndented`),t(n)}}function jn(e,t,n){let r=this;return i;function i(o){return r.parser.lazy[r.now().line]?n(o):K(o)?(e.enter(`lineEnding`),e.consume(o),e.exit(`lineEnding`),i):Xt(e,t,a,`linePrefix`,4,4)(o)}function a(e){return K(e)?i(e):n(e)}}var Mn={name:`codeText`,previous:Pn,resolve:Nn,tokenize:Fn};function Nn(e){let t=e.length-4,n=3,r,i;if((e[n][1].type===`lineEnding`||e[n][1].type===`space`)&&(e[t][1].type===`lineEnding`||e[t][1].type===`space`)){for(r=n;++r=this.left.length+this.right.length)throw RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(e,t,n){let r=t||0;this.setCursor(Math.trunc(e));let i=this.right.splice(this.right.length-r,1/0);return n&&Ln(this.left,n),i.reverse()}pop(){return this.setCursor(1/0),this.left.pop()}push(e){this.setCursor(1/0),this.left.push(e)}pushMany(e){this.setCursor(1/0),Ln(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),Ln(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0)){if(e=4?t(i):e.interrupt(r.parser.constructs.flow,n,t)(i)}}function Gn(e,t,n,r,i,a,o,s,c){let l=c||1/0,u=0;return d;function d(t){return t===60?(e.enter(r),e.enter(i),e.enter(a),e.consume(t),e.exit(a),f):t===null||t===32||t===41||Ht(t)?n(t):(e.enter(r),e.enter(o),e.enter(s),e.enter(`chunkString`,{contentType:`string`}),h(t))}function f(n){return n===62?(e.enter(a),e.consume(n),e.exit(a),e.exit(i),e.exit(r),t):(e.enter(s),e.enter(`chunkString`,{contentType:`string`}),p(n))}function p(t){return t===62?(e.exit(`chunkString`),e.exit(s),f(t)):t===null||t===60||K(t)?n(t):(e.consume(t),t===92?m:p)}function m(t){return t===60||t===62||t===92?(e.consume(t),p):p(t)}function h(i){return!u&&(i===null||i===41||q(i))?(e.exit(`chunkString`),e.exit(s),e.exit(o),e.exit(r),t(i)):u999||l===null||l===91||l===93&&!c||l===94&&!s&&`_hiddenFootnoteSupport`in o.parser.constructs?n(l):l===93?(e.exit(a),e.enter(i),e.consume(l),e.exit(i),e.exit(r),t):K(l)?(e.enter(`lineEnding`),e.consume(l),e.exit(`lineEnding`),u):(e.enter(`chunkString`,{contentType:`string`}),d(l))}function d(t){return t===null||t===91||t===93||K(t)||s++>999?(e.exit(`chunkString`),u(t)):(e.consume(t),c||=!J(t),t===92?f:d)}function f(t){return t===91||t===92||t===93?(e.consume(t),s++,d):d(t)}}function qn(e,t,n,r,i,a){let o;return s;function s(t){return t===34||t===39||t===40?(e.enter(r),e.enter(i),e.consume(t),e.exit(i),o=t===40?41:t,c):n(t)}function c(n){return n===o?(e.enter(i),e.consume(n),e.exit(i),e.exit(r),t):(e.enter(a),l(n))}function l(t){return t===o?(e.exit(a),c(o)):t===null?n(t):K(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),Y(e,l,`linePrefix`)):(e.enter(`chunkString`,{contentType:`string`}),u(t))}function u(t){return t===o||t===null||K(t)?(e.exit(`chunkString`),l(t)):(e.consume(t),t===92?d:u)}function d(t){return t===o||t===92?(e.consume(t),u):u(t)}}function Jn(e,t){let n;return r;function r(i){return K(i)?(e.enter(`lineEnding`),e.consume(i),e.exit(`lineEnding`),n=!0,r):J(i)?Y(e,r,n?`linePrefix`:`lineSuffix`)(i):t(i)}}var Yn={name:`definition`,tokenize:Zn},Xn={partial:!0,tokenize:Qn};function Zn(e,t,n){let r=this,i;return a;function a(t){return e.enter(`definition`),o(t)}function o(t){return Kn.call(r,e,s,n,`definitionLabel`,`definitionLabelMarker`,`definitionLabelString`)(t)}function s(t){return i=U(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),c):n(t)}function c(t){return q(t)?Jn(e,l)(t):l(t)}function l(t){return Gn(e,u,n,`definitionDestination`,`definitionDestinationLiteral`,`definitionDestinationLiteralMarker`,`definitionDestinationRaw`,`definitionDestinationString`)(t)}function u(t){return e.attempt(Xn,d,d)(t)}function d(t){return J(t)?Y(e,f,`whitespace`)(t):f(t)}function f(a){return a===null||K(a)?(e.exit(`definition`),r.parser.defined.push(i),t(a)):n(a)}}function Qn(e,t,n){return r;function r(t){return q(t)?Jn(e,i)(t):n(t)}function i(t){return qn(e,a,n,`definitionTitle`,`definitionTitleMarker`,`definitionTitleString`)(t)}function a(t){return J(t)?Y(e,o,`whitespace`)(t):o(t)}function o(e){return e===null||K(e)?t(e):n(e)}}var $n={name:`hardBreakEscape`,tokenize:er};function er(e,t,n){return r;function r(t){return e.enter(`hardBreakEscape`),e.consume(t),i}function i(r){return K(r)?(e.exit(`hardBreakEscape`),t(r)):n(r)}}var tr={name:`headingAtx`,resolve:nr,tokenize:rr};function nr(e,t){let n=e.length-2,r=3;if(e[r][1].type===`whitespace`&&(r+=2),n-2>r&&e[n][1].type===`whitespace`&&(n-=2),e[n][1].type===`atxHeadingSequence`&&(r===n-1||n-4>r&&e[n-2][1].type===`whitespace`)&&(n-=r+1===n?2:4),n>r){let i={type:`atxHeadingText`,start:e[r][1].start,end:e[n][1].end},a={type:`chunkText`,start:e[r][1].start,end:e[n][1].end,contentType:`text`};V(e,r,n-r+1,[[`enter`,i,t],[`enter`,a,t],[`exit`,a,t],[`exit`,i,t]])}return e}function rr(e,t,n){let r=0;return i;function i(t){return e.enter(`atxHeading`),a(t)}function a(t){return e.enter(`atxHeadingSequence`),o(t)}function o(t){return t===35&&r++<6?(e.consume(t),o):t===null||q(t)?(e.exit(`atxHeadingSequence`),s(t)):n(t)}function s(n){return n===35?(e.enter(`atxHeadingSequence`),c(n)):n===null||K(n)?(e.exit(`atxHeading`),t(n)):J(n)?Y(e,s,`whitespace`)(n):(e.enter(`atxHeadingText`),l(n))}function c(t){return t===35?(e.consume(t),c):(e.exit(`atxHeadingSequence`),s(t))}function l(t){return t===null||t===35||q(t)?(e.exit(`atxHeadingText`),s(t)):(e.consume(t),l)}}var ir=`address.article.aside.base.basefont.blockquote.body.caption.center.col.colgroup.dd.details.dialog.dir.div.dl.dt.fieldset.figcaption.figure.footer.form.frame.frameset.h1.h2.h3.h4.h5.h6.head.header.hr.html.iframe.legend.li.link.main.menu.menuitem.nav.noframes.ol.optgroup.option.p.param.search.section.summary.table.tbody.td.tfoot.th.thead.title.tr.track.ul`.split(`.`),ar=[`pre`,`script`,`style`,`textarea`],or={concrete:!0,name:`htmlFlow`,resolveTo:cr,tokenize:lr},sr={partial:!0,tokenize:ur};function cr(e){let t=e.length;for(;t--&&(e[t][0]!==`enter`||e[t][1].type!==`htmlFlow`););return t>1&&e[t-2][1].type===`linePrefix`&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function lr(e,t,n){let r=this,i,a,o,s,c;return l;function l(e){return u(e)}function u(t){return e.enter(`htmlFlow`),e.enter(`htmlFlowData`),e.consume(t),d}function d(s){return s===33?(e.consume(s),f):s===47?(e.consume(s),a=!0,h):s===63?(e.consume(s),i=3,r.interrupt?t:j):W(s)?(e.consume(s),o=String.fromCharCode(s),g):n(s)}function f(a){return a===45?(e.consume(a),i=2,p):a===91?(e.consume(a),i=5,s=0,m):W(a)?(e.consume(a),i=4,r.interrupt?t:j):n(a)}function p(i){return i===45?(e.consume(i),r.interrupt?t:j):n(i)}function m(i){return i===`CDATA[`.charCodeAt(s++)?(e.consume(i),s===6?r.interrupt?t:O:m):n(i)}function h(t){return W(t)?(e.consume(t),o=String.fromCharCode(t),g):n(t)}function g(s){if(s===null||s===47||s===62||q(s)){let c=s===47,l=o.toLowerCase();return!c&&!a&&ar.includes(l)?(i=1,r.interrupt?t(s):O(s)):ir.includes(o.toLowerCase())?(i=6,c?(e.consume(s),_):r.interrupt?t(s):O(s)):(i=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(s):a?v(s):y(s))}return s===45||G(s)?(e.consume(s),o+=String.fromCharCode(s),g):n(s)}function _(i){return i===62?(e.consume(i),r.interrupt?t:O):n(i)}function v(t){return J(t)?(e.consume(t),v):E(t)}function y(t){return t===47?(e.consume(t),E):t===58||t===95||W(t)?(e.consume(t),b):J(t)?(e.consume(t),y):E(t)}function b(t){return t===45||t===46||t===58||t===95||G(t)?(e.consume(t),b):x(t)}function x(t){return t===61?(e.consume(t),S):J(t)?(e.consume(t),x):y(t)}function S(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),c=t,C):J(t)?(e.consume(t),S):w(t)}function C(t){return t===c?(e.consume(t),c=null,T):t===null||K(t)?n(t):(e.consume(t),C)}function w(t){return t===null||t===34||t===39||t===47||t===60||t===61||t===62||t===96||q(t)?x(t):(e.consume(t),w)}function T(e){return e===47||e===62||J(e)?y(e):n(e)}function E(t){return t===62?(e.consume(t),D):n(t)}function D(t){return t===null||K(t)?O(t):J(t)?(e.consume(t),D):n(t)}function O(t){return t===45&&i===2?(e.consume(t),k):t===60&&i===1?(e.consume(t),A):t===62&&i===4?(e.consume(t),ae):t===63&&i===3?(e.consume(t),j):t===93&&i===5?(e.consume(t),ie):K(t)&&(i===6||i===7)?(e.exit(`htmlFlowData`),e.check(sr,oe,ee)(t)):t===null||K(t)?(e.exit(`htmlFlowData`),ee(t)):(e.consume(t),O)}function ee(t){return e.check(wn,te,oe)(t)}function te(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),ne}function ne(t){return t===null||K(t)?ee(t):(e.enter(`htmlFlowData`),O(t))}function k(t){return t===45?(e.consume(t),j):O(t)}function A(t){return t===47?(e.consume(t),o=``,re):O(t)}function re(t){if(t===62){let n=o.toLowerCase();return ar.includes(n)?(e.consume(t),ae):O(t)}return W(t)&&o.length<8?(e.consume(t),o+=String.fromCharCode(t),re):O(t)}function ie(t){return t===93?(e.consume(t),j):O(t)}function j(t){return t===62?(e.consume(t),ae):t===45&&i===2?(e.consume(t),j):O(t)}function ae(t){return t===null||K(t)?(e.exit(`htmlFlowData`),oe(t)):(e.consume(t),ae)}function oe(n){return e.exit(`htmlFlow`),t(n)}}function ur(e,t,n){return r;function r(r){return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),e.attempt(mn,t,n)}}var dr={name:`htmlText`,tokenize:fr};function fr(e,t,n){let r=this,i,a,o;return s;function s(t){return e.enter(`htmlText`),e.enter(`htmlTextData`),e.consume(t),c}function c(t){return t===33?(e.consume(t),l):t===47?(e.consume(t),x):t===63?(e.consume(t),y):W(t)?(e.consume(t),w):n(t)}function l(t){return t===45?(e.consume(t),u):t===91?(e.consume(t),a=0,m):W(t)?(e.consume(t),v):n(t)}function u(t){return t===45?(e.consume(t),p):n(t)}function d(t){return t===null?n(t):t===45?(e.consume(t),f):K(t)?(o=d,A(t)):(e.consume(t),d)}function f(t){return t===45?(e.consume(t),p):d(t)}function p(e){return e===62?k(e):e===45?f(e):d(e)}function m(t){return t===`CDATA[`.charCodeAt(a++)?(e.consume(t),a===6?h:m):n(t)}function h(t){return t===null?n(t):t===93?(e.consume(t),g):K(t)?(o=h,A(t)):(e.consume(t),h)}function g(t){return t===93?(e.consume(t),_):h(t)}function _(t){return t===62?k(t):t===93?(e.consume(t),_):h(t)}function v(t){return t===null||t===62?k(t):K(t)?(o=v,A(t)):(e.consume(t),v)}function y(t){return t===null?n(t):t===63?(e.consume(t),b):K(t)?(o=y,A(t)):(e.consume(t),y)}function b(e){return e===62?k(e):y(e)}function x(t){return W(t)?(e.consume(t),S):n(t)}function S(t){return t===45||G(t)?(e.consume(t),S):C(t)}function C(t){return K(t)?(o=C,A(t)):J(t)?(e.consume(t),C):k(t)}function w(t){return t===45||G(t)?(e.consume(t),w):t===47||t===62||q(t)?T(t):n(t)}function T(t){return t===47?(e.consume(t),k):t===58||t===95||W(t)?(e.consume(t),E):K(t)?(o=T,A(t)):J(t)?(e.consume(t),T):k(t)}function E(t){return t===45||t===46||t===58||t===95||G(t)?(e.consume(t),E):D(t)}function D(t){return t===61?(e.consume(t),O):K(t)?(o=D,A(t)):J(t)?(e.consume(t),D):T(t)}function O(t){return t===null||t===60||t===61||t===62||t===96?n(t):t===34||t===39?(e.consume(t),i=t,ee):K(t)?(o=O,A(t)):J(t)?(e.consume(t),O):(e.consume(t),te)}function ee(t){return t===i?(e.consume(t),i=void 0,ne):t===null?n(t):K(t)?(o=ee,A(t)):(e.consume(t),ee)}function te(t){return t===null||t===34||t===39||t===60||t===61||t===96?n(t):t===47||t===62||q(t)?T(t):(e.consume(t),te)}function ne(e){return e===47||e===62||q(e)?T(e):n(e)}function k(r){return r===62?(e.consume(r),e.exit(`htmlTextData`),e.exit(`htmlText`),t):n(r)}function A(t){return e.exit(`htmlTextData`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),re}function re(t){return J(t)?Y(e,ie,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):ie(t)}function ie(t){return e.enter(`htmlTextData`),o(t)}}var pr={name:`labelEnd`,resolveAll:_r,resolveTo:vr,tokenize:yr},mr={tokenize:br},hr={tokenize:xr},gr={tokenize:Sr};function _r(e){let t=-1,n=[];for(;++t0&&i[i.length-1]._balanced;)i.pop();a=i[i.length-1]}return s;function s(t){return a?a._inactive?d(t):(o=r.parser.defined.includes(U(r.sliceSerialize({start:a.end,end:r.now()}))),e.enter(`labelEnd`),e.enter(`labelMarker`),e.consume(t),e.exit(`labelMarker`),e.exit(`labelEnd`),c):n(t)}function c(t){return t===40?e.attempt(mr,u,o?u:d)(t):t===91?e.attempt(hr,u,o?l:d)(t):o?u(t):d(t)}function l(t){return e.attempt(gr,u,d)(t)}function u(e){return i.pop(),t(e)}function d(e){return a._balanced=!0,n(e)}}function br(e,t,n){return r;function r(t){return e.enter(`resource`),e.enter(`resourceMarker`),e.consume(t),e.exit(`resourceMarker`),i}function i(t){return q(t)?Jn(e,a)(t):a(t)}function a(t){return t===41?u(t):Gn(e,o,s,`resourceDestination`,`resourceDestinationLiteral`,`resourceDestinationLiteralMarker`,`resourceDestinationRaw`,`resourceDestinationString`,32)(t)}function o(t){return q(t)?Jn(e,c)(t):u(t)}function s(e){return n(e)}function c(t){return t===34||t===39||t===40?qn(e,l,n,`resourceTitle`,`resourceTitleMarker`,`resourceTitleString`)(t):u(t)}function l(t){return q(t)?Jn(e,u)(t):u(t)}function u(r){return r===41?(e.enter(`resourceMarker`),e.consume(r),e.exit(`resourceMarker`),e.exit(`resource`),t):n(r)}}function xr(e,t,n){let r=this;return i;function i(t){return Kn.call(r,e,a,o,`reference`,`referenceMarker`,`referenceString`)(t)}function a(e){return r.parser.defined.includes(U(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)))?t(e):n(e)}function o(e){return n(e)}}function Sr(e,t,n){return r;function r(t){return e.enter(`reference`),e.enter(`referenceMarker`),e.consume(t),e.exit(`referenceMarker`),i}function i(r){return r===93?(e.enter(`referenceMarker`),e.consume(r),e.exit(`referenceMarker`),e.exit(`reference`),t):n(r)}}var Cr={name:`labelStartImage`,resolveAll:pr.resolveAll,tokenize:wr};function wr(e,t,n){let r=this,i;return a;function a(t){return e.enter(`labelImage`),e.enter(`labelImageMarker`),e.consume(t),e.exit(`labelImageMarker`),o}function o(t){return t===91?(e.enter(`labelMarker`),e.consume(t),e.exit(`labelMarker`),i=e.exit(`labelImage`),s):n(t)}function s(e){return e===94&&`_hiddenFootnoteSupport`in r.parser.constructs?n(e):(r._labelStarts=r._labelStarts||[],r._labelStarts.push(i),t(e))}}var Tr={name:`labelStartLink`,resolveAll:pr.resolveAll,tokenize:Er};function Er(e,t,n){let r=this,i;return a;function a(t){return e.enter(`labelLink`),e.enter(`labelMarker`),e.consume(t),e.exit(`labelMarker`),i=e.exit(`labelLink`),o}function o(e){return e===94&&`_hiddenFootnoteSupport`in r.parser.constructs?n(e):(r._labelStarts=r._labelStarts||[],r._labelStarts.push(i),t(e))}}var Dr={name:`lineEnding`,tokenize:Or};function Or(e,t){return n;function n(n){return e.enter(`lineEnding`),e.consume(n),e.exit(`lineEnding`),Y(e,t,`linePrefix`)}}var kr={name:`thematicBreak`,tokenize:Ar};function Ar(e,t,n){let r=0,i;return a;function a(t){return e.enter(`thematicBreak`),o(t)}function o(e){return i=e,s(e)}function s(a){return a===i?(e.enter(`thematicBreakSequence`),c(a)):r>=3&&(a===null||K(a))?(e.exit(`thematicBreak`),t(a)):n(a)}function c(t){return t===i?(e.consume(t),r++,c):(e.exit(`thematicBreakSequence`),J(t)?Y(e,s,`whitespace`)(t):s(t))}}var X={continuation:{tokenize:Pr},exit:Ir,name:`list`,tokenize:Nr},jr={partial:!0,tokenize:Lr},Mr={partial:!0,tokenize:Fr};function Nr(e,t,n){let r=this,i=r.events[r.events.length-1],a=i&&i[1].type===`linePrefix`?i[2].sliceSerialize(i[1],!0).length:0,o=0;return s;function s(t){let i=r.containerState.type||(t===42||t===43||t===45?`listUnordered`:`listOrdered`);if(i===`listUnordered`?!r.containerState.marker||t===r.containerState.marker:Ut(t)){if(r.containerState.type||(r.containerState.type=i,e.enter(i,{_container:!0})),i===`listUnordered`)return e.enter(`listItemPrefix`),t===42||t===45?e.check(kr,n,l)(t):l(t);if(!r.interrupt||t===49)return e.enter(`listItemPrefix`),e.enter(`listItemValue`),c(t)}return n(t)}function c(t){return Ut(t)&&++o<10?(e.consume(t),c):(!r.interrupt||o<2)&&(r.containerState.marker?t===r.containerState.marker:t===41||t===46)?(e.exit(`listItemValue`),l(t)):n(t)}function l(t){return e.enter(`listItemMarker`),e.consume(t),e.exit(`listItemMarker`),r.containerState.marker=r.containerState.marker||t,e.check(mn,r.interrupt?n:u,e.attempt(jr,f,d))}function u(e){return r.containerState.initialBlankLine=!0,a++,f(e)}function d(t){return J(t)?(e.enter(`listItemPrefixWhitespace`),e.consume(t),e.exit(`listItemPrefixWhitespace`),f):n(t)}function f(n){return r.containerState.size=a+r.sliceSerialize(e.exit(`listItemPrefix`),!0).length,t(n)}}function Pr(e,t,n){let r=this;return r.containerState._closeFlow=void 0,e.check(mn,i,a);function i(n){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,Y(e,t,`listItemIndent`,r.containerState.size+1)(n)}function a(n){return r.containerState.furtherBlankLines||!J(n)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,o(n)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(Mr,t,o)(n))}function o(i){return r.containerState._closeFlow=!0,r.interrupt=void 0,Y(e,e.attempt(X,t,n),`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(i)}}function Fr(e,t,n){let r=this;return Y(e,i,`listItemIndent`,r.containerState.size+1);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`listItemIndent`&&i[2].sliceSerialize(i[1],!0).length===r.containerState.size?t(e):n(e)}}function Ir(e){e.exit(this.containerState.type)}function Lr(e,t,n){let r=this;return Y(e,i,`listItemPrefixWhitespace`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:5);function i(e){let i=r.events[r.events.length-1];return!J(e)&&i&&i[1].type===`listItemPrefixWhitespace`?t(e):n(e)}}var Rr={name:`setextUnderline`,resolveTo:zr,tokenize:Br};function zr(e,t){let n=new $t,r=e.length,i,a,o;for(;r--;)if(e[r][0]===`enter`){if(e[r][1].type===`content`){i=r;break}e[r][1].type===`paragraph`&&(a=r)}else e[r][1].type===`content`&&n.add(r,1,[]),!o&&e[r][1].type===`definition`&&(o=r);let s={type:`setextHeading`,start:{...e[i][1].start},end:{...e[e.length-1][1].end}};return e[a][1].type=`setextHeadingText`,o?(n.add(a,0,[[`enter`,s,t]]),n.add(o+1,0,[[`exit`,e[i][1],t]]),e[i][1].end={...e[o][1].end}):e[i][1]=s,n.add(e.length,0,[[`exit`,s,t]]),n.consume(e),e}function Br(e,t,n){let r=this,i;return a;function a(t){let a=r.events.length,s;for(;a--;)if(r.events[a][1].type!==`lineEnding`&&r.events[a][1].type!==`linePrefix`&&r.events[a][1].type!==`content`){s=r.events[a][1].type===`paragraph`;break}return!r.parser.lazy[r.now().line]&&(r.interrupt||s)?(e.enter(`setextHeadingLine`),i=t,o(t)):n(t)}function o(t){return e.enter(`setextHeadingLineSequence`),s(t)}function s(t){return t===i?(e.consume(t),s):(e.exit(`setextHeadingLineSequence`),J(t)?Y(e,c,`lineSuffix`)(t):c(t))}function c(r){return r===null||K(r)?(e.exit(`setextHeadingLine`),t(r)):n(r)}}var Vr={tokenize:Hr};function Hr(e){let t=this,n=e.attempt(mn,r,e.attempt(this.parser.constructs.flowInitial,i,Y(e,e.attempt(this.parser.constructs.flow,i,e.attempt(Bn,i)),`linePrefix`)));return n;function r(r){if(r===null){e.consume(r);return}return e.enter(`lineEndingBlank`),e.consume(r),e.exit(`lineEndingBlank`),t.currentConstruct=void 0,n}function i(r){if(r===null){e.consume(r);return}return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),t.currentConstruct=void 0,n}}var Ur={resolveAll:qr()},Wr=Kr(`string`),Gr=Kr(`text`);function Kr(e){return{resolveAll:qr(e===`text`?Jr:void 0),tokenize:t};function t(t){let n=this,r=this.parser.constructs[e],i=t.attempt(r,a,o);return a;function a(e){return c(e)?i(e):o(e)}function o(e){if(e===null){t.consume(e);return}return t.enter(`data`),t.consume(e),s}function s(e){return c(e)?(t.exit(`data`),i(e)):(t.consume(e),s)}function c(e){if(e===null)return!0;let t=r[e],i=-1;if(t)for(;++iri,contentInitial:()=>Zr,disable:()=>ii,document:()=>Xr,flow:()=>$r,flowInitial:()=>Qr,insideSpan:()=>ni,string:()=>ei,text:()=>ti}),Xr={42:X,43:X,45:X,48:X,49:X,50:X,51:X,52:X,53:X,54:X,55:X,56:X,57:X,62:gn},Zr={91:Yn},Qr={[-2]:On,[-1]:On,32:On},$r={35:tr,42:kr,45:[Rr,kr],60:or,61:Rr,95:kr,96:En,126:En},ei={38:Sn,92:bn},ti={[-5]:Dr,[-4]:Dr,[-3]:Dr,33:Cr,38:Sn,42:cn,60:[fn,dr],91:Tr,92:[$n,bn],93:pr,95:cn,96:Mn},ni={null:[cn,Ur]},ri={null:[42,95]},ii={null:[]};function ai(e,t,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0},i={},a=[],o=[],s=[],c={attempt:C(x),check:C(S),consume:v,enter:y,exit:b,interrupt:C(S,{interrupt:!0})},l={code:null,containerState:{},defineSkip:h,events:[],now:m,parser:e,previous:null,sliceSerialize:f,sliceStream:p,write:d},u=t.tokenize.call(l,c);return t.resolveAll&&a.push(t),l;function d(e){return o=H(o,e),g(),o[o.length-1]===null?(w(t,0),l.events=sn(a,l.events,l),l.events):[]}function f(e,t){return si(p(e),t)}function p(e){return oi(o,e)}function m(){let{_bufferIndex:e,_index:t,line:n,column:i,offset:a}=r;return{_bufferIndex:e,_index:t,line:n,column:i,offset:a}}function h(e){i[e.line]=e.column,E()}function g(){for(;r._index-1){let e=o[0];typeof e==`string`?o[0]=e.slice(r):o.shift()}a>0&&o.push(e[i].slice(0,a))}return o}function si(e,t){let n=-1,r=[],i;for(;++n0){let e=a.tokenStack[a.tokenStack.length-1];(e[1]||xi).call(a,void 0,e[0])}for(r.position={start:vi(e.length>0?e[0][1].start:{line:1,column:1,offset:0}),end:vi(e.length>0?e[e.length-2][1].end:{line:1,column:1,offset:0})},d=-1;++d0&&n.push({type:`text`,value:` `}),n}function La(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function Ra(e,t){let n=Ma(e,t),r=n.one(e,void 0),i=_a(n),a=Array.isArray(r)?{type:`root`,children:r}:r||{type:`root`,children:[]};return i&&(`children`in a,a.children.push({type:`text`,value:` -`},i)),a}function za(e,t){return e&&`run`in e?async function(n,r){let i=Ra(n,{file:r,...t});await e.run(i,r)}:function(n,r){return Ra(n,{file:r,...e||t})}}function Ba(e){if(e)throw e}var Va=a(c(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=function(e){return typeof Array.isArray==`function`?Array.isArray(e):r.call(e)===`[object Array]`},s=function(e){if(!e||r.call(e)!==`[object Object]`)return!1;var t=n.call(e,`constructor`),i=e.constructor&&e.constructor.prototype&&n.call(e.constructor.prototype,`isPrototypeOf`);if(e.constructor&&!t&&!i)return!1;for(var a in e);return a===void 0||n.call(e,a)},c=function(e,t){i&&t.name===`__proto__`?i(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},l=function(e,t){if(t===`__proto__`){if(!n.call(e,t))return;if(a)return a(e,t).value}return e[t]};t.exports=function e(){var t,n,r,i,a,u,d=arguments[0],f=1,p=arguments.length,m=!1;for(typeof d==`boolean`&&(m=d,d=arguments[1]||{},f=2),(d==null||typeof d!=`object`&&typeof d!=`function`)&&(d={});ft.length,o;r&&t.push(i);try{o=e.apply(this,t)}catch(e){let t=e;if(r&&n)throw t;return i(t)}r||(o&&o.then&&typeof o.then==`function`?o.then(a,i):o instanceof Error?i(o):a(o))}function i(e,...r){n||(n=!0,t(e,...r))}function a(e){i(null,e)}}var Z={basename:Ga,dirname:Ka,extname:qa,join:Ja,sep:`/`};function Ga(e,t){if(t!==void 0&&typeof t!=`string`)throw TypeError(`"ext" argument must be a string`);Za(e);let n=0,r=-1,i=e.length,a;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else r<0&&(a=!0,r=i+1);return r<0?``:e.slice(n,r)}if(t===e)return``;let o=-1,s=t.length-1;for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else o<0&&(a=!0,o=i+1),s>-1&&(e.codePointAt(i)===t.codePointAt(s--)?s<0&&(r=i):(s=-1,r=o));return n===r?r=o:r<0&&(r=e.length),e.slice(n,r)}function Ka(e){if(Za(e),e.length===0)return`.`;let t=-1,n=e.length,r;for(;--n;)if(e.codePointAt(n)===47){if(r){t=n;break}}else r||=!0;return t<0?e.codePointAt(0)===47?`/`:`.`:t===1&&e.codePointAt(0)===47?`//`:e.slice(0,t)}function qa(e){Za(e);let t=e.length,n=-1,r=0,i=-1,a=0,o;for(;t--;){let s=e.codePointAt(t);if(s===47){if(o){r=t+1;break}continue}n<0&&(o=!0,n=t+1),s===46?i<0?i=t:a!==1&&(a=1):i>-1&&(a=-1)}return i<0||n<0||a===0||a===1&&i===n-1&&i===r+1?``:e.slice(i,n)}function Ja(...e){let t=-1,n;for(;++t0&&e.codePointAt(e.length-1)===47&&(n+=`/`),t?`/`+n:n}function Xa(e,t){let n=``,r=0,i=-1,a=0,o=-1,s,c;for(;++o<=e.length;){if(o2){if(c=n.lastIndexOf(`/`),c!==n.length-1){c<0?(n=``,r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf(`/`)),i=o,a=0;continue}}else if(n.length>0){n=``,r=0,i=o,a=0;continue}}t&&(n=n.length>0?n+`/..`:`..`,r=2)}else n.length>0?n+=`/`+e.slice(i+1,o):n=e.slice(i+1,o),r=o-i-1}i=o,a=0}else s===46&&a>-1?a++:a=-1}return n}function Za(e){if(typeof e!=`string`)throw TypeError(`Path must be a string. Received `+JSON.stringify(e))}var Qa={cwd:$a};function $a(){return`/`}function eo(e){return!!(typeof e==`object`&&e&&`href`in e&&e.href&&`protocol`in e&&e.protocol&&e.auth===void 0)}function to(e){if(typeof e==`string`)e=new URL(e);else if(!eo(e)){let t=TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code=`ERR_INVALID_ARG_TYPE`,t}if(e.protocol!==`file:`){let e=TypeError(`The URL must be of scheme file`);throw e.code=`ERR_INVALID_URL_SCHEME`,e}return no(e)}function no(e){if(e.hostname!==``){let e=TypeError(`File URL host must be "localhost" or empty on darwin`);throw e.code=`ERR_INVALID_FILE_URL_HOST`,e}let t=e.pathname,n=-1;for(;++n0){let[r,...a]=t,o=n[i][1];Ha(o)&&Ha(r)&&(r=(0,Va.default)(!0,o,r)),n[i]=[e,r,...a]}}}}().freeze();function po(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `parser`")}function mo(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `compiler`")}function ho(e,t){if(t)throw Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function go(e){if(!Ha(e)||typeof e.type!=`string`)throw TypeError("Expected node, got `"+e+"`")}function _o(e,t,n){if(!n)throw Error("`"+e+"` finished async. Use `"+t+"` instead")}function vo(e){return yo(e)?e:new io(e)}function yo(e){return!!(e&&typeof e==`object`&&`message`in e&&`messages`in e)}function bo(e){return typeof e==`string`||xo(e)}function xo(e){return!!(e&&typeof e==`object`&&`byteLength`in e&&`byteOffset`in e)}var So=[],Co={allowDangerousHtml:!0},wo=/^(https?|ircs?|mailto|xmpp)$/i,To=[{from:`astPlugins`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowDangerousHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowNode`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowElement`},{from:`allowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowedElements`},{from:`className`,id:`remove-classname`},{from:`disallowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`disallowedElements`},{from:`escapeHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`includeElementIndex`,id:`#remove-includeelementindex`},{from:`includeNodeIndex`,id:`change-includenodeindex-to-includeelementindex`},{from:`linkTarget`,id:`remove-linktarget`},{from:`plugins`,id:`change-plugins-to-remarkplugins`,to:`remarkPlugins`},{from:`rawSourcePos`,id:`#remove-rawsourcepos`},{from:`renderers`,id:`change-renderers-to-components`,to:`components`},{from:`source`,id:`change-source-to-children`,to:`children`},{from:`sourcePos`,id:`#remove-sourcepos`},{from:`transformImageUri`,id:`#add-urltransform`,to:`urlTransform`},{from:`transformLinkUri`,id:`#add-urltransform`,to:`urlTransform`}];function Eo(e){let t=Do(e),n=Oo(e);return ko(t.runSync(t.parse(n),n),e)}function Do(e){let t=e.rehypePlugins||So,n=e.remarkPlugins||So,r=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...Co}:Co;return fo().use(Si).use(n).use(za,r).use(t)}function Oo(e){let t=e.children||``,n=new io;return typeof t==`string`?n.value=t:``+t,n}function ko(e,t){let n=t.allowedElements,r=t.allowElement,i=t.components,a=t.disallowedElements,o=t.skipHtml,s=t.unwrapDisallowed,c=t.urlTransform||Ao;for(let e of To)Object.hasOwn(t,e.from)&&``+e.from+(e.to?"use `"+e.to+"` instead":`remove it`)+e.id;return ka(e,l),ot(e,{Fragment:y.Fragment,components:i,ignoreInvalidStyle:!0,jsx:y.jsx,jsxs:y.jsxs,passKeys:!0,passNode:!0});function l(e,t,i){if(e.type===`raw`&&i&&typeof t==`number`)return o?i.children.splice(t,1):i.children[t]={type:`text`,value:e.value},t;if(e.type===`element`){let t;for(t in Ot)if(Object.hasOwn(Ot,t)&&Object.hasOwn(e.properties,t)){let n=e.properties[t],r=Ot[t];(r===null||r.includes(e.tagName))&&(e.properties[t]=c(String(n||``),t,e))}}if(e.type===`element`){let o=n?!n.includes(e.tagName):a?a.includes(e.tagName):!1;if(!o&&r&&typeof t==`number`&&(o=!r(e,t,i)),o&&i&&typeof t==`number`)return s&&e.children?i.children.splice(t,1,...e.children):i.children.splice(t,1),t}}}function Ao(e){let t=e.indexOf(`:`),n=e.indexOf(`?`),r=e.indexOf(`#`),i=e.indexOf(`/`);return t===-1||i!==-1&&t>i||n!==-1&&t>n||r!==-1&&t>r||wo.test(e.slice(0,t))?e:``}function jo(e,t){let n=String(e);if(typeof t!=`string`)throw TypeError(`Expected character`);let r=0,i=n.indexOf(t);for(;i!==-1;)r++,i=n.indexOf(t,i+t.length);return r}function Mo(e){if(typeof e!=`string`)throw TypeError(`Expected a string`);return e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`)}function No(e,t,n){let r=va((n||{}).ignore||[]),i=Po(t),a=-1;for(;++a0?{type:`text`,value:a}:void 0),a===!1?r.lastIndex=n+1:(s!==n&&u.push({type:`text`,value:e.value.slice(s,n)}),Array.isArray(a)?u.push(...a):a&&u.push(a),s=n+d[0].length,l=!0),!r.global)break;d=r.exec(e.value)}return l?(s?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let n=t[0],r=n.indexOf(`)`),i=jo(e,`(`),a=jo(e,`)`);for(;r!==-1&&i>a;)e+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(`)`),a++;return[e,n]}function Qo(e,t){let n=e.input.charCodeAt(e.index-1);return(e.index===0||qt(n)||Kt(n))&&(!t||n!==47)}cs.peek=ss;function $o(){this.buffer()}function es(e){this.enter({type:`footnoteReference`,identifier:``,label:``},e)}function ts(){this.buffer()}function ns(e){this.enter({type:`footnoteDefinition`,identifier:``,label:``,children:[]},e)}function rs(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=U(this.sliceSerialize(e)).toLowerCase(),n.label=t}function is(e){this.exit(e)}function as(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=U(this.sliceSerialize(e)).toLowerCase(),n.label=t}function os(e){this.exit(e)}function ss(){return`[`}function cs(e,t,n,r){let i=n.createTracker(r),a=i.move(`[^`),o=n.enter(`footnoteReference`),s=n.enter(`reference`);return a+=i.move(n.safe(n.associationId(e),{after:`]`,before:a})),s(),o(),a+=i.move(`]`),a}function ls(){return{enter:{gfmFootnoteCallString:$o,gfmFootnoteCall:es,gfmFootnoteDefinitionLabelString:ts,gfmFootnoteDefinition:ns},exit:{gfmFootnoteCallString:rs,gfmFootnoteCall:is,gfmFootnoteDefinitionLabelString:as,gfmFootnoteDefinition:os}}}function us(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:n,footnoteReference:cs},unsafe:[{character:`[`,inConstruct:[`label`,`phrasing`,`reference`]}]};function n(e,n,r,i){let a=r.createTracker(i),o=a.move(`[^`),s=r.enter(`footnoteDefinition`),c=r.enter(`label`);return o+=a.move(r.safe(r.associationId(e),{before:o,after:`]`})),c(),o+=a.move(`]:`),e.children&&e.children.length>0&&(a.shift(4),o+=a.move((t?` +`},i)),a}function za(e,t){return e&&`run`in e?async function(n,r){let i=Ra(n,{file:r,...t});await e.run(i,r)}:function(n,r){return Ra(n,{file:r,...e||t})}}function Ba(e){if(e)throw e}var Va=i(c(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=function(e){return typeof Array.isArray==`function`?Array.isArray(e):r.call(e)===`[object Array]`},s=function(e){if(!e||r.call(e)!==`[object Object]`)return!1;var t=n.call(e,`constructor`),i=e.constructor&&e.constructor.prototype&&n.call(e.constructor.prototype,`isPrototypeOf`);if(e.constructor&&!t&&!i)return!1;for(var a in e);return a===void 0||n.call(e,a)},c=function(e,t){i&&t.name===`__proto__`?i(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},l=function(e,t){if(t===`__proto__`){if(!n.call(e,t))return;if(a)return a(e,t).value}return e[t]};t.exports=function e(){var t,n,r,i,a,u,d=arguments[0],f=1,p=arguments.length,m=!1;for(typeof d==`boolean`&&(m=d,d=arguments[1]||{},f=2),(d==null||typeof d!=`object`&&typeof d!=`function`)&&(d={});ft.length,o;r&&t.push(i);try{o=e.apply(this,t)}catch(e){let t=e;if(r&&n)throw t;return i(t)}r||(o&&o.then&&typeof o.then==`function`?o.then(a,i):o instanceof Error?i(o):a(o))}function i(e,...r){n||(n=!0,t(e,...r))}function a(e){i(null,e)}}var Z={basename:Ga,dirname:Ka,extname:qa,join:Ja,sep:`/`};function Ga(e,t){if(t!==void 0&&typeof t!=`string`)throw TypeError(`"ext" argument must be a string`);Za(e);let n=0,r=-1,i=e.length,a;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else r<0&&(a=!0,r=i+1);return r<0?``:e.slice(n,r)}if(t===e)return``;let o=-1,s=t.length-1;for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else o<0&&(a=!0,o=i+1),s>-1&&(e.codePointAt(i)===t.codePointAt(s--)?s<0&&(r=i):(s=-1,r=o));return n===r?r=o:r<0&&(r=e.length),e.slice(n,r)}function Ka(e){if(Za(e),e.length===0)return`.`;let t=-1,n=e.length,r;for(;--n;)if(e.codePointAt(n)===47){if(r){t=n;break}}else r||=!0;return t<0?e.codePointAt(0)===47?`/`:`.`:t===1&&e.codePointAt(0)===47?`//`:e.slice(0,t)}function qa(e){Za(e);let t=e.length,n=-1,r=0,i=-1,a=0,o;for(;t--;){let s=e.codePointAt(t);if(s===47){if(o){r=t+1;break}continue}n<0&&(o=!0,n=t+1),s===46?i<0?i=t:a!==1&&(a=1):i>-1&&(a=-1)}return i<0||n<0||a===0||a===1&&i===n-1&&i===r+1?``:e.slice(i,n)}function Ja(...e){let t=-1,n;for(;++t0&&e.codePointAt(e.length-1)===47&&(n+=`/`),t?`/`+n:n}function Xa(e,t){let n=``,r=0,i=-1,a=0,o=-1,s,c;for(;++o<=e.length;){if(o2){if(c=n.lastIndexOf(`/`),c!==n.length-1){c<0?(n=``,r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf(`/`)),i=o,a=0;continue}}else if(n.length>0){n=``,r=0,i=o,a=0;continue}}t&&(n=n.length>0?n+`/..`:`..`,r=2)}else n.length>0?n+=`/`+e.slice(i+1,o):n=e.slice(i+1,o),r=o-i-1}i=o,a=0}else s===46&&a>-1?a++:a=-1}return n}function Za(e){if(typeof e!=`string`)throw TypeError(`Path must be a string. Received `+JSON.stringify(e))}var Qa={cwd:$a};function $a(){return`/`}function eo(e){return!!(typeof e==`object`&&e&&`href`in e&&e.href&&`protocol`in e&&e.protocol&&e.auth===void 0)}function to(e){if(typeof e==`string`)e=new URL(e);else if(!eo(e)){let t=TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code=`ERR_INVALID_ARG_TYPE`,t}if(e.protocol!==`file:`){let e=TypeError(`The URL must be of scheme file`);throw e.code=`ERR_INVALID_URL_SCHEME`,e}return no(e)}function no(e){if(e.hostname!==``){let e=TypeError(`File URL host must be "localhost" or empty on darwin`);throw e.code=`ERR_INVALID_FILE_URL_HOST`,e}let t=e.pathname,n=-1;for(;++n0){let[r,...a]=t,o=n[i][1];Ha(o)&&Ha(r)&&(r=(0,Va.default)(!0,o,r)),n[i]=[e,r,...a]}}}}().freeze();function po(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `parser`")}function mo(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `compiler`")}function ho(e,t){if(t)throw Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function go(e){if(!Ha(e)||typeof e.type!=`string`)throw TypeError("Expected node, got `"+e+"`")}function _o(e,t,n){if(!n)throw Error("`"+e+"` finished async. Use `"+t+"` instead")}function vo(e){return yo(e)?e:new io(e)}function yo(e){return!!(e&&typeof e==`object`&&`message`in e&&`messages`in e)}function bo(e){return typeof e==`string`||xo(e)}function xo(e){return!!(e&&typeof e==`object`&&`byteLength`in e&&`byteOffset`in e)}var So=[],Co={allowDangerousHtml:!0},wo=/^(https?|ircs?|mailto|xmpp)$/i,To=[{from:`astPlugins`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowDangerousHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowNode`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowElement`},{from:`allowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowedElements`},{from:`className`,id:`remove-classname`},{from:`disallowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`disallowedElements`},{from:`escapeHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`includeElementIndex`,id:`#remove-includeelementindex`},{from:`includeNodeIndex`,id:`change-includenodeindex-to-includeelementindex`},{from:`linkTarget`,id:`remove-linktarget`},{from:`plugins`,id:`change-plugins-to-remarkplugins`,to:`remarkPlugins`},{from:`rawSourcePos`,id:`#remove-rawsourcepos`},{from:`renderers`,id:`change-renderers-to-components`,to:`components`},{from:`source`,id:`change-source-to-children`,to:`children`},{from:`sourcePos`,id:`#remove-sourcepos`},{from:`transformImageUri`,id:`#add-urltransform`,to:`urlTransform`},{from:`transformLinkUri`,id:`#add-urltransform`,to:`urlTransform`}];function Eo(e){let t=Do(e),n=Oo(e);return ko(t.runSync(t.parse(n),n),e)}function Do(e){let t=e.rehypePlugins||So,n=e.remarkPlugins||So,r=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...Co}:Co;return fo().use(Si).use(n).use(za,r).use(t)}function Oo(e){let t=e.children||``,n=new io;return typeof t==`string`?n.value=t:``+t,n}function ko(e,t){let n=t.allowedElements,r=t.allowElement,i=t.components,a=t.disallowedElements,o=t.skipHtml,s=t.unwrapDisallowed,c=t.urlTransform||Ao;for(let e of To)Object.hasOwn(t,e.from)&&``+e.from+(e.to?"use `"+e.to+"` instead":`remove it`)+e.id;return ka(e,l),ot(e,{Fragment:y.Fragment,components:i,ignoreInvalidStyle:!0,jsx:y.jsx,jsxs:y.jsxs,passKeys:!0,passNode:!0});function l(e,t,i){if(e.type===`raw`&&i&&typeof t==`number`)return o?i.children.splice(t,1):i.children[t]={type:`text`,value:e.value},t;if(e.type===`element`){let t;for(t in Ot)if(Object.hasOwn(Ot,t)&&Object.hasOwn(e.properties,t)){let n=e.properties[t],r=Ot[t];(r===null||r.includes(e.tagName))&&(e.properties[t]=c(String(n||``),t,e))}}if(e.type===`element`){let o=n?!n.includes(e.tagName):a?a.includes(e.tagName):!1;if(!o&&r&&typeof t==`number`&&(o=!r(e,t,i)),o&&i&&typeof t==`number`)return s&&e.children?i.children.splice(t,1,...e.children):i.children.splice(t,1),t}}}function Ao(e){let t=e.indexOf(`:`),n=e.indexOf(`?`),r=e.indexOf(`#`),i=e.indexOf(`/`);return t===-1||i!==-1&&t>i||n!==-1&&t>n||r!==-1&&t>r||wo.test(e.slice(0,t))?e:``}function jo(e,t){let n=String(e);if(typeof t!=`string`)throw TypeError(`Expected character`);let r=0,i=n.indexOf(t);for(;i!==-1;)r++,i=n.indexOf(t,i+t.length);return r}function Mo(e){if(typeof e!=`string`)throw TypeError(`Expected a string`);return e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`)}function No(e,t,n){let r=va((n||{}).ignore||[]),i=Po(t),a=-1;for(;++a0?{type:`text`,value:a}:void 0),a===!1?r.lastIndex=n+1:(s!==n&&u.push({type:`text`,value:e.value.slice(s,n)}),Array.isArray(a)?u.push(...a):a&&u.push(a),s=n+d[0].length,l=!0),!r.global)break;d=r.exec(e.value)}return l?(s?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let n=t[0],r=n.indexOf(`)`),i=jo(e,`(`),a=jo(e,`)`);for(;r!==-1&&i>a;)e+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(`)`),a++;return[e,n]}function Qo(e,t){let n=e.input.charCodeAt(e.index-1);return(e.index===0||qt(n)||Kt(n))&&(!t||n!==47)}cs.peek=ss;function $o(){this.buffer()}function es(e){this.enter({type:`footnoteReference`,identifier:``,label:``},e)}function ts(){this.buffer()}function ns(e){this.enter({type:`footnoteDefinition`,identifier:``,label:``,children:[]},e)}function rs(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=U(this.sliceSerialize(e)).toLowerCase(),n.label=t}function is(e){this.exit(e)}function as(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=U(this.sliceSerialize(e)).toLowerCase(),n.label=t}function os(e){this.exit(e)}function ss(){return`[`}function cs(e,t,n,r){let i=n.createTracker(r),a=i.move(`[^`),o=n.enter(`footnoteReference`),s=n.enter(`reference`);return a+=i.move(n.safe(n.associationId(e),{after:`]`,before:a})),s(),o(),a+=i.move(`]`),a}function ls(){return{enter:{gfmFootnoteCallString:$o,gfmFootnoteCall:es,gfmFootnoteDefinitionLabelString:ts,gfmFootnoteDefinition:ns},exit:{gfmFootnoteCallString:rs,gfmFootnoteCall:is,gfmFootnoteDefinitionLabelString:as,gfmFootnoteDefinition:os}}}function us(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:n,footnoteReference:cs},unsafe:[{character:`[`,inConstruct:[`label`,`phrasing`,`reference`]}]};function n(e,n,r,i){let a=r.createTracker(i),o=a.move(`[^`),s=r.enter(`footnoteDefinition`),c=r.enter(`label`);return o+=a.move(r.safe(r.associationId(e),{before:o,after:`]`})),c(),o+=a.move(`]:`),e.children&&e.children.length>0&&(a.shift(4),o+=a.move((t?` `:` `)+r.indentLines(r.containerFlow(e,a.current()),t?fs:ds))),s(),o}}function ds(e,t,n){return t===0?e:fs(e,t,n)}function fs(e,t,n){return(n?``:` `)+e}var ps=[`autolink`,`destinationLiteral`,`destinationRaw`,`reference`,`titleQuote`,`titleApostrophe`];vs.attention=ys,vs.peek=bs;function ms(){return{canContainEols:[`delete`],enter:{strikethrough:gs},exit:{strikethrough:_s}}}function hs(){return{handlers:{delete:vs},unsafe:[{character:`~`,inConstruct:`phrasing`,notInConstruct:ps}]}}function gs(e){this.enter({type:`delete`,children:[],position:void 0},e)}function _s(e){this.exit(e)}function vs(e,t,n,r){let i=n.createTracker(r),a=n.stack.includes(`strikethrough`)?`~`:`~~`,o=n.enter(`strikethrough`),s=i.move(a);return s+=n.containerPhrasing(e,{...i.current(),before:s,after:`~`}),s+=i.move(a),o(),s}function ys(){return{construct:`strikethrough`,markers:[`~`],sizes:[2,1]}}function bs(){return`~`}function xs(e){return e.length}function Ss(e,t){let n=t||{},r=(n.align||[]).concat(),i=n.stringLength||xs,a=[],o=[],s=[],c=[],l=0,u=-1;for(;++ul&&(l=e[u].length);++ac[a])&&(c[a]=e)}t.push(o)}o[u]=t,s[u]=r}let d=-1;if(typeof r==`object`&&`length`in r)for(;++dc[d]&&(c[d]=i),p[d]=i),f[d]=o}o.splice(1,0,f),s.splice(1,0,p),u=-1;let m=[];for(;++u `),a.shift(2);let o=n.indentLines(n.containerFlow(e,a.current()),Ds);return i(),o}function Ds(e,t,n){return`>`+(n?``:` `)+e}function Os(e,t){return ks(e,t.inConstruct,!0)&&!ks(e,t.notInConstruct,!1)}function ks(e,t,n){if(typeof t==`string`&&(t=[t]),!t||t.length===0)return n;let r=-1;for(;++r`,...c.current()})),l+=c.move(`>`)):(s=n.enter(`destinationRaw`),l+=c.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...c.current()}))),s(),e.title&&(s=n.enter(`title${a}`),l+=c.move(` `+i),l+=c.move(n.safe(e.title,{before:l,after:i,...c.current()})),l+=c.move(i),s()),l+=c.move(`)`),o(),l}function Js(){return`!`}Ys.peek=Xs;function Ys(e,t,n,r){let i=e.referenceType,a=n.enter(`imageReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`![`),l=n.safe(e.alt,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=u.filter(function(e){return e!==`phrasing`}),o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function Xs(){return`!`}Zs.peek=Qs;function Zs(e,t,n){let r=e.value||``,i="`",a=-1;for(;RegExp("(^|[^`])"+i+"([^`]|$)").test(r);)i+="`";for(/[^\n\r ]/.test(r)&&(/^[\n\r ]/.test(r)&&/[\n\r ]$/.test(r)||/^`|`$/.test(r))&&(r=` `+r+` `);++a\u007F]/.test(e.url))}ec.peek=tc;function ec(e,t,n,r){let i=Is(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.createTracker(r);if($s(e,n)){let t=n.stack;n.stack=t.filter(function(e){return e!==`phrasing`});let r=n.enter(`autolink`),i=o.move(`<`);return i+=o.move(n.containerPhrasing(e,{before:i,after:`>`,...o.current()})),i+=o.move(`>`),r(),n.stack=t,i}let s=n.enter(`link`),c=n.enter(`label`),l=o.move(`[`);return l+=o.move(n.containerPhrasing(e,{before:l,after:`](`,...o.current()})),l+=o.move(`](`),c(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(c=n.enter(`destinationLiteral`),l+=o.move(`<`),l+=o.move(n.safe(e.url,{before:l,after:`>`,...o.current()})),l+=o.move(`>`)):(c=n.enter(`destinationRaw`),l+=o.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...o.current()}))),c(),e.title&&(c=n.enter(`title${a}`),l+=o.move(` `+i),l+=o.move(n.safe(e.title,{before:l,after:i,...o.current()})),l+=o.move(i),c()),l+=o.move(`)`),s(),l}function tc(e,t,n){return $s(e,n)?`<`:`[`}nc.peek=rc;function nc(e,t,n,r){let i=e.referenceType,a=n.enter(`linkReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`[`),l=n.containerPhrasing(e,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=u.filter(function(e){return e!==`phrasing`}),o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function rc(){return`[`}function ic(e){let t=e.options.bullet||`*`;if(t!==`*`&&t!==`+`&&t!==`-`)throw Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function ac(e){let t=ic(e),n=e.options.bulletOther;if(!n)return t===`*`?`-`:`*`;if(n!==`*`&&n!==`+`&&n!==`-`)throw Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===t)throw Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+n+"`) to be different");return n}function oc(e){let t=e.options.bulletOrdered||`.`;if(t!==`.`&&t!==`)`)throw Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function sc(e){let t=e.options.rule||`*`;if(t!==`*`&&t!==`-`&&t!==`_`)throw Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function cc(e,t,n,r){let i=n.enter(`list`),a=n.bulletCurrent,o=e.ordered?oc(n):ic(n),s=e.ordered?o===`.`?`)`:`.`:ac(n),c=t&&n.bulletLastUsed?o===n.bulletLastUsed:!1;if(!e.ordered){let t=e.children?e.children[0]:void 0;if((o===`*`||o===`-`)&&t&&(!t.children||!t.children[0])&&n.stack[n.stack.length-1]===`list`&&n.stack[n.stack.length-2]===`listItem`&&n.stack[n.stack.length-3]===`list`&&n.stack[n.stack.length-4]===`listItem`&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),sc(n)===o&&t){let t=-1;for(;++t-1?t.start:1)+(n.options.incrementListMarker===!1?0:t.children.indexOf(e))+a);let o=a.length+1;(i===`tab`||i===`mixed`&&(t&&t.type===`list`&&t.spread||e.spread))&&(o=Math.ceil(o/4)*4);let s=n.createTracker(r);s.move(a+` `.repeat(o-a.length)),s.shift(o);let c=n.enter(`listItem`),l=n.indentLines(n.containerFlow(e,s.current()),u);return c(),l;function u(e,t,n){return t?(n?``:` `.repeat(o))+e:(n?a:a+` `.repeat(o-a.length))+e}}function dc(e,t,n,r){let i=n.enter(`paragraph`),a=n.enter(`phrasing`),o=n.containerPhrasing(e,r);return a(),i(),o}function fc(e,t,n,r){if(!e.children.some(function(e){return Ts(e)}))return n.containerFlow(e,r);let i=n.enter(`phrasing`),a=n.containerPhrasing(e,r);return i(),a}function pc(e){let t=e.options.strong||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}mc.attention=hc,mc.peek=gc;function mc(e,t,n,r){let i=n.enter(`phrasing`),a=n.containerPhrasing({type:`root`,children:[e]},r);return i(),a}function hc(e,t){return{construct:`strong`,markers:pc(t)===`*`?[`*`,`_`]:[`_`,`*`],sizes:[2]}}function gc(e,t,n){return n.options.strong||`*`}function _c(e,t,n,r){return n.safe(e.value,r)}function vc(e){let t=e.options.ruleRepetition||3;if(t<3)throw Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function yc(e,t,n){let r=(sc(n)+(n.options.ruleSpaces?` `:``)).repeat(vc(n));return n.options.ruleSpaces?r.slice(0,-1):r}var bc={blockquote:Es,break:As,code:Ps,definition:Ls,emphasis:zs,hardBreak:As,heading:Ws,html:Gs,image:qs,imageReference:Ys,inlineCode:Zs,link:ec,linkReference:nc,list:cc,listItem:uc,paragraph:dc,root:fc,strong:mc,text:_c,thematicBreak:yc};function xc(){return{enter:{table:Sc,tableData:Ec,tableHeader:Ec,tableRow:wc},exit:{codeText:Dc,table:Cc,tableData:Tc,tableHeader:Tc,tableRow:Tc}}}function Sc(e){let t=e._align;this.enter({type:`table`,align:t.map(function(e){return e===`none`?null:e}),children:[]},e),this.data.inTable=!0}function Cc(e){this.exit(e),this.data.inTable=void 0}function wc(e){this.enter({type:`tableRow`,children:[]},e)}function Tc(e){this.exit(e)}function Ec(e){this.enter({type:`tableCell`,children:[]},e)}function Dc(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,Oc));let n=this.stack[this.stack.length-1];n.type,n.value=t,this.exit(e)}function Oc(e,t){return t===`|`?t:e}function kc(e){let t=e||{},n=t.tableCellPadding,r=t.tablePipeAlign,i=t.stringLength,a=n?` `:`|`;return{unsafe:[{character:`\r`,inConstruct:`tableCell`},{character:` `,inConstruct:`tableCell`},{atBreak:!0,character:`|`,after:`[ :-]`},{character:`|`,inConstruct:`tableCell`},{atBreak:!0,character:`:`,after:`-`},{atBreak:!0,character:`-`,after:`[:|-]`}],handlers:{inlineCode:f,table:o,tableCell:c,tableRow:s}};function o(e,t,n,r){return l(u(e,n,r),e.align)}function s(e,t,n,r){let i=l([d(e,n,r)]);return i.slice(0,i.indexOf(` -`))}function c(e,t,n,r){let i=n.enter(`tableCell`),o=n.enter(`phrasing`),s=n.containerPhrasing(e,{...r,before:a,after:a});return o(),i(),s}function l(e,t){return Ss(e,{align:t,alignDelimiters:r,padding:n,stringLength:i})}function u(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`table`);for(;++i0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}var al={tokenize:pl,partial:!0};function ol(){return{document:{91:{name:`gfmFootnoteDefinition`,tokenize:ul,continuation:{tokenize:dl},exit:fl}},text:{91:{name:`gfmFootnoteCall`,tokenize:ll},93:{name:`gfmPotentialFootnoteCall`,add:`after`,tokenize:sl,resolveTo:cl}}}}function sl(e,t,n){let r=this,i=r.events.length,a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),o;for(;i--;){let e=r.events[i][1];if(e.type===`labelImage`){o=e;break}if(e.type===`gfmFootnoteCall`||e.type===`labelLink`||e.type===`label`||e.type===`image`||e.type===`link`)break}return s;function s(i){if(!o||!o._balanced)return n(i);let s=U(r.sliceSerialize({start:o.end,end:r.now()}));return s.codePointAt(0)!==94||!a.includes(s.slice(1))?n(i):(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(i),e.exit(`gfmFootnoteCallLabelMarker`),t(i))}}function cl(e,t){let n=e.length;for(;n--;)if(e[n][1].type===`labelImage`&&e[n][0]===`enter`){e[n][1];break}e[n+1][1].type=`data`,e[n+3][1].type=`gfmFootnoteCallLabelMarker`;let r={type:`gfmFootnoteCall`,start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},i={type:`gfmFootnoteCallMarker`,start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;let a={type:`gfmFootnoteCallString`,start:Object.assign({},i.end),end:Object.assign({},e[e.length-1][1].start)},o={type:`chunkString`,contentType:`string`,start:Object.assign({},a.start),end:Object.assign({},a.end)},s=[e[n+1],e[n+2],[`enter`,r,t],e[n+3],e[n+4],[`enter`,i,t],[`exit`,i,t],[`enter`,a,t],[`enter`,o,t],[`exit`,o,t],[`exit`,a,t],e[e.length-2],e[e.length-1],[`exit`,r,t]];return e.splice(n,e.length-n+1,...s),e}function ll(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a=0,o;return s;function s(t){return e.enter(`gfmFootnoteCall`),e.enter(`gfmFootnoteCallLabelMarker`),e.consume(t),e.exit(`gfmFootnoteCallLabelMarker`),c}function c(t){return t===94?(e.enter(`gfmFootnoteCallMarker`),e.consume(t),e.exit(`gfmFootnoteCallMarker`),e.enter(`gfmFootnoteCallString`),e.enter(`chunkString`).contentType=`string`,l):n(t)}function l(s){if(a>999||s===93&&!o||s===null||s===91||q(s))return n(s);if(s===93){e.exit(`chunkString`);let a=e.exit(`gfmFootnoteCallString`);return i.includes(U(r.sliceSerialize(a)))?(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(s),e.exit(`gfmFootnoteCallLabelMarker`),e.exit(`gfmFootnoteCall`),t):n(s)}return q(s)||(o=!0),a++,e.consume(s),s===92?u:l}function u(t){return t===91||t===92||t===93?(e.consume(t),a++,l):l(t)}}function ul(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a,o=0,s;return c;function c(t){return e.enter(`gfmFootnoteDefinition`)._container=!0,e.enter(`gfmFootnoteDefinitionLabel`),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),l}function l(t){return t===94?(e.enter(`gfmFootnoteDefinitionMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionMarker`),e.enter(`gfmFootnoteDefinitionLabelString`),e.enter(`chunkString`).contentType=`string`,u):n(t)}function u(t){if(o>999||t===93&&!s||t===null||t===91||q(t))return n(t);if(t===93){e.exit(`chunkString`);let n=e.exit(`gfmFootnoteDefinitionLabelString`);return a=U(r.sliceSerialize(n)),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),e.exit(`gfmFootnoteDefinitionLabel`),f}return q(t)||(s=!0),o++,e.consume(t),t===92?d:u}function d(t){return t===91||t===92||t===93?(e.consume(t),o++,u):u(t)}function f(t){return t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),i.includes(a)||i.push(a),Y(e,p,`gfmFootnoteDefinitionWhitespace`)):n(t)}function p(e){return t(e)}}function dl(e,t,n){return e.check(mn,t,e.attempt(al,t,n))}function fl(e){e.exit(`gfmFootnoteDefinition`)}function pl(e,t,n){let r=this;return Y(e,i,`gfmFootnoteDefinitionIndent`,5);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`gfmFootnoteDefinitionIndent`&&i[2].sliceSerialize(i[1],!0).length===4?t(e):n(e)}}function ml(e){let t=(e||{}).singleTilde,n={name:`strikethrough`,tokenize:i,resolveAll:r};return t??=!0,{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function r(e,t){let n=-1;for(;++n1?r(a):(e.consume(a),o++,c);if(o<2&&!t)return r(a);let l=e.exit(`strikethroughSequenceTemporary`),u=on(a);return l._open=!u||u===2&&!!s,l._close=!s||s===2&&!!u,n(a)}}}var hl=class{constructor(){this.map=[],this.index=new Map}add(e,t,n){gl(this,e,t,n)}consume(e){if(this.map.sort(function(e,t){return e[0]-t[0]}),this.map.length===0)return;let t=this.map.length,n=[];for(;t>0;)--t,n.push(e.slice(this.map[t][0]+this.map[t][1]),this.map[t][2]),e.length=this.map[t][0];n.push(e.slice()),e.length=0;let r=n.pop();for(;r;){for(let t of r)e.push(t);r=n.pop()}this.map.length=0,this.index.clear()}};function gl(e,t,n,r){if(n===0&&r.length===0)return;let i=e.index.get(t);if(i){i[1]+=n,i[2].push(...r);return}let a=[t,n,r];e.map.push(a),e.index.set(t,a)}function _l(e,t){let n=!1,r=[];for(;t-1;){let{type:e}=r.events[t][1];if(e===`lineEnding`||e===`linePrefix`)t--;else break}let i=t>-1?r.events[t][1].type:null,a=i===`tableHead`||i===`tableRow`?S:c;return a===S&&r.parser.lazy[r.now().line]?n(e):a(e)}function c(t){return e.enter(`tableHead`),e.enter(`tableRow`),l(t)}function l(e){return e===124?u(e):(o=!0,a+=1,u(e))}function u(t){return t===null?n(t):K(t)?a>1?(a=0,r.interrupt=!0,e.exit(`tableRow`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),p):n(t):J(t)?Y(e,u,`whitespace`)(t):(a+=1,o&&(o=!1,i+=1),t===124?(e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),o=!0,u):(e.enter(`data`),d(t)))}function d(t){return t===null||t===124||q(t)?(e.exit(`data`),u(t)):(e.consume(t),t===92?f:d)}function f(t){return t===92||t===124?(e.consume(t),d):d(t)}function p(t){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(t):(e.enter(`tableDelimiterRow`),o=!1,J(t)?Y(e,m,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):m(t))}function m(t){return t===45||t===58?g(t):t===124?(o=!0,e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),h):x(t)}function h(t){return J(t)?Y(e,g,`whitespace`)(t):g(t)}function g(t){return t===58?(a+=1,o=!0,e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),_):t===45?(a+=1,_(t)):t===null||K(t)?b(t):x(t)}function _(t){return t===45?(e.enter(`tableDelimiterFiller`),v(t)):x(t)}function v(t){return t===45?(e.consume(t),v):t===58?(o=!0,e.exit(`tableDelimiterFiller`),e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),y):(e.exit(`tableDelimiterFiller`),y(t))}function y(t){return J(t)?Y(e,b,`whitespace`)(t):b(t)}function b(n){return n===124?m(n):n===null||K(n)?!o||i!==a?x(n):(e.exit(`tableDelimiterRow`),e.exit(`tableHead`),t(n)):x(n)}function x(e){return n(e)}function S(t){return e.enter(`tableRow`),C(t)}function C(n){return n===124?(e.enter(`tableCellDivider`),e.consume(n),e.exit(`tableCellDivider`),C):n===null||K(n)?(e.exit(`tableRow`),t(n)):J(n)?Y(e,C,`whitespace`)(n):(e.enter(`data`),w(n))}function w(t){return t===null||t===124||q(t)?(e.exit(`data`),C(t)):(e.consume(t),t===92?T:w)}function T(t){return t===92||t===124?(e.consume(t),w):w(t)}}function bl(e,t){let n=-1,r=!0,i=0,a=[0,0,0,0],o=[0,0,0,0],s=!1,c=0,l,u,d,f=new hl;for(;++nn[2]+1){let t=n[2]+1,r=n[3]-n[2]-1;e.add(t,r,[])}}e.add(n[3]+1,0,[[`exit`,o,t]])}return i!==void 0&&(a.end=Object.assign({},Cl(t.events,i)),e.add(i,0,[[`exit`,a,t]]),a=void 0),a}function Sl(e,t,n,r,i){let a=[],o=Cl(t.events,n);i&&(i.end=Object.assign({},o),a.push([`exit`,i,t])),r.end=Object.assign({},o),a.push([`exit`,r,t]),e.add(n+1,0,a)}function Cl(e,t){let n=e[t],r=n[0]===`enter`?`start`:`end`;return n[1][r]}var wl={name:`tasklistCheck`,tokenize:El};function Tl(){return{text:{91:wl}}}function El(e,t,n){let r=this;return i;function i(t){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(t):(e.enter(`taskListCheck`),e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),a)}function a(t){return q(t)?(e.enter(`taskListCheckValueUnchecked`),e.consume(t),e.exit(`taskListCheckValueUnchecked`),o):t===88||t===120?(e.enter(`taskListCheckValueChecked`),e.consume(t),e.exit(`taskListCheckValueChecked`),o):n(t)}function o(t){return t===93?(e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),e.exit(`taskListCheck`),s):n(t)}function s(r){return K(r)?t(r):J(r)?e.check({tokenize:Dl},t,n)(r):n(r)}}function Dl(e,t,n){return Y(e,r,`whitespace`);function r(e){return e===null?n(e):t(e)}}function Ol(e){return Lt([Wc(),ol(),ml(e),vl(),Tl()])}var kl={};function Al(e){let t=this,n=e||kl,r=t.data(),i=r.micromarkExtensions||=[],a=r.fromMarkdownExtensions||=[],o=r.toMarkdownExtensions||=[];i.push(Ol(n)),a.push(Fc()),o.push(Ic(n))}new Intl.NumberFormat(void 0,{maximumFractionDigits:0});function jl(e){return Number.isFinite(e)?e>0&&e<1e-4?`<0.01%`:`${(e*100).toFixed(e>=.1?1:2)}%`:`—`}function Ml(e){if(!Number.isFinite(e))return`—`;if(e<0)return`-${Ml(-e)}`;if(e===0)return`0ms`;if(e<.01)return`<0.01ms`;if(e<1)return`${e.toFixed(2)}ms`;if(Math.round(e*10)/10<100)return`${e.toFixed(1)}ms`;if(Math.round(e)<1e3)return`${Math.round(e)}ms`;let t=Math.round(e/100)/10;if(t<10)return`${(e/1e3).toFixed(2)}s`;if(t<60)return`${t.toFixed(1)}s`;let n=Math.round(e/1e3),r=Math.floor(n/60),i=n%60;if(r<60)return i===0?`${r}m`:`${r}m ${i}s`;let a=Math.floor(r/60),o=r%60;return o===0?`${a}h`:`${a}h ${o}m`}function Nl(e){let t=e instanceof Date?e:new Date(e);return Number.isNaN(t.valueOf())?String(e):t.toLocaleString([],{year:`numeric`,month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`,second:`2-digit`,timeZoneName:`short`})}export{Eo as a,Al as i,Nl as n,j as o,jl as r,h as s,Ml as t}; \ No newline at end of file +`))}function c(e,t,n,r){let i=n.enter(`tableCell`),o=n.enter(`phrasing`),s=n.containerPhrasing(e,{...r,before:a,after:a});return o(),i(),s}function l(e,t){return Ss(e,{align:t,alignDelimiters:r,padding:n,stringLength:i})}function u(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`table`);for(;++i0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}var al={tokenize:pl,partial:!0};function ol(){return{document:{91:{name:`gfmFootnoteDefinition`,tokenize:ul,continuation:{tokenize:dl},exit:fl}},text:{91:{name:`gfmFootnoteCall`,tokenize:ll},93:{name:`gfmPotentialFootnoteCall`,add:`after`,tokenize:sl,resolveTo:cl}}}}function sl(e,t,n){let r=this,i=r.events.length,a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),o;for(;i--;){let e=r.events[i][1];if(e.type===`labelImage`){o=e;break}if(e.type===`gfmFootnoteCall`||e.type===`labelLink`||e.type===`label`||e.type===`image`||e.type===`link`)break}return s;function s(i){if(!o||!o._balanced)return n(i);let s=U(r.sliceSerialize({start:o.end,end:r.now()}));return s.codePointAt(0)!==94||!a.includes(s.slice(1))?n(i):(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(i),e.exit(`gfmFootnoteCallLabelMarker`),t(i))}}function cl(e,t){let n=e.length;for(;n--;)if(e[n][1].type===`labelImage`&&e[n][0]===`enter`){e[n][1];break}e[n+1][1].type=`data`,e[n+3][1].type=`gfmFootnoteCallLabelMarker`;let r={type:`gfmFootnoteCall`,start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},i={type:`gfmFootnoteCallMarker`,start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;let a={type:`gfmFootnoteCallString`,start:Object.assign({},i.end),end:Object.assign({},e[e.length-1][1].start)},o={type:`chunkString`,contentType:`string`,start:Object.assign({},a.start),end:Object.assign({},a.end)},s=[e[n+1],e[n+2],[`enter`,r,t],e[n+3],e[n+4],[`enter`,i,t],[`exit`,i,t],[`enter`,a,t],[`enter`,o,t],[`exit`,o,t],[`exit`,a,t],e[e.length-2],e[e.length-1],[`exit`,r,t]];return e.splice(n,e.length-n+1,...s),e}function ll(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a=0,o;return s;function s(t){return e.enter(`gfmFootnoteCall`),e.enter(`gfmFootnoteCallLabelMarker`),e.consume(t),e.exit(`gfmFootnoteCallLabelMarker`),c}function c(t){return t===94?(e.enter(`gfmFootnoteCallMarker`),e.consume(t),e.exit(`gfmFootnoteCallMarker`),e.enter(`gfmFootnoteCallString`),e.enter(`chunkString`).contentType=`string`,l):n(t)}function l(s){if(a>999||s===93&&!o||s===null||s===91||q(s))return n(s);if(s===93){e.exit(`chunkString`);let a=e.exit(`gfmFootnoteCallString`);return i.includes(U(r.sliceSerialize(a)))?(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(s),e.exit(`gfmFootnoteCallLabelMarker`),e.exit(`gfmFootnoteCall`),t):n(s)}return q(s)||(o=!0),a++,e.consume(s),s===92?u:l}function u(t){return t===91||t===92||t===93?(e.consume(t),a++,l):l(t)}}function ul(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a,o=0,s;return c;function c(t){return e.enter(`gfmFootnoteDefinition`)._container=!0,e.enter(`gfmFootnoteDefinitionLabel`),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),l}function l(t){return t===94?(e.enter(`gfmFootnoteDefinitionMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionMarker`),e.enter(`gfmFootnoteDefinitionLabelString`),e.enter(`chunkString`).contentType=`string`,u):n(t)}function u(t){if(o>999||t===93&&!s||t===null||t===91||q(t))return n(t);if(t===93){e.exit(`chunkString`);let n=e.exit(`gfmFootnoteDefinitionLabelString`);return a=U(r.sliceSerialize(n)),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),e.exit(`gfmFootnoteDefinitionLabel`),f}return q(t)||(s=!0),o++,e.consume(t),t===92?d:u}function d(t){return t===91||t===92||t===93?(e.consume(t),o++,u):u(t)}function f(t){return t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),i.includes(a)||i.push(a),Y(e,p,`gfmFootnoteDefinitionWhitespace`)):n(t)}function p(e){return t(e)}}function dl(e,t,n){return e.check(mn,t,e.attempt(al,t,n))}function fl(e){e.exit(`gfmFootnoteDefinition`)}function pl(e,t,n){let r=this;return Y(e,i,`gfmFootnoteDefinitionIndent`,5);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`gfmFootnoteDefinitionIndent`&&i[2].sliceSerialize(i[1],!0).length===4?t(e):n(e)}}function ml(e){let t=(e||{}).singleTilde,n={name:`strikethrough`,tokenize:i,resolveAll:r};return t??=!0,{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function r(e,t){let n=-1;for(;++n1?r(a):(e.consume(a),o++,c);if(o<2&&!t)return r(a);let l=e.exit(`strikethroughSequenceTemporary`),u=on(a);return l._open=!u||u===2&&!!s,l._close=!s||s===2&&!!u,n(a)}}}var hl=class{constructor(){this.map=[],this.index=new Map}add(e,t,n){gl(this,e,t,n)}consume(e){if(this.map.sort(function(e,t){return e[0]-t[0]}),this.map.length===0)return;let t=this.map.length,n=[];for(;t>0;)--t,n.push(e.slice(this.map[t][0]+this.map[t][1]),this.map[t][2]),e.length=this.map[t][0];n.push(e.slice()),e.length=0;let r=n.pop();for(;r;){for(let t of r)e.push(t);r=n.pop()}this.map.length=0,this.index.clear()}};function gl(e,t,n,r){if(n===0&&r.length===0)return;let i=e.index.get(t);if(i){i[1]+=n,i[2].push(...r);return}let a=[t,n,r];e.map.push(a),e.index.set(t,a)}function _l(e,t){let n=!1,r=[];for(;t-1;){let{type:e}=r.events[t][1];if(e===`lineEnding`||e===`linePrefix`)t--;else break}let i=t>-1?r.events[t][1].type:null,a=i===`tableHead`||i===`tableRow`?S:c;return a===S&&r.parser.lazy[r.now().line]?n(e):a(e)}function c(t){return e.enter(`tableHead`),e.enter(`tableRow`),l(t)}function l(e){return e===124?u(e):(o=!0,a+=1,u(e))}function u(t){return t===null?n(t):K(t)?a>1?(a=0,r.interrupt=!0,e.exit(`tableRow`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),p):n(t):J(t)?Y(e,u,`whitespace`)(t):(a+=1,o&&(o=!1,i+=1),t===124?(e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),o=!0,u):(e.enter(`data`),d(t)))}function d(t){return t===null||t===124||q(t)?(e.exit(`data`),u(t)):(e.consume(t),t===92?f:d)}function f(t){return t===92||t===124?(e.consume(t),d):d(t)}function p(t){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(t):(e.enter(`tableDelimiterRow`),o=!1,J(t)?Y(e,m,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):m(t))}function m(t){return t===45||t===58?g(t):t===124?(o=!0,e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),h):x(t)}function h(t){return J(t)?Y(e,g,`whitespace`)(t):g(t)}function g(t){return t===58?(a+=1,o=!0,e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),_):t===45?(a+=1,_(t)):t===null||K(t)?b(t):x(t)}function _(t){return t===45?(e.enter(`tableDelimiterFiller`),v(t)):x(t)}function v(t){return t===45?(e.consume(t),v):t===58?(o=!0,e.exit(`tableDelimiterFiller`),e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),y):(e.exit(`tableDelimiterFiller`),y(t))}function y(t){return J(t)?Y(e,b,`whitespace`)(t):b(t)}function b(n){return n===124?m(n):n===null||K(n)?!o||i!==a?x(n):(e.exit(`tableDelimiterRow`),e.exit(`tableHead`),t(n)):x(n)}function x(e){return n(e)}function S(t){return e.enter(`tableRow`),C(t)}function C(n){return n===124?(e.enter(`tableCellDivider`),e.consume(n),e.exit(`tableCellDivider`),C):n===null||K(n)?(e.exit(`tableRow`),t(n)):J(n)?Y(e,C,`whitespace`)(n):(e.enter(`data`),w(n))}function w(t){return t===null||t===124||q(t)?(e.exit(`data`),C(t)):(e.consume(t),t===92?T:w)}function T(t){return t===92||t===124?(e.consume(t),w):w(t)}}function bl(e,t){let n=-1,r=!0,i=0,a=[0,0,0,0],o=[0,0,0,0],s=!1,c=0,l,u,d,f=new hl;for(;++nn[2]+1){let t=n[2]+1,r=n[3]-n[2]-1;e.add(t,r,[])}}e.add(n[3]+1,0,[[`exit`,o,t]])}return i!==void 0&&(a.end=Object.assign({},Cl(t.events,i)),e.add(i,0,[[`exit`,a,t]]),a=void 0),a}function Sl(e,t,n,r,i){let a=[],o=Cl(t.events,n);i&&(i.end=Object.assign({},o),a.push([`exit`,i,t])),r.end=Object.assign({},o),a.push([`exit`,r,t]),e.add(n+1,0,a)}function Cl(e,t){let n=e[t],r=n[0]===`enter`?`start`:`end`;return n[1][r]}var wl={name:`tasklistCheck`,tokenize:El};function Tl(){return{text:{91:wl}}}function El(e,t,n){let r=this;return i;function i(t){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(t):(e.enter(`taskListCheck`),e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),a)}function a(t){return q(t)?(e.enter(`taskListCheckValueUnchecked`),e.consume(t),e.exit(`taskListCheckValueUnchecked`),o):t===88||t===120?(e.enter(`taskListCheckValueChecked`),e.consume(t),e.exit(`taskListCheckValueChecked`),o):n(t)}function o(t){return t===93?(e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),e.exit(`taskListCheck`),s):n(t)}function s(r){return K(r)?t(r):J(r)?e.check({tokenize:Dl},t,n)(r):n(r)}}function Dl(e,t,n){return Y(e,r,`whitespace`);function r(e){return e===null?n(e):t(e)}}function Ol(e){return Lt([Wc(),ol(),ml(e),vl(),Tl()])}var kl={};function Al(e){let t=this,n=e||kl,r=t.data(),i=r.micromarkExtensions||=[],a=r.fromMarkdownExtensions||=[],o=r.toMarkdownExtensions||=[];i.push(Ol(n)),a.push(Fc()),o.push(Ic(n))}var jl=new Intl.NumberFormat(void 0,{maximumFractionDigits:0});function Ml(e){return Number.isFinite(e)?e>0&&e<1e-4?`<0.01%`:`${(e*100).toFixed(e>=.1?1:2)}%`:`—`}function Nl(e){if(!Number.isFinite(e))return`—`;if(e<0)return`-${Nl(-e)}`;if(e===0)return`0ms`;if(e<.01)return`<0.01ms`;if(e<1)return`${e.toFixed(2)}ms`;if(Math.round(e*10)/10<100)return`${e.toFixed(1)}ms`;if(Math.round(e)<1e3)return`${Math.round(e)}ms`;let t=Math.round(e/100)/10;if(t<10)return`${(e/1e3).toFixed(2)}s`;if(t<60)return`${t.toFixed(1)}s`;let n=Math.round(e/1e3),r=Math.floor(n/60),i=n%60;if(r<60)return i===0?`${r}m`:`${r}m ${i}s`;let a=Math.floor(r/60),o=r%60;return o===0?`${a}h`:`${a}h ${o}m`}function Pl(e=new Date){let t=e instanceof Date?e:new Date(e);return Number.isNaN(t.valueOf())?Pl(new Date):new Intl.DateTimeFormat([],{timeZoneName:`short`}).formatToParts(t).find(e=>e.type===`timeZoneName`)?.value??``}function Fl(e){let t=e instanceof Date?e:new Date(e);return Number.isNaN(t.valueOf())?String(e):t.toLocaleString([],{year:`numeric`,month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`,second:`2-digit`,timeZoneName:`short`})}export{Pl as a,j as c,Ml as i,h as l,Fl as n,Al as o,jl as r,Eo as s,Nl as t}; \ No newline at end of file diff --git a/internal/ui/dist/assets/index-Byh_fBCG.js b/internal/ui/dist/assets/index-Byh_fBCG.js deleted file mode 100644 index 148d98e8..00000000 --- a/internal/ui/dist/assets/index-Byh_fBCG.js +++ /dev/null @@ -1,97 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/routes-Cq8VcSRH.js","assets/brand-eOqp_Ed4.js","assets/auth-BZHrLj_K.js","assets/settings-OxcFdUxP.js","assets/Tooltip-Bef-UcCW.js","assets/useQuery-B6EnqqkT.js","assets/WarningCircle.es-CVethYG9.js","assets/chat.index-9RFXIZ1e.js","assets/chat-Cesgwa1O.js","assets/format-HB47ZCa3.js","assets/preload-helper-CAfbhz7u.js","assets/chat._threadId-9RFXIZ1e.js","assets/dashboards.index-zL4w6VKJ.js","assets/tokens-D12raFtt.js","assets/use-computed-color-scheme-_1Kex6aU.js","assets/page-BEErwk1M.js","assets/dashboards._dashboardId-BwOctTYv.js"])))=>i.map(i=>d[i]); -import{A as e,B as t,C as n,D as r,F as i,H as a,I as o,J as s,K as c,M as l,N as u,O as d,P as f,Q as p,R as m,S as h,U as g,W as _,_t as v,a as y,ct as b,d as ee,dt as x,et as S,f as C,ft as te,g as ne,gt as re,ht as ie,it as ae,j as oe,l as se,lt as w,mt as ce,ot as le,pt as ue,q as de,s as fe,st as pe,t as me,tt as he,u as ge,ut as _e,v as ve,w as ye,x as be,z as xe}from"./brand-eOqp_Ed4.js";import{a as Se,d as Ce,f as we,i as T,l as Te,m as Ee,n as De,o as Oe,r as ke,t as Ae,u as je}from"./auth-BZHrLj_K.js";import{$ as Me,A as Ne,B as Pe,D as Fe,E as Ie,F as Le,G as Re,H as ze,J as Be,K as Ve,L as He,O as Ue,P as We,Q as Ge,R as Ke,T as qe,U as Je,V as Ye,W as Xe,X as Ze,Y as Qe,Z as $e,_ as et,a as tt,at as nt,ct as rt,dt as it,et as at,f as ot,ft as st,gt as ct,h as lt,ht as ut,i as dt,it as ft,k as pt,l as mt,lt as ht,mt as gt,n as _t,nt as vt,o as yt,ot as bt,pt as xt,q as St,r as Ct,rt as wt,s as Tt,st as Et,t as Dt,tt as Ot,u as kt,ut as At,w as jt,y as Mt,z as Nt}from"./tokens-D12raFtt.js";import{E as Pt,T as Ft,o as It,t as Lt}from"./Tooltip-Bef-UcCW.js";import{n as Rt,t as zt}from"./use-computed-color-scheme-_1Kex6aU.js";import{C as Bt,E as Vt,F as Ht,R as Ut,T as Wt,_ as Gt,a as Kt,b as qt,c as Jt,d as Yt,f as Xt,g as Zt,h as Qt,l as $t,m as en,n as tn,o as nn,p as rn,r as an,s as on,t as sn,u as cn,v as ln,w as un,y as dn}from"./useQuery-B6EnqqkT.js";import{i as fn,n as pn,o as mn,r as hn,s as gn,t as _n}from"./preload-helper-CAfbhz7u.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var vn=ie((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function ee(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,x||(x=!0,ie());else{var t=n(l);t!==null&&se(ee,t.startTime-e)}}}var x=!1,S=-1,C=5,te=-1;function ne(){return g?!0:!(e.unstable_now()-tet&&ne());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&se(ee,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?ie():x=!1}}}var ie;if(typeof y==`function`)ie=function(){y(re)};else if(typeof MessageChannel<`u`){var ae=new MessageChannel,oe=ae.port2;ae.port1.onmessage=re,ie=function(){oe.postMessage(null)}}else ie=function(){_(re,0)};function se(t,n){S=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(S),S=-1):h=!0,se(ee,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,x||(x=!0,ie()))),r},e.unstable_shouldYield=ne,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),yn=ie(((e,t)=>{t.exports=vn()})),bn=ie((e=>{var t=yn(),n=ce(),r=ue();function i(e){var t=`https://react.dev/errors/`+e;if(1Oe||(e.current=De[Oe],De[Oe]=null,Oe--)}function je(e,t){Oe++,De[Oe]=e.current,e.current=t}var Me=ke(null),Ne=ke(null),Pe=ke(null),Fe=ke(null);function Ie(e,t){switch(je(Pe,t),je(Ne,e),je(Me,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?wp(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=wp(t),e=Tp(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}Ae(Me),je(Me,e)}function Le(){Ae(Me),Ae(Ne),Ae(Pe)}function Re(e){var t=e.memoizedState;t!==null&&(xh._currentValue=t.memoizedState,je(Fe,e)),t=Me.current;var n=Tp(t,e.type);t!==n&&(je(Ne,e),je(Me,n))}function ze(e){Ne.current===e&&(Ae(Me),Ae(Ne)),Fe.current===e&&(Ae(Fe),xh._currentValue=Ee)}var Be,Ve;function He(e){if(Be===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Be=t&&t[1]||``,Ve=-1)`:-1i||c[r]!==l[i]){var u=` -`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{Ue=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?He(n):``}function Ge(e,t){switch(e.tag){case 26:case 27:case 5:return He(e.type);case 16:return He(`Lazy`);case 13:return e.child!==t&&t!==null?He(`Suspense Fallback`):He(`Suspense`);case 19:return He(`SuspenseList`);case 0:case 15:return We(e.type,!1);case 11:return We(e.type.render,!1);case 1:return We(e.type,!0);case 31:return He(`Activity`);case 30:return He(`ViewTransition`);default:return``}}function Ke(e){try{var t=``,n=null;do t+=Ge(e,n),n=e,e=e.return;while(e);return t}catch(e){return` -Error generating stack: `+e.message+` -`+e.stack}}var qe=Object.prototype.hasOwnProperty,Je=t.unstable_scheduleCallback,Ye=t.unstable_cancelCallback,Xe=t.unstable_shouldYield,Ze=t.unstable_requestPaint,Qe=t.unstable_now,$e=t.unstable_getCurrentPriorityLevel,et=t.unstable_ImmediatePriority,tt=t.unstable_UserBlockingPriority,nt=t.unstable_NormalPriority,rt=t.unstable_LowPriority,it=t.unstable_IdlePriority,at=t.log,ot=t.unstable_setDisableYieldValue,st=null,ct=null;function lt(e){if(typeof at==`function`&&ot(e),ct&&typeof ct.setStrictMode==`function`)try{ct.setStrictMode(st,e)}catch{}}var ut=Math.clz32?Math.clz32:pt,dt=Math.log,ft=Math.LN2;function pt(e){return e>>>=0,e===0?32:31-(dt(e)/ft|0)|0}var mt=256,ht=262144,gt=4194304;function _t(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function vt(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=_t(n))):i=_t(o):i=_t(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=_t(n))):i=_t(o)):i=_t(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function yt(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function bt(e,t){t&8&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0n;n++)t.push(e);return t}function wt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Tt(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0=Er),kr=` `,Ar=!1;function jr(e,t){switch(e){case`keyup`:return wr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function Mr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var Nr=!1;function Pr(e,t){switch(e){case`compositionend`:return Mr(t);case`keypress`:return t.which===32?(Ar=!0,kr):null;case`textInput`:return e=t.data,e===kr&&Ar?null:e;default:return null}}function Fr(e,t){if(Nr)return e===`compositionend`||!Tr&&jr(e,t)?(e=qn(),Kn=Gn=Wn=null,Nr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=ii(n)}}function oi(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?oi(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function si(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=ri(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=ri(e.document)}return t}function ci(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var li=Vn&&`documentMode`in document&&11>=document.documentMode,ui=null,di=null,fi=null,pi=!1;function mi(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;pi||ui==null||ui!==ri(r)||(r=ui,`selectionStart`in r&&ci(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),fi&&ni(fi,r)||(fi=r,r=sp(di,`onSelect`),0>=o,i-=o,ca=1<<32-ut(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),O&&ua(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),O&&ua(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return O&&ua(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&(_=v.alternate,_!==null&&h.delete(_.key===null?g:_.key)),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),O&&ua(a,g),u}function _(e,r,o,c){if(typeof o==`object`&&o&&o.type===ie&&o.key===null&&o.props.ref===void 0&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case ne:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===ie){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),xo(c,o),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===me&&mo(l)===r.type){n(e,r.sibling),c=a(r,o.props),xo(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===ie?(c=Yi(o.props.children,e.mode,c,o.key),xo(c,o),c.return=e,e=c):(c=Ji(o.type,o.key,o.props,null,e.mode,c),xo(c,o),c.return=e,e=c)}return s(e);case re:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Qi(o,e.mode,c),c.return=e,e=c}return s(e);case me:return o=mo(o),_(e,r,o,c)}if(we(o))return h(e,r,o,c);if(xe(o)){if(l=xe(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return _(e,r,bo(o),c);if(o.$$typeof===w)return _(e,r,Ra(e,o),c);So(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=Xi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{yo=0;var i=_(e,t,n,r);return vo=null,i}catch(t){if(t===so||t===lo)throw t;var a=Wi(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var k=Co(!0),wo=Co(!1),To=!1;function Eo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function A(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Do(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Oo(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,ld&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Vi(e),Bi(e,null,n),t}return Li(e,r,t,n),Vi(e)}function ko(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Dt(e,n)}}function Ao(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var jo=!1;function Mo(){if(jo){var e=Qa;if(e!==null)throw e}}function No(e,t,n,r){jo=!1;var i=e.updateQueue;To=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(R&f)===f:(r&f)===f){f!==0&&f===Za&&(jo=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,h=s;f=t;var g=n;switch(h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(g,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(g,d,f):m,f==null)break a;d=C({},d,f);break a;case 2:To=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),vd|=o,e.lanes=o,e.memoizedState=d}}function Po(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function Fo(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=T.T,s={};s.types=o===null?null:o.types,T.T=s,Sc(e,!1,t,n);try{var c=i(),l=T.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?xc(e,t,to(c,r),Ud(e)):xc(e,t,r,Ud(e))}catch(n){xc(e,t,{then:function(){},status:`rejected`,reason:n},Ud())}finally{Te.p=a,o!==null&&s.types!==null&&(o.types=s.types),T.T=o}}function dc(){}function fc(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=pc(e).queue;uc(e,a,t,Ee,n===null?dc:function(){return mc(e),n(r)})}function pc(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Ee,baseState:Ee,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Cs,lastRenderedState:Ee},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Cs,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function mc(e){var t=pc(e);t.next===null&&(t=e.alternate.memoizedState),xc(e,t.next.queue,{},Ud())}function hc(){return La(xh)}function gc(){return vs().memoizedState}function _c(){return vs().memoizedState}function vc(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=Ud();e=Do(n);var r=Oo(t,e,n);r!==null&&(Kd(r,t,n),ko(r,t,n)),t={cache:Wa()},e.payload=t;return}t=t.return}}function yc(e,t,n){var r=Ud();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Cc(e)?wc(t,n):(n=Ri(e,t,n,r),n!==null&&(Kd(n,e,r),Tc(n,t,r)))}function bc(e,t,n){xc(e,t,n,Ud())}function xc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Cc(e))wc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,ti(s,o))return Li(e,t,i,0),ud===null&&D(),!1}catch{}if(n=Ri(e,t,i,r),n!==null)return Kd(n,e,r),Tc(n,t,r),!0}return!1}function Sc(e,t,n,r){if(r={lane:2,revertLane:qf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Cc(e)){if(t)throw Error(i(479))}else t=Ri(e,n,r,2),t!==null&&Kd(t,e,2)}function Cc(e){var t=e.alternate;return e===j||t!==null&&t===j}function wc(e,t){ns=ts=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Tc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Dt(e,n)}}var Ec={readContext:La,use:xs,useCallback:cs,useContext:cs,useEffect:cs,useImperativeHandle:cs,useLayoutEffect:cs,useInsertionEffect:cs,useMemo:cs,useReducer:cs,useRef:cs,useState:cs,useDebugValue:cs,useDeferredValue:cs,useTransition:cs,useSyncExternalStore:cs,useId:cs,useHostTransitionStatus:cs,useFormState:cs,useActionState:cs,useOptimistic:cs,useMemoCache:cs,useCacheRefresh:cs,useEffectEvent:cs},Dc={readContext:La,use:xs,useCallback:function(e,t){return _s().memoizedState=[e,t===void 0?null:t],e},useContext:La,useEffect:Zs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Ys(4194308,4,rc.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Ys(4194308,4,e,t)},useInsertionEffect:function(e,t){Ys(4,2,e,t)},useMemo:function(e,t){var n=_s();t=t===void 0?null:t;var r=e();if(rs){lt(!0);try{e()}finally{lt(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=_s();if(n!==void 0){var i=n(t);if(rs){lt(!0);try{n(t)}finally{lt(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=yc.bind(null,j,e),[r.memoizedState,e]},useRef:function(e){var t=_s();return e={current:e},t.memoizedState=e},useState:function(e){e=Ns(e);var t=e.queue,n=bc.bind(null,j,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:ac,useDeferredValue:function(e,t){return cc(_s(),e,t)},useTransition:function(){var e=Ns(!1);return e=uc.bind(null,j,e.queue,!0,!1),_s().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=j,a=_s();if(O){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),ud===null)throw Error(i(349));R&127||Os(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,Zs(As.bind(null,r,o,e),[e]),r.flags|=2048,qs(9,{destroy:void 0},ks.bind(null,r,o,n,t),null),n},useId:function(){var e=_s(),t=ud.identifierPrefix;if(O){var n=la,r=ca;n=(r&~(1<<32-ut(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=is++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[Pt]=t,o[Ft]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(gp(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Cl(t)}}return Ol(t),t.subtreeFlags&=-33554433,wl(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Cl(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=Pe.current,Ca(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=ha,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[Pt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||pp(e.nodeValue,n)),e||ba(t,!0)}else e=Cp(e).createTextNode(r),e[Pt]=t,t.stateNode=e}return Ol(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Ca(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[Pt]=t}else wa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Ol(t),e=!1}else n=Ta(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(qo(t),t):(qo(t),null);if(t.flags&128)throw Error(i(558))}return Ol(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=Ca(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[Pt]=t}else wa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Ol(t),a=!1}else a=Ta(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(qo(t),t):(qo(t),null)}return qo(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),El(t,t.updateQueue),Ol(t),null);case 4:return Le(),e===null&&rp(t.stateNode.containerInfo),t.flags|=67108864,Ol(t),null;case 10:return ja(t.type),Ol(t),null;case 19:if(Xo(t),r=t.memoizedState,r===null)return Ol(t),null;if(a=!!(t.flags&128),o=r.rendering,o===null){if(a)Dl(r,!1);else{if(_d!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=Zo(e),o!==null){for(t.flags|=128,Dl(r,!1),e=o.updateQueue,t.updateQueue=e,El(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)qi(n,e),n=n.sibling;return Yo(t,Jo.current&1|2),O&&ua(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Qe()>Od&&(t.flags|=128,a=!0,Dl(r,!1),t.lanes=4194304)}}else{if(!a){if(e=Zo(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,El(t,e),Dl(r,!0),r.tail===null&&r.tailMode!==`collapsed`&&r.tailMode!==`visible`&&!o.alternate&&!O)return Ol(t),null}else 2*Qe()-r.renderingStartTime>Od&&n!==536870912&&(t.flags|=128,a=!0,Dl(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}if(r.tail!==null){e=r.tail;a:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break a}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Qe(),e.sibling=null,o=Jo.current,o=a?o&1|2:o&1,r.tailMode===`visible`||r.tailMode===`collapsed`||!n||O?Yo(t,o):(n=o,je(Vo,t),je(Jo,n),Ho===null&&(Ho=t)),O&&ua(t,r.treeForkCount),e}return Ol(t),null;case 22:case 23:return qo(t),Bo(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(Ol(t),t.subtreeFlags&6&&(t.flags|=8192)):Ol(t),n=t.updateQueue,n!==null&&El(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&Ae(ro),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ja(Ua),Ol(t),null;case 25:return null;case 30:return t.flags|=33554432,Ol(t),null}throw Error(i(156,t.tag))}function Al(e,t){switch(pa(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ja(Ua),Le(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ze(t),null;case 31:if(t.memoizedState!==null){if(qo(t),t.alternate===null)throw Error(i(340));wa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(qo(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));wa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Xo(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return Le(),null;case 10:return ja(t.type),null;case 22:case 23:return qo(t),Bo(),e!==null&&Ae(ro),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ja(Ua),null;case 25:return null;default:return null}}function jl(e,t){switch(pa(t),t.tag){case 3:ja(Ua),Le();break;case 26:case 27:case 5:ze(t);break;case 4:Le();break;case 31:t.memoizedState!==null&&qo(t);break;case 13:qo(t);break;case 19:Xo(t);break;case 10:ja(t.type);break;case 22:case 23:qo(t),Bo(),e!==null&&Ae(ro);break;case 24:ja(Ua)}}function Ml(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Ef(t,t.return,e)}}function Nl(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Ef(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Ef(t,t.return,e)}}function Pl(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Fo(t,n)}catch(t){Ef(e,e.return,t)}}}function Fl(e,t,n){n.props=Pc(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Ef(e,t,n)}}function Il(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:var i=e.stateNode,a=ji(e.memoizedProps,i);(i.ref===null||i.ref.name!==a)&&(i.ref=Jp(a)),r=i.ref;break;case 7:if(e.stateNode===null){var o=new Yp(e);f(e.child,!1,fm,o,void 0,void 0),e.stateNode=o}r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Ef(e,t,n)}}function P(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Ef(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Ef(e,t,n)}else n.current=null}}function Ll(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n title`))),gp(r,t,n),r[Pt]=e,Jt(r),t=r;break a;case`link`:if(o=ah(`link`,`href`,a).get(t+(n.href||``))){for(s=0;sg&&(o=g,g=h,h=o);var _=ai(s,h),v=ai(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,T.T=null,n=Id,Id=null;var o=Md,s=Pd;if(jd=0,Nd=Md=null,Pd=0,ld&6)throw Error(i(331));var c=ld;if(ld|=4,id(o.current),Xu(o,o.current,s,n),ld=c,Bf(0,!1),ct&&typeof ct.onPostCommitFiberRoot==`function`)try{ct.onPostCommitFiberRoot(st,o)}catch{}return!0}finally{Te.p=a,T.T=r,Sf(e,t)}}function Tf(e,t,n){t=ea(n,t),t=Bc(e.stateNode,t,2),e=Oo(e,t,2),e!==null&&(wt(e,2),zf(e))}function Ef(e,t,n){if(e.tag===3)Tf(e,e,n);else for(;t!==null;){if(t.tag===3){Tf(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(Ad===null||!Ad.has(r))){e=ea(n,e),n=Vc(2),r=Oo(t,n,2),r!==null&&(Hc(n,r,t,e),wt(r,2),zf(r));break}}t=t.return}}function Df(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new cd;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(hd=!0,i.add(n),e=Of.bind(null,e,t,n),t.then(e,e))}function Of(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,ud===e&&(R&n)===n&&(_d===4||_d===3&&(R&62914560)===R&&300>Qe()-Ed?ld&2?bd|=n:$d(e,0):bd|=n,Sd===R&&(Sd=0)),zf(e)}function kf(e,t){t===0&&(t=St()),e=zi(e,t),e!==null&&(wt(e,t),zf(e))}function Af(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),kf(e,n)}function jf(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),kf(e,n)}function Mf(e,t){return Je(e,t)}var Nf=null,Pf=null,Ff=!1,If=!1,Lf=!1,Rf=0;function zf(e){e!==Pf&&e.next===null&&(Pf===null?Nf=Pf=e:Pf=Pf.next=e),If=!0,Ff||(Ff=!0,Kf())}function Bf(e,t){if(!Lf&&If){Lf=!0;do for(var n=!1,r=Nf;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-ut(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Gf(r,a))}else a=R,a=vt(r,r===ud?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||yt(r,a)||(n=!0,Gf(r,a))}r=r.next}while(n);Lf=!1}}function Vf(){Hf()}function Hf(){If=Ff=!1;var e=0;Rf!==0&&kp()&&(e=Rf);for(var t=Qe(),n=null,r=Nf;r!==null;){var i=r.next,a=Uf(r,t);a===0?(r.next=null,n===null?Nf=i:n.next=i,i===null&&(Pf=n)):(n=r,(e!==0||a&3)&&(If=!0)),r=i}jd!==0&&jd!==5||Bf(e,!1),Rf!==0&&(Rf=0)}function Uf(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&yp(d)&&(c=c.responseEnd,o+=u*(cph){s.length=o;break}f=new Promise(Gp.bind(f)),s.push(f)}}}if(0`u`?null:document;function zm(e,t,n){var r=Rm;if(r&&typeof t==`string`&&t){var i=gn(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),Nm.has(i)||(Nm.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),gp(t,`link`,e),Jt(t),r.head.appendChild(t)))}}function Bm(e){Fm.D(e),zm(`dns-prefetch`,e,null)}function Vm(e,t){Fm.C(e,t),zm(`preconnect`,e,t)}function Hm(e,t,n){Fm.L(e,t,n);var r=Rm;if(r&&e&&t){var i=`link[rel="preload"][as="`+gn(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+gn(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+gn(n.imageSizes)+`"]`)):i+=`[href="`+gn(e)+`"]`;var a=i;switch(t){case`style`:a=Jm(e);break;case`script`:a=Qm(e)}if(!(Mm.has(a)||(e=C({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),Mm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Ym(a))||t===`script`&&r.querySelector($m(a))))){var o=r.createElement(`link`);gp(o,`link`,e),t===`style`&&(o[Ht]=!0,o.onload=o.onerror=function(){Yt(o)}),Jt(o),r.head.appendChild(o)}}}function Um(e,t){Fm.m(e,t);var n=Rm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+gn(r)+`"][href="`+gn(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Qm(e)}if(!Mm.has(a)&&(e=C({rel:`modulepreload`,href:e},t),Mm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector($m(a)))return}r=n.createElement(`link`),gp(r,`link`,e),Jt(r),n.head.appendChild(r)}}}function Wm(e,t,n){Fm.S(e,t,n);var r=Rm;if(r&&e){var i=qt(r).hoistableStyles,a=Jm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Ym(a)))s.loading=5;else{e=C({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=Mm.get(a))&&nh(e,n);var c=o=r.createElement(`link`);Jt(c),gp(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,th(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Gm(e,t){Fm.X(e,t);var n=Rm;if(n&&e){var r=qt(n).hoistableScripts,i=Qm(e),a=r.get(i);a||(a=n.querySelector($m(i)),a||(e=C({src:e,async:!0},t),(t=Mm.get(i))&&rh(e,t),a=n.createElement(`script`),Jt(a),gp(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Km(e,t){Fm.M(e,t);var n=Rm;if(n&&e){var r=qt(n).hoistableScripts,i=Qm(e),a=r.get(i);a||(a=n.querySelector($m(i)),a||(e=C({src:e,async:!0,type:`module`},t),(t=Mm.get(i))&&rh(e,t),a=n.createElement(`script`),Jt(a),gp(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function qm(e,t,n,r){var a=(a=Pe.current)?Pm(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Jm(n.href),t=qt(a).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Jm(n.href);var o=qt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Ym(e)))?o._p||(s.instance=o,s.state.loading=5):(o=Mm.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},Mm.set(e,o)),Zm(a,e,o,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Qm(n),t=qt(a).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Jm(e){return`href="`+gn(e)+`"`}function Ym(e){return`link[rel="stylesheet"][`+e+`]`}function Xm(e){return C({},e,{"data-precedence":e.precedence,precedence:null})}function Zm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[Ht]){r.loading=1;return}}else t=e.createElement(`link`),t[Ht]=!0,t.onload=t.onerror=Yt.bind(null,t),gp(t,`link`,n),Jt(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Qm(e){return`[src="`+gn(e)+`"]`}function $m(e){return`script[async]`+e}function eh(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+gn(n.href)+`"]`);if(r)return t.instance=r,Jt(r),r;var a=C({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Jt(r),gp(r,`style`,a),th(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Jm(n.href);var o=e.querySelector(Ym(a));if(o)return t.state.loading|=4,t.instance=o,Jt(o),o;r=Xm(n),(a=Mm.get(a))&&nh(r,a),o=(e.ownerDocument||e).createElement(`link`),Jt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),gp(o,`link`,r),t.state.loading|=4,th(o,n.precedence,e),t.instance=o;case`script`:return o=Qm(n.src),(a=e.querySelector($m(o)))?(t.instance=a,Jt(a),a):(r=n,(a=Mm.get(o))&&(r=C({},n),rh(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),Jt(a),gp(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,th(r,n.precedence,e));return t.instance}function th(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function sh(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function ch(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function lh(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function uh(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function dh(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=uh(t),e.suspenseyImages.push(t)),e=_h.bind(e),t.decode().then(e,e))}function fh(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Jm(r.href),a=t.querySelector(Ym(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=gh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Jt(a);return}a=t.ownerDocument||t,r=Xm(r),(i=Mm.get(i))&&nh(r,i),a=a.createElement(`link`),Jt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),gp(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=gh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var ph=0;function mh(e,t){return e.stylesheets&&e.count===0&&yh(e,e.stylesheets),0ph?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function hh(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)yh(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function gh(){this.count--,hh(this)}function _h(){this.imgCount--,hh(this)}var vh=null;function yh(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,vh=new Map,t.forEach(bh,e),vh=null,gh.call(e))}function bh(e,t){if(!(t.state.loading&4)){var n=vh.get(e);if(n)var r=n.get(null);else{n=new Map,vh.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=bn()}));function Sn(e){return e?.isNotFound===!0}function Cn(){try{return sessionStorage}catch{return}}var wn=`tsr-scroll-restoration-v1_3`,Tn=Cn();function En(){try{return JSON.parse(Tn?.getItem(`tsr-scroll-restoration-v1_3`)||`{}`)}catch{return{}}}var Dn=En(),On=`data-scroll-restoration-id`,kn=e=>e.state.__TSR_key||e.href;function An(e){let t=e.getAttribute(On);if(t)return`[${On}="${t}"]`;let n=``,r=e,i;for(;i=r.parentNode;){let e=1,t=r;for(;t=t.previousElementSibling;)e++;let a=`${r.localName}:nth-child(${e})`;n=n?`${a} > ${n}`:a,r=i}return n}var jn=!1,Mn=`window`;function Nn(e){try{return typeof e==`function`?e():document.querySelector(e)}catch{}}function Pn(e){let t=new Set;for(let n of e){if(n===Mn)continue;let e=Nn(n);e&&t.add(e)}return t}function Fn(e,t){let n=t??e.options.scrollRestoration,r=e._scroll;n&&(r.e=!0);let i=e.options.getScrollRestorationKey||kn,a=new Set,o=e=>{let t=Dn[e]||={};for(let e of a)e===document?t[Mn]={scrollX,scrollY}:e.isConnected&&(t[An(e)]={scrollX:e.scrollLeft,scrollY:e.scrollTop})};n&&!r.s&&(r.s=!0,jn=!1,history.scrollRestoration=`manual`,document.addEventListener(`scroll`,e=>{jn||a.add(e.target)},!0),e.subscribe(`onBeforeLoad`,e=>{e.fromLocation&&o(i(e.fromLocation)),a.clear()}),addEventListener(`pagehide`,()=>{history.scrollRestoration=`auto`,o(i(e.stores.resolvedLocation.get()??e.stores.location.get()));try{Tn?.setItem(wn,JSON.stringify(Dn))}catch{}}),addEventListener(`pageshow`,e=>{e.persisted&&(history.scrollRestoration=`manual`)})),!r.r&&(r.r=!0,e.subscribe(`onRendered`,t=>{let n=e.options.scrollRestorationBehavior,o=e.options.scrollToTopSelectors,s=r.n,c=r.h,l;if(a.clear(),r.n=!0,r.h=!1,typeof e.options.scrollRestoration==`function`&&!e.options.scrollRestoration({location:e.latestLocation}))return;let u=i(t.toLocation),d=t.fromLocation&&i(t.fromLocation);if(r.e&&d&&d!==u){let e=Dn[d];if(e){let t=Dn[u];for(let n in e){if(n===Mn){if(s)continue}else{let e=Nn(n);if(!e||s&&o&&(l??=Pn(o),l.has(e)))continue}t||=Dn[u]={},t[n]??=e[n]}}}jn=!0;try{let e=t.toLocation.hash,i=t.toLocation.state.__hashScrollIntoViewOptions??!0,a=!1;if(s){!e&&o&&(l??=Pn(o));let t=e&&i&&c,s=r.e?Dn[u]:void 0;if(s)for(let e in s){let{scrollX:r,scrollY:i}=s[e];if(e===Mn){if(t)continue;scrollTo({top:i,left:r,behavior:n}),a=!0}else{let t=Nn(e);t&&(t.scrollLeft=r,t.scrollTop=i,l?.delete(t))}}if(!e){let e={top:0,left:0,behavior:n};if(a||scrollTo(e),l)for(let t of l)t.scrollTo(e)}}!a&&e&&i&&document.getElementById(e)?.scrollIntoView(i)}finally{jn=!1}}))}function In(e,t=String){let n;for(let r in e){let i=e[r];i!==void 0&&(n||=new URLSearchParams).set(r,t(i))}return n?n.toString():``}function Ln(e){return e?e===`false`?!1:e===`true`?!0:e*0==0&&+e+``===e?+e:e:``}function Rn(e){let t=new URLSearchParams(e),n=Object.create(null);for(let[e,r]of t.entries()){let t=n[e];t==null?n[e]=Ln(r):Array.isArray(t)?t.push(Ln(r)):n[e]=[t,Ln(r)]}return n}var zn=/^(?:\s|["[{\d-]|fa|nu|tr)/,Bn=Hn(JSON.parse),Vn=Un(JSON.stringify,JSON.parse);function Hn(e){let t=e===JSON.parse;return n=>{n[0]===`?`&&(n=n.substring(1));let r=Rn(n);for(let n in r){let i=r[n];if(typeof i==`string`){if(t&&!zn.test(i))continue;try{r[n]=e(i)}catch{}}}return r}}function Un(e,t){let n=t===JSON.parse;function r(r){if(r&&typeof r==`object`)try{return e(r)}catch{}else if(t&&typeof r==`string`){if(n&&!zn.test(r))return r;try{return t(r),e(r)}catch{}}return r}return e=>{let t=In(e,r);return t?`?${t}`:``}}function Wn(e){let t=new Map,n,r;return{get(e){let n=t.get(e);if(n)return n.visited=!0,n.value},set(i,a){let o=t.get(i);if(o){o.value=a;return}if(t.size>=e){let e=n?.next().value;for(;!e||e.visited;)e?e.visited=!1:n=t.values(),e=n.next().value;e===r&&(n=void 0),t.delete(e.key)}let s={key:i,value:a,visited:!1};r=s,t.set(i,s)},clear(){t.clear(),n=void 0,r=void 0}}}var Gn=4,Kn=5;function qn(e){let t=e.names;if(t)return t;let n=[];for(let t of e)typeof t!=`string`&&n.push(t[1]);return e.names=n}function Jn(e,t,n){let r=e.substring(t,n);if(r.charCodeAt(0)===36)return r.length===1?[2,`_splat`,``,void 0]:[1,r.substring(1),``,``];let i=r.indexOf(`{`);if(i>=0){let a=r.indexOf(`}`,i),o=r.charCodeAt(i+1)===45,s=i+(o?3:2);if(a>=0&&r.charCodeAt(s-1)===36&&(!o||s!e.parse&&e.caseSensitive===_&&e.prefix===h&&e.suffix===g);if(y)c=y;else{let e=Zn(r,t,_,h,g);c=e,v.push(e),v.length===2&&i?.push(v)}}r=c}p&&m=0;e--){let n=i.wildcard[e],{prefix:r,suffix:a}=n;if(!r||!_&&(n.caseSensitive?v:y??=v.toLowerCase()).startsWith(r)){if(a){if(_)continue;let e=t.slice(u).join(`/`),i=e.slice(-a.length);if((n.caseSensitive?i:i.toLowerCase())!==a||e.length-a.length=0;t--){let n=i.optional[t];s.push({node:n,index:u,skipped:e,statics:f,dynamics:p,optionals:m,extract:h,rawParams:g})}if(!_)for(let e=i.optional.length-1;e>=0;e--){let t=i.optional[e],{prefix:n,suffix:r}=t;if(n||r){let e=t.caseSensitive?v:y??=v.toLowerCase();if(n&&!e.startsWith(n)||r&&e.indexOf(r,e.length-r.length)=0;e--){let t=i.dynamic[e],{prefix:n,suffix:r}=t;if(n||r){let e=t.caseSensitive?v:y??=v.toLowerCase();if(n&&!e.startsWith(n)||r&&e.indexOf(r,e.length-r.length)=0;e--){let t=i.pathless[e];s.push({node:t,index:u,skipped:d,statics:f,dynamics:p,optionals:m,extract:h,rawParams:g})}}if(l)return l;if(r&&c){let n=c.index;for(let e=0;ee.statics||t.statics===e.statics&&(t.dynamics>e.dynamics||t.dynamics===e.dynamics&&(t.optionals>e.optionals||t.optionals===e.optionals&&((t.node.kind===Gn)>(e.node.kind===Gn)||t.node.kind===Gn==(e.node.kind===Gn)&&t.node.depth>e.node.depth)))}function fr(e,t,n){let r=Me(e),i=`/${r}`,a=t?i:i.toLowerCase(),o=`${a}/`,s={input:({url:e})=>{let n=t?e.pathname:e.pathname.toLowerCase();return n===a?e.pathname=`/`:n.startsWith(o)&&(e.pathname=e.pathname.slice(i.length)),e},output:({url:e})=>(e.pathname=Qe(`/${r}${e.pathname}`),e)};return n?{input:({url:e})=>pr(n,s.input({url:e})),output:({url:e})=>s.output({url:mr(n,e)})}:s}function pr(e,t){let n=e?.input?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function mr(e,t){let n=e?.output?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function hr(e,t){let{createMutableStore:n,createReadonlyStore:r,batch:i}=t,a=new Map,o=n(`idle`),s=n(e),c=n(void 0),l=n([]),u=r(()=>l.get().map(e=>a.get(e).get())),d=r(()=>({status:o.get(),isLoading:o.get()===`pending`,matches:u.get(),location:s.get(),resolvedLocation:c.get()}));function f(e){let t=a.get(e);return t||(t=n(void 0),a.set(e,t)),t}let p={status:o,location:s,resolvedLocation:c,ids:l,matches:u,byRoute:a,__store:d,getMatchStore:f,setMatches:m};function m(e){let t=l.get(),n=e.map(e=>e.routeId);i(()=>{wt(t,n)||l.set(n);for(let e of t)n.includes(e)||a.get(e).set(()=>void 0);for(let t of e){let e=f(t.routeId);e.get()!==t&&e.set(t)}})}return p}var gr=`__TSR_index`,_r=`popstate`,vr=`beforeunload`,yr=/^[\x00-\x20]*(?:[\\/][\t\n\r]*){2,}/;function br(e){let t=yr.exec(e);return t?`/`+e.slice(t[0].length):e}function xr(e){return/[\x00-\x1f\x7f]/.test(e)&&(e=e.replace(/[\x00-\x1f\x7f]/g,e=>` -\r`.includes(e)?``:encodeURIComponent(e))),br(e)}function Sr(e){let t=e.getLocation(),n=new Set,r=r=>{t=e.getLocation(),n.forEach(e=>e({location:t,action:r}))},i=n=>{e.notifyOnIndexChange??!0?r(n):t=e.getLocation()},a=async({task:n,navigateOpts:r,...i})=>{if(r?.ignoreBlocker??!1){n();return}let a=e.getBlockers?.()??[],o=i.type===`PUSH`||i.type===`REPLACE`;if(typeof document<`u`&&a.length&&o)for(let n of a){let r=Tr(i.path,i.state);if(await n.blockerFn({currentLocation:t,nextLocation:r,action:i.type})){e.onBlocked?.();return}}n()};return{get location(){return t},get length(){return e.getLength()},subscribers:n,subscribe:e=>(n.add(e),()=>{n.delete(e)}),push:(n,i,o)=>{let s=t.state[gr];i=Cr(s+1,i),a({task:()=>{e.pushState(n,i),r({type:`PUSH`})},navigateOpts:o,type:`PUSH`,path:n,state:i})},replace:(n,i,o)=>{let s=t.state[gr];i=Cr(s,i),a({task:()=>{e.replaceState(n,i),r({type:`REPLACE`})},navigateOpts:o,type:`REPLACE`,path:n,state:i})},go:(t,n)=>{a({task:()=>{e.go(t,n?.ignoreBlocker??!1),i({type:`GO`,index:t})},navigateOpts:n,type:`GO`})},back:t=>{a({task:()=>{e.back(t?.ignoreBlocker??!1),i({type:`BACK`})},navigateOpts:t,type:`BACK`})},forward:t=>{a({task:()=>{e.forward(t?.ignoreBlocker??!1),i({type:`FORWARD`})},navigateOpts:t,type:`FORWARD`})},canGoBack:()=>t.state[gr]!==0,createHref:t=>e.createHref(t),block:t=>{if(!e.setBlockers)return()=>{};let n=e.getBlockers?.()??[];return e.setBlockers([...n,t]),()=>{let n=e.getBlockers?.()??[];e.setBlockers?.(n.filter(e=>e!==t))}},flush:()=>e.flush?.(),destroy:()=>e.destroy?.(),notify:r,_getBlockers:()=>e.getBlockers?.()??[]}}function Cr(e,t){let n=Er();return{...t,key:n,__TSR_key:n,[gr]:e}}function wr(e){let t=e?.window??(typeof document<`u`?window:void 0),n=t.history.pushState,r=t.history.replaceState,i=[],a=()=>i,o=e=>i=e,s=t=>xr(e?.createHref?e.createHref(t):t),c=e?.parseLocation??(()=>Tr(`${t.location.pathname}${t.location.search}${t.location.hash}`,t.history.state));if(!t.history.state?.__TSR_key&&!t.history.state?.key){let e=Er();t.history.replaceState({[gr]:0,key:e,__TSR_key:e},``)}let l=c(),u,d=!1,f=!1,p=!1,m=!1,h=()=>l,g,_=()=>{g&&(x._ignoreSubscribers=!0,(g[2]?t.history.pushState:t.history.replaceState)(g[1],``,g[0]),x._ignoreSubscribers=!1,g=void 0,u=void 0)},v=(t,n,r)=>{let i=e?.createHref?s(n):void 0,a=!!g;a||(u=l),l=Tr(n,r),g=[i??l.href,r,g?.[2]||t],a||queueMicrotask(()=>_())},y=e=>{l=c(),x.notify({type:e})},b=async()=>{if(m=!1,f){f=!1;return}let e=c(),n=e.state[gr]-l.state[gr],r=n===1,i=n===-1,o=!r&&!i||d;d=!1;let s=o?`GO`:i?`BACK`:`FORWARD`,u=o?{type:`GO`,index:n}:{type:i?`BACK`:`FORWARD`};if(p)p=!1;else{let r=a();if(typeof document<`u`&&r.length){for(let i of r)if(await i.blockerFn({currentLocation:l,nextLocation:e,action:s})){f=!0,t.history.go(-n),x.notify(u);return}}}l=c(),x.notify(u)},ee=e=>{if(m){m=!1;return}let t=!1,n=a();if(typeof document<`u`&&n.length)for(let e of n){let n=e.enableBeforeUnload??!0;if(n===!0){t=!0;break}if(typeof n==`function`&&n()===!0){t=!0;break}}if(t)return e.preventDefault(),e.returnValue=``},x=Sr({getLocation:h,getLength:()=>t.history.length,pushState:(e,t)=>v(!0,e,t),replaceState:(e,t)=>v(!1,e,t),back:e=>(e&&(p=!0,m=!0),t.history.back()),forward:e=>{e&&(p=!0,m=!0),t.history.forward()},go:(e,n)=>{d=!0,n&&(p=!0,m=!0),t.history.go(e)},createHref:e=>s(e),flush:_,destroy:()=>{t.history.pushState=n,t.history.replaceState=r,t.removeEventListener(vr,ee,{capture:!0}),t.removeEventListener(_r,b)},onBlocked:()=>{u&&l!==u&&(l=u)},getBlockers:a,setBlockers:o,notifyOnIndexChange:!1});return x._ignoreNextBeforeUnload=e=>{m=!1;try{e=new URL(e,t.document.baseURI).href,m=/^https?:/.test(e)&&(!e.includes(`#`)||e.split(`#`)[0]!==t.location.href.split(`#`)[0])}catch{}},t.addEventListener(vr,ee,{capture:!0}),t.addEventListener(_r,b),t.history.pushState=function(...e){let r=n.apply(t.history,e);return x._ignoreSubscribers||y(`PUSH`),r},t.history.replaceState=function(...e){let n=r.apply(t.history,e);return x._ignoreSubscribers||y(`REPLACE`),n},x}function Tr(e,t){let n=xr(e),r=n.indexOf(`#`),i=n.indexOf(`?`);if(!t){let e=Er();t={[gr]:0,key:e,__TSR_key:e}}return{href:n,pathname:n.substring(0,r>0?i>0?Math.min(r,i):r:i>0?i:n.length),hash:r>-1?n.substring(r):``,search:i>-1?n.slice(i,r===-1?void 0:r):``,state:t}}function Er(){return(Math.random()+1).toString(36).substring(7)}function Dr(e,t){return e.protocol!==`http:`&&e.protocol!==`https:`||e.origin!==t||!!e.username||!!e.password}function Or(e){return e.pathname+e.search+e.hash}function kr(e){return e.options.loader||e.options.beforeLoad||e.lazyFn||e.options.component?.preload||e.options.pendingComponent?.preload}function Ar(e,t){return{fromLocation:t,toLocation:e,pathChanged:t?.pathname!==e.pathname,hrefChanged:t?.href!==e.href,hashChanged:t?.hash!==e.hash}}function jr({key:e,__TSR_key:t,__TSR_index:n,__hashScrollIntoViewOptions:r,...i}){return i}function Mr(e){return e.findIndex(e=>e.status===`error`||e.status===`notFound`||e._notFound)+1}function Nr(e,t,n,r,i,a){r&&(t=t.slice(0,r)),i&&(n=n.slice(0,i));for(let r of t){if(a&&e._tx!==a)return;n.some(e=>e.routeId===r.routeId)||e.routesById[r.routeId].options.onLeave?.(r)}for(let r of n){if(a&&e._tx!==a)return;e.routesById[r.routeId].options[t.some(e=>e.routeId===r.routeId)?`onStay`:`onEnter`]?.(r)}}var Pr=class{constructor(e,t){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this._scroll={n:!0},this.subscribers=new Set,this._cache=new Map,this._committed=[],this.startTransition=async e=>(e(),!1),this.update=e=>{let t=this.options;this.options={...t,...e},this.isServer=this.options.isServer??!1??typeof document>`u`,this.staticLocations=new WeakMap,this.protocolAllowlist=new Set(this.options.protocolAllowlist),(!this.history||this.options.history&&this.options.history!==this.history)&&(this.history=this.options.history?this.options.history:wr()),this.origin=this.options.origin,this.origin||=window?.origin&&window.origin!==`null`?window.origin:`http://localhost`;let n=this.options.basepath??`/`,r=this.options.rewrite,i=this.basepath!==n||t?.rewrite!==r||t?.caseSensitive!==this.options.caseSensitive;if(i&&(this.basepath=n,this.rewrite=n!==`/`&&Me(n)?fr(n,this.options.caseSensitive,r):r),this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree){this.routeTree=this.options.routeTree;let e;e=this.buildRouteTree(),this.setRoutes(e)}if(this.stores)i&&this.stores.location.set(this.latestLocation);else if(this.latestLocation){let e=this.getStoreConfig(this);this.batch=e.batch,this.stores=hr(this.latestLocation,e),Fn(this)}},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{let e=nr(this.routeTree,this.options.caseSensitive);return this.options.routeMasks&&Qn(this.options.routeMasks,e.processedTree),{...e,resolvePathCache:Wn(1e3)}},this.subscribe=(e,t)=>{let n={eventType:e,fn:t};return this.subscribers.add(n),()=>{this.subscribers.delete(n)}},this.emit=e=>{for(let t of this.subscribers)if(t.eventType===e.type)try{t.fn(e)}catch(e){console.error(e)}},this.parseLocation=(e,t)=>{let n=({pathname:e,search:n,hash:r,href:i},a)=>{if(!this.rewrite&&!/[ \x00-\x1f\x7f\u0080-\uffff]/.test(e)){let i=this.options.parseSearch(n),o=this.options.stringifySearch(i);return{href:e+o+r,publicHref:e+o+r,pathname:nt(e),external:!1,searchStr:o,search:gt(t?.search,i),hash:nt(r.slice(1)),state:ct(t?.state,a)}}let o=pr(this.rewrite,new URL(i,this.origin)),s=this.options.parseSearch(o.search),c=this.options.stringifySearch(s);return o.search=c,{href:o.href.replace(o.origin,``),publicHref:i,pathname:nt(br(o.pathname)),external:!!this.rewrite&&Dr(o,this.origin),searchStr:c,search:gt(t?.search,s),hash:nt(o.hash.slice(1)),state:ct(t?.state,a)}},r=n(e,e.state),{__tempLocation:i,__tempKey:a}=r.state;if(i&&(!a||a===this.tempLocationKey)){let e=n(i,{...i.state,__tempLocation:void 0,key:r.state.key,__TSR_key:r.state.__TSR_key});return e.maskedLocation=r,e}return r},this.matchRoutes=(e,t,n)=>typeof e==`string`?this.matchRoutesInternal({pathname:e,search:t},n):this.matchRoutesInternal(e,t),this.getMatchedRoutes=e=>{let t=Object.create(null),n=tr(at(e),this.processedTree,!0);return n&&Object.assign(t,n.rawParams),[n?.branch||[this.routesById.__root__],t,n?.route]},this.buildLocation=e=>{{let t=this.staticLocations.get(e);if(t)return t}let t=!1,n=(n={})=>{if(n.href){let e=Tr(n.href,{});n={...n,to:pr(this.rewrite,new URL(e.pathname,this.origin)).pathname,search:this.options.parseSearch(e.search),hash:e.hash.slice(1)}}let r=n._fromLocation||this._pendingLocation||this.latestLocation,i,a=()=>(t=!0,r),o=()=>(t=!0,i??=this.matchRoutesLightweight(r)),s=n.to?`${n.to}`:`.`,c=Ge(s[0]===`/`?``:n.unsafeRelative===`path`?a().pathname:n.from??o()[1],s,this.options.trailingSlash,this.resolvePathCache),l=this.routesByPath[at(c)],u=c.includes(`$`),d;if(l)d=l._branch??=ar(l);else if(u)d=[];else{let[e,t,n]=this.getMatchedRoutes(c);d=e,this.options.notFoundRoute&&(!n||n.path!==`/`&&t[`**`])&&(d=[...d,this.options.notFoundRoute])}let f=u?l?._interpolation??Yn(!1,{fullPath:c},0):void 0,p;for(let e of d){let t=e.options.params?.stringify??e.options.stringifyParams;if(t){let e=o()[3];if(p??=zr(n.params,e),!At(p))break;p===e&&(p=Object.assign(ft(),p));try{Object.assign(p,t(p))}catch{}}}p??=zr(n.params,Br(n.params,f)?o()[3]:Vr);let m=e.leaveParams?c:br(nt(f?$e(c,f,p,this.pathParamsDecoder):c)),h=Hr(d,e._includeValidateSearch),g=()=>{let t=o()[2];if(e._includeValidateSearch&&this.options.search?.strict){let e={};d.forEach(n=>{if(n.options.validateSearch)try{Object.assign(e,Rr(n.options.validateSearch,{...e,...t}))}catch{}}),t=e}return t},_=h.length?Ur(h,g(),n):n.search===!0?g():typeof n.search==`function`?n.search(g()):n.search||Vr,v=this.options.stringifySearch(_),y=n.hash===!0?a().hash:typeof n.hash==`function`?n.hash(a().hash):n.hash||void 0,b=y?`#${y}`:``,ee=n.state?n.state===!0?a().state:typeof n.state==`function`?n.state(a().state):n.state:Vr,x=`${m}${v}${b}`,S,C,te=!1;if(this.rewrite){let e=new URL(x,this.origin),t=e.origin,n=mr(this.rewrite,e);S=Or(e),Dr(n,t)?(C=n.href,te=!0):C=br(Or(n))}else S=Et(x),C=S;return{publicHref:C,href:S,pathname:m,search:_,searchStr:v,state:ee,hash:y??``,external:te,unmaskOnReload:n.unmaskOnReload}},r=n(e);if(e.mask)r.maskedLocation=n({from:e.from,...e.mask});else if(this.options.routeMasks){let t=$n(r.pathname,this.processedTree);if(t){let i=Object.assign(ft(),t.rawParams),{from:a,params:o,...s}=t.route,c=zr(o,i);r.maskedLocation=n({from:e.from,...s,params:c})}}return!t&&e._fromLocation&&!r.maskedLocation&&this.staticLocations.set(e,r),r},this.commitLocation=async({viewTransition:e,ignoreBlocker:t,...n})=>{let r=n.maskedLocation??n;if(r.external)return Fr(this,r.publicHref,{replace:n.replace,ignoreBlocker:t});let i,a=at(this.latestLocation.href)===at(n.href)&&bt(jr(n.state),jr(this.latestLocation.state)),o=this._commitPromise,s,c=new Promise(e=>{s=e});if(c.resolve=()=>{s(),o?.resolve()},this._commitPromise=c,a)this.load();else{let{maskedLocation:r,hashScrollIntoView:a,...o}=n;r&&(o={...r,state:{...r.state,__tempKey:void 0,__tempLocation:{...o,search:o.searchStr,state:{...o.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(o.unmaskOnReload??this.options.unmaskOnReload??!1)&&(o.state.__tempKey=this.tempLocationKey)),o.state={...o.state,__hashScrollIntoViewOptions:a??this.options.defaultHashScrollIntoView??!0},this.shouldViewTransition=e,i=n.replace?`REPLACE`:`PUSH`,this.history[i===`REPLACE`?`replace`:`push`](o.publicHref,o.state,{ignoreBlocker:t}),this.history.subscribers.size||this.load({action:{type:i}})}return this._scroll.n=n.resetScroll??!0,this._commitPromise},this.buildAndCommitLocation=({replace:e,resetScroll:t,hashScrollIntoView:n,viewTransition:r,ignoreBlocker:i,...a}={})=>{let o=this.buildLocation({...a,_includeValidateSearch:!0});this._pendingLocation=o;let s=this.commitLocation({...o,viewTransition:r,replace:e,resetScroll:t,hashScrollIntoView:n,ignoreBlocker:i});return queueMicrotask(()=>{this._pendingLocation===o&&(this._pendingLocation=void 0)}),s},this.navigate=async({to:e,reloadDocument:t,href:n,publicHref:r,...i})=>{let a=n?ht(n):void 0;if(a||t){if(e!==void 0||!n){let t=this.buildLocation({to:e,...i}),a=t.maskedLocation??t;n??=a.publicHref,r??=a.publicHref}let t=!a&&r?r:n;return Fr(this,t,i)}return this.buildAndCommitLocation({...i,href:n,to:e,_isNavigate:!0})},this.load=async e=>{this.updateLatestLocation(),e?.action&&(this._scroll.h=e.action.type===`PUSH`||e.action.type===`REPLACE`),await Fi(this,e)},this.startViewTransition=e=>{let t=this.shouldViewTransition??this.options.defaultViewTransition;if(this.shouldViewTransition=void 0,t&&typeof document.startViewTransition==`function`){let n;if(typeof t==`object`&&window.CSS?.supports?.(`selector(:active-view-transition-type(a))`)){let r=this.latestLocation,i=this.stores.resolvedLocation.get(),a=typeof t.types==`function`?t.types(Ar(r,i)):t.types;if(a===!1)return e();n={update:e,types:a}}else n=e;return document.startViewTransition(n).updateCallbackDone}return e()},this.invalidate=e=>{let t=this._committed,n=e?.filter,r=this._preloads,i=new Set,a=e=>{(!n||n(e))&&i.add(e.id)};t.forEach(a),this._cache.forEach(a),r?.forEach(e=>e.forEach(a)),this._tx?.[3].forEach(a);let o=[];for(let[e,t]of r??[])t.some(e=>i.has(e.id))&&(r.delete(e),o.push(e));let s=t=>{if(i.has(t.id)){let n=this.routesById[t.routeId],r={...t,invalid:!0,...(e?.forcePending||t.status===`error`||t.status===`notFound`)&&kr(n)?{status:`pending`,error:void 0}:void 0};return t._flight=void 0,r}return t};this._committed=t.map(s);for(let[t,n]of this._cache)i.has(t)&&(n.invalid=!0,e?.forcePending&&(n.status=`pending`));for(let e of i){let t=this._flights?.get(e);this._flights?.delete(e),t&&!t[2]&&o.push(t[1])}for(let e of o)e.abort();return this.shouldViewTransition=!1,this.load({sync:e?.sync})},this.resolveRedirect=e=>{let t=e.options,n=e.headers.get(`Location`)||t.href;if(!n){let e=this.buildLocation(t);n=(e.maskedLocation??e).publicHref||`/`}let r;if(ut.test(n)||(r=ht(n))&&!this.protocolAllowlist.has(r))throw Error(`Redirect blocked: unsafe protocol`);if(r===`http:`||r===`https:`){let e=new URL(n);e.pathname.startsWith(`//`)?n=e.href:Dr(e,this.origin)||(n=Or(e),r=void 0)}return r&&(t.reloadDocument=!0),t.href=n,e.headers.set(`Location`,n),e},this.clearCache=e=>{let t=this._cache,n=this._preloads,r=e?.filter,i=[],a=[];for(let[e,n]of t)(!r||r(n))&&(a.push(e),i.push(n));let o=[];for(let[e,t]of n??[])(!r||t.some(r))&&(o.push(e),i.push(...t));for(let e of a)t.delete(e);for(let e of o)n.delete(e);for(let e of i){let t=e._flight;e._flight=void 0,t&&!--t[2]&&(this._flights?.get(e.id)===t&&this._flights.delete(e.id),o.push(t[1]))}for(let e of o)e.abort()},this.loadRouteChunk=Jr,this.preloadRoute=e=>Ii(this,e),this.matchRoute=(e,t)=>{let n={...e,to:e.to?Ge(e.from||``,e.to,this.options.trailingSlash,this.resolvePathCache):void 0,params:e.params||{},leaveParams:!0},r=this.buildLocation(n),i=this.stores.status.get()===`pending`;if(t?.pending&&!i)return!1;let a=t?.pending??!i?this.latestLocation:this.stores.resolvedLocation.get()||this.stores.location.get(),o=er(r.pathname,t?.caseSensitive??!1,t?.fuzzy??!1,a.pathname,this.processedTree);return!o||e.params&&!bt(o.rawParams,e.params,!0)?!1:t?.includeSearch??!0?bt(a.search,r.search,!0)?o.rawParams:!1:o.rawParams},this.getStoreConfig=t,e.pathParamsAllowedCharacters?.length&&(this.pathParamsDecoder=Ze(e.pathParamsAllowedCharacters)),this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...e,caseSensitive:e.caseSensitive??!1,notFoundMode:e.notFoundMode??`fuzzy`,stringifySearch:e.stringifySearch??Vn,parseSearch:e.parseSearch??Bn,protocolAllowlist:e.protocolAllowlist??vt}),self.__TSR_ROUTER__=this}isShell(){return!!this.options.isShell}get state(){return this.stores.__store.get()}setRoutes(e){Object.assign(this,e),this.lightweightCache=new WeakMap,this.staticLocations=new WeakMap;let t=this.options.notFoundRoute;t&&(t.init(99999999999),this.routesById[t.id]!==t&&(t._interpolation=Yn(!1,t,0)),this.routesById[t.id]=t)}matchRoutesInternal(e,t){let[n,r,i]=this.getMatchedRoutes(e.pathname),a=n,o=!1;(i?i.path!==`/`&&r[`**`]:at(e.pathname))&&(this.options.notFoundRoute?a=[...a,this.options.notFoundRoute]:o=!0);let s=o?Wr(this.options.notFoundMode,a):void 0,c=Array(a.length),l=this._committed,u=(e,t)=>{let n=l[t];return n?.routeId===e.id?n:e===this.options.notFoundRoute?l.find(t=>t.routeId===e.id):void 0},d;for(let n=0;ntypeof t!=`string`&&!it.call(e,t[1]))}var Vr=Object.freeze({});function Hr(e,t){let n=[];for(let r=0;r{let n=t(i.preSearchFilters?i.preSearchFilters.reduce((e,t)=>t(e),e):e);return i.postSearchFilters?i.postSearchFilters.reduce((e,t)=>t(e),n):n});let a=i.validateSearch;t&&a&&n.push(({search:e,next:t,meta:n})=>{let r=t(e);try{let e=Rr(a,r);if(n&&e)for(let t in e)t in r||(n.defaulted||=new Map).set(t,e[t]);return{...r,...e}}catch{}return r})}return n}function Ur(e,t,n){let r=(t,i,a)=>{if(t>=e.length){if(!n.search)return{};if(n.search===!0)return i;let e=rt(n.search,i);return a&&(a.explicit=e),e}return e[t]({search:i,next:(e,n)=>{if(n){let n=a||{};return{search:r(t+1,e,n),meta:n}}return r(t+1,e,a)},meta:a})};return r(0,t)}function Wr(e,t){if(e!==`root`){let e;for(let n=t.length-1;n>=0;n--){let r=t[n];if(r.options.notFoundComponent)return r.id;e||=r.children&&r.id}if(e)return e}return Be}function Gr(e,t){let n=e.options.params?.parse??e.options.parseParams;n&&Object.assign(t,n(t))}function Kr(e,t){return e.options[t]?.preload?.()}function qr(e,t){let n=Kr(e,`component`),r=Kr(e,`pendingComponent`);return t&&(r?r=r.then(t):t()),n&&r?Promise.all([n,r]).then(()=>{}):n??r}function Jr(e,t,n){let r=()=>t===!1?void 0:t?Kr(e,t):qr(e,n),i=e._lazy;if(i)return i===!0?r():i.then(r);if(!e.lazyFn)return r();let a=e.lazyFn().then(t=>{{let{id:n,...r}=t.options;Object.assign(e.options,r),e._lazy=!0}},t=>{throw e._lazy=void 0,t});return e._lazy=a,a.then(r)}function Yr(e){let t=e.findIndex(e=>e.status!==`success`||e._notFound)+1;return t&&t{let i=()=>r(t);t.addEventListener(`abort`,i,{once:!0}),Promise.resolve(e).then(n,r).then(()=>t.removeEventListener(`abort`,i))})}function ri(e,t){return e.routesById[t.routeId]}function ii(e,t,n){return St(e)?[$r,e]:Sn(e)?(e.routeId||=n,[Qr,e]):t?(typeof e?.then==`function`&&(e=Error(`A Promise was thrown`,{cause:e})),[Zr,e]):[Xr,e]}function ai(e,t){let n=ii(t,!0,e.id);if(n[0]!==Zr)return n;try{e.options.onError?.(n[1])}catch(t){n=ii(t,!0,e.id)}return n}function oi(e,t,n,r,i){return i[0].signal.aborted?ei:Si(e,t,n,ai(n,r),i)}async function si(e,t,n,r,i,a){let[o,s]=t,c=n[0].signal,l=!!n[3];for(let i=n[6]??0;ie.navigate({...t,_fromLocation:o}),buildLocation:e.buildLocation,cause:l?`preload`:r.cause,abortController:n[0],preload:l,matches:s,routeId:u.id};try{let e=r._ctx||=u.options.context?u.options.context({...f,deps:r.loaderDeps,context:d})||{}:void 0;r.context={...d,...e}}catch(a){return li(e,r),[i,oi(e,t,u,a,n)]}if(c.aborted)return[i,ei];let p=r.paramsError??r.searchError;if(p!==void 0)return li(e,r),[i,oi(e,t,u,p,n)];let m=u.options.beforeLoad;if(!m)continue;let h=r.status;i>=a&&(r.status=`pending`,n[7]?.());try{fi(e,r,`beforeLoad`,n[0]);let a=m({...f,search:r.search,context:r.context,...e.options.additionalContext}),o=await(typeof a?.then==`function`?ni(a,c):a);if(c.aborted)return[i,ei];let s=Si(e,t,u,ii(o,!1,u.id),n);if(s[0]!==Xr)return li(e,r),[i,s];r.context={...r.context,...o}}catch(a){return li(e,r),[i,oi(e,t,u,a,n)]}finally{r.status=h,fi(e,r,!1,n[0])}}i()}function ci(e,t,n){if(!(!n||--n[2])){if(e._flights?.get(t.id)===n){let n=e._tx;if(n&&!n[0].signal.aborted&&!n[3].includes(t)&&n[3].some(e=>e.id===t.id)&&n[3].some(e=>e.isFetching===`beforeLoad`))return;e._flights.delete(t.id)}return n[1]}}function li(e,t){let n=t._flight;t._flight=void 0,ci(e,t,n)?.abort()}function ui(e,t,n,r){let i=[];for(let a of t)if(!n?.includes(a)){let t=a._flight;if(a._flight=void 0,r&&t?.[2]===1&&e._flights?.get(a.id)===t&&n?.some(e=>e.id===a.id))t[2]=0;else{let n=ci(e,a,t);n&&i.push(n)}}for(let e of i)e.abort()}function di(e){for(let t of e){let e=t._flight;e&&e[2]++}}function fi(e,t,n,r){if(t.isFetching=n,r&&e._tx?.[0]!==r)return;let i=e.stores.byRoute.get(t.routeId),a=i?.get();a?.id===t.id&&i.set({...a,isFetching:n})}function pi(e,t,n,r,i,a,o){let s=t[0];return{params:n.params,location:s,navigate:t=>e.navigate({...t,_fromLocation:s}),cause:o?`preload`:n.cause,abortController:i,preload:o,deps:n.loaderDeps,parentMatchPromise:a,context:n.context,route:r,...e.options.additionalContext}}async function mi(e,t,n,r,i,a,o){let s=o[0],c=s.signal;if(c.aborted)return ei;if(!i)return[Xr,void 0];let l=n._flight;fi(e,n,`loader`,s);try{if(!l){let s=new AbortController;l=[Promise.resolve().then(()=>i(pi(e,t,n,r,s,a,!!o[3]))).then(e=>ii(e,!1,r.id),e=>ii(e,!0,r.id)).then(t=>(t[0]!==Xr&&e._flights?.get(n.id)===l&&(e._flights.delete(n.id),l[2]||s.abort()),t[0]===Zr&&l[2]?ai(r,t[1]):t)),s,1],(e._flights??=new Map).set(n.id,l)}return n._flight=l,n.abortController=l[1],Si(e,t,r,await ni(l[0],c),o)}catch(t){if(t!==c||!c.aborted)throw t;return li(e,n),ei}finally{fi(e,n,!1,s)}}function hi(e,t,n){t[0]!==$r&&(e.status=`success`,e.error=void 0,t[0]===Xr?(e.loaderData=t[1],e.invalid=!1,e.updatedAt=Date.now(),e.preload=n):e.invalid=!0)}function gi(e,t,n){let r=e._cache.get(t.id);if(r!==n||e._committed.some(e=>e.id===t.id&&e._flight===t._flight))return;let i={...t,_notFound:void 0,context:{}};i._flight&&i._flight[2]++,e._cache.set(t.id,i),r&&li(e,r)}function _i(e,t){return t[0]===Zr||t[0]===Qr?{...e,status:t[0]===Zr?`error`:`notFound`,error:t[1],_flight:void 0}:e}function vi(e,t,n,r,i,a,o){let s=t[1][n],c=ri(e,s),l=!!a[3],u=e._cache.get(s.id),d,f=!1,p;try{if(s.status===`success`&&(d=c.options.shouldReload,typeof d==`function`&&(d=d(pi(e,t,s,c,a[0],i,l))),a[0].signal.aborted&&(p=ei)),!p){if(s.status!==`success`)f=!0;else{let t=l||s.preload?c.options.preloadStaleTime??e.options.defaultPreloadStaleTime??3e4:c.options.staleTime??e.options.defaultStaleTime??0;f=!!(s.invalid||d||d===void 0&&Date.now()-s.updatedAt>=t&&(a[5]||s.cause===`enter`||a[2].some(e=>e.routeId===s.routeId&&e.id!==s.id)))}}}catch(n){s.invalid=!0,li(e,s),p=oi(e,t,c,n,a)}let m=c.options.loader,h=typeof m==`function`,g=h?m:m?.handler,_=!l||c.options.preload!==!1,v=_&&m?e._flights?.get(s.id):void 0;v===s._flight||p?v=void 0:v&&!f&&!l&&d===void 0?f=!0:f||(v=void 0);let y=!(!m||!f||s.status!==`success`||l||a[4]||((h?void 0:m.staleReloadMode)??e.options.defaultStaleReloadMode)===`blocking`),b=f&&_,ee=b&&!y&&(s.status!==`success`||!!m),x=n>=o?a[7]:void 0,S=c.lazyFn&&c._lazy!==!0?x:void 0;if(b&&!m&&(s.invalid=!1,s.updatedAt=Date.now()),v&&v[2]++,ee){let t=s._flight;s._flight=v,ci(e,s,t)?.abort(),n>=o&&(s.status=`pending`),x?.()}b||(s.isFetching=!1);let C=!p&&ee?mi(e,t,s,c,g,i,a).then(t=>(hi(s,t,l),t[0]===Xr&&(m&&!a[0].signal.aborted&&gi(e,s,u),n>=o&&(s.status=`pending`)),t)):Promise.resolve(p??[Xr,s.loaderData]),te=(async()=>{try{let e=Jr(c,void 0,S);e&&await ni(e,a[0].signal)}catch(r){if(!t[1].some((e,t)=>t<=n&&(e.status===`error`||e.status===`notFound`||e._notFound)))return[n,oi(e,t,c,r,a)]}let r=await C;ee&&r[0]===Xr&&s.status===`pending`&&!a[0].signal.aborted&&(s.status=`success`,x?.())})();if(r.push([n,C,te]),!y)return C.then(e=>_i(s,e));let ne={...s,status:`pending`,preload:!1,_flight:v};s.invalid=!1,s.isFetching=`loader`;let re=mi(e,t,ne,c,g,i,a).then(e=>(s.isFetching=!1,hi(ne,e,!1),e));return(t[2]??=[]).push([n,re,te,ne]),re.then(e=>_i(ne,e))}async function yi(e,t,n,r,i=0){let a=n?.[1][1],o=a?.routeId?t.findIndex(e=>e.routeId===a.routeId):n?.[0]??t.length-1;o<0&&(o=0);for(let n=o;n>=0;n--){let i=ri(e,t[n]);try{let e=Jr(i,!1);e&&await ni(e,r)}catch(e){if(e===r&&r.aborted)throw e}if(i.options.notFoundComponent)return n}return a?.routeId?o:i}function bi(e,t){t[2]&&=(ui(e,t[2].map(e=>e[3])),void 0)}async function xi(e,t,n,r){let i;try{await Promise.all(e.map(e=>e[1].then(async t=>{let a=e[0];if(!(r&&a>=await r)){if(t[0]>=$r)throw[a,t];!i&&t[0]!==Xr&&(i=[a,t],await Promise.all((n??[]).map(e=>{if(!(e[0]<=a))return e[1].then(t=>{if(t[0]===$r)throw[e[0],t]})})))}})))}catch(e){return e}return t??i}function Si(e,t,n,r,i,a){for(;r[0]===$r;){let o=r[1],s=o.options;try{if((s.href||o.headers.has(`Location`))&&(e.resolveRedirect(o),s.reloadDocument)||(s.reloadDocument?i[3]:i[1]>=20))return r;let n=e.buildLocation({...s,_fromLocation:t[0],_includeValidateSearch:!0}),a=n.maskedLocation??n;if(a.external){let t=o.clone();return t.options={...s},t.headers.set(`Location`,a.publicHref),e.resolveRedirect(t),i[3]?[$r,t]:[$r,t,a]}return[$r,o,n]}catch(e){r=a?[Zr,e]:ai(n,e),a=!0}}return r}async function Ci(e,t,n,r,i,a){let o=t[1],s=await i,c=!1,l=o.findIndex(e=>e._notFound),u=t=>t[1][0]===Qr?yi(e,o,t,r.signal):t[0],d=l<0?o.length:l;if((s?.[1][0]??0)>=$r)d=0;else if(s){d=s[2]??=await u(s);for(let e of n){if(e[0]>=d)break;let t=await e[1];if(t[0]!==Xr&&t[0]<$r&&!(`loaderData`in o[e[0]])){s=[e[0],t],d=s[2]=await u(s);break}}}for(let e of n){if(e[0]>=d)break;let t=await e[2];if(t){s=t;break}}if((s?.[1][0]??0)>=$r){let n=s[1];if(n[0]!==$r||n[1].options.reloadDocument||n[2])return bi(e,t),n;c=!0,s=[0,[Zr,Error(`Too many redirects`)]]}let f=s?s[2]??await u(s):l;if(f>=0){let i=s?.[1],l=i?.[0],u=o[f],d=i?.[1],p=()=>{i&&(u._notFound=void 0,l===Zr?u.status=`error`:(d.routeId=u.routeId,u.routeId===e.routeTree.id?(u.status=`success`,u._notFound=!0):u.status=`notFound`),u.error=d,u.isFetching=!1)};p(),i||a?.();let m=ri(e,u);try{await ni(i?Promise.resolve().then(()=>Jr(m,l===Zr?`errorComponent`:`notFoundComponent`)):Promise.all([Jr(m),Jr(m,`notFoundComponent`)]),r.signal)}catch(n){if(n===r.signal&&r.signal.aborted)return bi(e,t),ei}i?c&&(r.abort(),await Promise.all([...n.map(e=>e[1]),...n.map(e=>e[2]),...(t[2]??[]).map(e=>e[1])]),bi(e,t),ui(e,o),p()):u.status=`success`}return t}async function wi(e,t,n,r=0,i=t[1].length){let a=t[1];for(let t=r;te._notFound);if(e.options.notFoundMode!==`root`&&s>=0){let t=await yi(e,n,void 0,a,s);n[s]._notFound=void 0,n[t]._notFound=!0,s=t}let c=s<0?n.length:s+1,l=0;for(;l{for(let t=d;t=$r&&(c=0);p()}if(!a.aborted&&!r[3]){let t=[];for(let[n,r]of e._flights??[])r[2]||(e._flights.delete(n),t.push(r[1]));for(let e of t)e.abort()}let h=Ci(e,i,u,r[0],xi(u,m,i[2]),r[7]);i[2]?.length&&(i[3]=xi(i[2],void 0,void 0,h.then(e=>ti(e)?0:Yr(n).length,()=>0))),o=await h}catch(t){if(bi(e,i),t===a&&a.aborted)return ei;throw t}return ti(o)?o:wi(e,o,a,r[6]===n.length?r[6]:0)}function Ei(e,t){if(e._tx!==t)return;let n=t[3],r=e.stores.matches.get(),i=e._pending;for(let a=0;a0){i[3]=setTimeout(()=>Ei(e,t),n);return}i[2]=0}let m=n.map(e=>({...e,_flight:void 0}));m[a].status=`pending`;let h=i[4]=e.startTransition(()=>e.stores.setMatches(m),m).then(t=>(t&&e._pending===i&&i[4]===h&&!i[2]&&(i[2]=Date.now()+f),t));return}}function Di(e,t){let n=e._pending;(e._tx===t||!e._tx?.[3].some(e=>e.id===n?.[1]))&&(clearTimeout(n?.[3]),e._pending=void 0)}async function Oi(e,t){let n=e._pending;if(!n)return;clearTimeout(n[3]);let r=n[2]-Date.now();if(!n[4]||r<=0||!Yr(t[3]).some(e=>e.id===n[1]))return;let i;try{await ni(new Promise(e=>{i=setTimeout(e,r)}),t[0].signal)}catch{}clearTimeout(i)}function ki(e,t){e._committed=t,e.stores.setMatches(t)}function Ai(e,t,n,r){let i=e._committed,a=e._lifecycleEnd,o=e._cache;for(let e of n)e.preload=!1,r&&(e._assetEnd=void 0);let s=Yr(n).length,c=new Map;{let t=Date.now(),r=new Set;for(let e=0;e=(n.preload?i.options.preloadGcTime??e.options.defaultPreloadGcTime??3e5:i.options.gcTime??e.options.defaultGcTime??3e5)||c.set(n.id,o.get(n.id)===n?n:{...n,_flight:void 0,isFetching:!1,context:{}})}}t[3]=[],e._cache=c;let l=e._lifecycleEnd=Mr(n);ki(e,n),ui(e,[...o.values(),...i].filter(e=>e._flight&&c.get(e.id)!==e),n),Nr(e,i,n,a,l,t)}async function ji(e,t){let n=e._tx;for(;n&&n!==t;)t=n,await n[5],n=e._tx}function Mi(e,t,n){let r=n[1].options,i=n[2];if(!i)return e.navigate({...r,replace:!0,ignoreBlocker:!0});if(r.reloadDocument)return e.navigate({href:(i.maskedLocation??i).publicHref,reloadDocument:!0,replace:!0,ignoreBlocker:!0});i._redirects=t[1]+1,e._pendingLocation=i;let a=e.commitLocation({...i,viewTransition:r.viewTransition,replace:!0,resetScroll:r.resetScroll,hashScrollIntoView:r.hashScrollIntoView,ignoreBlocker:!0});return queueMicrotask(()=>{e._pendingLocation===i&&(e._pendingLocation=void 0)}),a}async function Ni(e,t,n,r,i){let a=n.map(e=>({...e}));di(a);for(let t of r)li(e,a[t[0]]),a[t[0]]=t[3];let o=[t[2],a],s;try{s=await Ci(e,o,r,t[0],i)}catch(t){throw ui(e,a),t}if(ti(s)){ui(e,a),s[0]===$r&&e._tx===t&&e._committed===n&&await Mi(e,t,s);return}if(await wi(e,s,t[0].signal),e._tx!==t||e._committed!==n){ui(e,a);return}for(let t of a){let n=e._cache.get(t.id);n?._flight&&n._flight===t._flight&&(e._cache.delete(t.id),li(e,n))}ki(e,a),ui(e,n,a)}async function Pi(e,t,n,r,i,a){let o=await Ti(e,t[2],t[3],[t[0],t[1],e._committed,void 0,i,n,a,r]);if(ti(o)){let n=o[0]===$r&&e._tx===t;if((!n||o[1].options.reloadDocument)&&Di(e,t),ui(e,t[3]),t[3]=[],!n)return;if(e._tx!==t){Di(e,t);return}await Mi(e,t,o);return}let s=o[1];if(e._tx===t&&await Oi(e,t),e._tx!==t){Di(e,t),ui(e,s),bi(e,o);return}let c=t[2],l=Ar(c,e.stores.resolvedLocation.get()),u=o[2];await e.startViewTransition(async()=>{if(e._tx===t&&await Oi(e,t),e._tx!==t){Di(e,t),ui(e,s),bi(e,o);return}let n=await e.startTransition(()=>{Di(e,t),Ai(e,t,s,a),e._tx===t&&(e.emit({type:`onLoad`,...l}),e._tx===t&&e.emit({type:`onBeforeRouteMount`,...l}))},s);if(e._tx!==t){bi(e,o);return}u?.length&&Ni(e,t,s,u,o[3]).catch(console.error),e.batch(()=>{e.stores.resolvedLocation.set(c),e.stores.status.set(`idle`),e._tx===t&&e.emit({type:`onResolved`,...l}),n&&e._tx===t&&e.emit({type:`onRendered`,...l})}),e._tx===t&&(e._commitPromise?.resolve(),e._commitPromise=void 0)})}async function Fi(e,t){let n=e._tx,r=e.stores.resolvedLocation.get(),i=r??e.stores.location.get(),a=e.latestLocation,o=e._pendingLocation,s=o?.href===a.href?o._redirects??0:0,c=e._handoff,l=c?.[0](),u=new AbortController,d=e._preflight;if(e._preflight=u,l||c?.[1](),d?.abort(),!u.signal.aborted){let t=Ar(a,r);e.emit({type:`onBeforeNavigate`,...t}),u.signal.aborted||e.emit({type:`onBeforeLoad`,...t})}if(u.signal.aborted){await ji(e,n);return}let f=i.href===a.href,p=u,m=e.matchRoutes(a,{_controller:u});di(m);let h=l?c[1](m):void 0;if(h?p=l:l?.abort(),u.signal.aborted){ui(e,m),await ji(e,n);return}e._preflight=void 0;let g,_=()=>Pi(e,y,f,()=>Ei(e,y),t?.sync,h),v=t?.sync?new Promise(e=>g=e):Promise.resolve().then(_),y=[p,s,a,m,Date.now(),v.then(()=>ji(e,y))];if(e._tx=y,n){for(let t of e.stores.matches.get()){if(e._tx!==y)break;t.isFetching&&fi(e,t,!1)}n[0].abort(),ui(e,n[3],y[3],!0)}if(e._tx!==y){ui(e,y[3]),y[3]=[],g?.(),await ji(e,y);return}e.batch(()=>{e.stores.status.set(`pending`),e.stores.location.set(a)}),(h||!e._committed.length&&m[0]?.status!==`success`&&!m.some(e=>e._notFound))&&Ei(e,y),g?.(_()),await y[5]}async function Ii(e,t){let n=e.buildLocation(t);for(let t=0;;t++){let r=e._committed,i=new AbortController,a,o,s;try{try{a=e.matchRoutes(n,{_controller:i}),di(a),o=(e._preloads??=new Map).set(i,a),s=await Ti(e,n,a,[i,t,r,!0])}finally{o&&(o=o.delete(i),ui(e,a)),i.abort()}if(!ti(s))return s[1];if(!o||s.length<3)return;n=s[2]}catch(e){Sn(e)||console.error(e);return}}}var E=v(ce(),1),D=te(),Li=class extends E.Component{constructor(...e){super(...e),this.state={error:0},this.reset=()=>{this.setState({error:0})}}static getDerivedStateFromProps(e,t){let n=e.getResetKey();return t.error&&t.resetKey!==n?{resetKey:n,error:0}:{resetKey:n}}static getDerivedStateFromError(e){return{error:[e]}}componentDidCatch(e,t){this.props.onCatch?.(e,t)}render(){let e=this.state.error;return e?E.createElement(this.props.errorComponent??Ri,{error:e[0],reset:this.reset}):this.props.children}};function Ri({error:e}){let[t,n]=E.useState(!1);return(0,D.jsxs)(`div`,{style:{padding:`.5rem`,maxWidth:`100%`},children:[(0,D.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`.5rem`},children:[(0,D.jsx)(`strong`,{style:{fontSize:`1rem`},children:`Something went wrong!`}),(0,D.jsx)(`button`,{style:{appearance:`none`,fontSize:`.6em`,border:`1px solid currentColor`,padding:`.1rem .2rem`,fontWeight:`bold`,borderRadius:`.25rem`},onClick:()=>n(e=>!e),children:t?`Hide Error`:`Show Error`})]}),(0,D.jsx)(`div`,{style:{height:`.25rem`}}),t?(0,D.jsx)(`div`,{children:(0,D.jsx)(`pre`,{style:{fontSize:`.7em`,border:`1px solid red`,borderRadius:`.25rem`,padding:`.3rem`,color:`red`,overflow:`auto`},children:e?.message?(0,D.jsx)(`code`,{children:e.message}):null})}):null]})}function zi(e){let t=Ce(),n=`not-found-${ze(t.stores.location,e=>e.pathname)}-${ze(t.stores.status)}`;return(0,D.jsx)(Li,{getResetKey:()=>n,onCatch:(t,n)=>{if(Sn(t))e.onCatch?.(t,n);else throw t},errorComponent:({error:t})=>{if(Sn(t))return e.fallback?.(t);throw t},children:e.children})}function Bi(){return(0,D.jsx)(`p`,{children:`Not Found`})}function Vi(e,t,n){return t.options.notFoundComponent?(0,D.jsx)(t.options.notFoundComponent,{...n}):e.options.defaultNotFoundComponent?(0,D.jsx)(e.options.defaultNotFoundComponent,{...n}):(0,D.jsx)(Bi,{})}function Hi(e,t){let n=t?.options.pendingComponent??e.options.defaultPendingComponent;return n?(0,D.jsx)(n,{}):null}var Ui=(e,t)=>e[0]===t[0]&&e[1]===t[1],Wi=(e,t,n)=>!t.isRoot||t.options.shellComponent||t.options.wrapInSuspense||n===!1||n===`data-only`||!e.ssr,Gi=E.memo(function({routeId:e}){let t=Ce();return(0,D.jsx)(Ki,{router:t,match:ze(t.stores.getMatchStore(e))})});function Ki({router:e,match:t}){let n=e.routesById[t.routeId],r=Hi(e,n),i=n.options.errorComponent??e.options.defaultErrorComponent,a=n.options.onCatch??e.options.defaultOnCatch,o=n.isRoot?n.options.notFoundComponent??e.options.notFoundRoute?.options.component:n.options.notFoundComponent,s=t.ssr===!1||t.ssr===`data-only`,c=Wi(e,n,t.ssr)&&(n.options.wrapInSuspense??r??(n.options.errorComponent?.preload||s)),l=(0,D.jsx)(qi,{match:t});s&&(l=(0,D.jsx)(Ve,{fallback:r,children:l})),o&&(l=(0,D.jsx)(zi,{fallback:e=>{if(e.routeId??=t.routeId,e.routeId!==t.routeId)throw e;return E.createElement(o,e)},children:l})),i&&(l=(0,D.jsx)(Li,{getResetKey:()=>t,errorComponent:i,onCatch:(e,n)=>{if(Sn(e))throw e.routeId??=t.routeId,e;a?.(e,n)},children:l})),c&&(l=(0,D.jsx)(E.Suspense,{fallback:r,children:l}));let u=n.isRoot?n.options.shellComponent:void 0;return(0,D.jsx)(Re.Provider,{value:t.routeId,children:u?(0,D.jsxs)(u,{children:[l,null]}):(0,D.jsxs)(D.Fragment,{children:[l,null]})})}var qi=E.memo(function({match:e}){let t=Ce(),n=e.routeId,r=t.routesById[n],i=E.useMemo(()=>{let i=(r.options.remountDeps??t.options.defaultRemountDeps)?.({routeId:n,loaderDeps:e.loaderDeps,params:e._strictParams,search:e._strictSearch});return i?JSON.stringify(i):void 0},[n,e.loaderDeps,e._strictParams,e._strictSearch,r.options.remountDeps,t.options.defaultRemountDeps]),a=E.useMemo(()=>{let e=r.options.component??t.options.defaultComponent;return e?(0,D.jsx)(e,{},i):(0,D.jsx)(Ji,{})},[i,r.options.component,t.options.defaultComponent]);if(e.status===`pending`){if(t.ssr&&!Wi(t,r,e.ssr))return a;if(t._tx)throw t._tx[5];return Hi(t,r)}if(e.status===`notFound`)return Vi(t,r,e.error);if(e.status===`error`)throw e.error;return a}),Ji=E.memo(function(){let e=Ce(),t=E.useContext(Re),n,r,i;{let a=e.stores.getMatchStore(t);[n,r]=ze(a,e=>[!!e._notFound,e.error],{compare:Ui}),i=ze(e.stores.ids,e=>e[e.indexOf(t)+1])}if(n)return Vi(e,e.routesById[t],r);if(!i)return null;let a=(0,D.jsx)(Gi,{routeId:i});return t===`__root__`?(0,D.jsx)(E.Suspense,{fallback:Hi(e),children:a}):a});function Yi(e,t){let n=e[1];e.length=0,n?.(t)}function Xi({t:e}){let t=Ce(),n=t._rendered??=[];return t.startTransition=(r,i)=>new Promise(a=>{Yi(n,!1),n.push(i,a),e(t),E.startTransition(r)}),Ee(()=>{let e=t.history.subscribe(t.load);t.updateLatestLocation();let r=t.latestLocation,i=t.buildLocation({to:r.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});if(at(r.publicHref)!==at(i.publicHref))return t.commitLocation({...i,replace:!0,ignoreBlocker:!0}),e;let a=t.stores.resolvedLocation.get();return a?.href===r.href&&a.state.__TSR_key===r.state.__TSR_key?n.push(t.stores.matches.get(),e=>{e&&t.emit({type:`onRendered`,...Ar(a,a)})}):t._tx||t.load({sync:!0}).catch(console.error),e},[t,t.history]),null}function Zi(){let e=Ce(),t=e.routesById[Be],n=Hi(e,t),r=(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(Xi,{t:E.useState()[1]}),e.ssr?(0,D.jsx)(Qi,{}):(0,D.jsx)(E.Suspense,{fallback:n,children:(0,D.jsx)(Qi,{})})]});return e.options.InnerWrap?(0,D.jsx)(e.options.InnerWrap,{children:r}):r}function Qi(){let e=Ce(),t=e._rendered,n=ze(e.stores.matches,e=>t[0]??e),r=n[0],i=r?.routeId;Ee(()=>{t[0]===n&&Yi(t,!0)},[t,n]);let a=i?(0,D.jsx)(Gi,{routeId:i}):null;return e.options.disableGlobalCatchBoundary?a:(0,D.jsx)(Li,{getResetKey:()=>r,onCatch:void 0,children:a})}var $i=e=>({createMutableStore:Xe,createReadonlyStore:Xe,batch:Je}),ea=e=>new ta(e),ta=class extends Pr{constructor(e){super(e,$i)}};function na({router:e,children:t,...n}){At(n)&&e.update({...e.options,...n,context:{...e.options.context,...n.context}});let r=(0,D.jsx)(we.Provider,{value:e,children:t});return e.options.Wrap?(0,D.jsx)(e.options.Wrap,{children:r}):r}function ra({router:e,...t}){return(0,D.jsx)(na,{router:e,...t,children:(0,D.jsx)(Zi,{})})}function ia(e){let t=Ce({warn:e?.router===void 0}),n=e?.router||t;return ze(n.stores.__store,Ye(e,n))}function aa(e){return typeof e!=`string`||!e.includes(`var(--mantine-scale)`)?e:e.match(/^calc\((.*?)\)$/)?.[1].split(`*`)[0].trim()}function oa(e){let t=aa(e);return typeof t==`number`?t:typeof t==`string`?t.includes(`calc`)||t.includes(`var`)?t:t.includes(`px`)?Number(t.replace(`px`,``)):t.includes(`rem`)?Number(t.replace(`rem`,``))*16:t.includes(`em`)?Number(t.replace(`em`,``))*16:Number(t):NaN}function sa(e,t){return e in t?oa(t[e]):oa(e)}function ca(e,t){let n=e.map(e=>({value:e,px:sa(e,t)}));return n.sort((e,t)=>e.px-t.px),n}function la(e,t,n={leading:!1}){let[r,i]=(0,E.useState)(e),a=(0,E.useRef)(!1),o=(0,E.useRef)(null),s=(0,E.useRef)(!1),c=(0,E.useRef)(e);c.current=e;let l=(0,E.useCallback)(()=>{window.clearTimeout(o.current),o.current=null},[]),u=(0,E.useCallback)(()=>{l(),s.current=!1},[]),d=(0,E.useCallback)(()=>{o.current&&(u(),s.current=!1,i(c.current))},[]);return(0,E.useEffect)(()=>{a.current&&(l(),!s.current&&n.leading?(s.current=!0,i(e),o.current=window.setTimeout(()=>{s.current=!1},t)):o.current=window.setTimeout(()=>{s.current=!1,i(e)},t))},[e,n.leading,t]),(0,E.useEffect)(()=>(a.current=!0,u),[]),[r,u,{cancel:u,flush:d}]}function ua(e=!1,t={}){let[n,r]=(0,E.useState)(e),i=(0,E.useCallback)(()=>{r(e=>e||(t.onOpen?.(),!0))},[t.onOpen]),a=(0,E.useCallback)(()=>{r(e=>e&&(t.onClose?.(),!1))},[t.onClose]);return[n,{open:i,close:a,toggle:(0,E.useCallback)(()=>{n?a():i()},[a,i,n]),set:r}]}function da(e){return e===`auto`||e===`dark`||e===`light`}function fa({key:e=`mantine-color-scheme-value`}={}){let t;return{get:t=>{if(typeof window>`u`)return t;try{let n=window.localStorage.getItem(e);return da(n)?n:t}catch{return t}},set:t=>{try{window.localStorage.setItem(e,t)}catch(e){console.warn(`[@mantine/core] Local storage color scheme manager was unable to save color scheme.`,e)}},subscribe:n=>{t=t=>{t.storageArea===window.localStorage&&t.key===e&&da(t.newValue)&&n(t.newValue)},window.addEventListener(`storage`,t)},unsubscribe:()=>{window.removeEventListener(`storage`,t)},clear:()=>{window.localStorage.removeItem(e)}}}function pa(e,t){let n=typeof window<`u`&&`matchMedia`in window&&window.matchMedia(`(prefers-color-scheme: dark)`)?.matches,r=e===`auto`?n?`dark`:`light`:e;t()?.setAttribute(`data-mantine-color-scheme`,r)}function ma({manager:e,defaultColorScheme:t,getRootElement:n,forceColorScheme:r}){let i=(0,E.useRef)(null),[a,o]=(0,E.useState)(()=>e.get(t)),s=r||a,c=(0,E.useCallback)(t=>{r||(pa(t,n),o(t),e.set(t))},[e.set,s,r]),l=(0,E.useCallback)(()=>{o(t),pa(t,n),e.clear()},[e.clear,t]);return(0,E.useEffect)(()=>(e.subscribe(c),e.unsubscribe),[e.subscribe,e.unsubscribe]),S(()=>{pa(e.get(t),n)},[]),(0,E.useEffect)(()=>{if(r)return pa(r,n),()=>{};r===void 0&&pa(a,n),typeof window<`u`&&`matchMedia`in window&&(i.current=window.matchMedia(`(prefers-color-scheme: dark)`));let e=e=>{a===`auto`&&pa(e.matches?`dark`:`light`,n)};return i.current?.addEventListener(`change`,e),()=>i.current?.removeEventListener(`change`,e)},[a,r]),{colorScheme:s,setColorScheme:c,clearColorScheme:l}}function ha(e){return Object.entries(e).map(([e,t])=>`${e}: ${t};`).join(``)}function ga(e,t){let n=t?[t]:[`:root`,`:host`],r=ha(e.variables),i=r?`${n.join(`, `)}{${r}}`:``,a=ha(e.dark),o=ha(e.light),s=e=>n.map(t=>t===`:host`?`${t}([data-mantine-color-scheme="${e}"])`:`${t}[data-mantine-color-scheme="${e}"]`).join(`, `);return`${i}\n\n${a?`${s(`dark`)}{${a}}`:``}\n\n${o?`${s(`light`)}{${o}}`:``}`}function O({theme:e,color:n,colorScheme:r,name:i=n,withColorValues:o=!0}){if(!e.colors[n])return{};if(r===`light`){let r=c(e,`light`),a={[`--mantine-color-${i}-text`]:`var(--mantine-color-${i}-filled)`,[`--mantine-color-${i}-filled`]:`var(--mantine-color-${i}-${r})`,[`--mantine-color-${i}-filled-hover`]:`var(--mantine-color-${i}-${r===9?8:r+1})`,[`--mantine-color-${i}-light`]:`var(--mantine-color-${i}-1)`,[`--mantine-color-${i}-light-hover`]:`var(--mantine-color-${i}-2)`,[`--mantine-color-${i}-light-color`]:`var(--mantine-color-${i}-9)`,[`--mantine-color-${i}-outline`]:`var(--mantine-color-${i}-${r})`,[`--mantine-color-${i}-outline-hover`]:t(e.colors[n][r],.05)};return o?{[`--mantine-color-${i}-0`]:e.colors[n][0],[`--mantine-color-${i}-1`]:e.colors[n][1],[`--mantine-color-${i}-2`]:e.colors[n][2],[`--mantine-color-${i}-3`]:e.colors[n][3],[`--mantine-color-${i}-4`]:e.colors[n][4],[`--mantine-color-${i}-5`]:e.colors[n][5],[`--mantine-color-${i}-6`]:e.colors[n][6],[`--mantine-color-${i}-7`]:e.colors[n][7],[`--mantine-color-${i}-8`]:e.colors[n][8],[`--mantine-color-${i}-9`]:e.colors[n][9],...a}:a}let s=c(e,`dark`),l={[`--mantine-color-${i}-text`]:`var(--mantine-color-${i}-4)`,[`--mantine-color-${i}-filled`]:`var(--mantine-color-${i}-${s})`,[`--mantine-color-${i}-filled-hover`]:`var(--mantine-color-${i}-${s===9?8:s+1})`,[`--mantine-color-${i}-light`]:a(e.colors[n][9],.5),[`--mantine-color-${i}-light-hover`]:a(e.colors[n][9],.3),[`--mantine-color-${i}-light-color`]:`var(--mantine-color-${i}-0)`,[`--mantine-color-${i}-outline`]:`var(--mantine-color-${i}-${Math.max(s-4,0)})`,[`--mantine-color-${i}-outline-hover`]:t(e.colors[n][Math.max(s-4,0)],.05)};return o?{[`--mantine-color-${i}-0`]:e.colors[n][0],[`--mantine-color-${i}-1`]:e.colors[n][1],[`--mantine-color-${i}-2`]:e.colors[n][2],[`--mantine-color-${i}-3`]:e.colors[n][3],[`--mantine-color-${i}-4`]:e.colors[n][4],[`--mantine-color-${i}-5`]:e.colors[n][5],[`--mantine-color-${i}-6`]:e.colors[n][6],[`--mantine-color-${i}-7`]:e.colors[n][7],[`--mantine-color-${i}-8`]:e.colors[n][8],[`--mantine-color-${i}-9`]:e.colors[n][9],...l}:l}function _a(e,t,n){x(t).forEach(r=>Object.assign(e,{[`--mantine-${n}-${r}`]:t[r]}))}var va=e=>{let t=c(e,`light`),n=e.defaultRadius in e.radius?e.radius[e.defaultRadius]:w(e.defaultRadius),r={variables:{"--mantine-z-index-app":`100`,"--mantine-z-index-modal":`200`,"--mantine-z-index-popover":`300`,"--mantine-z-index-overlay":`400`,"--mantine-z-index-max":`9999`,"--mantine-scale":e.scale.toString(),"--mantine-cursor-type":e.cursorType,"--mantine-webkit-font-smoothing":e.fontSmoothing?`antialiased`:`unset`,"--mantine-moz-font-smoothing":e.fontSmoothing?`grayscale`:`unset`,"--mantine-color-white":e.white,"--mantine-color-black":e.black,"--mantine-line-height":e.lineHeights.md,"--mantine-font-family":e.fontFamily,"--mantine-font-family-monospace":e.fontFamilyMonospace,"--mantine-font-family-headings":e.headings.fontFamily,"--mantine-heading-font-weight":e.headings.fontWeight,"--mantine-heading-text-wrap":e.headings.textWrap,"--mantine-radius-default":n,"--mantine-primary-color-filled":`var(--mantine-color-${e.primaryColor}-filled)`,"--mantine-primary-color-filled-hover":`var(--mantine-color-${e.primaryColor}-filled-hover)`,"--mantine-primary-color-light":`var(--mantine-color-${e.primaryColor}-light)`,"--mantine-primary-color-light-hover":`var(--mantine-color-${e.primaryColor}-light-hover)`,"--mantine-primary-color-light-color":`var(--mantine-color-${e.primaryColor}-light-color)`},light:{"--mantine-color-scheme":`light`,"--mantine-primary-color-contrast":We(e,`light`),"--mantine-color-bright":`var(--mantine-color-black)`,"--mantine-color-text":e.black,"--mantine-color-body":e.white,"--mantine-color-error":`var(--mantine-color-red-6)`,"--mantine-color-success":`var(--mantine-color-teal-8)`,"--mantine-color-placeholder":`var(--mantine-color-gray-5)`,"--mantine-color-anchor":`var(--mantine-color-${e.primaryColor}-${t})`,"--mantine-color-default":`var(--mantine-color-white)`,"--mantine-color-default-hover":`var(--mantine-color-gray-0)`,"--mantine-color-default-color":`var(--mantine-color-black)`,"--mantine-color-default-border":`var(--mantine-color-gray-4)`,"--mantine-color-dimmed":`var(--mantine-color-gray-6)`,"--mantine-color-disabled":`var(--mantine-color-gray-2)`,"--mantine-color-disabled-color":`var(--mantine-color-gray-5)`,"--mantine-color-disabled-border":`var(--mantine-color-gray-3)`},dark:{"--mantine-color-scheme":`dark`,"--mantine-primary-color-contrast":We(e,`dark`),"--mantine-color-bright":`var(--mantine-color-white)`,"--mantine-color-text":`var(--mantine-color-dark-0)`,"--mantine-color-body":`var(--mantine-color-dark-7)`,"--mantine-color-error":`var(--mantine-color-red-8)`,"--mantine-color-success":`var(--mantine-color-teal-8)`,"--mantine-color-placeholder":`var(--mantine-color-dark-3)`,"--mantine-color-anchor":`var(--mantine-color-${e.primaryColor}-4)`,"--mantine-color-default":`var(--mantine-color-dark-6)`,"--mantine-color-default-hover":`var(--mantine-color-dark-5)`,"--mantine-color-default-color":`var(--mantine-color-white)`,"--mantine-color-default-border":`var(--mantine-color-dark-4)`,"--mantine-color-dimmed":`var(--mantine-color-dark-2)`,"--mantine-color-disabled":`var(--mantine-color-dark-6)`,"--mantine-color-disabled-color":`var(--mantine-color-dark-3)`,"--mantine-color-disabled-border":`var(--mantine-color-dark-4)`}};_a(r.variables,e.breakpoints,`breakpoint`),_a(r.variables,e.spacing,`spacing`),_a(r.variables,e.fontSizes,`font-size`),_a(r.variables,e.lineHeights,`line-height`),_a(r.variables,e.shadows,`shadow`),_a(r.variables,e.radius,`radius`),_a(r.variables,e.fontWeights,`font-weight`),e.colors[e.primaryColor].forEach((t,n)=>{r.variables[`--mantine-primary-color-${n}`]=`var(--mantine-color-${e.primaryColor}-${n})`}),x(e.colors).forEach(t=>{let n=e.colors[t];if(g(n)){Object.assign(r.light,O({theme:e,name:n.name,color:n.light,colorScheme:`light`,withColorValues:!0})),Object.assign(r.dark,O({theme:e,name:n.name,color:n.dark,colorScheme:`dark`,withColorValues:!0})),r.light[`--mantine-color-${n.name}-contrast`]=Le(n,e,`light`),r.dark[`--mantine-color-${n.name}-contrast`]=Le(n,e,`dark`);return}n.forEach((e,n)=>{r.variables[`--mantine-color-${t}-${n}`]=e}),Object.assign(r.light,O({theme:e,color:t,colorScheme:`light`,withColorValues:!1})),Object.assign(r.dark,O({theme:e,color:t,colorScheme:`dark`,withColorValues:!1}))});let i=e.headings.sizes;return x(i).forEach(t=>{r.variables[`--mantine-${t}-font-size`]=i[t].fontSize,r.variables[`--mantine-${t}-line-height`]=i[t].lineHeight,r.variables[`--mantine-${t}-font-weight`]=i[t].fontWeight||e.headings.fontWeight}),r};function ya(){let e=l(),t=m(),n=x(e.breakpoints).reduce((t,n)=>{let r=e.breakpoints[n].includes(`px`),i=oa(e.breakpoints[n]);return`${t}@media (max-width: ${r?`${i-.1}px`:b(i-.1)}) {.mantine-visible-from-${n} {display: none !important;}}@media (min-width: ${r?`${i}px`:b(i)}) {.mantine-hidden-from-${n} {display: none !important;}}`},``);return(0,D.jsx)(`style`,{"data-mantine-styles":`classes`,nonce:t?.(),dangerouslySetInnerHTML:{__html:n}})}function ba({theme:e,generator:t}){let n=va(e),r=t?.(e);return r?_e(n,r):n}var xa=va(u);function Sa(e){let t={variables:{},light:{},dark:{}};return x(e.variables).forEach(n=>{xa.variables[n]!==e.variables[n]&&(t.variables[n]=e.variables[n])}),x(e.light).forEach(n=>{xa.light[n]!==e.light[n]&&(t.light[n]=e.light[n])}),x(e.dark).forEach(n=>{xa.dark[n]!==e.dark[n]&&(t.dark[n]=e.dark[n])}),t}function Ca(e){return ga({variables:{},dark:{"--mantine-color-scheme":`dark`},light:{"--mantine-color-scheme":`light`}},e)}function wa({cssVariablesSelector:e,deduplicateCssVariables:t}){let n=l(),r=m(),i=ba({theme:n,generator:o()}),a=(e===void 0||e===`:root`||e===`:host`)&&t,s=ga(a?Sa(i):i,e);return s?(0,D.jsx)(`style`,{"data-mantine-styles":!0,nonce:r?.(),dangerouslySetInnerHTML:{__html:`${s}${a?``:Ca(e)}`}}):null}wa.displayName=`@mantine/CssVariables`;function Ta({respectReducedMotion:e,getRootElement:t}){S(()=>{e&&t()?.setAttribute(`data-respect-reduced-motion`,`true`)},[e])}function Ea({theme:e,children:t,getStyleNonce:n,withStaticClasses:r=!0,withGlobalClasses:i=!0,deduplicateCssVariables:a=!0,withCssVariables:o=!0,cssVariablesSelector:s,classNamesPrefix:c=`mantine`,colorSchemeManager:l=fa(),defaultColorScheme:u=`light`,getRootElement:d=()=>document.documentElement,cssVariablesResolver:p,forceColorScheme:m,stylesTransform:h,env:g,deduplicateInlineStyles:_=!1}){let{colorScheme:v,setColorScheme:y,clearColorScheme:b}=ma({defaultColorScheme:u,forceColorScheme:m,manager:l,getRootElement:d});return Ta({respectReducedMotion:e?.respectReducedMotion||!1,getRootElement:d}),(0,D.jsx)(f,{value:{colorScheme:v,setColorScheme:y,clearColorScheme:b,getRootElement:d,classNamesPrefix:c,getStyleNonce:n,cssVariablesResolver:p,cssVariablesSelector:s??`:root`,withStaticClasses:r,stylesTransform:h,env:g,deduplicateInlineStyles:_},children:(0,D.jsxs)(oe,{theme:e,children:[o&&(0,D.jsx)(wa,{cssVariablesSelector:s,deduplicateCssVariables:a}),i&&(0,D.jsx)(ya,{}),t]})})}Ea.displayName=`@mantine/core/MantineProvider`;function Da(e){return e}var[Oa,ka]=Pt(`AppShell was not found in tree`),Aa={root:`m_89ab340`,navbar:`m_45252eee`,aside:`m_9cdde9a`,header:`m_3b16f56b`,main:`m_8983817`,footer:`m_3840c879`,section:`m_6dcfc7c7`},ja=ye(t=>{let{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,withBorder:c,zIndex:l,mod:u,...d}=e(`AppShellAside`,null,t),f=ka();return f.disabled?null:(0,D.jsx)(h,{component:`aside`,mod:[{"with-border":c??f.withBorder},u],...f.getStyles(`aside`,{className:de({[Ht.classNames.zeroRight]:f.offsetScrollbars},r),classNames:n,styles:a,style:i}),...d,__vars:{"--app-shell-aside-z-index":`calc(${l??f.zIndex} + 1)`}})});ja.classes=Aa,ja.displayName=`@mantine/core/AppShellAside`;var Ma=ye(t=>{let{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,withBorder:c,zIndex:l,mod:u,...d}=e(`AppShellFooter`,null,t),f=ka();return f.disabled?null:(0,D.jsx)(h,{component:`footer`,mod:[{"with-border":c??f.withBorder},u],...f.getStyles(`footer`,{className:de({[Ht.classNames.zeroRight]:f.offsetScrollbars},r),classNames:n,styles:a,style:i}),...d,__vars:{"--app-shell-footer-z-index":(l??f.zIndex)?.toString()}})});Ma.classes=Aa,Ma.displayName=`@mantine/core/AppShellFooter`;var Na=ye(t=>{let{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,withBorder:c,zIndex:l,mod:u,...d}=e(`AppShellHeader`,null,t),f=ka();return f.disabled?null:(0,D.jsx)(h,{component:`header`,mod:[{"with-border":c??f.withBorder},u],...f.getStyles(`header`,{className:de({[Ht.classNames.zeroRight]:f.offsetScrollbars},r),classNames:n,styles:a,style:i}),...d,__vars:{"--app-shell-header-z-index":(l??f.zIndex)?.toString()}})});Na.classes=Aa,Na.displayName=`@mantine/core/AppShellHeader`;var Pa=ye(t=>{let{classNames:n,className:r,style:i,styles:a,vars:o,...s}=e(`AppShellMain`,null,t),c=ka();return(0,D.jsx)(h,{component:`main`,...c.getStyles(`main`,{className:r,style:i,classNames:n,styles:a}),...s})});Pa.classes=Aa,Pa.displayName=`@mantine/core/AppShellMain`;var Fa=ye(t=>{let{classNames:n,className:r,style:i,styles:a,unstyled:o,vars:s,withBorder:c,zIndex:l,mod:u,...d}=e(`AppShellNavbar`,null,t),f=ka();return f.disabled?null:(0,D.jsx)(h,{component:`nav`,mod:[{"with-border":c??f.withBorder},u],...f.getStyles(`navbar`,{className:r,classNames:n,styles:a,style:i}),...d,__vars:{"--app-shell-navbar-z-index":`calc(${l??f.zIndex} + 1)`}})});Fa.classes=Aa,Fa.displayName=`@mantine/core/AppShellNavbar`;var Ia=n(t=>{let{classNames:n,className:r,style:i,styles:a,vars:o,grow:s,mod:c,...l}=e(`AppShellSection`,null,t),u=ka();return(0,D.jsx)(h,{mod:[{grow:s},c],...u.getStyles(`section`,{className:r,style:i,classNames:n,styles:a}),...l})});Ia.classes=Aa,Ia.displayName=`@mantine/core/AppShellSection`;function La(e){return typeof e==`object`?e.base:e}function Ra(e){let t=typeof e==`object`&&!!e&&e.base!==void 0&&Object.keys(e).length===1;return typeof e==`number`||typeof e==`string`||t}function za(e){return!(typeof e!=`object`||!e||Object.keys(e).length===1&&`base`in e)}function Ba({baseStyles:e,minMediaStyles:t,maxMediaStyles:n,aside:r,theme:i,mode:a}){let o=r?.width,s=`translateX(var(--app-shell-aside-width))`,c=`translateX(calc(var(--app-shell-aside-width) * -1))`;if(r?.breakpoint!==void 0&&!r?.collapsed?.mobile&&(n[r?.breakpoint]=n[r?.breakpoint]||{},a===`fixed`?(n[r?.breakpoint][`--app-shell-aside-width`]=`100%`,n[r?.breakpoint][`--app-shell-aside-offset`]=`0px`):(n[r?.breakpoint][`--app-shell-aside-width`]=`0px`,n[r?.breakpoint][`--app-shell-aside-offset`]=`0px`)),Ra(o)){let t=w(La(o));e[`--app-shell-aside-width`]=t,e[`--app-shell-aside-offset`]=t}if(za(o)&&(o.base!==void 0&&(e[`--app-shell-aside-width`]=w(o.base),e[`--app-shell-aside-offset`]=w(o.base)),x(o).forEach(e=>{e!==`base`&&(t[e]=t[e]||{},t[e][`--app-shell-aside-width`]=w(o[e]),t[e][`--app-shell-aside-offset`]=w(o[e]))})),r?.breakpoint!==void 0&&a===`static`&&(t[r.breakpoint]=t[r.breakpoint]||{},t[r.breakpoint][`--app-shell-aside-position`]=`sticky`,t[r.breakpoint][`--app-shell-aside-grid-row`]=`2`,t[r.breakpoint][`--app-shell-aside-grid-column`]=`3`,t[r.breakpoint][`--app-shell-main-column-end`]=`3`),r?.collapsed?.desktop){let e=r.breakpoint;t[e]=t[e]||{},t[e][`--app-shell-aside-transform`]=s,t[e][`--app-shell-aside-transform-rtl`]=c,a===`fixed`?t[e][`--app-shell-aside-offset`]=`0px !important`:(t[e][`--app-shell-aside-width`]=`0px`,t[e][`--app-shell-aside-display`]=`none`,t[e][`--app-shell-main-column-end`]=`-1`),t[e][`--app-shell-aside-scroll-locked-visibility`]=`hidden`}if(r?.collapsed?.mobile){let e=sa(r.breakpoint,i.breakpoints)-.1;n[e]=n[e]||{},a===`fixed`?(n[e][`--app-shell-aside-width`]=`100%`,n[e][`--app-shell-aside-offset`]=`0px`):n[e][`--app-shell-aside-width`]=`0px`,n[e][`--app-shell-aside-transform`]=s,n[e][`--app-shell-aside-transform-rtl`]=c,n[e][`--app-shell-aside-scroll-locked-visibility`]=`hidden`}}function Va({baseStyles:e,minMediaStyles:t,footer:n,mode:r}){let i=n?.height,a=r===`static`?!0:n?.offset??!0;if(r===`static`&&n&&(e[`--app-shell-footer-position`]=`sticky`,e[`--app-shell-footer-grid-column`]=`1 / -1`,e[`--app-shell-footer-grid-row`]=`3`),Ra(i)){let t=w(La(i));e[`--app-shell-footer-height`]=t,a&&(e[`--app-shell-footer-offset`]=t)}za(i)&&(i.base!==void 0&&(e[`--app-shell-footer-height`]=w(i.base),a&&(e[`--app-shell-footer-offset`]=w(i.base))),x(i).forEach(e=>{e!==`base`&&(t[e]=t[e]||{},t[e][`--app-shell-footer-height`]=w(i[e]),a&&(t[e][`--app-shell-footer-offset`]=w(i[e])))})),n?.collapsed&&(e[`--app-shell-footer-transform`]=`translateY(var(--app-shell-footer-height))`,r===`fixed`&&(e[`--app-shell-footer-offset`]=`0px !important`))}function Ha({baseStyles:e,minMediaStyles:t,header:n,mode:r}){let i=n?.height,a=r===`static`?!0:n?.offset??!0;if(r===`static`&&n&&(e[`--app-shell-header-position`]=`sticky`,e[`--app-shell-header-grid-column`]=`1 / -1`,e[`--app-shell-header-grid-row`]=`1`),Ra(i)){let t=w(La(i));e[`--app-shell-header-height`]=t,a&&(e[`--app-shell-header-offset`]=t)}za(i)&&(i.base!==void 0&&(e[`--app-shell-header-height`]=w(i.base),a&&(e[`--app-shell-header-offset`]=w(i.base))),x(i).forEach(e=>{e!==`base`&&(t[e]=t[e]||{},t[e][`--app-shell-header-height`]=w(i[e]),a&&(t[e][`--app-shell-header-offset`]=w(i[e])))})),n?.collapsed&&(e[`--app-shell-header-transform`]=`translateY(calc(var(--app-shell-header-height) * -1))`,r===`fixed`&&(e[`--app-shell-header-offset`]=`0px !important`))}function Ua({baseStyles:e,minMediaStyles:t,maxMediaStyles:n,navbar:r,theme:i,mode:a}){let o=r?.width,s=`translateX(calc(var(--app-shell-navbar-width) * -1))`,c=`translateX(var(--app-shell-navbar-width))`;if(r?.breakpoint!==void 0&&!r?.collapsed?.mobile&&(n[r?.breakpoint]=n[r?.breakpoint]||{},n[r?.breakpoint][`--app-shell-navbar-offset`]=`0px`,n[r?.breakpoint][`--app-shell-navbar-width`]=`100%`,a===`static`&&(n[r?.breakpoint][`--app-shell-navbar-grid-width`]=`0px`)),Ra(o)){let t=w(La(o));e[`--app-shell-navbar-width`]=t,e[`--app-shell-navbar-offset`]=t,a===`static`&&(e[`--app-shell-navbar-grid-width`]=t)}if(za(o)&&(o.base!==void 0&&(e[`--app-shell-navbar-width`]=w(o.base),e[`--app-shell-navbar-offset`]=w(o.base),a===`static`&&(e[`--app-shell-navbar-grid-width`]=w(o.base))),x(o).forEach(e=>{e!==`base`&&(t[e]=t[e]||{},t[e][`--app-shell-navbar-width`]=w(o[e]),t[e][`--app-shell-navbar-offset`]=w(o[e]),a===`static`&&(t[e][`--app-shell-navbar-grid-width`]=w(o[e])))})),r?.breakpoint!==void 0&&a===`static`&&(t[r.breakpoint]=t[r.breakpoint]||{},t[r.breakpoint][`--app-shell-navbar-position`]=`sticky`,t[r.breakpoint][`--app-shell-navbar-grid-row`]=`2`,t[r.breakpoint][`--app-shell-navbar-grid-column`]=`1`,t[r.breakpoint][`--app-shell-main-column-start`]=`2`),r?.collapsed?.desktop){let e=r.breakpoint;t[e]=t[e]||{},t[e][`--app-shell-navbar-transform`]=s,t[e][`--app-shell-navbar-transform-rtl`]=c,a===`fixed`?t[e][`--app-shell-navbar-offset`]=`0px !important`:(t[e][`--app-shell-navbar-width`]=`0px`,t[e][`--app-shell-navbar-display`]=`none`,t[e][`--app-shell-main-column-start`]=`1`)}if(r?.collapsed?.mobile){let e=sa(r.breakpoint,i.breakpoints)-.1;n[e]=n[e]||{},n[e][`--app-shell-navbar-width`]=`100%`,n[e][`--app-shell-navbar-offset`]=`0px`,a===`static`&&(n[e][`--app-shell-navbar-grid-width`]=`0px`),n[e][`--app-shell-navbar-transform`]=s,n[e][`--app-shell-navbar-transform-rtl`]=c}}function Wa(e){return Number(e)===0?`0px`:pe(e)}function Ga({padding:e,baseStyles:t,minMediaStyles:n}){Ra(e)&&(t[`--app-shell-padding`]=Wa(La(e))),za(e)&&(e.base&&(t[`--app-shell-padding`]=Wa(e.base)),x(e).forEach(t=>{t!==`base`&&(n[t]=n[t]||{},n[t][`--app-shell-padding`]=Wa(e[t]))}))}function Ka({navbar:e,header:t,footer:n,aside:r,padding:i,theme:a,mode:o}){let s={},c={},l={};o===`static`&&(l[`--app-shell-main-grid-column`]=`1 / -1`,l[`--app-shell-main-grid-row`]=`2`),Ua({baseStyles:l,minMediaStyles:s,maxMediaStyles:c,navbar:e,theme:a,mode:o}),Ba({baseStyles:l,minMediaStyles:s,maxMediaStyles:c,aside:r,theme:a,mode:o}),Ha({baseStyles:l,minMediaStyles:s,header:t,mode:o}),Va({baseStyles:l,minMediaStyles:s,footer:n,mode:o}),Ga({baseStyles:l,minMediaStyles:s,padding:i});let u=ca(x(s),a.breakpoints).map(e=>({query:`(min-width: ${b(e.px)})`,styles:s[e.value]})),d=ca(x(c),a.breakpoints).map(e=>({query:`(max-width: ${b(e.px)})`,styles:c[e.value]}));return{baseStyles:l,media:[...u,...d]}}function qa({navbar:e,header:t,aside:n,footer:a,padding:o,mode:s,selector:c}){let u=l(),d=i(),{media:f,baseStyles:p}=Ka({navbar:e,header:t,footer:a,aside:n,padding:o,theme:u,mode:s});return(0,D.jsx)(r,{media:f,styles:p,selector:c||d.cssVariablesSelector})}function Ja({transitionDuration:e,disabled:t}){let[n,r]=(0,E.useState)(!0),i=(0,E.useRef)(-1),a=(0,E.useRef)(-1);return Ut(`resize`,()=>{r(!0),clearTimeout(i.current),i.current=window.setTimeout(()=>(0,E.startTransition)(()=>{r(!1)}),200)}),S(()=>{r(!0),clearTimeout(a.current),a.current=window.setTimeout(()=>(0,E.startTransition)(()=>{r(!1)}),e||0)},[t,e]),n}var Ya={withBorder:!0,padding:0,transitionDuration:200,transitionTimingFunction:`ease`,zIndex:Ft(`app`),mode:`fixed`},Xa=s((e,{transitionDuration:t,transitionTimingFunction:n})=>({root:{"--app-shell-transition-duration":`${t}ms`,"--app-shell-transition-timing-function":n}})),Za=ye(t=>{let n=e(`AppShell`,Ya,t),{classNames:r,className:i,style:a,styles:o,unstyled:s,vars:c,navbar:l,withBorder:u,padding:f,transitionDuration:m,transitionTimingFunction:g,header:_,zIndex:v,layout:y,disabled:b,aside:ee,footer:x,offsetScrollbars:S=!0,mode:C,mod:te,attributes:ne,id:re,...ie}=n,ae=d({name:`AppShell`,classes:Aa,props:n,className:i,style:a,classNames:r,styles:o,unstyled:s,attributes:ne,vars:c,varsResolver:Xa}),oe=Ja({disabled:b,transitionDuration:m}),se=p(re);return(0,D.jsxs)(Oa,{value:{getStyles:ae,withBorder:u,zIndex:v,disabled:b,offsetScrollbars:S,mode:C},children:[(0,D.jsx)(qa,{navbar:l,header:_,aside:ee,footer:x,padding:f,mode:C,selector:C===`static`?`#${se}`:void 0}),(0,D.jsx)(h,{...ae(`root`),id:se,mod:[{resizing:oe,layout:y,disabled:b,mode:C},te],...ie})]})});Za.classes=Aa,Za.varsResolver=Xa,Za.displayName=`@mantine/core/AppShell`,Za.Navbar=Fa,Za.Header=Na,Za.Main=Pa,Za.Aside=ja,Za.Footer=Ma,Za.Section=Ia;var Qa={group:`m_11def92b`,root:`m_f85678b6`,image:`m_11f8ac07`,placeholder:`m_104cd71f`},$a=(0,E.createContext)({withinGroup:!1}),eo=s((e,{spacing:t})=>({group:{"--ag-spacing":pe(t)}})),to=ye(t=>{let n=e(`AvatarGroup`,null,t),{classNames:r,className:i,style:a,styles:o,unstyled:s,vars:c,spacing:l,attributes:u,...f}=n,p=d({name:`AvatarGroup`,classes:Qa,props:n,className:i,style:a,classNames:r,styles:o,unstyled:s,attributes:u,vars:c,varsResolver:eo,rootSelector:`group`});return(0,D.jsx)($a,{value:{withinGroup:!0},children:(0,D.jsx)(h,{...p(`group`),...f})})});to.classes=Qa,to.varsResolver=eo,to.displayName=`@mantine/core/AvatarGroup`;function no(e){return(0,D.jsx)(`svg`,{...e,"data-avatar-placeholder-icon":!0,viewBox:`0 0 15 15`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:(0,D.jsx)(`path`,{d:`M0.877014 7.49988C0.877014 3.84219 3.84216 0.877045 7.49985 0.877045C11.1575 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1575 14.1227 7.49985 14.1227C3.84216 14.1227 0.877014 11.1575 0.877014 7.49988ZM7.49985 1.82704C4.36683 1.82704 1.82701 4.36686 1.82701 7.49988C1.82701 8.97196 2.38774 10.3131 3.30727 11.3213C4.19074 9.94119 5.73818 9.02499 7.50023 9.02499C9.26206 9.02499 10.8093 9.94097 11.6929 11.3208C12.6121 10.3127 13.1727 8.97172 13.1727 7.49988C13.1727 4.36686 10.6328 1.82704 7.49985 1.82704ZM10.9818 11.9787C10.2839 10.7795 8.9857 9.97499 7.50023 9.97499C6.01458 9.97499 4.71624 10.7797 4.01845 11.9791C4.97952 12.7272 6.18765 13.1727 7.49985 13.1727C8.81227 13.1727 10.0206 12.727 10.9818 11.9787ZM5.14999 6.50487C5.14999 5.207 6.20212 4.15487 7.49999 4.15487C8.79786 4.15487 9.84999 5.207 9.84999 6.50487C9.84999 7.80274 8.79786 8.85487 7.49999 8.85487C6.20212 8.85487 5.14999 7.80274 5.14999 6.50487ZM7.49999 5.10487C6.72679 5.10487 6.09999 5.73167 6.09999 6.50487C6.09999 7.27807 6.72679 7.90487 7.49999 7.90487C8.27319 7.90487 8.89999 7.27807 8.89999 6.50487C8.89999 5.73167 8.27319 5.10487 7.49999 5.10487Z`,fill:`currentColor`,fillRule:`evenodd`,clipRule:`evenodd`})})}function ro(e){let t=0;for(let n=0;ne[0]).slice(0,t).join(``).toUpperCase()}var so=s((e,{size:t,radius:n,variant:r,gradient:i,color:a,autoContrast:o,name:s,allowedInitialsColors:c})=>{let l=a===`initials`&&typeof s==`string`?ao(s,c):a,u=e.variantColorResolver({color:l||`gray`,theme:e,gradient:i,variant:r||`light`,autoContrast:o});return{root:{"--avatar-size":le(t,`avatar-size`),"--avatar-radius":n===void 0?void 0:ae(n),"--avatar-bg":l||r?u.background:void 0,"--avatar-color":l||r?u.color:void 0,"--avatar-bd":l||r?u.border:void 0}}}),co=n(t=>{let n=e(`Avatar`,null,t),{classNames:r,className:i,style:a,styles:o,unstyled:s,vars:c,src:l,alt:u,radius:f,color:p,gradient:m,imageProps:g,children:_,autoContrast:v,mod:y,name:b,allowedInitialsColors:ee,attributes:x,...S}=n,C=(0,E.use)($a),[te,ne]=(0,E.useState)(!l),re=d({name:`Avatar`,props:n,classes:Qa,className:i,style:a,classNames:r,styles:o,unstyled:s,attributes:x,vars:c,varsResolver:so});return(0,E.useEffect)(()=>ne(!l),[l]),(0,D.jsx)(h,{...re(`root`),mod:[{"within-group":C.withinGroup},y],...S,children:te||!l?(0,D.jsx)(`span`,{...re(`placeholder`),title:u,children:_||typeof b==`string`&&oo(b)||(0,D.jsx)(no,{})}):(0,D.jsx)(`img`,{...g,...re(`image`),src:l,alt:u,onError:e=>{ne(!0),g?.onError?.(e)}})})});co.classes=Qa,co.varsResolver=so,co.displayName=`@mantine/core/Avatar`,co.Group=to;var lo={root:`m_fea6bf1a`,burger:`m_d4fb9cad`},uo=s((e,{color:t,size:n,lineSize:r,transitionDuration:i,transitionTimingFunction:a})=>({root:{"--burger-color":t?_(t,e):void 0,"--burger-size":le(n,`burger-size`),"--burger-line-size":r?w(r):void 0,"--burger-transition-duration":i===void 0?void 0:`${i}ms`,"--burger-transition-timing-function":a}})),fo=ye(t=>{let n=e(`Burger`,null,t),{classNames:r,className:i,style:a,styles:o,unstyled:s,vars:c,opened:l,children:u,transitionDuration:f,transitionTimingFunction:p,lineSize:m,attributes:g,..._}=n,v=d({name:`Burger`,classes:lo,props:n,className:i,style:a,classNames:r,styles:o,unstyled:s,attributes:g,vars:c,varsResolver:uo});return(0,D.jsxs)(be,{...v(`root`),..._,children:[(0,D.jsx)(h,{mod:[`reduce-motion`,{opened:l}],...v(`burger`)}),u]})});fo.classes=lo,fo.varsResolver=uo,fo.displayName=`@mantine/core/Burger`;var po={root:`m_dc6f14e2`},mo=s((e,{size:t})=>({root:{"--kbd-fz":le(t,`kbd-fz`)}})),ho=ye(t=>{let n=e(`Kbd`,null,t),{classNames:r,className:i,style:a,styles:o,unstyled:s,vars:c,attributes:l,...u}=n,f=d({name:`Kbd`,classes:po,props:n,className:i,style:a,classNames:r,styles:o,unstyled:s,attributes:l,vars:c,varsResolver:mo});return(0,D.jsx)(h,{component:`kbd`,...f(`root`),...u})});ho.classes=po,ho.varsResolver=mo,ho.displayName=`@mantine/core/Kbd`;var go=[];for(let e=0;e<256;++e)go.push((e+256).toString(16).slice(1));function _o(e,t=0){return(go[e[t+0]]+go[e[t+1]]+go[e[t+2]]+go[e[t+3]]+`-`+go[e[t+4]]+go[e[t+5]]+`-`+go[e[t+6]]+go[e[t+7]]+`-`+go[e[t+8]]+go[e[t+9]]+`-`+go[e[t+10]]+go[e[t+11]]+go[e[t+12]]+go[e[t+13]]+go[e[t+14]]+go[e[t+15]]).toLowerCase()}var vo,yo=new Uint8Array(16);function bo(){if(!vo){if(typeof crypto>`u`||!crypto.getRandomValues)throw Error(`crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported`);vo=crypto.getRandomValues.bind(crypto)}return vo(yo)}var xo={randomUUID:typeof crypto<`u`&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function So(e,t,n){if(xo.randomUUID&&!t&&!e)return xo.randomUUID();e||={};let r=e.random??e.rng?.()??bo();if(r.length<16)throw Error(`Random bytes length must be >= 16`);if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){if(n||=0,n<0||n+16>t.length)throw RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[n+e]=r[e];return t}return _o(r)}var Co=xn(),k=function(e){return e.TEXT_MESSAGE_START=`TEXT_MESSAGE_START`,e.TEXT_MESSAGE_CONTENT=`TEXT_MESSAGE_CONTENT`,e.TEXT_MESSAGE_END=`TEXT_MESSAGE_END`,e.TEXT_MESSAGE_CHUNK=`TEXT_MESSAGE_CHUNK`,e.TOOL_CALL_START=`TOOL_CALL_START`,e.TOOL_CALL_ARGS=`TOOL_CALL_ARGS`,e.TOOL_CALL_END=`TOOL_CALL_END`,e.TOOL_CALL_CHUNK=`TOOL_CALL_CHUNK`,e.TOOL_CALL_RESULT=`TOOL_CALL_RESULT`,e.STATE_SNAPSHOT=`STATE_SNAPSHOT`,e.STATE_DELTA=`STATE_DELTA`,e.MESSAGES_SNAPSHOT=`MESSAGES_SNAPSHOT`,e.ACTIVITY_SNAPSHOT=`ACTIVITY_SNAPSHOT`,e.ACTIVITY_DELTA=`ACTIVITY_DELTA`,e.RAW=`RAW`,e.CUSTOM=`CUSTOM`,e.RUN_STARTED=`RUN_STARTED`,e.RUN_FINISHED=`RUN_FINISHED`,e.RUN_ERROR=`RUN_ERROR`,e.STEP_STARTED=`STEP_STARTED`,e.STEP_FINISHED=`STEP_FINISHED`,e.REASONING_START=`REASONING_START`,e.REASONING_MESSAGE_START=`REASONING_MESSAGE_START`,e.REASONING_MESSAGE_CONTENT=`REASONING_MESSAGE_CONTENT`,e.REASONING_MESSAGE_END=`REASONING_MESSAGE_END`,e.REASONING_MESSAGE_CHUNK=`REASONING_MESSAGE_CHUNK`,e.REASONING_END=`REASONING_END`,e.REASONING_ENCRYPTED_VALUE=`REASONING_ENCRYPTED_VALUE`,e.SUBAGENT_STARTED=`SUBAGENT_STARTED`,e.SUBAGENT_FINISHED=`SUBAGENT_FINISHED`,e.SUBAGENT_ERROR=`SUBAGENT_ERROR`,e}({}),wo={TextMessageStartEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`,`role`,`name`],fields:{}},TextMessageContentEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},TextMessageEndEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},TextMessageChunkEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`,`messageId`,`role`,`delta`,`name`],fields:{}},ToolCallStartEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`,`parentMessageId`],fields:{}},ToolCallArgsEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},ToolCallEndEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},ToolCallChunkEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`,`toolCallId`,`toolCallName`,`parentMessageId`,`delta`],fields:{}},TextPart:{optional:[`id`,`metadata`],fields:{}},DataSource:{optional:[],fields:{}},UrlSource:{optional:[`mimeType`],fields:{}},FileSource:{optional:[`provider`,`mimeType`],fields:{}},PartSource:{discriminator:`type`,variants:{data:`DataSource`,url:`UrlSource`,file:`FileSource`}},ImagePart:{optional:[`id`,`metadata`],fields:{source:`PartSource`}},AudioPart:{optional:[`id`,`metadata`],fields:{source:`PartSource`}},VideoPart:{optional:[`id`,`metadata`],fields:{source:`PartSource`}},DocumentPart:{optional:[`id`,`metadata`],fields:{source:`PartSource`}},ContentPart:{discriminator:`type`,variants:{text:`TextPart`,image:`ImagePart`,audio:`AudioPart`,video:`VideoPart`,document:`DocumentPart`}},ToolCallResultEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`,`role`],fields:{content:{array:`ContentPart`}}},StateSnapshotEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},AddOperation:{optional:[],fields:{}},RemoveOperation:{optional:[],fields:{}},ReplaceOperation:{optional:[],fields:{}},MoveOperation:{optional:[],fields:{}},CopyOperation:{optional:[],fields:{}},TestOperation:{optional:[],fields:{}},JsonPatchOperation:{discriminator:`op`,variants:{add:`AddOperation`,remove:`RemoveOperation`,replace:`ReplaceOperation`,move:`MoveOperation`,copy:`CopyOperation`,test:`TestOperation`}},StateDeltaEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{delta:{array:`JsonPatchOperation`}}},DeveloperMessage:{optional:[`subagentRunId`,`name`,`encryptedValue`,`metadata`],fields:{}},SystemMessage:{optional:[`subagentRunId`,`name`,`encryptedValue`,`metadata`],fields:{}},FunctionCall:{optional:[],fields:{}},ToolCall:{optional:[`encryptedValue`,`metadata`],fields:{function:`FunctionCall`}},AssistantMessage:{optional:[`subagentRunId`,`name`,`encryptedValue`,`metadata`,`content`,`toolCalls`],fields:{toolCalls:{array:`ToolCall`}}},UserMessage:{optional:[`subagentRunId`,`name`,`encryptedValue`,`metadata`],fields:{content:{array:`ContentPart`}}},ToolMessage:{optional:[`subagentRunId`,`error`,`encryptedValue`,`metadata`],fields:{content:{array:`ContentPart`}}},ActivityMessage:{optional:[`subagentRunId`,`metadata`],fields:{}},ReasoningMessage:{optional:[`subagentRunId`,`encryptedValue`,`metadata`],fields:{}},Message:{discriminator:`role`,variants:{developer:`DeveloperMessage`,system:`SystemMessage`,assistant:`AssistantMessage`,user:`UserMessage`,tool:`ToolMessage`,activity:`ActivityMessage`,reasoning:`ReasoningMessage`}},MessagesSnapshotEvent:{optional:[`timestamp`,`rawEvent`,`metadata`],fields:{messages:{array:`Message`}}},ActivitySnapshotEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`,`replace`],fields:{}},ActivityDeltaEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{patch:{array:`JsonPatchOperation`}}},RawEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`,`source`],fields:{}},CustomEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},Tool:{optional:[`parameters`,`metadata`],fields:{}},Context:{optional:[],fields:{}},ResumeEntry:{optional:[`payload`,`metadata`],fields:{}},RunAgentInput:{optional:[`protocolVersion`,`parentRunId`,`state`,`tools`,`context`,`forwardedProps`,`resume`],fields:{messages:{array:`Message`},tools:{array:`Tool`},context:{array:`Context`},resume:{array:`ResumeEntry`}}},RunStartedEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`protocolVersion`,`parentRunId`,`input`],fields:{input:`RunAgentInput`}},RunFinishedSuccessOutcome:{optional:[`pendingToolCallIds`],fields:{}},Interrupt:{optional:[`subagentRunId`,`message`,`toolCallId`,`responseSchema`,`expiresAt`,`metadata`],fields:{}},RunFinishedInterruptOutcome:{optional:[],fields:{interrupts:{array:`Interrupt`}}},RunFinishedCancelledOutcome:{optional:[],fields:{}},RunFinishedOutcome:{discriminator:`type`,variants:{success:`RunFinishedSuccessOutcome`,interrupt:`RunFinishedInterruptOutcome`,cancelled:`RunFinishedCancelledOutcome`}},TokenUsage:{optional:[`provider`,`model`,`inputTokens`,`outputTokens`,`totalTokens`,`reasoningTokens`,`cachedInputTokens`,`cacheWriteInputTokens`],fields:{}},RunFinishedEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`result`,`outcome`,`usage`],fields:{outcome:`RunFinishedOutcome`,usage:{array:`TokenUsage`}}},RunErrorEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`code`,`usage`],fields:{usage:{array:`TokenUsage`}}},StepStartedEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},StepFinishedEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},ReasoningStartEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},ReasoningMessageStartEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},ReasoningMessageContentEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},ReasoningMessageEndEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},ReasoningMessageChunkEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`,`messageId`,`delta`],fields:{}},ReasoningEndEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},ReasoningEncryptedValueEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},SubagentStartedEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`description`,`parentSubagentRunId`,`parentToolCallId`,`parentMessageId`],fields:{}},SubagentFinishedSuccessOutcome:{optional:[],fields:{}},SubagentFinishedSuspendedOutcome:{optional:[`interruptIds`],fields:{}},SubagentFinishedOutcome:{discriminator:`type`,variants:{success:`SubagentFinishedSuccessOutcome`,suspended:`SubagentFinishedSuspendedOutcome`}},SubagentFinishedEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`result`,`outcome`],fields:{outcome:`SubagentFinishedOutcome`}},SubagentErrorEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`code`],fields:{}},Event:{discriminator:`type`,variants:{TEXT_MESSAGE_START:`TextMessageStartEvent`,TEXT_MESSAGE_CONTENT:`TextMessageContentEvent`,TEXT_MESSAGE_END:`TextMessageEndEvent`,TEXT_MESSAGE_CHUNK:`TextMessageChunkEvent`,TOOL_CALL_START:`ToolCallStartEvent`,TOOL_CALL_ARGS:`ToolCallArgsEvent`,TOOL_CALL_END:`ToolCallEndEvent`,TOOL_CALL_CHUNK:`ToolCallChunkEvent`,TOOL_CALL_RESULT:`ToolCallResultEvent`,STATE_SNAPSHOT:`StateSnapshotEvent`,STATE_DELTA:`StateDeltaEvent`,MESSAGES_SNAPSHOT:`MessagesSnapshotEvent`,ACTIVITY_SNAPSHOT:`ActivitySnapshotEvent`,ACTIVITY_DELTA:`ActivityDeltaEvent`,RAW:`RawEvent`,CUSTOM:`CustomEvent`,RUN_STARTED:`RunStartedEvent`,RUN_FINISHED:`RunFinishedEvent`,RUN_ERROR:`RunErrorEvent`,STEP_STARTED:`StepStartedEvent`,STEP_FINISHED:`StepFinishedEvent`,REASONING_START:`ReasoningStartEvent`,REASONING_MESSAGE_START:`ReasoningMessageStartEvent`,REASONING_MESSAGE_CONTENT:`ReasoningMessageContentEvent`,REASONING_MESSAGE_END:`ReasoningMessageEndEvent`,REASONING_MESSAGE_CHUNK:`ReasoningMessageChunkEvent`,REASONING_END:`ReasoningEndEvent`,REASONING_ENCRYPTED_VALUE:`ReasoningEncryptedValueEvent`,SUBAGENT_STARTED:`SubagentStartedEvent`,SUBAGENT_FINISHED:`SubagentFinishedEvent`,SUBAGENT_ERROR:`SubagentErrorEvent`}},SubagentInfo:{optional:[`description`],fields:{}},IdentityCapabilities:{optional:[`name`,`type`,`description`,`version`,`provider`,`documentationUrl`,`metadata`],fields:{}},TransportCapabilities:{optional:[`streaming`,`websocket`,`httpBinary`,`pushNotifications`,`resumable`],fields:{}},ToolsCapabilities:{optional:[`supported`,`items`,`parallelCalls`,`clientProvided`],fields:{items:{array:`Tool`}}},OutputCapabilities:{optional:[`structuredOutput`,`supportedMimeTypes`],fields:{}},StateCapabilities:{optional:[`snapshots`,`deltas`,`memory`,`persistentState`],fields:{}},MultiAgentCapabilities:{optional:[`supported`,`delegation`,`handoffs`,`subagents`],fields:{subagents:{array:`SubagentInfo`}}},ReasoningCapabilities:{optional:[`supported`,`streaming`,`encrypted`],fields:{}},MultimodalInputCapabilities:{optional:[`image`,`audio`,`video`,`pdf`,`file`],fields:{}},MultimodalOutputCapabilities:{optional:[`image`,`audio`],fields:{}},MultimodalCapabilities:{optional:[`input`,`output`],fields:{input:`MultimodalInputCapabilities`,output:`MultimodalOutputCapabilities`}},ExecutionCapabilities:{optional:[`codeExecution`,`sandboxed`,`maxIterations`,`maxExecutionTime`],fields:{}},HumanInTheLoopCapabilities:{optional:[`supported`,`approvals`,`interventions`,`feedback`,`interrupts`,`approveWithEdits`],fields:{}},AgentCapabilities:{optional:[`identity`,`transport`,`tools`,`output`,`state`,`multiAgent`,`reasoning`,`multimodal`,`execution`,`humanInTheLoop`,`custom`],fields:{identity:`IdentityCapabilities`,transport:`TransportCapabilities`,tools:`ToolsCapabilities`,output:`OutputCapabilities`,state:`StateCapabilities`,multiAgent:`MultiAgentCapabilities`,reasoning:`ReasoningCapabilities`,multimodal:`MultimodalCapabilities`,execution:`ExecutionCapabilities`,humanInTheLoop:`HumanInTheLoopCapabilities`}}};function To(e,t){if(typeof t==`string`)return To(e,wo[t]);if(`array`in t){if(!Array.isArray(e))return e;let n=e.map(e=>To(e,t.array));return n.every((t,n)=>t===e[n])?e:n}if(typeof e!=`object`||!e||Array.isArray(e))return e;let n=e;if(`discriminator`in t){let r=n[t.discriminator];return typeof r==`string`&&Object.prototype.hasOwnProperty.call(t.variants,r)?To(e,t.variants[r]):e}let r=n;for(let e of t.optional)Object.prototype.hasOwnProperty.call(n,e)&&n[e]===null&&(r===n&&(r={...n}),delete r[e]);for(let[e,i]of Object.entries(t.fields)){if(!Object.prototype.hasOwnProperty.call(r,e))continue;let t=To(r[e],i);t!==r[e]&&(r===n&&(r={...n}),r[e]=t)}return r}function Eo(e,t){return To(e,t)}var A=class extends Error{constructor(e){super(e)}},Do=class extends A{constructor(){super(`Connect not implemented. This method is not supported by the current agent.`)}};function Oo(e,t){return t===void 0?e:e===void 0?{...t}:{...e,...t}}function ko(e){return e===void 0?``:typeof e==`string`?e:e.filter(e=>e.type===`text`).map(e=>e.text).join(``)}function Ao(e){return Array.isArray(e)&&e.some(e=>e.type!==`text`)}var jo=(function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}})(),Mo=Object.prototype.hasOwnProperty;function No(e,t){return Mo.call(e,t)}function Po(e){if(Array.isArray(e)){for(var t=Array(e.length),n=0;n=48&&r<=57){t++;continue}return!1}return!0}function Lo(e){return e.indexOf(`/`)===-1&&e.indexOf(`~`)===-1?e:e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function Ro(e){return e.replace(/~1/g,`/`).replace(/~0/g,`~`)}function zo(e){if(e===void 0)return!0;if(e){if(Array.isArray(e)){for(var t=0,n=e.length;tUo,_areEquals:()=>j,applyOperation:()=>Jo,applyPatch:()=>Yo,applyReducer:()=>Xo,deepClone:()=>Wo,getValueByPointer:()=>qo,validate:()=>Qo,validator:()=>Zo}),Uo=Vo,Wo=Fo,Go={add:function(e,t,n){return e[t]=this.value,{newDocument:n}},remove:function(e,t,n){var r=e[t];return delete e[t],{newDocument:n,removed:r}},replace:function(e,t,n){var r=e[t];return e[t]=this.value,{newDocument:n,removed:r}},move:function(e,t,n){var r=qo(n,this.path);r&&=Fo(r);var i=Jo(n,{op:`remove`,path:this.from}).removed;return Jo(n,{op:`add`,path:this.path,value:i}),{newDocument:n,removed:r}},copy:function(e,t,n){var r=qo(n,this.from);return Jo(n,{op:`add`,path:this.path,value:Fo(r)}),{newDocument:n}},test:function(e,t,n){return{newDocument:n,test:j(e[t],this.value)}},_get:function(e,t,n){return this.value=e[t],{newDocument:n}}},Ko={add:function(e,t,n){return Io(t)?e.splice(t,0,this.value):e[t]=this.value,{newDocument:n,index:t}},remove:function(e,t,n){return{newDocument:n,removed:e.splice(t,1)[0]}},replace:function(e,t,n){var r=e[t];return e[t]=this.value,{newDocument:n,removed:r}},move:Go.move,copy:Go.copy,test:Go.test,_get:Go._get};function qo(e,t){if(t==``)return e;var n={op:`_get`,path:t};return Jo(e,n),n.value}function Jo(e,t,n,r,i,a){if(n===void 0&&(n=!1),r===void 0&&(r=!0),i===void 0&&(i=!0),a===void 0&&(a=0),n&&(typeof n==`function`?n(t,0,e,t.path):Zo(t,0)),t.path===``){var o={newDocument:e};if(t.op===`add`)return o.newDocument=t.value,o;if(t.op===`replace`)return o.newDocument=t.value,o.removed=e,o;if(t.op===`move`||t.op===`copy`)return o.newDocument=qo(e,t.from),t.op===`move`&&(o.removed=e),o;if(t.op===`test`){if(o.test=j(e,t.value),o.test===!1)throw new Uo(`Test operation failed`,`TEST_OPERATION_FAILED`,a,t,e);return o.newDocument=e,o}if(t.op===`remove`)return o.removed=e,o.newDocument=null,o;if(t.op===`_get`)return t.value=e,o;if(n)throw new Uo("Operation `op` property is not one of operations defined in RFC-6902",`OPERATION_OP_INVALID`,a,t,e);return o}r||(e=Fo(e));var s=(t.path||``).split(`/`),c=e,l=1,u=s.length,d=void 0,f=void 0,p=void 0;for(p=typeof n==`function`?n:Zo;;){if(f=s[l],f&&f.indexOf(`~`)!=-1&&(f=Ro(f)),i&&(f==`__proto__`||f==`prototype`&&l>0&&s[l-1]==`constructor`))throw TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(n&&d===void 0&&(c[f]===void 0?d=s.slice(0,l).join(`/`):l==u-1&&(d=t.path),d!==void 0&&p(t,0,e,d)),l++,Array.isArray(c)){if(f===`-`)f=c.length;else if(n&&!Io(f))throw new Uo(`Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index`,`OPERATION_PATH_ILLEGAL_ARRAY_INDEX`,a,t,e);else Io(f)&&(f=~~f);if(l>=u){if(n&&t.op===`add`&&f>c.length)throw new Uo(`The specified index MUST NOT be greater than the number of elements in the array`,`OPERATION_VALUE_OUT_OF_BOUNDS`,a,t,e);var o=Ko[t.op].call(t,c,f,e);if(o.test===!1)throw new Uo(`Test operation failed`,`TEST_OPERATION_FAILED`,a,t,e);return o}}else if(l>=u){var o=Go[t.op].call(t,c,f,e);if(o.test===!1)throw new Uo(`Test operation failed`,`TEST_OPERATION_FAILED`,a,t,e);return o}if(c=c[f],n&&l0)throw new Uo('Operation `path` property must start with "/"',`OPERATION_PATH_INVALID`,t,e,n);if((e.op===`move`||e.op===`copy`)&&typeof e.from!=`string`)throw new Uo("Operation `from` property is not present (applicable in `move` and `copy` operations)",`OPERATION_FROM_REQUIRED`,t,e,n);if((e.op===`add`||e.op===`replace`||e.op===`test`)&&e.value===void 0)throw new Uo("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)",`OPERATION_VALUE_REQUIRED`,t,e,n);if((e.op===`add`||e.op===`replace`||e.op===`test`)&&zo(e.value))throw new Uo("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)",`OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED`,t,e,n);if(n){if(e.op==`add`){var i=e.path.split(`/`).length,a=r.split(`/`).length;if(i!==a+1&&i!==a)throw new Uo("Cannot perform an `add` operation at the desired path",`OPERATION_PATH_CANNOT_ADD`,t,e,n)}else if(e.op===`replace`||e.op===`remove`||e.op===`_get`){if(e.path!==r)throw new Uo(`Cannot perform the operation at a path that does not exist`,`OPERATION_PATH_UNRESOLVABLE`,t,e,n)}else if(e.op===`move`||e.op===`copy`){var o=Qo([{op:`_get`,path:e.from,value:void 0}],n);if(o&&o.name===`OPERATION_PATH_UNRESOLVABLE`)throw new Uo(`Cannot perform the operation from a path that does not exist`,`OPERATION_FROM_UNRESOLVABLE`,t,e,n)}}}function Qo(e,t,n){try{if(!Array.isArray(e))throw new Uo(`Patch sequence must be an array`,`SEQUENCE_NOT_AN_ARRAY`);if(t)Yo(Fo(t),Fo(e),n||!0);else{n||=Zo;for(var r=0;rus,generate:()=>cs,observe:()=>ss,unobserve:()=>os}),es=new WeakMap,ts=function(){function e(e){this.observers=new Map,this.obj=e}return e}(),ns=function(){function e(e,t){this.callback=e,this.observer=t}return e}();function rs(e){return es.get(e)}function is(e,t){return e.observers.get(t)}function as(e,t){e.observers.delete(t.callback)}function os(e,t){t.unobserve()}function ss(e,t){var n=[],r,i=rs(e);if(!i)i=new ts(e),es.set(e,i);else{var a=is(i,t);r=a&&a.observer}if(r)return r;if(r={},i.value=Fo(e),t){r.callback=t,r.next=null;var o=function(){cs(r)},s=function(){clearTimeout(r.next),r.next=setTimeout(o)};typeof window<`u`&&(window.addEventListener(`mouseup`,s),window.addEventListener(`keyup`,s),window.addEventListener(`mousedown`,s),window.addEventListener(`keydown`,s),window.addEventListener(`change`,s))}return r.patches=n,r.object=e,r.unobserve=function(){cs(r),clearTimeout(r.next),as(i,r),typeof window<`u`&&(window.removeEventListener(`mouseup`,s),window.removeEventListener(`keyup`,s),window.removeEventListener(`mousedown`,s),window.removeEventListener(`keydown`,s),window.removeEventListener(`change`,s))},i.observers.set(t,new ns(t,r)),r}function cs(e,t){t===void 0&&(t=!1);var n=es.get(e.object);ls(n.value,e.object,e.patches,``,t),e.patches.length&&Yo(n.value,e.patches);var r=e.patches;return r.length>0&&(e.patches=[],e.callback&&e.callback(r)),r}function ls(e,t,n,r,i){if(t!==e){typeof t.toJSON==`function`&&(t=t.toJSON());for(var a=Po(t),o=Po(e),s=!1,c=o.length-1;c>=0;c--){var l=o[c],u=e[l];if(No(t,l)&&(t[l]!==void 0||u===void 0||Array.isArray(t)!==!1)){var d=t[l];typeof u==`object`&&u&&typeof d==`object`&&d&&Array.isArray(u)===Array.isArray(d)?ls(u,d,n,r+`/`+Lo(l),i):u!==d&&(i&&n.push({op:`test`,path:r+`/`+Lo(l),value:Fo(u)}),n.push({op:`replace`,path:r+`/`+Lo(l),value:Fo(d)}))}else Array.isArray(e)===Array.isArray(t)?(i&&n.push({op:`test`,path:r+`/`+Lo(l),value:Fo(u)}),n.push({op:`remove`,path:r+`/`+Lo(l)}),s=!0):(i&&n.push({op:`test`,path:r,value:e}),n.push({op:`replace`,path:r,value:t}))}if(s||a.length!=o.length)for(var c=0;c0&&a[a.length-1])&&(s[0]===6||s[0]===2)){n=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)}function _s(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-->0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a}function vs(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r1||c(e,t)})},t&&(i[e]=t(i[e])))}function c(e,t){try{l(r[e](t))}catch(e){f(a[0][3],e)}}function l(e){e.value instanceof ys?Promise.resolve(e.value.v).then(u,d):f(a[0][2],e)}function u(e){c(`next`,e)}function d(e){c(`throw`,e)}function f(e,t){e(t),a.shift(),a.length&&c(a[0][0],a[0][1])}}function xs(e){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof gs==`function`?gs(e):e[Symbol.iterator](),n={},r(`next`),r(`throw`),r(`return`),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise(function(r,a){n=e[t](n),i(r,a,n.done,n.value)})}}function i(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)}}function Ss(e){return typeof e==`function`}function Cs(e){var t=e(function(e){Error.call(e),e.stack=Error().stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var ws=Cs(function(e){return function(t){e(this),this.message=t?t.length+` errors occurred during unsubscription: -`+t.map(function(e,t){return t+1+`) `+e.toString()}).join(` - `):``,this.name=`UnsubscriptionError`,this.errors=t}});function Ts(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var Es=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var e,t,n,r,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a){if(this._parentage=null,Array.isArray(a))try{for(var o=gs(a),s=o.next();!s.done;s=o.next())s.value.remove(this)}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}else a.remove(this)}var c=this.initialTeardown;if(Ss(c))try{c()}catch(e){i=e instanceof ws?e.errors:[e]}var l=this._finalizers;if(l){this._finalizers=null;try{for(var u=gs(l),d=u.next();!d.done;d=u.next()){var f=d.value;try{ks(f)}catch(e){i??=[],e instanceof ws?i=vs(vs([],_s(i)),_s(e.errors)):i.push(e)}}}catch(e){n={error:e}}finally{try{d&&!d.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}}if(i)throw new ws(i)}},e.prototype.add=function(t){if(t&&t!==this){if(this.closed)ks(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=this._finalizers??[]).push(t)}}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&Ts(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&Ts(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=(function(){var t=new e;return t.closed=!0,t})(),e}(),Ds=Es.EMPTY;function Os(e){return e instanceof Es||e&&`closed`in e&&Ss(e.remove)&&Ss(e.add)&&Ss(e.unsubscribe)}function ks(e){Ss(e)?e():e.unsubscribe()}var As={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},js={setTimeout:function(e,t){var n=[...arguments].slice(2),r=js.delegate;return r?.setTimeout?r.setTimeout.apply(r,vs([e,t],_s(n))):setTimeout.apply(void 0,vs([e,t],_s(n)))},clearTimeout:function(e){return(js.delegate?.clearTimeout||clearTimeout)(e)},delegate:void 0};function Ms(e){js.setTimeout(function(){var t=As.onUnhandledError;if(t)t(e);else throw e})}function Ns(){}var Ps=(function(){return Ls(`C`,void 0,void 0)})();function Fs(e){return Ls(`E`,void 0,e)}function Is(e){return Ls(`N`,e,void 0)}function Ls(e,t,n){return{kind:e,value:t,error:n}}var Rs=null;function zs(e){if(As.useDeprecatedSynchronousErrorHandling){var t=!Rs;if(t&&(Rs={errorThrown:!1,error:null}),e(),t){var n=Rs,r=n.errorThrown,i=n.error;if(Rs=null,r)throw i}}else e()}function Bs(e){As.useDeprecatedSynchronousErrorHandling&&Rs&&(Rs.errorThrown=!0,Rs.error=e)}var Vs=function(e){ps(t,e);function t(t){var n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,Os(t)&&t.add(n)):n.destination=Ys,n}return t.create=function(e,t,n){return new Gs(e,t,n)},t.prototype.next=function(e){this.isStopped?Js(Is(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?Js(Fs(e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?Js(Ps,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(Es),Hs=Function.prototype.bind;function Us(e,t){return Hs.call(e,t)}var Ws=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){Ks(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){Ks(e)}else Ks(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){Ks(e)}},e}(),Gs=function(e){ps(t,e);function t(t,n,r){var i=e.call(this)||this,a;if(Ss(t)||!t)a={next:t??void 0,error:n??void 0,complete:r??void 0};else{var o;i&&As.useDeprecatedNextContext?(o=Object.create(t),o.unsubscribe=function(){return i.unsubscribe()},a={next:t.next&&Us(t.next,o),error:t.error&&Us(t.error,o),complete:t.complete&&Us(t.complete,o)}):a=t}return i.destination=new Ws(a),i}return t}(Vs);function Ks(e){As.useDeprecatedSynchronousErrorHandling?Bs(e):Ms(e)}function qs(e){throw e}function Js(e,t){var n=As.onStoppedNotification;n&&js.setTimeout(function(){return n(e,t)})}var Ys={closed:!0,next:Ns,error:qs,complete:Ns},Xs=(function(){return typeof Symbol==`function`&&Symbol.observable||`@@observable`})();function Zs(e){return e}function Qs(){return $s([...arguments])}function $s(e){return e.length===0?Zs:e.length===1?e[0]:function(t){return e.reduce(function(e,t){return t(e)},t)}}var ec=function(){function e(e){e&&(this._subscribe=e)}return e.prototype.lift=function(t){var n=new e;return n.source=this,n.operator=t,n},e.prototype.subscribe=function(e,t,n){var r=this,i=rc(e)?e:new Gs(e,t,n);return zs(function(){var e=r,t=e.operator,n=e.source;i.add(t?t.call(i,n):n?r._subscribe(i):r._trySubscribe(i))}),i},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},e.prototype.forEach=function(e,t){var n=this;return t=tc(t),new t(function(t,r){var i=new Gs({next:function(t){try{e(t)}catch(e){r(e),i.unsubscribe()}},error:r,complete:t});n.subscribe(i)})},e.prototype._subscribe=function(e){return this.source?.subscribe(e)},e.prototype[Xs]=function(){return this},e.prototype.pipe=function(){return $s([...arguments])(this)},e.prototype.toPromise=function(e){var t=this;return e=tc(e),new e(function(e,n){var r;t.subscribe(function(e){return r=e},function(e){return n(e)},function(){return e(r)})})},e.create=function(t){return new e(t)},e}();function tc(e){return e??As.Promise??Promise}function nc(e){return e&&Ss(e.next)&&Ss(e.error)&&Ss(e.complete)}function rc(e){return e&&e instanceof Vs||nc(e)&&Os(e)}function ic(e){return Ss(e?.lift)}function ac(e){return function(t){if(ic(t))return t.lift(function(t){try{return e(t,this)}catch(e){this.error(e)}});throw TypeError(`Unable to lift unknown Observable type`)}}function oc(e,t,n,r,i){return new sc(e,t,n,r,i)}var sc=function(e){ps(t,e);function t(t,n,r,i,a,o){var s=e.call(this,t)||this;return s.onFinalize=a,s.shouldUnsubscribe=o,s._next=n?function(e){try{n(e)}catch(e){t.error(e)}}:e.prototype._next,s._error=i?function(e){try{i(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,s._complete=r?function(){try{r()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,s}return t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;e.prototype.unsubscribe.call(this),!n&&((t=this.onFinalize)==null||t.call(this))}},t}(Vs),cc=Cs(function(e){return function(){e(this),this.name=`ObjectUnsubscribedError`,this.message=`object unsubscribed`}}),lc=function(e){ps(t,e);function t(){var t=e.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return t.prototype.lift=function(e){var t=new uc(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new cc},t.prototype.next=function(e){var t=this;zs(function(){var n,r;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||=Array.from(t.observers);try{for(var i=gs(t.currentObservers),a=i.next();!a.done;a=i.next())a.value.next(e)}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}})},t.prototype.error=function(e){var t=this;zs(function(){if(t._throwIfClosed(),!t.isStopped){t.hasError=t.isStopped=!0,t.thrownError=e;for(var n=t.observers;n.length;)n.shift().error(e)}})},t.prototype.complete=function(){var e=this;zs(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var t=e.observers;t.length;)t.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){return this.observers?.length>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,n=this,r=n.hasError,i=n.isStopped,a=n.observers;return r||i?Ds:(this.currentObservers=null,a.push(e),new Es(function(){t.currentObservers=null,Ts(a,e)}))},t.prototype._checkFinalizedStatuses=function(e){var t=this,n=t.hasError,r=t.thrownError,i=t.isStopped;n?e.error(r):i&&e.complete()},t.prototype.asObservable=function(){var e=new ec;return e.source=this,e},t.create=function(e,t){return new uc(e,t)},t}(ec),uc=function(e){ps(t,e);function t(t,n){var r=e.call(this)||this;return r.destination=t,r.source=n,r}return t.prototype.next=function(e){var t,n;(n=(t=this.destination)?.next)==null||n.call(t,e)},t.prototype.error=function(e){var t,n;(n=(t=this.destination)?.error)==null||n.call(t,e)},t.prototype.complete=function(){var e,t;(t=(e=this.destination)?.complete)==null||t.call(e)},t.prototype._subscribe=function(e){return this.source?.subscribe(e)??Ds},t}(lc),dc={now:function(){return(dc.delegate||Date).now()},delegate:void 0},fc=function(e){ps(t,e);function t(t,n,r){t===void 0&&(t=1/0),n===void 0&&(n=1/0),r===void 0&&(r=dc);var i=e.call(this)||this;return i._bufferSize=t,i._windowTime=n,i._timestampProvider=r,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,t),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(t){var n=this,r=n.isStopped,i=n._buffer,a=n._infiniteTimeWindow,o=n._timestampProvider,s=n._windowTime;r||(i.push(t),!a&&i.push(o.now()+s)),this._trimBuffer(),e.prototype.next.call(this,t)},t.prototype._subscribe=function(e){this._throwIfClosed(),this._trimBuffer();for(var t=this._innerSubscribe(e),n=this,r=n._infiniteTimeWindow,i=n._buffer.slice(),a=0;a=0}function cl(e){for(var t=[`topLevel`],n=0,r,i,a,o=function(e){return t.push(e)},s=function(e){return t[t.length-1]=e},c=function(e){r??(r=n,i=t.length,a=e)},l=function(e){e===a&&(r=void 0,i=void 0,a=void 0)},u=function(){return t.pop()},d=function(){return n--},f=function(e){if(`0`<=e&&e<=`9`){o(`number`);return}switch(e){case`"`:o(`string`);return;case`-`:o(`numberNeedsDigit`);return;case`t`:o(`true`);return;case`f`:o(`false`);return;case`n`:o(`null`);return;case`[`:o(`arrayNeedsValue`);return;case`{`:o(`objectNeedsKey`);return}},p=e.length;n`9`)&&(d(),u());break;case`numberNeedsDigit`:s(`number`);break;case`numberNeedsExponent`:s(m===`+`||m===`-`?`numberNeedsDigit`:`number`);break;case`true`:case`false`:case`null`:(m<`a`||m>`z`)&&(d(),u());break;case`arrayNeedsValue`:m===`]`?u():sl(m)||(l(`collectionItem`),s(`arrayNeedsComma`),f(m));break;case`arrayNeedsComma`:m===`]`?u():m===`,`&&(c(`collectionItem`),s(`arrayNeedsValue`));break;case`objectNeedsKey`:m===`}`?u():m===`"`&&(c(`collectionItem`),s(`objectNeedsColon`),o(`string`));break;case`objectNeedsColon`:m===`:`&&s(`objectNeedsValue`);break;case`objectNeedsValue`:sl(m)||(l(`collectionItem`),s(`objectNeedsComma`),f(m));break;case`objectNeedsComma`:m===`}`?u():m===`,`&&(c(`collectionItem`),s(`objectNeedsKey`))}}i!=null&&(t.length=i);for(var h=[r==null?e:e.slice(0,r)],g=function(t){return h.push(t.slice(e.length-e.lastIndexOf(t[0])))},_=t.length-1;_>=0;_--)switch(t[_]){case`string`:h.push(`"`);break;case`numberNeedsDigit`:case`numberNeedsExponent`:h.push(`0`);break;case`true`:g(`true`);break;case`false`:g(`false`);break;case`null`:g(`null`);break;case`arrayNeedsValue`:case`arrayNeedsComma`:h.push(`]`);break;case`objectNeedsKey`:case`objectNeedsColon`:case`objectNeedsValue`:case`objectNeedsComma`:h.push(`}`)}return h.join(``)}function ll(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function ul(e,t=`|`){return e.map(e=>Ll(e)).join(t)}function dl(e,t){return typeof t==`bigint`?t.toString():t}var fl=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function pl(e){return new fl(e)}function ml(e){return e==null}function hl(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function gl(e,t){let n=e/t,r=Math.round(n),i=4*2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r){let e=t._zod.def.shape[a];return r?r(e,a):e}):Cl(e,a,r?r(n.value,a):n.value))}}function Tl(e,t){for(let n of Reflect.ownKeys(t)){let r=Object.getOwnPropertyDescriptor(t,n);r.enumerable&&(r.get?Sl(e,n,()=>t[n]):Cl(e,n,r.value))}}function El(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function Dl(e){return JSON.stringify(e)}function Ol(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var kl=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function Al(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var jl=pl(()=>{if(Eu.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function Ml(e){if(Al(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return Al(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function Nl(e){return Ml(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var Pl=new Set([`string`,`number`,`symbol`]);function Fl(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Il(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function P(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function Ll(e){return typeof e==`bigint`?e.toString()+`n`:typeof e==`string`?`"${e}"`:`${e}`}function Rl(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout===`optional`)}var zl={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},Bl={int64:[BigInt(`-9223372036854775808`),BigInt(`9223372036854775807`)],uint64:[BigInt(0),BigInt(`18446744073709551615`)]};function Vl(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);let i={};return wl(i,e,Hl(e,t)),Il(e,El(n,{shape:i,checks:[]}))}function Hl(e,t){let n=xl(e),r=[];for(let e of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(n,e)?.enumerable)throw Error(`Unrecognized key: "${String(e)}"`);t[e]&&r.push(e)}return r}function Ul(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);let i=new Set(Hl(e,t)),a={};return wl(a,e,Reflect.ownKeys(xl(e)).filter(e=>!i.has(e))),Il(e,El(n,{shape:a,checks:[]}))}function Wl(e,t){if(!Ml(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=xl(e);for(let e of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return Il(e,El(e._zod.def,{shape:Gl(e,t)}))}function Gl(e,t){let n={};return wl(n,e,Reflect.ownKeys(xl(e))),Tl(n,t),n}function Kl(e,t){if(!Ml(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return Il(e,El(e._zod.def,{shape:Gl(e,t)}))}function ql(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);let n={};return wl(n,e,Reflect.ownKeys(xl(e))),wl(n,t,Reflect.ownKeys(xl(t))),Il(e,El(e._zod.def,{shape:n,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function Jl(e,t,n,r=`partial`){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);let a=n?new Set(Hl(t,n)):void 0,o={};return wl(o,t,Reflect.ownKeys(xl(t)),e&&((t,n)=>a&&!a.has(n)?t:new e({type:`optional`,innerType:t}))),Il(t,El(t._zod.def,{shape:o,checks:[]}))}function Yl(e,t,n){let r=n?new Set(Hl(t,n)):void 0,i={};return wl(i,t,Reflect.ownKeys(xl(t)),(t,n)=>r&&!r.has(n)?t:new e({type:`nonoptional`,innerType:t})),Il(t,El(t._zod.def,{shape:i}))}function Xl(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function $l(e){return typeof e==`string`?e:e?.message}function eu(e,t,n){var r;for(let i=t;ie;return t[_u]=!0,t}var yu,bu=Object.freeze({status:`aborted`}),xu={value:void 0,enumerable:!1},Su=`captureStackTrace`in Error?Error:null;function Cu(e){let t=Su;if(t){let n=t.stackTraceLimit;if(typeof n==`number`){try{t.stackTraceLimit=0}catch{return Su=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function I(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits=new Set}a.prototype=i;let o=n,s=o&&new WeakSet;function c(n,r){if(!n._zod){xu.value=new a(r);try{Object.defineProperty(n,"_zod",xu)}finally{xu.value=void 0}}else if(n._zod.traits.has(e))return;if(n._zod.traits.add(e),t(n,r),s){let e=Object.getPrototypeOf(n),t=n._zod.constr.prototype,r=e;for(;r&&r!==t;)r=Object.getPrototypeOf(r);let i=r??e;s.has(i)||(s.add(i),su(i,o))}let i=d.prototype;for(let e in i)Object.prototype.hasOwnProperty.call(i,e)&&(e in n||(n[e]=i[e].bind(n)))}let l=r?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(e){let t=r?.Parent?Cu(u):this;c(t,e);let n=t._zod.deferred;if(n){for(let e of n)e();t._zod.deferred=void 0}let i=globalThis.__zod_globalConfig?.postProcessor;return i&&i(t),t}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:t=>r?.Parent&&t instanceof r.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var wu=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Tu=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(yu=globalThis).__zod_globalConfig??(yu.__zod_globalConfig={});var Eu=globalThis.__zod_globalConfig;function Du(e){return e&&Object.assign(Eu,e),Eu}function Ou(){let e=this._zod;return e.message??=JSON.stringify(e.def,dl,2),e.message}function ku(e){this._zod.message=e}var Au={get:Ou,set:ku,enumerable:!0,configurable:!0},ju={value:void 0,enumerable:!1},Mu=new WeakSet([Object.prototype,Error.prototype]),Nu=(e,t)=>{e.name=`$ZodError`,ju.value=t,Object.defineProperty(e,"issues",ju),ju.value=void 0,Object.defineProperty(e,"message",Au);let n=Object.getPrototypeOf(e);Mu.has(n)||(Mu.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let e=()=>this.message;return Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0})}}))},Pu=I(`$ZodError`,Nu);I(`$ZodError`,Nu,void 0,{Parent:Error});function Fu(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t===`__proto__`?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function Iu(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?Fu(n,i.path[0],()=>[]).push(t(i)):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Lu(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i{let t=(n,r,i,a)=>{let o=i?{...i,async:!1}:{async:!1},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new wu;if(s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>tu(e,o,Du())));throw kl(n,a?.callee??t),n}return s.value};return t},Bu=e=>{let t=async(n,r,i,a)=>{let o=i?{...i,async:!0}:{async:!0},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>tu(e,o,Du())));throw kl(n,a?.callee??t),n}return s.value};return t},Vu=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new wu;return a.issues.length?Hu(e,a.issues,i):{success:!0,data:a.value}};function Hu(e,t,n){let r;return{success:!1,get error(){return r||(r=new e(t.map(e=>tu(e,n,Du()))),t=void 0,n=void 0),r},set error(e){r=e,t=void 0,n=void 0}}}var Uu=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?Hu(e,a.issues,i):{success:!0,data:a.value}},Wu=Symbol.for(`zod.compile.invalid`),Gu=Symbol.for(`zod.compile.fallback`),Ku=((e,t,n)=>{let r=e._zod.bag.validator;if(r!==void 0){if(r(t)!==Wu)return!0;if(r.definite===!0&&n===void 0)return!1}return qu(e,t,n)});function qu(e,t,n){let r=n?{...n,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},i=e._zod.bag.fallbackRun,a;if(i?(r[Gu]=!0,a=i({value:t,issues:[]},r)):a=e._zod.run({value:t,issues:[]},r),a instanceof Promise)throw new wu;return a.issues.length===0}var Ju=async(e,t,n)=>{let r=n?{...n,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},i=e._zod.run({value:t,issues:[]},r);return i instanceof Promise&&(i=await i),i.issues.length===0},Yu=e=>{let t=zu(e),n=(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return t(e,r,o,Ru(n,a))};return n},Xu=e=>{let t=zu(e),n=(e,r,i,a)=>t(e,r,i,Ru(n,a));return n},Zu=e=>{let t=Bu(e),n=async(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return await t(e,r,o,Ru(n,a))};return n},Qu=e=>{let t=Bu(e),n=async(e,r,i,a)=>await t(e,r,i,Ru(n,a));return n},$u=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Vu(e)(t,n,i)},ed=e=>(t,n,r)=>Vu(e)(t,n,r),td=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Uu(e)(t,n,i)},nd=e=>async(t,n,r)=>Uu(e)(t,n,r),rd=/^[cC][0-9a-z]{6,}$/,id=/^[0-9a-z]+$/,ad=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,od=/^[0-9a-vA-V]{20}$/,sd=/^[A-Za-z0-9]{27}$/,cd=/^[a-zA-Z0-9_-]{21}$/;function ld(e){return RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var ud=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,L=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,R=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,dd=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,fd=`^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`;function pd(){return new RegExp(fd,`u`)}var md=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,hd=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,gd=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,_d=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,vd=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,yd=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/,bd=/^https?$/,xd=/^\+[1-9]\d{6,14}$/,Sd=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`;function Cd(e){return RegExp(`^${e}$`)}var wd=Cd(Sd);function Td(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Ed(e){return RegExp(`^${Td(e)}$`)}function Dd(e){let t=[`Z`];e.offset&&t.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let n=`${Td({precision:e.precision,seconds:!0})}(?:${t.join(`|`)})`,r=e.local?`${n}|${Td({precision:e.precision})}`:n;return RegExp(`^${Sd}T(?:${r})$`)}var Od=/^[\s\S]{0,}$/,kd=/^-?\d+$/,Ad=/^-?\d+(?:\.\d+)?$/,jd=/^(?:true|false)$/i,Md=/^null$/i,Nd=/^undefined$/i,Pd=/^[^A-Z]*$/,Fd=/^[^a-z]*$/,Id=I(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),Ld=e=>{let t=e.value;return!ml(t)&&t.length!==void 0},Rd={number:`number`,bigint:`bigint`,object:`date`},zd=I(`$ZodCheckLessThan`,(e,t)=>{Id.init(e,t);let n=Rd[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value{Id.init(e,t);let n=Rd[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:Rd[typeof r.value]??n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Vd=I(`$ZodCheckMultipleOf`,(e,t)=>{Id.init(e,t),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):gl(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Hd=I(`$ZodCheckNumberFormat`,(e,t)=>{Id.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=zl[t.format];e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}sa&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Ud=I(`$ZodCheckMaxLength`,(e,t)=>{var n;Id.init(e,t),(n=e._zod.def).when??(n.when=Ld),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>t.maximum?ru(r):i)<=t.maximum)return;let a=iu(r);n.issues.push({origin:a,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Wd=I(`$ZodCheckMinLength`,(e,t)=>{var n;Id.init(e,t),(n=e._zod.def).when??(n.when=Ld),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>=t.minimum&&i=t.minimum)return;let a=iu(r);n.issues.push({origin:a,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Gd=I(`$ZodCheckLengthEquals`,(e,t)=>{var n;Id.init(e,t),(n=e._zod.def).when??(n.when=Ld),e._zod.check=n=>{let r=n.value,i=r.length,a=typeof r==`string`&&i>=t.length&&i<=t.length*2?ru(r):i;if(a===t.length)return;let o=iu(r),s=a>t.length;n.issues.push({origin:o,...s?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Kd=I(`$ZodCheckStringFormat`,(e,t)=>{var n,r;Id.init(e,t),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),qd=I(`$ZodCheckRegex`,(e,t)=>{Kd.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Jd=I(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=Pd,Kd.init(e,t)}),Yd=I(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Fd,Kd.init(e,t)}),Xd=I(`$ZodCheckIncludes`,(e,t)=>{Id.init(e,t);let n=Fl(t.includes);t.pattern=new RegExp(typeof t.position==`number`?`^.{${t.position},}${n}`:n),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Zd=I(`$ZodCheckStartsWith`,(e,t)=>{Id.init(e,t);let n=RegExp(`^${Fl(t.prefix)}.*`);t.pattern??=n,e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Qd=I(`$ZodCheckEndsWith`,(e,t)=>{Id.init(e,t);let n=RegExp(`.*${Fl(t.suffix)}$`);t.pattern??=n,e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),$d=I(`$ZodCheckOverwrite`,(e,t)=>{Id.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),ef=class{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}indented(e){this.indent+=1;try{e(this)}finally{--this.indent}}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` -`).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.content??[``];return new e(...Object.keys(this.closed),`return function (${this.args.join(`, `)}) {\n${t.join(` -`)}\n};`)(...Object.values(this.closed))}},tf={major:4,minor:6,patch:5},nf=I(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=tf;let r=e._zod.def.checks,i=e._zod.traits.has(`$ZodCheck`)?[e,...r??[]]:r?.length?[...r]:[];for(let t of i)for(let n of t._zod.onattach)n(e);if(i.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(t,n,r)=>{if(t.memo)return t;let i=Xl(t),a;for(let o of n){if(o._zod.def.when){if(Zl(t)||!o._zod.def.when(t))continue}else if(i)continue;let n=t.issues.length,s=o._zod.check(t);if(s instanceof Promise&&r?.async===!1)throw new wu;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,t.issues.length!==n&&(eu(t.issues,n,e),i||=Xl(t,n))});else{if(t.issues.length===n)continue;eu(t.issues,n,e),i||=Xl(t,n)}}return a?a.then(()=>t):t},n=(n,r,a)=>{if(Xl(n))return n.aborted=!0,n;let o=t(r,i,a);if(o instanceof Promise){if(a.async===!1)throw new wu;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(r,a)=>{if(a.skipChecks)return e._zod.parse(r,a);if(a.direction===`backward`){let t=e._zod.parse({value:r.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,r,a)):n(t,r,a)}let o=e._zod.parse(r,a);if(o instanceof Promise){if(a.async===!1)throw new wu;return o.then(e=>t(e,i,a))}return t(o,i,a)}}},{get"~standard"(){return lu(this,`~standard`,of(this))},set"~standard"(e){cu(this,`~standard`,e)}}),rf=(e,t)=>e.issues.length?{issues:e.issues.map(e=>tu(e,t,Du()))}:{value:e.value};async function af(e,t){let n={async:!0};return rf(await e._zod.run({value:t,issues:[]},n),n)}function of(e){return{validate:t=>{let n={async:!1};try{let r=e._zod.run({value:t,issues:[]},n);if(!(r instanceof Promise))return rf(r,n)}catch{}return af(e,t)},vendor:`zod`,version:1}}var sf=I(`$ZodString`,(e,t)=>{nf.init(e,t),e._zod.pattern=t.pattern??Od,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),cf=I(`$ZodStringFormat`,(e,t)=>{Kd.init(e,t),sf.init(e,t)}),lf=I(`$ZodGUID`,(e,t)=>{t.pattern??=L,cf.init(e,t)}),uf=I(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=R(e)}else t.pattern??=R();cf.init(e,t)}),df=I(`$ZodEmail`,(e,t)=>{t.pattern??=dd,cf.init(e,t)});function ff(e){try{return typeof URL<`u`&&typeof URL.canParse==`function`?URL.canParse(e):(new URL(e),!0)}catch{return!1}}function pf(e,t){return!(`normalize`in t)&&!(`hostname`in t)&&!(`protocol`in t)?ff(e)||2:mf(e,t)}function mf(e,t){if(!t.normalize&&t.protocol?.source===bd.source&&!/^https?:\/\//i.test(e))return 1;try{if(typeof URL<`u`){let t=URL;if(typeof t.parse==`function`)return t.parse(e)??2}return new URL(e)}catch{return 2}}var hf=/[\t\n\r]/g;function gf(e){return e.replace(hf,``)}function _f(e,t){return t.lastIndex=0,t.test(e.hostname)}function vf(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(`:`)?e.protocol.slice(0,-1):e.protocol)}var yf=I(`$ZodURL`,(e,t)=>{cf.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),i=pf(r,t);if(i===1){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}if(i===2){n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort});return}if(i===!0){n.value=gf(r);return}t.hostname&&!_f(i,t.hostname)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort}),t.protocol&&!vf(i,t.protocol)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort}),n.value=t.normalize?i.href:gf(r);return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),bf=I(`$ZodEmoji`,(e,t)=>{t.pattern??=pd(),cf.init(e,t)}),xf=I(`$ZodNanoID`,(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw Error(`Invalid nanoid length: ${t.length}`);t.pattern??=t.length===void 0?cd:ld(t.length),cf.init(e,t)}),Sf=I(`$ZodCUID`,(e,t)=>{t.pattern??=rd,cf.init(e,t)}),Cf=I(`$ZodCUID2`,(e,t)=>{t.pattern??=id,cf.init(e,t)}),wf=I(`$ZodULID`,(e,t)=>{t.pattern??=ad,cf.init(e,t)}),Tf=I(`$ZodXID`,(e,t)=>{t.pattern??=od,cf.init(e,t)}),Ef=I(`$ZodKSUID`,(e,t)=>{t.pattern??=sd,cf.init(e,t)}),Df=I(`$ZodISODateTime`,(e,t)=>{t.pattern??=Dd(t),cf.init(e,t)}),Of=I(`$ZodISODate`,(e,t)=>{t.pattern??=wd,cf.init(e,t)}),kf=I(`$ZodISOTime`,(e,t)=>{t.pattern??=Ed(t),cf.init(e,t)}),Af=I(`$ZodISODuration`,(e,t)=>{t.pattern??=ud,cf.init(e,t)}),jf=I(`$ZodIPv4`,(e,t)=>{t.pattern??=md,cf.init(e,t)}),Mf=/^[0-9a-fA-F:.]+$/;function Nf(e){return Mf.test(e)?ff(`http://[${e}]`):!1}var Pf=I(`$ZodIPv6`,(e,t)=>{t.pattern??=hd,cf.init(e,t),e._zod.check=n=>{Nf(n.value)||n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}),Ff=I(`$ZodCIDRv4`,(e,t)=>{t.pattern??=gd,cf.init(e,t)});function If(e){let t=e.split(`/`);if(t.length!==2)return!1;let[n,r]=t;if(!r)return!1;let i=Number(r);return`${i}`!==r||i<0||i>128?!1:Nf(n)}var Lf=I(`$ZodCIDRv6`,(e,t)=>{t.pattern??=_d,cf.init(e,t),e._zod.check=n=>{If(n.value)||n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}});function Rf(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var zf=/^[0-9a-zA-Z+/]*={0,2}$/,Bf=I(`$ZodBase64`,(e,t)=>{t.pattern??=zf,cf.init(e,t),e._zod.check=n=>{Rf(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}}),Vf=/^[A-Za-z0-9_-]*$/;function Hf(e){if(!Vf.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return Rf(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var Uf=I(`$ZodBase64URL`,(e,t)=>{t.pattern??=Vf,cf.init(e,t),e._zod.check=n=>{Hf(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),Wf=I(`$ZodE164`,(e,t)=>{t.pattern??=xd,cf.init(e,t)});function Gf(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var Kf=I(`$ZodJWT`,(e,t)=>{cf.init(e,t),e._zod.check=n=>{Gf(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),qf=I(`$ZodNumber`,(e,t)=>{nf.init(e,t),e._zod.pattern=Ad,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:String(i):void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),Jf=I(`$ZodNumberFormat`,(e,t)=>{Hd.init(e,t),qf.init(e,t)}),Yf=I(`$ZodBoolean`,(e,t)=>{nf.init(e,t),e._zod.pattern=jd,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),Xf=I(`$ZodUndefined`,(e,t)=>{nf.init(e,t),e._zod.pattern=Nd,e._zod.values=new Set([void 0]),e._zod.parse=(t,n)=>{let r=t.value;return r===void 0||t.issues.push({expected:`undefined`,code:`invalid_type`,input:r,inst:e}),t}}),Zf=I(`$ZodNull`,(e,t)=>{nf.init(e,t),e._zod.pattern=Md,e._zod.values=new Set([null]),e._zod.parse=(t,n)=>{let r=t.value;return r===null||t.issues.push({expected:`null`,code:`invalid_type`,input:r,inst:e}),t}}),Qf=I(`$ZodAny`,(e,t)=>{nf.init(e,t),e._zod.parse=e=>e}),$f=I(`$ZodUnknown`,(e,t)=>{nf.init(e,t),e._zod.parse=e=>e}),ep=I(`$ZodNever`,(e,t)=>{nf.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function z(e,t,n){e.issues.length&&t.issues.push(...Ql(n,e.issues)),t.value[n]=e.value}var tp=I(`$ZodArray`,(e,t)=>{nf.init(e,t);let n=Eu.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({expected:`array`,code:`invalid_type`,input:a,inst:e}),r;r.value=n?n.alloc(e,r,Array(a.length),i):Array(a.length);let o=[],s=i?.abortEarly;for(let e=0;ez(t,r,e)));else if(z(c,r,e),s&&c.issues.length!==0&&Xl(c))break}return o.length?Promise.all(o).then(()=>r):r}});function np(e,t,n,r,i,a){let o=n in r,s=a===`optional`;if(o||!s||i!==`optional`){if(e.issues.length){if(i!==void 0&&s&&!o)return;t.issues.push(...Ql(n,e.issues))}if(!o&&i===void 0){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?(o||i===`defaulted`&&!s)&&(t.value[n]=void 0):t.value[n]=e.value}}var rp=[];function ip(e){let t=Object.keys(e.shape),n=Object.getOwnPropertySymbols(e.shape),r=n.length?n:rp,i=r.length?[...t,...r]:t;for(let t of i)if(!e.shape?.[t]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${String(t)}": expected a Zod schema`);let a=Rl(e.shape);return{...e,allKeys:i,symbolKeys:r,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(a)}}function ap(e,t,n,r,i,a,o){let s=[],c=i.keySet,l=i.catchall._zod,u=l.def.type,d=l.optin,f=l.optout,p=0;for(let i in t){if(o&&n.issues.length!==p){if(Xl(n,p))break;p=n.issues.length}if(c.has(i))continue;if(i===`__proto__`){u===`never`&&s.push(i);continue}if(u===`never`){s.push(i);continue}let a=l.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>np(e,n,i,t,d,f))):np(a,n,i,t,d,f)}return s.length&&n.issues.push({code:`unrecognized_keys`,keys:s,input:t,inst:a,continue:!0}),e.length?Promise.all(e).then(()=>n):n}var op=I(`$ZodObject`,(e,t)=>{nf.init(e,t);let n=Object.getOwnPropertyDescriptor(t,`shape`),r=n?.get?n.get.raw:t.shape??{};if(r){let e=()=>{let n={...r};return Object.defineProperty(t,"shape",{value:n}),e.raw=n,n};e.raw=r,Object.defineProperty(t,"shape",{get:e})}let i=pl(()=>ip(t));F(e,`propValues`,e=>{let t=e.def.shape,n={};for(let e in t){let r=t[e]._zod;if(r.values){Object.prototype.hasOwnProperty.call(n,e)||yl(n,e,new Set);for(let t of r.values)n[e].add(t);r.optin!==void 0&&n[e].add(void 0)}}return n});let a=Al,o=t.catchall,s,c=Eu.memoizer;c?.attach(e),e._zod.parse=(t,n)=>{s??=i.value;let r=t.value;if(!a(r))return t.issues.push({expected:`object`,code:`invalid_type`,input:r,inst:e}),t;t.value=c?c.alloc(e,t,{},n):{};let l=[],u=s.shape,d=n?.abortEarly,f=t.issues.length;for(let e of s.allKeys){if(d&&t.issues.length!==f){if(Xl(t,f))break;f=t.issues.length}if(e===`__proto__`)continue;let i=u[e],a=i._zod.optin,o=i._zod.optout,s=i._zod.run({value:r[e],issues:[]},n);s instanceof Promise?l.push(s.then(n=>np(n,t,e,r,a,o))):np(s,t,e,r,a,o)}return o?ap(l,r,t,n,i.value,e,d===!0):l.length?Promise.all(l).then(()=>t):t}}),sp=I(`$ZodObjectJIT`,(e,t)=>{op.init(e,t);let n=e._zod.parse,r=pl(()=>ip(t)),i=Eu.memoizer,a=t=>{let n=r.value,a=n.symbolKeys,o=new ef([`payload`,`ctx`],{shape:t,inst:e,memo:i,syms:a}),s=e=>`shape[${e}]._zod.run({ value: input[${e}], issues: [] }, ctx)`,c=(e,t)=>` - let ${e}_ab = false; - for (let i = 0; i < ${e}.issues.length; i++) { - const iss = ${e}.issues[i]; - iss.path = iss.path ? [${t}, ...iss.path] : [${t}]; - payload.issues.push(iss); - if (iss.continue !== true) ${e}_ab = true; - } - if (${e}_ab && ctx && ctx.abortEarly) { - payload.value = newResult; - return payload; - }`;o.write(`const input = payload.value;`);let l=Object.create(null),u=0;for(let e of n.allKeys)l[e]=`key_${u++}`;o.write(i?`const newResult = memo.alloc(inst, payload, {}, ctx);`:`const newResult = {};`);for(let e of n.allKeys){if(e===`__proto__`)continue;let n=l[e],r=typeof e==`symbol`?`syms[${a.indexOf(e)}]`:Dl(e),i=`${r} in input`,u=t[e],d=u?._zod?.optin,f=d!==void 0,p=u?._zod?.optout===`optional`;if(o.write(`const ${n} = ${s(r)};`),f&&p){let e=d===`optional`?`${n}_present`:`${n}.value !== undefined || ${n}_present`;o.write(` - const ${n}_present = ${i}; - if (!${n}.issues.length || ${n}_present) { - if (${n}.issues.length) {${c(n,r)} - } - - if (${e}) { - newResult[${r}] = ${n}.value; - } - } - - `)}else f?(o.write(` - if (${n}.issues.length) {${c(n,r)} - } - `),d===`defaulted`?o.write(`newResult[${r}] = ${n}.value;`):o.write(` - if (${n}.value !== undefined || ${i}) { - newResult[${r}] = ${n}.value; - } - `)):o.write(` - const ${n}_present = ${i}; - if (${n}.issues.length) {${c(n,r)} - } - if (!${n}_present && !${n}.issues.length) { - payload.issues.push({ - code: "invalid_type", - expected: "nonoptional", - input: undefined, - path: [${r}] - }); - if (ctx && ctx.abortEarly) { - payload.value = newResult; - return payload; - } - } - - if (${n}_present) { - newResult[${r}] = ${n}.value; - } - - `)}return o.write(`payload.value = newResult;`),o.write(`return payload;`),o.compile()},o,s=Al,c=!Eu.jitless,l=c&&jl.value,u=t.catchall,d;e._zod.parse=(i,f)=>{d??=r.value;let p=i.value;return s(p)?c&&l&&f?.async===!1&&f.jitless!==!0?(o||=a(t.shape),i=o(i,f),u?ap([],p,i,f,d,e,f?.abortEarly===!0):i):n(i,f):(i.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),i)}});function cp(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!Xl(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>tu(e,r,Du())))}),t)}var lp=I(`$ZodUnion`,(e,t)=>{nf.init(e,t),F(e,`optin`,e=>e.def.options.some(e=>e._zod.optin===`defaulted`)?`defaulted`:e.def.options.some(e=>e._zod.optin!==void 0)?`optional`:void 0),F(e,`optout`,e=>e.def.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),F(e,`values`,e=>{if(e.def.options.every(e=>e._zod.values))return new Set(e.def.options.flatMap(e=>Array.from(e._zod.values)))}),F(e,`pattern`,e=>{if(e.def.options.every(e=>e._zod.pattern)){let t=e.def.options.map(e=>e._zod.pattern);return RegExp(`^(${t.map(e=>hl(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>cp(t,r,e,i)):cp(o,r,e,i)}});function up(e){let t=new Map;for(let n of e.options){let r=n._zod.propValues?.[e.discriminator];if(!r||r.size===0)throw Error(`Invalid discriminated union option at index "${e.options.indexOf(n)}"`);for(let e of r)if(t.has(e)){if(e!==void 0)throw Error(`Duplicate discriminator value "${String(e)}"`);t.set(e,null)}else t.set(e,n)}return t}var dp=I(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,lp.init(e,t);let n=e._zod.parse;F(e,`propValues`,e=>{let t={},n=0;for(let r of e.def.options){let i=r._zod.propValues;if(!i||Object.keys(i).length===0)throw Error(`Invalid discriminated union option at index "${e.def.options.indexOf(r)}"`);i[e.def.discriminator]?.has(void 0)&&n++;for(let[e,n]of Object.entries(i)){Object.prototype.hasOwnProperty.call(t,e)||yl(t,e,new Set);for(let r of n)t[e].add(r)}}return!e.def.unionFallback&&n>1&&t[e.def.discriminator]?.delete(void 0),t}),t.options.forEach((e,n)=>{let r=bl(e._zod.def);if(r&&!Object.prototype.hasOwnProperty.call(r,t.discriminator))throw Error(`Invalid discriminated union option at index "${n}"`)});let r=pl(()=>up(t));e._zod.parse=(i,a)=>{let o=i.value;if(!Al(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=o?.[t.discriminator],c=r.value.get(s);return c&&(s!==void 0||a.direction!==`backward`)?c._zod.run(i,a):t.unionFallback||a.direction===`backward`?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,options:Array.from(r.value.keys()).filter(e=>r.value.get(e)!==null),input:o,path:[t.discriminator],inst:e}),i)}}),fp=I(`$ZodIntersection`,(e,t)=>{nf.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>mp(e,t,n)):mp(e,i,a)}});function pp(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(Ml(e)&&Ml(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};Object.prototype.hasOwnProperty.call(i,`__proto__`)&&delete i.__proto__;for(let n of r){if(n===`__proto__`)continue;let r=pp(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r{let n;if(e.code===`unrecognized_keys`&&!e.path?.length)i??=e,n=e.keys;else if(e.code===`invalid_key`&&e.origin===`record`&&e.path?.length===1){let t=String(e.path[0]);a.has(t)||a.set(t,e),n=[t]}else return!1;for(let e of n)r.has(e)||r.set(e,{}),r.get(e)[t]=!0;return!0};for(let n of t.issues)o(n,`l`)||e.issues.push(n);for(let t of n.issues)o(t,`r`)||e.issues.push(t);let s=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(s.length){let t=i?s.filter(e=>i.keys.includes(e)):[];t.length&&e.issues.push({...i,keys:t});for(let n of s)!t.includes(n)&&a.has(n)&&e.issues.push(a.get(n))}let c=pp(t.value,n.value);if(!c.valid){if(Xl(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}var hp=I(`$ZodRecord`,(e,t)=>{nf.init(e,t);let n=Eu.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Ml(a))return r.issues.push({expected:`record`,code:`invalid_type`,input:a,inst:e}),r;let o=[],s=t.keyType._zod.values;if(s&&!t.partial){r.value=n?n.alloc(e,r,{},i):{};let c=new Set;for(let n of s)if(typeof n==`string`||typeof n==`number`||typeof n==`symbol`){if(c.add(typeof n==`number`?n.toString():n),n===`__proto__`)continue;let s=t.keyType._zod.run({value:n,issues:[]},i);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(s.issues.length){r.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>tu(e,i,Du())),input:n,path:[n],inst:e});continue}let l=s.value;if(l===`__proto__`)continue;let u=t.valueType._zod.run({value:a[n],issues:[]},i);u instanceof Promise?o.push(u.then(e=>{e.issues.length&&r.issues.push(...Ql(n,e.issues)),r.value[l]=e.value})):(u.issues.length&&r.issues.push(...Ql(n,u.issues)),r.value[l]=u.value)}let l;for(let e in a)if(!c.has(e)){if(t.mode===`loose`){if(e===`__proto__`)continue;r.value[e]=a[e]}else l??=[],l.push(e)}l&&l.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:l,continue:!0})}else{r.value=n?n.alloc(e,r,{},i):{};let c;for(let n of Reflect.ownKeys(a)){if(n===`__proto__`||!Object.prototype.propertyIsEnumerable.call(a,n))continue;let l=t.keyType._zod.run({value:n,issues:[]},i);if(l instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(typeof n==`string`&&Ad.test(n)&&l.issues.length){let e=t.keyType._zod.run({value:Number(n),issues:[]},i);if(e instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);e.issues.length===0&&(l=e)}if(l.issues.length){t.mode===`loose`?r.value[n]=a[n]:s?(c??=[],c.push(n)):r.issues.push({code:`invalid_key`,origin:`record`,issues:l.issues.map(e=>tu(e,i,Du())),input:n,path:[n],inst:e});continue}let u=l.value;if(u===`__proto__`)continue;let d=t.valueType._zod.run({value:a[n],issues:[]},i);d instanceof Promise?o.push(d.then(e=>{e.issues.length&&r.issues.push(...Ql(n,e.issues)),r.value[u]=e.value})):(d.issues.length&&r.issues.push(...Ql(n,d.issues)),r.value[u]=d.value)}c&&c.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:c,continue:!0})}return o.length?Promise.all(o).then(()=>r):r}}),gp=I(`$ZodEnum`,(e,t)=>{nf.init(e,t);let n=ll(t.entries),r=new Set(n);e._zod.values=r,F(e,`pattern`,e=>{let t=ll(e.def.entries).filter(e=>Pl.has(typeof e));return RegExp(t.length?`^(${t.map(e=>Fl(e.toString())).join(`|`)})$`:`^[^\\s\\S]$`)}),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),_p=I(`$ZodLiteral`,(e,t)=>{nf.init(e,t);let n=new Set(t.values);e._zod.values=n,F(e,`pattern`,e=>{let t=e.def.values;return RegExp(t.length?`^(${t.map(e=>typeof e==`string`?Fl(e):e?Fl(e.toString()):String(e)).join(`|`)})$`:`^[^\\s\\S]$`)}),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),vp=I(`$ZodTransform`,(e,t)=>{nf.init(e,t),e._zod.optin=`optional`,Eu.memoizer?.guard(e),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Tu(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n));if(i instanceof Promise)throw new wu;return n.value=i,n}});function yp(e,t){return e.value=t.issues.length?void 0:t.value,e}var bp=I(`$ZodOptional`,(e,t)=>{nf.init(e,t),F(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),e._zod.optout=`optional`,F(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t,void 0]):void 0}),F(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${hl(t.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(e.value===void 0){if(t.innerType._zod.optin!==`defaulted`)return e;let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(t=>yp(e,t)):yp(e,r)}return t.innerType._zod.run(e,n)}}),xp=I(`$ZodExactOptional`,(e,t)=>{bp.init(e,t),F(e,`values`,e=>e.def.innerType._zod.values),F(e,`pattern`,e=>e.def.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),Sp=I(`$ZodNullable`,(e,t)=>{nf.init(e,t),F(e,`optin`,e=>e.def.innerType._zod.optin),F(e,`optout`,e=>e.def.innerType._zod.optout),F(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${hl(t.source)}|null)$`):void 0}),F(e,`values`,e=>e.def.innerType._zod.values?new Set([...e.def.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),Cp=I(`$ZodDefault`,(e,t)=>{nf.init(e,t),e._zod.optin=`defaulted`,F(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>wp(e,t)):wp(r,t)}});function wp(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var Tp=I(`$ZodPrefault`,(e,t)=>{nf.init(e,t),e._zod.optin=`defaulted`,F(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),Ep=I(`$ZodNonOptional`,(e,t)=>{nf.init(e,t),F(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>Dp(t,e)):Dp(i,e)}});function Dp(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}function Op(e,t,n,r){return t.issues.length?(e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map(e=>tu(e,r,Du()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}var kp=I(`$ZodCatch`,(e,t)=>{nf.init(e,t),F(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),F(e,`optout`,e=>e.def.innerType._zod.optout),F(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(r=>Op(e,r,t,n)):Op(e,r,t,n)}}),Ap=I(`$ZodPipe`,(e,t)=>{nf.init(e,t),F(e,`values`,e=>e.def.in._zod.values),F(e,`optin`,e=>e.def.in._zod.optin),F(e,`optout`,e=>e.def.out._zod.optout),F(e,`propValues`,e=>e.def.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>jp(e,t.in,n)):jp(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>jp(e,t.out,n)):jp(r,t.out,n)}});function jp(e,t,n){return e.issues.some(e=>e.code!==`unrecognized_keys`)?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}var Mp=I(`$ZodPreprocess`,(e,t)=>{Ap.init(e,t)}),Np=I(`$ZodReadonly`,(e,t)=>{nf.init(e,t),F(e,`propValues`,e=>e.def.innerType._zod.propValues),F(e,`values`,e=>e.def.innerType._zod.values),F(e,`optin`,e=>e.def.innerType?._zod?.optin),F(e,`optout`,e=>e.def.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Pp):Pp(r)}});function Pp(e){return e.memo||(e.value=Object.freeze(e.value)),e}var Fp=I(`$ZodLazy`,(e,t)=>{nf.init(e,t),vl(e._zod,`innerType`,()=>{let e=t;return e._cachedInner||=t.getter(),e._cachedInner}),F(e,`pattern`,e=>e.innerType?._zod?.pattern),F(e,`propValues`,e=>e.innerType?._zod?.propValues),F(e,`optin`,e=>e.innerType?._zod?.optin??void 0),F(e,`optout`,e=>e.innerType?._zod?.optout??void 0),e._zod.parse=(t,n)=>e._zod.innerType._zod.run(t,n)}),Ip=I(`$ZodCustom`,(e,t)=>{Id.init(e,t),nf.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>Lp(t,n,r,e));Lp(i,n,r,e)}});function Lp(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(ou(e))}}var Rp=class extends Error{constructor(){super(`Cannot parse a reference cycle that closes through a transform`),this.name=`ZodCyclicError`}},zp=`~memo`,Bp=[];function Vp(e){return typeof e==`object`&&!!e}function Hp(e){return e.map(e=>e.path?{...e,path:e.path.slice()}:{...e})}var Up=new WeakMap,Wp=0,Gp=1,Kp=2;function qp(e,t,n){let r=Up.get(e);if(r!==void 0)return r?Kp:Wp;if(t.has(e))return Kp;t.add(e);let i=Wp,a=e=>{if(i!==Kp&&e?._zod){let r=qp(e,t,n);r>i&&(i=r)}},o=(e,r)=>{let i=Wp;for(let a of Reflect.ownKeys(e)){let o=Object.getOwnPropertyDescriptor(e,a);if(r&&!o.enumerable)continue;let s=o.get?Gp:o.value?._zod?qp(o.value,t,n):Wp;s>i&&(i=s)}return i},s=e=>{e>i&&(i=e)},c=e._zod.def;switch(c.type){case`object`:{let e=bl(c);s(e?o(e,!0):Gp),a(c.catchall);break}case`array`:a(c.element);break;case`tuple`:for(let e of c.items)a(e);a(c.rest);break;case`record`:case`map`:a(c.keyType),a(c.valueType);break;case`set`:a(c.valueType);break;case`union`:for(let e of c.options)a(e);break;case`intersection`:a(c.left),a(c.right);break;case`optional`:case`nullable`:case`default`:case`prefault`:case`catch`:case`readonly`:case`nonoptional`:case`promise`:case`success`:a(c.innerType);break;case`pipe`:a(c.in),a(c.out);break;case`function`:a(c.input),a(c.output);break;case`lazy`:{let r=c._cachedInner??(n?e._zod.innerType:void 0);s(r?qp(r,t,!1):Gp);break}case`template_literal`:case`string`:case`number`:case`int`:case`boolean`:case`bigint`:case`symbol`:case`undefined`:case`null`:case`void`:case`never`:case`any`:case`unknown`:case`date`:case`nan`:case`enum`:case`literal`:case`file`:case`transform`:case`custom`:break;default:for(let e in c){let t=Object.getOwnPropertyDescriptor(c,e);if(!t||t.get)continue;let n=t.value;if(n&&typeof n==`object`){if(n._zod)a(n);else if(Array.isArray(n))for(let e of n)a(e)}}}return t.delete(e),Jp(e,i)}function Jp(e,t){return t!==Gp&&Up.set(e,t===Kp),t}function Yp(e,t){let n=e.buckets.get(t);return n||(n=new WeakMap,e.buckets.set(t,n)),n}var Xp,Zp=[],Qp={alloc(e,t,n){let r=Xp;if(!r)return n;Xp=void 0;let i={value:n,issues:null};return r.set(t.value,i),Zp.push(i),n},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,n=(e,n)=>{if(n.direction!==`backward`&&em(n,e.value))throw new Rp;return t(e,n)};e._zod.parse=n,e._zod.run===t&&(e._zod.run=n)})},attach(e){var t;let n,r=!1,i,a;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,o=(s,c)=>{if(n===void 0){let i=qp(e,new Set,!1);if(i===Wp)return e._zod.parse=t,e._zod.run===o&&(e._zod.run=t),t(s,c);i===Kp||r?n=!0:r=!0}let l=s.value;if(!Vp(l))return t(s,c);let u=c[zp];u||(u={buckets:new WeakMap,backEdges:void 0},c[zp]=u);let d;i===c?d=a:(d=Yp(u,e),i=c,a=d);let f=d.get(l);if(f)return s.value=f.value,f.issues?f.issues.length&&s.issues.push(...Hp(f.issues)):(s.memo=!0,u.backEdges??(u.backEdges=new WeakSet),u.backEdges.add(f.value)),s;Xp=d;let p=Zp.length,m=t(s,c);Xp=void 0;let h=Zp.length>p?Zp.pop():void 0;return m instanceof Promise?m.then(e=>(h&&(h.issues=e.issues.length?Hp(e.issues):Bp),e)):(h&&(h.issues=m.issues.length?Hp(m.issues):Bp),m)};e._zod.parse=o,e._zod.run===t&&(e._zod.run=o)})}};function $p(){return Qp}function em(e,t){let n=e[zp]?.backEdges;return n!==void 0&&Vp(t)&&n.has(t)}var tm=()=>{let e={string:{unit:`characters`,verb:`to have`},file:{unit:`bytes`,verb:`to have`},array:{unit:`items`,verb:`to have`},set:{unit:`items`,verb:`to have`},map:{unit:`entries`,verb:`to have`}};function t(t){return e[t]??null}let n={regex:`input`,email:`email address`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datetime`,date:`ISO date`,time:`ISO time`,duration:`ISO duration`,ipv4:`IPv4 address`,ipv6:`IPv6 address`,mac:`MAC address`,cidrv4:`IPv4 range`,cidrv6:`IPv6 range`,base64:`base64-encoded string`,base64url:`base64url-encoded string`,json_string:`JSON string`,e164:`E.164 number`,currency_code:`currency code`,credit_card:`credit card number`,iban:`IBAN`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`};function i(e,t){return e===`number`&&typeof t==`number`&&!Number.isFinite(t)?String(t):r[e]??e}return e=>{switch(e.code){case`invalid_type`:return`Invalid input: expected ${i(e.expected)}, received ${i(au(e.input),e.input)}`;case`invalid_value`:return e.values.length===1?`Invalid input: expected ${Ll(e.values[0])}`:`Invalid option: expected one of ${ul(e.values,`|`)}`;case`too_big`:{let n=e.exact?`exactly `:e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Too big: expected ${e.origin??`value`} to have ${n}${e.maximum.toString()} ${r.unit??`elements`}`:`Too big: expected ${e.origin??`value`} to be ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.exact?`exactly `:e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Too small: expected ${e.origin} to have ${n}${e.minimum.toString()} ${r.unit}`:`Too small: expected ${e.origin} to be ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Invalid string: must start with "${t.prefix}"`:t.format===`ends_with`?`Invalid string: must end with "${t.suffix}"`:t.format===`includes`?`Invalid string: must include "${t.includes}"`:t.format===`regex`?`Invalid string: must match pattern ${t.pattern}`:`Invalid ${n[t.format]??e.format}`}case`not_multiple_of`:return`Invalid number: must be a multiple of ${e.divisor}`;case`unrecognized_keys`:return`Unrecognized key${e.keys.length>1?`s`:``}: ${ul(e.keys,`, `)}`;case`invalid_key`:return`Invalid key in ${e.origin}`;case`invalid_union`:return e.options&&Array.isArray(e.options)&&e.options.length>0?`Invalid discriminator value. Expected ${e.options.map(e=>`'${e}'`).join(` | `)}`:e.inclusive===!1?`Invalid input: more than one option matched`:`Invalid input`;case`invalid_element`:return`Invalid value in ${e.origin}`;default:return`Invalid input`}}};function nm(){return{localeError:tm()}}var rm,im=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function am(){return new im}(rm=globalThis).__zod_globalRegistry??(rm.__zod_globalRegistry=am());var om=globalThis.__zod_globalRegistry;function sm(e){return e.checks&&=[...e.checks],e}function cm(e,t){return new e(sm({type:`string`,...P(t)}))}function lm(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...P(t)})}function um(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...P(t)})}function dm(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...P(t)})}function fm(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...P(t)})}function pm(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...P(t)})}function mm(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...P(t)})}function hm(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...P(t)})}function gm(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...P(t)})}function _m(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...P(t)})}function vm(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...P(t)})}function ym(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...P(t)})}function bm(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...P(t)})}function xm(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...P(t)})}function Sm(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...P(t)})}function Cm(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...P(t)})}function wm(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...P(t)})}function Tm(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...P(t)})}function Em(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...P(t)})}function Dm(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...P(t)})}function Om(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...P(t)})}function km(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...P(t)})}function Am(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...P(t)})}function jm(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...P(t)})}function Mm(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...P(t)})}function Nm(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...P(t)})}function Pm(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...P(t)})}function Fm(e,t){return new e(sm({type:`number`,checks:[],...P(t)}))}function Im(e,t){return new e(sm({type:`number`,coerce:!0,checks:[],...P(t)}))}function Lm(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...P(t)})}function Rm(e,t){return new e({type:`boolean`,...P(t)})}function zm(e,t){return new e({type:`undefined`,...P(t)})}function Bm(e,t){return new e({type:`null`,...P(t)})}function Vm(e){return new e({type:`any`})}function Hm(e){return new e({type:`unknown`})}function Um(e,t){return new e({type:`never`,...P(t)})}function Wm(e,t){return new zd({check:`less_than`,...P(t),value:e,inclusive:!1})}function Gm(e,t){return new zd({check:`less_than`,...P(t),value:e,inclusive:!0})}function Km(e,t){return new Bd({check:`greater_than`,...P(t),value:e,inclusive:!1})}function qm(e,t){return new Bd({check:`greater_than`,...P(t),value:e,inclusive:!0})}function Jm(e,t){return new Vd({check:`multiple_of`,...P(t),value:e})}function Ym(e,t){return new Ud({check:`max_length`,...P(t),maximum:e})}function Xm(e,t){return new Wd({check:`min_length`,...P(t),minimum:e})}function Zm(e,t){return new Gd({check:`length_equals`,...P(t),length:e})}function Qm(e,t){return new qd({check:`string_format`,format:`regex`,...P(t),pattern:e})}function $m(e){return new Jd({check:`string_format`,format:`lowercase`,...P(e)})}function eh(e){return new Yd({check:`string_format`,format:`uppercase`,...P(e)})}function th(e,t){return new Xd({check:`string_format`,format:`includes`,...P(t),includes:e})}function nh(e,t){return new Zd({check:`string_format`,format:`starts_with`,...P(t),prefix:e})}function rh(e,t){return new Qd({check:`string_format`,format:`ends_with`,...P(t),suffix:e})}function ih(e){return new $d({check:`overwrite`,tx:e})}function ah(e){return ih(t=>t.normalize(e))}function oh(){return ih(e=>e.trim())}function sh(){return ih(e=>e.toLowerCase())}function ch(){return ih(e=>e.toUpperCase())}function lh(){return ih(e=>Ol(e))}function uh(e,t,n){return new e({type:`array`,element:t,...P(n)})}function dh(e,t,n){let r=P(n);return r.abort??=!0,new e({type:`custom`,check:`custom`,fn:t,...r})}function fh(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...P(n)})}function ph(e,t){let n=mh(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(ou(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,`input`in r||(r.input=t.value),r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(ou(r))}},e(t.value,t)),t);return n}function mh(e,t){let n=new Id({check:`custom`,...P(t)});return n._zod.check=e,n}function hh(e,...t){for(let n of t)for(let t of Reflect.ownKeys(n))Object.prototype.propertyIsEnumerable.call(n,t)&&yl(e,t,n[t]);return e}function gh(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??om,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,intersections:[],deferred:[],external:e?.external??void 0}}function _h(e,t,n,r,i){let a=typeof t.unrepresentable==`function`?t.unrepresentable({zodSchema:e,path:r.path,message:i}):t.unrepresentable;if(a===`any`)return!1;if(a===void 0||a===`throw`)throw Error(i);return Object.assign(n,a),!0}function vh(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,vh(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&hh(o.schema,c),t.io===`input`&&Oh(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function yh(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function bh(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);if(e.external&&e.sharedDefsExtractedFor===e.external)return;let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${yh(a)}`}}let i=`#/${r}/`;if(t[1]===n&&!t[1].schema.id)return{ref:`#`};let a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+yh(a)}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/ - -Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}r.count>1&&e.reused===`ref`&&a(n)}e.external&&(e.sharedDefsExtractedFor=e.external)}function xh(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let e of t){if(!e||typeof e!=`object`)return;xh(e);let t=Object.keys(e);if(t.length!==1||t[0]!==`type`)return;let r=e.type;for(let e of Array.isArray(r)?r:[r]){if(typeof e!=`string`)return;n.includes(e)||n.push(e)}}delete e.anyOf,e.type=n.length===1?n[0]:n}var Sh=new Set([`type`,`properties`,`required`,`additionalProperties`]),Ch=[`oneOf`,`anyOf`];function wh(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function Th(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!Sh.has(e))return null;t.push(n)}let n={},r=new Set;for(let e of t){for(let r in e.properties){if(Object.prototype.hasOwnProperty.call(n,r))continue;let e=[];for(let n of t){let t=n.properties?.[r]??wh(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}yl(n,r,e.length===1?e[0]:Th(e)??{allOf:e})}for(let t of e.required??[])r.add(t)}let i={type:`object`,properties:n};if(r.size&&(i.required=[...r]),t.every(e=>e.additionalProperties===!1))i.additionalProperties=!1;else{let e=[];for(let n of t){let t=wh(n);t&&!e.some(e=>JSON.stringify(e)===JSON.stringify(t))&&e.push(t)}e.length===1?i.additionalProperties=e[0]:e.length>1&&(i.additionalProperties={allOf:e})}return i}function Eh(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of Sh)if(t in e)return;let n=t.filter(e=>Ch.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=Th(t);else{let e=n[0],i=Ch.find(t=>Array.isArray(e[t]));if(Object.keys(e).length!==1)return;let a=t.filter(t=>t!==e),o=e[i].map(e=>Th([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,hh(e,r))}function Dh(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):hh(i,s),hh(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let t of[...e.seen.entries()].reverse())r(t[0]);if(e.target!==`openapi-3.0`)for(let t of e.seen.entries())xh(t[1].def??t[1].schema);for(let t of e.deferred)t();if(e.intersections.length){let t=new Map;for(let n of e.seen.values())for(let e of[n.schema,n.def]){let n=e?.allOf;if(!Array.isArray(n))continue;let r=t.get(n);r?r.push(e):t.set(n,[e])}for(let n of e.intersections)for(let e of t.get(n)??[])Eh(e)}}let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}hh(i,n.defId?n.schema:n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,yl(o,e.defId,e.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:Ah(t,`input`,e.processors),output:Ah(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function Oh(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return Oh(r.element,n);if(r.type===`set`)return Oh(r.valueType,n);if(r.type===`lazy`)return Oh(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`||r.type===`catch`)return Oh(r.innerType,n);if(r.type===`intersection`)return Oh(r.left,n)||Oh(r.right,n);if(r.type===`record`||r.type===`map`)return Oh(r.keyType,n)||Oh(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:Oh(r.in,n)||Oh(r.out,n);if(r.type===`object`){for(let e in r.shape)if(Oh(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(Oh(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(Oh(e,n))return!0;return!!(r.rest&&Oh(r.rest,n))}return!1}var kh=(e,t={})=>n=>{let r=gh({...n,processors:t});return vh(e,r),bh(r,e),Dh(r,e)},Ah=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=gh({...i??{},target:a,io:t,processors:n});return vh(e,o),bh(o,e),Dh(o,e)},jh=(e,t,n)=>{(e[t]===void 0||n>e[t])&&(e[t]=n)},Mh=(e,t,n)=>{(e[t]===void 0||n{jh(e,`minimum`,t),Mh(e,`maximum`,t)},Ph=(e,t)=>{e.multipleOf??=[],e.multipleOf.includes(t)||e.multipleOf.push(t)},Fh=(e,t)=>{e.patterns??=new Set,e.patterns.add(t)},Ih=(e,t)=>{e.mime=e.mime?e.mime.filter(e=>t.includes(e)):[...t]},Lh=(e,t)=>{e.format=t,t.includes(`int`)&&(e.isInt=!0)},Rh=(e,t)=>jh(e,`minimum`,t.minimum),zh=(e,t)=>Mh(e,`maximum`,t.maximum),Bh=e=>(t,n)=>{Lh(t,n.format);let[r,i]=e[n.format];jh(t,`minimum`,r),Mh(t,`maximum`,i)},Vh={greater_than:(e,t)=>jh(e,t.inclusive?`minimum`:`exclusiveMinimum`,t.value),less_than:(e,t)=>Mh(e,t.inclusive?`maximum`:`exclusiveMaximum`,t.value),multiple_of:(e,t)=>Ph(e,t.value),number_format:Bh(zl),bigint_format:Bh(Bl),min_length:Rh,max_length:zh,length_equals:(e,t)=>Nh(e,t.length),min_size:Rh,max_size:zh,size_equals:(e,t)=>Nh(e,t.size),string_format:(e,t)=>{Lh(e,t.format),t.pattern&&Fh(e,t.pattern),(t.format===`base64`||t.format===`base64url`)&&(e.contentEncoding=t.format),(t.local||t.precision===-1)&&(e.laxFormat=!0)},mime_type:(e,t)=>Ih(e,t.mime)};function Hh(e){let t={},n=e._zod.def,r=e._zod.traits.has(`$ZodCheck`)?[e,...n.checks??[]]:n.checks??[];for(let e of r)Vh[e._zod.def.check]?.(t,e._zod.def);let i=e._zod.bag;i.minimum!==void 0&&jh(t,`minimum`,i.minimum),i.exclusiveMinimum!==void 0&&jh(t,`exclusiveMinimum`,i.exclusiveMinimum),i.maximum!==void 0&&Mh(t,`maximum`,i.maximum),i.exclusiveMaximum!==void 0&&Mh(t,`exclusiveMaximum`,i.exclusiveMaximum),i.multipleOf!==void 0&&Ph(t,i.multipleOf),i.format!==void 0&&(t.format??=i.format,i.format.includes(`int`)&&(t.isInt=!0)),i.mime&&Ih(t,i.mime);for(let e of i.patterns??[])Fh(t,e);return t}var Uh={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},Wh=new Map([[zf,vd],[Vf,yd]]),Gh=e=>Wh.get(e)??e,Kh=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l,laxFormat:u}=Hh(e);if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=Uh[s]??s,i.format===``&&delete i.format,(s===`time`||u)&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c].map(Gh);e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},qh=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,multipleOf:s,exclusiveMaximum:c,exclusiveMinimum:l,isInt:u}=Hh(e);i.type=u?`integer`:`number`;let d=typeof l==`number`&&l>=(a??-1/0),f=typeof c==`number`&&c<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;if(d?p?(i.minimum=l,i.exclusiveMinimum=!0):i.exclusiveMinimum=l:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=c,i.exclusiveMaximum=!0):i.exclusiveMaximum=c:typeof o==`number`&&(i.maximum=o),s){let n=new Set;for(let a of s)Number.isFinite(a)&&a!==0?n.add(Math.abs(a)):_h(e,t,i,r,`A multipleOf divisor of ${a} cannot be represented in JSON Schema`);let[a,...o]=n;a!==void 0&&(i.multipleOf=a),o.length&&(i.allOf=[...i.allOf??[],...o.map(e=>({multipleOf:e}))])}},Jh=(e,t,n,r)=>{n.type=`boolean`},Yh=(e,t,n,r)=>{_h(e,t,n,r,`BigInt cannot be represented in JSON Schema`)},Xh=(e,t,n,r)=>{_h(e,t,n,r,`Symbols cannot be represented in JSON Schema`)},Zh=(e,t,n,r)=>{t.target===`openapi-3.0`?(n.type=`string`,n.nullable=!0,n.enum=[null]):n.type=`null`},Qh=(e,t,n,r)=>{_h(e,t,n,r,`Undefined cannot be represented in JSON Schema`)},$h=(e,t,n,r)=>{_h(e,t,n,r,`Void cannot be represented in JSON Schema`)},eg=(e,t,n,r)=>{n.not={}},tg=(e,t,n,r)=>{},ng=(e,t,n,r)=>{},rg=(e,t,n,r)=>{_h(e,t,n,r,`Date cannot be represented in JSON Schema`)},ig=(e,t,n,r)=>{let i=e._zod.def,a=ll(i.entries);if(a.length===0){n.not={};return}a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},ag=(e,t,n,r)=>{let i=e._zod.def;if(i.values.length===0){n.not={};return}let a=[];for(let o of i.values)if(o===void 0){if(_h(e,t,n,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof o==`bigint`){if(_h(e,t,n,r,`BigInt literals cannot be represented in JSON Schema`))return;a.push(Number(o))}else a.push(o);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},og=(e,t,n,r)=>{_h(e,t,n,r,`NaN cannot be represented in JSON Schema`)},sg=(e,t,n,r)=>{let i=n,a=e._zod.pattern;if(!a)throw Error(`Pattern not found in template literal`);i.type=`string`,i.pattern=a.source},cg=(e,t,n,r)=>{let i=n;i.type=`string`,i.format=`binary`,i.contentEncoding=`binary`;let{minimum:a,maximum:o,mime:s}=Hh(e);a!==void 0&&(i.minLength=a),o!==void 0&&(i.maxLength=o),s&&(s.length===0?i.not={}:s.length===1?i.contentMediaType=s[0]:i.anyOf=s.map(e=>({contentMediaType:e})))},lg=(e,t,n,r)=>{n.type=`boolean`},ug=(e,t,n,r)=>{_h(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},dg=(e,t,n,r)=>{_h(e,t,n,r,`Function types cannot be represented in JSON Schema`)},fg=(e,t,n,r)=>{_h(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},pg=(e,t,n,r)=>{_h(e,t,n,r,`Map cannot be represented in JSON Schema`)},mg=(e,t,n,r)=>{_h(e,t,n,r,`Set cannot be represented in JSON Schema`)},hg=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=Hh(e);typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=vh(a.element,t,{...r,path:[...r.path,`items`]})};function gg(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?gg(t.out):t.type===`catch`?gg(t.innerType):e._zod.optin}var _g=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&_h(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)yl(i.properties,e,vh(o[e],t,{...r,path:[...r.path,`properties`,e]}));let s=[];for(let e of Object.keys(o)){let n=a.shape[e];(t.io===`input`?gg(n)===void 0:n._zod.optout===void 0)&&s.push(e)}s.length>0&&(i.required=s),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=vh(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},vg=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>vh(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},yg=(e,t,n,r)=>{let i=e._zod.def,a=vh(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=vh(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1,c=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]];n.allOf=c,t.intersections.push(c)},bg=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`array`;let o=t.target===`draft-2020-12`?`prefixItems`:`items`,s=t.target===`draft-2020-12`||t.target===`openapi-3.0`?`items`:`additionalItems`,c=a.items.map((e,n)=>vh(e,t,{...r,path:[...r.path,o,n]})),l=a.rest?vh(a.rest,t,{...r,path:[...r.path,s,...t.target===`openapi-3.0`?[a.items.length]:[]]}):null,u=a.items.length;for(;u>0;){let e=a.items[u-1];if(!(t.io===`input`?gg(e)!==void 0:e._zod.optout===`optional`))break;u--}let d=a.items.length,f=!a.rest;t.target===`draft-2020-12`?(i.prefixItems=c,f?i.items=!1:l&&(i.items=l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):t.target===`openapi-3.0`?(i.items={anyOf:c},l&&i.items.anyOf.push(l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):(i.items=c,f?i.additionalItems=!1:l&&(i.additionalItems=l),u>0&&(i.minItems=u),f&&(i.maxItems=d));let{minimum:p,maximum:m}=Hh(e);typeof p==`number`&&(i.minItems=p),typeof m==`number`&&(i.maxItems=m)};function xg(e,t,n){if(t.$ref){if(n.has(t))return t;n.add(t);let r=e.get(t)?.def;if(!r)return t;let i=xg(e,r,n);return i===r?t:i}for(let r of[`anyOf`,`oneOf`]){let i=t[r];if(!Array.isArray(i))continue;let a=i.map(t=>xg(e,t,n));a.some((e,t)=>e!==i[t])&&(t={...t,[r]:a})}let r=Array.isArray(t.type)?t.type:[t.type],i=!r.includes(`string`)&&r.some(e=>e===`number`||e===`integer`),a=t.enum??(t.const===void 0?void 0:[t.const]);if(!i&&!a?.some(e=>typeof e==`number`))return t;let{minimum:o,maximum:s,exclusiveMinimum:c,exclusiveMaximum:l,multipleOf:u,format:d,id:f,...p}=t;return p.enum?p.enum=p.enum.map(e=>typeof e==`number`?String(e):e):typeof p.const==`number`&&(p.const=String(p.const)),i?(p.type=`string`,a||(p.pattern=(r.includes(`number`)?Ad:kd).source),p):p}var Sg=new WeakMap;function Cg(e){let t=new Map;for(let n of e.seen.values())n.def&&!t.has(n.schema)&&t.set(n.schema,n);let n=new Map;for(let r of Sg.get(e)??[]){let i=e.seen.get(r),a=(i?.def??i?.schema)?.propertyNames;if(!a||a===!0||n.has(a))continue;let o=xg(t,a,new Set);o!==a&&n.set(a,o)}if(n.size)for(let t of e.seen.values())for(let e of[t.schema,t.def]){let t=e&&n.get(e.propertyNames);t&&(e.propertyNames=t)}}var wg=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=Hh(o).patterns;if(a.mode===`loose`&&s&&s.size>0){let e=vh(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)yl(i.patternProperties,Gh(t).source,e)}else{if(t.target===`draft-07`||t.target===`draft-2020-12`){i.propertyNames=vh(a.keyType,t,{...r,path:[...r.path,`propertyNames`]});let n=Sg.get(t);n||(n=[],Sg.set(t,n),t.deferred.push(()=>Cg(t))),n.push(e)}i.additionalProperties=vh(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]})}let c=o._zod.values,l=t.io===`input`&&gg(a.valueType)!==void 0;if(c&&!a.partial&&!l){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e.map(String))}},Tg=(e,t,n,r)=>{let i=e._zod.def,a=vh(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},Eg=(e,t,n,r)=>{let i=e._zod.def;vh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Dg=Symbol();function Og(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?(_h(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),Dg):JSON.parse(o)}var kg=(e,t,n,r)=>{let i=e._zod.def;vh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=Og(i.defaultValue,e,t,n,r);o!==Dg&&(n.default=o)},Ag=(e,t,n,r)=>{let i=e._zod.def;vh(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=Og(i.defaultValue,e,t,n,r);o!==Dg&&(n._prefault=o)},jg=(e,t,n,r)=>{let i=e._zod.def;vh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{_h(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},Mg=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;vh(o,t,r);let s=t.seen.get(e);s.ref=o},Ng=(e,t,n,r)=>{let i=e._zod.def;vh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},Pg=(e,t,n,r)=>{let i=e._zod.def;vh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Fg=(e,t,n,r)=>{let i=e._zod.def;vh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Ig=(e,t,n,r)=>{let i=e._zod.innerType;vh(i,t,r);let a=t.seen.get(e);a.ref=i},Lg={string:Kh,number:qh,boolean:Jh,bigint:Yh,symbol:Xh,null:Zh,undefined:Qh,void:$h,never:eg,any:tg,unknown:ng,date:rg,enum:ig,literal:ag,nan:og,template_literal:sg,file:cg,success:lg,custom:ug,function:dg,transform:fg,map:pg,set:mg,array:hg,object:_g,union:vg,intersection:yg,tuple:bg,record:wg,nullable:Tg,nonoptional:Eg,default:kg,prefault:Ag,catch:jg,pipe:Mg,readonly:Ng,promise:Pg,optional:Fg,lazy:Ig};function Rg(e,t){if(`_idmap`in e){let n=e,r=gh({...t,processors:Lg}),i={};for(let e of n._idmap.entries()){let[t,n]=e;vh(n,r)}let a={};r.external={registry:n,uri:t?.uri,defs:i};for(let e of n._idmap.entries()){let[t,n]=e;bh(r,n),yl(a,t,Dh(r,n))}return Object.keys(i).length>0&&(a.__shared={[r.target===`draft-2020-12`?`$defs`:`definitions`]:i}),{schemas:a}}let n=gh({...t,processors:Lg});return vh(e,n),bh(n,e),Dh(n,e)}var zg=new WeakSet([Object.prototype,Error.prototype]);function Bg(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let e=n(this);return Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0})}})}var Vg=I(`ZodError`,(e,t)=>{Pu.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);zg.has(n)||(zg.add(n),Bg(n,`format`,e=>t=>Lu(e,t)),Bg(n,`flatten`,e=>t=>Iu(e,t)),Bg(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,dl,2)}),Bg(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,dl,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),Hg=zu(Vg),Ug=Bu(Vg),Wg=Vu(Vg),Gg=Uu(Vg),Kg=Yu(Vg),qg=Xu(Vg),Jg=Zu(Vg),Yg=Qu(Vg),Xg=$u(Vg),Zg=ed(Vg),Qg=td(Vg),$g=nd(Vg);function e_(){Eu.localeError||Du(nm())}function t_(){Eu.memoizer||Du({memoizer:$p()})}var n_=I(`ZodType`,(e,t)=>(e_(),nf.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(El(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return Il(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(Av(e,t))},superRefine(e,t){return this.check(jv(e,t))},overwrite(e){return this.check(ih(e))},optional(){return cv(this)},exactOptional(){return uv(this)},nullable(){return fv(this)},nullish(){return cv(fv(this))},nonoptional(e){return vv(this,e)},array(){return G_(this)},or(e){return Y_([this,e])},and(e){return $_(this,e)},transform(e){return Sv(this,ov(e))},default(e){return mv(this,e)},prefault(e){return gv(this,e)},catch(e){return bv(this,e)},pipe(e){return Sv(this,e)},readonly(){return Tv(this)},describe(e){let t=this.clone();return om.add(t,{description:e}),t},meta(...e){if(e.length===0)return om.get(this);let t=this.clone();return om.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return lu(this,`~standard`,{...of(this),jsonSchema:{input:Ah(this,`input`),output:Ah(this,`output`)}})},set"~standard"(e){cu(this,`~standard`,e)},parse:function e(t,n){return Hg(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await Ug(this,t,n,{callee:e})},safeParse(e,t){return Wg(this,e,t)},async safeParseAsync(e,t){return Gg(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){cu(this,`spa`,e)},validate(e,t){return Ku(this,e,t)},validateAsync(e,t){return Ju(this,e,t)},encode:function e(t,n){return Kg(this,t,n,{callee:e})},decode:function e(t,n){return qg(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await Jg(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await Yg(this,t,n,{callee:e})},safeEncode(e,t){return Xg(this,e,t)},safeDecode(e,t){return Zg(this,e,t)},async safeEncodeAsync(e,t){return Qg(this,e,t)},async safeDecodeAsync(e,t){return $g(this,e,t)},toJSONSchema(e){return kh(this,{})(e)},get description(){return om.get(this)?.description},get _def(){return this._zod.def}}),r_=I(`_ZodString`,(e,t)=>{sf.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Kh(e,t,n,r)},uu({format:e=>Hh(e).format??null,minLength:e=>Hh(e).minimum??null,maxLength:e=>Hh(e).maximum??null},{regex(...e){return this.check(Qm(...e))},includes(...e){return this.check(th(...e))},startsWith(...e){return this.check(nh(...e))},endsWith(...e){return this.check(rh(...e))},min(...e){return this.check(Xm(...e))},max(...e){return this.check(Ym(...e))},length(...e){return this.check(Zm(...e))},nonempty(...e){return this.check(Xm(1,...e))},lowercase(e){return this.check($m(e))},uppercase(e){return this.check(eh(e))},trim(){return this.check(oh())},normalize(...e){return this.check(ah(...e))},toLowerCase(){return this.check(sh())},toUpperCase(){return this.check(ch())},slugify(){return this.check(lh())}})),i_=I(`ZodString`,(e,t)=>{sf.init(e,t),r_.init(e,t)},{email(e){return this.check(lm(u_,e))},url(e){return this.check(hm(m_,e))},jwt(e){return this.check(Am(A_,e))},emoji(e){return this.check(gm(g_,e))},guid(e){return this.check(um(f_,e))},uuid(e){return this.check(dm(p_,e))},uuidv4(e){return this.check(fm(p_,e))},uuidv6(e){return this.check(pm(p_,e))},uuidv7(e){return this.check(mm(p_,e))},nanoid(e){return this.check(_m(__,e))},cuid(e){return this.check(vm(v_,e))},cuid2(e){return this.check(ym(y_,e))},ulid(e){return this.check(bm(b_,e))},base64(e){return this.check(Dm(D_,e))},base64url(e){return this.check(Om(O_,e))},xid(e){return this.check(xm(x_,e))},ksuid(e){return this.check(Sm(S_,e))},ipv4(e){return this.check(Cm(C_,e))},ipv6(e){return this.check(wm(w_,e))},cidrv4(e){return this.check(Tm(T_,e))},cidrv6(e){return this.check(Em(E_,e))},e164(e){return this.check(km(k_,e))},datetime(e){return this.check(jm(o_,e))},date(e){return this.check(Mm(s_,e))},time(e){return this.check(Nm(c_,e))},duration(e){return this.check(Pm(l_,e))}});function B(e){return cm(i_,e)}var a_=I(`ZodStringFormat`,(e,t)=>{cf.init(e,t),r_.init(e,t)}),o_=I(`ZodISODateTime`,(e,t)=>{Df.init(e,t),a_.init(e,t)}),s_=I(`ZodISODate`,(e,t)=>{Of.init(e,t),a_.init(e,t)}),c_=I(`ZodISOTime`,(e,t)=>{kf.init(e,t),a_.init(e,t)}),l_=I(`ZodISODuration`,(e,t)=>{Af.init(e,t),a_.init(e,t)}),u_=I(`ZodEmail`,(e,t)=>{df.init(e,t),a_.init(e,t)});function d_(e){return lm(u_,e)}var f_=I(`ZodGUID`,(e,t)=>{lf.init(e,t),a_.init(e,t)}),p_=I(`ZodUUID`,(e,t)=>{uf.init(e,t),a_.init(e,t)}),m_=I(`ZodURL`,(e,t)=>{yf.init(e,t),a_.init(e,t)});function h_(e){return hm(m_,e)}var g_=I(`ZodEmoji`,(e,t)=>{bf.init(e,t),a_.init(e,t)}),__=I(`ZodNanoID`,(e,t)=>{xf.init(e,t),a_.init(e,t)}),v_=I(`ZodCUID`,(e,t)=>{Sf.init(e,t),a_.init(e,t)}),y_=I(`ZodCUID2`,(e,t)=>{Cf.init(e,t),a_.init(e,t)}),b_=I(`ZodULID`,(e,t)=>{wf.init(e,t),a_.init(e,t)}),x_=I(`ZodXID`,(e,t)=>{Tf.init(e,t),a_.init(e,t)}),S_=I(`ZodKSUID`,(e,t)=>{Ef.init(e,t),a_.init(e,t)}),C_=I(`ZodIPv4`,(e,t)=>{jf.init(e,t),a_.init(e,t)}),w_=I(`ZodIPv6`,(e,t)=>{Pf.init(e,t),a_.init(e,t)}),T_=I(`ZodCIDRv4`,(e,t)=>{Ff.init(e,t),a_.init(e,t)}),E_=I(`ZodCIDRv6`,(e,t)=>{Lf.init(e,t),a_.init(e,t)}),D_=I(`ZodBase64`,(e,t)=>{Bf.init(e,t),a_.init(e,t)}),O_=I(`ZodBase64URL`,(e,t)=>{Uf.init(e,t),a_.init(e,t)}),k_=I(`ZodE164`,(e,t)=>{Wf.init(e,t),a_.init(e,t)}),A_=I(`ZodJWT`,(e,t)=>{Kf.init(e,t),a_.init(e,t)}),j_=I(`ZodNumber`,(e,t)=>{qf.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>qh(e,t,n,r),e.isFinite=!0},uu({minValue:e=>{let{minimum:t,exclusiveMinimum:n}=Hh(e);return Math.max(t??-1/0,n??-1/0)},maxValue:e=>{let{maximum:t,exclusiveMaximum:n}=Hh(e);return Math.min(t??1/0,n??1/0)},isInt:e=>{let{isInt:t,multipleOf:n}=Hh(e);return!!t||!!n?.some(Number.isSafeInteger)},format:e=>Hh(e).format??null},{gt(e,t){return this.check(Km(e,t))},gte(e,t){return this.check(qm(e,t))},min(e,t){return this.check(qm(e,t))},lt(e,t){return this.check(Wm(e,t))},lte(e,t){return this.check(Gm(e,t))},max(e,t){return this.check(Gm(e,t))},int(e){return this.check(V(e))},safe(e){return this.check(V(e))},positive(e){return this.check(Km(0,e))},nonnegative(e){return this.check(qm(0,e))},negative(e){return this.check(Wm(0,e))},nonpositive(e){return this.check(Gm(0,e))},multipleOf(e,t){return this.check(Jm(e,t))},step(e,t){return this.check(Jm(e,t))},finite(){return this}}));function M_(e){return Fm(j_,e)}var N_=I(`ZodNumberFormat`,(e,t)=>{Jf.init(e,t),j_.init(e,t)});function V(e){return Lm(N_,e)}var P_=I(`ZodBoolean`,(e,t)=>{Yf.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Jh(e,t,n,r)});function H(e){return Rm(P_,e)}var F_=I(`ZodUndefined`,(e,t)=>{Xf.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Qh(e,t,n,r)});function I_(e){return zm(F_,e)}var L_=I(`ZodNull`,(e,t)=>{Zf.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Zh(e,t,n,r)});function R_(e){return Bm(L_,e)}var z_=I(`ZodAny`,(e,t)=>{Qf.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function U(){return Vm(z_)}var B_=I(`ZodUnknown`,(e,t)=>{$f.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function V_(){return Hm(B_)}var H_=I(`ZodNever`,(e,t)=>{ep.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>eg(e,t,n,r)});function U_(e){return Um(H_,e)}var W_=I(`ZodArray`,(e,t)=>{t_(),tp.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>hg(e,t,n,r),e.element=t.element},{min(e,t){return this.check(Xm(e,t))},nonempty(e){return this.check(Xm(1,e))},max(e,t){return this.check(Ym(e,t))},length(e,t){return this.check(Zm(e,t))},unwrap(){return this.element}});function G_(e,t){return uh(W_,e,t)}var K_=I(`ZodObject`,(e,t)=>{t_(),sp.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>_g(e,t,n,r),gu(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return rv(Object.keys(this._zod.def.shape))},catchall(e){return this.clone(El(this._zod.def,{catchall:e}))},passthrough(){return this.clone(El(this._zod.def,{catchall:V_()}))},loose(){return this.clone(El(this._zod.def,{catchall:V_()}))},strict(){return this.clone(El(this._zod.def,{catchall:U_()}))},strip(){return this.clone(El(this._zod.def,{catchall:void 0}))},extend(e){return Wl(this,e)},safeExtend(e){return Kl(this,e)},merge(e){return ql(this,e)},pick(e){return Vl(this,e)},omit(e){return Ul(this,e)},partial(...e){return Jl(sv,this,e[0])},exactPartial(...e){return Jl(lv,this,e[0],`exactPartial`)},required(...e){return Yl(_v,this,e[0])}});function q_(e,t){return new K_({type:`object`,shape:e??{},...P(t)})}function W(e,t){return new K_({type:`object`,shape:e,catchall:V_(),...P(t)})}var J_=I(`ZodUnion`,(e,t)=>{lp.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>vg(e,t,n,r),e.options=t.options});function Y_(e,t){return new J_({type:`union`,options:e,...P(t)})}var X_=I(`ZodDiscriminatedUnion`,(e,t)=>{J_.init(e,t),dp.init(e,t)});function Z_(e,t,n){return new X_({type:`union`,options:t,discriminator:e,...P(n)})}var Q_=I(`ZodIntersection`,(e,t)=>{fp.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>yg(e,t,n,r)});function $_(e,t){return new Q_({type:`intersection`,left:e,right:t})}var ev=I(`ZodRecord`,(e,t)=>{t_(),hp.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>wg(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function tv(e,t,n){return!t||!t._zod?new ev({type:`record`,keyType:B(),valueType:e,...P(t)}):new ev({type:`record`,keyType:e,valueType:t,...P(n)})}var nv=I(`ZodEnum`,(e,t)=>{gp.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ig(e,t,n,r),e.enum=t.entries,e.options=[...e._zod.values];let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new nv({...t,checks:[],...P(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new nv({...t,checks:[],...P(r),entries:i})}});function rv(e,t){return new nv({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...P(t)})}var iv=I(`ZodLiteral`,(e,t)=>{_p.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ag(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function G(e,t){return new iv({type:`literal`,values:Array.isArray(e)?e:[e],...P(t)})}var av=I(`ZodTransform`,(e,t)=>{t_(),vp.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>fg(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Tu(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(ou(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,`input`in t||(t.input=n.value),t.inst??=e,n.issues.push(ou(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function ov(e){return new av({type:`transform`,transform:e})}var sv=I(`ZodOptional`,(e,t)=>{bp.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Fg(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function cv(e){return new sv({type:`optional`,innerType:e})}var lv=I(`ZodExactOptional`,(e,t)=>{xp.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Fg(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function uv(e){return new lv({type:`optional`,innerType:e})}var dv=I(`ZodNullable`,(e,t)=>{Sp.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Tg(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function fv(e){return new dv({type:`nullable`,innerType:e})}var pv=I(`ZodDefault`,(e,t)=>{Cp.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>kg(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function mv(e,t){return new pv({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():Nl(t)}})}var hv=I(`ZodPrefault`,(e,t)=>{Tp.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ag(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function gv(e,t){return new hv({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():Nl(t)}})}var _v=I(`ZodNonOptional`,(e,t)=>{Ep.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Eg(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function vv(e,t){return new _v({type:`nonoptional`,innerType:e,...P(t)})}var yv=I(`ZodCatch`,(e,t)=>{kp.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>jg(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function bv(e,t){return new yv({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:vu(t)})}var xv=I(`ZodPipe`,(e,t)=>{Ap.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Mg(e,t,n,r),e.in=t.in,e.out=t.out});function Sv(e,t){return new xv({type:`pipe`,in:e,out:t})}var Cv=I(`ZodPreprocess`,(e,t)=>{xv.init(e,t),Mp.init(e,t)}),wv=I(`ZodReadonly`,(e,t)=>{Np.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ng(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Tv(e){return new wv({type:`readonly`,innerType:e})}var Ev=I(`ZodLazy`,(e,t)=>{Fp.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ig(e,t,n,r),e.unwrap=()=>e._zod.def.getter()});function Dv(e){return new Ev({type:`lazy`,getter:e})}var Ov=I(`ZodCustom`,(e,t)=>{Ip.init(e,t),n_.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ug(e,t,n,r)});function kv(e,t){return dh(Ov,e??(()=>!0),t)}function Av(e,t={}){return fh(Ov,e,t)}function jv(e,t){return ph(e,t)}function Mv(e,t){return new Cv({type:`pipe`,in:ov(e),out:t})}var Nv=rv(k),K=kv(e=>typeof e==`object`&&!!e&&!Array.isArray(e)),q=B(),Pv=rv([`developer`,`system`,`assistant`,`user`]),Fv=W({type:G(k.TEXT_MESSAGE_START),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B(),role:Pv.optional(),name:B().optional()}),Iv=W({type:G(k.TEXT_MESSAGE_CONTENT),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B(),delta:B()}),Lv=W({type:G(k.TEXT_MESSAGE_END),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B()}),Rv=W({type:G(k.TEXT_MESSAGE_CHUNK),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B().optional(),role:Pv.optional(),delta:B().optional(),name:B().optional()}),zv=W({type:G(k.TOOL_CALL_START),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),toolCallId:B(),toolCallName:B(),parentMessageId:B().optional()}),Bv=W({type:G(k.TOOL_CALL_ARGS),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),toolCallId:B(),delta:B()}),Vv=W({type:G(k.TOOL_CALL_END),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),toolCallId:B()}),Hv=W({type:G(k.TOOL_CALL_CHUNK),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),toolCallId:B().optional(),toolCallName:B().optional(),parentMessageId:B().optional(),delta:B().optional()}),Uv=W({type:G(`text`),id:B().optional(),text:B(),metadata:U().refine(e=>e!==null).optional()}),Wv=Z_(`type`,[W({type:G(`data`),value:B(),mimeType:B()}),W({type:G(`url`),value:B(),mimeType:B().optional()}),W({type:G(`file`),value:B(),provider:B().optional(),mimeType:B().optional()})]),Gv=Z_(`type`,[Uv,W({type:G(`image`),id:B().optional(),source:Wv,metadata:U().refine(e=>e!==null).optional()}),W({type:G(`audio`),id:B().optional(),source:Wv,metadata:U().refine(e=>e!==null).optional()}),W({type:G(`video`),id:B().optional(),source:Wv,metadata:U().refine(e=>e!==null).optional()}),W({type:G(`document`),id:B().optional(),source:Wv,metadata:U().refine(e=>e!==null).optional()})]),Kv=W({type:G(k.TOOL_CALL_RESULT),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B(),toolCallId:B(),content:Y_([B(),G_(Gv)]),role:G(`tool`).optional()}),qv=U(),Jv=W({type:G(k.STATE_SNAPSHOT),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),snapshot:qv.refine(e=>e!==void 0)}),Yv=B().regex(RegExp(`^(/([^/~]|~[01])*)*$`)),Xv=G_(Z_(`op`,[W({op:G(`add`),path:Yv,value:U().refine(e=>e!==void 0)}).meta({specOpen:!0}),W({op:G(`remove`),path:Yv}).meta({specOpen:!0}),W({op:G(`replace`),path:Yv,value:U().refine(e=>e!==void 0)}).meta({specOpen:!0}),W({op:G(`move`),from:Yv,path:Yv}).meta({specOpen:!0}),W({op:G(`copy`),from:Yv,path:Yv}).meta({specOpen:!0}),W({op:G(`test`),path:Yv,value:U().refine(e=>e!==void 0)}).meta({specOpen:!0})])),Zv=W({type:G(k.STATE_DELTA),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),delta:Xv}),Qv=W({subagentRunId:q.optional(),id:B(),role:G(`developer`),name:B().optional(),encryptedValue:B().optional(),metadata:K.optional(),content:B()}),$v=W({subagentRunId:q.optional(),id:B(),role:G(`system`),name:B().optional(),encryptedValue:B().optional(),metadata:K.optional(),content:B()}),ey=W({name:B(),arguments:B()}),ty=W({id:B(),type:G(`function`),function:ey,encryptedValue:B().optional(),metadata:K.optional()}),ny=Z_(`role`,[Qv,$v,W({subagentRunId:q.optional(),id:B(),role:G(`assistant`),name:B().optional(),encryptedValue:B().optional(),metadata:K.optional(),content:B().optional(),toolCalls:G_(ty).optional()}),W({subagentRunId:q.optional(),id:B(),role:G(`user`),name:B().optional(),encryptedValue:B().optional(),metadata:K.optional(),content:Y_([B(),G_(Gv)])}),W({subagentRunId:q.optional(),id:B(),role:G(`tool`),content:Y_([B(),G_(Gv)]),toolCallId:B(),error:B().optional(),encryptedValue:B().optional(),metadata:K.optional()}),W({subagentRunId:q.optional(),id:B(),role:G(`activity`),activityType:B(),content:kv(e=>typeof e==`object`&&!!e&&!Array.isArray(e)),metadata:K.optional()}),W({subagentRunId:q.optional(),id:B(),role:G(`reasoning`),content:B(),encryptedValue:B().optional(),metadata:K.optional()})]),ry=W({type:G(k.MESSAGES_SNAPSHOT),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),messages:G_(ny)}),iy=W({type:G(k.ACTIVITY_SNAPSHOT),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B(),activityType:B(),content:kv(e=>typeof e==`object`&&!!e&&!Array.isArray(e)),replace:H().optional()}),ay=W({type:G(k.ACTIVITY_DELTA),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B(),activityType:B(),patch:Xv}),oy=W({type:G(k.RAW),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),event:U().refine(e=>e!==void 0),source:B().optional()}),sy=W({type:G(k.CUSTOM),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),name:B(),value:U().refine(e=>e!==void 0)}),cy=W({name:B(),description:B(),parameters:U().refine(e=>e!==null).optional(),metadata:K.optional()}),ly=W({description:B(),value:B()}),uy=W({interruptId:B(),status:rv([`resolved`,`cancelled`]),payload:U().refine(e=>e!==null).optional(),metadata:K.optional()}),dy=W({threadId:B(),runId:B(),protocolVersion:B().optional(),parentRunId:B().optional(),state:qv.refine(e=>e!==null).nullable().transform(e=>e??void 0).optional(),messages:G_(ny),tools:G_(cy).default(()=>[]),context:G_(ly).default(()=>[]),forwardedProps:U().refine(e=>e!==null).optional(),resume:G_(uy).optional()}),fy=W({type:G(k.RUN_STARTED),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),threadId:B(),runId:B(),protocolVersion:B().optional(),parentRunId:B().optional(),input:dy.optional()}),py=W({type:G(`success`),pendingToolCallIds:G_(B()).optional()}),my=W({subagentRunId:q.optional(),id:B(),reason:B(),message:B().optional(),toolCallId:B().optional(),responseSchema:kv(e=>typeof e==`object`&&!!e&&!Array.isArray(e)).optional(),expiresAt:B().optional(),metadata:K.optional()}),hy=Z_(`type`,[py,W({type:G(`interrupt`),interrupts:G_(my).min(1)}),W({type:G(`cancelled`)})]),gy=W({provider:B().optional(),model:B().optional(),inputTokens:V().min(0).max(9007199254740991).optional(),outputTokens:V().min(0).max(9007199254740991).optional(),totalTokens:V().min(0).max(9007199254740991).optional(),reasoningTokens:V().min(0).max(9007199254740991).optional(),cachedInputTokens:V().min(0).max(9007199254740991).optional(),cacheWriteInputTokens:V().min(0).max(9007199254740991).optional()}),_y=W({type:G(k.RUN_FINISHED),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),threadId:B(),runId:B(),result:U().refine(e=>e!==null).optional(),outcome:hy.optional(),usage:G_(gy).optional()}),vy=W({type:G(k.RUN_ERROR),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),message:B(),code:B().optional(),usage:G_(gy).optional()}),yy=W({type:G(k.STEP_STARTED),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),stepName:B()}),by=W({type:G(k.STEP_FINISHED),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),stepName:B()}),xy=W({type:G(k.REASONING_START),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B()}),Sy=W({type:G(k.REASONING_MESSAGE_START),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B(),role:G(`reasoning`)}),Cy=W({type:G(k.REASONING_MESSAGE_CONTENT),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B(),delta:B()}),wy=W({type:G(k.REASONING_MESSAGE_END),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B()}),Ty=W({type:G(k.REASONING_MESSAGE_CHUNK),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B().optional(),delta:B().optional()}),Ey=W({type:G(k.REASONING_END),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B()}),Dy=rv([`tool-call`,`message`]),Oy=W({type:G(k.REASONING_ENCRYPTED_VALUE),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),subtype:Dy,entityId:B(),encryptedValue:B()}),ky=W({type:G(k.SUBAGENT_STARTED),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q,name:B(),description:B().optional(),parentSubagentRunId:q.optional(),parentToolCallId:B().optional(),parentMessageId:B().optional()}),Ay=Z_(`type`,[W({type:G(`success`)}),W({type:G(`suspended`),interruptIds:G_(B()).optional()})]),jy=Z_(`type`,[Fv,Iv,Lv,Rv,zv,Bv,Vv,Hv,Kv,Jv,Zv,ry,iy,ay,oy,sy,fy,_y,vy,yy,by,xy,Sy,Cy,wy,Ty,Ey,Oy,ky,W({type:G(k.SUBAGENT_FINISHED),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q,result:U().refine(e=>e!==null).optional(),outcome:Ay.optional()}),W({type:G(k.SUBAGENT_ERROR),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q,message:B(),code:B().optional()})]);rv([`developer`,`system`,`assistant`,`user`,`tool`,`activity`,`reasoning`]);var My=W({name:B(),description:B().optional()}),Ny=W({name:B().optional(),type:B().optional(),description:B().optional(),version:B().optional(),provider:B().optional(),documentationUrl:B().optional(),metadata:K.optional()}),Py=W({streaming:H().optional(),websocket:H().optional(),httpBinary:H().optional(),pushNotifications:H().optional(),resumable:H().optional()}),Fy=W({supported:H().optional(),items:G_(cy).optional(),parallelCalls:H().optional(),clientProvided:H().optional()}),Iy=W({structuredOutput:H().optional(),supportedMimeTypes:G_(B()).optional()}),Ly=W({snapshots:H().optional(),deltas:H().optional(),memory:H().optional(),persistentState:H().optional()}),Ry=W({supported:H().optional(),delegation:H().optional(),handoffs:H().optional(),subagents:G_(My).optional()}),zy=W({supported:H().optional(),streaming:H().optional(),encrypted:H().optional()}),By=W({image:H().optional(),audio:H().optional(),video:H().optional(),pdf:H().optional(),file:H().optional()}),Vy=W({image:H().optional(),audio:H().optional()}),Hy=W({input:By.optional(),output:Vy.optional()}),Uy=W({codeExecution:H().optional(),sandboxed:H().optional(),maxIterations:V().min(0).max(9007199254740991).optional(),maxExecutionTime:V().min(0).max(9007199254740991).optional()}),Wy=W({supported:H().optional(),approvals:H().optional(),interventions:H().optional(),feedback:H().optional(),interrupts:H().optional(),approveWithEdits:H().optional()});W({identity:Ny.optional(),transport:Py.optional(),tools:Fy.optional(),output:Iy.optional(),state:Ly.optional(),multiAgent:Ry.optional(),reasoning:zy.optional(),multimodal:Hy.optional(),execution:Uy.optional(),humanInTheLoop:Wy.optional(),custom:kv(e=>typeof e==`object`&&!!e&&!Array.isArray(e)).optional()}),W({subagentRunId:q.optional()}),W({type:Nv,timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional()}),W({subagentRunId:q.optional(),id:B(),role:B(),name:B().optional(),encryptedValue:B().optional(),metadata:K.optional()}),K.optional();function Gy(){let e=this.buf,t=this.pos,n=0,r=0;for(let i=0;i<28;i+=7){let a=e[t++];if(n|=(a&127)<>4,!(i&128)){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=r;return}for(let i=3;i<=31;i+=7){let a=e[t++];if(r|=(a&127)<=Ky&&(i+=r/Ky|0,r%=Ky)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),t?Qy(r,i):Zy(r,i)}function Jy(e,t){let n=Zy(e,t),r=n.hi&2147483648;r&&(n=Qy(n.lo,n.hi));let i=Yy(n.lo,n.hi);return r?`-`+i:i}function Yy(e,t){if({lo:e,hi:t}=Xy(e,t),t<=2097151)return String(Ky*t+e);let n=e&16777215,r=(e>>>24|t<<8)&16777215,i=t>>16&65535,a=n+r*6777216+i*6710656,o=r+i*8147497,s=i*2,c=1e7;return a>=c&&(o+=Math.floor(a/c),a%=c),o>=c&&(s+=Math.floor(o/c),o%=c),s.toString()+$y(o)+$y(a)}function Xy(e,t){return{lo:e>>>0,hi:t>>>0}}function Zy(e,t){return{lo:e|0,hi:t|0}}function Qy(e,t){return t=~t,e?e=~e+1:t+=1,Zy(e,t)}var $y=e=>{let t=String(e);return`0000000`.slice(t.length)+t};function eb(){let e=this.buf[this.pos++];if(!(e&128))return this.assertBounds(),e;let t=e&127;if(e=this.buf[this.pos++],t|=(e&127)<<7,!(e&128)||(e=this.buf[this.pos++],t|=(e&127)<<14,!(e&128))||(e=this.buf[this.pos++],t|=(e&127)<<21,!(e&128)))return this.assertBounds(),t;e=this.buf[this.pos++],t|=(e&15)<<28;for(let t=5;e&128&&t<10;t++)e=this.buf[this.pos++];if(e&128)throw Error(`invalid varint`);return this.assertBounds(),t>>>0}var tb=nb();function nb(){let e=new DataView(new ArrayBuffer(8));if(typeof BigInt==`function`&&typeof e.getBigInt64==`function`&&typeof e.getBigUint64==`function`&&typeof e.setBigInt64==`function`&&typeof e.setBigUint64==`function`&&(globalThis.Deno||globalThis.Bun||typeof process!=`object`||{}.BUF_BIGINT_DISABLE!==`1`)){let t=BigInt(`-9223372036854775808`),n=BigInt(`9223372036854775807`),r=BigInt(`0`),i=BigInt(`18446744073709551615`);return{zero:BigInt(0),supported:!0,parse(e){let r=typeof e==`bigint`?e:BigInt(e);if(r>n||ri||ta.call(e)),ob(i)}return ab}function cb(e){return(t,n)=>{let r=e(t);return n.set(r),{written:r.byteLength}}}var lb;(function(e){e[e.Varint=0]=`Varint`,e[e.Bit64=1]=`Bit64`,e[e.LengthDelimited=2]=`LengthDelimited`,e[e.StartGroup=3]=`StartGroup`,e[e.EndGroup=4]=`EndGroup`,e[e.Bit32=5]=`Bit32`})(lb||={});var J=class{constructor(e){this.stackPos=[],this.encodeUtf8Into=e?cb(e):sb().encodeUtf8Into,this.buffer=fb,this.viewCache=pb,this.pos=0}ensureCapacity(e){let t=this.pos+e;if(t>this.buffer.length){let e=this.buffer.length||ub;for(;e0&&n.set(this.buffer),this.buffer=n}}view(){let e=this.buffer,t=this.viewCache;if(t.byteLength===e.byteLength)return t;let n=new DataView(e.buffer);return this.viewCache=n,n}finish(){let e=this.buffer.slice(0,this.pos);return this.pos=0,this.stackPos=[],e}fork(){return this.stackPos.push(this.pos),this.ensureCapacity(db),this.buffer[this.pos++]=0,this}join(){let e=this.stackPos.pop();if(e===void 0)throw Error(`invalid state, fork stack empty`);let t=this.pos-e-db,n=hb(t);return n>db&&(this.ensureCapacity(n-db),this.buffer.copyWithin(e+n,e+db,this.pos)),this.pos=e,this.uint32(t),this.pos+=t,this}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.ensureCapacity(e.length),this.buffer.set(e,this.pos),this.pos+=e.length,this}uint32(e){if(_b(e),this.ensureCapacity(5),e<128)return this.buffer[this.pos++]=e,this;for(;e>127;)this.buffer[this.pos++]=e&127|128,e>>>=7;return this.buffer[this.pos++]=e,this}int32(e){if(gb(e),e>=0)return this.uint32(e);this.ensureCapacity(10);for(let t=0;t<9;t++)this.buffer[this.pos++]=e&127|128,e>>=7;return this.buffer[this.pos++]=1,this}bool(e){return this.ensureCapacity(1),this.buffer[this.pos++]=+!!e,this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){typeof e!=`string`&&(e=String(e));let t=e.length;if(t<=mb){this.ensureCapacity(t+1);let n=this.buffer,r=this.pos;n[r++]=t;let i=0;for(;i127)break;n[r++]=t}if(i==t)return this.pos=r,this}this.ensureCapacity(t*3+5);let n=hb(t),r=this.buffer,i=this.pos,{written:a}=this.encodeUtf8Into(e,r.subarray(i+n)),o=hb(a);return o!=n&&r.copyWithin(i+o,i+n,i+n+a),this.uint32(a),this.pos+=a,this}float(e){return vb(e),this.ensureCapacity(4),this.view().setFloat32(this.pos,e,!0),this.pos+=4,this}double(e){return this.ensureCapacity(8),this.view().setFloat64(this.pos,e,!0),this.pos+=8,this}fixed32(e){return _b(e),this.ensureCapacity(4),this.view().setUint32(this.pos,e,!0),this.pos+=4,this}sfixed32(e){return gb(e),this.ensureCapacity(4),this.view().setInt32(this.pos,e,!0),this.pos+=4,this}sint32(e){return gb(e),this.uint32((e<<1^e>>31)>>>0)}sfixed64(e){let t=tb.enc(e);this.ensureCapacity(8);let n=this.view();return n.setInt32(this.pos,t.lo,!0),n.setInt32(this.pos+4,t.hi,!0),this.pos+=8,this}fixed64(e){let t=tb.uEnc(e);this.ensureCapacity(8);let n=this.view();return n.setInt32(this.pos,t.lo,!0),n.setInt32(this.pos+4,t.hi,!0),this.pos+=8,this}int64(e){let t=tb.enc(e);return this.writeVarint64(t.lo,t.hi)}sint64(e){let t=tb.enc(e),n=t.hi>>31,r=t.lo<<1^n,i=(t.hi<<1|t.lo>>>31)^n;return this.writeVarint64(r,i)}uint64(e){let t=tb.uEnc(e);return this.writeVarint64(t.lo,t.hi)}writeVarint64(e,t){this.ensureCapacity(10);let n=this.buffer,r=this.pos;for(let i=0;i<28;i+=7){let a=e>>>i,o=!(!(a>>>7)&&t==0);if(n[r++]=(o?a|128:a)&255,!o)return this.pos=r,this}let i=e>>>28&15|(t&7)<<4,a=!!(t>>3);if(n[r++]=(a?i|128:i)&255,!a)return this.pos=r,this;for(let e=3;e<31;e+=7){let i=t>>>e,a=!!(i>>>7);if(n[r++]=(a?i|128:i)&255,!a)return this.pos=r,this}return n[r++]=t>>>31&1,this.pos=r,this}},ub=128,db=1,fb=new Uint8Array,pb=new DataView(fb.buffer),mb=32;function hb(e){return e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5}var Y=class{constructor(e,t=sb().decodeUtf8){this.decodeUtf8=t,this.varint64Lo=0,this.varint64Hi=0,this.varint64=Gy,this.uint32=eb,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength)}tag(){let e=this.pos,t=this.uint32(),n=this.pos-e;if(n>5||n==5&&this.buf[this.pos-1]>15)throw Error(`illegal tag: varint overflows uint32`);let r=t>>>3,i=t&7;if(r<=0||i>5)throw Error(`illegal tag: field no `+r+` wire type `+i);return[r,i]}skip(e,t,n=100){let r=this.pos;switch(e){case lb.Varint:for(;this.buf[this.pos++]&128;);break;case lb.Bit64:this.pos+=4;case lb.Bit32:this.pos+=4;break;case lb.LengthDelimited:let r=this.uint32();this.pos+=r;break;case lb.StartGroup:if(n<=0)throw Error(`maximum recursion depth reached`);for(;;){let[e,r]=this.tag();if(r===lb.EndGroup){if(t!==void 0&&e!==t)throw Error(`invalid end group tag`);break}this.skip(r,e,n-1)}break;default:throw Error(`cant skip wire type `+e)}return this.assertBounds(),this.buf.subarray(r,this.pos)}assertBounds(){if(this.pos>this.len)throw RangeError(`premature EOF`)}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return this.varint64(),tb.dec(this.varint64Lo,this.varint64Hi)}uint64(){return this.varint64(),tb.uDec(this.varint64Lo,this.varint64Hi)}sint64(){this.varint64();let e=this.varint64Lo,t=this.varint64Hi,n=-(e&1);return e=(e>>>1|(t&1)<<31)^n,t=t>>>1^n,tb.dec(e,t)}bool(){let e=this.buf[this.pos];return e<128?(this.pos++,e!==0):(this.varint64(),this.varint64Lo!==0||this.varint64Hi!==0)}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return tb.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return tb.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(e){let t=this.bytes(),n=t.length;if(n<=mb){let r=Array(n);for(let i=0;i127)return this.decodeUtf8(t,e);r[i]=n}return String.fromCharCode.apply(String,r)}return this.decodeUtf8(t,e)}};function gb(e){if(typeof e==`string`)e=Number(e);else if(typeof e!=`number`)throw Error(`invalid int32: `+typeof e);if(!Number.isInteger(e)||e>2147483647||e<-2147483648)throw Error(`invalid int32: `+e)}function _b(e){if(typeof e==`string`)e=Number(e);else if(typeof e!=`number`)throw Error(`invalid uint32: `+typeof e);if(!Number.isInteger(e)||e>4294967295||e<0)throw Error(`invalid uint32: `+e)}function vb(e){if(typeof e==`string`){let t=e;if(e=Number(e),Number.isNaN(e)&&t!==`NaN`)throw Error(`invalid float32: `+t)}else if(typeof e!=`number`)throw Error(`invalid float32: `+typeof e);if(!Number.isFinite(Math.fround(e))&&Number.isFinite(e))throw Error(`invalid float32: `+e)}var yb=function(e){return e[e.NULL_VALUE=0]=`NULL_VALUE`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e}({});function bb(){return{fields:{}}}var xb={encode(e,t=new J){return Object.entries(e.fields).forEach(([e,n])=>{n!==void 0&&Cb.encode({key:e,value:n},t.uint32(10).fork()).join()}),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=bb();for(;n.pos>>3){case 1:{if(e!==10)break;let t=Cb.decode(n,n.uint32());t.value!==void 0&&(i.fields[t.key]=t.value);continue}}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return xb.fromPartial(e??{})},fromPartial(e){let t=bb();return t.fields=Object.entries(e.fields??{}).reduce((e,[t,n])=>(n!==void 0&&(e[t]=n),e),{}),t},wrap(e){let t=bb();if(e!==void 0)for(let n of Object.keys(e))t.fields[n]=e[n];return t},unwrap(e){let t={};if(e.fields)for(let n of Object.keys(e.fields))t[n]=e.fields[n];return t}};function Sb(){return{key:``,value:void 0}}var Cb={encode(e,t=new J){return e.key!==``&&t.uint32(10).string(e.key),e.value!==void 0&&X.encode(X.wrap(e.value),t.uint32(18).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Sb();for(;n.pos>>3){case 1:if(e!==10)break;i.key=n.string();continue;case 2:if(e!==18)break;i.value=X.unwrap(X.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Cb.fromPartial(e??{})},fromPartial(e){let t=Sb();return t.key=e.key??``,t.value=e.value??void 0,t}};function wb(){return{nullValue:void 0,numberValue:void 0,stringValue:void 0,boolValue:void 0,structValue:void 0,listValue:void 0}}var X={encode(e,t=new J){return e.nullValue!==void 0&&t.uint32(8).int32(e.nullValue),e.numberValue!==void 0&&t.uint32(17).double(e.numberValue),e.stringValue!==void 0&&t.uint32(26).string(e.stringValue),e.boolValue!==void 0&&t.uint32(32).bool(e.boolValue),e.structValue!==void 0&&xb.encode(xb.wrap(e.structValue),t.uint32(42).fork()).join(),e.listValue!==void 0&&Eb.encode(Eb.wrap(e.listValue),t.uint32(50).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=wb();for(;n.pos>>3){case 1:if(e!==8)break;i.nullValue=n.int32();continue;case 2:if(e!==17)break;i.numberValue=n.double();continue;case 3:if(e!==26)break;i.stringValue=n.string();continue;case 4:if(e!==32)break;i.boolValue=n.bool();continue;case 5:if(e!==42)break;i.structValue=xb.unwrap(xb.decode(n,n.uint32()));continue;case 6:if(e!==50)break;i.listValue=Eb.unwrap(Eb.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return X.fromPartial(e??{})},fromPartial(e){let t=wb();return t.nullValue=e.nullValue??void 0,t.numberValue=e.numberValue??void 0,t.stringValue=e.stringValue??void 0,t.boolValue=e.boolValue??void 0,t.structValue=e.structValue??void 0,t.listValue=e.listValue??void 0,t},wrap(e){let t=wb();if(e===null)t.nullValue=yb.NULL_VALUE;else if(typeof e==`boolean`)t.boolValue=e;else if(typeof e==`number`)t.numberValue=e;else if(typeof e==`string`)t.stringValue=e;else if(globalThis.Array.isArray(e))t.listValue=e;else if(typeof e==`object`)t.structValue=e;else if(e!==void 0)throw new globalThis.Error(`Unsupported any value type: `+typeof e);return t},unwrap(e){if(e.stringValue!==void 0)return e.stringValue;if(e?.numberValue!==void 0)return e.numberValue;if(e?.boolValue!==void 0)return e.boolValue;if(e?.structValue!==void 0)return e.structValue;if(e?.listValue!==void 0)return e.listValue;if(e?.nullValue!==void 0)return null}};function Tb(){return{values:[]}}var Eb={encode(e,t=new J){for(let n of e.values)X.encode(X.wrap(n),t.uint32(10).fork()).join();return t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Tb();for(;n.pos>>3){case 1:if(e!==10)break;i.values.push(X.unwrap(X.decode(n,n.uint32())));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Eb.fromPartial(e??{})},fromPartial(e){let t=Tb();return t.values=e.values?.map(e=>e)||[],t},wrap(e){let t=Tb();return t.values=e??[],t},unwrap(e){return e?.hasOwnProperty(`values`)&&globalThis.Array.isArray(e.values)?e.values:e}},Db=function(e){return e[e.ADD=0]=`ADD`,e[e.REMOVE=1]=`REMOVE`,e[e.REPLACE=2]=`REPLACE`,e[e.MOVE=3]=`MOVE`,e[e.COPY=4]=`COPY`,e[e.TEST=5]=`TEST`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e}({});function Ob(){return{op:0,path:``,from:void 0,value:void 0}}var kb={encode(e,t=new J){return e.op!==0&&t.uint32(8).int32(e.op),e.path!==``&&t.uint32(18).string(e.path),e.from!==void 0&&t.uint32(26).string(e.from),e.value!==void 0&&X.encode(X.wrap(e.value),t.uint32(34).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Ob();for(;n.pos>>3){case 1:if(e!==8)break;i.op=n.int32();continue;case 2:if(e!==18)break;i.path=n.string();continue;case 3:if(e!==26)break;i.from=n.string();continue;case 4:if(e!==34)break;i.value=X.unwrap(X.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return kb.fromPartial(e??{})},fromPartial(e){let t=Ob();return t.op=e.op??0,t.path=e.path??``,t.from=e.from??void 0,t.value=e.value??void 0,t}};function Ab(){return{text:``,id:void 0,metadata:void 0}}var jb={encode(e,t=new J){return e.text!==``&&t.uint32(10).string(e.text),e.id!==void 0&&t.uint32(18).string(e.id),e.metadata!==void 0&&X.encode(X.wrap(e.metadata),t.uint32(26).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Ab();for(;n.pos>>3){case 1:if(e!==10)break;i.text=n.string();continue;case 2:if(e!==18)break;i.id=n.string();continue;case 3:if(e!==26)break;i.metadata=X.unwrap(X.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return jb.fromPartial(e??{})},fromPartial(e){let t=Ab();return t.text=e.text??``,t.id=e.id??void 0,t.metadata=e.metadata??void 0,t}};function Mb(){return{source:void 0,metadata:void 0,id:void 0}}var Nb={encode(e,t=new J){return e.source!==void 0&&Vb.encode(e.source,t.uint32(10).fork()).join(),e.metadata!==void 0&&X.encode(X.wrap(e.metadata),t.uint32(18).fork()).join(),e.id!==void 0&&t.uint32(26).string(e.id),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Mb();for(;n.pos>>3){case 1:if(e!==10)break;i.source=Vb.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.metadata=X.unwrap(X.decode(n,n.uint32()));continue;case 3:if(e!==26)break;i.id=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Nb.fromPartial(e??{})},fromPartial(e){let t=Mb();return t.source=e.source!==void 0&&e.source!==null?Vb.fromPartial(e.source):void 0,t.metadata=e.metadata??void 0,t.id=e.id??void 0,t}};function Pb(){return{value:``,mimeType:``}}var Fb={encode(e,t=new J){return e.value!==``&&t.uint32(10).string(e.value),e.mimeType!==``&&t.uint32(18).string(e.mimeType),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Pb();for(;n.pos>>3){case 1:if(e!==10)break;i.value=n.string();continue;case 2:if(e!==18)break;i.mimeType=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Fb.fromPartial(e??{})},fromPartial(e){let t=Pb();return t.value=e.value??``,t.mimeType=e.mimeType??``,t}};function Ib(){return{value:``,mimeType:void 0}}var Lb={encode(e,t=new J){return e.value!==``&&t.uint32(10).string(e.value),e.mimeType!==void 0&&t.uint32(18).string(e.mimeType),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Ib();for(;n.pos>>3){case 1:if(e!==10)break;i.value=n.string();continue;case 2:if(e!==18)break;i.mimeType=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Lb.fromPartial(e??{})},fromPartial(e){let t=Ib();return t.value=e.value??``,t.mimeType=e.mimeType??void 0,t}};function Rb(){return{value:``,provider:void 0,mimeType:void 0}}var zb={encode(e,t=new J){return e.value!==``&&t.uint32(10).string(e.value),e.provider!==void 0&&t.uint32(18).string(e.provider),e.mimeType!==void 0&&t.uint32(26).string(e.mimeType),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Rb();for(;n.pos>>3){case 1:if(e!==10)break;i.value=n.string();continue;case 2:if(e!==18)break;i.provider=n.string();continue;case 3:if(e!==26)break;i.mimeType=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return zb.fromPartial(e??{})},fromPartial(e){let t=Rb();return t.value=e.value??``,t.provider=e.provider??void 0,t.mimeType=e.mimeType??void 0,t}};function Bb(){return{data:void 0,url:void 0,file:void 0}}var Vb={encode(e,t=new J){return e.data!==void 0&&Fb.encode(e.data,t.uint32(10).fork()).join(),e.url!==void 0&&Lb.encode(e.url,t.uint32(18).fork()).join(),e.file!==void 0&&zb.encode(e.file,t.uint32(26).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Bb();for(;n.pos>>3){case 1:if(e!==10)break;i.data=Fb.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.url=Lb.decode(n,n.uint32());continue;case 3:if(e!==26)break;i.file=zb.decode(n,n.uint32());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Vb.fromPartial(e??{})},fromPartial(e){let t=Bb();return t.data=e.data!==void 0&&e.data!==null?Fb.fromPartial(e.data):void 0,t.url=e.url!==void 0&&e.url!==null?Lb.fromPartial(e.url):void 0,t.file=e.file!==void 0&&e.file!==null?zb.fromPartial(e.file):void 0,t}};function Hb(){return{source:void 0,metadata:void 0,id:void 0}}var Ub={encode(e,t=new J){return e.source!==void 0&&Vb.encode(e.source,t.uint32(10).fork()).join(),e.metadata!==void 0&&X.encode(X.wrap(e.metadata),t.uint32(18).fork()).join(),e.id!==void 0&&t.uint32(26).string(e.id),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Hb();for(;n.pos>>3){case 1:if(e!==10)break;i.source=Vb.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.metadata=X.unwrap(X.decode(n,n.uint32()));continue;case 3:if(e!==26)break;i.id=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Ub.fromPartial(e??{})},fromPartial(e){let t=Hb();return t.source=e.source!==void 0&&e.source!==null?Vb.fromPartial(e.source):void 0,t.metadata=e.metadata??void 0,t.id=e.id??void 0,t}};function Wb(){return{source:void 0,metadata:void 0,id:void 0}}var Gb={encode(e,t=new J){return e.source!==void 0&&Vb.encode(e.source,t.uint32(10).fork()).join(),e.metadata!==void 0&&X.encode(X.wrap(e.metadata),t.uint32(18).fork()).join(),e.id!==void 0&&t.uint32(26).string(e.id),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Wb();for(;n.pos>>3){case 1:if(e!==10)break;i.source=Vb.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.metadata=X.unwrap(X.decode(n,n.uint32()));continue;case 3:if(e!==26)break;i.id=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Gb.fromPartial(e??{})},fromPartial(e){let t=Wb();return t.source=e.source!==void 0&&e.source!==null?Vb.fromPartial(e.source):void 0,t.metadata=e.metadata??void 0,t.id=e.id??void 0,t}};function Kb(){return{source:void 0,metadata:void 0,id:void 0}}var qb={encode(e,t=new J){return e.source!==void 0&&Vb.encode(e.source,t.uint32(10).fork()).join(),e.metadata!==void 0&&X.encode(X.wrap(e.metadata),t.uint32(18).fork()).join(),e.id!==void 0&&t.uint32(26).string(e.id),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Kb();for(;n.pos>>3){case 1:if(e!==10)break;i.source=Vb.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.metadata=X.unwrap(X.decode(n,n.uint32()));continue;case 3:if(e!==26)break;i.id=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return qb.fromPartial(e??{})},fromPartial(e){let t=Kb();return t.source=e.source!==void 0&&e.source!==null?Vb.fromPartial(e.source):void 0,t.metadata=e.metadata??void 0,t.id=e.id??void 0,t}};function Jb(){return{text:void 0,image:void 0,audio:void 0,video:void 0,document:void 0}}var Yb={encode(e,t=new J){return e.text!==void 0&&jb.encode(e.text,t.uint32(10).fork()).join(),e.image!==void 0&&Nb.encode(e.image,t.uint32(18).fork()).join(),e.audio!==void 0&&Ub.encode(e.audio,t.uint32(26).fork()).join(),e.video!==void 0&&Gb.encode(e.video,t.uint32(34).fork()).join(),e.document!==void 0&&qb.encode(e.document,t.uint32(42).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Jb();for(;n.pos>>3){case 1:if(e!==10)break;i.text=jb.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.image=Nb.decode(n,n.uint32());continue;case 3:if(e!==26)break;i.audio=Ub.decode(n,n.uint32());continue;case 4:if(e!==34)break;i.video=Gb.decode(n,n.uint32());continue;case 5:if(e!==42)break;i.document=qb.decode(n,n.uint32());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Yb.fromPartial(e??{})},fromPartial(e){let t=Jb();return t.text=e.text!==void 0&&e.text!==null?jb.fromPartial(e.text):void 0,t.image=e.image!==void 0&&e.image!==null?Nb.fromPartial(e.image):void 0,t.audio=e.audio!==void 0&&e.audio!==null?Ub.fromPartial(e.audio):void 0,t.video=e.video!==void 0&&e.video!==null?Gb.fromPartial(e.video):void 0,t.document=e.document!==void 0&&e.document!==null?qb.fromPartial(e.document):void 0,t}};function Xb(){return{id:``,type:``,function:void 0,metadata:void 0,encryptedValue:void 0}}var Zb={encode(e,t=new J){return e.id!==``&&t.uint32(10).string(e.id),e.type!==``&&t.uint32(18).string(e.type),e.function!==void 0&&$b.encode(e.function,t.uint32(26).fork()).join(),e.metadata!==void 0&&xb.encode(xb.wrap(e.metadata),t.uint32(34).fork()).join(),e.encryptedValue!==void 0&&t.uint32(42).string(e.encryptedValue),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Xb();for(;n.pos>>3){case 1:if(e!==10)break;i.id=n.string();continue;case 2:if(e!==18)break;i.type=n.string();continue;case 3:if(e!==26)break;i.function=$b.decode(n,n.uint32());continue;case 4:if(e!==34)break;i.metadata=xb.unwrap(xb.decode(n,n.uint32()));continue;case 5:if(e!==42)break;i.encryptedValue=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Zb.fromPartial(e??{})},fromPartial(e){let t=Xb();return t.id=e.id??``,t.type=e.type??``,t.function=e.function!==void 0&&e.function!==null?$b.fromPartial(e.function):void 0,t.metadata=e.metadata??void 0,t.encryptedValue=e.encryptedValue??void 0,t}};function Qb(){return{name:``,arguments:``}}var $b={encode(e,t=new J){return e.name!==``&&t.uint32(10).string(e.name),e.arguments!==``&&t.uint32(18).string(e.arguments),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Qb();for(;n.pos>>3){case 1:if(e!==10)break;i.name=n.string();continue;case 2:if(e!==18)break;i.arguments=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return $b.fromPartial(e??{})},fromPartial(e){let t=Qb();return t.name=e.name??``,t.arguments=e.arguments??``,t}};function ex(){return{id:``,role:``,content:void 0,name:void 0,toolCalls:[],toolCallId:void 0,error:void 0,contentParts:[],metadata:void 0,subagentRunId:void 0,encryptedValue:void 0,activityType:void 0,activityContent:void 0}}var tx={encode(e,t=new J){e.id!==``&&t.uint32(10).string(e.id),e.role!==``&&t.uint32(18).string(e.role),e.content!==void 0&&t.uint32(26).string(e.content),e.name!==void 0&&t.uint32(34).string(e.name);for(let n of e.toolCalls)Zb.encode(n,t.uint32(42).fork()).join();e.toolCallId!==void 0&&t.uint32(50).string(e.toolCallId),e.error!==void 0&&t.uint32(58).string(e.error);for(let n of e.contentParts)Yb.encode(n,t.uint32(66).fork()).join();return e.metadata!==void 0&&xb.encode(xb.wrap(e.metadata),t.uint32(74).fork()).join(),e.subagentRunId!==void 0&&t.uint32(82).string(e.subagentRunId),e.encryptedValue!==void 0&&t.uint32(90).string(e.encryptedValue),e.activityType!==void 0&&t.uint32(98).string(e.activityType),e.activityContent!==void 0&&xb.encode(xb.wrap(e.activityContent),t.uint32(106).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=ex();for(;n.pos>>3){case 1:if(e!==10)break;i.id=n.string();continue;case 2:if(e!==18)break;i.role=n.string();continue;case 3:if(e!==26)break;i.content=n.string();continue;case 4:if(e!==34)break;i.name=n.string();continue;case 5:if(e!==42)break;i.toolCalls.push(Zb.decode(n,n.uint32()));continue;case 6:if(e!==50)break;i.toolCallId=n.string();continue;case 7:if(e!==58)break;i.error=n.string();continue;case 8:if(e!==66)break;i.contentParts.push(Yb.decode(n,n.uint32()));continue;case 9:if(e!==74)break;i.metadata=xb.unwrap(xb.decode(n,n.uint32()));continue;case 10:if(e!==82)break;i.subagentRunId=n.string();continue;case 11:if(e!==90)break;i.encryptedValue=n.string();continue;case 12:if(e!==98)break;i.activityType=n.string();continue;case 13:if(e!==106)break;i.activityContent=xb.unwrap(xb.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return tx.fromPartial(e??{})},fromPartial(e){let t=ex();return t.id=e.id??``,t.role=e.role??``,t.content=e.content??void 0,t.name=e.name??void 0,t.toolCalls=e.toolCalls?.map(e=>Zb.fromPartial(e))||[],t.toolCallId=e.toolCallId??void 0,t.error=e.error??void 0,t.contentParts=e.contentParts?.map(e=>Yb.fromPartial(e))||[],t.metadata=e.metadata??void 0,t.subagentRunId=e.subagentRunId??void 0,t.encryptedValue=e.encryptedValue??void 0,t.activityType=e.activityType??void 0,t.activityContent=e.activityContent??void 0,t}};function nx(){return{name:``,description:``,parameters:void 0,metadata:void 0}}var rx={encode(e,t=new J){return e.name!==``&&t.uint32(10).string(e.name),e.description!==``&&t.uint32(18).string(e.description),e.parameters!==void 0&&X.encode(X.wrap(e.parameters),t.uint32(26).fork()).join(),e.metadata!==void 0&&xb.encode(xb.wrap(e.metadata),t.uint32(34).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=nx();for(;n.pos>>3){case 1:if(e!==10)break;i.name=n.string();continue;case 2:if(e!==18)break;i.description=n.string();continue;case 3:if(e!==26)break;i.parameters=X.unwrap(X.decode(n,n.uint32()));continue;case 4:if(e!==34)break;i.metadata=xb.unwrap(xb.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return rx.fromPartial(e??{})},fromPartial(e){let t=nx();return t.name=e.name??``,t.description=e.description??``,t.parameters=e.parameters??void 0,t.metadata=e.metadata??void 0,t}};function ix(){return{description:``,value:``}}var ax={encode(e,t=new J){return e.description!==``&&t.uint32(10).string(e.description),e.value!==``&&t.uint32(18).string(e.value),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=ix();for(;n.pos>>3){case 1:if(e!==10)break;i.description=n.string();continue;case 2:if(e!==18)break;i.value=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return ax.fromPartial(e??{})},fromPartial(e){let t=ix();return t.description=e.description??``,t.value=e.value??``,t}};function ox(){return{interruptId:``,status:``,payload:void 0,metadata:void 0}}var sx={encode(e,t=new J){return e.interruptId!==``&&t.uint32(10).string(e.interruptId),e.status!==``&&t.uint32(18).string(e.status),e.payload!==void 0&&X.encode(X.wrap(e.payload),t.uint32(26).fork()).join(),e.metadata!==void 0&&xb.encode(xb.wrap(e.metadata),t.uint32(34).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=ox();for(;n.pos>>3){case 1:if(e!==10)break;i.interruptId=n.string();continue;case 2:if(e!==18)break;i.status=n.string();continue;case 3:if(e!==26)break;i.payload=X.unwrap(X.decode(n,n.uint32()));continue;case 4:if(e!==34)break;i.metadata=xb.unwrap(xb.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return sx.fromPartial(e??{})},fromPartial(e){let t=ox();return t.interruptId=e.interruptId??``,t.status=e.status??``,t.payload=e.payload??void 0,t.metadata=e.metadata??void 0,t}};function cx(){return{threadId:``,runId:``,parentRunId:void 0,state:void 0,messages:[],tools:[],context:[],forwardedProps:void 0,resume:[],protocolVersion:void 0}}var lx={encode(e,t=new J){e.threadId!==``&&t.uint32(10).string(e.threadId),e.runId!==``&&t.uint32(18).string(e.runId),e.parentRunId!==void 0&&t.uint32(26).string(e.parentRunId),e.state!==void 0&&X.encode(X.wrap(e.state),t.uint32(34).fork()).join();for(let n of e.messages)tx.encode(n,t.uint32(42).fork()).join();for(let n of e.tools)rx.encode(n,t.uint32(50).fork()).join();for(let n of e.context)ax.encode(n,t.uint32(58).fork()).join();e.forwardedProps!==void 0&&X.encode(X.wrap(e.forwardedProps),t.uint32(66).fork()).join();for(let n of e.resume)sx.encode(n,t.uint32(74).fork()).join();return e.protocolVersion!==void 0&&t.uint32(82).string(e.protocolVersion),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=cx();for(;n.pos>>3){case 1:if(e!==10)break;i.threadId=n.string();continue;case 2:if(e!==18)break;i.runId=n.string();continue;case 3:if(e!==26)break;i.parentRunId=n.string();continue;case 4:if(e!==34)break;i.state=X.unwrap(X.decode(n,n.uint32()));continue;case 5:if(e!==42)break;i.messages.push(tx.decode(n,n.uint32()));continue;case 6:if(e!==50)break;i.tools.push(rx.decode(n,n.uint32()));continue;case 7:if(e!==58)break;i.context.push(ax.decode(n,n.uint32()));continue;case 8:if(e!==66)break;i.forwardedProps=X.unwrap(X.decode(n,n.uint32()));continue;case 9:if(e!==74)break;i.resume.push(sx.decode(n,n.uint32()));continue;case 10:if(e!==82)break;i.protocolVersion=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return lx.fromPartial(e??{})},fromPartial(e){let t=cx();return t.threadId=e.threadId??``,t.runId=e.runId??``,t.parentRunId=e.parentRunId??void 0,t.state=e.state??void 0,t.messages=e.messages?.map(e=>tx.fromPartial(e))||[],t.tools=e.tools?.map(e=>rx.fromPartial(e))||[],t.context=e.context?.map(e=>ax.fromPartial(e))||[],t.forwardedProps=e.forwardedProps??void 0,t.resume=e.resume?.map(e=>sx.fromPartial(e))||[],t.protocolVersion=e.protocolVersion??void 0,t}};function ux(){return{id:``,reason:``,message:void 0,toolCallId:void 0,responseSchema:void 0,expiresAt:void 0,metadata:void 0,subagentRunId:void 0}}var dx={encode(e,t=new J){return e.id!==``&&t.uint32(10).string(e.id),e.reason!==``&&t.uint32(18).string(e.reason),e.message!==void 0&&t.uint32(26).string(e.message),e.toolCallId!==void 0&&t.uint32(34).string(e.toolCallId),e.responseSchema!==void 0&&X.encode(X.wrap(e.responseSchema),t.uint32(42).fork()).join(),e.expiresAt!==void 0&&t.uint32(50).string(e.expiresAt),e.metadata!==void 0&&X.encode(X.wrap(e.metadata),t.uint32(58).fork()).join(),e.subagentRunId!==void 0&&t.uint32(66).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=ux();for(;n.pos>>3){case 1:if(e!==10)break;i.id=n.string();continue;case 2:if(e!==18)break;i.reason=n.string();continue;case 3:if(e!==26)break;i.message=n.string();continue;case 4:if(e!==34)break;i.toolCallId=n.string();continue;case 5:if(e!==42)break;i.responseSchema=X.unwrap(X.decode(n,n.uint32()));continue;case 6:if(e!==50)break;i.expiresAt=n.string();continue;case 7:if(e!==58)break;i.metadata=X.unwrap(X.decode(n,n.uint32()));continue;case 8:if(e!==66)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return dx.fromPartial(e??{})},fromPartial(e){let t=ux();return t.id=e.id??``,t.reason=e.reason??``,t.message=e.message??void 0,t.toolCallId=e.toolCallId??void 0,t.responseSchema=e.responseSchema??void 0,t.expiresAt=e.expiresAt??void 0,t.metadata=e.metadata??void 0,t.subagentRunId=e.subagentRunId??void 0,t}},fx=function(e){return e[e.TEXT_MESSAGE_START=0]=`TEXT_MESSAGE_START`,e[e.TEXT_MESSAGE_CONTENT=1]=`TEXT_MESSAGE_CONTENT`,e[e.TEXT_MESSAGE_END=2]=`TEXT_MESSAGE_END`,e[e.TOOL_CALL_START=3]=`TOOL_CALL_START`,e[e.TOOL_CALL_ARGS=4]=`TOOL_CALL_ARGS`,e[e.TOOL_CALL_END=5]=`TOOL_CALL_END`,e[e.STATE_SNAPSHOT=6]=`STATE_SNAPSHOT`,e[e.STATE_DELTA=7]=`STATE_DELTA`,e[e.MESSAGES_SNAPSHOT=8]=`MESSAGES_SNAPSHOT`,e[e.RAW=9]=`RAW`,e[e.CUSTOM=10]=`CUSTOM`,e[e.RUN_STARTED=11]=`RUN_STARTED`,e[e.RUN_FINISHED=12]=`RUN_FINISHED`,e[e.RUN_ERROR=13]=`RUN_ERROR`,e[e.STEP_STARTED=14]=`STEP_STARTED`,e[e.STEP_FINISHED=15]=`STEP_FINISHED`,e[e.SUBAGENT_STARTED=16]=`SUBAGENT_STARTED`,e[e.SUBAGENT_FINISHED=17]=`SUBAGENT_FINISHED`,e[e.SUBAGENT_ERROR=18]=`SUBAGENT_ERROR`,e[e.TEXT_MESSAGE_CHUNK=19]=`TEXT_MESSAGE_CHUNK`,e[e.TOOL_CALL_CHUNK=20]=`TOOL_CALL_CHUNK`,e[e.TOOL_CALL_RESULT=21]=`TOOL_CALL_RESULT`,e[e.ACTIVITY_SNAPSHOT=22]=`ACTIVITY_SNAPSHOT`,e[e.ACTIVITY_DELTA=23]=`ACTIVITY_DELTA`,e[e.REASONING_START=24]=`REASONING_START`,e[e.REASONING_MESSAGE_START=25]=`REASONING_MESSAGE_START`,e[e.REASONING_MESSAGE_CONTENT=26]=`REASONING_MESSAGE_CONTENT`,e[e.REASONING_MESSAGE_END=27]=`REASONING_MESSAGE_END`,e[e.REASONING_MESSAGE_CHUNK=28]=`REASONING_MESSAGE_CHUNK`,e[e.REASONING_END=29]=`REASONING_END`,e[e.REASONING_ENCRYPTED_VALUE=30]=`REASONING_ENCRYPTED_VALUE`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e}({});function px(){return{type:0,timestamp:void 0,rawEvent:void 0,metadata:void 0}}var Z={encode(e,t=new J){return e.type!==0&&t.uint32(8).int32(e.type),e.timestamp!==void 0&&t.uint32(16).int64(e.timestamp),e.rawEvent!==void 0&&X.encode(X.wrap(e.rawEvent),t.uint32(26).fork()).join(),e.metadata!==void 0&&xb.encode(xb.wrap(e.metadata),t.uint32(34).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=px();for(;n.pos>>3){case 1:if(e!==8)break;i.type=n.int32();continue;case 2:if(e!==16)break;i.timestamp=ES(n.int64());continue;case 3:if(e!==26)break;i.rawEvent=X.unwrap(X.decode(n,n.uint32()));continue;case 4:if(e!==34)break;i.metadata=xb.unwrap(xb.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Z.fromPartial(e??{})},fromPartial(e){let t=px();return t.type=e.type??0,t.timestamp=e.timestamp??void 0,t.rawEvent=e.rawEvent??void 0,t.metadata=e.metadata??void 0,t}};function mx(){return{baseEvent:void 0,messageId:``,role:void 0,name:void 0,subagentRunId:void 0}}var hx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.messageId!==``&&t.uint32(18).string(e.messageId),e.role!==void 0&&t.uint32(26).string(e.role),e.name!==void 0&&t.uint32(34).string(e.name),e.subagentRunId!==void 0&&t.uint32(42).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=mx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messageId=n.string();continue;case 3:if(e!==26)break;i.role=n.string();continue;case 4:if(e!==34)break;i.name=n.string();continue;case 5:if(e!==42)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return hx.fromPartial(e??{})},fromPartial(e){let t=mx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.messageId=e.messageId??``,t.role=e.role??void 0,t.name=e.name??void 0,t.subagentRunId=e.subagentRunId??void 0,t}};function gx(){return{baseEvent:void 0,messageId:``,delta:``,subagentRunId:void 0}}var _x={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.messageId!==``&&t.uint32(18).string(e.messageId),e.delta!==``&&t.uint32(26).string(e.delta),e.subagentRunId!==void 0&&t.uint32(34).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=gx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messageId=n.string();continue;case 3:if(e!==26)break;i.delta=n.string();continue;case 4:if(e!==34)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return _x.fromPartial(e??{})},fromPartial(e){let t=gx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.messageId=e.messageId??``,t.delta=e.delta??``,t.subagentRunId=e.subagentRunId??void 0,t}};function vx(){return{baseEvent:void 0,messageId:``,subagentRunId:void 0}}var yx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.messageId!==``&&t.uint32(18).string(e.messageId),e.subagentRunId!==void 0&&t.uint32(26).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=vx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messageId=n.string();continue;case 3:if(e!==26)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return yx.fromPartial(e??{})},fromPartial(e){let t=vx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.messageId=e.messageId??``,t.subagentRunId=e.subagentRunId??void 0,t}};function bx(){return{baseEvent:void 0,messageId:void 0,role:void 0,delta:void 0,name:void 0,subagentRunId:void 0}}var xx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.messageId!==void 0&&t.uint32(18).string(e.messageId),e.role!==void 0&&t.uint32(26).string(e.role),e.delta!==void 0&&t.uint32(34).string(e.delta),e.name!==void 0&&t.uint32(42).string(e.name),e.subagentRunId!==void 0&&t.uint32(50).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=bx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messageId=n.string();continue;case 3:if(e!==26)break;i.role=n.string();continue;case 4:if(e!==34)break;i.delta=n.string();continue;case 5:if(e!==42)break;i.name=n.string();continue;case 6:if(e!==50)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return xx.fromPartial(e??{})},fromPartial(e){let t=bx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.messageId=e.messageId??void 0,t.role=e.role??void 0,t.delta=e.delta??void 0,t.name=e.name??void 0,t.subagentRunId=e.subagentRunId??void 0,t}};function Sx(){return{baseEvent:void 0,toolCallId:``,toolCallName:``,parentMessageId:void 0,subagentRunId:void 0}}var Cx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.toolCallId!==``&&t.uint32(18).string(e.toolCallId),e.toolCallName!==``&&t.uint32(26).string(e.toolCallName),e.parentMessageId!==void 0&&t.uint32(34).string(e.parentMessageId),e.subagentRunId!==void 0&&t.uint32(42).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Sx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.toolCallId=n.string();continue;case 3:if(e!==26)break;i.toolCallName=n.string();continue;case 4:if(e!==34)break;i.parentMessageId=n.string();continue;case 5:if(e!==42)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Cx.fromPartial(e??{})},fromPartial(e){let t=Sx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.toolCallId=e.toolCallId??``,t.toolCallName=e.toolCallName??``,t.parentMessageId=e.parentMessageId??void 0,t.subagentRunId=e.subagentRunId??void 0,t}};function wx(){return{baseEvent:void 0,toolCallId:``,delta:``,subagentRunId:void 0}}var Tx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.toolCallId!==``&&t.uint32(18).string(e.toolCallId),e.delta!==``&&t.uint32(26).string(e.delta),e.subagentRunId!==void 0&&t.uint32(34).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=wx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.toolCallId=n.string();continue;case 3:if(e!==26)break;i.delta=n.string();continue;case 4:if(e!==34)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Tx.fromPartial(e??{})},fromPartial(e){let t=wx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.toolCallId=e.toolCallId??``,t.delta=e.delta??``,t.subagentRunId=e.subagentRunId??void 0,t}};function Ex(){return{baseEvent:void 0,toolCallId:``,subagentRunId:void 0}}var Dx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.toolCallId!==``&&t.uint32(18).string(e.toolCallId),e.subagentRunId!==void 0&&t.uint32(26).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Ex();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.toolCallId=n.string();continue;case 3:if(e!==26)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Dx.fromPartial(e??{})},fromPartial(e){let t=Ex();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.toolCallId=e.toolCallId??``,t.subagentRunId=e.subagentRunId??void 0,t}};function Ox(){return{baseEvent:void 0,toolCallId:void 0,toolCallName:void 0,parentMessageId:void 0,delta:void 0,subagentRunId:void 0}}var kx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.toolCallId!==void 0&&t.uint32(18).string(e.toolCallId),e.toolCallName!==void 0&&t.uint32(26).string(e.toolCallName),e.parentMessageId!==void 0&&t.uint32(34).string(e.parentMessageId),e.delta!==void 0&&t.uint32(42).string(e.delta),e.subagentRunId!==void 0&&t.uint32(50).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Ox();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.toolCallId=n.string();continue;case 3:if(e!==26)break;i.toolCallName=n.string();continue;case 4:if(e!==34)break;i.parentMessageId=n.string();continue;case 5:if(e!==42)break;i.delta=n.string();continue;case 6:if(e!==50)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return kx.fromPartial(e??{})},fromPartial(e){let t=Ox();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.toolCallId=e.toolCallId??void 0,t.toolCallName=e.toolCallName??void 0,t.parentMessageId=e.parentMessageId??void 0,t.delta=e.delta??void 0,t.subagentRunId=e.subagentRunId??void 0,t}};function Ax(){return{baseEvent:void 0,subagentRunId:void 0,messageId:``,toolCallId:``,content:void 0,role:void 0,contentParts:[]}}var jx={encode(e,t=new J){e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==``&&t.uint32(26).string(e.messageId),e.toolCallId!==``&&t.uint32(34).string(e.toolCallId),e.content!==void 0&&t.uint32(42).string(e.content),e.role!==void 0&&t.uint32(50).string(e.role);for(let n of e.contentParts)Yb.encode(n,t.uint32(58).fork()).join();return t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Ax();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue;case 4:if(e!==34)break;i.toolCallId=n.string();continue;case 5:if(e!==42)break;i.content=n.string();continue;case 6:if(e!==50)break;i.role=n.string();continue;case 7:if(e!==58)break;i.contentParts.push(Yb.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return jx.fromPartial(e??{})},fromPartial(e){let t=Ax();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??``,t.toolCallId=e.toolCallId??``,t.content=e.content??void 0,t.role=e.role??void 0,t.contentParts=e.contentParts?.map(e=>Yb.fromPartial(e))||[],t}};function Mx(){return{baseEvent:void 0,snapshot:void 0,subagentRunId:void 0}}var Nx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.snapshot!==void 0&&X.encode(X.wrap(e.snapshot),t.uint32(18).fork()).join(),e.subagentRunId!==void 0&&t.uint32(26).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Mx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.snapshot=X.unwrap(X.decode(n,n.uint32()));continue;case 3:if(e!==26)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Nx.fromPartial(e??{})},fromPartial(e){let t=Mx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.snapshot=e.snapshot??void 0,t.subagentRunId=e.subagentRunId??void 0,t}};function Px(){return{baseEvent:void 0,delta:[],subagentRunId:void 0}}var Fx={encode(e,t=new J){e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join();for(let n of e.delta)kb.encode(n,t.uint32(18).fork()).join();return e.subagentRunId!==void 0&&t.uint32(26).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Px();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.delta.push(kb.decode(n,n.uint32()));continue;case 3:if(e!==26)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Fx.fromPartial(e??{})},fromPartial(e){let t=Px();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.delta=e.delta?.map(e=>kb.fromPartial(e))||[],t.subagentRunId=e.subagentRunId??void 0,t}};function Ix(){return{baseEvent:void 0,messages:[]}}var Lx={encode(e,t=new J){e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join();for(let n of e.messages)tx.encode(n,t.uint32(18).fork()).join();return t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Ix();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messages.push(tx.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Lx.fromPartial(e??{})},fromPartial(e){let t=Ix();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.messages=e.messages?.map(e=>tx.fromPartial(e))||[],t}};function Rx(){return{baseEvent:void 0,subagentRunId:void 0,messageId:``,activityType:``,content:void 0,replace:void 0}}var zx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==``&&t.uint32(26).string(e.messageId),e.activityType!==``&&t.uint32(34).string(e.activityType),e.content!==void 0&&xb.encode(xb.wrap(e.content),t.uint32(42).fork()).join(),e.replace!==void 0&&t.uint32(48).bool(e.replace),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Rx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue;case 4:if(e!==34)break;i.activityType=n.string();continue;case 5:if(e!==42)break;i.content=xb.unwrap(xb.decode(n,n.uint32()));continue;case 6:if(e!==48)break;i.replace=n.bool();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return zx.fromPartial(e??{})},fromPartial(e){let t=Rx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??``,t.activityType=e.activityType??``,t.content=e.content??void 0,t.replace=e.replace??void 0,t}};function Bx(){return{baseEvent:void 0,subagentRunId:void 0,messageId:``,activityType:``,patch:[]}}var Vx={encode(e,t=new J){e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==``&&t.uint32(26).string(e.messageId),e.activityType!==``&&t.uint32(34).string(e.activityType);for(let n of e.patch)kb.encode(n,t.uint32(42).fork()).join();return t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Bx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue;case 4:if(e!==34)break;i.activityType=n.string();continue;case 5:if(e!==42)break;i.patch.push(kb.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Vx.fromPartial(e??{})},fromPartial(e){let t=Bx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??``,t.activityType=e.activityType??``,t.patch=e.patch?.map(e=>kb.fromPartial(e))||[],t}};function Hx(){return{baseEvent:void 0,event:void 0,source:void 0,subagentRunId:void 0}}var Ux={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.event!==void 0&&X.encode(X.wrap(e.event),t.uint32(18).fork()).join(),e.source!==void 0&&t.uint32(26).string(e.source),e.subagentRunId!==void 0&&t.uint32(34).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Hx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.event=X.unwrap(X.decode(n,n.uint32()));continue;case 3:if(e!==26)break;i.source=n.string();continue;case 4:if(e!==34)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Ux.fromPartial(e??{})},fromPartial(e){let t=Hx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.event=e.event??void 0,t.source=e.source??void 0,t.subagentRunId=e.subagentRunId??void 0,t}};function Wx(){return{baseEvent:void 0,name:``,value:void 0,subagentRunId:void 0}}var Gx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.name!==``&&t.uint32(18).string(e.name),e.value!==void 0&&X.encode(X.wrap(e.value),t.uint32(26).fork()).join(),e.subagentRunId!==void 0&&t.uint32(34).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Wx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.name=n.string();continue;case 3:if(e!==26)break;i.value=X.unwrap(X.decode(n,n.uint32()));continue;case 4:if(e!==34)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Gx.fromPartial(e??{})},fromPartial(e){let t=Wx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.name=e.name??``,t.value=e.value??void 0,t.subagentRunId=e.subagentRunId??void 0,t}};function Kx(){return{baseEvent:void 0,threadId:``,runId:``,parentRunId:void 0,input:void 0,protocolVersion:void 0}}var qx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.threadId!==``&&t.uint32(18).string(e.threadId),e.runId!==``&&t.uint32(26).string(e.runId),e.parentRunId!==void 0&&t.uint32(34).string(e.parentRunId),e.input!==void 0&&lx.encode(e.input,t.uint32(42).fork()).join(),e.protocolVersion!==void 0&&t.uint32(50).string(e.protocolVersion),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Kx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.threadId=n.string();continue;case 3:if(e!==26)break;i.runId=n.string();continue;case 4:if(e!==34)break;i.parentRunId=n.string();continue;case 5:if(e!==42)break;i.input=lx.decode(n,n.uint32());continue;case 6:if(e!==50)break;i.protocolVersion=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return qx.fromPartial(e??{})},fromPartial(e){let t=Kx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.threadId=e.threadId??``,t.runId=e.runId??``,t.parentRunId=e.parentRunId??void 0,t.input=e.input!==void 0&&e.input!==null?lx.fromPartial(e.input):void 0,t.protocolVersion=e.protocolVersion??void 0,t}};function Jx(){return{baseEvent:void 0,threadId:``,runId:``,result:void 0,outcome:``,interrupts:[],usage:[],pendingToolCallIds:[]}}var Yx={encode(e,t=new J){e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.threadId!==``&&t.uint32(18).string(e.threadId),e.runId!==``&&t.uint32(26).string(e.runId),e.result!==void 0&&X.encode(X.wrap(e.result),t.uint32(34).fork()).join(),e.outcome!==``&&t.uint32(42).string(e.outcome);for(let n of e.interrupts)dx.encode(n,t.uint32(50).fork()).join();for(let n of e.usage)TS.encode(n,t.uint32(58).fork()).join();for(let n of e.pendingToolCallIds)t.uint32(66).string(n);return t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Jx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.threadId=n.string();continue;case 3:if(e!==26)break;i.runId=n.string();continue;case 4:if(e!==34)break;i.result=X.unwrap(X.decode(n,n.uint32()));continue;case 5:if(e!==42)break;i.outcome=n.string();continue;case 6:if(e!==50)break;i.interrupts.push(dx.decode(n,n.uint32()));continue;case 7:if(e!==58)break;i.usage.push(TS.decode(n,n.uint32()));continue;case 8:if(e!==66)break;i.pendingToolCallIds.push(n.string());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Yx.fromPartial(e??{})},fromPartial(e){let t=Jx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.threadId=e.threadId??``,t.runId=e.runId??``,t.result=e.result??void 0,t.outcome=e.outcome??``,t.interrupts=e.interrupts?.map(e=>dx.fromPartial(e))||[],t.usage=e.usage?.map(e=>TS.fromPartial(e))||[],t.pendingToolCallIds=e.pendingToolCallIds?.map(e=>e)||[],t}};function Xx(){return{baseEvent:void 0,code:void 0,message:``,usage:[]}}var Zx={encode(e,t=new J){e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.code!==void 0&&t.uint32(18).string(e.code),e.message!==``&&t.uint32(26).string(e.message);for(let n of e.usage)TS.encode(n,t.uint32(34).fork()).join();return t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Xx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.code=n.string();continue;case 3:if(e!==26)break;i.message=n.string();continue;case 4:if(e!==34)break;i.usage.push(TS.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Zx.fromPartial(e??{})},fromPartial(e){let t=Xx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.code=e.code??void 0,t.message=e.message??``,t.usage=e.usage?.map(e=>TS.fromPartial(e))||[],t}};function Qx(){return{baseEvent:void 0,stepName:``,subagentRunId:void 0}}var $x={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.stepName!==``&&t.uint32(18).string(e.stepName),e.subagentRunId!==void 0&&t.uint32(26).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Qx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.stepName=n.string();continue;case 3:if(e!==26)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return $x.fromPartial(e??{})},fromPartial(e){let t=Qx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.stepName=e.stepName??``,t.subagentRunId=e.subagentRunId??void 0,t}};function eS(){return{baseEvent:void 0,stepName:``,subagentRunId:void 0}}var tS={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.stepName!==``&&t.uint32(18).string(e.stepName),e.subagentRunId!==void 0&&t.uint32(26).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=eS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.stepName=n.string();continue;case 3:if(e!==26)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return tS.fromPartial(e??{})},fromPartial(e){let t=eS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.stepName=e.stepName??``,t.subagentRunId=e.subagentRunId??void 0,t}};function nS(){return{baseEvent:void 0,subagentRunId:void 0,messageId:``}}var rS={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==``&&t.uint32(26).string(e.messageId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=nS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return rS.fromPartial(e??{})},fromPartial(e){let t=nS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??``,t}};function iS(){return{baseEvent:void 0,subagentRunId:void 0,messageId:``,role:``}}var aS={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==``&&t.uint32(26).string(e.messageId),e.role!==``&&t.uint32(34).string(e.role),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=iS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue;case 4:if(e!==34)break;i.role=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return aS.fromPartial(e??{})},fromPartial(e){let t=iS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??``,t.role=e.role??``,t}};function oS(){return{baseEvent:void 0,subagentRunId:void 0,messageId:``,delta:``}}var sS={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==``&&t.uint32(26).string(e.messageId),e.delta!==``&&t.uint32(34).string(e.delta),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=oS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue;case 4:if(e!==34)break;i.delta=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return sS.fromPartial(e??{})},fromPartial(e){let t=oS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??``,t.delta=e.delta??``,t}};function cS(){return{baseEvent:void 0,subagentRunId:void 0,messageId:``}}var lS={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==``&&t.uint32(26).string(e.messageId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=cS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return lS.fromPartial(e??{})},fromPartial(e){let t=cS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??``,t}};function uS(){return{baseEvent:void 0,subagentRunId:void 0,messageId:void 0,delta:void 0}}var dS={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==void 0&&t.uint32(26).string(e.messageId),e.delta!==void 0&&t.uint32(34).string(e.delta),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=uS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue;case 4:if(e!==34)break;i.delta=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return dS.fromPartial(e??{})},fromPartial(e){let t=uS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??void 0,t.delta=e.delta??void 0,t}};function fS(){return{baseEvent:void 0,subagentRunId:void 0,messageId:``}}var pS={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==``&&t.uint32(26).string(e.messageId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=fS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return pS.fromPartial(e??{})},fromPartial(e){let t=fS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??``,t}};function mS(){return{baseEvent:void 0,subagentRunId:void 0,subtype:``,entityId:``,encryptedValue:``}}var hS={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.subtype!==``&&t.uint32(26).string(e.subtype),e.entityId!==``&&t.uint32(34).string(e.entityId),e.encryptedValue!==``&&t.uint32(42).string(e.encryptedValue),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=mS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.subtype=n.string();continue;case 4:if(e!==34)break;i.entityId=n.string();continue;case 5:if(e!==42)break;i.encryptedValue=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return hS.fromPartial(e??{})},fromPartial(e){let t=mS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.subtype=e.subtype??``,t.entityId=e.entityId??``,t.encryptedValue=e.encryptedValue??``,t}};function gS(){return{baseEvent:void 0,subagentRunId:``,name:``,description:void 0,parentSubagentRunId:void 0,parentToolCallId:void 0,parentMessageId:void 0}}var _S={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==``&&t.uint32(18).string(e.subagentRunId),e.name!==``&&t.uint32(26).string(e.name),e.description!==void 0&&t.uint32(34).string(e.description),e.parentSubagentRunId!==void 0&&t.uint32(42).string(e.parentSubagentRunId),e.parentToolCallId!==void 0&&t.uint32(50).string(e.parentToolCallId),e.parentMessageId!==void 0&&t.uint32(58).string(e.parentMessageId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=gS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.name=n.string();continue;case 4:if(e!==34)break;i.description=n.string();continue;case 5:if(e!==42)break;i.parentSubagentRunId=n.string();continue;case 6:if(e!==50)break;i.parentToolCallId=n.string();continue;case 7:if(e!==58)break;i.parentMessageId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return _S.fromPartial(e??{})},fromPartial(e){let t=gS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??``,t.name=e.name??``,t.description=e.description??void 0,t.parentSubagentRunId=e.parentSubagentRunId??void 0,t.parentToolCallId=e.parentToolCallId??void 0,t.parentMessageId=e.parentMessageId??void 0,t}};function vS(){return{baseEvent:void 0,subagentRunId:``,result:void 0,outcome:``,interruptIds:[]}}var yS={encode(e,t=new J){e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==``&&t.uint32(18).string(e.subagentRunId),e.result!==void 0&&X.encode(X.wrap(e.result),t.uint32(26).fork()).join(),e.outcome!==``&&t.uint32(34).string(e.outcome);for(let n of e.interruptIds)t.uint32(42).string(n);return t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=vS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.result=X.unwrap(X.decode(n,n.uint32()));continue;case 4:if(e!==34)break;i.outcome=n.string();continue;case 5:if(e!==42)break;i.interruptIds.push(n.string());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return yS.fromPartial(e??{})},fromPartial(e){let t=vS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??``,t.result=e.result??void 0,t.outcome=e.outcome??``,t.interruptIds=e.interruptIds?.map(e=>e)||[],t}};function bS(){return{baseEvent:void 0,subagentRunId:``,message:``,code:void 0}}var xS={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==``&&t.uint32(18).string(e.subagentRunId),e.message!==``&&t.uint32(26).string(e.message),e.code!==void 0&&t.uint32(34).string(e.code),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=bS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.message=n.string();continue;case 4:if(e!==34)break;i.code=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return xS.fromPartial(e??{})},fromPartial(e){let t=bS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??``,t.message=e.message??``,t.code=e.code??void 0,t}};function SS(){return{textMessageStart:void 0,textMessageContent:void 0,textMessageEnd:void 0,toolCallStart:void 0,toolCallArgs:void 0,toolCallEnd:void 0,stateSnapshot:void 0,stateDelta:void 0,messagesSnapshot:void 0,raw:void 0,custom:void 0,runStarted:void 0,runFinished:void 0,runError:void 0,stepStarted:void 0,stepFinished:void 0,textMessageChunk:void 0,toolCallChunk:void 0,subagentStarted:void 0,subagentFinished:void 0,subagentError:void 0,toolCallResult:void 0,activitySnapshot:void 0,activityDelta:void 0,reasoningStart:void 0,reasoningMessageStart:void 0,reasoningMessageContent:void 0,reasoningMessageEnd:void 0,reasoningMessageChunk:void 0,reasoningEnd:void 0,reasoningEncryptedValue:void 0}}var CS={encode(e,t=new J){return e.textMessageStart!==void 0&&hx.encode(e.textMessageStart,t.uint32(10).fork()).join(),e.textMessageContent!==void 0&&_x.encode(e.textMessageContent,t.uint32(18).fork()).join(),e.textMessageEnd!==void 0&&yx.encode(e.textMessageEnd,t.uint32(26).fork()).join(),e.toolCallStart!==void 0&&Cx.encode(e.toolCallStart,t.uint32(34).fork()).join(),e.toolCallArgs!==void 0&&Tx.encode(e.toolCallArgs,t.uint32(42).fork()).join(),e.toolCallEnd!==void 0&&Dx.encode(e.toolCallEnd,t.uint32(50).fork()).join(),e.stateSnapshot!==void 0&&Nx.encode(e.stateSnapshot,t.uint32(58).fork()).join(),e.stateDelta!==void 0&&Fx.encode(e.stateDelta,t.uint32(66).fork()).join(),e.messagesSnapshot!==void 0&&Lx.encode(e.messagesSnapshot,t.uint32(74).fork()).join(),e.raw!==void 0&&Ux.encode(e.raw,t.uint32(82).fork()).join(),e.custom!==void 0&&Gx.encode(e.custom,t.uint32(90).fork()).join(),e.runStarted!==void 0&&qx.encode(e.runStarted,t.uint32(98).fork()).join(),e.runFinished!==void 0&&Yx.encode(e.runFinished,t.uint32(106).fork()).join(),e.runError!==void 0&&Zx.encode(e.runError,t.uint32(114).fork()).join(),e.stepStarted!==void 0&&$x.encode(e.stepStarted,t.uint32(122).fork()).join(),e.stepFinished!==void 0&&tS.encode(e.stepFinished,t.uint32(130).fork()).join(),e.textMessageChunk!==void 0&&xx.encode(e.textMessageChunk,t.uint32(138).fork()).join(),e.toolCallChunk!==void 0&&kx.encode(e.toolCallChunk,t.uint32(146).fork()).join(),e.subagentStarted!==void 0&&_S.encode(e.subagentStarted,t.uint32(154).fork()).join(),e.subagentFinished!==void 0&&yS.encode(e.subagentFinished,t.uint32(162).fork()).join(),e.subagentError!==void 0&&xS.encode(e.subagentError,t.uint32(170).fork()).join(),e.toolCallResult!==void 0&&jx.encode(e.toolCallResult,t.uint32(178).fork()).join(),e.activitySnapshot!==void 0&&zx.encode(e.activitySnapshot,t.uint32(186).fork()).join(),e.activityDelta!==void 0&&Vx.encode(e.activityDelta,t.uint32(194).fork()).join(),e.reasoningStart!==void 0&&rS.encode(e.reasoningStart,t.uint32(202).fork()).join(),e.reasoningMessageStart!==void 0&&aS.encode(e.reasoningMessageStart,t.uint32(210).fork()).join(),e.reasoningMessageContent!==void 0&&sS.encode(e.reasoningMessageContent,t.uint32(218).fork()).join(),e.reasoningMessageEnd!==void 0&&lS.encode(e.reasoningMessageEnd,t.uint32(226).fork()).join(),e.reasoningMessageChunk!==void 0&&dS.encode(e.reasoningMessageChunk,t.uint32(234).fork()).join(),e.reasoningEnd!==void 0&&pS.encode(e.reasoningEnd,t.uint32(242).fork()).join(),e.reasoningEncryptedValue!==void 0&&hS.encode(e.reasoningEncryptedValue,t.uint32(250).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=SS();for(;n.pos>>3){case 1:if(e!==10)break;i.textMessageStart=hx.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.textMessageContent=_x.decode(n,n.uint32());continue;case 3:if(e!==26)break;i.textMessageEnd=yx.decode(n,n.uint32());continue;case 4:if(e!==34)break;i.toolCallStart=Cx.decode(n,n.uint32());continue;case 5:if(e!==42)break;i.toolCallArgs=Tx.decode(n,n.uint32());continue;case 6:if(e!==50)break;i.toolCallEnd=Dx.decode(n,n.uint32());continue;case 7:if(e!==58)break;i.stateSnapshot=Nx.decode(n,n.uint32());continue;case 8:if(e!==66)break;i.stateDelta=Fx.decode(n,n.uint32());continue;case 9:if(e!==74)break;i.messagesSnapshot=Lx.decode(n,n.uint32());continue;case 10:if(e!==82)break;i.raw=Ux.decode(n,n.uint32());continue;case 11:if(e!==90)break;i.custom=Gx.decode(n,n.uint32());continue;case 12:if(e!==98)break;i.runStarted=qx.decode(n,n.uint32());continue;case 13:if(e!==106)break;i.runFinished=Yx.decode(n,n.uint32());continue;case 14:if(e!==114)break;i.runError=Zx.decode(n,n.uint32());continue;case 15:if(e!==122)break;i.stepStarted=$x.decode(n,n.uint32());continue;case 16:if(e!==130)break;i.stepFinished=tS.decode(n,n.uint32());continue;case 17:if(e!==138)break;i.textMessageChunk=xx.decode(n,n.uint32());continue;case 18:if(e!==146)break;i.toolCallChunk=kx.decode(n,n.uint32());continue;case 19:if(e!==154)break;i.subagentStarted=_S.decode(n,n.uint32());continue;case 20:if(e!==162)break;i.subagentFinished=yS.decode(n,n.uint32());continue;case 21:if(e!==170)break;i.subagentError=xS.decode(n,n.uint32());continue;case 22:if(e!==178)break;i.toolCallResult=jx.decode(n,n.uint32());continue;case 23:if(e!==186)break;i.activitySnapshot=zx.decode(n,n.uint32());continue;case 24:if(e!==194)break;i.activityDelta=Vx.decode(n,n.uint32());continue;case 25:if(e!==202)break;i.reasoningStart=rS.decode(n,n.uint32());continue;case 26:if(e!==210)break;i.reasoningMessageStart=aS.decode(n,n.uint32());continue;case 27:if(e!==218)break;i.reasoningMessageContent=sS.decode(n,n.uint32());continue;case 28:if(e!==226)break;i.reasoningMessageEnd=lS.decode(n,n.uint32());continue;case 29:if(e!==234)break;i.reasoningMessageChunk=dS.decode(n,n.uint32());continue;case 30:if(e!==242)break;i.reasoningEnd=pS.decode(n,n.uint32());continue;case 31:if(e!==250)break;i.reasoningEncryptedValue=hS.decode(n,n.uint32());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return CS.fromPartial(e??{})},fromPartial(e){let t=SS();return t.textMessageStart=e.textMessageStart!==void 0&&e.textMessageStart!==null?hx.fromPartial(e.textMessageStart):void 0,t.textMessageContent=e.textMessageContent!==void 0&&e.textMessageContent!==null?_x.fromPartial(e.textMessageContent):void 0,t.textMessageEnd=e.textMessageEnd!==void 0&&e.textMessageEnd!==null?yx.fromPartial(e.textMessageEnd):void 0,t.toolCallStart=e.toolCallStart!==void 0&&e.toolCallStart!==null?Cx.fromPartial(e.toolCallStart):void 0,t.toolCallArgs=e.toolCallArgs!==void 0&&e.toolCallArgs!==null?Tx.fromPartial(e.toolCallArgs):void 0,t.toolCallEnd=e.toolCallEnd!==void 0&&e.toolCallEnd!==null?Dx.fromPartial(e.toolCallEnd):void 0,t.stateSnapshot=e.stateSnapshot!==void 0&&e.stateSnapshot!==null?Nx.fromPartial(e.stateSnapshot):void 0,t.stateDelta=e.stateDelta!==void 0&&e.stateDelta!==null?Fx.fromPartial(e.stateDelta):void 0,t.messagesSnapshot=e.messagesSnapshot!==void 0&&e.messagesSnapshot!==null?Lx.fromPartial(e.messagesSnapshot):void 0,t.raw=e.raw!==void 0&&e.raw!==null?Ux.fromPartial(e.raw):void 0,t.custom=e.custom!==void 0&&e.custom!==null?Gx.fromPartial(e.custom):void 0,t.runStarted=e.runStarted!==void 0&&e.runStarted!==null?qx.fromPartial(e.runStarted):void 0,t.runFinished=e.runFinished!==void 0&&e.runFinished!==null?Yx.fromPartial(e.runFinished):void 0,t.runError=e.runError!==void 0&&e.runError!==null?Zx.fromPartial(e.runError):void 0,t.stepStarted=e.stepStarted!==void 0&&e.stepStarted!==null?$x.fromPartial(e.stepStarted):void 0,t.stepFinished=e.stepFinished!==void 0&&e.stepFinished!==null?tS.fromPartial(e.stepFinished):void 0,t.textMessageChunk=e.textMessageChunk!==void 0&&e.textMessageChunk!==null?xx.fromPartial(e.textMessageChunk):void 0,t.toolCallChunk=e.toolCallChunk!==void 0&&e.toolCallChunk!==null?kx.fromPartial(e.toolCallChunk):void 0,t.subagentStarted=e.subagentStarted!==void 0&&e.subagentStarted!==null?_S.fromPartial(e.subagentStarted):void 0,t.subagentFinished=e.subagentFinished!==void 0&&e.subagentFinished!==null?yS.fromPartial(e.subagentFinished):void 0,t.subagentError=e.subagentError!==void 0&&e.subagentError!==null?xS.fromPartial(e.subagentError):void 0,t.toolCallResult=e.toolCallResult!==void 0&&e.toolCallResult!==null?jx.fromPartial(e.toolCallResult):void 0,t.activitySnapshot=e.activitySnapshot!==void 0&&e.activitySnapshot!==null?zx.fromPartial(e.activitySnapshot):void 0,t.activityDelta=e.activityDelta!==void 0&&e.activityDelta!==null?Vx.fromPartial(e.activityDelta):void 0,t.reasoningStart=e.reasoningStart!==void 0&&e.reasoningStart!==null?rS.fromPartial(e.reasoningStart):void 0,t.reasoningMessageStart=e.reasoningMessageStart!==void 0&&e.reasoningMessageStart!==null?aS.fromPartial(e.reasoningMessageStart):void 0,t.reasoningMessageContent=e.reasoningMessageContent!==void 0&&e.reasoningMessageContent!==null?sS.fromPartial(e.reasoningMessageContent):void 0,t.reasoningMessageEnd=e.reasoningMessageEnd!==void 0&&e.reasoningMessageEnd!==null?lS.fromPartial(e.reasoningMessageEnd):void 0,t.reasoningMessageChunk=e.reasoningMessageChunk!==void 0&&e.reasoningMessageChunk!==null?dS.fromPartial(e.reasoningMessageChunk):void 0,t.reasoningEnd=e.reasoningEnd!==void 0&&e.reasoningEnd!==null?pS.fromPartial(e.reasoningEnd):void 0,t.reasoningEncryptedValue=e.reasoningEncryptedValue!==void 0&&e.reasoningEncryptedValue!==null?hS.fromPartial(e.reasoningEncryptedValue):void 0,t}};function wS(){return{provider:void 0,model:void 0,inputTokens:void 0,outputTokens:void 0,totalTokens:void 0,reasoningTokens:void 0,cachedInputTokens:void 0,cacheWriteInputTokens:void 0}}var TS={encode(e,t=new J){return e.provider!==void 0&&t.uint32(10).string(e.provider),e.model!==void 0&&t.uint32(18).string(e.model),e.inputTokens!==void 0&&t.uint32(24).int64(e.inputTokens),e.outputTokens!==void 0&&t.uint32(32).int64(e.outputTokens),e.totalTokens!==void 0&&t.uint32(40).int64(e.totalTokens),e.reasoningTokens!==void 0&&t.uint32(48).int64(e.reasoningTokens),e.cachedInputTokens!==void 0&&t.uint32(56).int64(e.cachedInputTokens),e.cacheWriteInputTokens!==void 0&&t.uint32(64).int64(e.cacheWriteInputTokens),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=wS();for(;n.pos>>3){case 1:if(e!==10)break;i.provider=n.string();continue;case 2:if(e!==18)break;i.model=n.string();continue;case 3:if(e!==24)break;i.inputTokens=ES(n.int64());continue;case 4:if(e!==32)break;i.outputTokens=ES(n.int64());continue;case 5:if(e!==40)break;i.totalTokens=ES(n.int64());continue;case 6:if(e!==48)break;i.reasoningTokens=ES(n.int64());continue;case 7:if(e!==56)break;i.cachedInputTokens=ES(n.int64());continue;case 8:if(e!==64)break;i.cacheWriteInputTokens=ES(n.int64());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return TS.fromPartial(e??{})},fromPartial(e){let t=wS();return t.provider=e.provider??void 0,t.model=e.model??void 0,t.inputTokens=e.inputTokens??void 0,t.outputTokens=e.outputTokens??void 0,t.totalTokens=e.totalTokens??void 0,t.reasoningTokens=e.reasoningTokens??void 0,t.cachedInputTokens=e.cachedInputTokens??void 0,t.cacheWriteInputTokens=e.cacheWriteInputTokens??void 0,t}};function ES(e){let t=globalThis.Number(e.toString());if(t>globalThis.Number.MAX_SAFE_INTEGER)throw new globalThis.Error(`Value is larger than Number.MAX_SAFE_INTEGER`);if(te&&typeof e==`object`?e:void 0,OS=e=>Array.isArray(e)?e:[],kS=()=>typeof process<`u`&&!!{}.SUPPRESS_TRANSFORMATION_WARNINGS,AS=()=>{kS()||console.warn(`[ag-ui][proto] Dropped a content part this build does not know: the protocol has a variant this SDK predates.`)};new Set(Object.values(k));var jS={textMessageStart:`TEXT_MESSAGE_START`,textMessageContent:`TEXT_MESSAGE_CONTENT`,textMessageEnd:`TEXT_MESSAGE_END`,textMessageChunk:`TEXT_MESSAGE_CHUNK`,toolCallStart:`TOOL_CALL_START`,toolCallArgs:`TOOL_CALL_ARGS`,toolCallEnd:`TOOL_CALL_END`,toolCallChunk:`TOOL_CALL_CHUNK`,toolCallResult:`TOOL_CALL_RESULT`,stateSnapshot:`STATE_SNAPSHOT`,stateDelta:`STATE_DELTA`,messagesSnapshot:`MESSAGES_SNAPSHOT`,activitySnapshot:`ACTIVITY_SNAPSHOT`,activityDelta:`ACTIVITY_DELTA`,raw:`RAW`,custom:`CUSTOM`,runStarted:`RUN_STARTED`,runFinished:`RUN_FINISHED`,runError:`RUN_ERROR`,stepStarted:`STEP_STARTED`,stepFinished:`STEP_FINISHED`,reasoningStart:`REASONING_START`,reasoningMessageStart:`REASONING_MESSAGE_START`,reasoningMessageContent:`REASONING_MESSAGE_CONTENT`,reasoningMessageEnd:`REASONING_MESSAGE_END`,reasoningMessageChunk:`REASONING_MESSAGE_CHUNK`,reasoningEnd:`REASONING_END`,reasoningEncryptedValue:`REASONING_ENCRYPTED_VALUE`,subagentStarted:`SUBAGENT_STARTED`,subagentFinished:`SUBAGENT_FINISHED`,subagentError:`SUBAGENT_ERROR`},MS=new Set([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]),NS=e=>{let t=DS(e);if(t){if([t.data,t.url,t.file].filter(Boolean).length>1)throw Error(`Invalid event: source carries more than one arm`);if(t.data){let e=t.data;return{type:`data`,value:e.value,mimeType:e.mimeType}}if(t.url){let e=t.url;return{type:`url`,value:e.value,mimeType:e.mimeType}}if(t.file){let e=t.file;return{type:`file`,value:e.value,provider:e.provider,mimeType:e.mimeType}}}},PS=e=>{let t=DS(e);if(t){if([t.text,t.image,t.audio,t.video,t.document].filter(Boolean).length>1)throw Error(`Invalid event: content part carries more than one arm`);if(t.text){let e=t.text;return{type:`text`,id:e.id,text:e.text,metadata:e.metadata}}if(t.image){let e=t.image;return e.source!==void 0&&NS(e.source)===void 0?void 0:{type:`image`,id:e.id,source:NS(e.source),metadata:e.metadata}}if(t.audio){let e=t.audio;return e.source!==void 0&&NS(e.source)===void 0?void 0:{type:`audio`,id:e.id,source:NS(e.source),metadata:e.metadata}}if(t.video){let e=t.video;return e.source!==void 0&&NS(e.source)===void 0?void 0:{type:`video`,id:e.id,source:NS(e.source),metadata:e.metadata}}if(t.document){let e=t.document;return e.source!==void 0&&NS(e.source)===void 0?void 0:{type:`document`,id:e.id,source:NS(e.source),metadata:e.metadata}}}},FS=new Set([`activity`]),IS=new Set([`user`,`tool`]),LS=new Set([`developer`,`system`,`assistant`,`user`,`tool`,`activity`,`reasoning`]),RS=e=>{let t=DS(e)??{},n={...t},r=typeof t.role==`string`?t.role:``,i=LS.has(r),a=i?IS.has(r):OS(t.contentParts).length>0,o=i?FS.has(r):!a&&t.activityContent!==void 0;if(!i&&(t.content===void 0?0:1)+ +(OS(t.contentParts).length>0)+(t.activityContent===void 0?0:1)>1)throw Error(`Invalid event: message carries more than one content form`);if(i){if(!a&&OS(t.contentParts).length>0)throw Error(`Invalid event: message carries content parts for a role that has none`);if(t.activityContent!==void 0&&!o)throw Error(`Invalid event: message carries activity content for a non-activity role`);if(o&&t.content!==void 0)throw Error(`Invalid event: activity content cannot ride with other content forms`);if(a&&t.content!==void 0&&OS(t.contentParts).length>0)throw Error(`Invalid event: message carries both string content and content parts`)}return a&&t.content===void 0&&(n.content=OS(t.contentParts).map(e=>{let t=PS(e);return t===void 0&&AS(),t}).filter(e=>e!==void 0)),o&&t.activityContent!==void 0&&(n.content=t.activityContent),delete n.activityContent,delete n.contentParts,OS(t.toolCalls).length===0&&delete n.toolCalls,Object.keys(n).forEach(e=>{n[e]===void 0&&delete n[e]}),n},zS=e=>{if(Array.isArray(e)){for(let t of e)zS(t);return}let t=DS(e);if(t)for(let e of Object.keys(t))t[e]===void 0?delete t[e]:zS(t[e])},BS=e=>{let t=DS(e);if(!t)return;let n={};return t.threadId!==void 0&&(n.threadId=t.threadId),t.runId!==void 0&&(n.runId=t.runId),t.protocolVersion!==void 0&&(n.protocolVersion=t.protocolVersion),t.parentRunId!==void 0&&(n.parentRunId=t.parentRunId),t.state!==void 0&&(n.state=t.state),n.messages=OS(t.messages).map(RS).filter(e=>e!==void 0),n.tools=OS(t.tools),n.context=OS(t.context),t.forwardedProps!==void 0&&(n.forwardedProps=t.forwardedProps),n.resume=OS(t.resume),n},VS={TextMessageStartEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},BaseEvent:{singular:new Set([3,4]),descend:{},google:{3:`google.protobuf.Value`,4:`google.protobuf.Struct`}},TextMessageContentEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},TextMessageEndEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ToolCallStartEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ToolCallArgsEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ToolCallEndEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},StateSnapshotEvent:{singular:new Set([1,2]),descend:{1:`BaseEvent`},google:{2:`google.protobuf.Value`}},StateDeltaEvent:{singular:new Set([1]),descend:{1:`BaseEvent`,2:`JsonPatchOperation`}},JsonPatchOperation:{singular:new Set([4]),descend:{},google:{4:`google.protobuf.Value`}},MessagesSnapshotEvent:{singular:new Set([1]),descend:{1:`BaseEvent`,2:`Message`}},Message:{singular:new Set([9,13]),descend:{5:`ToolCall`,8:`InputContent`},google:{9:`google.protobuf.Struct`,13:`google.protobuf.Struct`}},ToolCall:{singular:new Set([3,4]),descend:{},google:{4:`google.protobuf.Struct`}},InputContent:{singular:new Set([1,2,3,4,5]),descend:{1:`TextInputPart`,2:`ImageInputPart`,3:`AudioInputPart`,4:`VideoInputPart`,5:`DocumentInputPart`},arms:new Set([1,2,3,4,5])},TextInputPart:{singular:new Set([3]),descend:{},google:{3:`google.protobuf.Value`}},ImageInputPart:{singular:new Set([1,2]),descend:{1:`InputContentSource`},google:{2:`google.protobuf.Value`}},InputContentSource:{singular:new Set([1,2,3]),descend:{},arms:new Set([1,2,3])},AudioInputPart:{singular:new Set([1,2]),descend:{1:`InputContentSource`},google:{2:`google.protobuf.Value`}},VideoInputPart:{singular:new Set([1,2]),descend:{1:`InputContentSource`},google:{2:`google.protobuf.Value`}},DocumentInputPart:{singular:new Set([1,2]),descend:{1:`InputContentSource`},google:{2:`google.protobuf.Value`}},RawEvent:{singular:new Set([1,2]),descend:{1:`BaseEvent`},google:{2:`google.protobuf.Value`}},CustomEvent:{singular:new Set([1,3]),descend:{1:`BaseEvent`},google:{3:`google.protobuf.Value`}},RunStartedEvent:{singular:new Set([1,5]),descend:{1:`BaseEvent`,5:`RunAgentInput`}},RunAgentInput:{singular:new Set([4,8]),descend:{5:`Message`,6:`Tool`,9:`ResumeEntry`},google:{4:`google.protobuf.Value`,8:`google.protobuf.Value`}},Tool:{singular:new Set([3,4]),descend:{},google:{3:`google.protobuf.Value`,4:`google.protobuf.Struct`}},ResumeEntry:{singular:new Set([3,4]),descend:{},google:{3:`google.protobuf.Value`,4:`google.protobuf.Struct`}},RunFinishedEvent:{singular:new Set([1,4]),descend:{1:`BaseEvent`,6:`Interrupt`},google:{4:`google.protobuf.Value`}},Interrupt:{singular:new Set([5,7]),descend:{},google:{5:`google.protobuf.Value`,7:`google.protobuf.Value`}},RunErrorEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},StepStartedEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},StepFinishedEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},TextMessageChunkEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ToolCallChunkEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},SubagentStartedEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},SubagentFinishedEvent:{singular:new Set([1,3]),descend:{1:`BaseEvent`},google:{3:`google.protobuf.Value`}},SubagentErrorEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ToolCallResultEvent:{singular:new Set([1]),descend:{1:`BaseEvent`,7:`InputContent`}},ActivitySnapshotEvent:{singular:new Set([1,5]),descend:{1:`BaseEvent`},google:{5:`google.protobuf.Struct`}},ActivityDeltaEvent:{singular:new Set([1]),descend:{1:`BaseEvent`,5:`JsonPatchOperation`}},ReasoningStartEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ReasoningMessageStartEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ReasoningMessageContentEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ReasoningMessageEndEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ReasoningMessageChunkEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ReasoningEndEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ReasoningEncryptedValueEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},"google.protobuf.Struct":{singular:new Set,descend:{1:`google.protobuf.Struct.FieldsEntry`}},"google.protobuf.Struct.FieldsEntry":{singular:new Set([2]),descend:{2:`google.protobuf.Value`}},"google.protobuf.Value":{singular:new Set([5,6]),descend:{5:`google.protobuf.Struct`,6:`google.protobuf.ListValue`},arms:new Set([1,2,3,4,5,6]),armWireTypes:{1:0,2:1,3:2,4:0,5:2,6:2}},"google.protobuf.ListValue":{singular:new Set,descend:{1:`google.protobuf.Value`}}},HS={1:`TextMessageStartEvent`,2:`TextMessageContentEvent`,3:`TextMessageEndEvent`,4:`ToolCallStartEvent`,5:`ToolCallArgsEvent`,6:`ToolCallEndEvent`,7:`StateSnapshotEvent`,8:`StateDeltaEvent`,9:`MessagesSnapshotEvent`,10:`RawEvent`,11:`CustomEvent`,12:`RunStartedEvent`,13:`RunFinishedEvent`,14:`RunErrorEvent`,15:`StepStartedEvent`,16:`StepFinishedEvent`,17:`TextMessageChunkEvent`,18:`ToolCallChunkEvent`,19:`SubagentStartedEvent`,20:`SubagentFinishedEvent`,21:`SubagentErrorEvent`,22:`ToolCallResultEvent`,23:`ActivitySnapshotEvent`,24:`ActivityDeltaEvent`,25:`ReasoningStartEvent`,26:`ReasoningMessageStartEvent`,27:`ReasoningMessageContentEvent`,28:`ReasoningMessageEndEvent`,29:`ReasoningMessageChunkEvent`,30:`ReasoningEndEvent`,31:`ReasoningEncryptedValueEvent`};function US(e,t){let n=0,r=0;for(;;){if(t.offset>=e.length)throw Error(`Invalid event`);let i=e[t.offset++];if(r<28?n+=(i&127)*2**r:r===28&&(n+=(i&15)*2**28),r+=7,!(i&128))return n}}function WS(e,t){let n={offset:0},r=0,i=0;for(;n.offsete.length)throw Error(`Invalid event`);if(r===0){if(t.arms?.has(o)){if(i!==0&&i!==o)throw Error(`Invalid event`);i=o}let r=t.descend[o];if(r!==void 0){let t=VS[r];t!==void 0&&WS(e.subarray(n.offset,n.offset+a),t)}}n.offset+=a}else if(s===5)n.offset+=4;else throw Error(`Invalid event`);if(n.offset>e.length)throw Error(`Invalid event`)}if(r!==0)throw Error(`Invalid event`)}function GS(e){let t=new Set,n={offset:0},r=0;for(;n.offset0&&!t.has(a))throw Error(`Invalid event`);t.add(a)}if(o===0)US(e,n);else if(o===1)n.offset+=8;else if(o===2){let t=US(e,n);if(n.offset+t>e.length)throw Error(`Invalid event`);if(r===0){let r=HS[a];if(r!==void 0){let i=VS[r];i!==void 0&&WS(e.subarray(n.offset,n.offset+t),i)}}n.offset+=t}else if(o===5)n.offset+=4;else throw Error(`Invalid event`);if(n.offset>e.length)throw Error(`Invalid event`)}if(r!==0)throw Error(`Invalid event`)}function KS(e){if(e.length===1)return e[0];let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}function qS(e,t){let n=new Y(e),r=[],i=new Map,a,o=!1;for(;n.pos1||n!==t){s.push(new J().uint32(e.number*8+2).bytes(n).finish()),o=!0;continue}}s.push(e.raw)}return o?KS(s):e}var JS=class extends Error{constructor(e=`Unknown event type`){super(e),this.name=`AGUIUnknownEventTypeError`}};function YS(e,t,n,r){let i=0,a=0,o=0;for(;;){if(t.offset>=e.length||o>=n)return-1;let s=e[t.offset++];if(o+=1,o===n&&s>r)return-1;if(i+=(s&127)*2**a,a+=7,!(s&128))return i}}var XS=(e,t)=>YS(e,t,5,15),ZS=(e,t)=>YS(e,t,10,1);function QS(e){let t={offset:0},n=[];for(;t.offsete.length)return!1;t.offset+=n}else return!1;if(t.offset>e.length)return!1}return n.length===0}function $S(e){let t={offset:0},n=[],r=0;for(;t.offsete.length)return!1;if(s){if(MS.has(a)||!QS(e.subarray(t.offset,t.offset+n)))return!1;r+=1}t.offset+=n}else return!1;if(t.offset>e.length)return!1}return n.length===0&&r>0}function eC(e){GS(e);let t=CS.decode(qS(e,{singular:MS,descend:HS})),n=Object.entries(t).filter(([,e])=>e!==void 0);if(n.length!==1)throw n.length===0&&$S(e)?new JS:Error(`Invalid event`);let r=n[0],i=jS[r[0]];if(i===void 0)throw Error(`Invalid event`);let a=r[1],o=DS(a.baseEvent);if(!o)throw Error(`Invalid event`);let s=fx[o.type];if(s!==i)throw Error(`Invalid event: envelope carries `+i+` but the base event declares `+String(s));if(a.type=i,a.timestamp=o.timestamp,a.rawEvent=o.rawEvent,o.metadata!==void 0&&(a.metadata=o.metadata),delete a.baseEvent,a.type===`MESSAGES_SNAPSHOT`&&Array.isArray(a.messages)&&(a.messages=a.messages.map(RS).filter(e=>e!==void 0)),a.type===`RUN_FINISHED`){let e=a,t=typeof e.outcome==`string`&&e.outcome!==``?e.outcome:void 0,n={};n.pendingToolCallIds=e.pendingToolCallIds,delete e.pendingToolCallIds,n.interrupts=e.interrupts,delete e.interrupts,delete e.outcome,t===void 0&&(OS(n.pendingToolCallIds).length>0&&(e.pendingToolCallIds=n.pendingToolCallIds),OS(n.interrupts).length>0&&(e.interrupts=n.interrupts)),t===`success`&&(e.outcome={type:`success`,...OS(n.pendingToolCallIds).length>0?{pendingToolCallIds:n.pendingToolCallIds}:{},...OS(n.interrupts).length>0?{interrupts:n.interrupts}:{}}),t===`interrupt`&&(e.outcome={type:`interrupt`,interrupts:OS(n.interrupts),...OS(n.pendingToolCallIds).length>0?{pendingToolCallIds:n.pendingToolCallIds}:{}}),t===`cancelled`&&(e.outcome={type:`cancelled`,...OS(n.pendingToolCallIds).length>0?{pendingToolCallIds:n.pendingToolCallIds}:{},...OS(n.interrupts).length>0?{interrupts:n.interrupts}:{}}),t!==void 0&&![`success`,`interrupt`,`cancelled`].includes(t)&&(e.outcome={type:t,...OS(n.pendingToolCallIds).length>0?{pendingToolCallIds:n.pendingToolCallIds}:{},...OS(n.interrupts).length>0?{interrupts:n.interrupts}:{}})}if(a.type===`SUBAGENT_FINISHED`){let e=a,t=typeof e.outcome==`string`&&e.outcome!==``?e.outcome:void 0,n={};n.interruptIds=e.interruptIds,delete e.interruptIds,delete e.outcome,t===void 0&&OS(n.interruptIds).length>0&&(e.interruptIds=n.interruptIds),t===`success`&&(e.outcome={type:`success`,...OS(n.interruptIds).length>0?{interruptIds:n.interruptIds}:{}}),t===`suspended`&&(e.outcome={type:`suspended`,...OS(n.interruptIds).length>0?{interruptIds:n.interruptIds}:{}}),t!==void 0&&![`success`,`suspended`].includes(t)&&(e.outcome={type:t,...OS(n.interruptIds).length>0?{interruptIds:n.interruptIds}:{}})}if(a.type===`STATE_DELTA`&&Array.isArray(a.delta)&&(a.delta=a.delta.map(e=>{let t=Db[e.op];return e.op=typeof t==`string`&&t!==`UNRECOGNIZED`?t.toLowerCase():String(e.op),Object.keys(e).forEach(t=>{e[t]===void 0&&delete e[t]}),e})),a.type===`ACTIVITY_DELTA`&&Array.isArray(a.patch)&&(a.patch=a.patch.map(e=>{let t=Db[e.op];return e.op=typeof t==`string`&&t!==`UNRECOGNIZED`?t.toLowerCase():String(e.op),Object.keys(e).forEach(t=>{e[t]===void 0&&delete e[t]}),e})),a.type===`RUN_FINISHED`&&Array.isArray(a.usage)&&a.usage.length===0&&delete a.usage,a.type===`RUN_ERROR`&&Array.isArray(a.usage)&&a.usage.length===0&&delete a.usage,a.type===`TOOL_CALL_RESULT`){let e=a;if(e.content!==void 0&&OS(e.contentParts).length>0)throw Error(`Invalid event: content carries both string content and content parts`);e.content===void 0&&(e.content=OS(e.contentParts).map(e=>{let t=PS(e);return t===void 0&&AS(),t}).filter(e=>e!==void 0)),delete e.contentParts}return a.type===`RUN_STARTED`&&a.input!==void 0&&(a.input=BS(a.input)),zS(a),a}var tC=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,nC=e=>{if(typeof e!=`string`)throw TypeError(`Invalid argument expected string`);let t=e.match(tC);if(!t)throw Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},rC=e=>e===`*`||e===`x`||e===`X`,iC=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},aC=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],oC=(e,t)=>{if(rC(e)||rC(t))return 0;let[n,r]=aC(iC(e),iC(t));return n>r?1:n{for(let n=0;n{let n=nC(e),r=nC(t),i=n.pop(),a=r.pop(),o=sC(n,r);return o===0?i&&a?sC(i.split(`.`),a.split(`.`)):i||a?i?-1:1:0:o},lC=e=>typeof e==`string`&&/^[v\d]/.test(e)&&tC.test(e);Object.freeze({status:`aborted`});function Q(e,t,n){function r(n,r){var i;Object.defineProperty(n,"_zod",{value:n._zod??{},enumerable:!1}),(i=n._zod).traits??(i.traits=new Set),n._zod.traits.add(e),t(n,r);for(let e in o.prototype)e in n||Object.defineProperty(n,e,{value:o.prototype[e].bind(n)});n._zod.constr=o,n._zod.def=r}let i=n?.Parent??Object;class a extends i{}Object.defineProperty(a,"name",{value:e});function o(e){var t;let i=n?.Parent?new a:this;r(i,e),(t=i._zod).deferred??(t.deferred=[]);for(let e of i._zod.deferred)e();return i}return Object.defineProperty(o,"init",{value:r}),Object.defineProperty(o,Symbol.hasInstance,{value:t=>n?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}var uC=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},dC={};function fC(e){return e&&Object.assign(dC,e),dC}function pC(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function mC(e,t){return typeof t==`bigint`?t.toString():t}function hC(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function gC(e){return e==null}function _C(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function vC(e,t,n){Object.defineProperty(e,t,{get(){{let r=n();return e[t]=r,r}},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function yC(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function bC(e){return JSON.stringify(e)}var xC=Error.captureStackTrace?Error.captureStackTrace:(...e)=>{};function SC(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var CC=hC(()=>{if(typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function wC(e){if(SC(e)===!1)return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return SC(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}var TC=new Set([`string`,`number`,`symbol`]);function EC(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function DC(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function OC(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function kC(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}function AC(e,t){let n={},r=e._zod.def;for(let e in t){if(!(e in r.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&(n[e]=r.shape[e])}return DC(e,{...e._zod.def,shape:n,checks:[]})}function jC(e,t){let n={...e._zod.def.shape},r=e._zod.def;for(let e in t){if(!(e in r.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete n[e]}return DC(e,{...e._zod.def,shape:n,checks:[]})}function MC(e,t){if(!wC(t))throw Error(`Invalid input to extend: expected a plain object`);return DC(e,{...e._zod.def,get shape(){let n={...e._zod.def.shape,...t};return yC(this,`shape`,n),n},checks:[]})}function NC(e,t){return DC(e,{...e._zod.def,get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return yC(this,`shape`,n),n},catchall:t._zod.def.catchall,checks:[]})}function PC(e,t,n){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return DC(t,{...t._zod.def,shape:i,checks:[]})}function FC(e,t,n){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return DC(t,{...t._zod.def,shape:i,checks:[]})}function IC(e,t=0){for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function RC(e){return typeof e==`string`?e:e?.message}function zC(e,t,n){let r={...e,path:e.path??[]};return e.message||(r.message=RC(e.inst?._zod.def?.error?.(e))??RC(t?.error?.(e))??RC(n.customError?.(e))??RC(n.localeError?.(e))??`Invalid input`),delete r.inst,delete r.continue,t?.reportInput||delete r.input,r}function BC(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function VC(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var HC=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),Object.defineProperty(e,"message",{get(){return JSON.stringify(t,mC,2)},enumerable:!0}),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},UC=Q(`$ZodError`,HC),WC=Q(`$ZodError`,HC,{Parent:Error});function GC(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function KC(e,t){let n=t||function(e){return e.message},r={_errors:[]},i=e=>{for(let t of e.issues)if(t.code===`invalid_union`&&t.errors.length)t.errors.map(e=>i({issues:e}));else if(t.code===`invalid_key`)i({issues:t.issues});else if(t.code===`invalid_element`)i({issues:t.issues});else if(t.path.length===0)r._errors.push(n(t));else{let e=r,i=0;for(;i(t,n,r,i)=>{let a=r?Object.assign(r,{async:!1}):{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new uC;if(o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>zC(e,a,fC())));throw xC(t,i?.callee),t}return o.value},JC=e=>async(t,n,r,i)=>{let a=r?Object.assign(r,{async:!0}):{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>zC(e,a,fC())));throw xC(t,i?.callee),t}return o.value},YC=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new uC;return a.issues.length?{success:!1,error:new(e??UC)(a.issues.map(e=>zC(e,i,fC())))}:{success:!0,data:a.value}},XC=YC(WC),ZC=e=>async(t,n,r)=>{let i=r?Object.assign(r,{async:!0}):{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>zC(e,i,fC())))}:{success:!0,data:a.value}},QC=ZC(WC),$C=Q(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),ew=Q(`$ZodCheckMaxLength`,(e,t)=>{var n;$C.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!gC(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum{let r=n.value;if(r.length<=t.maximum)return;let i=BC(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),tw=Q(`$ZodCheckMinLength`,(e,t)=>{var n;$C.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!gC(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=BC(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),nw=Q(`$ZodCheckLengthEquals`,(e,t)=>{var n;$C.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!gC(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=BC(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),rw=Q(`$ZodCheckOverwrite`,(e,t)=>{$C.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),iw=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` -`).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.args,n=[...(this?.content??[``]).map(e=>` ${e}`)];return new e(...t,n.join(` -`))}},aw={major:4,minor:0,patch:0},ow=Q(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=aw;let r=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&r.unshift(e);for(let t of r)for(let n of t._zod.onattach)n(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,n)=>{let r=IC(e),i;for(let a of t){if(a._zod.def.when){if(!a._zod.def.when(e))continue}else if(r)continue;let t=e.issues.length,o=a._zod.check(e);if(o instanceof Promise&&n?.async===!1)throw new uC;if(i||o instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(r||=IC(e,t))});else{if(e.issues.length===t)continue;r||=IC(e,t)}}return i?i.then(()=>e):e};e._zod.run=(n,i)=>{let a=e._zod.parse(n,i);if(a instanceof Promise){if(i.async===!1)throw new uC;return a.then(e=>t(e,r,i))}return t(a,r,i)}}e[`~standard`]={validate:t=>{try{let n=XC(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return QC(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}}),sw=Q(`$ZodUnknown`,(e,t)=>{ow.init(e,t),e._zod.parse=e=>e}),cw=Q(`$ZodNever`,(e,t)=>{ow.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function lw(e,t,n){e.issues.length&&t.issues.push(...LC(n,e.issues)),t.value[n]=e.value}var uw=Q(`$ZodArray`,(e,t)=>{ow.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;elw(t,n,e))):lw(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function dw(e,t,n){e.issues.length&&t.issues.push(...LC(n,e.issues)),t.value[n]=e.value}function fw(e,t,n,r){e.issues.length?r[n]===void 0?n in r?t.value[n]=void 0:t.value[n]=e.value:t.issues.push(...LC(n,e.issues)):e.value===void 0?n in r&&(t.value[n]=void 0):t.value[n]=e.value}var pw=Q(`$ZodObject`,(e,t)=>{ow.init(e,t);let n=hC(()=>{let e=Object.keys(t.shape);for(let n of e)if(!(t.shape[n]instanceof ow))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=kC(t.shape);return{shape:t.shape,keys:e,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(n)}});vC(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=e=>{let t=new iw([`shape`,`payload`,`ctx`]),r=n.value,i=e=>{let t=bC(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write(`const input = payload.value;`);let a=Object.create(null),o=0;for(let e of r.keys)a[e]=`key_${o++}`;t.write(`const newResult = {}`);for(let e of r.keys)if(r.optionalKeys.has(e)){let n=a[e];t.write(`const ${n} = ${i(e)};`);let r=bC(e);t.write(` - if (${n}.issues.length) { - if (input[${r}] === undefined) { - if (${r} in input) { - newResult[${r}] = undefined; - } - } else { - payload.issues = payload.issues.concat( - ${n}.issues.map((iss) => ({ - ...iss, - path: iss.path ? [${r}, ...iss.path] : [${r}], - })) - ); - } - } else if (${n}.value === undefined) { - if (${r} in input) newResult[${r}] = undefined; - } else { - newResult[${r}] = ${n}.value; - } - `)}else{let n=a[e];t.write(`const ${n} = ${i(e)};`),t.write(` - if (${n}.issues.length) payload.issues = payload.issues.concat(${n}.issues.map(iss => ({ - ...iss, - path: iss.path ? [${bC(e)}, ...iss.path] : [${bC(e)}] - })));`),t.write(`newResult[${bC(e)}] = ${n}.value`)}t.write(`payload.value = newResult;`),t.write(`return payload;`);let s=t.compile();return(t,n)=>s(e,t,n)},i,a=SC,o=!dC.jitless,s=o&&CC.value,c=t.catchall,l;e._zod.parse=(u,d)=>{l??=n.value;let f=u.value;if(!a(f))return u.issues.push({expected:`object`,code:`invalid_type`,input:f,inst:e}),u;let p=[];if(o&&s&&d?.async===!1&&d.jitless!==!0)i||=r(t.shape),u=i(u,d);else{u.value={};let e=l.shape;for(let t of l.keys){let n=e[t],r=n._zod.run({value:f[t],issues:[]},d),i=n._zod.optin===`optional`&&n._zod.optout===`optional`;r instanceof Promise?p.push(r.then(e=>i?fw(e,u,t,f):dw(e,u,t))):i?fw(r,u,t,f):dw(r,u,t)}}if(!c)return p.length?Promise.all(p).then(()=>u):u;let m=[],h=l.keySet,g=c._zod,_=g.def.type;for(let e of Object.keys(f)){if(h.has(e))continue;if(_===`never`){m.push(e);continue}let t=g.run({value:f[e],issues:[]},d);t instanceof Promise?p.push(t.then(t=>dw(t,u,e))):dw(t,u,e)}return m.length&&u.issues.push({code:`unrecognized_keys`,keys:m,input:f,inst:e}),p.length?Promise.all(p).then(()=>u):u}});function mw(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;return t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>zC(e,r,fC())))}),t}var hw=Q(`$ZodUnion`,(e,t)=>{ow.init(e,t),vC(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),vC(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),vC(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),vC(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>_C(e.source)).join(`|`)})$`)}}),e._zod.parse=(n,r)=>{let i=!1,a=[];for(let e of t.options){let t=e._zod.run({value:n.value,issues:[]},r);if(t instanceof Promise)a.push(t),i=!0;else{if(t.issues.length===0)return t;a.push(t)}}return i?Promise.all(a).then(t=>mw(t,n,e,r)):mw(a,n,e,r)}}),gw=Q(`$ZodIntersection`,(e,t)=>{ow.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>vw(e,t,n)):vw(e,i,a)}});function _w(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(wC(e)&&wC(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=_w(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r{ow.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!wC(i))return n.issues.push({expected:`record`,code:`invalid_type`,input:i,inst:e}),n;let a=[];if(t.keyType._zod.values){let o=t.keyType._zod.values;n.value={};for(let e of o)if(typeof e==`string`||typeof e==`number`||typeof e==`symbol`){let o=t.valueType._zod.run({value:i[e],issues:[]},r);o instanceof Promise?a.push(o.then(t=>{t.issues.length&&n.issues.push(...LC(e,t.issues)),n.value[e]=t.value})):(o.issues.length&&n.issues.push(...LC(e,o.issues)),n.value[e]=o.value)}let s;for(let e in i)o.has(e)||(s??=[],s.push(e));s&&s.length>0&&n.issues.push({code:`unrecognized_keys`,input:i,inst:e,keys:s})}else{n.value={};for(let o of Reflect.ownKeys(i)){if(o===`__proto__`)continue;let s=t.keyType._zod.run({value:o,issues:[]},r);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(s.issues.length){n.issues.push({origin:`record`,code:`invalid_key`,issues:s.issues.map(e=>zC(e,r,fC())),input:o,path:[o],inst:e}),n.value[s.value]=s.value;continue}let c=t.valueType._zod.run({value:i[o],issues:[]},r);c instanceof Promise?a.push(c.then(e=>{e.issues.length&&n.issues.push(...LC(o,e.issues)),n.value[s.value]=e.value})):(c.issues.length&&n.issues.push(...LC(o,c.issues)),n.value[s.value]=c.value)}}return a.length?Promise.all(a).then(()=>n):n}}),bw=Q(`$ZodEnum`,(e,t)=>{ow.init(e,t);let n=pC(t.entries);e._zod.values=new Set(n),e._zod.pattern=RegExp(`^(${n.filter(e=>TC.has(typeof e)).map(e=>typeof e==`string`?EC(e):e.toString()).join(`|`)})$`),e._zod.parse=(t,r)=>{let i=t.value;return e._zod.values.has(i)||t.issues.push({code:`invalid_value`,values:n,input:i,inst:e}),t}}),xw=Q(`$ZodLiteral`,(e,t)=>{ow.init(e,t),e._zod.values=new Set(t.values),e._zod.pattern=RegExp(`^(${t.values.map(e=>typeof e==`string`?EC(e):e?e.toString():String(e)).join(`|`)})$`),e._zod.parse=(n,r)=>{let i=n.value;return e._zod.values.has(i)||n.issues.push({code:`invalid_value`,values:t.values,input:i,inst:e}),n}}),Sw=Q(`$ZodTransform`,(e,t)=>{ow.init(e,t),e._zod.parse=(e,n)=>{let r=t.transform(e.value,e);if(n.async)return(r instanceof Promise?r:Promise.resolve(r)).then(t=>(e.value=t,e));if(r instanceof Promise)throw new uC;return e.value=r,e}}),Cw=Q(`$ZodOptional`,(e,t)=>{ow.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,vC(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),vC(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${_C(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>t.innerType._zod.optin===`optional`?t.innerType._zod.run(e,n):e.value===void 0?e:t.innerType._zod.run(e,n)}),ww=Q(`$ZodNullable`,(e,t)=>{ow.init(e,t),vC(e._zod,`optin`,()=>t.innerType._zod.optin),vC(e._zod,`optout`,()=>t.innerType._zod.optout),vC(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${_C(e.source)}|null)$`):void 0}),vC(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),Tw=Q(`$ZodDefault`,(e,t)=>{ow.init(e,t),e._zod.optin=`optional`,vC(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>Ew(e,t)):Ew(r,t)}});function Ew(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var Dw=Q(`$ZodPrefault`,(e,t)=>{ow.init(e,t),e._zod.optin=`optional`,vC(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>(e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),Ow=Q(`$ZodNonOptional`,(e,t)=>{ow.init(e,t),vC(e._zod,`values`,()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>kw(t,e)):kw(i,e)}});function kw(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}var Aw=Q(`$ZodCatch`,(e,t)=>{ow.init(e,t),e._zod.optin=`optional`,vC(e._zod,`optout`,()=>t.innerType._zod.optout),vC(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(r=>(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>zC(e,n,fC()))},input:e.value}),e.issues=[]),e)):(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>zC(e,n,fC()))},input:e.value}),e.issues=[]),e)}}),jw=Q(`$ZodPipe`,(e,t)=>{ow.init(e,t),vC(e._zod,`values`,()=>t.in._zod.values),vC(e._zod,`optin`,()=>t.in._zod.optin),vC(e._zod,`optout`,()=>t.out._zod.optout),e._zod.parse=(e,n)=>{let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>Mw(e,t,n)):Mw(r,t,n)}});function Mw(e,t,n){return IC(e)?e:t.out._zod.run({value:e.value,issues:e.issues},n)}var Nw=Q(`$ZodReadonly`,(e,t)=>{ow.init(e,t),vC(e._zod,`propValues`,()=>t.innerType._zod.propValues),vC(e._zod,`values`,()=>t.innerType._zod.values),vC(e._zod,`optin`,()=>t.innerType._zod.optin),vC(e._zod,`optout`,()=>t.innerType._zod.optout),e._zod.parse=(e,n)=>{let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Pw):Pw(r)}});function Pw(e){return e.value=Object.freeze(e.value),e}var Fw=Q(`$ZodLazy`,(e,t)=>{ow.init(e,t),vC(e._zod,`innerType`,()=>t.getter()),vC(e._zod,`pattern`,()=>e._zod.innerType._zod.pattern),vC(e._zod,`propValues`,()=>e._zod.innerType._zod.propValues),vC(e._zod,`optin`,()=>e._zod.innerType._zod.optin),vC(e._zod,`optout`,()=>e._zod.innerType._zod.optout),e._zod.parse=(t,n)=>e._zod.innerType._zod.run(t,n)}),Iw=Q(`$ZodCustom`,(e,t)=>{$C.init(e,t),ow.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>Lw(t,n,r,e));Lw(i,n,r,e)}});function Lw(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(VC(e))}}var Rw=class{constructor(){this._map=new Map,this._idmap=new Map}add(e,...t){let n=t[0];if(this._map.set(e,n),n&&typeof n==`object`&&`id`in n){if(this._idmap.has(n.id))throw Error(`ID ${n.id} already exists in the registry`);this._idmap.set(n.id,e)}return this}clear(){return this._map=new Map,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};return delete n.id,{...n,...this._map.get(e)}}return this._map.get(e)}has(e){return this._map.has(e)}};function zw(){return new Rw}var Bw=zw();function Vw(e){return new e({type:`unknown`})}function Hw(e,t){return new e({type:`never`,...OC(t)})}function Uw(e,t){return new ew({check:`max_length`,...OC(t),maximum:e})}function Ww(e,t){return new tw({check:`min_length`,...OC(t),minimum:e})}function Gw(e,t){return new nw({check:`length_equals`,...OC(t),length:e})}function Kw(e){return new rw({check:`overwrite`,tx:e})}function qw(e,t,n){return new e({type:`array`,element:t,...OC(n)})}function Jw(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...OC(n)})}var Yw=(e,t)=>{UC.init(e,t),e.name=`ZodError`,Object.defineProperties(e,{format:{value:t=>KC(e,t)},flatten:{value:t=>GC(e,t)},addIssue:{value:t=>e.issues.push(t)},addIssues:{value:t=>e.issues.push(...t)},isEmpty:{get(){return e.issues.length===0}}})};Q(`ZodError`,Yw);var Xw=Q(`ZodError`,Yw,{Parent:Error}),Zw=qC(Xw),Qw=JC(Xw),$w=YC(Xw),eT=ZC(Xw),tT=Q(`ZodType`,(e,t)=>(ow.init(e,t),e.def=t,Object.defineProperty(e,"_def",{value:t}),e.check=(...n)=>e.clone({...t,checks:[...t.checks??[],...n.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),e.clone=(t,n)=>DC(e,t,n),e.brand=()=>e,e.register=((t,n)=>(t.add(e,n),e)),e.parse=(t,n)=>Zw(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>$w(e,t,n),e.parseAsync=async(t,n)=>Qw(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>eT(e,t,n),e.spa=e.safeParseAsync,e.refine=(t,n)=>e.check(RT(t,n)),e.superRefine=t=>e.check(zT(t)),e.overwrite=t=>e.check(Kw(t)),e.optional=()=>bT(e),e.nullable=()=>ST(e),e.nullish=()=>bT(ST(e)),e.nonoptional=t=>OT(e,t),e.array=()=>sT(e),e.or=t=>uT([e,t]),e.and=t=>fT(e,t),e.transform=t=>MT(e,vT(t)),e.default=t=>wT(e,t),e.prefault=t=>ET(e,t),e.catch=t=>AT(e,t),e.pipe=t=>MT(e,t),e.readonly=()=>PT(e),e.describe=t=>{let n=e.clone();return Bw.add(n,{description:t}),n},Object.defineProperty(e,"description",{get(){return Bw.get(e)?.description},configurable:!0}),e.meta=(...t)=>{if(t.length===0)return Bw.get(e);let n=e.clone();return Bw.add(n,t[0]),n},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e)),nT=Q(`ZodUnknown`,(e,t)=>{sw.init(e,t),tT.init(e,t)});function rT(){return Vw(nT)}var iT=Q(`ZodNever`,(e,t)=>{cw.init(e,t),tT.init(e,t)});function aT(e){return Hw(iT,e)}var oT=Q(`ZodArray`,(e,t)=>{uw.init(e,t),tT.init(e,t),e.element=t.element,e.min=(t,n)=>e.check(Ww(t,n)),e.nonempty=t=>e.check(Ww(1,t)),e.max=(t,n)=>e.check(Uw(t,n)),e.length=(t,n)=>e.check(Gw(t,n)),e.unwrap=()=>e.element});function sT(e,t){return qw(oT,e,t)}var cT=Q(`ZodObject`,(e,t)=>{pw.init(e,t),tT.init(e,t),vC(e,`shape`,()=>t.shape),e.keyof=()=>hT(Object.keys(e._zod.def.shape)),e.catchall=t=>e.clone({...e._zod.def,catchall:t}),e.passthrough=()=>e.clone({...e._zod.def,catchall:rT()}),e.loose=()=>e.clone({...e._zod.def,catchall:rT()}),e.strict=()=>e.clone({...e._zod.def,catchall:aT()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=t=>MC(e,t),e.merge=t=>NC(e,t),e.pick=t=>AC(e,t),e.omit=t=>jC(e,t),e.partial=(...t)=>PC(yT,e,t[0]),e.required=(...t)=>FC(DT,e,t[0])}),lT=Q(`ZodUnion`,(e,t)=>{hw.init(e,t),tT.init(e,t),e.options=t.options});function uT(e,t){return new lT({type:`union`,options:e,...OC(t)})}var dT=Q(`ZodIntersection`,(e,t)=>{gw.init(e,t),tT.init(e,t)});function fT(e,t){return new dT({type:`intersection`,left:e,right:t})}var pT=Q(`ZodRecord`,(e,t)=>{yw.init(e,t),tT.init(e,t),e.keyType=t.keyType,e.valueType=t.valueType}),mT=Q(`ZodEnum`,(e,t)=>{bw.init(e,t),tT.init(e,t),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new mT({...t,checks:[],...OC(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new mT({...t,checks:[],...OC(r),entries:i})}});function hT(e,t){return new mT({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...OC(t)})}var gT=Q(`ZodLiteral`,(e,t)=>{xw.init(e,t),tT.init(e,t),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})}),_T=Q(`ZodTransform`,(e,t)=>{Sw.init(e,t),tT.init(e,t),e._zod.parse=(n,r)=>{n.addIssue=r=>{if(typeof r==`string`)n.issues.push(VC(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,t.input??=n.value,t.inst??=e,t.continue??=!0,n.issues.push(VC(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function vT(e){return new _T({type:`transform`,transform:e})}var yT=Q(`ZodOptional`,(e,t)=>{Cw.init(e,t),tT.init(e,t),e.unwrap=()=>e._zod.def.innerType});function bT(e){return new yT({type:`optional`,innerType:e})}var xT=Q(`ZodNullable`,(e,t)=>{ww.init(e,t),tT.init(e,t),e.unwrap=()=>e._zod.def.innerType});function ST(e){return new xT({type:`nullable`,innerType:e})}var CT=Q(`ZodDefault`,(e,t)=>{Tw.init(e,t),tT.init(e,t),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function wT(e,t){return new CT({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():t}})}var TT=Q(`ZodPrefault`,(e,t)=>{Dw.init(e,t),tT.init(e,t),e.unwrap=()=>e._zod.def.innerType});function ET(e,t){return new TT({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():t}})}var DT=Q(`ZodNonOptional`,(e,t)=>{Ow.init(e,t),tT.init(e,t),e.unwrap=()=>e._zod.def.innerType});function OT(e,t){return new DT({type:`nonoptional`,innerType:e,...OC(t)})}var kT=Q(`ZodCatch`,(e,t)=>{Aw.init(e,t),tT.init(e,t),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function AT(e,t){return new kT({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:()=>t})}var jT=Q(`ZodPipe`,(e,t)=>{jw.init(e,t),tT.init(e,t),e.in=t.in,e.out=t.out});function MT(e,t){return new jT({type:`pipe`,in:e,out:t})}var NT=Q(`ZodReadonly`,(e,t)=>{Nw.init(e,t),tT.init(e,t)});function PT(e){return new NT({type:`readonly`,innerType:e})}var FT=Q(`ZodLazy`,(e,t)=>{Fw.init(e,t),tT.init(e,t),e.unwrap=()=>e._zod.def.getter()}),IT=Q(`ZodCustom`,(e,t)=>{Iw.init(e,t),tT.init(e,t)});function LT(e){let t=new $C({check:`custom`});return t._zod.check=e,t}function RT(e,t={}){return Jw(IT,e,t)}function zT(e){let t=LT(n=>(n.addIssue=e=>{if(typeof e==`string`)n.issues.push(VC(e,n.value,t._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,r.input??=n.value,r.inst??=t,r.continue??=!t._zod.def.abort,n.issues.push(VC(r))}},e(n.value,n)));return t}var BT=`@ag-ui/client`;function VT(e){if(!e.metadata||!Object.prototype.hasOwnProperty.call(e.metadata,BT))return;let t=e.metadata?.[BT];if(!t||typeof t!=`object`||Array.isArray(t))return[];if(!Object.prototype.hasOwnProperty.call(t,`authoritativeActivityTypes`))return;let n=t.authoritativeActivityTypes;return n===null?null:Array.isArray(n)&&n.every(e=>typeof e==`string`)?n:[]}var $=e=>{if(typeof structuredClone==`function`)return structuredClone(e);try{return JSON.parse(JSON.stringify(e))}catch{return Array.isArray(e)?[...e]:{...e}}};function HT(){return So()}function UT(e){return e instanceof TypeError&&/read[- ]?only|not extensible|cannot add property|cannot delete property|can't be deleted|unable to delete property|object is frozen|is not writable/i.test(e.message)}function WT(e){if(Object.freeze(e),typeof e==`object`&&e)for(let t of Object.values(e))typeof t==`object`&&t&&!Object.isFrozen(t)&&WT(t);return e}var GT=524288;function KT(e,t,n){let r=0,i=[e,t],a=new WeakSet;for(;i.length>0;){let e=i.pop();if(typeof e==`string`){if(r+=e.length,r>n)return!0}else if(typeof e==`object`&&e){if(a.has(e))continue;if(a.add(e),Array.isArray(e))for(let t=0;tn)return!0;i.push(e[o])}}}}return!1}async function qT(e,t,n,r){let i=typeof process<`u`&&!0,a=i&&!!{}.VITEST_WORKER_ID,o=i&&!!{}.VITEST_WORKER_ID,s=o&&!KT(t,n,GT),c=s?$(t):t,l=s?$(n):n,u=!1,d=!1,f;for(let t of e)try{s&&(WT(c),WT(l));let e=await r(t,c,l);if(e===void 0)continue;let n=!1;if(e.messages!==void 0&&e.messages!==c&&(c=$(e.messages),u=!0,n=!0),e.state!==void 0&&e.state!==l&&(l=$(e.state),d=!0,n=!0),s&&n&&KT(c,l,GT)&&(s=!1),f=e.stopPropagation,f===!0)break}catch(e){if(a&&e instanceof TypeError)throw e;s&&o&&UT(e)?console.error(`AG-UI: Subscriber attempted to mutate frozen inputs in-place. Return mutations via AgentStateMutation instead of mutating directly.`,e):console.error(`Subscriber error:`,e);continue}return{...u?{messages:Object.isFrozen(c)?$(c):c}:{},...d?{state:Object.isFrozen(l)?$(l):l}:{},...f===void 0?{}:{stopPropagation:f}}}function JT(e){if(!e)return{enabled:!1,events:!1,lifecycle:!1,verbose:!1};if(e===!0)return{enabled:!0,events:!0,lifecycle:!0,verbose:!0};let t=e.events??!0,n=e.lifecycle??!0,r=e.verbose??!1;return{enabled:t||n,events:t,lifecycle:n,verbose:r}}function YT(e){if(e instanceof XT)return e;if(e===!0)return new XT(JT(!0))}var XT=class{constructor(e){this.config=e}event(e,t,n,r){this.config.events&&(this.config.verbose?console.debug(`[${e}] ${t}`,typeof n==`string`?n:JSON.stringify(n)):console.debug(`[${e}] ${t}`,r??n))}lifecycle(e,t,n){this.config.lifecycle&&(n?console.debug(`[${e}] ${t}`,n):console.debug(`[${e}] ${t}`))}get eventsEnabled(){return this.config.events}get lifecycleEnabled(){return this.config.lifecycle}get enabled(){return this.config.enabled}};function ZT(e){return e.enabled?new XT(e):void 0}function QT(e,t,n){if(t){let r=e.find(e=>e.id===t);if(r?.role===`assistant`)return r;r&&console.warn(`TOOL_CALL_START: parentMessageId '${t}' matches a '${r.role}' message, not assistant — falling back to toolCallId`);let i={id:r?n:t,role:`assistant`,toolCalls:[]};return e.push(i),i}let r={id:n,role:`assistant`,toolCalls:[]};return e.push(r),r}function $T(e,t){return!e||t.metadata===void 0?!1:(e.metadata=Oo(e.metadata,$(t.metadata)),!0)}var eE=(e,t,n,r,i)=>{let a=YT(i),o=$(n.messages),s=$(e.state),c={},l=[],u=new Set,d=e=>{let t=e.outcome?.type===`success`?e.outcome.pendingToolCallIds:void 0;return t!==void 0&&t.length>0?[...t]:l.filter(e=>!u.has(e))},f=e=>{e.messages!==void 0&&(o=e.messages,c.messages=e.messages),e.state!==void 0&&(s=e.state,c.state=e.state)},p=()=>{let e=$(c);return c={},e.messages!==void 0||e.state!==void 0?M(e):pc};return t.pipe(tl(async t=>{let i=await qT(r,o,s,(r,i,a)=>r.onEvent?.({event:t,agent:n,input:e,messages:i,state:a}));if(f(i),i.stopPropagation===!0?a?.event(`APPLY`,`Event dropped:`,t,{type:t.type,reason:`stopPropagation by subscriber`}):a?.event(`APPLY`,`Event applied:`,t,{type:t.type,subscribers:r.length}),i.stopPropagation===!0)return p();switch(t.type){case k.TEXT_MESSAGE_START:{let i=await qT(r,o,s,(r,i,a)=>r.onTextMessageStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(i),i.stopPropagation!==!0){let{messageId:e,role:n=`assistant`,name:r,subagentRunId:i}=t,a=o.find(t=>t.id===e);if(a?.role===`activity`)return console.warn(`TEXT_MESSAGE_START: Message '${e}' is an activity message — message ids must be unique across activity and text messages`),p();let s=a;if(!s){let t={id:e,role:n,content:``,...r!==void 0&&{name:r},...i!=null&&{subagentRunId:i}};o.push(t),s=t}let c=$T(s,t);(!a||c)&&f({messages:o})}return p()}case k.TEXT_MESSAGE_CONTENT:{let{messageId:i,delta:a}=t,c=o.find(e=>e.id===i);if(!c)return console.warn(`TEXT_MESSAGE_CONTENT: No message found with ID '${i}'`),p();if(c.role===`activity`)return console.warn(`TEXT_MESSAGE_CONTENT: Message '${i}' is an activity message — message ids must be unique across activity and text messages`),p();let l=await qT(r,o,s,(r,i,a)=>r.onTextMessageContentEvent?.({event:t,messages:i,state:a,agent:n,input:e,textMessageBuffer:typeof c.content==`string`?c.content:``}));return f(l),l.stopPropagation!==!0&&(c.content=`${typeof c.content==`string`?c.content:``}${a}`,$T(c,t),f({messages:o})),p()}case k.TEXT_MESSAGE_END:{let{messageId:i}=t,a=o.find(e=>e.id===i);if(!a)return console.warn(`TEXT_MESSAGE_END: No message found with ID '${i}'`),p();if(a.role===`activity`)return console.warn(`TEXT_MESSAGE_END: Message '${i}' is an activity message — message ids must be unique across activity and text messages`),p();let c=await qT(r,o,s,(r,i,o)=>r.onTextMessageEndEvent?.({event:t,messages:i,state:o,agent:n,input:e,textMessageBuffer:typeof a.content==`string`?a.content:``}));return f(c),c.stopPropagation!==!0&&$T(a,t)&&f({messages:o}),await Promise.all(r.map(t=>{t.onNewMessage?.({message:a,messages:o,state:s,agent:n,input:e})})),p()}case k.TOOL_CALL_START:{let i=await qT(r,o,s,(r,i,a)=>r.onToolCallStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(i),i.stopPropagation!==!0){let{toolCallId:e,toolCallName:n,parentMessageId:r,subagentRunId:i}=t;l.includes(e)||l.push(e);let a=o.find(t=>t.toolCalls?.some(t=>t.id===e))?.toolCalls?.find(t=>t.id===e);if(a){let r=a.function.name!==n;return r&&(console.warn(`TOOL_CALL_START: tool call '${e}' already exists with name '${a.function.name}' — updating it to '${n}'`),a.function.name=n),($T(a,t)||r)&&f({messages:o}),p()}let s=new Set(o.map(e=>e.id)),c=QT(o,r,e);!s.has(c.id)&&i!=null&&c.subagentRunId===void 0&&(c.subagentRunId=i),c.toolCalls??=[];let u={id:e,type:`function`,function:{name:n,arguments:``}};c.toolCalls.push(u),$T(u,t),f({messages:o})}return p()}case k.TOOL_CALL_ARGS:{let{toolCallId:i,delta:a}=t,c=o.find(e=>e.toolCalls?.some(e=>e.id===i));if(!c)return console.warn(`TOOL_CALL_ARGS: No message found containing tool call with ID '${i}'`),p();let l=c.toolCalls?.find(e=>e.id===i);if(!l)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${i}'`),p();let u=await qT(r,o,s,(r,i,a)=>{let o=l.function.arguments,s=l.function.name,c={};try{c=cl(o)}catch{}return r.onToolCallArgsEvent?.({event:t,messages:i,state:a,agent:n,input:e,toolCallBuffer:o,toolCallName:s,partialToolCallArgs:c})});return f(u),u.stopPropagation!==!0&&(l.function.arguments+=a,$T(l,t),f({messages:o})),p()}case k.TOOL_CALL_END:{let{toolCallId:i}=t,a=o.find(e=>e.toolCalls?.some(e=>e.id===i));if(!a)return console.warn(`TOOL_CALL_END: No message found containing tool call with ID '${i}'`),p();let c=a.toolCalls?.find(e=>e.id===i);if(!c)return console.warn(`TOOL_CALL_END: No tool call found with ID '${i}'`),p();let l=await qT(r,o,s,(r,i,a)=>{let o=c.function.arguments,s=c.function.name,l={};try{l=JSON.parse(o)}catch{}return r.onToolCallEndEvent?.({event:t,messages:i,state:a,agent:n,input:e,toolCallName:s,toolCallArgs:l})});return f(l),l.stopPropagation!==!0&&$T(c,t)&&f({messages:o}),await Promise.all(r.map(t=>{t.onNewToolCall?.({toolCall:c,messages:o,state:s,agent:n,input:e})})),p()}case k.TOOL_CALL_RESULT:{let i=await qT(r,o,s,(r,i,a)=>r.onToolCallResultEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(i),i.stopPropagation!==!0){let{messageId:i,toolCallId:a,content:c,role:l,subagentRunId:d}=t;u.add(a);let p={id:i,toolCallId:a,role:l||`tool`,content:c,...d!=null&&{subagentRunId:d}};$T(p,t);let m=o.findIndex(e=>e.role===`assistant`&&e.toolCalls?.some(e=>e.id===a));if(m===-1)o.push(p);else{let e=m+1;for(;e{t.onNewMessage?.({message:p,messages:o,state:s,agent:n,input:e})})),f({messages:o})}return p()}case k.STATE_SNAPSHOT:{let i=await qT(r,o,s,(r,i,a)=>r.onStateSnapshotEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(i),i.stopPropagation!==!0){let{snapshot:e}=t;s=e,f({state:s})}return p()}case k.STATE_DELTA:{let i=await qT(r,o,s,(r,i,a)=>r.onStateDeltaEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(i),i.stopPropagation!==!0){let{delta:e}=t;try{s=ds.applyPatch(s,e,!0,!1).newDocument,f({state:s})}catch(t){let n=t instanceof Error?t.message:String(t);console.warn(`Failed to apply state patch:\nCurrent state: ${JSON.stringify(s,null,2)}\nPatch operations: ${JSON.stringify(e,null,2)}\nError: ${n}`)}}return p()}case k.MESSAGES_SNAPSHOT:{let i=await qT(r,o,s,(r,i,a)=>r.onMessagesSnapshotEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(i),i.stopPropagation!==!0){let{messages:e}=t,n=e.map(e=>{if(e.subagentRunId!==null)return e;let t={...e};return delete t.subagentRunId,t}),r=new Map(n.map(e=>[e.id,e])),i=VT(t),a=n.some(e=>e.role===`activity`),s=n.some(e=>e.role===`reasoning`),c=e=>e.role===`activity`&&(i?!i.includes(e.activityType):i!==null&&!a)||e.role===`reasoning`&&!s;o=o.filter(e=>r.has(e.id)||c(e)).map(e=>r.get(e.id)??e);let l=new Set(o.map(e=>e.id));for(let e of n)l.has(e.id)||o.push(e);f({messages:o})}return p()}case k.ACTIVITY_SNAPSHOT:{let i=t,a=o.findIndex(e=>e.id===i.messageId),c=a>=0?o[a]:void 0,l=c?.role===`activity`?c:void 0,u=i.replace??!0,d=await qT(r,o,s,(t,r,a)=>t.onActivitySnapshotEvent?.({event:i,messages:r,state:a,agent:n,input:e,activityMessage:l,existingMessage:c}));if(f(d),d.stopPropagation!==!0){let t={id:i.messageId,role:`activity`,activityType:i.activityType,content:$(i.content),...i.subagentRunId!=null&&{subagentRunId:i.subagentRunId}},c,d;a===-1?(o.push(t),c=t,d=t):l?(u&&(o[a]={...l,activityType:i.activityType,content:$(i.content),subagentRunId:i.subagentRunId},i.subagentRunId??delete o[a].subagentRunId),d=o[a]):u&&(o[a]=t,c=t,d=t),$T(d,i),f({messages:o}),c&&await Promise.all(r.map(t=>t.onNewMessage?.({message:c,messages:o,state:s,agent:n,input:e})))}return p()}case k.ACTIVITY_DELTA:{let i=t,a=o.findIndex(e=>e.id===i.messageId);if(a===-1)return p();let c=o[a];if(c.role!==`activity`)return console.warn(`ACTIVITY_DELTA: Message '${i.messageId}' is not an activity message`),p();let l=c,u=await qT(r,o,s,(t,r,a)=>t.onActivityDeltaEvent?.({event:i,messages:r,state:a,agent:n,input:e,activityMessage:l}));if(f(u),u.stopPropagation!==!0)try{$T(l,i)&&f({messages:o});let e=$(l.content??{}),t=ds.applyPatch(e,i.patch??[],!0,!1).newDocument;o[a]={...l,content:$(t),activityType:i.activityType},f({messages:o})}catch(e){let t=e instanceof Error?e.message:String(e);console.warn(`Failed to apply activity patch for '${i.messageId}': ${t}`)}return p()}case k.RAW:return f(await qT(r,o,s,(r,i,a)=>r.onRawEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.CUSTOM:return f(await qT(r,o,s,(r,i,a)=>r.onCustomEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.RUN_STARTED:{let i=await qT(r,o,s,(r,i,a)=>r.onRunStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(i),l=[],u=new Set,i.stopPropagation!==!0){let e=t;if(e.input?.messages){for(let t of e.input.messages){let e=t;if(t.subagentRunId===null){let n={...t};delete n.subagentRunId,e=n}o.find(t=>t.id===e.id)||o.push(e)}f({messages:o})}}return p()}case k.RUN_FINISHED:{let i=t,a=i.outcome?.type===`interrupt`?{event:i,outcome:`interrupt`,interrupts:i.outcome.interrupts}:i.outcome?.type===`cancelled`?{event:i,outcome:`cancelled`}:{event:i,outcome:`success`,result:i.result,pendingToolCallIds:d(i)},c=await qT(r,o,s,(t,r,i)=>t.onRunFinishedEvent?.({...a,messages:r,state:i,agent:n,input:e}));return f(c),c.stopPropagation!==!0&&(n.pendingInterrupts=a.outcome===`interrupt`?a.interrupts.map(e=>{if(e.subagentRunId!==null)return e;let t={...e};return delete t.subagentRunId,t}):[]),p()}case k.RUN_ERROR:return f(await qT(r,o,s,(r,i,a)=>r.onRunErrorEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.STEP_STARTED:return f(await qT(r,o,s,(r,i,a)=>r.onStepStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.STEP_FINISHED:return f(await qT(r,o,s,(r,i,a)=>r.onStepFinishedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.TEXT_MESSAGE_CHUNK:throw Error(`TEXT_MESSAGE_CHUNK must be transformed before being applied`);case k.TOOL_CALL_CHUNK:throw Error(`TOOL_CALL_CHUNK must be transformed before being applied`);case k.REASONING_START:return f(await qT(r,o,s,(r,i,a)=>r.onReasoningStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.REASONING_MESSAGE_START:{let i=await qT(r,o,s,(r,i,a)=>r.onReasoningMessageStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(i),i.stopPropagation!==!0){let{messageId:e,subagentRunId:n}=t,r=o.find(t=>t.id===e);if(r?.role===`activity`)return console.warn(`REASONING_MESSAGE_START: Message '${e}' is an activity message — message ids must be unique across activity and reasoning messages`),p();let i=r;if(!i){let t={id:e,role:`reasoning`,content:``,...n!=null&&{subagentRunId:n}};o.push(t),i=t}let a=$T(i,t);(!r||a)&&f({messages:o})}return p()}case k.REASONING_MESSAGE_CONTENT:{let{messageId:i,delta:a}=t,c=o.find(e=>e.id===i);if(!c)return console.warn(`REASONING_MESSAGE_CONTENT: No message found with ID '${i}'`),p();if(c.role===`activity`)return console.warn(`REASONING_MESSAGE_CONTENT: Message '${i}' is an activity message — message ids must be unique across activity and reasoning messages`),p();let l=await qT(r,o,s,(r,i,a)=>r.onReasoningMessageContentEvent?.({event:t,messages:i,state:a,agent:n,input:e,reasoningMessageBuffer:typeof c.content==`string`?c.content:``}));return f(l),l.stopPropagation!==!0&&(c.content=`${typeof c.content==`string`?c.content:``}${a}`,$T(c,t),f({messages:o})),p()}case k.REASONING_MESSAGE_END:{let{messageId:i}=t,a=o.find(e=>e.id===i);if(!a)return console.warn(`REASONING_MESSAGE_END: No message found with ID '${i}'`),p();if(a.role===`activity`)return console.warn(`REASONING_MESSAGE_END: Message '${i}' is an activity message — message ids must be unique across activity and reasoning messages`),p();let c=await qT(r,o,s,(r,i,o)=>r.onReasoningMessageEndEvent?.({event:t,messages:i,state:o,agent:n,input:e,reasoningMessageBuffer:typeof a.content==`string`?a.content:``}));return f(c),c.stopPropagation!==!0&&$T(a,t)&&f({messages:o}),await Promise.all(r.map(t=>{t.onNewMessage?.({message:a,messages:o,state:s,agent:n,input:e})})),p()}case k.REASONING_MESSAGE_CHUNK:throw Error(`REASONING_MESSAGE_CHUNK must be transformed before being applied`);case k.REASONING_END:return f(await qT(r,o,s,(r,i,a)=>r.onReasoningEndEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.REASONING_ENCRYPTED_VALUE:{let{subtype:i,entityId:a,encryptedValue:l}=t,u=await qT(r,o,s,(r,i,a)=>r.onReasoningEncryptedValueEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(u),u.stopPropagation!==!0){let e=!1;if(i===`tool-call`){for(let t of o)if(t.role===`assistant`&&t.toolCalls){let n=t.toolCalls.find(e=>e.id===a);if(n){n.encryptedValue=l,e=!0;break}}}else{let t=o.find(e=>e.id===a);t?.role!==`activity`&&t&&(t.encryptedValue=l,e=!0)}e&&(c.messages=o)}return p()}case k.SUBAGENT_STARTED:return f(await qT(r,o,s,(r,i,a)=>r.onSubagentStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.SUBAGENT_FINISHED:return f(await qT(r,o,s,(r,i,a)=>r.onSubagentFinishedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.SUBAGENT_ERROR:return f(await qT(r,o,s,(r,i,a)=>r.onSubagentErrorEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p()}return t.type,p()}),Zc(),r.length>0?nl({}):e=>e)},tE=e=>t=>{let n=YT(e),r=new Set,i=new Set,a=new Set,o=new Set,s={message:new Map,toolCall:new Map,activity:new Map,reasoning:new Map},c=!1,l=!1,u=!1,d=new Map,f=e=>{let t=d.get(e);return t||(t=new Map,d.set(e,t)),t},p=()=>{for(let e of d.values())if(e.size>0)return!0;return!1},m=new Map,h=new Set,g=!1,_=()=>{r.clear(),i.clear(),a.clear(),o.clear(),s.message.clear(),s.toolCall.clear(),s.activity.clear(),s.reasoning.clear(),d.clear(),m.clear(),h.clear(),c=!1,l=!1,g=!0},v=(e,t)=>{let n=e??[];if(Array.isArray(n))for(let e of n){if(!e||typeof e.id!=`string`)continue;if(e.subagentRunId===null)return new A(`Cannot send a message (id '${e.id}') with 'subagentRunId: null'. The field is optional — omit it entirely.`);let n=e.role===`reasoning`?s.reasoning:e.role===`activity`?s.activity:s.message;(t||!n.has(e.id))&&n.set(e.id,{subagentRunId:e.subagentRunId});for(let n of e.toolCalls??[])n&&typeof n.id==`string`&&(t||!s.toolCall.has(n.id))&&s.toolCall.set(n.id,{subagentRunId:e.subagentRunId??void 0})}},y=(e,t,n,r,i)=>{if(t!==void 0&&n&&n.subagentRunId!==t)return new A(`Cannot send '${e}': subagentRunId '${t}' does not match the ${r} '${i}' opener's subagent '${n.subagentRunId??`(the parent agent)`}'.`)};return t.pipe(Xc(e=>{let t=e.type;if(n?.event(`VERIFY`,`Event:`,e,{type:e.type}),l&&t!==k.RUN_STARTED)return N(()=>new A(`Cannot send event type '${t}': The run has already errored with 'RUN_ERROR'. No further events can be sent.`));if(c&&t!==k.RUN_ERROR&&t!==k.RUN_STARTED)return N(()=>new A(`Cannot send event type '${t}': The run has already finished with 'RUN_FINISHED'. Start a new run with 'RUN_STARTED'.`));if(!u){if(u=!0,t!==k.RUN_STARTED&&t!==k.RUN_ERROR)return N(()=>new A(`First event must be 'RUN_STARTED'`))}else if(t===k.RUN_STARTED){if(g&&!c&&!l)return N(()=>new A(`Cannot send 'RUN_STARTED' while a run is still active. The previous run must be finished with 'RUN_FINISHED' before starting a new run.`));(c||l)&&_()}if(e.subagentRunId===null)return N(()=>new A(`Cannot send '${t}' with 'subagentRunId: null'. The field is optional — omit it entirely.`));if(t===k.SUBAGENT_STARTED||t===k.SUBAGENT_FINISHED||t===k.SUBAGENT_ERROR){let n=t===k.SUBAGENT_STARTED?[`description`,`parentSubagentRunId`,`parentToolCallId`,`parentMessageId`]:t===k.SUBAGENT_FINISHED?[`outcome`]:[`code`];for(let r of n)if(e[r]===null)return N(()=>new A(`Cannot send '${t}' with '${r}: null'. The field is optional — omit it entirely.`));let r=e.outcome;if(r!=null&&r.type!==`success`&&r.type!==`suspended`)return N(()=>new A(`Cannot send '${t}' with outcome type '${String(r.type)}'. The outcome is either { type: "success" } or { type: "suspended" }.`));if(r&&r.interruptIds===null)return N(()=>new A(`Cannot send '${t}' with 'outcome.interruptIds: null'. The field is optional — omit it entirely.`));if(r&&Array.isArray(r.interruptIds)&&r.interruptIds.some(e=>typeof e!=`string`))return N(()=>new A(`Cannot send '${t}' with a non-string entry in 'outcome.interruptIds'. Interrupt ids are strings.`))}if(t===k.RUN_FINISHED){let t=e.outcome;if(t?.type===`interrupt`&&Array.isArray(t.interrupts)){for(let e of t.interrupts)if(e&&e.subagentRunId===null)return N(()=>new A(`Cannot send 'RUN_FINISHED' with an interrupt (id '${e.id}') carrying 'subagentRunId: null'. The field is optional — omit it entirely.`))}}switch(t){case k.TEXT_MESSAGE_START:{let n=e.messageId;if(r.has(n))return N(()=>new A(`Cannot send 'TEXT_MESSAGE_START' event: A text message with ID '${n}' is already in progress. Complete it with 'TEXT_MESSAGE_END' first.`));let i=s.message.get(n);if(i){let r=y(t,e.subagentRunId,i,`message`,n);if(r)return N(()=>r)}return r.add(n),i||s.message.set(n,{subagentRunId:e.subagentRunId}),M(e)}case k.TEXT_MESSAGE_CONTENT:{let n=e.messageId;if(!r.has(n))return N(()=>new A(`Cannot send 'TEXT_MESSAGE_CONTENT' event: No active text message found with ID '${n}'. Start a text message with 'TEXT_MESSAGE_START' first.`));let i=y(t,e.subagentRunId,s.message.get(n),`message`,n);return i?N(()=>i):M(e)}case k.TEXT_MESSAGE_END:{let n=e.messageId;if(!r.has(n))return N(()=>new A(`Cannot send 'TEXT_MESSAGE_END' event: No active text message found with ID '${n}'. A 'TEXT_MESSAGE_START' event must be sent first.`));let i=y(t,e.subagentRunId,s.message.get(n),`message`,n);return i?N(()=>i):(r.delete(n),M(e))}case k.TOOL_CALL_START:{let n=e.toolCallId;if(i.has(n))return N(()=>new A(`Cannot send 'TOOL_CALL_START' event: A tool call with ID '${n}' is already in progress. Complete it with 'TOOL_CALL_END' first.`));let r=e.parentMessageId,a=e.subagentRunId,o;if(r!==void 0){let e=s.message.get(r);if(e){if(a!==void 0&&a!==e.subagentRunId)return N(()=>new A(`Cannot send 'TOOL_CALL_START': subagentRunId '${a}' does not match its parent message '${r}' owner '${e.subagentRunId??`(the parent agent)`}'. A tool call belongs to the message that carries it.`));o=e}}let c=s.toolCall.get(n);if(c){let e=y(t,a,c,`tool call`,n);if(e)return N(()=>e);if(a===void 0&&o&&o.subagentRunId!==c.subagentRunId)return N(()=>new A(`Cannot send 'TOOL_CALL_START': tool call '${n}' is owned by '${c.subagentRunId??`(the parent agent)`}' but its parent message '${r}' is owned by '${o.subagentRunId??`(the parent agent)`}'. A tool call belongs to the message that carries it.`))}return i.add(n),c||s.toolCall.set(n,a===void 0?o??{subagentRunId:void 0}:{subagentRunId:a}),M(e)}case k.TOOL_CALL_ARGS:{let n=e.toolCallId;if(!i.has(n))return N(()=>new A(`Cannot send 'TOOL_CALL_ARGS' event: No active tool call found with ID '${n}'. Start a tool call with 'TOOL_CALL_START' first.`));let r=y(t,e.subagentRunId,s.toolCall.get(n),`tool call`,n);return r?N(()=>r):M(e)}case k.TOOL_CALL_END:{let n=e.toolCallId;if(!i.has(n))return N(()=>new A(`Cannot send 'TOOL_CALL_END' event: No active tool call found with ID '${n}'. A 'TOOL_CALL_START' event must be sent first.`));let r=y(t,e.subagentRunId,s.toolCall.get(n),`tool call`,n);return r?N(()=>r):(i.delete(n),M(e))}case k.STEP_STARTED:{let t=e.stepName,n=e.subagentRunId;return f(n).has(t)?N(()=>new A(`Step "${t}" is already active for 'STEP_STARTED'${n===void 0?``:` in subagent '${n}'`}`)):(f(n).set(t,!0),M(e))}case k.STEP_FINISHED:{let t=e.stepName,n=e.subagentRunId;if(!f(n).has(t)){let e,r=!1;for(let[i,a]of d)if(i!==n&&a.has(t)){e=i,r=!0;break}return N(r?()=>new A(`Cannot send 'STEP_FINISHED' for step "${t}" attributed to ${n===void 0?`the parent agent`:`subagent '${n}'`}: that step is open under ${e===void 0?`the parent agent`:`subagent '${e}'`}. A step must be finished by whoever started it.`):()=>new A(`Cannot send 'STEP_FINISHED' for step "${t}" that was not started`))}return f(n).delete(t),M(e)}case k.ACTIVITY_SNAPSHOT:{let t=e.messageId;return(!s.activity.has(t)||e.replace!==!1)&&s.activity.set(t,{subagentRunId:e.subagentRunId}),M(e)}case k.TOOL_CALL_RESULT:{let t=e.messageId;return typeof t==`string`&&s.message.set(t,{subagentRunId:e.subagentRunId}),M(e)}case k.REASONING_START:case k.REASONING_MESSAGE_START:{let n=e.messageId,r=t===k.REASONING_START,i=r?a:o;if(i.has(n))return N(()=>new A(r?`Cannot send 'REASONING_START' event: A reasoning span with ID '${n}' is already in progress. Complete it with 'REASONING_END' first.`:`Cannot send 'REASONING_MESSAGE_START' event: A reasoning message with ID '${n}' is already in progress. Complete it with 'REASONING_MESSAGE_END' first.`));let c=s.reasoning.get(n);if(c){let r=y(t,e.subagentRunId,c,`reasoning message`,n);if(r)return N(()=>r)}return i.add(n),c||s.reasoning.set(n,{subagentRunId:e.subagentRunId}),M(e)}case k.REASONING_MESSAGE_CONTENT:case k.REASONING_MESSAGE_END:case k.REASONING_END:{let n=e.messageId,r=t===k.REASONING_END,i=r?a:o;if(!i.has(n))return N(()=>new A(r?`Cannot send 'REASONING_END' event: No active reasoning span found with ID '${n}'. A 'REASONING_START' event must be sent first.`:`Cannot send '${t}' event: No active reasoning message found with ID '${n}'. Start a reasoning message with 'REASONING_MESSAGE_START' first.`));let c=y(t,e.subagentRunId,s.reasoning.get(n),`reasoning message`,n);return c?N(()=>c):((t===k.REASONING_END||t===k.REASONING_MESSAGE_END)&&i.delete(n),M(e))}case k.REASONING_ENCRYPTED_VALUE:{let n=e.entityId,r=e.subtype,i=r===`tool-call`?s.toolCall.get(n):r===`message`?s.message.get(n)??s.reasoning.get(n):s.reasoning.get(n),a=r===`tool-call`?`tool call`:r===`message`?`message`:`reasoning message`,o=y(t,e.subagentRunId,i,a,n);return o?N(()=>o):M(e)}case k.ACTIVITY_DELTA:{let n=e.messageId,r=y(t,e.subagentRunId,s.activity.get(n),`activity`,n);return r?N(()=>r):M(e)}case k.SUBAGENT_STARTED:{if(typeof e.subagentRunId!=`string`)return N(()=>new A(`Cannot send 'SUBAGENT_STARTED' without a 'subagentRunId'.`));if(typeof e.name!=`string`)return N(()=>new A(`Cannot send 'SUBAGENT_STARTED' without a 'name'.`));let t=e.subagentRunId,n=e.parentSubagentRunId;return m.has(t)?N(()=>new A(`Cannot send 'SUBAGENT_STARTED': subagent '${t}' is already active. Finish it with 'SUBAGENT_FINISHED' first.`)):h.has(t)?N(()=>new A(`Cannot send 'SUBAGENT_STARTED': subagent '${t}' has already finished in this run. Subagent IDs are per-invocation and cannot be reused.`)):n!==void 0&&!m.has(n)&&!h.has(n)?N(()=>new A(`Cannot send 'SUBAGENT_STARTED': parentSubagentRunId '${n}' has not been started in this run.`)):(m.set(t,!0),M(e))}case k.SUBAGENT_FINISHED:case k.SUBAGENT_ERROR:{if(typeof e.subagentRunId!=`string`)return N(()=>new A(`Cannot send '${t}' without a 'subagentRunId'.`));if(t===k.SUBAGENT_ERROR&&typeof e.message!=`string`)return N(()=>new A(`Cannot send 'SUBAGENT_ERROR' without a 'message'.`));let n=e.subagentRunId;return m.has(n)?(m.delete(n),h.add(n),M(e)):N(()=>new A(`Cannot send '${t}': no active subagent found with ID '${n}'. A 'SUBAGENT_STARTED' event must be sent first.`))}case k.MESSAGES_SNAPSHOT:{let t=v(e.messages,!0);if(t)return N(()=>t)}return M(e);case k.RUN_STARTED:g=!0;{let t=v((e.input??{}).messages,!1);if(t)return N(()=>t)}return M(e);case k.RUN_FINISHED:if(p()){let e=[];for(let[t,n]of d)for(let r of n.keys())e.push(t===void 0?r:`${r} (subagent '${t}')`);let t=e.join(`, `);return N(()=>new A(`Cannot send 'RUN_FINISHED' while steps are still active: ${t}`))}if(r.size>0){let e=Array.from(r.keys()).join(`, `);return N(()=>new A(`Cannot send 'RUN_FINISHED' while text messages are still active: ${e}`))}if(o.size>0){let e=Array.from(o.keys()).join(`, `);return N(()=>new A(`Cannot send 'RUN_FINISHED' while reasoning messages are still active: ${e}`))}if(a.size>0){let e=Array.from(a.keys()).join(`, `);return N(()=>new A(`Cannot send 'RUN_FINISHED' while reasoning spans are still active: ${e}`))}if(i.size>0){let e=Array.from(i.keys()).join(`, `);return N(()=>new A(`Cannot send 'RUN_FINISHED' while tool calls are still active: ${e}`))}if(m.size>0){let e=Array.from(m.keys()).join(`, `);return N(()=>new A(`Cannot send 'RUN_FINISHED' while subagents are still active: ${e}`))}return c=!0,M(e);case k.RUN_ERROR:return l=!0,M(e);case k.CUSTOM:return M(e);default:return M(e)}}))},nE=function(e){return e.HEADERS=`headers`,e.DATA=`data`,e}({}),rE=e=>Qc(()=>Gc(e())).pipe(il(e=>{if(!e.ok){let t=e.headers.get(`content-type`)||``;return Gc(e.text()).pipe(Xc(n=>{let r=n;if(t.includes(`application/json`))try{r=JSON.parse(n)}catch{}let i=Error(`HTTP ${e.status}: ${typeof r==`string`?r:JSON.stringify(r)}`);return i.status=e.status,i.payload=r,N(()=>i)}))}let t={type:nE.HEADERS,status:e.status,headers:e.headers},n=e.body?.getReader();return n?new ec(e=>(e.next(t),(async()=>{try{for(;;){let{done:t,value:r}=await n.read();if(t)break;let i={type:nE.DATA,data:r};e.next(i)}e.complete()}catch(t){e.error(t)}})(),()=>{n.cancel().catch(e=>{if(e?.name!==`AbortError`)throw e})})):N(()=>Error(`Failed to getReader() from response`))})),iE=10485760,aE=(e,t)=>{let n=YT(t),r=new lc,i=new TextDecoder(`utf-8`,{fatal:!1}),a=``;e.subscribe({next:e=>{if(e.type!==nE.HEADERS&&e.type===nE.DATA&&e.data){let t=i.decode(e.data,{stream:!0});a+=t;let n=a.split(/\n\n/);a=n.pop()||``;for(let e of n)o(e);if(a.length>iE){r.error(Error(`SSE buffer size exceeded maximum limit of ${iE/1048576} MB`));return}}},error:e=>r.error(e),complete:()=>{a&&(a+=i.decode(),o(a)),r.complete()}});function o(e){let t=e.split(` -`),i=[];for(let e of t)e.startsWith(`data:`)&&i.push(e.slice(5).replace(/^ /,``));if(i.length>0)try{let e=i.join(` -`),t=JSON.parse(e);n?.event(`SSE`,`Event received:`,t,{type:t?.type}),r.next(t)}catch(e){r.error(e)}}return r.asObservable()},oE=10485760,sE=()=>typeof process<`u`&&!!{}.SUPPRESS_TRANSFORMATION_WARNINGS,cE=(e,t)=>{let n=YT(t),r=new lc,i=new Uint8Array,a=!1;e.subscribe({next:e=>{if(e.type!==nE.HEADERS&&e.type===nE.DATA&&e.data){let t=new Uint8Array(i.length+e.data.length);t.set(i,0),t.set(e.data,i.length),i=t,o()}},error:e=>r.error(e),complete:()=>{if(o(),!a){if(i.length>0){r.error(Error(`The binary stream ended mid-frame: ${i.length} trailing bytes could not be read as a complete message.`));return}r.complete()}}});function o(){if(!a)for(;i.length>=4;){let e=4+new DataView(i.buffer,i.byteOffset,4).getUint32(0,!1);if(e>oE){r.error(Error(`Protobuf message size exceeded maximum limit of ${oE/1048576} MB`));return}if(i.length{let n=YT(t),r=new lc,i=new fc(1),a=!1,o,s=!1,c=()=>{s=!0,o?.unsubscribe()},l=e=>{c(),r.error(e)},u=()=>{c(),r.complete()};return o=e.subscribe({next:e=>{if(i.next(e),e.type===nE.HEADERS&&!a){a=!0;let t=e.headers.get(`content-type`);n?.lifecycle(`HTTP`,`Stream format detected:`,{contentType:t,parser:t===`application/vnd.ag-ui.event+proto`?`protobuf`:`sse`}),t===`application/vnd.ag-ui.event+proto`?cE(i,n).subscribe({next:e=>r.next(e),error:e=>l(e),complete:()=>u()}):aE(i,n).subscribe({next:e=>{if(typeof e!=`object`||!e||Array.isArray(e)){let t=Error(`Invalid event: the frame is not a JSON object.`);n?.event(`HTTP`,`Event invalid:`,{json:e,error:String(t)}),l(t);return}let t=e;if(typeof t.type!=`string`||t.type.length===0){let t=Error(`Invalid event: the frame carries no event type.`);n?.event(`HTTP`,`Event invalid:`,{json:e,error:String(t)}),l(t);return}n?.event(`HTTP`,`Event received:`,e,{type:t.type}),r.next(e)},error:e=>{if(e?.name===`AbortError`){r.next({type:k.RUN_ERROR,message:e.message||`Request aborted`,code:`abort`,rawEvent:e}),u();return}return l(e)},complete:()=>u()})}else a||l(Error(`No headers event received before data events`))},error:e=>{i.error(e),l(e)},complete:()=>{i.complete()}}),s&&o.unsubscribe(),r.asObservable()},uE={TextMessageStart:`TextMessageStart`,TextMessageContent:`TextMessageContent`,TextMessageEnd:`TextMessageEnd`,ActionExecutionStart:`ActionExecutionStart`,ActionExecutionArgs:`ActionExecutionArgs`,ActionExecutionEnd:`ActionExecutionEnd`,ActionExecutionResult:`ActionExecutionResult`,AgentStateMessage:`AgentStateMessage`,MetaEvent:`MetaEvent`,RunStarted:`RunStarted`,RunFinished:`RunFinished`,RunError:`RunError`,NodeStarted:`NodeStarted`,NodeFinished:`NodeFinished`},dE=e=>{if(typeof e==`string`)return e;if(!Array.isArray(e))return;let t=e.filter(e=>e.type===`text`).map(e=>e.text).filter(e=>e.length>0);if(t.length!==0)return t.join(` -`)};function fE(e,t){return Ao(t)&&pE(`[ag-ui][legacy] The result of tool call '${e}' carries content parts the legacy protocol cannot represent; only its text parts are bridged and the rest is dropped.`),ko(t)}var pE=e=>{typeof process<`u`&&{}.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(e)},mE=(e,t,n)=>r=>{let i={},a=!0,o=!0,s=``,c=null,l=null,u=[],d={},f=!1,p=e=>{typeof e==`object`&&e&&(`messages`in e&&delete e.messages,i=e)};return r.pipe(Xc(r=>{switch(r.type){case k.TEXT_MESSAGE_START:{let e=r;return[{type:uE.TextMessageStart,messageId:e.messageId,role:e.role}]}case k.TEXT_MESSAGE_CONTENT:{let e=r;return[{type:uE.TextMessageContent,messageId:e.messageId,content:e.delta}]}case k.TEXT_MESSAGE_END:{let e=r;return[{type:uE.TextMessageEnd,messageId:e.messageId}]}case k.TOOL_CALL_START:{let e=r;return u.push({id:e.toolCallId,type:`function`,function:{name:e.toolCallName,arguments:``}}),o=!0,d[e.toolCallId]=e.toolCallName,[{type:uE.ActionExecutionStart,actionExecutionId:e.toolCallId,actionName:e.toolCallName,parentMessageId:e.parentMessageId}]}case k.TOOL_CALL_ARGS:{let c=r,d=u.find(e=>e.id===c.toolCallId);if(!d)return pE(`[ag-ui][legacy] TOOL_CALL_ARGS: No tool call found with ID '${c.toolCallId}'`),[];d.function.arguments+=c.delta;let f=!1;if(l){let e=l.find(e=>e.tool==d.function.name);if(e)try{let t=JSON.parse(cl(d.function.arguments));e.tool_argument&&e.tool_argument in t?(p({...i,[e.state_key]:t[e.tool_argument]}),f=!0):e.tool_argument||(p({...i,[e.state_key]:t}),f=!0)}catch{}}return[{type:uE.ActionExecutionArgs,actionExecutionId:c.toolCallId,args:c.delta},...f?[{type:uE.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}]:[]]}case k.TOOL_CALL_END:{let e=r;return[{type:uE.ActionExecutionEnd,actionExecutionId:e.toolCallId}]}case k.TOOL_CALL_RESULT:{let e=r,t=d[e.toolCallId];return(t===void 0||t===``)&&pE(`[ag-ui][legacy] No usable tool name was seen for tool call '${e.toolCallId}' (${t===void 0?`no TOOL_CALL_START reached this bridge`:`its TOOL_CALL_START carried an empty toolCallName`}), so its result is being bridged with the fabricated action name "unknown". Downstream consumers route on that name.`),[{type:uE.ActionExecutionResult,actionExecutionId:e.toolCallId,result:fE(e.toolCallId,e.content),actionName:t||`unknown`}]}case k.RAW:return f||(f=!0,pE(`[ag-ui][legacy] Dropping RAW events: the legacy runtime protocol has no equivalent, so the provider payloads they carry do not reach the legacy stream. Reported once per stream.`)),[];case k.CUSTOM:{let e=r;switch(e.name){case`Exit`:a=!1;break;case`PredictState`:l=e.value}return[{type:uE.MetaEvent,name:e.name,value:e.value}]}case k.STATE_SNAPSHOT:return p(r.snapshot),[{type:uE.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}];case k.STATE_DELTA:{let c=r,l;try{l=ds.applyPatch(i,c.delta,!0,!1).newDocument}catch(e){let t=e instanceof Error?e.message:String(e);return pE(`[ag-ui][legacy] Failed to apply state patch:\nCurrent state: ${JSON.stringify(i,null,2)}\nPatch operations: ${JSON.stringify(c.delta,null,2)}\nError: ${t}`),[]}return p(l),[{type:uE.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}]}case k.MESSAGES_SNAPSHOT:return c=r.messages,[{type:uE.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify({...i,...c?{messages:c}:{}}),active:!0}];case k.RUN_STARTED:return[];case k.RUN_FINISHED:{if(c&&(i.messages=c),Object.keys(i).length===0)return[];let r=null;if(c)try{r=hE(c)}catch(e){return[{type:uE.RunError,message:e.message}]}return[{type:uE.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify({...i,...r?{messages:r}:{}}),active:!1}]}case k.RUN_ERROR:{let e=r;return[{type:uE.RunError,message:e.message,code:e.code}]}case k.STEP_STARTED:return s=r.stepName,u=[],l=null,[{type:uE.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:!0}];case k.STEP_FINISHED:return u=[],l=null,[{type:uE.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:!1}];default:return[]}}))};function hE(e){let t=[];for(let n of e)if(n.role===`assistant`||n.role===`user`||n.role===`system`){let e=dE(n.content);if(e){let r={id:n.id,role:n.role,content:e};t.push(r)}if(n.role===`assistant`&&n.toolCalls&&n.toolCalls.length>0)for(let e of n.toolCalls){let r;try{r=JSON.parse(e.function.arguments)}catch(t){throw Error(`Failed to parse arguments for tool call '${e.id}' (${e.function.name}): ${t.message}`)}let i={id:e.id,name:e.function.name,arguments:r,parentMessageId:n.id};t.push(i)}}else if(n.role===`tool`){let r=`unknown`;for(let t of e)if(t.role===`assistant`&&t.toolCalls?.length){for(let e of t.toolCalls)if(e.id===n.toolCallId){r=e.function.name;break}}let i={id:n.id,result:fE(n.toolCallId,n.content),actionExecutionId:n.toolCallId,actionName:r};t.push(i)}return t}var gE=e=>e.kind===`tool`?e.fields.toolCallId:e.fields.messageId,_E=e=>e===`tool`?`toolCallId`:`messageId`,vE=(e,t,n,r,i)=>{if(r!==void 0&&r!==i)throw Error(`Cannot continue ${e} '${t}': chunk ${n} '${r}' does not match the open stream's ${n} ${i===void 0?`(absent)`:`'${i}'`}.`)},yE=(e,t)=>t.metadata===void 0?e:{...e,metadata:t.metadata},bE=(e,t)=>{let n=yE(e,t);return t.rawEvent===void 0?n:{...n,rawEvent:t.rawEvent}},xE=e=>new Set(Object.keys(e.shape)),SE=xE(Rv),CE=xE(Hv),wE=xE(Ty),TE=(e,t)=>{let n;for(let r of Object.keys(e))t.has(r)||((n??={})[r]=e[r]);return n},EE=e=>{typeof process<`u`&&{}.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`[ag-ui][transform] ${e} Set SUPPRESS_TRANSFORMATION_WARNINGS=true to silence.`)},DE=(e,t,n,r)=>{if(t===void 0||n||e.length===0)return;let i=e[e.length-1],a=Object.keys(t).filter(e=>Object.prototype.hasOwnProperty.call(i,e));a.length>0&&EE(`A ${r} carried ${a.map(e=>`'${e}'`).join(`, `)}, which the synthesized ${String(i.type)} already describes. The synthesized value is kept and the chunk's is dropped — this stage does not judge a described field, so the producer's value cannot be substituted for its own.`),e[e.length-1]={...t,...i}},OE=e=>t=>{let n=YT(e),r=new Map,i=e=>{let t=r.get(e);if(!t)return[];switch(r.delete(e),t.kind){case`text`:{let e={type:k.TEXT_MESSAGE_END,messageId:t.fields.messageId,...t.fields.subagentRunId!==void 0&&{subagentRunId:t.fields.subagentRunId}};return n?.event(`TRANSFORM`,`TEXT_MESSAGE_END`,e,{messageId:e.messageId}),[e]}case`tool`:{let e={type:k.TOOL_CALL_END,toolCallId:t.fields.toolCallId,...t.fields.subagentRunId!==void 0&&{subagentRunId:t.fields.subagentRunId}};return n?.event(`TRANSFORM`,`TOOL_CALL_END`,e,{toolCallId:e.toolCallId}),[e]}case`reasoning`:{let e={type:k.REASONING_MESSAGE_END,messageId:t.fields.messageId,...t.fields.subagentRunId!==void 0&&{subagentRunId:t.fields.subagentRunId}};return n?.event(`TRANSFORM`,`REASONING_MESSAGE_END`,e,{messageId:e.messageId}),[e]}}},a=()=>[...r.keys()].flatMap(e=>i(e)),o=(e,t)=>{for(let[n,i]of r)if(i.kind===e&&gE(i)===t)return{owner:n}},s=(e,t,n,i,a)=>{if(t!==void 0){let r=o(e,t);if(r){if(n!==void 0&&n!==r.owner)throw Error(`Cannot continue ${a} '${t}': chunk subagentRunId '${n}' does not match the open stream's subagent '${r.owner??`(the parent agent)`}'.`);return r.owner}return n}if(n!==void 0)return n;if(r.get(void 0)?.kind===e)return;let s=[...r.entries()].filter(([,t])=>t.kind===e);if(s.length===1)return s[0][0];if(s.length>1)throw Error(`Ambiguous ${i}: it carries neither a ${_E(e)} nor a subagentRunId, but ${s.length} lanes have an open ${a}. Attribute the chunk to the subagent it belongs to.`)};return t.pipe(Xc(e=>{switch(e.type){case k.TEXT_MESSAGE_START:case k.TEXT_MESSAGE_CONTENT:case k.TEXT_MESSAGE_END:case k.TOOL_CALL_START:case k.TOOL_CALL_ARGS:case k.TOOL_CALL_END:case k.TOOL_CALL_RESULT:case k.STATE_SNAPSHOT:case k.STATE_DELTA:case k.CUSTOM:case k.STEP_STARTED:case k.STEP_FINISHED:case k.REASONING_START:case k.REASONING_MESSAGE_START:case k.REASONING_MESSAGE_CONTENT:case k.REASONING_MESSAGE_END:case k.REASONING_END:return[...i(e.subagentRunId??void 0),e];case k.RUN_STARTED:case k.RUN_FINISHED:case k.RUN_ERROR:case k.MESSAGES_SNAPSHOT:return[...a(),e];case k.RAW:case k.ACTIVITY_SNAPSHOT:case k.ACTIVITY_DELTA:case k.REASONING_ENCRYPTED_VALUE:case k.SUBAGENT_STARTED:return[e];case k.SUBAGENT_FINISHED:case k.SUBAGENT_ERROR:{let t=e.subagentRunId;return t==null?[e]:[...i(t),e]}case k.TEXT_MESSAGE_CHUNK:{let t=e,a=TE(e,SE),o=s(`text`,t.messageId,t.subagentRunId??void 0,`TEXT_MESSAGE_CHUNK`,`text message`),c=r.get(o),l=[],u=!1,d;if(c?.kind===`text`&&(t.messageId===void 0||t.messageId===c.fields.messageId))vE(`text message`,c.fields.messageId,`role`,t.role,c.fields.role),vE(`text message`,c.fields.messageId,`name`,t.name,c.fields.name),d=c.fields;else{if(l.push(...i(o)),t.messageId===void 0)throw Error(`First TEXT_MESSAGE_CHUNK must have a messageId`);d={messageId:t.messageId,role:t.role===void 0?`assistant`:t.role,name:t.name,subagentRunId:t.subagentRunId},r.set(o,{kind:`text`,fields:d});let e=yE({type:k.TEXT_MESSAGE_START,messageId:t.messageId,role:d.role,...t.name!==void 0&&{name:t.name},...t.subagentRunId!==void 0&&{subagentRunId:t.subagentRunId}},t);l.push(e),n?.event(`TRANSFORM`,`TEXT_MESSAGE_START`,e,{messageId:t.messageId})}if(t.delta!==void 0||t.rawEvent!==void 0){let e=t.subagentRunId===void 0?d.subagentRunId:t.subagentRunId,r=bE({...a,type:k.TEXT_MESSAGE_CONTENT,messageId:d.messageId,delta:t.delta===void 0?``:t.delta,...e!==void 0&&{subagentRunId:e}},t);l.push(r),u=!0,n?.event(`TRANSFORM`,`TEXT_MESSAGE_CONTENT`,r,{messageId:d.messageId})}if(l.length===0&&(t.metadata!==void 0||t.rawEvent!==void 0||t.subagentRunId===null||a!==void 0)){let e=t.subagentRunId===void 0?d.subagentRunId:t.subagentRunId;l.push({...a,type:k.TEXT_MESSAGE_CONTENT,messageId:d.messageId,delta:``,...t.metadata!==void 0&&{metadata:t.metadata},...t.rawEvent!==void 0&&{rawEvent:t.rawEvent},...e!==void 0&&{subagentRunId:e}}),u=!0}return DE(l,a,u,`TEXT_MESSAGE_CHUNK`),l}case k.TOOL_CALL_CHUNK:{let t=e,a=TE(e,CE),o=s(`tool`,t.toolCallId,t.subagentRunId??void 0,`TOOL_CALL_CHUNK`,`tool call`),c=r.get(o),l=[],u=!1,d;if(c?.kind===`tool`&&(t.toolCallId===void 0||t.toolCallId===c.fields.toolCallId))vE(`tool call`,c.fields.toolCallId,`toolCallName`,t.toolCallName,c.fields.toolCallName),vE(`tool call`,c.fields.toolCallId,`parentMessageId`,t.parentMessageId,c.fields.parentMessageId),d=c.fields;else{if(l.push(...i(o)),t.toolCallId===void 0)throw Error(`First TOOL_CALL_CHUNK must have a toolCallId`);if(t.toolCallName===void 0)throw Error(`First TOOL_CALL_CHUNK must have a toolCallName`);d={toolCallId:t.toolCallId,toolCallName:t.toolCallName,parentMessageId:t.parentMessageId,subagentRunId:t.subagentRunId},r.set(o,{kind:`tool`,fields:d});let e=yE({type:k.TOOL_CALL_START,toolCallId:t.toolCallId,toolCallName:t.toolCallName,...t.parentMessageId!==void 0&&{parentMessageId:t.parentMessageId},...t.subagentRunId!==void 0&&{subagentRunId:t.subagentRunId}},t);l.push(e),n?.event(`TRANSFORM`,`TOOL_CALL_START`,e,{toolCallId:t.toolCallId,toolCallName:t.toolCallName})}if(t.delta!==void 0||t.rawEvent!==void 0){let e=t.subagentRunId===void 0?d.subagentRunId:t.subagentRunId,r=bE({...a,type:k.TOOL_CALL_ARGS,toolCallId:d.toolCallId,delta:t.delta===void 0?``:t.delta,...e!==void 0&&{subagentRunId:e}},t);l.push(r),u=!0,n?.event(`TRANSFORM`,`TOOL_CALL_ARGS`,r,{toolCallId:d.toolCallId})}if(l.length===0&&(t.metadata!==void 0||t.rawEvent!==void 0||t.subagentRunId===null||a!==void 0)){let e=t.subagentRunId===void 0?d.subagentRunId:t.subagentRunId;l.push({...a,type:k.TOOL_CALL_ARGS,toolCallId:d.toolCallId,delta:``,...t.metadata!==void 0&&{metadata:t.metadata},...t.rawEvent!==void 0&&{rawEvent:t.rawEvent},...e!==void 0&&{subagentRunId:e}}),u=!0}return DE(l,a,u,`TOOL_CALL_CHUNK`),l}case k.REASONING_MESSAGE_CHUNK:{let t=e,a=TE(e,wE),o=s(`reasoning`,t.messageId,t.subagentRunId??void 0,`REASONING_MESSAGE_CHUNK`,`reasoning message`),c=r.get(o),l=[],u=!1,d;if(c?.kind===`reasoning`&&(t.messageId===void 0||t.messageId===c.fields.messageId))d=c.fields;else{if(l.push(...i(o)),t.messageId===void 0)throw Error(`First REASONING_MESSAGE_CHUNK must have a messageId`);d={messageId:t.messageId,subagentRunId:t.subagentRunId},r.set(o,{kind:`reasoning`,fields:d});let e=yE({type:k.REASONING_MESSAGE_START,messageId:t.messageId,role:`reasoning`,...t.subagentRunId!==void 0&&{subagentRunId:t.subagentRunId}},t);l.push(e),n?.event(`TRANSFORM`,`REASONING_MESSAGE_START`,e,{messageId:t.messageId})}if(t.delta!==void 0||t.rawEvent!==void 0){let e=t.subagentRunId===void 0?d.subagentRunId:t.subagentRunId,r=bE({...a,type:k.REASONING_MESSAGE_CONTENT,messageId:d.messageId,delta:t.delta===void 0?``:t.delta,...e!==void 0&&{subagentRunId:e}},t);l.push(r),u=!0,n?.event(`TRANSFORM`,`REASONING_MESSAGE_CONTENT`,r,{messageId:d.messageId})}if(l.length===0&&(t.metadata!==void 0||t.rawEvent!==void 0||t.subagentRunId===null||a!==void 0)){let e=t.subagentRunId===void 0?d.subagentRunId:t.subagentRunId;l.push({...a,type:k.REASONING_MESSAGE_CONTENT,messageId:d.messageId,delta:``,...t.metadata!==void 0&&{metadata:t.metadata},...t.rawEvent!==void 0&&{rawEvent:t.rawEvent},...e!==void 0&&{subagentRunId:e}}),u=!0}return DE(l,a,u,`REASONING_MESSAGE_CHUNK`),l}}return e.type,[e]}),rl(()=>{a()}))},kE=Symbol(`agui.strip.drop`);function AE(e){let t=e;for(;;){if(t instanceof yT||t instanceof xT||t instanceof CT||t instanceof NT||t instanceof kT){t=t.unwrap();continue}if(t instanceof jT){t=t.def.in;continue}if(t instanceof FT){t=t.def.getter();continue}return t}}function jE(e){let t=e.def;return typeof t?.discriminator==`string`?t.discriminator:void 0}function ME(e){let t=e,n=Array.isArray(t.def?.values)?t.def.values:t.values?Array.from(t.values):void 0;return n&&n.length===1?n[0]:t.value}function NE(e){let t=AE(e);return t instanceof gT?ME(t):void 0}function PE(e,t,n,r){let i=AE(t);if(i instanceof cT){if(typeof e!=`object`||!e||Array.isArray(e))return e;let t=i.shape,a=e,o={},s=i.meta()?.specOpen===!0;for(let e of Object.keys(a)){let i=Object.prototype.hasOwnProperty.call(t,e)?t[e]:void 0;if(i===void 0){if(s){o[e]=a[e];continue}r.push(`${n}/${e}`);continue}let c=r.length,l=PE(a[e],i,`${n}/${e}`,r);if(l===kE){if(r.length=c,i.safeParse(void 0).success){r.push(`${n}/${e}`);continue}return kE}o[e]=l}return o}if(i instanceof oT){if(!Array.isArray(e))return e;let t=i.element,a=[];return e.forEach((e,i)=>{let o=r.length,s=PE(e,t,`${n}/${i}`,r);if(s===kE){r.length=o,r.push(`${n}/${i}`);return}a.push(s)}),a}if(i instanceof pT){if(typeof e!=`object`||!e||Array.isArray(e))return e;let t=i.def.valueType,a=e,o={};for(let e of Object.keys(a)){let i=r.length,s=PE(a[e],t,`${n}/${e}`,r);if(s===kE){r.length=i,r.push(`${n}/${e}`);continue}o[e]=s}return o}if(i instanceof lT){let t=i.options,a=jE(i);if(a!==void 0){if(typeof e!=`object`||!e||Array.isArray(e))return e;let i=e[a];for(let o of t){let t=AE(o);if(!(t instanceof cT))continue;let s=t.shape;if(NE(s[a])===i)return PE(e,o,n,r)}return kE}let o=t.filter(e=>AE(e)instanceof cT),s=typeof e==`object`&&!!e&&!Array.isArray(e);if(o.length>1&&s)return e;for(let i of t){let t=AE(i);if(t instanceof oT&&Array.isArray(e)||t instanceof cT&&s)return PE(e,i,n,r)}return e}return e}function FE(e,t){let n=[],r=PE(e,t,``,n);if(r===kE)throw Error(`Internal error: the stripper found the whole value unrecognisable, which the schemas are not supposed to allow — schema/stripper mismatch.`);return{value:r,stripped:n}}var IE=new Set(Object.values(k));function LE(e){return IE.has(e.type)}var RE=new Map(jy.options.map(e=>{let t=e.shape;return[String(ME(t.type)),e]})),zE=()=>typeof process<`u`&&!!{}.SUPPRESS_TRANSFORMATION_WARNINGS;function BE(e){zE()||console.warn(`[ag-ui][enforce] ${e}`)}var VE=e=>t=>{let n=YT(e);return t.pipe(Xc(e=>{if(!LE(e))return BE(`Dropping unrecognised event '${String(e.type)}': no middleware translated it and the protocol does not describe it.`),n?.event(`ENFORCE`,`Unrecognised event dropped:`,e,{type:e.type}),pc;let t=RE.get(e.type);if(t===void 0)throw Error(`No validator for recognised event type '${String(e.type)}'`);let{value:r,stripped:i}=FE(e,t);for(let t of i)BE(`Removed unrecognised material at '${t}' on ${String(e.type)}. Nothing handled it; see the repo-root DEPRECATIONS.md if it is a retired shape.`);return M(t.parse(r))}))};function HE(e){let{value:t,stripped:n}=FE(Eo(e,`RunAgentInput`),dy);for(let e of n)BE(`Removed unrecognised material at '${e}' from the outgoing input.`);return dy.parse(t)}var UE=class{runNext(e,t){return t.run(e).pipe(OE(!1))}runNextWithState(e,t){let n=$(e.messages||[]),r=$(e.state===void 0?{}:e.state),i=new fc;return eE(e,i,t,[]).subscribe({next:e=>{e.messages!==void 0&&(n=e.messages),e.state!==void 0&&(r=e.state)},error:()=>{}}),this.runNext(e,t).pipe(tl(async e=>(i.next(e),await new Promise(e=>setTimeout(e,0)),{event:e,messages:$(n),state:$(r)})))}},WE=class extends UE{constructor(e){super(),this.fn=e}run(e,t){return this.fn(e,t)}};function GE(e){return e.startsWith(`image/`)?`image`:e.startsWith(`audio/`)?`audio`:e.startsWith(`video/`)?`video`:`document`}function KE(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`binary`&&`mimeType`in e&&typeof e.mimeType==`string`}function qE(e){let t=GE(e.mimeType);return e.data?{type:t,source:{type:`data`,value:e.data,mimeType:e.mimeType},...e.filename?{metadata:{filename:e.filename}}:{}}:e.url?{type:t,source:{type:`url`,value:e.url,mimeType:e.mimeType},...e.filename?{metadata:{filename:e.filename}}:{}}:((typeof process>`u`||!{}.SUPPRESS_TRANSFORMATION_WARNINGS)&&console.warn(`[ag-ui][compat] A binary content part carries only an id ('${e.id??``}') and cannot be converted to a modern media part; a 1.0 peer will not accept it. Provide data or a url. See the repo-root DEPRECATIONS.md.`),e)}function JE(e,t,n){if(typeof e!=`object`||!e||!(`type`in e)||e.type!==t.type||!(`source`in e))return!1;let r=e.source;return typeof r!=`object`||!r||!(`type`in r)||r.type!==t.source.type||!(`value`in r)||r.value!==t.source.value||!(`mimeType`in r)||r.mimeType!==t.source.mimeType?!1:!n||`metadata`in e&&typeof e.metadata==`object`&&e.metadata!==null&&`filename`in e.metadata&&e.metadata.filename===n}function YE(e){let t=e.content;if(!Array.isArray(t))return e;let n=t.flatMap(e=>{if(KE(e)){let n=qE(e);return n.type!==`binary`&&t.some(t=>JE(t,n,e.filename))?[]:[n]}return[e]});return{...e,content:n}}var XE=`THINKING_START`,ZE=`THINKING_END`,QE=`THINKING_TEXT_MESSAGE_START`,$E=`THINKING_TEXT_MESSAGE_CONTENT`,eD=`THINKING_TEXT_MESSAGE_END`;function tD(e,t){typeof process<`u`&&{}.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`[ag-ui][compat] Converting deprecated ${e} to ${t}. The old shape leaves the protocol after its shim window — see the repo-root DEPRECATIONS.md. Set SUPPRESS_TRANSFORMATION_WARNINGS=true to silence.`)}function nD(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function rD(e,t,n){if(!nD(e)||e[t]!==null)return e;tD(`${n}.${t}: null`,`an absent field`);let{[t]:r,...i}=e;return i}function iD(e,t,n){if(!nD(e)||!Array.isArray(e[t]))return e;let r=e[t],i=r.map(n);return i.some((e,t)=>e!==r[t])?{...e,[t]:i}:e}function aD(e){return iD(e,`content`,e=>{if(!nD(e))return e;switch(e.type){case`image`:case`audio`:case`video`:case`document`:return rD(e,`metadata`,`${e.type} input content`);default:return e}})}function oD(e){let t=rD(e,`forwardedProps`,`RunAgentInput`);return t=iD(t,`tools`,e=>rD(e,`parameters`,`Tool`)),t=iD(t,`resume`,e=>rD(e,`payload`,`ResumeEntry`)),iD(t,`messages`,aD)}var sD=class extends UE{constructor(...e){super(...e),this.currentReasoningId=null,this.currentMessageId=null}warn(e,t){tD(e,t)}mintedContinuationId(e,t){if(t!==null)return t;let n=HT();return this.warnAside(`Minting a messageId ('${n}') for ${e}: no THINKING opener preceded it, so there was no id to continue. The id is this client's invention, not the producer's, and verification will reject the translated event for naming something nothing opened.`),n}warnAside(e){typeof process<`u`&&{}.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`[ag-ui][compat] ${e} Set SUPPRESS_TRANSFORMATION_WARNINGS=true to silence.`)}run(e,t){return this.currentReasoningId=null,this.currentMessageId=null,e.messages=e.messages.map(YE),t.run(e).pipe(Jc(e=>this.transformEvent(e)))}transformEvent(e){if(e.rawEvent===null){this.warn(`${e.type}.rawEvent: null`,`an absent field`);let{rawEvent:t,...n}=e;e=n}if((e.type===k.RUN_FINISHED||e.type===k.SUBAGENT_FINISHED)&&e.result===null){this.warn(`${e.type}.result: null`,`an absent field`);let{result:t,...n}=e;e=n}switch(e.type){case XE:{this.currentReasoningId=HT();let{title:t,...n}=e;return this.warn(XE,k.REASONING_START),t!==void 0&&this.warnAside(`Dropping ${XE}.title ${JSON.stringify(t)}: ${k.REASONING_START} has no title field, so the span's label cannot be carried and nothing downstream can recover it.`),{...n,type:k.REASONING_START,messageId:this.currentReasoningId}}case QE:return this.currentMessageId=HT(),this.warn(QE,k.REASONING_MESSAGE_START),{...e,type:k.REASONING_MESSAGE_START,messageId:this.currentMessageId,role:`reasoning`};case $E:{let{delta:t,...n}=e;return this.warn($E,k.REASONING_MESSAGE_CONTENT),{...n,type:k.REASONING_MESSAGE_CONTENT,messageId:this.mintedContinuationId($E,this.currentMessageId),delta:t}}case eD:{let t=this.mintedContinuationId(eD,this.currentMessageId);return this.currentMessageId=null,this.warn(eD,k.REASONING_MESSAGE_END),{...e,type:k.REASONING_MESSAGE_END,messageId:t}}case ZE:{let t=this.mintedContinuationId(ZE,this.currentReasoningId);return this.currentReasoningId=null,this.warn(ZE,k.REASONING_END),{...e,type:k.REASONING_END,messageId:t}}case k.TOOL_CALL_START:case k.TOOL_CALL_CHUNK:{let t=e;if(t.parentMessageId===null){this.warn(`${e.type}.parentMessageId: null`,`an absent field`);let{parentMessageId:n,...r}=t;return r}return e}case k.RUN_FINISHED:{let t=e;if(t.outcome===null){this.warn(`RUN_FINISHED.outcome: null`,`an absent field`);let{outcome:e,...n}=t;return n}return e}case k.MESSAGES_SNAPSHOT:{let t=e;return Array.isArray(t.messages)?{...t,messages:t.messages.map(e=>this.upgradeInboundMessage(e))}:e}case k.RUN_STARTED:{let t=oD(e.input),n=t===e.input?e:{...e,input:t},r=n;return!r.input||!Array.isArray(r.input.messages)?n:{...r,input:{...r.input,messages:r.input.messages.map(e=>this.upgradeInboundMessage(e))}}}default:return e}}upgradeInboundMessage(e){e=aD(e);let t=e.content;return!Array.isArray(t)||!t.some(e=>typeof e==`object`&&!!e&&e.type===`binary`)?e:(this.warn(`binary input content`,`the modern media content parts`),YE(e))}},cD=()=>e=>Qc(()=>{let t=new sD;return e.pipe(Jc(e=>t.transformEvent(e)))});function lD(e,t=new Date){return e.expiresAt!==void 0&&new Date(e.expiresAt)<=t}function uD(){return typeof process<`u`&&!!{}.SUPPRESS_TRANSFORMATION_WARNINGS}function dD(e){uD()||console.warn(`[ag-ui][compat] Flattening message content for a <=0.0.39 peer DROPS non-text parts (${e.join(`, `)}). The peer cannot receive them; upgrade it to keep media content. See the repo-root DEPRECATIONS.md.`)}function fD(e){uD()||console.warn(`[ag-ui][compat] Not flattening message content for a <=0.0.39 peer: ${e} content part(s) claim type "text" but carry a malformed 'text' value. That is a defect in the message, not media the peer cannot represent, and a downgrade must not repair it — the content is passed on unchanged so the outgoing enforcement boundary reports it. See the repo-root DEPRECATIONS.md.`)}function pD(e){let t=e.content;if(Array.isArray(t)){let n=e=>typeof e==`object`&&!!e&&`type`in e&&e.type===`text`,r=e=>n(e)&&typeof e.text==`string`,i=t.filter(e=>n(e)&&!r(e));if(i.length>0)return fD(i.length),e;let a=t.filter(e=>!r(e)).map(e=>typeof e==`object`&&e&&`type`in e?String(e.type):typeof e);a.length>0&&dD(a);let o=t.filter(r).map(e=>e.text).join(``);return{...e,content:o}}return typeof t==`string`?e:t===void 0?{...e,content:``}:e}var mD=class extends UE{run(e,t){let{parentRunId:n,...r}=e,i={...r,messages:r.messages.map(pD)};return this.runNext(i,t)}},hD=`THINKING_START`,gD=`THINKING_END`,_D=`THINKING_TEXT_MESSAGE_START`,vD=`THINKING_TEXT_MESSAGE_CONTENT`,yD=`THINKING_TEXT_MESSAGE_END`,bD=class extends UE{constructor(...e){super(...e),this.currentReasoningId=null,this.currentMessageId=null}warnAboutTransformation(e,t){typeof process<`u`&&{}.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`AG-UI is converting ${e} to ${t}. To remove this warning, upgrade your AG-UI integration package (e.g. @ag-ui/langgraph). To surpress it, set SUPPRESS_TRANSFORMATION_WARNINGS=true in your .env file.`)}run(e,t){return this.currentReasoningId=null,this.currentMessageId=null,this.runNext(e,t).pipe(Jc(e=>this.transformEvent(e)))}transformEvent(e){switch(e.type){case hD:{this.currentReasoningId=HT();let{title:t,...n}=e;return this.warnAboutTransformation(hD,k.REASONING_START),{...n,type:k.REASONING_START,messageId:this.currentReasoningId}}case _D:return this.currentMessageId=HT(),this.warnAboutTransformation(_D,k.REASONING_MESSAGE_START),{...e,type:k.REASONING_MESSAGE_START,messageId:this.currentMessageId,role:`reasoning`};case vD:{let{delta:t,...n}=e;return this.warnAboutTransformation(vD,k.REASONING_MESSAGE_CONTENT),{...n,type:k.REASONING_MESSAGE_CONTENT,messageId:this.currentMessageId??HT(),delta:t}}case yD:{let t=this.currentMessageId??HT();return this.warnAboutTransformation(yD,k.REASONING_MESSAGE_END),{...e,type:k.REASONING_MESSAGE_END,messageId:t}}case gD:{let t=this.currentReasoningId??HT();return this.warnAboutTransformation(gD,k.REASONING_END),{...e,type:k.REASONING_END,messageId:t}}default:return e}}},xD=`SUBAGENT_STARTED`,SD=`SUBAGENT_FINISHED`,CD=`SUBAGENT_ERROR`;function wD(e){if(e&&typeof e==`object`&&`subagentRunId`in e){let{subagentRunId:t,...n}=e;return n}return e}function TD(e){return e.map(e=>wD(e))}var ED=class extends UE{warnDroppedLifecycleEvent(e){typeof process<`u`&&{}.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`AG-UI is dropping ${e} because the target agent predates subagent support. To remove this warning, upgrade your AG-UI integration package. To suppress it, set SUPPRESS_TRANSFORMATION_WARNINGS=true in your .env file.`)}run(e,t){let n={...e,messages:(e.messages??[]).map(e=>wD(e))};return this.runNext(n,t).pipe(ol(e=>{let t=e.type;(t===xD||t===SD||t===CD)&&this.warnDroppedLifecycleEvent(t)}),$c(e=>{let t=e.type;return t!==xD&&t!==SD&&t!==CD}),Jc(e=>{let t=wD(e);if(t.type===k.MESSAGES_SNAPSHOT){let e=t;if(Array.isArray(e.messages))return{...e,messages:TD(e.messages)}}if(t.type===k.RUN_FINISHED){let e=t;if(e.outcome&&Array.isArray(e.outcome.interrupts))return{...e,outcome:{...e.outcome,interrupts:e.outcome.interrupts.map(e=>wD(e))}}}if(t.type===k.RUN_STARTED){let e=t;if(e.input&&Array.isArray(e.input.messages))return{...e,input:{...e.input,messages:TD(e.input.messages)}}}return t}))}},DD=`1.0.1`,OD=!1,kD=new WeakSet,AD=(e,t)=>/^\d+\.\d+$/.test(e)?cC(e,t)>0?`newer`:`not-newer`:`uninterpretable`,jD=e=>{let t=e.protocolVersion;if(t!==void 0&&t!==`1.0`)switch(AD(t,`1.0`)){case`uninterpretable`:console.warn(`[ag-ui] The producer declared protocol version '${t}', which this client cannot interpret.`);return;case`newer`:console.warn(`[ag-ui] The producer speaks protocol ${t}; this client speaks 1.0. Unrecognised material will be stripped with warnings.`);return;case`not-newer`:return}},MD=class e{resolvePeerCeiling(t){if(this.resolvingPeerCeiling)return DD;let n=Object.getOwnPropertyDescriptor(this,`maxVersion`),r=Object.getOwnPropertyDescriptor(this,`maxProtocolVersion`),i=Object.getPrototypeOf(this);for(;i&&i!==e.prototype;)n??=Object.getOwnPropertyDescriptor(i,`maxVersion`),r??=Object.getOwnPropertyDescriptor(i,`maxProtocolVersion`),i=Object.getPrototypeOf(i);if(t===`maxVersion`&&n)return DD;let a=t===`maxProtocolVersion`?n:r;if(!a)return DD;this.resolvingPeerCeiling=!0;try{return a.get?a.get.call(this):a.value}finally{this.resolvingPeerCeiling=!1}}get maxProtocolVersion(){return this.resolvePeerCeiling(`maxProtocolVersion`)}get maxVersion(){return!this.resolvingPeerCeiling&&!OD&&(OD=!0,console.warn(`[ag-ui] AbstractAgent.maxVersion is deprecated — use maxProtocolVersion. Same value; the new name says whose version it is and that it is a ceiling.`)),this.resolvePeerCeiling(`maxVersion`)}get debug(){return this._debug}set debug(e){this._debug=JT(e),this._debugLogger=ZT(this._debug)}get debugLogger(){return this._debugLogger}set debugLogger(e){this._debugLogger=typeof e==`boolean`?e?ZT(JT(!0)):void 0:e}resolvedCeilingDuringConstruction(){let e=this.maxProtocolVersion;if(typeof e!=`string`||!lC(e))throw new A(`maxProtocolVersion resolved to ${JSON.stringify(e)} during construction, which is not a version this client can compare. A ceiling read from an instance field is not available yet — return a literal from the getter.`);return e}constructor({agentId:e,description:t,threadId:n,initialMessages:r,initialState:i,debug:a}={}){this.subscribers=[],this.isRunning=!1,this.pendingInterrupts=[],this.middlewares=[],this.resolvingPeerCeiling=!1,this.agentId=e,this.description=t??``,this.threadId=n??So(),this.messages=$(r??[]),this.state=$(i??{}),this._debug=JT(a),this._debugLogger=ZT(this._debug);let o=this.resolvedCeilingDuringConstruction();cC(o,`0.0.39`)<=0&&this.middlewares.unshift(new mD),cC(o,`0.0.45`)<=0&&this.middlewares.unshift(new bD),cC(o,`0.0.57`)<=0&&this.middlewares.unshift(new ED)}subscribe(e){return this.subscribers.push(e),{unsubscribe:()=>{this.subscribers=this.subscribers.filter(t=>t!==e)}}}use(...e){let t=e.map(e=>typeof e==`function`?new WE(e):e);return this.middlewares.push(...t),this}async runAgent(e,t){try{this.isRunning=!0,this.agentId=this.agentId??So();let n=this.prepareRunAgentInput(e);this.debugLogger?.lifecycle(`LIFECYCLE`,`Run started:`,{agentId:this.agentId,threadId:this.threadId});let r,i=new Set(this.messages.map(e=>e.id)),a=[{onRunStartedEvent:({event:e})=>jD(e),onRunFinishedEvent:e=>{e.outcome===`success`&&(r=e.result)}},...this.subscribers,t??{}];kD.add(n),await this.onInitialize(n,a),this.activeRunDetach$=new lc;let o;this.activeRunCompletionPromise=new Promise(e=>{o=e}),await qc(Qs(()=>[...this.middlewares,new sD].reduceRight((e,t)=>({run:n=>t.run(n,e),get messages(){return e.messages},get state(){return e.state}}),this).run(n),VE(this.debugLogger),OE(this.debugLogger),tE(this.debugLogger),e=>e.pipe(al(this.activeRunDetach$)),e=>this.apply(n,e,a),e=>this.processApplyEvents(n,e,a),el(e=>(this.debugLogger?.lifecycle(`LIFECYCLE`,`Run errored:`,{agentId:this.agentId,error:e instanceof Error?e.message:String(e)}),this.isRunning=!1,this.onError(n,e,a))),rl(()=>{this.debugLogger?.lifecycle(`LIFECYCLE`,`Run finished:`,{agentId:this.agentId,threadId:this.threadId}),this.isRunning=!1,this.onFinalize(n,a),o?.(),o=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}))(M(null)));let s=$(this.messages).filter(e=>!i.has(e.id));return{result:r,newMessages:s}}finally{this.isRunning=!1}}connect(e){throw new Do}async connectAgent(e,t){try{this.isRunning=!0,this.agentId=this.agentId??So();let n=this.prepareRunAgentInput(e),r,i=new Set(this.messages.map(e=>e.id)),a=[{onRunStartedEvent:({event:e})=>jD(e),onRunFinishedEvent:e=>{e.outcome===`success`&&(r=e.result)}},...this.subscribers,t??{}];await this.onInitialize(n,a),this.activeRunDetach$=new lc;let o;this.activeRunCompletionPromise=new Promise(e=>{o=e}),await qc(Qs(()=>Qc(()=>this.connect(n)),e=>VE(this.debugLogger)(cD()(e)),OE(this.debugLogger),tE(this.debugLogger),e=>e.pipe(al(this.activeRunDetach$)),e=>this.apply(n,e,a),e=>this.processApplyEvents(n,e,a),el(e=>(this.isRunning=!1,e instanceof Do?pc:this.onError(n,e,a))),rl(()=>{this.isRunning=!1,this.onFinalize(n,a),o?.(),o=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}))(M(null)),{defaultValue:void 0});let s=$(this.messages).filter(e=>!i.has(e.id));return{result:r,newMessages:s}}finally{this.isRunning=!1}}abortRun(){}async detachActiveRun(){if(!this.activeRunDetach$)return;let e=this.activeRunCompletionPromise??Promise.resolve();this.activeRunDetach$.next(),this.activeRunDetach$?.complete(),await e}apply(e,t,n){return eE(e,t,this,n,this.debugLogger)}processApplyEvents(e,t,n){return t.pipe(ol(t=>{t.messages&&(this.messages=t.messages,n.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),t.state!==void 0&&(this.state=t.state,n.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})}))}))}prepareRunAgentInput(e){let t=$(this.messages);for(let e of t)e.subagentRunId===null&&delete e.subagentRunId;let n=t.filter(e=>e.role!==`activity`);return{threadId:this.threadId,runId:e?.runId||So(),...cC(this.maxProtocolVersion,DD)>=0&&{protocolVersion:`1.0`},tools:$(e?.tools??[]),context:$(e?.context??[]),forwardedProps:$(e?.forwardedProps??{}),state:$(this.state),messages:n,...e?.resume===void 0?{}:{resume:$(e.resume)}}}async onInitialize(e,t){if(kD.has(e)&&this.pendingInterrupts.length>0){let t=new Set((e.resume??[]).map(e=>e.interruptId)),n=this.pendingInterrupts.map(e=>e.id).filter(e=>!t.has(e));if(n.length>0)throw new A(`Thread has ${n.length} pending interrupt(s) not addressed by resume: ${n.join(`, `)}`);for(let t of this.pendingInterrupts)if(lD(t)&&(e.resume??[]).find(e=>e.interruptId===t.id)?.status!==`cancelled`)throw new A(`Interrupt ${t.id} expired at ${t.expiresAt} and can no longer be answered. Cancel it to continue the thread.`)}let n=await qT(t,this.messages,this.state,(t,n,r)=>t.onRunInitialized?.({messages:n,state:r,agent:this,input:e}));if(n.messages!==void 0||n.state!==void 0){if(n.messages){this.messages=n.messages;for(let e of n.messages)e.subagentRunId===null&&delete e.subagentRunId;e.messages=n.messages.filter(e=>e.role!==`activity`),t.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})}n.state!==void 0&&(this.state=n.state,e.state=n.state,t.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})}))}}onError(e,t,n){return Gc(qT(n,this.messages,this.state,(n,r,i)=>n.onRunFailed?.({error:t,messages:r,state:i,agent:this,input:e}))).pipe(Jc(r=>{let i=r;if((i.messages!==void 0||i.state!==void 0)&&(i.messages!==void 0&&(this.messages=i.messages,n.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),i.state!==void 0&&(this.state=i.state,n.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})}))),i.stopPropagation!==!0){let e=String(t);if(t.name!==`AbortError`&&t.message!==`Fetch is aborted`&&t.message!==`signal is aborted without reason`&&t.message!==`component unmounted`&&e!==`component unmounted`)throw console.error(`Agent execution failed:`,t),t}return{}}))}async onFinalize(e,t){let n=await qT(t,this.messages,this.state,(t,n,r)=>t.onRunFinalized?.({messages:n,state:r,agent:this,input:e}));(n.messages!==void 0||n.state!==void 0)&&(n.messages!==void 0&&(this.messages=n.messages,t.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),n.state!==void 0&&(this.state=n.state,t.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})})))}clone(){let e=Object.create(Object.getPrototypeOf(this));return e.agentId=this.agentId,e.description=this.description,e.threadId=this.threadId,e.messages=$(this.messages),e.state=$(this.state),e._debug=this._debug,e._debugLogger=this._debugLogger,e.isRunning=this.isRunning,e.subscribers=[...this.subscribers],e.middlewares=[...this.middlewares],e.pendingInterrupts=$(this.pendingInterrupts),e}addMessage(e){this.messages.push(e),(async()=>{for(let t of this.subscribers)await t.onNewMessage?.({message:e,messages:this.messages,state:this.state,agent:this});if(e.role===`assistant`&&e.toolCalls)for(let t of e.toolCalls)for(let e of this.subscribers)await e.onNewToolCall?.({toolCall:t,messages:this.messages,state:this.state,agent:this});for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}addMessages(e){this.messages.push(...e),(async()=>{for(let t of e){for(let e of this.subscribers)await e.onNewMessage?.({message:t,messages:this.messages,state:this.state,agent:this});if(t.role===`assistant`&&t.toolCalls)for(let e of t.toolCalls)for(let t of this.subscribers)await t.onNewToolCall?.({toolCall:e,messages:this.messages,state:this.state,agent:this})}for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}setMessages(e){this.messages=$(e),(async()=>{for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}setState(e){this.state=$(e),(async()=>{for(let e of this.subscribers)await e.onStateChanged?.({messages:this.messages,state:this.state,agent:this})})()}legacy_to_be_removed_runAgentBridged(e){this.agentId=this.agentId??So();let t=this.prepareRunAgentInput(e);return[...this.middlewares,new sD].reduceRight((e,t)=>({run:n=>t.run(n,e),get messages(){return e.messages},get state(){return e.state}}),this).run(t).pipe(VE(this.debugLogger),OE(this.debugLogger),tE(this.debugLogger),mE(this.threadId,t.runId,this.agentId),e=>e.pipe(Jc(e=>(this.debugLogger?.event(`LEGACY`,`Event:`,e,{type:e.type}),e))))}};function ND(e){if(!Array.isArray(e.messages))return e;let t=!1,n=e.messages.map(e=>{if(e.subagentRunId===null){t=!0;let n={...e};return delete n.subagentRunId,n}return e});return t?{...e,messages:n}:e}var PD=class extends MD{requestInit(e){return{method:`POST`,headers:{...this.headers,"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify(ND(e)),signal:this.abortController.signal}}runAgent(e,t){return this.abortController=e?.abortController??new AbortController,super.runAgent(e,t)}abortRun(){this.abortController.abort(),super.abortRun()}constructor(e){super(e),this.abortController=new AbortController,this.url=e.url,this.headers=$(e.headers??{}),this.fetch=e.fetch??((e,t)=>fetch(e,t))}run(e){return lE(rE(()=>this.fetch(this.url,this.requestInit(HE(e)))),this.debugLogger)}clone(){let e=super.clone();e.url=this.url,e.headers=$(this.headers??{}),e.fetch=this.fetch;let t=new AbortController,n=this.abortController.signal;return n.aborted&&t.abort(n.reason),e.abortController=t,e}},FD=class extends Kt{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){e._type=`infinite`,super.setOptions(e)}getOptimisticResult(e){return e._type=`infinite`,super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`forward`}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`backward`}}})}createResult(e,t){let{state:n}=e,r=super.createResult(e,t),{isFetching:i,isRefetching:a,isError:o,isRefetchError:s}=r,c=n.fetchMeta?.fetchMore?.direction,l=o&&c===`forward`,u=i&&c===`forward`,d=o&&c===`backward`,f=i&&c===`backward`;return{...r,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:on(t,n.data),hasPreviousPage:Jt(t,n.data),isFetchNextPageError:l,isFetchingNextPage:u,isFetchPreviousPageError:d,isFetchingPreviousPage:f,isRefetchError:s&&!l&&!d,isRefetching:a&&!u&&!f}}},ID=class extends Xt{#e;#t;#n;constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}build(e,t,n){let r=new an({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=LD(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=LD(e);if(typeof t==`string`){let n=this.#t.get(t);if(n){if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=LD(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}return!0}runNext(e){let t=LD(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){cn.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>Zt(t,e))}findAll(e={}){return this.getAll().filter(t=>Zt(e,t))}notify(e){cn.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return cn.batch(()=>Promise.all(e.map(e=>e.continue().catch(ln))))}};function LD(e){return e.options.scope?.id}var RD=class extends Xt{#e;constructor(e={}){super(),this.config=e,this.#e=new Map}build(e,t,n){let r=t.queryKey,i=t.queryHash??Qt(r,t),a=this.get(i);return a||(a=new nn({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){this.#e.get(e.queryHash)===e&&(e.destroy(),this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){cn.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>Gt(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>Gt(e,t)):t}notify(e){cn.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){cn.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){cn.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},zD=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new RD,this.#t=e.mutationCache||new ID,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=Yt.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=$t.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return this.#t.findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(qt(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(r.queryHash)?.state.data,a=rn(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return cn.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;cn.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return cn.batch(()=>{let r=n.findAll(e),i=new Set(r);return r.forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,predicate:e=>i.has(e)},t)})}cancelQueries(e,t={}){let n={revert:!0,...t},r=cn.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(ln).catch(ln)}invalidateQueries(e,t={}){return cn.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=cn.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(ln)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(ln)}async query(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t),r=n.isStaleByTime(qt(t.staleTime,n))?await n.fetch(t):n.state.data,i=t.select;return i?i(r):r}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t);return n.isStaleByTime(qt(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(ln).catch(ln)}infiniteQuery(e){return e._type=`infinite`,this.query(e)}fetchInfiniteQuery(e){return e._type=`infinite`,this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(ln).catch(ln)}ensureInfiniteQueryData(e){return e._type=`infinite`,this.ensureQueryData(e)}resumePausedMutations(){return $t.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#r.set(en(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{dn(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(en(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{dn(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||=Qt(t.queryKey,t),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===Bt&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}};function BD(e,t){return tn(e,FD,t)}var VD=new Map([[`bold`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M232,44H160a43.86,43.86,0,0,0-32,13.85A43.86,43.86,0,0,0,96,44H24A12,12,0,0,0,12,56V200a12,12,0,0,0,12,12H96a20,20,0,0,1,20,20,12,12,0,0,0,24,0,20,20,0,0,1,20-20h72a12,12,0,0,0,12-12V56A12,12,0,0,0,232,44ZM96,188H36V68H96a20,20,0,0,1,20,20V192.81A43.79,43.79,0,0,0,96,188Zm124,0H160a43.71,43.71,0,0,0-20,4.83V88a20,20,0,0,1,20-20h60Z`}))],[`duotone`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M232,56V200H160a32,32,0,0,0-32,32,32,32,0,0,0-32-32H24V56H96a32,32,0,0,1,32,32,32,32,0,0,1,32-32Z`,opacity:`0.2`}),E.createElement(`path`,{d:`M232,48H160a40,40,0,0,0-32,16A40,40,0,0,0,96,48H24a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H96a24,24,0,0,1,24,24,8,8,0,0,0,16,0,24,24,0,0,1,24-24h72a8,8,0,0,0,8-8V56A8,8,0,0,0,232,48ZM96,192H32V64H96a24,24,0,0,1,24,24V200A39.81,39.81,0,0,0,96,192Zm128,0H160a39.81,39.81,0,0,0-24,8V88a24,24,0,0,1,24-24h64Z`}))],[`fill`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M240,56V200a8,8,0,0,1-8,8H160a24,24,0,0,0-24,23.94,7.9,7.9,0,0,1-5.12,7.55A8,8,0,0,1,120,232a24,24,0,0,0-24-24H24a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8H88a32,32,0,0,1,32,32v87.73a8.17,8.17,0,0,0,7.47,8.25,8,8,0,0,0,8.53-8V80a32,32,0,0,1,32-32h64A8,8,0,0,1,240,56Z`}))],[`light`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M232,50H160a38,38,0,0,0-32,17.55A38,38,0,0,0,96,50H24a6,6,0,0,0-6,6V200a6,6,0,0,0,6,6H96a26,26,0,0,1,26,26,6,6,0,0,0,12,0,26,26,0,0,1,26-26h72a6,6,0,0,0,6-6V56A6,6,0,0,0,232,50ZM96,194H30V62H96a26,26,0,0,1,26,26V204.31A37.86,37.86,0,0,0,96,194Zm130,0H160a37.87,37.87,0,0,0-26,10.32V88a26,26,0,0,1,26-26h66Z`}))],[`regular`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M232,48H160a40,40,0,0,0-32,16A40,40,0,0,0,96,48H24a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H96a24,24,0,0,1,24,24,8,8,0,0,0,16,0,24,24,0,0,1,24-24h72a8,8,0,0,0,8-8V56A8,8,0,0,0,232,48ZM96,192H32V64H96a24,24,0,0,1,24,24V200A39.81,39.81,0,0,0,96,192Zm128,0H160a39.81,39.81,0,0,0-24,8V88a24,24,0,0,1,24-24h64Z`}))],[`thin`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M232,52H160a36,36,0,0,0-32,19.54A36,36,0,0,0,96,52H24a4,4,0,0,0-4,4V200a4,4,0,0,0,4,4H96a28,28,0,0,1,28,28,4,4,0,0,0,8,0,28,28,0,0,1,28-28h72a4,4,0,0,0,4-4V56A4,4,0,0,0,232,52ZM96,196H28V60H96a28,28,0,0,1,28,28V209.4A35.93,35.93,0,0,0,96,196Zm132,0H160a35.94,35.94,0,0,0-28,13.41V88a28,28,0,0,1,28-28h68Z`}))]]),HD=new Map([[`bold`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M236.37,139.4a12,12,0,0,0-12-3A84.07,84.07,0,0,1,119.6,31.59a12,12,0,0,0-15-15A108.86,108.86,0,0,0,49.69,55.07,108,108,0,0,0,136,228a107.09,107.09,0,0,0,64.93-21.69,108.86,108.86,0,0,0,38.44-54.94A12,12,0,0,0,236.37,139.4Zm-49.88,47.74A84,84,0,0,1,68.86,69.51,84.93,84.93,0,0,1,92.27,48.29Q92,52.13,92,56A108.12,108.12,0,0,0,200,164q3.87,0,7.71-.27A84.79,84.79,0,0,1,186.49,187.14Z`}))],[`duotone`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M227.89,147.89A96,96,0,1,1,108.11,28.11,96.09,96.09,0,0,0,227.89,147.89Z`,opacity:`0.2`}),E.createElement(`path`,{d:`M233.54,142.23a8,8,0,0,0-8-2,88.08,88.08,0,0,1-109.8-109.8,8,8,0,0,0-10-10,104.84,104.84,0,0,0-52.91,37A104,104,0,0,0,136,224a103.09,103.09,0,0,0,62.52-20.88,104.84,104.84,0,0,0,37-52.91A8,8,0,0,0,233.54,142.23ZM188.9,190.34A88,88,0,0,1,65.66,67.11a89,89,0,0,1,31.4-26A106,106,0,0,0,96,56,104.11,104.11,0,0,0,200,160a106,106,0,0,0,14.92-1.06A89,89,0,0,1,188.9,190.34Z`}))],[`fill`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M235.54,150.21a104.84,104.84,0,0,1-37,52.91A104,104,0,0,1,32,120,103.09,103.09,0,0,1,52.88,57.48a104.84,104.84,0,0,1,52.91-37,8,8,0,0,1,10,10,88.08,88.08,0,0,0,109.8,109.8,8,8,0,0,1,10,10Z`}))],[`light`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M232.13,143.64a6,6,0,0,0-6-1.49A90.07,90.07,0,0,1,113.86,29.85a6,6,0,0,0-7.49-7.48A102.88,102.88,0,0,0,54.48,58.68,102,102,0,0,0,197.32,201.52a102.88,102.88,0,0,0,36.31-51.89A6,6,0,0,0,232.13,143.64Zm-42,48.29a90,90,0,0,1-126-126A90.9,90.9,0,0,1,99.65,37.66,102.06,102.06,0,0,0,218.34,156.35,90.9,90.9,0,0,1,190.1,191.93Z`}))],[`regular`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M233.54,142.23a8,8,0,0,0-8-2,88.08,88.08,0,0,1-109.8-109.8,8,8,0,0,0-10-10,104.84,104.84,0,0,0-52.91,37A104,104,0,0,0,136,224a103.09,103.09,0,0,0,62.52-20.88,104.84,104.84,0,0,0,37-52.91A8,8,0,0,0,233.54,142.23ZM188.9,190.34A88,88,0,0,1,65.66,67.11a89,89,0,0,1,31.4-26A106,106,0,0,0,96,56,104.11,104.11,0,0,0,200,160a106,106,0,0,0,14.92-1.06A89,89,0,0,1,188.9,190.34Z`}))],[`thin`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M230.72,145.06a4,4,0,0,0-4-1A92.08,92.08,0,0,1,111.94,29.27a4,4,0,0,0-5-5A100.78,100.78,0,0,0,56.08,59.88a100,100,0,0,0,140,140,100.78,100.78,0,0,0,35.59-50.87A4,4,0,0,0,230.72,145.06ZM191.3,193.53A92,92,0,0,1,62.47,64.7a93,93,0,0,1,39.88-30.35,100.09,100.09,0,0,0,119.3,119.3A93,93,0,0,1,191.3,193.53Z`}))]]),UD=new Map([[`bold`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M240.49,15.51a12,12,0,0,0-17,0L173.94,65.09l-2.54-2.55a36.05,36.05,0,0,0-50.91,0L100,83l-3.51-3.52a12,12,0,0,0-17,17L83,100,62.54,120.49a36,36,0,0,0,0,50.91l2.55,2.54L15.51,223.51a12,12,0,0,0,17,17l49.57-49.58,2.54,2.55a36.06,36.06,0,0,0,50.91,0L156,173l3.51,3.52a12,12,0,0,0,17-17L173,156l20.49-20.49a36,36,0,0,0,0-50.91l-2.55-2.54,49.58-49.57A12,12,0,0,0,240.49,15.51Zm-121.95,161a12,12,0,0,1-17,0L79.51,154.43a12,12,0,0,1,0-17L100,117l39,39Zm58-57.95h0L156,139l-39-39,20.49-20.49a12,12,0,0,1,17,0l22.06,22.06a12,12,0,0,1,0,17ZM85.27,33.37a12,12,0,0,1,21.46-10.74l8,16A12,12,0,1,1,93.27,49.37Zm-68,57.26a12,12,0,0,1,16.1-5.36l16,8a12,12,0,1,1-10.74,21.46l-16-8A12,12,0,0,1,17.27,90.63Zm221.46,74.74a12,12,0,0,1-16.1,5.36l-16-8a12,12,0,0,1,10.74-21.46l16,8A12,12,0,0,1,238.73,165.37Zm-68,57.26a12,12,0,1,1-21.46,10.74l-8-16a12,12,0,0,1,21.46-10.74Z`}))],[`duotone`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M185,127,127,185a24,24,0,0,1-33.94,0L71,162.91A24,24,0,0,1,71,129L129,71a24,24,0,0,1,33.94,0L185,93.09A24,24,0,0,1,185,127Z`,opacity:`0.2`}),E.createElement(`path`,{d:`M237.66,18.34a8,8,0,0,0-11.32,0l-52.4,52.41-5.37-5.38a32.05,32.05,0,0,0-45.26,0L100,88.69l-6.34-6.35A8,8,0,0,0,82.34,93.66L88.69,100,65.37,123.31a32,32,0,0,0,0,45.26l5.38,5.37-52.41,52.4a8,8,0,0,0,11.32,11.32l52.4-52.41,5.37,5.38a32.06,32.06,0,0,0,45.26,0L156,167.31l6.34,6.35a8,8,0,0,0,11.32-11.32L167.31,156l23.32-23.31a32,32,0,0,0,0-45.26l-5.38-5.37,52.41-52.4A8,8,0,0,0,237.66,18.34Zm-116.29,161a16,16,0,0,1-22.62,0L76.69,157.25a16,16,0,0,1,0-22.62L100,111.31,144.69,156Zm57.94-57.94h0L156,144.69,111.31,100l23.32-23.31a16,16,0,0,1,22.62,0l22.06,22a16,16,0,0,1,0,22.63ZM88.57,35A8,8,0,0,1,103.43,29l8,20A8,8,0,0,1,96.57,55ZM24.57,93A8,8,0,0,1,35,88.57l20,8A8,8,0,0,1,49,111.43l-20-8A8,8,0,0,1,24.57,93ZM231.43,163a8,8,0,0,1-10.4,4.46l-20-8A8,8,0,1,1,207,144.57l20,8A8,8,0,0,1,231.43,163Zm-64,58.06A8,8,0,0,1,152.57,227l-8-20A8,8,0,0,1,159.43,201Z`}))],[`fill`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M88.57,35A8,8,0,0,1,103.43,29l8,20A8,8,0,0,1,96.57,55ZM29,103.43l20,8A8,8,0,1,0,55,96.57l-20-8A8,8,0,0,0,29,103.43ZM227,152.57l-20-8A8,8,0,1,0,201,159.43l20,8A8,8,0,0,0,227,152.57ZM159.43,201A8,8,0,0,0,144.57,207l8,20A8,8,0,1,0,167.43,221ZM237.91,18.52a8,8,0,0,0-11.5-.18L174,70.75l-5.38-5.38a32,32,0,0,0-45.28,0L106.14,82.54a4,4,0,0,0,0,5.66l61.7,61.66a4,4,0,0,0,5.66,0l16.74-16.74a32.76,32.76,0,0,0,9.81-22.52,31.82,31.82,0,0,0-9.37-23.17l-5.38-5.37,52.2-52.17A8.22,8.22,0,0,0,237.91,18.52ZM85.64,90.34a8,8,0,0,0-11.49.18,8.22,8.22,0,0,0,.41,11.37L80.67,108,65.34,123.31A31.82,31.82,0,0,0,56,146.47,32.75,32.75,0,0,0,65.77,169l5,4.94L18.49,226.13a8.21,8.21,0,0,0-.61,11.1,8,8,0,0,0,11.72.43L82,185.25l5.37,5.38a32.1,32.1,0,0,0,45.29,0L148,175.31l6.34,6.35a8,8,0,0,0,11.32-11.32Z`}))],[`light`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M236.24,19.76a6,6,0,0,0-8.48,0L173.94,73.57l-6.79-6.78a30,30,0,0,0-42.42,0L100,91.51l-7.76-7.75a6,6,0,0,0-8.48,8.48L91.51,100,66.79,124.73a30,30,0,0,0,0,42.42l6.78,6.79L19.76,227.76a6,6,0,1,0,8.48,8.48l53.82-53.81,6.79,6.78a30,30,0,0,0,42.42,0L156,164.49l7.76,7.75a6,6,0,0,0,8.48-8.48L164.49,156l24.72-24.73a30,30,0,0,0,0-42.42l-6.78-6.79,53.81-53.82A6,6,0,0,0,236.24,19.76Zm-113.45,161a18,18,0,0,1-25.46,0L75.27,158.67a18,18,0,0,1,0-25.46L100,108.49,147.51,156Zm57.94-57.94L156,147.51,108.49,100l24.72-24.73a18,18,0,0,1,25.46,0l22.06,22.06a18,18,0,0,1,0,25.46ZM90.43,34.23a6,6,0,0,1,11.14-4.46l8,20a6,6,0,1,1-11.14,4.46Zm-64,59.54a6,6,0,0,1,7.8-3.34l20,8a6,6,0,1,1-4.46,11.14l-20-8A6,6,0,0,1,26.43,93.77Zm203.14,68.46a6,6,0,0,1-7.8,3.34l-20-8a6,6,0,0,1,4.46-11.14l20,8A6,6,0,0,1,229.57,162.23Zm-64,59.54a6,6,0,1,1-11.14,4.46l-8-20a6,6,0,0,1,11.14-4.46Z`}))],[`regular`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M237.66,18.34a8,8,0,0,0-11.32,0l-52.4,52.41-5.37-5.38a32.05,32.05,0,0,0-45.26,0L100,88.69l-6.34-6.35A8,8,0,0,0,82.34,93.66L88.69,100,65.37,123.31a32,32,0,0,0,0,45.26l5.38,5.37-52.41,52.4a8,8,0,0,0,11.32,11.32l52.4-52.41,5.37,5.38a32,32,0,0,0,45.26,0L156,167.31l6.34,6.35a8,8,0,0,0,11.32-11.32L167.31,156l23.32-23.31a32,32,0,0,0,0-45.26l-5.38-5.37,52.41-52.4A8,8,0,0,0,237.66,18.34Zm-116.29,161a16,16,0,0,1-22.62,0L76.69,157.25a16,16,0,0,1,0-22.62L100,111.31,144.69,156Zm57.94-57.94L156,144.69,111.31,100l23.32-23.31a16,16,0,0,1,22.62,0l22.06,22A16,16,0,0,1,179.31,121.37ZM88.57,35A8,8,0,0,1,103.43,29l8,20A8,8,0,0,1,96.57,55ZM24.57,93A8,8,0,0,1,35,88.57l20,8A8,8,0,0,1,49,111.43l-20-8A8,8,0,0,1,24.57,93ZM231.43,163a8,8,0,0,1-10.4,4.46l-20-8A8,8,0,1,1,207,144.57l20,8A8,8,0,0,1,231.43,163Zm-64,58.06A8,8,0,0,1,152.57,227l-8-20A8,8,0,0,1,159.43,201Z`}))],[`thin`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M234.83,21.17a4,4,0,0,0-5.66,0L173.94,76.4l-8.2-8.2a28,28,0,0,0-39.6,0L100,94.34l-9.17-9.17a4,4,0,0,0-5.66,5.66L94.34,100,68.2,126.14a28,28,0,0,0,0,39.6l8.2,8.2L21.17,229.17a4,4,0,0,0,5.66,5.66L82.06,179.6l8.2,8.2a28,28,0,0,0,39.6,0L156,161.66l9.17,9.17a4,4,0,0,0,5.66-5.66L161.66,156l26.14-26.14a28,28,0,0,0,0-39.6l-8.2-8.2,55.23-55.23A4,4,0,0,0,234.83,21.17Zm-110.63,161a20,20,0,0,1-28.28,0L73.86,160.08a20,20,0,0,1,0-28.28L100,105.66,150.34,156Zm57.94-57.94L156,150.34,105.66,100,131.8,73.86a20,20,0,0,1,28.28,0l22.06,22.06A20,20,0,0,1,182.14,124.2ZM92.29,33.49a4,4,0,1,1,7.42-3l8,20a4,4,0,0,1-2.22,5.2A3.91,3.91,0,0,1,104,56a4,4,0,0,1-3.71-2.51Zm-64,61a4,4,0,0,1,5.2-2.22l20,8A4,4,0,0,1,52,108a3.91,3.91,0,0,1-1.49-.29l-20-8A4,4,0,0,1,28.29,94.51Zm199.42,67A4,4,0,0,1,224,164a3.91,3.91,0,0,1-1.49-.29l-20-8a4,4,0,1,1,3-7.42l20,8A4,4,0,0,1,227.71,161.49Zm-64,61a4,4,0,0,1-2.22,5.2A3.91,3.91,0,0,1,160,228a4,4,0,0,1-3.71-2.51l-8-20a4,4,0,0,1,7.42-3Z`}))]]),WD=new Map([[`bold`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M228,128a12,12,0,0,1-12,12H140v76a12,12,0,0,1-24,0V140H40a12,12,0,0,1,0-24h76V40a12,12,0,0,1,24,0v76h76A12,12,0,0,1,228,128Z`}))],[`duotone`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z`,opacity:`0.2`}),E.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z`}))],[`fill`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM184,136H136v48a8,8,0,0,1-16,0V136H72a8,8,0,0,1,0-16h48V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z`}))],[`light`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M222,128a6,6,0,0,1-6,6H134v82a6,6,0,0,1-12,0V134H40a6,6,0,0,1,0-12h82V40a6,6,0,0,1,12,0v82h82A6,6,0,0,1,222,128Z`}))],[`regular`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z`}))],[`thin`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M220,128a4,4,0,0,1-4,4H132v84a4,4,0,0,1-8,0V132H40a4,4,0,0,1,0-8h84V40a4,4,0,0,1,8,0v84h84A4,4,0,0,1,220,128Z`}))]]),GD=new Map([[`bold`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M124,216a12,12,0,0,1-12,12H48a12,12,0,0,1-12-12V40A12,12,0,0,1,48,28h64a12,12,0,0,1,0,24H60V204h52A12,12,0,0,1,124,216Zm108.49-96.49-40-40a12,12,0,0,0-17,17L195,116H112a12,12,0,0,0,0,24h83l-19.52,19.51a12,12,0,0,0,17,17l40-40A12,12,0,0,0,232.49,119.51Z`}))],[`duotone`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M224,56V200a16,16,0,0,1-16,16H48V40H208A16,16,0,0,1,224,56Z`,opacity:`0.2`}),E.createElement(`path`,{d:`M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40a8,8,0,0,0-11.32,11.32L204.69,120H112a8,8,0,0,0,0,16h92.69l-26.35,26.34a8,8,0,0,0,11.32,11.32l40-40A8,8,0,0,0,229.66,122.34Z`}))],[`fill`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40A8,8,0,0,0,176,88v32H112a8,8,0,0,0,0,16h64v32a8,8,0,0,0,13.66,5.66l40-40A8,8,0,0,0,229.66,122.34Z`}))],[`light`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M118,216a6,6,0,0,1-6,6H48a6,6,0,0,1-6-6V40a6,6,0,0,1,6-6h64a6,6,0,0,1,0,12H54V210h58A6,6,0,0,1,118,216Zm110.24-92.24-40-40a6,6,0,0,0-8.48,8.48L209.51,122H112a6,6,0,0,0,0,12h97.51l-29.75,29.76a6,6,0,1,0,8.48,8.48l40-40A6,6,0,0,0,228.24,123.76Z`}))],[`regular`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40a8,8,0,0,0-11.32,11.32L204.69,120H112a8,8,0,0,0,0,16h92.69l-26.35,26.34a8,8,0,0,0,11.32,11.32l40-40A8,8,0,0,0,229.66,122.34Z`}))],[`thin`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M116,216a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V40a4,4,0,0,1,4-4h64a4,4,0,0,1,0,8H52V212h60A4,4,0,0,1,116,216Zm110.83-90.83-40-40a4,4,0,0,0-5.66,5.66L214.34,124H112a4,4,0,0,0,0,8H214.34l-33.17,33.17a4,4,0,0,0,5.66,5.66l40-40A4,4,0,0,0,226.83,125.17Z`}))]]),KD=new Map([[`bold`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M199,125.31l-49.88-18.39L130.69,57a19.92,19.92,0,0,0-37.38,0L74.92,106.92,25,125.31a19.92,19.92,0,0,0,0,37.38l49.88,18.39L93.31,231a19.92,19.92,0,0,0,37.38,0l18.39-49.88L199,162.69a19.92,19.92,0,0,0,0-37.38Zm-63.38,35.16a12,12,0,0,0-7.11,7.11L112,212.28l-16.47-44.7a12,12,0,0,0-7.11-7.11L43.72,144l44.7-16.47a12,12,0,0,0,7.11-7.11L112,75.72l16.47,44.7a12,12,0,0,0,7.11,7.11L180.28,144ZM140,40a12,12,0,0,1,12-12h12V16a12,12,0,0,1,24,0V28h12a12,12,0,0,1,0,24H188V64a12,12,0,0,1-24,0V52H152A12,12,0,0,1,140,40ZM252,88a12,12,0,0,1-12,12h-4v4a12,12,0,0,1-24,0v-4h-4a12,12,0,0,1,0-24h4V72a12,12,0,0,1,24,0v4h4A12,12,0,0,1,252,88Z`}))],[`duotone`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M194.82,151.43l-55.09,20.3-20.3,55.09a7.92,7.92,0,0,1-14.86,0l-20.3-55.09-55.09-20.3a7.92,7.92,0,0,1,0-14.86l55.09-20.3,20.3-55.09a7.92,7.92,0,0,1,14.86,0l20.3,55.09,55.09,20.3A7.92,7.92,0,0,1,194.82,151.43Z`,opacity:`0.2`}),E.createElement(`path`,{d:`M197.58,129.06,146,110l-19-51.62a15.92,15.92,0,0,0-29.88,0L78,110l-51.62,19a15.92,15.92,0,0,0,0,29.88L78,178l19,51.62a15.92,15.92,0,0,0,29.88,0L146,178l51.62-19a15.92,15.92,0,0,0,0-29.88ZM137,164.22a8,8,0,0,0-4.74,4.74L112,223.85,91.78,169A8,8,0,0,0,87,164.22L32.15,144,87,123.78A8,8,0,0,0,91.78,119L112,64.15,132.22,119a8,8,0,0,0,4.74,4.74L191.85,144ZM144,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H184V64a8,8,0,0,1-16,0V48H152A8,8,0,0,1,144,40ZM248,88a8,8,0,0,1-8,8h-8v8a8,8,0,0,1-16,0V96h-8a8,8,0,0,1,0-16h8V72a8,8,0,0,1,16,0v8h8A8,8,0,0,1,248,88Z`}))],[`fill`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M208,144a15.78,15.78,0,0,1-10.42,14.94L146,178l-19,51.62a15.92,15.92,0,0,1-29.88,0L78,178l-51.62-19a15.92,15.92,0,0,1,0-29.88L78,110l19-51.62a15.92,15.92,0,0,1,29.88,0L146,110l51.62,19A15.78,15.78,0,0,1,208,144ZM152,48h16V64a8,8,0,0,0,16,0V48h16a8,8,0,0,0,0-16H184V16a8,8,0,0,0-16,0V32H152a8,8,0,0,0,0,16Zm88,32h-8V72a8,8,0,0,0-16,0v8h-8a8,8,0,0,0,0,16h8v8a8,8,0,0,0,16,0V96h8a8,8,0,0,0,0-16Z`}))],[`light`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M196.89,130.94,144.4,111.6,125.06,59.11a13.92,13.92,0,0,0-26.12,0L79.6,111.6,27.11,130.94a13.92,13.92,0,0,0,0,26.12L79.6,176.4l19.34,52.49a13.92,13.92,0,0,0,26.12,0L144.4,176.4l52.49-19.34a13.92,13.92,0,0,0,0-26.12Zm-4.15,14.86-55.08,20.3a6,6,0,0,0-3.56,3.56l-20.3,55.08a1.92,1.92,0,0,1-3.6,0L89.9,169.66a6,6,0,0,0-3.56-3.56L31.26,145.8a1.92,1.92,0,0,1,0-3.6l55.08-20.3a6,6,0,0,0,3.56-3.56l20.3-55.08a1.92,1.92,0,0,1,3.6,0l20.3,55.08a6,6,0,0,0,3.56,3.56l55.08,20.3a1.92,1.92,0,0,1,0,3.6ZM146,40a6,6,0,0,1,6-6h18V16a6,6,0,0,1,12,0V34h18a6,6,0,0,1,0,12H182V64a6,6,0,0,1-12,0V46H152A6,6,0,0,1,146,40ZM246,88a6,6,0,0,1-6,6H230v10a6,6,0,0,1-12,0V94H208a6,6,0,0,1,0-12h10V72a6,6,0,0,1,12,0V82h10A6,6,0,0,1,246,88Z`}))],[`regular`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M197.58,129.06,146,110l-19-51.62a15.92,15.92,0,0,0-29.88,0L78,110l-51.62,19a15.92,15.92,0,0,0,0,29.88L78,178l19,51.62a15.92,15.92,0,0,0,29.88,0L146,178l51.62-19a15.92,15.92,0,0,0,0-29.88ZM137,164.22a8,8,0,0,0-4.74,4.74L112,223.85,91.78,169A8,8,0,0,0,87,164.22L32.15,144,87,123.78A8,8,0,0,0,91.78,119L112,64.15,132.22,119a8,8,0,0,0,4.74,4.74L191.85,144ZM144,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H184V64a8,8,0,0,1-16,0V48H152A8,8,0,0,1,144,40ZM248,88a8,8,0,0,1-8,8h-8v8a8,8,0,0,1-16,0V96h-8a8,8,0,0,1,0-16h8V72a8,8,0,0,1,16,0v8h8A8,8,0,0,1,248,88Z`}))],[`thin`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M196.2,132.81l-53.36-19.65L123.19,59.8a11.93,11.93,0,0,0-22.38,0L81.16,113.16,27.8,132.81a11.93,11.93,0,0,0,0,22.38l53.36,19.65,19.65,53.36a11.93,11.93,0,0,0,22.38,0l19.65-53.36,53.36-19.65a11.93,11.93,0,0,0,0-22.38Zm-2.77,14.87L138.35,168a4,4,0,0,0-2.37,2.37l-20.3,55.08a3.92,3.92,0,0,1-7.36,0L88,170.35A4,4,0,0,0,85.65,168l-55.08-20.3a3.92,3.92,0,0,1,0-7.36L85.65,120A4,4,0,0,0,88,117.65l20.3-55.08a3.92,3.92,0,0,1,7.36,0L136,117.65a4,4,0,0,0,2.37,2.37l55.08,20.3a3.92,3.92,0,0,1,0,7.36ZM148,40a4,4,0,0,1,4-4h20V16a4,4,0,0,1,8,0V36h20a4,4,0,0,1,0,8H180V64a4,4,0,0,1-8,0V44H152A4,4,0,0,1,148,40Zm96,48a4,4,0,0,1-4,4H228v12a4,4,0,0,1-8,0V92H208a4,4,0,0,1,0-8h12V72a4,4,0,0,1,8,0V84h12A4,4,0,0,1,244,88Z`}))]]),qD=new Map([[`bold`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M116,36V20a12,12,0,0,1,24,0V36a12,12,0,0,1-24,0Zm80,92a68,68,0,1,1-68-68A68.07,68.07,0,0,1,196,128Zm-24,0a44,44,0,1,0-44,44A44.05,44.05,0,0,0,172,128ZM51.51,68.49a12,12,0,1,0,17-17l-12-12a12,12,0,0,0-17,17Zm0,119-12,12a12,12,0,0,0,17,17l12-12a12,12,0,1,0-17-17ZM196,72a12,12,0,0,0,8.49-3.51l12-12a12,12,0,0,0-17-17l-12,12A12,12,0,0,0,196,72Zm8.49,115.51a12,12,0,0,0-17,17l12,12a12,12,0,0,0,17-17ZM48,128a12,12,0,0,0-12-12H20a12,12,0,0,0,0,24H36A12,12,0,0,0,48,128Zm80,80a12,12,0,0,0-12,12v16a12,12,0,0,0,24,0V220A12,12,0,0,0,128,208Zm108-92H220a12,12,0,0,0,0,24h16a12,12,0,0,0,0-24Z`}))],[`duotone`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M184,128a56,56,0,1,1-56-56A56,56,0,0,1,184,128Z`,opacity:`0.2`}),E.createElement(`path`,{d:`M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm72,88a64,64,0,1,1-64-64A64.07,64.07,0,0,1,192,128Zm-16,0a48,48,0,1,0-48,48A48.05,48.05,0,0,0,176,128ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z`}))],[`fill`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm8,24a64,64,0,1,0,64,64A64.07,64.07,0,0,0,128,64ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z`}))],[`light`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M122,40V16a6,6,0,0,1,12,0V40a6,6,0,0,1-12,0Zm68,88a62,62,0,1,1-62-62A62.07,62.07,0,0,1,190,128Zm-12,0a50,50,0,1,0-50,50A50.06,50.06,0,0,0,178,128ZM59.76,68.24a6,6,0,1,0,8.48-8.48l-16-16a6,6,0,0,0-8.48,8.48Zm0,119.52-16,16a6,6,0,1,0,8.48,8.48l16-16a6,6,0,1,0-8.48-8.48ZM192,70a6,6,0,0,0,4.24-1.76l16-16a6,6,0,0,0-8.48-8.48l-16,16A6,6,0,0,0,192,70Zm4.24,117.76a6,6,0,0,0-8.48,8.48l16,16a6,6,0,0,0,8.48-8.48ZM46,128a6,6,0,0,0-6-6H16a6,6,0,0,0,0,12H40A6,6,0,0,0,46,128Zm82,82a6,6,0,0,0-6,6v24a6,6,0,0,0,12,0V216A6,6,0,0,0,128,210Zm112-88H216a6,6,0,0,0,0,12h24a6,6,0,0,0,0-12Z`}))],[`regular`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm72,88a64,64,0,1,1-64-64A64.07,64.07,0,0,1,192,128Zm-16,0a48,48,0,1,0-48,48A48.05,48.05,0,0,0,176,128ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z`}))],[`thin`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M124,40V16a4,4,0,0,1,8,0V40a4,4,0,0,1-8,0Zm64,88a60,60,0,1,1-60-60A60.07,60.07,0,0,1,188,128Zm-8,0a52,52,0,1,0-52,52A52.06,52.06,0,0,0,180,128ZM61.17,66.83a4,4,0,0,0,5.66-5.66l-16-16a4,4,0,0,0-5.66,5.66Zm0,122.34-16,16a4,4,0,0,0,5.66,5.66l16-16a4,4,0,0,0-5.66-5.66ZM192,68a4,4,0,0,0,2.83-1.17l16-16a4,4,0,1,0-5.66-5.66l-16,16A4,4,0,0,0,192,68Zm2.83,121.17a4,4,0,0,0-5.66,5.66l16,16a4,4,0,0,0,5.66-5.66ZM40,124H16a4,4,0,0,0,0,8H40a4,4,0,0,0,0-8Zm88,88a4,4,0,0,0-4,4v24a4,4,0,0,0,8,0V216A4,4,0,0,0,128,212Zm112-88H216a4,4,0,0,0,0,8h24a4,4,0,0,0,0-8Z`}))]]),JD=E.forwardRef((e,t)=>E.createElement(y,{ref:t,...e,weights:VD}));JD.displayName=`BookOpenIcon`;var YD=JD,XD=E.forwardRef((e,t)=>E.createElement(y,{ref:t,...e,weights:HD}));XD.displayName=`MoonIcon`;var ZD=XD,QD=E.forwardRef((e,t)=>E.createElement(y,{ref:t,...e,weights:UD}));QD.displayName=`PlugsConnectedIcon`;var $D=QD,eO=E.forwardRef((e,t)=>E.createElement(y,{ref:t,...e,weights:WD}));eO.displayName=`PlusIcon`;var tO=eO,nO=E.forwardRef((e,t)=>E.createElement(y,{ref:t,...e,weights:GD}));nO.displayName=`SignOutIcon`;var rO=nO,iO=E.forwardRef((e,t)=>E.createElement(y,{ref:t,...e,weights:KD}));iO.displayName=`SparkleIcon`;var aO=iO,oO=E.forwardRef((e,t)=>E.createElement(y,{ref:t,...e,weights:qD}));oO.displayName=`SunIcon`;var sO=oO,cO=[`agent-threads`];async function lO(e){let t=await T(e);if(!t.ok)throw Error(`Request failed (${t.status})`);return t.json()}var uO=[];for(let e=0;e<256;++e)uO.push((e+256).toString(16).slice(1));function dO(e,t=0){return(uO[e[t+0]]+uO[e[t+1]]+uO[e[t+2]]+uO[e[t+3]]+`-`+uO[e[t+4]]+uO[e[t+5]]+`-`+uO[e[t+6]]+uO[e[t+7]]+`-`+uO[e[t+8]]+uO[e[t+9]]+`-`+uO[e[t+10]]+uO[e[t+11]]+uO[e[t+12]]+uO[e[t+13]]+uO[e[t+14]]+uO[e[t+15]]).toLowerCase()}var fO=new Uint8Array(16);function pO(){return crypto.getRandomValues(fO)}var mO={};function hO(e,t,n){let r;if(e)r=_O(e.random??e.rng?.()??pO(),e.msecs,e.seq,t,n);else{let e=Date.now(),i=pO();gO(mO,e,i),r=_O(i,mO.msecs,mO.seq,t,n)}return t??dO(r)}function gO(e,t,n){return e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=vO(n),e.msecs=t):(e.seq=e.seq+1|0,e.seq===0&&e.msecs++),e}function _O(e,t,n,r,i=0){if(e.length<16)throw Error(`Random bytes length must be >= 16`);if(!r)r=new Uint8Array(16),i=0;else if(i<0||i+16>r.length)throw RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`);return t??=Date.now(),n??=vO(e),r[i++]=t/1099511627776&255,r[i++]=t/4294967296&255,r[i++]=t/16777216&255,r[i++]=t/65536&255,r[i++]=t/256&255,r[i++]=t&255,r[i++]=112|n>>>28&15,r[i++]=n>>>20&255,r[i++]=128|n>>>14&63,r[i++]=n>>>6&255,r[i++]=n<<2&255|e[10]&3,r[i++]=e[11],r[i++]=e[12],r[i++]=e[13],r[i++]=e[14],r[i++]=e[15],r}function vO(e){return(e[6]&127)<<24|e[7]<<16|e[8]<<8|e[9]}function yO(){return hO()}var bO={home:`https://fanout.run/start/what-fanout-is`,ingest:`https://fanout.run/start/send-telemetry`};function xO(e){let t=new URLSearchParams({window:e.window,limit:`40`});return e.namespace&&t.set(`namespace`,e.namespace),t}function SO(e,t){return[`observability`,e,t.toString()]}var CO=e=>e.state.status===`error`?15e3:3e4,wO=15e3;function TO(e,t,n=!0){return sn({queryKey:SO(e,t),queryFn:()=>lO(`/api/observability/${e}?${t}`),enabled:n,refetchInterval:CO,staleTime:wO})}async function EO(e,t){let n=new URLSearchParams({limit:`30`});e&&n.set(`q`,e),t&&n.set(`cursor`,t);let r=await T(`/api/agent/threads?${n}`);if(!r.ok)throw Error(`Unable to load chats (${r.status})`);return r.json()}function DO({agentAvailable:e,activeThreadID:t,activeDashboardID:n,autoFocusSearch:r=!1,onNewChat:i,onSelectThread:a,onDeletedThread:o,onSelectDashboard:s,onCreateDashboard:c,onInvestigateService:l,ref:u}){let d=Wt(),[f,p]=(0,E.useState)(``),[m]=la(f.trim(),250),[h,g]=(0,E.useState)(null),[_,v]=(0,E.useState)(null),[y,b]=(0,E.useState)(``),[x,S]=(0,E.useState)(``),[te,re]=(0,E.useState)(!1),ie=(0,E.useRef)(null);(0,E.useImperativeHandle)(u,()=>({focusSearch:()=>ie.current?.focus()}),[]),(0,E.useEffect)(()=>{r&&requestAnimationFrame(()=>ie.current?.focus())},[r]);let ae=BD({queryKey:[...cO,m],queryFn:({pageParam:e})=>EO(m,e),initialPageParam:``,getNextPageParam:e=>e.nextCursor||void 0,enabled:e}),oe=sn({queryKey:et,queryFn:Mt,refetchInterval:3e4,staleTime:wO}),w=(0,E.useMemo)(()=>ae.data?.pages.flatMap(e=>e.threads)??[],[ae.data]),ce=(0,E.useMemo)(()=>NO(w),[w]),le=TO(`overview`,xO({window:`1h`,namespace:``}),!!m&&!!l),ue=(0,E.useMemo)(()=>{if(!m)return[];let e=m.toLowerCase();return(le.data?.data.services??[]).map(e=>e.service).filter(t=>t.toLowerCase().includes(e)).slice(0,6)},[le.data,m]),de=(0,E.useMemo)(()=>{let e=oe.data??[],t=m.toLowerCase();return t?e.filter(e=>e.name.toLowerCase().includes(t)):e},[oe.data,m]);function pe(e){S(``),b(e.title),g(e)}async function me(){if(h&&y.trim()){re(!0),S(``);try{let e=await T(`/api/agent/threads/${encodeURIComponent(h.threadId)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:y.trim()})});if(!e.ok)throw Error(`Unable to rename chat (${e.status})`);await d.invalidateQueries({queryKey:cO}),g(null)}catch(e){S(e instanceof Error?e.message:`Unable to rename this chat.`)}finally{re(!1)}}}async function he(){if(_){re(!0),S(``);try{let e=await T(`/api/agent/threads/${encodeURIComponent(_.threadId)}`,{method:`DELETE`});if(!e.ok)throw Error(`Unable to delete chat (${e.status})`);let t=_.threadId;v(null),await d.invalidateQueries({queryKey:cO}),o(t)}catch(e){S(e instanceof Error?e.message:`Unable to delete this chat.`)}finally{re(!1)}}}return(0,D.jsxs)(fe,{gap:`sm`,h:`100%`,component:`nav`,"aria-label":`Navigation`,children:[e&&(0,D.jsx)(ge,{leftSection:(0,D.jsx)(tO,{size:16,weight:`bold`}),onClick:i,children:`New chat`}),(0,D.jsx)(It,{type:`auto`,offsetScrollbars:!0,flex:1,mx:-4,px:4,children:(0,D.jsxs)(fe,{gap:`lg`,pb:`sm`,children:[e&&(0,D.jsxs)(fe,{gap:4,children:[(0,D.jsx)(OO,{children:`Chats`}),ae.isLoading&&(0,D.jsx)(se,{py:`md`,children:(0,D.jsx)(ve,{size:`xs`})}),ae.isError&&(0,D.jsx)(C,{color:`bad`,radius:`md`,p:`xs`,children:`Chats could not be loaded.`}),!ae.isLoading&&!ae.isError&&w.length===0&&(0,D.jsx)(ee,{c:`dimmed`,size:`sm`,px:`sm`,py:`xs`,children:m?`No matching chats`:`No chats yet`}),ce.map(e=>(0,D.jsxs)(fe,{gap:2,children:[ce.length>1&&(0,D.jsx)(ee,{c:`dimmed`,size:`xs`,px:`sm`,pt:4,children:e.label}),e.threads.map(e=>(0,D.jsx)(kO,{thread:e,active:e.threadId===t,onSelect:()=>a(e.threadId),onRename:()=>pe(e),onDelete:()=>{S(``),v(e)}},e.threadId))]},e.label)),ae.hasNextPage&&(0,D.jsx)(ge,{variant:`subtle`,color:`gray`,size:`compact-sm`,loading:ae.isFetchingNextPage,onClick:()=>void ae.fetchNextPage(),children:`See all`})]}),ue.length>0&&l&&(0,D.jsxs)(fe,{gap:4,children:[(0,D.jsx)(OO,{children:`Services`}),ue.map(e=>(0,D.jsx)(be,{className:`rail-row`,p:`sm`,onClick:()=>l(e),children:(0,D.jsx)(ee,{size:`sm`,fw:500,truncate:!0,children:e})},e))]}),(0,D.jsxs)(fe,{gap:4,children:[(0,D.jsx)(OO,{children:`Dashboards`}),oe.isLoading&&(0,D.jsx)(se,{py:`md`,children:(0,D.jsx)(ve,{size:`xs`})}),oe.isError&&(0,D.jsx)(C,{color:`bad`,radius:`md`,p:`xs`,children:`Dashboards could not be loaded.`}),!oe.isLoading&&!oe.isError&&m&&de.length===0&&(0,D.jsx)(ee,{c:`dimmed`,size:`sm`,px:`sm`,py:`xs`,children:`No matching dashboards`}),de.map(e=>{let t=e.id===n;return(0,D.jsx)(be,{component:`a`,href:`/dashboards/${encodeURIComponent(e.id)}`,className:`rail-row`,"data-active":t||void 0,"aria-current":t?`page`:void 0,p:`sm`,onClick:t=>{t.button!==0||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||(t.preventDefault(),s(e.id))},children:(0,D.jsxs)(ne,{justify:`space-between`,gap:`sm`,wrap:`nowrap`,children:[(0,D.jsx)(ee,{size:`sm`,fw:t?600:500,truncate:!0,children:e.name}),e.is_default&&(0,D.jsx)(Ne,{size:`xs`,variant:`light`,color:`gray`,children:`Default`})]})},e.id)}),e&&(0,D.jsx)(ge,{variant:`subtle`,color:`gray`,size:`compact-sm`,justify:`flex-start`,leftSection:(0,D.jsx)(aO,{size:14,weight:`fill`}),onClick:c,children:oe.data?.length===0?`New dashboard`:`Create with AI`})]})]})}),(0,D.jsx)(Oe,{ref:ie,value:f,onChange:e=>p(e.currentTarget.value),leftSection:(0,D.jsx)(Ie,{size:15}),rightSection:(0,D.jsx)(ho,{size:`xs`,children:`⌘K`}),rightSectionWidth:44,placeholder:`Search`,"aria-label":`Search chats, dashboards and services`,size:`sm`}),(0,D.jsx)(Vt,{opened:h!==null,onClose:()=>!te&&g(null),title:`Rename chat`,centered:!0,children:(0,D.jsx)(`form`,{onSubmit:e=>{e.preventDefault(),me()},children:(0,D.jsxs)(fe,{children:[(0,D.jsx)(Oe,{label:`Name`,value:y,onChange:e=>b(e.currentTarget.value),maxLength:120,autoFocus:!0}),x&&(0,D.jsx)(C,{color:`bad`,children:x}),(0,D.jsxs)(ne,{justify:`flex-end`,children:[(0,D.jsx)(ge,{variant:`default`,onClick:()=>g(null),disabled:te,children:`Cancel`}),(0,D.jsx)(ge,{type:`submit`,loading:te,disabled:!y.trim(),children:`Save`})]})]})})}),(0,D.jsx)(Vt,{opened:_!==null,onClose:()=>!te&&v(null),title:`Delete chat?`,centered:!0,children:(0,D.jsxs)(fe,{children:[(0,D.jsxs)(ee,{size:`sm`,children:[`This permanently removes `,(0,D.jsx)(ee,{span:!0,fw:650,children:_?.title}),` and its saved messages.`]}),x&&(0,D.jsx)(C,{color:`bad`,children:x}),(0,D.jsxs)(ne,{justify:`flex-end`,children:[(0,D.jsx)(ge,{variant:`default`,onClick:()=>v(null),disabled:te,children:`Cancel`}),(0,D.jsx)(ge,{color:`bad`,loading:te,onClick:()=>void he(),children:`Delete`})]})]})})]})}function OO({children:e}){return(0,D.jsx)(ee,{c:`dimmed`,size:`xs`,fw:700,tt:`uppercase`,lts:`0.08em`,px:`sm`,children:e})}function kO({thread:e,active:t,onSelect:n,onRename:r,onDelete:i}){return(0,D.jsx)(h,{"data-active":t||void 0,className:`rail-row`,children:(0,D.jsxs)(ne,{gap:2,wrap:`nowrap`,children:[(0,D.jsx)(be,{onClick:n,"aria-current":t?`page`:void 0,p:`sm`,flex:1,style:{minWidth:0},children:(0,D.jsxs)(fe,{gap:0,children:[(0,D.jsx)(ee,{size:`sm`,fw:t?600:500,truncate:!0,children:e.title}),(0,D.jsx)(ee,{c:`dimmed`,size:`xs`,children:PO(e.updatedAt)})]})}),(0,D.jsxs)(Ue,{position:`bottom-end`,withinPortal:!0,children:[(0,D.jsx)(Ue.Target,{children:(0,D.jsx)(gn,{className:`rail-row-actions`,variant:`subtle`,color:`gray`,size:`sm`,mr:4,"aria-label":`Actions for ${e.title}`,children:(0,D.jsx)(Fe,{size:18,weight:`bold`})})}),(0,D.jsxs)(Ue.Dropdown,{children:[(0,D.jsx)(Ue.Item,{leftSection:(0,D.jsx)(qe,{size:15}),onClick:r,children:`Rename`}),(0,D.jsx)(Ue.Item,{color:`bad`,leftSection:(0,D.jsx)(jt,{size:15}),onClick:i,children:`Delete`})]})]})]})})}function AO(e){return e.includes(`T`)?new Date(e):new Date(`${e.replace(` `,`T`)}Z`)}function jO(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()}var MO=[`Today`,`Yesterday`,`Previous 7 days`,`Older`];function NO(e){let t=jO(new Date),n=new Map;for(let r of e){let e=Math.floor((t-jO(AO(r.updatedAt)))/864e5),i=e<=0?`Today`:e===1?`Yesterday`:e<=7?`Previous 7 days`:`Older`,a=n.get(i)??[];a.push(r),n.set(i,a)}return MO.filter(e=>n.has(e)).map(e=>({label:e,threads:n.get(e)}))}function PO(e){let t=AO(e),n=jO(new Date);return Math.floor((n-jO(t))/864e5)<=1?new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`2-digit`}).format(t):new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`}).format(t)}function FO({children:e}){let{agentAvailable:t,threadID:n,threadMissing:r,newThread:i,selectThread:a,openChat:o}=mn(),s=je(),c=ia({select:e=>e.location.pathname}),{dashboardId:l}=Pe({strict:!1}),u=c===`/chat`||c.startsWith(`/chat/`),[d,f]=ua(!1),[p,m]=(0,E.useState)(!1),[h,g]=(0,E.useState)(``),_=(0,E.useRef)(null),v=he(`(max-width: 62em)`),y=(0,E.useRef)(v);y.current=v,(0,E.useEffect)(()=>{f.close()},[c]),(0,E.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`&&(e.preventDefault(),y.current?(m(!0),f.open()):_.current?.focusSearch())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]);let b={agentAvailable:t,activeThreadID:u&&!r&&c!==`/chat`?n:void 0,activeDashboardID:l,onNewChat:i,onSelectThread:a,onDeletedThread:e=>{e===n&&i()},onSelectDashboard:e=>void s({to:`/dashboards/$dashboardId`,params:{dashboardId:e},search:{}}),onCreateDashboard:()=>o(fn),onInvestigateService:e=>o(`Investigate the ${e} service. Explain its errors and latency.`)};return(0,D.jsxs)(Za,{header:{height:52},navbar:{width:256,breakpoint:`md`,collapsed:{mobile:!0}},padding:0,children:[(0,D.jsx)(Za.Header,{children:(0,D.jsxs)(ne,{h:`100%`,px:{base:`sm`,sm:`md`},justify:`space-between`,wrap:`nowrap`,children:[(0,D.jsxs)(ne,{gap:`sm`,wrap:`nowrap`,children:[(0,D.jsx)(fo,{hiddenFrom:`md`,opened:d,onClick:()=>{m(!1),f.toggle()},size:`sm`,"aria-label":d?`Close navigation`:`Open navigation`}),(0,D.jsx)(me,{size:`small`})]}),(0,D.jsxs)(ne,{gap:`xs`,wrap:`nowrap`,children:[(0,D.jsx)(Lt,{label:`Documentation`,children:(0,D.jsx)(gn,{component:`a`,href:bO.home,target:`_blank`,rel:`noopener noreferrer`,variant:`subtle`,color:`gray`,"aria-label":`Documentation`,children:(0,D.jsx)(YD,{size:17,weight:`bold`})})}),(0,D.jsx)(IO,{}),(0,D.jsx)(LO,{onError:g})]})]})}),(0,D.jsx)(Za.Navbar,{p:`sm`,children:(0,D.jsx)(DO,{ref:_,...b})}),(0,D.jsx)(pt,{opened:d,onClose:f.close,hiddenFrom:`md`,size:288,padding:`sm`,title:(0,D.jsx)(me,{size:`small`}),overlayProps:{backgroundOpacity:.24,blur:1},children:(0,D.jsx)(DO,{...b,autoFocusSearch:d&&p})}),(0,D.jsxs)(Za.Main,{children:[h&&(0,D.jsx)(C,{color:`bad`,m:`md`,withCloseButton:!0,onClose:()=>g(``),children:h}),e]})]})}function IO(){let{setColorScheme:e}=Rt(),t=zt(`light`,{getInitialValueInEffect:!0}),n=t===`dark`?`light`:`dark`,[r,i]=(0,E.useState)(!1);return(0,D.jsx)(Lt,{label:`Switch to ${n} theme`,opened:r,children:(0,D.jsx)(gn,{variant:`subtle`,color:`gray`,"aria-label":`Switch to ${n} theme`,onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),onFocus:()=>i(!0),onBlur:()=>i(!1),onClick:()=>{i(!1),e(n)},children:t===`dark`?(0,D.jsx)(sO,{size:17,weight:`bold`}):(0,D.jsx)(ZD,{size:17,weight:`bold`})})})}function LO({onError:e}){let t=je(),n=ke(),r=(n.name.trim()||n.email.trim()||`?`).charAt(0).toUpperCase();return(0,D.jsxs)(Ue,{position:`bottom-end`,withinPortal:!0,shadow:`md`,children:[(0,D.jsx)(Ue.Target,{children:(0,D.jsx)(gn,{variant:`subtle`,color:`gray`,size:`lg`,radius:`xl`,"aria-label":`Account menu`,children:(0,D.jsx)(co,{size:26,radius:`xl`,color:`brand`,children:r})})}),(0,D.jsxs)(Ue.Dropdown,{children:[(0,D.jsx)(Ue.Label,{children:n.email||`Signed in`}),(0,D.jsx)(Ue.Item,{leftSection:(0,D.jsx)($D,{size:15}),onClick:()=>void t({to:`/settings`}),children:`Connect telemetry`}),(0,D.jsx)(Ue.Divider,{}),(0,D.jsx)(Ue.Item,{leftSection:(0,D.jsx)(rO,{size:15}),onClick:()=>void Se().catch(t=>e(t instanceof Error?t.message:`Sign-out failed — your session is still active.`)),children:`Sign out`})]})]})}function RO(){let{agent_available:e}=De(),t=je(),n=Wt(),{threadId:r}=Pe({strict:!1}),[i,a]=(0,E.useState)(yO),o=(0,E.useRef)(new Set),s=r??i,[c,l]=(0,E.useState)([]),[u,d]=(0,E.useState)({}),[f,p]=(0,E.useState)(``),[m,h]=(0,E.useState)(!1),[g,_]=(0,E.useState)(!1),[v,y]=(0,E.useState)(``),[b,ee]=(0,E.useState)(``),[x,S]=(0,E.useState)(``),[C,te]=(0,E.useState)(0),ne=(0,E.useRef)(``),re=(0,E.useRef)(null),ie=(0,E.useRef)(0),ae=(0,E.useMemo)(()=>new PD({url:`/api/agent/runs`,threadId:s,fetch:(e,t)=>T(e,t)}),[s]),oe=!e||f===s;function se(){ie.current=0,y(``)}(0,E.useEffect)(()=>{let t=!0;if(l([]),d({}),p(``),h(!1),_(!1),se(),S(``),!e){p(s);return}!r||o.current.has(s)?(ae.setMessages([]),p(s)):T(`/api/agent/threads/${encodeURIComponent(s)}`).then(async e=>{if(e.status===404)return null;if(!e.ok)throw Error(`Unable to load thread (${e.status})`);return e.json()}).then(e=>{if(t){if(e===null){h(!0),p(s);return}ae.setMessages(e.messages??[]),l([...e.messages??[]]),p(s)}}).catch(()=>{t&&(ne.current=``,S(`This chat could not be restored. Start a new chat or try again.`))});let i=ae.subscribe({onEvent:({messages:e})=>l([...e]),onRunInitialized:()=>{_(!0),S(``)},onToolCallStartEvent:({event:e})=>{ie.current+=1,y(hn(e.toolCallName))},onToolCallEndEvent:()=>{ie.current=Math.max(0,ie.current-1),ie.current===0&&y(``)},onRunFinalized:({messages:e})=>{let t=[...e];l(t),d(e=>{let n={...e};for(let e of t)e.role===`assistant`&&!n[e.id]&&(n[e.id]=Date.now());return n}),_(!1),se(),o.current.delete(s),n.invalidateQueries({queryKey:cO})},onRunFailed:e=>{console.error(`Agent run failed`,e),S(`Fanout could not complete this analysis.`),_(!1),se(),o.current.delete(s),n.invalidateQueries({queryKey:cO})}});return()=>{t=!1,i.unsubscribe(),ae.abortRun()}},[ae,e,n,C,s]),(0,E.useEffect)(()=>{if(!e)return;let n=e=>{let n=e.target,i=n?.matches(`input, textarea, [contenteditable='true']`);e.key===`/`&&!i&&(e.preventDefault(),r?requestAnimationFrame(()=>re.current?.focus()):t({to:`/chat`}).then(()=>requestAnimationFrame(()=>re.current?.focus()))),e.key===`Escape`&&n===re.current&&(ee(``),re.current?.blur())};return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[e,t,r]);async function w(){_(!0),S(``);try{await ae.runAgent()}catch(e){console.error(`Agent run failed`,e),S(`Fanout could not complete this analysis.`),_(!1),se(),o.current.delete(s)}}async function ce(n){let i=n.trim();if(!e||!i||g||!oe||m)return;r||(o.current.add(s),t({to:`/chat/$threadId`,params:{threadId:s},replace:!0}));let a={id:yO(),role:`user`,content:i};ae.addMessage(a),l([...ae.messages]),d(e=>({...e,[a.id]:Date.now()})),ee(``),await w()}(0,E.useEffect)(()=>{let e=ne.current;oe&&r&&e&&(ne.current=``,ce(e))},[oe,r,s]);function le(e){e.preventDefault(),ce(b)}function ue(){ae.abortRun(),_(!1),se(),o.current.delete(s)}function de(){!g&&ae.messages.some(e=>e.role===`user`)&&w()}function fe(n){if(!e)return;let r=yO();o.current.add(r),ne.current=n??``,t({to:`/chat/$threadId`,params:{threadId:r}})}function pe(){ae.abortRun(),ne.current=``,a(yO()),t({to:`/chat`})}function me(e){t({to:`/chat/$threadId`,params:{threadId:e}})}function he(){te(e=>e+1)}return(0,D.jsx)(pn.Provider,{value:{agentAvailable:e,threadID:s,threadMissing:m,messages:c,messageTimes:u,ready:oe,running:g,activity:v,input:b,setInput:ee,error:x,inputRef:re,send:ce,submit:le,stop:ue,retry:de,reloadThread:he,openChat:fe,newThread:pe,selectThread:me},children:(0,D.jsx)(FO,{children:(0,D.jsx)(Ji,{})})})}function zO(){let e=(0,E.useMemo)(()=>new zD,[]);return(0,D.jsx)(un,{client:e,children:(0,D.jsx)(Ae,{children:(0,D.jsx)(RO,{})})})}var BO=Nt({component:zO,notFoundComponent:()=>(0,D.jsx)(Te,{to:`/`,replace:!0})}),VO=Ke(`/`)({component:He(()=>_n(()=>import(`./routes-Cq8VcSRH.js`),__vite__mapDeps([0,1,2])),`component`)}),HO=Ke(`/settings`)({component:He(()=>_n(()=>import(`./settings-OxcFdUxP.js`),__vite__mapDeps([3,1,2,4,5,6])),`component`)}),UO=Ke(`/chat/`)({component:He(()=>_n(()=>import(`./chat.index-9RFXIZ1e.js`),__vite__mapDeps([7,8,1,4,9,10])),`component`)}),WO=Ke(`/chat/$threadId`)({component:He(()=>_n(()=>import(`./chat._threadId-9RFXIZ1e.js`),__vite__mapDeps([11,8,1,4,9,10])),`component`)}),GO=Ke(`/dashboards/`)({component:He(()=>_n(()=>import(`./dashboards.index-zL4w6VKJ.js`),__vite__mapDeps([12,1,2,13,4,14,5,15,9,10,6])),`component`),validateSearch:e=>lt(ot(e))}),KO=Ke(`/dashboards/$dashboardId`)({component:He(()=>_n(()=>import(`./dashboards._dashboardId-BwOctTYv.js`),__vite__mapDeps([16,1,2,13,4,14,5,15,9,10,6])),`component`),validateSearch:e=>lt(ot(e))}),qO=VO.update({id:`/`,path:`/`,getParentRoute:()=>BO}),JO=HO.update({id:`/settings`,path:`/settings`,getParentRoute:()=>BO}),YO=UO.update({id:`/chat/`,path:`/chat/`,getParentRoute:()=>BO}),XO=WO.update({id:`/chat/$threadId`,path:`/chat/$threadId`,getParentRoute:()=>BO}),ZO=GO.update({id:`/dashboards/`,path:`/dashboards/`,getParentRoute:()=>BO}),QO={IndexRoute:qO,SettingsRoute:JO,ChatThreadIdRoute:XO,DashboardsDashboardIdRoute:KO.update({id:`/dashboards/$dashboardId`,path:`/dashboards/$dashboardId`,getParentRoute:()=>BO}),ChatIndexRoute:YO,DashboardsIndexRoute:ZO},$O=BO._addFileChildren(QO)._addFileTypes();function ek(e){let t=new URLSearchParams;for(let[n,r]of Object.entries(e))for(let e of Array.isArray(r)?r:[r])e!==void 0&&t.append(n,typeof e==`object`&&e?JSON.stringify(e):String(e));let n=t.toString();return n?`?${n}`:``}function tk(e){let t=Object.create(null),n=e=>{if(e.startsWith(`{`))try{let t=JSON.parse(e);if(typeof t==`object`&&t&&!Array.isArray(t))return t}catch{}return e},r=new URLSearchParams(e);for(let e of new Set(r.keys())){let i=r.getAll(e).map(n);t[e]=i.length===1?i[0]:i}return t}var nk=ea({routeTree:$O,parseSearch:tk,stringifySearch:ek,defaultPreload:`intent`,scrollRestoration:!0}),rk={brand:Ct,ok:Tt,warn:kt,bad:_t,info:yt},ik={light:7,dark:5};function ak(e){let t=e.replace(`#`,``),n=t.length===3?[...t].map(e=>e+e).join(``):t,r=e=>{let t=parseInt(n.slice(e,e+2),16)/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4};return .2126*r(0)+.7152*r(2)+.0722*r(4)}function ok(e){let t=ak(e),n=1.05/(t+.05);return(t+.05)/.05>n?`var(--mantine-color-black)`:`var(--mantine-color-white)`}function sk(e){return Object.fromEntries(Object.entries(rk).map(([t,n])=>[`--fanout-color-${t}-contrast`,ok(n[ik[e]])]))}function ck(e){return t=>{let n=t.color??dk.primaryColor,r=e({...t,color:n}),i=t.variant===`filled`||t.variant===void 0;return t.autoContrast===!1||!i||!Object.hasOwn(rk,n)?r:{...r,color:`var(--fanout-color-${n}-contrast)`}}}var lk=.25,uk={xs:9,sm:10,md:11,lg:13,xl:16},dk={primaryColor:`brand`,primaryShade:ik,autoContrast:!0,luminanceThreshold:lk,colors:{dark:Dt,brand:Ct,ok:Tt,warn:kt,bad:_t,info:yt},defaultRadius:`md`,fontFamily:tt.body,fontFamilyMonospace:tt.display,headings:{fontFamily:tt.body,fontWeight:`600`},cursorType:`pointer`,components:{Tabs:{styles:(e,t)=>({tab:mk(t.color,`--tabs-text-color`)})},Pagination:{styles:(e,t)=>({control:mk(t.color,`--pagination-active-color`)})},Badge:{vars:(e,t)=>({root:pk(t.size)})}}},fk=()=>({variables:{"--mantine-color-error":`var(--mantine-color-bad-filled)`},light:{"--mantine-color-dimmed":dt.light.muted,...sk(`light`)},dark:sk(`dark`)});function pk(e){let t=uk[e??`md`];return t===void 0||t>=mt.micro?{}:{"--badge-fz":`${mt.micro/16}rem`}}function mk(e,t){return!e||e===dk.primaryColor?{[t]:`var(--fanout-color-${dk.primaryColor}-contrast)`}:{}}var hk=ck(xe),gk=Da({...dk,variantColorResolver:hk});(0,Co.createRoot)(document.getElementById(`root`)).render((0,D.jsx)(E.StrictMode,{children:(0,D.jsx)(Ea,{theme:gk,defaultColorScheme:`auto`,cssVariablesResolver:fk,children:(0,D.jsx)(ra,{router:nk})})}));export{Wg as A,cv as C,Y_ as D,B as E,bu as F,Im as M,Mm as N,V_ as O,jm as P,q_ as S,tv as T,Dv as _,s_ as a,U_ as b,rv as c,U as d,G_ as f,$_ as g,d_ as h,lO as i,Rg as j,h_ as k,R_ as l,Z_ as m,GO as n,o_ as o,H as p,bO as r,j_ as s,KO as t,I_ as u,G as v,Mv as w,M_ as x,W as y}; \ No newline at end of file diff --git a/internal/ui/dist/assets/index-DET0nsjw.js b/internal/ui/dist/assets/index-DET0nsjw.js new file mode 100644 index 00000000..58a2b1ec --- /dev/null +++ b/internal/ui/dist/assets/index-DET0nsjw.js @@ -0,0 +1,97 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/routes-CqBeRrWY.js","assets/brand-BUxUP_Hq.js","assets/auth-B4efqRtx.js","assets/settings-DR3my0jI.js","assets/Tooltip-B37f_b7x.js","assets/useQuery-Do7gxLQ4.js","assets/WarningCircle.es-HuL_Shey.js","assets/chat.index-CECIYka-.js","assets/chat-B9SGNK3k.js","assets/preload-helper-BP8lmrjQ.js","assets/format-BmrjoVVN.js","assets/chat._threadId-CECIYka-.js","assets/dashboards.index-CaihJ2L8.js","assets/theme-Ck1QYR6z.js","assets/use-computed-color-scheme-BdszbBN3.js","assets/page-DCM1FyLW.js","assets/dashboards._dashboardId-IotNJusj.js"])))=>i.map(i=>d[i]); +import{A as e,B as t,C as n,F as r,G as i,H as a,I as o,J as s,K as c,L as l,M as u,N as d,P as f,R as p,S as m,St as h,T as g,V as _,W as v,X as y,Y as b,_ as ee,_t as te,a as x,bt as S,c as ne,ct as re,d as ie,dt as ae,et as oe,f as se,ft as C,gt as ce,ht as le,k as ue,lt as de,mt as fe,nt as pe,ot as me,p as he,pt as ge,rt as _e,t as ve,u as ye,vt as be,w as xe,xt as Se,y as Ce,yt as we}from"./brand-BUxUP_Hq.js";import{a as Te,f as w,i as T,l as Ee,n as De,o as Oe,r as ke,t as Ae,u as je}from"./auth-B4efqRtx.js";import{A as Me,C as Ne,D as Pe,E as Fe,M as Ie,N as Le,O as Re,S as ze,T as Be,_ as Ve,b as He,d as Ue,f as We,h as Ge,i as Ke,j as qe,l as Je,m as Ye,n as Xe,o as Ze,p as Qe,r as $e,s as et,t as tt,u as nt,v as rt,w as it,x as at,y as ot}from"./preload-helper-BP8lmrjQ.js";import{$ as st,B as ct,F as lt,G as ut,H as dt,I as ft,J as pt,K as mt,M as ht,N as gt,P as _t,Q as vt,U as yt,V as bt,W as xt,X as St,Y as Ct,Z as wt,_ as Tt,et as Et,i as Dt,j as Ot,m as kt,n as At,q as jt,t as Mt,tt as Nt,w as Pt,x as Ft}from"./theme-Ck1QYR6z.js";import{E as It,T as Lt,o as Rt,t as zt}from"./Tooltip-B37f_b7x.js";import{n as Bt,t as Vt}from"./use-computed-color-scheme-BdszbBN3.js";import{C as Ht,E as Ut,F as Wt,R as Gt,T as Kt,_ as qt,a as Jt,b as Yt,c as Xt,d as Zt,f as Qt,g as $t,h as en,l as tn,m as nn,n as rn,o as an,p as on,r as sn,s as cn,t as ln,u as un,v as dn,w as fn,y as pn}from"./useQuery-Do7gxLQ4.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var mn=S((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function ee(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,te||(te=!0,ae());else{var t=n(l);t!==null&&C(ee,t.startTime-e)}}}var te=!1,x=-1,S=5,ne=-1;function re(){return g?!0:!(e.unstable_now()-net&&re());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&C(ee,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?ae():te=!1}}}var ae;if(typeof y==`function`)ae=function(){y(ie)};else if(typeof MessageChannel<`u`){var oe=new MessageChannel,se=oe.port2;oe.port1.onmessage=ie,ae=function(){se.postMessage(null)}}else ae=function(){_(ie,0)};function C(t,n){x=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(x),x=-1):h=!0,C(ee,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,te||(te=!0,ae()))),r},e.unstable_shouldYield=re,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),hn=S(((e,t)=>{t.exports=mn()})),gn=S((e=>{var t=hn(),n=we(),r=be();function i(e){var t=`https://react.dev/errors/`+e;if(1Oe||(e.current=De[Oe],De[Oe]=null,Oe--)}function je(e,t){Oe++,De[Oe]=e.current,e.current=t}var Me=ke(null),Ne=ke(null),Pe=ke(null),Fe=ke(null);function Ie(e,t){switch(je(Pe,t),je(Ne,e),je(Me,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?wp(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=wp(t),e=Tp(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}Ae(Me),je(Me,e)}function Le(){Ae(Me),Ae(Ne),Ae(Pe)}function Re(e){var t=e.memoizedState;t!==null&&(xh._currentValue=t.memoizedState,je(Fe,e)),t=Me.current;var n=Tp(t,e.type);t!==n&&(je(Ne,e),je(Me,n))}function ze(e){Ne.current===e&&(Ae(Me),Ae(Ne)),Fe.current===e&&(Ae(Fe),xh._currentValue=Ee)}var Be,Ve;function He(e){if(Be===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Be=t&&t[1]||``,Ve=-1)`:-1i||c[r]!==l[i]){var u=` +`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{Ue=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?He(n):``}function Ge(e,t){switch(e.tag){case 26:case 27:case 5:return He(e.type);case 16:return He(`Lazy`);case 13:return e.child!==t&&t!==null?He(`Suspense Fallback`):He(`Suspense`);case 19:return He(`SuspenseList`);case 0:case 15:return We(e.type,!1);case 11:return We(e.type.render,!1);case 1:return We(e.type,!0);case 31:return He(`Activity`);case 30:return He(`ViewTransition`);default:return``}}function Ke(e){try{var t=``,n=null;do t+=Ge(e,n),n=e,e=e.return;while(e);return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}var qe=Object.prototype.hasOwnProperty,Je=t.unstable_scheduleCallback,Ye=t.unstable_cancelCallback,Xe=t.unstable_shouldYield,Ze=t.unstable_requestPaint,Qe=t.unstable_now,$e=t.unstable_getCurrentPriorityLevel,et=t.unstable_ImmediatePriority,tt=t.unstable_UserBlockingPriority,nt=t.unstable_NormalPriority,rt=t.unstable_LowPriority,it=t.unstable_IdlePriority,at=t.log,ot=t.unstable_setDisableYieldValue,st=null,ct=null;function lt(e){if(typeof at==`function`&&ot(e),ct&&typeof ct.setStrictMode==`function`)try{ct.setStrictMode(st,e)}catch{}}var ut=Math.clz32?Math.clz32:pt,dt=Math.log,ft=Math.LN2;function pt(e){return e>>>=0,e===0?32:31-(dt(e)/ft|0)|0}var mt=256,ht=262144,gt=4194304;function _t(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function vt(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=_t(n))):i=_t(o):i=_t(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=_t(n))):i=_t(o)):i=_t(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function yt(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function bt(e,t){t&8&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0n;n++)t.push(e);return t}function wt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Tt(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0=Er),kr=` `,Ar=!1;function jr(e,t){switch(e){case`keyup`:return wr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function Mr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var Nr=!1;function Pr(e,t){switch(e){case`compositionend`:return Mr(t);case`keypress`:return t.which===32?(Ar=!0,kr):null;case`textInput`:return e=t.data,e===kr&&Ar?null:e;default:return null}}function Fr(e,t){if(Nr)return e===`compositionend`||!Tr&&jr(e,t)?(e=qn(),Kn=Gn=Wn=null,Nr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=ii(n)}}function oi(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?oi(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function si(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=ri(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=ri(e.document)}return t}function ci(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var li=Vn&&`documentMode`in document&&11>=document.documentMode,ui=null,di=null,fi=null,pi=!1;function mi(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;pi||ui==null||ui!==ri(r)||(r=ui,`selectionStart`in r&&ci(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),fi&&ni(fi,r)||(fi=r,r=sp(di,`onSelect`),0>=o,i-=o,ca=1<<32-ut(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),O&&ua(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),O&&ua(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return O&&ua(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&(_=v.alternate,_!==null&&h.delete(_.key===null?g:_.key)),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),O&&ua(a,g),u}function _(e,r,o,c){if(typeof o==`object`&&o&&o.type===ae&&o.key===null&&o.props.ref===void 0&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case re:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===ae){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),yo(c,o),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===pe&&mo(l)===r.type){n(e,r.sibling),c=a(r,o.props),yo(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===ae?(c=Yi(o.props.children,e.mode,c,o.key),yo(c,o),c.return=e,e=c):(c=Ji(o.type,o.key,o.props,null,e.mode,c),yo(c,o),c.return=e,e=c)}return s(e);case ie:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Qi(o,e.mode,c),c.return=e,e=c}return s(e);case pe:return o=mo(o),_(e,r,o,c)}if(Te(o))return h(e,r,o,c);if(xe(o)){if(l=xe(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return _(e,r,A(o),c);if(o.$$typeof===ce)return _(e,r,Ra(e,o),c);bo(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=Xi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{vo=0;var i=_(e,t,n,r);return _o=null,i}catch(t){if(t===so||t===lo)throw t;var a=Wi(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var So=xo(!0),Co=xo(!1),wo=!1;function To(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Eo(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Do(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Oo(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,ld&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Vi(e),Bi(e,null,n),t}return Li(e,r,t,n),Vi(e)}function ko(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Dt(e,n)}}function Ao(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var jo=!1;function Mo(){if(jo){var e=Qa;if(e!==null)throw e}}function No(e,t,n,r){jo=!1;var i=e.updateQueue;wo=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(R&f)===f:(r&f)===f){f!==0&&f===Za&&(jo=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,h=s;f=t;var g=n;switch(h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(g,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(g,d,f):m,f==null)break a;d=S({},d,f);break a;case 2:wo=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),vd|=o,e.lanes=o,e.memoizedState=d}}function Po(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function Fo(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=w.T,s={};s.types=o===null?null:o.types,w.T=s,Sc(e,!1,t,n);try{var c=i(),l=w.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?xc(e,t,to(c,r),Ud(e)):xc(e,t,r,Ud(e))}catch(n){xc(e,t,{then:function(){},status:`rejected`,reason:n},Ud())}finally{T.p=a,o!==null&&s.types!==null&&(o.types=s.types),w.T=o}}function dc(){}function fc(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=pc(e).queue;uc(e,a,t,Ee,n===null?dc:function(){return mc(e),n(r)})}function pc(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Ee,baseState:Ee,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Cs,lastRenderedState:Ee},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Cs,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function mc(e){var t=pc(e);t.next===null&&(t=e.alternate.memoizedState),xc(e,t.next.queue,{},Ud())}function hc(){return La(xh)}function gc(){return vs().memoizedState}function _c(){return vs().memoizedState}function vc(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=Ud();e=Do(n);var r=Oo(t,e,n);r!==null&&(Kd(r,t,n),ko(r,t,n)),t={cache:Wa()},e.payload=t;return}t=t.return}}function yc(e,t,n){var r=Ud();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Cc(e)?wc(t,n):(n=Ri(e,t,n,r),n!==null&&(Kd(n,e,r),Tc(n,t,r)))}function bc(e,t,n){xc(e,t,n,Ud())}function xc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Cc(e))wc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,ti(s,o))return Li(e,t,i,0),ud===null&&Ii(),!1}catch{}if(n=Ri(e,t,i,r),n!==null)return Kd(n,e,r),Tc(n,t,r),!0}return!1}function Sc(e,t,n,r){if(r={lane:2,revertLane:qf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Cc(e)){if(t)throw Error(i(479))}else t=Ri(e,n,r,2),t!==null&&Kd(t,e,2)}function Cc(e){var t=e.alternate;return e===j||t!==null&&t===j}function wc(e,t){ns=ts=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Tc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Dt(e,n)}}var Ec={readContext:La,use:xs,useCallback:cs,useContext:cs,useEffect:cs,useImperativeHandle:cs,useLayoutEffect:cs,useInsertionEffect:cs,useMemo:cs,useReducer:cs,useRef:cs,useState:cs,useDebugValue:cs,useDeferredValue:cs,useTransition:cs,useSyncExternalStore:cs,useId:cs,useHostTransitionStatus:cs,useFormState:cs,useActionState:cs,useOptimistic:cs,useMemoCache:cs,useCacheRefresh:cs,useEffectEvent:cs},Dc={readContext:La,use:xs,useCallback:function(e,t){return _s().memoizedState=[e,t===void 0?null:t],e},useContext:La,useEffect:Zs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Ys(4194308,4,rc.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Ys(4194308,4,e,t)},useInsertionEffect:function(e,t){Ys(4,2,e,t)},useMemo:function(e,t){var n=_s();t=t===void 0?null:t;var r=e();if(rs){lt(!0);try{e()}finally{lt(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=_s();if(n!==void 0){var i=n(t);if(rs){lt(!0);try{n(t)}finally{lt(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=yc.bind(null,j,e),[r.memoizedState,e]},useRef:function(e){var t=_s();return e={current:e},t.memoizedState=e},useState:function(e){e=Ns(e);var t=e.queue,n=bc.bind(null,j,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:ac,useDeferredValue:function(e,t){return cc(_s(),e,t)},useTransition:function(){var e=Ns(!1);return e=uc.bind(null,j,e.queue,!0,!1),_s().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=j,a=_s();if(O){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),ud===null)throw Error(i(349));R&127||Os(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,Zs(As.bind(null,r,o,e),[e]),r.flags|=2048,qs(9,{destroy:void 0},ks.bind(null,r,o,n,t),null),n},useId:function(){var e=_s(),t=ud.identifierPrefix;if(O){var n=la,r=ca;n=(r&~(1<<32-ut(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=is++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[Pt]=t,o[Ft]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(gp(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&wl(t)}}return N(t),t.subtreeFlags&=-33554433,Tl(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&wl(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=Pe.current,Ca(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=ha,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[Pt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||pp(e.nodeValue,n)),e||ba(t,!0)}else e=Cp(e).createTextNode(r),e[Pt]=t,t.stateNode=e}return N(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Ca(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[Pt]=t}else wa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;N(t),e=!1}else n=Ta(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(qo(t),t):(qo(t),null);if(t.flags&128)throw Error(i(558))}return N(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=Ca(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[Pt]=t}else wa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;N(t),a=!1}else a=Ta(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(qo(t),t):(qo(t),null)}return qo(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Dl(t,t.updateQueue),N(t),null);case 4:return Le(),e===null&&rp(t.stateNode.containerInfo),t.flags|=67108864,N(t),null;case 10:return ja(t.type),N(t),null;case 19:if(Xo(t),r=t.memoizedState,r===null)return N(t),null;if(a=!!(t.flags&128),o=r.rendering,o===null){if(a)Ol(r,!1);else{if(_d!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=Zo(e),o!==null){for(t.flags|=128,Ol(r,!1),e=o.updateQueue,t.updateQueue=e,Dl(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)qi(n,e),n=n.sibling;return Yo(t,Jo.current&1|2),O&&ua(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Qe()>Od&&(t.flags|=128,a=!0,Ol(r,!1),t.lanes=4194304)}}else{if(!a){if(e=Zo(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Dl(t,e),Ol(r,!0),r.tail===null&&r.tailMode!==`collapsed`&&r.tailMode!==`visible`&&!o.alternate&&!O)return N(t),null}else 2*Qe()-r.renderingStartTime>Od&&n!==536870912&&(t.flags|=128,a=!0,Ol(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}if(r.tail!==null){e=r.tail;a:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break a}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Qe(),e.sibling=null,o=Jo.current,o=a?o&1|2:o&1,r.tailMode===`visible`||r.tailMode===`collapsed`||!n||O?Yo(t,o):(n=o,je(Vo,t),je(Jo,n),Ho===null&&(Ho=t)),O&&ua(t,r.treeForkCount),e}return N(t),null;case 22:case 23:return qo(t),Bo(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(N(t),t.subtreeFlags&6&&(t.flags|=8192)):N(t),n=t.updateQueue,n!==null&&Dl(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&Ae(ro),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ja(Ua),N(t),null;case 25:return null;case 30:return t.flags|=33554432,N(t),null}throw Error(i(156,t.tag))}function kl(e,t){switch(pa(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ja(Ua),Le(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ze(t),null;case 31:if(t.memoizedState!==null){if(qo(t),t.alternate===null)throw Error(i(340));wa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(qo(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));wa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Xo(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return Le(),null;case 10:return ja(t.type),null;case 22:case 23:return qo(t),Bo(),e!==null&&Ae(ro),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ja(Ua),null;case 25:return null;default:return null}}function Al(e,t){switch(pa(t),t.tag){case 3:ja(Ua),Le();break;case 26:case 27:case 5:ze(t);break;case 4:Le();break;case 31:t.memoizedState!==null&&qo(t);break;case 13:qo(t);break;case 19:Xo(t);break;case 10:ja(t.type);break;case 22:case 23:qo(t),Bo(),e!==null&&Ae(ro);break;case 24:ja(Ua)}}function jl(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Ef(t,t.return,e)}}function Ml(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Ef(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Ef(t,t.return,e)}}function Nl(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Fo(t,n)}catch(t){Ef(e,e.return,t)}}}function Pl(e,t,n){n.props=Pc(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Ef(e,t,n)}}function Fl(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:var i=e.stateNode,a=ji(e.memoizedProps,i);(i.ref===null||i.ref.name!==a)&&(i.ref=Jp(a)),r=i.ref;break;case 7:if(e.stateNode===null){var o=new Yp(e);f(e.child,!1,fm,o,void 0,void 0),e.stateNode=o}r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Ef(e,t,n)}}function Il(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Ef(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Ef(e,t,n)}else n.current=null}}function Ll(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n title`))),gp(r,t,n),r[Pt]=e,Jt(r),t=r;break a;case`link`:if(o=ah(`link`,`href`,a).get(t+(n.href||``))){for(s=0;sg&&(o=g,g=h,h=o);var _=ai(s,h),v=ai(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,w.T=null,n=Id,Id=null;var o=Md,s=Pd;if(jd=0,Nd=Md=null,Pd=0,ld&6)throw Error(i(331));var c=ld;if(ld|=4,id(o.current),Xu(o,o.current,s,n),ld=c,Bf(0,!1),ct&&typeof ct.onPostCommitFiberRoot==`function`)try{ct.onPostCommitFiberRoot(st,o)}catch{}return!0}finally{T.p=a,w.T=r,Sf(e,t)}}function Tf(e,t,n){t=ea(n,t),t=zc(e.stateNode,t,2),e=Oo(e,t,2),e!==null&&(wt(e,2),zf(e))}function Ef(e,t,n){if(e.tag===3)Tf(e,e,n);else for(;t!==null;){if(t.tag===3){Tf(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(Ad===null||!Ad.has(r))){e=ea(n,e),n=Bc(2),r=Oo(t,n,2),r!==null&&(Vc(n,r,t,e),wt(r,2),zf(r));break}}t=t.return}}function Df(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new cd;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(hd=!0,i.add(n),e=Of.bind(null,e,t,n),t.then(e,e))}function Of(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,ud===e&&(R&n)===n&&(_d===4||_d===3&&(R&62914560)===R&&300>Qe()-Ed?ld&2?bd|=n:$d(e,0):bd|=n,Sd===R&&(Sd=0)),zf(e)}function kf(e,t){t===0&&(t=St()),e=zi(e,t),e!==null&&(wt(e,t),zf(e))}function Af(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),kf(e,n)}function jf(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),kf(e,n)}function Mf(e,t){return Je(e,t)}var Nf=null,Pf=null,Ff=!1,If=!1,Lf=!1,Rf=0;function zf(e){e!==Pf&&e.next===null&&(Pf===null?Nf=Pf=e:Pf=Pf.next=e),If=!0,Ff||(Ff=!0,Kf())}function Bf(e,t){if(!Lf&&If){Lf=!0;do for(var n=!1,r=Nf;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-ut(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Gf(r,a))}else a=R,a=vt(r,r===ud?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||yt(r,a)||(n=!0,Gf(r,a))}r=r.next}while(n);Lf=!1}}function Vf(){Hf()}function Hf(){If=Ff=!1;var e=0;Rf!==0&&kp()&&(e=Rf);for(var t=Qe(),n=null,r=Nf;r!==null;){var i=r.next,a=Uf(r,t);a===0?(r.next=null,n===null?Nf=i:n.next=i,i===null&&(Pf=n)):(n=r,(e!==0||a&3)&&(If=!0)),r=i}jd!==0&&jd!==5||Bf(e,!1),Rf!==0&&(Rf=0)}function Uf(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&yp(d)&&(c=c.responseEnd,o+=u*(cph){s.length=o;break}f=new Promise(Gp.bind(f)),s.push(f)}}}if(0`u`?null:document;function zm(e,t,n){var r=Rm;if(r&&typeof t==`string`&&t){var i=_n(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),Nm.has(i)||(Nm.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),gp(t,`link`,e),Jt(t),r.head.appendChild(t)))}}function Bm(e){Fm.D(e),zm(`dns-prefetch`,e,null)}function Vm(e,t){Fm.C(e,t),zm(`preconnect`,e,t)}function Hm(e,t,n){Fm.L(e,t,n);var r=Rm;if(r&&e&&t){var i=`link[rel="preload"][as="`+_n(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+_n(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+_n(n.imageSizes)+`"]`)):i+=`[href="`+_n(e)+`"]`;var a=i;switch(t){case`style`:a=Jm(e);break;case`script`:a=Qm(e)}if(!(Mm.has(a)||(e=S({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),Mm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Ym(a))||t===`script`&&r.querySelector($m(a))))){var o=r.createElement(`link`);gp(o,`link`,e),t===`style`&&(o[Ht]=!0,o.onload=o.onerror=function(){Yt(o)}),Jt(o),r.head.appendChild(o)}}}function Um(e,t){Fm.m(e,t);var n=Rm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+_n(r)+`"][href="`+_n(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Qm(e)}if(!Mm.has(a)&&(e=S({rel:`modulepreload`,href:e},t),Mm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector($m(a)))return}r=n.createElement(`link`),gp(r,`link`,e),Jt(r),n.head.appendChild(r)}}}function Wm(e,t,n){Fm.S(e,t,n);var r=Rm;if(r&&e){var i=qt(r).hoistableStyles,a=Jm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Ym(a)))s.loading=5;else{e=S({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=Mm.get(a))&&nh(e,n);var c=o=r.createElement(`link`);Jt(c),gp(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,th(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Gm(e,t){Fm.X(e,t);var n=Rm;if(n&&e){var r=qt(n).hoistableScripts,i=Qm(e),a=r.get(i);a||(a=n.querySelector($m(i)),a||(e=S({src:e,async:!0},t),(t=Mm.get(i))&&rh(e,t),a=n.createElement(`script`),Jt(a),gp(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Km(e,t){Fm.M(e,t);var n=Rm;if(n&&e){var r=qt(n).hoistableScripts,i=Qm(e),a=r.get(i);a||(a=n.querySelector($m(i)),a||(e=S({src:e,async:!0,type:`module`},t),(t=Mm.get(i))&&rh(e,t),a=n.createElement(`script`),Jt(a),gp(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function qm(e,t,n,r){var a=(a=Pe.current)?Pm(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Jm(n.href),t=qt(a).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Jm(n.href);var o=qt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Ym(e)))?o._p||(s.instance=o,s.state.loading=5):(o=Mm.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},Mm.set(e,o)),Zm(a,e,o,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Qm(n),t=qt(a).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Jm(e){return`href="`+_n(e)+`"`}function Ym(e){return`link[rel="stylesheet"][`+e+`]`}function Xm(e){return S({},e,{"data-precedence":e.precedence,precedence:null})}function Zm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[Ht]){r.loading=1;return}}else t=e.createElement(`link`),t[Ht]=!0,t.onload=t.onerror=Yt.bind(null,t),gp(t,`link`,n),Jt(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Qm(e){return`[src="`+_n(e)+`"]`}function $m(e){return`script[async]`+e}function eh(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+_n(n.href)+`"]`);if(r)return t.instance=r,Jt(r),r;var a=S({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Jt(r),gp(r,`style`,a),th(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Jm(n.href);var o=e.querySelector(Ym(a));if(o)return t.state.loading|=4,t.instance=o,Jt(o),o;r=Xm(n),(a=Mm.get(a))&&nh(r,a),o=(e.ownerDocument||e).createElement(`link`),Jt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),gp(o,`link`,r),t.state.loading|=4,th(o,n.precedence,e),t.instance=o;case`script`:return o=Qm(n.src),(a=e.querySelector($m(o)))?(t.instance=a,Jt(a),a):(r=n,(a=Mm.get(o))&&(r=S({},n),rh(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),Jt(a),gp(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,th(r,n.precedence,e));return t.instance}function th(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function sh(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function ch(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function lh(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function uh(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function dh(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=uh(t),e.suspenseyImages.push(t)),e=_h.bind(e),t.decode().then(e,e))}function fh(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Jm(r.href),a=t.querySelector(Ym(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=gh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Jt(a);return}a=t.ownerDocument||t,r=Xm(r),(i=Mm.get(i))&&nh(r,i),a=a.createElement(`link`),Jt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),gp(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=gh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var ph=0;function mh(e,t){return e.stylesheets&&e.count===0&&yh(e,e.stylesheets),0ph?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function hh(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)yh(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function gh(){this.count--,hh(this)}function _h(){this.imgCount--,hh(this)}var vh=null;function yh(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,vh=new Map,t.forEach(bh,e),vh=null,gh.call(e))}function bh(e,t){if(!(t.state.loading&4)){var n=vh.get(e);if(n)var r=n.get(null);else{n=new Map,vh.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=gn()}));function vn(e){return e?.isNotFound===!0}function yn(){try{return sessionStorage}catch{return}}var bn=`tsr-scroll-restoration-v1_3`,xn=yn();function Sn(){try{return JSON.parse(xn?.getItem(`tsr-scroll-restoration-v1_3`)||`{}`)}catch{return{}}}var Cn=Sn(),wn=`data-scroll-restoration-id`,Tn=e=>e.state.__TSR_key||e.href;function En(e){let t=e.getAttribute(wn);if(t)return`[${wn}="${t}"]`;let n=``,r=e,i;for(;i=r.parentNode;){let e=1,t=r;for(;t=t.previousElementSibling;)e++;let a=`${r.localName}:nth-child(${e})`;n=n?`${a} > ${n}`:a,r=i}return n}var Dn=!1,On=`window`;function kn(e){try{return typeof e==`function`?e():document.querySelector(e)}catch{}}function An(e){let t=new Set;for(let n of e){if(n===On)continue;let e=kn(n);e&&t.add(e)}return t}function jn(e,t){let n=t??e.options.scrollRestoration,r=e._scroll;n&&(r.e=!0);let i=e.options.getScrollRestorationKey||Tn,a=new Set,o=e=>{let t=Cn[e]||={};for(let e of a)e===document?t[On]={scrollX,scrollY}:e.isConnected&&(t[En(e)]={scrollX:e.scrollLeft,scrollY:e.scrollTop})};n&&!r.s&&(r.s=!0,Dn=!1,history.scrollRestoration=`manual`,document.addEventListener(`scroll`,e=>{Dn||a.add(e.target)},!0),e.subscribe(`onBeforeLoad`,e=>{e.fromLocation&&o(i(e.fromLocation)),a.clear()}),addEventListener(`pagehide`,()=>{history.scrollRestoration=`auto`,o(i(e.stores.resolvedLocation.get()??e.stores.location.get()));try{xn?.setItem(bn,JSON.stringify(Cn))}catch{}}),addEventListener(`pageshow`,e=>{e.persisted&&(history.scrollRestoration=`manual`)})),!r.r&&(r.r=!0,e.subscribe(`onRendered`,t=>{let n=e.options.scrollRestorationBehavior,o=e.options.scrollToTopSelectors,s=r.n,c=r.h,l;if(a.clear(),r.n=!0,r.h=!1,typeof e.options.scrollRestoration==`function`&&!e.options.scrollRestoration({location:e.latestLocation}))return;let u=i(t.toLocation),d=t.fromLocation&&i(t.fromLocation);if(r.e&&d&&d!==u){let e=Cn[d];if(e){let t=Cn[u];for(let n in e){if(n===On){if(s)continue}else{let e=kn(n);if(!e||s&&o&&(l??=An(o),l.has(e)))continue}t||=Cn[u]={},t[n]??=e[n]}}}Dn=!0;try{let e=t.toLocation.hash,i=t.toLocation.state.__hashScrollIntoViewOptions??!0,a=!1;if(s){!e&&o&&(l??=An(o));let t=e&&i&&c,s=r.e?Cn[u]:void 0;if(s)for(let e in s){let{scrollX:r,scrollY:i}=s[e];if(e===On){if(t)continue;scrollTo({top:i,left:r,behavior:n}),a=!0}else{let t=kn(e);t&&(t.scrollLeft=r,t.scrollTop=i,l?.delete(t))}}if(!e){let e={top:0,left:0,behavior:n};if(a||scrollTo(e),l)for(let t of l)t.scrollTo(e)}}!a&&e&&i&&document.getElementById(e)?.scrollIntoView(i)}finally{Dn=!1}}))}function Mn(e,t=String){let n;for(let r in e){let i=e[r];i!==void 0&&(n||=new URLSearchParams).set(r,t(i))}return n?n.toString():``}function Nn(e){return e?e===`false`?!1:e===`true`?!0:e*0==0&&+e+``===e?+e:e:``}function Pn(e){let t=new URLSearchParams(e),n=Object.create(null);for(let[e,r]of t.entries()){let t=n[e];t==null?n[e]=Nn(r):Array.isArray(t)?t.push(Nn(r)):n[e]=[t,Nn(r)]}return n}var Fn=/^(?:\s|["[{\d-]|fa|nu|tr)/,In=Rn(JSON.parse),Ln=zn(JSON.stringify,JSON.parse);function Rn(e){let t=e===JSON.parse;return n=>{n[0]===`?`&&(n=n.substring(1));let r=Pn(n);for(let n in r){let i=r[n];if(typeof i==`string`){if(t&&!Fn.test(i))continue;try{r[n]=e(i)}catch{}}}return r}}function zn(e,t){let n=t===JSON.parse;function r(r){if(r&&typeof r==`object`)try{return e(r)}catch{}else if(t&&typeof r==`string`){if(n&&!Fn.test(r))return r;try{return t(r),e(r)}catch{}}return r}return e=>{let t=Mn(e,r);return t?`?${t}`:``}}function Bn(e){let t=new Map,n,r;return{get(e){let n=t.get(e);if(n)return n.visited=!0,n.value},set(i,a){let o=t.get(i);if(o){o.value=a;return}if(t.size>=e){let e=n?.next().value;for(;!e||e.visited;)e?e.visited=!1:n=t.values(),e=n.next().value;e===r&&(n=void 0),t.delete(e.key)}let s={key:i,value:a,visited:!1};r=s,t.set(i,s)},clear(){t.clear(),n=void 0,r=void 0}}}var Vn=4,Hn=5;function Un(e){let t=e.names;if(t)return t;let n=[];for(let t of e)typeof t!=`string`&&n.push(t[1]);return e.names=n}function Wn(e,t,n){let r=e.substring(t,n);if(r.charCodeAt(0)===36)return r.length===1?[2,`_splat`,``,void 0]:[1,r.substring(1),``,``];let i=r.indexOf(`{`);if(i>=0){let a=r.indexOf(`}`,i),o=r.charCodeAt(i+1)===45,s=i+(o?3:2);if(a>=0&&r.charCodeAt(s-1)===36&&(!o||s!e.parse&&e.caseSensitive===_&&e.prefix===h&&e.suffix===g);if(y)c=y;else{let e=qn(r,t,_,h,g);c=e,v.push(e),v.length===2&&i?.push(v)}}r=c}p&&m=0;e--){let n=i.wildcard[e],{prefix:r,suffix:a}=n;if(!r||!_&&(n.caseSensitive?v:y??=v.toLowerCase()).startsWith(r)){if(a){if(_)continue;let e=t.slice(u).join(`/`),i=e.slice(-a.length);if((n.caseSensitive?i:i.toLowerCase())!==a||e.length-a.length=0;t--){let n=i.optional[t];s.push({node:n,index:u,skipped:e,statics:f,dynamics:p,optionals:m,extract:h,rawParams:g})}if(!_)for(let e=i.optional.length-1;e>=0;e--){let t=i.optional[e],{prefix:n,suffix:r}=t;if(n||r){let e=t.caseSensitive?v:y??=v.toLowerCase();if(n&&!e.startsWith(n)||r&&e.indexOf(r,e.length-r.length)=0;e--){let t=i.dynamic[e],{prefix:n,suffix:r}=t;if(n||r){let e=t.caseSensitive?v:y??=v.toLowerCase();if(n&&!e.startsWith(n)||r&&e.indexOf(r,e.length-r.length)=0;e--){let t=i.pathless[e];s.push({node:t,index:u,skipped:d,statics:f,dynamics:p,optionals:m,extract:h,rawParams:g})}}if(l)return l;if(r&&c){let n=c.index;for(let e=0;ee.statics||t.statics===e.statics&&(t.dynamics>e.dynamics||t.dynamics===e.dynamics&&(t.optionals>e.optionals||t.optionals===e.optionals&&((t.node.kind===Vn)>(e.node.kind===Vn)||t.node.kind===Vn==(e.node.kind===Vn)&&t.node.depth>e.node.depth)))}function cr(e,t,n){let r=Ge(e),i=`/${r}`,a=t?i:i.toLowerCase(),o=`${a}/`,s={input:({url:e})=>{let n=t?e.pathname:e.pathname.toLowerCase();return n===a?e.pathname=`/`:n.startsWith(o)&&(e.pathname=e.pathname.slice(i.length)),e},output:({url:e})=>(e.pathname=Ue(`/${r}${e.pathname}`),e)};return n?{input:({url:e})=>lr(n,s.input({url:e})),output:({url:e})=>s.output({url:ur(n,e)})}:s}function lr(e,t){let n=e?.input?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function ur(e,t){let n=e?.output?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function dr(e,t){let{createMutableStore:n,createReadonlyStore:r,batch:i}=t,a=new Map,o=n(`idle`),s=n(e),c=n(void 0),l=n([]),u=r(()=>l.get().map(e=>a.get(e).get())),d=r(()=>({status:o.get(),isLoading:o.get()===`pending`,matches:u.get(),location:s.get(),resolvedLocation:c.get()}));function f(e){let t=a.get(e);return t||(t=n(void 0),a.set(e,t)),t}let p={status:o,location:s,resolvedLocation:c,ids:l,matches:u,byRoute:a,__store:d,getMatchStore:f,setMatches:m};function m(e){let t=l.get(),n=e.map(e=>e.routeId);i(()=>{ot(t,n)||l.set(n);for(let e of t)n.includes(e)||a.get(e).set(()=>void 0);for(let t of e){let e=f(t.routeId);e.get()!==t&&e.set(t)}})}return p}var fr=`__TSR_index`,pr=`popstate`,mr=`beforeunload`,hr=/^[\x00-\x20]*(?:[\\/][\t\n\r]*){2,}/;function gr(e){let t=hr.exec(e);return t?`/`+e.slice(t[0].length):e}function _r(e){return/[\x00-\x1f\x7f]/.test(e)&&(e=e.replace(/[\x00-\x1f\x7f]/g,e=>` +\r`.includes(e)?``:encodeURIComponent(e))),gr(e)}function vr(e){let t=e.getLocation(),n=new Set,r=r=>{t=e.getLocation(),n.forEach(e=>e({location:t,action:r}))},i=n=>{e.notifyOnIndexChange??!0?r(n):t=e.getLocation()},a=async({task:n,navigateOpts:r,...i})=>{if(r?.ignoreBlocker??!1){n();return}let a=e.getBlockers?.()??[],o=i.type===`PUSH`||i.type===`REPLACE`;if(typeof document<`u`&&a.length&&o)for(let n of a){let r=xr(i.path,i.state);if(await n.blockerFn({currentLocation:t,nextLocation:r,action:i.type})){e.onBlocked?.();return}}n()};return{get location(){return t},get length(){return e.getLength()},subscribers:n,subscribe:e=>(n.add(e),()=>{n.delete(e)}),push:(n,i,o)=>{let s=t.state[fr];i=yr(s+1,i),a({task:()=>{e.pushState(n,i),r({type:`PUSH`})},navigateOpts:o,type:`PUSH`,path:n,state:i})},replace:(n,i,o)=>{let s=t.state[fr];i=yr(s,i),a({task:()=>{e.replaceState(n,i),r({type:`REPLACE`})},navigateOpts:o,type:`REPLACE`,path:n,state:i})},go:(t,n)=>{a({task:()=>{e.go(t,n?.ignoreBlocker??!1),i({type:`GO`,index:t})},navigateOpts:n,type:`GO`})},back:t=>{a({task:()=>{e.back(t?.ignoreBlocker??!1),i({type:`BACK`})},navigateOpts:t,type:`BACK`})},forward:t=>{a({task:()=>{e.forward(t?.ignoreBlocker??!1),i({type:`FORWARD`})},navigateOpts:t,type:`FORWARD`})},canGoBack:()=>t.state[fr]!==0,createHref:t=>e.createHref(t),block:t=>{if(!e.setBlockers)return()=>{};let n=e.getBlockers?.()??[];return e.setBlockers([...n,t]),()=>{let n=e.getBlockers?.()??[];e.setBlockers?.(n.filter(e=>e!==t))}},flush:()=>e.flush?.(),destroy:()=>e.destroy?.(),notify:r,_getBlockers:()=>e.getBlockers?.()??[]}}function yr(e,t){let n=Sr();return{...t,key:n,__TSR_key:n,[fr]:e}}function br(e){let t=e?.window??(typeof document<`u`?window:void 0),n=t.history.pushState,r=t.history.replaceState,i=[],a=()=>i,o=e=>i=e,s=t=>_r(e?.createHref?e.createHref(t):t),c=e?.parseLocation??(()=>xr(`${t.location.pathname}${t.location.search}${t.location.hash}`,t.history.state));if(!t.history.state?.__TSR_key&&!t.history.state?.key){let e=Sr();t.history.replaceState({[fr]:0,key:e,__TSR_key:e},``)}let l=c(),u,d=!1,f=!1,p=!1,m=!1,h=()=>l,g,_=()=>{g&&(te._ignoreSubscribers=!0,(g[2]?t.history.pushState:t.history.replaceState)(g[1],``,g[0]),te._ignoreSubscribers=!1,g=void 0,u=void 0)},v=(t,n,r)=>{let i=e?.createHref?s(n):void 0,a=!!g;a||(u=l),l=xr(n,r),g=[i??l.href,r,g?.[2]||t],a||queueMicrotask(()=>_())},y=e=>{l=c(),te.notify({type:e})},b=async()=>{if(m=!1,f){f=!1;return}let e=c(),n=e.state[fr]-l.state[fr],r=n===1,i=n===-1,o=!r&&!i||d;d=!1;let s=o?`GO`:i?`BACK`:`FORWARD`,u=o?{type:`GO`,index:n}:{type:i?`BACK`:`FORWARD`};if(p)p=!1;else{let r=a();if(typeof document<`u`&&r.length){for(let i of r)if(await i.blockerFn({currentLocation:l,nextLocation:e,action:s})){f=!0,t.history.go(-n),te.notify(u);return}}}l=c(),te.notify(u)},ee=e=>{if(m){m=!1;return}let t=!1,n=a();if(typeof document<`u`&&n.length)for(let e of n){let n=e.enableBeforeUnload??!0;if(n===!0){t=!0;break}if(typeof n==`function`&&n()===!0){t=!0;break}}if(t)return e.preventDefault(),e.returnValue=``},te=vr({getLocation:h,getLength:()=>t.history.length,pushState:(e,t)=>v(!0,e,t),replaceState:(e,t)=>v(!1,e,t),back:e=>(e&&(p=!0,m=!0),t.history.back()),forward:e=>{e&&(p=!0,m=!0),t.history.forward()},go:(e,n)=>{d=!0,n&&(p=!0,m=!0),t.history.go(e)},createHref:e=>s(e),flush:_,destroy:()=>{t.history.pushState=n,t.history.replaceState=r,t.removeEventListener(mr,ee,{capture:!0}),t.removeEventListener(pr,b)},onBlocked:()=>{u&&l!==u&&(l=u)},getBlockers:a,setBlockers:o,notifyOnIndexChange:!1});return te._ignoreNextBeforeUnload=e=>{m=!1;try{e=new URL(e,t.document.baseURI).href,m=/^https?:/.test(e)&&(!e.includes(`#`)||e.split(`#`)[0]!==t.location.href.split(`#`)[0])}catch{}},t.addEventListener(mr,ee,{capture:!0}),t.addEventListener(pr,b),t.history.pushState=function(...e){let r=n.apply(t.history,e);return te._ignoreSubscribers||y(`PUSH`),r},t.history.replaceState=function(...e){let n=r.apply(t.history,e);return te._ignoreSubscribers||y(`REPLACE`),n},te}function xr(e,t){let n=_r(e),r=n.indexOf(`#`),i=n.indexOf(`?`);if(!t){let e=Sr();t={[fr]:0,key:e,__TSR_key:e}}return{href:n,pathname:n.substring(0,r>0?i>0?Math.min(r,i):r:i>0?i:n.length),hash:r>-1?n.substring(r):``,search:i>-1?n.slice(i,r===-1?void 0:r):``,state:t}}function Sr(){return(Math.random()+1).toString(36).substring(7)}function Cr(e,t){return e.protocol!==`http:`&&e.protocol!==`https:`||e.origin!==t||!!e.username||!!e.password}function wr(e){return e.pathname+e.search+e.hash}function Tr(e){return e.options.loader||e.options.beforeLoad||e.lazyFn||e.options.component?.preload||e.options.pendingComponent?.preload}function Er(e,t){return{fromLocation:t,toLocation:e,pathChanged:t?.pathname!==e.pathname,hrefChanged:t?.href!==e.href,hashChanged:t?.hash!==e.hash}}function Dr({key:e,__TSR_key:t,__TSR_index:n,__hashScrollIntoViewOptions:r,...i}){return i}function Or(e){return e.findIndex(e=>e.status===`error`||e.status===`notFound`||e._notFound)+1}function kr(e,t,n,r,i,a){r&&(t=t.slice(0,r)),i&&(n=n.slice(0,i));for(let r of t){if(a&&e._tx!==a)return;n.some(e=>e.routeId===r.routeId)||e.routesById[r.routeId].options.onLeave?.(r)}for(let r of n){if(a&&e._tx!==a)return;e.routesById[r.routeId].options[t.some(e=>e.routeId===r.routeId)?`onStay`:`onEnter`]?.(r)}}var Ar=class{constructor(e,t){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this._scroll={n:!0},this.subscribers=new Set,this._cache=new Map,this._committed=[],this.startTransition=async e=>(e(),!1),this.update=e=>{let t=this.options;this.options={...t,...e},this.isServer=this.options.isServer??!1??typeof document>`u`,this.staticLocations=new WeakMap,this.protocolAllowlist=new Set(this.options.protocolAllowlist),(!this.history||this.options.history&&this.options.history!==this.history)&&(this.history=this.options.history?this.options.history:br()),this.origin=this.options.origin,this.origin||=window?.origin&&window.origin!==`null`?window.origin:`http://localhost`;let n=this.options.basepath??`/`,r=this.options.rewrite,i=this.basepath!==n||t?.rewrite!==r||t?.caseSensitive!==this.options.caseSensitive;if(i&&(this.basepath=n,this.rewrite=n!==`/`&&Ge(n)?cr(n,this.options.caseSensitive,r):r),this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree){this.routeTree=this.options.routeTree;let e;e=this.buildRouteTree(),this.setRoutes(e)}if(this.stores)i&&this.stores.location.set(this.latestLocation);else if(this.latestLocation){let e=this.getStoreConfig(this);this.batch=e.batch,this.stores=dr(this.latestLocation,e),jn(this)}},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{let e=Qn(this.routeTree,this.options.caseSensitive);return this.options.routeMasks&&Jn(this.options.routeMasks,e.processedTree),{...e,resolvePathCache:Bn(1e3)}},this.subscribe=(e,t)=>{let n={eventType:e,fn:t};return this.subscribers.add(n),()=>{this.subscribers.delete(n)}},this.emit=e=>{for(let t of this.subscribers)if(t.eventType===e.type)try{t.fn(e)}catch(e){console.error(e)}},this.parseLocation=(e,t)=>{let n=({pathname:e,search:n,hash:r,href:i},a)=>{if(!this.rewrite&&!/[ \x00-\x1f\x7f\u0080-\uffff]/.test(e)){let i=this.options.parseSearch(n),o=this.options.stringifySearch(i);return{href:e+o+r,publicHref:e+o+r,pathname:at(e),external:!1,searchStr:o,search:qe(t?.search,i),hash:at(r.slice(1)),state:Le(t?.state,a)}}let o=lr(this.rewrite,new URL(i,this.origin)),s=this.options.parseSearch(o.search),c=this.options.stringifySearch(s);return o.search=c,{href:o.href.replace(o.origin,``),publicHref:i,pathname:at(gr(o.pathname)),external:!!this.rewrite&&Cr(o,this.origin),searchStr:c,search:qe(t?.search,s),hash:at(o.hash.slice(1)),state:Le(t?.state,a)}},r=n(e,e.state),{__tempLocation:i,__tempKey:a}=r.state;if(i&&(!a||a===this.tempLocationKey)){let e=n(i,{...i.state,__tempLocation:void 0,key:r.state.key,__TSR_key:r.state.__TSR_key});return e.maskedLocation=r,e}return r},this.matchRoutes=(e,t,n)=>typeof e==`string`?this.matchRoutesInternal({pathname:e,search:t},n):this.matchRoutesInternal(e,t),this.getMatchedRoutes=e=>{let t=Object.create(null),n=Zn(Ve(e),this.processedTree,!0);return n&&Object.assign(t,n.rawParams),[n?.branch||[this.routesById.__root__],t,n?.route]},this.buildLocation=e=>{{let t=this.staticLocations.get(e);if(t)return t}let t=!1,n=(n={})=>{if(n.href){let e=xr(n.href,{});n={...n,to:lr(this.rewrite,new URL(e.pathname,this.origin)).pathname,search:this.options.parseSearch(e.search),hash:e.hash.slice(1)}}let r=n._fromLocation||this._pendingLocation||this.latestLocation,i,a=()=>(t=!0,r),o=()=>(t=!0,i??=this.matchRoutesLightweight(r)),s=n.to?`${n.to}`:`.`,c=Ye(s[0]===`/`?``:n.unsafeRelative===`path`?a().pathname:n.from??o()[1],s,this.options.trailingSlash,this.resolvePathCache),l=this.routesByPath[Ve(c)],u=c.includes(`$`),d;if(l)d=l._branch??=tr(l);else if(u)d=[];else{let[e,t,n]=this.getMatchedRoutes(c);d=e,this.options.notFoundRoute&&(!n||n.path!==`/`&&t[`**`])&&(d=[...d,this.options.notFoundRoute])}let f=u?l?._interpolation??Gn(!1,{fullPath:c},0):void 0,p;for(let e of d){let t=e.options.params?.stringify??e.options.stringifyParams;if(t){let e=o()[3];if(p??=Fr(n.params,e),!Fe(p))break;p===e&&(p=Object.assign(He(),p));try{Object.assign(p,t(p))}catch{}}}p??=Fr(n.params,Ir(n.params,f)?o()[3]:Lr);let m=e.leaveParams?c:gr(at(f?Qe(c,f,p,this.pathParamsDecoder):c)),h=Rr(d,e._includeValidateSearch),g=()=>{let t=o()[2];if(e._includeValidateSearch&&this.options.search?.strict){let e={};d.forEach(n=>{if(n.options.validateSearch)try{Object.assign(e,Pr(n.options.validateSearch,{...e,...t}))}catch{}}),t=e}return t},_=h.length?zr(h,g(),n):n.search===!0?g():typeof n.search==`function`?n.search(g()):n.search||Lr,v=this.options.stringifySearch(_),y=n.hash===!0?a().hash:typeof n.hash==`function`?n.hash(a().hash):n.hash||void 0,b=y?`#${y}`:``,ee=n.state?n.state===!0?a().state:typeof n.state==`function`?n.state(a().state):n.state:Lr,te=`${m}${v}${b}`,x,S,ne=!1;if(this.rewrite){let e=new URL(te,this.origin),t=e.origin,n=ur(this.rewrite,e);x=wr(e),Cr(n,t)?(S=n.href,ne=!0):S=gr(wr(n))}else x=Ne(te),S=x;return{publicHref:S,href:x,pathname:m,search:_,searchStr:v,state:ee,hash:y??``,external:ne,unmaskOnReload:n.unmaskOnReload}},r=n(e);if(e.mask)r.maskedLocation=n({from:e.from,...e.mask});else if(this.options.routeMasks){let t=Yn(r.pathname,this.processedTree);if(t){let i=Object.assign(He(),t.rawParams),{from:a,params:o,...s}=t.route,c=Fr(o,i);r.maskedLocation=n({from:e.from,...s,params:c})}}return!t&&e._fromLocation&&!r.maskedLocation&&this.staticLocations.set(e,r),r},this.commitLocation=async({viewTransition:e,ignoreBlocker:t,...n})=>{let r=n.maskedLocation??n;if(r.external)return jr(this,r.publicHref,{replace:n.replace,ignoreBlocker:t});let i,a=Ve(this.latestLocation.href)===Ve(n.href)&&ze(Dr(n.state),Dr(this.latestLocation.state)),o=this._commitPromise,s,c=new Promise(e=>{s=e});if(c.resolve=()=>{s(),o?.resolve()},this._commitPromise=c,a)this.load();else{let{maskedLocation:r,hashScrollIntoView:a,...o}=n;r&&(o={...r,state:{...r.state,__tempKey:void 0,__tempLocation:{...o,search:o.searchStr,state:{...o.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(o.unmaskOnReload??this.options.unmaskOnReload??!1)&&(o.state.__tempKey=this.tempLocationKey)),o.state={...o.state,__hashScrollIntoViewOptions:a??this.options.defaultHashScrollIntoView??!0},this.shouldViewTransition=e,i=n.replace?`REPLACE`:`PUSH`,this.history[i===`REPLACE`?`replace`:`push`](o.publicHref,o.state,{ignoreBlocker:t}),this.history.subscribers.size||this.load({action:{type:i}})}return this._scroll.n=n.resetScroll??!0,this._commitPromise},this.buildAndCommitLocation=({replace:e,resetScroll:t,hashScrollIntoView:n,viewTransition:r,ignoreBlocker:i,...a}={})=>{let o=this.buildLocation({...a,_includeValidateSearch:!0});this._pendingLocation=o;let s=this.commitLocation({...o,viewTransition:r,replace:e,resetScroll:t,hashScrollIntoView:n,ignoreBlocker:i});return queueMicrotask(()=>{this._pendingLocation===o&&(this._pendingLocation=void 0)}),s},this.navigate=async({to:e,reloadDocument:t,href:n,publicHref:r,...i})=>{let a=n?Be(n):void 0;if(a||t){if(e!==void 0||!n){let t=this.buildLocation({to:e,...i}),a=t.maskedLocation??t;n??=a.publicHref,r??=a.publicHref}let t=!a&&r?r:n;return jr(this,t,i)}return this.buildAndCommitLocation({...i,href:n,to:e,_isNavigate:!0})},this.load=async e=>{this.updateLatestLocation(),e?.action&&(this._scroll.h=e.action.type===`PUSH`||e.action.type===`REPLACE`),await ji(this,e)},this.startViewTransition=e=>{let t=this.shouldViewTransition??this.options.defaultViewTransition;if(this.shouldViewTransition=void 0,t&&typeof document.startViewTransition==`function`){let n;if(typeof t==`object`&&window.CSS?.supports?.(`selector(:active-view-transition-type(a))`)){let r=this.latestLocation,i=this.stores.resolvedLocation.get(),a=typeof t.types==`function`?t.types(Er(r,i)):t.types;if(a===!1)return e();n={update:e,types:a}}else n=e;return document.startViewTransition(n).updateCallbackDone}return e()},this.invalidate=e=>{let t=this._committed,n=e?.filter,r=this._preloads,i=new Set,a=e=>{(!n||n(e))&&i.add(e.id)};t.forEach(a),this._cache.forEach(a),r?.forEach(e=>e.forEach(a)),this._tx?.[3].forEach(a);let o=[];for(let[e,t]of r??[])t.some(e=>i.has(e.id))&&(r.delete(e),o.push(e));let s=t=>{if(i.has(t.id)){let n=this.routesById[t.routeId],r={...t,invalid:!0,...(e?.forcePending||t.status===`error`||t.status===`notFound`)&&Tr(n)?{status:`pending`,error:void 0}:void 0};return t._flight=void 0,r}return t};this._committed=t.map(s);for(let[t,n]of this._cache)i.has(t)&&(n.invalid=!0,e?.forcePending&&(n.status=`pending`));for(let e of i){let t=this._flights?.get(e);this._flights?.delete(e),t&&!t[2]&&o.push(t[1])}for(let e of o)e.abort();return this.shouldViewTransition=!1,this.load({sync:e?.sync})},this.resolveRedirect=e=>{let t=e.options,n=e.headers.get(`Location`)||t.href;if(!n){let e=this.buildLocation(t);n=(e.maskedLocation??e).publicHref||`/`}let r;if(Ie.test(n)||(r=Be(n))&&!this.protocolAllowlist.has(r))throw Error(`Redirect blocked: unsafe protocol`);if(r===`http:`||r===`https:`){let e=new URL(n);e.pathname.startsWith(`//`)?n=e.href:Cr(e,this.origin)||(n=wr(e),r=void 0)}return r&&(t.reloadDocument=!0),t.href=n,e.headers.set(`Location`,n),e},this.clearCache=e=>{let t=this._cache,n=this._preloads,r=e?.filter,i=[],a=[];for(let[e,n]of t)(!r||r(n))&&(a.push(e),i.push(n));let o=[];for(let[e,t]of n??[])(!r||t.some(r))&&(o.push(e),i.push(...t));for(let e of a)t.delete(e);for(let e of o)n.delete(e);for(let e of i){let t=e._flight;e._flight=void 0,t&&!--t[2]&&(this._flights?.get(e.id)===t&&this._flights.delete(e.id),o.push(t[1]))}for(let e of o)e.abort()},this.loadRouteChunk=Wr,this.preloadRoute=e=>Mi(this,e),this.matchRoute=(e,t)=>{let n={...e,to:e.to?Ye(e.from||``,e.to,this.options.trailingSlash,this.resolvePathCache):void 0,params:e.params||{},leaveParams:!0},r=this.buildLocation(n),i=this.stores.status.get()===`pending`;if(t?.pending&&!i)return!1;let a=t?.pending??!i?this.latestLocation:this.stores.resolvedLocation.get()||this.stores.location.get(),o=Xn(r.pathname,t?.caseSensitive??!1,t?.fuzzy??!1,a.pathname,this.processedTree);return!o||e.params&&!ze(o.rawParams,e.params,!0)?!1:t?.includeSearch??!0?ze(a.search,r.search,!0)?o.rawParams:!1:o.rawParams},this.getStoreConfig=t,e.pathParamsAllowedCharacters?.length&&(this.pathParamsDecoder=We(e.pathParamsAllowedCharacters)),this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...e,caseSensitive:e.caseSensitive??!1,notFoundMode:e.notFoundMode??`fuzzy`,stringifySearch:e.stringifySearch??Ln,parseSearch:e.parseSearch??In,protocolAllowlist:e.protocolAllowlist??rt}),self.__TSR_ROUTER__=this}isShell(){return!!this.options.isShell}get state(){return this.stores.__store.get()}setRoutes(e){Object.assign(this,e),this.lightweightCache=new WeakMap,this.staticLocations=new WeakMap;let t=this.options.notFoundRoute;t&&(t.init(99999999999),this.routesById[t.id]!==t&&(t._interpolation=Gn(!1,t,0)),this.routesById[t.id]=t)}matchRoutesInternal(e,t){let[n,r,i]=this.getMatchedRoutes(e.pathname),a=n,o=!1;(i?i.path!==`/`&&r[`**`]:Ve(e.pathname))&&(this.options.notFoundRoute?a=[...a,this.options.notFoundRoute]:o=!0);let s=o?Br(this.options.notFoundMode,a):void 0,c=Array(a.length),l=this._committed,u=(e,t)=>{let n=l[t];return n?.routeId===e.id?n:e===this.options.notFoundRoute?l.find(t=>t.routeId===e.id):void 0},d;for(let n=0;ntypeof t!=`string`&&!Pe.call(e,t[1]))}var Lr=Object.freeze({});function Rr(e,t){let n=[];for(let r=0;r{let n=t(i.preSearchFilters?i.preSearchFilters.reduce((e,t)=>t(e),e):e);return i.postSearchFilters?i.postSearchFilters.reduce((e,t)=>t(e),n):n});let a=i.validateSearch;t&&a&&n.push(({search:e,next:t,meta:n})=>{let r=t(e);try{let e=Pr(a,r);if(n&&e)for(let t in e)t in r||(n.defaulted||=new Map).set(t,e[t]);return{...r,...e}}catch{}return r})}return n}function zr(e,t,n){let r=(t,i,a)=>{if(t>=e.length){if(!n.search)return{};if(n.search===!0)return i;let e=it(n.search,i);return a&&(a.explicit=e),e}return e[t]({search:i,next:(e,n)=>{if(n){let n=a||{};return{search:r(t+1,e,n),meta:n}}return r(t+1,e,a)},meta:a})};return r(0,t)}function Br(e,t){if(e!==`root`){let e;for(let n=t.length-1;n>=0;n--){let r=t[n];if(r.options.notFoundComponent)return r.id;e||=r.children&&r.id}if(e)return e}return Et}function Vr(e,t){let n=e.options.params?.parse??e.options.parseParams;n&&Object.assign(t,n(t))}function Hr(e,t){return e.options[t]?.preload?.()}function Ur(e,t){let n=Hr(e,`component`),r=Hr(e,`pendingComponent`);return t&&(r?r=r.then(t):t()),n&&r?Promise.all([n,r]).then(()=>{}):n??r}function Wr(e,t,n){let r=()=>t===!1?void 0:t?Hr(e,t):Ur(e,n),i=e._lazy;if(i)return i===!0?r():i.then(r);if(!e.lazyFn)return r();let a=e.lazyFn().then(t=>{{let{id:n,...r}=t.options;Object.assign(e.options,r),e._lazy=!0}},t=>{throw e._lazy=void 0,t});return e._lazy=a,a.then(r)}function Gr(e){let t=e.findIndex(e=>e.status!==`success`||e._notFound)+1;return t&&t{let i=()=>r(t);t.addEventListener(`abort`,i,{once:!0}),Promise.resolve(e).then(n,r).then(()=>t.removeEventListener(`abort`,i))})}function $r(e,t){return e.routesById[t.routeId]}function ei(e,t,n){return st(e)?[Yr,e]:vn(e)?(e.routeId||=n,[Jr,e]):t?(typeof e?.then==`function`&&(e=Error(`A Promise was thrown`,{cause:e})),[qr,e]):[Kr,e]}function ti(e,t){let n=ei(t,!0,e.id);if(n[0]!==qr)return n;try{e.options.onError?.(n[1])}catch(t){n=ei(t,!0,e.id)}return n}function ni(e,t,n,r,i){return i[0].signal.aborted?Xr:vi(e,t,n,ti(n,r),i)}async function ri(e,t,n,r,i,a){let[o,s]=t,c=n[0].signal,l=!!n[3];for(let i=n[6]??0;ie.navigate({...t,_fromLocation:o}),buildLocation:e.buildLocation,cause:l?`preload`:r.cause,abortController:n[0],preload:l,matches:s,routeId:u.id};try{let e=r._ctx||=u.options.context?u.options.context({...f,deps:r.loaderDeps,context:d})||{}:void 0;r.context={...d,...e}}catch(a){return ai(e,r),[i,ni(e,t,u,a,n)]}if(c.aborted)return[i,Xr];let p=r.paramsError??r.searchError;if(p!==void 0)return ai(e,r),[i,ni(e,t,u,p,n)];let m=u.options.beforeLoad;if(!m)continue;let h=r.status;i>=a&&(r.status=`pending`,n[7]?.());try{ci(e,r,`beforeLoad`,n[0]);let a=m({...f,search:r.search,context:r.context,...e.options.additionalContext}),o=await(typeof a?.then==`function`?Qr(a,c):a);if(c.aborted)return[i,Xr];let s=vi(e,t,u,ei(o,!1,u.id),n);if(s[0]!==Kr)return ai(e,r),[i,s];r.context={...r.context,...o}}catch(a){return ai(e,r),[i,ni(e,t,u,a,n)]}finally{r.status=h,ci(e,r,!1,n[0])}}i()}function ii(e,t,n){if(!(!n||--n[2])){if(e._flights?.get(t.id)===n){let n=e._tx;if(n&&!n[0].signal.aborted&&!n[3].includes(t)&&n[3].some(e=>e.id===t.id)&&n[3].some(e=>e.isFetching===`beforeLoad`))return;e._flights.delete(t.id)}return n[1]}}function ai(e,t){let n=t._flight;t._flight=void 0,ii(e,t,n)?.abort()}function oi(e,t,n,r){let i=[];for(let a of t)if(!n?.includes(a)){let t=a._flight;if(a._flight=void 0,r&&t?.[2]===1&&e._flights?.get(a.id)===t&&n?.some(e=>e.id===a.id))t[2]=0;else{let n=ii(e,a,t);n&&i.push(n)}}for(let e of i)e.abort()}function si(e){for(let t of e){let e=t._flight;e&&e[2]++}}function ci(e,t,n,r){if(t.isFetching=n,r&&e._tx?.[0]!==r)return;let i=e.stores.byRoute.get(t.routeId),a=i?.get();a?.id===t.id&&i.set({...a,isFetching:n})}function li(e,t,n,r,i,a,o){let s=t[0];return{params:n.params,location:s,navigate:t=>e.navigate({...t,_fromLocation:s}),cause:o?`preload`:n.cause,abortController:i,preload:o,deps:n.loaderDeps,parentMatchPromise:a,context:n.context,route:r,...e.options.additionalContext}}async function ui(e,t,n,r,i,a,o){let s=o[0],c=s.signal;if(c.aborted)return Xr;if(!i)return[Kr,void 0];let l=n._flight;ci(e,n,`loader`,s);try{if(!l){let s=new AbortController;l=[Promise.resolve().then(()=>i(li(e,t,n,r,s,a,!!o[3]))).then(e=>ei(e,!1,r.id),e=>ei(e,!0,r.id)).then(t=>(t[0]!==Kr&&e._flights?.get(n.id)===l&&(e._flights.delete(n.id),l[2]||s.abort()),t[0]===qr&&l[2]?ti(r,t[1]):t)),s,1],(e._flights??=new Map).set(n.id,l)}return n._flight=l,n.abortController=l[1],vi(e,t,r,await Qr(l[0],c),o)}catch(t){if(t!==c||!c.aborted)throw t;return ai(e,n),Xr}finally{ci(e,n,!1,s)}}function di(e,t,n){t[0]!==Yr&&(e.status=`success`,e.error=void 0,t[0]===Kr?(e.loaderData=t[1],e.invalid=!1,e.updatedAt=Date.now(),e.preload=n):e.invalid=!0)}function fi(e,t,n){let r=e._cache.get(t.id);if(r!==n||e._committed.some(e=>e.id===t.id&&e._flight===t._flight))return;let i={...t,_notFound:void 0,context:{}};i._flight&&i._flight[2]++,e._cache.set(t.id,i),r&&ai(e,r)}function pi(e,t){return t[0]===qr||t[0]===Jr?{...e,status:t[0]===qr?`error`:`notFound`,error:t[1],_flight:void 0}:e}function mi(e,t,n,r,i,a,o){let s=t[1][n],c=$r(e,s),l=!!a[3],u=e._cache.get(s.id),d,f=!1,p;try{if(s.status===`success`&&(d=c.options.shouldReload,typeof d==`function`&&(d=d(li(e,t,s,c,a[0],i,l))),a[0].signal.aborted&&(p=Xr)),!p){if(s.status!==`success`)f=!0;else{let t=l||s.preload?c.options.preloadStaleTime??e.options.defaultPreloadStaleTime??3e4:c.options.staleTime??e.options.defaultStaleTime??0;f=!!(s.invalid||d||d===void 0&&Date.now()-s.updatedAt>=t&&(a[5]||s.cause===`enter`||a[2].some(e=>e.routeId===s.routeId&&e.id!==s.id)))}}}catch(n){s.invalid=!0,ai(e,s),p=ni(e,t,c,n,a)}let m=c.options.loader,h=typeof m==`function`,g=h?m:m?.handler,_=!l||c.options.preload!==!1,v=_&&m?e._flights?.get(s.id):void 0;v===s._flight||p?v=void 0:v&&!f&&!l&&d===void 0?f=!0:f||(v=void 0);let y=!(!m||!f||s.status!==`success`||l||a[4]||((h?void 0:m.staleReloadMode)??e.options.defaultStaleReloadMode)===`blocking`),b=f&&_,ee=b&&!y&&(s.status!==`success`||!!m),te=n>=o?a[7]:void 0,x=c.lazyFn&&c._lazy!==!0?te:void 0;if(b&&!m&&(s.invalid=!1,s.updatedAt=Date.now()),v&&v[2]++,ee){let t=s._flight;s._flight=v,ii(e,s,t)?.abort(),n>=o&&(s.status=`pending`),te?.()}b||(s.isFetching=!1);let S=!p&&ee?ui(e,t,s,c,g,i,a).then(t=>(di(s,t,l),t[0]===Kr&&(m&&!a[0].signal.aborted&&fi(e,s,u),n>=o&&(s.status=`pending`)),t)):Promise.resolve(p??[Kr,s.loaderData]),ne=(async()=>{try{let e=Wr(c,void 0,x);e&&await Qr(e,a[0].signal)}catch(r){if(!t[1].some((e,t)=>t<=n&&(e.status===`error`||e.status===`notFound`||e._notFound)))return[n,ni(e,t,c,r,a)]}let r=await S;ee&&r[0]===Kr&&s.status===`pending`&&!a[0].signal.aborted&&(s.status=`success`,te?.())})();if(r.push([n,S,ne]),!y)return S.then(e=>pi(s,e));let re={...s,status:`pending`,preload:!1,_flight:v};s.invalid=!1,s.isFetching=`loader`;let ie=ui(e,t,re,c,g,i,a).then(e=>(s.isFetching=!1,di(re,e,!1),e));return(t[2]??=[]).push([n,ie,ne,re]),ie.then(e=>pi(re,e))}async function hi(e,t,n,r,i=0){let a=n?.[1][1],o=a?.routeId?t.findIndex(e=>e.routeId===a.routeId):n?.[0]??t.length-1;o<0&&(o=0);for(let n=o;n>=0;n--){let i=$r(e,t[n]);try{let e=Wr(i,!1);e&&await Qr(e,r)}catch(e){if(e===r&&r.aborted)throw e}if(i.options.notFoundComponent)return n}return a?.routeId?o:i}function gi(e,t){t[2]&&=(oi(e,t[2].map(e=>e[3])),void 0)}async function _i(e,t,n,r){let i;try{await Promise.all(e.map(e=>e[1].then(async t=>{let a=e[0];if(!(r&&a>=await r)){if(t[0]>=Yr)throw[a,t];!i&&t[0]!==Kr&&(i=[a,t],await Promise.all((n??[]).map(e=>{if(!(e[0]<=a))return e[1].then(t=>{if(t[0]===Yr)throw[e[0],t]})})))}})))}catch(e){return e}return t??i}function vi(e,t,n,r,i,a){for(;r[0]===Yr;){let o=r[1],s=o.options;try{if((s.href||o.headers.has(`Location`))&&(e.resolveRedirect(o),s.reloadDocument)||(s.reloadDocument?i[3]:i[1]>=20))return r;let n=e.buildLocation({...s,_fromLocation:t[0],_includeValidateSearch:!0}),a=n.maskedLocation??n;if(a.external){let t=o.clone();return t.options={...s},t.headers.set(`Location`,a.publicHref),e.resolveRedirect(t),i[3]?[Yr,t]:[Yr,t,a]}return[Yr,o,n]}catch(e){r=a?[qr,e]:ti(n,e),a=!0}}return r}async function yi(e,t,n,r,i,a){let o=t[1],s=await i,c=!1,l=o.findIndex(e=>e._notFound),u=t=>t[1][0]===Jr?hi(e,o,t,r.signal):t[0],d=l<0?o.length:l;if((s?.[1][0]??0)>=Yr)d=0;else if(s){d=s[2]??=await u(s);for(let e of n){if(e[0]>=d)break;let t=await e[1];if(t[0]!==Kr&&t[0]=d)break;let t=await e[2];if(t){s=t;break}}if((s?.[1][0]??0)>=Yr){let n=s[1];if(n[0]!==Yr||n[1].options.reloadDocument||n[2])return gi(e,t),n;c=!0,s=[0,[qr,Error(`Too many redirects`)]]}let f=s?s[2]??await u(s):l;if(f>=0){let i=s?.[1],l=i?.[0],u=o[f],d=i?.[1],p=()=>{i&&(u._notFound=void 0,l===qr?u.status=`error`:(d.routeId=u.routeId,u.routeId===e.routeTree.id?(u.status=`success`,u._notFound=!0):u.status=`notFound`),u.error=d,u.isFetching=!1)};p(),i||a?.();let m=$r(e,u);try{await Qr(i?Promise.resolve().then(()=>Wr(m,l===qr?`errorComponent`:`notFoundComponent`)):Promise.all([Wr(m),Wr(m,`notFoundComponent`)]),r.signal)}catch(n){if(n===r.signal&&r.signal.aborted)return gi(e,t),Xr}i?c&&(r.abort(),await Promise.all([...n.map(e=>e[1]),...n.map(e=>e[2]),...(t[2]??[]).map(e=>e[1])]),gi(e,t),oi(e,o),p()):u.status=`success`}return t}async function bi(e,t,n,r=0,i=t[1].length){let a=t[1];for(let t=r;te._notFound);if(e.options.notFoundMode!==`root`&&s>=0){let t=await hi(e,n,void 0,a,s);n[s]._notFound=void 0,n[t]._notFound=!0,s=t}let c=s<0?n.length:s+1,l=0;for(;l{for(let t=d;t=Yr&&(c=0);p()}if(!a.aborted&&!r[3]){let t=[];for(let[n,r]of e._flights??[])r[2]||(e._flights.delete(n),t.push(r[1]));for(let e of t)e.abort()}let h=yi(e,i,u,r[0],_i(u,m,i[2]),r[7]);i[2]?.length&&(i[3]=_i(i[2],void 0,void 0,h.then(e=>Zr(e)?0:Gr(n).length,()=>0))),o=await h}catch(t){if(gi(e,i),t===a&&a.aborted)return Xr;throw t}return Zr(o)?o:bi(e,o,a,r[6]===n.length?r[6]:0)}function Si(e,t){if(e._tx!==t)return;let n=t[3],r=e.stores.matches.get(),i=e._pending;for(let a=0;a0){i[3]=setTimeout(()=>Si(e,t),n);return}i[2]=0}let m=n.map(e=>({...e,_flight:void 0}));m[a].status=`pending`;let h=i[4]=e.startTransition(()=>e.stores.setMatches(m),m).then(t=>(t&&e._pending===i&&i[4]===h&&!i[2]&&(i[2]=Date.now()+f),t));return}}function Ci(e,t){let n=e._pending;(e._tx===t||!e._tx?.[3].some(e=>e.id===n?.[1]))&&(clearTimeout(n?.[3]),e._pending=void 0)}async function wi(e,t){let n=e._pending;if(!n)return;clearTimeout(n[3]);let r=n[2]-Date.now();if(!n[4]||r<=0||!Gr(t[3]).some(e=>e.id===n[1]))return;let i;try{await Qr(new Promise(e=>{i=setTimeout(e,r)}),t[0].signal)}catch{}clearTimeout(i)}function Ti(e,t){e._committed=t,e.stores.setMatches(t)}function Ei(e,t,n,r){let i=e._committed,a=e._lifecycleEnd,o=e._cache;for(let e of n)e.preload=!1,r&&(e._assetEnd=void 0);let s=Gr(n).length,c=new Map;{let t=Date.now(),r=new Set;for(let e=0;e=(n.preload?i.options.preloadGcTime??e.options.defaultPreloadGcTime??3e5:i.options.gcTime??e.options.defaultGcTime??3e5)||c.set(n.id,o.get(n.id)===n?n:{...n,_flight:void 0,isFetching:!1,context:{}})}}t[3]=[],e._cache=c;let l=e._lifecycleEnd=Or(n);Ti(e,n),oi(e,[...o.values(),...i].filter(e=>e._flight&&c.get(e.id)!==e),n),kr(e,i,n,a,l,t)}async function Di(e,t){let n=e._tx;for(;n&&n!==t;)t=n,await n[5],n=e._tx}function Oi(e,t,n){let r=n[1].options,i=n[2];if(!i)return e.navigate({...r,replace:!0,ignoreBlocker:!0});if(r.reloadDocument)return e.navigate({href:(i.maskedLocation??i).publicHref,reloadDocument:!0,replace:!0,ignoreBlocker:!0});i._redirects=t[1]+1,e._pendingLocation=i;let a=e.commitLocation({...i,viewTransition:r.viewTransition,replace:!0,resetScroll:r.resetScroll,hashScrollIntoView:r.hashScrollIntoView,ignoreBlocker:!0});return queueMicrotask(()=>{e._pendingLocation===i&&(e._pendingLocation=void 0)}),a}async function ki(e,t,n,r,i){let a=n.map(e=>({...e}));si(a);for(let t of r)ai(e,a[t[0]]),a[t[0]]=t[3];let o=[t[2],a],s;try{s=await yi(e,o,r,t[0],i)}catch(t){throw oi(e,a),t}if(Zr(s)){oi(e,a),s[0]===Yr&&e._tx===t&&e._committed===n&&await Oi(e,t,s);return}if(await bi(e,s,t[0].signal),e._tx!==t||e._committed!==n){oi(e,a);return}for(let t of a){let n=e._cache.get(t.id);n?._flight&&n._flight===t._flight&&(e._cache.delete(t.id),ai(e,n))}Ti(e,a),oi(e,n,a)}async function Ai(e,t,n,r,i,a){let o=await xi(e,t[2],t[3],[t[0],t[1],e._committed,void 0,i,n,a,r]);if(Zr(o)){let n=o[0]===Yr&&e._tx===t;if((!n||o[1].options.reloadDocument)&&Ci(e,t),oi(e,t[3]),t[3]=[],!n)return;if(e._tx!==t){Ci(e,t);return}await Oi(e,t,o);return}let s=o[1];if(e._tx===t&&await wi(e,t),e._tx!==t){Ci(e,t),oi(e,s),gi(e,o);return}let c=t[2],l=Er(c,e.stores.resolvedLocation.get()),u=o[2];await e.startViewTransition(async()=>{if(e._tx===t&&await wi(e,t),e._tx!==t){Ci(e,t),oi(e,s),gi(e,o);return}let n=await e.startTransition(()=>{Ci(e,t),Ei(e,t,s,a),e._tx===t&&(e.emit({type:`onLoad`,...l}),e._tx===t&&e.emit({type:`onBeforeRouteMount`,...l}))},s);if(e._tx!==t){gi(e,o);return}u?.length&&ki(e,t,s,u,o[3]).catch(console.error),e.batch(()=>{e.stores.resolvedLocation.set(c),e.stores.status.set(`idle`),e._tx===t&&e.emit({type:`onResolved`,...l}),n&&e._tx===t&&e.emit({type:`onRendered`,...l})}),e._tx===t&&(e._commitPromise?.resolve(),e._commitPromise=void 0)})}async function ji(e,t){let n=e._tx,r=e.stores.resolvedLocation.get(),i=r??e.stores.location.get(),a=e.latestLocation,o=e._pendingLocation,s=o?.href===a.href?o._redirects??0:0,c=e._handoff,l=c?.[0](),u=new AbortController,d=e._preflight;if(e._preflight=u,l||c?.[1](),d?.abort(),!u.signal.aborted){let t=Er(a,r);e.emit({type:`onBeforeNavigate`,...t}),u.signal.aborted||e.emit({type:`onBeforeLoad`,...t})}if(u.signal.aborted){await Di(e,n);return}let f=i.href===a.href,p=u,m=e.matchRoutes(a,{_controller:u});si(m);let h=l?c[1](m):void 0;if(h?p=l:l?.abort(),u.signal.aborted){oi(e,m),await Di(e,n);return}e._preflight=void 0;let g,_=()=>Ai(e,y,f,()=>Si(e,y),t?.sync,h),v=t?.sync?new Promise(e=>g=e):Promise.resolve().then(_),y=[p,s,a,m,Date.now(),v.then(()=>Di(e,y))];if(e._tx=y,n){for(let t of e.stores.matches.get()){if(e._tx!==y)break;t.isFetching&&ci(e,t,!1)}n[0].abort(),oi(e,n[3],y[3],!0)}if(e._tx!==y){oi(e,y[3]),y[3]=[],g?.(),await Di(e,y);return}e.batch(()=>{e.stores.status.set(`pending`),e.stores.location.set(a)}),(h||!e._committed.length&&m[0]?.status!==`success`&&!m.some(e=>e._notFound))&&Si(e,y),g?.(_()),await y[5]}async function Mi(e,t){let n=e.buildLocation(t);for(let t=0;;t++){let r=e._committed,i=new AbortController,a,o,s;try{try{a=e.matchRoutes(n,{_controller:i}),si(a),o=(e._preloads??=new Map).set(i,a),s=await xi(e,n,a,[i,t,r,!0])}finally{o&&(o=o.delete(i),oi(e,a)),i.abort()}if(!Zr(s))return s[1];if(!o||s.length<3)return;n=s[2]}catch(e){vn(e)||console.error(e);return}}}var E=h(we(),1),D=te(),Ni=class extends E.Component{constructor(...e){super(...e),this.state={error:0},this.reset=()=>{this.setState({error:0})}}static getDerivedStateFromProps(e,t){let n=e.getResetKey();return t.error&&t.resetKey!==n?{resetKey:n,error:0}:{resetKey:n}}static getDerivedStateFromError(e){return{error:[e]}}componentDidCatch(e,t){this.props.onCatch?.(e,t)}render(){let e=this.state.error;return e?E.createElement(this.props.errorComponent??Pi,{error:e[0],reset:this.reset}):this.props.children}};function Pi({error:e}){let[t,n]=E.useState(!1);return(0,D.jsxs)(`div`,{style:{padding:`.5rem`,maxWidth:`100%`},children:[(0,D.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`.5rem`},children:[(0,D.jsx)(`strong`,{style:{fontSize:`1rem`},children:`Something went wrong!`}),(0,D.jsx)(`button`,{style:{appearance:`none`,fontSize:`.6em`,border:`1px solid currentColor`,padding:`.1rem .2rem`,fontWeight:`bold`,borderRadius:`.25rem`},onClick:()=>n(e=>!e),children:t?`Hide Error`:`Show Error`})]}),(0,D.jsx)(`div`,{style:{height:`.25rem`}}),t?(0,D.jsx)(`div`,{children:(0,D.jsx)(`pre`,{style:{fontSize:`.7em`,border:`1px solid red`,borderRadius:`.25rem`,padding:`.3rem`,color:`red`,overflow:`auto`},children:e?.message?(0,D.jsx)(`code`,{children:e.message}):null})}):null]})}function Fi(e){let t=le(),n=`not-found-${Je(t.stores.location,e=>e.pathname)}-${Je(t.stores.status)}`;return(0,D.jsx)(Ni,{getResetKey:()=>n,onCatch:(t,n)=>{if(vn(t))e.onCatch?.(t,n);else throw t},errorComponent:({error:t})=>{if(vn(t))return e.fallback?.(t);throw t},children:e.children})}function Ii(){return(0,D.jsx)(`p`,{children:`Not Found`})}function Li(e,t,n){return t.options.notFoundComponent?(0,D.jsx)(t.options.notFoundComponent,{...n}):e.options.defaultNotFoundComponent?(0,D.jsx)(e.options.defaultNotFoundComponent,{...n}):(0,D.jsx)(Ii,{})}function Ri(e,t){let n=t?.options.pendingComponent??e.options.defaultPendingComponent;return n?(0,D.jsx)(n,{}):null}var zi=(e,t)=>e[0]===t[0]&&e[1]===t[1],Bi=(e,t,n)=>!t.isRoot||t.options.shellComponent||t.options.wrapInSuspense||n===!1||n===`data-only`||!e.ssr,Vi=E.memo(function({routeId:e}){let t=le();return(0,D.jsx)(Hi,{router:t,match:Je(t.stores.getMatchStore(e))})});function Hi({router:e,match:t}){let n=e.routesById[t.routeId],r=Ri(e,n),i=n.options.errorComponent??e.options.defaultErrorComponent,a=n.options.onCatch??e.options.defaultOnCatch,o=n.isRoot?n.options.notFoundComponent??e.options.notFoundRoute?.options.component:n.options.notFoundComponent,s=t.ssr===!1||t.ssr===`data-only`,c=Bi(e,n,t.ssr)&&(n.options.wrapInSuspense??r??(n.options.errorComponent?.preload||s)),l=(0,D.jsx)(Ui,{match:t});s&&(l=(0,D.jsx)(nt,{fallback:r,children:l})),o&&(l=(0,D.jsx)(Fi,{fallback:e=>{if(e.routeId??=t.routeId,e.routeId!==t.routeId)throw e;return E.createElement(o,e)},children:l})),i&&(l=(0,D.jsx)(Ni,{getResetKey:()=>t,errorComponent:i,onCatch:(e,n)=>{if(vn(e))throw e.routeId??=t.routeId,e;a?.(e,n)},children:l})),c&&(l=(0,D.jsx)(E.Suspense,{fallback:r,children:l}));let u=n.isRoot?n.options.shellComponent:void 0;return(0,D.jsx)(vt.Provider,{value:t.routeId,children:u?(0,D.jsxs)(u,{children:[l,null]}):(0,D.jsxs)(D.Fragment,{children:[l,null]})})}var Ui=E.memo(function({match:e}){let t=le(),n=e.routeId,r=t.routesById[n],i=E.useMemo(()=>{let i=(r.options.remountDeps??t.options.defaultRemountDeps)?.({routeId:n,loaderDeps:e.loaderDeps,params:e._strictParams,search:e._strictSearch});return i?JSON.stringify(i):void 0},[n,e.loaderDeps,e._strictParams,e._strictSearch,r.options.remountDeps,t.options.defaultRemountDeps]),a=E.useMemo(()=>{let e=r.options.component??t.options.defaultComponent;return e?(0,D.jsx)(e,{},i):(0,D.jsx)(Wi,{})},[i,r.options.component,t.options.defaultComponent]);if(e.status===`pending`){if(t.ssr&&!Bi(t,r,e.ssr))return a;if(t._tx)throw t._tx[5];return Ri(t,r)}if(e.status===`notFound`)return Li(t,r,e.error);if(e.status===`error`)throw e.error;return a}),Wi=E.memo(function(){let e=le(),t=E.useContext(vt),n,r,i;{let a=e.stores.getMatchStore(t);[n,r]=Je(a,e=>[!!e._notFound,e.error],{compare:zi}),i=Je(e.stores.ids,e=>e[e.indexOf(t)+1])}if(n)return Li(e,e.routesById[t],r);if(!i)return null;let a=(0,D.jsx)(Vi,{routeId:i});return t===`__root__`?(0,D.jsx)(E.Suspense,{fallback:Ri(e),children:a}):a});function Gi(e,t){let n=e[1];e.length=0,n?.(t)}function Ki({t:e}){let t=le(),n=t._rendered??=[];return t.startTransition=(r,i)=>new Promise(a=>{Gi(n,!1),n.push(i,a),e(t),E.startTransition(r)}),w(()=>{let e=t.history.subscribe(t.load);t.updateLatestLocation();let r=t.latestLocation,i=t.buildLocation({to:r.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});if(Ve(r.publicHref)!==Ve(i.publicHref))return t.commitLocation({...i,replace:!0,ignoreBlocker:!0}),e;let a=t.stores.resolvedLocation.get();return a?.href===r.href&&a.state.__TSR_key===r.state.__TSR_key?n.push(t.stores.matches.get(),e=>{e&&t.emit({type:`onRendered`,...Er(a,a)})}):t._tx||t.load({sync:!0}).catch(console.error),e},[t,t.history]),null}function qi(){let e=le(),t=e.routesById[Et],n=Ri(e,t),r=(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(Ki,{t:E.useState()[1]}),e.ssr?(0,D.jsx)(Ji,{}):(0,D.jsx)(E.Suspense,{fallback:n,children:(0,D.jsx)(Ji,{})})]});return e.options.InnerWrap?(0,D.jsx)(e.options.InnerWrap,{children:r}):r}function Ji(){let e=le(),t=e._rendered,n=Je(e.stores.matches,e=>t[0]??e),r=n[0],i=r?.routeId;w(()=>{t[0]===n&&Gi(t,!0)},[t,n]);let a=i?(0,D.jsx)(Vi,{routeId:i}):null;return e.options.disableGlobalCatchBoundary?a:(0,D.jsx)(Ni,{getResetKey:()=>r,onCatch:void 0,children:a})}var Yi=e=>({createMutableStore:wt,createReadonlyStore:wt,batch:St}),Xi=e=>new Zi(e),Zi=class extends Ar{constructor(e){super(e,Yi)}};function Qi({router:e,children:t,...n}){Fe(n)&&e.update({...e.options,...n,context:{...e.options.context,...n.context}});let r=(0,D.jsx)(ce.Provider,{value:e,children:t});return e.options.Wrap?(0,D.jsx)(e.options.Wrap,{children:r}):r}function $i({router:e,...t}){return(0,D.jsx)(Qi,{router:e,...t,children:(0,D.jsx)(qi,{})})}function ea(e){let t=le({warn:e?.router===void 0}),n=e?.router||t;return Je(n.stores.__store,Ct(e,n))}function ta(e,t,n={leading:!1}){let[r,i]=(0,E.useState)(e),a=(0,E.useRef)(!1),o=(0,E.useRef)(null),s=(0,E.useRef)(!1),c=(0,E.useRef)(e);c.current=e;let l=(0,E.useCallback)(()=>{window.clearTimeout(o.current),o.current=null},[]),u=(0,E.useCallback)(()=>{l(),s.current=!1},[]),d=(0,E.useCallback)(()=>{o.current&&(u(),s.current=!1,i(c.current))},[]);return(0,E.useEffect)(()=>{a.current&&(l(),!s.current&&n.leading?(s.current=!0,i(e),o.current=window.setTimeout(()=>{s.current=!1},t)):o.current=window.setTimeout(()=>{s.current=!1,i(e)},t))},[e,n.leading,t]),(0,E.useEffect)(()=>(a.current=!0,u),[]),[r,u,{cancel:u,flush:d}]}function na(e=!1,t={}){let[n,r]=(0,E.useState)(e),i=(0,E.useCallback)(()=>{r(e=>e||(t.onOpen?.(),!0))},[t.onOpen]),a=(0,E.useCallback)(()=>{r(e=>e&&(t.onClose?.(),!1))},[t.onClose]);return[n,{open:i,close:a,toggle:(0,E.useCallback)(()=>{n?a():i()},[a,i,n]),set:r}]}function ra(e){return e===`auto`||e===`dark`||e===`light`}function ia({key:e=`mantine-color-scheme-value`}={}){let t;return{get:t=>{if(typeof window>`u`)return t;try{let n=window.localStorage.getItem(e);return ra(n)?n:t}catch{return t}},set:t=>{try{window.localStorage.setItem(e,t)}catch(e){console.warn(`[@mantine/core] Local storage color scheme manager was unable to save color scheme.`,e)}},subscribe:n=>{t=t=>{t.storageArea===window.localStorage&&t.key===e&&ra(t.newValue)&&n(t.newValue)},window.addEventListener(`storage`,t)},unsubscribe:()=>{window.removeEventListener(`storage`,t)},clear:()=>{window.localStorage.removeItem(e)}}}function aa(e,t){let n=typeof window<`u`&&`matchMedia`in window&&window.matchMedia(`(prefers-color-scheme: dark)`)?.matches,r=e===`auto`?n?`dark`:`light`:e;t()?.setAttribute(`data-mantine-color-scheme`,r)}function oa({manager:e,defaultColorScheme:t,getRootElement:n,forceColorScheme:r}){let i=(0,E.useRef)(null),[a,o]=(0,E.useState)(()=>e.get(t)),s=r||a,c=(0,E.useCallback)(t=>{r||(aa(t,n),o(t),e.set(t))},[e.set,s,r]),l=(0,E.useCallback)(()=>{o(t),aa(t,n),e.clear()},[e.clear,t]);return(0,E.useEffect)(()=>(e.subscribe(c),e.unsubscribe),[e.subscribe,e.unsubscribe]),pe(()=>{aa(e.get(t),n)},[]),(0,E.useEffect)(()=>{if(r)return aa(r,n),()=>{};r===void 0&&aa(a,n),typeof window<`u`&&`matchMedia`in window&&(i.current=window.matchMedia(`(prefers-color-scheme: dark)`));let e=e=>{a===`auto`&&aa(e.matches?`dark`:`light`,n)};return i.current?.addEventListener(`change`,e),()=>i.current?.removeEventListener(`change`,e)},[a,r]),{colorScheme:s,setColorScheme:c,clearColorScheme:l}}function sa(e){return Object.entries(e).map(([e,t])=>`${e}: ${t};`).join(``)}function ca(e,t){let n=t?[t]:[`:root`,`:host`],r=sa(e.variables),i=r?`${n.join(`, `)}{${r}}`:``,a=sa(e.dark),o=sa(e.light),s=e=>n.map(t=>t===`:host`?`${t}([data-mantine-color-scheme="${e}"])`:`${t}[data-mantine-color-scheme="${e}"]`).join(`, `);return`${i}\n\n${a?`${s(`dark`)}{${a}}`:``}\n\n${o?`${s(`light`)}{${o}}`:``}`}function la({theme:e,color:t,colorScheme:n,name:r=t,withColorValues:i=!0}){if(!e.colors[t])return{};if(n===`light`){let n=s(e,`light`),o={[`--mantine-color-${r}-text`]:`var(--mantine-color-${r}-filled)`,[`--mantine-color-${r}-filled`]:`var(--mantine-color-${r}-${n})`,[`--mantine-color-${r}-filled-hover`]:`var(--mantine-color-${r}-${n===9?8:n+1})`,[`--mantine-color-${r}-light`]:`var(--mantine-color-${r}-1)`,[`--mantine-color-${r}-light-hover`]:`var(--mantine-color-${r}-2)`,[`--mantine-color-${r}-light-color`]:`var(--mantine-color-${r}-9)`,[`--mantine-color-${r}-outline`]:`var(--mantine-color-${r}-${n})`,[`--mantine-color-${r}-outline-hover`]:a(e.colors[t][n],.05)};return i?{[`--mantine-color-${r}-0`]:e.colors[t][0],[`--mantine-color-${r}-1`]:e.colors[t][1],[`--mantine-color-${r}-2`]:e.colors[t][2],[`--mantine-color-${r}-3`]:e.colors[t][3],[`--mantine-color-${r}-4`]:e.colors[t][4],[`--mantine-color-${r}-5`]:e.colors[t][5],[`--mantine-color-${r}-6`]:e.colors[t][6],[`--mantine-color-${r}-7`]:e.colors[t][7],[`--mantine-color-${r}-8`]:e.colors[t][8],[`--mantine-color-${r}-9`]:e.colors[t][9],...o}:o}let o=s(e,`dark`),c={[`--mantine-color-${r}-text`]:`var(--mantine-color-${r}-4)`,[`--mantine-color-${r}-filled`]:`var(--mantine-color-${r}-${o})`,[`--mantine-color-${r}-filled-hover`]:`var(--mantine-color-${r}-${o===9?8:o+1})`,[`--mantine-color-${r}-light`]:v(e.colors[t][9],.5),[`--mantine-color-${r}-light-hover`]:v(e.colors[t][9],.3),[`--mantine-color-${r}-light-color`]:`var(--mantine-color-${r}-0)`,[`--mantine-color-${r}-outline`]:`var(--mantine-color-${r}-${Math.max(o-4,0)})`,[`--mantine-color-${r}-outline-hover`]:a(e.colors[t][Math.max(o-4,0)],.05)};return i?{[`--mantine-color-${r}-0`]:e.colors[t][0],[`--mantine-color-${r}-1`]:e.colors[t][1],[`--mantine-color-${r}-2`]:e.colors[t][2],[`--mantine-color-${r}-3`]:e.colors[t][3],[`--mantine-color-${r}-4`]:e.colors[t][4],[`--mantine-color-${r}-5`]:e.colors[t][5],[`--mantine-color-${r}-6`]:e.colors[t][6],[`--mantine-color-${r}-7`]:e.colors[t][7],[`--mantine-color-${r}-8`]:e.colors[t][8],[`--mantine-color-${r}-9`]:e.colors[t][9],...c}:c}function ua(e,t,n){fe(t).forEach(r=>Object.assign(e,{[`--mantine-${n}-${r}`]:t[r]}))}var da=e=>{let t=s(e,`light`),n=e.defaultRadius in e.radius?e.radius[e.defaultRadius]:C(e.defaultRadius),r={variables:{"--mantine-z-index-app":`100`,"--mantine-z-index-modal":`200`,"--mantine-z-index-popover":`300`,"--mantine-z-index-overlay":`400`,"--mantine-z-index-max":`9999`,"--mantine-scale":e.scale.toString(),"--mantine-cursor-type":e.cursorType,"--mantine-webkit-font-smoothing":e.fontSmoothing?`antialiased`:`unset`,"--mantine-moz-font-smoothing":e.fontSmoothing?`grayscale`:`unset`,"--mantine-color-white":e.white,"--mantine-color-black":e.black,"--mantine-line-height":e.lineHeights.md,"--mantine-font-family":e.fontFamily,"--mantine-font-family-monospace":e.fontFamilyMonospace,"--mantine-font-family-headings":e.headings.fontFamily,"--mantine-heading-font-weight":e.headings.fontWeight,"--mantine-heading-text-wrap":e.headings.textWrap,"--mantine-radius-default":n,"--mantine-primary-color-filled":`var(--mantine-color-${e.primaryColor}-filled)`,"--mantine-primary-color-filled-hover":`var(--mantine-color-${e.primaryColor}-filled-hover)`,"--mantine-primary-color-light":`var(--mantine-color-${e.primaryColor}-light)`,"--mantine-primary-color-light-hover":`var(--mantine-color-${e.primaryColor}-light-hover)`,"--mantine-primary-color-light-color":`var(--mantine-color-${e.primaryColor}-light-color)`},light:{"--mantine-color-scheme":`light`,"--mantine-primary-color-contrast":ct(e,`light`),"--mantine-color-bright":`var(--mantine-color-black)`,"--mantine-color-text":e.black,"--mantine-color-body":e.white,"--mantine-color-error":`var(--mantine-color-red-6)`,"--mantine-color-success":`var(--mantine-color-teal-8)`,"--mantine-color-placeholder":`var(--mantine-color-gray-5)`,"--mantine-color-anchor":`var(--mantine-color-${e.primaryColor}-${t})`,"--mantine-color-default":`var(--mantine-color-white)`,"--mantine-color-default-hover":`var(--mantine-color-gray-0)`,"--mantine-color-default-color":`var(--mantine-color-black)`,"--mantine-color-default-border":`var(--mantine-color-gray-4)`,"--mantine-color-dimmed":`var(--mantine-color-gray-6)`,"--mantine-color-disabled":`var(--mantine-color-gray-2)`,"--mantine-color-disabled-color":`var(--mantine-color-gray-5)`,"--mantine-color-disabled-border":`var(--mantine-color-gray-3)`},dark:{"--mantine-color-scheme":`dark`,"--mantine-primary-color-contrast":ct(e,`dark`),"--mantine-color-bright":`var(--mantine-color-white)`,"--mantine-color-text":`var(--mantine-color-dark-0)`,"--mantine-color-body":`var(--mantine-color-dark-7)`,"--mantine-color-error":`var(--mantine-color-red-8)`,"--mantine-color-success":`var(--mantine-color-teal-8)`,"--mantine-color-placeholder":`var(--mantine-color-dark-3)`,"--mantine-color-anchor":`var(--mantine-color-${e.primaryColor}-4)`,"--mantine-color-default":`var(--mantine-color-dark-6)`,"--mantine-color-default-hover":`var(--mantine-color-dark-5)`,"--mantine-color-default-color":`var(--mantine-color-white)`,"--mantine-color-default-border":`var(--mantine-color-dark-4)`,"--mantine-color-dimmed":`var(--mantine-color-dark-2)`,"--mantine-color-disabled":`var(--mantine-color-dark-6)`,"--mantine-color-disabled-color":`var(--mantine-color-dark-3)`,"--mantine-color-disabled-border":`var(--mantine-color-dark-4)`}};ua(r.variables,e.breakpoints,`breakpoint`),ua(r.variables,e.spacing,`spacing`),ua(r.variables,e.fontSizes,`font-size`),ua(r.variables,e.lineHeights,`line-height`),ua(r.variables,e.shadows,`shadow`),ua(r.variables,e.radius,`radius`),ua(r.variables,e.fontWeights,`font-weight`),e.colors[e.primaryColor].forEach((t,n)=>{r.variables[`--mantine-primary-color-${n}`]=`var(--mantine-color-${e.primaryColor}-${n})`}),fe(e.colors).forEach(t=>{let n=e.colors[t];if(i(n)){Object.assign(r.light,la({theme:e,name:n.name,color:n.light,colorScheme:`light`,withColorValues:!0})),Object.assign(r.dark,la({theme:e,name:n.name,color:n.dark,colorScheme:`dark`,withColorValues:!0})),r.light[`--mantine-color-${n.name}-contrast`]=bt(n,e,`light`),r.dark[`--mantine-color-${n.name}-contrast`]=bt(n,e,`dark`);return}n.forEach((e,n)=>{r.variables[`--mantine-color-${t}-${n}`]=e}),Object.assign(r.light,la({theme:e,color:t,colorScheme:`light`,withColorValues:!1})),Object.assign(r.dark,la({theme:e,color:t,colorScheme:`dark`,withColorValues:!1}))});let a=e.headings.sizes;return fe(a).forEach(t=>{r.variables[`--mantine-${t}-font-size`]=a[t].fontSize,r.variables[`--mantine-${t}-line-height`]=a[t].lineHeight,r.variables[`--mantine-${t}-font-weight`]=a[t].fontWeight||e.headings.fontWeight}),r};function fa(){let e=f(),n=t(),r=fe(e.breakpoints).reduce((t,n)=>{let r=e.breakpoints[n].includes(`px`),i=xt(e.breakpoints[n]);return`${t}@media (max-width: ${r?`${i-.1}px`:ae(i-.1)}) {.mantine-visible-from-${n} {display: none !important;}}@media (min-width: ${r?`${i}px`:ae(i)}) {.mantine-hidden-from-${n} {display: none !important;}}`},``);return(0,D.jsx)(`style`,{"data-mantine-styles":`classes`,nonce:n?.(),dangerouslySetInnerHTML:{__html:r}})}function pa({theme:e,generator:t}){let n=da(e),r=t?.(e);return r?ge(n,r):n}var ma=da(r);function ha(e){let t={variables:{},light:{},dark:{}};return fe(e.variables).forEach(n=>{ma.variables[n]!==e.variables[n]&&(t.variables[n]=e.variables[n])}),fe(e.light).forEach(n=>{ma.light[n]!==e.light[n]&&(t.light[n]=e.light[n])}),fe(e.dark).forEach(n=>{ma.dark[n]!==e.dark[n]&&(t.dark[n]=e.dark[n])}),t}function ga(e){return ca({variables:{},dark:{"--mantine-color-scheme":`dark`},light:{"--mantine-color-scheme":`light`}},e)}function O({cssVariablesSelector:e,deduplicateCssVariables:n}){let r=f(),i=t(),a=pa({theme:r,generator:p()}),o=(e===void 0||e===`:root`||e===`:host`)&&n,s=ca(o?ha(a):a,e);return s?(0,D.jsx)(`style`,{"data-mantine-styles":!0,nonce:i?.(),dangerouslySetInnerHTML:{__html:`${s}${o?``:ga(e)}`}}):null}O.displayName=`@mantine/CssVariables`;function _a({respectReducedMotion:e,getRootElement:t}){pe(()=>{e&&t()?.setAttribute(`data-respect-reduced-motion`,`true`)},[e])}function va({theme:e,children:t,getStyleNonce:n,withStaticClasses:r=!0,withGlobalClasses:i=!0,deduplicateCssVariables:a=!0,withCssVariables:s=!0,cssVariablesSelector:c,classNamesPrefix:l=`mantine`,colorSchemeManager:u=ia(),defaultColorScheme:f=`light`,getRootElement:p=()=>document.documentElement,cssVariablesResolver:m,forceColorScheme:h,stylesTransform:g,env:_,deduplicateInlineStyles:v=!1}){let{colorScheme:y,setColorScheme:b,clearColorScheme:ee}=oa({defaultColorScheme:f,forceColorScheme:h,manager:u,getRootElement:p});return _a({respectReducedMotion:e?.respectReducedMotion||!1,getRootElement:p}),(0,D.jsx)(o,{value:{colorScheme:y,setColorScheme:b,clearColorScheme:ee,getRootElement:p,classNamesPrefix:l,getStyleNonce:n,cssVariablesResolver:m,cssVariablesSelector:c??`:root`,withStaticClasses:r,stylesTransform:g,env:_,deduplicateInlineStyles:v},children:(0,D.jsxs)(d,{theme:e,children:[s&&(0,D.jsx)(O,{cssVariablesSelector:c,deduplicateCssVariables:a}),i&&(0,D.jsx)(fa,{}),t]})})}va.displayName=`@mantine/core/MantineProvider`;function ya(e){return e}var[ba,xa]=It(`AppShell was not found in tree`),Sa={root:`m_89ab340`,navbar:`m_45252eee`,aside:`m_9cdde9a`,header:`m_3b16f56b`,main:`m_8983817`,footer:`m_3840c879`,section:`m_6dcfc7c7`},Ca=g(e=>{let{classNames:t,className:r,style:i,styles:a,unstyled:o,vars:s,withBorder:c,zIndex:l,mod:d,...f}=u(`AppShellAside`,null,e),p=xa();return p.disabled?null:(0,D.jsx)(n,{component:`aside`,mod:[{"with-border":c??p.withBorder},d],...p.getStyles(`aside`,{className:b({[Wt.classNames.zeroRight]:p.offsetScrollbars},r),classNames:t,styles:a,style:i}),...f,__vars:{"--app-shell-aside-z-index":`calc(${l??p.zIndex} + 1)`}})});Ca.classes=Sa,Ca.displayName=`@mantine/core/AppShellAside`;var wa=g(e=>{let{classNames:t,className:r,style:i,styles:a,unstyled:o,vars:s,withBorder:c,zIndex:l,mod:d,...f}=u(`AppShellFooter`,null,e),p=xa();return p.disabled?null:(0,D.jsx)(n,{component:`footer`,mod:[{"with-border":c??p.withBorder},d],...p.getStyles(`footer`,{className:b({[Wt.classNames.zeroRight]:p.offsetScrollbars},r),classNames:t,styles:a,style:i}),...f,__vars:{"--app-shell-footer-z-index":(l??p.zIndex)?.toString()}})});wa.classes=Sa,wa.displayName=`@mantine/core/AppShellFooter`;var Ta=g(e=>{let{classNames:t,className:r,style:i,styles:a,unstyled:o,vars:s,withBorder:c,zIndex:l,mod:d,...f}=u(`AppShellHeader`,null,e),p=xa();return p.disabled?null:(0,D.jsx)(n,{component:`header`,mod:[{"with-border":c??p.withBorder},d],...p.getStyles(`header`,{className:b({[Wt.classNames.zeroRight]:p.offsetScrollbars},r),classNames:t,styles:a,style:i}),...f,__vars:{"--app-shell-header-z-index":(l??p.zIndex)?.toString()}})});Ta.classes=Sa,Ta.displayName=`@mantine/core/AppShellHeader`;var Ea=g(e=>{let{classNames:t,className:r,style:i,styles:a,vars:o,...s}=u(`AppShellMain`,null,e),c=xa();return(0,D.jsx)(n,{component:`main`,...c.getStyles(`main`,{className:r,style:i,classNames:t,styles:a}),...s})});Ea.classes=Sa,Ea.displayName=`@mantine/core/AppShellMain`;var Da=g(e=>{let{classNames:t,className:r,style:i,styles:a,unstyled:o,vars:s,withBorder:c,zIndex:l,mod:d,...f}=u(`AppShellNavbar`,null,e),p=xa();return p.disabled?null:(0,D.jsx)(n,{component:`nav`,mod:[{"with-border":c??p.withBorder},d],...p.getStyles(`navbar`,{className:r,classNames:t,styles:a,style:i}),...f,__vars:{"--app-shell-navbar-z-index":`calc(${l??p.zIndex} + 1)`}})});Da.classes=Sa,Da.displayName=`@mantine/core/AppShellNavbar`;var Oa=xe(e=>{let{classNames:t,className:r,style:i,styles:a,vars:o,grow:s,mod:c,...l}=u(`AppShellSection`,null,e),d=xa();return(0,D.jsx)(n,{mod:[{grow:s},c],...d.getStyles(`section`,{className:r,style:i,classNames:t,styles:a}),...l})});Oa.classes=Sa,Oa.displayName=`@mantine/core/AppShellSection`;function ka(e){return typeof e==`object`?e.base:e}function Aa(e){let t=typeof e==`object`&&!!e&&e.base!==void 0&&Object.keys(e).length===1;return typeof e==`number`||typeof e==`string`||t}function ja(e){return!(typeof e!=`object`||!e||Object.keys(e).length===1&&`base`in e)}function Ma({baseStyles:e,minMediaStyles:t,maxMediaStyles:n,aside:r,theme:i,mode:a}){let o=r?.width,s=`translateX(var(--app-shell-aside-width))`,c=`translateX(calc(var(--app-shell-aside-width) * -1))`;if(r?.breakpoint!==void 0&&!r?.collapsed?.mobile&&(n[r?.breakpoint]=n[r?.breakpoint]||{},a===`fixed`?(n[r?.breakpoint][`--app-shell-aside-width`]=`100%`,n[r?.breakpoint][`--app-shell-aside-offset`]=`0px`):(n[r?.breakpoint][`--app-shell-aside-width`]=`0px`,n[r?.breakpoint][`--app-shell-aside-offset`]=`0px`)),Aa(o)){let t=C(ka(o));e[`--app-shell-aside-width`]=t,e[`--app-shell-aside-offset`]=t}if(ja(o)&&(o.base!==void 0&&(e[`--app-shell-aside-width`]=C(o.base),e[`--app-shell-aside-offset`]=C(o.base)),fe(o).forEach(e=>{e!==`base`&&(t[e]=t[e]||{},t[e][`--app-shell-aside-width`]=C(o[e]),t[e][`--app-shell-aside-offset`]=C(o[e]))})),r?.breakpoint!==void 0&&a===`static`&&(t[r.breakpoint]=t[r.breakpoint]||{},t[r.breakpoint][`--app-shell-aside-position`]=`sticky`,t[r.breakpoint][`--app-shell-aside-grid-row`]=`2`,t[r.breakpoint][`--app-shell-aside-grid-column`]=`3`,t[r.breakpoint][`--app-shell-main-column-end`]=`3`),r?.collapsed?.desktop){let e=r.breakpoint;t[e]=t[e]||{},t[e][`--app-shell-aside-transform`]=s,t[e][`--app-shell-aside-transform-rtl`]=c,a===`fixed`?t[e][`--app-shell-aside-offset`]=`0px !important`:(t[e][`--app-shell-aside-width`]=`0px`,t[e][`--app-shell-aside-display`]=`none`,t[e][`--app-shell-main-column-end`]=`-1`),t[e][`--app-shell-aside-scroll-locked-visibility`]=`hidden`}if(r?.collapsed?.mobile){let e=yt(r.breakpoint,i.breakpoints)-.1;n[e]=n[e]||{},a===`fixed`?(n[e][`--app-shell-aside-width`]=`100%`,n[e][`--app-shell-aside-offset`]=`0px`):n[e][`--app-shell-aside-width`]=`0px`,n[e][`--app-shell-aside-transform`]=s,n[e][`--app-shell-aside-transform-rtl`]=c,n[e][`--app-shell-aside-scroll-locked-visibility`]=`hidden`}}function Na({baseStyles:e,minMediaStyles:t,footer:n,mode:r}){let i=n?.height,a=r===`static`?!0:n?.offset??!0;if(r===`static`&&n&&(e[`--app-shell-footer-position`]=`sticky`,e[`--app-shell-footer-grid-column`]=`1 / -1`,e[`--app-shell-footer-grid-row`]=`3`),Aa(i)){let t=C(ka(i));e[`--app-shell-footer-height`]=t,a&&(e[`--app-shell-footer-offset`]=t)}ja(i)&&(i.base!==void 0&&(e[`--app-shell-footer-height`]=C(i.base),a&&(e[`--app-shell-footer-offset`]=C(i.base))),fe(i).forEach(e=>{e!==`base`&&(t[e]=t[e]||{},t[e][`--app-shell-footer-height`]=C(i[e]),a&&(t[e][`--app-shell-footer-offset`]=C(i[e])))})),n?.collapsed&&(e[`--app-shell-footer-transform`]=`translateY(var(--app-shell-footer-height))`,r===`fixed`&&(e[`--app-shell-footer-offset`]=`0px !important`))}function Pa({baseStyles:e,minMediaStyles:t,header:n,mode:r}){let i=n?.height,a=r===`static`?!0:n?.offset??!0;if(r===`static`&&n&&(e[`--app-shell-header-position`]=`sticky`,e[`--app-shell-header-grid-column`]=`1 / -1`,e[`--app-shell-header-grid-row`]=`1`),Aa(i)){let t=C(ka(i));e[`--app-shell-header-height`]=t,a&&(e[`--app-shell-header-offset`]=t)}ja(i)&&(i.base!==void 0&&(e[`--app-shell-header-height`]=C(i.base),a&&(e[`--app-shell-header-offset`]=C(i.base))),fe(i).forEach(e=>{e!==`base`&&(t[e]=t[e]||{},t[e][`--app-shell-header-height`]=C(i[e]),a&&(t[e][`--app-shell-header-offset`]=C(i[e])))})),n?.collapsed&&(e[`--app-shell-header-transform`]=`translateY(calc(var(--app-shell-header-height) * -1))`,r===`fixed`&&(e[`--app-shell-header-offset`]=`0px !important`))}function Fa({baseStyles:e,minMediaStyles:t,maxMediaStyles:n,navbar:r,theme:i,mode:a}){let o=r?.width,s=`translateX(calc(var(--app-shell-navbar-width) * -1))`,c=`translateX(var(--app-shell-navbar-width))`;if(r?.breakpoint!==void 0&&!r?.collapsed?.mobile&&(n[r?.breakpoint]=n[r?.breakpoint]||{},n[r?.breakpoint][`--app-shell-navbar-offset`]=`0px`,n[r?.breakpoint][`--app-shell-navbar-width`]=`100%`,a===`static`&&(n[r?.breakpoint][`--app-shell-navbar-grid-width`]=`0px`)),Aa(o)){let t=C(ka(o));e[`--app-shell-navbar-width`]=t,e[`--app-shell-navbar-offset`]=t,a===`static`&&(e[`--app-shell-navbar-grid-width`]=t)}if(ja(o)&&(o.base!==void 0&&(e[`--app-shell-navbar-width`]=C(o.base),e[`--app-shell-navbar-offset`]=C(o.base),a===`static`&&(e[`--app-shell-navbar-grid-width`]=C(o.base))),fe(o).forEach(e=>{e!==`base`&&(t[e]=t[e]||{},t[e][`--app-shell-navbar-width`]=C(o[e]),t[e][`--app-shell-navbar-offset`]=C(o[e]),a===`static`&&(t[e][`--app-shell-navbar-grid-width`]=C(o[e])))})),r?.breakpoint!==void 0&&a===`static`&&(t[r.breakpoint]=t[r.breakpoint]||{},t[r.breakpoint][`--app-shell-navbar-position`]=`sticky`,t[r.breakpoint][`--app-shell-navbar-grid-row`]=`2`,t[r.breakpoint][`--app-shell-navbar-grid-column`]=`1`,t[r.breakpoint][`--app-shell-main-column-start`]=`2`),r?.collapsed?.desktop){let e=r.breakpoint;t[e]=t[e]||{},t[e][`--app-shell-navbar-transform`]=s,t[e][`--app-shell-navbar-transform-rtl`]=c,a===`fixed`?t[e][`--app-shell-navbar-offset`]=`0px !important`:(t[e][`--app-shell-navbar-width`]=`0px`,t[e][`--app-shell-navbar-display`]=`none`,t[e][`--app-shell-main-column-start`]=`1`)}if(r?.collapsed?.mobile){let e=yt(r.breakpoint,i.breakpoints)-.1;n[e]=n[e]||{},n[e][`--app-shell-navbar-width`]=`100%`,n[e][`--app-shell-navbar-offset`]=`0px`,a===`static`&&(n[e][`--app-shell-navbar-grid-width`]=`0px`),n[e][`--app-shell-navbar-transform`]=s,n[e][`--app-shell-navbar-transform-rtl`]=c}}function Ia(e){return Number(e)===0?`0px`:de(e)}function La({padding:e,baseStyles:t,minMediaStyles:n}){Aa(e)&&(t[`--app-shell-padding`]=Ia(ka(e))),ja(e)&&(e.base&&(t[`--app-shell-padding`]=Ia(e.base)),fe(e).forEach(t=>{t!==`base`&&(n[t]=n[t]||{},n[t][`--app-shell-padding`]=Ia(e[t]))}))}function Ra({navbar:e,header:t,footer:n,aside:r,padding:i,theme:a,mode:o}){let s={},c={},l={};o===`static`&&(l[`--app-shell-main-grid-column`]=`1 / -1`,l[`--app-shell-main-grid-row`]=`2`),Fa({baseStyles:l,minMediaStyles:s,maxMediaStyles:c,navbar:e,theme:a,mode:o}),Ma({baseStyles:l,minMediaStyles:s,maxMediaStyles:c,aside:r,theme:a,mode:o}),Pa({baseStyles:l,minMediaStyles:s,header:t,mode:o}),Na({baseStyles:l,minMediaStyles:s,footer:n,mode:o}),La({baseStyles:l,minMediaStyles:s,padding:i});let u=dt(fe(s),a.breakpoints).map(e=>({query:`(min-width: ${ae(e.px)})`,styles:s[e.value]})),d=dt(fe(c),a.breakpoints).map(e=>({query:`(max-width: ${ae(e.px)})`,styles:c[e.value]}));return{baseStyles:l,media:[...u,...d]}}function za({navbar:e,header:t,aside:n,footer:r,padding:i,mode:a,selector:o}){let s=f(),c=l(),{media:u,baseStyles:d}=Ra({navbar:e,header:t,footer:r,aside:n,padding:i,theme:s,mode:a});return(0,D.jsx)(ue,{media:u,styles:d,selector:o||c.cssVariablesSelector})}function Ba({transitionDuration:e,disabled:t}){let[n,r]=(0,E.useState)(!0),i=(0,E.useRef)(-1),a=(0,E.useRef)(-1);return Gt(`resize`,()=>{r(!0),clearTimeout(i.current),i.current=window.setTimeout(()=>(0,E.startTransition)(()=>{r(!1)}),200)}),pe(()=>{r(!0),clearTimeout(a.current),a.current=window.setTimeout(()=>(0,E.startTransition)(()=>{r(!1)}),e||0)},[t,e]),n}var Va={withBorder:!0,padding:0,transitionDuration:200,transitionTimingFunction:`ease`,zIndex:Lt(`app`),mode:`fixed`},Ha=y((e,{transitionDuration:t,transitionTimingFunction:n})=>({root:{"--app-shell-transition-duration":`${t}ms`,"--app-shell-transition-timing-function":n}})),Ua=g(t=>{let r=u(`AppShell`,Va,t),{classNames:i,className:a,style:o,styles:s,unstyled:c,vars:l,navbar:d,withBorder:f,padding:p,transitionDuration:m,transitionTimingFunction:h,header:g,zIndex:_,layout:v,disabled:y,aside:b,footer:ee,offsetScrollbars:te=!0,mode:x,mod:S,attributes:ne,id:re,...ie}=r,ae=e({name:`AppShell`,classes:Sa,props:r,className:a,style:o,classNames:i,styles:s,unstyled:c,attributes:ne,vars:l,varsResolver:Ha}),se=Ba({disabled:y,transitionDuration:m}),C=oe(re);return(0,D.jsxs)(ba,{value:{getStyles:ae,withBorder:f,zIndex:_,disabled:y,offsetScrollbars:te,mode:x},children:[(0,D.jsx)(za,{navbar:d,header:g,aside:b,footer:ee,padding:p,mode:x,selector:x===`static`?`#${C}`:void 0}),(0,D.jsx)(n,{...ae(`root`),id:C,mod:[{resizing:se,layout:v,disabled:y,mode:x},S],...ie})]})});Ua.classes=Sa,Ua.varsResolver=Ha,Ua.displayName=`@mantine/core/AppShell`,Ua.Navbar=Da,Ua.Header=Ta,Ua.Main=Ea,Ua.Aside=Ca,Ua.Footer=wa,Ua.Section=Oa;var Wa={group:`m_11def92b`,root:`m_f85678b6`,image:`m_11f8ac07`,placeholder:`m_104cd71f`},Ga=(0,E.createContext)({withinGroup:!1}),Ka=y((e,{spacing:t})=>({group:{"--ag-spacing":de(t)}})),qa=g(t=>{let r=u(`AvatarGroup`,null,t),{classNames:i,className:a,style:o,styles:s,unstyled:c,vars:l,spacing:d,attributes:f,...p}=r,m=e({name:`AvatarGroup`,classes:Wa,props:r,className:a,style:o,classNames:i,styles:s,unstyled:c,attributes:f,vars:l,varsResolver:Ka,rootSelector:`group`});return(0,D.jsx)(Ga,{value:{withinGroup:!0},children:(0,D.jsx)(n,{...m(`group`),...p})})});qa.classes=Wa,qa.varsResolver=Ka,qa.displayName=`@mantine/core/AvatarGroup`;function Ja(e){return(0,D.jsx)(`svg`,{...e,"data-avatar-placeholder-icon":!0,viewBox:`0 0 15 15`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:(0,D.jsx)(`path`,{d:`M0.877014 7.49988C0.877014 3.84219 3.84216 0.877045 7.49985 0.877045C11.1575 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1575 14.1227 7.49985 14.1227C3.84216 14.1227 0.877014 11.1575 0.877014 7.49988ZM7.49985 1.82704C4.36683 1.82704 1.82701 4.36686 1.82701 7.49988C1.82701 8.97196 2.38774 10.3131 3.30727 11.3213C4.19074 9.94119 5.73818 9.02499 7.50023 9.02499C9.26206 9.02499 10.8093 9.94097 11.6929 11.3208C12.6121 10.3127 13.1727 8.97172 13.1727 7.49988C13.1727 4.36686 10.6328 1.82704 7.49985 1.82704ZM10.9818 11.9787C10.2839 10.7795 8.9857 9.97499 7.50023 9.97499C6.01458 9.97499 4.71624 10.7797 4.01845 11.9791C4.97952 12.7272 6.18765 13.1727 7.49985 13.1727C8.81227 13.1727 10.0206 12.727 10.9818 11.9787ZM5.14999 6.50487C5.14999 5.207 6.20212 4.15487 7.49999 4.15487C8.79786 4.15487 9.84999 5.207 9.84999 6.50487C9.84999 7.80274 8.79786 8.85487 7.49999 8.85487C6.20212 8.85487 5.14999 7.80274 5.14999 6.50487ZM7.49999 5.10487C6.72679 5.10487 6.09999 5.73167 6.09999 6.50487C6.09999 7.27807 6.72679 7.90487 7.49999 7.90487C8.27319 7.90487 8.89999 7.27807 8.89999 6.50487C8.89999 5.73167 8.27319 5.10487 7.49999 5.10487Z`,fill:`currentColor`,fillRule:`evenodd`,clipRule:`evenodd`})})}function Ya(e){let t=0;for(let n=0;ne[0]).slice(0,t).join(``).toUpperCase()}var $a=y((e,{size:t,radius:n,variant:r,gradient:i,color:a,autoContrast:o,name:s,allowedInitialsColors:c})=>{let l=a===`initials`&&typeof s==`string`?Za(s,c):a,u=e.variantColorResolver({color:l||`gray`,theme:e,gradient:i,variant:r||`light`,autoContrast:o});return{root:{"--avatar-size":re(t,`avatar-size`),"--avatar-radius":n===void 0?void 0:me(n),"--avatar-bg":l||r?u.background:void 0,"--avatar-color":l||r?u.color:void 0,"--avatar-bd":l||r?u.border:void 0}}}),eo=xe(t=>{let r=u(`Avatar`,null,t),{classNames:i,className:a,style:o,styles:s,unstyled:c,vars:l,src:d,alt:f,radius:p,color:m,gradient:h,imageProps:g,children:_,autoContrast:v,mod:y,name:b,allowedInitialsColors:ee,attributes:te,...x}=r,S=(0,E.use)(Ga),[ne,re]=(0,E.useState)(!d),ie=e({name:`Avatar`,props:r,classes:Wa,className:a,style:o,classNames:i,styles:s,unstyled:c,attributes:te,vars:l,varsResolver:$a});return(0,E.useEffect)(()=>re(!d),[d]),(0,D.jsx)(n,{...ie(`root`),mod:[{"within-group":S.withinGroup},y],...x,children:ne||!d?(0,D.jsx)(`span`,{...ie(`placeholder`),title:f,children:_||typeof b==`string`&&Qa(b)||(0,D.jsx)(Ja,{})}):(0,D.jsx)(`img`,{...g,...ie(`image`),src:d,alt:f,onError:e=>{re(!0),g?.onError?.(e)}})})});eo.classes=Wa,eo.varsResolver=$a,eo.displayName=`@mantine/core/Avatar`,eo.Group=qa;var to={root:`m_fea6bf1a`,burger:`m_d4fb9cad`},no=y((e,{color:t,size:n,lineSize:r,transitionDuration:i,transitionTimingFunction:a})=>({root:{"--burger-color":t?c(t,e):void 0,"--burger-size":re(n,`burger-size`),"--burger-line-size":r?C(r):void 0,"--burger-transition-duration":i===void 0?void 0:`${i}ms`,"--burger-transition-timing-function":a}})),ro=g(t=>{let r=u(`Burger`,null,t),{classNames:i,className:a,style:o,styles:s,unstyled:c,vars:l,opened:d,children:f,transitionDuration:p,transitionTimingFunction:h,lineSize:g,attributes:_,...v}=r,y=e({name:`Burger`,classes:to,props:r,className:a,style:o,classNames:i,styles:s,unstyled:c,attributes:_,vars:l,varsResolver:no});return(0,D.jsxs)(m,{...y(`root`),...v,children:[(0,D.jsx)(n,{mod:[`reduce-motion`,{opened:d}],...y(`burger`)}),f]})});ro.classes=to,ro.varsResolver=no,ro.displayName=`@mantine/core/Burger`;var io={root:`m_dc6f14e2`},ao=y((e,{size:t})=>({root:{"--kbd-fz":re(t,`kbd-fz`)}})),oo=g(t=>{let r=u(`Kbd`,null,t),{classNames:i,className:a,style:o,styles:s,unstyled:c,vars:l,attributes:d,...f}=r,p=e({name:`Kbd`,classes:io,props:r,className:a,style:o,classNames:i,styles:s,unstyled:c,attributes:d,vars:l,varsResolver:ao});return(0,D.jsx)(n,{component:`kbd`,...p(`root`),...f})});oo.classes=io,oo.varsResolver=ao,oo.displayName=`@mantine/core/Kbd`;var so=[];for(let e=0;e<256;++e)so.push((e+256).toString(16).slice(1));function co(e,t=0){return(so[e[t+0]]+so[e[t+1]]+so[e[t+2]]+so[e[t+3]]+`-`+so[e[t+4]]+so[e[t+5]]+`-`+so[e[t+6]]+so[e[t+7]]+`-`+so[e[t+8]]+so[e[t+9]]+`-`+so[e[t+10]]+so[e[t+11]]+so[e[t+12]]+so[e[t+13]]+so[e[t+14]]+so[e[t+15]]).toLowerCase()}var lo,uo=new Uint8Array(16);function fo(){if(!lo){if(typeof crypto>`u`||!crypto.getRandomValues)throw Error(`crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported`);lo=crypto.getRandomValues.bind(crypto)}return lo(uo)}var po={randomUUID:typeof crypto<`u`&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function mo(e,t,n){if(po.randomUUID&&!t&&!e)return po.randomUUID();e||={};let r=e.random??e.rng?.()??fo();if(r.length<16)throw Error(`Random bytes length must be >= 16`);if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){if(n||=0,n<0||n+16>t.length)throw RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[n+e]=r[e];return t}return co(r)}var ho=_n(),k=function(e){return e.TEXT_MESSAGE_START=`TEXT_MESSAGE_START`,e.TEXT_MESSAGE_CONTENT=`TEXT_MESSAGE_CONTENT`,e.TEXT_MESSAGE_END=`TEXT_MESSAGE_END`,e.TEXT_MESSAGE_CHUNK=`TEXT_MESSAGE_CHUNK`,e.TOOL_CALL_START=`TOOL_CALL_START`,e.TOOL_CALL_ARGS=`TOOL_CALL_ARGS`,e.TOOL_CALL_END=`TOOL_CALL_END`,e.TOOL_CALL_CHUNK=`TOOL_CALL_CHUNK`,e.TOOL_CALL_RESULT=`TOOL_CALL_RESULT`,e.STATE_SNAPSHOT=`STATE_SNAPSHOT`,e.STATE_DELTA=`STATE_DELTA`,e.MESSAGES_SNAPSHOT=`MESSAGES_SNAPSHOT`,e.ACTIVITY_SNAPSHOT=`ACTIVITY_SNAPSHOT`,e.ACTIVITY_DELTA=`ACTIVITY_DELTA`,e.RAW=`RAW`,e.CUSTOM=`CUSTOM`,e.RUN_STARTED=`RUN_STARTED`,e.RUN_FINISHED=`RUN_FINISHED`,e.RUN_ERROR=`RUN_ERROR`,e.STEP_STARTED=`STEP_STARTED`,e.STEP_FINISHED=`STEP_FINISHED`,e.REASONING_START=`REASONING_START`,e.REASONING_MESSAGE_START=`REASONING_MESSAGE_START`,e.REASONING_MESSAGE_CONTENT=`REASONING_MESSAGE_CONTENT`,e.REASONING_MESSAGE_END=`REASONING_MESSAGE_END`,e.REASONING_MESSAGE_CHUNK=`REASONING_MESSAGE_CHUNK`,e.REASONING_END=`REASONING_END`,e.REASONING_ENCRYPTED_VALUE=`REASONING_ENCRYPTED_VALUE`,e.SUBAGENT_STARTED=`SUBAGENT_STARTED`,e.SUBAGENT_FINISHED=`SUBAGENT_FINISHED`,e.SUBAGENT_ERROR=`SUBAGENT_ERROR`,e}({}),go={TextMessageStartEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`,`role`,`name`],fields:{}},TextMessageContentEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},TextMessageEndEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},TextMessageChunkEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`,`messageId`,`role`,`delta`,`name`],fields:{}},ToolCallStartEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`,`parentMessageId`],fields:{}},ToolCallArgsEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},ToolCallEndEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},ToolCallChunkEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`,`toolCallId`,`toolCallName`,`parentMessageId`,`delta`],fields:{}},TextPart:{optional:[`id`,`metadata`],fields:{}},DataSource:{optional:[],fields:{}},UrlSource:{optional:[`mimeType`],fields:{}},FileSource:{optional:[`provider`,`mimeType`],fields:{}},PartSource:{discriminator:`type`,variants:{data:`DataSource`,url:`UrlSource`,file:`FileSource`}},ImagePart:{optional:[`id`,`metadata`],fields:{source:`PartSource`}},AudioPart:{optional:[`id`,`metadata`],fields:{source:`PartSource`}},VideoPart:{optional:[`id`,`metadata`],fields:{source:`PartSource`}},DocumentPart:{optional:[`id`,`metadata`],fields:{source:`PartSource`}},ContentPart:{discriminator:`type`,variants:{text:`TextPart`,image:`ImagePart`,audio:`AudioPart`,video:`VideoPart`,document:`DocumentPart`}},ToolCallResultEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`,`role`],fields:{content:{array:`ContentPart`}}},StateSnapshotEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},AddOperation:{optional:[],fields:{}},RemoveOperation:{optional:[],fields:{}},ReplaceOperation:{optional:[],fields:{}},MoveOperation:{optional:[],fields:{}},CopyOperation:{optional:[],fields:{}},TestOperation:{optional:[],fields:{}},JsonPatchOperation:{discriminator:`op`,variants:{add:`AddOperation`,remove:`RemoveOperation`,replace:`ReplaceOperation`,move:`MoveOperation`,copy:`CopyOperation`,test:`TestOperation`}},StateDeltaEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{delta:{array:`JsonPatchOperation`}}},DeveloperMessage:{optional:[`subagentRunId`,`name`,`encryptedValue`,`metadata`],fields:{}},SystemMessage:{optional:[`subagentRunId`,`name`,`encryptedValue`,`metadata`],fields:{}},FunctionCall:{optional:[],fields:{}},ToolCall:{optional:[`encryptedValue`,`metadata`],fields:{function:`FunctionCall`}},AssistantMessage:{optional:[`subagentRunId`,`name`,`encryptedValue`,`metadata`,`content`,`toolCalls`],fields:{toolCalls:{array:`ToolCall`}}},UserMessage:{optional:[`subagentRunId`,`name`,`encryptedValue`,`metadata`],fields:{content:{array:`ContentPart`}}},ToolMessage:{optional:[`subagentRunId`,`error`,`encryptedValue`,`metadata`],fields:{content:{array:`ContentPart`}}},ActivityMessage:{optional:[`subagentRunId`,`metadata`],fields:{}},ReasoningMessage:{optional:[`subagentRunId`,`encryptedValue`,`metadata`],fields:{}},Message:{discriminator:`role`,variants:{developer:`DeveloperMessage`,system:`SystemMessage`,assistant:`AssistantMessage`,user:`UserMessage`,tool:`ToolMessage`,activity:`ActivityMessage`,reasoning:`ReasoningMessage`}},MessagesSnapshotEvent:{optional:[`timestamp`,`rawEvent`,`metadata`],fields:{messages:{array:`Message`}}},ActivitySnapshotEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`,`replace`],fields:{}},ActivityDeltaEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{patch:{array:`JsonPatchOperation`}}},RawEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`,`source`],fields:{}},CustomEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},Tool:{optional:[`parameters`,`metadata`],fields:{}},Context:{optional:[],fields:{}},ResumeEntry:{optional:[`payload`,`metadata`],fields:{}},RunAgentInput:{optional:[`protocolVersion`,`parentRunId`,`state`,`tools`,`context`,`forwardedProps`,`resume`],fields:{messages:{array:`Message`},tools:{array:`Tool`},context:{array:`Context`},resume:{array:`ResumeEntry`}}},RunStartedEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`protocolVersion`,`parentRunId`,`input`],fields:{input:`RunAgentInput`}},RunFinishedSuccessOutcome:{optional:[`pendingToolCallIds`],fields:{}},Interrupt:{optional:[`subagentRunId`,`message`,`toolCallId`,`responseSchema`,`expiresAt`,`metadata`],fields:{}},RunFinishedInterruptOutcome:{optional:[],fields:{interrupts:{array:`Interrupt`}}},RunFinishedCancelledOutcome:{optional:[],fields:{}},RunFinishedOutcome:{discriminator:`type`,variants:{success:`RunFinishedSuccessOutcome`,interrupt:`RunFinishedInterruptOutcome`,cancelled:`RunFinishedCancelledOutcome`}},TokenUsage:{optional:[`provider`,`model`,`inputTokens`,`outputTokens`,`totalTokens`,`reasoningTokens`,`cachedInputTokens`,`cacheWriteInputTokens`],fields:{}},RunFinishedEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`result`,`outcome`,`usage`],fields:{outcome:`RunFinishedOutcome`,usage:{array:`TokenUsage`}}},RunErrorEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`code`,`usage`],fields:{usage:{array:`TokenUsage`}}},StepStartedEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},StepFinishedEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},ReasoningStartEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},ReasoningMessageStartEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},ReasoningMessageContentEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},ReasoningMessageEndEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},ReasoningMessageChunkEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`,`messageId`,`delta`],fields:{}},ReasoningEndEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},ReasoningEncryptedValueEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`subagentRunId`],fields:{}},SubagentStartedEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`description`,`parentSubagentRunId`,`parentToolCallId`,`parentMessageId`],fields:{}},SubagentFinishedSuccessOutcome:{optional:[],fields:{}},SubagentFinishedSuspendedOutcome:{optional:[`interruptIds`],fields:{}},SubagentFinishedOutcome:{discriminator:`type`,variants:{success:`SubagentFinishedSuccessOutcome`,suspended:`SubagentFinishedSuspendedOutcome`}},SubagentFinishedEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`result`,`outcome`],fields:{outcome:`SubagentFinishedOutcome`}},SubagentErrorEvent:{optional:[`timestamp`,`rawEvent`,`metadata`,`code`],fields:{}},Event:{discriminator:`type`,variants:{TEXT_MESSAGE_START:`TextMessageStartEvent`,TEXT_MESSAGE_CONTENT:`TextMessageContentEvent`,TEXT_MESSAGE_END:`TextMessageEndEvent`,TEXT_MESSAGE_CHUNK:`TextMessageChunkEvent`,TOOL_CALL_START:`ToolCallStartEvent`,TOOL_CALL_ARGS:`ToolCallArgsEvent`,TOOL_CALL_END:`ToolCallEndEvent`,TOOL_CALL_CHUNK:`ToolCallChunkEvent`,TOOL_CALL_RESULT:`ToolCallResultEvent`,STATE_SNAPSHOT:`StateSnapshotEvent`,STATE_DELTA:`StateDeltaEvent`,MESSAGES_SNAPSHOT:`MessagesSnapshotEvent`,ACTIVITY_SNAPSHOT:`ActivitySnapshotEvent`,ACTIVITY_DELTA:`ActivityDeltaEvent`,RAW:`RawEvent`,CUSTOM:`CustomEvent`,RUN_STARTED:`RunStartedEvent`,RUN_FINISHED:`RunFinishedEvent`,RUN_ERROR:`RunErrorEvent`,STEP_STARTED:`StepStartedEvent`,STEP_FINISHED:`StepFinishedEvent`,REASONING_START:`ReasoningStartEvent`,REASONING_MESSAGE_START:`ReasoningMessageStartEvent`,REASONING_MESSAGE_CONTENT:`ReasoningMessageContentEvent`,REASONING_MESSAGE_END:`ReasoningMessageEndEvent`,REASONING_MESSAGE_CHUNK:`ReasoningMessageChunkEvent`,REASONING_END:`ReasoningEndEvent`,REASONING_ENCRYPTED_VALUE:`ReasoningEncryptedValueEvent`,SUBAGENT_STARTED:`SubagentStartedEvent`,SUBAGENT_FINISHED:`SubagentFinishedEvent`,SUBAGENT_ERROR:`SubagentErrorEvent`}},SubagentInfo:{optional:[`description`],fields:{}},IdentityCapabilities:{optional:[`name`,`type`,`description`,`version`,`provider`,`documentationUrl`,`metadata`],fields:{}},TransportCapabilities:{optional:[`streaming`,`websocket`,`httpBinary`,`pushNotifications`,`resumable`],fields:{}},ToolsCapabilities:{optional:[`supported`,`items`,`parallelCalls`,`clientProvided`],fields:{items:{array:`Tool`}}},OutputCapabilities:{optional:[`structuredOutput`,`supportedMimeTypes`],fields:{}},StateCapabilities:{optional:[`snapshots`,`deltas`,`memory`,`persistentState`],fields:{}},MultiAgentCapabilities:{optional:[`supported`,`delegation`,`handoffs`,`subagents`],fields:{subagents:{array:`SubagentInfo`}}},ReasoningCapabilities:{optional:[`supported`,`streaming`,`encrypted`],fields:{}},MultimodalInputCapabilities:{optional:[`image`,`audio`,`video`,`pdf`,`file`],fields:{}},MultimodalOutputCapabilities:{optional:[`image`,`audio`],fields:{}},MultimodalCapabilities:{optional:[`input`,`output`],fields:{input:`MultimodalInputCapabilities`,output:`MultimodalOutputCapabilities`}},ExecutionCapabilities:{optional:[`codeExecution`,`sandboxed`,`maxIterations`,`maxExecutionTime`],fields:{}},HumanInTheLoopCapabilities:{optional:[`supported`,`approvals`,`interventions`,`feedback`,`interrupts`,`approveWithEdits`],fields:{}},AgentCapabilities:{optional:[`identity`,`transport`,`tools`,`output`,`state`,`multiAgent`,`reasoning`,`multimodal`,`execution`,`humanInTheLoop`,`custom`],fields:{identity:`IdentityCapabilities`,transport:`TransportCapabilities`,tools:`ToolsCapabilities`,output:`OutputCapabilities`,state:`StateCapabilities`,multiAgent:`MultiAgentCapabilities`,reasoning:`ReasoningCapabilities`,multimodal:`MultimodalCapabilities`,execution:`ExecutionCapabilities`,humanInTheLoop:`HumanInTheLoopCapabilities`}}};function _o(e,t){if(typeof t==`string`)return _o(e,go[t]);if(`array`in t){if(!Array.isArray(e))return e;let n=e.map(e=>_o(e,t.array));return n.every((t,n)=>t===e[n])?e:n}if(typeof e!=`object`||!e||Array.isArray(e))return e;let n=e;if(`discriminator`in t){let r=n[t.discriminator];return typeof r==`string`&&Object.prototype.hasOwnProperty.call(t.variants,r)?_o(e,t.variants[r]):e}let r=n;for(let e of t.optional)Object.prototype.hasOwnProperty.call(n,e)&&n[e]===null&&(r===n&&(r={...n}),delete r[e]);for(let[e,i]of Object.entries(t.fields)){if(!Object.prototype.hasOwnProperty.call(r,e))continue;let t=_o(r[e],i);t!==r[e]&&(r===n&&(r={...n}),r[e]=t)}return r}function vo(e,t){return _o(e,t)}var A=class extends Error{constructor(e){super(e)}},yo=class extends A{constructor(){super(`Connect not implemented. This method is not supported by the current agent.`)}};function bo(e,t){return t===void 0?e:e===void 0?{...t}:{...e,...t}}function xo(e){return e===void 0?``:typeof e==`string`?e:e.filter(e=>e.type===`text`).map(e=>e.text).join(``)}function So(e){return Array.isArray(e)&&e.some(e=>e.type!==`text`)}var Co=(function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}})(),wo=Object.prototype.hasOwnProperty;function To(e,t){return wo.call(e,t)}function Eo(e){if(Array.isArray(e)){for(var t=Array(e.length),n=0;n=48&&r<=57){t++;continue}return!1}return!0}function ko(e){return e.indexOf(`/`)===-1&&e.indexOf(`~`)===-1?e:e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function Ao(e){return e.replace(/~1/g,`/`).replace(/~0/g,`~`)}function jo(e){if(e===void 0)return!0;if(e){if(Array.isArray(e)){for(var t=0,n=e.length;tFo,_areEquals:()=>Go,applyOperation:()=>Bo,applyPatch:()=>Vo,applyReducer:()=>Ho,deepClone:()=>Io,getValueByPointer:()=>zo,validate:()=>Wo,validator:()=>Uo}),Fo=No,Io=Do,Lo={add:function(e,t,n){return e[t]=this.value,{newDocument:n}},remove:function(e,t,n){var r=e[t];return delete e[t],{newDocument:n,removed:r}},replace:function(e,t,n){var r=e[t];return e[t]=this.value,{newDocument:n,removed:r}},move:function(e,t,n){var r=zo(n,this.path);r&&=Do(r);var i=Bo(n,{op:`remove`,path:this.from}).removed;return Bo(n,{op:`add`,path:this.path,value:i}),{newDocument:n,removed:r}},copy:function(e,t,n){var r=zo(n,this.from);return Bo(n,{op:`add`,path:this.path,value:Do(r)}),{newDocument:n}},test:function(e,t,n){return{newDocument:n,test:Go(e[t],this.value)}},_get:function(e,t,n){return this.value=e[t],{newDocument:n}}},Ro={add:function(e,t,n){return Oo(t)?e.splice(t,0,this.value):e[t]=this.value,{newDocument:n,index:t}},remove:function(e,t,n){return{newDocument:n,removed:e.splice(t,1)[0]}},replace:function(e,t,n){var r=e[t];return e[t]=this.value,{newDocument:n,removed:r}},move:Lo.move,copy:Lo.copy,test:Lo.test,_get:Lo._get};function zo(e,t){if(t==``)return e;var n={op:`_get`,path:t};return Bo(e,n),n.value}function Bo(e,t,n,r,i,a){if(n===void 0&&(n=!1),r===void 0&&(r=!0),i===void 0&&(i=!0),a===void 0&&(a=0),n&&(typeof n==`function`?n(t,0,e,t.path):Uo(t,0)),t.path===``){var o={newDocument:e};if(t.op===`add`)return o.newDocument=t.value,o;if(t.op===`replace`)return o.newDocument=t.value,o.removed=e,o;if(t.op===`move`||t.op===`copy`)return o.newDocument=zo(e,t.from),t.op===`move`&&(o.removed=e),o;if(t.op===`test`){if(o.test=Go(e,t.value),o.test===!1)throw new Fo(`Test operation failed`,`TEST_OPERATION_FAILED`,a,t,e);return o.newDocument=e,o}if(t.op===`remove`)return o.removed=e,o.newDocument=null,o;if(t.op===`_get`)return t.value=e,o;if(n)throw new Fo("Operation `op` property is not one of operations defined in RFC-6902",`OPERATION_OP_INVALID`,a,t,e);return o}r||(e=Do(e));var s=(t.path||``).split(`/`),c=e,l=1,u=s.length,d=void 0,f=void 0,p=void 0;for(p=typeof n==`function`?n:Uo;;){if(f=s[l],f&&f.indexOf(`~`)!=-1&&(f=Ao(f)),i&&(f==`__proto__`||f==`prototype`&&l>0&&s[l-1]==`constructor`))throw TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(n&&d===void 0&&(c[f]===void 0?d=s.slice(0,l).join(`/`):l==u-1&&(d=t.path),d!==void 0&&p(t,0,e,d)),l++,Array.isArray(c)){if(f===`-`)f=c.length;else if(n&&!Oo(f))throw new Fo(`Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index`,`OPERATION_PATH_ILLEGAL_ARRAY_INDEX`,a,t,e);else Oo(f)&&(f=~~f);if(l>=u){if(n&&t.op===`add`&&f>c.length)throw new Fo(`The specified index MUST NOT be greater than the number of elements in the array`,`OPERATION_VALUE_OUT_OF_BOUNDS`,a,t,e);var o=Ro[t.op].call(t,c,f,e);if(o.test===!1)throw new Fo(`Test operation failed`,`TEST_OPERATION_FAILED`,a,t,e);return o}}else if(l>=u){var o=Lo[t.op].call(t,c,f,e);if(o.test===!1)throw new Fo(`Test operation failed`,`TEST_OPERATION_FAILED`,a,t,e);return o}if(c=c[f],n&&l0)throw new Fo('Operation `path` property must start with "/"',`OPERATION_PATH_INVALID`,t,e,n);if((e.op===`move`||e.op===`copy`)&&typeof e.from!=`string`)throw new Fo("Operation `from` property is not present (applicable in `move` and `copy` operations)",`OPERATION_FROM_REQUIRED`,t,e,n);if((e.op===`add`||e.op===`replace`||e.op===`test`)&&e.value===void 0)throw new Fo("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)",`OPERATION_VALUE_REQUIRED`,t,e,n);if((e.op===`add`||e.op===`replace`||e.op===`test`)&&jo(e.value))throw new Fo("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)",`OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED`,t,e,n);if(n){if(e.op==`add`){var i=e.path.split(`/`).length,a=r.split(`/`).length;if(i!==a+1&&i!==a)throw new Fo("Cannot perform an `add` operation at the desired path",`OPERATION_PATH_CANNOT_ADD`,t,e,n)}else if(e.op===`replace`||e.op===`remove`||e.op===`_get`){if(e.path!==r)throw new Fo(`Cannot perform the operation at a path that does not exist`,`OPERATION_PATH_UNRESOLVABLE`,t,e,n)}else if(e.op===`move`||e.op===`copy`){var o=Wo([{op:`_get`,path:e.from,value:void 0}],n);if(o&&o.name===`OPERATION_PATH_UNRESOLVABLE`)throw new Fo(`Cannot perform the operation from a path that does not exist`,`OPERATION_FROM_UNRESOLVABLE`,t,e,n)}}}function Wo(e,t,n){try{if(!Array.isArray(e))throw new Fo(`Patch sequence must be an array`,`SEQUENCE_NOT_AN_ARRAY`);if(t)Vo(Do(t),Do(e),n||!0);else{n||=Uo;for(var r=0;rns,generate:()=>es,observe:()=>$o,unobserve:()=>j}),qo=new WeakMap,Jo=function(){function e(e){this.observers=new Map,this.obj=e}return e}(),Yo=function(){function e(e,t){this.callback=e,this.observer=t}return e}();function Xo(e){return qo.get(e)}function Zo(e,t){return e.observers.get(t)}function Qo(e,t){e.observers.delete(t.callback)}function j(e,t){t.unobserve()}function $o(e,t){var n=[],r,i=Xo(e);if(!i)i=new Jo(e),qo.set(e,i);else{var a=Zo(i,t);r=a&&a.observer}if(r)return r;if(r={},i.value=Do(e),t){r.callback=t,r.next=null;var o=function(){es(r)},s=function(){clearTimeout(r.next),r.next=setTimeout(o)};typeof window<`u`&&(window.addEventListener(`mouseup`,s),window.addEventListener(`keyup`,s),window.addEventListener(`mousedown`,s),window.addEventListener(`keydown`,s),window.addEventListener(`change`,s))}return r.patches=n,r.object=e,r.unobserve=function(){es(r),clearTimeout(r.next),Qo(i,r),typeof window<`u`&&(window.removeEventListener(`mouseup`,s),window.removeEventListener(`keyup`,s),window.removeEventListener(`mousedown`,s),window.removeEventListener(`keydown`,s),window.removeEventListener(`change`,s))},i.observers.set(t,new Yo(t,r)),r}function es(e,t){t===void 0&&(t=!1);var n=qo.get(e.object);ts(n.value,e.object,e.patches,``,t),e.patches.length&&Vo(n.value,e.patches);var r=e.patches;return r.length>0&&(e.patches=[],e.callback&&e.callback(r)),r}function ts(e,t,n,r,i){if(t!==e){typeof t.toJSON==`function`&&(t=t.toJSON());for(var a=Eo(t),o=Eo(e),s=!1,c=o.length-1;c>=0;c--){var l=o[c],u=e[l];if(To(t,l)&&(t[l]!==void 0||u===void 0||Array.isArray(t)!==!1)){var d=t[l];typeof u==`object`&&u&&typeof d==`object`&&d&&Array.isArray(u)===Array.isArray(d)?ts(u,d,n,r+`/`+ko(l),i):u!==d&&(i&&n.push({op:`test`,path:r+`/`+ko(l),value:Do(u)}),n.push({op:`replace`,path:r+`/`+ko(l),value:Do(d)}))}else Array.isArray(e)===Array.isArray(t)?(i&&n.push({op:`test`,path:r+`/`+ko(l),value:Do(u)}),n.push({op:`remove`,path:r+`/`+ko(l)}),s=!0):(i&&n.push({op:`test`,path:r,value:e}),n.push({op:`replace`,path:r,value:t}))}if(s||a.length!=o.length)for(var c=0;c0&&a[a.length-1])&&(s[0]===6||s[0]===2)){n=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)}function ls(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,a=[],o;try{for(;(t===void 0||t-->0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a}function us(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r1||c(e,t)})},t&&(i[e]=t(i[e])))}function c(e,t){try{l(r[e](t))}catch(e){f(a[0][3],e)}}function l(e){e.value instanceof ds?Promise.resolve(e.value.v).then(u,d):f(a[0][2],e)}function u(e){c(`next`,e)}function d(e){c(`throw`,e)}function f(e,t){e(t),a.shift(),a.length&&c(a[0][0],a[0][1])}}function ps(e){if(!Symbol.asyncIterator)throw TypeError(`Symbol.asyncIterator is not defined.`);var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof cs==`function`?cs(e):e[Symbol.iterator](),n={},r(`next`),r(`throw`),r(`return`),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise(function(r,a){n=e[t](n),i(r,a,n.done,n.value)})}}function i(e,t,n,r){Promise.resolve(r).then(function(t){e({value:t,done:n})},t)}}function ms(e){return typeof e==`function`}function hs(e){var t=e(function(e){Error.call(e),e.stack=Error().stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var gs=hs(function(e){return function(t){e(this),this.message=t?t.length+` errors occurred during unsubscription: +`+t.map(function(e,t){return t+1+`) `+e.toString()}).join(` + `):``,this.name=`UnsubscriptionError`,this.errors=t}});function _s(e,t){if(e){var n=e.indexOf(t);0<=n&&e.splice(n,1)}}var vs=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var e,t,n,r,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a){if(this._parentage=null,Array.isArray(a))try{for(var o=cs(a),s=o.next();!s.done;s=o.next())s.value.remove(this)}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}else a.remove(this)}var c=this.initialTeardown;if(ms(c))try{c()}catch(e){i=e instanceof gs?e.errors:[e]}var l=this._finalizers;if(l){this._finalizers=null;try{for(var u=cs(l),d=u.next();!d.done;d=u.next()){var f=d.value;try{xs(f)}catch(e){i??=[],e instanceof gs?i=us(us([],ls(i)),ls(e.errors)):i.push(e)}}}catch(e){n={error:e}}finally{try{d&&!d.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}}if(i)throw new gs(i)}},e.prototype.add=function(t){if(t&&t!==this){if(this.closed)xs(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=this._finalizers??[]).push(t)}}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&_s(t,e)},e.prototype.remove=function(t){var n=this._finalizers;n&&_s(n,t),t instanceof e&&t._removeParent(this)},e.EMPTY=(function(){var t=new e;return t.closed=!0,t})(),e}(),ys=vs.EMPTY;function bs(e){return e instanceof vs||e&&`closed`in e&&ms(e.remove)&&ms(e.add)&&ms(e.unsubscribe)}function xs(e){ms(e)?e():e.unsubscribe()}var Ss={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},Cs={setTimeout:function(e,t){var n=[...arguments].slice(2),r=Cs.delegate;return r?.setTimeout?r.setTimeout.apply(r,us([e,t],ls(n))):setTimeout.apply(void 0,us([e,t],ls(n)))},clearTimeout:function(e){return(Cs.delegate?.clearTimeout||clearTimeout)(e)},delegate:void 0};function ws(e){Cs.setTimeout(function(){var t=Ss.onUnhandledError;if(t)t(e);else throw e})}function Ts(){}var Es=(function(){return ks(`C`,void 0,void 0)})();function Ds(e){return ks(`E`,void 0,e)}function Os(e){return ks(`N`,e,void 0)}function ks(e,t,n){return{kind:e,value:t,error:n}}var As=null;function js(e){if(Ss.useDeprecatedSynchronousErrorHandling){var t=!As;if(t&&(As={errorThrown:!1,error:null}),e(),t){var n=As,r=n.errorThrown,i=n.error;if(As=null,r)throw i}}else e()}function Ms(e){Ss.useDeprecatedSynchronousErrorHandling&&As&&(As.errorThrown=!0,As.error=e)}var Ns=function(e){as(t,e);function t(t){var n=e.call(this)||this;return n.isStopped=!1,t?(n.destination=t,bs(t)&&t.add(n)):n.destination=Vs,n}return t.create=function(e,t,n){return new Ls(e,t,n)},t.prototype.next=function(e){this.isStopped?Bs(Os(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?Bs(Ds(e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?Bs(Es,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(vs),Ps=Function.prototype.bind;function Fs(e,t){return Ps.call(e,t)}var Is=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){Rs(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){Rs(e)}else Rs(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){Rs(e)}},e}(),Ls=function(e){as(t,e);function t(t,n,r){var i=e.call(this)||this,a;if(ms(t)||!t)a={next:t??void 0,error:n??void 0,complete:r??void 0};else{var o;i&&Ss.useDeprecatedNextContext?(o=Object.create(t),o.unsubscribe=function(){return i.unsubscribe()},a={next:t.next&&Fs(t.next,o),error:t.error&&Fs(t.error,o),complete:t.complete&&Fs(t.complete,o)}):a=t}return i.destination=new Is(a),i}return t}(Ns);function Rs(e){Ss.useDeprecatedSynchronousErrorHandling?Ms(e):ws(e)}function zs(e){throw e}function Bs(e,t){var n=Ss.onStoppedNotification;n&&Cs.setTimeout(function(){return n(e,t)})}var Vs={closed:!0,next:Ts,error:zs,complete:Ts},Hs=(function(){return typeof Symbol==`function`&&Symbol.observable||`@@observable`})();function Us(e){return e}function Ws(){return Gs([...arguments])}function Gs(e){return e.length===0?Us:e.length===1?e[0]:function(t){return e.reduce(function(e,t){return t(e)},t)}}var Ks=function(){function e(e){e&&(this._subscribe=e)}return e.prototype.lift=function(t){var n=new e;return n.source=this,n.operator=t,n},e.prototype.subscribe=function(e,t,n){var r=this,i=Ys(e)?e:new Ls(e,t,n);return js(function(){var e=r,t=e.operator,n=e.source;i.add(t?t.call(i,n):n?r._subscribe(i):r._trySubscribe(i))}),i},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},e.prototype.forEach=function(e,t){var n=this;return t=qs(t),new t(function(t,r){var i=new Ls({next:function(t){try{e(t)}catch(e){r(e),i.unsubscribe()}},error:r,complete:t});n.subscribe(i)})},e.prototype._subscribe=function(e){return this.source?.subscribe(e)},e.prototype[Hs]=function(){return this},e.prototype.pipe=function(){return Gs([...arguments])(this)},e.prototype.toPromise=function(e){var t=this;return e=qs(e),new e(function(e,n){var r;t.subscribe(function(e){return r=e},function(e){return n(e)},function(){return e(r)})})},e.create=function(t){return new e(t)},e}();function qs(e){return e??Ss.Promise??Promise}function Js(e){return e&&ms(e.next)&&ms(e.error)&&ms(e.complete)}function Ys(e){return e&&e instanceof Ns||Js(e)&&bs(e)}function Xs(e){return ms(e?.lift)}function Zs(e){return function(t){if(Xs(t))return t.lift(function(t){try{return e(t,this)}catch(e){this.error(e)}});throw TypeError(`Unable to lift unknown Observable type`)}}function Qs(e,t,n,r,i){return new $s(e,t,n,r,i)}var $s=function(e){as(t,e);function t(t,n,r,i,a,o){var s=e.call(this,t)||this;return s.onFinalize=a,s.shouldUnsubscribe=o,s._next=n?function(e){try{n(e)}catch(e){t.error(e)}}:e.prototype._next,s._error=i?function(e){try{i(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,s._complete=r?function(){try{r()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,s}return t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;e.prototype.unsubscribe.call(this),!n&&((t=this.onFinalize)==null||t.call(this))}},t}(Ns),ec=hs(function(e){return function(){e(this),this.name=`ObjectUnsubscribedError`,this.message=`object unsubscribed`}}),tc=function(e){as(t,e);function t(){var t=e.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return t.prototype.lift=function(e){var t=new nc(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new ec},t.prototype.next=function(e){var t=this;js(function(){var n,r;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||=Array.from(t.observers);try{for(var i=cs(t.currentObservers),a=i.next();!a.done;a=i.next())a.value.next(e)}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}})},t.prototype.error=function(e){var t=this;js(function(){if(t._throwIfClosed(),!t.isStopped){t.hasError=t.isStopped=!0,t.thrownError=e;for(var n=t.observers;n.length;)n.shift().error(e)}})},t.prototype.complete=function(){var e=this;js(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var t=e.observers;t.length;)t.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){return this.observers?.length>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,n=this,r=n.hasError,i=n.isStopped,a=n.observers;return r||i?ys:(this.currentObservers=null,a.push(e),new vs(function(){t.currentObservers=null,_s(a,e)}))},t.prototype._checkFinalizedStatuses=function(e){var t=this,n=t.hasError,r=t.thrownError,i=t.isStopped;n?e.error(r):i&&e.complete()},t.prototype.asObservable=function(){var e=new Ks;return e.source=this,e},t.create=function(e,t){return new nc(e,t)},t}(Ks),nc=function(e){as(t,e);function t(t,n){var r=e.call(this)||this;return r.destination=t,r.source=n,r}return t.prototype.next=function(e){var t,n;(n=(t=this.destination)?.next)==null||n.call(t,e)},t.prototype.error=function(e){var t,n;(n=(t=this.destination)?.error)==null||n.call(t,e)},t.prototype.complete=function(){var e,t;(t=(e=this.destination)?.complete)==null||t.call(e)},t.prototype._subscribe=function(e){return this.source?.subscribe(e)??ys},t}(tc),rc={now:function(){return(rc.delegate||Date).now()},delegate:void 0},ic=function(e){as(t,e);function t(t,n,r){t===void 0&&(t=1/0),n===void 0&&(n=1/0),r===void 0&&(r=rc);var i=e.call(this)||this;return i._bufferSize=t,i._windowTime=n,i._timestampProvider=r,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,t),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(t){var n=this,r=n.isStopped,i=n._buffer,a=n._infiniteTimeWindow,o=n._timestampProvider,s=n._windowTime;r||(i.push(t),!a&&i.push(o.now()+s)),this._trimBuffer(),e.prototype.next.call(this,t)},t.prototype._subscribe=function(e){this._throwIfClosed(),this._trimBuffer();for(var t=this._innerSubscribe(e),n=this,r=n._infiniteTimeWindow,i=n._buffer.slice(),a=0;a=0}function tl(e){for(var t=[`topLevel`],n=0,r,i,a,o=function(e){return t.push(e)},s=function(e){return t[t.length-1]=e},c=function(e){r??(r=n,i=t.length,a=e)},l=function(e){e===a&&(r=void 0,i=void 0,a=void 0)},u=function(){return t.pop()},d=function(){return n--},f=function(e){if(`0`<=e&&e<=`9`){o(`number`);return}switch(e){case`"`:o(`string`);return;case`-`:o(`numberNeedsDigit`);return;case`t`:o(`true`);return;case`f`:o(`false`);return;case`n`:o(`null`);return;case`[`:o(`arrayNeedsValue`);return;case`{`:o(`objectNeedsKey`);return}},p=e.length;n`9`)&&(d(),u());break;case`numberNeedsDigit`:s(`number`);break;case`numberNeedsExponent`:s(m===`+`||m===`-`?`numberNeedsDigit`:`number`);break;case`true`:case`false`:case`null`:(m<`a`||m>`z`)&&(d(),u());break;case`arrayNeedsValue`:m===`]`?u():el(m)||(l(`collectionItem`),s(`arrayNeedsComma`),f(m));break;case`arrayNeedsComma`:m===`]`?u():m===`,`&&(c(`collectionItem`),s(`arrayNeedsValue`));break;case`objectNeedsKey`:m===`}`?u():m===`"`&&(c(`collectionItem`),s(`objectNeedsColon`),o(`string`));break;case`objectNeedsColon`:m===`:`&&s(`objectNeedsValue`);break;case`objectNeedsValue`:el(m)||(l(`collectionItem`),s(`objectNeedsComma`),f(m));break;case`objectNeedsComma`:m===`}`?u():m===`,`&&(c(`collectionItem`),s(`objectNeedsKey`))}}i!=null&&(t.length=i);for(var h=[r==null?e:e.slice(0,r)],g=function(t){return h.push(t.slice(e.length-e.lastIndexOf(t[0])))},_=t.length-1;_>=0;_--)switch(t[_]){case`string`:h.push(`"`);break;case`numberNeedsDigit`:case`numberNeedsExponent`:h.push(`0`);break;case`true`:g(`true`);break;case`false`:g(`false`);break;case`null`:g(`null`);break;case`arrayNeedsValue`:case`arrayNeedsComma`:h.push(`]`);break;case`objectNeedsKey`:case`objectNeedsColon`:case`objectNeedsValue`:case`objectNeedsComma`:h.push(`}`)}return h.join(``)}function nl(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function rl(e,t=`|`){return e.map(e=>kl(e)).join(t)}function il(e,t){return typeof t==`bigint`?t.toString():t}var al=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function ol(e){return new al(e)}function sl(e){return e==null}function cl(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function ll(e,t){let n=e/t,r=Math.round(n),i=4*2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r){let e=t._zod.def.shape[a];return r?r(e,a):e}):gl(e,a,r?r(n.value,a):n.value))}}function vl(e,t){for(let n of Reflect.ownKeys(t)){let r=Object.getOwnPropertyDescriptor(t,n);r.enumerable&&(r.get?hl(e,n,()=>t[n]):gl(e,n,r.value))}}function yl(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function bl(e){return JSON.stringify(e)}function xl(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var Sl=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function Cl(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var wl=ol(()=>{if(vu.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function Tl(e){if(Cl(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return Cl(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function El(e){return Tl(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var Dl=new Set([`string`,`number`,`symbol`]);function Ol(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function N(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function P(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function kl(e){return typeof e==`bigint`?e.toString()+`n`:typeof e==`string`?`"${e}"`:`${e}`}function Al(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout===`optional`)}var jl={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},Ml={int64:[BigInt(`-9223372036854775808`),BigInt(`9223372036854775807`)],uint64:[BigInt(0),BigInt(`18446744073709551615`)]};function Nl(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);let i={};return _l(i,e,Pl(e,t)),N(e,yl(n,{shape:i,checks:[]}))}function Pl(e,t){let n=ml(e),r=[];for(let e of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(n,e)?.enumerable)throw Error(`Unrecognized key: "${String(e)}"`);t[e]&&r.push(e)}return r}function Fl(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);let i=new Set(Pl(e,t)),a={};return _l(a,e,Reflect.ownKeys(ml(e)).filter(e=>!i.has(e))),N(e,yl(n,{shape:a,checks:[]}))}function Il(e,t){if(!Tl(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=ml(e);for(let e of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return N(e,yl(e._zod.def,{shape:Ll(e,t)}))}function Ll(e,t){let n={};return _l(n,e,Reflect.ownKeys(ml(e))),vl(n,t),n}function Rl(e,t){if(!Tl(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return N(e,yl(e._zod.def,{shape:Ll(e,t)}))}function zl(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);let n={};return _l(n,e,Reflect.ownKeys(ml(e))),_l(n,t,Reflect.ownKeys(ml(t))),N(e,yl(e._zod.def,{shape:n,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function Bl(e,t,n,r=`partial`){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);let a=n?new Set(Pl(t,n)):void 0,o={};return _l(o,t,Reflect.ownKeys(ml(t)),e&&((t,n)=>a&&!a.has(n)?t:new e({type:`optional`,innerType:t}))),N(t,yl(t._zod.def,{shape:o,checks:[]}))}function Vl(e,t,n){let r=n?new Set(Pl(t,n)):void 0,i={};return _l(i,t,Reflect.ownKeys(ml(t)),(t,n)=>r&&!r.has(n)?t:new e({type:`nonoptional`,innerType:t})),N(t,yl(t._zod.def,{shape:i}))}function Hl(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function Gl(e){return typeof e==`string`?e:e?.message}function Kl(e,t,n){var r;for(let i=t;ie;return t[lu]=!0,t}var du,fu=Object.freeze({status:`aborted`}),pu={value:void 0,enumerable:!1},mu=`captureStackTrace`in Error?Error:null;function hu(e){let t=mu;if(t){let n=t.stackTraceLimit;if(typeof n==`number`){try{t.stackTraceLimit=0}catch{return mu=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function I(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits=new Set}a.prototype=i;let o=n,s=o&&new WeakSet;function c(n,r){if(!n._zod){pu.value=new a(r);try{Object.defineProperty(n,"_zod",pu)}finally{pu.value=void 0}}else if(n._zod.traits.has(e))return;if(n._zod.traits.add(e),t(n,r),s){let e=Object.getPrototypeOf(n),t=n._zod.constr.prototype,r=e;for(;r&&r!==t;)r=Object.getPrototypeOf(r);let i=r??e;s.has(i)||(s.add(i),$l(i,o))}let i=d.prototype;for(let e in i)Object.prototype.hasOwnProperty.call(i,e)&&(e in n||(n[e]=i[e].bind(n)))}let l=r?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(e){let t=r?.Parent?hu(u):this;c(t,e);let n=t._zod.deferred;if(n){for(let e of n)e();t._zod.deferred=void 0}let i=globalThis.__zod_globalConfig?.postProcessor;return i&&i(t),t}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:t=>r?.Parent&&t instanceof r.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var gu=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},_u=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(du=globalThis).__zod_globalConfig??(du.__zod_globalConfig={});var vu=globalThis.__zod_globalConfig;function yu(e){return e&&Object.assign(vu,e),vu}function bu(){let e=this._zod;return e.message??=JSON.stringify(e.def,il,2),e.message}function xu(e){this._zod.message=e}var Su={get:bu,set:xu,enumerable:!0,configurable:!0},Cu={value:void 0,enumerable:!1},wu=new WeakSet([Object.prototype,Error.prototype]),Tu=(e,t)=>{e.name=`$ZodError`,Cu.value=t,Object.defineProperty(e,"issues",Cu),Cu.value=void 0,Object.defineProperty(e,"message",Su);let n=Object.getPrototypeOf(e);wu.has(n)||(wu.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let e=()=>this.message;return Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0})}}))},Eu=I(`$ZodError`,Tu);I(`$ZodError`,Tu,void 0,{Parent:Error});function Du(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t===`__proto__`?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function Ou(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?Du(n,i.path[0],()=>[]).push(t(i)):r.push(t(i));return{formErrors:r,fieldErrors:n}}function ku(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i{let t=(n,r,i,a)=>{let o=i?{...i,async:!1}:{async:!1},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new gu;if(s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>ql(e,o,yu())));throw Sl(n,a?.callee??t),n}return s.value};return t},Mu=e=>{let t=async(n,r,i,a)=>{let o=i?{...i,async:!0}:{async:!0},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>ql(e,o,yu())));throw Sl(n,a?.callee??t),n}return s.value};return t},Nu=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new gu;return a.issues.length?Pu(e,a.issues,i):{success:!0,data:a.value}};function Pu(e,t,n){let r;return{success:!1,get error(){return r||(r=new e(t.map(e=>ql(e,n,yu()))),t=void 0,n=void 0),r},set error(e){r=e,t=void 0,n=void 0}}}var Fu=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?Pu(e,a.issues,i):{success:!0,data:a.value}},Iu=Symbol.for(`zod.compile.invalid`),Lu=Symbol.for(`zod.compile.fallback`),Ru=((e,t,n)=>{let r=e._zod.bag.validator;if(r!==void 0){if(r(t)!==Iu)return!0;if(r.definite===!0&&n===void 0)return!1}return zu(e,t,n)});function zu(e,t,n){let r=n?{...n,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},i=e._zod.bag.fallbackRun,a;if(i?(r[Lu]=!0,a=i({value:t,issues:[]},r)):a=e._zod.run({value:t,issues:[]},r),a instanceof Promise)throw new gu;return a.issues.length===0}var Bu=async(e,t,n)=>{let r=n?{...n,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},i=e._zod.run({value:t,issues:[]},r);return i instanceof Promise&&(i=await i),i.issues.length===0},Vu=e=>{let t=ju(e),n=(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return t(e,r,o,Au(n,a))};return n},Hu=e=>{let t=ju(e),n=(e,r,i,a)=>t(e,r,i,Au(n,a));return n},Uu=e=>{let t=Mu(e),n=async(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return await t(e,r,o,Au(n,a))};return n},Wu=e=>{let t=Mu(e),n=async(e,r,i,a)=>await t(e,r,i,Au(n,a));return n},Gu=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Nu(e)(t,n,i)},Ku=e=>(t,n,r)=>Nu(e)(t,n,r),qu=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Fu(e)(t,n,i)},Ju=e=>async(t,n,r)=>Fu(e)(t,n,r),Yu=/^[cC][0-9a-z]{6,}$/,Xu=/^[0-9a-z]+$/,Zu=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,Qu=/^[0-9a-vA-V]{20}$/,$u=/^[A-Za-z0-9]{27}$/,ed=/^[a-zA-Z0-9_-]{21}$/;function td(e){return RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var nd=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,rd=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,id=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,ad=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,od=`^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`;function sd(){return new RegExp(od,`u`)}var cd=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ld=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,ud=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,L=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,R=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,dd=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/,fd=/^https?$/,pd=/^\+[1-9]\d{6,14}$/,md=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`;function hd(e){return RegExp(`^${e}$`)}var gd=hd(md);function _d(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function vd(e){return RegExp(`^${_d(e)}$`)}function yd(e){let t=[`Z`];e.offset&&t.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let n=`${_d({precision:e.precision,seconds:!0})}(?:${t.join(`|`)})`,r=e.local?`${n}|${_d({precision:e.precision})}`:n;return RegExp(`^${md}T(?:${r})$`)}var bd=/^[\s\S]{0,}$/,xd=/^-?\d+$/,Sd=/^-?\d+(?:\.\d+)?$/,Cd=/^(?:true|false)$/i,wd=/^null$/i,Td=/^undefined$/i,Ed=/^[^A-Z]*$/,Dd=/^[^a-z]*$/,Od=I(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),kd=e=>{let t=e.value;return!sl(t)&&t.length!==void 0},Ad={number:`number`,bigint:`bigint`,object:`date`},jd=I(`$ZodCheckLessThan`,(e,t)=>{Od.init(e,t);let n=Ad[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value{Od.init(e,t);let n=Ad[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:Ad[typeof r.value]??n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Nd=I(`$ZodCheckMultipleOf`,(e,t)=>{Od.init(e,t),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):ll(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Pd=I(`$ZodCheckNumberFormat`,(e,t)=>{Od.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=jl[t.format];e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}sa&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Fd=I(`$ZodCheckMaxLength`,(e,t)=>{var n;Od.init(e,t),(n=e._zod.def).when??(n.when=kd),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>t.maximum?Yl(r):i)<=t.maximum)return;let a=Xl(r);n.issues.push({origin:a,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Id=I(`$ZodCheckMinLength`,(e,t)=>{var n;Od.init(e,t),(n=e._zod.def).when??(n.when=kd),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>=t.minimum&&i=t.minimum)return;let a=Xl(r);n.issues.push({origin:a,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Ld=I(`$ZodCheckLengthEquals`,(e,t)=>{var n;Od.init(e,t),(n=e._zod.def).when??(n.when=kd),e._zod.check=n=>{let r=n.value,i=r.length,a=typeof r==`string`&&i>=t.length&&i<=t.length*2?Yl(r):i;if(a===t.length)return;let o=Xl(r),s=a>t.length;n.issues.push({origin:o,...s?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Rd=I(`$ZodCheckStringFormat`,(e,t)=>{var n,r;Od.init(e,t),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),zd=I(`$ZodCheckRegex`,(e,t)=>{Rd.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Bd=I(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=Ed,Rd.init(e,t)}),Vd=I(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Dd,Rd.init(e,t)}),Hd=I(`$ZodCheckIncludes`,(e,t)=>{Od.init(e,t);let n=Ol(t.includes);t.pattern=new RegExp(typeof t.position==`number`?`^.{${t.position},}${n}`:n),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Ud=I(`$ZodCheckStartsWith`,(e,t)=>{Od.init(e,t);let n=RegExp(`^${Ol(t.prefix)}.*`);t.pattern??=n,e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Wd=I(`$ZodCheckEndsWith`,(e,t)=>{Od.init(e,t);let n=RegExp(`.*${Ol(t.suffix)}$`);t.pattern??=n,e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Gd=I(`$ZodCheckOverwrite`,(e,t)=>{Od.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),Kd=class{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}indented(e){this.indent+=1;try{e(this)}finally{--this.indent}}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` +`).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.content??[``];return new e(...Object.keys(this.closed),`return function (${this.args.join(`, `)}) {\n${t.join(` +`)}\n};`)(...Object.values(this.closed))}},qd={major:4,minor:6,patch:5},Jd=I(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=qd;let r=e._zod.def.checks,i=e._zod.traits.has(`$ZodCheck`)?[e,...r??[]]:r?.length?[...r]:[];for(let t of i)for(let n of t._zod.onattach)n(e);if(i.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(t,n,r)=>{if(t.memo)return t;let i=Hl(t),a;for(let o of n){if(o._zod.def.when){if(Ul(t)||!o._zod.def.when(t))continue}else if(i)continue;let n=t.issues.length,s=o._zod.check(t);if(s instanceof Promise&&r?.async===!1)throw new gu;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,t.issues.length!==n&&(Kl(t.issues,n,e),i||=Hl(t,n))});else{if(t.issues.length===n)continue;Kl(t.issues,n,e),i||=Hl(t,n)}}return a?a.then(()=>t):t},n=(n,r,a)=>{if(Hl(n))return n.aborted=!0,n;let o=t(r,i,a);if(o instanceof Promise){if(a.async===!1)throw new gu;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(r,a)=>{if(a.skipChecks)return e._zod.parse(r,a);if(a.direction===`backward`){let t=e._zod.parse({value:r.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,r,a)):n(t,r,a)}let o=e._zod.parse(r,a);if(o instanceof Promise){if(a.async===!1)throw new gu;return o.then(e=>t(e,i,a))}return t(o,i,a)}}},{get"~standard"(){return tu(this,`~standard`,Zd(this))},set"~standard"(e){eu(this,`~standard`,e)}}),Yd=(e,t)=>e.issues.length?{issues:e.issues.map(e=>ql(e,t,yu()))}:{value:e.value};async function Xd(e,t){let n={async:!0};return Yd(await e._zod.run({value:t,issues:[]},n),n)}function Zd(e){return{validate:t=>{let n={async:!1};try{let r=e._zod.run({value:t,issues:[]},n);if(!(r instanceof Promise))return Yd(r,n)}catch{}return Xd(e,t)},vendor:`zod`,version:1}}var Qd=I(`$ZodString`,(e,t)=>{Jd.init(e,t),e._zod.pattern=t.pattern??bd,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),$d=I(`$ZodStringFormat`,(e,t)=>{Rd.init(e,t),Qd.init(e,t)}),ef=I(`$ZodGUID`,(e,t)=>{t.pattern??=rd,$d.init(e,t)}),tf=I(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=id(e)}else t.pattern??=id();$d.init(e,t)}),nf=I(`$ZodEmail`,(e,t)=>{t.pattern??=ad,$d.init(e,t)});function rf(e){try{return typeof URL<`u`&&typeof URL.canParse==`function`?URL.canParse(e):(new URL(e),!0)}catch{return!1}}function af(e,t){return!(`normalize`in t)&&!(`hostname`in t)&&!(`protocol`in t)?rf(e)||2:of(e,t)}function of(e,t){if(!t.normalize&&t.protocol?.source===fd.source&&!/^https?:\/\//i.test(e))return 1;try{if(typeof URL<`u`){let t=URL;if(typeof t.parse==`function`)return t.parse(e)??2}return new URL(e)}catch{return 2}}var sf=/[\t\n\r]/g;function cf(e){return e.replace(sf,``)}function lf(e,t){return t.lastIndex=0,t.test(e.hostname)}function uf(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(`:`)?e.protocol.slice(0,-1):e.protocol)}var df=I(`$ZodURL`,(e,t)=>{$d.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),i=af(r,t);if(i===1){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}if(i===2){n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort});return}if(i===!0){n.value=cf(r);return}t.hostname&&!lf(i,t.hostname)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort}),t.protocol&&!uf(i,t.protocol)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort}),n.value=t.normalize?i.href:cf(r);return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),ff=I(`$ZodEmoji`,(e,t)=>{t.pattern??=sd(),$d.init(e,t)}),pf=I(`$ZodNanoID`,(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw Error(`Invalid nanoid length: ${t.length}`);t.pattern??=t.length===void 0?ed:td(t.length),$d.init(e,t)}),mf=I(`$ZodCUID`,(e,t)=>{t.pattern??=Yu,$d.init(e,t)}),hf=I(`$ZodCUID2`,(e,t)=>{t.pattern??=Xu,$d.init(e,t)}),gf=I(`$ZodULID`,(e,t)=>{t.pattern??=Zu,$d.init(e,t)}),_f=I(`$ZodXID`,(e,t)=>{t.pattern??=Qu,$d.init(e,t)}),vf=I(`$ZodKSUID`,(e,t)=>{t.pattern??=$u,$d.init(e,t)}),yf=I(`$ZodISODateTime`,(e,t)=>{t.pattern??=yd(t),$d.init(e,t)}),bf=I(`$ZodISODate`,(e,t)=>{t.pattern??=gd,$d.init(e,t)}),xf=I(`$ZodISOTime`,(e,t)=>{t.pattern??=vd(t),$d.init(e,t)}),Sf=I(`$ZodISODuration`,(e,t)=>{t.pattern??=nd,$d.init(e,t)}),Cf=I(`$ZodIPv4`,(e,t)=>{t.pattern??=cd,$d.init(e,t)}),wf=/^[0-9a-fA-F:.]+$/;function Tf(e){return wf.test(e)?rf(`http://[${e}]`):!1}var Ef=I(`$ZodIPv6`,(e,t)=>{t.pattern??=ld,$d.init(e,t),e._zod.check=n=>{Tf(n.value)||n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}),Df=I(`$ZodCIDRv4`,(e,t)=>{t.pattern??=ud,$d.init(e,t)});function Of(e){let t=e.split(`/`);if(t.length!==2)return!1;let[n,r]=t;if(!r)return!1;let i=Number(r);return`${i}`!==r||i<0||i>128?!1:Tf(n)}var kf=I(`$ZodCIDRv6`,(e,t)=>{t.pattern??=L,$d.init(e,t),e._zod.check=n=>{Of(n.value)||n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}});function Af(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var jf=/^[0-9a-zA-Z+/]*={0,2}$/,Mf=I(`$ZodBase64`,(e,t)=>{t.pattern??=jf,$d.init(e,t),e._zod.check=n=>{Af(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}}),Nf=/^[A-Za-z0-9_-]*$/;function Pf(e){if(!Nf.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return Af(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var Ff=I(`$ZodBase64URL`,(e,t)=>{t.pattern??=Nf,$d.init(e,t),e._zod.check=n=>{Pf(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),If=I(`$ZodE164`,(e,t)=>{t.pattern??=pd,$d.init(e,t)});function Lf(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var Rf=I(`$ZodJWT`,(e,t)=>{$d.init(e,t),e._zod.check=n=>{Lf(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),zf=I(`$ZodNumber`,(e,t)=>{Jd.init(e,t),e._zod.pattern=Sd,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:String(i):void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),Bf=I(`$ZodNumberFormat`,(e,t)=>{Pd.init(e,t),zf.init(e,t)}),Vf=I(`$ZodBoolean`,(e,t)=>{Jd.init(e,t),e._zod.pattern=Cd,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),Hf=I(`$ZodUndefined`,(e,t)=>{Jd.init(e,t),e._zod.pattern=Td,e._zod.values=new Set([void 0]),e._zod.parse=(t,n)=>{let r=t.value;return r===void 0||t.issues.push({expected:`undefined`,code:`invalid_type`,input:r,inst:e}),t}}),Uf=I(`$ZodNull`,(e,t)=>{Jd.init(e,t),e._zod.pattern=wd,e._zod.values=new Set([null]),e._zod.parse=(t,n)=>{let r=t.value;return r===null||t.issues.push({expected:`null`,code:`invalid_type`,input:r,inst:e}),t}}),Wf=I(`$ZodAny`,(e,t)=>{Jd.init(e,t),e._zod.parse=e=>e}),Gf=I(`$ZodUnknown`,(e,t)=>{Jd.init(e,t),e._zod.parse=e=>e}),Kf=I(`$ZodNever`,(e,t)=>{Jd.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function qf(e,t,n){e.issues.length&&t.issues.push(...Wl(n,e.issues)),t.value[n]=e.value}var Jf=I(`$ZodArray`,(e,t)=>{Jd.init(e,t);let n=vu.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({expected:`array`,code:`invalid_type`,input:a,inst:e}),r;r.value=n?n.alloc(e,r,Array(a.length),i):Array(a.length);let o=[],s=i?.abortEarly;for(let e=0;eqf(t,r,e)));else if(qf(c,r,e),s&&c.issues.length!==0&&Hl(c))break}return o.length?Promise.all(o).then(()=>r):r}});function Yf(e,t,n,r,i,a){let o=n in r,s=a===`optional`;if(o||!s||i!==`optional`){if(e.issues.length){if(i!==void 0&&s&&!o)return;t.issues.push(...Wl(n,e.issues))}if(!o&&i===void 0){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?(o||i===`defaulted`&&!s)&&(t.value[n]=void 0):t.value[n]=e.value}}var Xf=[];function Zf(e){let t=Object.keys(e.shape),n=Object.getOwnPropertySymbols(e.shape),r=n.length?n:Xf,i=r.length?[...t,...r]:t;for(let t of i)if(!e.shape?.[t]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${String(t)}": expected a Zod schema`);let a=Al(e.shape);return{...e,allKeys:i,symbolKeys:r,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(a)}}function Qf(e,t,n,r,i,a,o){let s=[],c=i.keySet,l=i.catchall._zod,u=l.def.type,d=l.optin,f=l.optout,p=0;for(let i in t){if(o&&n.issues.length!==p){if(Hl(n,p))break;p=n.issues.length}if(c.has(i))continue;if(i===`__proto__`){u===`never`&&s.push(i);continue}if(u===`never`){s.push(i);continue}let a=l.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>Yf(e,n,i,t,d,f))):Yf(a,n,i,t,d,f)}return s.length&&n.issues.push({code:`unrecognized_keys`,keys:s,input:t,inst:a,continue:!0}),e.length?Promise.all(e).then(()=>n):n}var $f=I(`$ZodObject`,(e,t)=>{Jd.init(e,t);let n=Object.getOwnPropertyDescriptor(t,`shape`),r=n?.get?n.get.raw:t.shape??{};if(r){let e=()=>{let n={...r};return Object.defineProperty(t,"shape",{value:n}),e.raw=n,n};e.raw=r,Object.defineProperty(t,"shape",{get:e})}let i=ol(()=>Zf(t));F(e,`propValues`,e=>{let t=e.def.shape,n={};for(let e in t){let r=t[e]._zod;if(r.values){Object.prototype.hasOwnProperty.call(n,e)||fl(n,e,new Set);for(let t of r.values)n[e].add(t);r.optin!==void 0&&n[e].add(void 0)}}return n});let a=Cl,o=t.catchall,s,c=vu.memoizer;c?.attach(e),e._zod.parse=(t,n)=>{s??=i.value;let r=t.value;if(!a(r))return t.issues.push({expected:`object`,code:`invalid_type`,input:r,inst:e}),t;t.value=c?c.alloc(e,t,{},n):{};let l=[],u=s.shape,d=n?.abortEarly,f=t.issues.length;for(let e of s.allKeys){if(d&&t.issues.length!==f){if(Hl(t,f))break;f=t.issues.length}if(e===`__proto__`)continue;let i=u[e],a=i._zod.optin,o=i._zod.optout,s=i._zod.run({value:r[e],issues:[]},n);s instanceof Promise?l.push(s.then(n=>Yf(n,t,e,r,a,o))):Yf(s,t,e,r,a,o)}return o?Qf(l,r,t,n,i.value,e,d===!0):l.length?Promise.all(l).then(()=>t):t}}),ep=I(`$ZodObjectJIT`,(e,t)=>{$f.init(e,t);let n=e._zod.parse,r=ol(()=>Zf(t)),i=vu.memoizer,a=t=>{let n=r.value,a=n.symbolKeys,o=new Kd([`payload`,`ctx`],{shape:t,inst:e,memo:i,syms:a}),s=e=>`shape[${e}]._zod.run({ value: input[${e}], issues: [] }, ctx)`,c=(e,t)=>` + let ${e}_ab = false; + for (let i = 0; i < ${e}.issues.length; i++) { + const iss = ${e}.issues[i]; + iss.path = iss.path ? [${t}, ...iss.path] : [${t}]; + payload.issues.push(iss); + if (iss.continue !== true) ${e}_ab = true; + } + if (${e}_ab && ctx && ctx.abortEarly) { + payload.value = newResult; + return payload; + }`;o.write(`const input = payload.value;`);let l=Object.create(null),u=0;for(let e of n.allKeys)l[e]=`key_${u++}`;o.write(i?`const newResult = memo.alloc(inst, payload, {}, ctx);`:`const newResult = {};`);for(let e of n.allKeys){if(e===`__proto__`)continue;let n=l[e],r=typeof e==`symbol`?`syms[${a.indexOf(e)}]`:bl(e),i=`${r} in input`,u=t[e],d=u?._zod?.optin,f=d!==void 0,p=u?._zod?.optout===`optional`;if(o.write(`const ${n} = ${s(r)};`),f&&p){let e=d===`optional`?`${n}_present`:`${n}.value !== undefined || ${n}_present`;o.write(` + const ${n}_present = ${i}; + if (!${n}.issues.length || ${n}_present) { + if (${n}.issues.length) {${c(n,r)} + } + + if (${e}) { + newResult[${r}] = ${n}.value; + } + } + + `)}else f?(o.write(` + if (${n}.issues.length) {${c(n,r)} + } + `),d===`defaulted`?o.write(`newResult[${r}] = ${n}.value;`):o.write(` + if (${n}.value !== undefined || ${i}) { + newResult[${r}] = ${n}.value; + } + `)):o.write(` + const ${n}_present = ${i}; + if (${n}.issues.length) {${c(n,r)} + } + if (!${n}_present && !${n}.issues.length) { + payload.issues.push({ + code: "invalid_type", + expected: "nonoptional", + input: undefined, + path: [${r}] + }); + if (ctx && ctx.abortEarly) { + payload.value = newResult; + return payload; + } + } + + if (${n}_present) { + newResult[${r}] = ${n}.value; + } + + `)}return o.write(`payload.value = newResult;`),o.write(`return payload;`),o.compile()},o,s=Cl,c=!vu.jitless,l=c&&wl.value,u=t.catchall,d;e._zod.parse=(i,f)=>{d??=r.value;let p=i.value;return s(p)?c&&l&&f?.async===!1&&f.jitless!==!0?(o||=a(t.shape),i=o(i,f),u?Qf([],p,i,f,d,e,f?.abortEarly===!0):i):n(i,f):(i.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),i)}});function z(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!Hl(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>ql(e,r,yu())))}),t)}var tp=I(`$ZodUnion`,(e,t)=>{Jd.init(e,t),F(e,`optin`,e=>e.def.options.some(e=>e._zod.optin===`defaulted`)?`defaulted`:e.def.options.some(e=>e._zod.optin!==void 0)?`optional`:void 0),F(e,`optout`,e=>e.def.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),F(e,`values`,e=>{if(e.def.options.every(e=>e._zod.values))return new Set(e.def.options.flatMap(e=>Array.from(e._zod.values)))}),F(e,`pattern`,e=>{if(e.def.options.every(e=>e._zod.pattern)){let t=e.def.options.map(e=>e._zod.pattern);return RegExp(`^(${t.map(e=>cl(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>z(t,r,e,i)):z(o,r,e,i)}});function np(e){let t=new Map;for(let n of e.options){let r=n._zod.propValues?.[e.discriminator];if(!r||r.size===0)throw Error(`Invalid discriminated union option at index "${e.options.indexOf(n)}"`);for(let e of r)if(t.has(e)){if(e!==void 0)throw Error(`Duplicate discriminator value "${String(e)}"`);t.set(e,null)}else t.set(e,n)}return t}var rp=I(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,tp.init(e,t);let n=e._zod.parse;F(e,`propValues`,e=>{let t={},n=0;for(let r of e.def.options){let i=r._zod.propValues;if(!i||Object.keys(i).length===0)throw Error(`Invalid discriminated union option at index "${e.def.options.indexOf(r)}"`);i[e.def.discriminator]?.has(void 0)&&n++;for(let[e,n]of Object.entries(i)){Object.prototype.hasOwnProperty.call(t,e)||fl(t,e,new Set);for(let r of n)t[e].add(r)}}return!e.def.unionFallback&&n>1&&t[e.def.discriminator]?.delete(void 0),t}),t.options.forEach((e,n)=>{let r=pl(e._zod.def);if(r&&!Object.prototype.hasOwnProperty.call(r,t.discriminator))throw Error(`Invalid discriminated union option at index "${n}"`)});let r=ol(()=>np(t));e._zod.parse=(i,a)=>{let o=i.value;if(!Cl(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=o?.[t.discriminator],c=r.value.get(s);return c&&(s!==void 0||a.direction!==`backward`)?c._zod.run(i,a):t.unionFallback||a.direction===`backward`?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,options:Array.from(r.value.keys()).filter(e=>r.value.get(e)!==null),input:o,path:[t.discriminator],inst:e}),i)}}),ip=I(`$ZodIntersection`,(e,t)=>{Jd.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>op(e,t,n)):op(e,i,a)}});function ap(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(Tl(e)&&Tl(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};Object.prototype.hasOwnProperty.call(i,`__proto__`)&&delete i.__proto__;for(let n of r){if(n===`__proto__`)continue;let r=ap(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r{let n;if(e.code===`unrecognized_keys`&&!e.path?.length)i??=e,n=e.keys;else if(e.code===`invalid_key`&&e.origin===`record`&&e.path?.length===1){let t=String(e.path[0]);a.has(t)||a.set(t,e),n=[t]}else return!1;for(let e of n)r.has(e)||r.set(e,{}),r.get(e)[t]=!0;return!0};for(let n of t.issues)o(n,`l`)||e.issues.push(n);for(let t of n.issues)o(t,`r`)||e.issues.push(t);let s=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(s.length){let t=i?s.filter(e=>i.keys.includes(e)):[];t.length&&e.issues.push({...i,keys:t});for(let n of s)!t.includes(n)&&a.has(n)&&e.issues.push(a.get(n))}let c=ap(t.value,n.value);if(!c.valid){if(Hl(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}var sp=I(`$ZodRecord`,(e,t)=>{Jd.init(e,t);let n=vu.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Tl(a))return r.issues.push({expected:`record`,code:`invalid_type`,input:a,inst:e}),r;let o=[],s=t.keyType._zod.values;if(s&&!t.partial){r.value=n?n.alloc(e,r,{},i):{};let c=new Set;for(let n of s)if(typeof n==`string`||typeof n==`number`||typeof n==`symbol`){if(c.add(typeof n==`number`?n.toString():n),n===`__proto__`)continue;let s=t.keyType._zod.run({value:n,issues:[]},i);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(s.issues.length){r.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>ql(e,i,yu())),input:n,path:[n],inst:e});continue}let l=s.value;if(l===`__proto__`)continue;let u=t.valueType._zod.run({value:a[n],issues:[]},i);u instanceof Promise?o.push(u.then(e=>{e.issues.length&&r.issues.push(...Wl(n,e.issues)),r.value[l]=e.value})):(u.issues.length&&r.issues.push(...Wl(n,u.issues)),r.value[l]=u.value)}let l;for(let e in a)if(!c.has(e)){if(t.mode===`loose`){if(e===`__proto__`)continue;r.value[e]=a[e]}else l??=[],l.push(e)}l&&l.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:l,continue:!0})}else{r.value=n?n.alloc(e,r,{},i):{};let c;for(let n of Reflect.ownKeys(a)){if(n===`__proto__`||!Object.prototype.propertyIsEnumerable.call(a,n))continue;let l=t.keyType._zod.run({value:n,issues:[]},i);if(l instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(typeof n==`string`&&Sd.test(n)&&l.issues.length){let e=t.keyType._zod.run({value:Number(n),issues:[]},i);if(e instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);e.issues.length===0&&(l=e)}if(l.issues.length){t.mode===`loose`?r.value[n]=a[n]:s?(c??=[],c.push(n)):r.issues.push({code:`invalid_key`,origin:`record`,issues:l.issues.map(e=>ql(e,i,yu())),input:n,path:[n],inst:e});continue}let u=l.value;if(u===`__proto__`)continue;let d=t.valueType._zod.run({value:a[n],issues:[]},i);d instanceof Promise?o.push(d.then(e=>{e.issues.length&&r.issues.push(...Wl(n,e.issues)),r.value[u]=e.value})):(d.issues.length&&r.issues.push(...Wl(n,d.issues)),r.value[u]=d.value)}c&&c.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:c,continue:!0})}return o.length?Promise.all(o).then(()=>r):r}}),cp=I(`$ZodEnum`,(e,t)=>{Jd.init(e,t);let n=nl(t.entries),r=new Set(n);e._zod.values=r,F(e,`pattern`,e=>{let t=nl(e.def.entries).filter(e=>Dl.has(typeof e));return RegExp(t.length?`^(${t.map(e=>Ol(e.toString())).join(`|`)})$`:`^[^\\s\\S]$`)}),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),lp=I(`$ZodLiteral`,(e,t)=>{Jd.init(e,t);let n=new Set(t.values);e._zod.values=n,F(e,`pattern`,e=>{let t=e.def.values;return RegExp(t.length?`^(${t.map(e=>typeof e==`string`?Ol(e):e?Ol(e.toString()):String(e)).join(`|`)})$`:`^[^\\s\\S]$`)}),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),up=I(`$ZodTransform`,(e,t)=>{Jd.init(e,t),e._zod.optin=`optional`,vu.memoizer?.guard(e),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new _u(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n));if(i instanceof Promise)throw new gu;return n.value=i,n}});function dp(e,t){return e.value=t.issues.length?void 0:t.value,e}var fp=I(`$ZodOptional`,(e,t)=>{Jd.init(e,t),F(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),e._zod.optout=`optional`,F(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t,void 0]):void 0}),F(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${cl(t.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(e.value===void 0){if(t.innerType._zod.optin!==`defaulted`)return e;let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(t=>dp(e,t)):dp(e,r)}return t.innerType._zod.run(e,n)}}),pp=I(`$ZodExactOptional`,(e,t)=>{fp.init(e,t),F(e,`values`,e=>e.def.innerType._zod.values),F(e,`pattern`,e=>e.def.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),mp=I(`$ZodNullable`,(e,t)=>{Jd.init(e,t),F(e,`optin`,e=>e.def.innerType._zod.optin),F(e,`optout`,e=>e.def.innerType._zod.optout),F(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${cl(t.source)}|null)$`):void 0}),F(e,`values`,e=>e.def.innerType._zod.values?new Set([...e.def.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),hp=I(`$ZodDefault`,(e,t)=>{Jd.init(e,t),e._zod.optin=`defaulted`,F(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>gp(e,t)):gp(r,t)}});function gp(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var _p=I(`$ZodPrefault`,(e,t)=>{Jd.init(e,t),e._zod.optin=`defaulted`,F(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),vp=I(`$ZodNonOptional`,(e,t)=>{Jd.init(e,t),F(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>yp(t,e)):yp(i,e)}});function yp(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}function bp(e,t,n,r){return t.issues.length?(e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map(e=>ql(e,r,yu()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}var xp=I(`$ZodCatch`,(e,t)=>{Jd.init(e,t),F(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),F(e,`optout`,e=>e.def.innerType._zod.optout),F(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(r=>bp(e,r,t,n)):bp(e,r,t,n)}}),Sp=I(`$ZodPipe`,(e,t)=>{Jd.init(e,t),F(e,`values`,e=>e.def.in._zod.values),F(e,`optin`,e=>e.def.in._zod.optin),F(e,`optout`,e=>e.def.out._zod.optout),F(e,`propValues`,e=>e.def.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>Cp(e,t.in,n)):Cp(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>Cp(e,t.out,n)):Cp(r,t.out,n)}});function Cp(e,t,n){return e.issues.some(e=>e.code!==`unrecognized_keys`)?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}var wp=I(`$ZodPreprocess`,(e,t)=>{Sp.init(e,t)}),Tp=I(`$ZodReadonly`,(e,t)=>{Jd.init(e,t),F(e,`propValues`,e=>e.def.innerType._zod.propValues),F(e,`values`,e=>e.def.innerType._zod.values),F(e,`optin`,e=>e.def.innerType?._zod?.optin),F(e,`optout`,e=>e.def.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Ep):Ep(r)}});function Ep(e){return e.memo||(e.value=Object.freeze(e.value)),e}var Dp=I(`$ZodLazy`,(e,t)=>{Jd.init(e,t),dl(e._zod,`innerType`,()=>{let e=t;return e._cachedInner||=t.getter(),e._cachedInner}),F(e,`pattern`,e=>e.innerType?._zod?.pattern),F(e,`propValues`,e=>e.innerType?._zod?.propValues),F(e,`optin`,e=>e.innerType?._zod?.optin??void 0),F(e,`optout`,e=>e.innerType?._zod?.optout??void 0),e._zod.parse=(t,n)=>e._zod.innerType._zod.run(t,n)}),Op=I(`$ZodCustom`,(e,t)=>{Od.init(e,t),Jd.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>kp(t,n,r,e));kp(i,n,r,e)}});function kp(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(Ql(e))}}var Ap=class extends Error{constructor(){super(`Cannot parse a reference cycle that closes through a transform`),this.name=`ZodCyclicError`}},jp=`~memo`,Mp=[];function Np(e){return typeof e==`object`&&!!e}function Pp(e){return e.map(e=>e.path?{...e,path:e.path.slice()}:{...e})}var Fp=new WeakMap,Ip=0,Lp=1,Rp=2;function zp(e,t,n){let r=Fp.get(e);if(r!==void 0)return r?Rp:Ip;if(t.has(e))return Rp;t.add(e);let i=Ip,a=e=>{if(i!==Rp&&e?._zod){let r=zp(e,t,n);r>i&&(i=r)}},o=(e,r)=>{let i=Ip;for(let a of Reflect.ownKeys(e)){let o=Object.getOwnPropertyDescriptor(e,a);if(r&&!o.enumerable)continue;let s=o.get?Lp:o.value?._zod?zp(o.value,t,n):Ip;s>i&&(i=s)}return i},s=e=>{e>i&&(i=e)},c=e._zod.def;switch(c.type){case`object`:{let e=pl(c);s(e?o(e,!0):Lp),a(c.catchall);break}case`array`:a(c.element);break;case`tuple`:for(let e of c.items)a(e);a(c.rest);break;case`record`:case`map`:a(c.keyType),a(c.valueType);break;case`set`:a(c.valueType);break;case`union`:for(let e of c.options)a(e);break;case`intersection`:a(c.left),a(c.right);break;case`optional`:case`nullable`:case`default`:case`prefault`:case`catch`:case`readonly`:case`nonoptional`:case`promise`:case`success`:a(c.innerType);break;case`pipe`:a(c.in),a(c.out);break;case`function`:a(c.input),a(c.output);break;case`lazy`:{let r=c._cachedInner??(n?e._zod.innerType:void 0);s(r?zp(r,t,!1):Lp);break}case`template_literal`:case`string`:case`number`:case`int`:case`boolean`:case`bigint`:case`symbol`:case`undefined`:case`null`:case`void`:case`never`:case`any`:case`unknown`:case`date`:case`nan`:case`enum`:case`literal`:case`file`:case`transform`:case`custom`:break;default:for(let e in c){let t=Object.getOwnPropertyDescriptor(c,e);if(!t||t.get)continue;let n=t.value;if(n&&typeof n==`object`){if(n._zod)a(n);else if(Array.isArray(n))for(let e of n)a(e)}}}return t.delete(e),Bp(e,i)}function Bp(e,t){return t!==Lp&&Fp.set(e,t===Rp),t}function Vp(e,t){let n=e.buckets.get(t);return n||(n=new WeakMap,e.buckets.set(t,n)),n}var Hp,Up=[],Wp={alloc(e,t,n){let r=Hp;if(!r)return n;Hp=void 0;let i={value:n,issues:null};return r.set(t.value,i),Up.push(i),n},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,n=(e,n)=>{if(n.direction!==`backward`&&Kp(n,e.value))throw new Ap;return t(e,n)};e._zod.parse=n,e._zod.run===t&&(e._zod.run=n)})},attach(e){var t;let n,r=!1,i,a;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,o=(s,c)=>{if(n===void 0){let i=zp(e,new Set,!1);if(i===Ip)return e._zod.parse=t,e._zod.run===o&&(e._zod.run=t),t(s,c);i===Rp||r?n=!0:r=!0}let l=s.value;if(!Np(l))return t(s,c);let u=c[jp];u||(u={buckets:new WeakMap,backEdges:void 0},c[jp]=u);let d;i===c?d=a:(d=Vp(u,e),i=c,a=d);let f=d.get(l);if(f)return s.value=f.value,f.issues?f.issues.length&&s.issues.push(...Pp(f.issues)):(s.memo=!0,u.backEdges??(u.backEdges=new WeakSet),u.backEdges.add(f.value)),s;Hp=d;let p=Up.length,m=t(s,c);Hp=void 0;let h=Up.length>p?Up.pop():void 0;return m instanceof Promise?m.then(e=>(h&&(h.issues=e.issues.length?Pp(e.issues):Mp),e)):(h&&(h.issues=m.issues.length?Pp(m.issues):Mp),m)};e._zod.parse=o,e._zod.run===t&&(e._zod.run=o)})}};function Gp(){return Wp}function Kp(e,t){let n=e[jp]?.backEdges;return n!==void 0&&Np(t)&&n.has(t)}var qp=()=>{let e={string:{unit:`characters`,verb:`to have`},file:{unit:`bytes`,verb:`to have`},array:{unit:`items`,verb:`to have`},set:{unit:`items`,verb:`to have`},map:{unit:`entries`,verb:`to have`}};function t(t){return e[t]??null}let n={regex:`input`,email:`email address`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datetime`,date:`ISO date`,time:`ISO time`,duration:`ISO duration`,ipv4:`IPv4 address`,ipv6:`IPv6 address`,mac:`MAC address`,cidrv4:`IPv4 range`,cidrv6:`IPv6 range`,base64:`base64-encoded string`,base64url:`base64url-encoded string`,json_string:`JSON string`,e164:`E.164 number`,currency_code:`currency code`,credit_card:`credit card number`,iban:`IBAN`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`};function i(e,t){return e===`number`&&typeof t==`number`&&!Number.isFinite(t)?String(t):r[e]??e}return e=>{switch(e.code){case`invalid_type`:return`Invalid input: expected ${i(e.expected)}, received ${i(Zl(e.input),e.input)}`;case`invalid_value`:return e.values.length===1?`Invalid input: expected ${kl(e.values[0])}`:`Invalid option: expected one of ${rl(e.values,`|`)}`;case`too_big`:{let n=e.exact?`exactly `:e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Too big: expected ${e.origin??`value`} to have ${n}${e.maximum.toString()} ${r.unit??`elements`}`:`Too big: expected ${e.origin??`value`} to be ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.exact?`exactly `:e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Too small: expected ${e.origin} to have ${n}${e.minimum.toString()} ${r.unit}`:`Too small: expected ${e.origin} to be ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Invalid string: must start with "${t.prefix}"`:t.format===`ends_with`?`Invalid string: must end with "${t.suffix}"`:t.format===`includes`?`Invalid string: must include "${t.includes}"`:t.format===`regex`?`Invalid string: must match pattern ${t.pattern}`:`Invalid ${n[t.format]??e.format}`}case`not_multiple_of`:return`Invalid number: must be a multiple of ${e.divisor}`;case`unrecognized_keys`:return`Unrecognized key${e.keys.length>1?`s`:``}: ${rl(e.keys,`, `)}`;case`invalid_key`:return`Invalid key in ${e.origin}`;case`invalid_union`:return e.options&&Array.isArray(e.options)&&e.options.length>0?`Invalid discriminator value. Expected ${e.options.map(e=>`'${e}'`).join(` | `)}`:e.inclusive===!1?`Invalid input: more than one option matched`:`Invalid input`;case`invalid_element`:return`Invalid value in ${e.origin}`;default:return`Invalid input`}}};function Jp(){return{localeError:qp()}}var Yp,Xp=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function Zp(){return new Xp}(Yp=globalThis).__zod_globalRegistry??(Yp.__zod_globalRegistry=Zp());var Qp=globalThis.__zod_globalRegistry;function $p(e){return e.checks&&=[...e.checks],e}function em(e,t){return new e($p({type:`string`,...P(t)}))}function tm(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...P(t)})}function nm(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...P(t)})}function rm(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...P(t)})}function im(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...P(t)})}function am(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...P(t)})}function om(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...P(t)})}function sm(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...P(t)})}function cm(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...P(t)})}function lm(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...P(t)})}function um(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...P(t)})}function dm(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...P(t)})}function fm(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...P(t)})}function pm(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...P(t)})}function mm(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...P(t)})}function hm(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...P(t)})}function gm(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...P(t)})}function _m(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...P(t)})}function vm(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...P(t)})}function ym(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...P(t)})}function bm(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...P(t)})}function xm(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...P(t)})}function Sm(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...P(t)})}function Cm(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...P(t)})}function wm(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...P(t)})}function Tm(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...P(t)})}function Em(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...P(t)})}function Dm(e,t){return new e($p({type:`number`,checks:[],...P(t)}))}function Om(e,t){return new e($p({type:`number`,coerce:!0,checks:[],...P(t)}))}function km(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...P(t)})}function Am(e,t){return new e({type:`boolean`,...P(t)})}function jm(e,t){return new e({type:`undefined`,...P(t)})}function Mm(e,t){return new e({type:`null`,...P(t)})}function Nm(e){return new e({type:`any`})}function Pm(e){return new e({type:`unknown`})}function Fm(e,t){return new e({type:`never`,...P(t)})}function Im(e,t){return new jd({check:`less_than`,...P(t),value:e,inclusive:!1})}function Lm(e,t){return new jd({check:`less_than`,...P(t),value:e,inclusive:!0})}function Rm(e,t){return new Md({check:`greater_than`,...P(t),value:e,inclusive:!1})}function zm(e,t){return new Md({check:`greater_than`,...P(t),value:e,inclusive:!0})}function Bm(e,t){return new Nd({check:`multiple_of`,...P(t),value:e})}function Vm(e,t){return new Fd({check:`max_length`,...P(t),maximum:e})}function Hm(e,t){return new Id({check:`min_length`,...P(t),minimum:e})}function Um(e,t){return new Ld({check:`length_equals`,...P(t),length:e})}function Wm(e,t){return new zd({check:`string_format`,format:`regex`,...P(t),pattern:e})}function Gm(e){return new Bd({check:`string_format`,format:`lowercase`,...P(e)})}function Km(e){return new Vd({check:`string_format`,format:`uppercase`,...P(e)})}function qm(e,t){return new Hd({check:`string_format`,format:`includes`,...P(t),includes:e})}function Jm(e,t){return new Ud({check:`string_format`,format:`starts_with`,...P(t),prefix:e})}function Ym(e,t){return new Wd({check:`string_format`,format:`ends_with`,...P(t),suffix:e})}function Xm(e){return new Gd({check:`overwrite`,tx:e})}function Zm(e){return Xm(t=>t.normalize(e))}function Qm(){return Xm(e=>e.trim())}function $m(){return Xm(e=>e.toLowerCase())}function eh(){return Xm(e=>e.toUpperCase())}function th(){return Xm(e=>xl(e))}function nh(e,t,n){return new e({type:`array`,element:t,...P(n)})}function rh(e,t,n){let r=P(n);return r.abort??=!0,new e({type:`custom`,check:`custom`,fn:t,...r})}function ih(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...P(n)})}function ah(e,t){let n=oh(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(Ql(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,`input`in r||(r.input=t.value),r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(Ql(r))}},e(t.value,t)),t);return n}function oh(e,t){let n=new Od({check:`custom`,...P(t)});return n._zod.check=e,n}function sh(e,...t){for(let n of t)for(let t of Reflect.ownKeys(n))Object.prototype.propertyIsEnumerable.call(n,t)&&fl(e,t,n[t]);return e}function ch(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??Qp,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,intersections:[],deferred:[],external:e?.external??void 0}}function lh(e,t,n,r,i){let a=typeof t.unrepresentable==`function`?t.unrepresentable({zodSchema:e,path:r.path,message:i}):t.unrepresentable;if(a===`any`)return!1;if(a===void 0||a===`throw`)throw Error(i);return Object.assign(n,a),!0}function uh(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,uh(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&sh(o.schema,c),t.io===`input`&&bh(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function dh(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function fh(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);if(e.external&&e.sharedDefsExtractedFor===e.external)return;let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${dh(a)}`}}let i=`#/${r}/`;if(t[1]===n&&!t[1].schema.id)return{ref:`#`};let a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+dh(a)}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/ + +Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}r.count>1&&e.reused===`ref`&&a(n)}e.external&&(e.sharedDefsExtractedFor=e.external)}function ph(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let e of t){if(!e||typeof e!=`object`)return;ph(e);let t=Object.keys(e);if(t.length!==1||t[0]!==`type`)return;let r=e.type;for(let e of Array.isArray(r)?r:[r]){if(typeof e!=`string`)return;n.includes(e)||n.push(e)}}delete e.anyOf,e.type=n.length===1?n[0]:n}var mh=new Set([`type`,`properties`,`required`,`additionalProperties`]),hh=[`oneOf`,`anyOf`];function gh(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function _h(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!mh.has(e))return null;t.push(n)}let n={},r=new Set;for(let e of t){for(let r in e.properties){if(Object.prototype.hasOwnProperty.call(n,r))continue;let e=[];for(let n of t){let t=n.properties?.[r]??gh(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}fl(n,r,e.length===1?e[0]:_h(e)??{allOf:e})}for(let t of e.required??[])r.add(t)}let i={type:`object`,properties:n};if(r.size&&(i.required=[...r]),t.every(e=>e.additionalProperties===!1))i.additionalProperties=!1;else{let e=[];for(let n of t){let t=gh(n);t&&!e.some(e=>JSON.stringify(e)===JSON.stringify(t))&&e.push(t)}e.length===1?i.additionalProperties=e[0]:e.length>1&&(i.additionalProperties={allOf:e})}return i}function vh(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of mh)if(t in e)return;let n=t.filter(e=>hh.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=_h(t);else{let e=n[0],i=hh.find(t=>Array.isArray(e[t]));if(Object.keys(e).length!==1)return;let a=t.filter(t=>t!==e),o=e[i].map(e=>_h([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,sh(e,r))}function yh(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):sh(i,s),sh(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let t of[...e.seen.entries()].reverse())r(t[0]);if(e.target!==`openapi-3.0`)for(let t of e.seen.entries())ph(t[1].def??t[1].schema);for(let t of e.deferred)t();if(e.intersections.length){let t=new Map;for(let n of e.seen.values())for(let e of[n.schema,n.def]){let n=e?.allOf;if(!Array.isArray(n))continue;let r=t.get(n);r?r.push(e):t.set(n,[e])}for(let n of e.intersections)for(let e of t.get(n)??[])vh(e)}}let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}sh(i,n.defId?n.schema:n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,fl(o,e.defId,e.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:Sh(t,`input`,e.processors),output:Sh(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function bh(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return bh(r.element,n);if(r.type===`set`)return bh(r.valueType,n);if(r.type===`lazy`)return bh(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`||r.type===`catch`)return bh(r.innerType,n);if(r.type===`intersection`)return bh(r.left,n)||bh(r.right,n);if(r.type===`record`||r.type===`map`)return bh(r.keyType,n)||bh(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:bh(r.in,n)||bh(r.out,n);if(r.type===`object`){for(let e in r.shape)if(bh(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(bh(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(bh(e,n))return!0;return!!(r.rest&&bh(r.rest,n))}return!1}var xh=(e,t={})=>n=>{let r=ch({...n,processors:t});return uh(e,r),fh(r,e),yh(r,e)},Sh=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=ch({...i??{},target:a,io:t,processors:n});return uh(e,o),fh(o,e),yh(o,e)},Ch=(e,t,n)=>{(e[t]===void 0||n>e[t])&&(e[t]=n)},wh=(e,t,n)=>{(e[t]===void 0||n{Ch(e,`minimum`,t),wh(e,`maximum`,t)},Eh=(e,t)=>{e.multipleOf??=[],e.multipleOf.includes(t)||e.multipleOf.push(t)},Dh=(e,t)=>{e.patterns??=new Set,e.patterns.add(t)},Oh=(e,t)=>{e.mime=e.mime?e.mime.filter(e=>t.includes(e)):[...t]},kh=(e,t)=>{e.format=t,t.includes(`int`)&&(e.isInt=!0)},Ah=(e,t)=>Ch(e,`minimum`,t.minimum),jh=(e,t)=>wh(e,`maximum`,t.maximum),Mh=e=>(t,n)=>{kh(t,n.format);let[r,i]=e[n.format];Ch(t,`minimum`,r),wh(t,`maximum`,i)},Nh={greater_than:(e,t)=>Ch(e,t.inclusive?`minimum`:`exclusiveMinimum`,t.value),less_than:(e,t)=>wh(e,t.inclusive?`maximum`:`exclusiveMaximum`,t.value),multiple_of:(e,t)=>Eh(e,t.value),number_format:Mh(jl),bigint_format:Mh(Ml),min_length:Ah,max_length:jh,length_equals:(e,t)=>Th(e,t.length),min_size:Ah,max_size:jh,size_equals:(e,t)=>Th(e,t.size),string_format:(e,t)=>{kh(e,t.format),t.pattern&&Dh(e,t.pattern),(t.format===`base64`||t.format===`base64url`)&&(e.contentEncoding=t.format),(t.local||t.precision===-1)&&(e.laxFormat=!0)},mime_type:(e,t)=>Oh(e,t.mime)};function Ph(e){let t={},n=e._zod.def,r=e._zod.traits.has(`$ZodCheck`)?[e,...n.checks??[]]:n.checks??[];for(let e of r)Nh[e._zod.def.check]?.(t,e._zod.def);let i=e._zod.bag;i.minimum!==void 0&&Ch(t,`minimum`,i.minimum),i.exclusiveMinimum!==void 0&&Ch(t,`exclusiveMinimum`,i.exclusiveMinimum),i.maximum!==void 0&&wh(t,`maximum`,i.maximum),i.exclusiveMaximum!==void 0&&wh(t,`exclusiveMaximum`,i.exclusiveMaximum),i.multipleOf!==void 0&&Eh(t,i.multipleOf),i.format!==void 0&&(t.format??=i.format,i.format.includes(`int`)&&(t.isInt=!0)),i.mime&&Oh(t,i.mime);for(let e of i.patterns??[])Dh(t,e);return t}var Fh={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},Ih=new Map([[jf,R],[Nf,dd]]),Lh=e=>Ih.get(e)??e,Rh=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l,laxFormat:u}=Ph(e);if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=Fh[s]??s,i.format===``&&delete i.format,(s===`time`||u)&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c].map(Lh);e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},zh=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,multipleOf:s,exclusiveMaximum:c,exclusiveMinimum:l,isInt:u}=Ph(e);i.type=u?`integer`:`number`;let d=typeof l==`number`&&l>=(a??-1/0),f=typeof c==`number`&&c<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;if(d?p?(i.minimum=l,i.exclusiveMinimum=!0):i.exclusiveMinimum=l:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=c,i.exclusiveMaximum=!0):i.exclusiveMaximum=c:typeof o==`number`&&(i.maximum=o),s){let n=new Set;for(let a of s)Number.isFinite(a)&&a!==0?n.add(Math.abs(a)):lh(e,t,i,r,`A multipleOf divisor of ${a} cannot be represented in JSON Schema`);let[a,...o]=n;a!==void 0&&(i.multipleOf=a),o.length&&(i.allOf=[...i.allOf??[],...o.map(e=>({multipleOf:e}))])}},Bh=(e,t,n,r)=>{n.type=`boolean`},Vh=(e,t,n,r)=>{lh(e,t,n,r,`BigInt cannot be represented in JSON Schema`)},Hh=(e,t,n,r)=>{lh(e,t,n,r,`Symbols cannot be represented in JSON Schema`)},Uh=(e,t,n,r)=>{t.target===`openapi-3.0`?(n.type=`string`,n.nullable=!0,n.enum=[null]):n.type=`null`},Wh=(e,t,n,r)=>{lh(e,t,n,r,`Undefined cannot be represented in JSON Schema`)},Gh=(e,t,n,r)=>{lh(e,t,n,r,`Void cannot be represented in JSON Schema`)},Kh=(e,t,n,r)=>{n.not={}},qh=(e,t,n,r)=>{},Jh=(e,t,n,r)=>{},Yh=(e,t,n,r)=>{lh(e,t,n,r,`Date cannot be represented in JSON Schema`)},Xh=(e,t,n,r)=>{let i=e._zod.def,a=nl(i.entries);if(a.length===0){n.not={};return}a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},Zh=(e,t,n,r)=>{let i=e._zod.def;if(i.values.length===0){n.not={};return}let a=[];for(let o of i.values)if(o===void 0){if(lh(e,t,n,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof o==`bigint`){if(lh(e,t,n,r,`BigInt literals cannot be represented in JSON Schema`))return;a.push(Number(o))}else a.push(o);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},Qh=(e,t,n,r)=>{lh(e,t,n,r,`NaN cannot be represented in JSON Schema`)},$h=(e,t,n,r)=>{let i=n,a=e._zod.pattern;if(!a)throw Error(`Pattern not found in template literal`);i.type=`string`,i.pattern=a.source},eg=(e,t,n,r)=>{let i=n;i.type=`string`,i.format=`binary`,i.contentEncoding=`binary`;let{minimum:a,maximum:o,mime:s}=Ph(e);a!==void 0&&(i.minLength=a),o!==void 0&&(i.maxLength=o),s&&(s.length===0?i.not={}:s.length===1?i.contentMediaType=s[0]:i.anyOf=s.map(e=>({contentMediaType:e})))},tg=(e,t,n,r)=>{n.type=`boolean`},ng=(e,t,n,r)=>{lh(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},rg=(e,t,n,r)=>{lh(e,t,n,r,`Function types cannot be represented in JSON Schema`)},ig=(e,t,n,r)=>{lh(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},ag=(e,t,n,r)=>{lh(e,t,n,r,`Map cannot be represented in JSON Schema`)},og=(e,t,n,r)=>{lh(e,t,n,r,`Set cannot be represented in JSON Schema`)},sg=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=Ph(e);typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=uh(a.element,t,{...r,path:[...r.path,`items`]})};function cg(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?cg(t.out):t.type===`catch`?cg(t.innerType):e._zod.optin}var lg=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&lh(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)fl(i.properties,e,uh(o[e],t,{...r,path:[...r.path,`properties`,e]}));let s=[];for(let e of Object.keys(o)){let n=a.shape[e];(t.io===`input`?cg(n)===void 0:n._zod.optout===void 0)&&s.push(e)}s.length>0&&(i.required=s),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=uh(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},ug=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>uh(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},dg=(e,t,n,r)=>{let i=e._zod.def,a=uh(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=uh(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1,c=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]];n.allOf=c,t.intersections.push(c)},fg=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`array`;let o=t.target===`draft-2020-12`?`prefixItems`:`items`,s=t.target===`draft-2020-12`||t.target===`openapi-3.0`?`items`:`additionalItems`,c=a.items.map((e,n)=>uh(e,t,{...r,path:[...r.path,o,n]})),l=a.rest?uh(a.rest,t,{...r,path:[...r.path,s,...t.target===`openapi-3.0`?[a.items.length]:[]]}):null,u=a.items.length;for(;u>0;){let e=a.items[u-1];if(!(t.io===`input`?cg(e)!==void 0:e._zod.optout===`optional`))break;u--}let d=a.items.length,f=!a.rest;t.target===`draft-2020-12`?(i.prefixItems=c,f?i.items=!1:l&&(i.items=l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):t.target===`openapi-3.0`?(i.items={anyOf:c},l&&i.items.anyOf.push(l),u>0&&(i.minItems=u),f&&(i.maxItems=d)):(i.items=c,f?i.additionalItems=!1:l&&(i.additionalItems=l),u>0&&(i.minItems=u),f&&(i.maxItems=d));let{minimum:p,maximum:m}=Ph(e);typeof p==`number`&&(i.minItems=p),typeof m==`number`&&(i.maxItems=m)};function pg(e,t,n){if(t.$ref){if(n.has(t))return t;n.add(t);let r=e.get(t)?.def;if(!r)return t;let i=pg(e,r,n);return i===r?t:i}for(let r of[`anyOf`,`oneOf`]){let i=t[r];if(!Array.isArray(i))continue;let a=i.map(t=>pg(e,t,n));a.some((e,t)=>e!==i[t])&&(t={...t,[r]:a})}let r=Array.isArray(t.type)?t.type:[t.type],i=!r.includes(`string`)&&r.some(e=>e===`number`||e===`integer`),a=t.enum??(t.const===void 0?void 0:[t.const]);if(!i&&!a?.some(e=>typeof e==`number`))return t;let{minimum:o,maximum:s,exclusiveMinimum:c,exclusiveMaximum:l,multipleOf:u,format:d,id:f,...p}=t;return p.enum?p.enum=p.enum.map(e=>typeof e==`number`?String(e):e):typeof p.const==`number`&&(p.const=String(p.const)),i?(p.type=`string`,a||(p.pattern=(r.includes(`number`)?Sd:xd).source),p):p}var mg=new WeakMap;function hg(e){let t=new Map;for(let n of e.seen.values())n.def&&!t.has(n.schema)&&t.set(n.schema,n);let n=new Map;for(let r of mg.get(e)??[]){let i=e.seen.get(r),a=(i?.def??i?.schema)?.propertyNames;if(!a||a===!0||n.has(a))continue;let o=pg(t,a,new Set);o!==a&&n.set(a,o)}if(n.size)for(let t of e.seen.values())for(let e of[t.schema,t.def]){let t=e&&n.get(e.propertyNames);t&&(e.propertyNames=t)}}var gg=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=Ph(o).patterns;if(a.mode===`loose`&&s&&s.size>0){let e=uh(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)fl(i.patternProperties,Lh(t).source,e)}else{if(t.target===`draft-07`||t.target===`draft-2020-12`){i.propertyNames=uh(a.keyType,t,{...r,path:[...r.path,`propertyNames`]});let n=mg.get(t);n||(n=[],mg.set(t,n),t.deferred.push(()=>hg(t))),n.push(e)}i.additionalProperties=uh(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]})}let c=o._zod.values,l=t.io===`input`&&cg(a.valueType)!==void 0;if(c&&!a.partial&&!l){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e.map(String))}},_g=(e,t,n,r)=>{let i=e._zod.def,a=uh(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},vg=(e,t,n,r)=>{let i=e._zod.def;uh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},yg=Symbol();function bg(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?(lh(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),yg):JSON.parse(o)}var xg=(e,t,n,r)=>{let i=e._zod.def;uh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=bg(i.defaultValue,e,t,n,r);o!==yg&&(n.default=o)},Sg=(e,t,n,r)=>{let i=e._zod.def;uh(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=bg(i.defaultValue,e,t,n,r);o!==yg&&(n._prefault=o)},Cg=(e,t,n,r)=>{let i=e._zod.def;uh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{lh(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},wg=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;uh(o,t,r);let s=t.seen.get(e);s.ref=o},Tg=(e,t,n,r)=>{let i=e._zod.def;uh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},Eg=(e,t,n,r)=>{let i=e._zod.def;uh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Dg=(e,t,n,r)=>{let i=e._zod.def;uh(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Og=(e,t,n,r)=>{let i=e._zod.innerType;uh(i,t,r);let a=t.seen.get(e);a.ref=i},kg={string:Rh,number:zh,boolean:Bh,bigint:Vh,symbol:Hh,null:Uh,undefined:Wh,void:Gh,never:Kh,any:qh,unknown:Jh,date:Yh,enum:Xh,literal:Zh,nan:Qh,template_literal:$h,file:eg,success:tg,custom:ng,function:rg,transform:ig,map:ag,set:og,array:sg,object:lg,union:ug,intersection:dg,tuple:fg,record:gg,nullable:_g,nonoptional:vg,default:xg,prefault:Sg,catch:Cg,pipe:wg,readonly:Tg,promise:Eg,optional:Dg,lazy:Og};function Ag(e,t){if(`_idmap`in e){let n=e,r=ch({...t,processors:kg}),i={};for(let e of n._idmap.entries()){let[t,n]=e;uh(n,r)}let a={};r.external={registry:n,uri:t?.uri,defs:i};for(let e of n._idmap.entries()){let[t,n]=e;fh(r,n),fl(a,t,yh(r,n))}return Object.keys(i).length>0&&(a.__shared={[r.target===`draft-2020-12`?`$defs`:`definitions`]:i}),{schemas:a}}let n=ch({...t,processors:kg});return uh(e,n),fh(n,e),yh(n,e)}var jg=new WeakSet([Object.prototype,Error.prototype]);function Mg(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let e=n(this);return Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0})}})}var Ng=I(`ZodError`,(e,t)=>{Eu.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);jg.has(n)||(jg.add(n),Mg(n,`format`,e=>t=>ku(e,t)),Mg(n,`flatten`,e=>t=>Ou(e,t)),Mg(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,il,2)}),Mg(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,il,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),Pg=ju(Ng),Fg=Mu(Ng),Ig=Nu(Ng),Lg=Fu(Ng),Rg=Vu(Ng),zg=Hu(Ng),Bg=Uu(Ng),Vg=Wu(Ng),Hg=Gu(Ng),Ug=Ku(Ng),Wg=qu(Ng),Gg=Ju(Ng);function Kg(){vu.localeError||yu(Jp())}function qg(){vu.memoizer||yu({memoizer:Gp()})}var Jg=I(`ZodType`,(e,t)=>(Kg(),Jd.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(yl(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return N(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(Sv(e,t))},superRefine(e,t){return this.check(Cv(e,t))},overwrite(e){return this.check(Xm(e))},optional(){return ev(this)},exactOptional(){return nv(this)},nullable(){return iv(this)},nullish(){return ev(iv(this))},nonoptional(e){return uv(this,e)},array(){return L_(this)},or(e){return V_([this,e])},and(e){return G_(this,e)},transform(e){return mv(this,Q_(e))},default(e){return ov(this,e)},prefault(e){return cv(this,e)},catch(e){return fv(this,e)},pipe(e){return mv(this,e)},readonly(){return _v(this)},describe(e){let t=this.clone();return Qp.add(t,{description:e}),t},meta(...e){if(e.length===0)return Qp.get(this);let t=this.clone();return Qp.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return tu(this,`~standard`,{...Zd(this),jsonSchema:{input:Sh(this,`input`),output:Sh(this,`output`)}})},set"~standard"(e){eu(this,`~standard`,e)},parse:function e(t,n){return Pg(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await Fg(this,t,n,{callee:e})},safeParse(e,t){return Ig(this,e,t)},async safeParseAsync(e,t){return Lg(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){eu(this,`spa`,e)},validate(e,t){return Ru(this,e,t)},validateAsync(e,t){return Bu(this,e,t)},encode:function e(t,n){return Rg(this,t,n,{callee:e})},decode:function e(t,n){return zg(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await Bg(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await Vg(this,t,n,{callee:e})},safeEncode(e,t){return Hg(this,e,t)},safeDecode(e,t){return Ug(this,e,t)},async safeEncodeAsync(e,t){return Wg(this,e,t)},async safeDecodeAsync(e,t){return Gg(this,e,t)},toJSONSchema(e){return xh(this,{})(e)},get description(){return Qp.get(this)?.description},get _def(){return this._zod.def}}),Yg=I(`_ZodString`,(e,t)=>{Qd.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Rh(e,t,n,r)},nu({format:e=>Ph(e).format??null,minLength:e=>Ph(e).minimum??null,maxLength:e=>Ph(e).maximum??null},{regex(...e){return this.check(Wm(...e))},includes(...e){return this.check(qm(...e))},startsWith(...e){return this.check(Jm(...e))},endsWith(...e){return this.check(Ym(...e))},min(...e){return this.check(Hm(...e))},max(...e){return this.check(Vm(...e))},length(...e){return this.check(Um(...e))},nonempty(...e){return this.check(Hm(1,...e))},lowercase(e){return this.check(Gm(e))},uppercase(e){return this.check(Km(e))},trim(){return this.check(Qm())},normalize(...e){return this.check(Zm(...e))},toLowerCase(){return this.check($m())},toUpperCase(){return this.check(eh())},slugify(){return this.check(th())}})),Xg=I(`ZodString`,(e,t)=>{Qd.init(e,t),Yg.init(e,t)},{email(e){return this.check(tm(n_,e))},url(e){return this.check(sm(o_,e))},jwt(e){return this.check(Sm(S_,e))},emoji(e){return this.check(cm(c_,e))},guid(e){return this.check(nm(i_,e))},uuid(e){return this.check(rm(a_,e))},uuidv4(e){return this.check(im(a_,e))},uuidv6(e){return this.check(am(a_,e))},uuidv7(e){return this.check(om(a_,e))},nanoid(e){return this.check(lm(l_,e))},cuid(e){return this.check(um(u_,e))},cuid2(e){return this.check(dm(d_,e))},ulid(e){return this.check(fm(f_,e))},base64(e){return this.check(ym(y_,e))},base64url(e){return this.check(bm(b_,e))},xid(e){return this.check(pm(p_,e))},ksuid(e){return this.check(mm(m_,e))},ipv4(e){return this.check(hm(h_,e))},ipv6(e){return this.check(gm(g_,e))},cidrv4(e){return this.check(_m(__,e))},cidrv6(e){return this.check(vm(v_,e))},e164(e){return this.check(xm(x_,e))},datetime(e){return this.check(Cm(Qg,e))},date(e){return this.check(wm($g,e))},time(e){return this.check(Tm(e_,e))},duration(e){return this.check(Em(t_,e))}});function B(e){return em(Xg,e)}var Zg=I(`ZodStringFormat`,(e,t)=>{$d.init(e,t),Yg.init(e,t)}),Qg=I(`ZodISODateTime`,(e,t)=>{yf.init(e,t),Zg.init(e,t)}),$g=I(`ZodISODate`,(e,t)=>{bf.init(e,t),Zg.init(e,t)}),e_=I(`ZodISOTime`,(e,t)=>{xf.init(e,t),Zg.init(e,t)}),t_=I(`ZodISODuration`,(e,t)=>{Sf.init(e,t),Zg.init(e,t)}),n_=I(`ZodEmail`,(e,t)=>{nf.init(e,t),Zg.init(e,t)});function r_(e){return tm(n_,e)}var i_=I(`ZodGUID`,(e,t)=>{ef.init(e,t),Zg.init(e,t)}),a_=I(`ZodUUID`,(e,t)=>{tf.init(e,t),Zg.init(e,t)}),o_=I(`ZodURL`,(e,t)=>{df.init(e,t),Zg.init(e,t)});function s_(e){return sm(o_,e)}var c_=I(`ZodEmoji`,(e,t)=>{ff.init(e,t),Zg.init(e,t)}),l_=I(`ZodNanoID`,(e,t)=>{pf.init(e,t),Zg.init(e,t)}),u_=I(`ZodCUID`,(e,t)=>{mf.init(e,t),Zg.init(e,t)}),d_=I(`ZodCUID2`,(e,t)=>{hf.init(e,t),Zg.init(e,t)}),f_=I(`ZodULID`,(e,t)=>{gf.init(e,t),Zg.init(e,t)}),p_=I(`ZodXID`,(e,t)=>{_f.init(e,t),Zg.init(e,t)}),m_=I(`ZodKSUID`,(e,t)=>{vf.init(e,t),Zg.init(e,t)}),h_=I(`ZodIPv4`,(e,t)=>{Cf.init(e,t),Zg.init(e,t)}),g_=I(`ZodIPv6`,(e,t)=>{Ef.init(e,t),Zg.init(e,t)}),__=I(`ZodCIDRv4`,(e,t)=>{Df.init(e,t),Zg.init(e,t)}),v_=I(`ZodCIDRv6`,(e,t)=>{kf.init(e,t),Zg.init(e,t)}),y_=I(`ZodBase64`,(e,t)=>{Mf.init(e,t),Zg.init(e,t)}),b_=I(`ZodBase64URL`,(e,t)=>{Ff.init(e,t),Zg.init(e,t)}),x_=I(`ZodE164`,(e,t)=>{If.init(e,t),Zg.init(e,t)}),S_=I(`ZodJWT`,(e,t)=>{Rf.init(e,t),Zg.init(e,t)}),C_=I(`ZodNumber`,(e,t)=>{zf.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>zh(e,t,n,r),e.isFinite=!0},nu({minValue:e=>{let{minimum:t,exclusiveMinimum:n}=Ph(e);return Math.max(t??-1/0,n??-1/0)},maxValue:e=>{let{maximum:t,exclusiveMaximum:n}=Ph(e);return Math.min(t??1/0,n??1/0)},isInt:e=>{let{isInt:t,multipleOf:n}=Ph(e);return!!t||!!n?.some(Number.isSafeInteger)},format:e=>Ph(e).format??null},{gt(e,t){return this.check(Rm(e,t))},gte(e,t){return this.check(zm(e,t))},min(e,t){return this.check(zm(e,t))},lt(e,t){return this.check(Im(e,t))},lte(e,t){return this.check(Lm(e,t))},max(e,t){return this.check(Lm(e,t))},int(e){return this.check(V(e))},safe(e){return this.check(V(e))},positive(e){return this.check(Rm(0,e))},nonnegative(e){return this.check(zm(0,e))},negative(e){return this.check(Im(0,e))},nonpositive(e){return this.check(Lm(0,e))},multipleOf(e,t){return this.check(Bm(e,t))},step(e,t){return this.check(Bm(e,t))},finite(){return this}}));function w_(e){return Dm(C_,e)}var T_=I(`ZodNumberFormat`,(e,t)=>{Bf.init(e,t),C_.init(e,t)});function V(e){return km(T_,e)}var E_=I(`ZodBoolean`,(e,t)=>{Vf.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Bh(e,t,n,r)});function H(e){return Am(E_,e)}var D_=I(`ZodUndefined`,(e,t)=>{Hf.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Wh(e,t,n,r)});function O_(e){return jm(D_,e)}var k_=I(`ZodNull`,(e,t)=>{Uf.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Uh(e,t,n,r)});function A_(e){return Mm(k_,e)}var j_=I(`ZodAny`,(e,t)=>{Wf.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function U(){return Nm(j_)}var M_=I(`ZodUnknown`,(e,t)=>{Gf.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function N_(){return Pm(M_)}var P_=I(`ZodNever`,(e,t)=>{Kf.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Kh(e,t,n,r)});function F_(e){return Fm(P_,e)}var I_=I(`ZodArray`,(e,t)=>{qg(),Jf.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>sg(e,t,n,r),e.element=t.element},{min(e,t){return this.check(Hm(e,t))},nonempty(e){return this.check(Hm(1,e))},max(e,t){return this.check(Vm(e,t))},length(e,t){return this.check(Um(e,t))},unwrap(){return this.element}});function L_(e,t){return nh(I_,e,t)}var R_=I(`ZodObject`,(e,t)=>{qg(),ep.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>lg(e,t,n,r),cu(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return Y_(Object.keys(this._zod.def.shape))},catchall(e){return this.clone(yl(this._zod.def,{catchall:e}))},passthrough(){return this.clone(yl(this._zod.def,{catchall:N_()}))},loose(){return this.clone(yl(this._zod.def,{catchall:N_()}))},strict(){return this.clone(yl(this._zod.def,{catchall:F_()}))},strip(){return this.clone(yl(this._zod.def,{catchall:void 0}))},extend(e){return Il(this,e)},safeExtend(e){return Rl(this,e)},merge(e){return zl(this,e)},pick(e){return Nl(this,e)},omit(e){return Fl(this,e)},partial(...e){return Bl($_,this,e[0])},exactPartial(...e){return Bl(tv,this,e[0],`exactPartial`)},required(...e){return Vl(lv,this,e[0])}});function z_(e,t){return new R_({type:`object`,shape:e??{},...P(t)})}function W(e,t){return new R_({type:`object`,shape:e,catchall:N_(),...P(t)})}var B_=I(`ZodUnion`,(e,t)=>{tp.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ug(e,t,n,r),e.options=t.options});function V_(e,t){return new B_({type:`union`,options:e,...P(t)})}var H_=I(`ZodDiscriminatedUnion`,(e,t)=>{B_.init(e,t),rp.init(e,t)});function U_(e,t,n){return new H_({type:`union`,options:t,discriminator:e,...P(n)})}var W_=I(`ZodIntersection`,(e,t)=>{ip.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>dg(e,t,n,r)});function G_(e,t){return new W_({type:`intersection`,left:e,right:t})}var K_=I(`ZodRecord`,(e,t)=>{qg(),sp.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>gg(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function q_(e,t,n){return!t||!t._zod?new K_({type:`record`,keyType:B(),valueType:e,...P(t)}):new K_({type:`record`,keyType:e,valueType:t,...P(n)})}var J_=I(`ZodEnum`,(e,t)=>{cp.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Xh(e,t,n,r),e.enum=t.entries,e.options=[...e._zod.values];let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new J_({...t,checks:[],...P(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new J_({...t,checks:[],...P(r),entries:i})}});function Y_(e,t){return new J_({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...P(t)})}var X_=I(`ZodLiteral`,(e,t)=>{lp.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Zh(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function G(e,t){return new X_({type:`literal`,values:Array.isArray(e)?e:[e],...P(t)})}var Z_=I(`ZodTransform`,(e,t)=>{qg(),up.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ig(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new _u(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(Ql(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,`input`in t||(t.input=n.value),t.inst??=e,n.issues.push(Ql(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function Q_(e){return new Z_({type:`transform`,transform:e})}var $_=I(`ZodOptional`,(e,t)=>{fp.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Dg(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function ev(e){return new $_({type:`optional`,innerType:e})}var tv=I(`ZodExactOptional`,(e,t)=>{pp.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Dg(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function nv(e){return new tv({type:`optional`,innerType:e})}var rv=I(`ZodNullable`,(e,t)=>{mp.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>_g(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function iv(e){return new rv({type:`nullable`,innerType:e})}var av=I(`ZodDefault`,(e,t)=>{hp.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xg(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function ov(e,t){return new av({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():El(t)}})}var sv=I(`ZodPrefault`,(e,t)=>{_p.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Sg(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function cv(e,t){return new sv({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():El(t)}})}var lv=I(`ZodNonOptional`,(e,t)=>{vp.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>vg(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function uv(e,t){return new lv({type:`nonoptional`,innerType:e,...P(t)})}var dv=I(`ZodCatch`,(e,t)=>{xp.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Cg(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function fv(e,t){return new dv({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:uu(t)})}var pv=I(`ZodPipe`,(e,t)=>{Sp.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>wg(e,t,n,r),e.in=t.in,e.out=t.out});function mv(e,t){return new pv({type:`pipe`,in:e,out:t})}var hv=I(`ZodPreprocess`,(e,t)=>{pv.init(e,t),wp.init(e,t)}),gv=I(`ZodReadonly`,(e,t)=>{Tp.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Tg(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function _v(e){return new gv({type:`readonly`,innerType:e})}var vv=I(`ZodLazy`,(e,t)=>{Dp.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Og(e,t,n,r),e.unwrap=()=>e._zod.def.getter()});function yv(e){return new vv({type:`lazy`,getter:e})}var bv=I(`ZodCustom`,(e,t)=>{Op.init(e,t),Jg.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ng(e,t,n,r)});function xv(e,t){return rh(bv,e??(()=>!0),t)}function Sv(e,t={}){return ih(bv,e,t)}function Cv(e,t){return ah(e,t)}function wv(e,t){return new hv({type:`pipe`,in:Q_(e),out:t})}var Tv=Y_(k),K=xv(e=>typeof e==`object`&&!!e&&!Array.isArray(e)),q=B(),Ev=Y_([`developer`,`system`,`assistant`,`user`]),Dv=W({type:G(k.TEXT_MESSAGE_START),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B(),role:Ev.optional(),name:B().optional()}),Ov=W({type:G(k.TEXT_MESSAGE_CONTENT),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B(),delta:B()}),kv=W({type:G(k.TEXT_MESSAGE_END),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B()}),Av=W({type:G(k.TEXT_MESSAGE_CHUNK),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B().optional(),role:Ev.optional(),delta:B().optional(),name:B().optional()}),jv=W({type:G(k.TOOL_CALL_START),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),toolCallId:B(),toolCallName:B(),parentMessageId:B().optional()}),Mv=W({type:G(k.TOOL_CALL_ARGS),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),toolCallId:B(),delta:B()}),Nv=W({type:G(k.TOOL_CALL_END),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),toolCallId:B()}),Pv=W({type:G(k.TOOL_CALL_CHUNK),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),toolCallId:B().optional(),toolCallName:B().optional(),parentMessageId:B().optional(),delta:B().optional()}),Fv=W({type:G(`text`),id:B().optional(),text:B(),metadata:U().refine(e=>e!==null).optional()}),Iv=U_(`type`,[W({type:G(`data`),value:B(),mimeType:B()}),W({type:G(`url`),value:B(),mimeType:B().optional()}),W({type:G(`file`),value:B(),provider:B().optional(),mimeType:B().optional()})]),Lv=U_(`type`,[Fv,W({type:G(`image`),id:B().optional(),source:Iv,metadata:U().refine(e=>e!==null).optional()}),W({type:G(`audio`),id:B().optional(),source:Iv,metadata:U().refine(e=>e!==null).optional()}),W({type:G(`video`),id:B().optional(),source:Iv,metadata:U().refine(e=>e!==null).optional()}),W({type:G(`document`),id:B().optional(),source:Iv,metadata:U().refine(e=>e!==null).optional()})]),Rv=W({type:G(k.TOOL_CALL_RESULT),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B(),toolCallId:B(),content:V_([B(),L_(Lv)]),role:G(`tool`).optional()}),zv=U(),Bv=W({type:G(k.STATE_SNAPSHOT),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),snapshot:zv.refine(e=>e!==void 0)}),Vv=B().regex(RegExp(`^(/([^/~]|~[01])*)*$`)),Hv=L_(U_(`op`,[W({op:G(`add`),path:Vv,value:U().refine(e=>e!==void 0)}).meta({specOpen:!0}),W({op:G(`remove`),path:Vv}).meta({specOpen:!0}),W({op:G(`replace`),path:Vv,value:U().refine(e=>e!==void 0)}).meta({specOpen:!0}),W({op:G(`move`),from:Vv,path:Vv}).meta({specOpen:!0}),W({op:G(`copy`),from:Vv,path:Vv}).meta({specOpen:!0}),W({op:G(`test`),path:Vv,value:U().refine(e=>e!==void 0)}).meta({specOpen:!0})])),Uv=W({type:G(k.STATE_DELTA),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),delta:Hv}),Wv=W({subagentRunId:q.optional(),id:B(),role:G(`developer`),name:B().optional(),encryptedValue:B().optional(),metadata:K.optional(),content:B()}),Gv=W({subagentRunId:q.optional(),id:B(),role:G(`system`),name:B().optional(),encryptedValue:B().optional(),metadata:K.optional(),content:B()}),Kv=W({name:B(),arguments:B()}),qv=W({id:B(),type:G(`function`),function:Kv,encryptedValue:B().optional(),metadata:K.optional()}),Jv=U_(`role`,[Wv,Gv,W({subagentRunId:q.optional(),id:B(),role:G(`assistant`),name:B().optional(),encryptedValue:B().optional(),metadata:K.optional(),content:B().optional(),toolCalls:L_(qv).optional()}),W({subagentRunId:q.optional(),id:B(),role:G(`user`),name:B().optional(),encryptedValue:B().optional(),metadata:K.optional(),content:V_([B(),L_(Lv)])}),W({subagentRunId:q.optional(),id:B(),role:G(`tool`),content:V_([B(),L_(Lv)]),toolCallId:B(),error:B().optional(),encryptedValue:B().optional(),metadata:K.optional()}),W({subagentRunId:q.optional(),id:B(),role:G(`activity`),activityType:B(),content:xv(e=>typeof e==`object`&&!!e&&!Array.isArray(e)),metadata:K.optional()}),W({subagentRunId:q.optional(),id:B(),role:G(`reasoning`),content:B(),encryptedValue:B().optional(),metadata:K.optional()})]),Yv=W({type:G(k.MESSAGES_SNAPSHOT),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),messages:L_(Jv)}),Xv=W({type:G(k.ACTIVITY_SNAPSHOT),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B(),activityType:B(),content:xv(e=>typeof e==`object`&&!!e&&!Array.isArray(e)),replace:H().optional()}),Zv=W({type:G(k.ACTIVITY_DELTA),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B(),activityType:B(),patch:Hv}),Qv=W({type:G(k.RAW),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),event:U().refine(e=>e!==void 0),source:B().optional()}),$v=W({type:G(k.CUSTOM),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),name:B(),value:U().refine(e=>e!==void 0)}),ey=W({name:B(),description:B(),parameters:U().refine(e=>e!==null).optional(),metadata:K.optional()}),ty=W({description:B(),value:B()}),ny=W({interruptId:B(),status:Y_([`resolved`,`cancelled`]),payload:U().refine(e=>e!==null).optional(),metadata:K.optional()}),ry=W({threadId:B(),runId:B(),protocolVersion:B().optional(),parentRunId:B().optional(),state:zv.refine(e=>e!==null).nullable().transform(e=>e??void 0).optional(),messages:L_(Jv),tools:L_(ey).default(()=>[]),context:L_(ty).default(()=>[]),forwardedProps:U().refine(e=>e!==null).optional(),resume:L_(ny).optional()}),iy=W({type:G(k.RUN_STARTED),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),threadId:B(),runId:B(),protocolVersion:B().optional(),parentRunId:B().optional(),input:ry.optional()}),ay=W({type:G(`success`),pendingToolCallIds:L_(B()).optional()}),oy=W({subagentRunId:q.optional(),id:B(),reason:B(),message:B().optional(),toolCallId:B().optional(),responseSchema:xv(e=>typeof e==`object`&&!!e&&!Array.isArray(e)).optional(),expiresAt:B().optional(),metadata:K.optional()}),sy=U_(`type`,[ay,W({type:G(`interrupt`),interrupts:L_(oy).min(1)}),W({type:G(`cancelled`)})]),cy=W({provider:B().optional(),model:B().optional(),inputTokens:V().min(0).max(9007199254740991).optional(),outputTokens:V().min(0).max(9007199254740991).optional(),totalTokens:V().min(0).max(9007199254740991).optional(),reasoningTokens:V().min(0).max(9007199254740991).optional(),cachedInputTokens:V().min(0).max(9007199254740991).optional(),cacheWriteInputTokens:V().min(0).max(9007199254740991).optional()}),ly=W({type:G(k.RUN_FINISHED),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),threadId:B(),runId:B(),result:U().refine(e=>e!==null).optional(),outcome:sy.optional(),usage:L_(cy).optional()}),uy=W({type:G(k.RUN_ERROR),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),message:B(),code:B().optional(),usage:L_(cy).optional()}),dy=W({type:G(k.STEP_STARTED),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),stepName:B()}),fy=W({type:G(k.STEP_FINISHED),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),stepName:B()}),py=W({type:G(k.REASONING_START),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B()}),my=W({type:G(k.REASONING_MESSAGE_START),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B(),role:G(`reasoning`)}),hy=W({type:G(k.REASONING_MESSAGE_CONTENT),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B(),delta:B()}),gy=W({type:G(k.REASONING_MESSAGE_END),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B()}),_y=W({type:G(k.REASONING_MESSAGE_CHUNK),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B().optional(),delta:B().optional()}),vy=W({type:G(k.REASONING_END),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),messageId:B()}),yy=Y_([`tool-call`,`message`]),by=W({type:G(k.REASONING_ENCRYPTED_VALUE),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q.optional(),subtype:yy,entityId:B(),encryptedValue:B()}),xy=W({type:G(k.SUBAGENT_STARTED),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q,name:B(),description:B().optional(),parentSubagentRunId:q.optional(),parentToolCallId:B().optional(),parentMessageId:B().optional()}),Sy=U_(`type`,[W({type:G(`success`)}),W({type:G(`suspended`),interruptIds:L_(B()).optional()})]),Cy=U_(`type`,[Dv,Ov,kv,Av,jv,Mv,Nv,Pv,Rv,Bv,Uv,Yv,Xv,Zv,Qv,$v,iy,ly,uy,dy,fy,py,my,hy,gy,_y,vy,by,xy,W({type:G(k.SUBAGENT_FINISHED),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q,result:U().refine(e=>e!==null).optional(),outcome:Sy.optional()}),W({type:G(k.SUBAGENT_ERROR),timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional(),subagentRunId:q,message:B(),code:B().optional()})]);Y_([`developer`,`system`,`assistant`,`user`,`tool`,`activity`,`reasoning`]);var wy=W({name:B(),description:B().optional()}),Ty=W({name:B().optional(),type:B().optional(),description:B().optional(),version:B().optional(),provider:B().optional(),documentationUrl:B().optional(),metadata:K.optional()}),Ey=W({streaming:H().optional(),websocket:H().optional(),httpBinary:H().optional(),pushNotifications:H().optional(),resumable:H().optional()}),Dy=W({supported:H().optional(),items:L_(ey).optional(),parallelCalls:H().optional(),clientProvided:H().optional()}),Oy=W({structuredOutput:H().optional(),supportedMimeTypes:L_(B()).optional()}),ky=W({snapshots:H().optional(),deltas:H().optional(),memory:H().optional(),persistentState:H().optional()}),Ay=W({supported:H().optional(),delegation:H().optional(),handoffs:H().optional(),subagents:L_(wy).optional()}),jy=W({supported:H().optional(),streaming:H().optional(),encrypted:H().optional()}),My=W({image:H().optional(),audio:H().optional(),video:H().optional(),pdf:H().optional(),file:H().optional()}),Ny=W({image:H().optional(),audio:H().optional()}),Py=W({input:My.optional(),output:Ny.optional()}),Fy=W({codeExecution:H().optional(),sandboxed:H().optional(),maxIterations:V().min(0).max(9007199254740991).optional(),maxExecutionTime:V().min(0).max(9007199254740991).optional()}),Iy=W({supported:H().optional(),approvals:H().optional(),interventions:H().optional(),feedback:H().optional(),interrupts:H().optional(),approveWithEdits:H().optional()});W({identity:Ty.optional(),transport:Ey.optional(),tools:Dy.optional(),output:Oy.optional(),state:ky.optional(),multiAgent:Ay.optional(),reasoning:jy.optional(),multimodal:Py.optional(),execution:Fy.optional(),humanInTheLoop:Iy.optional(),custom:xv(e=>typeof e==`object`&&!!e&&!Array.isArray(e)).optional()}),W({subagentRunId:q.optional()}),W({type:Tv,timestamp:V().min(-9007199254740991).max(9007199254740991).optional(),rawEvent:U().refine(e=>e!==null).optional(),metadata:K.optional()}),W({subagentRunId:q.optional(),id:B(),role:B(),name:B().optional(),encryptedValue:B().optional(),metadata:K.optional()}),K.optional();function Ly(){let e=this.buf,t=this.pos,n=0,r=0;for(let i=0;i<28;i+=7){let a=e[t++];if(n|=(a&127)<>4,!(i&128)){this.pos=t,this.assertBounds(),this.varint64Lo=n,this.varint64Hi=r;return}for(let i=3;i<=31;i+=7){let a=e[t++];if(r|=(a&127)<=Ry&&(i+=r/Ry|0,r%=Ry)}return a(-24,-18),a(-18,-12),a(-12,-6),a(-6),t?Wy(r,i):Uy(r,i)}function By(e,t){let n=Uy(e,t),r=n.hi&2147483648;r&&(n=Wy(n.lo,n.hi));let i=Vy(n.lo,n.hi);return r?`-`+i:i}function Vy(e,t){if({lo:e,hi:t}=Hy(e,t),t<=2097151)return String(Ry*t+e);let n=e&16777215,r=(e>>>24|t<<8)&16777215,i=t>>16&65535,a=n+r*6777216+i*6710656,o=r+i*8147497,s=i*2,c=1e7;return a>=c&&(o+=Math.floor(a/c),a%=c),o>=c&&(s+=Math.floor(o/c),o%=c),s.toString()+Gy(o)+Gy(a)}function Hy(e,t){return{lo:e>>>0,hi:t>>>0}}function Uy(e,t){return{lo:e|0,hi:t|0}}function Wy(e,t){return t=~t,e?e=~e+1:t+=1,Uy(e,t)}var Gy=e=>{let t=String(e);return`0000000`.slice(t.length)+t};function Ky(){let e=this.buf[this.pos++];if(!(e&128))return this.assertBounds(),e;let t=e&127;if(e=this.buf[this.pos++],t|=(e&127)<<7,!(e&128)||(e=this.buf[this.pos++],t|=(e&127)<<14,!(e&128))||(e=this.buf[this.pos++],t|=(e&127)<<21,!(e&128)))return this.assertBounds(),t;e=this.buf[this.pos++],t|=(e&15)<<28;for(let t=5;e&128&&t<10;t++)e=this.buf[this.pos++];if(e&128)throw Error(`invalid varint`);return this.assertBounds(),t>>>0}var qy=Jy();function Jy(){let e=new DataView(new ArrayBuffer(8));if(typeof BigInt==`function`&&typeof e.getBigInt64==`function`&&typeof e.getBigUint64==`function`&&typeof e.setBigInt64==`function`&&typeof e.setBigUint64==`function`&&(globalThis.Deno||globalThis.Bun||typeof process!=`object`||{}.BUF_BIGINT_DISABLE!==`1`)){let t=BigInt(`-9223372036854775808`),n=BigInt(`9223372036854775807`),r=BigInt(`0`),i=BigInt(`18446744073709551615`);return{zero:BigInt(0),supported:!0,parse(e){let r=typeof e==`bigint`?e:BigInt(e);if(r>n||ri||ta.call(e)),Qy(i)}return Zy}function eb(e){return(t,n)=>{let r=e(t);return n.set(r),{written:r.byteLength}}}var tb;(function(e){e[e.Varint=0]=`Varint`,e[e.Bit64=1]=`Bit64`,e[e.LengthDelimited=2]=`LengthDelimited`,e[e.StartGroup=3]=`StartGroup`,e[e.EndGroup=4]=`EndGroup`,e[e.Bit32=5]=`Bit32`})(tb||={});var J=class{constructor(e){this.stackPos=[],this.encodeUtf8Into=e?eb(e):$y().encodeUtf8Into,this.buffer=ib,this.viewCache=ab,this.pos=0}ensureCapacity(e){let t=this.pos+e;if(t>this.buffer.length){let e=this.buffer.length||nb;for(;e0&&n.set(this.buffer),this.buffer=n}}view(){let e=this.buffer,t=this.viewCache;if(t.byteLength===e.byteLength)return t;let n=new DataView(e.buffer);return this.viewCache=n,n}finish(){let e=this.buffer.slice(0,this.pos);return this.pos=0,this.stackPos=[],e}fork(){return this.stackPos.push(this.pos),this.ensureCapacity(rb),this.buffer[this.pos++]=0,this}join(){let e=this.stackPos.pop();if(e===void 0)throw Error(`invalid state, fork stack empty`);let t=this.pos-e-rb,n=sb(t);return n>rb&&(this.ensureCapacity(n-rb),this.buffer.copyWithin(e+n,e+rb,this.pos)),this.pos=e,this.uint32(t),this.pos+=t,this}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.ensureCapacity(e.length),this.buffer.set(e,this.pos),this.pos+=e.length,this}uint32(e){if(lb(e),this.ensureCapacity(5),e<128)return this.buffer[this.pos++]=e,this;for(;e>127;)this.buffer[this.pos++]=e&127|128,e>>>=7;return this.buffer[this.pos++]=e,this}int32(e){if(cb(e),e>=0)return this.uint32(e);this.ensureCapacity(10);for(let t=0;t<9;t++)this.buffer[this.pos++]=e&127|128,e>>=7;return this.buffer[this.pos++]=1,this}bool(e){return this.ensureCapacity(1),this.buffer[this.pos++]=+!!e,this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){typeof e!=`string`&&(e=String(e));let t=e.length;if(t<=ob){this.ensureCapacity(t+1);let n=this.buffer,r=this.pos;n[r++]=t;let i=0;for(;i127)break;n[r++]=t}if(i==t)return this.pos=r,this}this.ensureCapacity(t*3+5);let n=sb(t),r=this.buffer,i=this.pos,{written:a}=this.encodeUtf8Into(e,r.subarray(i+n)),o=sb(a);return o!=n&&r.copyWithin(i+o,i+n,i+n+a),this.uint32(a),this.pos+=a,this}float(e){return ub(e),this.ensureCapacity(4),this.view().setFloat32(this.pos,e,!0),this.pos+=4,this}double(e){return this.ensureCapacity(8),this.view().setFloat64(this.pos,e,!0),this.pos+=8,this}fixed32(e){return lb(e),this.ensureCapacity(4),this.view().setUint32(this.pos,e,!0),this.pos+=4,this}sfixed32(e){return cb(e),this.ensureCapacity(4),this.view().setInt32(this.pos,e,!0),this.pos+=4,this}sint32(e){return cb(e),this.uint32((e<<1^e>>31)>>>0)}sfixed64(e){let t=qy.enc(e);this.ensureCapacity(8);let n=this.view();return n.setInt32(this.pos,t.lo,!0),n.setInt32(this.pos+4,t.hi,!0),this.pos+=8,this}fixed64(e){let t=qy.uEnc(e);this.ensureCapacity(8);let n=this.view();return n.setInt32(this.pos,t.lo,!0),n.setInt32(this.pos+4,t.hi,!0),this.pos+=8,this}int64(e){let t=qy.enc(e);return this.writeVarint64(t.lo,t.hi)}sint64(e){let t=qy.enc(e),n=t.hi>>31,r=t.lo<<1^n,i=(t.hi<<1|t.lo>>>31)^n;return this.writeVarint64(r,i)}uint64(e){let t=qy.uEnc(e);return this.writeVarint64(t.lo,t.hi)}writeVarint64(e,t){this.ensureCapacity(10);let n=this.buffer,r=this.pos;for(let i=0;i<28;i+=7){let a=e>>>i,o=!(!(a>>>7)&&t==0);if(n[r++]=(o?a|128:a)&255,!o)return this.pos=r,this}let i=e>>>28&15|(t&7)<<4,a=!!(t>>3);if(n[r++]=(a?i|128:i)&255,!a)return this.pos=r,this;for(let e=3;e<31;e+=7){let i=t>>>e,a=!!(i>>>7);if(n[r++]=(a?i|128:i)&255,!a)return this.pos=r,this}return n[r++]=t>>>31&1,this.pos=r,this}},nb=128,rb=1,ib=new Uint8Array,ab=new DataView(ib.buffer),ob=32;function sb(e){return e<128?1:e<16384?2:e<2097152?3:e<268435456?4:5}var Y=class{constructor(e,t=$y().decodeUtf8){this.decodeUtf8=t,this.varint64Lo=0,this.varint64Hi=0,this.varint64=Ly,this.uint32=Ky,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength)}tag(){let e=this.pos,t=this.uint32(),n=this.pos-e;if(n>5||n==5&&this.buf[this.pos-1]>15)throw Error(`illegal tag: varint overflows uint32`);let r=t>>>3,i=t&7;if(r<=0||i>5)throw Error(`illegal tag: field no `+r+` wire type `+i);return[r,i]}skip(e,t,n=100){let r=this.pos;switch(e){case tb.Varint:for(;this.buf[this.pos++]&128;);break;case tb.Bit64:this.pos+=4;case tb.Bit32:this.pos+=4;break;case tb.LengthDelimited:let r=this.uint32();this.pos+=r;break;case tb.StartGroup:if(n<=0)throw Error(`maximum recursion depth reached`);for(;;){let[e,r]=this.tag();if(r===tb.EndGroup){if(t!==void 0&&e!==t)throw Error(`invalid end group tag`);break}this.skip(r,e,n-1)}break;default:throw Error(`cant skip wire type `+e)}return this.assertBounds(),this.buf.subarray(r,this.pos)}assertBounds(){if(this.pos>this.len)throw RangeError(`premature EOF`)}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return this.varint64(),qy.dec(this.varint64Lo,this.varint64Hi)}uint64(){return this.varint64(),qy.uDec(this.varint64Lo,this.varint64Hi)}sint64(){this.varint64();let e=this.varint64Lo,t=this.varint64Hi,n=-(e&1);return e=(e>>>1|(t&1)<<31)^n,t=t>>>1^n,qy.dec(e,t)}bool(){let e=this.buf[this.pos];return e<128?(this.pos++,e!==0):(this.varint64(),this.varint64Lo!==0||this.varint64Hi!==0)}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return qy.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return qy.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(e){let t=this.bytes(),n=t.length;if(n<=ob){let r=Array(n);for(let i=0;i127)return this.decodeUtf8(t,e);r[i]=n}return String.fromCharCode.apply(String,r)}return this.decodeUtf8(t,e)}};function cb(e){if(typeof e==`string`)e=Number(e);else if(typeof e!=`number`)throw Error(`invalid int32: `+typeof e);if(!Number.isInteger(e)||e>2147483647||e<-2147483648)throw Error(`invalid int32: `+e)}function lb(e){if(typeof e==`string`)e=Number(e);else if(typeof e!=`number`)throw Error(`invalid uint32: `+typeof e);if(!Number.isInteger(e)||e>4294967295||e<0)throw Error(`invalid uint32: `+e)}function ub(e){if(typeof e==`string`){let t=e;if(e=Number(e),Number.isNaN(e)&&t!==`NaN`)throw Error(`invalid float32: `+t)}else if(typeof e!=`number`)throw Error(`invalid float32: `+typeof e);if(!Number.isFinite(Math.fround(e))&&Number.isFinite(e))throw Error(`invalid float32: `+e)}var db=function(e){return e[e.NULL_VALUE=0]=`NULL_VALUE`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e}({});function fb(){return{fields:{}}}var pb={encode(e,t=new J){return Object.entries(e.fields).forEach(([e,n])=>{n!==void 0&&hb.encode({key:e,value:n},t.uint32(10).fork()).join()}),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=fb();for(;n.pos>>3){case 1:{if(e!==10)break;let t=hb.decode(n,n.uint32());t.value!==void 0&&(i.fields[t.key]=t.value);continue}}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return pb.fromPartial(e??{})},fromPartial(e){let t=fb();return t.fields=Object.entries(e.fields??{}).reduce((e,[t,n])=>(n!==void 0&&(e[t]=n),e),{}),t},wrap(e){let t=fb();if(e!==void 0)for(let n of Object.keys(e))t.fields[n]=e[n];return t},unwrap(e){let t={};if(e.fields)for(let n of Object.keys(e.fields))t[n]=e.fields[n];return t}};function mb(){return{key:``,value:void 0}}var hb={encode(e,t=new J){return e.key!==``&&t.uint32(10).string(e.key),e.value!==void 0&&X.encode(X.wrap(e.value),t.uint32(18).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=mb();for(;n.pos>>3){case 1:if(e!==10)break;i.key=n.string();continue;case 2:if(e!==18)break;i.value=X.unwrap(X.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return hb.fromPartial(e??{})},fromPartial(e){let t=mb();return t.key=e.key??``,t.value=e.value??void 0,t}};function gb(){return{nullValue:void 0,numberValue:void 0,stringValue:void 0,boolValue:void 0,structValue:void 0,listValue:void 0}}var X={encode(e,t=new J){return e.nullValue!==void 0&&t.uint32(8).int32(e.nullValue),e.numberValue!==void 0&&t.uint32(17).double(e.numberValue),e.stringValue!==void 0&&t.uint32(26).string(e.stringValue),e.boolValue!==void 0&&t.uint32(32).bool(e.boolValue),e.structValue!==void 0&&pb.encode(pb.wrap(e.structValue),t.uint32(42).fork()).join(),e.listValue!==void 0&&vb.encode(vb.wrap(e.listValue),t.uint32(50).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=gb();for(;n.pos>>3){case 1:if(e!==8)break;i.nullValue=n.int32();continue;case 2:if(e!==17)break;i.numberValue=n.double();continue;case 3:if(e!==26)break;i.stringValue=n.string();continue;case 4:if(e!==32)break;i.boolValue=n.bool();continue;case 5:if(e!==42)break;i.structValue=pb.unwrap(pb.decode(n,n.uint32()));continue;case 6:if(e!==50)break;i.listValue=vb.unwrap(vb.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return X.fromPartial(e??{})},fromPartial(e){let t=gb();return t.nullValue=e.nullValue??void 0,t.numberValue=e.numberValue??void 0,t.stringValue=e.stringValue??void 0,t.boolValue=e.boolValue??void 0,t.structValue=e.structValue??void 0,t.listValue=e.listValue??void 0,t},wrap(e){let t=gb();if(e===null)t.nullValue=db.NULL_VALUE;else if(typeof e==`boolean`)t.boolValue=e;else if(typeof e==`number`)t.numberValue=e;else if(typeof e==`string`)t.stringValue=e;else if(globalThis.Array.isArray(e))t.listValue=e;else if(typeof e==`object`)t.structValue=e;else if(e!==void 0)throw new globalThis.Error(`Unsupported any value type: `+typeof e);return t},unwrap(e){if(e.stringValue!==void 0)return e.stringValue;if(e?.numberValue!==void 0)return e.numberValue;if(e?.boolValue!==void 0)return e.boolValue;if(e?.structValue!==void 0)return e.structValue;if(e?.listValue!==void 0)return e.listValue;if(e?.nullValue!==void 0)return null}};function _b(){return{values:[]}}var vb={encode(e,t=new J){for(let n of e.values)X.encode(X.wrap(n),t.uint32(10).fork()).join();return t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=_b();for(;n.pos>>3){case 1:if(e!==10)break;i.values.push(X.unwrap(X.decode(n,n.uint32())));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return vb.fromPartial(e??{})},fromPartial(e){let t=_b();return t.values=e.values?.map(e=>e)||[],t},wrap(e){let t=_b();return t.values=e??[],t},unwrap(e){return e?.hasOwnProperty(`values`)&&globalThis.Array.isArray(e.values)?e.values:e}},yb=function(e){return e[e.ADD=0]=`ADD`,e[e.REMOVE=1]=`REMOVE`,e[e.REPLACE=2]=`REPLACE`,e[e.MOVE=3]=`MOVE`,e[e.COPY=4]=`COPY`,e[e.TEST=5]=`TEST`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e}({});function bb(){return{op:0,path:``,from:void 0,value:void 0}}var xb={encode(e,t=new J){return e.op!==0&&t.uint32(8).int32(e.op),e.path!==``&&t.uint32(18).string(e.path),e.from!==void 0&&t.uint32(26).string(e.from),e.value!==void 0&&X.encode(X.wrap(e.value),t.uint32(34).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=bb();for(;n.pos>>3){case 1:if(e!==8)break;i.op=n.int32();continue;case 2:if(e!==18)break;i.path=n.string();continue;case 3:if(e!==26)break;i.from=n.string();continue;case 4:if(e!==34)break;i.value=X.unwrap(X.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return xb.fromPartial(e??{})},fromPartial(e){let t=bb();return t.op=e.op??0,t.path=e.path??``,t.from=e.from??void 0,t.value=e.value??void 0,t}};function Sb(){return{text:``,id:void 0,metadata:void 0}}var Cb={encode(e,t=new J){return e.text!==``&&t.uint32(10).string(e.text),e.id!==void 0&&t.uint32(18).string(e.id),e.metadata!==void 0&&X.encode(X.wrap(e.metadata),t.uint32(26).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Sb();for(;n.pos>>3){case 1:if(e!==10)break;i.text=n.string();continue;case 2:if(e!==18)break;i.id=n.string();continue;case 3:if(e!==26)break;i.metadata=X.unwrap(X.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Cb.fromPartial(e??{})},fromPartial(e){let t=Sb();return t.text=e.text??``,t.id=e.id??void 0,t.metadata=e.metadata??void 0,t}};function wb(){return{source:void 0,metadata:void 0,id:void 0}}var Tb={encode(e,t=new J){return e.source!==void 0&&Nb.encode(e.source,t.uint32(10).fork()).join(),e.metadata!==void 0&&X.encode(X.wrap(e.metadata),t.uint32(18).fork()).join(),e.id!==void 0&&t.uint32(26).string(e.id),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=wb();for(;n.pos>>3){case 1:if(e!==10)break;i.source=Nb.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.metadata=X.unwrap(X.decode(n,n.uint32()));continue;case 3:if(e!==26)break;i.id=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Tb.fromPartial(e??{})},fromPartial(e){let t=wb();return t.source=e.source!==void 0&&e.source!==null?Nb.fromPartial(e.source):void 0,t.metadata=e.metadata??void 0,t.id=e.id??void 0,t}};function Eb(){return{value:``,mimeType:``}}var Db={encode(e,t=new J){return e.value!==``&&t.uint32(10).string(e.value),e.mimeType!==``&&t.uint32(18).string(e.mimeType),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Eb();for(;n.pos>>3){case 1:if(e!==10)break;i.value=n.string();continue;case 2:if(e!==18)break;i.mimeType=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Db.fromPartial(e??{})},fromPartial(e){let t=Eb();return t.value=e.value??``,t.mimeType=e.mimeType??``,t}};function Ob(){return{value:``,mimeType:void 0}}var kb={encode(e,t=new J){return e.value!==``&&t.uint32(10).string(e.value),e.mimeType!==void 0&&t.uint32(18).string(e.mimeType),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Ob();for(;n.pos>>3){case 1:if(e!==10)break;i.value=n.string();continue;case 2:if(e!==18)break;i.mimeType=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return kb.fromPartial(e??{})},fromPartial(e){let t=Ob();return t.value=e.value??``,t.mimeType=e.mimeType??void 0,t}};function Ab(){return{value:``,provider:void 0,mimeType:void 0}}var jb={encode(e,t=new J){return e.value!==``&&t.uint32(10).string(e.value),e.provider!==void 0&&t.uint32(18).string(e.provider),e.mimeType!==void 0&&t.uint32(26).string(e.mimeType),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Ab();for(;n.pos>>3){case 1:if(e!==10)break;i.value=n.string();continue;case 2:if(e!==18)break;i.provider=n.string();continue;case 3:if(e!==26)break;i.mimeType=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return jb.fromPartial(e??{})},fromPartial(e){let t=Ab();return t.value=e.value??``,t.provider=e.provider??void 0,t.mimeType=e.mimeType??void 0,t}};function Mb(){return{data:void 0,url:void 0,file:void 0}}var Nb={encode(e,t=new J){return e.data!==void 0&&Db.encode(e.data,t.uint32(10).fork()).join(),e.url!==void 0&&kb.encode(e.url,t.uint32(18).fork()).join(),e.file!==void 0&&jb.encode(e.file,t.uint32(26).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Mb();for(;n.pos>>3){case 1:if(e!==10)break;i.data=Db.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.url=kb.decode(n,n.uint32());continue;case 3:if(e!==26)break;i.file=jb.decode(n,n.uint32());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Nb.fromPartial(e??{})},fromPartial(e){let t=Mb();return t.data=e.data!==void 0&&e.data!==null?Db.fromPartial(e.data):void 0,t.url=e.url!==void 0&&e.url!==null?kb.fromPartial(e.url):void 0,t.file=e.file!==void 0&&e.file!==null?jb.fromPartial(e.file):void 0,t}};function Pb(){return{source:void 0,metadata:void 0,id:void 0}}var Fb={encode(e,t=new J){return e.source!==void 0&&Nb.encode(e.source,t.uint32(10).fork()).join(),e.metadata!==void 0&&X.encode(X.wrap(e.metadata),t.uint32(18).fork()).join(),e.id!==void 0&&t.uint32(26).string(e.id),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Pb();for(;n.pos>>3){case 1:if(e!==10)break;i.source=Nb.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.metadata=X.unwrap(X.decode(n,n.uint32()));continue;case 3:if(e!==26)break;i.id=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Fb.fromPartial(e??{})},fromPartial(e){let t=Pb();return t.source=e.source!==void 0&&e.source!==null?Nb.fromPartial(e.source):void 0,t.metadata=e.metadata??void 0,t.id=e.id??void 0,t}};function Ib(){return{source:void 0,metadata:void 0,id:void 0}}var Lb={encode(e,t=new J){return e.source!==void 0&&Nb.encode(e.source,t.uint32(10).fork()).join(),e.metadata!==void 0&&X.encode(X.wrap(e.metadata),t.uint32(18).fork()).join(),e.id!==void 0&&t.uint32(26).string(e.id),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Ib();for(;n.pos>>3){case 1:if(e!==10)break;i.source=Nb.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.metadata=X.unwrap(X.decode(n,n.uint32()));continue;case 3:if(e!==26)break;i.id=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Lb.fromPartial(e??{})},fromPartial(e){let t=Ib();return t.source=e.source!==void 0&&e.source!==null?Nb.fromPartial(e.source):void 0,t.metadata=e.metadata??void 0,t.id=e.id??void 0,t}};function Rb(){return{source:void 0,metadata:void 0,id:void 0}}var zb={encode(e,t=new J){return e.source!==void 0&&Nb.encode(e.source,t.uint32(10).fork()).join(),e.metadata!==void 0&&X.encode(X.wrap(e.metadata),t.uint32(18).fork()).join(),e.id!==void 0&&t.uint32(26).string(e.id),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Rb();for(;n.pos>>3){case 1:if(e!==10)break;i.source=Nb.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.metadata=X.unwrap(X.decode(n,n.uint32()));continue;case 3:if(e!==26)break;i.id=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return zb.fromPartial(e??{})},fromPartial(e){let t=Rb();return t.source=e.source!==void 0&&e.source!==null?Nb.fromPartial(e.source):void 0,t.metadata=e.metadata??void 0,t.id=e.id??void 0,t}};function Bb(){return{text:void 0,image:void 0,audio:void 0,video:void 0,document:void 0}}var Vb={encode(e,t=new J){return e.text!==void 0&&Cb.encode(e.text,t.uint32(10).fork()).join(),e.image!==void 0&&Tb.encode(e.image,t.uint32(18).fork()).join(),e.audio!==void 0&&Fb.encode(e.audio,t.uint32(26).fork()).join(),e.video!==void 0&&Lb.encode(e.video,t.uint32(34).fork()).join(),e.document!==void 0&&zb.encode(e.document,t.uint32(42).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Bb();for(;n.pos>>3){case 1:if(e!==10)break;i.text=Cb.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.image=Tb.decode(n,n.uint32());continue;case 3:if(e!==26)break;i.audio=Fb.decode(n,n.uint32());continue;case 4:if(e!==34)break;i.video=Lb.decode(n,n.uint32());continue;case 5:if(e!==42)break;i.document=zb.decode(n,n.uint32());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Vb.fromPartial(e??{})},fromPartial(e){let t=Bb();return t.text=e.text!==void 0&&e.text!==null?Cb.fromPartial(e.text):void 0,t.image=e.image!==void 0&&e.image!==null?Tb.fromPartial(e.image):void 0,t.audio=e.audio!==void 0&&e.audio!==null?Fb.fromPartial(e.audio):void 0,t.video=e.video!==void 0&&e.video!==null?Lb.fromPartial(e.video):void 0,t.document=e.document!==void 0&&e.document!==null?zb.fromPartial(e.document):void 0,t}};function Hb(){return{id:``,type:``,function:void 0,metadata:void 0,encryptedValue:void 0}}var Ub={encode(e,t=new J){return e.id!==``&&t.uint32(10).string(e.id),e.type!==``&&t.uint32(18).string(e.type),e.function!==void 0&&Gb.encode(e.function,t.uint32(26).fork()).join(),e.metadata!==void 0&&pb.encode(pb.wrap(e.metadata),t.uint32(34).fork()).join(),e.encryptedValue!==void 0&&t.uint32(42).string(e.encryptedValue),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Hb();for(;n.pos>>3){case 1:if(e!==10)break;i.id=n.string();continue;case 2:if(e!==18)break;i.type=n.string();continue;case 3:if(e!==26)break;i.function=Gb.decode(n,n.uint32());continue;case 4:if(e!==34)break;i.metadata=pb.unwrap(pb.decode(n,n.uint32()));continue;case 5:if(e!==42)break;i.encryptedValue=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Ub.fromPartial(e??{})},fromPartial(e){let t=Hb();return t.id=e.id??``,t.type=e.type??``,t.function=e.function!==void 0&&e.function!==null?Gb.fromPartial(e.function):void 0,t.metadata=e.metadata??void 0,t.encryptedValue=e.encryptedValue??void 0,t}};function Wb(){return{name:``,arguments:``}}var Gb={encode(e,t=new J){return e.name!==``&&t.uint32(10).string(e.name),e.arguments!==``&&t.uint32(18).string(e.arguments),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Wb();for(;n.pos>>3){case 1:if(e!==10)break;i.name=n.string();continue;case 2:if(e!==18)break;i.arguments=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Gb.fromPartial(e??{})},fromPartial(e){let t=Wb();return t.name=e.name??``,t.arguments=e.arguments??``,t}};function Kb(){return{id:``,role:``,content:void 0,name:void 0,toolCalls:[],toolCallId:void 0,error:void 0,contentParts:[],metadata:void 0,subagentRunId:void 0,encryptedValue:void 0,activityType:void 0,activityContent:void 0}}var qb={encode(e,t=new J){e.id!==``&&t.uint32(10).string(e.id),e.role!==``&&t.uint32(18).string(e.role),e.content!==void 0&&t.uint32(26).string(e.content),e.name!==void 0&&t.uint32(34).string(e.name);for(let n of e.toolCalls)Ub.encode(n,t.uint32(42).fork()).join();e.toolCallId!==void 0&&t.uint32(50).string(e.toolCallId),e.error!==void 0&&t.uint32(58).string(e.error);for(let n of e.contentParts)Vb.encode(n,t.uint32(66).fork()).join();return e.metadata!==void 0&&pb.encode(pb.wrap(e.metadata),t.uint32(74).fork()).join(),e.subagentRunId!==void 0&&t.uint32(82).string(e.subagentRunId),e.encryptedValue!==void 0&&t.uint32(90).string(e.encryptedValue),e.activityType!==void 0&&t.uint32(98).string(e.activityType),e.activityContent!==void 0&&pb.encode(pb.wrap(e.activityContent),t.uint32(106).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Kb();for(;n.pos>>3){case 1:if(e!==10)break;i.id=n.string();continue;case 2:if(e!==18)break;i.role=n.string();continue;case 3:if(e!==26)break;i.content=n.string();continue;case 4:if(e!==34)break;i.name=n.string();continue;case 5:if(e!==42)break;i.toolCalls.push(Ub.decode(n,n.uint32()));continue;case 6:if(e!==50)break;i.toolCallId=n.string();continue;case 7:if(e!==58)break;i.error=n.string();continue;case 8:if(e!==66)break;i.contentParts.push(Vb.decode(n,n.uint32()));continue;case 9:if(e!==74)break;i.metadata=pb.unwrap(pb.decode(n,n.uint32()));continue;case 10:if(e!==82)break;i.subagentRunId=n.string();continue;case 11:if(e!==90)break;i.encryptedValue=n.string();continue;case 12:if(e!==98)break;i.activityType=n.string();continue;case 13:if(e!==106)break;i.activityContent=pb.unwrap(pb.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return qb.fromPartial(e??{})},fromPartial(e){let t=Kb();return t.id=e.id??``,t.role=e.role??``,t.content=e.content??void 0,t.name=e.name??void 0,t.toolCalls=e.toolCalls?.map(e=>Ub.fromPartial(e))||[],t.toolCallId=e.toolCallId??void 0,t.error=e.error??void 0,t.contentParts=e.contentParts?.map(e=>Vb.fromPartial(e))||[],t.metadata=e.metadata??void 0,t.subagentRunId=e.subagentRunId??void 0,t.encryptedValue=e.encryptedValue??void 0,t.activityType=e.activityType??void 0,t.activityContent=e.activityContent??void 0,t}};function Jb(){return{name:``,description:``,parameters:void 0,metadata:void 0}}var Yb={encode(e,t=new J){return e.name!==``&&t.uint32(10).string(e.name),e.description!==``&&t.uint32(18).string(e.description),e.parameters!==void 0&&X.encode(X.wrap(e.parameters),t.uint32(26).fork()).join(),e.metadata!==void 0&&pb.encode(pb.wrap(e.metadata),t.uint32(34).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Jb();for(;n.pos>>3){case 1:if(e!==10)break;i.name=n.string();continue;case 2:if(e!==18)break;i.description=n.string();continue;case 3:if(e!==26)break;i.parameters=X.unwrap(X.decode(n,n.uint32()));continue;case 4:if(e!==34)break;i.metadata=pb.unwrap(pb.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Yb.fromPartial(e??{})},fromPartial(e){let t=Jb();return t.name=e.name??``,t.description=e.description??``,t.parameters=e.parameters??void 0,t.metadata=e.metadata??void 0,t}};function Xb(){return{description:``,value:``}}var Zb={encode(e,t=new J){return e.description!==``&&t.uint32(10).string(e.description),e.value!==``&&t.uint32(18).string(e.value),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Xb();for(;n.pos>>3){case 1:if(e!==10)break;i.description=n.string();continue;case 2:if(e!==18)break;i.value=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Zb.fromPartial(e??{})},fromPartial(e){let t=Xb();return t.description=e.description??``,t.value=e.value??``,t}};function Qb(){return{interruptId:``,status:``,payload:void 0,metadata:void 0}}var $b={encode(e,t=new J){return e.interruptId!==``&&t.uint32(10).string(e.interruptId),e.status!==``&&t.uint32(18).string(e.status),e.payload!==void 0&&X.encode(X.wrap(e.payload),t.uint32(26).fork()).join(),e.metadata!==void 0&&pb.encode(pb.wrap(e.metadata),t.uint32(34).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Qb();for(;n.pos>>3){case 1:if(e!==10)break;i.interruptId=n.string();continue;case 2:if(e!==18)break;i.status=n.string();continue;case 3:if(e!==26)break;i.payload=X.unwrap(X.decode(n,n.uint32()));continue;case 4:if(e!==34)break;i.metadata=pb.unwrap(pb.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return $b.fromPartial(e??{})},fromPartial(e){let t=Qb();return t.interruptId=e.interruptId??``,t.status=e.status??``,t.payload=e.payload??void 0,t.metadata=e.metadata??void 0,t}};function ex(){return{threadId:``,runId:``,parentRunId:void 0,state:void 0,messages:[],tools:[],context:[],forwardedProps:void 0,resume:[],protocolVersion:void 0}}var tx={encode(e,t=new J){e.threadId!==``&&t.uint32(10).string(e.threadId),e.runId!==``&&t.uint32(18).string(e.runId),e.parentRunId!==void 0&&t.uint32(26).string(e.parentRunId),e.state!==void 0&&X.encode(X.wrap(e.state),t.uint32(34).fork()).join();for(let n of e.messages)qb.encode(n,t.uint32(42).fork()).join();for(let n of e.tools)Yb.encode(n,t.uint32(50).fork()).join();for(let n of e.context)Zb.encode(n,t.uint32(58).fork()).join();e.forwardedProps!==void 0&&X.encode(X.wrap(e.forwardedProps),t.uint32(66).fork()).join();for(let n of e.resume)$b.encode(n,t.uint32(74).fork()).join();return e.protocolVersion!==void 0&&t.uint32(82).string(e.protocolVersion),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=ex();for(;n.pos>>3){case 1:if(e!==10)break;i.threadId=n.string();continue;case 2:if(e!==18)break;i.runId=n.string();continue;case 3:if(e!==26)break;i.parentRunId=n.string();continue;case 4:if(e!==34)break;i.state=X.unwrap(X.decode(n,n.uint32()));continue;case 5:if(e!==42)break;i.messages.push(qb.decode(n,n.uint32()));continue;case 6:if(e!==50)break;i.tools.push(Yb.decode(n,n.uint32()));continue;case 7:if(e!==58)break;i.context.push(Zb.decode(n,n.uint32()));continue;case 8:if(e!==66)break;i.forwardedProps=X.unwrap(X.decode(n,n.uint32()));continue;case 9:if(e!==74)break;i.resume.push($b.decode(n,n.uint32()));continue;case 10:if(e!==82)break;i.protocolVersion=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return tx.fromPartial(e??{})},fromPartial(e){let t=ex();return t.threadId=e.threadId??``,t.runId=e.runId??``,t.parentRunId=e.parentRunId??void 0,t.state=e.state??void 0,t.messages=e.messages?.map(e=>qb.fromPartial(e))||[],t.tools=e.tools?.map(e=>Yb.fromPartial(e))||[],t.context=e.context?.map(e=>Zb.fromPartial(e))||[],t.forwardedProps=e.forwardedProps??void 0,t.resume=e.resume?.map(e=>$b.fromPartial(e))||[],t.protocolVersion=e.protocolVersion??void 0,t}};function nx(){return{id:``,reason:``,message:void 0,toolCallId:void 0,responseSchema:void 0,expiresAt:void 0,metadata:void 0,subagentRunId:void 0}}var rx={encode(e,t=new J){return e.id!==``&&t.uint32(10).string(e.id),e.reason!==``&&t.uint32(18).string(e.reason),e.message!==void 0&&t.uint32(26).string(e.message),e.toolCallId!==void 0&&t.uint32(34).string(e.toolCallId),e.responseSchema!==void 0&&X.encode(X.wrap(e.responseSchema),t.uint32(42).fork()).join(),e.expiresAt!==void 0&&t.uint32(50).string(e.expiresAt),e.metadata!==void 0&&X.encode(X.wrap(e.metadata),t.uint32(58).fork()).join(),e.subagentRunId!==void 0&&t.uint32(66).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=nx();for(;n.pos>>3){case 1:if(e!==10)break;i.id=n.string();continue;case 2:if(e!==18)break;i.reason=n.string();continue;case 3:if(e!==26)break;i.message=n.string();continue;case 4:if(e!==34)break;i.toolCallId=n.string();continue;case 5:if(e!==42)break;i.responseSchema=X.unwrap(X.decode(n,n.uint32()));continue;case 6:if(e!==50)break;i.expiresAt=n.string();continue;case 7:if(e!==58)break;i.metadata=X.unwrap(X.decode(n,n.uint32()));continue;case 8:if(e!==66)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return rx.fromPartial(e??{})},fromPartial(e){let t=nx();return t.id=e.id??``,t.reason=e.reason??``,t.message=e.message??void 0,t.toolCallId=e.toolCallId??void 0,t.responseSchema=e.responseSchema??void 0,t.expiresAt=e.expiresAt??void 0,t.metadata=e.metadata??void 0,t.subagentRunId=e.subagentRunId??void 0,t}},ix=function(e){return e[e.TEXT_MESSAGE_START=0]=`TEXT_MESSAGE_START`,e[e.TEXT_MESSAGE_CONTENT=1]=`TEXT_MESSAGE_CONTENT`,e[e.TEXT_MESSAGE_END=2]=`TEXT_MESSAGE_END`,e[e.TOOL_CALL_START=3]=`TOOL_CALL_START`,e[e.TOOL_CALL_ARGS=4]=`TOOL_CALL_ARGS`,e[e.TOOL_CALL_END=5]=`TOOL_CALL_END`,e[e.STATE_SNAPSHOT=6]=`STATE_SNAPSHOT`,e[e.STATE_DELTA=7]=`STATE_DELTA`,e[e.MESSAGES_SNAPSHOT=8]=`MESSAGES_SNAPSHOT`,e[e.RAW=9]=`RAW`,e[e.CUSTOM=10]=`CUSTOM`,e[e.RUN_STARTED=11]=`RUN_STARTED`,e[e.RUN_FINISHED=12]=`RUN_FINISHED`,e[e.RUN_ERROR=13]=`RUN_ERROR`,e[e.STEP_STARTED=14]=`STEP_STARTED`,e[e.STEP_FINISHED=15]=`STEP_FINISHED`,e[e.SUBAGENT_STARTED=16]=`SUBAGENT_STARTED`,e[e.SUBAGENT_FINISHED=17]=`SUBAGENT_FINISHED`,e[e.SUBAGENT_ERROR=18]=`SUBAGENT_ERROR`,e[e.TEXT_MESSAGE_CHUNK=19]=`TEXT_MESSAGE_CHUNK`,e[e.TOOL_CALL_CHUNK=20]=`TOOL_CALL_CHUNK`,e[e.TOOL_CALL_RESULT=21]=`TOOL_CALL_RESULT`,e[e.ACTIVITY_SNAPSHOT=22]=`ACTIVITY_SNAPSHOT`,e[e.ACTIVITY_DELTA=23]=`ACTIVITY_DELTA`,e[e.REASONING_START=24]=`REASONING_START`,e[e.REASONING_MESSAGE_START=25]=`REASONING_MESSAGE_START`,e[e.REASONING_MESSAGE_CONTENT=26]=`REASONING_MESSAGE_CONTENT`,e[e.REASONING_MESSAGE_END=27]=`REASONING_MESSAGE_END`,e[e.REASONING_MESSAGE_CHUNK=28]=`REASONING_MESSAGE_CHUNK`,e[e.REASONING_END=29]=`REASONING_END`,e[e.REASONING_ENCRYPTED_VALUE=30]=`REASONING_ENCRYPTED_VALUE`,e[e.UNRECOGNIZED=-1]=`UNRECOGNIZED`,e}({});function ax(){return{type:0,timestamp:void 0,rawEvent:void 0,metadata:void 0}}var Z={encode(e,t=new J){return e.type!==0&&t.uint32(8).int32(e.type),e.timestamp!==void 0&&t.uint32(16).int64(e.timestamp),e.rawEvent!==void 0&&X.encode(X.wrap(e.rawEvent),t.uint32(26).fork()).join(),e.metadata!==void 0&&pb.encode(pb.wrap(e.metadata),t.uint32(34).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=ax();for(;n.pos>>3){case 1:if(e!==8)break;i.type=n.int32();continue;case 2:if(e!==16)break;i.timestamp=vS(n.int64());continue;case 3:if(e!==26)break;i.rawEvent=X.unwrap(X.decode(n,n.uint32()));continue;case 4:if(e!==34)break;i.metadata=pb.unwrap(pb.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Z.fromPartial(e??{})},fromPartial(e){let t=ax();return t.type=e.type??0,t.timestamp=e.timestamp??void 0,t.rawEvent=e.rawEvent??void 0,t.metadata=e.metadata??void 0,t}};function ox(){return{baseEvent:void 0,messageId:``,role:void 0,name:void 0,subagentRunId:void 0}}var sx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.messageId!==``&&t.uint32(18).string(e.messageId),e.role!==void 0&&t.uint32(26).string(e.role),e.name!==void 0&&t.uint32(34).string(e.name),e.subagentRunId!==void 0&&t.uint32(42).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=ox();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messageId=n.string();continue;case 3:if(e!==26)break;i.role=n.string();continue;case 4:if(e!==34)break;i.name=n.string();continue;case 5:if(e!==42)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return sx.fromPartial(e??{})},fromPartial(e){let t=ox();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.messageId=e.messageId??``,t.role=e.role??void 0,t.name=e.name??void 0,t.subagentRunId=e.subagentRunId??void 0,t}};function cx(){return{baseEvent:void 0,messageId:``,delta:``,subagentRunId:void 0}}var lx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.messageId!==``&&t.uint32(18).string(e.messageId),e.delta!==``&&t.uint32(26).string(e.delta),e.subagentRunId!==void 0&&t.uint32(34).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=cx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messageId=n.string();continue;case 3:if(e!==26)break;i.delta=n.string();continue;case 4:if(e!==34)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return lx.fromPartial(e??{})},fromPartial(e){let t=cx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.messageId=e.messageId??``,t.delta=e.delta??``,t.subagentRunId=e.subagentRunId??void 0,t}};function ux(){return{baseEvent:void 0,messageId:``,subagentRunId:void 0}}var dx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.messageId!==``&&t.uint32(18).string(e.messageId),e.subagentRunId!==void 0&&t.uint32(26).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=ux();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messageId=n.string();continue;case 3:if(e!==26)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return dx.fromPartial(e??{})},fromPartial(e){let t=ux();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.messageId=e.messageId??``,t.subagentRunId=e.subagentRunId??void 0,t}};function fx(){return{baseEvent:void 0,messageId:void 0,role:void 0,delta:void 0,name:void 0,subagentRunId:void 0}}var px={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.messageId!==void 0&&t.uint32(18).string(e.messageId),e.role!==void 0&&t.uint32(26).string(e.role),e.delta!==void 0&&t.uint32(34).string(e.delta),e.name!==void 0&&t.uint32(42).string(e.name),e.subagentRunId!==void 0&&t.uint32(50).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=fx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messageId=n.string();continue;case 3:if(e!==26)break;i.role=n.string();continue;case 4:if(e!==34)break;i.delta=n.string();continue;case 5:if(e!==42)break;i.name=n.string();continue;case 6:if(e!==50)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return px.fromPartial(e??{})},fromPartial(e){let t=fx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.messageId=e.messageId??void 0,t.role=e.role??void 0,t.delta=e.delta??void 0,t.name=e.name??void 0,t.subagentRunId=e.subagentRunId??void 0,t}};function mx(){return{baseEvent:void 0,toolCallId:``,toolCallName:``,parentMessageId:void 0,subagentRunId:void 0}}var hx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.toolCallId!==``&&t.uint32(18).string(e.toolCallId),e.toolCallName!==``&&t.uint32(26).string(e.toolCallName),e.parentMessageId!==void 0&&t.uint32(34).string(e.parentMessageId),e.subagentRunId!==void 0&&t.uint32(42).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=mx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.toolCallId=n.string();continue;case 3:if(e!==26)break;i.toolCallName=n.string();continue;case 4:if(e!==34)break;i.parentMessageId=n.string();continue;case 5:if(e!==42)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return hx.fromPartial(e??{})},fromPartial(e){let t=mx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.toolCallId=e.toolCallId??``,t.toolCallName=e.toolCallName??``,t.parentMessageId=e.parentMessageId??void 0,t.subagentRunId=e.subagentRunId??void 0,t}};function gx(){return{baseEvent:void 0,toolCallId:``,delta:``,subagentRunId:void 0}}var _x={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.toolCallId!==``&&t.uint32(18).string(e.toolCallId),e.delta!==``&&t.uint32(26).string(e.delta),e.subagentRunId!==void 0&&t.uint32(34).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=gx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.toolCallId=n.string();continue;case 3:if(e!==26)break;i.delta=n.string();continue;case 4:if(e!==34)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return _x.fromPartial(e??{})},fromPartial(e){let t=gx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.toolCallId=e.toolCallId??``,t.delta=e.delta??``,t.subagentRunId=e.subagentRunId??void 0,t}};function vx(){return{baseEvent:void 0,toolCallId:``,subagentRunId:void 0}}var yx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.toolCallId!==``&&t.uint32(18).string(e.toolCallId),e.subagentRunId!==void 0&&t.uint32(26).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=vx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.toolCallId=n.string();continue;case 3:if(e!==26)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return yx.fromPartial(e??{})},fromPartial(e){let t=vx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.toolCallId=e.toolCallId??``,t.subagentRunId=e.subagentRunId??void 0,t}};function bx(){return{baseEvent:void 0,toolCallId:void 0,toolCallName:void 0,parentMessageId:void 0,delta:void 0,subagentRunId:void 0}}var xx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.toolCallId!==void 0&&t.uint32(18).string(e.toolCallId),e.toolCallName!==void 0&&t.uint32(26).string(e.toolCallName),e.parentMessageId!==void 0&&t.uint32(34).string(e.parentMessageId),e.delta!==void 0&&t.uint32(42).string(e.delta),e.subagentRunId!==void 0&&t.uint32(50).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=bx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.toolCallId=n.string();continue;case 3:if(e!==26)break;i.toolCallName=n.string();continue;case 4:if(e!==34)break;i.parentMessageId=n.string();continue;case 5:if(e!==42)break;i.delta=n.string();continue;case 6:if(e!==50)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return xx.fromPartial(e??{})},fromPartial(e){let t=bx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.toolCallId=e.toolCallId??void 0,t.toolCallName=e.toolCallName??void 0,t.parentMessageId=e.parentMessageId??void 0,t.delta=e.delta??void 0,t.subagentRunId=e.subagentRunId??void 0,t}};function Sx(){return{baseEvent:void 0,subagentRunId:void 0,messageId:``,toolCallId:``,content:void 0,role:void 0,contentParts:[]}}var Cx={encode(e,t=new J){e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==``&&t.uint32(26).string(e.messageId),e.toolCallId!==``&&t.uint32(34).string(e.toolCallId),e.content!==void 0&&t.uint32(42).string(e.content),e.role!==void 0&&t.uint32(50).string(e.role);for(let n of e.contentParts)Vb.encode(n,t.uint32(58).fork()).join();return t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Sx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue;case 4:if(e!==34)break;i.toolCallId=n.string();continue;case 5:if(e!==42)break;i.content=n.string();continue;case 6:if(e!==50)break;i.role=n.string();continue;case 7:if(e!==58)break;i.contentParts.push(Vb.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Cx.fromPartial(e??{})},fromPartial(e){let t=Sx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??``,t.toolCallId=e.toolCallId??``,t.content=e.content??void 0,t.role=e.role??void 0,t.contentParts=e.contentParts?.map(e=>Vb.fromPartial(e))||[],t}};function wx(){return{baseEvent:void 0,snapshot:void 0,subagentRunId:void 0}}var Tx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.snapshot!==void 0&&X.encode(X.wrap(e.snapshot),t.uint32(18).fork()).join(),e.subagentRunId!==void 0&&t.uint32(26).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=wx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.snapshot=X.unwrap(X.decode(n,n.uint32()));continue;case 3:if(e!==26)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Tx.fromPartial(e??{})},fromPartial(e){let t=wx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.snapshot=e.snapshot??void 0,t.subagentRunId=e.subagentRunId??void 0,t}};function Ex(){return{baseEvent:void 0,delta:[],subagentRunId:void 0}}var Dx={encode(e,t=new J){e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join();for(let n of e.delta)xb.encode(n,t.uint32(18).fork()).join();return e.subagentRunId!==void 0&&t.uint32(26).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Ex();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.delta.push(xb.decode(n,n.uint32()));continue;case 3:if(e!==26)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Dx.fromPartial(e??{})},fromPartial(e){let t=Ex();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.delta=e.delta?.map(e=>xb.fromPartial(e))||[],t.subagentRunId=e.subagentRunId??void 0,t}};function Ox(){return{baseEvent:void 0,messages:[]}}var kx={encode(e,t=new J){e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join();for(let n of e.messages)qb.encode(n,t.uint32(18).fork()).join();return t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Ox();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.messages.push(qb.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return kx.fromPartial(e??{})},fromPartial(e){let t=Ox();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.messages=e.messages?.map(e=>qb.fromPartial(e))||[],t}};function Ax(){return{baseEvent:void 0,subagentRunId:void 0,messageId:``,activityType:``,content:void 0,replace:void 0}}var jx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==``&&t.uint32(26).string(e.messageId),e.activityType!==``&&t.uint32(34).string(e.activityType),e.content!==void 0&&pb.encode(pb.wrap(e.content),t.uint32(42).fork()).join(),e.replace!==void 0&&t.uint32(48).bool(e.replace),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Ax();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue;case 4:if(e!==34)break;i.activityType=n.string();continue;case 5:if(e!==42)break;i.content=pb.unwrap(pb.decode(n,n.uint32()));continue;case 6:if(e!==48)break;i.replace=n.bool();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return jx.fromPartial(e??{})},fromPartial(e){let t=Ax();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??``,t.activityType=e.activityType??``,t.content=e.content??void 0,t.replace=e.replace??void 0,t}};function Mx(){return{baseEvent:void 0,subagentRunId:void 0,messageId:``,activityType:``,patch:[]}}var Nx={encode(e,t=new J){e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==``&&t.uint32(26).string(e.messageId),e.activityType!==``&&t.uint32(34).string(e.activityType);for(let n of e.patch)xb.encode(n,t.uint32(42).fork()).join();return t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Mx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue;case 4:if(e!==34)break;i.activityType=n.string();continue;case 5:if(e!==42)break;i.patch.push(xb.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Nx.fromPartial(e??{})},fromPartial(e){let t=Mx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??``,t.activityType=e.activityType??``,t.patch=e.patch?.map(e=>xb.fromPartial(e))||[],t}};function Px(){return{baseEvent:void 0,event:void 0,source:void 0,subagentRunId:void 0}}var Fx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.event!==void 0&&X.encode(X.wrap(e.event),t.uint32(18).fork()).join(),e.source!==void 0&&t.uint32(26).string(e.source),e.subagentRunId!==void 0&&t.uint32(34).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Px();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.event=X.unwrap(X.decode(n,n.uint32()));continue;case 3:if(e!==26)break;i.source=n.string();continue;case 4:if(e!==34)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Fx.fromPartial(e??{})},fromPartial(e){let t=Px();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.event=e.event??void 0,t.source=e.source??void 0,t.subagentRunId=e.subagentRunId??void 0,t}};function Ix(){return{baseEvent:void 0,name:``,value:void 0,subagentRunId:void 0}}var Lx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.name!==``&&t.uint32(18).string(e.name),e.value!==void 0&&X.encode(X.wrap(e.value),t.uint32(26).fork()).join(),e.subagentRunId!==void 0&&t.uint32(34).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Ix();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.name=n.string();continue;case 3:if(e!==26)break;i.value=X.unwrap(X.decode(n,n.uint32()));continue;case 4:if(e!==34)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Lx.fromPartial(e??{})},fromPartial(e){let t=Ix();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.name=e.name??``,t.value=e.value??void 0,t.subagentRunId=e.subagentRunId??void 0,t}};function Rx(){return{baseEvent:void 0,threadId:``,runId:``,parentRunId:void 0,input:void 0,protocolVersion:void 0}}var zx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.threadId!==``&&t.uint32(18).string(e.threadId),e.runId!==``&&t.uint32(26).string(e.runId),e.parentRunId!==void 0&&t.uint32(34).string(e.parentRunId),e.input!==void 0&&tx.encode(e.input,t.uint32(42).fork()).join(),e.protocolVersion!==void 0&&t.uint32(50).string(e.protocolVersion),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Rx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.threadId=n.string();continue;case 3:if(e!==26)break;i.runId=n.string();continue;case 4:if(e!==34)break;i.parentRunId=n.string();continue;case 5:if(e!==42)break;i.input=tx.decode(n,n.uint32());continue;case 6:if(e!==50)break;i.protocolVersion=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return zx.fromPartial(e??{})},fromPartial(e){let t=Rx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.threadId=e.threadId??``,t.runId=e.runId??``,t.parentRunId=e.parentRunId??void 0,t.input=e.input!==void 0&&e.input!==null?tx.fromPartial(e.input):void 0,t.protocolVersion=e.protocolVersion??void 0,t}};function Bx(){return{baseEvent:void 0,threadId:``,runId:``,result:void 0,outcome:``,interrupts:[],usage:[],pendingToolCallIds:[]}}var Vx={encode(e,t=new J){e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.threadId!==``&&t.uint32(18).string(e.threadId),e.runId!==``&&t.uint32(26).string(e.runId),e.result!==void 0&&X.encode(X.wrap(e.result),t.uint32(34).fork()).join(),e.outcome!==``&&t.uint32(42).string(e.outcome);for(let n of e.interrupts)rx.encode(n,t.uint32(50).fork()).join();for(let n of e.usage)_S.encode(n,t.uint32(58).fork()).join();for(let n of e.pendingToolCallIds)t.uint32(66).string(n);return t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Bx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.threadId=n.string();continue;case 3:if(e!==26)break;i.runId=n.string();continue;case 4:if(e!==34)break;i.result=X.unwrap(X.decode(n,n.uint32()));continue;case 5:if(e!==42)break;i.outcome=n.string();continue;case 6:if(e!==50)break;i.interrupts.push(rx.decode(n,n.uint32()));continue;case 7:if(e!==58)break;i.usage.push(_S.decode(n,n.uint32()));continue;case 8:if(e!==66)break;i.pendingToolCallIds.push(n.string());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Vx.fromPartial(e??{})},fromPartial(e){let t=Bx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.threadId=e.threadId??``,t.runId=e.runId??``,t.result=e.result??void 0,t.outcome=e.outcome??``,t.interrupts=e.interrupts?.map(e=>rx.fromPartial(e))||[],t.usage=e.usage?.map(e=>_S.fromPartial(e))||[],t.pendingToolCallIds=e.pendingToolCallIds?.map(e=>e)||[],t}};function Hx(){return{baseEvent:void 0,code:void 0,message:``,usage:[]}}var Ux={encode(e,t=new J){e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.code!==void 0&&t.uint32(18).string(e.code),e.message!==``&&t.uint32(26).string(e.message);for(let n of e.usage)_S.encode(n,t.uint32(34).fork()).join();return t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Hx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.code=n.string();continue;case 3:if(e!==26)break;i.message=n.string();continue;case 4:if(e!==34)break;i.usage.push(_S.decode(n,n.uint32()));continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Ux.fromPartial(e??{})},fromPartial(e){let t=Hx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.code=e.code??void 0,t.message=e.message??``,t.usage=e.usage?.map(e=>_S.fromPartial(e))||[],t}};function Wx(){return{baseEvent:void 0,stepName:``,subagentRunId:void 0}}var Gx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.stepName!==``&&t.uint32(18).string(e.stepName),e.subagentRunId!==void 0&&t.uint32(26).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Wx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.stepName=n.string();continue;case 3:if(e!==26)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Gx.fromPartial(e??{})},fromPartial(e){let t=Wx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.stepName=e.stepName??``,t.subagentRunId=e.subagentRunId??void 0,t}};function Kx(){return{baseEvent:void 0,stepName:``,subagentRunId:void 0}}var qx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.stepName!==``&&t.uint32(18).string(e.stepName),e.subagentRunId!==void 0&&t.uint32(26).string(e.subagentRunId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Kx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.stepName=n.string();continue;case 3:if(e!==26)break;i.subagentRunId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return qx.fromPartial(e??{})},fromPartial(e){let t=Kx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.stepName=e.stepName??``,t.subagentRunId=e.subagentRunId??void 0,t}};function Jx(){return{baseEvent:void 0,subagentRunId:void 0,messageId:``}}var Yx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==``&&t.uint32(26).string(e.messageId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Jx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Yx.fromPartial(e??{})},fromPartial(e){let t=Jx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??``,t}};function Xx(){return{baseEvent:void 0,subagentRunId:void 0,messageId:``,role:``}}var Zx={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==``&&t.uint32(26).string(e.messageId),e.role!==``&&t.uint32(34).string(e.role),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Xx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue;case 4:if(e!==34)break;i.role=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return Zx.fromPartial(e??{})},fromPartial(e){let t=Xx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??``,t.role=e.role??``,t}};function Qx(){return{baseEvent:void 0,subagentRunId:void 0,messageId:``,delta:``}}var $x={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==``&&t.uint32(26).string(e.messageId),e.delta!==``&&t.uint32(34).string(e.delta),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=Qx();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue;case 4:if(e!==34)break;i.delta=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return $x.fromPartial(e??{})},fromPartial(e){let t=Qx();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??``,t.delta=e.delta??``,t}};function eS(){return{baseEvent:void 0,subagentRunId:void 0,messageId:``}}var tS={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==``&&t.uint32(26).string(e.messageId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=eS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return tS.fromPartial(e??{})},fromPartial(e){let t=eS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??``,t}};function nS(){return{baseEvent:void 0,subagentRunId:void 0,messageId:void 0,delta:void 0}}var rS={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==void 0&&t.uint32(26).string(e.messageId),e.delta!==void 0&&t.uint32(34).string(e.delta),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=nS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue;case 4:if(e!==34)break;i.delta=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return rS.fromPartial(e??{})},fromPartial(e){let t=nS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??void 0,t.delta=e.delta??void 0,t}};function iS(){return{baseEvent:void 0,subagentRunId:void 0,messageId:``}}var aS={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.messageId!==``&&t.uint32(26).string(e.messageId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=iS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.messageId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return aS.fromPartial(e??{})},fromPartial(e){let t=iS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.messageId=e.messageId??``,t}};function oS(){return{baseEvent:void 0,subagentRunId:void 0,subtype:``,entityId:``,encryptedValue:``}}var sS={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==void 0&&t.uint32(18).string(e.subagentRunId),e.subtype!==``&&t.uint32(26).string(e.subtype),e.entityId!==``&&t.uint32(34).string(e.entityId),e.encryptedValue!==``&&t.uint32(42).string(e.encryptedValue),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=oS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.subtype=n.string();continue;case 4:if(e!==34)break;i.entityId=n.string();continue;case 5:if(e!==42)break;i.encryptedValue=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return sS.fromPartial(e??{})},fromPartial(e){let t=oS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??void 0,t.subtype=e.subtype??``,t.entityId=e.entityId??``,t.encryptedValue=e.encryptedValue??``,t}};function cS(){return{baseEvent:void 0,subagentRunId:``,name:``,description:void 0,parentSubagentRunId:void 0,parentToolCallId:void 0,parentMessageId:void 0}}var lS={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==``&&t.uint32(18).string(e.subagentRunId),e.name!==``&&t.uint32(26).string(e.name),e.description!==void 0&&t.uint32(34).string(e.description),e.parentSubagentRunId!==void 0&&t.uint32(42).string(e.parentSubagentRunId),e.parentToolCallId!==void 0&&t.uint32(50).string(e.parentToolCallId),e.parentMessageId!==void 0&&t.uint32(58).string(e.parentMessageId),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=cS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.name=n.string();continue;case 4:if(e!==34)break;i.description=n.string();continue;case 5:if(e!==42)break;i.parentSubagentRunId=n.string();continue;case 6:if(e!==50)break;i.parentToolCallId=n.string();continue;case 7:if(e!==58)break;i.parentMessageId=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return lS.fromPartial(e??{})},fromPartial(e){let t=cS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??``,t.name=e.name??``,t.description=e.description??void 0,t.parentSubagentRunId=e.parentSubagentRunId??void 0,t.parentToolCallId=e.parentToolCallId??void 0,t.parentMessageId=e.parentMessageId??void 0,t}};function uS(){return{baseEvent:void 0,subagentRunId:``,result:void 0,outcome:``,interruptIds:[]}}var dS={encode(e,t=new J){e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==``&&t.uint32(18).string(e.subagentRunId),e.result!==void 0&&X.encode(X.wrap(e.result),t.uint32(26).fork()).join(),e.outcome!==``&&t.uint32(34).string(e.outcome);for(let n of e.interruptIds)t.uint32(42).string(n);return t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=uS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.result=X.unwrap(X.decode(n,n.uint32()));continue;case 4:if(e!==34)break;i.outcome=n.string();continue;case 5:if(e!==42)break;i.interruptIds.push(n.string());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return dS.fromPartial(e??{})},fromPartial(e){let t=uS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??``,t.result=e.result??void 0,t.outcome=e.outcome??``,t.interruptIds=e.interruptIds?.map(e=>e)||[],t}};function fS(){return{baseEvent:void 0,subagentRunId:``,message:``,code:void 0}}var pS={encode(e,t=new J){return e.baseEvent!==void 0&&Z.encode(e.baseEvent,t.uint32(10).fork()).join(),e.subagentRunId!==``&&t.uint32(18).string(e.subagentRunId),e.message!==``&&t.uint32(26).string(e.message),e.code!==void 0&&t.uint32(34).string(e.code),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=fS();for(;n.pos>>3){case 1:if(e!==10)break;i.baseEvent=Z.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.subagentRunId=n.string();continue;case 3:if(e!==26)break;i.message=n.string();continue;case 4:if(e!==34)break;i.code=n.string();continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return pS.fromPartial(e??{})},fromPartial(e){let t=fS();return t.baseEvent=e.baseEvent!==void 0&&e.baseEvent!==null?Z.fromPartial(e.baseEvent):void 0,t.subagentRunId=e.subagentRunId??``,t.message=e.message??``,t.code=e.code??void 0,t}};function mS(){return{textMessageStart:void 0,textMessageContent:void 0,textMessageEnd:void 0,toolCallStart:void 0,toolCallArgs:void 0,toolCallEnd:void 0,stateSnapshot:void 0,stateDelta:void 0,messagesSnapshot:void 0,raw:void 0,custom:void 0,runStarted:void 0,runFinished:void 0,runError:void 0,stepStarted:void 0,stepFinished:void 0,textMessageChunk:void 0,toolCallChunk:void 0,subagentStarted:void 0,subagentFinished:void 0,subagentError:void 0,toolCallResult:void 0,activitySnapshot:void 0,activityDelta:void 0,reasoningStart:void 0,reasoningMessageStart:void 0,reasoningMessageContent:void 0,reasoningMessageEnd:void 0,reasoningMessageChunk:void 0,reasoningEnd:void 0,reasoningEncryptedValue:void 0}}var hS={encode(e,t=new J){return e.textMessageStart!==void 0&&sx.encode(e.textMessageStart,t.uint32(10).fork()).join(),e.textMessageContent!==void 0&&lx.encode(e.textMessageContent,t.uint32(18).fork()).join(),e.textMessageEnd!==void 0&&dx.encode(e.textMessageEnd,t.uint32(26).fork()).join(),e.toolCallStart!==void 0&&hx.encode(e.toolCallStart,t.uint32(34).fork()).join(),e.toolCallArgs!==void 0&&_x.encode(e.toolCallArgs,t.uint32(42).fork()).join(),e.toolCallEnd!==void 0&&yx.encode(e.toolCallEnd,t.uint32(50).fork()).join(),e.stateSnapshot!==void 0&&Tx.encode(e.stateSnapshot,t.uint32(58).fork()).join(),e.stateDelta!==void 0&&Dx.encode(e.stateDelta,t.uint32(66).fork()).join(),e.messagesSnapshot!==void 0&&kx.encode(e.messagesSnapshot,t.uint32(74).fork()).join(),e.raw!==void 0&&Fx.encode(e.raw,t.uint32(82).fork()).join(),e.custom!==void 0&&Lx.encode(e.custom,t.uint32(90).fork()).join(),e.runStarted!==void 0&&zx.encode(e.runStarted,t.uint32(98).fork()).join(),e.runFinished!==void 0&&Vx.encode(e.runFinished,t.uint32(106).fork()).join(),e.runError!==void 0&&Ux.encode(e.runError,t.uint32(114).fork()).join(),e.stepStarted!==void 0&&Gx.encode(e.stepStarted,t.uint32(122).fork()).join(),e.stepFinished!==void 0&&qx.encode(e.stepFinished,t.uint32(130).fork()).join(),e.textMessageChunk!==void 0&&px.encode(e.textMessageChunk,t.uint32(138).fork()).join(),e.toolCallChunk!==void 0&&xx.encode(e.toolCallChunk,t.uint32(146).fork()).join(),e.subagentStarted!==void 0&&lS.encode(e.subagentStarted,t.uint32(154).fork()).join(),e.subagentFinished!==void 0&&dS.encode(e.subagentFinished,t.uint32(162).fork()).join(),e.subagentError!==void 0&&pS.encode(e.subagentError,t.uint32(170).fork()).join(),e.toolCallResult!==void 0&&Cx.encode(e.toolCallResult,t.uint32(178).fork()).join(),e.activitySnapshot!==void 0&&jx.encode(e.activitySnapshot,t.uint32(186).fork()).join(),e.activityDelta!==void 0&&Nx.encode(e.activityDelta,t.uint32(194).fork()).join(),e.reasoningStart!==void 0&&Yx.encode(e.reasoningStart,t.uint32(202).fork()).join(),e.reasoningMessageStart!==void 0&&Zx.encode(e.reasoningMessageStart,t.uint32(210).fork()).join(),e.reasoningMessageContent!==void 0&&$x.encode(e.reasoningMessageContent,t.uint32(218).fork()).join(),e.reasoningMessageEnd!==void 0&&tS.encode(e.reasoningMessageEnd,t.uint32(226).fork()).join(),e.reasoningMessageChunk!==void 0&&rS.encode(e.reasoningMessageChunk,t.uint32(234).fork()).join(),e.reasoningEnd!==void 0&&aS.encode(e.reasoningEnd,t.uint32(242).fork()).join(),e.reasoningEncryptedValue!==void 0&&sS.encode(e.reasoningEncryptedValue,t.uint32(250).fork()).join(),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=mS();for(;n.pos>>3){case 1:if(e!==10)break;i.textMessageStart=sx.decode(n,n.uint32());continue;case 2:if(e!==18)break;i.textMessageContent=lx.decode(n,n.uint32());continue;case 3:if(e!==26)break;i.textMessageEnd=dx.decode(n,n.uint32());continue;case 4:if(e!==34)break;i.toolCallStart=hx.decode(n,n.uint32());continue;case 5:if(e!==42)break;i.toolCallArgs=_x.decode(n,n.uint32());continue;case 6:if(e!==50)break;i.toolCallEnd=yx.decode(n,n.uint32());continue;case 7:if(e!==58)break;i.stateSnapshot=Tx.decode(n,n.uint32());continue;case 8:if(e!==66)break;i.stateDelta=Dx.decode(n,n.uint32());continue;case 9:if(e!==74)break;i.messagesSnapshot=kx.decode(n,n.uint32());continue;case 10:if(e!==82)break;i.raw=Fx.decode(n,n.uint32());continue;case 11:if(e!==90)break;i.custom=Lx.decode(n,n.uint32());continue;case 12:if(e!==98)break;i.runStarted=zx.decode(n,n.uint32());continue;case 13:if(e!==106)break;i.runFinished=Vx.decode(n,n.uint32());continue;case 14:if(e!==114)break;i.runError=Ux.decode(n,n.uint32());continue;case 15:if(e!==122)break;i.stepStarted=Gx.decode(n,n.uint32());continue;case 16:if(e!==130)break;i.stepFinished=qx.decode(n,n.uint32());continue;case 17:if(e!==138)break;i.textMessageChunk=px.decode(n,n.uint32());continue;case 18:if(e!==146)break;i.toolCallChunk=xx.decode(n,n.uint32());continue;case 19:if(e!==154)break;i.subagentStarted=lS.decode(n,n.uint32());continue;case 20:if(e!==162)break;i.subagentFinished=dS.decode(n,n.uint32());continue;case 21:if(e!==170)break;i.subagentError=pS.decode(n,n.uint32());continue;case 22:if(e!==178)break;i.toolCallResult=Cx.decode(n,n.uint32());continue;case 23:if(e!==186)break;i.activitySnapshot=jx.decode(n,n.uint32());continue;case 24:if(e!==194)break;i.activityDelta=Nx.decode(n,n.uint32());continue;case 25:if(e!==202)break;i.reasoningStart=Yx.decode(n,n.uint32());continue;case 26:if(e!==210)break;i.reasoningMessageStart=Zx.decode(n,n.uint32());continue;case 27:if(e!==218)break;i.reasoningMessageContent=$x.decode(n,n.uint32());continue;case 28:if(e!==226)break;i.reasoningMessageEnd=tS.decode(n,n.uint32());continue;case 29:if(e!==234)break;i.reasoningMessageChunk=rS.decode(n,n.uint32());continue;case 30:if(e!==242)break;i.reasoningEnd=aS.decode(n,n.uint32());continue;case 31:if(e!==250)break;i.reasoningEncryptedValue=sS.decode(n,n.uint32());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return hS.fromPartial(e??{})},fromPartial(e){let t=mS();return t.textMessageStart=e.textMessageStart!==void 0&&e.textMessageStart!==null?sx.fromPartial(e.textMessageStart):void 0,t.textMessageContent=e.textMessageContent!==void 0&&e.textMessageContent!==null?lx.fromPartial(e.textMessageContent):void 0,t.textMessageEnd=e.textMessageEnd!==void 0&&e.textMessageEnd!==null?dx.fromPartial(e.textMessageEnd):void 0,t.toolCallStart=e.toolCallStart!==void 0&&e.toolCallStart!==null?hx.fromPartial(e.toolCallStart):void 0,t.toolCallArgs=e.toolCallArgs!==void 0&&e.toolCallArgs!==null?_x.fromPartial(e.toolCallArgs):void 0,t.toolCallEnd=e.toolCallEnd!==void 0&&e.toolCallEnd!==null?yx.fromPartial(e.toolCallEnd):void 0,t.stateSnapshot=e.stateSnapshot!==void 0&&e.stateSnapshot!==null?Tx.fromPartial(e.stateSnapshot):void 0,t.stateDelta=e.stateDelta!==void 0&&e.stateDelta!==null?Dx.fromPartial(e.stateDelta):void 0,t.messagesSnapshot=e.messagesSnapshot!==void 0&&e.messagesSnapshot!==null?kx.fromPartial(e.messagesSnapshot):void 0,t.raw=e.raw!==void 0&&e.raw!==null?Fx.fromPartial(e.raw):void 0,t.custom=e.custom!==void 0&&e.custom!==null?Lx.fromPartial(e.custom):void 0,t.runStarted=e.runStarted!==void 0&&e.runStarted!==null?zx.fromPartial(e.runStarted):void 0,t.runFinished=e.runFinished!==void 0&&e.runFinished!==null?Vx.fromPartial(e.runFinished):void 0,t.runError=e.runError!==void 0&&e.runError!==null?Ux.fromPartial(e.runError):void 0,t.stepStarted=e.stepStarted!==void 0&&e.stepStarted!==null?Gx.fromPartial(e.stepStarted):void 0,t.stepFinished=e.stepFinished!==void 0&&e.stepFinished!==null?qx.fromPartial(e.stepFinished):void 0,t.textMessageChunk=e.textMessageChunk!==void 0&&e.textMessageChunk!==null?px.fromPartial(e.textMessageChunk):void 0,t.toolCallChunk=e.toolCallChunk!==void 0&&e.toolCallChunk!==null?xx.fromPartial(e.toolCallChunk):void 0,t.subagentStarted=e.subagentStarted!==void 0&&e.subagentStarted!==null?lS.fromPartial(e.subagentStarted):void 0,t.subagentFinished=e.subagentFinished!==void 0&&e.subagentFinished!==null?dS.fromPartial(e.subagentFinished):void 0,t.subagentError=e.subagentError!==void 0&&e.subagentError!==null?pS.fromPartial(e.subagentError):void 0,t.toolCallResult=e.toolCallResult!==void 0&&e.toolCallResult!==null?Cx.fromPartial(e.toolCallResult):void 0,t.activitySnapshot=e.activitySnapshot!==void 0&&e.activitySnapshot!==null?jx.fromPartial(e.activitySnapshot):void 0,t.activityDelta=e.activityDelta!==void 0&&e.activityDelta!==null?Nx.fromPartial(e.activityDelta):void 0,t.reasoningStart=e.reasoningStart!==void 0&&e.reasoningStart!==null?Yx.fromPartial(e.reasoningStart):void 0,t.reasoningMessageStart=e.reasoningMessageStart!==void 0&&e.reasoningMessageStart!==null?Zx.fromPartial(e.reasoningMessageStart):void 0,t.reasoningMessageContent=e.reasoningMessageContent!==void 0&&e.reasoningMessageContent!==null?$x.fromPartial(e.reasoningMessageContent):void 0,t.reasoningMessageEnd=e.reasoningMessageEnd!==void 0&&e.reasoningMessageEnd!==null?tS.fromPartial(e.reasoningMessageEnd):void 0,t.reasoningMessageChunk=e.reasoningMessageChunk!==void 0&&e.reasoningMessageChunk!==null?rS.fromPartial(e.reasoningMessageChunk):void 0,t.reasoningEnd=e.reasoningEnd!==void 0&&e.reasoningEnd!==null?aS.fromPartial(e.reasoningEnd):void 0,t.reasoningEncryptedValue=e.reasoningEncryptedValue!==void 0&&e.reasoningEncryptedValue!==null?sS.fromPartial(e.reasoningEncryptedValue):void 0,t}};function gS(){return{provider:void 0,model:void 0,inputTokens:void 0,outputTokens:void 0,totalTokens:void 0,reasoningTokens:void 0,cachedInputTokens:void 0,cacheWriteInputTokens:void 0}}var _S={encode(e,t=new J){return e.provider!==void 0&&t.uint32(10).string(e.provider),e.model!==void 0&&t.uint32(18).string(e.model),e.inputTokens!==void 0&&t.uint32(24).int64(e.inputTokens),e.outputTokens!==void 0&&t.uint32(32).int64(e.outputTokens),e.totalTokens!==void 0&&t.uint32(40).int64(e.totalTokens),e.reasoningTokens!==void 0&&t.uint32(48).int64(e.reasoningTokens),e.cachedInputTokens!==void 0&&t.uint32(56).int64(e.cachedInputTokens),e.cacheWriteInputTokens!==void 0&&t.uint32(64).int64(e.cacheWriteInputTokens),t},decode(e,t){let n=e instanceof Y?e:new Y(e),r=t===void 0?n.len:n.pos+t,i=gS();for(;n.pos>>3){case 1:if(e!==10)break;i.provider=n.string();continue;case 2:if(e!==18)break;i.model=n.string();continue;case 3:if(e!==24)break;i.inputTokens=vS(n.int64());continue;case 4:if(e!==32)break;i.outputTokens=vS(n.int64());continue;case 5:if(e!==40)break;i.totalTokens=vS(n.int64());continue;case 6:if(e!==48)break;i.reasoningTokens=vS(n.int64());continue;case 7:if(e!==56)break;i.cachedInputTokens=vS(n.int64());continue;case 8:if(e!==64)break;i.cacheWriteInputTokens=vS(n.int64());continue}if((e&7)==4||e===0)break;n.skip(e&7)}return i},create(e){return _S.fromPartial(e??{})},fromPartial(e){let t=gS();return t.provider=e.provider??void 0,t.model=e.model??void 0,t.inputTokens=e.inputTokens??void 0,t.outputTokens=e.outputTokens??void 0,t.totalTokens=e.totalTokens??void 0,t.reasoningTokens=e.reasoningTokens??void 0,t.cachedInputTokens=e.cachedInputTokens??void 0,t.cacheWriteInputTokens=e.cacheWriteInputTokens??void 0,t}};function vS(e){let t=globalThis.Number(e.toString());if(t>globalThis.Number.MAX_SAFE_INTEGER)throw new globalThis.Error(`Value is larger than Number.MAX_SAFE_INTEGER`);if(te&&typeof e==`object`?e:void 0,bS=e=>Array.isArray(e)?e:[],xS=()=>typeof process<`u`&&!!{}.SUPPRESS_TRANSFORMATION_WARNINGS,SS=()=>{xS()||console.warn(`[ag-ui][proto] Dropped a content part this build does not know: the protocol has a variant this SDK predates.`)};new Set(Object.values(k));var CS={textMessageStart:`TEXT_MESSAGE_START`,textMessageContent:`TEXT_MESSAGE_CONTENT`,textMessageEnd:`TEXT_MESSAGE_END`,textMessageChunk:`TEXT_MESSAGE_CHUNK`,toolCallStart:`TOOL_CALL_START`,toolCallArgs:`TOOL_CALL_ARGS`,toolCallEnd:`TOOL_CALL_END`,toolCallChunk:`TOOL_CALL_CHUNK`,toolCallResult:`TOOL_CALL_RESULT`,stateSnapshot:`STATE_SNAPSHOT`,stateDelta:`STATE_DELTA`,messagesSnapshot:`MESSAGES_SNAPSHOT`,activitySnapshot:`ACTIVITY_SNAPSHOT`,activityDelta:`ACTIVITY_DELTA`,raw:`RAW`,custom:`CUSTOM`,runStarted:`RUN_STARTED`,runFinished:`RUN_FINISHED`,runError:`RUN_ERROR`,stepStarted:`STEP_STARTED`,stepFinished:`STEP_FINISHED`,reasoningStart:`REASONING_START`,reasoningMessageStart:`REASONING_MESSAGE_START`,reasoningMessageContent:`REASONING_MESSAGE_CONTENT`,reasoningMessageEnd:`REASONING_MESSAGE_END`,reasoningMessageChunk:`REASONING_MESSAGE_CHUNK`,reasoningEnd:`REASONING_END`,reasoningEncryptedValue:`REASONING_ENCRYPTED_VALUE`,subagentStarted:`SUBAGENT_STARTED`,subagentFinished:`SUBAGENT_FINISHED`,subagentError:`SUBAGENT_ERROR`},wS=new Set([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]),TS=e=>{let t=yS(e);if(t){if([t.data,t.url,t.file].filter(Boolean).length>1)throw Error(`Invalid event: source carries more than one arm`);if(t.data){let e=t.data;return{type:`data`,value:e.value,mimeType:e.mimeType}}if(t.url){let e=t.url;return{type:`url`,value:e.value,mimeType:e.mimeType}}if(t.file){let e=t.file;return{type:`file`,value:e.value,provider:e.provider,mimeType:e.mimeType}}}},ES=e=>{let t=yS(e);if(t){if([t.text,t.image,t.audio,t.video,t.document].filter(Boolean).length>1)throw Error(`Invalid event: content part carries more than one arm`);if(t.text){let e=t.text;return{type:`text`,id:e.id,text:e.text,metadata:e.metadata}}if(t.image){let e=t.image;return e.source!==void 0&&TS(e.source)===void 0?void 0:{type:`image`,id:e.id,source:TS(e.source),metadata:e.metadata}}if(t.audio){let e=t.audio;return e.source!==void 0&&TS(e.source)===void 0?void 0:{type:`audio`,id:e.id,source:TS(e.source),metadata:e.metadata}}if(t.video){let e=t.video;return e.source!==void 0&&TS(e.source)===void 0?void 0:{type:`video`,id:e.id,source:TS(e.source),metadata:e.metadata}}if(t.document){let e=t.document;return e.source!==void 0&&TS(e.source)===void 0?void 0:{type:`document`,id:e.id,source:TS(e.source),metadata:e.metadata}}}},DS=new Set([`activity`]),OS=new Set([`user`,`tool`]),kS=new Set([`developer`,`system`,`assistant`,`user`,`tool`,`activity`,`reasoning`]),AS=e=>{let t=yS(e)??{},n={...t},r=typeof t.role==`string`?t.role:``,i=kS.has(r),a=i?OS.has(r):bS(t.contentParts).length>0,o=i?DS.has(r):!a&&t.activityContent!==void 0;if(!i&&(t.content===void 0?0:1)+ +(bS(t.contentParts).length>0)+(t.activityContent===void 0?0:1)>1)throw Error(`Invalid event: message carries more than one content form`);if(i){if(!a&&bS(t.contentParts).length>0)throw Error(`Invalid event: message carries content parts for a role that has none`);if(t.activityContent!==void 0&&!o)throw Error(`Invalid event: message carries activity content for a non-activity role`);if(o&&t.content!==void 0)throw Error(`Invalid event: activity content cannot ride with other content forms`);if(a&&t.content!==void 0&&bS(t.contentParts).length>0)throw Error(`Invalid event: message carries both string content and content parts`)}return a&&t.content===void 0&&(n.content=bS(t.contentParts).map(e=>{let t=ES(e);return t===void 0&&SS(),t}).filter(e=>e!==void 0)),o&&t.activityContent!==void 0&&(n.content=t.activityContent),delete n.activityContent,delete n.contentParts,bS(t.toolCalls).length===0&&delete n.toolCalls,Object.keys(n).forEach(e=>{n[e]===void 0&&delete n[e]}),n},jS=e=>{if(Array.isArray(e)){for(let t of e)jS(t);return}let t=yS(e);if(t)for(let e of Object.keys(t))t[e]===void 0?delete t[e]:jS(t[e])},MS=e=>{let t=yS(e);if(!t)return;let n={};return t.threadId!==void 0&&(n.threadId=t.threadId),t.runId!==void 0&&(n.runId=t.runId),t.protocolVersion!==void 0&&(n.protocolVersion=t.protocolVersion),t.parentRunId!==void 0&&(n.parentRunId=t.parentRunId),t.state!==void 0&&(n.state=t.state),n.messages=bS(t.messages).map(AS).filter(e=>e!==void 0),n.tools=bS(t.tools),n.context=bS(t.context),t.forwardedProps!==void 0&&(n.forwardedProps=t.forwardedProps),n.resume=bS(t.resume),n},NS={TextMessageStartEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},BaseEvent:{singular:new Set([3,4]),descend:{},google:{3:`google.protobuf.Value`,4:`google.protobuf.Struct`}},TextMessageContentEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},TextMessageEndEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ToolCallStartEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ToolCallArgsEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ToolCallEndEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},StateSnapshotEvent:{singular:new Set([1,2]),descend:{1:`BaseEvent`},google:{2:`google.protobuf.Value`}},StateDeltaEvent:{singular:new Set([1]),descend:{1:`BaseEvent`,2:`JsonPatchOperation`}},JsonPatchOperation:{singular:new Set([4]),descend:{},google:{4:`google.protobuf.Value`}},MessagesSnapshotEvent:{singular:new Set([1]),descend:{1:`BaseEvent`,2:`Message`}},Message:{singular:new Set([9,13]),descend:{5:`ToolCall`,8:`InputContent`},google:{9:`google.protobuf.Struct`,13:`google.protobuf.Struct`}},ToolCall:{singular:new Set([3,4]),descend:{},google:{4:`google.protobuf.Struct`}},InputContent:{singular:new Set([1,2,3,4,5]),descend:{1:`TextInputPart`,2:`ImageInputPart`,3:`AudioInputPart`,4:`VideoInputPart`,5:`DocumentInputPart`},arms:new Set([1,2,3,4,5])},TextInputPart:{singular:new Set([3]),descend:{},google:{3:`google.protobuf.Value`}},ImageInputPart:{singular:new Set([1,2]),descend:{1:`InputContentSource`},google:{2:`google.protobuf.Value`}},InputContentSource:{singular:new Set([1,2,3]),descend:{},arms:new Set([1,2,3])},AudioInputPart:{singular:new Set([1,2]),descend:{1:`InputContentSource`},google:{2:`google.protobuf.Value`}},VideoInputPart:{singular:new Set([1,2]),descend:{1:`InputContentSource`},google:{2:`google.protobuf.Value`}},DocumentInputPart:{singular:new Set([1,2]),descend:{1:`InputContentSource`},google:{2:`google.protobuf.Value`}},RawEvent:{singular:new Set([1,2]),descend:{1:`BaseEvent`},google:{2:`google.protobuf.Value`}},CustomEvent:{singular:new Set([1,3]),descend:{1:`BaseEvent`},google:{3:`google.protobuf.Value`}},RunStartedEvent:{singular:new Set([1,5]),descend:{1:`BaseEvent`,5:`RunAgentInput`}},RunAgentInput:{singular:new Set([4,8]),descend:{5:`Message`,6:`Tool`,9:`ResumeEntry`},google:{4:`google.protobuf.Value`,8:`google.protobuf.Value`}},Tool:{singular:new Set([3,4]),descend:{},google:{3:`google.protobuf.Value`,4:`google.protobuf.Struct`}},ResumeEntry:{singular:new Set([3,4]),descend:{},google:{3:`google.protobuf.Value`,4:`google.protobuf.Struct`}},RunFinishedEvent:{singular:new Set([1,4]),descend:{1:`BaseEvent`,6:`Interrupt`},google:{4:`google.protobuf.Value`}},Interrupt:{singular:new Set([5,7]),descend:{},google:{5:`google.protobuf.Value`,7:`google.protobuf.Value`}},RunErrorEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},StepStartedEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},StepFinishedEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},TextMessageChunkEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ToolCallChunkEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},SubagentStartedEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},SubagentFinishedEvent:{singular:new Set([1,3]),descend:{1:`BaseEvent`},google:{3:`google.protobuf.Value`}},SubagentErrorEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ToolCallResultEvent:{singular:new Set([1]),descend:{1:`BaseEvent`,7:`InputContent`}},ActivitySnapshotEvent:{singular:new Set([1,5]),descend:{1:`BaseEvent`},google:{5:`google.protobuf.Struct`}},ActivityDeltaEvent:{singular:new Set([1]),descend:{1:`BaseEvent`,5:`JsonPatchOperation`}},ReasoningStartEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ReasoningMessageStartEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ReasoningMessageContentEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ReasoningMessageEndEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ReasoningMessageChunkEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ReasoningEndEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},ReasoningEncryptedValueEvent:{singular:new Set([1]),descend:{1:`BaseEvent`}},"google.protobuf.Struct":{singular:new Set,descend:{1:`google.protobuf.Struct.FieldsEntry`}},"google.protobuf.Struct.FieldsEntry":{singular:new Set([2]),descend:{2:`google.protobuf.Value`}},"google.protobuf.Value":{singular:new Set([5,6]),descend:{5:`google.protobuf.Struct`,6:`google.protobuf.ListValue`},arms:new Set([1,2,3,4,5,6]),armWireTypes:{1:0,2:1,3:2,4:0,5:2,6:2}},"google.protobuf.ListValue":{singular:new Set,descend:{1:`google.protobuf.Value`}}},PS={1:`TextMessageStartEvent`,2:`TextMessageContentEvent`,3:`TextMessageEndEvent`,4:`ToolCallStartEvent`,5:`ToolCallArgsEvent`,6:`ToolCallEndEvent`,7:`StateSnapshotEvent`,8:`StateDeltaEvent`,9:`MessagesSnapshotEvent`,10:`RawEvent`,11:`CustomEvent`,12:`RunStartedEvent`,13:`RunFinishedEvent`,14:`RunErrorEvent`,15:`StepStartedEvent`,16:`StepFinishedEvent`,17:`TextMessageChunkEvent`,18:`ToolCallChunkEvent`,19:`SubagentStartedEvent`,20:`SubagentFinishedEvent`,21:`SubagentErrorEvent`,22:`ToolCallResultEvent`,23:`ActivitySnapshotEvent`,24:`ActivityDeltaEvent`,25:`ReasoningStartEvent`,26:`ReasoningMessageStartEvent`,27:`ReasoningMessageContentEvent`,28:`ReasoningMessageEndEvent`,29:`ReasoningMessageChunkEvent`,30:`ReasoningEndEvent`,31:`ReasoningEncryptedValueEvent`};function FS(e,t){let n=0,r=0;for(;;){if(t.offset>=e.length)throw Error(`Invalid event`);let i=e[t.offset++];if(r<28?n+=(i&127)*2**r:r===28&&(n+=(i&15)*2**28),r+=7,!(i&128))return n}}function IS(e,t){let n={offset:0},r=0,i=0;for(;n.offsete.length)throw Error(`Invalid event`);if(r===0){if(t.arms?.has(o)){if(i!==0&&i!==o)throw Error(`Invalid event`);i=o}let r=t.descend[o];if(r!==void 0){let t=NS[r];t!==void 0&&IS(e.subarray(n.offset,n.offset+a),t)}}n.offset+=a}else if(s===5)n.offset+=4;else throw Error(`Invalid event`);if(n.offset>e.length)throw Error(`Invalid event`)}if(r!==0)throw Error(`Invalid event`)}function LS(e){let t=new Set,n={offset:0},r=0;for(;n.offset0&&!t.has(a))throw Error(`Invalid event`);t.add(a)}if(o===0)FS(e,n);else if(o===1)n.offset+=8;else if(o===2){let t=FS(e,n);if(n.offset+t>e.length)throw Error(`Invalid event`);if(r===0){let r=PS[a];if(r!==void 0){let i=NS[r];i!==void 0&&IS(e.subarray(n.offset,n.offset+t),i)}}n.offset+=t}else if(o===5)n.offset+=4;else throw Error(`Invalid event`);if(n.offset>e.length)throw Error(`Invalid event`)}if(r!==0)throw Error(`Invalid event`)}function RS(e){if(e.length===1)return e[0];let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;for(let r of e)t.set(r,n),n+=r.length;return t}function zS(e,t){let n=new Y(e),r=[],i=new Map,a,o=!1;for(;n.pos1||n!==t){s.push(new J().uint32(e.number*8+2).bytes(n).finish()),o=!0;continue}}s.push(e.raw)}return o?RS(s):e}var BS=class extends Error{constructor(e=`Unknown event type`){super(e),this.name=`AGUIUnknownEventTypeError`}};function VS(e,t,n,r){let i=0,a=0,o=0;for(;;){if(t.offset>=e.length||o>=n)return-1;let s=e[t.offset++];if(o+=1,o===n&&s>r)return-1;if(i+=(s&127)*2**a,a+=7,!(s&128))return i}}var HS=(e,t)=>VS(e,t,5,15),US=(e,t)=>VS(e,t,10,1);function WS(e){let t={offset:0},n=[];for(;t.offsete.length)return!1;t.offset+=n}else return!1;if(t.offset>e.length)return!1}return n.length===0}function GS(e){let t={offset:0},n=[],r=0;for(;t.offsete.length)return!1;if(s){if(wS.has(a)||!WS(e.subarray(t.offset,t.offset+n)))return!1;r+=1}t.offset+=n}else return!1;if(t.offset>e.length)return!1}return n.length===0&&r>0}function KS(e){LS(e);let t=hS.decode(zS(e,{singular:wS,descend:PS})),n=Object.entries(t).filter(([,e])=>e!==void 0);if(n.length!==1)throw n.length===0&&GS(e)?new BS:Error(`Invalid event`);let r=n[0],i=CS[r[0]];if(i===void 0)throw Error(`Invalid event`);let a=r[1],o=yS(a.baseEvent);if(!o)throw Error(`Invalid event`);let s=ix[o.type];if(s!==i)throw Error(`Invalid event: envelope carries `+i+` but the base event declares `+String(s));if(a.type=i,a.timestamp=o.timestamp,a.rawEvent=o.rawEvent,o.metadata!==void 0&&(a.metadata=o.metadata),delete a.baseEvent,a.type===`MESSAGES_SNAPSHOT`&&Array.isArray(a.messages)&&(a.messages=a.messages.map(AS).filter(e=>e!==void 0)),a.type===`RUN_FINISHED`){let e=a,t=typeof e.outcome==`string`&&e.outcome!==``?e.outcome:void 0,n={};n.pendingToolCallIds=e.pendingToolCallIds,delete e.pendingToolCallIds,n.interrupts=e.interrupts,delete e.interrupts,delete e.outcome,t===void 0&&(bS(n.pendingToolCallIds).length>0&&(e.pendingToolCallIds=n.pendingToolCallIds),bS(n.interrupts).length>0&&(e.interrupts=n.interrupts)),t===`success`&&(e.outcome={type:`success`,...bS(n.pendingToolCallIds).length>0?{pendingToolCallIds:n.pendingToolCallIds}:{},...bS(n.interrupts).length>0?{interrupts:n.interrupts}:{}}),t===`interrupt`&&(e.outcome={type:`interrupt`,interrupts:bS(n.interrupts),...bS(n.pendingToolCallIds).length>0?{pendingToolCallIds:n.pendingToolCallIds}:{}}),t===`cancelled`&&(e.outcome={type:`cancelled`,...bS(n.pendingToolCallIds).length>0?{pendingToolCallIds:n.pendingToolCallIds}:{},...bS(n.interrupts).length>0?{interrupts:n.interrupts}:{}}),t!==void 0&&![`success`,`interrupt`,`cancelled`].includes(t)&&(e.outcome={type:t,...bS(n.pendingToolCallIds).length>0?{pendingToolCallIds:n.pendingToolCallIds}:{},...bS(n.interrupts).length>0?{interrupts:n.interrupts}:{}})}if(a.type===`SUBAGENT_FINISHED`){let e=a,t=typeof e.outcome==`string`&&e.outcome!==``?e.outcome:void 0,n={};n.interruptIds=e.interruptIds,delete e.interruptIds,delete e.outcome,t===void 0&&bS(n.interruptIds).length>0&&(e.interruptIds=n.interruptIds),t===`success`&&(e.outcome={type:`success`,...bS(n.interruptIds).length>0?{interruptIds:n.interruptIds}:{}}),t===`suspended`&&(e.outcome={type:`suspended`,...bS(n.interruptIds).length>0?{interruptIds:n.interruptIds}:{}}),t!==void 0&&![`success`,`suspended`].includes(t)&&(e.outcome={type:t,...bS(n.interruptIds).length>0?{interruptIds:n.interruptIds}:{}})}if(a.type===`STATE_DELTA`&&Array.isArray(a.delta)&&(a.delta=a.delta.map(e=>{let t=yb[e.op];return e.op=typeof t==`string`&&t!==`UNRECOGNIZED`?t.toLowerCase():String(e.op),Object.keys(e).forEach(t=>{e[t]===void 0&&delete e[t]}),e})),a.type===`ACTIVITY_DELTA`&&Array.isArray(a.patch)&&(a.patch=a.patch.map(e=>{let t=yb[e.op];return e.op=typeof t==`string`&&t!==`UNRECOGNIZED`?t.toLowerCase():String(e.op),Object.keys(e).forEach(t=>{e[t]===void 0&&delete e[t]}),e})),a.type===`RUN_FINISHED`&&Array.isArray(a.usage)&&a.usage.length===0&&delete a.usage,a.type===`RUN_ERROR`&&Array.isArray(a.usage)&&a.usage.length===0&&delete a.usage,a.type===`TOOL_CALL_RESULT`){let e=a;if(e.content!==void 0&&bS(e.contentParts).length>0)throw Error(`Invalid event: content carries both string content and content parts`);e.content===void 0&&(e.content=bS(e.contentParts).map(e=>{let t=ES(e);return t===void 0&&SS(),t}).filter(e=>e!==void 0)),delete e.contentParts}return a.type===`RUN_STARTED`&&a.input!==void 0&&(a.input=MS(a.input)),jS(a),a}var qS=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,JS=e=>{if(typeof e!=`string`)throw TypeError(`Invalid argument expected string`);let t=e.match(qS);if(!t)throw Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},YS=e=>e===`*`||e===`x`||e===`X`,XS=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},ZS=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],QS=(e,t)=>{if(YS(e)||YS(t))return 0;let[n,r]=ZS(XS(e),XS(t));return n>r?1:n{for(let n=0;n{let n=JS(e),r=JS(t),i=n.pop(),a=r.pop(),o=$S(n,r);return o===0?i&&a?$S(i.split(`.`),a.split(`.`)):i||a?i?-1:1:0:o},tC=e=>typeof e==`string`&&/^[v\d]/.test(e)&&qS.test(e);Object.freeze({status:`aborted`});function Q(e,t,n){function r(n,r){var i;Object.defineProperty(n,"_zod",{value:n._zod??{},enumerable:!1}),(i=n._zod).traits??(i.traits=new Set),n._zod.traits.add(e),t(n,r);for(let e in o.prototype)e in n||Object.defineProperty(n,e,{value:o.prototype[e].bind(n)});n._zod.constr=o,n._zod.def=r}let i=n?.Parent??Object;class a extends i{}Object.defineProperty(a,"name",{value:e});function o(e){var t;let i=n?.Parent?new a:this;r(i,e),(t=i._zod).deferred??(t.deferred=[]);for(let e of i._zod.deferred)e();return i}return Object.defineProperty(o,"init",{value:r}),Object.defineProperty(o,Symbol.hasInstance,{value:t=>n?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}var nC=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},rC={};function iC(e){return e&&Object.assign(rC,e),rC}function aC(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function oC(e,t){return typeof t==`bigint`?t.toString():t}function sC(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function cC(e){return e==null}function lC(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function uC(e,t,n){Object.defineProperty(e,t,{get(){{let r=n();return e[t]=r,r}},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function dC(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function fC(e){return JSON.stringify(e)}var pC=Error.captureStackTrace?Error.captureStackTrace:(...e)=>{};function mC(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var hC=sC(()=>{if(typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function gC(e){if(mC(e)===!1)return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return mC(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}var _C=new Set([`string`,`number`,`symbol`]);function vC(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function yC(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function bC(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function xC(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}function SC(e,t){let n={},r=e._zod.def;for(let e in t){if(!(e in r.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&(n[e]=r.shape[e])}return yC(e,{...e._zod.def,shape:n,checks:[]})}function CC(e,t){let n={...e._zod.def.shape},r=e._zod.def;for(let e in t){if(!(e in r.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete n[e]}return yC(e,{...e._zod.def,shape:n,checks:[]})}function wC(e,t){if(!gC(t))throw Error(`Invalid input to extend: expected a plain object`);return yC(e,{...e._zod.def,get shape(){let n={...e._zod.def.shape,...t};return dC(this,`shape`,n),n},checks:[]})}function TC(e,t){return yC(e,{...e._zod.def,get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return dC(this,`shape`,n),n},catchall:t._zod.def.catchall,checks:[]})}function EC(e,t,n){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return yC(t,{...t._zod.def,shape:i,checks:[]})}function DC(e,t,n){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return yC(t,{...t._zod.def,shape:i,checks:[]})}function OC(e,t=0){for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function AC(e){return typeof e==`string`?e:e?.message}function jC(e,t,n){let r={...e,path:e.path??[]};return e.message||(r.message=AC(e.inst?._zod.def?.error?.(e))??AC(t?.error?.(e))??AC(n.customError?.(e))??AC(n.localeError?.(e))??`Invalid input`),delete r.inst,delete r.continue,t?.reportInput||delete r.input,r}function MC(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function NC(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var PC=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),Object.defineProperty(e,"message",{get(){return JSON.stringify(t,oC,2)},enumerable:!0}),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},FC=Q(`$ZodError`,PC),IC=Q(`$ZodError`,PC,{Parent:Error});function LC(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function RC(e,t){let n=t||function(e){return e.message},r={_errors:[]},i=e=>{for(let t of e.issues)if(t.code===`invalid_union`&&t.errors.length)t.errors.map(e=>i({issues:e}));else if(t.code===`invalid_key`)i({issues:t.issues});else if(t.code===`invalid_element`)i({issues:t.issues});else if(t.path.length===0)r._errors.push(n(t));else{let e=r,i=0;for(;i(t,n,r,i)=>{let a=r?Object.assign(r,{async:!1}):{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new nC;if(o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>jC(e,a,iC())));throw pC(t,i?.callee),t}return o.value},BC=e=>async(t,n,r,i)=>{let a=r?Object.assign(r,{async:!0}):{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>jC(e,a,iC())));throw pC(t,i?.callee),t}return o.value},VC=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new nC;return a.issues.length?{success:!1,error:new(e??FC)(a.issues.map(e=>jC(e,i,iC())))}:{success:!0,data:a.value}},HC=VC(IC),UC=e=>async(t,n,r)=>{let i=r?Object.assign(r,{async:!0}):{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>jC(e,i,iC())))}:{success:!0,data:a.value}},WC=UC(IC),GC=Q(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),KC=Q(`$ZodCheckMaxLength`,(e,t)=>{var n;GC.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!cC(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum{let r=n.value;if(r.length<=t.maximum)return;let i=MC(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),qC=Q(`$ZodCheckMinLength`,(e,t)=>{var n;GC.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!cC(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=MC(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),JC=Q(`$ZodCheckLengthEquals`,(e,t)=>{var n;GC.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!cC(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=MC(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),YC=Q(`$ZodCheckOverwrite`,(e,t)=>{GC.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),XC=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` +`).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.args,n=[...(this?.content??[``]).map(e=>` ${e}`)];return new e(...t,n.join(` +`))}},ZC={major:4,minor:0,patch:0},QC=Q(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=ZC;let r=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&r.unshift(e);for(let t of r)for(let n of t._zod.onattach)n(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,n)=>{let r=OC(e),i;for(let a of t){if(a._zod.def.when){if(!a._zod.def.when(e))continue}else if(r)continue;let t=e.issues.length,o=a._zod.check(e);if(o instanceof Promise&&n?.async===!1)throw new nC;if(i||o instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(r||=OC(e,t))});else{if(e.issues.length===t)continue;r||=OC(e,t)}}return i?i.then(()=>e):e};e._zod.run=(n,i)=>{let a=e._zod.parse(n,i);if(a instanceof Promise){if(i.async===!1)throw new nC;return a.then(e=>t(e,r,i))}return t(a,r,i)}}e[`~standard`]={validate:t=>{try{let n=HC(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return WC(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}}),$C=Q(`$ZodUnknown`,(e,t)=>{QC.init(e,t),e._zod.parse=e=>e}),ew=Q(`$ZodNever`,(e,t)=>{QC.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function tw(e,t,n){e.issues.length&&t.issues.push(...kC(n,e.issues)),t.value[n]=e.value}var nw=Q(`$ZodArray`,(e,t)=>{QC.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;etw(t,n,e))):tw(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function rw(e,t,n){e.issues.length&&t.issues.push(...kC(n,e.issues)),t.value[n]=e.value}function iw(e,t,n,r){e.issues.length?r[n]===void 0?n in r?t.value[n]=void 0:t.value[n]=e.value:t.issues.push(...kC(n,e.issues)):e.value===void 0?n in r&&(t.value[n]=void 0):t.value[n]=e.value}var aw=Q(`$ZodObject`,(e,t)=>{QC.init(e,t);let n=sC(()=>{let e=Object.keys(t.shape);for(let n of e)if(!(t.shape[n]instanceof QC))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=xC(t.shape);return{shape:t.shape,keys:e,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(n)}});uC(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=e=>{let t=new XC([`shape`,`payload`,`ctx`]),r=n.value,i=e=>{let t=fC(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write(`const input = payload.value;`);let a=Object.create(null),o=0;for(let e of r.keys)a[e]=`key_${o++}`;t.write(`const newResult = {}`);for(let e of r.keys)if(r.optionalKeys.has(e)){let n=a[e];t.write(`const ${n} = ${i(e)};`);let r=fC(e);t.write(` + if (${n}.issues.length) { + if (input[${r}] === undefined) { + if (${r} in input) { + newResult[${r}] = undefined; + } + } else { + payload.issues = payload.issues.concat( + ${n}.issues.map((iss) => ({ + ...iss, + path: iss.path ? [${r}, ...iss.path] : [${r}], + })) + ); + } + } else if (${n}.value === undefined) { + if (${r} in input) newResult[${r}] = undefined; + } else { + newResult[${r}] = ${n}.value; + } + `)}else{let n=a[e];t.write(`const ${n} = ${i(e)};`),t.write(` + if (${n}.issues.length) payload.issues = payload.issues.concat(${n}.issues.map(iss => ({ + ...iss, + path: iss.path ? [${fC(e)}, ...iss.path] : [${fC(e)}] + })));`),t.write(`newResult[${fC(e)}] = ${n}.value`)}t.write(`payload.value = newResult;`),t.write(`return payload;`);let s=t.compile();return(t,n)=>s(e,t,n)},i,a=mC,o=!rC.jitless,s=o&&hC.value,c=t.catchall,l;e._zod.parse=(u,d)=>{l??=n.value;let f=u.value;if(!a(f))return u.issues.push({expected:`object`,code:`invalid_type`,input:f,inst:e}),u;let p=[];if(o&&s&&d?.async===!1&&d.jitless!==!0)i||=r(t.shape),u=i(u,d);else{u.value={};let e=l.shape;for(let t of l.keys){let n=e[t],r=n._zod.run({value:f[t],issues:[]},d),i=n._zod.optin===`optional`&&n._zod.optout===`optional`;r instanceof Promise?p.push(r.then(e=>i?iw(e,u,t,f):rw(e,u,t))):i?iw(r,u,t,f):rw(r,u,t)}}if(!c)return p.length?Promise.all(p).then(()=>u):u;let m=[],h=l.keySet,g=c._zod,_=g.def.type;for(let e of Object.keys(f)){if(h.has(e))continue;if(_===`never`){m.push(e);continue}let t=g.run({value:f[e],issues:[]},d);t instanceof Promise?p.push(t.then(t=>rw(t,u,e))):rw(t,u,e)}return m.length&&u.issues.push({code:`unrecognized_keys`,keys:m,input:f,inst:e}),p.length?Promise.all(p).then(()=>u):u}});function ow(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;return t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>jC(e,r,iC())))}),t}var sw=Q(`$ZodUnion`,(e,t)=>{QC.init(e,t),uC(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),uC(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),uC(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),uC(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>lC(e.source)).join(`|`)})$`)}}),e._zod.parse=(n,r)=>{let i=!1,a=[];for(let e of t.options){let t=e._zod.run({value:n.value,issues:[]},r);if(t instanceof Promise)a.push(t),i=!0;else{if(t.issues.length===0)return t;a.push(t)}}return i?Promise.all(a).then(t=>ow(t,n,e,r)):ow(a,n,e,r)}}),cw=Q(`$ZodIntersection`,(e,t)=>{QC.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>uw(e,t,n)):uw(e,i,a)}});function lw(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(gC(e)&&gC(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=lw(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r{QC.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!gC(i))return n.issues.push({expected:`record`,code:`invalid_type`,input:i,inst:e}),n;let a=[];if(t.keyType._zod.values){let o=t.keyType._zod.values;n.value={};for(let e of o)if(typeof e==`string`||typeof e==`number`||typeof e==`symbol`){let o=t.valueType._zod.run({value:i[e],issues:[]},r);o instanceof Promise?a.push(o.then(t=>{t.issues.length&&n.issues.push(...kC(e,t.issues)),n.value[e]=t.value})):(o.issues.length&&n.issues.push(...kC(e,o.issues)),n.value[e]=o.value)}let s;for(let e in i)o.has(e)||(s??=[],s.push(e));s&&s.length>0&&n.issues.push({code:`unrecognized_keys`,input:i,inst:e,keys:s})}else{n.value={};for(let o of Reflect.ownKeys(i)){if(o===`__proto__`)continue;let s=t.keyType._zod.run({value:o,issues:[]},r);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(s.issues.length){n.issues.push({origin:`record`,code:`invalid_key`,issues:s.issues.map(e=>jC(e,r,iC())),input:o,path:[o],inst:e}),n.value[s.value]=s.value;continue}let c=t.valueType._zod.run({value:i[o],issues:[]},r);c instanceof Promise?a.push(c.then(e=>{e.issues.length&&n.issues.push(...kC(o,e.issues)),n.value[s.value]=e.value})):(c.issues.length&&n.issues.push(...kC(o,c.issues)),n.value[s.value]=c.value)}}return a.length?Promise.all(a).then(()=>n):n}}),fw=Q(`$ZodEnum`,(e,t)=>{QC.init(e,t);let n=aC(t.entries);e._zod.values=new Set(n),e._zod.pattern=RegExp(`^(${n.filter(e=>_C.has(typeof e)).map(e=>typeof e==`string`?vC(e):e.toString()).join(`|`)})$`),e._zod.parse=(t,r)=>{let i=t.value;return e._zod.values.has(i)||t.issues.push({code:`invalid_value`,values:n,input:i,inst:e}),t}}),pw=Q(`$ZodLiteral`,(e,t)=>{QC.init(e,t),e._zod.values=new Set(t.values),e._zod.pattern=RegExp(`^(${t.values.map(e=>typeof e==`string`?vC(e):e?e.toString():String(e)).join(`|`)})$`),e._zod.parse=(n,r)=>{let i=n.value;return e._zod.values.has(i)||n.issues.push({code:`invalid_value`,values:t.values,input:i,inst:e}),n}}),mw=Q(`$ZodTransform`,(e,t)=>{QC.init(e,t),e._zod.parse=(e,n)=>{let r=t.transform(e.value,e);if(n.async)return(r instanceof Promise?r:Promise.resolve(r)).then(t=>(e.value=t,e));if(r instanceof Promise)throw new nC;return e.value=r,e}}),hw=Q(`$ZodOptional`,(e,t)=>{QC.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,uC(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),uC(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${lC(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>t.innerType._zod.optin===`optional`?t.innerType._zod.run(e,n):e.value===void 0?e:t.innerType._zod.run(e,n)}),gw=Q(`$ZodNullable`,(e,t)=>{QC.init(e,t),uC(e._zod,`optin`,()=>t.innerType._zod.optin),uC(e._zod,`optout`,()=>t.innerType._zod.optout),uC(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${lC(e.source)}|null)$`):void 0}),uC(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),_w=Q(`$ZodDefault`,(e,t)=>{QC.init(e,t),e._zod.optin=`optional`,uC(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>vw(e,t)):vw(r,t)}});function vw(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var yw=Q(`$ZodPrefault`,(e,t)=>{QC.init(e,t),e._zod.optin=`optional`,uC(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>(e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),bw=Q(`$ZodNonOptional`,(e,t)=>{QC.init(e,t),uC(e._zod,`values`,()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>xw(t,e)):xw(i,e)}});function xw(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}var Sw=Q(`$ZodCatch`,(e,t)=>{QC.init(e,t),e._zod.optin=`optional`,uC(e._zod,`optout`,()=>t.innerType._zod.optout),uC(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(r=>(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>jC(e,n,iC()))},input:e.value}),e.issues=[]),e)):(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>jC(e,n,iC()))},input:e.value}),e.issues=[]),e)}}),Cw=Q(`$ZodPipe`,(e,t)=>{QC.init(e,t),uC(e._zod,`values`,()=>t.in._zod.values),uC(e._zod,`optin`,()=>t.in._zod.optin),uC(e._zod,`optout`,()=>t.out._zod.optout),e._zod.parse=(e,n)=>{let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>ww(e,t,n)):ww(r,t,n)}});function ww(e,t,n){return OC(e)?e:t.out._zod.run({value:e.value,issues:e.issues},n)}var Tw=Q(`$ZodReadonly`,(e,t)=>{QC.init(e,t),uC(e._zod,`propValues`,()=>t.innerType._zod.propValues),uC(e._zod,`values`,()=>t.innerType._zod.values),uC(e._zod,`optin`,()=>t.innerType._zod.optin),uC(e._zod,`optout`,()=>t.innerType._zod.optout),e._zod.parse=(e,n)=>{let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Ew):Ew(r)}});function Ew(e){return e.value=Object.freeze(e.value),e}var Dw=Q(`$ZodLazy`,(e,t)=>{QC.init(e,t),uC(e._zod,`innerType`,()=>t.getter()),uC(e._zod,`pattern`,()=>e._zod.innerType._zod.pattern),uC(e._zod,`propValues`,()=>e._zod.innerType._zod.propValues),uC(e._zod,`optin`,()=>e._zod.innerType._zod.optin),uC(e._zod,`optout`,()=>e._zod.innerType._zod.optout),e._zod.parse=(t,n)=>e._zod.innerType._zod.run(t,n)}),Ow=Q(`$ZodCustom`,(e,t)=>{GC.init(e,t),QC.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>kw(t,n,r,e));kw(i,n,r,e)}});function kw(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(NC(e))}}var Aw=class{constructor(){this._map=new Map,this._idmap=new Map}add(e,...t){let n=t[0];if(this._map.set(e,n),n&&typeof n==`object`&&`id`in n){if(this._idmap.has(n.id))throw Error(`ID ${n.id} already exists in the registry`);this._idmap.set(n.id,e)}return this}clear(){return this._map=new Map,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};return delete n.id,{...n,...this._map.get(e)}}return this._map.get(e)}has(e){return this._map.has(e)}};function jw(){return new Aw}var Mw=jw();function Nw(e){return new e({type:`unknown`})}function Pw(e,t){return new e({type:`never`,...bC(t)})}function Fw(e,t){return new KC({check:`max_length`,...bC(t),maximum:e})}function Iw(e,t){return new qC({check:`min_length`,...bC(t),minimum:e})}function Lw(e,t){return new JC({check:`length_equals`,...bC(t),length:e})}function Rw(e){return new YC({check:`overwrite`,tx:e})}function zw(e,t,n){return new e({type:`array`,element:t,...bC(n)})}function Bw(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...bC(n)})}var Vw=(e,t)=>{FC.init(e,t),e.name=`ZodError`,Object.defineProperties(e,{format:{value:t=>RC(e,t)},flatten:{value:t=>LC(e,t)},addIssue:{value:t=>e.issues.push(t)},addIssues:{value:t=>e.issues.push(...t)},isEmpty:{get(){return e.issues.length===0}}})};Q(`ZodError`,Vw);var Hw=Q(`ZodError`,Vw,{Parent:Error}),Uw=zC(Hw),Ww=BC(Hw),Gw=VC(Hw),Kw=UC(Hw),qw=Q(`ZodType`,(e,t)=>(QC.init(e,t),e.def=t,Object.defineProperty(e,"_def",{value:t}),e.check=(...n)=>e.clone({...t,checks:[...t.checks??[],...n.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),e.clone=(t,n)=>yC(e,t,n),e.brand=()=>e,e.register=((t,n)=>(t.add(e,n),e)),e.parse=(t,n)=>Uw(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>Gw(e,t,n),e.parseAsync=async(t,n)=>Ww(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>Kw(e,t,n),e.spa=e.safeParseAsync,e.refine=(t,n)=>e.check(AT(t,n)),e.superRefine=t=>e.check(jT(t)),e.overwrite=t=>e.check(Rw(t)),e.optional=()=>fT(e),e.nullable=()=>mT(e),e.nullish=()=>fT(mT(e)),e.nonoptional=t=>bT(e,t),e.array=()=>$w(e),e.or=t=>nT([e,t]),e.and=t=>iT(e,t),e.transform=t=>wT(e,uT(t)),e.default=t=>gT(e,t),e.prefault=t=>vT(e,t),e.catch=t=>ST(e,t),e.pipe=t=>wT(e,t),e.readonly=()=>ET(e),e.describe=t=>{let n=e.clone();return Mw.add(n,{description:t}),n},Object.defineProperty(e,"description",{get(){return Mw.get(e)?.description},configurable:!0}),e.meta=(...t)=>{if(t.length===0)return Mw.get(e);let n=e.clone();return Mw.add(n,t[0]),n},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e)),Jw=Q(`ZodUnknown`,(e,t)=>{$C.init(e,t),qw.init(e,t)});function Yw(){return Nw(Jw)}var Xw=Q(`ZodNever`,(e,t)=>{ew.init(e,t),qw.init(e,t)});function Zw(e){return Pw(Xw,e)}var Qw=Q(`ZodArray`,(e,t)=>{nw.init(e,t),qw.init(e,t),e.element=t.element,e.min=(t,n)=>e.check(Iw(t,n)),e.nonempty=t=>e.check(Iw(1,t)),e.max=(t,n)=>e.check(Fw(t,n)),e.length=(t,n)=>e.check(Lw(t,n)),e.unwrap=()=>e.element});function $w(e,t){return zw(Qw,e,t)}var eT=Q(`ZodObject`,(e,t)=>{aw.init(e,t),qw.init(e,t),uC(e,`shape`,()=>t.shape),e.keyof=()=>sT(Object.keys(e._zod.def.shape)),e.catchall=t=>e.clone({...e._zod.def,catchall:t}),e.passthrough=()=>e.clone({...e._zod.def,catchall:Yw()}),e.loose=()=>e.clone({...e._zod.def,catchall:Yw()}),e.strict=()=>e.clone({...e._zod.def,catchall:Zw()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=t=>wC(e,t),e.merge=t=>TC(e,t),e.pick=t=>SC(e,t),e.omit=t=>CC(e,t),e.partial=(...t)=>EC(dT,e,t[0]),e.required=(...t)=>DC(yT,e,t[0])}),tT=Q(`ZodUnion`,(e,t)=>{sw.init(e,t),qw.init(e,t),e.options=t.options});function nT(e,t){return new tT({type:`union`,options:e,...bC(t)})}var rT=Q(`ZodIntersection`,(e,t)=>{cw.init(e,t),qw.init(e,t)});function iT(e,t){return new rT({type:`intersection`,left:e,right:t})}var aT=Q(`ZodRecord`,(e,t)=>{dw.init(e,t),qw.init(e,t),e.keyType=t.keyType,e.valueType=t.valueType}),oT=Q(`ZodEnum`,(e,t)=>{fw.init(e,t),qw.init(e,t),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new oT({...t,checks:[],...bC(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new oT({...t,checks:[],...bC(r),entries:i})}});function sT(e,t){return new oT({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...bC(t)})}var cT=Q(`ZodLiteral`,(e,t)=>{pw.init(e,t),qw.init(e,t),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})}),lT=Q(`ZodTransform`,(e,t)=>{mw.init(e,t),qw.init(e,t),e._zod.parse=(n,r)=>{n.addIssue=r=>{if(typeof r==`string`)n.issues.push(NC(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,t.input??=n.value,t.inst??=e,t.continue??=!0,n.issues.push(NC(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function uT(e){return new lT({type:`transform`,transform:e})}var dT=Q(`ZodOptional`,(e,t)=>{hw.init(e,t),qw.init(e,t),e.unwrap=()=>e._zod.def.innerType});function fT(e){return new dT({type:`optional`,innerType:e})}var pT=Q(`ZodNullable`,(e,t)=>{gw.init(e,t),qw.init(e,t),e.unwrap=()=>e._zod.def.innerType});function mT(e){return new pT({type:`nullable`,innerType:e})}var hT=Q(`ZodDefault`,(e,t)=>{_w.init(e,t),qw.init(e,t),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function gT(e,t){return new hT({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():t}})}var _T=Q(`ZodPrefault`,(e,t)=>{yw.init(e,t),qw.init(e,t),e.unwrap=()=>e._zod.def.innerType});function vT(e,t){return new _T({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():t}})}var yT=Q(`ZodNonOptional`,(e,t)=>{bw.init(e,t),qw.init(e,t),e.unwrap=()=>e._zod.def.innerType});function bT(e,t){return new yT({type:`nonoptional`,innerType:e,...bC(t)})}var xT=Q(`ZodCatch`,(e,t)=>{Sw.init(e,t),qw.init(e,t),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function ST(e,t){return new xT({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:()=>t})}var CT=Q(`ZodPipe`,(e,t)=>{Cw.init(e,t),qw.init(e,t),e.in=t.in,e.out=t.out});function wT(e,t){return new CT({type:`pipe`,in:e,out:t})}var TT=Q(`ZodReadonly`,(e,t)=>{Tw.init(e,t),qw.init(e,t)});function ET(e){return new TT({type:`readonly`,innerType:e})}var DT=Q(`ZodLazy`,(e,t)=>{Dw.init(e,t),qw.init(e,t),e.unwrap=()=>e._zod.def.getter()}),OT=Q(`ZodCustom`,(e,t)=>{Ow.init(e,t),qw.init(e,t)});function kT(e){let t=new GC({check:`custom`});return t._zod.check=e,t}function AT(e,t={}){return Bw(OT,e,t)}function jT(e){let t=kT(n=>(n.addIssue=e=>{if(typeof e==`string`)n.issues.push(NC(e,n.value,t._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,r.input??=n.value,r.inst??=t,r.continue??=!t._zod.def.abort,n.issues.push(NC(r))}},e(n.value,n)));return t}var MT=`@ag-ui/client`;function NT(e){if(!e.metadata||!Object.prototype.hasOwnProperty.call(e.metadata,MT))return;let t=e.metadata?.[MT];if(!t||typeof t!=`object`||Array.isArray(t))return[];if(!Object.prototype.hasOwnProperty.call(t,`authoritativeActivityTypes`))return;let n=t.authoritativeActivityTypes;return n===null?null:Array.isArray(n)&&n.every(e=>typeof e==`string`)?n:[]}var $=e=>{if(typeof structuredClone==`function`)return structuredClone(e);try{return JSON.parse(JSON.stringify(e))}catch{return Array.isArray(e)?[...e]:{...e}}};function PT(){return mo()}function FT(e){return e instanceof TypeError&&/read[- ]?only|not extensible|cannot add property|cannot delete property|can't be deleted|unable to delete property|object is frozen|is not writable/i.test(e.message)}function IT(e){if(Object.freeze(e),typeof e==`object`&&e)for(let t of Object.values(e))typeof t==`object`&&t&&!Object.isFrozen(t)&&IT(t);return e}var LT=524288;function RT(e,t,n){let r=0,i=[e,t],a=new WeakSet;for(;i.length>0;){let e=i.pop();if(typeof e==`string`){if(r+=e.length,r>n)return!0}else if(typeof e==`object`&&e){if(a.has(e))continue;if(a.add(e),Array.isArray(e))for(let t=0;tn)return!0;i.push(e[o])}}}}return!1}async function zT(e,t,n,r){let i=typeof process<`u`&&!0,a=i&&!!{}.VITEST_WORKER_ID,o=i&&!!{}.VITEST_WORKER_ID,s=o&&!RT(t,n,LT),c=s?$(t):t,l=s?$(n):n,u=!1,d=!1,f;for(let t of e)try{s&&(IT(c),IT(l));let e=await r(t,c,l);if(e===void 0)continue;let n=!1;if(e.messages!==void 0&&e.messages!==c&&(c=$(e.messages),u=!0,n=!0),e.state!==void 0&&e.state!==l&&(l=$(e.state),d=!0,n=!0),s&&n&&RT(c,l,LT)&&(s=!1),f=e.stopPropagation,f===!0)break}catch(e){if(a&&e instanceof TypeError)throw e;s&&o&&FT(e)?console.error(`AG-UI: Subscriber attempted to mutate frozen inputs in-place. Return mutations via AgentStateMutation instead of mutating directly.`,e):console.error(`Subscriber error:`,e);continue}return{...u?{messages:Object.isFrozen(c)?$(c):c}:{},...d?{state:Object.isFrozen(l)?$(l):l}:{},...f===void 0?{}:{stopPropagation:f}}}function BT(e){if(!e)return{enabled:!1,events:!1,lifecycle:!1,verbose:!1};if(e===!0)return{enabled:!0,events:!0,lifecycle:!0,verbose:!0};let t=e.events??!0,n=e.lifecycle??!0,r=e.verbose??!1;return{enabled:t||n,events:t,lifecycle:n,verbose:r}}function VT(e){if(e instanceof HT)return e;if(e===!0)return new HT(BT(!0))}var HT=class{constructor(e){this.config=e}event(e,t,n,r){this.config.events&&(this.config.verbose?console.debug(`[${e}] ${t}`,typeof n==`string`?n:JSON.stringify(n)):console.debug(`[${e}] ${t}`,r??n))}lifecycle(e,t,n){this.config.lifecycle&&(n?console.debug(`[${e}] ${t}`,n):console.debug(`[${e}] ${t}`))}get eventsEnabled(){return this.config.events}get lifecycleEnabled(){return this.config.lifecycle}get enabled(){return this.config.enabled}};function UT(e){return e.enabled?new HT(e):void 0}function WT(e,t,n){if(t){let r=e.find(e=>e.id===t);if(r?.role===`assistant`)return r;r&&console.warn(`TOOL_CALL_START: parentMessageId '${t}' matches a '${r.role}' message, not assistant — falling back to toolCallId`);let i={id:r?n:t,role:`assistant`,toolCalls:[]};return e.push(i),i}let r={id:n,role:`assistant`,toolCalls:[]};return e.push(r),r}function GT(e,t){return!e||t.metadata===void 0?!1:(e.metadata=bo(e.metadata,$(t.metadata)),!0)}var KT=(e,t,n,r,i)=>{let a=VT(i),o=$(n.messages),s=$(e.state),c={},l=[],u=new Set,d=e=>{let t=e.outcome?.type===`success`?e.outcome.pendingToolCallIds:void 0;return t!==void 0&&t.length>0?[...t]:l.filter(e=>!u.has(e))},f=e=>{e.messages!==void 0&&(o=e.messages,c.messages=e.messages),e.state!==void 0&&(s=e.state,c.state=e.state)},p=()=>{let e=$(c);return c={},e.messages!==void 0||e.state!==void 0?Rc(e):ac};return t.pipe(Jc(async t=>{let i=await zT(r,o,s,(r,i,a)=>r.onEvent?.({event:t,agent:n,input:e,messages:i,state:a}));if(f(i),i.stopPropagation===!0?a?.event(`APPLY`,`Event dropped:`,t,{type:t.type,reason:`stopPropagation by subscriber`}):a?.event(`APPLY`,`Event applied:`,t,{type:t.type,subscribers:r.length}),i.stopPropagation===!0)return p();switch(t.type){case k.TEXT_MESSAGE_START:{let i=await zT(r,o,s,(r,i,a)=>r.onTextMessageStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(i),i.stopPropagation!==!0){let{messageId:e,role:n=`assistant`,name:r,subagentRunId:i}=t,a=o.find(t=>t.id===e);if(a?.role===`activity`)return console.warn(`TEXT_MESSAGE_START: Message '${e}' is an activity message — message ids must be unique across activity and text messages`),p();let s=a;if(!s){let t={id:e,role:n,content:``,...r!==void 0&&{name:r},...i!=null&&{subagentRunId:i}};o.push(t),s=t}let c=GT(s,t);(!a||c)&&f({messages:o})}return p()}case k.TEXT_MESSAGE_CONTENT:{let{messageId:i,delta:a}=t,c=o.find(e=>e.id===i);if(!c)return console.warn(`TEXT_MESSAGE_CONTENT: No message found with ID '${i}'`),p();if(c.role===`activity`)return console.warn(`TEXT_MESSAGE_CONTENT: Message '${i}' is an activity message — message ids must be unique across activity and text messages`),p();let l=await zT(r,o,s,(r,i,a)=>r.onTextMessageContentEvent?.({event:t,messages:i,state:a,agent:n,input:e,textMessageBuffer:typeof c.content==`string`?c.content:``}));return f(l),l.stopPropagation!==!0&&(c.content=`${typeof c.content==`string`?c.content:``}${a}`,GT(c,t),f({messages:o})),p()}case k.TEXT_MESSAGE_END:{let{messageId:i}=t,a=o.find(e=>e.id===i);if(!a)return console.warn(`TEXT_MESSAGE_END: No message found with ID '${i}'`),p();if(a.role===`activity`)return console.warn(`TEXT_MESSAGE_END: Message '${i}' is an activity message — message ids must be unique across activity and text messages`),p();let c=await zT(r,o,s,(r,i,o)=>r.onTextMessageEndEvent?.({event:t,messages:i,state:o,agent:n,input:e,textMessageBuffer:typeof a.content==`string`?a.content:``}));return f(c),c.stopPropagation!==!0&>(a,t)&&f({messages:o}),await Promise.all(r.map(t=>{t.onNewMessage?.({message:a,messages:o,state:s,agent:n,input:e})})),p()}case k.TOOL_CALL_START:{let i=await zT(r,o,s,(r,i,a)=>r.onToolCallStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(i),i.stopPropagation!==!0){let{toolCallId:e,toolCallName:n,parentMessageId:r,subagentRunId:i}=t;l.includes(e)||l.push(e);let a=o.find(t=>t.toolCalls?.some(t=>t.id===e))?.toolCalls?.find(t=>t.id===e);if(a){let r=a.function.name!==n;return r&&(console.warn(`TOOL_CALL_START: tool call '${e}' already exists with name '${a.function.name}' — updating it to '${n}'`),a.function.name=n),(GT(a,t)||r)&&f({messages:o}),p()}let s=new Set(o.map(e=>e.id)),c=WT(o,r,e);!s.has(c.id)&&i!=null&&c.subagentRunId===void 0&&(c.subagentRunId=i),c.toolCalls??=[];let u={id:e,type:`function`,function:{name:n,arguments:``}};c.toolCalls.push(u),GT(u,t),f({messages:o})}return p()}case k.TOOL_CALL_ARGS:{let{toolCallId:i,delta:a}=t,c=o.find(e=>e.toolCalls?.some(e=>e.id===i));if(!c)return console.warn(`TOOL_CALL_ARGS: No message found containing tool call with ID '${i}'`),p();let l=c.toolCalls?.find(e=>e.id===i);if(!l)return console.warn(`TOOL_CALL_ARGS: No tool call found with ID '${i}'`),p();let u=await zT(r,o,s,(r,i,a)=>{let o=l.function.arguments,s=l.function.name,c={};try{c=tl(o)}catch{}return r.onToolCallArgsEvent?.({event:t,messages:i,state:a,agent:n,input:e,toolCallBuffer:o,toolCallName:s,partialToolCallArgs:c})});return f(u),u.stopPropagation!==!0&&(l.function.arguments+=a,GT(l,t),f({messages:o})),p()}case k.TOOL_CALL_END:{let{toolCallId:i}=t,a=o.find(e=>e.toolCalls?.some(e=>e.id===i));if(!a)return console.warn(`TOOL_CALL_END: No message found containing tool call with ID '${i}'`),p();let c=a.toolCalls?.find(e=>e.id===i);if(!c)return console.warn(`TOOL_CALL_END: No tool call found with ID '${i}'`),p();let l=await zT(r,o,s,(r,i,a)=>{let o=c.function.arguments,s=c.function.name,l={};try{l=JSON.parse(o)}catch{}return r.onToolCallEndEvent?.({event:t,messages:i,state:a,agent:n,input:e,toolCallName:s,toolCallArgs:l})});return f(l),l.stopPropagation!==!0&>(c,t)&&f({messages:o}),await Promise.all(r.map(t=>{t.onNewToolCall?.({toolCall:c,messages:o,state:s,agent:n,input:e})})),p()}case k.TOOL_CALL_RESULT:{let i=await zT(r,o,s,(r,i,a)=>r.onToolCallResultEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(i),i.stopPropagation!==!0){let{messageId:i,toolCallId:a,content:c,role:l,subagentRunId:d}=t;u.add(a);let p={id:i,toolCallId:a,role:l||`tool`,content:c,...d!=null&&{subagentRunId:d}};GT(p,t);let m=o.findIndex(e=>e.role===`assistant`&&e.toolCalls?.some(e=>e.id===a));if(m===-1)o.push(p);else{let e=m+1;for(;e{t.onNewMessage?.({message:p,messages:o,state:s,agent:n,input:e})})),f({messages:o})}return p()}case k.STATE_SNAPSHOT:{let i=await zT(r,o,s,(r,i,a)=>r.onStateSnapshotEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(i),i.stopPropagation!==!0){let{snapshot:e}=t;s=e,f({state:s})}return p()}case k.STATE_DELTA:{let i=await zT(r,o,s,(r,i,a)=>r.onStateDeltaEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(i),i.stopPropagation!==!0){let{delta:e}=t;try{s=rs.applyPatch(s,e,!0,!1).newDocument,f({state:s})}catch(t){let n=t instanceof Error?t.message:String(t);console.warn(`Failed to apply state patch:\nCurrent state: ${JSON.stringify(s,null,2)}\nPatch operations: ${JSON.stringify(e,null,2)}\nError: ${n}`)}}return p()}case k.MESSAGES_SNAPSHOT:{let i=await zT(r,o,s,(r,i,a)=>r.onMessagesSnapshotEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(i),i.stopPropagation!==!0){let{messages:e}=t,n=e.map(e=>{if(e.subagentRunId!==null)return e;let t={...e};return delete t.subagentRunId,t}),r=new Map(n.map(e=>[e.id,e])),i=NT(t),a=n.some(e=>e.role===`activity`),s=n.some(e=>e.role===`reasoning`),c=e=>e.role===`activity`&&(i?!i.includes(e.activityType):i!==null&&!a)||e.role===`reasoning`&&!s;o=o.filter(e=>r.has(e.id)||c(e)).map(e=>r.get(e.id)??e);let l=new Set(o.map(e=>e.id));for(let e of n)l.has(e.id)||o.push(e);f({messages:o})}return p()}case k.ACTIVITY_SNAPSHOT:{let i=t,a=o.findIndex(e=>e.id===i.messageId),c=a>=0?o[a]:void 0,l=c?.role===`activity`?c:void 0,u=i.replace??!0,d=await zT(r,o,s,(t,r,a)=>t.onActivitySnapshotEvent?.({event:i,messages:r,state:a,agent:n,input:e,activityMessage:l,existingMessage:c}));if(f(d),d.stopPropagation!==!0){let t={id:i.messageId,role:`activity`,activityType:i.activityType,content:$(i.content),...i.subagentRunId!=null&&{subagentRunId:i.subagentRunId}},c,d;a===-1?(o.push(t),c=t,d=t):l?(u&&(o[a]={...l,activityType:i.activityType,content:$(i.content),subagentRunId:i.subagentRunId},i.subagentRunId??delete o[a].subagentRunId),d=o[a]):u&&(o[a]=t,c=t,d=t),GT(d,i),f({messages:o}),c&&await Promise.all(r.map(t=>t.onNewMessage?.({message:c,messages:o,state:s,agent:n,input:e})))}return p()}case k.ACTIVITY_DELTA:{let i=t,a=o.findIndex(e=>e.id===i.messageId);if(a===-1)return p();let c=o[a];if(c.role!==`activity`)return console.warn(`ACTIVITY_DELTA: Message '${i.messageId}' is not an activity message`),p();let l=c,u=await zT(r,o,s,(t,r,a)=>t.onActivityDeltaEvent?.({event:i,messages:r,state:a,agent:n,input:e,activityMessage:l}));if(f(u),u.stopPropagation!==!0)try{GT(l,i)&&f({messages:o});let e=$(l.content??{}),t=rs.applyPatch(e,i.patch??[],!0,!1).newDocument;o[a]={...l,content:$(t),activityType:i.activityType},f({messages:o})}catch(e){let t=e instanceof Error?e.message:String(e);console.warn(`Failed to apply activity patch for '${i.messageId}': ${t}`)}return p()}case k.RAW:return f(await zT(r,o,s,(r,i,a)=>r.onRawEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.CUSTOM:return f(await zT(r,o,s,(r,i,a)=>r.onCustomEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.RUN_STARTED:{let i=await zT(r,o,s,(r,i,a)=>r.onRunStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(i),l=[],u=new Set,i.stopPropagation!==!0){let e=t;if(e.input?.messages){for(let t of e.input.messages){let e=t;if(t.subagentRunId===null){let n={...t};delete n.subagentRunId,e=n}o.find(t=>t.id===e.id)||o.push(e)}f({messages:o})}}return p()}case k.RUN_FINISHED:{let i=t,a=i.outcome?.type===`interrupt`?{event:i,outcome:`interrupt`,interrupts:i.outcome.interrupts}:i.outcome?.type===`cancelled`?{event:i,outcome:`cancelled`}:{event:i,outcome:`success`,result:i.result,pendingToolCallIds:d(i)},c=await zT(r,o,s,(t,r,i)=>t.onRunFinishedEvent?.({...a,messages:r,state:i,agent:n,input:e}));return f(c),c.stopPropagation!==!0&&(n.pendingInterrupts=a.outcome===`interrupt`?a.interrupts.map(e=>{if(e.subagentRunId!==null)return e;let t={...e};return delete t.subagentRunId,t}):[]),p()}case k.RUN_ERROR:return f(await zT(r,o,s,(r,i,a)=>r.onRunErrorEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.STEP_STARTED:return f(await zT(r,o,s,(r,i,a)=>r.onStepStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.STEP_FINISHED:return f(await zT(r,o,s,(r,i,a)=>r.onStepFinishedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.TEXT_MESSAGE_CHUNK:throw Error(`TEXT_MESSAGE_CHUNK must be transformed before being applied`);case k.TOOL_CALL_CHUNK:throw Error(`TOOL_CALL_CHUNK must be transformed before being applied`);case k.REASONING_START:return f(await zT(r,o,s,(r,i,a)=>r.onReasoningStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.REASONING_MESSAGE_START:{let i=await zT(r,o,s,(r,i,a)=>r.onReasoningMessageStartEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(i),i.stopPropagation!==!0){let{messageId:e,subagentRunId:n}=t,r=o.find(t=>t.id===e);if(r?.role===`activity`)return console.warn(`REASONING_MESSAGE_START: Message '${e}' is an activity message — message ids must be unique across activity and reasoning messages`),p();let i=r;if(!i){let t={id:e,role:`reasoning`,content:``,...n!=null&&{subagentRunId:n}};o.push(t),i=t}let a=GT(i,t);(!r||a)&&f({messages:o})}return p()}case k.REASONING_MESSAGE_CONTENT:{let{messageId:i,delta:a}=t,c=o.find(e=>e.id===i);if(!c)return console.warn(`REASONING_MESSAGE_CONTENT: No message found with ID '${i}'`),p();if(c.role===`activity`)return console.warn(`REASONING_MESSAGE_CONTENT: Message '${i}' is an activity message — message ids must be unique across activity and reasoning messages`),p();let l=await zT(r,o,s,(r,i,a)=>r.onReasoningMessageContentEvent?.({event:t,messages:i,state:a,agent:n,input:e,reasoningMessageBuffer:typeof c.content==`string`?c.content:``}));return f(l),l.stopPropagation!==!0&&(c.content=`${typeof c.content==`string`?c.content:``}${a}`,GT(c,t),f({messages:o})),p()}case k.REASONING_MESSAGE_END:{let{messageId:i}=t,a=o.find(e=>e.id===i);if(!a)return console.warn(`REASONING_MESSAGE_END: No message found with ID '${i}'`),p();if(a.role===`activity`)return console.warn(`REASONING_MESSAGE_END: Message '${i}' is an activity message — message ids must be unique across activity and reasoning messages`),p();let c=await zT(r,o,s,(r,i,o)=>r.onReasoningMessageEndEvent?.({event:t,messages:i,state:o,agent:n,input:e,reasoningMessageBuffer:typeof a.content==`string`?a.content:``}));return f(c),c.stopPropagation!==!0&>(a,t)&&f({messages:o}),await Promise.all(r.map(t=>{t.onNewMessage?.({message:a,messages:o,state:s,agent:n,input:e})})),p()}case k.REASONING_MESSAGE_CHUNK:throw Error(`REASONING_MESSAGE_CHUNK must be transformed before being applied`);case k.REASONING_END:return f(await zT(r,o,s,(r,i,a)=>r.onReasoningEndEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.REASONING_ENCRYPTED_VALUE:{let{subtype:i,entityId:a,encryptedValue:l}=t,u=await zT(r,o,s,(r,i,a)=>r.onReasoningEncryptedValueEvent?.({event:t,messages:i,state:a,agent:n,input:e}));if(f(u),u.stopPropagation!==!0){let e=!1;if(i===`tool-call`){for(let t of o)if(t.role===`assistant`&&t.toolCalls){let n=t.toolCalls.find(e=>e.id===a);if(n){n.encryptedValue=l,e=!0;break}}}else{let t=o.find(e=>e.id===a);t?.role!==`activity`&&t&&(t.encryptedValue=l,e=!0)}e&&(c.messages=o)}return p()}case k.SUBAGENT_STARTED:return f(await zT(r,o,s,(r,i,a)=>r.onSubagentStartedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.SUBAGENT_FINISHED:return f(await zT(r,o,s,(r,i,a)=>r.onSubagentFinishedEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p();case k.SUBAGENT_ERROR:return f(await zT(r,o,s,(r,i,a)=>r.onSubagentErrorEvent?.({event:t,messages:i,state:a,agent:n,input:e}))),p()}return t.type,p()}),Wc(),r.length>0?Yc({}):e=>e)},qT=e=>t=>{let n=VT(e),r=new Set,i=new Set,a=new Set,o=new Set,s={message:new Map,toolCall:new Map,activity:new Map,reasoning:new Map},c=!1,l=!1,u=!1,d=new Map,f=e=>{let t=d.get(e);return t||(t=new Map,d.set(e,t)),t},p=()=>{for(let e of d.values())if(e.size>0)return!0;return!1},m=new Map,h=new Set,g=!1,_=()=>{r.clear(),i.clear(),a.clear(),o.clear(),s.message.clear(),s.toolCall.clear(),s.activity.clear(),s.reasoning.clear(),d.clear(),m.clear(),h.clear(),c=!1,l=!1,g=!0},v=(e,t)=>{let n=e??[];if(Array.isArray(n))for(let e of n){if(!e||typeof e.id!=`string`)continue;if(e.subagentRunId===null)return new A(`Cannot send a message (id '${e.id}') with 'subagentRunId: null'. The field is optional — omit it entirely.`);let n=e.role===`reasoning`?s.reasoning:e.role===`activity`?s.activity:s.message;(t||!n.has(e.id))&&n.set(e.id,{subagentRunId:e.subagentRunId});for(let n of e.toolCalls??[])n&&typeof n.id==`string`&&(t||!s.toolCall.has(n.id))&&s.toolCall.set(n.id,{subagentRunId:e.subagentRunId??void 0})}},y=(e,t,n,r,i)=>{if(t!==void 0&&n&&n.subagentRunId!==t)return new A(`Cannot send '${e}': subagentRunId '${t}' does not match the ${r} '${i}' opener's subagent '${n.subagentRunId??`(the parent agent)`}'.`)};return t.pipe(Uc(e=>{let t=e.type;if(n?.event(`VERIFY`,`Event:`,e,{type:e.type}),l&&t!==k.RUN_STARTED)return M(()=>new A(`Cannot send event type '${t}': The run has already errored with 'RUN_ERROR'. No further events can be sent.`));if(c&&t!==k.RUN_ERROR&&t!==k.RUN_STARTED)return M(()=>new A(`Cannot send event type '${t}': The run has already finished with 'RUN_FINISHED'. Start a new run with 'RUN_STARTED'.`));if(!u){if(u=!0,t!==k.RUN_STARTED&&t!==k.RUN_ERROR)return M(()=>new A(`First event must be 'RUN_STARTED'`))}else if(t===k.RUN_STARTED){if(g&&!c&&!l)return M(()=>new A(`Cannot send 'RUN_STARTED' while a run is still active. The previous run must be finished with 'RUN_FINISHED' before starting a new run.`));(c||l)&&_()}if(e.subagentRunId===null)return M(()=>new A(`Cannot send '${t}' with 'subagentRunId: null'. The field is optional — omit it entirely.`));if(t===k.SUBAGENT_STARTED||t===k.SUBAGENT_FINISHED||t===k.SUBAGENT_ERROR){let n=t===k.SUBAGENT_STARTED?[`description`,`parentSubagentRunId`,`parentToolCallId`,`parentMessageId`]:t===k.SUBAGENT_FINISHED?[`outcome`]:[`code`];for(let r of n)if(e[r]===null)return M(()=>new A(`Cannot send '${t}' with '${r}: null'. The field is optional — omit it entirely.`));let r=e.outcome;if(r!=null&&r.type!==`success`&&r.type!==`suspended`)return M(()=>new A(`Cannot send '${t}' with outcome type '${String(r.type)}'. The outcome is either { type: "success" } or { type: "suspended" }.`));if(r&&r.interruptIds===null)return M(()=>new A(`Cannot send '${t}' with 'outcome.interruptIds: null'. The field is optional — omit it entirely.`));if(r&&Array.isArray(r.interruptIds)&&r.interruptIds.some(e=>typeof e!=`string`))return M(()=>new A(`Cannot send '${t}' with a non-string entry in 'outcome.interruptIds'. Interrupt ids are strings.`))}if(t===k.RUN_FINISHED){let t=e.outcome;if(t?.type===`interrupt`&&Array.isArray(t.interrupts)){for(let e of t.interrupts)if(e&&e.subagentRunId===null)return M(()=>new A(`Cannot send 'RUN_FINISHED' with an interrupt (id '${e.id}') carrying 'subagentRunId: null'. The field is optional — omit it entirely.`))}}switch(t){case k.TEXT_MESSAGE_START:{let n=e.messageId;if(r.has(n))return M(()=>new A(`Cannot send 'TEXT_MESSAGE_START' event: A text message with ID '${n}' is already in progress. Complete it with 'TEXT_MESSAGE_END' first.`));let i=s.message.get(n);if(i){let r=y(t,e.subagentRunId,i,`message`,n);if(r)return M(()=>r)}return r.add(n),i||s.message.set(n,{subagentRunId:e.subagentRunId}),Rc(e)}case k.TEXT_MESSAGE_CONTENT:{let n=e.messageId;if(!r.has(n))return M(()=>new A(`Cannot send 'TEXT_MESSAGE_CONTENT' event: No active text message found with ID '${n}'. Start a text message with 'TEXT_MESSAGE_START' first.`));let i=y(t,e.subagentRunId,s.message.get(n),`message`,n);return i?M(()=>i):Rc(e)}case k.TEXT_MESSAGE_END:{let n=e.messageId;if(!r.has(n))return M(()=>new A(`Cannot send 'TEXT_MESSAGE_END' event: No active text message found with ID '${n}'. A 'TEXT_MESSAGE_START' event must be sent first.`));let i=y(t,e.subagentRunId,s.message.get(n),`message`,n);return i?M(()=>i):(r.delete(n),Rc(e))}case k.TOOL_CALL_START:{let n=e.toolCallId;if(i.has(n))return M(()=>new A(`Cannot send 'TOOL_CALL_START' event: A tool call with ID '${n}' is already in progress. Complete it with 'TOOL_CALL_END' first.`));let r=e.parentMessageId,a=e.subagentRunId,o;if(r!==void 0){let e=s.message.get(r);if(e){if(a!==void 0&&a!==e.subagentRunId)return M(()=>new A(`Cannot send 'TOOL_CALL_START': subagentRunId '${a}' does not match its parent message '${r}' owner '${e.subagentRunId??`(the parent agent)`}'. A tool call belongs to the message that carries it.`));o=e}}let c=s.toolCall.get(n);if(c){let e=y(t,a,c,`tool call`,n);if(e)return M(()=>e);if(a===void 0&&o&&o.subagentRunId!==c.subagentRunId)return M(()=>new A(`Cannot send 'TOOL_CALL_START': tool call '${n}' is owned by '${c.subagentRunId??`(the parent agent)`}' but its parent message '${r}' is owned by '${o.subagentRunId??`(the parent agent)`}'. A tool call belongs to the message that carries it.`))}return i.add(n),c||s.toolCall.set(n,a===void 0?o??{subagentRunId:void 0}:{subagentRunId:a}),Rc(e)}case k.TOOL_CALL_ARGS:{let n=e.toolCallId;if(!i.has(n))return M(()=>new A(`Cannot send 'TOOL_CALL_ARGS' event: No active tool call found with ID '${n}'. Start a tool call with 'TOOL_CALL_START' first.`));let r=y(t,e.subagentRunId,s.toolCall.get(n),`tool call`,n);return r?M(()=>r):Rc(e)}case k.TOOL_CALL_END:{let n=e.toolCallId;if(!i.has(n))return M(()=>new A(`Cannot send 'TOOL_CALL_END' event: No active tool call found with ID '${n}'. A 'TOOL_CALL_START' event must be sent first.`));let r=y(t,e.subagentRunId,s.toolCall.get(n),`tool call`,n);return r?M(()=>r):(i.delete(n),Rc(e))}case k.STEP_STARTED:{let t=e.stepName,n=e.subagentRunId;return f(n).has(t)?M(()=>new A(`Step "${t}" is already active for 'STEP_STARTED'${n===void 0?``:` in subagent '${n}'`}`)):(f(n).set(t,!0),Rc(e))}case k.STEP_FINISHED:{let t=e.stepName,n=e.subagentRunId;if(!f(n).has(t)){let e,r=!1;for(let[i,a]of d)if(i!==n&&a.has(t)){e=i,r=!0;break}return M(r?()=>new A(`Cannot send 'STEP_FINISHED' for step "${t}" attributed to ${n===void 0?`the parent agent`:`subagent '${n}'`}: that step is open under ${e===void 0?`the parent agent`:`subagent '${e}'`}. A step must be finished by whoever started it.`):()=>new A(`Cannot send 'STEP_FINISHED' for step "${t}" that was not started`))}return f(n).delete(t),Rc(e)}case k.ACTIVITY_SNAPSHOT:{let t=e.messageId;return(!s.activity.has(t)||e.replace!==!1)&&s.activity.set(t,{subagentRunId:e.subagentRunId}),Rc(e)}case k.TOOL_CALL_RESULT:{let t=e.messageId;return typeof t==`string`&&s.message.set(t,{subagentRunId:e.subagentRunId}),Rc(e)}case k.REASONING_START:case k.REASONING_MESSAGE_START:{let n=e.messageId,r=t===k.REASONING_START,i=r?a:o;if(i.has(n))return M(()=>new A(r?`Cannot send 'REASONING_START' event: A reasoning span with ID '${n}' is already in progress. Complete it with 'REASONING_END' first.`:`Cannot send 'REASONING_MESSAGE_START' event: A reasoning message with ID '${n}' is already in progress. Complete it with 'REASONING_MESSAGE_END' first.`));let c=s.reasoning.get(n);if(c){let r=y(t,e.subagentRunId,c,`reasoning message`,n);if(r)return M(()=>r)}return i.add(n),c||s.reasoning.set(n,{subagentRunId:e.subagentRunId}),Rc(e)}case k.REASONING_MESSAGE_CONTENT:case k.REASONING_MESSAGE_END:case k.REASONING_END:{let n=e.messageId,r=t===k.REASONING_END,i=r?a:o;if(!i.has(n))return M(()=>new A(r?`Cannot send 'REASONING_END' event: No active reasoning span found with ID '${n}'. A 'REASONING_START' event must be sent first.`:`Cannot send '${t}' event: No active reasoning message found with ID '${n}'. Start a reasoning message with 'REASONING_MESSAGE_START' first.`));let c=y(t,e.subagentRunId,s.reasoning.get(n),`reasoning message`,n);return c?M(()=>c):((t===k.REASONING_END||t===k.REASONING_MESSAGE_END)&&i.delete(n),Rc(e))}case k.REASONING_ENCRYPTED_VALUE:{let n=e.entityId,r=e.subtype,i=r===`tool-call`?s.toolCall.get(n):r===`message`?s.message.get(n)??s.reasoning.get(n):s.reasoning.get(n),a=r===`tool-call`?`tool call`:r===`message`?`message`:`reasoning message`,o=y(t,e.subagentRunId,i,a,n);return o?M(()=>o):Rc(e)}case k.ACTIVITY_DELTA:{let n=e.messageId,r=y(t,e.subagentRunId,s.activity.get(n),`activity`,n);return r?M(()=>r):Rc(e)}case k.SUBAGENT_STARTED:{if(typeof e.subagentRunId!=`string`)return M(()=>new A(`Cannot send 'SUBAGENT_STARTED' without a 'subagentRunId'.`));if(typeof e.name!=`string`)return M(()=>new A(`Cannot send 'SUBAGENT_STARTED' without a 'name'.`));let t=e.subagentRunId,n=e.parentSubagentRunId;return m.has(t)?M(()=>new A(`Cannot send 'SUBAGENT_STARTED': subagent '${t}' is already active. Finish it with 'SUBAGENT_FINISHED' first.`)):h.has(t)?M(()=>new A(`Cannot send 'SUBAGENT_STARTED': subagent '${t}' has already finished in this run. Subagent IDs are per-invocation and cannot be reused.`)):n!==void 0&&!m.has(n)&&!h.has(n)?M(()=>new A(`Cannot send 'SUBAGENT_STARTED': parentSubagentRunId '${n}' has not been started in this run.`)):(m.set(t,!0),Rc(e))}case k.SUBAGENT_FINISHED:case k.SUBAGENT_ERROR:{if(typeof e.subagentRunId!=`string`)return M(()=>new A(`Cannot send '${t}' without a 'subagentRunId'.`));if(t===k.SUBAGENT_ERROR&&typeof e.message!=`string`)return M(()=>new A(`Cannot send 'SUBAGENT_ERROR' without a 'message'.`));let n=e.subagentRunId;return m.has(n)?(m.delete(n),h.add(n),Rc(e)):M(()=>new A(`Cannot send '${t}': no active subagent found with ID '${n}'. A 'SUBAGENT_STARTED' event must be sent first.`))}case k.MESSAGES_SNAPSHOT:{let t=v(e.messages,!0);if(t)return M(()=>t)}return Rc(e);case k.RUN_STARTED:g=!0;{let t=v((e.input??{}).messages,!1);if(t)return M(()=>t)}return Rc(e);case k.RUN_FINISHED:if(p()){let e=[];for(let[t,n]of d)for(let r of n.keys())e.push(t===void 0?r:`${r} (subagent '${t}')`);let t=e.join(`, `);return M(()=>new A(`Cannot send 'RUN_FINISHED' while steps are still active: ${t}`))}if(r.size>0){let e=Array.from(r.keys()).join(`, `);return M(()=>new A(`Cannot send 'RUN_FINISHED' while text messages are still active: ${e}`))}if(o.size>0){let e=Array.from(o.keys()).join(`, `);return M(()=>new A(`Cannot send 'RUN_FINISHED' while reasoning messages are still active: ${e}`))}if(a.size>0){let e=Array.from(a.keys()).join(`, `);return M(()=>new A(`Cannot send 'RUN_FINISHED' while reasoning spans are still active: ${e}`))}if(i.size>0){let e=Array.from(i.keys()).join(`, `);return M(()=>new A(`Cannot send 'RUN_FINISHED' while tool calls are still active: ${e}`))}if(m.size>0){let e=Array.from(m.keys()).join(`, `);return M(()=>new A(`Cannot send 'RUN_FINISHED' while subagents are still active: ${e}`))}return c=!0,Rc(e);case k.RUN_ERROR:return l=!0,Rc(e);case k.CUSTOM:return Rc(e);default:return Rc(e)}}))},JT=function(e){return e.HEADERS=`headers`,e.DATA=`data`,e}({}),YT=e=>Gc(()=>Lc(e())).pipe(Zc(e=>{if(!e.ok){let t=e.headers.get(`content-type`)||``;return Lc(e.text()).pipe(Uc(n=>{let r=n;if(t.includes(`application/json`))try{r=JSON.parse(n)}catch{}let i=Error(`HTTP ${e.status}: ${typeof r==`string`?r:JSON.stringify(r)}`);return i.status=e.status,i.payload=r,M(()=>i)}))}let t={type:JT.HEADERS,status:e.status,headers:e.headers},n=e.body?.getReader();return n?new Ks(e=>(e.next(t),(async()=>{try{for(;;){let{done:t,value:r}=await n.read();if(t)break;let i={type:JT.DATA,data:r};e.next(i)}e.complete()}catch(t){e.error(t)}})(),()=>{n.cancel().catch(e=>{if(e?.name!==`AbortError`)throw e})})):M(()=>Error(`Failed to getReader() from response`))})),XT=10485760,ZT=(e,t)=>{let n=VT(t),r=new tc,i=new TextDecoder(`utf-8`,{fatal:!1}),a=``;e.subscribe({next:e=>{if(e.type!==JT.HEADERS&&e.type===JT.DATA&&e.data){let t=i.decode(e.data,{stream:!0});a+=t;let n=a.split(/\n\n/);a=n.pop()||``;for(let e of n)o(e);if(a.length>XT){r.error(Error(`SSE buffer size exceeded maximum limit of ${XT/1048576} MB`));return}}},error:e=>r.error(e),complete:()=>{a&&(a+=i.decode(),o(a)),r.complete()}});function o(e){let t=e.split(` +`),i=[];for(let e of t)e.startsWith(`data:`)&&i.push(e.slice(5).replace(/^ /,``));if(i.length>0)try{let e=i.join(` +`),t=JSON.parse(e);n?.event(`SSE`,`Event received:`,t,{type:t?.type}),r.next(t)}catch(e){r.error(e)}}return r.asObservable()},QT=10485760,$T=()=>typeof process<`u`&&!!{}.SUPPRESS_TRANSFORMATION_WARNINGS,eE=(e,t)=>{let n=VT(t),r=new tc,i=new Uint8Array,a=!1;e.subscribe({next:e=>{if(e.type!==JT.HEADERS&&e.type===JT.DATA&&e.data){let t=new Uint8Array(i.length+e.data.length);t.set(i,0),t.set(e.data,i.length),i=t,o()}},error:e=>r.error(e),complete:()=>{if(o(),!a){if(i.length>0){r.error(Error(`The binary stream ended mid-frame: ${i.length} trailing bytes could not be read as a complete message.`));return}r.complete()}}});function o(){if(!a)for(;i.length>=4;){let e=4+new DataView(i.buffer,i.byteOffset,4).getUint32(0,!1);if(e>QT){r.error(Error(`Protobuf message size exceeded maximum limit of ${QT/1048576} MB`));return}if(i.length{let n=VT(t),r=new tc,i=new ic(1),a=!1,o,s=!1,c=()=>{s=!0,o?.unsubscribe()},l=e=>{c(),r.error(e)},u=()=>{c(),r.complete()};return o=e.subscribe({next:e=>{if(i.next(e),e.type===JT.HEADERS&&!a){a=!0;let t=e.headers.get(`content-type`);n?.lifecycle(`HTTP`,`Stream format detected:`,{contentType:t,parser:t===`application/vnd.ag-ui.event+proto`?`protobuf`:`sse`}),t===`application/vnd.ag-ui.event+proto`?eE(i,n).subscribe({next:e=>r.next(e),error:e=>l(e),complete:()=>u()}):ZT(i,n).subscribe({next:e=>{if(typeof e!=`object`||!e||Array.isArray(e)){let t=Error(`Invalid event: the frame is not a JSON object.`);n?.event(`HTTP`,`Event invalid:`,{json:e,error:String(t)}),l(t);return}let t=e;if(typeof t.type!=`string`||t.type.length===0){let t=Error(`Invalid event: the frame carries no event type.`);n?.event(`HTTP`,`Event invalid:`,{json:e,error:String(t)}),l(t);return}n?.event(`HTTP`,`Event received:`,e,{type:t.type}),r.next(e)},error:e=>{if(e?.name===`AbortError`){r.next({type:k.RUN_ERROR,message:e.message||`Request aborted`,code:`abort`,rawEvent:e}),u();return}return l(e)},complete:()=>u()})}else a||l(Error(`No headers event received before data events`))},error:e=>{i.error(e),l(e)},complete:()=>{i.complete()}}),s&&o.unsubscribe(),r.asObservable()},nE={TextMessageStart:`TextMessageStart`,TextMessageContent:`TextMessageContent`,TextMessageEnd:`TextMessageEnd`,ActionExecutionStart:`ActionExecutionStart`,ActionExecutionArgs:`ActionExecutionArgs`,ActionExecutionEnd:`ActionExecutionEnd`,ActionExecutionResult:`ActionExecutionResult`,AgentStateMessage:`AgentStateMessage`,MetaEvent:`MetaEvent`,RunStarted:`RunStarted`,RunFinished:`RunFinished`,RunError:`RunError`,NodeStarted:`NodeStarted`,NodeFinished:`NodeFinished`},rE=e=>{if(typeof e==`string`)return e;if(!Array.isArray(e))return;let t=e.filter(e=>e.type===`text`).map(e=>e.text).filter(e=>e.length>0);if(t.length!==0)return t.join(` +`)};function iE(e,t){return So(t)&&aE(`[ag-ui][legacy] The result of tool call '${e}' carries content parts the legacy protocol cannot represent; only its text parts are bridged and the rest is dropped.`),xo(t)}var aE=e=>{typeof process<`u`&&{}.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(e)},oE=(e,t,n)=>r=>{let i={},a=!0,o=!0,s=``,c=null,l=null,u=[],d={},f=!1,p=e=>{typeof e==`object`&&e&&(`messages`in e&&delete e.messages,i=e)};return r.pipe(Uc(r=>{switch(r.type){case k.TEXT_MESSAGE_START:{let e=r;return[{type:nE.TextMessageStart,messageId:e.messageId,role:e.role}]}case k.TEXT_MESSAGE_CONTENT:{let e=r;return[{type:nE.TextMessageContent,messageId:e.messageId,content:e.delta}]}case k.TEXT_MESSAGE_END:{let e=r;return[{type:nE.TextMessageEnd,messageId:e.messageId}]}case k.TOOL_CALL_START:{let e=r;return u.push({id:e.toolCallId,type:`function`,function:{name:e.toolCallName,arguments:``}}),o=!0,d[e.toolCallId]=e.toolCallName,[{type:nE.ActionExecutionStart,actionExecutionId:e.toolCallId,actionName:e.toolCallName,parentMessageId:e.parentMessageId}]}case k.TOOL_CALL_ARGS:{let c=r,d=u.find(e=>e.id===c.toolCallId);if(!d)return aE(`[ag-ui][legacy] TOOL_CALL_ARGS: No tool call found with ID '${c.toolCallId}'`),[];d.function.arguments+=c.delta;let f=!1;if(l){let e=l.find(e=>e.tool==d.function.name);if(e)try{let t=JSON.parse(tl(d.function.arguments));e.tool_argument&&e.tool_argument in t?(p({...i,[e.state_key]:t[e.tool_argument]}),f=!0):e.tool_argument||(p({...i,[e.state_key]:t}),f=!0)}catch{}}return[{type:nE.ActionExecutionArgs,actionExecutionId:c.toolCallId,args:c.delta},...f?[{type:nE.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}]:[]]}case k.TOOL_CALL_END:{let e=r;return[{type:nE.ActionExecutionEnd,actionExecutionId:e.toolCallId}]}case k.TOOL_CALL_RESULT:{let e=r,t=d[e.toolCallId];return(t===void 0||t===``)&&aE(`[ag-ui][legacy] No usable tool name was seen for tool call '${e.toolCallId}' (${t===void 0?`no TOOL_CALL_START reached this bridge`:`its TOOL_CALL_START carried an empty toolCallName`}), so its result is being bridged with the fabricated action name "unknown". Downstream consumers route on that name.`),[{type:nE.ActionExecutionResult,actionExecutionId:e.toolCallId,result:iE(e.toolCallId,e.content),actionName:t||`unknown`}]}case k.RAW:return f||(f=!0,aE(`[ag-ui][legacy] Dropping RAW events: the legacy runtime protocol has no equivalent, so the provider payloads they carry do not reach the legacy stream. Reported once per stream.`)),[];case k.CUSTOM:{let e=r;switch(e.name){case`Exit`:a=!1;break;case`PredictState`:l=e.value}return[{type:nE.MetaEvent,name:e.name,value:e.value}]}case k.STATE_SNAPSHOT:return p(r.snapshot),[{type:nE.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}];case k.STATE_DELTA:{let c=r,l;try{l=rs.applyPatch(i,c.delta,!0,!1).newDocument}catch(e){let t=e instanceof Error?e.message:String(e);return aE(`[ag-ui][legacy] Failed to apply state patch:\nCurrent state: ${JSON.stringify(i,null,2)}\nPatch operations: ${JSON.stringify(c.delta,null,2)}\nError: ${t}`),[]}return p(l),[{type:nE.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:o}]}case k.MESSAGES_SNAPSHOT:return c=r.messages,[{type:nE.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify({...i,...c?{messages:c}:{}}),active:!0}];case k.RUN_STARTED:return[];case k.RUN_FINISHED:{if(c&&(i.messages=c),Object.keys(i).length===0)return[];let r=null;if(c)try{r=sE(c)}catch(e){return[{type:nE.RunError,message:e.message}]}return[{type:nE.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify({...i,...r?{messages:r}:{}}),active:!1}]}case k.RUN_ERROR:{let e=r;return[{type:nE.RunError,message:e.message,code:e.code}]}case k.STEP_STARTED:return s=r.stepName,u=[],l=null,[{type:nE.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:!0}];case k.STEP_FINISHED:return u=[],l=null,[{type:nE.AgentStateMessage,threadId:e,agentName:n,nodeName:s,runId:t,running:a,role:`assistant`,state:JSON.stringify(i),active:!1}];default:return[]}}))};function sE(e){let t=[];for(let n of e)if(n.role===`assistant`||n.role===`user`||n.role===`system`){let e=rE(n.content);if(e){let r={id:n.id,role:n.role,content:e};t.push(r)}if(n.role===`assistant`&&n.toolCalls&&n.toolCalls.length>0)for(let e of n.toolCalls){let r;try{r=JSON.parse(e.function.arguments)}catch(t){throw Error(`Failed to parse arguments for tool call '${e.id}' (${e.function.name}): ${t.message}`)}let i={id:e.id,name:e.function.name,arguments:r,parentMessageId:n.id};t.push(i)}}else if(n.role===`tool`){let r=`unknown`;for(let t of e)if(t.role===`assistant`&&t.toolCalls?.length){for(let e of t.toolCalls)if(e.id===n.toolCallId){r=e.function.name;break}}let i={id:n.id,result:iE(n.toolCallId,n.content),actionExecutionId:n.toolCallId,actionName:r};t.push(i)}return t}var cE=e=>e.kind===`tool`?e.fields.toolCallId:e.fields.messageId,lE=e=>e===`tool`?`toolCallId`:`messageId`,uE=(e,t,n,r,i)=>{if(r!==void 0&&r!==i)throw Error(`Cannot continue ${e} '${t}': chunk ${n} '${r}' does not match the open stream's ${n} ${i===void 0?`(absent)`:`'${i}'`}.`)},dE=(e,t)=>t.metadata===void 0?e:{...e,metadata:t.metadata},fE=(e,t)=>{let n=dE(e,t);return t.rawEvent===void 0?n:{...n,rawEvent:t.rawEvent}},pE=e=>new Set(Object.keys(e.shape)),mE=pE(Av),hE=pE(Pv),gE=pE(_y),_E=(e,t)=>{let n;for(let r of Object.keys(e))t.has(r)||((n??={})[r]=e[r]);return n},vE=e=>{typeof process<`u`&&{}.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`[ag-ui][transform] ${e} Set SUPPRESS_TRANSFORMATION_WARNINGS=true to silence.`)},yE=(e,t,n,r)=>{if(t===void 0||n||e.length===0)return;let i=e[e.length-1],a=Object.keys(t).filter(e=>Object.prototype.hasOwnProperty.call(i,e));a.length>0&&vE(`A ${r} carried ${a.map(e=>`'${e}'`).join(`, `)}, which the synthesized ${String(i.type)} already describes. The synthesized value is kept and the chunk's is dropped — this stage does not judge a described field, so the producer's value cannot be substituted for its own.`),e[e.length-1]={...t,...i}},bE=e=>t=>{let n=VT(e),r=new Map,i=e=>{let t=r.get(e);if(!t)return[];switch(r.delete(e),t.kind){case`text`:{let e={type:k.TEXT_MESSAGE_END,messageId:t.fields.messageId,...t.fields.subagentRunId!==void 0&&{subagentRunId:t.fields.subagentRunId}};return n?.event(`TRANSFORM`,`TEXT_MESSAGE_END`,e,{messageId:e.messageId}),[e]}case`tool`:{let e={type:k.TOOL_CALL_END,toolCallId:t.fields.toolCallId,...t.fields.subagentRunId!==void 0&&{subagentRunId:t.fields.subagentRunId}};return n?.event(`TRANSFORM`,`TOOL_CALL_END`,e,{toolCallId:e.toolCallId}),[e]}case`reasoning`:{let e={type:k.REASONING_MESSAGE_END,messageId:t.fields.messageId,...t.fields.subagentRunId!==void 0&&{subagentRunId:t.fields.subagentRunId}};return n?.event(`TRANSFORM`,`REASONING_MESSAGE_END`,e,{messageId:e.messageId}),[e]}}},a=()=>[...r.keys()].flatMap(e=>i(e)),o=(e,t)=>{for(let[n,i]of r)if(i.kind===e&&cE(i)===t)return{owner:n}},s=(e,t,n,i,a)=>{if(t!==void 0){let r=o(e,t);if(r){if(n!==void 0&&n!==r.owner)throw Error(`Cannot continue ${a} '${t}': chunk subagentRunId '${n}' does not match the open stream's subagent '${r.owner??`(the parent agent)`}'.`);return r.owner}return n}if(n!==void 0)return n;if(r.get(void 0)?.kind===e)return;let s=[...r.entries()].filter(([,t])=>t.kind===e);if(s.length===1)return s[0][0];if(s.length>1)throw Error(`Ambiguous ${i}: it carries neither a ${lE(e)} nor a subagentRunId, but ${s.length} lanes have an open ${a}. Attribute the chunk to the subagent it belongs to.`)};return t.pipe(Uc(e=>{switch(e.type){case k.TEXT_MESSAGE_START:case k.TEXT_MESSAGE_CONTENT:case k.TEXT_MESSAGE_END:case k.TOOL_CALL_START:case k.TOOL_CALL_ARGS:case k.TOOL_CALL_END:case k.TOOL_CALL_RESULT:case k.STATE_SNAPSHOT:case k.STATE_DELTA:case k.CUSTOM:case k.STEP_STARTED:case k.STEP_FINISHED:case k.REASONING_START:case k.REASONING_MESSAGE_START:case k.REASONING_MESSAGE_CONTENT:case k.REASONING_MESSAGE_END:case k.REASONING_END:return[...i(e.subagentRunId??void 0),e];case k.RUN_STARTED:case k.RUN_FINISHED:case k.RUN_ERROR:case k.MESSAGES_SNAPSHOT:return[...a(),e];case k.RAW:case k.ACTIVITY_SNAPSHOT:case k.ACTIVITY_DELTA:case k.REASONING_ENCRYPTED_VALUE:case k.SUBAGENT_STARTED:return[e];case k.SUBAGENT_FINISHED:case k.SUBAGENT_ERROR:{let t=e.subagentRunId;return t==null?[e]:[...i(t),e]}case k.TEXT_MESSAGE_CHUNK:{let t=e,a=_E(e,mE),o=s(`text`,t.messageId,t.subagentRunId??void 0,`TEXT_MESSAGE_CHUNK`,`text message`),c=r.get(o),l=[],u=!1,d;if(c?.kind===`text`&&(t.messageId===void 0||t.messageId===c.fields.messageId))uE(`text message`,c.fields.messageId,`role`,t.role,c.fields.role),uE(`text message`,c.fields.messageId,`name`,t.name,c.fields.name),d=c.fields;else{if(l.push(...i(o)),t.messageId===void 0)throw Error(`First TEXT_MESSAGE_CHUNK must have a messageId`);d={messageId:t.messageId,role:t.role===void 0?`assistant`:t.role,name:t.name,subagentRunId:t.subagentRunId},r.set(o,{kind:`text`,fields:d});let e=dE({type:k.TEXT_MESSAGE_START,messageId:t.messageId,role:d.role,...t.name!==void 0&&{name:t.name},...t.subagentRunId!==void 0&&{subagentRunId:t.subagentRunId}},t);l.push(e),n?.event(`TRANSFORM`,`TEXT_MESSAGE_START`,e,{messageId:t.messageId})}if(t.delta!==void 0||t.rawEvent!==void 0){let e=t.subagentRunId===void 0?d.subagentRunId:t.subagentRunId,r=fE({...a,type:k.TEXT_MESSAGE_CONTENT,messageId:d.messageId,delta:t.delta===void 0?``:t.delta,...e!==void 0&&{subagentRunId:e}},t);l.push(r),u=!0,n?.event(`TRANSFORM`,`TEXT_MESSAGE_CONTENT`,r,{messageId:d.messageId})}if(l.length===0&&(t.metadata!==void 0||t.rawEvent!==void 0||t.subagentRunId===null||a!==void 0)){let e=t.subagentRunId===void 0?d.subagentRunId:t.subagentRunId;l.push({...a,type:k.TEXT_MESSAGE_CONTENT,messageId:d.messageId,delta:``,...t.metadata!==void 0&&{metadata:t.metadata},...t.rawEvent!==void 0&&{rawEvent:t.rawEvent},...e!==void 0&&{subagentRunId:e}}),u=!0}return yE(l,a,u,`TEXT_MESSAGE_CHUNK`),l}case k.TOOL_CALL_CHUNK:{let t=e,a=_E(e,hE),o=s(`tool`,t.toolCallId,t.subagentRunId??void 0,`TOOL_CALL_CHUNK`,`tool call`),c=r.get(o),l=[],u=!1,d;if(c?.kind===`tool`&&(t.toolCallId===void 0||t.toolCallId===c.fields.toolCallId))uE(`tool call`,c.fields.toolCallId,`toolCallName`,t.toolCallName,c.fields.toolCallName),uE(`tool call`,c.fields.toolCallId,`parentMessageId`,t.parentMessageId,c.fields.parentMessageId),d=c.fields;else{if(l.push(...i(o)),t.toolCallId===void 0)throw Error(`First TOOL_CALL_CHUNK must have a toolCallId`);if(t.toolCallName===void 0)throw Error(`First TOOL_CALL_CHUNK must have a toolCallName`);d={toolCallId:t.toolCallId,toolCallName:t.toolCallName,parentMessageId:t.parentMessageId,subagentRunId:t.subagentRunId},r.set(o,{kind:`tool`,fields:d});let e=dE({type:k.TOOL_CALL_START,toolCallId:t.toolCallId,toolCallName:t.toolCallName,...t.parentMessageId!==void 0&&{parentMessageId:t.parentMessageId},...t.subagentRunId!==void 0&&{subagentRunId:t.subagentRunId}},t);l.push(e),n?.event(`TRANSFORM`,`TOOL_CALL_START`,e,{toolCallId:t.toolCallId,toolCallName:t.toolCallName})}if(t.delta!==void 0||t.rawEvent!==void 0){let e=t.subagentRunId===void 0?d.subagentRunId:t.subagentRunId,r=fE({...a,type:k.TOOL_CALL_ARGS,toolCallId:d.toolCallId,delta:t.delta===void 0?``:t.delta,...e!==void 0&&{subagentRunId:e}},t);l.push(r),u=!0,n?.event(`TRANSFORM`,`TOOL_CALL_ARGS`,r,{toolCallId:d.toolCallId})}if(l.length===0&&(t.metadata!==void 0||t.rawEvent!==void 0||t.subagentRunId===null||a!==void 0)){let e=t.subagentRunId===void 0?d.subagentRunId:t.subagentRunId;l.push({...a,type:k.TOOL_CALL_ARGS,toolCallId:d.toolCallId,delta:``,...t.metadata!==void 0&&{metadata:t.metadata},...t.rawEvent!==void 0&&{rawEvent:t.rawEvent},...e!==void 0&&{subagentRunId:e}}),u=!0}return yE(l,a,u,`TOOL_CALL_CHUNK`),l}case k.REASONING_MESSAGE_CHUNK:{let t=e,a=_E(e,gE),o=s(`reasoning`,t.messageId,t.subagentRunId??void 0,`REASONING_MESSAGE_CHUNK`,`reasoning message`),c=r.get(o),l=[],u=!1,d;if(c?.kind===`reasoning`&&(t.messageId===void 0||t.messageId===c.fields.messageId))d=c.fields;else{if(l.push(...i(o)),t.messageId===void 0)throw Error(`First REASONING_MESSAGE_CHUNK must have a messageId`);d={messageId:t.messageId,subagentRunId:t.subagentRunId},r.set(o,{kind:`reasoning`,fields:d});let e=dE({type:k.REASONING_MESSAGE_START,messageId:t.messageId,role:`reasoning`,...t.subagentRunId!==void 0&&{subagentRunId:t.subagentRunId}},t);l.push(e),n?.event(`TRANSFORM`,`REASONING_MESSAGE_START`,e,{messageId:t.messageId})}if(t.delta!==void 0||t.rawEvent!==void 0){let e=t.subagentRunId===void 0?d.subagentRunId:t.subagentRunId,r=fE({...a,type:k.REASONING_MESSAGE_CONTENT,messageId:d.messageId,delta:t.delta===void 0?``:t.delta,...e!==void 0&&{subagentRunId:e}},t);l.push(r),u=!0,n?.event(`TRANSFORM`,`REASONING_MESSAGE_CONTENT`,r,{messageId:d.messageId})}if(l.length===0&&(t.metadata!==void 0||t.rawEvent!==void 0||t.subagentRunId===null||a!==void 0)){let e=t.subagentRunId===void 0?d.subagentRunId:t.subagentRunId;l.push({...a,type:k.REASONING_MESSAGE_CONTENT,messageId:d.messageId,delta:``,...t.metadata!==void 0&&{metadata:t.metadata},...t.rawEvent!==void 0&&{rawEvent:t.rawEvent},...e!==void 0&&{subagentRunId:e}}),u=!0}return yE(l,a,u,`REASONING_MESSAGE_CHUNK`),l}}return e.type,[e]}),Xc(()=>{a()}))},xE=Symbol(`agui.strip.drop`);function SE(e){let t=e;for(;;){if(t instanceof dT||t instanceof pT||t instanceof hT||t instanceof TT||t instanceof xT){t=t.unwrap();continue}if(t instanceof CT){t=t.def.in;continue}if(t instanceof DT){t=t.def.getter();continue}return t}}function CE(e){let t=e.def;return typeof t?.discriminator==`string`?t.discriminator:void 0}function wE(e){let t=e,n=Array.isArray(t.def?.values)?t.def.values:t.values?Array.from(t.values):void 0;return n&&n.length===1?n[0]:t.value}function TE(e){let t=SE(e);return t instanceof cT?wE(t):void 0}function EE(e,t,n,r){let i=SE(t);if(i instanceof eT){if(typeof e!=`object`||!e||Array.isArray(e))return e;let t=i.shape,a=e,o={},s=i.meta()?.specOpen===!0;for(let e of Object.keys(a)){let i=Object.prototype.hasOwnProperty.call(t,e)?t[e]:void 0;if(i===void 0){if(s){o[e]=a[e];continue}r.push(`${n}/${e}`);continue}let c=r.length,l=EE(a[e],i,`${n}/${e}`,r);if(l===xE){if(r.length=c,i.safeParse(void 0).success){r.push(`${n}/${e}`);continue}return xE}o[e]=l}return o}if(i instanceof Qw){if(!Array.isArray(e))return e;let t=i.element,a=[];return e.forEach((e,i)=>{let o=r.length,s=EE(e,t,`${n}/${i}`,r);if(s===xE){r.length=o,r.push(`${n}/${i}`);return}a.push(s)}),a}if(i instanceof aT){if(typeof e!=`object`||!e||Array.isArray(e))return e;let t=i.def.valueType,a=e,o={};for(let e of Object.keys(a)){let i=r.length,s=EE(a[e],t,`${n}/${e}`,r);if(s===xE){r.length=i,r.push(`${n}/${e}`);continue}o[e]=s}return o}if(i instanceof tT){let t=i.options,a=CE(i);if(a!==void 0){if(typeof e!=`object`||!e||Array.isArray(e))return e;let i=e[a];for(let o of t){let t=SE(o);if(!(t instanceof eT))continue;let s=t.shape;if(TE(s[a])===i)return EE(e,o,n,r)}return xE}let o=t.filter(e=>SE(e)instanceof eT),s=typeof e==`object`&&!!e&&!Array.isArray(e);if(o.length>1&&s)return e;for(let i of t){let t=SE(i);if(t instanceof Qw&&Array.isArray(e)||t instanceof eT&&s)return EE(e,i,n,r)}return e}return e}function DE(e,t){let n=[],r=EE(e,t,``,n);if(r===xE)throw Error(`Internal error: the stripper found the whole value unrecognisable, which the schemas are not supposed to allow — schema/stripper mismatch.`);return{value:r,stripped:n}}var OE=new Set(Object.values(k));function kE(e){return OE.has(e.type)}var AE=new Map(Cy.options.map(e=>{let t=e.shape;return[String(wE(t.type)),e]})),jE=()=>typeof process<`u`&&!!{}.SUPPRESS_TRANSFORMATION_WARNINGS;function ME(e){jE()||console.warn(`[ag-ui][enforce] ${e}`)}var NE=e=>t=>{let n=VT(e);return t.pipe(Uc(e=>{if(!kE(e))return ME(`Dropping unrecognised event '${String(e.type)}': no middleware translated it and the protocol does not describe it.`),n?.event(`ENFORCE`,`Unrecognised event dropped:`,e,{type:e.type}),ac;let t=AE.get(e.type);if(t===void 0)throw Error(`No validator for recognised event type '${String(e.type)}'`);let{value:r,stripped:i}=DE(e,t);for(let t of i)ME(`Removed unrecognised material at '${t}' on ${String(e.type)}. Nothing handled it; see the repo-root DEPRECATIONS.md if it is a retired shape.`);return Rc(t.parse(r))}))};function PE(e){let{value:t,stripped:n}=DE(vo(e,`RunAgentInput`),ry);for(let e of n)ME(`Removed unrecognised material at '${e}' from the outgoing input.`);return ry.parse(t)}var FE=class{runNext(e,t){return t.run(e).pipe(bE(!1))}runNextWithState(e,t){let n=$(e.messages||[]),r=$(e.state===void 0?{}:e.state),i=new ic;return KT(e,i,t,[]).subscribe({next:e=>{e.messages!==void 0&&(n=e.messages),e.state!==void 0&&(r=e.state)},error:()=>{}}),this.runNext(e,t).pipe(Jc(async e=>(i.next(e),await new Promise(e=>setTimeout(e,0)),{event:e,messages:$(n),state:$(r)})))}},IE=class extends FE{constructor(e){super(),this.fn=e}run(e,t){return this.fn(e,t)}};function LE(e){return e.startsWith(`image/`)?`image`:e.startsWith(`audio/`)?`audio`:e.startsWith(`video/`)?`video`:`document`}function RE(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`binary`&&`mimeType`in e&&typeof e.mimeType==`string`}function zE(e){let t=LE(e.mimeType);return e.data?{type:t,source:{type:`data`,value:e.data,mimeType:e.mimeType},...e.filename?{metadata:{filename:e.filename}}:{}}:e.url?{type:t,source:{type:`url`,value:e.url,mimeType:e.mimeType},...e.filename?{metadata:{filename:e.filename}}:{}}:((typeof process>`u`||!{}.SUPPRESS_TRANSFORMATION_WARNINGS)&&console.warn(`[ag-ui][compat] A binary content part carries only an id ('${e.id??``}') and cannot be converted to a modern media part; a 1.0 peer will not accept it. Provide data or a url. See the repo-root DEPRECATIONS.md.`),e)}function BE(e,t,n){if(typeof e!=`object`||!e||!(`type`in e)||e.type!==t.type||!(`source`in e))return!1;let r=e.source;return typeof r!=`object`||!r||!(`type`in r)||r.type!==t.source.type||!(`value`in r)||r.value!==t.source.value||!(`mimeType`in r)||r.mimeType!==t.source.mimeType?!1:!n||`metadata`in e&&typeof e.metadata==`object`&&e.metadata!==null&&`filename`in e.metadata&&e.metadata.filename===n}function VE(e){let t=e.content;if(!Array.isArray(t))return e;let n=t.flatMap(e=>{if(RE(e)){let n=zE(e);return n.type!==`binary`&&t.some(t=>BE(t,n,e.filename))?[]:[n]}return[e]});return{...e,content:n}}var HE=`THINKING_START`,UE=`THINKING_END`,WE=`THINKING_TEXT_MESSAGE_START`,GE=`THINKING_TEXT_MESSAGE_CONTENT`,KE=`THINKING_TEXT_MESSAGE_END`;function qE(e,t){typeof process<`u`&&{}.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`[ag-ui][compat] Converting deprecated ${e} to ${t}. The old shape leaves the protocol after its shim window — see the repo-root DEPRECATIONS.md. Set SUPPRESS_TRANSFORMATION_WARNINGS=true to silence.`)}function JE(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function YE(e,t,n){if(!JE(e)||e[t]!==null)return e;qE(`${n}.${t}: null`,`an absent field`);let{[t]:r,...i}=e;return i}function XE(e,t,n){if(!JE(e)||!Array.isArray(e[t]))return e;let r=e[t],i=r.map(n);return i.some((e,t)=>e!==r[t])?{...e,[t]:i}:e}function ZE(e){return XE(e,`content`,e=>{if(!JE(e))return e;switch(e.type){case`image`:case`audio`:case`video`:case`document`:return YE(e,`metadata`,`${e.type} input content`);default:return e}})}function QE(e){let t=YE(e,`forwardedProps`,`RunAgentInput`);return t=XE(t,`tools`,e=>YE(e,`parameters`,`Tool`)),t=XE(t,`resume`,e=>YE(e,`payload`,`ResumeEntry`)),XE(t,`messages`,ZE)}var $E=class extends FE{constructor(...e){super(...e),this.currentReasoningId=null,this.currentMessageId=null}warn(e,t){qE(e,t)}mintedContinuationId(e,t){if(t!==null)return t;let n=PT();return this.warnAside(`Minting a messageId ('${n}') for ${e}: no THINKING opener preceded it, so there was no id to continue. The id is this client's invention, not the producer's, and verification will reject the translated event for naming something nothing opened.`),n}warnAside(e){typeof process<`u`&&{}.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`[ag-ui][compat] ${e} Set SUPPRESS_TRANSFORMATION_WARNINGS=true to silence.`)}run(e,t){return this.currentReasoningId=null,this.currentMessageId=null,e.messages=e.messages.map(VE),t.run(e).pipe(Vc(e=>this.transformEvent(e)))}transformEvent(e){if(e.rawEvent===null){this.warn(`${e.type}.rawEvent: null`,`an absent field`);let{rawEvent:t,...n}=e;e=n}if((e.type===k.RUN_FINISHED||e.type===k.SUBAGENT_FINISHED)&&e.result===null){this.warn(`${e.type}.result: null`,`an absent field`);let{result:t,...n}=e;e=n}switch(e.type){case HE:{this.currentReasoningId=PT();let{title:t,...n}=e;return this.warn(HE,k.REASONING_START),t!==void 0&&this.warnAside(`Dropping ${HE}.title ${JSON.stringify(t)}: ${k.REASONING_START} has no title field, so the span's label cannot be carried and nothing downstream can recover it.`),{...n,type:k.REASONING_START,messageId:this.currentReasoningId}}case WE:return this.currentMessageId=PT(),this.warn(WE,k.REASONING_MESSAGE_START),{...e,type:k.REASONING_MESSAGE_START,messageId:this.currentMessageId,role:`reasoning`};case GE:{let{delta:t,...n}=e;return this.warn(GE,k.REASONING_MESSAGE_CONTENT),{...n,type:k.REASONING_MESSAGE_CONTENT,messageId:this.mintedContinuationId(GE,this.currentMessageId),delta:t}}case KE:{let t=this.mintedContinuationId(KE,this.currentMessageId);return this.currentMessageId=null,this.warn(KE,k.REASONING_MESSAGE_END),{...e,type:k.REASONING_MESSAGE_END,messageId:t}}case UE:{let t=this.mintedContinuationId(UE,this.currentReasoningId);return this.currentReasoningId=null,this.warn(UE,k.REASONING_END),{...e,type:k.REASONING_END,messageId:t}}case k.TOOL_CALL_START:case k.TOOL_CALL_CHUNK:{let t=e;if(t.parentMessageId===null){this.warn(`${e.type}.parentMessageId: null`,`an absent field`);let{parentMessageId:n,...r}=t;return r}return e}case k.RUN_FINISHED:{let t=e;if(t.outcome===null){this.warn(`RUN_FINISHED.outcome: null`,`an absent field`);let{outcome:e,...n}=t;return n}return e}case k.MESSAGES_SNAPSHOT:{let t=e;return Array.isArray(t.messages)?{...t,messages:t.messages.map(e=>this.upgradeInboundMessage(e))}:e}case k.RUN_STARTED:{let t=QE(e.input),n=t===e.input?e:{...e,input:t},r=n;return!r.input||!Array.isArray(r.input.messages)?n:{...r,input:{...r.input,messages:r.input.messages.map(e=>this.upgradeInboundMessage(e))}}}default:return e}}upgradeInboundMessage(e){e=ZE(e);let t=e.content;return!Array.isArray(t)||!t.some(e=>typeof e==`object`&&!!e&&e.type===`binary`)?e:(this.warn(`binary input content`,`the modern media content parts`),VE(e))}},eD=()=>e=>Gc(()=>{let t=new $E;return e.pipe(Vc(e=>t.transformEvent(e)))});function tD(e,t=new Date){return e.expiresAt!==void 0&&new Date(e.expiresAt)<=t}function nD(){return typeof process<`u`&&!!{}.SUPPRESS_TRANSFORMATION_WARNINGS}function rD(e){nD()||console.warn(`[ag-ui][compat] Flattening message content for a <=0.0.39 peer DROPS non-text parts (${e.join(`, `)}). The peer cannot receive them; upgrade it to keep media content. See the repo-root DEPRECATIONS.md.`)}function iD(e){nD()||console.warn(`[ag-ui][compat] Not flattening message content for a <=0.0.39 peer: ${e} content part(s) claim type "text" but carry a malformed 'text' value. That is a defect in the message, not media the peer cannot represent, and a downgrade must not repair it — the content is passed on unchanged so the outgoing enforcement boundary reports it. See the repo-root DEPRECATIONS.md.`)}function aD(e){let t=e.content;if(Array.isArray(t)){let n=e=>typeof e==`object`&&!!e&&`type`in e&&e.type===`text`,r=e=>n(e)&&typeof e.text==`string`,i=t.filter(e=>n(e)&&!r(e));if(i.length>0)return iD(i.length),e;let a=t.filter(e=>!r(e)).map(e=>typeof e==`object`&&e&&`type`in e?String(e.type):typeof e);a.length>0&&rD(a);let o=t.filter(r).map(e=>e.text).join(``);return{...e,content:o}}return typeof t==`string`?e:t===void 0?{...e,content:``}:e}var oD=class extends FE{run(e,t){let{parentRunId:n,...r}=e,i={...r,messages:r.messages.map(aD)};return this.runNext(i,t)}},sD=`THINKING_START`,cD=`THINKING_END`,lD=`THINKING_TEXT_MESSAGE_START`,uD=`THINKING_TEXT_MESSAGE_CONTENT`,dD=`THINKING_TEXT_MESSAGE_END`,fD=class extends FE{constructor(...e){super(...e),this.currentReasoningId=null,this.currentMessageId=null}warnAboutTransformation(e,t){typeof process<`u`&&{}.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`AG-UI is converting ${e} to ${t}. To remove this warning, upgrade your AG-UI integration package (e.g. @ag-ui/langgraph). To surpress it, set SUPPRESS_TRANSFORMATION_WARNINGS=true in your .env file.`)}run(e,t){return this.currentReasoningId=null,this.currentMessageId=null,this.runNext(e,t).pipe(Vc(e=>this.transformEvent(e)))}transformEvent(e){switch(e.type){case sD:{this.currentReasoningId=PT();let{title:t,...n}=e;return this.warnAboutTransformation(sD,k.REASONING_START),{...n,type:k.REASONING_START,messageId:this.currentReasoningId}}case lD:return this.currentMessageId=PT(),this.warnAboutTransformation(lD,k.REASONING_MESSAGE_START),{...e,type:k.REASONING_MESSAGE_START,messageId:this.currentMessageId,role:`reasoning`};case uD:{let{delta:t,...n}=e;return this.warnAboutTransformation(uD,k.REASONING_MESSAGE_CONTENT),{...n,type:k.REASONING_MESSAGE_CONTENT,messageId:this.currentMessageId??PT(),delta:t}}case dD:{let t=this.currentMessageId??PT();return this.warnAboutTransformation(dD,k.REASONING_MESSAGE_END),{...e,type:k.REASONING_MESSAGE_END,messageId:t}}case cD:{let t=this.currentReasoningId??PT();return this.warnAboutTransformation(cD,k.REASONING_END),{...e,type:k.REASONING_END,messageId:t}}default:return e}}},pD=`SUBAGENT_STARTED`,mD=`SUBAGENT_FINISHED`,hD=`SUBAGENT_ERROR`;function gD(e){if(e&&typeof e==`object`&&`subagentRunId`in e){let{subagentRunId:t,...n}=e;return n}return e}function _D(e){return e.map(e=>gD(e))}var vD=class extends FE{warnDroppedLifecycleEvent(e){typeof process<`u`&&{}.SUPPRESS_TRANSFORMATION_WARNINGS||console.warn(`AG-UI is dropping ${e} because the target agent predates subagent support. To remove this warning, upgrade your AG-UI integration package. To suppress it, set SUPPRESS_TRANSFORMATION_WARNINGS=true in your .env file.`)}run(e,t){let n={...e,messages:(e.messages??[]).map(e=>gD(e))};return this.runNext(n,t).pipe($c(e=>{let t=e.type;(t===pD||t===mD||t===hD)&&this.warnDroppedLifecycleEvent(t)}),Kc(e=>{let t=e.type;return t!==pD&&t!==mD&&t!==hD}),Vc(e=>{let t=gD(e);if(t.type===k.MESSAGES_SNAPSHOT){let e=t;if(Array.isArray(e.messages))return{...e,messages:_D(e.messages)}}if(t.type===k.RUN_FINISHED){let e=t;if(e.outcome&&Array.isArray(e.outcome.interrupts))return{...e,outcome:{...e.outcome,interrupts:e.outcome.interrupts.map(e=>gD(e))}}}if(t.type===k.RUN_STARTED){let e=t;if(e.input&&Array.isArray(e.input.messages))return{...e,input:{...e.input,messages:_D(e.input.messages)}}}return t}))}},yD=`1.0.1`,bD=!1,xD=new WeakSet,SD=(e,t)=>/^\d+\.\d+$/.test(e)?eC(e,t)>0?`newer`:`not-newer`:`uninterpretable`,CD=e=>{let t=e.protocolVersion;if(t!==void 0&&t!==`1.0`)switch(SD(t,`1.0`)){case`uninterpretable`:console.warn(`[ag-ui] The producer declared protocol version '${t}', which this client cannot interpret.`);return;case`newer`:console.warn(`[ag-ui] The producer speaks protocol ${t}; this client speaks 1.0. Unrecognised material will be stripped with warnings.`);return;case`not-newer`:return}},wD=class e{resolvePeerCeiling(t){if(this.resolvingPeerCeiling)return yD;let n=Object.getOwnPropertyDescriptor(this,`maxVersion`),r=Object.getOwnPropertyDescriptor(this,`maxProtocolVersion`),i=Object.getPrototypeOf(this);for(;i&&i!==e.prototype;)n??=Object.getOwnPropertyDescriptor(i,`maxVersion`),r??=Object.getOwnPropertyDescriptor(i,`maxProtocolVersion`),i=Object.getPrototypeOf(i);if(t===`maxVersion`&&n)return yD;let a=t===`maxProtocolVersion`?n:r;if(!a)return yD;this.resolvingPeerCeiling=!0;try{return a.get?a.get.call(this):a.value}finally{this.resolvingPeerCeiling=!1}}get maxProtocolVersion(){return this.resolvePeerCeiling(`maxProtocolVersion`)}get maxVersion(){return!this.resolvingPeerCeiling&&!bD&&(bD=!0,console.warn(`[ag-ui] AbstractAgent.maxVersion is deprecated — use maxProtocolVersion. Same value; the new name says whose version it is and that it is a ceiling.`)),this.resolvePeerCeiling(`maxVersion`)}get debug(){return this._debug}set debug(e){this._debug=BT(e),this._debugLogger=UT(this._debug)}get debugLogger(){return this._debugLogger}set debugLogger(e){this._debugLogger=typeof e==`boolean`?e?UT(BT(!0)):void 0:e}resolvedCeilingDuringConstruction(){let e=this.maxProtocolVersion;if(typeof e!=`string`||!tC(e))throw new A(`maxProtocolVersion resolved to ${JSON.stringify(e)} during construction, which is not a version this client can compare. A ceiling read from an instance field is not available yet — return a literal from the getter.`);return e}constructor({agentId:e,description:t,threadId:n,initialMessages:r,initialState:i,debug:a}={}){this.subscribers=[],this.isRunning=!1,this.pendingInterrupts=[],this.middlewares=[],this.resolvingPeerCeiling=!1,this.agentId=e,this.description=t??``,this.threadId=n??mo(),this.messages=$(r??[]),this.state=$(i??{}),this._debug=BT(a),this._debugLogger=UT(this._debug);let o=this.resolvedCeilingDuringConstruction();eC(o,`0.0.39`)<=0&&this.middlewares.unshift(new oD),eC(o,`0.0.45`)<=0&&this.middlewares.unshift(new fD),eC(o,`0.0.57`)<=0&&this.middlewares.unshift(new vD)}subscribe(e){return this.subscribers.push(e),{unsubscribe:()=>{this.subscribers=this.subscribers.filter(t=>t!==e)}}}use(...e){let t=e.map(e=>typeof e==`function`?new IE(e):e);return this.middlewares.push(...t),this}async runAgent(e,t){try{this.isRunning=!0,this.agentId=this.agentId??mo();let n=this.prepareRunAgentInput(e);this.debugLogger?.lifecycle(`LIFECYCLE`,`Run started:`,{agentId:this.agentId,threadId:this.threadId});let r,i=new Set(this.messages.map(e=>e.id)),a=[{onRunStartedEvent:({event:e})=>CD(e),onRunFinishedEvent:e=>{e.outcome===`success`&&(r=e.result)}},...this.subscribers,t??{}];xD.add(n),await this.onInitialize(n,a),this.activeRunDetach$=new tc;let o;this.activeRunCompletionPromise=new Promise(e=>{o=e}),await Bc(Ws(()=>[...this.middlewares,new $E].reduceRight((e,t)=>({run:n=>t.run(n,e),get messages(){return e.messages},get state(){return e.state}}),this).run(n),NE(this.debugLogger),bE(this.debugLogger),qT(this.debugLogger),e=>e.pipe(Qc(this.activeRunDetach$)),e=>this.apply(n,e,a),e=>this.processApplyEvents(n,e,a),qc(e=>(this.debugLogger?.lifecycle(`LIFECYCLE`,`Run errored:`,{agentId:this.agentId,error:e instanceof Error?e.message:String(e)}),this.isRunning=!1,this.onError(n,e,a))),Xc(()=>{this.debugLogger?.lifecycle(`LIFECYCLE`,`Run finished:`,{agentId:this.agentId,threadId:this.threadId}),this.isRunning=!1,this.onFinalize(n,a),o?.(),o=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}))(Rc(null)));let s=$(this.messages).filter(e=>!i.has(e.id));return{result:r,newMessages:s}}finally{this.isRunning=!1}}connect(e){throw new yo}async connectAgent(e,t){try{this.isRunning=!0,this.agentId=this.agentId??mo();let n=this.prepareRunAgentInput(e),r,i=new Set(this.messages.map(e=>e.id)),a=[{onRunStartedEvent:({event:e})=>CD(e),onRunFinishedEvent:e=>{e.outcome===`success`&&(r=e.result)}},...this.subscribers,t??{}];await this.onInitialize(n,a),this.activeRunDetach$=new tc;let o;this.activeRunCompletionPromise=new Promise(e=>{o=e}),await Bc(Ws(()=>Gc(()=>this.connect(n)),e=>NE(this.debugLogger)(eD()(e)),bE(this.debugLogger),qT(this.debugLogger),e=>e.pipe(Qc(this.activeRunDetach$)),e=>this.apply(n,e,a),e=>this.processApplyEvents(n,e,a),qc(e=>(this.isRunning=!1,e instanceof yo?ac:this.onError(n,e,a))),Xc(()=>{this.isRunning=!1,this.onFinalize(n,a),o?.(),o=void 0,this.activeRunCompletionPromise=void 0,this.activeRunDetach$=void 0}))(Rc(null)),{defaultValue:void 0});let s=$(this.messages).filter(e=>!i.has(e.id));return{result:r,newMessages:s}}finally{this.isRunning=!1}}abortRun(){}async detachActiveRun(){if(!this.activeRunDetach$)return;let e=this.activeRunCompletionPromise??Promise.resolve();this.activeRunDetach$.next(),this.activeRunDetach$?.complete(),await e}apply(e,t,n){return KT(e,t,this,n,this.debugLogger)}processApplyEvents(e,t,n){return t.pipe($c(t=>{t.messages&&(this.messages=t.messages,n.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),t.state!==void 0&&(this.state=t.state,n.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})}))}))}prepareRunAgentInput(e){let t=$(this.messages);for(let e of t)e.subagentRunId===null&&delete e.subagentRunId;let n=t.filter(e=>e.role!==`activity`);return{threadId:this.threadId,runId:e?.runId||mo(),...eC(this.maxProtocolVersion,yD)>=0&&{protocolVersion:`1.0`},tools:$(e?.tools??[]),context:$(e?.context??[]),forwardedProps:$(e?.forwardedProps??{}),state:$(this.state),messages:n,...e?.resume===void 0?{}:{resume:$(e.resume)}}}async onInitialize(e,t){if(xD.has(e)&&this.pendingInterrupts.length>0){let t=new Set((e.resume??[]).map(e=>e.interruptId)),n=this.pendingInterrupts.map(e=>e.id).filter(e=>!t.has(e));if(n.length>0)throw new A(`Thread has ${n.length} pending interrupt(s) not addressed by resume: ${n.join(`, `)}`);for(let t of this.pendingInterrupts)if(tD(t)&&(e.resume??[]).find(e=>e.interruptId===t.id)?.status!==`cancelled`)throw new A(`Interrupt ${t.id} expired at ${t.expiresAt} and can no longer be answered. Cancel it to continue the thread.`)}let n=await zT(t,this.messages,this.state,(t,n,r)=>t.onRunInitialized?.({messages:n,state:r,agent:this,input:e}));if(n.messages!==void 0||n.state!==void 0){if(n.messages){this.messages=n.messages;for(let e of n.messages)e.subagentRunId===null&&delete e.subagentRunId;e.messages=n.messages.filter(e=>e.role!==`activity`),t.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})}n.state!==void 0&&(this.state=n.state,e.state=n.state,t.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})}))}}onError(e,t,n){return Lc(zT(n,this.messages,this.state,(n,r,i)=>n.onRunFailed?.({error:t,messages:r,state:i,agent:this,input:e}))).pipe(Vc(r=>{let i=r;if((i.messages!==void 0||i.state!==void 0)&&(i.messages!==void 0&&(this.messages=i.messages,n.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),i.state!==void 0&&(this.state=i.state,n.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})}))),i.stopPropagation!==!0){let e=String(t);if(t.name!==`AbortError`&&t.message!==`Fetch is aborted`&&t.message!==`signal is aborted without reason`&&t.message!==`component unmounted`&&e!==`component unmounted`)throw console.error(`Agent execution failed:`,t),t}return{}}))}async onFinalize(e,t){let n=await zT(t,this.messages,this.state,(t,n,r)=>t.onRunFinalized?.({messages:n,state:r,agent:this,input:e}));(n.messages!==void 0||n.state!==void 0)&&(n.messages!==void 0&&(this.messages=n.messages,t.forEach(t=>{t.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this,input:e})})),n.state!==void 0&&(this.state=n.state,t.forEach(t=>{t.onStateChanged?.({state:this.state,messages:this.messages,agent:this,input:e})})))}clone(){let e=Object.create(Object.getPrototypeOf(this));return e.agentId=this.agentId,e.description=this.description,e.threadId=this.threadId,e.messages=$(this.messages),e.state=$(this.state),e._debug=this._debug,e._debugLogger=this._debugLogger,e.isRunning=this.isRunning,e.subscribers=[...this.subscribers],e.middlewares=[...this.middlewares],e.pendingInterrupts=$(this.pendingInterrupts),e}addMessage(e){this.messages.push(e),(async()=>{for(let t of this.subscribers)await t.onNewMessage?.({message:e,messages:this.messages,state:this.state,agent:this});if(e.role===`assistant`&&e.toolCalls)for(let t of e.toolCalls)for(let e of this.subscribers)await e.onNewToolCall?.({toolCall:t,messages:this.messages,state:this.state,agent:this});for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}addMessages(e){this.messages.push(...e),(async()=>{for(let t of e){for(let e of this.subscribers)await e.onNewMessage?.({message:t,messages:this.messages,state:this.state,agent:this});if(t.role===`assistant`&&t.toolCalls)for(let e of t.toolCalls)for(let t of this.subscribers)await t.onNewToolCall?.({toolCall:e,messages:this.messages,state:this.state,agent:this})}for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}setMessages(e){this.messages=$(e),(async()=>{for(let e of this.subscribers)await e.onMessagesChanged?.({messages:this.messages,state:this.state,agent:this})})()}setState(e){this.state=$(e),(async()=>{for(let e of this.subscribers)await e.onStateChanged?.({messages:this.messages,state:this.state,agent:this})})()}legacy_to_be_removed_runAgentBridged(e){this.agentId=this.agentId??mo();let t=this.prepareRunAgentInput(e);return[...this.middlewares,new $E].reduceRight((e,t)=>({run:n=>t.run(n,e),get messages(){return e.messages},get state(){return e.state}}),this).run(t).pipe(NE(this.debugLogger),bE(this.debugLogger),qT(this.debugLogger),oE(this.threadId,t.runId,this.agentId),e=>e.pipe(Vc(e=>(this.debugLogger?.event(`LEGACY`,`Event:`,e,{type:e.type}),e))))}};function TD(e){if(!Array.isArray(e.messages))return e;let t=!1,n=e.messages.map(e=>{if(e.subagentRunId===null){t=!0;let n={...e};return delete n.subagentRunId,n}return e});return t?{...e,messages:n}:e}var ED=class extends wD{requestInit(e){return{method:`POST`,headers:{...this.headers,"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify(TD(e)),signal:this.abortController.signal}}runAgent(e,t){return this.abortController=e?.abortController??new AbortController,super.runAgent(e,t)}abortRun(){this.abortController.abort(),super.abortRun()}constructor(e){super(e),this.abortController=new AbortController,this.url=e.url,this.headers=$(e.headers??{}),this.fetch=e.fetch??((e,t)=>fetch(e,t))}run(e){return tE(YT(()=>this.fetch(this.url,this.requestInit(PE(e)))),this.debugLogger)}clone(){let e=super.clone();e.url=this.url,e.headers=$(this.headers??{}),e.fetch=this.fetch;let t=new AbortController,n=this.abortController.signal;return n.aborted&&t.abort(n.reason),e.abortController=t,e}},DD=class extends Jt{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){e._type=`infinite`,super.setOptions(e)}getOptimisticResult(e){return e._type=`infinite`,super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`forward`}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`backward`}}})}createResult(e,t){let{state:n}=e,r=super.createResult(e,t),{isFetching:i,isRefetching:a,isError:o,isRefetchError:s}=r,c=n.fetchMeta?.fetchMore?.direction,l=o&&c===`forward`,u=i&&c===`forward`,d=o&&c===`backward`,f=i&&c===`backward`;return{...r,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:cn(t,n.data),hasPreviousPage:Xt(t,n.data),isFetchNextPageError:l,isFetchingNextPage:u,isFetchPreviousPageError:d,isFetchingPreviousPage:f,isRefetchError:s&&!l&&!d,isRefetching:a&&!u&&!f}}},OD=class extends Qt{#e;#t;#n;constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}build(e,t,n){let r=new sn({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=kD(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=kD(e);if(typeof t==`string`){let n=this.#t.get(t);if(n){if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=kD(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}return!0}runNext(e){let t=kD(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){un.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>$t(t,e))}findAll(e={}){return this.getAll().filter(t=>$t(e,t))}notify(e){un.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return un.batch(()=>Promise.all(e.map(e=>e.continue().catch(dn))))}};function kD(e){return e.options.scope?.id}var AD=class extends Qt{#e;constructor(e={}){super(),this.config=e,this.#e=new Map}build(e,t,n){let r=t.queryKey,i=t.queryHash??en(r,t),a=this.get(i);return a||(a=new an({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){this.#e.get(e.queryHash)===e&&(e.destroy(),this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){un.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>qt(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>qt(e,t)):t}notify(e){un.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){un.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){un.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},jD=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new AD,this.#t=e.mutationCache||new OD,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=Zt.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=tn.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return this.#t.findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(Yt(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(r.queryHash)?.state.data,a=on(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return un.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;un.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return un.batch(()=>{let r=n.findAll(e),i=new Set(r);return r.forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,predicate:e=>i.has(e)},t)})}cancelQueries(e,t={}){let n={revert:!0,...t},r=un.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(dn).catch(dn)}invalidateQueries(e,t={}){return un.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=un.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(dn)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(dn)}async query(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t),r=n.isStaleByTime(Yt(t.staleTime,n))?await n.fetch(t):n.state.data,i=t.select;return i?i(r):r}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t);return n.isStaleByTime(Yt(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(dn).catch(dn)}infiniteQuery(e){return e._type=`infinite`,this.query(e)}fetchInfiniteQuery(e){return e._type=`infinite`,this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(dn).catch(dn)}ensureInfiniteQueryData(e){return e._type=`infinite`,this.ensureQueryData(e)}resumePausedMutations(){return tn.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#r.set(nn(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{pn(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(nn(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{pn(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||=en(t.queryKey,t),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===Ht&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}};function MD(e,t){return rn(e,DD,t)}var ND=new Map([[`bold`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M232,44H160a43.86,43.86,0,0,0-32,13.85A43.86,43.86,0,0,0,96,44H24A12,12,0,0,0,12,56V200a12,12,0,0,0,12,12H96a20,20,0,0,1,20,20,12,12,0,0,0,24,0,20,20,0,0,1,20-20h72a12,12,0,0,0,12-12V56A12,12,0,0,0,232,44ZM96,188H36V68H96a20,20,0,0,1,20,20V192.81A43.79,43.79,0,0,0,96,188Zm124,0H160a43.71,43.71,0,0,0-20,4.83V88a20,20,0,0,1,20-20h60Z`}))],[`duotone`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M232,56V200H160a32,32,0,0,0-32,32,32,32,0,0,0-32-32H24V56H96a32,32,0,0,1,32,32,32,32,0,0,1,32-32Z`,opacity:`0.2`}),E.createElement(`path`,{d:`M232,48H160a40,40,0,0,0-32,16A40,40,0,0,0,96,48H24a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H96a24,24,0,0,1,24,24,8,8,0,0,0,16,0,24,24,0,0,1,24-24h72a8,8,0,0,0,8-8V56A8,8,0,0,0,232,48ZM96,192H32V64H96a24,24,0,0,1,24,24V200A39.81,39.81,0,0,0,96,192Zm128,0H160a39.81,39.81,0,0,0-24,8V88a24,24,0,0,1,24-24h64Z`}))],[`fill`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M240,56V200a8,8,0,0,1-8,8H160a24,24,0,0,0-24,23.94,7.9,7.9,0,0,1-5.12,7.55A8,8,0,0,1,120,232a24,24,0,0,0-24-24H24a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8H88a32,32,0,0,1,32,32v87.73a8.17,8.17,0,0,0,7.47,8.25,8,8,0,0,0,8.53-8V80a32,32,0,0,1,32-32h64A8,8,0,0,1,240,56Z`}))],[`light`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M232,50H160a38,38,0,0,0-32,17.55A38,38,0,0,0,96,50H24a6,6,0,0,0-6,6V200a6,6,0,0,0,6,6H96a26,26,0,0,1,26,26,6,6,0,0,0,12,0,26,26,0,0,1,26-26h72a6,6,0,0,0,6-6V56A6,6,0,0,0,232,50ZM96,194H30V62H96a26,26,0,0,1,26,26V204.31A37.86,37.86,0,0,0,96,194Zm130,0H160a37.87,37.87,0,0,0-26,10.32V88a26,26,0,0,1,26-26h66Z`}))],[`regular`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M232,48H160a40,40,0,0,0-32,16A40,40,0,0,0,96,48H24a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H96a24,24,0,0,1,24,24,8,8,0,0,0,16,0,24,24,0,0,1,24-24h72a8,8,0,0,0,8-8V56A8,8,0,0,0,232,48ZM96,192H32V64H96a24,24,0,0,1,24,24V200A39.81,39.81,0,0,0,96,192Zm128,0H160a39.81,39.81,0,0,0-24,8V88a24,24,0,0,1,24-24h64Z`}))],[`thin`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M232,52H160a36,36,0,0,0-32,19.54A36,36,0,0,0,96,52H24a4,4,0,0,0-4,4V200a4,4,0,0,0,4,4H96a28,28,0,0,1,28,28,4,4,0,0,0,8,0,28,28,0,0,1,28-28h72a4,4,0,0,0,4-4V56A4,4,0,0,0,232,52ZM96,196H28V60H96a28,28,0,0,1,28,28V209.4A35.93,35.93,0,0,0,96,196Zm132,0H160a35.94,35.94,0,0,0-28,13.41V88a28,28,0,0,1,28-28h68Z`}))]]),PD=new Map([[`bold`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M232.49,215.51,185,168a92.12,92.12,0,1,0-17,17l47.53,47.54a12,12,0,0,0,17-17ZM44,112a68,68,0,1,1,68,68A68.07,68.07,0,0,1,44,112Z`}))],[`duotone`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M192,112a80,80,0,1,1-80-80A80,80,0,0,1,192,112Z`,opacity:`0.2`}),E.createElement(`path`,{d:`M229.66,218.34,179.6,168.28a88.21,88.21,0,1,0-11.32,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z`}))],[`fill`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M168,112a56,56,0,1,1-56-56A56,56,0,0,1,168,112Zm61.66,117.66a8,8,0,0,1-11.32,0l-50.06-50.07a88,88,0,1,1,11.32-11.31l50.06,50.06A8,8,0,0,1,229.66,229.66ZM112,184a72,72,0,1,0-72-72A72.08,72.08,0,0,0,112,184Z`}))],[`light`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M228.24,219.76l-51.38-51.38a86.15,86.15,0,1,0-8.48,8.48l51.38,51.38a6,6,0,0,0,8.48-8.48ZM38,112a74,74,0,1,1,74,74A74.09,74.09,0,0,1,38,112Z`}))],[`regular`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z`}))],[`thin`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M226.83,221.17l-52.7-52.7a84.1,84.1,0,1,0-5.66,5.66l52.7,52.7a4,4,0,0,0,5.66-5.66ZM36,112a76,76,0,1,1,76,76A76.08,76.08,0,0,1,36,112Z`}))]]),FD=new Map([[`bold`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M236.37,139.4a12,12,0,0,0-12-3A84.07,84.07,0,0,1,119.6,31.59a12,12,0,0,0-15-15A108.86,108.86,0,0,0,49.69,55.07,108,108,0,0,0,136,228a107.09,107.09,0,0,0,64.93-21.69,108.86,108.86,0,0,0,38.44-54.94A12,12,0,0,0,236.37,139.4Zm-49.88,47.74A84,84,0,0,1,68.86,69.51,84.93,84.93,0,0,1,92.27,48.29Q92,52.13,92,56A108.12,108.12,0,0,0,200,164q3.87,0,7.71-.27A84.79,84.79,0,0,1,186.49,187.14Z`}))],[`duotone`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M227.89,147.89A96,96,0,1,1,108.11,28.11,96.09,96.09,0,0,0,227.89,147.89Z`,opacity:`0.2`}),E.createElement(`path`,{d:`M233.54,142.23a8,8,0,0,0-8-2,88.08,88.08,0,0,1-109.8-109.8,8,8,0,0,0-10-10,104.84,104.84,0,0,0-52.91,37A104,104,0,0,0,136,224a103.09,103.09,0,0,0,62.52-20.88,104.84,104.84,0,0,0,37-52.91A8,8,0,0,0,233.54,142.23ZM188.9,190.34A88,88,0,0,1,65.66,67.11a89,89,0,0,1,31.4-26A106,106,0,0,0,96,56,104.11,104.11,0,0,0,200,160a106,106,0,0,0,14.92-1.06A89,89,0,0,1,188.9,190.34Z`}))],[`fill`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M235.54,150.21a104.84,104.84,0,0,1-37,52.91A104,104,0,0,1,32,120,103.09,103.09,0,0,1,52.88,57.48a104.84,104.84,0,0,1,52.91-37,8,8,0,0,1,10,10,88.08,88.08,0,0,0,109.8,109.8,8,8,0,0,1,10,10Z`}))],[`light`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M232.13,143.64a6,6,0,0,0-6-1.49A90.07,90.07,0,0,1,113.86,29.85a6,6,0,0,0-7.49-7.48A102.88,102.88,0,0,0,54.48,58.68,102,102,0,0,0,197.32,201.52a102.88,102.88,0,0,0,36.31-51.89A6,6,0,0,0,232.13,143.64Zm-42,48.29a90,90,0,0,1-126-126A90.9,90.9,0,0,1,99.65,37.66,102.06,102.06,0,0,0,218.34,156.35,90.9,90.9,0,0,1,190.1,191.93Z`}))],[`regular`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M233.54,142.23a8,8,0,0,0-8-2,88.08,88.08,0,0,1-109.8-109.8,8,8,0,0,0-10-10,104.84,104.84,0,0,0-52.91,37A104,104,0,0,0,136,224a103.09,103.09,0,0,0,62.52-20.88,104.84,104.84,0,0,0,37-52.91A8,8,0,0,0,233.54,142.23ZM188.9,190.34A88,88,0,0,1,65.66,67.11a89,89,0,0,1,31.4-26A106,106,0,0,0,96,56,104.11,104.11,0,0,0,200,160a106,106,0,0,0,14.92-1.06A89,89,0,0,1,188.9,190.34Z`}))],[`thin`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M230.72,145.06a4,4,0,0,0-4-1A92.08,92.08,0,0,1,111.94,29.27a4,4,0,0,0-5-5A100.78,100.78,0,0,0,56.08,59.88a100,100,0,0,0,140,140,100.78,100.78,0,0,0,35.59-50.87A4,4,0,0,0,230.72,145.06ZM191.3,193.53A92,92,0,0,1,62.47,64.7a93,93,0,0,1,39.88-30.35,100.09,100.09,0,0,0,119.3,119.3A93,93,0,0,1,191.3,193.53Z`}))]]),ID=new Map([[`bold`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M240.49,15.51a12,12,0,0,0-17,0L173.94,65.09l-2.54-2.55a36.05,36.05,0,0,0-50.91,0L100,83l-3.51-3.52a12,12,0,0,0-17,17L83,100,62.54,120.49a36,36,0,0,0,0,50.91l2.55,2.54L15.51,223.51a12,12,0,0,0,17,17l49.57-49.58,2.54,2.55a36.06,36.06,0,0,0,50.91,0L156,173l3.51,3.52a12,12,0,0,0,17-17L173,156l20.49-20.49a36,36,0,0,0,0-50.91l-2.55-2.54,49.58-49.57A12,12,0,0,0,240.49,15.51Zm-121.95,161a12,12,0,0,1-17,0L79.51,154.43a12,12,0,0,1,0-17L100,117l39,39Zm58-57.95h0L156,139l-39-39,20.49-20.49a12,12,0,0,1,17,0l22.06,22.06a12,12,0,0,1,0,17ZM85.27,33.37a12,12,0,0,1,21.46-10.74l8,16A12,12,0,1,1,93.27,49.37Zm-68,57.26a12,12,0,0,1,16.1-5.36l16,8a12,12,0,1,1-10.74,21.46l-16-8A12,12,0,0,1,17.27,90.63Zm221.46,74.74a12,12,0,0,1-16.1,5.36l-16-8a12,12,0,0,1,10.74-21.46l16,8A12,12,0,0,1,238.73,165.37Zm-68,57.26a12,12,0,1,1-21.46,10.74l-8-16a12,12,0,0,1,21.46-10.74Z`}))],[`duotone`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M185,127,127,185a24,24,0,0,1-33.94,0L71,162.91A24,24,0,0,1,71,129L129,71a24,24,0,0,1,33.94,0L185,93.09A24,24,0,0,1,185,127Z`,opacity:`0.2`}),E.createElement(`path`,{d:`M237.66,18.34a8,8,0,0,0-11.32,0l-52.4,52.41-5.37-5.38a32.05,32.05,0,0,0-45.26,0L100,88.69l-6.34-6.35A8,8,0,0,0,82.34,93.66L88.69,100,65.37,123.31a32,32,0,0,0,0,45.26l5.38,5.37-52.41,52.4a8,8,0,0,0,11.32,11.32l52.4-52.41,5.37,5.38a32.06,32.06,0,0,0,45.26,0L156,167.31l6.34,6.35a8,8,0,0,0,11.32-11.32L167.31,156l23.32-23.31a32,32,0,0,0,0-45.26l-5.38-5.37,52.41-52.4A8,8,0,0,0,237.66,18.34Zm-116.29,161a16,16,0,0,1-22.62,0L76.69,157.25a16,16,0,0,1,0-22.62L100,111.31,144.69,156Zm57.94-57.94h0L156,144.69,111.31,100l23.32-23.31a16,16,0,0,1,22.62,0l22.06,22a16,16,0,0,1,0,22.63ZM88.57,35A8,8,0,0,1,103.43,29l8,20A8,8,0,0,1,96.57,55ZM24.57,93A8,8,0,0,1,35,88.57l20,8A8,8,0,0,1,49,111.43l-20-8A8,8,0,0,1,24.57,93ZM231.43,163a8,8,0,0,1-10.4,4.46l-20-8A8,8,0,1,1,207,144.57l20,8A8,8,0,0,1,231.43,163Zm-64,58.06A8,8,0,0,1,152.57,227l-8-20A8,8,0,0,1,159.43,201Z`}))],[`fill`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M88.57,35A8,8,0,0,1,103.43,29l8,20A8,8,0,0,1,96.57,55ZM29,103.43l20,8A8,8,0,1,0,55,96.57l-20-8A8,8,0,0,0,29,103.43ZM227,152.57l-20-8A8,8,0,1,0,201,159.43l20,8A8,8,0,0,0,227,152.57ZM159.43,201A8,8,0,0,0,144.57,207l8,20A8,8,0,1,0,167.43,221ZM237.91,18.52a8,8,0,0,0-11.5-.18L174,70.75l-5.38-5.38a32,32,0,0,0-45.28,0L106.14,82.54a4,4,0,0,0,0,5.66l61.7,61.66a4,4,0,0,0,5.66,0l16.74-16.74a32.76,32.76,0,0,0,9.81-22.52,31.82,31.82,0,0,0-9.37-23.17l-5.38-5.37,52.2-52.17A8.22,8.22,0,0,0,237.91,18.52ZM85.64,90.34a8,8,0,0,0-11.49.18,8.22,8.22,0,0,0,.41,11.37L80.67,108,65.34,123.31A31.82,31.82,0,0,0,56,146.47,32.75,32.75,0,0,0,65.77,169l5,4.94L18.49,226.13a8.21,8.21,0,0,0-.61,11.1,8,8,0,0,0,11.72.43L82,185.25l5.37,5.38a32.1,32.1,0,0,0,45.29,0L148,175.31l6.34,6.35a8,8,0,0,0,11.32-11.32Z`}))],[`light`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M236.24,19.76a6,6,0,0,0-8.48,0L173.94,73.57l-6.79-6.78a30,30,0,0,0-42.42,0L100,91.51l-7.76-7.75a6,6,0,0,0-8.48,8.48L91.51,100,66.79,124.73a30,30,0,0,0,0,42.42l6.78,6.79L19.76,227.76a6,6,0,1,0,8.48,8.48l53.82-53.81,6.79,6.78a30,30,0,0,0,42.42,0L156,164.49l7.76,7.75a6,6,0,0,0,8.48-8.48L164.49,156l24.72-24.73a30,30,0,0,0,0-42.42l-6.78-6.79,53.81-53.82A6,6,0,0,0,236.24,19.76Zm-113.45,161a18,18,0,0,1-25.46,0L75.27,158.67a18,18,0,0,1,0-25.46L100,108.49,147.51,156Zm57.94-57.94L156,147.51,108.49,100l24.72-24.73a18,18,0,0,1,25.46,0l22.06,22.06a18,18,0,0,1,0,25.46ZM90.43,34.23a6,6,0,0,1,11.14-4.46l8,20a6,6,0,1,1-11.14,4.46Zm-64,59.54a6,6,0,0,1,7.8-3.34l20,8a6,6,0,1,1-4.46,11.14l-20-8A6,6,0,0,1,26.43,93.77Zm203.14,68.46a6,6,0,0,1-7.8,3.34l-20-8a6,6,0,0,1,4.46-11.14l20,8A6,6,0,0,1,229.57,162.23Zm-64,59.54a6,6,0,1,1-11.14,4.46l-8-20a6,6,0,0,1,11.14-4.46Z`}))],[`regular`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M237.66,18.34a8,8,0,0,0-11.32,0l-52.4,52.41-5.37-5.38a32.05,32.05,0,0,0-45.26,0L100,88.69l-6.34-6.35A8,8,0,0,0,82.34,93.66L88.69,100,65.37,123.31a32,32,0,0,0,0,45.26l5.38,5.37-52.41,52.4a8,8,0,0,0,11.32,11.32l52.4-52.41,5.37,5.38a32,32,0,0,0,45.26,0L156,167.31l6.34,6.35a8,8,0,0,0,11.32-11.32L167.31,156l23.32-23.31a32,32,0,0,0,0-45.26l-5.38-5.37,52.41-52.4A8,8,0,0,0,237.66,18.34Zm-116.29,161a16,16,0,0,1-22.62,0L76.69,157.25a16,16,0,0,1,0-22.62L100,111.31,144.69,156Zm57.94-57.94L156,144.69,111.31,100l23.32-23.31a16,16,0,0,1,22.62,0l22.06,22A16,16,0,0,1,179.31,121.37ZM88.57,35A8,8,0,0,1,103.43,29l8,20A8,8,0,0,1,96.57,55ZM24.57,93A8,8,0,0,1,35,88.57l20,8A8,8,0,0,1,49,111.43l-20-8A8,8,0,0,1,24.57,93ZM231.43,163a8,8,0,0,1-10.4,4.46l-20-8A8,8,0,1,1,207,144.57l20,8A8,8,0,0,1,231.43,163Zm-64,58.06A8,8,0,0,1,152.57,227l-8-20A8,8,0,0,1,159.43,201Z`}))],[`thin`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M234.83,21.17a4,4,0,0,0-5.66,0L173.94,76.4l-8.2-8.2a28,28,0,0,0-39.6,0L100,94.34l-9.17-9.17a4,4,0,0,0-5.66,5.66L94.34,100,68.2,126.14a28,28,0,0,0,0,39.6l8.2,8.2L21.17,229.17a4,4,0,0,0,5.66,5.66L82.06,179.6l8.2,8.2a28,28,0,0,0,39.6,0L156,161.66l9.17,9.17a4,4,0,0,0,5.66-5.66L161.66,156l26.14-26.14a28,28,0,0,0,0-39.6l-8.2-8.2,55.23-55.23A4,4,0,0,0,234.83,21.17Zm-110.63,161a20,20,0,0,1-28.28,0L73.86,160.08a20,20,0,0,1,0-28.28L100,105.66,150.34,156Zm57.94-57.94L156,150.34,105.66,100,131.8,73.86a20,20,0,0,1,28.28,0l22.06,22.06A20,20,0,0,1,182.14,124.2ZM92.29,33.49a4,4,0,1,1,7.42-3l8,20a4,4,0,0,1-2.22,5.2A3.91,3.91,0,0,1,104,56a4,4,0,0,1-3.71-2.51Zm-64,61a4,4,0,0,1,5.2-2.22l20,8A4,4,0,0,1,52,108a3.91,3.91,0,0,1-1.49-.29l-20-8A4,4,0,0,1,28.29,94.51Zm199.42,67A4,4,0,0,1,224,164a3.91,3.91,0,0,1-1.49-.29l-20-8a4,4,0,1,1,3-7.42l20,8A4,4,0,0,1,227.71,161.49Zm-64,61a4,4,0,0,1-2.22,5.2A3.91,3.91,0,0,1,160,228a4,4,0,0,1-3.71-2.51l-8-20a4,4,0,0,1,7.42-3Z`}))]]),LD=new Map([[`bold`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M228,128a12,12,0,0,1-12,12H140v76a12,12,0,0,1-24,0V140H40a12,12,0,0,1,0-24h76V40a12,12,0,0,1,24,0v76h76A12,12,0,0,1,228,128Z`}))],[`duotone`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z`,opacity:`0.2`}),E.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z`}))],[`fill`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM184,136H136v48a8,8,0,0,1-16,0V136H72a8,8,0,0,1,0-16h48V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z`}))],[`light`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M222,128a6,6,0,0,1-6,6H134v82a6,6,0,0,1-12,0V134H40a6,6,0,0,1,0-12h82V40a6,6,0,0,1,12,0v82h82A6,6,0,0,1,222,128Z`}))],[`regular`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z`}))],[`thin`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M220,128a4,4,0,0,1-4,4H132v84a4,4,0,0,1-8,0V132H40a4,4,0,0,1,0-8h84V40a4,4,0,0,1,8,0v84h84A4,4,0,0,1,220,128Z`}))]]),RD=new Map([[`bold`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M124,216a12,12,0,0,1-12,12H48a12,12,0,0,1-12-12V40A12,12,0,0,1,48,28h64a12,12,0,0,1,0,24H60V204h52A12,12,0,0,1,124,216Zm108.49-96.49-40-40a12,12,0,0,0-17,17L195,116H112a12,12,0,0,0,0,24h83l-19.52,19.51a12,12,0,0,0,17,17l40-40A12,12,0,0,0,232.49,119.51Z`}))],[`duotone`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M224,56V200a16,16,0,0,1-16,16H48V40H208A16,16,0,0,1,224,56Z`,opacity:`0.2`}),E.createElement(`path`,{d:`M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40a8,8,0,0,0-11.32,11.32L204.69,120H112a8,8,0,0,0,0,16h92.69l-26.35,26.34a8,8,0,0,0,11.32,11.32l40-40A8,8,0,0,0,229.66,122.34Z`}))],[`fill`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40A8,8,0,0,0,176,88v32H112a8,8,0,0,0,0,16h64v32a8,8,0,0,0,13.66,5.66l40-40A8,8,0,0,0,229.66,122.34Z`}))],[`light`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M118,216a6,6,0,0,1-6,6H48a6,6,0,0,1-6-6V40a6,6,0,0,1,6-6h64a6,6,0,0,1,0,12H54V210h58A6,6,0,0,1,118,216Zm110.24-92.24-40-40a6,6,0,0,0-8.48,8.48L209.51,122H112a6,6,0,0,0,0,12h97.51l-29.75,29.76a6,6,0,1,0,8.48,8.48l40-40A6,6,0,0,0,228.24,123.76Z`}))],[`regular`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40a8,8,0,0,0-11.32,11.32L204.69,120H112a8,8,0,0,0,0,16h92.69l-26.35,26.34a8,8,0,0,0,11.32,11.32l40-40A8,8,0,0,0,229.66,122.34Z`}))],[`thin`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M116,216a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V40a4,4,0,0,1,4-4h64a4,4,0,0,1,0,8H52V212h60A4,4,0,0,1,116,216Zm110.83-90.83-40-40a4,4,0,0,0-5.66,5.66L214.34,124H112a4,4,0,0,0,0,8H214.34l-33.17,33.17a4,4,0,0,0,5.66,5.66l40-40A4,4,0,0,0,226.83,125.17Z`}))]]),zD=new Map([[`bold`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M199,125.31l-49.88-18.39L130.69,57a19.92,19.92,0,0,0-37.38,0L74.92,106.92,25,125.31a19.92,19.92,0,0,0,0,37.38l49.88,18.39L93.31,231a19.92,19.92,0,0,0,37.38,0l18.39-49.88L199,162.69a19.92,19.92,0,0,0,0-37.38Zm-63.38,35.16a12,12,0,0,0-7.11,7.11L112,212.28l-16.47-44.7a12,12,0,0,0-7.11-7.11L43.72,144l44.7-16.47a12,12,0,0,0,7.11-7.11L112,75.72l16.47,44.7a12,12,0,0,0,7.11,7.11L180.28,144ZM140,40a12,12,0,0,1,12-12h12V16a12,12,0,0,1,24,0V28h12a12,12,0,0,1,0,24H188V64a12,12,0,0,1-24,0V52H152A12,12,0,0,1,140,40ZM252,88a12,12,0,0,1-12,12h-4v4a12,12,0,0,1-24,0v-4h-4a12,12,0,0,1,0-24h4V72a12,12,0,0,1,24,0v4h4A12,12,0,0,1,252,88Z`}))],[`duotone`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M194.82,151.43l-55.09,20.3-20.3,55.09a7.92,7.92,0,0,1-14.86,0l-20.3-55.09-55.09-20.3a7.92,7.92,0,0,1,0-14.86l55.09-20.3,20.3-55.09a7.92,7.92,0,0,1,14.86,0l20.3,55.09,55.09,20.3A7.92,7.92,0,0,1,194.82,151.43Z`,opacity:`0.2`}),E.createElement(`path`,{d:`M197.58,129.06,146,110l-19-51.62a15.92,15.92,0,0,0-29.88,0L78,110l-51.62,19a15.92,15.92,0,0,0,0,29.88L78,178l19,51.62a15.92,15.92,0,0,0,29.88,0L146,178l51.62-19a15.92,15.92,0,0,0,0-29.88ZM137,164.22a8,8,0,0,0-4.74,4.74L112,223.85,91.78,169A8,8,0,0,0,87,164.22L32.15,144,87,123.78A8,8,0,0,0,91.78,119L112,64.15,132.22,119a8,8,0,0,0,4.74,4.74L191.85,144ZM144,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H184V64a8,8,0,0,1-16,0V48H152A8,8,0,0,1,144,40ZM248,88a8,8,0,0,1-8,8h-8v8a8,8,0,0,1-16,0V96h-8a8,8,0,0,1,0-16h8V72a8,8,0,0,1,16,0v8h8A8,8,0,0,1,248,88Z`}))],[`fill`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M208,144a15.78,15.78,0,0,1-10.42,14.94L146,178l-19,51.62a15.92,15.92,0,0,1-29.88,0L78,178l-51.62-19a15.92,15.92,0,0,1,0-29.88L78,110l19-51.62a15.92,15.92,0,0,1,29.88,0L146,110l51.62,19A15.78,15.78,0,0,1,208,144ZM152,48h16V64a8,8,0,0,0,16,0V48h16a8,8,0,0,0,0-16H184V16a8,8,0,0,0-16,0V32H152a8,8,0,0,0,0,16Zm88,32h-8V72a8,8,0,0,0-16,0v8h-8a8,8,0,0,0,0,16h8v8a8,8,0,0,0,16,0V96h8a8,8,0,0,0,0-16Z`}))],[`light`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M196.89,130.94,144.4,111.6,125.06,59.11a13.92,13.92,0,0,0-26.12,0L79.6,111.6,27.11,130.94a13.92,13.92,0,0,0,0,26.12L79.6,176.4l19.34,52.49a13.92,13.92,0,0,0,26.12,0L144.4,176.4l52.49-19.34a13.92,13.92,0,0,0,0-26.12Zm-4.15,14.86-55.08,20.3a6,6,0,0,0-3.56,3.56l-20.3,55.08a1.92,1.92,0,0,1-3.6,0L89.9,169.66a6,6,0,0,0-3.56-3.56L31.26,145.8a1.92,1.92,0,0,1,0-3.6l55.08-20.3a6,6,0,0,0,3.56-3.56l20.3-55.08a1.92,1.92,0,0,1,3.6,0l20.3,55.08a6,6,0,0,0,3.56,3.56l55.08,20.3a1.92,1.92,0,0,1,0,3.6ZM146,40a6,6,0,0,1,6-6h18V16a6,6,0,0,1,12,0V34h18a6,6,0,0,1,0,12H182V64a6,6,0,0,1-12,0V46H152A6,6,0,0,1,146,40ZM246,88a6,6,0,0,1-6,6H230v10a6,6,0,0,1-12,0V94H208a6,6,0,0,1,0-12h10V72a6,6,0,0,1,12,0V82h10A6,6,0,0,1,246,88Z`}))],[`regular`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M197.58,129.06,146,110l-19-51.62a15.92,15.92,0,0,0-29.88,0L78,110l-51.62,19a15.92,15.92,0,0,0,0,29.88L78,178l19,51.62a15.92,15.92,0,0,0,29.88,0L146,178l51.62-19a15.92,15.92,0,0,0,0-29.88ZM137,164.22a8,8,0,0,0-4.74,4.74L112,223.85,91.78,169A8,8,0,0,0,87,164.22L32.15,144,87,123.78A8,8,0,0,0,91.78,119L112,64.15,132.22,119a8,8,0,0,0,4.74,4.74L191.85,144ZM144,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H184V64a8,8,0,0,1-16,0V48H152A8,8,0,0,1,144,40ZM248,88a8,8,0,0,1-8,8h-8v8a8,8,0,0,1-16,0V96h-8a8,8,0,0,1,0-16h8V72a8,8,0,0,1,16,0v8h8A8,8,0,0,1,248,88Z`}))],[`thin`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M196.2,132.81l-53.36-19.65L123.19,59.8a11.93,11.93,0,0,0-22.38,0L81.16,113.16,27.8,132.81a11.93,11.93,0,0,0,0,22.38l53.36,19.65,19.65,53.36a11.93,11.93,0,0,0,22.38,0l19.65-53.36,53.36-19.65a11.93,11.93,0,0,0,0-22.38Zm-2.77,14.87L138.35,168a4,4,0,0,0-2.37,2.37l-20.3,55.08a3.92,3.92,0,0,1-7.36,0L88,170.35A4,4,0,0,0,85.65,168l-55.08-20.3a3.92,3.92,0,0,1,0-7.36L85.65,120A4,4,0,0,0,88,117.65l20.3-55.08a3.92,3.92,0,0,1,7.36,0L136,117.65a4,4,0,0,0,2.37,2.37l55.08,20.3a3.92,3.92,0,0,1,0,7.36ZM148,40a4,4,0,0,1,4-4h20V16a4,4,0,0,1,8,0V36h20a4,4,0,0,1,0,8H180V64a4,4,0,0,1-8,0V44H152A4,4,0,0,1,148,40Zm96,48a4,4,0,0,1-4,4H228v12a4,4,0,0,1-8,0V92H208a4,4,0,0,1,0-8h12V72a4,4,0,0,1,8,0V84h12A4,4,0,0,1,244,88Z`}))]]),BD=new Map([[`bold`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M116,36V20a12,12,0,0,1,24,0V36a12,12,0,0,1-24,0Zm80,92a68,68,0,1,1-68-68A68.07,68.07,0,0,1,196,128Zm-24,0a44,44,0,1,0-44,44A44.05,44.05,0,0,0,172,128ZM51.51,68.49a12,12,0,1,0,17-17l-12-12a12,12,0,0,0-17,17Zm0,119-12,12a12,12,0,0,0,17,17l12-12a12,12,0,1,0-17-17ZM196,72a12,12,0,0,0,8.49-3.51l12-12a12,12,0,0,0-17-17l-12,12A12,12,0,0,0,196,72Zm8.49,115.51a12,12,0,0,0-17,17l12,12a12,12,0,0,0,17-17ZM48,128a12,12,0,0,0-12-12H20a12,12,0,0,0,0,24H36A12,12,0,0,0,48,128Zm80,80a12,12,0,0,0-12,12v16a12,12,0,0,0,24,0V220A12,12,0,0,0,128,208Zm108-92H220a12,12,0,0,0,0,24h16a12,12,0,0,0,0-24Z`}))],[`duotone`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M184,128a56,56,0,1,1-56-56A56,56,0,0,1,184,128Z`,opacity:`0.2`}),E.createElement(`path`,{d:`M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm72,88a64,64,0,1,1-64-64A64.07,64.07,0,0,1,192,128Zm-16,0a48,48,0,1,0-48,48A48.05,48.05,0,0,0,176,128ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z`}))],[`fill`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm8,24a64,64,0,1,0,64,64A64.07,64.07,0,0,0,128,64ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z`}))],[`light`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M122,40V16a6,6,0,0,1,12,0V40a6,6,0,0,1-12,0Zm68,88a62,62,0,1,1-62-62A62.07,62.07,0,0,1,190,128Zm-12,0a50,50,0,1,0-50,50A50.06,50.06,0,0,0,178,128ZM59.76,68.24a6,6,0,1,0,8.48-8.48l-16-16a6,6,0,0,0-8.48,8.48Zm0,119.52-16,16a6,6,0,1,0,8.48,8.48l16-16a6,6,0,1,0-8.48-8.48ZM192,70a6,6,0,0,0,4.24-1.76l16-16a6,6,0,0,0-8.48-8.48l-16,16A6,6,0,0,0,192,70Zm4.24,117.76a6,6,0,0,0-8.48,8.48l16,16a6,6,0,0,0,8.48-8.48ZM46,128a6,6,0,0,0-6-6H16a6,6,0,0,0,0,12H40A6,6,0,0,0,46,128Zm82,82a6,6,0,0,0-6,6v24a6,6,0,0,0,12,0V216A6,6,0,0,0,128,210Zm112-88H216a6,6,0,0,0,0,12h24a6,6,0,0,0,0-12Z`}))],[`regular`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm72,88a64,64,0,1,1-64-64A64.07,64.07,0,0,1,192,128Zm-16,0a48,48,0,1,0-48,48A48.05,48.05,0,0,0,176,128ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z`}))],[`thin`,E.createElement(E.Fragment,null,E.createElement(`path`,{d:`M124,40V16a4,4,0,0,1,8,0V40a4,4,0,0,1-8,0Zm64,88a60,60,0,1,1-60-60A60.07,60.07,0,0,1,188,128Zm-8,0a52,52,0,1,0-52,52A52.06,52.06,0,0,0,180,128ZM61.17,66.83a4,4,0,0,0,5.66-5.66l-16-16a4,4,0,0,0-5.66,5.66Zm0,122.34-16,16a4,4,0,0,0,5.66,5.66l16-16a4,4,0,0,0-5.66-5.66ZM192,68a4,4,0,0,0,2.83-1.17l16-16a4,4,0,1,0-5.66-5.66l-16,16A4,4,0,0,0,192,68Zm2.83,121.17a4,4,0,0,0-5.66,5.66l16,16a4,4,0,0,0,5.66-5.66ZM40,124H16a4,4,0,0,0,0,8H40a4,4,0,0,0,0-8Zm88,88a4,4,0,0,0-4,4v24a4,4,0,0,0,8,0V216A4,4,0,0,0,128,212Zm112-88H216a4,4,0,0,0,0,8h24a4,4,0,0,0,0-8Z`}))]]),VD=E.forwardRef((e,t)=>E.createElement(x,{ref:t,...e,weights:ND}));VD.displayName=`BookOpenIcon`;var HD=VD,UD=E.forwardRef((e,t)=>E.createElement(x,{ref:t,...e,weights:PD}));UD.displayName=`MagnifyingGlassIcon`;var WD=UD,GD=E.forwardRef((e,t)=>E.createElement(x,{ref:t,...e,weights:FD}));GD.displayName=`MoonIcon`;var KD=GD,qD=E.forwardRef((e,t)=>E.createElement(x,{ref:t,...e,weights:ID}));qD.displayName=`PlugsConnectedIcon`;var JD=qD,YD=E.forwardRef((e,t)=>E.createElement(x,{ref:t,...e,weights:LD}));YD.displayName=`PlusIcon`;var XD=YD,ZD=E.forwardRef((e,t)=>E.createElement(x,{ref:t,...e,weights:RD}));ZD.displayName=`SignOutIcon`;var QD=ZD,$D=E.forwardRef((e,t)=>E.createElement(x,{ref:t,...e,weights:zD}));$D.displayName=`SparkleIcon`;var eO=$D,tO=E.forwardRef((e,t)=>E.createElement(x,{ref:t,...e,weights:BD}));tO.displayName=`SunIcon`;var nO=tO,rO=[`agent-threads`];async function iO(e){let t=await T(e);if(!t.ok)throw Error(`Request failed (${t.status})`);return t.json()}var aO=[];for(let e=0;e<256;++e)aO.push((e+256).toString(16).slice(1));function oO(e,t=0){return(aO[e[t+0]]+aO[e[t+1]]+aO[e[t+2]]+aO[e[t+3]]+`-`+aO[e[t+4]]+aO[e[t+5]]+`-`+aO[e[t+6]]+aO[e[t+7]]+`-`+aO[e[t+8]]+aO[e[t+9]]+`-`+aO[e[t+10]]+aO[e[t+11]]+aO[e[t+12]]+aO[e[t+13]]+aO[e[t+14]]+aO[e[t+15]]).toLowerCase()}var sO=new Uint8Array(16);function cO(){return crypto.getRandomValues(sO)}var lO={};function uO(e,t,n){let r;if(e)r=fO(e.random??e.rng?.()??cO(),e.msecs,e.seq,t,n);else{let e=Date.now(),i=cO();dO(lO,e,i),r=fO(i,lO.msecs,lO.seq,t,n)}return t??oO(r)}function dO(e,t,n){return e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=pO(n),e.msecs=t):(e.seq=e.seq+1|0,e.seq===0&&e.msecs++),e}function fO(e,t,n,r,i=0){if(e.length<16)throw Error(`Random bytes length must be >= 16`);if(!r)r=new Uint8Array(16),i=0;else if(i<0||i+16>r.length)throw RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`);return t??=Date.now(),n??=pO(e),r[i++]=t/1099511627776&255,r[i++]=t/4294967296&255,r[i++]=t/16777216&255,r[i++]=t/65536&255,r[i++]=t/256&255,r[i++]=t&255,r[i++]=112|n>>>28&15,r[i++]=n>>>20&255,r[i++]=128|n>>>14&63,r[i++]=n>>>6&255,r[i++]=n<<2&255|e[10]&3,r[i++]=e[11],r[i++]=e[12],r[i++]=e[13],r[i++]=e[14],r[i++]=e[15],r}function pO(e){return(e[6]&127)<<24|e[7]<<16|e[8]<<8|e[9]}function mO(){return uO()}function hO(e,t,n){let r=n.flatMap(e=>e.role===`assistant`?e.toolCalls??[]:[]).find(t=>t.id===e)?.function.name;if(r!==`create_dashboard`&&r!==`edit_dashboard`&&r!==`replace_dashboard`||typeof t!=`string`)return null;try{let e=JSON.parse(t),n=e?.dashboard;return e?.error||e?.isError||typeof n?.id!=`string`||!n.id||typeof n?.name!=`string`||!n.name?null:{id:n.id,name:n.name,label:r===`create_dashboard`?`Created`:`Updated`}}catch{return null}}var gO={home:`https://fanout.run/start/what-fanout-is`,ingest:`https://fanout.run/start/send-telemetry`};function _O(e){let t=new URLSearchParams({window:e.window,limit:`40`});return e.namespace&&t.set(`namespace`,e.namespace),t}function vO(e,t){return[`observability`,e,t.toString()]}var yO=e=>e.state.status===`error`?15e3:3e4,bO=15e3;function xO(e,t,n=!0){return ln({queryKey:vO(e,t),queryFn:()=>iO(`/api/observability/${e}?${t}`),enabled:n,refetchInterval:yO,staleTime:bO})}async function SO(e,t){let n=new URLSearchParams({limit:`30`});e&&n.set(`q`,e),t&&n.set(`cursor`,t);let r=await T(`/api/agent/threads?${n}`);if(!r.ok)throw Error(`Unable to load chats (${r.status})`);return r.json()}function CO({agentAvailable:e,activeThreadID:t,activeDashboardID:n,autoFocusSearch:r=!1,onNewChat:i,onSelectThread:a,onDeletedThread:o,onSelectDashboard:s,onCreateDashboard:c,onInvestigateService:l,ref:u}){let d=Kt(),[f,p]=(0,E.useState)(``),[h]=ta(f.trim(),250),[g,_]=(0,E.useState)(null),[v,y]=(0,E.useState)(null),[b,te]=(0,E.useState)(``),[x,S]=(0,E.useState)(``),[re,ae]=(0,E.useState)(!1),oe=(0,E.useRef)(null);(0,E.useImperativeHandle)(u,()=>({focusSearch:()=>oe.current?.focus()}),[]),(0,E.useEffect)(()=>{r&&requestAnimationFrame(()=>oe.current?.focus())},[r]);let C=MD({queryKey:[...rO,h],queryFn:({pageParam:e})=>SO(h,e),initialPageParam:``,getNextPageParam:e=>e.nextCursor||void 0,enabled:e}),ce=ln({queryKey:Ft,queryFn:Pt,refetchInterval:3e4,staleTime:bO}),le=(0,E.useMemo)(()=>C.data?.pages.flatMap(e=>e.threads)??[],[C.data]),ue=(0,E.useMemo)(()=>kO(le),[le]),de=xO(`overview`,_O({window:`1h`,namespace:``}),!!h&&!!l),fe=(0,E.useMemo)(()=>{if(!h)return[];let e=h.toLowerCase();return(de.data?.data.services??[]).map(e=>e.service).filter(t=>t.toLowerCase().includes(e)).slice(0,6)},[de.data,h]),pe=(0,E.useMemo)(()=>{let e=ce.data??[],t=h.toLowerCase();return t?e.filter(e=>e.name.toLowerCase().includes(t)):e},[ce.data,h]);function me(e){S(``),te(e.title),_(e)}async function ge(){if(g&&b.trim()){ae(!0),S(``);try{let e=await T(`/api/agent/threads/${encodeURIComponent(g.threadId)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:b.trim()})});if(!e.ok)throw Error(`Unable to rename chat (${e.status})`);await d.invalidateQueries({queryKey:rO}),_(null)}catch(e){S(e instanceof Error?e.message:`Unable to rename this chat.`)}finally{ae(!1)}}}async function _e(){if(v){ae(!0),S(``);try{let e=await T(`/api/agent/threads/${encodeURIComponent(v.threadId)}`,{method:`DELETE`});if(!e.ok)throw Error(`Unable to delete chat (${e.status})`);let t=v.threadId;y(null),await d.invalidateQueries({queryKey:rO}),o(t)}catch(e){S(e instanceof Error?e.message:`Unable to delete this chat.`)}finally{ae(!1)}}}return(0,D.jsxs)(ne,{gap:`sm`,h:`100%`,component:`nav`,"aria-label":`Navigation`,children:[e&&(0,D.jsx)(ie,{leftSection:(0,D.jsx)(XD,{size:16,weight:`bold`}),onClick:i,children:`New chat`}),(0,D.jsx)(Rt,{type:`auto`,offsetScrollbars:!0,flex:1,mx:-4,px:4,children:(0,D.jsxs)(ne,{gap:`lg`,pb:`sm`,children:[e&&(0,D.jsxs)(ne,{gap:4,children:[(0,D.jsx)(wO,{children:`Chats`}),C.isLoading&&(0,D.jsx)(ye,{py:`md`,children:(0,D.jsx)(Ce,{size:`xs`})}),C.isError&&(0,D.jsx)(he,{color:`bad`,radius:`md`,p:`xs`,children:`Chats could not be loaded.`}),!C.isLoading&&!C.isError&&le.length===0&&(0,D.jsx)(se,{c:`dimmed`,size:`sm`,px:`sm`,py:`xs`,children:h?`No matching chats`:`No chats yet`}),ue.map(e=>(0,D.jsxs)(ne,{gap:2,children:[ue.length>1&&(0,D.jsx)(se,{c:`dimmed`,size:`xs`,px:`sm`,pt:4,children:e.label}),e.threads.map(e=>(0,D.jsx)(TO,{thread:e,active:e.threadId===t,onSelect:()=>a(e.threadId),onRename:()=>me(e),onDelete:()=>{S(``),y(e)}},e.threadId))]},e.label)),C.hasNextPage&&(0,D.jsx)(ie,{variant:`subtle`,color:`gray`,size:`compact-sm`,loading:C.isFetchingNextPage,onClick:()=>void C.fetchNextPage(),children:`See all`})]}),fe.length>0&&l&&(0,D.jsxs)(ne,{gap:4,children:[(0,D.jsx)(wO,{children:`Services`}),fe.map(e=>(0,D.jsx)(m,{className:`rail-row`,p:`sm`,onClick:()=>l(e),children:(0,D.jsx)(se,{size:`sm`,fw:500,truncate:!0,children:e})},e))]}),(0,D.jsxs)(ne,{gap:4,children:[(0,D.jsx)(wO,{children:`Dashboards`}),ce.isLoading&&(0,D.jsx)(ye,{py:`md`,children:(0,D.jsx)(Ce,{size:`xs`})}),ce.isError&&(0,D.jsx)(he,{color:`bad`,radius:`md`,p:`xs`,children:`Dashboards could not be loaded.`}),!ce.isLoading&&!ce.isError&&h&&pe.length===0&&(0,D.jsx)(se,{c:`dimmed`,size:`sm`,px:`sm`,py:`xs`,children:`No matching dashboards`}),pe.map(e=>{let t=e.id===n;return(0,D.jsx)(m,{component:`a`,href:`/dashboards/${encodeURIComponent(e.id)}`,className:`rail-row`,"data-active":t||void 0,"aria-current":t?`page`:void 0,p:`sm`,onClick:t=>{t.button!==0||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||(t.preventDefault(),s(e.id))},children:(0,D.jsxs)(ee,{justify:`space-between`,gap:`sm`,wrap:`nowrap`,children:[(0,D.jsx)(se,{size:`sm`,fw:t?600:500,truncate:!0,children:e.name}),e.is_default&&(0,D.jsx)(ft,{size:`xs`,variant:`light`,color:`gray`,children:`Default`})]})},e.id)}),e&&(0,D.jsx)(ie,{variant:`subtle`,color:`gray`,size:`compact-sm`,justify:`flex-start`,leftSection:(0,D.jsx)(eO,{size:14,weight:`fill`}),onClick:c,children:ce.data?.length===0?`New dashboard`:`Create with AI`})]})]})}),(0,D.jsx)(Oe,{ref:oe,value:f,onChange:e=>p(e.currentTarget.value),leftSection:(0,D.jsx)(WD,{size:15}),rightSection:(0,D.jsx)(oo,{size:`xs`,children:`⌘K`}),rightSectionWidth:44,placeholder:`Search`,"aria-label":`Search chats, dashboards and services`,size:`sm`}),(0,D.jsx)(Ut,{opened:g!==null,onClose:()=>!re&&_(null),title:`Rename chat`,centered:!0,children:(0,D.jsx)(`form`,{onSubmit:e=>{e.preventDefault(),ge()},children:(0,D.jsxs)(ne,{children:[(0,D.jsx)(Oe,{label:`Name`,value:b,onChange:e=>te(e.currentTarget.value),maxLength:120,autoFocus:!0}),x&&(0,D.jsx)(he,{color:`bad`,children:x}),(0,D.jsxs)(ee,{justify:`flex-end`,children:[(0,D.jsx)(ie,{variant:`default`,onClick:()=>_(null),disabled:re,children:`Cancel`}),(0,D.jsx)(ie,{type:`submit`,loading:re,disabled:!b.trim(),children:`Save`})]})]})})}),(0,D.jsx)(Ut,{opened:v!==null,onClose:()=>!re&&y(null),title:`Delete chat?`,centered:!0,children:(0,D.jsxs)(ne,{children:[(0,D.jsxs)(se,{size:`sm`,children:[`This permanently removes `,(0,D.jsx)(se,{span:!0,fw:650,children:v?.title}),` and its saved messages.`]}),x&&(0,D.jsx)(he,{color:`bad`,children:x}),(0,D.jsxs)(ee,{justify:`flex-end`,children:[(0,D.jsx)(ie,{variant:`default`,onClick:()=>y(null),disabled:re,children:`Cancel`}),(0,D.jsx)(ie,{color:`bad`,loading:re,onClick:()=>void _e(),children:`Delete`})]})]})})]})}function wO({children:e}){return(0,D.jsx)(se,{c:`dimmed`,size:`xs`,fw:700,tt:`uppercase`,lts:`0.08em`,px:`sm`,children:e})}function TO({thread:e,active:t,onSelect:r,onRename:i,onDelete:a}){return(0,D.jsx)(n,{"data-active":t||void 0,className:`rail-row`,children:(0,D.jsxs)(ee,{gap:2,wrap:`nowrap`,children:[(0,D.jsx)(m,{onClick:r,"aria-current":t?`page`:void 0,p:`sm`,flex:1,style:{minWidth:0},children:(0,D.jsxs)(ne,{gap:0,children:[(0,D.jsx)(se,{size:`sm`,fw:t?600:500,truncate:!0,children:e.title}),(0,D.jsx)(se,{c:`dimmed`,size:`xs`,children:AO(e.updatedAt)})]})}),(0,D.jsxs)(_t,{position:`bottom-end`,withinPortal:!0,children:[(0,D.jsx)(_t.Target,{children:(0,D.jsx)(et,{className:`rail-row-actions`,variant:`subtle`,color:`gray`,size:`sm`,mr:4,"aria-label":`Actions for ${e.title}`,children:(0,D.jsx)(gt,{size:18,weight:`bold`})})}),(0,D.jsxs)(_t.Dropdown,{children:[(0,D.jsx)(_t.Item,{leftSection:(0,D.jsx)(ht,{size:15}),onClick:i,children:`Rename`}),(0,D.jsx)(_t.Item,{color:`bad`,leftSection:(0,D.jsx)(Ot,{size:15}),onClick:a,children:`Delete`})]})]})]})})}function EO(e){return e.includes(`T`)?new Date(e):new Date(`${e.replace(` `,`T`)}Z`)}function DO(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()}var OO=[`Today`,`Yesterday`,`Previous 7 days`,`Older`];function kO(e){let t=DO(new Date),n=new Map;for(let r of e){let e=Math.floor((t-DO(EO(r.updatedAt)))/864e5),i=e<=0?`Today`:e===1?`Yesterday`:e<=7?`Previous 7 days`:`Older`,a=n.get(i)??[];a.push(r),n.set(i,a)}return OO.filter(e=>n.has(e)).map(e=>({label:e,threads:n.get(e)}))}function AO(e){let t=EO(e),n=DO(new Date);return Math.floor((n-DO(t))/864e5)<=1?new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`2-digit`}).format(t):new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`}).format(t)}function jO({children:e}){let{agentAvailable:t,threadID:n,threadMissing:r,newThread:i,selectThread:a,openChat:o}=Ze(),s=je(),c=ea({select:e=>e.location.pathname}),{dashboardId:l}=pt({strict:!1}),u=c===`/chat`||c.startsWith(`/chat/`),[d,f]=na(!1),[p,m]=(0,E.useState)(!1),[h,g]=(0,E.useState)(``),_=(0,E.useRef)(null),v=_e(`(max-width: 62em)`),y=(0,E.useRef)(v);y.current=v,(0,E.useEffect)(()=>{f.close()},[c]),(0,E.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`&&(e.preventDefault(),y.current?(m(!0),f.open()):_.current?.focusSearch())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]);let b={agentAvailable:t,activeThreadID:u&&!r&&c!==`/chat`?n:void 0,activeDashboardID:l,onNewChat:i,onSelectThread:a,onDeletedThread:e=>{e===n&&i()},onSelectDashboard:e=>void s({to:`/dashboards/$dashboardId`,params:{dashboardId:e},search:{}}),onCreateDashboard:()=>o(Ke),onInvestigateService:e=>o(`Investigate the ${e} service. Explain its errors and latency.`)};return(0,D.jsxs)(Ua,{header:{height:52},navbar:{width:256,breakpoint:`md`,collapsed:{mobile:!0}},padding:0,children:[(0,D.jsx)(Ua.Header,{children:(0,D.jsxs)(ee,{h:`100%`,px:{base:`sm`,sm:`md`},justify:`space-between`,wrap:`nowrap`,children:[(0,D.jsxs)(ee,{gap:`sm`,wrap:`nowrap`,children:[(0,D.jsx)(ro,{hiddenFrom:`md`,opened:d,onClick:()=>{m(!1),f.toggle()},size:`sm`,"aria-label":d?`Close navigation`:`Open navigation`}),(0,D.jsx)(ve,{size:`small`})]}),(0,D.jsxs)(ee,{gap:`xs`,wrap:`nowrap`,children:[(0,D.jsx)(zt,{label:`Documentation`,children:(0,D.jsx)(et,{component:`a`,href:gO.home,target:`_blank`,rel:`noopener noreferrer`,variant:`subtle`,color:`gray`,"aria-label":`Documentation`,children:(0,D.jsx)(HD,{size:17,weight:`bold`})})}),(0,D.jsx)(MO,{}),(0,D.jsx)(NO,{onError:g})]})]})}),(0,D.jsx)(Ua.Navbar,{p:`sm`,children:(0,D.jsx)(CO,{ref:_,...b})}),(0,D.jsx)(lt,{opened:d,onClose:f.close,hiddenFrom:`md`,size:288,padding:`sm`,title:(0,D.jsx)(ve,{size:`small`}),overlayProps:{backgroundOpacity:.24,blur:1},children:(0,D.jsx)(CO,{...b,autoFocusSearch:d&&p})}),(0,D.jsxs)(Ua.Main,{children:[h&&(0,D.jsx)(he,{color:`bad`,m:`md`,withCloseButton:!0,onClose:()=>g(``),children:h}),e]})]})}function MO(){let{setColorScheme:e}=Bt(),t=Vt(`light`,{getInitialValueInEffect:!0}),n=t===`dark`?`light`:`dark`,[r,i]=(0,E.useState)(!1);return(0,D.jsx)(zt,{label:`Switch to ${n} theme`,opened:r,children:(0,D.jsx)(et,{variant:`subtle`,color:`gray`,"aria-label":`Switch to ${n} theme`,onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),onFocus:()=>i(!0),onBlur:()=>i(!1),onClick:()=>{i(!1),e(n)},children:t===`dark`?(0,D.jsx)(nO,{size:17,weight:`bold`}):(0,D.jsx)(KD,{size:17,weight:`bold`})})})}function NO({onError:e}){let t=je(),n=ke(),r=(n.name.trim()||n.email.trim()||`?`).charAt(0).toUpperCase();return(0,D.jsxs)(_t,{position:`bottom-end`,withinPortal:!0,shadow:`md`,children:[(0,D.jsx)(_t.Target,{children:(0,D.jsx)(et,{variant:`subtle`,color:`gray`,size:`lg`,radius:`xl`,"aria-label":`Account menu`,children:(0,D.jsx)(eo,{size:26,radius:`xl`,color:`brand`,children:r})})}),(0,D.jsxs)(_t.Dropdown,{children:[(0,D.jsx)(_t.Label,{children:n.email||`Signed in`}),(0,D.jsx)(_t.Item,{leftSection:(0,D.jsx)(JD,{size:15}),onClick:()=>void t({to:`/settings`}),children:`Connect telemetry`}),(0,D.jsx)(_t.Divider,{}),(0,D.jsx)(_t.Item,{leftSection:(0,D.jsx)(QD,{size:15}),onClick:()=>void Te().catch(t=>e(t instanceof Error?t.message:`Sign-out failed — your session is still active.`)),children:`Sign out`})]})]})}function PO(){let{agent_available:e}=De(),t=je(),n=Kt(),{threadId:r}=pt({strict:!1}),[i,a]=(0,E.useState)(mO),o=(0,E.useRef)(new Set),s=r??i,[c,l]=(0,E.useState)([]),[u,d]=(0,E.useState)({}),[f,p]=(0,E.useState)(``),[m,h]=(0,E.useState)(!1),[g,_]=(0,E.useState)(!1),[v,y]=(0,E.useState)(``),[b,ee]=(0,E.useState)(``),[te,x]=(0,E.useState)(``),[S,ne]=(0,E.useState)(0),re=(0,E.useRef)(``),ie=(0,E.useRef)(null),ae=(0,E.useRef)(0),oe=(0,E.useMemo)(()=>new ED({url:`/api/agent/runs`,threadId:s,fetch:(e,t)=>T(e,t)}),[s]),se=!e||f===s;function C(){ae.current=0,y(``)}(0,E.useEffect)(()=>{let t=!0;if(l([]),d({}),p(``),h(!1),_(!1),C(),x(``),!e){p(s);return}!r||o.current.has(s)?(oe.setMessages([]),p(s)):T(`/api/agent/threads/${encodeURIComponent(s)}`).then(async e=>{if(e.status===404)return null;if(!e.ok)throw Error(`Unable to load thread (${e.status})`);return e.json()}).then(e=>{if(t){if(e===null){h(!0),p(s);return}oe.setMessages(e.messages??[]),l([...e.messages??[]]),p(s)}}).catch(()=>{t&&(re.current=``,x(`This chat could not be restored. Start a new chat or try again.`))});let i=oe.subscribe({onEvent:({messages:e})=>l([...e]),onRunInitialized:()=>{_(!0),x(``)},onToolCallStartEvent:({event:e})=>{ae.current+=1,y($e(e.toolCallName))},onToolCallEndEvent:()=>{ae.current=Math.max(0,ae.current-1),ae.current===0&&y(``)},onToolCallResultEvent:({event:e,messages:t})=>{let r=hO(e.toolCallId,e.content,t);r&&(n.invalidateQueries({queryKey:Ft}),n.invalidateQueries({queryKey:[`dashboard`,r.id]}))},onRunFinalized:({messages:e})=>{let t=[...e];l(t),d(e=>{let n={...e};for(let e of t)e.role===`assistant`&&!n[e.id]&&(n[e.id]=Date.now());return n}),_(!1),C(),o.current.delete(s),n.invalidateQueries({queryKey:rO})},onRunFailed:e=>{console.error(`Agent run failed`,e),x(`Fanout could not complete this analysis.`),_(!1),C(),o.current.delete(s),n.invalidateQueries({queryKey:rO})}});return()=>{t=!1,i.unsubscribe(),oe.abortRun()}},[oe,e,n,S,s]),(0,E.useEffect)(()=>{if(!e)return;let n=e=>{let n=e.target,i=n?.matches(`input, textarea, [contenteditable='true']`);e.key===`/`&&!i&&(e.preventDefault(),r?requestAnimationFrame(()=>ie.current?.focus()):t({to:`/chat`}).then(()=>requestAnimationFrame(()=>ie.current?.focus()))),e.key===`Escape`&&n===ie.current&&(ee(``),ie.current?.blur())};return window.addEventListener(`keydown`,n),()=>window.removeEventListener(`keydown`,n)},[e,t,r]);async function ce(){_(!0),x(``);try{await oe.runAgent()}catch(e){console.error(`Agent run failed`,e),x(`Fanout could not complete this analysis.`),_(!1),C(),o.current.delete(s)}}async function le(n){let i=n.trim();if(!e||!i||g||!se||m)return;r||(o.current.add(s),t({to:`/chat/$threadId`,params:{threadId:s},replace:!0}));let a={id:mO(),role:`user`,content:i};oe.addMessage(a),l([...oe.messages]),d(e=>({...e,[a.id]:Date.now()})),ee(``),await ce()}(0,E.useEffect)(()=>{let e=re.current;se&&r&&e&&(re.current=``,le(e))},[se,r,s]);function ue(e){e.preventDefault(),le(b)}function de(){oe.abortRun(),_(!1),C(),o.current.delete(s)}function fe(){!g&&oe.messages.some(e=>e.role===`user`)&&ce()}function pe(n){if(!e)return;let r=mO();o.current.add(r),re.current=n??``,t({to:`/chat/$threadId`,params:{threadId:r}})}function me(){oe.abortRun(),re.current=``,a(mO()),t({to:`/chat`})}function he(e){t({to:`/chat/$threadId`,params:{threadId:e}})}function ge(){ne(e=>e+1)}return(0,D.jsx)(Xe.Provider,{value:{agentAvailable:e,threadID:s,threadMissing:m,messages:c,messageTimes:u,ready:se,running:g,activity:v,input:b,setInput:ee,error:te,inputRef:ie,send:le,submit:ue,stop:de,retry:fe,reloadThread:ge,openChat:pe,newThread:me,selectThread:he},children:(0,D.jsx)(jO,{children:(0,D.jsx)(Wi,{})})})}function FO(){let e=(0,E.useMemo)(()=>new jD,[]);return(0,D.jsx)(fn,{client:e,children:(0,D.jsx)(Ae,{children:(0,D.jsx)(PO,{})})})}var IO=jt({component:FO,notFoundComponent:()=>(0,D.jsx)(Ee,{to:`/`,replace:!0})}),LO=mt(`/`)({component:ut(()=>tt(()=>import(`./routes-CqBeRrWY.js`),__vite__mapDeps([0,1,2])),`component`)}),RO=mt(`/settings`)({component:ut(()=>tt(()=>import(`./settings-DR3my0jI.js`),__vite__mapDeps([3,1,2,4,5,6])),`component`)}),zO=mt(`/chat/`)({component:ut(()=>tt(()=>import(`./chat.index-CECIYka-.js`),__vite__mapDeps([7,8,1,9,4,10])),`component`)}),BO=mt(`/chat/$threadId`)({component:ut(()=>tt(()=>import(`./chat._threadId-CECIYka-.js`),__vite__mapDeps([11,8,1,9,4,10])),`component`)}),VO=mt(`/dashboards/`)({component:ut(()=>tt(()=>import(`./dashboards.index-CaihJ2L8.js`),__vite__mapDeps([12,1,2,13,9,4,14,5,15,10,6])),`component`),validateSearch:e=>Tt(kt(e))}),HO=mt(`/dashboards/$dashboardId`)({component:ut(()=>tt(()=>import(`./dashboards._dashboardId-IotNJusj.js`),__vite__mapDeps([16,1,2,13,9,4,14,5,15,10,6])),`component`),validateSearch:e=>Tt(kt(e))}),UO=LO.update({id:`/`,path:`/`,getParentRoute:()=>IO}),WO=RO.update({id:`/settings`,path:`/settings`,getParentRoute:()=>IO}),GO=zO.update({id:`/chat/`,path:`/chat/`,getParentRoute:()=>IO}),KO=BO.update({id:`/chat/$threadId`,path:`/chat/$threadId`,getParentRoute:()=>IO}),qO=VO.update({id:`/dashboards/`,path:`/dashboards/`,getParentRoute:()=>IO}),JO={IndexRoute:UO,SettingsRoute:WO,ChatThreadIdRoute:KO,DashboardsDashboardIdRoute:HO.update({id:`/dashboards/$dashboardId`,path:`/dashboards/$dashboardId`,getParentRoute:()=>IO}),ChatIndexRoute:GO,DashboardsIndexRoute:qO},YO=IO._addFileChildren(JO)._addFileTypes();function XO(e){let t=new URLSearchParams;for(let[n,r]of Object.entries(e))for(let e of Array.isArray(r)?r:[r])e!==void 0&&t.append(n,typeof e==`object`&&e?JSON.stringify(e):String(e));let n=t.toString();return n?`?${n}`:``}function ZO(e){let t=Object.create(null),n=e=>{if(e.startsWith(`{`))try{let t=JSON.parse(e);if(typeof t==`object`&&t&&!Array.isArray(t))return t}catch{}return e},r=new URLSearchParams(e);for(let e of new Set(r.keys())){let i=r.getAll(e).map(n);t[e]=i.length===1?i[0]:i}return t}var QO=Xi({routeTree:YO,parseSearch:ZO,stringifySearch:XO,defaultPreload:`intent`,scrollRestoration:!0}),$O=Dt(_),ek=ya({...At,variantColorResolver:$O});(0,ho.createRoot)(document.getElementById(`root`)).render((0,D.jsx)(E.StrictMode,{children:(0,D.jsx)(va,{theme:ek,defaultColorScheme:`auto`,cssVariablesResolver:Mt,children:(0,D.jsx)($i,{router:QO})})}));export{s_ as A,z_ as C,B as D,q_ as E,Cm as F,fu as I,Ag as M,Om as N,V_ as O,wm as P,w_ as S,wv as T,G_ as _,iO as a,W as b,C_ as c,O_ as d,U as f,r_ as g,U_ as h,hO as i,Ig as j,N_ as k,Y_ as l,H as m,VO as n,$g as o,L_ as p,gO as r,Qg as s,HO as t,A_ as u,yv as v,ev as w,F_ as x,G as y}; \ No newline at end of file diff --git a/internal/ui/dist/assets/index-BaklyCJJ.css b/internal/ui/dist/assets/index-wXPNOnWm.css similarity index 99% rename from internal/ui/dist/assets/index-BaklyCJJ.css rename to internal/ui/dist/assets/index-wXPNOnWm.css index 5b4a076b..7a346381 100644 --- a/internal/ui/dist/assets/index-BaklyCJJ.css +++ b/internal/ui/dist/assets/index-wXPNOnWm.css @@ -1 +1 @@ -:root,:host{color-scheme:var(--mantine-color-scheme)}*,:before,:after{box-sizing:border-box}input,button,textarea,select{font:inherit}button,select{text-transform:none}body,:host{font-family:var(--mantine-font-family);font-size:var(--mantine-font-size-md);line-height:var(--mantine-line-height);background-color:var(--mantine-color-body);color:var(--mantine-color-text);-webkit-font-smoothing:var(--mantine-webkit-font-smoothing);-moz-osx-font-smoothing:var(--mantine-moz-font-smoothing);margin:0}@media screen and (device-width<=31.25em){body,:host{-webkit-text-size-adjust:100%}}:root,:host{--mantine-z-index-app:100;--mantine-z-index-modal:200;--mantine-z-index-popover:300;--mantine-z-index-overlay:400;--mantine-z-index-max:9999;--mantine-scale:1;--mantine-cursor-type:default;--mantine-webkit-font-smoothing:antialiased;--mantine-moz-font-smoothing:grayscale;--mantine-color-white:#fff;--mantine-color-black:#000;--mantine-line-height:1.55;--mantine-font-family:-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji;--mantine-font-family-monospace:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;--mantine-font-family-headings:-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji;--mantine-heading-font-weight:700;--mantine-heading-text-wrap:wrap;--mantine-radius-default:calc(.5rem * var(--mantine-scale));--mantine-primary-color-filled:var(--mantine-color-blue-filled);--mantine-primary-color-filled-hover:var(--mantine-color-blue-filled-hover);--mantine-primary-color-light:var(--mantine-color-blue-light);--mantine-primary-color-light-hover:var(--mantine-color-blue-light-hover);--mantine-primary-color-light-color:var(--mantine-color-blue-light-color);--mantine-breakpoint-xs:36em;--mantine-breakpoint-sm:48em;--mantine-breakpoint-md:62em;--mantine-breakpoint-lg:75em;--mantine-breakpoint-xl:88em;--mantine-spacing-xs:calc(.625rem * var(--mantine-scale));--mantine-spacing-sm:calc(.75rem * var(--mantine-scale));--mantine-spacing-md:calc(1rem * var(--mantine-scale));--mantine-spacing-lg:calc(1.25rem * var(--mantine-scale));--mantine-spacing-xl:calc(2rem * var(--mantine-scale));--mantine-font-size-xs:calc(.75rem * var(--mantine-scale));--mantine-font-size-sm:calc(.875rem * var(--mantine-scale));--mantine-font-size-md:calc(1rem * var(--mantine-scale));--mantine-font-size-lg:calc(1.125rem * var(--mantine-scale));--mantine-font-size-xl:calc(1.25rem * var(--mantine-scale));--mantine-line-height-xs:1.4;--mantine-line-height-sm:1.45;--mantine-line-height-md:1.55;--mantine-line-height-lg:1.6;--mantine-line-height-xl:1.65;--mantine-shadow-xs:0 calc(.0625rem * var(--mantine-scale)) calc(.1875rem * var(--mantine-scale)) #0000000d, 0 calc(.0625rem * var(--mantine-scale)) calc(.125rem * var(--mantine-scale)) #0000001a;--mantine-shadow-sm:0 calc(.0625rem * var(--mantine-scale)) calc(.1875rem * var(--mantine-scale)) #0000000d, #0000000d 0 calc(.625rem * var(--mantine-scale)) calc(.9375rem * var(--mantine-scale)) calc(-.3125rem * var(--mantine-scale)), #0000000a 0 calc(.4375rem * var(--mantine-scale)) calc(.4375rem * var(--mantine-scale)) calc(-.3125rem * var(--mantine-scale));--mantine-shadow-md:0 calc(.0625rem * var(--mantine-scale)) calc(.1875rem * var(--mantine-scale)) #0000000d, #0000000d 0 calc(1.25rem * var(--mantine-scale)) calc(1.5625rem * var(--mantine-scale)) calc(-.3125rem * var(--mantine-scale)), #0000000a 0 calc(.625rem * var(--mantine-scale)) calc(.625rem * var(--mantine-scale)) calc(-.3125rem * var(--mantine-scale));--mantine-shadow-lg:0 calc(.0625rem * var(--mantine-scale)) calc(.1875rem * var(--mantine-scale)) #0000000d, #0000000d 0 calc(1.75rem * var(--mantine-scale)) calc(1.4375rem * var(--mantine-scale)) calc(-.4375rem * var(--mantine-scale)), #0000000a 0 calc(.75rem * var(--mantine-scale)) calc(.75rem * var(--mantine-scale)) calc(-.4375rem * var(--mantine-scale));--mantine-shadow-xl:0 calc(.0625rem * var(--mantine-scale)) calc(.1875rem * var(--mantine-scale)) #0000000d, #0000000d 0 calc(2.25rem * var(--mantine-scale)) calc(1.75rem * var(--mantine-scale)) calc(-.4375rem * var(--mantine-scale)), #0000000a 0 calc(1.0625rem * var(--mantine-scale)) calc(1.0625rem * var(--mantine-scale)) calc(-.4375rem * var(--mantine-scale));--mantine-radius-xs:calc(.125rem * var(--mantine-scale));--mantine-radius-sm:calc(.25rem * var(--mantine-scale));--mantine-radius-md:calc(.5rem * var(--mantine-scale));--mantine-radius-lg:calc(1rem * var(--mantine-scale));--mantine-radius-xl:calc(2rem * var(--mantine-scale));--mantine-font-weight-regular:400;--mantine-font-weight-medium:600;--mantine-font-weight-bold:700;--mantine-primary-color-0:var(--mantine-color-blue-0);--mantine-primary-color-1:var(--mantine-color-blue-1);--mantine-primary-color-2:var(--mantine-color-blue-2);--mantine-primary-color-3:var(--mantine-color-blue-3);--mantine-primary-color-4:var(--mantine-color-blue-4);--mantine-primary-color-5:var(--mantine-color-blue-5);--mantine-primary-color-6:var(--mantine-color-blue-6);--mantine-primary-color-7:var(--mantine-color-blue-7);--mantine-primary-color-8:var(--mantine-color-blue-8);--mantine-primary-color-9:var(--mantine-color-blue-9);--mantine-color-dark-0:#c9c9c9;--mantine-color-dark-1:#b8b8b8;--mantine-color-dark-2:#828282;--mantine-color-dark-3:#696969;--mantine-color-dark-4:#424242;--mantine-color-dark-5:#3b3b3b;--mantine-color-dark-6:#2e2e2e;--mantine-color-dark-7:#242424;--mantine-color-dark-8:#1f1f1f;--mantine-color-dark-9:#141414;--mantine-color-gray-0:#f8f9fa;--mantine-color-gray-1:#f1f3f5;--mantine-color-gray-2:#e9ecef;--mantine-color-gray-3:#dee2e6;--mantine-color-gray-4:#ced4da;--mantine-color-gray-5:#adb5bd;--mantine-color-gray-6:#868e96;--mantine-color-gray-7:#495057;--mantine-color-gray-8:#343a40;--mantine-color-gray-9:#212529;--mantine-color-red-0:#fff5f5;--mantine-color-red-1:#ffe3e3;--mantine-color-red-2:#ffc9c9;--mantine-color-red-3:#ffa8a8;--mantine-color-red-4:#ff8787;--mantine-color-red-5:#ff6b6b;--mantine-color-red-6:#fa5252;--mantine-color-red-7:#f03e3e;--mantine-color-red-8:#e03131;--mantine-color-red-9:#c92a2a;--mantine-color-pink-0:#fff0f6;--mantine-color-pink-1:#ffdeeb;--mantine-color-pink-2:#fcc2d7;--mantine-color-pink-3:#faa2c1;--mantine-color-pink-4:#f783ac;--mantine-color-pink-5:#f06595;--mantine-color-pink-6:#e64980;--mantine-color-pink-7:#d6336c;--mantine-color-pink-8:#c2255c;--mantine-color-pink-9:#a61e4d;--mantine-color-grape-0:#f8f0fc;--mantine-color-grape-1:#f3d9fa;--mantine-color-grape-2:#eebefa;--mantine-color-grape-3:#e599f7;--mantine-color-grape-4:#da77f2;--mantine-color-grape-5:#cc5de8;--mantine-color-grape-6:#be4bdb;--mantine-color-grape-7:#ae3ec9;--mantine-color-grape-8:#9c36b5;--mantine-color-grape-9:#862e9c;--mantine-color-violet-0:#f3f0ff;--mantine-color-violet-1:#e5dbff;--mantine-color-violet-2:#d0bfff;--mantine-color-violet-3:#b197fc;--mantine-color-violet-4:#9775fa;--mantine-color-violet-5:#845ef7;--mantine-color-violet-6:#7950f2;--mantine-color-violet-7:#7048e8;--mantine-color-violet-8:#6741d9;--mantine-color-violet-9:#5f3dc4;--mantine-color-indigo-0:#edf2ff;--mantine-color-indigo-1:#dbe4ff;--mantine-color-indigo-2:#bac8ff;--mantine-color-indigo-3:#91a7ff;--mantine-color-indigo-4:#748ffc;--mantine-color-indigo-5:#5c7cfa;--mantine-color-indigo-6:#4c6ef5;--mantine-color-indigo-7:#4263eb;--mantine-color-indigo-8:#3b5bdb;--mantine-color-indigo-9:#364fc7;--mantine-color-blue-0:#e7f5ff;--mantine-color-blue-1:#d0ebff;--mantine-color-blue-2:#a5d8ff;--mantine-color-blue-3:#74c0fc;--mantine-color-blue-4:#4dabf7;--mantine-color-blue-5:#339af0;--mantine-color-blue-6:#228be6;--mantine-color-blue-7:#1c7ed6;--mantine-color-blue-8:#1971c2;--mantine-color-blue-9:#1864ab;--mantine-color-cyan-0:#e3fafc;--mantine-color-cyan-1:#c5f6fa;--mantine-color-cyan-2:#99e9f2;--mantine-color-cyan-3:#66d9e8;--mantine-color-cyan-4:#3bc9db;--mantine-color-cyan-5:#22b8cf;--mantine-color-cyan-6:#15aabf;--mantine-color-cyan-7:#1098ad;--mantine-color-cyan-8:#0c8599;--mantine-color-cyan-9:#0b7285;--mantine-color-teal-0:#e6fcf5;--mantine-color-teal-1:#c3fae8;--mantine-color-teal-2:#96f2d7;--mantine-color-teal-3:#63e6be;--mantine-color-teal-4:#38d9a9;--mantine-color-teal-5:#20c997;--mantine-color-teal-6:#12b886;--mantine-color-teal-7:#0ca678;--mantine-color-teal-8:#099268;--mantine-color-teal-9:#087f5b;--mantine-color-green-0:#ebfbee;--mantine-color-green-1:#d3f9d8;--mantine-color-green-2:#b2f2bb;--mantine-color-green-3:#8ce99a;--mantine-color-green-4:#69db7c;--mantine-color-green-5:#51cf66;--mantine-color-green-6:#40c057;--mantine-color-green-7:#37b24d;--mantine-color-green-8:#2f9e44;--mantine-color-green-9:#2b8a3e;--mantine-color-lime-0:#f4fce3;--mantine-color-lime-1:#e9fac8;--mantine-color-lime-2:#d8f5a2;--mantine-color-lime-3:#c0eb75;--mantine-color-lime-4:#a9e34b;--mantine-color-lime-5:#94d82d;--mantine-color-lime-6:#82c91e;--mantine-color-lime-7:#74b816;--mantine-color-lime-8:#66a80f;--mantine-color-lime-9:#5c940d;--mantine-color-yellow-0:#fff9db;--mantine-color-yellow-1:#fff3bf;--mantine-color-yellow-2:#ffec99;--mantine-color-yellow-3:#ffe066;--mantine-color-yellow-4:#ffd43b;--mantine-color-yellow-5:#fcc419;--mantine-color-yellow-6:#fab005;--mantine-color-yellow-7:#f59f00;--mantine-color-yellow-8:#f08c00;--mantine-color-yellow-9:#e67700;--mantine-color-orange-0:#fff4e6;--mantine-color-orange-1:#ffe8cc;--mantine-color-orange-2:#ffd8a8;--mantine-color-orange-3:#ffc078;--mantine-color-orange-4:#ffa94d;--mantine-color-orange-5:#ff922b;--mantine-color-orange-6:#fd7e14;--mantine-color-orange-7:#f76707;--mantine-color-orange-8:#e8590c;--mantine-color-orange-9:#d9480f;--mantine-h1-font-size:calc(2.125rem * var(--mantine-scale));--mantine-h1-line-height:1.3;--mantine-h1-font-weight:700;--mantine-h2-font-size:calc(1.625rem * var(--mantine-scale));--mantine-h2-line-height:1.35;--mantine-h2-font-weight:700;--mantine-h3-font-size:calc(1.375rem * var(--mantine-scale));--mantine-h3-line-height:1.4;--mantine-h3-font-weight:700;--mantine-h4-font-size:calc(1.125rem * var(--mantine-scale));--mantine-h4-line-height:1.45;--mantine-h4-font-weight:700;--mantine-h5-font-size:calc(1rem * var(--mantine-scale));--mantine-h5-line-height:1.5;--mantine-h5-font-weight:700;--mantine-h6-font-size:calc(.875rem * var(--mantine-scale));--mantine-h6-line-height:1.5;--mantine-h6-font-weight:700}:root[data-mantine-color-scheme=dark],:host([data-mantine-color-scheme=dark]){--mantine-color-scheme:dark;--mantine-primary-color-contrast:var(--mantine-color-white);--mantine-color-bright:var(--mantine-color-white);--mantine-color-text:var(--mantine-color-dark-0);--mantine-color-body:var(--mantine-color-dark-7);--mantine-color-error:var(--mantine-color-red-8);--mantine-color-success:var(--mantine-color-teal-8);--mantine-color-placeholder:var(--mantine-color-dark-3);--mantine-color-anchor:var(--mantine-color-blue-4);--mantine-color-default:var(--mantine-color-dark-6);--mantine-color-default-hover:var(--mantine-color-dark-5);--mantine-color-default-color:var(--mantine-color-white);--mantine-color-default-border:var(--mantine-color-dark-4);--mantine-color-dimmed:var(--mantine-color-dark-2);--mantine-color-disabled:var(--mantine-color-dark-6);--mantine-color-disabled-color:var(--mantine-color-dark-3);--mantine-color-disabled-border:var(--mantine-color-dark-4);--mantine-color-dark-text:var(--mantine-color-dark-4);--mantine-color-dark-filled:var(--mantine-color-dark-8);--mantine-color-dark-filled-hover:var(--mantine-color-dark-9);--mantine-color-dark-light:#0a0a0a;--mantine-color-dark-light-hover:#0e0e0e;--mantine-color-dark-light-color:var(--mantine-color-dark-0);--mantine-color-dark-outline:var(--mantine-color-dark-4);--mantine-color-dark-outline-hover:#4242420d;--mantine-color-gray-text:var(--mantine-color-gray-4);--mantine-color-gray-filled:var(--mantine-color-gray-8);--mantine-color-gray-filled-hover:var(--mantine-color-gray-9);--mantine-color-gray-light:#111315;--mantine-color-gray-light-hover:#171a1d;--mantine-color-gray-light-color:var(--mantine-color-gray-0);--mantine-color-gray-outline:var(--mantine-color-gray-4);--mantine-color-gray-outline-hover:#ced4da0d;--mantine-color-red-text:var(--mantine-color-red-4);--mantine-color-red-filled:var(--mantine-color-red-8);--mantine-color-red-filled-hover:var(--mantine-color-red-9);--mantine-color-red-light:#651515;--mantine-color-red-light-hover:#8d1d1d;--mantine-color-red-light-color:var(--mantine-color-red-0);--mantine-color-red-outline:var(--mantine-color-red-4);--mantine-color-red-outline-hover:#ff87870d;--mantine-color-pink-text:var(--mantine-color-pink-4);--mantine-color-pink-filled:var(--mantine-color-pink-8);--mantine-color-pink-filled-hover:var(--mantine-color-pink-9);--mantine-color-pink-light:#530f27;--mantine-color-pink-light-hover:#741536;--mantine-color-pink-light-color:var(--mantine-color-pink-0);--mantine-color-pink-outline:var(--mantine-color-pink-4);--mantine-color-pink-outline-hover:#f783ac0d;--mantine-color-grape-text:var(--mantine-color-grape-4);--mantine-color-grape-filled:var(--mantine-color-grape-8);--mantine-color-grape-filled-hover:var(--mantine-color-grape-9);--mantine-color-grape-light:#43174e;--mantine-color-grape-light-hover:#5e206d;--mantine-color-grape-light-color:var(--mantine-color-grape-0);--mantine-color-grape-outline:var(--mantine-color-grape-4);--mantine-color-grape-outline-hover:#da77f20d;--mantine-color-violet-text:var(--mantine-color-violet-4);--mantine-color-violet-filled:var(--mantine-color-violet-8);--mantine-color-violet-filled-hover:var(--mantine-color-violet-9);--mantine-color-violet-light:#301f62;--mantine-color-violet-light-hover:#432b89;--mantine-color-violet-light-color:var(--mantine-color-violet-0);--mantine-color-violet-outline:var(--mantine-color-violet-4);--mantine-color-violet-outline-hover:#9775fa0d;--mantine-color-indigo-text:var(--mantine-color-indigo-4);--mantine-color-indigo-filled:var(--mantine-color-indigo-8);--mantine-color-indigo-filled-hover:var(--mantine-color-indigo-9);--mantine-color-indigo-light:#1b2864;--mantine-color-indigo-light-hover:#26378b;--mantine-color-indigo-light-color:var(--mantine-color-indigo-0);--mantine-color-indigo-outline:var(--mantine-color-indigo-4);--mantine-color-indigo-outline-hover:#748ffc0d;--mantine-color-blue-text:var(--mantine-color-blue-4);--mantine-color-blue-filled:var(--mantine-color-blue-8);--mantine-color-blue-filled-hover:var(--mantine-color-blue-9);--mantine-color-blue-light:#0c3256;--mantine-color-blue-light-hover:#114678;--mantine-color-blue-light-color:var(--mantine-color-blue-0);--mantine-color-blue-outline:var(--mantine-color-blue-4);--mantine-color-blue-outline-hover:#4dabf70d;--mantine-color-cyan-text:var(--mantine-color-cyan-4);--mantine-color-cyan-filled:var(--mantine-color-cyan-8);--mantine-color-cyan-filled-hover:var(--mantine-color-cyan-9);--mantine-color-cyan-light:#063943;--mantine-color-cyan-light-hover:#08505d;--mantine-color-cyan-light-color:var(--mantine-color-cyan-0);--mantine-color-cyan-outline:var(--mantine-color-cyan-4);--mantine-color-cyan-outline-hover:#3bc9db0d;--mantine-color-teal-text:var(--mantine-color-teal-4);--mantine-color-teal-filled:var(--mantine-color-teal-8);--mantine-color-teal-filled-hover:var(--mantine-color-teal-9);--mantine-color-teal-light:#04402e;--mantine-color-teal-light-hover:#065940;--mantine-color-teal-light-color:var(--mantine-color-teal-0);--mantine-color-teal-outline:var(--mantine-color-teal-4);--mantine-color-teal-outline-hover:#38d9a90d;--mantine-color-green-text:var(--mantine-color-green-4);--mantine-color-green-filled:var(--mantine-color-green-8);--mantine-color-green-filled-hover:var(--mantine-color-green-9);--mantine-color-green-light:#16451f;--mantine-color-green-light-hover:#1e612b;--mantine-color-green-light-color:var(--mantine-color-green-0);--mantine-color-green-outline:var(--mantine-color-green-4);--mantine-color-green-outline-hover:#69db7c0d;--mantine-color-lime-text:var(--mantine-color-lime-4);--mantine-color-lime-filled:var(--mantine-color-lime-8);--mantine-color-lime-filled-hover:var(--mantine-color-lime-9);--mantine-color-lime-light:#2e4a07;--mantine-color-lime-light-hover:#406809;--mantine-color-lime-light-color:var(--mantine-color-lime-0);--mantine-color-lime-outline:var(--mantine-color-lime-4);--mantine-color-lime-outline-hover:#a9e34b0d;--mantine-color-yellow-text:var(--mantine-color-yellow-4);--mantine-color-yellow-filled:var(--mantine-color-yellow-8);--mantine-color-yellow-filled-hover:var(--mantine-color-yellow-9);--mantine-color-yellow-light:#733c00;--mantine-color-yellow-light-hover:#a15300;--mantine-color-yellow-light-color:var(--mantine-color-yellow-0);--mantine-color-yellow-outline:var(--mantine-color-yellow-4);--mantine-color-yellow-outline-hover:#ffd43b0d;--mantine-color-orange-text:var(--mantine-color-orange-4);--mantine-color-orange-filled:var(--mantine-color-orange-8);--mantine-color-orange-filled-hover:var(--mantine-color-orange-9);--mantine-color-orange-light:#6d2408;--mantine-color-orange-light-hover:#98320b;--mantine-color-orange-light-color:var(--mantine-color-orange-0);--mantine-color-orange-outline:var(--mantine-color-orange-4);--mantine-color-orange-outline-hover:#ffa94d0d}:root[data-mantine-color-scheme=light],:host([data-mantine-color-scheme=light]){--mantine-color-scheme:light;--mantine-primary-color-contrast:var(--mantine-color-white);--mantine-color-bright:var(--mantine-color-black);--mantine-color-text:#000;--mantine-color-body:#fff;--mantine-color-error:var(--mantine-color-red-6);--mantine-color-success:var(--mantine-color-teal-8);--mantine-color-placeholder:var(--mantine-color-gray-5);--mantine-color-anchor:var(--mantine-color-blue-6);--mantine-color-default:var(--mantine-color-white);--mantine-color-default-hover:var(--mantine-color-gray-0);--mantine-color-default-color:var(--mantine-color-black);--mantine-color-default-border:var(--mantine-color-gray-4);--mantine-color-dimmed:var(--mantine-color-gray-6);--mantine-color-disabled:var(--mantine-color-gray-2);--mantine-color-disabled-color:var(--mantine-color-gray-5);--mantine-color-disabled-border:var(--mantine-color-gray-3);--mantine-color-dark-text:var(--mantine-color-dark-filled);--mantine-color-dark-filled:var(--mantine-color-dark-6);--mantine-color-dark-filled-hover:var(--mantine-color-dark-7);--mantine-color-dark-light:var(--mantine-color-dark-1);--mantine-color-dark-light-hover:var(--mantine-color-dark-2);--mantine-color-dark-light-color:var(--mantine-color-dark-9);--mantine-color-dark-outline:var(--mantine-color-dark-6);--mantine-color-dark-outline-hover:#2e2e2e0d;--mantine-color-gray-text:var(--mantine-color-gray-filled);--mantine-color-gray-filled:var(--mantine-color-gray-6);--mantine-color-gray-filled-hover:var(--mantine-color-gray-7);--mantine-color-gray-light:var(--mantine-color-gray-1);--mantine-color-gray-light-hover:var(--mantine-color-gray-2);--mantine-color-gray-light-color:var(--mantine-color-gray-9);--mantine-color-gray-outline:var(--mantine-color-gray-6);--mantine-color-gray-outline-hover:#868e960d;--mantine-color-red-text:var(--mantine-color-red-filled);--mantine-color-red-filled:var(--mantine-color-red-6);--mantine-color-red-filled-hover:var(--mantine-color-red-7);--mantine-color-red-light:var(--mantine-color-red-1);--mantine-color-red-light-hover:var(--mantine-color-red-2);--mantine-color-red-light-color:var(--mantine-color-red-9);--mantine-color-red-outline:var(--mantine-color-red-6);--mantine-color-red-outline-hover:#fa52520d;--mantine-color-pink-text:var(--mantine-color-pink-filled);--mantine-color-pink-filled:var(--mantine-color-pink-6);--mantine-color-pink-filled-hover:var(--mantine-color-pink-7);--mantine-color-pink-light:var(--mantine-color-pink-1);--mantine-color-pink-light-hover:var(--mantine-color-pink-2);--mantine-color-pink-light-color:var(--mantine-color-pink-9);--mantine-color-pink-outline:var(--mantine-color-pink-6);--mantine-color-pink-outline-hover:#e649800d;--mantine-color-grape-text:var(--mantine-color-grape-filled);--mantine-color-grape-filled:var(--mantine-color-grape-6);--mantine-color-grape-filled-hover:var(--mantine-color-grape-7);--mantine-color-grape-light:var(--mantine-color-grape-1);--mantine-color-grape-light-hover:var(--mantine-color-grape-2);--mantine-color-grape-light-color:var(--mantine-color-grape-9);--mantine-color-grape-outline:var(--mantine-color-grape-6);--mantine-color-grape-outline-hover:#be4bdb0d;--mantine-color-violet-text:var(--mantine-color-violet-filled);--mantine-color-violet-filled:var(--mantine-color-violet-6);--mantine-color-violet-filled-hover:var(--mantine-color-violet-7);--mantine-color-violet-light:var(--mantine-color-violet-1);--mantine-color-violet-light-hover:var(--mantine-color-violet-2);--mantine-color-violet-light-color:var(--mantine-color-violet-9);--mantine-color-violet-outline:var(--mantine-color-violet-6);--mantine-color-violet-outline-hover:#7950f20d;--mantine-color-indigo-text:var(--mantine-color-indigo-filled);--mantine-color-indigo-filled:var(--mantine-color-indigo-6);--mantine-color-indigo-filled-hover:var(--mantine-color-indigo-7);--mantine-color-indigo-light:var(--mantine-color-indigo-1);--mantine-color-indigo-light-hover:var(--mantine-color-indigo-2);--mantine-color-indigo-light-color:var(--mantine-color-indigo-9);--mantine-color-indigo-outline:var(--mantine-color-indigo-6);--mantine-color-indigo-outline-hover:#4c6ef50d;--mantine-color-blue-text:var(--mantine-color-blue-filled);--mantine-color-blue-filled:var(--mantine-color-blue-6);--mantine-color-blue-filled-hover:var(--mantine-color-blue-7);--mantine-color-blue-light:var(--mantine-color-blue-1);--mantine-color-blue-light-hover:var(--mantine-color-blue-2);--mantine-color-blue-light-color:var(--mantine-color-blue-9);--mantine-color-blue-outline:var(--mantine-color-blue-6);--mantine-color-blue-outline-hover:#228be60d;--mantine-color-cyan-text:var(--mantine-color-cyan-filled);--mantine-color-cyan-filled:var(--mantine-color-cyan-6);--mantine-color-cyan-filled-hover:var(--mantine-color-cyan-7);--mantine-color-cyan-light:var(--mantine-color-cyan-1);--mantine-color-cyan-light-hover:var(--mantine-color-cyan-2);--mantine-color-cyan-light-color:var(--mantine-color-cyan-9);--mantine-color-cyan-outline:var(--mantine-color-cyan-6);--mantine-color-cyan-outline-hover:#15aabf0d;--mantine-color-teal-text:var(--mantine-color-teal-filled);--mantine-color-teal-filled:var(--mantine-color-teal-6);--mantine-color-teal-filled-hover:var(--mantine-color-teal-7);--mantine-color-teal-light:var(--mantine-color-teal-1);--mantine-color-teal-light-hover:var(--mantine-color-teal-2);--mantine-color-teal-light-color:var(--mantine-color-teal-9);--mantine-color-teal-outline:var(--mantine-color-teal-6);--mantine-color-teal-outline-hover:#12b8860d;--mantine-color-green-text:var(--mantine-color-green-filled);--mantine-color-green-filled:var(--mantine-color-green-6);--mantine-color-green-filled-hover:var(--mantine-color-green-7);--mantine-color-green-light:var(--mantine-color-green-1);--mantine-color-green-light-hover:var(--mantine-color-green-2);--mantine-color-green-light-color:var(--mantine-color-green-9);--mantine-color-green-outline:var(--mantine-color-green-6);--mantine-color-green-outline-hover:#40c0570d;--mantine-color-lime-text:var(--mantine-color-lime-filled);--mantine-color-lime-filled:var(--mantine-color-lime-6);--mantine-color-lime-filled-hover:var(--mantine-color-lime-7);--mantine-color-lime-light:var(--mantine-color-lime-1);--mantine-color-lime-light-hover:var(--mantine-color-lime-2);--mantine-color-lime-light-color:var(--mantine-color-lime-9);--mantine-color-lime-outline:var(--mantine-color-lime-6);--mantine-color-lime-outline-hover:#82c91e0d;--mantine-color-yellow-text:var(--mantine-color-yellow-filled);--mantine-color-yellow-filled:var(--mantine-color-yellow-6);--mantine-color-yellow-filled-hover:var(--mantine-color-yellow-7);--mantine-color-yellow-light:var(--mantine-color-yellow-1);--mantine-color-yellow-light-hover:var(--mantine-color-yellow-2);--mantine-color-yellow-light-color:var(--mantine-color-yellow-9);--mantine-color-yellow-outline:var(--mantine-color-yellow-6);--mantine-color-yellow-outline-hover:#fab0050d;--mantine-color-orange-text:var(--mantine-color-orange-filled);--mantine-color-orange-filled:var(--mantine-color-orange-6);--mantine-color-orange-filled-hover:var(--mantine-color-orange-7);--mantine-color-orange-light:var(--mantine-color-orange-1);--mantine-color-orange-light-hover:var(--mantine-color-orange-2);--mantine-color-orange-light-color:var(--mantine-color-orange-9);--mantine-color-orange-outline:var(--mantine-color-orange-6);--mantine-color-orange-outline-hover:#fd7e140d}@media (prefers-reduced-motion:reduce){[data-respect-reduced-motion] [data-reduce-motion]{transition:none;animation:none}}[data-mantine-color-scheme=light] .mantine-light-hidden,[data-mantine-color-scheme=dark] .mantine-dark-hidden{display:none}.mantine-focus-auto:focus-visible,.mantine-focus-always:focus{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.mantine-focus-never:focus{outline:none}.mantine-active:active{transform:translateY(calc(.0625rem * var(--mantine-scale)))}fieldset:disabled .mantine-active:active{transform:none}:where([dir=rtl]) .mantine-rotate-rtl{transform:rotate(180deg)}.m_d57069b5{--scrollarea-scrollbar-size:calc(.75rem * var(--mantine-scale));position:relative;overflow:hidden}.m_d57069b5:where([data-autosize]) .m_b1336c6{min-width:min-content}.m_c0783ff9{scrollbar-width:none;overscroll-behavior:var(--scrollarea-over-scroll-behavior);-ms-overflow-style:none;-webkit-overflow-scrolling:touch;width:100%;height:100%}.m_c0783ff9::-webkit-scrollbar{display:none}.m_c0783ff9:where([data-scrollbars=xy],[data-scrollbars=y]):where([data-offset-scrollbars=xy],[data-offset-scrollbars=y],[data-offset-scrollbars=present]):where([data-vertical-hidden]){padding-inline:0}.m_c0783ff9:where([data-scrollbars=xy],[data-scrollbars=y]):where([data-offset-scrollbars=xy],[data-offset-scrollbars=y],[data-offset-scrollbars=present]):not([data-vertical-hidden]){padding-inline-start:unset;padding-inline-end:var(--scrollarea-scrollbar-size)}.m_c0783ff9:where([data-scrollbars=xy],[data-scrollbars=y]):where([data-offset-scrollbars=xy],[data-offset-scrollbars=y],[data-offset-scrollbars=present]):not([data-vertical-hidden]):where([data-vertical-scrollbar-position=left]){padding-inline-end:unset;padding-left:var(--scrollarea-scrollbar-size);padding-right:unset}.m_c0783ff9:where([data-scrollbars=xy],[data-scrollbars=y]):where([data-offset-scrollbars=xy],[data-offset-scrollbars=y],[data-offset-scrollbars=present]):not([data-vertical-hidden]):where([data-vertical-scrollbar-position=right]){padding-inline-end:unset;padding-left:unset;padding-right:var(--scrollarea-scrollbar-size)}.m_c0783ff9:where([data-scrollbars=xy],[data-scrollbars=x]):where([data-offset-scrollbars=xy],[data-offset-scrollbars=x],[data-offset-scrollbars=present]):where([data-horizontal-hidden]){padding-bottom:0}.m_c0783ff9:where([data-scrollbars=xy],[data-scrollbars=x]):where([data-offset-scrollbars=xy],[data-offset-scrollbars=x],[data-offset-scrollbars=present]):not([data-horizontal-hidden]){padding-bottom:var(--scrollarea-scrollbar-size)}.m_f8f631dd{min-width:100%;display:table}.m_c44ba933{-webkit-user-select:none;user-select:none;touch-action:none;box-sizing:border-box;padding:calc(var(--scrollarea-scrollbar-size) / 5);background-color:#0000;flex-direction:row;transition:background-color .15s,opacity .15s;display:flex}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_c44ba933:hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=light]) .m_c44ba933:hover>.m_d8b5e363{background-color:#00000080}:where([data-mantine-color-scheme=dark]) .m_c44ba933:hover{background-color:var(--mantine-color-dark-8)}:where([data-mantine-color-scheme=dark]) .m_c44ba933:hover>.m_d8b5e363{background-color:#ffffff80}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_c44ba933:active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=light]) .m_c44ba933:active>.m_d8b5e363{background-color:#00000080}:where([data-mantine-color-scheme=dark]) .m_c44ba933:active{background-color:var(--mantine-color-dark-8)}:where([data-mantine-color-scheme=dark]) .m_c44ba933:active>.m_d8b5e363{background-color:#ffffff80}}.m_c44ba933:where([data-hidden],[data-state=hidden]){display:none}.m_c44ba933:where([data-orientation=vertical]){width:var(--scrollarea-scrollbar-size);top:0;bottom:var(--sa-corner-width);inset-inline-end:0}.m_c44ba933:where([data-orientation=vertical]):where([data-vertical-scrollbar-position=left]){inset-inline-end:auto;left:0;right:auto}.m_c44ba933:where([data-orientation=vertical]):where([data-vertical-scrollbar-position=right]){inset-inline-end:auto;left:auto;right:0}.m_c44ba933:where([data-orientation=horizontal]){height:var(--scrollarea-scrollbar-size);bottom:0;flex-direction:column;inset-inline-start:0;inset-inline-end:var(--sa-corner-width)}.m_c44ba933:where([data-orientation=horizontal]):where([data-vertical-scrollbar-position=left]){inset-inline:auto;left:var(--sa-corner-width);right:0}.m_c44ba933:where([data-orientation=horizontal]):where([data-vertical-scrollbar-position=right]){inset-inline:auto;left:0;right:var(--sa-corner-width)}.m_d8b5e363{border-radius:var(--scrollarea-scrollbar-size);opacity:var(--thumb-opacity);flex:1;transition:background-color .15s;position:relative;overflow:hidden}.m_d8b5e363:before{content:"";width:100%;height:100%;min-width:calc(2.75rem * var(--mantine-scale));min-height:calc(2.75rem * var(--mantine-scale));position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:where([data-mantine-color-scheme=light]) .m_d8b5e363{background-color:#0006}:where([data-mantine-color-scheme=dark]) .m_d8b5e363{background-color:#fff6}.m_21657268{opacity:0;inset-inline-end:0;transition:opacity .15s;display:block;position:absolute;bottom:0}.m_21657268:where([data-vertical-scrollbar-position=left]){inset-inline-end:auto;left:0;right:auto}.m_21657268:where([data-vertical-scrollbar-position=right]){inset-inline-end:auto;left:auto;right:0}:where([data-mantine-color-scheme=light]) .m_21657268{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_21657268{background-color:var(--mantine-color-dark-8)}.m_21657268:where([data-hovered]){opacity:1}.m_21657268:where([data-hidden]){display:none}.m_b1336c6{min-width:100%}.m_87cf2631{cursor:pointer;appearance:none;font-size:var(--mantine-font-size-md);text-align:start;color:inherit;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background-color:#0000;border:0;padding:0;text-decoration:none}.m_515a97f8{clip:rect(0 0 0 0);height:calc(.0625rem * var(--mantine-scale));width:calc(.0625rem * var(--mantine-scale));margin:calc(-.0625rem * var(--mantine-scale));white-space:nowrap;border:0;padding:0;position:absolute;overflow:hidden}.m_1b7284a3{--paper-radius:var(--mantine-radius-default);-webkit-tap-highlight-color:transparent;touch-action:manipulation;border-radius:var(--paper-radius);box-shadow:var(--paper-shadow);background-color:var(--mantine-color-body);outline:0;text-decoration:none;display:block}[data-mantine-color-scheme=light] .m_1b7284a3{--paper-border-color:var(--mantine-color-gray-3)}[data-mantine-color-scheme=dark] .m_1b7284a3{--paper-border-color:var(--mantine-color-dark-4)}.m_1b7284a3:where([data-with-border]){border:calc(.0625rem * var(--mantine-scale)) solid var(--paper-border-color)}.m_9814e45f{background:var(--overlay-bg,#0009);-webkit-backdrop-filter:var(--overlay-filter);backdrop-filter:var(--overlay-filter);border-radius:var(--overlay-radius,0);z-index:var(--overlay-z-index);position:absolute;inset:0}.m_9814e45f:where([data-fixed]){position:fixed}.m_9814e45f:where([data-center]){justify-content:center;align-items:center;display:flex}.m_38a85659{border:1px solid var(--popover-border-color);padding:var(--mantine-spacing-sm) var(--mantine-spacing-md);box-shadow:var(--popover-shadow,none);border-radius:var(--popover-radius,var(--mantine-radius-default));position:absolute}.m_38a85659:where([data-fixed]){position:fixed}.m_38a85659:focus{outline:none}:where([data-mantine-color-scheme=light]) .m_38a85659{--popover-border-color:var(--mantine-color-gray-2);background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_38a85659{--popover-border-color:var(--mantine-color-dark-4);background-color:var(--mantine-color-dark-6)}.m_a31dc6c1{background-color:inherit;border:1px solid var(--popover-border-color);z-index:1}.m_3d7bc908{position:fixed;inset:0}.m_5ae2e3c{--loader-size-xs:calc(1.125rem * var(--mantine-scale));--loader-size-sm:calc(1.375rem * var(--mantine-scale));--loader-size-md:calc(2.25rem * var(--mantine-scale));--loader-size-lg:calc(2.75rem * var(--mantine-scale));--loader-size-xl:calc(3.625rem * var(--mantine-scale));--loader-size:var(--loader-size-md);--loader-color:var(--mantine-primary-color-filled)}@keyframes m_5d2b3b9d{0%{opacity:0;transform:scale(.6)}50%,to{transform:scale(1)}}.m_7a2bd4cd{width:var(--loader-size);height:var(--loader-size);gap:calc(var(--loader-size) / 5);display:flex;position:relative}.m_870bb79{background:var(--loader-color);border-radius:calc(.125rem * var(--mantine-scale));flex:1;animation:1.2s cubic-bezier(0,.5,.5,1) infinite m_5d2b3b9d}.m_870bb79:first-of-type{animation-delay:-240ms}.m_870bb79:nth-of-type(2){animation-delay:-120ms}.m_870bb79:nth-of-type(3){animation-delay:0}@keyframes m_aac34a1{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.6)}}.m_4e3f22d7{justify-content:center;align-items:center;gap:calc(var(--loader-size) / 10);width:var(--loader-size);height:var(--loader-size);display:flex;position:relative}.m_870c4af{width:calc(var(--loader-size) / 3 - var(--loader-size) / 15);height:calc(var(--loader-size) / 3 - var(--loader-size) / 15);background:var(--loader-color);border-radius:50%;animation:.8s linear infinite m_aac34a1}.m_870c4af:nth-child(2){animation-delay:.4s}@keyframes m_f8e89c4b{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.m_b34414df{width:var(--loader-size);height:var(--loader-size);display:inline-block}.m_b34414df:after{content:"";width:var(--loader-size);height:var(--loader-size);border-radius:calc(625rem * var(--mantine-scale));border-width:calc(var(--loader-size) / 8);border-style:solid;border-color:var(--loader-color) var(--loader-color) var(--loader-color) transparent;animation:1.2s linear infinite m_f8e89c4b;display:block}.m_8d3f4000{--ai-size-xs:calc(1.125rem * var(--mantine-scale));--ai-size-sm:calc(1.375rem * var(--mantine-scale));--ai-size-md:calc(1.75rem * var(--mantine-scale));--ai-size-lg:calc(2.125rem * var(--mantine-scale));--ai-size-xl:calc(2.75rem * var(--mantine-scale));--ai-size-input-xs:calc(1.875rem * var(--mantine-scale));--ai-size-input-sm:calc(2.25rem * var(--mantine-scale));--ai-size-input-md:calc(2.625rem * var(--mantine-scale));--ai-size-input-lg:calc(3.125rem * var(--mantine-scale));--ai-size-input-xl:calc(3.75rem * var(--mantine-scale));--ai-size:var(--ai-size-md);--ai-color:var(--mantine-color-white);-webkit-user-select:none;user-select:none;width:var(--ai-size);height:var(--ai-size);min-width:var(--ai-size);min-height:var(--ai-size);border-radius:var(--ai-radius,var(--mantine-radius-default));background:var(--ai-bg,var(--mantine-primary-color-filled));color:var(--ai-color,var(--mantine-color-white));border:var(--ai-bd,calc(.0625rem * var(--mantine-scale)) solid transparent);cursor:pointer;justify-content:center;align-items:center;line-height:1;display:inline-flex;position:relative;overflow:hidden}@media (hover:hover){.m_8d3f4000:hover:where(:not([data-loading],:disabled,[data-disabled])){background-color:var(--ai-hover,var(--mantine-primary-color-filled-hover));color:var(--ai-hover-color,var(--ai-color))}}@media (hover:none){.m_8d3f4000:active:where(:not([data-loading],:disabled,[data-disabled])){background-color:var(--ai-hover,var(--mantine-primary-color-filled-hover));color:var(--ai-hover-color,var(--ai-color))}}.m_8d3f4000[data-loading]{cursor:not-allowed}.m_8d3f4000[data-loading] .m_8d3afb97{opacity:0;transform:translateY(100%)}.m_8d3f4000:where(:disabled:not([data-loading]),[data-disabled]:not([data-loading])){cursor:not-allowed;border:calc(.0625rem * var(--mantine-scale)) solid transparent;color:var(--mantine-color-disabled-color);background:var(--mantine-color-disabled)}.m_8d3f4000:where(:disabled:not([data-loading]),[data-disabled]:not([data-loading])):active{transform:none}.m_302b9fb1{inset:calc(-.0625rem * var(--mantine-scale));border-radius:var(--ai-radius,var(--mantine-radius-default));justify-content:center;align-items:center;display:flex;position:absolute}:where([data-mantine-color-scheme=light]) .m_302b9fb1{background-color:#ffffff26}:where([data-mantine-color-scheme=dark]) .m_302b9fb1{background-color:#00000026}.m_1a0f1b21{--ai-border-width:calc(.0625rem * var(--mantine-scale));display:flex}.m_1a0f1b21 :where(*):focus{z-index:1;position:relative}.m_1a0f1b21[data-orientation=horizontal]{flex-direction:row}.m_1a0f1b21[data-orientation=horizontal] .m_8d3f4000:not(:only-child):first-child,.m_1a0f1b21[data-orientation=horizontal] .m_437b6484:not(:only-child):first-child{border-inline-end-width:calc(var(--ai-border-width) / 2);border-start-end-radius:0;border-end-end-radius:0}.m_1a0f1b21[data-orientation=horizontal] .m_8d3f4000:not(:only-child):last-child,.m_1a0f1b21[data-orientation=horizontal] .m_437b6484:not(:only-child):last-child{border-inline-start-width:calc(var(--ai-border-width) / 2);border-start-start-radius:0;border-end-start-radius:0}.m_1a0f1b21[data-orientation=horizontal] .m_8d3f4000:not(:only-child):not(:first-child):not(:last-child),.m_1a0f1b21[data-orientation=horizontal] .m_437b6484:not(:only-child):not(:first-child):not(:last-child){border-inline-width:calc(var(--ai-border-width) / 2);border-radius:0}.m_1a0f1b21[data-orientation=vertical]{flex-direction:column}.m_1a0f1b21[data-orientation=vertical] .m_8d3f4000:not(:only-child):first-child,.m_1a0f1b21[data-orientation=vertical] .m_437b6484:not(:only-child):first-child{border-bottom-width:calc(var(--ai-border-width) / 2);border-end-end-radius:0;border-end-start-radius:0}.m_1a0f1b21[data-orientation=vertical] .m_8d3f4000:not(:only-child):last-child,.m_1a0f1b21[data-orientation=vertical] .m_437b6484:not(:only-child):last-child{border-top-width:calc(var(--ai-border-width) / 2);border-start-start-radius:0;border-start-end-radius:0}.m_1a0f1b21[data-orientation=vertical] .m_8d3f4000:not(:only-child):not(:first-child):not(:last-child),.m_1a0f1b21[data-orientation=vertical] .m_437b6484:not(:only-child):not(:first-child):not(:last-child){border-bottom-width:calc(var(--ai-border-width) / 2);border-top-width:calc(var(--ai-border-width) / 2);border-radius:0}.m_8d3afb97{justify-content:center;align-items:center;width:100%;height:100%;transition:transform .15s,opacity .1s;display:flex}.m_437b6484{--section-height-xs:calc(1.125rem * var(--mantine-scale));--section-height-sm:calc(1.375rem * var(--mantine-scale));--section-height-md:calc(1.75rem * var(--mantine-scale));--section-height-lg:calc(2.125rem * var(--mantine-scale));--section-height-xl:calc(2.75rem * var(--mantine-scale));--section-height-input-xs:calc(1.875rem * var(--mantine-scale));--section-height-input-sm:calc(2.25rem * var(--mantine-scale));--section-height-input-md:calc(2.625rem * var(--mantine-scale));--section-height-input-lg:calc(3.125rem * var(--mantine-scale));--section-height-input-xl:calc(3.75rem * var(--mantine-scale));--section-padding-x-xs:calc(.375rem * var(--mantine-scale));--section-padding-x-sm:calc(.5rem * var(--mantine-scale));--section-padding-x-md:calc(.625rem * var(--mantine-scale));--section-padding-x-lg:calc(.75rem * var(--mantine-scale));--section-padding-x-xl:calc(1rem * var(--mantine-scale));--section-height:var(--section-height-sm);--section-padding-x:var(--section-padding-x-sm);--section-color:var(--mantine-color-white);font-weight:var(--mantine-font-weight-medium);border-radius:var(--section-radius,var(--mantine-radius-default));width:auto;font-size:var(--section-fz,var(--mantine-font-size-sm));background:var(--section-bg,var(--mantine-primary-color-filled));border:var(--section-bd,calc(.0625rem * var(--mantine-scale)) solid transparent);color:var(--section-color,var(--mantine-color-white));height:var(--section-height,var(--section-height-sm));padding-inline:var(--section-padding-x,var(--section-padding-x-sm));vertical-align:middle;justify-content:center;align-items:center;line-height:1;display:inline-flex}.m_86a44da5{--cb-size-xs:calc(1.125rem * var(--mantine-scale));--cb-size-sm:calc(1.375rem * var(--mantine-scale));--cb-size-md:calc(1.75rem * var(--mantine-scale));--cb-size-lg:calc(2.125rem * var(--mantine-scale));--cb-size-xl:calc(2.75rem * var(--mantine-scale));--cb-size:var(--cb-size-md);--cb-icon-size:70%;--cb-radius:var(--mantine-radius-default);-webkit-user-select:none;user-select:none;width:var(--cb-size);height:var(--cb-size);min-width:var(--cb-size);min-height:var(--cb-size);border-radius:var(--cb-radius);justify-content:center;align-items:center;line-height:1;display:inline-flex;position:relative}:where([data-mantine-color-scheme=light]) .m_86a44da5{color:var(--mantine-color-gray-7)}:where([data-mantine-color-scheme=dark]) .m_86a44da5{color:var(--mantine-color-dark-1)}.m_86a44da5[data-disabled],.m_86a44da5:disabled{cursor:not-allowed;opacity:.6}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_220c80f2:where(:not([data-disabled],:disabled)):hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_220c80f2:where(:not([data-disabled],:disabled)):hover{background-color:var(--mantine-color-dark-6)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_220c80f2:where(:not([data-disabled],:disabled)):active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_220c80f2:where(:not([data-disabled],:disabled)):active{background-color:var(--mantine-color-dark-6)}}.m_4081bf90{flex-direction:row;flex-wrap:var(--group-wrap,wrap);justify-content:var(--group-justify,flex-start);align-items:var(--group-align,center);gap:var(--group-gap,var(--mantine-spacing-md));display:flex}.m_4081bf90:where([data-grow])>*{max-width:var(--group-child-width);flex-grow:1}.m_615af6c9{line-height:1;font-weight:var(--mantine-font-weight-regular);font-size:var(--mantine-font-size-md);margin:0;padding:0}.m_b5489c3c{padding:var(--mb-padding,var(--mantine-spacing-md));background-color:var(--mantine-color-body);z-index:1000;min-height:calc(3.75rem * var(--mantine-scale));justify-content:space-between;align-items:center;padding-inline-end:calc(var(--mb-padding,var(--mantine-spacing-md)) - calc(.3125rem * var(--mantine-scale)));transition:padding-inline-end .1s;display:flex;position:sticky;top:0}.m_60c222c7{width:100%;z-index:var(--mb-z-index);pointer-events:none;position:fixed;top:0;bottom:0}.m_fd1ab0aa{pointer-events:all;box-shadow:var(--mb-shadow,var(--mantine-shadow-xl))}.m_fd1ab0aa [data-mantine-scrollbar]{z-index:1001}[data-offset-scrollbars] .m_fd1ab0aa:has([data-mantine-scrollbar]) .m_b5489c3c{padding-inline-end:calc(var(--mb-padding,var(--mantine-spacing-md)) + calc(.3125rem * var(--mantine-scale)))}.m_606cb269{margin-inline-start:auto}.m_5df29311{padding:var(--mb-padding,var(--mantine-spacing-md));padding-top:var(--mb-padding,var(--mantine-spacing-md))}.m_5df29311:where(:not(:only-child)){padding-top:0}.m_6c018570{margin-top:var(--input-margin-top,0rem);margin-bottom:var(--input-margin-bottom,0rem);--input-height-xs:calc(1.875rem * var(--mantine-scale));--input-height-sm:calc(2.25rem * var(--mantine-scale));--input-height-md:calc(2.625rem * var(--mantine-scale));--input-height-lg:calc(3.125rem * var(--mantine-scale));--input-height-xl:calc(3.75rem * var(--mantine-scale));--input-padding-y-xs:calc(.3125rem * var(--mantine-scale));--input-padding-y-sm:calc(.375rem * var(--mantine-scale));--input-padding-y-md:calc(.5rem * var(--mantine-scale));--input-padding-y-lg:calc(.625rem * var(--mantine-scale));--input-padding-y-xl:calc(.8125rem * var(--mantine-scale));--input-height:var(--input-height-sm);--input-radius:var(--mantine-radius-default);--input-cursor:text;--input-line-height:calc(var(--input-height) - calc(.125rem * var(--mantine-scale)));--input-padding:calc(var(--input-height) / 3);--input-padding-inline-start:var(--input-padding);--input-padding-inline-end:var(--input-padding);--input-placeholder-color:var(--mantine-color-placeholder);--input-color:var(--mantine-color-text);--input-disabled-bg:var(--mantine-color-disabled);--input-disabled-color:var(--mantine-color-disabled-color);--input-left-section-size:var(--input-left-section-width,calc(var(--input-height) - calc(.125rem * var(--mantine-scale))));--input-right-section-size:var(--input-right-section-width,calc(var(--input-height) - calc(.125rem * var(--mantine-scale))));--input-size:var(--input-height);--section-y:calc(.0625rem * var(--mantine-scale));--left-section-start:calc(.0625rem * var(--mantine-scale));--left-section-border-radius:var(--input-radius) 0 0 var(--input-radius);--right-section-end:calc(.0625rem * var(--mantine-scale));--right-section-border-radius:0 var(--input-radius) var(--input-radius) 0;position:relative}.m_6c018570[data-variant=unstyled]{--input-padding:0;--input-padding-y:0;--input-padding-inline-start:0;--input-padding-inline-end:0}.m_6c018570[data-pointer]{--input-cursor:pointer}.m_6c018570[data-with-bottom-section]{--input-bottom-section-height:calc(1.75rem * var(--mantine-scale))}.m_6c018570[data-multiline]{--input-padding-y-xs:calc(.28125rem * var(--mantine-scale));--input-padding-y-sm:calc(.34375rem * var(--mantine-scale));--input-padding-y-md:calc(.4375rem * var(--mantine-scale));--input-padding-y-lg:calc(.59375rem * var(--mantine-scale));--input-padding-y-xl:calc(.8125rem * var(--mantine-scale));--input-size:auto;--input-line-height:var(--mantine-line-height)}.m_6c018570[data-with-left-section]{--input-padding-inline-start:var(--input-left-section-size)}.m_6c018570[data-with-right-section]{--input-padding-inline-end:var(--input-right-section-size)}.m_6c018570[data-size=xs] .m_6c018570[data-with-right-section]:has([data-combined-clear-section]){--input-padding-inline-end:calc(2.5625rem * var(--mantine-scale))}.m_6c018570[data-size=sm] .m_6c018570[data-with-right-section]:has([data-combined-clear-section]){--input-padding-inline-end:calc(3.125rem * var(--mantine-scale))}.m_6c018570[data-size=md] .m_6c018570[data-with-right-section]:has([data-combined-clear-section]){--input-padding-inline-end:calc(3.75rem * var(--mantine-scale))}.m_6c018570[data-size=lg] .m_6c018570[data-with-right-section]:has([data-combined-clear-section]){--input-padding-inline-end:calc(4.5rem * var(--mantine-scale))}.m_6c018570[data-size=xl] .m_6c018570[data-with-right-section]:has([data-combined-clear-section]){--input-padding-inline-end:calc(5.5625rem * var(--mantine-scale))}[data-mantine-color-scheme=light] .m_6c018570[data-variant=default]{--input-bd:var(--mantine-color-gray-4);--input-bg:var(--mantine-color-white);--input-bd-focus:var(--mantine-primary-color-filled)}[data-mantine-color-scheme=light] .m_6c018570[data-variant=filled]{--input-bd:transparent;--input-bg:var(--mantine-color-gray-1);--input-bd-focus:var(--mantine-primary-color-filled)}[data-mantine-color-scheme=light] .m_6c018570[data-variant=unstyled]{--input-bd:transparent;--input-bg:transparent;--input-bd-focus:transparent}[data-mantine-color-scheme=dark] .m_6c018570[data-variant=default]{--input-bd:var(--mantine-color-dark-4);--input-bg:var(--mantine-color-dark-6);--input-bd-focus:var(--mantine-primary-color-filled)}[data-mantine-color-scheme=dark] .m_6c018570[data-variant=filled]{--input-bd:transparent;--input-bg:var(--mantine-color-dark-5);--input-bd-focus:var(--mantine-primary-color-filled)}[data-mantine-color-scheme=dark] .m_6c018570[data-variant=unstyled]{--input-bd:transparent;--input-bg:transparent;--input-bd-focus:transparent}[data-mantine-color-scheme] .m_6c018570[data-error]:not([data-variant=unstyled]){--input-bd:var(--mantine-color-error)}[data-mantine-color-scheme] .m_6c018570[data-error]{--input-color:var(--mantine-color-error);--input-placeholder-color:var(--mantine-color-error);--input-section-color:var(--mantine-color-error)}[data-mantine-color-scheme] .m_6c018570[data-success]:not([data-variant=unstyled]){--input-bd:var(--mantine-color-success)}[data-mantine-color-scheme] .m_6c018570[data-success]{--input-section-color:var(--mantine-color-success)}:where([dir=rtl]) .m_6c018570{--left-section-border-radius:0 var(--input-radius) var(--input-radius) 0;--right-section-border-radius:var(--input-radius) 0 0 var(--input-radius)}.m_6c018570[dir=ltr]{--left-section-border-radius:var(--input-radius) 0 0 var(--input-radius);--right-section-border-radius:0 var(--input-radius) var(--input-radius) 0}.m_8fb7ebe7{-webkit-tap-highlight-color:transparent;appearance:none;resize:var(--input-resize,none);width:100%;text-align:var(--input-text-align,start);color:var(--input-color);border:calc(.0625rem * var(--mantine-scale)) solid var(--input-bd);background-color:var(--input-bg);font-family:var(--input-font-family,var(--mantine-font-family));height:var(--input-size);min-height:var(--input-height);line-height:var(--input-line-height);font-size:var(--_input-fz,var(--input-fz,var(--mantine-font-size-md)));border-radius:var(--input-radius);padding-inline-start:var(--input-padding-inline-start);padding-inline-end:var(--input-padding-inline-end);padding-top:var(--input-padding-y,0rem);padding-bottom:var(--input-padding-y,0rem);cursor:var(--input-cursor);overflow:var(--input-overflow);transition:border-color .1s;display:block}.m_8fb7ebe7[data-no-overflow]{--input-overflow:hidden}.m_8fb7ebe7[data-monospace]{--input-font-family:var(--mantine-font-family-monospace);--_input-fz:calc(var(--input-fz) - calc(.125rem * var(--mantine-scale)))}.m_8fb7ebe7:focus,.m_8fb7ebe7:focus-within{--input-bd:var(--input-bd-focus);outline:none}.m_6c018570[data-error] .m_8fb7ebe7:focus,.m_6c018570[data-error] .m_8fb7ebe7:focus-within{--input-bd:var(--mantine-color-error)}.m_6c018570[data-success] .m_8fb7ebe7:focus,.m_6c018570[data-success] .m_8fb7ebe7:focus-within{--input-bd:var(--mantine-color-success)}.m_8fb7ebe7::placeholder{color:var(--input-placeholder-color);opacity:1}.m_8fb7ebe7::-webkit-inner-spin-button{appearance:none}.m_8fb7ebe7::-webkit-outer-spin-button{appearance:none}.m_8fb7ebe7::-webkit-search-decoration{appearance:none}.m_8fb7ebe7::-webkit-search-cancel-button{appearance:none}.m_8fb7ebe7::-webkit-search-results-button{appearance:none}.m_8fb7ebe7::-webkit-search-results-decoration{appearance:none}.m_8fb7ebe7[type=number]{-moz-appearance:textfield}.m_8fb7ebe7:disabled,.m_8fb7ebe7[data-disabled]{cursor:not-allowed;opacity:.6;background-color:var(--input-disabled-bg);color:var(--input-disabled-color)}.m_8fb7ebe7:has(input:disabled){cursor:not-allowed;opacity:.6;background-color:var(--input-disabled-bg);color:var(--input-disabled-color)}.m_8fb7ebe7[readonly]{caret-color:#0000}[data-with-bottom-section] .m_8fb7ebe7{padding-bottom:calc(var(--input-padding-y,0rem) + var(--input-bottom-section-height))}.m_93f4ed57{bottom:calc(.0625rem * var(--mantine-scale));left:calc(.0625rem * var(--mantine-scale));right:calc(.0625rem * var(--mantine-scale));height:var(--input-bottom-section-height);padding-inline:var(--input-padding);border-radius:0 0 var(--input-radius) var(--input-radius);pointer-events:all;color:var(--mantine-color-dimmed);font-size:var(--input-fz,var(--mantine-font-size-sm));justify-content:flex-start;align-items:center;display:flex;position:absolute}.m_82577fc2{pointer-events:var(--section-pointer-events);z-index:1;inset-inline-start:var(--section-start);inset-inline-end:var(--section-end);bottom:var(--section-y);top:var(--section-y);width:var(--section-size);border-radius:var(--section-border-radius);color:var(--input-section-color,var(--mantine-color-dimmed));justify-content:center;align-items:center;display:flex;position:absolute}.m_82577fc2[data-position=right]{--section-pointer-events:var(--input-right-section-pointer-events);--section-end:var(--right-section-end);--section-size:var(--input-right-section-size);--section-border-radius:var(--right-section-border-radius)}.m_6c018570[data-size=xs] .m_82577fc2[data-position=right]:has([data-combined-clear-section]){--section-size:calc(2.5625rem * var(--mantine-scale))}.m_6c018570[data-size=sm] .m_82577fc2[data-position=right]:has([data-combined-clear-section]){--section-size:calc(3.125rem * var(--mantine-scale))}.m_6c018570[data-size=md] .m_82577fc2[data-position=right]:has([data-combined-clear-section]){--section-size:calc(3.75rem * var(--mantine-scale))}.m_6c018570[data-size=lg] .m_82577fc2[data-position=right]:has([data-combined-clear-section]){--section-size:calc(4.5rem * var(--mantine-scale))}.m_6c018570[data-size=xl] .m_82577fc2[data-position=right]:has([data-combined-clear-section]){--section-size:calc(5.5625rem * var(--mantine-scale))}.m_82577fc2[data-position=left]{--section-pointer-events:var(--input-left-section-pointer-events);--section-start:var(--left-section-start);--section-size:var(--input-left-section-size);--section-border-radius:var(--left-section-border-radius)}.m_88bacfd0{color:var(--input-placeholder-color,var(--mantine-color-placeholder))}.m_6c018570[data-error] .m_88bacfd0{--input-placeholder-color:var(--input-color,var(--mantine-color-placeholder))}.m_46b77525{line-height:var(--mantine-line-height)}.m_8fdc1311{font-weight:var(--mantine-font-weight-medium);overflow-wrap:break-word;cursor:default;-webkit-tap-highlight-color:transparent;font-size:var(--input-label-size,var(--mantine-font-size-sm));display:inline-block}.m_78a94662{color:var(--input-asterisk-color,var(--mantine-color-error))}.m_8f816625,.m_9d9d40e0,.m_fe47ce59{word-wrap:break-word;margin:0;padding:0;line-height:1.2;display:block}.m_8f816625{color:var(--mantine-color-error);font-size:var(--input-error-size,calc(var(--mantine-font-size-sm) - calc(.125rem * var(--mantine-scale))))}.m_9d9d40e0{color:var(--mantine-color-success);font-size:var(--input-success-size,calc(var(--mantine-font-size-sm) - calc(.125rem * var(--mantine-scale))))}.m_fe47ce59{color:var(--mantine-color-dimmed);font-size:var(--input-description-size,calc(var(--mantine-font-size-sm) - calc(.125rem * var(--mantine-scale))))}.m_8bffd616{display:flex}.m_96b553a6{--transition-duration:.15s;z-index:0;transition-property:transform,width,height;transition-duration:0s;transition-timing-function:ease;position:absolute;top:0;left:0}.m_96b553a6:where([data-initialized]){transition-duration:var(--transition-duration)}.m_96b553a6:where([data-hidden]){display:none}.m_9bdbb667{--accordion-radius:var(--mantine-radius-default)}.m_df78851f{overflow-wrap:break-word}.m_4ba554d4{padding:var(--mantine-spacing-md);padding-top:calc(var(--mantine-spacing-xs) / 2)}.m_8fa820a0{width:100%;margin:0;padding:0}.m_4ba585b8{width:100%;padding-inline:var(--mantine-spacing-md);opacity:1;cursor:pointer;color:var(--mantine-color-bright);background-color:#0000;flex-direction:row-reverse;align-items:center;display:flex}.m_4ba585b8:where([data-chevron-position=left]){flex-direction:row;padding-inline-start:0}.m_4ba585b8:where(:disabled,[data-disabled]){opacity:.4;cursor:not-allowed}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_6939a5e9:where(:not(:disabled,[data-disabled])):hover,:where([data-mantine-color-scheme=light]) .m_4271d21b:where(:not(:disabled,[data-disabled])):hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_6939a5e9:where(:not(:disabled,[data-disabled])):hover,:where([data-mantine-color-scheme=dark]) .m_4271d21b:where(:not(:disabled,[data-disabled])):hover{background-color:var(--mantine-color-dark-6)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_6939a5e9:where(:not(:disabled,[data-disabled])):active,:where([data-mantine-color-scheme=light]) .m_4271d21b:where(:not(:disabled,[data-disabled])):active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_6939a5e9:where(:not(:disabled,[data-disabled])):active,:where([data-mantine-color-scheme=dark]) .m_4271d21b:where(:not(:disabled,[data-disabled])):active{background-color:var(--mantine-color-dark-6)}}.m_df3ffa0f{color:inherit;font-weight:var(--mantine-font-weight-regular);text-overflow:ellipsis;padding-top:var(--mantine-spacing-sm);padding-bottom:var(--mantine-spacing-sm);flex:1;overflow:hidden}.m_3f35ae96{transition:transform var(--accordion-transition-duration,.2s) ease;width:var(--accordion-chevron-size,calc(.9375rem * var(--mantine-scale)));min-width:var(--accordion-chevron-size,calc(.9375rem * var(--mantine-scale)));justify-content:flex-start;align-items:center;display:flex;transform:rotate(0)}.m_3f35ae96:where([data-rotate]){transform:rotate(180deg)}.m_3f35ae96:where([data-position=left]){margin-inline-start:var(--mantine-spacing-md);margin-inline-end:var(--mantine-spacing-md)}.m_9bd771fe{justify-content:center;align-items:center;margin-inline-end:var(--mantine-spacing-sm);display:flex}.m_9bd771fe:where([data-chevron-position=left]){margin-inline-start:var(--mantine-spacing-lg);margin-inline-end:0}:where([data-mantine-color-scheme=light]) .m_9bd7b098{--item-border-color:var(--mantine-color-gray-3);--item-filled-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_9bd7b098{--item-border-color:var(--mantine-color-dark-4);--item-filled-color:var(--mantine-color-dark-6)}.m_fe19b709{border-bottom:1px solid var(--item-border-color)}.m_1f921b3b{border:1px solid var(--item-border-color);transition:background-color .15s}.m_1f921b3b:where([data-active]){background-color:var(--item-filled-color)}.m_1f921b3b:first-of-type,.m_1f921b3b:first-of-type>[data-accordion-control],.m_1f921b3b:first-of-type>.m_8fa820a0>[data-accordion-control]{border-start-start-radius:var(--accordion-radius);border-start-end-radius:var(--accordion-radius)}.m_1f921b3b:last-of-type,.m_1f921b3b:last-of-type>[data-accordion-control],.m_1f921b3b:last-of-type>.m_8fa820a0>[data-accordion-control]{border-end-end-radius:var(--accordion-radius);border-end-start-radius:var(--accordion-radius)}.m_1f921b3b+.m_1f921b3b{border-top:0}.m_2cdf939a{border-radius:var(--accordion-radius)}.m_2cdf939a:where([data-active]){background-color:var(--item-filled-color)}.m_9f59b069{background-color:var(--item-filled-color);border-radius:var(--accordion-radius);border:calc(.0625rem * var(--mantine-scale)) solid transparent;transition:background-color .15s}.m_9f59b069[data-active]{border-color:var(--item-border-color)}:where([data-mantine-color-scheme=light]) .m_9f59b069[data-active]{background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_9f59b069[data-active]{background-color:var(--mantine-color-dark-7)}.m_9f59b069+.m_9f59b069{margin-top:var(--mantine-spacing-md)}.m_7f854edf{z-index:var(--affix-z-index);inset-inline-start:var(--affix-left);inset-inline-end:var(--affix-right);top:var(--affix-top);bottom:var(--affix-bottom);position:fixed}.m_de09d2d2{align-items:center;gap:var(--mantine-spacing-sm);width:fit-content;margin-inline:auto;display:flex}.m_eab73b29{width:calc(.0625rem * var(--mantine-scale));background-color:var(--mantine-color-default-border);align-self:stretch}.m_66836ed3{--alert-radius:var(--mantine-radius-default);--alert-bg:var(--mantine-primary-color-light);--alert-bd:calc(.0625rem * var(--mantine-scale)) solid transparent;--alert-color:var(--mantine-primary-color-light-color);padding:var(--mantine-spacing-md) var(--mantine-spacing-md);border-radius:var(--alert-radius);background-color:var(--alert-bg);border:var(--alert-bd);color:var(--alert-color);position:relative;overflow:hidden}.m_a5d60502{display:flex}.m_667c2793{gap:var(--mantine-spacing-xs);flex-direction:column;flex:1;display:flex}.m_6a03f287{font-size:var(--mantine-font-size-sm);font-weight:var(--mantine-font-weight-bold);justify-content:space-between;align-items:center;display:flex}.m_6a03f287:where([data-with-close-button]){padding-inline-end:var(--mantine-spacing-md)}.m_698f4f23{text-overflow:ellipsis;display:block;overflow:hidden}.m_667f2a6a{width:calc(1.25rem * var(--mantine-scale));height:calc(1.25rem * var(--mantine-scale));margin-inline-end:var(--mantine-spacing-md);margin-top:calc(.0625rem * var(--mantine-scale));justify-content:flex-start;align-items:center;line-height:1;display:flex}.m_7fa78076{text-overflow:ellipsis;font-size:var(--mantine-font-size-sm);overflow:hidden}:where([data-mantine-color-scheme=light]) .m_7fa78076{color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_7fa78076{color:var(--mantine-color-white)}.m_7fa78076:where([data-variant=filled]){color:var(--alert-color)}.m_7fa78076:where([data-variant=white]){color:var(--mantine-color-black)}.m_87f54839{width:calc(1.25rem * var(--mantine-scale));height:calc(1.25rem * var(--mantine-scale));color:var(--alert-color)}.m_b6d8b162{-webkit-tap-highlight-color:transparent;font-size:var(--text-fz,var(--mantine-font-size-md));line-height:var(--text-lh,var(--mantine-line-height-md));font-weight:var(--mantine-font-weight-regular);text-wrap:var(--text-text-wrap,var(--mantine-text-wrap));margin:0;padding:0;text-decoration:none}.m_b6d8b162:where([data-truncate]){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.m_b6d8b162:where([data-truncate=start]){text-align:end;direction:rtl}:where([dir=rtl]) .m_b6d8b162:where([data-truncate=start]){text-align:start;direction:ltr}.m_b6d8b162:where([data-variant=gradient]){background-image:var(--text-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.m_b6d8b162:where([data-line-clamp]){text-overflow:ellipsis;-webkit-line-clamp:var(--text-line-clamp);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.m_b6d8b162:where([data-inherit]){line-height:inherit;font-weight:inherit;font-size:inherit}.m_b6d8b162:where([data-inline]){line-height:1}.m_849cf0da{color:var(--mantine-color-anchor);appearance:none;cursor:pointer;background-color:#0000;border:none;margin:0;padding:0;text-decoration:none;display:inline}@media (hover:hover){.m_849cf0da:where([data-underline=hover]):hover{text-decoration:underline}}@media (hover:none){.m_849cf0da:where([data-underline=hover]):active{text-decoration:underline}}.m_849cf0da:where([data-underline=not-hover]){text-decoration:underline}@media (hover:hover){.m_849cf0da:where([data-underline=not-hover]):hover{text-decoration:none}}@media (hover:none){.m_849cf0da:where([data-underline=not-hover]):active{text-decoration:none}}.m_849cf0da:where([data-underline=always]){text-decoration:underline}.m_849cf0da:where([data-variant=gradient]),.m_849cf0da:where([data-variant=gradient]):hover{text-decoration:none}.m_849cf0da:where([data-line-clamp]){display:-webkit-box}.m_48204f9b{width:var(--slider-size);height:var(--slider-size);-webkit-user-select:none;user-select:none;border-radius:100%;justify-content:center;align-items:center;display:flex;position:relative}.m_48204f9b:focus-within{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.m_48204f9b{--slider-size:calc(3.75rem * var(--mantine-scale));--thumb-size:calc(var(--slider-size) / 5)}:where([data-mantine-color-scheme=light]) .m_48204f9b{background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_48204f9b{background-color:var(--mantine-color-dark-5)}.m_bb9cdbad{inset:calc(.0625rem * var(--mantine-scale));border-radius:var(--slider-size);pointer-events:none;position:absolute}.m_481dd586{width:calc(.125rem * var(--mantine-scale));transform:rotate(var(--angle));position:absolute;top:0;bottom:0;left:calc(50% - 1px)}.m_481dd586:before{content:"";top:calc(var(--thumb-size) / 3);left:calc(.03125rem * var(--mantine-scale));width:calc(.0625rem * var(--mantine-scale));height:calc(var(--thumb-size) / 1.5);position:absolute;transform:translate(-50%,-50%)}:where([data-mantine-color-scheme=light]) .m_481dd586:before{background-color:var(--mantine-color-gray-4)}:where([data-mantine-color-scheme=dark]) .m_481dd586:before{background-color:var(--mantine-color-dark-3)}.m_481dd586[data-label]:after{min-width:calc(1.125rem * var(--mantine-scale));text-align:center;content:attr(data-label);top:calc(-1.5rem * var(--mantine-scale));left:calc(-.4375rem * var(--mantine-scale));transform:rotate(calc(360deg - var(--angle)));font-size:var(--mantine-font-size-xs);position:absolute}.m_bc02ba3d{height:100%;width:calc(.1875rem * var(--mantine-scale));pointer-events:none;outline:none;position:absolute;inset-block:0;inset-inline:calc(50% - 1.5px) 0}.m_bc02ba3d:before{content:"";height:min(var(--thumb-size), calc(var(--slider-size) / 2));width:calc(.1875rem * var(--mantine-scale));position:absolute;top:0;right:0}:where([data-mantine-color-scheme=light]) .m_bc02ba3d:before{background-color:var(--mantine-color-gray-7)}:where([data-mantine-color-scheme=dark]) .m_bc02ba3d:before{background-color:var(--mantine-color-dark-1)}.m_bb8e875b{font-size:var(--mantine-font-size-xs)}.m_89ab340[data-resizing]{--app-shell-transition-duration:0s!important}.m_89ab340[data-disabled]{--app-shell-header-offset:0rem!important;--app-shell-navbar-offset:0rem!important;--app-shell-aside-offset:0rem!important;--app-shell-footer-offset:0rem!important}.m_89ab340[data-mode=static]{grid-template-columns:var(--app-shell-navbar-width,0) 1fr var(--app-shell-aside-width,0);grid-template-rows:auto 1fr auto;height:100%;display:grid;position:relative;overflow:auto}[data-mantine-color-scheme=light] .m_89ab340{--app-shell-border-color:var(--mantine-color-gray-3)}[data-mantine-color-scheme=dark] .m_89ab340{--app-shell-border-color:var(--mantine-color-dark-4)}.m_45252eee,.m_9cdde9a,.m_3b16f56b,.m_8983817,.m_3840c879{transition-duration:var(--app-shell-transition-duration);transition-timing-function:var(--app-shell-transition-timing-function)}.m_45252eee,.m_9cdde9a{top:var(--app-shell-header-offset,0rem);height:calc(100dvh - var(--app-shell-header-offset,0rem) - var(--app-shell-footer-offset,0rem));background-color:var(--mantine-color-body);flex-direction:column;transition-property:transform,top,height;display:flex;position:fixed}:where([data-mode=static]) .m_45252eee,:where([data-mode=static]) .m_9cdde9a{position:var(--app-shell-navbar-position,fixed);grid-row:var(--app-shell-navbar-grid-row,auto);height:100%}:where([data-layout=alt]) .m_45252eee,:where([data-layout=alt]) .m_9cdde9a{height:100dvh;top:0}:where([data-mode=static][data-layout=alt]) .m_45252eee,:where([data-mode=static][data-layout=alt]) .m_9cdde9a{grid-row:1/-1;height:100%}.m_45252eee{width:var(--app-shell-navbar-width);transform:var(--app-shell-navbar-transform);z-index:var(--app-shell-navbar-z-index);transition-property:transform,top,height;inset-inline-start:0}:where([data-mode=static]) .m_45252eee{grid-column:var(--app-shell-navbar-grid-column,auto);display:var(--app-shell-navbar-display,flex)}:where([dir=rtl]) .m_45252eee{transform:var(--app-shell-navbar-transform-rtl)}.m_45252eee:where([data-with-border]){border-inline-end:1px solid var(--app-shell-border-color)}.m_9cdde9a{width:var(--app-shell-aside-width);transform:var(--app-shell-aside-transform);z-index:var(--app-shell-aside-z-index);inset-inline-end:0}:where([data-mode=static]) .m_9cdde9a{position:var(--app-shell-aside-position,fixed);grid-column:var(--app-shell-aside-grid-column,auto);grid-row:var(--app-shell-aside-grid-row,auto);display:var(--app-shell-aside-display,flex)}:where([dir=rtl]) .m_9cdde9a{transform:var(--app-shell-aside-transform-rtl)}.m_9cdde9a:where([data-with-border]){border-inline-start:1px solid var(--app-shell-border-color)}:where([data-mode=static][data-layout=alt]) .m_9cdde9a{grid-row:1/-1}:where([data-scroll-locked]) .m_9cdde9a{visibility:var(--app-shell-aside-scroll-locked-visibility)}.m_8983817{padding-inline-start:calc(var(--app-shell-navbar-offset,0rem) + var(--app-shell-padding));padding-inline-end:calc(var(--app-shell-aside-offset,0rem) + var(--app-shell-padding));padding-top:calc(var(--app-shell-header-offset,0rem) + var(--app-shell-padding));padding-bottom:calc(var(--app-shell-footer-offset,0rem) + var(--app-shell-padding));min-height:100dvh;transition-property:padding}:where([data-mode=static]) .m_8983817{padding-inline-start:var(--app-shell-padding);padding-inline-end:var(--app-shell-padding);padding-top:var(--app-shell-padding);padding-bottom:var(--app-shell-padding);grid-column:var(--app-shell-main-column-start,1) / var(--app-shell-main-column-end,-1);grid-row:var(--app-shell-main-grid-row,2);min-height:auto}.m_3b16f56b,.m_3840c879{background-color:var(--mantine-color-body);transition-property:transform,margin-inline-start,margin-inline-end;position:fixed;inset-inline:0}:where([data-mode=static]) .m_3b16f56b,:where([data-mode=static]) .m_3840c879{position:var(--app-shell-header-position,fixed);grid-column:var(--app-shell-header-grid-column,auto)}:where([data-layout=alt]) .m_3b16f56b,:where([data-layout=alt]) .m_3840c879{margin-inline-start:var(--app-shell-navbar-offset,0rem);margin-inline-end:var(--app-shell-aside-offset,0rem)}:where([data-mode=static][data-layout=alt]) .m_3b16f56b,:where([data-mode=static][data-layout=alt]) .m_3840c879{grid-column:var(--app-shell-main-column-start,1) / var(--app-shell-main-column-end,-1);margin-inline:0}.m_3b16f56b{height:var(--app-shell-header-height);background-color:var(--mantine-color-body);transform:var(--app-shell-header-transform);z-index:var(--app-shell-header-z-index);top:0}:where([data-mode=static]) .m_3b16f56b{grid-row:var(--app-shell-header-grid-row,auto)}.m_3b16f56b:where([data-with-border]){border-bottom:1px solid var(--app-shell-border-color)}.m_3840c879{height:calc(var(--app-shell-footer-height) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);transform:var(--app-shell-footer-transform);z-index:var(--app-shell-footer-z-index);bottom:0}:where([data-mode=static]) .m_3840c879{position:var(--app-shell-footer-position,fixed);grid-column:var(--app-shell-footer-grid-column,auto);grid-row:var(--app-shell-footer-grid-row,auto)}:where([data-mode=static][data-layout=alt]) .m_3840c879{grid-column:var(--app-shell-main-column-start,1) / var(--app-shell-main-column-end,-1)}.m_3840c879:where([data-with-border]){border-top:1px solid var(--app-shell-border-color)}.m_6dcfc7c7{flex-grow:0}.m_6dcfc7c7:where([data-grow]){flex-grow:1}.m_71ac47fc{--ar-ratio:1;max-width:100%}.m_71ac47fc>:where(:not(style)){aspect-ratio:var(--ar-ratio);width:100%}.m_71ac47fc>:where(img,video){object-fit:cover}.m_88b62a41{--combobox-padding:calc(.25rem * var(--mantine-scale));padding:var(--combobox-padding)}.m_88b62a41:has([data-mantine-scrollbar]) .m_985517d8{max-width:calc(100% + var(--combobox-padding))}.m_88b62a41[data-composed]{padding-inline-end:0}.m_88b62a41[data-hidden]{display:none}.m_88b62a41[data-floating-height=viewport]:not([data-hidden]){--combobox-floating-options-max-height:calc(var(--combobox-floating-max-height,100vh) - var(--combobox-padding) * 2);max-height:var(--combobox-floating-max-height,none);overflow:hidden}.m_88b62a41,.m_b2821a6e{--combobox-option-padding-xs:calc(.25rem * var(--mantine-scale)) calc(.5rem * var(--mantine-scale));--combobox-option-padding-sm:calc(.375rem * var(--mantine-scale)) calc(.625rem * var(--mantine-scale));--combobox-option-padding-md:calc(.5rem * var(--mantine-scale)) calc(.75rem * var(--mantine-scale));--combobox-option-padding-lg:calc(.625rem * var(--mantine-scale)) calc(1rem * var(--mantine-scale));--combobox-option-padding-xl:calc(.875rem * var(--mantine-scale)) calc(1.25rem * var(--mantine-scale));--combobox-option-padding:var(--combobox-option-padding-sm)}.m_92253aa5{padding:var(--combobox-option-padding);font-size:var(--combobox-option-fz,var(--mantine-font-size-sm));border-radius:var(--mantine-radius-default);color:inherit;cursor:pointer;overflow-wrap:break-word;background-color:#0000}.m_92253aa5:where([data-combobox-selected]){background-color:var(--mantine-primary-color-filled);color:var(--mantine-color-white)}.m_92253aa5:where([data-combobox-disabled]){cursor:not-allowed;opacity:.35}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_92253aa5:hover:where(:not([data-combobox-selected],[data-combobox-disabled])){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_92253aa5:hover:where(:not([data-combobox-selected],[data-combobox-disabled])){background-color:var(--mantine-color-dark-7)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_92253aa5:active:where(:not([data-combobox-selected],[data-combobox-disabled])){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_92253aa5:active:where(:not([data-combobox-selected],[data-combobox-disabled])){background-color:var(--mantine-color-dark-7)}}.m_985517d8{margin-inline:calc(var(--combobox-padding) * -1);margin-top:calc(var(--combobox-padding) * -1);width:calc(100% + var(--combobox-padding) * 2);border-top-width:0;margin-bottom:var(--combobox-padding);border-inline-width:0;border-end-end-radius:0;border-end-start-radius:0;position:relative}:where([data-mantine-color-scheme=light]) .m_985517d8,:where([data-mantine-color-scheme=light]) .m_985517d8:focus{border-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_985517d8,:where([data-mantine-color-scheme=dark]) .m_985517d8:focus{border-color:var(--mantine-color-dark-4)}:where([data-mantine-color-scheme=light]) .m_985517d8{background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_985517d8{background-color:var(--mantine-color-dark-7)}.m_2530cd1d{font-size:var(--combobox-option-fz,var(--mantine-font-size-sm));text-align:center;padding:var(--combobox-option-padding);color:var(--mantine-color-dimmed)}.m_858f94bd,.m_82b967cb{font-size:var(--combobox-option-fz,var(--mantine-font-size-sm));margin-inline:calc(var(--combobox-padding) * -1);padding:var(--combobox-option-padding);border:0 solid #0000}:where([data-mantine-color-scheme=light]) .m_858f94bd,:where([data-mantine-color-scheme=light]) .m_82b967cb{border-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_858f94bd,:where([data-mantine-color-scheme=dark]) .m_82b967cb{border-color:var(--mantine-color-dark-4)}.m_82b967cb{border-top-width:calc(.0625rem * var(--mantine-scale));margin-top:var(--combobox-padding);margin-bottom:calc(var(--combobox-padding) * -1)}.m_858f94bd{border-bottom-width:calc(.0625rem * var(--mantine-scale));margin-bottom:var(--combobox-padding);margin-top:calc(var(--combobox-padding) * -1)}.m_254f3e4f:has(.m_2bb2e9e5:only-child){display:none}.m_2bb2e9e5{color:var(--mantine-color-dimmed);font-size:calc(var(--combobox-option-fz,var(--mantine-font-size-sm)) * .85);padding:var(--combobox-option-padding);font-weight:var(--mantine-font-weight-medium);align-items:center;display:flex;position:relative}.m_2bb2e9e5:after{content:"";height:calc(.0625rem * var(--mantine-scale));flex:1;margin-inline-start:var(--mantine-spacing-xs);inset-inline:0}:where([data-mantine-color-scheme=light]) .m_2bb2e9e5:after{background-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_2bb2e9e5:after{background-color:var(--mantine-color-dark-4)}.m_2bb2e9e5:only-child{display:none}.m_2943220b{--combobox-chevron-size-xs:calc(.875rem * var(--mantine-scale));--combobox-chevron-size-sm:calc(1.125rem * var(--mantine-scale));--combobox-chevron-size-md:calc(1.25rem * var(--mantine-scale));--combobox-chevron-size-lg:calc(1.5rem * var(--mantine-scale));--combobox-chevron-size-xl:calc(1.75rem * var(--mantine-scale));--combobox-chevron-size:var(--combobox-chevron-size-sm)}:where([data-mantine-color-scheme=light]) .m_2943220b{--_combobox-chevron-color:var(--combobox-chevron-color,var(--mantine-color-gray-6))}:where([data-mantine-color-scheme=dark]) .m_2943220b{--_combobox-chevron-color:var(--combobox-chevron-color,var(--mantine-color-dark-3))}.m_2943220b{width:var(--combobox-chevron-size);height:var(--combobox-chevron-size);color:var(--_combobox-chevron-color)}.m_2943220b:where([data-error]){color:var(--combobox-chevron-color,var(--mantine-color-error))}.m_390b5f4{align-items:center;gap:calc(.5rem * var(--mantine-scale));display:flex}.m_390b5f4:where([data-reverse]){justify-content:space-between}.m_8ee53fc2{opacity:.4;width:.8em;min-width:.8em;height:.8em}:where([data-combobox-selected]) .m_8ee53fc2{opacity:1}.m_a530ee0a{width:.8em;min-width:.8em;height:.8em}.m_5f75b09e{--label-lh-xs:calc(1rem * var(--mantine-scale));--label-lh-sm:calc(1.25rem * var(--mantine-scale));--label-lh-md:calc(1.5rem * var(--mantine-scale));--label-lh-lg:calc(1.875rem * var(--mantine-scale));--label-lh-xl:calc(2.25rem * var(--mantine-scale));--label-lh:var(--label-lh-sm)}.m_5f75b09e[data-label-position=left]{--label-order:1;--label-offset-end:var(--mantine-spacing-sm);--label-offset-start:0}.m_5f75b09e[data-label-position=right]{--label-order:2;--label-offset-end:0;--label-offset-start:var(--mantine-spacing-sm)}.m_5f6e695e{-webkit-tap-highlight-color:transparent;display:flex}.m_d3ea56bb{--label-cursor:var(--mantine-cursor-type);-webkit-tap-highlight-color:transparent;font-size:var(--label-fz,var(--mantine-font-size-sm));line-height:var(--label-lh);cursor:var(--label-cursor);flex-direction:column;order:var(--label-order);display:inline-flex}fieldset:disabled .m_d3ea56bb,.m_d3ea56bb[data-disabled]{--label-cursor:not-allowed}.m_8ee546b8{cursor:var(--label-cursor);color:inherit;padding-inline-start:var(--label-offset-start);padding-inline-end:var(--label-offset-end)}fieldset:disabled .m_8ee546b8,.m_8ee546b8:where([data-disabled]){color:var(--mantine-color-disabled-color)}.m_328f68c0{margin-top:calc(var(--mantine-spacing-xs) / 2);cursor:default;padding-inline-start:var(--label-offset-start);padding-inline-end:var(--label-offset-end)}.m_8e8a99cc{margin-top:calc(var(--mantine-spacing-xs) / 2);padding-inline-start:var(--label-offset-start);padding-inline-end:var(--label-offset-end)}.m_26775b0a{--card-radius:var(--mantine-radius-default);border-radius:var(--card-radius);cursor:pointer;width:100%;display:block}.m_26775b0a :where(*){cursor:inherit}.m_26775b0a:where([data-with-border]){border:calc(.0625rem * var(--mantine-scale)) solid transparent}:where([data-mantine-color-scheme=light]) .m_26775b0a:where([data-with-border]){border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_26775b0a:where([data-with-border]){border-color:var(--mantine-color-dark-4)}.m_5e5256ee{--checkbox-size-xs:calc(1rem * var(--mantine-scale));--checkbox-size-sm:calc(1.25rem * var(--mantine-scale));--checkbox-size-md:calc(1.5rem * var(--mantine-scale));--checkbox-size-lg:calc(1.875rem * var(--mantine-scale));--checkbox-size-xl:calc(2.25rem * var(--mantine-scale));--checkbox-size:var(--checkbox-size-sm);--checkbox-color:var(--mantine-primary-color-filled)}.m_5e5256ee:where([data-variant=filled]){--checkbox-icon-color:var(--mantine-color-white)}.m_5e5256ee:where([data-variant=outline]){--checkbox-icon-color:var(--checkbox-color)}.m_5e5256ee{border:calc(.0625rem * var(--mantine-scale)) solid transparent;width:var(--checkbox-size);min-width:var(--checkbox-size);height:var(--checkbox-size);min-height:var(--checkbox-size);border-radius:var(--checkbox-radius,var(--mantine-radius-default));cursor:var(--mantine-cursor-type);-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;transition:border-color .1s,background-color .1s;display:flex;position:relative}:where([data-mantine-color-scheme=light]) .m_5e5256ee{background-color:var(--mantine-color-white);border-color:var(--mantine-color-gray-4)}:where([data-mantine-color-scheme=dark]) .m_5e5256ee{background-color:var(--mantine-color-dark-6);border-color:var(--mantine-color-dark-4)}.m_5e5256ee[data-indeterminate],.m_5e5256ee[data-checked]{background-color:var(--checkbox-color);border-color:var(--checkbox-color)}.m_5e5256ee[data-indeterminate]>.m_1b1c543a,.m_5e5256ee[data-checked]>.m_1b1c543a{opacity:1;color:var(--checkbox-icon-color);transform:none}.m_5e5256ee[data-disabled]{cursor:not-allowed;border-color:var(--mantine-color-disabled-border);background-color:var(--mantine-color-disabled)}[data-mantine-color-scheme=light] .m_5e5256ee[data-disabled][data-checked]>.m_1b1c543a{color:var(--mantine-color-gray-5)}[data-mantine-color-scheme=dark] .m_5e5256ee[data-disabled][data-checked]>.m_1b1c543a{color:var(--mantine-color-dark-3)}.m_76e20374[data-indeterminate]:not([data-disabled]),.m_76e20374[data-checked]:not([data-disabled]){border-color:var(--checkbox-color);background-color:#0000}.m_76e20374[data-indeterminate]:not([data-disabled])>.m_1b1c543a,.m_76e20374[data-checked]:not([data-disabled])>.m_1b1c543a{color:var(--checkbox-icon-color);opacity:1;transform:none}.m_1b1c543a{color:#0000;pointer-events:none;width:60%;transform:translateY(calc(.3125rem * var(--mantine-scale))) scale(.5);opacity:1;transition:transform .1s,opacity .1s;display:block}.m_bf2d988c{--checkbox-size-xs:calc(1rem * var(--mantine-scale));--checkbox-size-sm:calc(1.25rem * var(--mantine-scale));--checkbox-size-md:calc(1.5rem * var(--mantine-scale));--checkbox-size-lg:calc(1.875rem * var(--mantine-scale));--checkbox-size-xl:calc(2.25rem * var(--mantine-scale));--checkbox-size:var(--checkbox-size-sm);--checkbox-color:var(--mantine-primary-color-filled)}.m_bf2d988c:where([data-variant=filled]){--checkbox-icon-color:var(--mantine-color-white)}.m_bf2d988c:where([data-variant=outline]){--checkbox-icon-color:var(--checkbox-color)}.m_26062bec{width:var(--checkbox-size);height:var(--checkbox-size);order:1;position:relative}.m_26062bec:where([data-label-position=left]){order:2}.m_26063560{appearance:none;border:calc(.0625rem * var(--mantine-scale)) solid transparent;width:var(--checkbox-size);height:var(--checkbox-size);border-radius:var(--checkbox-radius,var(--mantine-radius-default));cursor:var(--mantine-cursor-type);-webkit-tap-highlight-color:transparent;margin:0;padding:0;transition:border-color .1s,background-color .1s;display:block}:where([data-mantine-color-scheme=light]) .m_26063560{background-color:var(--mantine-color-white);border-color:var(--mantine-color-gray-4)}:where([data-mantine-color-scheme=dark]) .m_26063560{background-color:var(--mantine-color-dark-6);border-color:var(--mantine-color-dark-4)}.m_26063560:where([data-with-error-styles][data-error]){border-color:var(--mantine-color-error)}.m_26063560[data-indeterminate],.m_26063560:checked{background-color:var(--checkbox-color);border-color:var(--checkbox-color)}.m_26063560[data-indeterminate]+.m_bf295423,.m_26063560:checked+.m_bf295423{opacity:1;transform:none}.m_26063560:disabled{cursor:not-allowed;border-color:var(--mantine-color-disabled-border);background-color:var(--mantine-color-disabled)}.m_26063560:disabled+.m_bf295423{color:var(--mantine-color-disabled-color)}.m_215c4542+.m_bf295423{color:var(--checkbox-color)}.m_215c4542[data-indeterminate]:not(:disabled),.m_215c4542:checked:not(:disabled){border-color:var(--checkbox-color);background-color:#0000}.m_215c4542[data-indeterminate]:not(:disabled)+.m_bf295423,.m_215c4542:checked:not(:disabled)+.m_bf295423{color:var(--checkbox-icon-color);opacity:1;transform:none}.m_bf295423{width:60%;color:var(--checkbox-icon-color);pointer-events:none;transform:translateY(calc(.3125rem * var(--mantine-scale))) scale(.5);opacity:0;margin:auto;transition:transform .1s,opacity .1s;position:absolute;inset:0}.m_11def92b{--ag-spacing:var(--mantine-spacing-sm);--ag-offset:calc(var(--ag-spacing) * -1);padding-inline-start:var(--ag-spacing);display:flex}.m_f85678b6{--avatar-size-xs:calc(1rem * var(--mantine-scale));--avatar-size-sm:calc(1.625rem * var(--mantine-scale));--avatar-size-md:calc(2.375rem * var(--mantine-scale));--avatar-size-lg:calc(3.5rem * var(--mantine-scale));--avatar-size-xl:calc(5.25rem * var(--mantine-scale));--avatar-size:var(--avatar-size-md);--avatar-radius:calc(62.5rem * var(--mantine-scale));--avatar-bg:var(--mantine-color-gray-light);--avatar-bd:calc(.0625rem * var(--mantine-scale)) solid transparent;--avatar-color:var(--mantine-color-gray-light-color);--avatar-placeholder-fz:calc(var(--avatar-size) / 2.5);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;border-radius:var(--avatar-radius);width:var(--avatar-size);height:var(--avatar-size);min-width:var(--avatar-size);padding:0;text-decoration:none;display:block;position:relative;overflow:hidden}.m_f85678b6:where([data-within-group]){border:2px solid var(--mantine-color-body);background:var(--mantine-color-body);margin-inline-start:var(--ag-offset)}.m_11f8ac07{object-fit:cover;width:100%;height:100%;display:block}.m_104cd71f{font-weight:var(--mantine-font-weight-bold);-webkit-user-select:none;user-select:none;border-radius:var(--avatar-radius);width:100%;height:100%;font-size:var(--avatar-placeholder-fz);background:var(--avatar-bg);border:var(--avatar-bd);color:var(--avatar-color);justify-content:center;align-items:center;display:flex}.m_104cd71f>[data-avatar-placeholder-icon]{width:70%;height:70%}.m_2ce0de02{border-radius:var(--bi-radius,0);background-position:50%;background-size:cover;border:0;width:100%;text-decoration:none;display:block}.m_347db0ec{--badge-height-xs:calc(1rem * var(--mantine-scale));--badge-height-sm:calc(1.125rem * var(--mantine-scale));--badge-height-md:calc(1.25rem * var(--mantine-scale));--badge-height-lg:calc(1.625rem * var(--mantine-scale));--badge-height-xl:calc(2rem * var(--mantine-scale));--badge-fz-xs:calc(.5625rem * var(--mantine-scale));--badge-fz-sm:calc(.625rem * var(--mantine-scale));--badge-fz-md:calc(.6875rem * var(--mantine-scale));--badge-fz-lg:calc(.8125rem * var(--mantine-scale));--badge-fz-xl:calc(1rem * var(--mantine-scale));--badge-padding-x-xs:calc(.375rem * var(--mantine-scale));--badge-padding-x-sm:calc(.5rem * var(--mantine-scale));--badge-padding-x-md:calc(.625rem * var(--mantine-scale));--badge-padding-x-lg:calc(.75rem * var(--mantine-scale));--badge-padding-x-xl:calc(1rem * var(--mantine-scale));--badge-height:var(--badge-height-md);--badge-fz:var(--badge-fz-md);--badge-padding-x:var(--badge-padding-x-md);--badge-radius:calc(62.5rem * var(--mantine-scale));--badge-lh:calc(var(--badge-height) - calc(.125rem * var(--mantine-scale)));--badge-color:var(--mantine-color-white);--badge-bg:var(--mantine-primary-color-filled);--badge-border-width:calc(.0625rem * var(--mantine-scale));--badge-bd:var(--badge-border-width) solid transparent;-webkit-tap-highlight-color:transparent;font-size:var(--badge-fz);border-radius:var(--badge-radius);height:var(--badge-height);line-height:var(--badge-lh);padding:0 var(--badge-padding-x);text-transform:uppercase;width:fit-content;font-weight:var(--mantine-font-weight-bold);letter-spacing:calc(.015625rem * var(--mantine-scale));cursor:default;text-overflow:ellipsis;color:var(--badge-color);background:var(--badge-bg);border:var(--badge-bd);justify-content:center;align-items:center;text-decoration:none;display:inline-grid;overflow:hidden}.m_347db0ec:where([data-with-left-section],[data-variant=dot]){grid-template-columns:auto 1fr}.m_347db0ec:where([data-with-right-section]){grid-template-columns:1fr auto}.m_347db0ec:where([data-with-left-section][data-with-right-section],[data-variant=dot][data-with-right-section]){grid-template-columns:auto 1fr auto}.m_347db0ec:where([data-block]){width:100%;display:flex}.m_347db0ec:where([data-circle]){padding-inline:calc(.125rem * var(--mantine-scale));width:var(--badge-height);display:flex}.m_fbd81e3d{--badge-dot-size:calc(var(--badge-height) / 3.4)}:where([data-mantine-color-scheme=light]) .m_fbd81e3d{background-color:var(--mantine-color-white);border-color:var(--mantine-color-gray-4);color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_fbd81e3d{background-color:var(--mantine-color-dark-5);border-color:var(--mantine-color-dark-5);color:var(--mantine-color-white)}.m_fbd81e3d:before{content:"";width:var(--badge-dot-size);height:var(--badge-dot-size);border-radius:var(--badge-dot-size);background-color:var(--badge-dot-color);margin-inline-end:var(--badge-dot-size);display:block}.m_5add502a{white-space:nowrap;text-overflow:ellipsis;text-align:center;cursor:inherit;overflow:hidden}.m_91fdda9b{--badge-section-margin:calc(var(--mantine-spacing-xs) / 2);max-height:calc(var(--badge-height) - var(--badge-border-width) * 2);justify-content:center;align-items:center;display:inline-flex}.m_91fdda9b:where([data-position=left]){margin-inline-end:var(--badge-section-margin)}.m_91fdda9b:where([data-position=right]){margin-inline-start:var(--badge-section-margin)}.m_ddec01c0{--blockquote-border:3px solid var(--bq-bd);text-wrap:var(--bq-text-wrap,var(--mantine-text-wrap));border-inline-start:var(--blockquote-border);padding:var(--mantine-spacing-xl) calc(2.375rem * var(--mantine-scale));border-start-end-radius:var(--bq-radius);border-end-end-radius:var(--bq-radius);margin:0;position:relative}:where([data-mantine-color-scheme=light]) .m_ddec01c0{background-color:var(--bq-bg-light)}:where([data-mantine-color-scheme=dark]) .m_ddec01c0{background-color:var(--bq-bg-dark)}.m_dde7bd57{--blockquote-icon-offset:calc(var(--bq-icon-size) / -2);color:var(--bq-bd);background-color:var(--mantine-color-body);top:var(--blockquote-icon-offset);width:var(--bq-icon-size);height:var(--bq-icon-size);border-radius:var(--bq-icon-size);justify-content:center;align-items:center;display:flex;position:absolute;inset-inline-start:var(--blockquote-icon-offset)}.m_dde51a35{margin-top:var(--mantine-spacing-md);opacity:.6;font-size:85%;display:block}.m_8b3717df{flex-wrap:wrap;align-items:center;display:flex}.m_f678d540{white-space:nowrap;-webkit-tap-highlight-color:transparent;line-height:1}.m_3b8f2208{margin-inline:var(--bc-separator-margin,var(--mantine-spacing-xs));justify-content:center;align-items:center;line-height:1;display:flex}:where([data-mantine-color-scheme=light]) .m_3b8f2208{color:var(--mantine-color-gray-7)}:where([data-mantine-color-scheme=dark]) .m_3b8f2208{color:var(--mantine-color-dark-2)}.m_fea6bf1a{--burger-size-xs:calc(.75rem * var(--mantine-scale));--burger-size-sm:calc(1.125rem * var(--mantine-scale));--burger-size-md:calc(1.5rem * var(--mantine-scale));--burger-size-lg:calc(2.125rem * var(--mantine-scale));--burger-size-xl:calc(2.625rem * var(--mantine-scale));--burger-size:var(--burger-size-md);--burger-line-size:calc(var(--burger-size) / 12);width:calc(var(--burger-size) + var(--mantine-spacing-xs));height:calc(var(--burger-size) + var(--mantine-spacing-xs));padding:calc(var(--mantine-spacing-xs) / 2);cursor:pointer}:where([data-mantine-color-scheme=light]) .m_fea6bf1a{--burger-color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_fea6bf1a{--burger-color:var(--mantine-color-white)}.m_d4fb9cad{-webkit-user-select:none;user-select:none;position:relative}.m_d4fb9cad,.m_d4fb9cad:before,.m_d4fb9cad:after{width:var(--burger-size);height:var(--burger-line-size);background-color:var(--burger-color);outline:calc(.0625rem * var(--mantine-scale)) solid transparent;transition-property:background-color,transform;transition-duration:var(--burger-transition-duration,.3s);transition-timing-function:var(--burger-transition-timing-function,ease);display:block}.m_d4fb9cad:before,.m_d4fb9cad:after{content:"";position:absolute;inset-inline-start:0}.m_d4fb9cad:before{top:calc(var(--burger-size) / -3)}.m_d4fb9cad:after{top:calc(var(--burger-size) / 3)}.m_d4fb9cad[data-opened]{background-color:#0000}.m_d4fb9cad[data-opened]:before{transform:translateY(calc(var(--burger-size) / 3)) rotate(45deg)}.m_d4fb9cad[data-opened]:after{transform:translateY(calc(var(--burger-size) / -3)) rotate(-45deg)}.m_77c9d27d{--button-height-xs:calc(1.875rem * var(--mantine-scale));--button-height-sm:calc(2.25rem * var(--mantine-scale));--button-height-md:calc(2.625rem * var(--mantine-scale));--button-height-lg:calc(3.125rem * var(--mantine-scale));--button-height-xl:calc(3.75rem * var(--mantine-scale));--button-height-compact-xs:calc(1.375rem * var(--mantine-scale));--button-height-compact-sm:calc(1.625rem * var(--mantine-scale));--button-height-compact-md:calc(1.875rem * var(--mantine-scale));--button-height-compact-lg:calc(2.125rem * var(--mantine-scale));--button-height-compact-xl:calc(2.5rem * var(--mantine-scale));--button-padding-x-xs:calc(.875rem * var(--mantine-scale));--button-padding-x-sm:calc(1.125rem * var(--mantine-scale));--button-padding-x-md:calc(1.375rem * var(--mantine-scale));--button-padding-x-lg:calc(1.625rem * var(--mantine-scale));--button-padding-x-xl:calc(2rem * var(--mantine-scale));--button-padding-x-compact-xs:calc(.4375rem * var(--mantine-scale));--button-padding-x-compact-sm:calc(.5rem * var(--mantine-scale));--button-padding-x-compact-md:calc(.625rem * var(--mantine-scale));--button-padding-x-compact-lg:calc(.75rem * var(--mantine-scale));--button-padding-x-compact-xl:calc(.875rem * var(--mantine-scale));--button-height:var(--button-height-sm);--button-padding-x:var(--button-padding-x-sm);--button-color:var(--mantine-color-white);-webkit-user-select:none;user-select:none;font-weight:var(--mantine-font-weight-medium);text-align:center;cursor:pointer;border-radius:var(--button-radius,var(--mantine-radius-default));width:auto;line-height:1;font-size:var(--button-fz,var(--mantine-font-size-sm));background:var(--button-bg,var(--mantine-primary-color-filled));border:var(--button-bd,calc(.0625rem * var(--mantine-scale)) solid transparent);color:var(--button-color,var(--mantine-color-white));height:var(--button-height,var(--button-height-sm));padding-inline:var(--button-padding-x,var(--button-padding-x-sm));vertical-align:middle;display:inline-block;position:relative;overflow:hidden}.m_77c9d27d:where([data-block]){width:100%;display:block}.m_77c9d27d:where([data-with-left-section]){padding-inline-start:calc(var(--button-padding-x) / 1.5)}.m_77c9d27d:where([data-with-right-section]){padding-inline-end:calc(var(--button-padding-x) / 1.5)}.m_77c9d27d:where(:disabled:not([data-loading]),[data-disabled]:not([data-loading])){cursor:not-allowed;border:calc(.0625rem * var(--mantine-scale)) solid transparent;color:var(--mantine-color-disabled-color);background:var(--mantine-color-disabled);transform:none}.m_77c9d27d:before{content:"";pointer-events:none;inset:calc(-.0625rem * var(--mantine-scale));border-radius:var(--button-radius,var(--mantine-radius-default));opacity:0;filter:blur(12px);transition:transform .15s,opacity .1s;position:absolute;transform:translateY(-100%)}:where([data-mantine-color-scheme=light]) .m_77c9d27d:before{background-color:#ffffff26}:where([data-mantine-color-scheme=dark]) .m_77c9d27d:before{background-color:#00000026}.m_77c9d27d:where([data-loading]){cursor:not-allowed;transform:none}.m_77c9d27d:where([data-loading]):before{opacity:1;transform:translateY(0)}.m_77c9d27d:where([data-loading]) .m_80f1301b{opacity:0;transform:translateY(100%)}@media (hover:hover){.m_77c9d27d:hover:where(:not([data-loading],:disabled,[data-disabled])){background-color:var(--button-hover,var(--mantine-primary-color-filled-hover));color:var(--button-hover-color,var(--button-color))}}@media (hover:none){.m_77c9d27d:active:where(:not([data-loading],:disabled,[data-disabled])){background-color:var(--button-hover,var(--mantine-primary-color-filled-hover));color:var(--button-hover-color,var(--button-color))}}.m_80f1301b{align-items:center;justify-content:var(--button-justify,center);height:100%;transition:transform .15s,opacity .1s;display:flex;overflow:visible}.m_811560b9{white-space:nowrap;opacity:1;text-box-trim:trim-both;text-box-edge:cap alphabetic;align-items:center;height:100%;display:flex;overflow:hidden}.m_811560b9:where([data-loading]){opacity:.2}.m_a74036a{align-items:center;display:flex}.m_a74036a:where([data-position=left]){margin-inline-end:var(--mantine-spacing-xs)}.m_a74036a:where([data-position=right]){margin-inline-start:var(--mantine-spacing-xs)}.m_a25b86ee{position:absolute;top:50%;left:50%}.m_80d6d844{--button-border-width:calc(.0625rem * var(--mantine-scale));display:flex}.m_80d6d844 :where(.m_77c9d27d):focus{z-index:1;position:relative}.m_80d6d844[data-orientation=horizontal]{flex-direction:row}.m_80d6d844[data-orientation=horizontal] .m_77c9d27d:not(:only-child):first-child,.m_80d6d844[data-orientation=horizontal] .m_70be2a01:not(:only-child):first-child{border-inline-end-width:calc(var(--button-border-width) / 2);border-start-end-radius:0;border-end-end-radius:0}.m_80d6d844[data-orientation=horizontal] .m_77c9d27d:not(:only-child):last-child,.m_80d6d844[data-orientation=horizontal] .m_70be2a01:not(:only-child):last-child{border-inline-start-width:calc(var(--button-border-width) / 2);border-start-start-radius:0;border-end-start-radius:0}.m_80d6d844[data-orientation=horizontal] .m_77c9d27d:not(:only-child):not(:first-child):not(:last-child),.m_80d6d844[data-orientation=horizontal] .m_70be2a01:not(:only-child):not(:first-child):not(:last-child){border-inline-width:calc(var(--button-border-width) / 2);border-radius:0}.m_80d6d844[data-orientation=vertical]{flex-direction:column}.m_80d6d844[data-orientation=vertical] .m_77c9d27d:not(:only-child):first-child,.m_80d6d844[data-orientation=vertical] .m_70be2a01:not(:only-child):first-child{border-bottom-width:calc(var(--button-border-width) / 2);border-end-end-radius:0;border-end-start-radius:0}.m_80d6d844[data-orientation=vertical] .m_77c9d27d:not(:only-child):last-child,.m_80d6d844[data-orientation=vertical] .m_70be2a01:not(:only-child):last-child{border-top-width:calc(var(--button-border-width) / 2);border-start-start-radius:0;border-start-end-radius:0}.m_80d6d844[data-orientation=vertical] .m_77c9d27d:not(:only-child):not(:first-child):not(:last-child),.m_80d6d844[data-orientation=vertical] .m_70be2a01:not(:only-child):not(:first-child):not(:last-child){border-bottom-width:calc(var(--button-border-width) / 2);border-top-width:calc(var(--button-border-width) / 2);border-radius:0}.m_70be2a01{--section-height-xs:calc(1.875rem * var(--mantine-scale));--section-height-sm:calc(2.25rem * var(--mantine-scale));--section-height-md:calc(2.625rem * var(--mantine-scale));--section-height-lg:calc(3.125rem * var(--mantine-scale));--section-height-xl:calc(3.75rem * var(--mantine-scale));--section-height-compact-xs:calc(1.375rem * var(--mantine-scale));--section-height-compact-sm:calc(1.625rem * var(--mantine-scale));--section-height-compact-md:calc(1.875rem * var(--mantine-scale));--section-height-compact-lg:calc(2.125rem * var(--mantine-scale));--section-height-compact-xl:calc(2.5rem * var(--mantine-scale));--section-padding-x-xs:calc(.875rem * var(--mantine-scale));--section-padding-x-sm:calc(1.125rem * var(--mantine-scale));--section-padding-x-md:calc(1.375rem * var(--mantine-scale));--section-padding-x-lg:calc(1.625rem * var(--mantine-scale));--section-padding-x-xl:calc(2rem * var(--mantine-scale));--section-padding-x-compact-xs:calc(.4375rem * var(--mantine-scale));--section-padding-x-compact-sm:calc(.5rem * var(--mantine-scale));--section-padding-x-compact-md:calc(.625rem * var(--mantine-scale));--section-padding-x-compact-lg:calc(.75rem * var(--mantine-scale));--section-padding-x-compact-xl:calc(.875rem * var(--mantine-scale));--section-height:var(--section-height-sm);--section-padding-x:var(--section-padding-x-sm);--section-color:var(--mantine-color-white);font-weight:var(--mantine-font-weight-medium);border-radius:var(--section-radius,var(--mantine-radius-default));width:auto;font-size:var(--section-fz,var(--mantine-font-size-sm));background:var(--section-bg,var(--mantine-primary-color-filled));border:var(--section-bd,calc(.0625rem * var(--mantine-scale)) solid transparent);color:var(--section-color,var(--mantine-color-white));height:var(--section-height,var(--section-height-sm));padding-inline:var(--section-padding-x,var(--section-padding-x-sm));vertical-align:middle;justify-content:center;align-items:center;line-height:1;display:inline-flex}.m_e615b15f{--card-padding:var(--mantine-spacing-md);padding:var(--card-padding);color:var(--mantine-color-text);display:flex;position:relative;overflow:hidden}.m_e615b15f:where([data-orientation=horizontal]){flex-direction:row}.m_e615b15f:where([data-orientation=vertical]){flex-direction:column}:where([data-mantine-color-scheme=light]) .m_e615b15f{background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_e615b15f{background-color:var(--mantine-color-dark-6)}.m_599a2148{margin-inline:calc(var(--card-padding) * -1);display:block}:where([data-mantine-color-scheme=light]) .m_599a2148{--border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_599a2148{--border-color:var(--mantine-color-dark-4)}.m_599a2148:where([data-orientation=vertical]):first-child{margin-top:calc(var(--card-padding) * -1);border-top:none!important}.m_599a2148:where([data-orientation=vertical]):last-child{margin-bottom:calc(var(--card-padding) * -1);border-bottom:none!important}.m_599a2148:where([data-orientation=vertical])[data-inherit-padding]{padding-inline:var(--card-padding)}.m_599a2148:where([data-orientation=vertical])[data-with-border]{border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color)}.m_599a2148:where([data-orientation=vertical])+.m_599a2148:where([data-orientation=vertical]){border-top:none!important}.m_599a2148:where([data-orientation=horizontal]){margin-block:calc(var(--card-padding) * -1);margin-inline:0}.m_599a2148:where([data-orientation=horizontal]):first-child{margin-inline-start:calc(var(--card-padding) * -1);border-inline-start:none!important}.m_599a2148:where([data-orientation=horizontal]):last-child{margin-inline-end:calc(var(--card-padding) * -1);border-inline-end:none!important}.m_599a2148:where([data-orientation=horizontal])[data-inherit-padding]{padding-block:var(--card-padding)}.m_599a2148:where([data-orientation=horizontal])[data-with-border]{border-inline-start:1px solid var(--border-color);border-inline-end:1px solid var(--border-color)}.m_599a2148:where([data-orientation=horizontal])+.m_599a2148:where([data-orientation=horizontal]){border-inline-start:none!important}.m_9a782f2c{--cascader-column-width:calc(12.5rem * var(--mantine-scale));flex-direction:row;align-items:stretch;display:flex}.m_4c5a03a5{width:var(--cascader-column-width);min-width:var(--cascader-column-width);border-inline-end:calc(.0625rem * var(--mantine-scale)) solid var(--popover-border-color,var(--mantine-color-default-border));flex-direction:column;display:flex}.m_4c5a03a5:where([data-last]){border-inline-end-color:#0000}.m_7f3ac6d2{padding:var(--combobox-padding);flex:1}.m_6b93b90{padding-inline:calc(var(--combobox-padding) / 2);color:var(--mantine-color-dimmed);cursor:pointer;border-inline-end:calc(.0625rem * var(--mantine-scale)) solid var(--popover-border-color,var(--mantine-color-default-border));justify-content:center;align-self:stretch;align-items:center;display:flex}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_6b93b90:hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_6b93b90:hover{background-color:var(--mantine-color-dark-7)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_6b93b90:active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_6b93b90:active{background-color:var(--mantine-color-dark-7)}}.m_6b93b90>svg{width:.9em;height:.9em;transform:rotate(90deg)}.m_6b93b90:where([data-position=start]){border-start-start-radius:var(--popover-radius,var(--mantine-radius-default));border-end-start-radius:var(--popover-radius,var(--mantine-radius-default))}.m_6b93b90:where([data-position=end]){border-inline-end-color:#0000;border-start-end-radius:var(--popover-radius,var(--mantine-radius-default));border-end-end-radius:var(--popover-radius,var(--mantine-radius-default))}.m_6b93b90:where([data-position=end])>svg,:where([dir=rtl]) .m_6b93b90>svg{transform:rotate(-90deg)}:where([dir=rtl]) .m_6b93b90:where([data-position=end])>svg{transform:rotate(90deg)}.m_791f687a{align-items:center;gap:var(--mantine-spacing-xs);width:100%;padding:var(--combobox-option-padding);font-size:var(--combobox-option-fz,var(--mantine-font-size-sm));border-radius:var(--combobox-option-radius,var(--mantine-radius-default));color:var(--mantine-color-text);cursor:pointer;display:flex}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_791f687a:hover:where(:not([data-disabled],[data-active])){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_791f687a:hover:where(:not([data-disabled],[data-active])){background-color:var(--mantine-color-dark-7)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_791f687a:active:where(:not([data-disabled],[data-active])){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_791f687a:active:where(:not([data-disabled],[data-active])){background-color:var(--mantine-color-dark-7)}}:where([data-mantine-color-scheme=light]) .m_791f687a:where([data-in-path]){background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_791f687a:where([data-in-path]){background-color:var(--mantine-color-dark-6)}.m_791f687a:where([data-active]){background-color:var(--mantine-primary-color-filled);color:var(--mantine-color-white)}@media (hover:hover){.m_791f687a:where([data-active]):hover{background-color:var(--mantine-primary-color-filled-hover)}}@media (hover:none){.m_791f687a:where([data-active]):active{background-color:var(--mantine-primary-color-filled-hover)}}.m_791f687a:where([data-disabled]){color:var(--mantine-color-dimmed);cursor:not-allowed;opacity:.5}.m_452a61d{align-items:center;gap:var(--mantine-spacing-xs);width:100%;display:flex}.m_aecd629a{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.m_92054c13{width:.9em;min-width:.9em;height:.9em;color:var(--mantine-color-dimmed);justify-content:center;align-items:center;display:flex;transform:rotate(-90deg)}:where([data-active]) .m_92054c13{color:inherit}:where([dir=rtl]) .m_92054c13{transform:rotate(90deg)}.m_ae51c8ae{opacity:.4;width:.8em;min-width:.8em;height:.8em}:where([data-active]) .m_ae51c8ae,:where([data-combobox-selected]) .m_ae51c8ae{opacity:1}.m_97ff10a8{padding:var(--combobox-option-padding);color:var(--mantine-color-dimmed);font-size:var(--combobox-option-fz,var(--mantine-font-size-sm));white-space:nowrap;justify-content:center;align-items:center;display:flex}.m_4451eb3a{justify-content:center;align-items:center;display:flex}.m_4451eb3a:where([data-inline]){display:inline-flex}.m_f59ffda3{--chip-size-xs:calc(1.4375rem * var(--mantine-scale));--chip-size-sm:calc(1.75rem * var(--mantine-scale));--chip-size-md:calc(2rem * var(--mantine-scale));--chip-size-lg:calc(2.25rem * var(--mantine-scale));--chip-size-xl:calc(2.5rem * var(--mantine-scale));--chip-icon-size-xs:calc(.5625rem * var(--mantine-scale));--chip-icon-size-sm:calc(.75rem * var(--mantine-scale));--chip-icon-size-md:calc(.875rem * var(--mantine-scale));--chip-icon-size-lg:calc(1rem * var(--mantine-scale));--chip-icon-size-xl:calc(1.125rem * var(--mantine-scale));--chip-padding-xs:calc(1rem * var(--mantine-scale));--chip-padding-sm:calc(1.25rem * var(--mantine-scale));--chip-padding-md:calc(1.5rem * var(--mantine-scale));--chip-padding-lg:calc(1.75rem * var(--mantine-scale));--chip-padding-xl:calc(2rem * var(--mantine-scale));--chip-checked-padding-xs:calc(.5125rem * var(--mantine-scale));--chip-checked-padding-sm:calc(.625rem * var(--mantine-scale));--chip-checked-padding-md:calc(.73125rem * var(--mantine-scale));--chip-checked-padding-lg:calc(.84375rem * var(--mantine-scale));--chip-checked-padding-xl:calc(.98125rem * var(--mantine-scale));--chip-spacing-xs:calc(.625rem * var(--mantine-scale));--chip-spacing-sm:calc(.75rem * var(--mantine-scale));--chip-spacing-md:calc(1rem * var(--mantine-scale));--chip-spacing-lg:calc(1.25rem * var(--mantine-scale));--chip-spacing-xl:calc(1.375rem * var(--mantine-scale));--chip-size:var(--chip-size-sm);--chip-icon-size:var(--chip-icon-size-sm);--chip-padding:var(--chip-padding-sm);--chip-spacing:var(--chip-spacing-sm);--chip-checked-padding:var(--chip-checked-padding-sm);--chip-bg:var(--mantine-primary-color-filled);--chip-hover:var(--mantine-primary-color-filled-hover);--chip-color:var(--mantine-color-white);--chip-bd:calc(.0625rem * var(--mantine-scale)) solid transparent}.m_be049a53{-webkit-user-select:none;user-select:none;border-radius:var(--chip-radius,1000rem);height:var(--chip-size);font-size:var(--chip-fz,var(--mantine-font-size-sm));line-height:calc(var(--chip-size) - calc(.125rem * var(--mantine-scale)));padding-inline:var(--chip-padding);cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent;border:calc(.0625rem * var(--mantine-scale)) solid transparent;color:var(--mantine-color-text);text-box-trim:trim-both;text-box-edge:cap alphabetic;align-items:center;display:inline-flex}.m_be049a53:where([data-checked]){padding-inline:var(--chip-checked-padding)}.m_be049a53:where([data-disabled]){cursor:not-allowed;background-color:var(--mantine-color-disabled);color:var(--mantine-color-disabled-color)}:where([data-mantine-color-scheme=light]) .m_3904c1af:not([data-disabled]){background-color:var(--mantine-color-white);border:1px solid var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_3904c1af:not([data-disabled]){background-color:var(--mantine-color-dark-6);border:1px solid var(--mantine-color-dark-4)}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_3904c1af:not([data-disabled]):hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_3904c1af:not([data-disabled]):hover{background-color:var(--mantine-color-dark-5)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_3904c1af:not([data-disabled]):active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_3904c1af:not([data-disabled]):active{background-color:var(--mantine-color-dark-5)}}.m_3904c1af:not([data-disabled]):where([data-checked]){--chip-icon-color:var(--chip-color);border:var(--chip-bd)}@media (hover:hover){.m_3904c1af:not([data-disabled]):where([data-checked]):hover{background-color:var(--chip-hover)}}@media (hover:none){.m_3904c1af:not([data-disabled]):where([data-checked]):active{background-color:var(--chip-hover)}}.m_fa109255:not([data-disabled]),.m_f7e165c3:not([data-disabled]){border:calc(.0625rem * var(--mantine-scale)) solid transparent;color:var(--mantine-color-text)}:where([data-mantine-color-scheme=light]) .m_fa109255:not([data-disabled]),:where([data-mantine-color-scheme=light]) .m_f7e165c3:not([data-disabled]){background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_fa109255:not([data-disabled]),:where([data-mantine-color-scheme=dark]) .m_f7e165c3:not([data-disabled]){background-color:var(--mantine-color-dark-5)}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_fa109255:not([data-disabled]):hover,:where([data-mantine-color-scheme=light]) .m_f7e165c3:not([data-disabled]):hover{background-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_fa109255:not([data-disabled]):hover,:where([data-mantine-color-scheme=dark]) .m_f7e165c3:not([data-disabled]):hover{background-color:var(--mantine-color-dark-4)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_fa109255:not([data-disabled]):active,:where([data-mantine-color-scheme=light]) .m_f7e165c3:not([data-disabled]):active{background-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_fa109255:not([data-disabled]):active,:where([data-mantine-color-scheme=dark]) .m_f7e165c3:not([data-disabled]):active{background-color:var(--mantine-color-dark-4)}}.m_fa109255:not([data-disabled]):where([data-checked]),.m_f7e165c3:not([data-disabled]):where([data-checked]){--chip-icon-color:var(--chip-color);color:var(--chip-color);background-color:var(--chip-bg)}@media (hover:hover){.m_fa109255:not([data-disabled]):where([data-checked]):hover,.m_f7e165c3:not([data-disabled]):where([data-checked]):hover{background-color:var(--chip-hover)}}@media (hover:none){.m_fa109255:not([data-disabled]):where([data-checked]):active,.m_f7e165c3:not([data-disabled]):where([data-checked]):active{background-color:var(--chip-hover)}}.m_9ac86df9{width:calc(var(--chip-icon-size) + (var(--chip-spacing) / 1.5));max-width:calc(var(--chip-icon-size) + (var(--chip-spacing) / 1.5));height:var(--chip-icon-size);align-items:center;display:flex;overflow:hidden}.m_d6d72580{width:var(--chip-icon-size);height:var(--chip-icon-size);color:var(--chip-icon-color,inherit);display:block}.m_bde07329{opacity:0;width:0;height:0;margin:0;padding:0}.m_bde07329:focus-visible+.m_be049a53{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.m_b183c0a2{font-family:var(--mantine-font-family-monospace);line-height:var(--mantine-line-height);padding:2px calc(var(--mantine-spacing-xs) / 2);border-radius:var(--mantine-radius-sm);font-size:var(--mantine-font-size-xs);margin:0;overflow:auto}:where([data-mantine-color-scheme=light]) .m_b183c0a2{background-color:var(--code-bg,var(--mantine-color-gray-0))}:where([data-mantine-color-scheme=dark]) .m_b183c0a2{background-color:var(--code-bg,var(--mantine-color-dark-6))}.m_b183c0a2[data-block]{padding:var(--mantine-spacing-xs)}.m_de3d2490{--cs-size:calc(1.75rem * var(--mantine-scale));--cs-radius:calc(62.5rem * var(--mantine-scale));-webkit-tap-highlight-color:transparent;appearance:none;width:var(--cs-size);height:var(--cs-size);min-width:var(--cs-size);min-height:var(--cs-size);border-radius:var(--cs-radius);color:inherit;border:none;line-height:1;text-decoration:none;display:block;position:relative}[data-mantine-color-scheme=light] .m_de3d2490{--alpha-overlay-color:var(--mantine-color-gray-3);--alpha-overlay-bg:var(--mantine-color-white)}[data-mantine-color-scheme=dark] .m_de3d2490{--alpha-overlay-color:var(--mantine-color-dark-4);--alpha-overlay-bg:var(--mantine-color-dark-7)}.m_862f3d1b{border-radius:var(--cs-radius);position:absolute;inset:0}.m_98ae7f22{border-radius:var(--cs-radius);z-index:1;box-shadow:#0000001a 0 0 0 calc(.0625rem * var(--mantine-scale)) inset, #00000026 0 0 calc(.25rem * var(--mantine-scale)) inset;position:absolute;inset:0}.m_95709ac0{border-radius:var(--cs-radius);background-size:calc(.5rem * var(--mantine-scale)) calc(.5rem * var(--mantine-scale));background-position:0 0, 0 calc(.25rem * var(--mantine-scale)), calc(.25rem * var(--mantine-scale)) calc(-.25rem * var(--mantine-scale)), calc(-.25rem * var(--mantine-scale)) 0;background-image:linear-gradient(45deg, var(--alpha-overlay-color) 25%, transparent 25%), linear-gradient(-45deg, var(--alpha-overlay-color) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--alpha-overlay-color) 75%), linear-gradient(-45deg, var(--alpha-overlay-bg) 75%, var(--alpha-overlay-color) 75%);position:absolute;inset:0}.m_93e74e3{border-radius:var(--cs-radius);z-index:2;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.m_fee9c77{--cp-width-xs:calc(11.25rem * var(--mantine-scale));--cp-width-sm:calc(12.5rem * var(--mantine-scale));--cp-width-md:calc(15rem * var(--mantine-scale));--cp-width-lg:calc(17.5rem * var(--mantine-scale));--cp-width-xl:calc(20rem * var(--mantine-scale));--cp-preview-size-xs:calc(1.625rem * var(--mantine-scale));--cp-preview-size-sm:calc(2.125rem * var(--mantine-scale));--cp-preview-size-md:calc(2.625rem * var(--mantine-scale));--cp-preview-size-lg:calc(3.125rem * var(--mantine-scale));--cp-preview-size-xl:calc(3.375rem * var(--mantine-scale));--cp-thumb-size-xs:calc(.5rem * var(--mantine-scale));--cp-thumb-size-sm:calc(.75rem * var(--mantine-scale));--cp-thumb-size-md:calc(1rem * var(--mantine-scale));--cp-thumb-size-lg:calc(1.25rem * var(--mantine-scale));--cp-thumb-size-xl:calc(1.375rem * var(--mantine-scale));--cp-saturation-height-xs:calc(6.25rem * var(--mantine-scale));--cp-saturation-height-sm:calc(6.875rem * var(--mantine-scale));--cp-saturation-height-md:calc(7.5rem * var(--mantine-scale));--cp-saturation-height-lg:calc(8.75rem * var(--mantine-scale));--cp-saturation-height-xl:calc(10rem * var(--mantine-scale));--cp-preview-size:var(--cp-preview-size-sm);--cp-thumb-size:var(--cp-thumb-size-sm);--cp-saturation-height:var(--cp-saturation-height-sm);--cp-width:var(--cp-width-sm);--cp-body-spacing:var(--mantine-spacing-sm);width:var(--cp-width);padding:calc(.0625rem * var(--mantine-scale))}.m_fee9c77:where([data-full-width]){width:100%}.m_9dddfbac{width:var(--cp-preview-size);height:var(--cp-preview-size)}.m_bffecc3e{padding-top:calc(var(--cp-body-spacing) / 2);display:flex}.m_3283bb96{flex:1}.m_3283bb96:not(:only-child){margin-inline-end:var(--mantine-spacing-xs)}.m_40d572ba{border:2px solid var(--mantine-color-white);width:var(--cp-thumb-size);height:var(--cp-thumb-size);border-radius:var(--cp-thumb-size);left:calc(var(--thumb-x-offset) - var(--cp-thumb-size) / 2);top:calc(var(--thumb-y-offset) - var(--cp-thumb-size) / 2);position:absolute;overflow:hidden;box-shadow:0 0 1px #0009}.m_d8ee6fd8{margin:calc(.125rem * var(--mantine-scale));cursor:pointer;padding-bottom:calc(var(--cp-swatch-size) - calc(.25rem * var(--mantine-scale)));flex:0 0 calc(var(--cp-swatch-size) - calc(.25rem * var(--mantine-scale)));height:unset!important;width:unset!important;min-width:0!important;min-height:0!important}.m_5711e686{margin-top:calc(.3125rem * var(--mantine-scale));margin-inline:calc(-.125rem * var(--mantine-scale));flex-wrap:wrap;display:flex}.m_5711e686:only-child{margin-top:0}.m_202a296e{--cp-thumb-size-xs:calc(.5rem * var(--mantine-scale));--cp-thumb-size-sm:calc(.75rem * var(--mantine-scale));--cp-thumb-size-md:calc(1rem * var(--mantine-scale));--cp-thumb-size-lg:calc(1.25rem * var(--mantine-scale));--cp-thumb-size-xl:calc(1.375rem * var(--mantine-scale));-webkit-tap-highlight-color:transparent;height:var(--cp-saturation-height);border-radius:var(--mantine-radius-sm);margin:calc(var(--cp-thumb-size) / 2);position:relative}.m_202a296e:where([data-focus-ring=auto]):focus:focus-visible .m_40d572ba,.m_202a296e:where([data-focus-ring=always]):focus .m_40d572ba{outline:2px solid var(--mantine-color-blue-filled)}.m_11b3db02{border-radius:var(--mantine-radius-sm);inset:calc(var(--cp-thumb-size) * -1 / 2 - calc(.0625rem * var(--mantine-scale)));position:absolute}.m_d856d47d{--cp-thumb-size-xs:calc(.5rem * var(--mantine-scale));--cp-thumb-size-sm:calc(.75rem * var(--mantine-scale));--cp-thumb-size-md:calc(1rem * var(--mantine-scale));--cp-thumb-size-lg:calc(1.25rem * var(--mantine-scale));--cp-thumb-size-xl:calc(1.375rem * var(--mantine-scale));--cp-thumb-size:var(--cp-thumb-size,calc(.75rem * var(--mantine-scale)));height:calc(var(--cp-thumb-size) + calc(.125rem * var(--mantine-scale)));margin-inline:calc(var(--cp-thumb-size) / 2);outline:none;position:relative}.m_d856d47d+.m_d856d47d{margin-top:calc(.375rem * var(--mantine-scale))}.m_d856d47d:where([data-focus-ring=auto]):focus:focus-visible .m_40d572ba,.m_d856d47d:where([data-focus-ring=always]):focus .m_40d572ba{outline:2px solid var(--mantine-color-blue-filled)}:where([data-mantine-color-scheme=light]) .m_d856d47d{--slider-checkers:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_d856d47d{--slider-checkers:var(--mantine-color-dark-4)}.m_8f327113{top:0;bottom:0;inset-inline:calc(var(--cp-thumb-size) * -1 / 2 - calc(.0625rem * var(--mantine-scale)));border-radius:10000rem;position:absolute}.m_b077c2bc{--ci-eye-dropper-icon-size-xs:calc(.875rem * var(--mantine-scale));--ci-eye-dropper-icon-size-sm:calc(1rem * var(--mantine-scale));--ci-eye-dropper-icon-size-md:calc(1.125rem * var(--mantine-scale));--ci-eye-dropper-icon-size-lg:calc(1.25rem * var(--mantine-scale));--ci-eye-dropper-icon-size-xl:calc(1.375rem * var(--mantine-scale));--ci-eye-dropper-icon-size:var(--ci-eye-dropper-icon-size-sm)}.m_66a028b5{--ci-button-size-xs:calc(1.375rem * var(--mantine-scale));--ci-button-size-sm:calc(1.625rem * var(--mantine-scale));--ci-button-size-md:calc(1.75rem * var(--mantine-scale));--ci-button-size-lg:calc(2rem * var(--mantine-scale));--ci-button-size-xl:calc(2.5rem * var(--mantine-scale));--ci-button-size:var(--ci-button-size-sm);width:var(--ci-button-size);height:var(--ci-button-size);min-width:var(--ci-button-size);min-height:var(--ci-button-size)}.m_c5ccdcab{--ci-preview-size-xs:calc(1rem * var(--mantine-scale));--ci-preview-size-sm:calc(1.125rem * var(--mantine-scale));--ci-preview-size-md:calc(1.375rem * var(--mantine-scale));--ci-preview-size-lg:calc(1.75rem * var(--mantine-scale));--ci-preview-size-xl:calc(2.25rem * var(--mantine-scale));--ci-preview-size:var(--ci-preview-size-sm)}.m_5ece2cd7{padding:calc(.5rem * var(--mantine-scale))}.m_7485cace{--container-size-xs:calc(33.75rem * var(--mantine-scale));--container-size-sm:calc(45rem * var(--mantine-scale));--container-size-md:calc(60rem * var(--mantine-scale));--container-size-lg:calc(71.25rem * var(--mantine-scale));--container-size-xl:calc(82.5rem * var(--mantine-scale));--container-size:var(--container-size-md)}.m_7485cace:where([data-strategy=block]){max-width:var(--container-size);padding-inline:var(--mantine-spacing-md);margin-inline:auto}.m_7485cace:where([data-strategy=block]):where([data-fluid]){max-width:100%}.m_7485cace:where([data-strategy=grid]){grid-template-columns:1fr min(100%, var(--container-size)) 1fr;margin-inline:auto;display:grid}.m_7485cace:where([data-strategy=grid])>*{grid-column:2}.m_7485cace:where([data-strategy=grid])>[data-breakout]{grid-column:1/-1}.m_7485cace:where([data-strategy=grid])>[data-breakout]>[data-container]{max-width:var(--container-size);margin-inline:auto}.m_f84d0407{--data-list-fz:var(--mantine-font-size-sm);--data-list-lh:var(--mantine-line-height-sm);--data-list-gap:var(--mantine-spacing-sm);--data-list-label-width:calc(7.5rem * var(--mantine-scale));gap:var(--data-list-gap);font-size:var(--data-list-fz);line-height:var(--data-list-lh);flex-direction:column;margin:0;padding:0;display:flex}.m_f84d0407:where([data-with-divider]){gap:0}.m_f848fe38{align-items:baseline;gap:var(--mantine-spacing-xs);flex-direction:row;display:flex}.m_f84d0407:where([data-orientation=vertical])>.m_f848fe38{flex-direction:column;gap:0}.m_c791b39c{color:var(--mantine-color-dimmed);font-size:var(--data-list-fz);line-height:var(--data-list-lh);min-width:var(--data-list-label-width);margin:0}.m_f84d0407:where([data-orientation=vertical]) .m_c791b39c{min-width:100%}.m_c81ec619{font-size:var(--data-list-fz);line-height:var(--data-list-lh);margin:0}.m_f84d0407:where([data-with-divider])>.m_f848fe38:where(:not(:first-of-type)){border-top:calc(.0625rem * var(--mantine-scale)) solid var(--mantine-color-default-border);padding-top:var(--data-list-gap);margin-top:var(--data-list-gap)}.m_e2125a27{--dialog-size-xs:calc(10rem * var(--mantine-scale));--dialog-size-sm:calc(12.5rem * var(--mantine-scale));--dialog-size-md:calc(21.25rem * var(--mantine-scale));--dialog-size-lg:calc(25rem * var(--mantine-scale));--dialog-size-xl:calc(31.25rem * var(--mantine-scale));--dialog-size:var(--dialog-size-md);width:var(--dialog-size);max-width:calc(100vw - var(--mantine-spacing-xl) * 2);min-height:calc(3.125rem * var(--mantine-scale));position:relative}.m_5abab665{top:calc(var(--mantine-spacing-md) / 2);position:absolute;inset-inline-end:calc(var(--mantine-spacing-md) / 2)}.m_3eebeb36{--divider-size-xs:calc(.0625rem * var(--mantine-scale));--divider-size-sm:calc(.125rem * var(--mantine-scale));--divider-size-md:calc(.1875rem * var(--mantine-scale));--divider-size-lg:calc(.25rem * var(--mantine-scale));--divider-size-xl:calc(.3125rem * var(--mantine-scale));--divider-size:var(--divider-size-xs)}:where([data-mantine-color-scheme=light]) .m_3eebeb36{--divider-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_3eebeb36{--divider-color:var(--mantine-color-dark-4)}.m_3eebeb36:where([data-orientation=horizontal]){border-top:var(--divider-size) var(--divider-border-style,solid) var(--divider-color)}.m_3eebeb36:where([data-orientation=vertical]){border-inline-start:var(--divider-size) var(--divider-border-style,solid) var(--divider-color);align-self:stretch;height:auto}.m_3eebeb36:where([data-with-label]){border:0}.m_9e365f20{font-size:var(--mantine-font-size-xs);color:var(--mantine-color-dimmed);white-space:nowrap;align-items:center;display:flex}.m_9e365f20:where([data-position=left]):before,.m_9e365f20:where([data-position=right]):after{display:none}.m_9e365f20:before{content:"";height:calc(.0625rem * var(--mantine-scale));border-top:var(--divider-size) var(--divider-border-style,solid) var(--divider-color);flex:1;margin-inline-end:var(--mantine-spacing-xs)}.m_9e365f20:after{content:"";height:calc(.0625rem * var(--mantine-scale));border-top:var(--divider-size) var(--divider-border-style,solid) var(--divider-color);flex:1;margin-inline-start:var(--mantine-spacing-xs)}.m_f11b401e{--drawer-size-xs:calc(20rem * var(--mantine-scale));--drawer-size-sm:calc(23.75rem * var(--mantine-scale));--drawer-size-md:calc(27.5rem * var(--mantine-scale));--drawer-size-lg:calc(38.75rem * var(--mantine-scale));--drawer-size-xl:calc(48.75rem * var(--mantine-scale));--drawer-size:var(--drawer-size-md);--drawer-offset:0rem}.m_5a7c2c9{z-index:1000}.m_b8a05bbd{flex:var(--drawer-flex,0 0 var(--drawer-size));height:var(--drawer-height,calc(100% - var(--drawer-offset) * 2));margin:var(--drawer-offset);max-width:calc(100% - var(--drawer-offset) * 2);max-height:calc(100% - var(--drawer-offset) * 2);overflow-y:auto}.m_b8a05bbd[data-hidden]{pointer-events:none;opacity:0!important}.m_31cd769a{justify-content:var(--drawer-justify,flex-start);align-items:var(--drawer-align,flex-start);display:flex}.m_7ffcadab{--empty-state-indicator-size-xs:calc(2rem * var(--mantine-scale));--empty-state-indicator-size-sm:calc(2.5rem * var(--mantine-scale));--empty-state-indicator-size-md:calc(3rem * var(--mantine-scale));--empty-state-indicator-size-lg:calc(3.75rem * var(--mantine-scale));--empty-state-indicator-size-xl:calc(4.5rem * var(--mantine-scale));--empty-state-gap-xs:calc(.375rem * var(--mantine-scale));--empty-state-gap-sm:calc(.5rem * var(--mantine-scale));--empty-state-gap-md:calc(.625rem * var(--mantine-scale));--empty-state-gap-lg:calc(.75rem * var(--mantine-scale));--empty-state-gap-xl:calc(1rem * var(--mantine-scale));--empty-state-title-fz-xs:var(--mantine-font-size-sm);--empty-state-title-fz-sm:var(--mantine-font-size-md);--empty-state-title-fz-md:var(--mantine-font-size-lg);--empty-state-title-fz-lg:var(--mantine-font-size-xl);--empty-state-title-fz-xl:calc(var(--mantine-font-size-xl) * 1.2);--empty-state-description-fz-xs:var(--mantine-font-size-xs);--empty-state-description-fz-sm:var(--mantine-font-size-sm);--empty-state-description-fz-md:var(--mantine-font-size-sm);--empty-state-description-fz-lg:var(--mantine-font-size-md);--empty-state-description-fz-xl:var(--mantine-font-size-lg);gap:var(--empty-state-gap,var(--empty-state-gap-md));display:flex}.m_7ffcadab[data-align=center]{flex-direction:column;align-items:center}.m_7ffcadab[data-align=left]{flex-direction:row;align-items:flex-start}.m_7ffcadab[data-align=right]{flex-direction:row-reverse;align-items:flex-start}.m_7ff5666b{gap:var(--empty-state-gap,var(--empty-state-gap-md));flex-direction:column;min-width:0;display:flex}[data-align=center]>.m_7ff5666b{text-align:center;align-items:center}[data-align=left]>.m_7ff5666b{text-align:left;align-items:flex-start}[data-align=right]>.m_7ff5666b{text-align:right;align-items:flex-end}.m_866226e6{color:var(--empty-state-indicator-color,var(--mantine-color-dimmed));font-size:var(--empty-state-indicator-size,var(--empty-state-indicator-size-md));flex-shrink:0;justify-content:center;align-items:center;line-height:1;display:flex}.m_866226e6>svg{width:1em;height:1em}[data-mantine-color-scheme=light] .m_866226e6[data-with-background]{--empty-state-indicator-default-bg:var(--mantine-color-gray-1)}[data-mantine-color-scheme=dark] .m_866226e6[data-with-background]{--empty-state-indicator-default-bg:var(--mantine-color-dark-6)}.m_866226e6[data-with-background]{border-radius:calc(62.5rem * var(--mantine-scale));background-color:var(--empty-state-indicator-bg,var(--empty-state-indicator-default-bg));width:2em;height:2em}.m_7fb28eaf{font-size:var(--empty-state-title-fz,var(--empty-state-title-fz-md));color:var(--mantine-color-bright);text-wrap:balance;margin:0;font-weight:600;line-height:1.3}.m_5f111313{font-size:var(--empty-state-description-fz,var(--empty-state-description-fz-md));color:var(--mantine-color-dimmed);text-wrap:pretty;max-width:32rem;margin:0;line-height:1.55}.m_65f4fb94{align-items:center;gap:var(--mantine-spacing-sm);flex-wrap:wrap;display:flex}.m_e9408a47{padding:var(--mantine-spacing-lg);padding-top:var(--mantine-spacing-xs);border-radius:var(--fieldset-radius,var(--mantine-radius-default));min-inline-size:auto}.m_84c9523a{border:calc(.0625rem * var(--mantine-scale)) solid}:where([data-mantine-color-scheme=light]) .m_84c9523a{border-color:var(--mantine-color-gray-3);background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_84c9523a{border-color:var(--mantine-color-dark-4);background-color:var(--mantine-color-dark-7)}.m_ef274e49{border:calc(.0625rem * var(--mantine-scale)) solid}:where([data-mantine-color-scheme=light]) .m_ef274e49{border-color:var(--mantine-color-gray-3);background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_ef274e49{border-color:var(--mantine-color-dark-4);background-color:var(--mantine-color-dark-6)}.m_eda993d3{border:0;border-radius:0;padding:0}.m_90794832{font-size:var(--mantine-font-size-sm)}.m_74ca27fe{margin-bottom:var(--mantine-spacing-sm);padding:0}.m_df020499{z-index:var(--floating-window-z-index);width:var(--floating-window-width,auto);height:var(--floating-window-height,auto);position:fixed}.m_8478a6da{container:mantine-grid/inline-size}.m_410352e9{--grid-overflow:visible;--grid-column-gap:var(--grid-gap);--grid-row-gap:var(--grid-gap);overflow:var(--grid-overflow)}.m_dee7bd2f{justify-content:var(--grid-justify);align-items:var(--grid-align);gap:var(--grid-row-gap) var(--grid-column-gap);flex-wrap:wrap;display:flex}.m_96bdd299{--col-flex-grow:0;--col-offset:0rem;flex-shrink:0;order:var(--col-order);flex-basis:var(--col-flex-basis);width:var(--col-width);max-width:var(--col-max-width);flex-grow:var(--col-flex-grow);align-self:var(--col-align-self);margin-inline-start:var(--col-offset)}.m_bcb3f3c2{color:var(--mantine-color-black)}:where([data-mantine-color-scheme=light]) .m_bcb3f3c2{background-color:var(--mark-bg-light)}:where([data-mantine-color-scheme=dark]) .m_bcb3f3c2{background-color:var(--mark-bg-dark)}.m_9e117634{object-fit:var(--image-object-fit,cover);border-radius:var(--image-radius,0);width:100%;display:block}@keyframes m_885901b1{0%{opacity:.6;transform:scale(0)}to{opacity:0;transform:scale(2.8)}}.m_e5262200{--indicator-size:calc(.625rem * var(--mantine-scale));--indicator-color:var(--mantine-primary-color-filled);display:block;position:relative}.m_e5262200:where([data-inline]){display:inline-block}.m_760d1fb1{top:var(--indicator-top);left:var(--indicator-left);right:var(--indicator-right);bottom:var(--indicator-bottom);transform:translate(var(--indicator-translate-x), var(--indicator-translate-y));min-width:var(--indicator-size);height:var(--indicator-size);border-radius:var(--indicator-radius,1000rem);z-index:var(--indicator-z-index,200);font-size:var(--mantine-font-size-xs);background-color:var(--indicator-color);color:var(--indicator-text-color,var(--mantine-color-white));white-space:nowrap;justify-content:center;align-items:center;display:flex;position:absolute}.m_760d1fb1:before{content:"";background-color:var(--indicator-color);border-radius:var(--indicator-radius,1000rem);z-index:-1;position:absolute;inset:0}.m_760d1fb1:where([data-with-label]){padding-inline:calc(var(--mantine-spacing-xs) / 2)}.m_760d1fb1:where([data-with-border]){border:2px solid var(--mantine-color-body)}.m_760d1fb1[data-processing]:before{animation:1s linear infinite m_885901b1}.m_dc6f14e2{--kbd-fz-xs:calc(.625rem * var(--mantine-scale));--kbd-fz-sm:calc(.75rem * var(--mantine-scale));--kbd-fz-md:calc(.875rem * var(--mantine-scale));--kbd-fz-lg:calc(1rem * var(--mantine-scale));--kbd-fz-xl:calc(1.25rem * var(--mantine-scale));--kbd-fz:var(--kbd-fz-sm);font-family:var(--mantine-font-family-monospace);line-height:var(--mantine-line-height);font-weight:var(--mantine-font-weight-bold);font-size:var(--kbd-fz);border-radius:var(--mantine-radius-sm);border:calc(.0625rem * var(--mantine-scale)) solid;border-bottom-width:calc(.1875rem * var(--mantine-scale));text-align:center;unicode-bidi:embed;padding:.12em .45em}:where([data-mantine-color-scheme=light]) .m_dc6f14e2{border-color:var(--mantine-color-gray-3);color:var(--mantine-color-gray-7);background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_dc6f14e2{border-color:var(--mantine-color-dark-4);color:var(--mantine-color-dark-0);background-color:var(--mantine-color-dark-6)}.m_abbac491{--list-fz:var(--mantine-font-size-md);--list-lh:var(--mantine-line-height-md);--list-marker-gap:var(--mantine-spacing-lg);font-size:var(--list-fz);line-height:var(--list-lh);margin:0;padding:0;padding-inline-start:var(--list-marker-gap);list-style-position:outside}.m_abbac491[data-type=none]{--list-marker-gap:0}.m_abbac491:where([data-with-padding]){padding-inline-start:calc(var(--list-marker-gap) + var(--mantine-spacing-md))}.m_abb6bec2{white-space:normal;line-height:var(--list-lh)}.m_abb6bec2:where([data-with-icon]){list-style:none}.m_abb6bec2:where([data-with-icon]) .m_75cd9f71{--li-direction:row;--li-align:center}.m_abb6bec2:where(:not(:first-of-type)){margin-top:var(--list-spacing,0)}.m_abb6bec2:where([data-centered]){line-height:1}.m_75cd9f71{flex-direction:var(--li-direction,column);align-items:var(--li-align,flex-start);white-space:normal;display:inline-flex}.m_60f83e5b{vertical-align:middle;margin-inline-end:var(--mantine-spacing-sm);display:inline-block}.m_6e45937b{z-index:var(--lo-z-index);justify-content:center;align-items:center;display:flex;position:absolute;inset:0;overflow:hidden}.m_e8eb006c{z-index:calc(var(--lo-z-index) + 1);position:relative}.m_df587f17{z-index:var(--lo-z-index)}@keyframes m_55dc625a{0%{transform:translate(0)}to{transform:translateX(calc(-100% / var(--marquee-repeat,4) - var(--marquee-gap,var(--mantine-spacing-md)) / var(--marquee-repeat,4)))}}@keyframes m_cdef532c{0%{transform:translateY(0)}to{transform:translateY(calc(-100% / var(--marquee-repeat,4) - var(--marquee-gap,var(--mantine-spacing-md)) / var(--marquee-repeat,4)))}}.m_7dc7d3cd{--_fade-color:var(--marquee-fade-color,var(--mantine-color-body));--_fade-size:var(--marquee-fade-size,5%);max-width:100%;max-height:100%;display:flex;position:relative;overflow:hidden}.m_7dc7d3cd:where([data-orientation=horizontal]){flex-direction:row}.m_7dc7d3cd:where([data-orientation=vertical]){flex-direction:column}.m_7dc7d3cd[data-fade-edges]:before,.m_7dc7d3cd[data-fade-edges]:after{content:"";z-index:1;pointer-events:none;position:absolute}.m_7dc7d3cd[data-orientation=horizontal][data-fade-edges]:before,.m_7dc7d3cd[data-orientation=horizontal][data-fade-edges]:after{width:var(--_fade-size);top:0;bottom:0}.m_7dc7d3cd[data-orientation=horizontal][data-fade-edges]:before{background:linear-gradient(to right, var(--_fade-color), transparent);left:0}.m_7dc7d3cd[data-orientation=horizontal][data-fade-edges]:after{background:linear-gradient(to left, var(--_fade-color), transparent);right:0}.m_7dc7d3cd[data-orientation=vertical][data-fade-edges]:before,.m_7dc7d3cd[data-orientation=vertical][data-fade-edges]:after{height:var(--_fade-size);left:0;right:0}.m_7dc7d3cd[data-orientation=vertical][data-fade-edges]:before{background:linear-gradient(to bottom, var(--_fade-color), transparent);top:0}.m_7dc7d3cd[data-orientation=vertical][data-fade-edges]:after{background:linear-gradient(to top, var(--_fade-color), transparent);bottom:0}.m_1f9675ae{gap:var(--marquee-gap,var(--mantine-spacing-md));animation-duration:var(--marquee-duration,100s);animation-timing-function:linear;animation-iteration-count:infinite;display:flex}.m_7dc7d3cd[data-orientation=horizontal]>.m_1f9675ae{flex-direction:row;animation-name:m_55dc625a}.m_7dc7d3cd[data-orientation=vertical]>.m_1f9675ae{flex-direction:column;animation-name:m_cdef532c}.m_7dc7d3cd[data-reverse]>.m_1f9675ae{animation-direction:reverse}.m_7dc7d3cd[data-pause-on-hover]:hover>.m_1f9675ae{animation-play-state:paused}.m_3a9900f4{gap:var(--marquee-gap,var(--mantine-spacing-md));flex-shrink:0;display:flex}.m_7dc7d3cd[data-orientation=horizontal] .m_3a9900f4{flex-direction:row}.m_7dc7d3cd[data-orientation=vertical] .m_3a9900f4{flex-direction:column}.m_dc9b7c9f{padding:calc(.25rem * var(--mantine-scale))}.m_9bfac126{color:var(--mantine-color-dimmed);font-weight:var(--mantine-font-weight-medium);font-size:var(--mantine-font-size-xs);padding:calc(var(--mantine-spacing-xs) / 2) var(--mantine-spacing-sm);cursor:default}.m_efdf90cb{margin-top:calc(.25rem * var(--mantine-scale));margin-bottom:calc(.25rem * var(--mantine-scale));border-top:calc(.0625rem * var(--mantine-scale)) solid}:where([data-mantine-color-scheme=light]) .m_efdf90cb{border-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_efdf90cb{border-color:var(--mantine-color-dark-4)}.m_99ac2aa1{font-size:var(--mantine-font-size-sm);width:100%;padding:calc(var(--mantine-spacing-xs) / 1.5) var(--mantine-spacing-sm);border-radius:var(--popover-radius,var(--mantine-radius-default));color:var(--menu-item-color,var(--mantine-color-text));-webkit-user-select:none;user-select:none;align-items:center;display:flex}.m_99ac2aa1:where([data-disabled],:disabled){color:var(--mantine-color-disabled-color);opacity:.6;cursor:not-allowed}:where([data-mantine-color-scheme=light]) .m_99ac2aa1:where(:hover,:focus,[data-menu-active]):where(:not(:disabled,[data-disabled])){background-color:var(--menu-item-hover,var(--mantine-color-gray-1))}:where([data-mantine-color-scheme=dark]) .m_99ac2aa1:where(:hover,:focus,[data-menu-active]):where(:not(:disabled,[data-disabled])){background-color:var(--menu-item-hover,var(--mantine-color-dark-4))}.m_99ac2aa1:where([data-sub-menu-item]){padding-inline-end:calc(.3125rem * var(--mantine-scale))}.m_ef8769b6{--menu-search-padding:var(--popover-padding,4px);margin-inline:calc(var(--menu-search-padding) * -1);margin-top:calc(var(--menu-search-padding) * -1);width:calc(100% + var(--menu-search-padding) * 2);border-top-width:0;margin-bottom:var(--menu-search-padding);border-inline-width:0;border-end-end-radius:0;border-end-start-radius:0}:where([data-mantine-color-scheme=light]) .m_ef8769b6,:where([data-mantine-color-scheme=light]) .m_ef8769b6:focus{border-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_ef8769b6,:where([data-mantine-color-scheme=dark]) .m_ef8769b6:focus{border-color:var(--mantine-color-dark-4)}:where([data-mantine-color-scheme=light]) .m_ef8769b6{background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_ef8769b6{background-color:var(--mantine-color-dark-7)}.m_5476e0d3{flex:1}.m_8395186e{width:calc(.75rem * var(--mantine-scale));height:calc(.75rem * var(--mantine-scale));flex-shrink:0;justify-content:center;align-items:center;margin-inline-end:calc(.5rem * var(--mantine-scale));display:inline-flex}.m_8b75e504{justify-content:center;align-items:center;display:flex}.m_8b75e504:where([data-position=left]){margin-inline-end:var(--mantine-spacing-xs)}.m_8b75e504:where([data-position=right]){margin-inline-start:var(--mantine-spacing-xs)}.m_b85b0bed{transform:rotate(-90deg)}:where([dir=rtl]) .m_b85b0bed{transform:rotate(90deg)}.m_de2654db{align-items:center;display:flex}.m_f08a2b4a{font-size:var(--mantine-font-size-sm);padding:calc(var(--mantine-spacing-xs) / 1.5) var(--mantine-spacing-sm);border-radius:var(--mantine-radius-default);color:var(--mantine-color-text);-webkit-user-select:none;user-select:none;cursor:pointer;background-color:#0000;line-height:1}.m_f08a2b4a:where([data-disabled],:disabled){color:var(--mantine-color-disabled-color);opacity:.6;cursor:not-allowed}:where([data-mantine-color-scheme=light]) .m_f08a2b4a:where(:hover,:focus-visible,[data-expanded]):where(:not(:disabled,[data-disabled])){background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_f08a2b4a:where(:hover,:focus-visible,[data-expanded]):where(:not(:disabled,[data-disabled])){background-color:var(--mantine-color-dark-5)}.m_9df02822{--modal-size-xs:calc(20rem * var(--mantine-scale));--modal-size-sm:calc(23.75rem * var(--mantine-scale));--modal-size-md:calc(27.5rem * var(--mantine-scale));--modal-size-lg:calc(38.75rem * var(--mantine-scale));--modal-size-xl:calc(48.75rem * var(--mantine-scale));--modal-size:var(--modal-size-md);--modal-y-offset:5dvh;--modal-x-offset:5vw}.m_9df02822[data-full-screen]{--modal-border-radius:0!important}.m_9df02822[data-full-screen] .m_54c44539{--modal-content-flex:0 0 100%;--modal-content-max-height:auto;--modal-content-height:100dvh}.m_9df02822[data-full-screen] .m_1f958f16{--modal-inner-y-offset:0;--modal-inner-x-offset:0}.m_9df02822[data-centered] .m_1f958f16{--modal-inner-align:center}.m_d0e2b9cd{border-start-start-radius:var(--modal-radius,var(--mantine-radius-default));border-start-end-radius:var(--modal-radius,var(--mantine-radius-default))}.m_54c44539{flex:var(--modal-content-flex,0 0 var(--modal-size));max-width:100%;max-height:var(--modal-content-max-height,calc(100dvh - var(--modal-y-offset) * 2));height:var(--modal-content-height,auto);overflow-y:auto}.m_54c44539[data-full-screen]{border-radius:0}.m_54c44539[data-hidden]{pointer-events:none;opacity:0!important}.m_1f958f16{justify-content:center;align-items:var(--modal-inner-align,flex-start);padding-top:var(--modal-inner-y-offset,var(--modal-y-offset));padding-bottom:var(--modal-inner-y-offset,var(--modal-y-offset));padding-inline:var(--modal-inner-x-offset,var(--modal-x-offset));display:flex}.m_7cda1cd6{--pill-fz-xs:calc(.625rem * var(--mantine-scale));--pill-fz-sm:calc(.75rem * var(--mantine-scale));--pill-fz-md:calc(.875rem * var(--mantine-scale));--pill-fz-lg:calc(1rem * var(--mantine-scale));--pill-fz-xl:calc(1.125rem * var(--mantine-scale));--pill-height-xs:calc(1.125rem * var(--mantine-scale));--pill-height-sm:calc(1.375rem * var(--mantine-scale));--pill-height-md:calc(1.5625rem * var(--mantine-scale));--pill-height-lg:calc(1.75rem * var(--mantine-scale));--pill-height-xl:calc(2rem * var(--mantine-scale));--pill-fz:var(--pill-fz-sm);--pill-height:var(--pill-height-sm);font-size:var(--pill-fz);height:var(--pill-height);border-radius:var(--pill-radius,1000rem);white-space:nowrap;-webkit-user-select:none;user-select:none;flex:0;align-items:center;max-width:100%;padding-inline:.8em;line-height:1;display:inline-flex;position:relative}:where([data-mantine-color-scheme=dark]) .m_7cda1cd6{background-color:var(--mantine-color-dark-7);color:var(--mantine-color-dark-0)}:where([data-mantine-color-scheme=light]) .m_7cda1cd6{color:var(--mantine-color-black)}.m_7cda1cd6:where([data-with-remove]:not(:has(button:disabled))){padding-inline-end:0}.m_7cda1cd6:where([data-disabled],:has(button:disabled)){cursor:not-allowed}.m_7cda1cd6:where([draggable=true]){cursor:grab}.m_7cda1cd6:where([draggable=true]):focus-visible{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.m_7cda1cd6:where([data-dragging]){opacity:.4;cursor:grabbing}.m_7cda1cd6:where([data-drag-over=before]):before,.m_7cda1cd6:where([data-drag-over=after]):after{content:"";width:calc(.125rem * var(--mantine-scale));background-color:var(--mantine-primary-color-filled);pointer-events:none;z-index:1;position:absolute;top:0;bottom:0}.m_7cda1cd6:where([data-drag-over=before]):before{inset-inline-start:calc(-.25rem * var(--mantine-scale))}.m_7cda1cd6:where([data-drag-over=after]):after{inset-inline-end:calc(-.25rem * var(--mantine-scale))}:where([data-mantine-color-scheme=light]) .m_44da308b{background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=light]) .m_44da308b:where([data-disabled],:has(button:disabled)){background-color:var(--mantine-color-disabled)}:where([data-mantine-color-scheme=light]) .m_e3a01f8{background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=light]) .m_e3a01f8:where([data-disabled],:has(button:disabled)){background-color:var(--mantine-color-disabled)}.m_1e0e6180{cursor:inherit;height:100%;line-height:var(--pill-height);text-overflow:ellipsis;display:block;overflow:hidden}.m_ae386778{color:inherit;font-size:inherit;height:100%;min-height:unset;min-width:2em;width:unset;border-radius:0;border-start-end-radius:var(--pill-radius,50%);border-end-end-radius:var(--pill-radius,50%);flex:0;padding-inline:.1em .3em}.m_7cda1cd6[data-disabled]>.m_ae386778,.m_ae386778:disabled{cursor:not-allowed;background-color:#0000;width:.8em;min-width:.8em;padding:0;display:none}.m_7cda1cd6[data-disabled]>.m_ae386778>svg,.m_ae386778:disabled>svg{display:none}.m_ae386778>svg{pointer-events:none}.m_1dcfd90b{--pg-gap-xs:calc(.375rem * var(--mantine-scale));--pg-gap-sm:calc(.5rem * var(--mantine-scale));--pg-gap-md:calc(.625rem * var(--mantine-scale));--pg-gap-lg:calc(.75rem * var(--mantine-scale));--pg-gap-xl:calc(.75rem * var(--mantine-scale));--pg-gap:var(--pg-gap-sm);align-items:center;gap:var(--pg-gap);flex-wrap:wrap;display:flex}.m_45c4369d{appearance:none;min-width:calc(6.25rem * var(--mantine-scale));font-size:inherit;height:1.6em;color:inherit;background-color:#0000;border:0;flex:1;padding:0}.m_45c4369d::placeholder{color:var(--input-placeholder-color);opacity:1}.m_45c4369d:where([data-type=hidden],[data-type=auto]){height:calc(.0625rem * var(--mantine-scale));width:calc(.0625rem * var(--mantine-scale));pointer-events:none;opacity:0;position:absolute;top:0;left:0}.m_45c4369d:focus{outline:none}.m_45c4369d:where([data-type=auto]:focus){visibility:visible;opacity:1;height:1.6em;position:static}.m_45c4369d:where([data-pointer]:not([data-disabled],:disabled)){cursor:pointer}.m_45c4369d:where([data-disabled],:disabled){cursor:not-allowed}.m_f0824112{--nl-bg:var(--mantine-primary-color-light);--nl-hover:var(--mantine-primary-color-light-hover);--nl-color:var(--mantine-primary-color-light-color);width:100%;padding:8px var(--mantine-spacing-sm);-webkit-user-select:none;user-select:none;align-items:center;display:flex}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_f0824112:hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_f0824112:hover{background-color:var(--mantine-color-dark-6)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_f0824112:active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_f0824112:active{background-color:var(--mantine-color-dark-6)}}.m_f0824112:where([data-disabled]){opacity:.4;pointer-events:none}.m_f0824112:where([data-active],[aria-current=page]){background-color:var(--nl-bg);color:var(--nl-color)}@media (hover:hover){.m_f0824112:where([data-active],[aria-current=page]):hover{background-color:var(--nl-hover)}}@media (hover:none){.m_f0824112:where([data-active],[aria-current=page]):active{background-color:var(--nl-hover)}}.m_f0824112:where([data-active],[aria-current=page]) .m_57492dcc{--description-opacity:.9;--description-color:var(--nl-color)}.m_690090b5{justify-content:center;align-items:center;transition:transform .15s;display:flex}.m_690090b5>svg{display:block}.m_690090b5:where([data-position=left]){margin-inline-end:var(--mantine-spacing-sm)}.m_690090b5:where([data-position=right]){margin-inline-start:var(--mantine-spacing-sm)}.m_690090b5:where([data-rotate]){transform:rotate(90deg)}.m_1f6ac4c4{font-size:var(--mantine-font-size-sm)}.m_f07af9d2{text-overflow:ellipsis;flex:1;overflow:hidden}.m_f07af9d2:where([data-no-wrap]){white-space:nowrap}.m_57492dcc{font-size:var(--mantine-font-size-xs);opacity:var(--description-opacity,1);color:var(--description-color,var(--mantine-color-dimmed));text-overflow:ellipsis;display:block;overflow:hidden}:where([data-no-wrap]) .m_57492dcc{white-space:nowrap}.m_e17b862f{padding-inline-start:var(--nl-offset,var(--mantine-spacing-lg))}.m_1fd8a00b{transform:rotate(-90deg)}.m_a513464{--notification-radius:var(--mantine-radius-default);--notification-color:var(--mantine-primary-color-filled);box-sizing:border-box;padding-inline-start:calc(1.375rem * var(--mantine-scale));padding-inline-end:var(--mantine-spacing-xs);padding-top:var(--mantine-spacing-xs);padding-bottom:var(--mantine-spacing-xs);border-radius:var(--notification-radius);box-shadow:var(--mantine-shadow-lg);align-items:center;display:flex;position:relative;overflow:hidden}.m_a513464:before{content:"";width:calc(.375rem * var(--mantine-scale));top:var(--notification-radius);bottom:var(--notification-radius);border-radius:var(--notification-radius);background-color:var(--notification-color);display:block;position:absolute;inset-inline-start:calc(.25rem * var(--mantine-scale))}:where([data-mantine-color-scheme=light]) .m_a513464{background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_a513464{background-color:var(--mantine-color-dark-6)}.m_a513464:where([data-with-icon]):before{display:none}:where([data-mantine-color-scheme=light]) .m_a513464:where([data-with-border]){border:1px solid var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_a513464:where([data-with-border]){border:1px solid var(--mantine-color-dark-4)}.m_a4ceffb{box-sizing:border-box;width:calc(1.75rem * var(--mantine-scale));height:calc(1.75rem * var(--mantine-scale));border-radius:calc(1.75rem * var(--mantine-scale));background-color:var(--notification-color);color:var(--mantine-color-white);justify-content:center;align-items:center;margin-inline-end:var(--mantine-spacing-md);display:flex}.m_b0920b15{margin-inline-end:var(--mantine-spacing-md)}.m_a49ed24{flex:1;margin-inline-end:var(--mantine-spacing-xs);overflow:hidden}.m_3feedf16{margin-bottom:calc(.125rem * var(--mantine-scale));text-overflow:ellipsis;font-size:var(--mantine-font-size-sm);line-height:var(--mantine-line-height-sm);font-weight:var(--mantine-font-weight-medium);overflow:hidden}:where([data-mantine-color-scheme=light]) .m_3feedf16{color:var(--mantine-color-gray-9)}:where([data-mantine-color-scheme=dark]) .m_3feedf16{color:var(--mantine-color-white)}.m_3d733a3a{font-size:var(--mantine-font-size-sm);line-height:var(--mantine-line-height-sm);text-overflow:ellipsis;overflow:hidden}:where([data-mantine-color-scheme=light]) .m_3d733a3a{color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_3d733a3a{color:var(--mantine-color-dark-0)}:where([data-mantine-color-scheme=light]) .m_3d733a3a:where([data-with-title]){color:var(--mantine-color-gray-6)}:where([data-mantine-color-scheme=dark]) .m_3d733a3a:where([data-with-title]){color:var(--mantine-color-dark-2)}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_919a4d88:hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_919a4d88:hover{background-color:var(--mantine-color-dark-8)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_919a4d88:active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_919a4d88:active{background-color:var(--mantine-color-dark-8)}}.m_e2f5cd4e{--ni-right-section-width-xs:calc(1.0625rem * var(--mantine-scale));--ni-right-section-width-sm:calc(1.5rem * var(--mantine-scale));--ni-right-section-width-md:calc(1.6875rem * var(--mantine-scale));--ni-right-section-width-lg:calc(1.9375rem * var(--mantine-scale));--ni-right-section-width-xl:calc(2.125rem * var(--mantine-scale))}.m_95e17d22{--ni-chevron-size-xs:calc(.625rem * var(--mantine-scale));--ni-chevron-size-sm:calc(.875rem * var(--mantine-scale));--ni-chevron-size-md:calc(1rem * var(--mantine-scale));--ni-chevron-size-lg:calc(1.125rem * var(--mantine-scale));--ni-chevron-size-xl:calc(1.25rem * var(--mantine-scale));--ni-chevron-size:var(--ni-chevron-size-sm);width:100%;height:calc(var(--input-height) - calc(.125rem * var(--mantine-scale)));max-width:calc(var(--ni-chevron-size) * 1.7);flex-direction:column;margin-inline-start:auto;display:flex}.m_80b4b171{--control-border:1px solid var(--input-bd);--control-radius:calc(var(--input-radius) - calc(.0625rem * var(--mantine-scale)));width:100%;height:calc(var(--input-height) / 2 - calc(.0625rem * var(--mantine-scale)));border-inline-start:var(--control-border);color:var(--mantine-color-text);cursor:pointer;background-color:#0000;flex:0 0 50%;justify-content:center;align-items:center;padding:0;display:flex}.m_80b4b171:where(:disabled){cursor:not-allowed;opacity:.6;color:var(--mantine-color-disabled-color);background-color:#0000}.m_e2f5cd4e[data-error] :where(.m_80b4b171){color:var(--mantine-color-error)}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_80b4b171:hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_80b4b171:hover{background-color:var(--mantine-color-dark-4)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_80b4b171:active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_80b4b171:active{background-color:var(--mantine-color-dark-4)}}.m_80b4b171:where(:first-of-type){border-radius:0;border-start-end-radius:var(--control-radius)}.m_80b4b171:last-of-type{border-radius:0;border-end-end-radius:var(--control-radius)}.m_f62ab2af{contain:layout style;gap:var(--ol-gap,var(--mantine-spacing-xs));flex-wrap:wrap;display:flex}.m_4addd315{--pagination-control-size-xs:calc(1.375rem * var(--mantine-scale));--pagination-control-size-sm:calc(1.625rem * var(--mantine-scale));--pagination-control-size-md:calc(2rem * var(--mantine-scale));--pagination-control-size-lg:calc(2.375rem * var(--mantine-scale));--pagination-control-size-xl:calc(2.75rem * var(--mantine-scale));--pagination-control-size-input-xs:calc(1.875rem * var(--mantine-scale));--pagination-control-size-input-sm:calc(2.25rem * var(--mantine-scale));--pagination-control-size-input-md:calc(2.625rem * var(--mantine-scale));--pagination-control-size-input-lg:calc(3.125rem * var(--mantine-scale));--pagination-control-size-input-xl:calc(3.75rem * var(--mantine-scale));--pagination-control-size:var(--pagination-control-size-md);--pagination-control-fz:var(--mantine-font-size-md);--pagination-active-bg:var(--mantine-primary-color-filled)}.m_4addd315:where([data-layout=responsive]){container-type:inline-size}.m_326d024a{border:calc(.0625rem * var(--mantine-scale)) solid;cursor:pointer;color:var(--mantine-color-text);height:var(--pagination-control-size);min-width:var(--pagination-control-size);font-size:var(--pagination-control-fz);border-radius:var(--pagination-control-radius,var(--mantine-radius-default));justify-content:center;align-items:center;line-height:1;display:flex}.m_326d024a:where([data-with-padding]){padding:calc(var(--pagination-control-size) / 4)}.m_326d024a:where(:disabled,[data-disabled]){cursor:not-allowed;opacity:.4}:where([data-mantine-color-scheme=light]) .m_326d024a{border-color:var(--mantine-color-gray-4);background-color:var(--mantine-color-white)}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_326d024a:hover:where(:not(:disabled,[data-disabled])){background-color:var(--mantine-color-gray-0)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_326d024a:active:where(:not(:disabled,[data-disabled])){background-color:var(--mantine-color-gray-0)}}:where([data-mantine-color-scheme=dark]) .m_326d024a{border-color:var(--mantine-color-dark-4);background-color:var(--mantine-color-dark-6)}@media (hover:hover){:where([data-mantine-color-scheme=dark]) .m_326d024a:hover:where(:not(:disabled,[data-disabled])){background-color:var(--mantine-color-dark-5)}}@media (hover:none){:where([data-mantine-color-scheme=dark]) .m_326d024a:active:where(:not(:disabled,[data-disabled])){background-color:var(--mantine-color-dark-5)}}.m_326d024a:where([data-active]){background-color:var(--pagination-active-bg);border-color:var(--pagination-active-bg);color:var(--pagination-active-color,var(--mantine-color-white))}@media (hover:hover){.m_326d024a:where([data-active]):hover{background-color:var(--pagination-active-bg)}}@media (hover:none){.m_326d024a:where([data-active]):active{background-color:var(--pagination-active-bg)}}.m_4ad7767d{height:var(--pagination-control-size);min-width:var(--pagination-control-size);pointer-events:none;justify-content:center;align-items:center;display:flex}.m_105fdbed{gap:inherit;align-items:center;display:flex}@container (width<=400px){.m_105fdbed{display:none}}.m_10817321{height:var(--pagination-control-size);font-size:var(--pagination-control-fz);white-space:nowrap;justify-content:center;align-items:center;display:none}@container (width<=400px){.m_10817321{display:flex}}.m_f61ca620{--psi-button-size-xs:calc(1.375rem * var(--mantine-scale));--psi-button-size-sm:calc(1.625rem * var(--mantine-scale));--psi-button-size-md:calc(1.75rem * var(--mantine-scale));--psi-button-size-lg:calc(2rem * var(--mantine-scale));--psi-button-size-xl:calc(2.5rem * var(--mantine-scale));--psi-icon-size-xs:calc(1rem * var(--mantine-scale));--psi-icon-size-sm:calc(1.25rem * var(--mantine-scale));--psi-icon-size-md:calc(1.375rem * var(--mantine-scale));--psi-icon-size-lg:calc(1.5rem * var(--mantine-scale));--psi-icon-size-xl:calc(1.75rem * var(--mantine-scale));--psi-button-size:var(--psi-button-size-sm);--psi-icon-size:var(--psi-icon-size-sm)}.m_ccf8da4c{position:relative;overflow:hidden}.m_f2d85dd2{font-family:var(--mantine-font-family);font-size:inherit;line-height:var(--mantine-line-height);width:100%;height:100%;color:inherit;background-color:#0000;border:0;outline:0;padding-inline-start:var(--input-padding-inline-start);padding-inline-end:var(--input-padding-inline-end);position:absolute;inset:0}.m_ccf8da4c[data-disabled] .m_f2d85dd2,.m_f2d85dd2:disabled{cursor:not-allowed}.m_f2d85dd2::placeholder{color:var(--input-placeholder-color);opacity:1}.m_f2d85dd2::-ms-reveal{display:none}.m_b1072d44{width:var(--psi-button-size);height:var(--psi-button-size);min-width:var(--psi-button-size);min-height:var(--psi-button-size)}.m_b1072d44:disabled{display:none}.m_f1cb205a{--pin-input-size-xs:calc(1.875rem * var(--mantine-scale));--pin-input-size-sm:calc(2.25rem * var(--mantine-scale));--pin-input-size-md:calc(2.625rem * var(--mantine-scale));--pin-input-size-lg:calc(3.125rem * var(--mantine-scale));--pin-input-size-xl:calc(3.75rem * var(--mantine-scale));--pin-input-size:var(--pin-input-size-sm)}.m_cb288ead{width:var(--pin-input-size);height:var(--pin-input-size)}@keyframes m_81a374bd{0%{background-position:0 0}to{background-position:calc(2.5rem * var(--mantine-scale)) 0}}@keyframes m_e0fb7a86{0%{background-position:0 0}to{background-position:0 calc(2.5rem * var(--mantine-scale))}}.m_db6d6462{--progress-radius:var(--mantine-radius-default);--progress-size:var(--progress-size-md);--progress-size-xs:calc(.1875rem * var(--mantine-scale));--progress-size-sm:calc(.3125rem * var(--mantine-scale));--progress-size-md:calc(.5rem * var(--mantine-scale));--progress-size-lg:calc(.75rem * var(--mantine-scale));--progress-size-xl:calc(1rem * var(--mantine-scale));height:var(--progress-size);border-radius:var(--progress-radius);display:flex;position:relative;overflow:hidden}:where([data-mantine-color-scheme=light]) .m_db6d6462{background-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_db6d6462{background-color:var(--mantine-color-dark-4)}.m_db6d6462:where([data-orientation=vertical]){height:auto;width:var(--progress-size);flex-direction:column-reverse}.m_2242eb65{background-color:var(--progress-section-color);height:100%;width:var(--progress-section-size);background-size:calc(1.25rem * var(--mantine-scale)) calc(1.25rem * var(--mantine-scale));transition:width var(--progress-transition-duration,.1s) ease;justify-content:center;align-items:center;display:flex;overflow:hidden}.m_2242eb65:where([data-striped]){background-image:linear-gradient(45deg,#ffffff26 25%,#0000 25% 50%,#ffffff26 50% 75%,#0000 75%,#0000)}.m_2242eb65:where([data-animated]){animation:1s linear infinite m_81a374bd}.m_2242eb65:where(:last-of-type){border-radius:0;border-start-end-radius:var(--progress-radius);border-end-end-radius:var(--progress-radius)}.m_2242eb65:where(:first-of-type){border-radius:0;border-start-start-radius:var(--progress-radius);border-end-start-radius:var(--progress-radius)}.m_db6d6462:where([data-orientation=vertical]) .m_2242eb65{width:100%;height:var(--progress-section-size);transition:height var(--progress-transition-duration,.1s) ease}.m_db6d6462:where([data-orientation=vertical]) .m_2242eb65:where([data-striped]){background-image:linear-gradient(135deg,#ffffff26 25%,#0000 25% 50%,#ffffff26 50% 75%,#0000 75%,#0000)}.m_db6d6462:where([data-orientation=vertical]) .m_2242eb65:where([data-animated]){animation:1s linear infinite m_e0fb7a86}.m_db6d6462:where([data-orientation=vertical]) .m_2242eb65:where(:last-of-type){border-radius:0;border-start-start-radius:var(--progress-radius);border-start-end-radius:var(--progress-radius)}.m_db6d6462:where([data-orientation=vertical]) .m_2242eb65:where(:first-of-type){border-radius:0;border-end-end-radius:var(--progress-radius);border-end-start-radius:var(--progress-radius)}.m_91e40b74{color:var(--progress-label-color,var(--mantine-color-white));-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;font-weight:700;font-size:min(calc(var(--progress-size) * .65), calc(1.125rem * var(--mantine-scale)));padding-inline:calc(.25rem * var(--mantine-scale));line-height:1;overflow:hidden}.m_db6d6462:where([data-orientation=vertical]) .m_91e40b74{writing-mode:vertical-rl}.m_9dc8ae12{--card-radius:var(--mantine-radius-default);border-radius:var(--card-radius);cursor:pointer;width:100%;display:block}.m_9dc8ae12 :where(*){cursor:inherit}.m_9dc8ae12:where([data-with-border]){border:calc(.0625rem * var(--mantine-scale)) solid transparent}:where([data-mantine-color-scheme=light]) .m_9dc8ae12:where([data-with-border]){border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_9dc8ae12:where([data-with-border]){border-color:var(--mantine-color-dark-4)}.m_717d7ff6{--radio-size-xs:calc(1rem * var(--mantine-scale));--radio-size-sm:calc(1.25rem * var(--mantine-scale));--radio-size-md:calc(1.5rem * var(--mantine-scale));--radio-size-lg:calc(1.875rem * var(--mantine-scale));--radio-size-xl:calc(2.25rem * var(--mantine-scale));--radio-icon-size-xs:calc(.375rem * var(--mantine-scale));--radio-icon-size-sm:calc(.5rem * var(--mantine-scale));--radio-icon-size-md:calc(.625rem * var(--mantine-scale));--radio-icon-size-lg:calc(.875rem * var(--mantine-scale));--radio-icon-size-xl:calc(1rem * var(--mantine-scale));--radio-icon-size:var(--radio-icon-size-sm);--radio-size:var(--radio-size-sm);--radio-color:var(--mantine-primary-color-filled);--radio-icon-color:var(--mantine-color-white);border:calc(.0625rem * var(--mantine-scale)) solid transparent;width:var(--radio-size);min-width:var(--radio-size);height:var(--radio-size);min-height:var(--radio-size);border-radius:var(--radio-radius,10000px);cursor:var(--mantine-cursor-type);-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;transition:border-color .1s,background-color .1s;display:flex;position:relative}:where([data-mantine-color-scheme=light]) .m_717d7ff6{background-color:var(--mantine-color-white);border-color:var(--mantine-color-gray-4)}:where([data-mantine-color-scheme=dark]) .m_717d7ff6{background-color:var(--mantine-color-dark-6);border-color:var(--mantine-color-dark-4)}.m_717d7ff6[data-checked]{background-color:var(--radio-color);border-color:var(--radio-color)}.m_717d7ff6[data-checked]>.m_3e4da632{opacity:1;color:var(--radio-icon-color);transform:none}.m_717d7ff6[data-disabled]{cursor:not-allowed;background-color:var(--mantine-color-disabled);border-color:var(--mantine-color-disabled-border)}.m_717d7ff6[data-disabled][data-checked]>.m_3e4da632{color:var(--mantine-color-disabled-color)}.m_2980836c[data-checked]:not([data-disabled]){border-color:var(--radio-color);background-color:#0000}.m_2980836c[data-checked]:not([data-disabled])>.m_3e4da632{color:var(--radio-color);opacity:1;transform:none}.m_3e4da632{width:var(--radio-icon-size);height:var(--radio-icon-size);color:#0000;pointer-events:none;transform:translateY(calc(.3125rem * var(--mantine-scale))) scale(.5);opacity:1;transition:transform .1s,opacity .1s;display:block}.m_f3f1af94{--radio-size-xs:calc(1rem * var(--mantine-scale));--radio-size-sm:calc(1.25rem * var(--mantine-scale));--radio-size-md:calc(1.5rem * var(--mantine-scale));--radio-size-lg:calc(1.875rem * var(--mantine-scale));--radio-size-xl:calc(2.25rem * var(--mantine-scale));--radio-size:var(--radio-size-sm);--radio-icon-size-xs:calc(.375rem * var(--mantine-scale));--radio-icon-size-sm:calc(.5rem * var(--mantine-scale));--radio-icon-size-md:calc(.625rem * var(--mantine-scale));--radio-icon-size-lg:calc(.875rem * var(--mantine-scale));--radio-icon-size-xl:calc(1rem * var(--mantine-scale));--radio-icon-size:var(--radio-icon-size-sm);--radio-icon-color:var(--mantine-color-white)}.m_89c4f5e4{width:var(--radio-size);height:var(--radio-size);order:1;position:relative}.m_89c4f5e4:where([data-label-position=left]){order:2}.m_f3ed6b2b{color:var(--radio-icon-color);opacity:var(--radio-icon-opacity,0);translate:-50% -50%;transform:var(--radio-icon-transform,scale(.2) translateY(calc(.625rem * var(--mantine-scale))));pointer-events:none;width:var(--radio-icon-size);height:var(--radio-icon-size);transition:opacity .1s,transform .2s;position:absolute;top:50%;left:50%}.m_8a3dbb89{border:calc(.0625rem * var(--mantine-scale)) solid;appearance:none;width:var(--radio-size);height:var(--radio-size);border-radius:var(--radio-radius,var(--radio-size));cursor:var(--mantine-cursor-type);-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;margin:0;transition-property:background-color,border-color;transition-duration:.1s;transition-timing-function:ease;display:flex;position:relative}:where([data-mantine-color-scheme=light]) .m_8a3dbb89{background-color:var(--mantine-color-white);border-color:var(--mantine-color-gray-4)}:where([data-mantine-color-scheme=dark]) .m_8a3dbb89{background-color:var(--mantine-color-dark-6);border-color:var(--mantine-color-dark-4)}.m_8a3dbb89:checked{background-color:var(--radio-color,var(--mantine-primary-color-filled));border-color:var(--radio-color,var(--mantine-primary-color-filled))}.m_8a3dbb89:checked+.m_f3ed6b2b{--radio-icon-opacity:1;--radio-icon-transform:scale(1)}.m_8a3dbb89:disabled{cursor:not-allowed;background-color:var(--mantine-color-disabled);border-color:var(--mantine-color-disabled-border)}.m_8a3dbb89:disabled+.m_f3ed6b2b{--radio-icon-color:var(--mantine-color-disabled-color)}.m_8a3dbb89:where([data-with-error-styles][data-error]){border-color:var(--mantine-color-error)}.m_1bfe9d39+.m_f3ed6b2b{--radio-icon-color:var(--radio-color)}.m_1bfe9d39:checked:not(:disabled){border-color:var(--radio-color);background-color:#0000}.m_1bfe9d39:checked:not(:disabled)+.m_f3ed6b2b{--radio-icon-color:var(--radio-color);--radio-icon-opacity:1;--radio-icon-transform:none}.m_f8d312f2{--rating-size-xs:calc(.875rem * var(--mantine-scale));--rating-size-sm:calc(1.125rem * var(--mantine-scale));--rating-size-md:calc(1.25rem * var(--mantine-scale));--rating-size-lg:calc(1.75rem * var(--mantine-scale));--rating-size-xl:calc(2rem * var(--mantine-scale));width:max-content;display:flex}.m_f8d312f2:where(:has(input:disabled)){pointer-events:none}.m_61734bb7{transition:transform .1s;position:relative}.m_61734bb7:where([data-active]){z-index:1;transform:scale(1.1)}.m_5662a89a{width:var(--rating-size);height:var(--rating-size);display:block}:where([data-mantine-color-scheme=light]) .m_5662a89a{fill:var(--mantine-color-gray-3);stroke:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_5662a89a{fill:var(--mantine-color-dark-3);stroke:var(--mantine-color-dark-3)}.m_5662a89a:where([data-filled]){fill:var(--rating-color);stroke:var(--rating-color)}.m_211007ba{white-space:nowrap;opacity:0;-webkit-tap-highlight-color:transparent;width:0;height:0;position:absolute;overflow:hidden}.m_211007ba:focus-visible+label{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.m_21342ee4{cursor:pointer;z-index:var(--rating-item-z-index,0);-webkit-tap-highlight-color:transparent;display:block;position:absolute;top:0;left:0}.m_21342ee4:where([data-read-only]){cursor:default}.m_21342ee4:where(:last-of-type){position:relative}.m_fae05d6a{clip-path:var(--rating-symbol-clip-path)}.m_47dd3981{align-items:baseline;display:inline-flex;position:relative;overflow:hidden}.m_47dd3981[data-tabular-numbers]{font-variant-numeric:tabular-nums}.m_ccf525bd{z-index:1;white-space:pre;color:#0000;forced-color-adjust:none;position:absolute;inset:0;overflow:hidden}.m_b301d46e{z-index:2;pointer-events:none;-webkit-user-select:none;user-select:none;width:1ch;height:1em;transition:width var(--rn-duration) var(--rn-timing-function), opacity var(--rn-duration) var(--rn-timing-function);line-height:1;display:inline-block;position:relative;overflow:hidden}.m_b301d46e[data-empty]{opacity:0;width:0}.m_8ae40964{animation:m_18d73873 var(--rn-duration) var(--rn-timing-function);flex-direction:column;display:flex}.m_8ae40964>span{justify-content:center;align-items:center;height:1em;display:flex}.m_47d64bf5{z-index:2;white-space:pre;pointer-events:none;-webkit-user-select:none;user-select:none;transition:opacity var(--rn-duration) var(--rn-timing-function);display:inline-block;position:relative;overflow:hidden}.m_47d64bf5[data-empty]{opacity:0;width:0}@keyframes m_18d73873{0%{transform:var(--rn-roll-from)}to{transform:var(--rn-roll-to)}}.m_1b3c8819{--tooltip-radius:var(--mantine-radius-default);padding:calc(var(--mantine-spacing-xs) / 2) var(--mantine-spacing-xs);pointer-events:none;font-size:var(--mantine-font-size-sm);white-space:nowrap;border-radius:var(--tooltip-radius);position:absolute}:where([data-mantine-color-scheme=light]) .m_1b3c8819{background-color:var(--tooltip-bg,var(--mantine-color-gray-9));color:var(--tooltip-color,var(--mantine-color-white))}:where([data-mantine-color-scheme=dark]) .m_1b3c8819{background-color:var(--tooltip-bg,var(--mantine-color-gray-2));color:var(--tooltip-color,var(--mantine-color-black))}.m_1b3c8819:where([data-multiline]){white-space:normal}.m_1b3c8819:where([data-fixed]){position:fixed}.m_1b3c8819:where([data-interactive]){pointer-events:auto}.m_f898399f{background-color:inherit;z-index:1;border:0}.m_b32e4812{width:var(--rp-size);height:var(--rp-size);min-width:var(--rp-size);min-height:var(--rp-size);--rp-transition-duration:0s;position:relative}.m_d43b5134{width:var(--rp-size);height:var(--rp-size);min-width:var(--rp-size);min-height:var(--rp-size);transform:rotate(calc(var(--rp-start-angle,270deg) - 360deg))}.m_b1ca1fbf{stroke:var(--curve-color,var(--rp-curve-root-color));transition:stroke-dashoffset var(--rp-transition-duration) ease, stroke-dasharray var(--rp-transition-duration) ease, stroke var(--rp-transition-duration)}[data-mantine-color-scheme=light] .m_b1ca1fbf{--rp-curve-root-color:var(--mantine-color-gray-2)}[data-mantine-color-scheme=dark] .m_b1ca1fbf{--rp-curve-root-color:var(--mantine-color-dark-4)}.m_b23f9dc4{top:50%;inset-inline:var(--rp-label-offset);position:absolute;transform:translateY(-50%)}.m_bc8f275{--scroller-control-size:calc(3.125rem * var(--mantine-scale));--scroller-background-color:var(--mantine-color-body);align-items:center;max-width:100%;display:flex;position:relative;overflow:hidden}.m_ee44dece{scrollbar-width:none;-ms-overflow-style:none;-webkit-user-select:none;user-select:none;flex:1;overflow:auto hidden}.m_ee44dece::-webkit-scrollbar{display:none}.m_ee44dece[data-draggable]{cursor:grab}.m_53e4f606{white-space:nowrap;display:inline-flex}.m_47754fc8{width:var(--scroller-control-size);height:var(--scroller-control-size)}.m_53e526ea{width:var(--scroller-control-size);z-index:1;color:var(--mantine-color-dimmed);opacity:1;pointer-events:auto;align-items:center;transition:opacity .2s,color .15s;display:flex;position:absolute;top:0;bottom:0}.m_53e526ea:hover{color:var(--mantine-color-text)}.m_53e526ea:where([data-position=start]){background:linear-gradient(to right, var(--scroller-background-color) 40%, transparent);justify-content:flex-start;inset-inline-start:0}.m_53e526ea:where([data-position=start]) .m_47754fc8{transform:rotate(90deg)}.m_53e526ea:where([data-position=end]){background:linear-gradient(to left, var(--scroller-background-color) 40%, transparent);justify-content:flex-end;inset-inline-end:0}.m_53e526ea:where([data-position=end]) .m_47754fc8{transform:rotate(-90deg)}.m_53e526ea:where([data-hidden]){opacity:0;pointer-events:none}.m_cf365364{--sc-padding-xs:calc(.125rem * var(--mantine-scale)) calc(.375rem * var(--mantine-scale));--sc-padding-sm:calc(.1875rem * var(--mantine-scale)) calc(.625rem * var(--mantine-scale));--sc-padding-md:calc(.25rem * var(--mantine-scale)) calc(.875rem * var(--mantine-scale));--sc-padding-lg:calc(.4375rem * var(--mantine-scale)) calc(1rem * var(--mantine-scale));--sc-padding-xl:calc(.625rem * var(--mantine-scale)) calc(1.25rem * var(--mantine-scale));--sc-transition-duration:.2s;--sc-padding:var(--sc-padding-sm);--sc-transition-timing-function:ease;--sc-font-size:var(--mantine-font-size-sm);border-radius:var(--sc-radius,var(--mantine-radius-default));width:auto;padding:calc(.25rem * var(--mantine-scale));flex-direction:row;display:inline-flex;position:relative;overflow:hidden}.m_cf365364:where([data-full-width]){display:flex}.m_cf365364:where([data-orientation=vertical]){flex-direction:column;width:max-content;display:flex}.m_cf365364:where([data-orientation=vertical]):where([data-full-width]){width:auto}:where([data-mantine-color-scheme=light]) .m_cf365364{background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_cf365364{background-color:var(--mantine-color-dark-8)}.m_9e182ccd{z-index:1;border-radius:max(calc(var(--sc-radius,var(--mantine-radius-default)) - 4px), calc(var(--sc-radius,var(--mantine-radius-default)) / 4));display:block;position:absolute}:where([data-mantine-color-scheme=light]) .m_9e182ccd{box-shadow:var(--sc-shadow,none);background-color:var(--sc-color,var(--mantine-color-white))}:where([data-mantine-color-scheme=dark]) .m_9e182ccd{box-shadow:none;background-color:var(--sc-color,var(--mantine-color-dark-5))}.m_1738fcb2{-webkit-tap-highlight-color:transparent;font-weight:var(--mantine-font-weight-medium);text-align:center;white-space:nowrap;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;border-radius:calc(var(--sc-radius,var(--mantine-radius-default)) - 4px);font-size:var(--sc-font-size);padding:var(--sc-padding);transition:color var(--sc-transition-duration) var(--sc-transition-timing-function);cursor:pointer;outline:var(--segmented-control-outline,none);display:block;overflow:hidden}:where([data-mantine-color-scheme=light]) .m_1738fcb2{color:var(--mantine-color-gray-7)}:where([data-mantine-color-scheme=dark]) .m_1738fcb2{color:var(--mantine-color-dark-1)}.m_1738fcb2:where([data-read-only]){cursor:default}fieldset:disabled .m_1738fcb2,.m_1738fcb2:where([data-disabled]){cursor:not-allowed;color:var(--mantine-color-disabled-color)}:where([data-mantine-color-scheme=light]) .m_1738fcb2:where([data-active]){color:var(--sc-label-color,var(--mantine-color-black))}:where([data-mantine-color-scheme=dark]) .m_1738fcb2:where([data-active]){color:var(--sc-label-color,var(--mantine-color-white))}.m_cf365364:where([data-initialized]) .m_1738fcb2:where([data-active]):before{display:none}.m_1738fcb2:where([data-active]):before{content:"";z-index:0;border-radius:calc(var(--sc-radius,var(--mantine-radius-default)) - 4px);position:absolute;inset:0}:where([data-mantine-color-scheme=light]) .m_1738fcb2:where([data-active]):before{box-shadow:var(--sc-shadow,none);background-color:var(--sc-color,var(--mantine-color-white))}:where([data-mantine-color-scheme=dark]) .m_1738fcb2:where([data-active]):before{box-shadow:none;background-color:var(--sc-color,var(--mantine-color-dark-5))}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_1738fcb2:where(:not([data-disabled],[data-active],[data-read-only])):hover{color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_1738fcb2:where(:not([data-disabled],[data-active],[data-read-only])):hover{color:var(--mantine-color-white)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_1738fcb2:where(:not([data-disabled],[data-active],[data-read-only])):active{color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_1738fcb2:where(:not([data-disabled],[data-active],[data-read-only])):active{color:var(--mantine-color-white)}}@media (hover:hover){fieldset:disabled .m_1738fcb2:hover{color:var(--mantine-color-disabled-color)!important}}@media (hover:none){fieldset:disabled .m_1738fcb2:active{color:var(--mantine-color-disabled-color)!important}}.m_1714d588{white-space:nowrap;opacity:0;width:0;height:0;position:absolute;overflow:hidden}.m_1714d588[data-focus-ring=auto]:focus:focus-visible+.m_1738fcb2,.m_1714d588[data-focus-ring=always]:focus+.m_1738fcb2{--segmented-control-outline:2px solid var(--mantine-primary-color-filled)}.m_69686b9b{z-index:2;transition:border-color var(--sc-transition-duration) var(--sc-transition-timing-function);flex:1;position:relative}.m_cf365364[data-with-items-borders] :where(.m_69686b9b):before{content:"";top:0;bottom:0;background-color:var(--separator-color);width:calc(.0625rem * var(--mantine-scale));transition:background-color var(--sc-transition-duration) var(--sc-transition-timing-function);position:absolute;inset-inline-start:0}.m_69686b9b[data-orientation=vertical]:before{top:0;inset-inline:0;height:calc(.0625rem * var(--mantine-scale));width:auto;bottom:auto}:where([data-mantine-color-scheme=light]) .m_69686b9b{--separator-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_69686b9b{--separator-color:var(--mantine-color-dark-4)}.m_69686b9b:first-of-type:before,[data-mantine-color-scheme] .m_69686b9b[data-active]:before,[data-mantine-color-scheme] .m_69686b9b[data-active]+.m_69686b9b:before{--separator-color:transparent}.m_78882f40{z-index:2;position:relative}.m_fa528724{--scp-filled-segment-color:var(--mantine-primary-color-filled);--scp-transition-duration:0s;--scp-thickness:calc(.75rem * var(--mantine-scale))}:where([data-mantine-color-scheme=light]) .m_fa528724{--scp-empty-segment-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_fa528724{--scp-empty-segment-color:var(--mantine-color-dark-4)}.m_fa528724{width:fit-content;position:relative}.m_62e9e7e2{transform:var(--scp-rotation);display:block;overflow:hidden}.m_c573fb6f{transition:stroke-dashoffset var(--scp-transition-duration) ease, stroke-dasharray var(--scp-transition-duration) ease, stroke-opacity var(--scp-transition-duration) ease, stroke var(--scp-transition-duration)}.m_4fa340f2{text-align:center;z-index:1;margin:0;padding:0;position:absolute;inset-inline:0}.m_4fa340f2:where([data-position=bottom]){padding-inline:calc(var(--scp-thickness) * 2);bottom:0}.m_4fa340f2:where([data-position=bottom]):where([data-orientation=down]){top:0;bottom:auto}.m_4fa340f2:where([data-position=center]){padding-inline:calc(var(--scp-thickness) * 3);top:50%;transform:translateY(-50%)}.m_925c2d2c{container:simple-grid/inline-size}.m_2415a157{grid-template-columns:repeat(var(--sg-cols), minmax(0, 1fr));grid-auto-rows:var(--sg-auto-rows,auto);gap:var(--sg-spacing-y) var(--sg-spacing-x);display:grid}.m_2415a157[data-auto-cols=auto-fill]{grid-template-columns:repeat(auto-fill, minmax(var(--sg-min-col-width), 1fr))}.m_2415a157[data-auto-cols=auto-fit]{grid-template-columns:repeat(auto-fit, minmax(var(--sg-min-col-width), 1fr))}@keyframes m_299c329c{0%,to{opacity:.4}50%{opacity:1}}.m_18320242{height:var(--skeleton-height,auto);width:var(--skeleton-width,100%);border-radius:var(--skeleton-radius,var(--mantine-radius-default));position:relative;transform:translateZ(0)}.m_18320242:where([data-animate]):after{animation:1.5s linear infinite m_299c329c}.m_18320242:where([data-visible]){overflow:hidden}.m_18320242:where([data-visible]):before{content:"";z-index:10;background-color:var(--mantine-color-body);position:absolute;inset:0}.m_18320242:where([data-visible]):after{content:"";z-index:11;position:absolute;inset:0}:where([data-mantine-color-scheme=light]) .m_18320242:where([data-visible]):after{background-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_18320242:where([data-visible]):after{background-color:var(--mantine-color-dark-4)}.m_dd36362e{--slider-size-xs:calc(.25rem * var(--mantine-scale));--slider-size-sm:calc(.375rem * var(--mantine-scale));--slider-size-md:calc(.5rem * var(--mantine-scale));--slider-size-lg:calc(.625rem * var(--mantine-scale));--slider-size-xl:calc(.75rem * var(--mantine-scale));--slider-size:var(--slider-size-md);--slider-radius:calc(62.5rem * var(--mantine-scale));--slider-color:var(--mantine-primary-color-filled);--slider-track-disabled-bg:var(--mantine-color-disabled);-webkit-tap-highlight-color:transparent;height:calc(var(--slider-size) * 2);padding-inline:var(--slider-size);touch-action:none;outline:none;flex-direction:column;align-items:center;display:flex;position:relative}[data-mantine-color-scheme=light] .m_dd36362e{--slider-track-bg:var(--mantine-color-gray-2)}[data-mantine-color-scheme=dark] .m_dd36362e{--slider-track-bg:var(--mantine-color-dark-4)}.m_dd36362e[data-orientation=vertical]{width:calc(var(--slider-size) * 2);height:calc(12.5rem * var(--mantine-scale));padding-inline:0;padding-block:var(--slider-size)}.m_c9357328{top:calc(-2.25rem * var(--mantine-scale));font-size:var(--mantine-font-size-xs);color:var(--mantine-color-white);padding:calc(var(--mantine-spacing-xs) / 2);border-radius:var(--mantine-radius-sm);white-space:nowrap;pointer-events:none;-webkit-user-select:none;user-select:none;touch-action:none;position:absolute}:where([data-mantine-color-scheme=light]) .m_c9357328{background-color:var(--mantine-color-gray-9)}:where([data-mantine-color-scheme=dark]) .m_c9357328{background-color:var(--mantine-color-dark-4)}:where(.m_dd36362e[data-orientation=vertical]) .m_c9357328{top:auto;inset-inline-start:calc(100% + 8px)}.m_c9a9a60a{height:var(--slider-thumb-size);width:var(--slider-thumb-size);border:calc(.25rem * var(--mantine-scale)) solid;cursor:pointer;border-radius:var(--slider-radius);z-index:3;-webkit-user-select:none;user-select:none;touch-action:none;outline-offset:calc(.125rem * var(--mantine-scale));top:50%;left:var(--slider-thumb-offset);justify-content:center;align-items:center;transition:box-shadow .1s,transform .1s;display:flex;position:absolute;transform:translate(-50%,-50%)}:where([dir=rtl]) .m_c9a9a60a{left:auto;right:calc(var(--slider-thumb-offset) - var(--slider-thumb-size))}fieldset:disabled .m_c9a9a60a,.m_c9a9a60a:where([data-disabled]){display:none}.m_c9a9a60a:where([data-dragging]){box-shadow:var(--mantine-shadow-sm);transform:translate(-50%,-50%)scale(1.05)}:where([data-mantine-color-scheme=light]) .m_c9a9a60a{color:var(--slider-color);border-color:var(--slider-color);background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_c9a9a60a{color:var(--mantine-color-white);border-color:var(--mantine-color-white);background-color:var(--slider-color)}:where(.m_dd36362e[data-orientation=vertical]) .m_c9a9a60a{top:auto;left:50%;right:auto;bottom:var(--slider-thumb-offset);transform:translate(-50%,50%)}:where(.m_dd36362e[data-orientation=vertical]) .m_c9a9a60a:where([data-dragging]){transform:translate(-50%,50%)scale(1.05)}:where([dir=rtl]) :where(.m_dd36362e[data-orientation=vertical]) .m_c9a9a60a{left:50%;right:auto}.m_a8645c2{width:100%;height:calc(var(--slider-size) * 2);cursor:pointer;align-items:center;display:flex}fieldset:disabled .m_a8645c2,.m_a8645c2:where([data-disabled]){cursor:not-allowed}:where(.m_dd36362e[data-orientation=vertical]) .m_a8645c2{width:calc(var(--slider-size) * 2);flex-direction:column;height:100%}.m_c9ade57f{width:100%;height:var(--slider-size);position:relative}.m_c9ade57f:where([data-inverted]:not([data-disabled])){--track-bg:var(--slider-color)}fieldset:disabled .m_c9ade57f:where([data-inverted]),.m_c9ade57f:where([data-inverted][data-disabled]){--track-bg:var(--slider-track-disabled-bg)}.m_c9ade57f:before{content:"";border-radius:var(--slider-radius);top:0;bottom:0;inset-inline:calc(var(--slider-size) * -1);background-color:var(--track-bg,var(--slider-track-bg));z-index:0;position:absolute}:where(.m_dd36362e[data-orientation=vertical]) .m_c9ade57f{width:var(--slider-size);height:100%}:where(.m_dd36362e[data-orientation=vertical]) .m_c9ade57f:before{inset-inline:0;top:calc(var(--slider-size) * -1);bottom:calc(var(--slider-size) * -1)}.m_38aeed47{z-index:1;background-color:var(--slider-color);border-radius:var(--slider-radius);width:var(--slider-bar-width);top:0;bottom:0;position:absolute;inset-inline-start:var(--slider-bar-offset)}.m_38aeed47:where([data-inverted]){background-color:var(--slider-track-bg)}fieldset:disabled .m_38aeed47:where(:not([data-inverted])),.m_38aeed47:where([data-disabled]:not([data-inverted])){background-color:var(--mantine-color-disabled-color)}:where(.m_dd36362e[data-orientation=vertical]) .m_38aeed47{top:auto;bottom:var(--slider-bar-offset);width:100%;height:var(--slider-bar-width);inset-inline-start:0}.m_b7b0423a{inset-inline-start:calc(var(--mark-offset) - var(--slider-size) / 2);z-index:2;pointer-events:none;height:0;position:absolute;top:0}:where(.m_dd36362e[data-orientation=vertical]) .m_b7b0423a{inset-inline-start:0;top:auto;bottom:calc(var(--mark-offset) + var(--slider-size) / 2);width:0;height:0}.m_dd33bc19{border:calc(.125rem * var(--mantine-scale)) solid;height:var(--slider-size);width:var(--slider-size);border-radius:calc(62.5rem * var(--mantine-scale));background-color:var(--mantine-color-white);pointer-events:none}:where([data-mantine-color-scheme=light]) .m_dd33bc19{border-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_dd33bc19{border-color:var(--mantine-color-dark-4)}.m_dd33bc19:where([data-filled]){border-color:var(--slider-color)}.m_dd33bc19:where([data-filled]):where([data-disabled]){border-color:var(--mantine-color-disabled-border)}.m_68c77a5b{transform:translate(calc(-50% + var(--slider-size) / 2), calc(var(--mantine-spacing-xs) / 2));font-size:var(--mantine-font-size-sm);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}:where([dir=rtl]) .m_68c77a5b{transform:translate(calc(50% - var(--slider-size) / 2), calc(var(--mantine-spacing-xs) / 2))}:where([data-mantine-color-scheme=light]) .m_68c77a5b{color:var(--mantine-color-gray-6)}:where([data-mantine-color-scheme=dark]) .m_68c77a5b{color:var(--mantine-color-dark-2)}:where(.m_dd36362e[data-orientation=vertical]) .m_68c77a5b{transform:translate(calc(var(--slider-size) + var(--mantine-spacing-xs) / 2), calc(-50% - var(--slider-size) / 2))}.m_19e66008{display:flex}.m_19e66008:where([data-orientation=horizontal]){flex-direction:row}.m_19e66008:where([data-orientation=vertical]){flex-direction:column}.m_19e5428e{flex-grow:0;flex-shrink:1;overflow:auto}.m_27f81bce{flex:0 0 var(--splitter-line-size,calc(.125rem * var(--mantine-scale)));touch-action:none;background-color:var(--splitter-handle-color,var(--mantine-color-body));outline:none;justify-content:center;align-items:center;display:flex;position:relative}.m_27f81bce:where([data-orientation=horizontal]){cursor:col-resize}.m_27f81bce:where([data-orientation=vertical]){cursor:row-resize}.m_22feb770{z-index:1;border-radius:calc(62.5rem * var(--mantine-scale));color:var(--mantine-color-dimmed);justify-content:center;align-items:center;transition:color .1s;display:flex;position:absolute}:where([data-mantine-color-scheme=light]) .m_22feb770{background-color:var(--mantine-color-white);border:calc(.0625rem * var(--mantine-scale)) solid var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_22feb770{background-color:var(--mantine-color-dark-6);border:calc(.0625rem * var(--mantine-scale)) solid var(--mantine-color-dark-4)}.m_22feb770:where([data-orientation=horizontal]){width:calc(.75rem * var(--mantine-scale));height:calc(3.75rem * var(--mantine-scale))}.m_22feb770:where([data-orientation=vertical]){width:calc(3.75rem * var(--mantine-scale));height:calc(.75rem * var(--mantine-scale))}.m_22feb770>svg{width:100%;height:100%}.m_27f81bce:focus-visible .m_22feb770{box-shadow:0 0 0 calc(.125rem * var(--mantine-scale)) var(--mantine-primary-color-filled)}.m_559cce2d{position:relative}.m_559cce2d:where([data-has-spoiler]){margin-bottom:calc(1.5rem * var(--mantine-scale))}.m_b912df4e{transition:max-height var(--spoiler-transition-duration,.2s) ease;flex-direction:column;display:flex;overflow:hidden}.m_b9131032{inset-inline-start:0;height:calc(1.5rem * var(--mantine-scale));position:absolute;top:100%}.m_6d731127{align-items:var(--stack-align,stretch);justify-content:var(--stack-justify,flex-start);gap:var(--stack-gap,var(--mantine-spacing-md));flex-direction:column;display:flex}.m_cbb4ea7e{--stepper-icon-size-xs:calc(2.125rem * var(--mantine-scale));--stepper-icon-size-sm:calc(2.25rem * var(--mantine-scale));--stepper-icon-size-md:calc(2.625rem * var(--mantine-scale));--stepper-icon-size-lg:calc(3rem * var(--mantine-scale));--stepper-icon-size-xl:calc(3.25rem * var(--mantine-scale));--stepper-icon-size:var(--stepper-icon-size-md);--stepper-color:var(--mantine-primary-color-filled);--stepper-content-padding:var(--mantine-spacing-md);--stepper-spacing:var(--mantine-spacing-md);--stepper-radius:calc(62.5rem * var(--mantine-scale));--stepper-fz:var(--mantine-font-size-md);--stepper-outline-thickness:calc(.125rem * var(--mantine-scale))}[data-mantine-color-scheme=light] .m_cbb4ea7e{--stepper-outline-color:var(--mantine-color-gray-2)}[data-mantine-color-scheme=dark] .m_cbb4ea7e{--stepper-outline-color:var(--mantine-color-dark-5)}.m_aaf89d0b{flex-wrap:nowrap;align-items:center;display:flex}.m_aaf89d0b:where([data-wrap]){gap:var(--mantine-spacing-md) 0;flex-wrap:wrap}.m_aaf89d0b:where([data-label-position=bottom]){align-items:flex-start}.m_aaf89d0b:where([data-orientation=vertical]){flex-direction:column}.m_aaf89d0b:where([data-orientation=vertical]):where([data-icon-position=left]){align-items:flex-start}.m_aaf89d0b:where([data-orientation=vertical]):where([data-icon-position=right]){align-items:flex-end}.m_aaf89d0b:where([data-orientation=horizontal]){flex-direction:row}.m_2a371ac9{height:var(--stepper-outline-thickness);margin-inline:var(--mantine-spacing-md);background-color:var(--stepper-outline-color);flex:1;transition:background-color .15s}.m_2a371ac9:where([data-active]){background-color:var(--stepper-color)}.m_aaf89d0b:where([data-label-position=bottom]) .m_2a371ac9{margin-top:calc((var(--stepper-icon-size) - var(--stepper-outline-thickness)) / 2)}.m_78da155d{padding-top:var(--stepper-content-padding)}.m_cbb57068{--step-color:var(--stepper-color);cursor:default;display:flex}.m_cbb57068:where([data-allow-click]){cursor:pointer}.m_cbb57068:where([data-icon-position=left]){flex-direction:row}.m_cbb57068:where([data-icon-position=right]){flex-direction:row-reverse}.m_cbb57068:where([data-label-position=bottom]){min-width:var(--stepper-icon-size);max-width:calc(var(--stepper-icon-size) * 4);flex-direction:column;align-items:center;overflow:visible}.m_cbb57068:where([data-label-position=bottom]):where([data-icon-position=right]){flex-direction:column}.m_f56b1e2c{align-items:center}.m_833edb7e{--separator-spacing:calc(var(--mantine-spacing-xs) / 2);min-height:calc(var(--stepper-icon-size) + var(--mantine-spacing-xl) + var(--separator-spacing));margin-top:var(--separator-spacing);justify-content:flex-start;overflow:hidden}.m_833edb7e:where(:first-of-type){margin-top:0}.m_833edb7e:where(:last-of-type){min-height:auto}.m_833edb7e:where(:last-of-type) .m_6496b3f3{display:none}.m_818e70b{position:relative}.m_6496b3f3{top:calc(var(--stepper-icon-size) + var(--separator-spacing));border-inline-start:var(--stepper-outline-thickness) solid var(--stepper-outline-color);height:100vh;position:absolute;inset-inline-start:calc(var(--stepper-icon-size) / 2)}.m_6496b3f3:where([data-active]){border-color:var(--stepper-color)}.m_1959ad01{height:var(--stepper-icon-size);width:var(--stepper-icon-size);min-height:var(--stepper-icon-size);min-width:var(--stepper-icon-size);border-radius:var(--stepper-radius);font-size:var(--stepper-fz);border:var(--stepper-outline-thickness) solid var(--stepper-outline-color);background-color:var(--stepper-outline-color);justify-content:center;align-items:center;font-weight:700;transition:background-color .15s,border-color .15s;display:flex;position:relative}:where([data-mantine-color-scheme=light]) .m_1959ad01{color:var(--mantine-color-gray-7)}:where([data-mantine-color-scheme=dark]) .m_1959ad01{color:var(--mantine-color-dark-1)}.m_1959ad01:where([data-progress]){border-color:var(--step-color)}.m_1959ad01:where([data-completed]){color:var(--stepper-icon-color,var(--mantine-color-white));background-color:var(--step-color);border-color:var(--step-color)}.m_8faaac38{display:flex}.m_a79331dc{color:var(--stepper-icon-color,var(--mantine-color-white));justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.m_1956aa2a{flex-direction:column;display:flex}.m_1956aa2a:where([data-icon-position=left]){margin-inline-start:var(--mantine-spacing-sm)}.m_1956aa2a:where([data-icon-position=right]){text-align:end;margin-inline-end:var(--mantine-spacing-sm)}.m_cbb57068:where([data-label-position=bottom]) .m_1956aa2a{text-align:center;margin:calc(var(--mantine-spacing-xs) / 2) 0 0;align-items:center}.m_12051f6c{font-weight:var(--mantine-font-weight-medium);font-size:var(--stepper-fz);line-height:1}.m_164eea74{margin-top:calc(var(--stepper-spacing) / 3);margin-bottom:calc(var(--stepper-spacing) / 3);font-size:calc(var(--stepper-fz) - calc(.125rem * var(--mantine-scale)));color:var(--mantine-color-dimmed);line-height:1}.m_5f93f3bb{--switch-height-xs:calc(1rem * var(--mantine-scale));--switch-height-sm:calc(1.25rem * var(--mantine-scale));--switch-height-md:calc(1.5rem * var(--mantine-scale));--switch-height-lg:calc(1.875rem * var(--mantine-scale));--switch-height-xl:calc(2.25rem * var(--mantine-scale));--switch-width-xs:calc(2rem * var(--mantine-scale));--switch-width-sm:calc(2.375rem * var(--mantine-scale));--switch-width-md:calc(2.875rem * var(--mantine-scale));--switch-width-lg:calc(3.5rem * var(--mantine-scale));--switch-width-xl:calc(4.5rem * var(--mantine-scale));--switch-thumb-size-xs:calc(.75rem * var(--mantine-scale));--switch-thumb-size-sm:calc(.875rem * var(--mantine-scale));--switch-thumb-size-md:calc(1.125rem * var(--mantine-scale));--switch-thumb-size-lg:calc(1.375rem * var(--mantine-scale));--switch-thumb-size-xl:calc(1.75rem * var(--mantine-scale));--switch-label-font-size-xs:calc(.3125rem * var(--mantine-scale));--switch-label-font-size-sm:calc(.375rem * var(--mantine-scale));--switch-label-font-size-md:calc(.4375rem * var(--mantine-scale));--switch-label-font-size-lg:calc(.5625rem * var(--mantine-scale));--switch-label-font-size-xl:calc(.6875rem * var(--mantine-scale));--switch-track-label-padding-xs:calc(.125rem * var(--mantine-scale));--switch-track-label-padding-sm:calc(.15625rem * var(--mantine-scale));--switch-track-label-padding-md:calc(.1875rem * var(--mantine-scale));--switch-track-label-padding-lg:calc(.1875rem * var(--mantine-scale));--switch-track-label-padding-xl:calc(.21875rem * var(--mantine-scale));--switch-height:var(--switch-height-sm);--switch-width:var(--switch-width-sm);--switch-thumb-size:var(--switch-thumb-size-sm);--switch-label-font-size:var(--switch-label-font-size-sm);--switch-track-label-padding:var(--switch-track-label-padding-sm);--switch-radius:calc(62.5rem * var(--mantine-scale));--switch-color:var(--mantine-primary-color-filled);--switch-disabled-color:var(--mantine-color-disabled);position:relative}.m_926b4011{opacity:0;white-space:nowrap;width:100%;height:100%;margin:0;padding:0;position:absolute;overflow:hidden}.m_9307d992{-webkit-tap-highlight-color:transparent;cursor:var(--switch-cursor,var(--mantine-cursor-type));border-radius:var(--switch-radius);background-color:var(--switch-bg);height:var(--switch-height);min-width:var(--switch-width);appearance:none;font-size:var(--switch-label-font-size);font-weight:var(--mantine-font-weight-medium);order:var(--switch-order,1);-webkit-user-select:none;user-select:none;z-index:0;color:var(--switch-text-color);align-items:center;margin:0;line-height:0;transition:background-color .15s,border-color .15s;display:flex;position:relative;overflow:hidden}.m_9307d992:where([data-without-labels]){width:var(--switch-width)}.m_926b4011:focus-visible+.m_9307d992{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.m_926b4011:checked+.m_9307d992{--switch-bg:var(--switch-color);--switch-text-color:var(--mantine-color-white)}.m_926b4011:disabled+.m_9307d992,.m_926b4011[data-disabled]+.m_9307d992{--switch-bg:var(--switch-disabled-color);--switch-cursor:not-allowed}[data-mantine-color-scheme=light] .m_9307d992{--switch-bg:var(--mantine-color-gray-3);--switch-text-color:var(--mantine-color-gray-6)}[data-mantine-color-scheme=dark] .m_9307d992{--switch-bg:var(--mantine-color-dark-5);--switch-text-color:var(--mantine-color-dark-1)}.m_9307d992[data-label-position=left]{--switch-order:2}.m_93039a1d{z-index:1;border-radius:var(--switch-radius);background-color:var(--switch-thumb-bg,var(--mantine-color-white));height:var(--switch-thumb-size);width:var(--switch-thumb-size);transition:inset-inline-start .15s;display:flex;position:absolute;inset-inline-start:var(--switch-thumb-start,var(--switch-track-label-padding))}.m_93039a1d:where([data-with-thumb-indicator]):before{content:"";background-color:var(--switch-bg);border-radius:var(--switch-radius);width:40%;height:40%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.m_93039a1d>*{margin:auto}.m_926b4011:checked+*>.m_93039a1d{--switch-thumb-start:calc(100% - var(--switch-thumb-size) - var(--switch-track-label-padding))}.m_926b4011:disabled+*>.m_93039a1d,.m_926b4011[data-disabled]+*>.m_93039a1d{--switch-thumb-bg:var(--switch-thumb-bg-disabled)}[data-mantine-color-scheme=light] .m_93039a1d{--switch-thumb-bg-disabled:var(--mantine-color-gray-0)}[data-mantine-color-scheme=dark] .m_93039a1d{--switch-thumb-bg-disabled:var(--mantine-color-dark-3)}.m_8277e082{height:100%;min-width:calc(var(--switch-width) - var(--switch-thumb-size));padding-inline:var(--switch-track-label-padding);place-content:center;margin-inline-start:calc(var(--switch-thumb-size) + var(--switch-track-label-padding));transition:margin .15s;display:grid}.m_926b4011:checked+*>.m_8277e082{margin-inline-start:0;margin-inline-end:calc(var(--switch-thumb-size) + var(--switch-track-label-padding))}.m_b23fa0ef{border-collapse:collapse;border-spacing:0;width:100%;line-height:var(--mantine-line-height);font-size:var(--mantine-font-size-sm);table-layout:var(--table-layout,auto);caption-side:var(--table-caption-side,bottom);border:none}:where([data-mantine-color-scheme=light]) .m_b23fa0ef{--table-hover-color:var(--mantine-color-gray-1);--table-striped-color:var(--mantine-color-gray-0);--table-border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_b23fa0ef{--table-hover-color:var(--mantine-color-dark-5);--table-striped-color:var(--mantine-color-dark-6);--table-border-color:var(--mantine-color-dark-4)}.m_b23fa0ef:where([data-with-table-border]){border:calc(.0625rem * var(--mantine-scale)) solid var(--table-border-color)}.m_b23fa0ef:where([data-tabular-nums]){font-variant-numeric:tabular-nums}.m_b23fa0ef:where([data-variant=vertical]) :where(.m_4e7aa4f3){font-weight:var(--mantine-font-weight-medium)}:where([data-mantine-color-scheme=light]) .m_b23fa0ef:where([data-variant=vertical]) :where(.m_4e7aa4f3){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_b23fa0ef:where([data-variant=vertical]) :where(.m_4e7aa4f3){background-color:var(--mantine-color-dark-6)}.m_4e7aa4f3{text-align:start}.m_4e7aa4fd{background-color:#0000;border-bottom:none}@media (hover:hover){.m_4e7aa4fd:hover:where([data-hover]){background-color:var(--tr-hover-bg)}}@media (hover:none){.m_4e7aa4fd:active:where([data-hover]){background-color:var(--tr-hover-bg)}}.m_4e7aa4fd:where([data-with-row-border]){border-bottom:calc(.0625rem * var(--mantine-scale)) solid var(--table-border-color)}.m_4e7aa4ef,.m_4e7aa4f3{padding:var(--table-vertical-spacing) var(--table-horizontal-spacing,var(--mantine-spacing-xs))}.m_4e7aa4ef:where([data-with-column-border]:not(:first-child)),.m_4e7aa4f3:where([data-with-column-border]:not(:first-child)){border-inline-start:calc(.0625rem * var(--mantine-scale)) solid var(--table-border-color)}.m_4e7aa4ef:where([data-with-column-border]:not(:last-child)),.m_4e7aa4f3:where([data-with-column-border]:not(:last-child)){border-inline-end:calc(.0625rem * var(--mantine-scale)) solid var(--table-border-color)}.m_b2404537>:where(tr):where([data-with-row-border]:last-of-type){border-bottom:none}.m_b2404537>:where(tr):where([data-striped=odd]:nth-of-type(odd)),.m_b2404537>:where(tr):where([data-striped=even]:nth-of-type(2n)){background-color:var(--table-striped-color)}.m_b2404537>:where(tr)[data-hover]{--tr-hover-bg:var(--table-highlight-on-hover-color,var(--table-hover-color))}.m_b242d975{top:var(--table-sticky-header-offset,0);z-index:3}.m_b242d975:where([data-sticky]){position:sticky}.m_b242d975:where([data-sticky]) :where(.m_4e7aa4f3){top:var(--table-sticky-header-offset,0);background-color:var(--mantine-color-body);position:sticky}.m_b242d975:where([data-sticky]) :where(.m_4e7aa4fd[data-with-row-border]){border-bottom:none}.m_b242d975:where([data-sticky]) :where(.m_4e7aa4fd[data-with-row-border]) :where(.m_4e7aa4f3){box-shadow:inset 0 -1px 0 var(--table-border-color)}.m_b242d975:where([data-sticky]) :where(.m_4e7aa4f3[data-with-column-border]){border-inline:none}.m_b242d975:where([data-sticky]) :where(.m_4e7aa4f3[data-with-column-border]:not(:first-child)):before{content:"";width:calc(.0625rem * var(--mantine-scale));background-color:var(--table-border-color);position:absolute;inset-block:0;inset-inline-start:calc(-.03125rem * var(--mantine-scale))}:where([data-with-table-border]) .m_b242d975[data-sticky]{top:var(--table-sticky-header-offset,0);z-index:4;border-top:none;position:sticky}:where([data-with-table-border]) .m_b242d975[data-sticky]:before{content:"";left:0;top:calc(-.03125rem * var(--mantine-scale));width:100%;height:calc(.0625rem * var(--mantine-scale));background-color:var(--table-border-color);z-index:5;display:block;position:absolute}:where([data-with-table-border]) .m_b242d975[data-sticky] .m_4e7aa4f3:first-child{border-top:none}.m_9e5a3ac7{color:var(--mantine-color-dimmed)}.m_9e5a3ac7:where([data-side=top]){margin-bottom:var(--mantine-spacing-xs)}.m_9e5a3ac7:where([data-side=bottom]){margin-top:var(--mantine-spacing-xs)}.m_a100c15{overflow-x:var(--table-overflow)}.m_62259741{min-width:var(--table-min-width);max-height:var(--table-max-height)}.m_bcaa9990{--toc-depth-offset:.8em;flex-direction:column;display:flex}.m_375a65ef{font-size:var(--toc-size,var(--mantine-font-size-md));border-radius:var(--toc-radius,var(--mantine-radius-default));padding:.3em .8em;padding-left:max(calc(var(--depth-offset) * var(--toc-depth-offset)), .8em);display:block}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_375a65ef:where(:hover):where(:not([data-variant=none])){background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_375a65ef:where(:hover):where(:not([data-variant=none])){background-color:var(--mantine-color-dark-5)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_375a65ef:where(:active):where(:not([data-variant=none])){background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_375a65ef:where(:active):where(:not([data-variant=none])){background-color:var(--mantine-color-dark-5)}}.m_375a65ef:where([data-active]){background-color:var(--toc-bg);color:var(--toc-color)}[data-mantine-color-scheme=light] .m_89d60db1{--tab-border-color:var(--mantine-color-gray-3)}[data-mantine-color-scheme=dark] .m_89d60db1{--tab-border-color:var(--mantine-color-dark-4)}.m_89d60db1{display:var(--tabs-display);flex-direction:var(--tabs-flex-direction);--tabs-list-direction:row;--tabs-panel-grow:unset;--tabs-display:block;--tabs-flex-direction:row;--tabs-list-border-width:0;--tabs-list-border-size:0 0 var(--tabs-list-border-width) 0;--tabs-list-gap:unset;--tabs-list-line-bottom:0;--tabs-list-line-top:unset;--tabs-list-line-start:0;--tabs-list-line-end:0;--tab-radius:var(--tabs-radius) var(--tabs-radius) 0 0;--tab-border-width:0 0 var(--tabs-list-border-width) 0}.m_89d60db1[data-inverted]{--tabs-list-line-bottom:unset;--tabs-list-line-top:0;--tab-radius:0 0 var(--tabs-radius) var(--tabs-radius);--tab-border-width:var(--tabs-list-border-width) 0 0 0}.m_89d60db1[data-inverted] .m_576c9d4:before{top:0;bottom:unset}.m_89d60db1[data-orientation=vertical]{--tabs-list-line-start:unset;--tabs-list-line-end:0;--tabs-list-line-top:0;--tabs-list-line-bottom:0;--tabs-list-border-size:0 var(--tabs-list-border-width) 0 0;--tab-border-width:0 var(--tabs-list-border-width) 0 0;--tab-radius:var(--tabs-radius) 0 0 var(--tabs-radius);--tabs-list-direction:column;--tabs-panel-grow:1;--tabs-display:flex}[dir=rtl] .m_89d60db1[data-orientation=vertical]{--tabs-list-border-size:0 0 0 var(--tabs-list-border-width);--tab-border-width:0 0 0 var(--tabs-list-border-width);--tab-radius:0 var(--tabs-radius) var(--tabs-radius) 0}.m_89d60db1[data-orientation=vertical][data-placement=right]{--tabs-flex-direction:row-reverse;--tabs-list-line-start:0;--tabs-list-line-end:unset;--tabs-list-border-size:0 0 0 var(--tabs-list-border-width);--tab-border-width:0 0 0 var(--tabs-list-border-width);--tab-radius:0 var(--tabs-radius) var(--tabs-radius) 0}[dir=rtl] .m_89d60db1[data-orientation=vertical][data-placement=right]{--tabs-list-border-size:0 var(--tabs-list-border-width) 0 0;--tab-border-width:0 var(--tabs-list-border-width) 0 0;--tab-radius:var(--tabs-radius) 0 0 var(--tabs-radius)}.m_89d60db1[data-variant=default]{--tabs-list-border-width:calc(.125rem * var(--mantine-scale))}[data-mantine-color-scheme=light] .m_89d60db1[data-variant=default]{--tab-hover-color:var(--mantine-color-gray-0)}[data-mantine-color-scheme=dark] .m_89d60db1[data-variant=default]{--tab-hover-color:var(--mantine-color-dark-6)}.m_89d60db1[data-variant=outline]{--tabs-list-border-width:calc(.0625rem * var(--mantine-scale))}.m_89d60db1[data-variant=pills]{--tabs-list-gap:calc(var(--mantine-spacing-sm) / 2)}[data-mantine-color-scheme=light] .m_89d60db1[data-variant=pills]{--tab-hover-color:var(--mantine-color-gray-0)}[data-mantine-color-scheme=dark] .m_89d60db1[data-variant=pills]{--tab-hover-color:var(--mantine-color-dark-6)}.m_89d33d6d{justify-content:var(--tabs-justify,flex-start);flex-wrap:wrap;flex-direction:var(--tabs-list-direction);gap:var(--tabs-list-gap);display:flex}.m_89d33d6d:where([data-grow]) .m_4ec4dce6{flex:1}.m_b0c91715{flex-grow:var(--tabs-panel-grow)}.m_4ec4dce6{padding:var(--mantine-spacing-xs) var(--mantine-spacing-md);font-size:var(--mantine-font-size-sm);white-space:nowrap;z-index:0;-webkit-user-select:none;user-select:none;align-items:center;line-height:1;display:flex;position:relative}.m_4ec4dce6:where(:disabled,[data-disabled]){opacity:.5;cursor:not-allowed}.m_4ec4dce6:focus{z-index:1}.m_fc420b1f{justify-content:center;align-items:center;display:flex}.m_fc420b1f:where([data-position=left]:not(:only-child)){margin-inline-end:var(--mantine-spacing-xs)}.m_fc420b1f:where([data-position=right]:not(:only-child)){margin-inline-start:var(--mantine-spacing-xs)}.m_42bbd1ae{text-align:center;flex:1}.m_576c9d4{position:relative}.m_576c9d4:before{content:"";border:1px solid var(--tab-border-color);bottom:var(--tabs-list-line-bottom);inset-inline-start:var(--tabs-list-line-start);inset-inline-end:var(--tabs-list-line-end);top:var(--tabs-list-line-top);position:absolute}.m_539e827b{border-radius:var(--tab-radius);border-width:var(--tab-border-width);background-color:#0000;border-style:solid;border-color:#0000}.m_539e827b:where([data-active]){border-color:var(--tabs-color)}@media (hover:hover){.m_539e827b:hover{background-color:var(--tab-hover-color)}.m_539e827b:hover:where(:not([data-active])){border-color:var(--tab-border-color)}}@media (hover:none){.m_539e827b:active{background-color:var(--tab-hover-color)}.m_539e827b:active:where(:not([data-active])){border-color:var(--tab-border-color)}}@media (hover:hover){.m_539e827b:disabled:hover,.m_539e827b[data-disabled]:hover{background-color:#0000}}@media (hover:none){.m_539e827b:disabled:active,.m_539e827b[data-disabled]:active{background-color:#0000}}.m_6772fbd5{position:relative}.m_6772fbd5:before{content:"";border-color:var(--tab-border-color);border-width:var(--tabs-list-border-size);bottom:var(--tabs-list-line-bottom);inset-inline-start:var(--tabs-list-line-start);inset-inline-end:var(--tabs-list-line-end);top:var(--tabs-list-line-top);border-style:solid;position:absolute}.m_b59ab47c{border-top:calc(.0625rem * var(--mantine-scale)) solid transparent;border-bottom:calc(.0625rem * var(--mantine-scale)) solid transparent;border-inline:calc(.0625rem * var(--mantine-scale)) solid transparent;border-top-color:var(--tab-border-top-color);border-bottom-color:var(--tab-border-bottom-color);border-radius:var(--tab-radius);--tab-border-bottom-color:transparent;--tab-border-top-color:transparent;--tab-border-inline-end-color:transparent;--tab-border-inline-start-color:transparent;position:relative}.m_b59ab47c:where([data-active]):before{content:"";background-color:var(--tab-border-color);bottom:var(--tab-before-bottom,calc(-.0625rem * var(--mantine-scale)));inset-inline-start:var(--tab-before-start,calc(-.0625rem * var(--mantine-scale)));inset-inline-end:var(--tab-before-end,auto);top:var(--tab-before-top,auto);width:calc(.0625rem * var(--mantine-scale));height:calc(.0625rem * var(--mantine-scale));position:absolute}.m_b59ab47c:where([data-active]):after{content:"";background-color:var(--tab-border-color);bottom:var(--tab-after-bottom,calc(-.0625rem * var(--mantine-scale)));inset-inline-start:var(--tab-after-start,auto);inset-inline-end:var(--tab-after-end,calc(-.0625rem * var(--mantine-scale)));top:var(--tab-after-top,auto);width:calc(.0625rem * var(--mantine-scale));height:calc(.0625rem * var(--mantine-scale));position:absolute}.m_b59ab47c:where([data-active]){border-top-color:var(--tab-border-top-color);border-bottom-color:var(--tab-border-bottom-color);border-inline-start-color:var(--tab-border-inline-start-color);border-inline-end-color:var(--tab-border-inline-end-color);--tab-border-top-color:var(--tab-border-color);--tab-border-inline-start-color:var(--tab-border-color);--tab-border-inline-end-color:var(--tab-border-color);--tab-border-bottom-color:var(--mantine-color-body)}.m_b59ab47c:where([data-active])[data-inverted]{--tab-border-bottom-color:var(--tab-border-color);--tab-border-top-color:var(--mantine-color-body);--tab-before-bottom:auto;--tab-before-top:calc(-.0625rem * var(--mantine-scale));--tab-after-bottom:auto;--tab-after-top:calc(-.0625rem * var(--mantine-scale))}.m_b59ab47c:where([data-active])[data-orientation=vertical][data-placement=left]{--tab-border-inline-end-color:var(--mantine-color-body);--tab-border-inline-start-color:var(--tab-border-color);--tab-border-bottom-color:var(--tab-border-color);--tab-before-end:calc(-.0625rem * var(--mantine-scale));--tab-before-start:auto;--tab-before-bottom:auto;--tab-before-top:calc(-.0625rem * var(--mantine-scale));--tab-after-start:auto;--tab-after-end:calc(-.0625rem * var(--mantine-scale))}.m_b59ab47c:where([data-active])[data-orientation=vertical][data-placement=right]{--tab-border-inline-start-color:var(--mantine-color-body);--tab-border-inline-end-color:var(--tab-border-color);--tab-border-bottom-color:var(--tab-border-color);--tab-before-start:calc(-.0625rem * var(--mantine-scale));--tab-before-end:auto;--tab-before-bottom:auto;--tab-before-top:calc(-.0625rem * var(--mantine-scale));--tab-after-end:auto;--tab-after-start:calc(-.0625rem * var(--mantine-scale))}.m_c3381914{border-radius:var(--tabs-radius);background-color:var(--tab-bg);color:var(--tab-color);--tab-bg:transparent;--tab-color:inherit}@media (hover:hover){.m_c3381914:not([data-disabled]):hover{--tab-bg:var(--tab-hover-color)}}@media (hover:none){.m_c3381914:not([data-disabled]):active{--tab-bg:var(--tab-hover-color)}}.m_c3381914[data-active][data-active]{--tab-bg:var(--tabs-color);--tab-color:var(--tabs-text-color,var(--mantine-color-white))}@media (hover:hover){.m_c3381914[data-active][data-active]:hover{--tab-bg:var(--tabs-color)}}@media (hover:none){.m_c3381914[data-active][data-active]:active{--tab-bg:var(--tabs-color)}}.m_7341320d{--ti-size-xs:calc(1.125rem * var(--mantine-scale));--ti-size-sm:calc(1.375rem * var(--mantine-scale));--ti-size-md:calc(1.75rem * var(--mantine-scale));--ti-size-lg:calc(2.125rem * var(--mantine-scale));--ti-size-xl:calc(2.75rem * var(--mantine-scale));--ti-size:var(--ti-size-md);-webkit-user-select:none;user-select:none;width:var(--ti-size);height:var(--ti-size);min-width:var(--ti-size);min-height:var(--ti-size);border-radius:var(--ti-radius,var(--mantine-radius-default));background:var(--ti-bg,var(--mantine-primary-color-filled));color:var(--ti-color,var(--mantine-color-white));border:var(--ti-bd,1px solid transparent);justify-content:center;align-items:center;line-height:1;display:inline-flex;position:relative}.m_43657ece{--offset:calc(var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2);--tl-bullet-size:calc(1.25rem * var(--mantine-scale));--tl-line-width:calc(.25rem * var(--mantine-scale));--tl-radius:calc(62.5rem * var(--mantine-scale));--tl-color:var(--mantine-primary-color-filled)}.m_43657ece:where(:not([data-opposite])):where([data-align=left]){padding-inline-start:var(--offset)}.m_43657ece:where(:not([data-opposite])):where([data-align=right]){padding-inline-end:var(--offset)}.m_2ebe8099{font-weight:var(--mantine-font-weight-medium);margin-bottom:calc(var(--mantine-spacing-xs) / 2);line-height:1}.m_436178ff{--item-border:var(--tl-line-width) var(--tli-border-style,solid) var(--item-border-color);color:var(--mantine-color-text);position:relative}.m_436178ff:before{content:"";pointer-events:none;top:0;inset-inline-start:var(--timeline-line-start,0);inset-inline-end:var(--timeline-line-end,0);bottom:calc(var(--mantine-spacing-xl) * -1);border-inline-start:var(--item-border);display:var(--timeline-line-display,none);position:absolute}.m_43657ece:where(:not([data-opposite]))[data-align=left] .m_436178ff:before{--timeline-line-start:calc(var(--tl-line-width) * -1);--timeline-line-end:auto}.m_43657ece:where(:not([data-opposite]))[data-align=right] .m_436178ff:before{--timeline-line-start:auto;--timeline-line-end:calc(var(--tl-line-width) * -1)}.m_43657ece:where([data-opposite]) .m_436178ff:before{--timeline-line-start:calc(50% - var(--tl-line-width) / 2);--timeline-line-end:auto}.m_43657ece:where(:not([data-opposite])):where([data-align=left]) .m_436178ff{text-align:start;padding-inline-start:var(--offset)}.m_43657ece:where(:not([data-opposite])):where([data-align=right]) .m_436178ff{text-align:end;padding-inline-end:var(--offset)}.m_43657ece:where([data-opposite]) .m_436178ff{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);display:grid}:where([data-mantine-color-scheme=light]) .m_436178ff{--item-border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_436178ff{--item-border-color:var(--mantine-color-dark-4)}.m_436178ff:where([data-line-active]):before{border-color:var(--tli-color,var(--tl-color))}.m_436178ff:where(:not(:last-of-type)){--timeline-line-display:block}.m_436178ff:where(:not(:first-of-type)){margin-top:var(--mantine-spacing-xl)}.m_8affcee1{width:var(--tl-bullet-size);height:var(--tl-bullet-size);border-radius:var(--tli-radius,var(--tl-radius));border:var(--tl-line-width) solid;background-color:var(--mantine-color-body);color:var(--mantine-color-text);justify-content:center;align-items:center;display:flex;position:absolute;top:0}:where([data-mantine-color-scheme=light]) .m_8affcee1{border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_8affcee1{border-color:var(--mantine-color-dark-4)}.m_43657ece:where(:not([data-opposite])):where([data-align=left]) .m_8affcee1{inset-inline-start:calc((var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2) * -1);inset-inline-end:auto}.m_43657ece:where(:not([data-opposite])):where([data-align=right]) .m_8affcee1{inset-inline-start:auto;inset-inline-end:calc((var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2) * -1)}.m_43657ece:where([data-opposite]) .m_8affcee1{grid-area:1/2;position:relative;inset-inline-start:unset;inset-inline-end:unset}.m_8affcee1:where([data-with-child]){border-width:var(--tl-line-width)}:where([data-mantine-color-scheme=light]) .m_8affcee1:where([data-with-child]){background-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_8affcee1:where([data-with-child]){background-color:var(--mantine-color-dark-4)}.m_8affcee1:where([data-active]){border-color:var(--tli-color,var(--tl-color));background-color:var(--mantine-color-white);color:var(--tl-icon-color,var(--mantine-color-white))}.m_8affcee1:where([data-active]):where([data-with-child]){background-color:var(--tli-color,var(--tl-color));color:var(--tl-icon-color,var(--mantine-color-white))}.m_43657ece:where(:not([data-opposite])):where([data-align=left]) .m_540e8f41{text-align:start;padding-inline-start:var(--offset)}.m_43657ece:where(:not([data-opposite])):where([data-align=right]) .m_540e8f41{text-align:end;padding-inline-end:var(--offset)}.m_43657ece:where([data-opposite]):where([data-align=left]) .m_540e8f41{text-align:start;grid-area:1/3;padding-inline-start:var(--offset)}.m_43657ece:where([data-opposite]):where([data-align=right]) .m_540e8f41{text-align:end;grid-area:1/1;padding-inline-end:var(--offset)}.m_43657ece:where([data-opposite]):where([data-align=left]) .m_436178ff:where([data-alternate]) .m_540e8f41{text-align:end;grid-column:1;padding-inline-start:0;padding-inline-end:var(--offset)}.m_43657ece:where([data-opposite]):where([data-align=right]) .m_436178ff:where([data-alternate]) .m_540e8f41{text-align:start;grid-column:3;padding-inline-start:var(--offset);padding-inline-end:0}.m_43657ece:where([data-align=left]) .m_f3ba506{text-align:end;grid-area:1/1;padding-inline-end:var(--offset)}.m_43657ece:where([data-align=right]) .m_f3ba506{text-align:start;grid-area:1/3;padding-inline-start:var(--offset)}.m_43657ece:where([data-align=left]) .m_436178ff:where([data-alternate]) .m_f3ba506{text-align:start;grid-column:3;padding-inline-start:var(--offset);padding-inline-end:0}.m_43657ece:where([data-align=right]) .m_436178ff:where([data-alternate]) .m_f3ba506{text-align:end;grid-column:1;padding-inline-start:0;padding-inline-end:var(--offset)}.m_8a5d1357{font-weight:var(--title-fw);font-size:var(--title-fz);line-height:var(--title-lh);font-family:var(--mantine-font-family-headings);text-wrap:var(--title-text-wrap,var(--mantine-heading-text-wrap));margin:0}.m_8a5d1357:where([data-line-clamp]){text-overflow:ellipsis;-webkit-line-clamp:var(--title-line-clamp);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:where([data-tree-root]){--level-offset:var(--mantine-spacing-lg);--tree-line-width:calc(.0625rem * var(--mantine-scale));--tree-line-color:var(--mantine-color-default-border)}.m_f698e191{-webkit-user-select:none;user-select:none;margin:0;padding:0}.m_75f3ecf{margin:0;padding:0}.m_f6970eb1{cursor:pointer;outline:0;margin:0;padding:0;list-style:none}.m_f6970eb1:focus-visible>.m_dc283425,.m_f6970eb1[data-focus-ring]:focus>.m_dc283425{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.m_dc283425{padding-inline-start:var(--label-offset);position:relative}:where([data-mantine-color-scheme=light]) .m_dc283425:where([data-selected]){background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_dc283425:where([data-selected]){background-color:var(--mantine-color-dark-5)}.m_dc283425:where([data-dragging]){opacity:.4}.m_dc283425:where([data-drag-over=before]):before{content:"";top:calc(-.0625rem * var(--mantine-scale));height:calc(.125rem * var(--mantine-scale));background-color:var(--mantine-primary-color-filled);pointer-events:none;z-index:1;position:absolute;inset-inline-start:var(--label-offset,0);inset-inline-end:0}.m_dc283425:where([data-drag-over=after]):after{content:"";bottom:calc(-.0625rem * var(--mantine-scale));height:calc(.125rem * var(--mantine-scale));background-color:var(--mantine-primary-color-filled);pointer-events:none;z-index:1;position:absolute;inset-inline-start:var(--label-offset,0);inset-inline-end:0}.m_dc283425:where([data-drag-over=inside]){background-color:var(--mantine-primary-color-light)}:where([data-with-lines]) .m_f6970eb1{position:relative}:where([data-with-lines]) .m_f6970eb1:not([data-level="1"]):before{content:"";top:calc(.75rem * var(--mantine-scale));width:calc(var(--level-offset) / 2);border-top:var(--tree-line-width) solid var(--tree-line-color);pointer-events:none;z-index:1;height:0;position:absolute;inset-inline-start:calc(var(--label-offset) - var(--level-offset) / 2)}:where([data-with-lines]) .m_75f3ecf>.m_f6970eb1:after{content:"";top:0;bottom:0;border-inline-start:var(--tree-line-width) solid var(--tree-line-color);pointer-events:none;z-index:1;width:0;position:absolute;inset-inline-start:calc(var(--label-offset) - var(--level-offset) / 2)}:where([data-with-lines]) .m_75f3ecf>.m_f6970eb1:last-child:after{height:calc(.75rem * var(--mantine-scale));bottom:auto}:where([data-with-lines]) .m_f6970eb1:where([data-dragging]):before,:where([data-with-lines]) .m_f6970eb1:where([data-dragging]):after,:where([data-with-lines]) .m_f6970eb1:where([data-dragging]) .m_c03b303c{display:none}.m_c03b303c{width:0;top:0;bottom:0;border-inline-start:var(--tree-line-width) solid var(--tree-line-color);pointer-events:none;z-index:1;display:none;position:absolute;inset-inline-start:calc((var(--flat-line-column) - 1.5) * var(--level-offset))}:where([data-with-lines]) .m_c03b303c{display:block}.m_bf7448d9{height:calc(.75rem * var(--mantine-scale));bottom:auto}.m_529d33e8{--ts-level-offset:calc(1.25rem * var(--mantine-scale));--ts-line-width:calc(.0625rem * var(--mantine-scale));--ts-line-color:var(--mantine-color-default-border);--ts-option-padding-y:calc(.25rem * var(--mantine-scale));--ts-option-padding-x:calc(.5rem * var(--mantine-scale))}.m_28bb748{align-items:center;gap:calc(.375rem * var(--mantine-scale));padding:var(--ts-option-padding-y) var(--ts-option-padding-x);padding-inline-start:var(--ts-option-padding-x);display:flex;position:relative}.m_aa3e3f86{--_ts-expand-icon-size:calc(1.45 * var(--combobox-option-fz,var(--mantine-font-size-sm)));width:var(--_ts-expand-icon-size);min-width:var(--_ts-expand-icon-size);height:var(--_ts-expand-icon-size);border-radius:var(--mantine-radius-sm);cursor:pointer;color:var(--mantine-color-dimmed);justify-content:center;align-items:center;display:flex;transform:rotate(-90deg)}:where([data-combobox-selected]) .m_aa3e3f86{color:var(--mantine-color-white)}:where([dir=rtl]) .m_aa3e3f86{transform:rotate(90deg)}.m_aa3e3f86:where([data-expanded]){transform:rotate(0)}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_aa3e3f86:hover{background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_aa3e3f86:hover{background-color:var(--mantine-color-dark-5)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_aa3e3f86:active{background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_aa3e3f86:active{background-color:var(--mantine-color-dark-5)}}.m_eaa4cdee{opacity:.4;width:.8em;min-width:.8em;height:.8em;margin-inline-start:auto}:where([data-combobox-selected]) .m_eaa4cdee{opacity:1}.m_ffe3a9c1{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.m_57207d5d,.m_41b9db0b{border-inline-start:var(--ts-line-width) solid var(--ts-line-color);pointer-events:none;width:0;position:absolute;top:0;bottom:0}.m_41b9db0b:where([data-last]){height:50%;bottom:auto}.m_1246e79{border-top:var(--ts-line-width) solid var(--ts-line-color);pointer-events:none;height:0;position:absolute;top:50%}.m_d08caa0 :first-child{margin-top:0}.m_d08caa0 :last-child{margin-bottom:0}.m_d08caa0 :where(h1,h2,h3,h4,h5,h6){margin-bottom:var(--mantine-spacing-xs);text-wrap:var(--mantine-heading-text-wrap);font-family:var(--mantine-font-family-headings)}.m_d08caa0 :where(h1){margin-top:calc(1.5 * var(--mantine-spacing-xl));font-size:var(--mantine-h1-font-size);line-height:var(--mantine-h1-line-height);font-weight:var(--mantine-h1-font-weight)}.m_d08caa0 :where(h2){margin-top:var(--mantine-spacing-xl);font-size:var(--mantine-h2-font-size);line-height:var(--mantine-h2-line-height);font-weight:var(--mantine-h2-font-weight)}.m_d08caa0 :where(h3){margin-top:calc(.8 * var(--mantine-spacing-xl));font-size:var(--mantine-h3-font-size);line-height:var(--mantine-h3-line-height);font-weight:var(--mantine-h3-font-weight)}.m_d08caa0 :where(h4){margin-top:calc(.8 * var(--mantine-spacing-xl));font-size:var(--mantine-h4-font-size);line-height:var(--mantine-h4-line-height);font-weight:var(--mantine-h4-font-weight)}.m_d08caa0 :where(h5){margin-top:calc(.5 * var(--mantine-spacing-xl));font-size:var(--mantine-h5-font-size);line-height:var(--mantine-h5-line-height);font-weight:var(--mantine-h5-font-weight)}.m_d08caa0 :where(h6){margin-top:calc(.5 * var(--mantine-spacing-xl));font-size:var(--mantine-h6-font-size);line-height:var(--mantine-h6-line-height);font-weight:var(--mantine-h6-font-weight)}.m_d08caa0 :where(img){max-width:100%;margin-bottom:var(--mantine-spacing-xs)}.m_d08caa0 :where(p){margin-top:0;margin-bottom:var(--mantine-spacing-lg)}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(mark){background-color:var(--mantine-color-yellow-2);color:inherit}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(mark){background-color:var(--mantine-color-yellow-5);color:var(--mantine-color-black)}.m_d08caa0 :where(a){color:var(--mantine-color-anchor);text-decoration:none}@media (hover:hover){.m_d08caa0 :where(a):hover{text-decoration:underline}}@media (hover:none){.m_d08caa0 :where(a):active{text-decoration:underline}}.m_d08caa0 :where(hr){margin-top:var(--mantine-spacing-md);margin-bottom:var(--mantine-spacing-md);border:0;border-top:calc(.0625rem * var(--mantine-scale)) solid}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(hr){border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(hr){border-color:var(--mantine-color-dark-3)}.m_d08caa0 :where(pre){padding:var(--mantine-spacing-xs);line-height:var(--mantine-line-height);margin:0;margin-top:var(--mantine-spacing-md);margin-bottom:var(--mantine-spacing-md);font-family:var(--mantine-font-family-monospace);font-size:var(--mantine-font-size-xs);border-radius:var(--mantine-radius-sm);overflow-x:auto}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(pre){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(pre){background-color:var(--mantine-color-dark-8)}.m_d08caa0 :where(pre) :where(code){color:inherit;background-color:#0000;border:0;border-radius:0;padding:0}.m_d08caa0 :where(kbd){--kbd-fz:calc(.75rem * var(--mantine-scale));--kbd-padding:calc(.1875rem * var(--mantine-scale)) calc(.3125rem * var(--mantine-scale));font-family:var(--mantine-font-family-monospace);line-height:var(--mantine-line-height);font-weight:var(--mantine-font-weight-bold);padding:var(--kbd-padding);font-size:var(--kbd-fz);border-radius:var(--mantine-radius-sm);border:calc(.0625rem * var(--mantine-scale)) solid;border-bottom-width:calc(.1875rem * var(--mantine-scale))}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(kbd){border-color:var(--mantine-color-gray-3);color:var(--mantine-color-gray-7);background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(kbd){border-color:var(--mantine-color-dark-3);color:var(--mantine-color-dark-0);background-color:var(--mantine-color-dark-5)}.m_d08caa0 :where(code){line-height:var(--mantine-line-height);padding:calc(.0625rem * var(--mantine-scale)) calc(.3125rem * var(--mantine-scale));border-radius:var(--mantine-radius-sm);font-family:var(--mantine-font-family-monospace);font-size:var(--mantine-font-size-xs)}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(code){background-color:var(--mantine-color-gray-0);color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(code){background-color:var(--mantine-color-dark-5);color:var(--mantine-color-white)}.m_d08caa0 :where(ul,ol):not([data-type=taskList]){margin-bottom:var(--mantine-spacing-md);padding-inline-start:var(--mantine-spacing-xl);list-style-position:outside}.m_d08caa0 :where(table){border-collapse:collapse;caption-side:bottom;width:100%;margin-bottom:var(--mantine-spacing-md)}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(table){--table-border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(table){--table-border-color:var(--mantine-color-dark-4)}.m_d08caa0 :where(table) :where(caption){margin-top:var(--mantine-spacing-xs);font-size:var(--mantine-font-size-sm);color:var(--mantine-color-dimmed)}.m_d08caa0 :where(table) :where(th){text-align:start;font-weight:700;font-size:var(--mantine-font-size-sm);padding:var(--mantine-spacing-xs) var(--mantine-spacing-sm)}.m_d08caa0 :where(table) :where(thead th){border-bottom:calc(.0625rem * var(--mantine-scale)) solid;border-color:var(--table-border-color)}.m_d08caa0 :where(table) :where(tfoot th){border-top:calc(.0625rem * var(--mantine-scale)) solid;border-color:var(--table-border-color)}.m_d08caa0 :where(table) :where(td){padding:var(--mantine-spacing-xs) var(--mantine-spacing-sm);border-bottom:calc(.0625rem * var(--mantine-scale)) solid;border-color:var(--table-border-color);font-size:var(--mantine-font-size-sm)}.m_d08caa0 :where(table) :where(tr:last-of-type td){border-bottom:0}.m_d08caa0 :where(details){margin-bottom:var(--mantine-spacing-md);padding:var(--mantine-spacing-sm) var(--mantine-spacing-md);border:1px solid var(--details-border-color);border-radius:var(--mantine-radius-default)}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(details){--details-border-color:var(--mantine-color-gray-3);--details-summary-hover:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(details){--details-border-color:var(--mantine-color-dark-4);--details-summary-hover:var(--mantine-color-dark-5)}.m_d08caa0 :where(details) :where(summary){align-items:center;gap:var(--mantine-spacing-xs);cursor:pointer;font-weight:600;list-style:none;display:flex;position:relative}.m_d08caa0 :where(details) :where(summary)::-webkit-details-marker{display:none}.m_d08caa0 :where(details) :where(summary):before{content:"";width:1.25rem;height:calc(1em * var(--mantine-line-height));border-radius:var(--mantine-radius-sm);flex-shrink:0}.m_d08caa0 :where(details) :where(summary:hover):before{background-color:var(--details-summary-hover)}.m_d08caa0 :where(details) :where(summary):after{content:"";inset-inline-start:calc(.4375rem * var(--mantine-scale));border-style:solid;border-width:calc(.3125rem * var(--mantine-scale)) 0 calc(.3125rem * var(--mantine-scale)) calc(.375rem * var(--mantine-scale));border-color:#0000 #0000 #0000 currentColor;width:0;height:0;position:absolute;top:50%;transform:translateY(-50%)}.m_d08caa0 :where(details):where([open])>:where(summary):after{transform:translateY(-50%)rotate(90deg)}.m_d08caa0 :where(details)>:where(:last-child){margin-bottom:0}.m_d08caa0 :where(blockquote){font-size:var(--mantine-font-size-lg);line-height:var(--mantine-line-height);margin:var(--mantine-spacing-md) 0;border-radius:var(--mantine-radius-sm);padding:var(--mantine-spacing-md) var(--mantine-spacing-lg)}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(blockquote){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(blockquote){background-color:var(--mantine-color-dark-8)}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.react-grid-layout{transition:height .2s;position:relative}.react-grid-item{transition:left .2s,top .2s,width .2s,height .2s}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{z-index:1;will-change:width, height;transition:none}.react-grid-item.react-draggable-dragging{z-index:3;will-change:transform;transition:none}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{opacity:.2;z-index:2;-webkit-user-select:none;user-select:none;background:red;transition-duration:.1s}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{opacity:0;width:20px;height:20px;position:absolute}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";border-bottom:2px solid #0006;border-right:2px solid #0006;width:5px;height:5px;position:absolute;bottom:3px;right:3px}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{cursor:sw-resize;bottom:0;left:0;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{cursor:se-resize;bottom:0;right:0}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{cursor:nw-resize;top:0;left:0;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{cursor:ne-resize;top:0;right:0;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{cursor:ew-resize;margin-top:-10px;top:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{cursor:ns-resize;margin-left:-10px;left:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:100% 100%;background-repeat:no-repeat;background-origin:content-box;width:20px;height:20px;padding:0 3px 3px 0;position:absolute}.react-resizable-handle-sw{cursor:sw-resize;bottom:0;left:0;transform:rotate(90deg)}.react-resizable-handle-se{cursor:se-resize;bottom:0;right:0}.react-resizable-handle-nw{cursor:nw-resize;top:0;left:0;transform:rotate(180deg)}.react-resizable-handle-ne{cursor:ne-resize;top:0;right:0;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{cursor:ew-resize;margin-top:-10px;top:50%}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{cursor:ns-resize;margin-left:-10px;left:50%}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}html{background:#fcfcfc}html[data-mantine-color-scheme=dark]{background:#0b0e14}:where(.mantine-Title-root,h1,h2,h3,h4,h5,h6){letter-spacing:-.01em}body{font-variant-numeric:tabular-nums}html,body,#root{min-width:320px;min-height:100%}.dashboard-grid{min-height:420px}.dashboard-table{table-layout:fixed;width:100%}.dashboard-dimension-nowrap{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.chat-composer-field{background:var(--mantine-color-body);transition:border-color .15s,box-shadow .15s}.chat-composer-field:focus-within{border-color:var(--mantine-primary-color-filled);box-shadow:0 0 0 2px var(--mantine-primary-color-light)}.rail-row{border-radius:var(--mantine-radius-md);transition:background-color .12s}.rail-row:hover{background:var(--mantine-color-default-hover)}.rail-row[data-active]{background:var(--mantine-primary-color-light)}.rail-row-actions{opacity:0;transition:opacity .12s}.rail-row:hover .rail-row-actions,.rail-row:focus-within .rail-row-actions{opacity:1}@media (hover:none){.rail-row-actions{opacity:1}}.react-grid-item.react-grid-placeholder{border-radius:var(--mantine-radius-lg);background:var(--mantine-primary-color-filled);opacity:.14}.react-grid-item>.react-resizable-handle{opacity:0;transition:opacity .15s}.react-grid-item:hover>.react-resizable-handle,.react-grid-item:focus-within>.react-resizable-handle{opacity:.55}.chat-pane{height:calc(100dvh - var(--app-shell-header-offset,0px));flex-direction:column;display:flex}.chat-scroll{flex:1;min-height:0;overflow-y:auto}.chat-composer{padding-bottom:var(--mantine-spacing-sm);background:var(--mantine-color-body);flex:none}.chat-message-meta,.chat-code-actions{opacity:0;transition:opacity .12s}.chat-message:hover .chat-message-meta,.chat-message:focus-within .chat-message-meta,.chat-code:hover .chat-code-actions,.chat-code:focus-within .chat-code-actions{opacity:1}@media (hover:none){.chat-message-meta,.chat-code-actions{opacity:1}}.chat-markdown :where(h1,h2,h3,h4){font-size:var(--mantine-font-size-lg);margin-top:var(--mantine-spacing-md);margin-bottom:var(--mantine-spacing-xs)}.chat-markdown :where(p,ul,ol){margin-top:0;margin-bottom:var(--mantine-spacing-sm)}.chat-table{margin-bottom:var(--mantine-spacing-sm);overflow-x:auto}.chat-code pre{margin:0 0 var(--mantine-spacing-sm);padding:var(--mantine-spacing-sm) var(--mantine-spacing-md);border:1px solid var(--mantine-color-default-border);border-radius:var(--mantine-radius-md);background:var(--mantine-color-default);font-family:var(--mantine-font-family-monospace);font-size:var(--mantine-font-size-sm);overflow-x:auto}.chat-code pre code{color:inherit;font-size:inherit;background:0 0;border-radius:0;padding:0;font-family:inherit}.panel-markdown{overflow-wrap:anywhere;font-size:14px;line-height:1.55}.panel-markdown :where(p,ul,ol){margin:0 0 .5em}.panel-markdown code{font-family:var(--mantine-font-family-monospace);font-size:12px} +:root,:host{color-scheme:var(--mantine-color-scheme)}*,:before,:after{box-sizing:border-box}input,button,textarea,select{font:inherit}button,select{text-transform:none}body,:host{font-family:var(--mantine-font-family);font-size:var(--mantine-font-size-md);line-height:var(--mantine-line-height);background-color:var(--mantine-color-body);color:var(--mantine-color-text);-webkit-font-smoothing:var(--mantine-webkit-font-smoothing);-moz-osx-font-smoothing:var(--mantine-moz-font-smoothing);margin:0}@media screen and (device-width<=31.25em){body,:host{-webkit-text-size-adjust:100%}}:root,:host{--mantine-z-index-app:100;--mantine-z-index-modal:200;--mantine-z-index-popover:300;--mantine-z-index-overlay:400;--mantine-z-index-max:9999;--mantine-scale:1;--mantine-cursor-type:default;--mantine-webkit-font-smoothing:antialiased;--mantine-moz-font-smoothing:grayscale;--mantine-color-white:#fff;--mantine-color-black:#000;--mantine-line-height:1.55;--mantine-font-family:-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji;--mantine-font-family-monospace:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;--mantine-font-family-headings:-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji;--mantine-heading-font-weight:700;--mantine-heading-text-wrap:wrap;--mantine-radius-default:calc(.5rem * var(--mantine-scale));--mantine-primary-color-filled:var(--mantine-color-blue-filled);--mantine-primary-color-filled-hover:var(--mantine-color-blue-filled-hover);--mantine-primary-color-light:var(--mantine-color-blue-light);--mantine-primary-color-light-hover:var(--mantine-color-blue-light-hover);--mantine-primary-color-light-color:var(--mantine-color-blue-light-color);--mantine-breakpoint-xs:36em;--mantine-breakpoint-sm:48em;--mantine-breakpoint-md:62em;--mantine-breakpoint-lg:75em;--mantine-breakpoint-xl:88em;--mantine-spacing-xs:calc(.625rem * var(--mantine-scale));--mantine-spacing-sm:calc(.75rem * var(--mantine-scale));--mantine-spacing-md:calc(1rem * var(--mantine-scale));--mantine-spacing-lg:calc(1.25rem * var(--mantine-scale));--mantine-spacing-xl:calc(2rem * var(--mantine-scale));--mantine-font-size-xs:calc(.75rem * var(--mantine-scale));--mantine-font-size-sm:calc(.875rem * var(--mantine-scale));--mantine-font-size-md:calc(1rem * var(--mantine-scale));--mantine-font-size-lg:calc(1.125rem * var(--mantine-scale));--mantine-font-size-xl:calc(1.25rem * var(--mantine-scale));--mantine-line-height-xs:1.4;--mantine-line-height-sm:1.45;--mantine-line-height-md:1.55;--mantine-line-height-lg:1.6;--mantine-line-height-xl:1.65;--mantine-shadow-xs:0 calc(.0625rem * var(--mantine-scale)) calc(.1875rem * var(--mantine-scale)) #0000000d, 0 calc(.0625rem * var(--mantine-scale)) calc(.125rem * var(--mantine-scale)) #0000001a;--mantine-shadow-sm:0 calc(.0625rem * var(--mantine-scale)) calc(.1875rem * var(--mantine-scale)) #0000000d, #0000000d 0 calc(.625rem * var(--mantine-scale)) calc(.9375rem * var(--mantine-scale)) calc(-.3125rem * var(--mantine-scale)), #0000000a 0 calc(.4375rem * var(--mantine-scale)) calc(.4375rem * var(--mantine-scale)) calc(-.3125rem * var(--mantine-scale));--mantine-shadow-md:0 calc(.0625rem * var(--mantine-scale)) calc(.1875rem * var(--mantine-scale)) #0000000d, #0000000d 0 calc(1.25rem * var(--mantine-scale)) calc(1.5625rem * var(--mantine-scale)) calc(-.3125rem * var(--mantine-scale)), #0000000a 0 calc(.625rem * var(--mantine-scale)) calc(.625rem * var(--mantine-scale)) calc(-.3125rem * var(--mantine-scale));--mantine-shadow-lg:0 calc(.0625rem * var(--mantine-scale)) calc(.1875rem * var(--mantine-scale)) #0000000d, #0000000d 0 calc(1.75rem * var(--mantine-scale)) calc(1.4375rem * var(--mantine-scale)) calc(-.4375rem * var(--mantine-scale)), #0000000a 0 calc(.75rem * var(--mantine-scale)) calc(.75rem * var(--mantine-scale)) calc(-.4375rem * var(--mantine-scale));--mantine-shadow-xl:0 calc(.0625rem * var(--mantine-scale)) calc(.1875rem * var(--mantine-scale)) #0000000d, #0000000d 0 calc(2.25rem * var(--mantine-scale)) calc(1.75rem * var(--mantine-scale)) calc(-.4375rem * var(--mantine-scale)), #0000000a 0 calc(1.0625rem * var(--mantine-scale)) calc(1.0625rem * var(--mantine-scale)) calc(-.4375rem * var(--mantine-scale));--mantine-radius-xs:calc(.125rem * var(--mantine-scale));--mantine-radius-sm:calc(.25rem * var(--mantine-scale));--mantine-radius-md:calc(.5rem * var(--mantine-scale));--mantine-radius-lg:calc(1rem * var(--mantine-scale));--mantine-radius-xl:calc(2rem * var(--mantine-scale));--mantine-font-weight-regular:400;--mantine-font-weight-medium:600;--mantine-font-weight-bold:700;--mantine-primary-color-0:var(--mantine-color-blue-0);--mantine-primary-color-1:var(--mantine-color-blue-1);--mantine-primary-color-2:var(--mantine-color-blue-2);--mantine-primary-color-3:var(--mantine-color-blue-3);--mantine-primary-color-4:var(--mantine-color-blue-4);--mantine-primary-color-5:var(--mantine-color-blue-5);--mantine-primary-color-6:var(--mantine-color-blue-6);--mantine-primary-color-7:var(--mantine-color-blue-7);--mantine-primary-color-8:var(--mantine-color-blue-8);--mantine-primary-color-9:var(--mantine-color-blue-9);--mantine-color-dark-0:#c9c9c9;--mantine-color-dark-1:#b8b8b8;--mantine-color-dark-2:#828282;--mantine-color-dark-3:#696969;--mantine-color-dark-4:#424242;--mantine-color-dark-5:#3b3b3b;--mantine-color-dark-6:#2e2e2e;--mantine-color-dark-7:#242424;--mantine-color-dark-8:#1f1f1f;--mantine-color-dark-9:#141414;--mantine-color-gray-0:#f8f9fa;--mantine-color-gray-1:#f1f3f5;--mantine-color-gray-2:#e9ecef;--mantine-color-gray-3:#dee2e6;--mantine-color-gray-4:#ced4da;--mantine-color-gray-5:#adb5bd;--mantine-color-gray-6:#868e96;--mantine-color-gray-7:#495057;--mantine-color-gray-8:#343a40;--mantine-color-gray-9:#212529;--mantine-color-red-0:#fff5f5;--mantine-color-red-1:#ffe3e3;--mantine-color-red-2:#ffc9c9;--mantine-color-red-3:#ffa8a8;--mantine-color-red-4:#ff8787;--mantine-color-red-5:#ff6b6b;--mantine-color-red-6:#fa5252;--mantine-color-red-7:#f03e3e;--mantine-color-red-8:#e03131;--mantine-color-red-9:#c92a2a;--mantine-color-pink-0:#fff0f6;--mantine-color-pink-1:#ffdeeb;--mantine-color-pink-2:#fcc2d7;--mantine-color-pink-3:#faa2c1;--mantine-color-pink-4:#f783ac;--mantine-color-pink-5:#f06595;--mantine-color-pink-6:#e64980;--mantine-color-pink-7:#d6336c;--mantine-color-pink-8:#c2255c;--mantine-color-pink-9:#a61e4d;--mantine-color-grape-0:#f8f0fc;--mantine-color-grape-1:#f3d9fa;--mantine-color-grape-2:#eebefa;--mantine-color-grape-3:#e599f7;--mantine-color-grape-4:#da77f2;--mantine-color-grape-5:#cc5de8;--mantine-color-grape-6:#be4bdb;--mantine-color-grape-7:#ae3ec9;--mantine-color-grape-8:#9c36b5;--mantine-color-grape-9:#862e9c;--mantine-color-violet-0:#f3f0ff;--mantine-color-violet-1:#e5dbff;--mantine-color-violet-2:#d0bfff;--mantine-color-violet-3:#b197fc;--mantine-color-violet-4:#9775fa;--mantine-color-violet-5:#845ef7;--mantine-color-violet-6:#7950f2;--mantine-color-violet-7:#7048e8;--mantine-color-violet-8:#6741d9;--mantine-color-violet-9:#5f3dc4;--mantine-color-indigo-0:#edf2ff;--mantine-color-indigo-1:#dbe4ff;--mantine-color-indigo-2:#bac8ff;--mantine-color-indigo-3:#91a7ff;--mantine-color-indigo-4:#748ffc;--mantine-color-indigo-5:#5c7cfa;--mantine-color-indigo-6:#4c6ef5;--mantine-color-indigo-7:#4263eb;--mantine-color-indigo-8:#3b5bdb;--mantine-color-indigo-9:#364fc7;--mantine-color-blue-0:#e7f5ff;--mantine-color-blue-1:#d0ebff;--mantine-color-blue-2:#a5d8ff;--mantine-color-blue-3:#74c0fc;--mantine-color-blue-4:#4dabf7;--mantine-color-blue-5:#339af0;--mantine-color-blue-6:#228be6;--mantine-color-blue-7:#1c7ed6;--mantine-color-blue-8:#1971c2;--mantine-color-blue-9:#1864ab;--mantine-color-cyan-0:#e3fafc;--mantine-color-cyan-1:#c5f6fa;--mantine-color-cyan-2:#99e9f2;--mantine-color-cyan-3:#66d9e8;--mantine-color-cyan-4:#3bc9db;--mantine-color-cyan-5:#22b8cf;--mantine-color-cyan-6:#15aabf;--mantine-color-cyan-7:#1098ad;--mantine-color-cyan-8:#0c8599;--mantine-color-cyan-9:#0b7285;--mantine-color-teal-0:#e6fcf5;--mantine-color-teal-1:#c3fae8;--mantine-color-teal-2:#96f2d7;--mantine-color-teal-3:#63e6be;--mantine-color-teal-4:#38d9a9;--mantine-color-teal-5:#20c997;--mantine-color-teal-6:#12b886;--mantine-color-teal-7:#0ca678;--mantine-color-teal-8:#099268;--mantine-color-teal-9:#087f5b;--mantine-color-green-0:#ebfbee;--mantine-color-green-1:#d3f9d8;--mantine-color-green-2:#b2f2bb;--mantine-color-green-3:#8ce99a;--mantine-color-green-4:#69db7c;--mantine-color-green-5:#51cf66;--mantine-color-green-6:#40c057;--mantine-color-green-7:#37b24d;--mantine-color-green-8:#2f9e44;--mantine-color-green-9:#2b8a3e;--mantine-color-lime-0:#f4fce3;--mantine-color-lime-1:#e9fac8;--mantine-color-lime-2:#d8f5a2;--mantine-color-lime-3:#c0eb75;--mantine-color-lime-4:#a9e34b;--mantine-color-lime-5:#94d82d;--mantine-color-lime-6:#82c91e;--mantine-color-lime-7:#74b816;--mantine-color-lime-8:#66a80f;--mantine-color-lime-9:#5c940d;--mantine-color-yellow-0:#fff9db;--mantine-color-yellow-1:#fff3bf;--mantine-color-yellow-2:#ffec99;--mantine-color-yellow-3:#ffe066;--mantine-color-yellow-4:#ffd43b;--mantine-color-yellow-5:#fcc419;--mantine-color-yellow-6:#fab005;--mantine-color-yellow-7:#f59f00;--mantine-color-yellow-8:#f08c00;--mantine-color-yellow-9:#e67700;--mantine-color-orange-0:#fff4e6;--mantine-color-orange-1:#ffe8cc;--mantine-color-orange-2:#ffd8a8;--mantine-color-orange-3:#ffc078;--mantine-color-orange-4:#ffa94d;--mantine-color-orange-5:#ff922b;--mantine-color-orange-6:#fd7e14;--mantine-color-orange-7:#f76707;--mantine-color-orange-8:#e8590c;--mantine-color-orange-9:#d9480f;--mantine-h1-font-size:calc(2.125rem * var(--mantine-scale));--mantine-h1-line-height:1.3;--mantine-h1-font-weight:700;--mantine-h2-font-size:calc(1.625rem * var(--mantine-scale));--mantine-h2-line-height:1.35;--mantine-h2-font-weight:700;--mantine-h3-font-size:calc(1.375rem * var(--mantine-scale));--mantine-h3-line-height:1.4;--mantine-h3-font-weight:700;--mantine-h4-font-size:calc(1.125rem * var(--mantine-scale));--mantine-h4-line-height:1.45;--mantine-h4-font-weight:700;--mantine-h5-font-size:calc(1rem * var(--mantine-scale));--mantine-h5-line-height:1.5;--mantine-h5-font-weight:700;--mantine-h6-font-size:calc(.875rem * var(--mantine-scale));--mantine-h6-line-height:1.5;--mantine-h6-font-weight:700}:root[data-mantine-color-scheme=dark],:host([data-mantine-color-scheme=dark]){--mantine-color-scheme:dark;--mantine-primary-color-contrast:var(--mantine-color-white);--mantine-color-bright:var(--mantine-color-white);--mantine-color-text:var(--mantine-color-dark-0);--mantine-color-body:var(--mantine-color-dark-7);--mantine-color-error:var(--mantine-color-red-8);--mantine-color-success:var(--mantine-color-teal-8);--mantine-color-placeholder:var(--mantine-color-dark-3);--mantine-color-anchor:var(--mantine-color-blue-4);--mantine-color-default:var(--mantine-color-dark-6);--mantine-color-default-hover:var(--mantine-color-dark-5);--mantine-color-default-color:var(--mantine-color-white);--mantine-color-default-border:var(--mantine-color-dark-4);--mantine-color-dimmed:var(--mantine-color-dark-2);--mantine-color-disabled:var(--mantine-color-dark-6);--mantine-color-disabled-color:var(--mantine-color-dark-3);--mantine-color-disabled-border:var(--mantine-color-dark-4);--mantine-color-dark-text:var(--mantine-color-dark-4);--mantine-color-dark-filled:var(--mantine-color-dark-8);--mantine-color-dark-filled-hover:var(--mantine-color-dark-9);--mantine-color-dark-light:#0a0a0a;--mantine-color-dark-light-hover:#0e0e0e;--mantine-color-dark-light-color:var(--mantine-color-dark-0);--mantine-color-dark-outline:var(--mantine-color-dark-4);--mantine-color-dark-outline-hover:#4242420d;--mantine-color-gray-text:var(--mantine-color-gray-4);--mantine-color-gray-filled:var(--mantine-color-gray-8);--mantine-color-gray-filled-hover:var(--mantine-color-gray-9);--mantine-color-gray-light:#111315;--mantine-color-gray-light-hover:#171a1d;--mantine-color-gray-light-color:var(--mantine-color-gray-0);--mantine-color-gray-outline:var(--mantine-color-gray-4);--mantine-color-gray-outline-hover:#ced4da0d;--mantine-color-red-text:var(--mantine-color-red-4);--mantine-color-red-filled:var(--mantine-color-red-8);--mantine-color-red-filled-hover:var(--mantine-color-red-9);--mantine-color-red-light:#651515;--mantine-color-red-light-hover:#8d1d1d;--mantine-color-red-light-color:var(--mantine-color-red-0);--mantine-color-red-outline:var(--mantine-color-red-4);--mantine-color-red-outline-hover:#ff87870d;--mantine-color-pink-text:var(--mantine-color-pink-4);--mantine-color-pink-filled:var(--mantine-color-pink-8);--mantine-color-pink-filled-hover:var(--mantine-color-pink-9);--mantine-color-pink-light:#530f27;--mantine-color-pink-light-hover:#741536;--mantine-color-pink-light-color:var(--mantine-color-pink-0);--mantine-color-pink-outline:var(--mantine-color-pink-4);--mantine-color-pink-outline-hover:#f783ac0d;--mantine-color-grape-text:var(--mantine-color-grape-4);--mantine-color-grape-filled:var(--mantine-color-grape-8);--mantine-color-grape-filled-hover:var(--mantine-color-grape-9);--mantine-color-grape-light:#43174e;--mantine-color-grape-light-hover:#5e206d;--mantine-color-grape-light-color:var(--mantine-color-grape-0);--mantine-color-grape-outline:var(--mantine-color-grape-4);--mantine-color-grape-outline-hover:#da77f20d;--mantine-color-violet-text:var(--mantine-color-violet-4);--mantine-color-violet-filled:var(--mantine-color-violet-8);--mantine-color-violet-filled-hover:var(--mantine-color-violet-9);--mantine-color-violet-light:#301f62;--mantine-color-violet-light-hover:#432b89;--mantine-color-violet-light-color:var(--mantine-color-violet-0);--mantine-color-violet-outline:var(--mantine-color-violet-4);--mantine-color-violet-outline-hover:#9775fa0d;--mantine-color-indigo-text:var(--mantine-color-indigo-4);--mantine-color-indigo-filled:var(--mantine-color-indigo-8);--mantine-color-indigo-filled-hover:var(--mantine-color-indigo-9);--mantine-color-indigo-light:#1b2864;--mantine-color-indigo-light-hover:#26378b;--mantine-color-indigo-light-color:var(--mantine-color-indigo-0);--mantine-color-indigo-outline:var(--mantine-color-indigo-4);--mantine-color-indigo-outline-hover:#748ffc0d;--mantine-color-blue-text:var(--mantine-color-blue-4);--mantine-color-blue-filled:var(--mantine-color-blue-8);--mantine-color-blue-filled-hover:var(--mantine-color-blue-9);--mantine-color-blue-light:#0c3256;--mantine-color-blue-light-hover:#114678;--mantine-color-blue-light-color:var(--mantine-color-blue-0);--mantine-color-blue-outline:var(--mantine-color-blue-4);--mantine-color-blue-outline-hover:#4dabf70d;--mantine-color-cyan-text:var(--mantine-color-cyan-4);--mantine-color-cyan-filled:var(--mantine-color-cyan-8);--mantine-color-cyan-filled-hover:var(--mantine-color-cyan-9);--mantine-color-cyan-light:#063943;--mantine-color-cyan-light-hover:#08505d;--mantine-color-cyan-light-color:var(--mantine-color-cyan-0);--mantine-color-cyan-outline:var(--mantine-color-cyan-4);--mantine-color-cyan-outline-hover:#3bc9db0d;--mantine-color-teal-text:var(--mantine-color-teal-4);--mantine-color-teal-filled:var(--mantine-color-teal-8);--mantine-color-teal-filled-hover:var(--mantine-color-teal-9);--mantine-color-teal-light:#04402e;--mantine-color-teal-light-hover:#065940;--mantine-color-teal-light-color:var(--mantine-color-teal-0);--mantine-color-teal-outline:var(--mantine-color-teal-4);--mantine-color-teal-outline-hover:#38d9a90d;--mantine-color-green-text:var(--mantine-color-green-4);--mantine-color-green-filled:var(--mantine-color-green-8);--mantine-color-green-filled-hover:var(--mantine-color-green-9);--mantine-color-green-light:#16451f;--mantine-color-green-light-hover:#1e612b;--mantine-color-green-light-color:var(--mantine-color-green-0);--mantine-color-green-outline:var(--mantine-color-green-4);--mantine-color-green-outline-hover:#69db7c0d;--mantine-color-lime-text:var(--mantine-color-lime-4);--mantine-color-lime-filled:var(--mantine-color-lime-8);--mantine-color-lime-filled-hover:var(--mantine-color-lime-9);--mantine-color-lime-light:#2e4a07;--mantine-color-lime-light-hover:#406809;--mantine-color-lime-light-color:var(--mantine-color-lime-0);--mantine-color-lime-outline:var(--mantine-color-lime-4);--mantine-color-lime-outline-hover:#a9e34b0d;--mantine-color-yellow-text:var(--mantine-color-yellow-4);--mantine-color-yellow-filled:var(--mantine-color-yellow-8);--mantine-color-yellow-filled-hover:var(--mantine-color-yellow-9);--mantine-color-yellow-light:#733c00;--mantine-color-yellow-light-hover:#a15300;--mantine-color-yellow-light-color:var(--mantine-color-yellow-0);--mantine-color-yellow-outline:var(--mantine-color-yellow-4);--mantine-color-yellow-outline-hover:#ffd43b0d;--mantine-color-orange-text:var(--mantine-color-orange-4);--mantine-color-orange-filled:var(--mantine-color-orange-8);--mantine-color-orange-filled-hover:var(--mantine-color-orange-9);--mantine-color-orange-light:#6d2408;--mantine-color-orange-light-hover:#98320b;--mantine-color-orange-light-color:var(--mantine-color-orange-0);--mantine-color-orange-outline:var(--mantine-color-orange-4);--mantine-color-orange-outline-hover:#ffa94d0d}:root[data-mantine-color-scheme=light],:host([data-mantine-color-scheme=light]){--mantine-color-scheme:light;--mantine-primary-color-contrast:var(--mantine-color-white);--mantine-color-bright:var(--mantine-color-black);--mantine-color-text:#000;--mantine-color-body:#fff;--mantine-color-error:var(--mantine-color-red-6);--mantine-color-success:var(--mantine-color-teal-8);--mantine-color-placeholder:var(--mantine-color-gray-5);--mantine-color-anchor:var(--mantine-color-blue-6);--mantine-color-default:var(--mantine-color-white);--mantine-color-default-hover:var(--mantine-color-gray-0);--mantine-color-default-color:var(--mantine-color-black);--mantine-color-default-border:var(--mantine-color-gray-4);--mantine-color-dimmed:var(--mantine-color-gray-6);--mantine-color-disabled:var(--mantine-color-gray-2);--mantine-color-disabled-color:var(--mantine-color-gray-5);--mantine-color-disabled-border:var(--mantine-color-gray-3);--mantine-color-dark-text:var(--mantine-color-dark-filled);--mantine-color-dark-filled:var(--mantine-color-dark-6);--mantine-color-dark-filled-hover:var(--mantine-color-dark-7);--mantine-color-dark-light:var(--mantine-color-dark-1);--mantine-color-dark-light-hover:var(--mantine-color-dark-2);--mantine-color-dark-light-color:var(--mantine-color-dark-9);--mantine-color-dark-outline:var(--mantine-color-dark-6);--mantine-color-dark-outline-hover:#2e2e2e0d;--mantine-color-gray-text:var(--mantine-color-gray-filled);--mantine-color-gray-filled:var(--mantine-color-gray-6);--mantine-color-gray-filled-hover:var(--mantine-color-gray-7);--mantine-color-gray-light:var(--mantine-color-gray-1);--mantine-color-gray-light-hover:var(--mantine-color-gray-2);--mantine-color-gray-light-color:var(--mantine-color-gray-9);--mantine-color-gray-outline:var(--mantine-color-gray-6);--mantine-color-gray-outline-hover:#868e960d;--mantine-color-red-text:var(--mantine-color-red-filled);--mantine-color-red-filled:var(--mantine-color-red-6);--mantine-color-red-filled-hover:var(--mantine-color-red-7);--mantine-color-red-light:var(--mantine-color-red-1);--mantine-color-red-light-hover:var(--mantine-color-red-2);--mantine-color-red-light-color:var(--mantine-color-red-9);--mantine-color-red-outline:var(--mantine-color-red-6);--mantine-color-red-outline-hover:#fa52520d;--mantine-color-pink-text:var(--mantine-color-pink-filled);--mantine-color-pink-filled:var(--mantine-color-pink-6);--mantine-color-pink-filled-hover:var(--mantine-color-pink-7);--mantine-color-pink-light:var(--mantine-color-pink-1);--mantine-color-pink-light-hover:var(--mantine-color-pink-2);--mantine-color-pink-light-color:var(--mantine-color-pink-9);--mantine-color-pink-outline:var(--mantine-color-pink-6);--mantine-color-pink-outline-hover:#e649800d;--mantine-color-grape-text:var(--mantine-color-grape-filled);--mantine-color-grape-filled:var(--mantine-color-grape-6);--mantine-color-grape-filled-hover:var(--mantine-color-grape-7);--mantine-color-grape-light:var(--mantine-color-grape-1);--mantine-color-grape-light-hover:var(--mantine-color-grape-2);--mantine-color-grape-light-color:var(--mantine-color-grape-9);--mantine-color-grape-outline:var(--mantine-color-grape-6);--mantine-color-grape-outline-hover:#be4bdb0d;--mantine-color-violet-text:var(--mantine-color-violet-filled);--mantine-color-violet-filled:var(--mantine-color-violet-6);--mantine-color-violet-filled-hover:var(--mantine-color-violet-7);--mantine-color-violet-light:var(--mantine-color-violet-1);--mantine-color-violet-light-hover:var(--mantine-color-violet-2);--mantine-color-violet-light-color:var(--mantine-color-violet-9);--mantine-color-violet-outline:var(--mantine-color-violet-6);--mantine-color-violet-outline-hover:#7950f20d;--mantine-color-indigo-text:var(--mantine-color-indigo-filled);--mantine-color-indigo-filled:var(--mantine-color-indigo-6);--mantine-color-indigo-filled-hover:var(--mantine-color-indigo-7);--mantine-color-indigo-light:var(--mantine-color-indigo-1);--mantine-color-indigo-light-hover:var(--mantine-color-indigo-2);--mantine-color-indigo-light-color:var(--mantine-color-indigo-9);--mantine-color-indigo-outline:var(--mantine-color-indigo-6);--mantine-color-indigo-outline-hover:#4c6ef50d;--mantine-color-blue-text:var(--mantine-color-blue-filled);--mantine-color-blue-filled:var(--mantine-color-blue-6);--mantine-color-blue-filled-hover:var(--mantine-color-blue-7);--mantine-color-blue-light:var(--mantine-color-blue-1);--mantine-color-blue-light-hover:var(--mantine-color-blue-2);--mantine-color-blue-light-color:var(--mantine-color-blue-9);--mantine-color-blue-outline:var(--mantine-color-blue-6);--mantine-color-blue-outline-hover:#228be60d;--mantine-color-cyan-text:var(--mantine-color-cyan-filled);--mantine-color-cyan-filled:var(--mantine-color-cyan-6);--mantine-color-cyan-filled-hover:var(--mantine-color-cyan-7);--mantine-color-cyan-light:var(--mantine-color-cyan-1);--mantine-color-cyan-light-hover:var(--mantine-color-cyan-2);--mantine-color-cyan-light-color:var(--mantine-color-cyan-9);--mantine-color-cyan-outline:var(--mantine-color-cyan-6);--mantine-color-cyan-outline-hover:#15aabf0d;--mantine-color-teal-text:var(--mantine-color-teal-filled);--mantine-color-teal-filled:var(--mantine-color-teal-6);--mantine-color-teal-filled-hover:var(--mantine-color-teal-7);--mantine-color-teal-light:var(--mantine-color-teal-1);--mantine-color-teal-light-hover:var(--mantine-color-teal-2);--mantine-color-teal-light-color:var(--mantine-color-teal-9);--mantine-color-teal-outline:var(--mantine-color-teal-6);--mantine-color-teal-outline-hover:#12b8860d;--mantine-color-green-text:var(--mantine-color-green-filled);--mantine-color-green-filled:var(--mantine-color-green-6);--mantine-color-green-filled-hover:var(--mantine-color-green-7);--mantine-color-green-light:var(--mantine-color-green-1);--mantine-color-green-light-hover:var(--mantine-color-green-2);--mantine-color-green-light-color:var(--mantine-color-green-9);--mantine-color-green-outline:var(--mantine-color-green-6);--mantine-color-green-outline-hover:#40c0570d;--mantine-color-lime-text:var(--mantine-color-lime-filled);--mantine-color-lime-filled:var(--mantine-color-lime-6);--mantine-color-lime-filled-hover:var(--mantine-color-lime-7);--mantine-color-lime-light:var(--mantine-color-lime-1);--mantine-color-lime-light-hover:var(--mantine-color-lime-2);--mantine-color-lime-light-color:var(--mantine-color-lime-9);--mantine-color-lime-outline:var(--mantine-color-lime-6);--mantine-color-lime-outline-hover:#82c91e0d;--mantine-color-yellow-text:var(--mantine-color-yellow-filled);--mantine-color-yellow-filled:var(--mantine-color-yellow-6);--mantine-color-yellow-filled-hover:var(--mantine-color-yellow-7);--mantine-color-yellow-light:var(--mantine-color-yellow-1);--mantine-color-yellow-light-hover:var(--mantine-color-yellow-2);--mantine-color-yellow-light-color:var(--mantine-color-yellow-9);--mantine-color-yellow-outline:var(--mantine-color-yellow-6);--mantine-color-yellow-outline-hover:#fab0050d;--mantine-color-orange-text:var(--mantine-color-orange-filled);--mantine-color-orange-filled:var(--mantine-color-orange-6);--mantine-color-orange-filled-hover:var(--mantine-color-orange-7);--mantine-color-orange-light:var(--mantine-color-orange-1);--mantine-color-orange-light-hover:var(--mantine-color-orange-2);--mantine-color-orange-light-color:var(--mantine-color-orange-9);--mantine-color-orange-outline:var(--mantine-color-orange-6);--mantine-color-orange-outline-hover:#fd7e140d}@media (prefers-reduced-motion:reduce){[data-respect-reduced-motion] [data-reduce-motion]{transition:none;animation:none}}[data-mantine-color-scheme=light] .mantine-light-hidden,[data-mantine-color-scheme=dark] .mantine-dark-hidden{display:none}.mantine-focus-auto:focus-visible,.mantine-focus-always:focus{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.mantine-focus-never:focus{outline:none}.mantine-active:active{transform:translateY(calc(.0625rem * var(--mantine-scale)))}fieldset:disabled .mantine-active:active{transform:none}:where([dir=rtl]) .mantine-rotate-rtl{transform:rotate(180deg)}.m_d57069b5{--scrollarea-scrollbar-size:calc(.75rem * var(--mantine-scale));position:relative;overflow:hidden}.m_d57069b5:where([data-autosize]) .m_b1336c6{min-width:min-content}.m_c0783ff9{scrollbar-width:none;overscroll-behavior:var(--scrollarea-over-scroll-behavior);-ms-overflow-style:none;-webkit-overflow-scrolling:touch;width:100%;height:100%}.m_c0783ff9::-webkit-scrollbar{display:none}.m_c0783ff9:where([data-scrollbars=xy],[data-scrollbars=y]):where([data-offset-scrollbars=xy],[data-offset-scrollbars=y],[data-offset-scrollbars=present]):where([data-vertical-hidden]){padding-inline:0}.m_c0783ff9:where([data-scrollbars=xy],[data-scrollbars=y]):where([data-offset-scrollbars=xy],[data-offset-scrollbars=y],[data-offset-scrollbars=present]):not([data-vertical-hidden]){padding-inline-start:unset;padding-inline-end:var(--scrollarea-scrollbar-size)}.m_c0783ff9:where([data-scrollbars=xy],[data-scrollbars=y]):where([data-offset-scrollbars=xy],[data-offset-scrollbars=y],[data-offset-scrollbars=present]):not([data-vertical-hidden]):where([data-vertical-scrollbar-position=left]){padding-inline-end:unset;padding-left:var(--scrollarea-scrollbar-size);padding-right:unset}.m_c0783ff9:where([data-scrollbars=xy],[data-scrollbars=y]):where([data-offset-scrollbars=xy],[data-offset-scrollbars=y],[data-offset-scrollbars=present]):not([data-vertical-hidden]):where([data-vertical-scrollbar-position=right]){padding-inline-end:unset;padding-left:unset;padding-right:var(--scrollarea-scrollbar-size)}.m_c0783ff9:where([data-scrollbars=xy],[data-scrollbars=x]):where([data-offset-scrollbars=xy],[data-offset-scrollbars=x],[data-offset-scrollbars=present]):where([data-horizontal-hidden]){padding-bottom:0}.m_c0783ff9:where([data-scrollbars=xy],[data-scrollbars=x]):where([data-offset-scrollbars=xy],[data-offset-scrollbars=x],[data-offset-scrollbars=present]):not([data-horizontal-hidden]){padding-bottom:var(--scrollarea-scrollbar-size)}.m_f8f631dd{min-width:100%;display:table}.m_c44ba933{-webkit-user-select:none;user-select:none;touch-action:none;box-sizing:border-box;padding:calc(var(--scrollarea-scrollbar-size) / 5);background-color:#0000;flex-direction:row;transition:background-color .15s,opacity .15s;display:flex}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_c44ba933:hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=light]) .m_c44ba933:hover>.m_d8b5e363{background-color:#00000080}:where([data-mantine-color-scheme=dark]) .m_c44ba933:hover{background-color:var(--mantine-color-dark-8)}:where([data-mantine-color-scheme=dark]) .m_c44ba933:hover>.m_d8b5e363{background-color:#ffffff80}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_c44ba933:active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=light]) .m_c44ba933:active>.m_d8b5e363{background-color:#00000080}:where([data-mantine-color-scheme=dark]) .m_c44ba933:active{background-color:var(--mantine-color-dark-8)}:where([data-mantine-color-scheme=dark]) .m_c44ba933:active>.m_d8b5e363{background-color:#ffffff80}}.m_c44ba933:where([data-hidden],[data-state=hidden]){display:none}.m_c44ba933:where([data-orientation=vertical]){width:var(--scrollarea-scrollbar-size);top:0;bottom:var(--sa-corner-width);inset-inline-end:0}.m_c44ba933:where([data-orientation=vertical]):where([data-vertical-scrollbar-position=left]){inset-inline-end:auto;left:0;right:auto}.m_c44ba933:where([data-orientation=vertical]):where([data-vertical-scrollbar-position=right]){inset-inline-end:auto;left:auto;right:0}.m_c44ba933:where([data-orientation=horizontal]){height:var(--scrollarea-scrollbar-size);bottom:0;flex-direction:column;inset-inline-start:0;inset-inline-end:var(--sa-corner-width)}.m_c44ba933:where([data-orientation=horizontal]):where([data-vertical-scrollbar-position=left]){inset-inline:auto;left:var(--sa-corner-width);right:0}.m_c44ba933:where([data-orientation=horizontal]):where([data-vertical-scrollbar-position=right]){inset-inline:auto;left:0;right:var(--sa-corner-width)}.m_d8b5e363{border-radius:var(--scrollarea-scrollbar-size);opacity:var(--thumb-opacity);flex:1;transition:background-color .15s;position:relative;overflow:hidden}.m_d8b5e363:before{content:"";width:100%;height:100%;min-width:calc(2.75rem * var(--mantine-scale));min-height:calc(2.75rem * var(--mantine-scale));position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:where([data-mantine-color-scheme=light]) .m_d8b5e363{background-color:#0006}:where([data-mantine-color-scheme=dark]) .m_d8b5e363{background-color:#fff6}.m_21657268{opacity:0;inset-inline-end:0;transition:opacity .15s;display:block;position:absolute;bottom:0}.m_21657268:where([data-vertical-scrollbar-position=left]){inset-inline-end:auto;left:0;right:auto}.m_21657268:where([data-vertical-scrollbar-position=right]){inset-inline-end:auto;left:auto;right:0}:where([data-mantine-color-scheme=light]) .m_21657268{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_21657268{background-color:var(--mantine-color-dark-8)}.m_21657268:where([data-hovered]){opacity:1}.m_21657268:where([data-hidden]){display:none}.m_b1336c6{min-width:100%}.m_87cf2631{cursor:pointer;appearance:none;font-size:var(--mantine-font-size-md);text-align:start;color:inherit;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background-color:#0000;border:0;padding:0;text-decoration:none}.m_515a97f8{clip:rect(0 0 0 0);height:calc(.0625rem * var(--mantine-scale));width:calc(.0625rem * var(--mantine-scale));margin:calc(-.0625rem * var(--mantine-scale));white-space:nowrap;border:0;padding:0;position:absolute;overflow:hidden}.m_1b7284a3{--paper-radius:var(--mantine-radius-default);-webkit-tap-highlight-color:transparent;touch-action:manipulation;border-radius:var(--paper-radius);box-shadow:var(--paper-shadow);background-color:var(--mantine-color-body);outline:0;text-decoration:none;display:block}[data-mantine-color-scheme=light] .m_1b7284a3{--paper-border-color:var(--mantine-color-gray-3)}[data-mantine-color-scheme=dark] .m_1b7284a3{--paper-border-color:var(--mantine-color-dark-4)}.m_1b7284a3:where([data-with-border]){border:calc(.0625rem * var(--mantine-scale)) solid var(--paper-border-color)}.m_9814e45f{background:var(--overlay-bg,#0009);-webkit-backdrop-filter:var(--overlay-filter);backdrop-filter:var(--overlay-filter);border-radius:var(--overlay-radius,0);z-index:var(--overlay-z-index);position:absolute;inset:0}.m_9814e45f:where([data-fixed]){position:fixed}.m_9814e45f:where([data-center]){justify-content:center;align-items:center;display:flex}.m_38a85659{border:1px solid var(--popover-border-color);padding:var(--mantine-spacing-sm) var(--mantine-spacing-md);box-shadow:var(--popover-shadow,none);border-radius:var(--popover-radius,var(--mantine-radius-default));position:absolute}.m_38a85659:where([data-fixed]){position:fixed}.m_38a85659:focus{outline:none}:where([data-mantine-color-scheme=light]) .m_38a85659{--popover-border-color:var(--mantine-color-gray-2);background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_38a85659{--popover-border-color:var(--mantine-color-dark-4);background-color:var(--mantine-color-dark-6)}.m_a31dc6c1{background-color:inherit;border:1px solid var(--popover-border-color);z-index:1}.m_3d7bc908{position:fixed;inset:0}.m_5ae2e3c{--loader-size-xs:calc(1.125rem * var(--mantine-scale));--loader-size-sm:calc(1.375rem * var(--mantine-scale));--loader-size-md:calc(2.25rem * var(--mantine-scale));--loader-size-lg:calc(2.75rem * var(--mantine-scale));--loader-size-xl:calc(3.625rem * var(--mantine-scale));--loader-size:var(--loader-size-md);--loader-color:var(--mantine-primary-color-filled)}@keyframes m_5d2b3b9d{0%{opacity:0;transform:scale(.6)}50%,to{transform:scale(1)}}.m_7a2bd4cd{width:var(--loader-size);height:var(--loader-size);gap:calc(var(--loader-size) / 5);display:flex;position:relative}.m_870bb79{background:var(--loader-color);border-radius:calc(.125rem * var(--mantine-scale));flex:1;animation:1.2s cubic-bezier(0,.5,.5,1) infinite m_5d2b3b9d}.m_870bb79:first-of-type{animation-delay:-240ms}.m_870bb79:nth-of-type(2){animation-delay:-120ms}.m_870bb79:nth-of-type(3){animation-delay:0}@keyframes m_aac34a1{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.6)}}.m_4e3f22d7{justify-content:center;align-items:center;gap:calc(var(--loader-size) / 10);width:var(--loader-size);height:var(--loader-size);display:flex;position:relative}.m_870c4af{width:calc(var(--loader-size) / 3 - var(--loader-size) / 15);height:calc(var(--loader-size) / 3 - var(--loader-size) / 15);background:var(--loader-color);border-radius:50%;animation:.8s linear infinite m_aac34a1}.m_870c4af:nth-child(2){animation-delay:.4s}@keyframes m_f8e89c4b{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.m_b34414df{width:var(--loader-size);height:var(--loader-size);display:inline-block}.m_b34414df:after{content:"";width:var(--loader-size);height:var(--loader-size);border-radius:calc(625rem * var(--mantine-scale));border-width:calc(var(--loader-size) / 8);border-style:solid;border-color:var(--loader-color) var(--loader-color) var(--loader-color) transparent;animation:1.2s linear infinite m_f8e89c4b;display:block}.m_8d3f4000{--ai-size-xs:calc(1.125rem * var(--mantine-scale));--ai-size-sm:calc(1.375rem * var(--mantine-scale));--ai-size-md:calc(1.75rem * var(--mantine-scale));--ai-size-lg:calc(2.125rem * var(--mantine-scale));--ai-size-xl:calc(2.75rem * var(--mantine-scale));--ai-size-input-xs:calc(1.875rem * var(--mantine-scale));--ai-size-input-sm:calc(2.25rem * var(--mantine-scale));--ai-size-input-md:calc(2.625rem * var(--mantine-scale));--ai-size-input-lg:calc(3.125rem * var(--mantine-scale));--ai-size-input-xl:calc(3.75rem * var(--mantine-scale));--ai-size:var(--ai-size-md);--ai-color:var(--mantine-color-white);-webkit-user-select:none;user-select:none;width:var(--ai-size);height:var(--ai-size);min-width:var(--ai-size);min-height:var(--ai-size);border-radius:var(--ai-radius,var(--mantine-radius-default));background:var(--ai-bg,var(--mantine-primary-color-filled));color:var(--ai-color,var(--mantine-color-white));border:var(--ai-bd,calc(.0625rem * var(--mantine-scale)) solid transparent);cursor:pointer;justify-content:center;align-items:center;line-height:1;display:inline-flex;position:relative;overflow:hidden}@media (hover:hover){.m_8d3f4000:hover:where(:not([data-loading],:disabled,[data-disabled])){background-color:var(--ai-hover,var(--mantine-primary-color-filled-hover));color:var(--ai-hover-color,var(--ai-color))}}@media (hover:none){.m_8d3f4000:active:where(:not([data-loading],:disabled,[data-disabled])){background-color:var(--ai-hover,var(--mantine-primary-color-filled-hover));color:var(--ai-hover-color,var(--ai-color))}}.m_8d3f4000[data-loading]{cursor:not-allowed}.m_8d3f4000[data-loading] .m_8d3afb97{opacity:0;transform:translateY(100%)}.m_8d3f4000:where(:disabled:not([data-loading]),[data-disabled]:not([data-loading])){cursor:not-allowed;border:calc(.0625rem * var(--mantine-scale)) solid transparent;color:var(--mantine-color-disabled-color);background:var(--mantine-color-disabled)}.m_8d3f4000:where(:disabled:not([data-loading]),[data-disabled]:not([data-loading])):active{transform:none}.m_302b9fb1{inset:calc(-.0625rem * var(--mantine-scale));border-radius:var(--ai-radius,var(--mantine-radius-default));justify-content:center;align-items:center;display:flex;position:absolute}:where([data-mantine-color-scheme=light]) .m_302b9fb1{background-color:#ffffff26}:where([data-mantine-color-scheme=dark]) .m_302b9fb1{background-color:#00000026}.m_1a0f1b21{--ai-border-width:calc(.0625rem * var(--mantine-scale));display:flex}.m_1a0f1b21 :where(*):focus{z-index:1;position:relative}.m_1a0f1b21[data-orientation=horizontal]{flex-direction:row}.m_1a0f1b21[data-orientation=horizontal] .m_8d3f4000:not(:only-child):first-child,.m_1a0f1b21[data-orientation=horizontal] .m_437b6484:not(:only-child):first-child{border-inline-end-width:calc(var(--ai-border-width) / 2);border-start-end-radius:0;border-end-end-radius:0}.m_1a0f1b21[data-orientation=horizontal] .m_8d3f4000:not(:only-child):last-child,.m_1a0f1b21[data-orientation=horizontal] .m_437b6484:not(:only-child):last-child{border-inline-start-width:calc(var(--ai-border-width) / 2);border-start-start-radius:0;border-end-start-radius:0}.m_1a0f1b21[data-orientation=horizontal] .m_8d3f4000:not(:only-child):not(:first-child):not(:last-child),.m_1a0f1b21[data-orientation=horizontal] .m_437b6484:not(:only-child):not(:first-child):not(:last-child){border-inline-width:calc(var(--ai-border-width) / 2);border-radius:0}.m_1a0f1b21[data-orientation=vertical]{flex-direction:column}.m_1a0f1b21[data-orientation=vertical] .m_8d3f4000:not(:only-child):first-child,.m_1a0f1b21[data-orientation=vertical] .m_437b6484:not(:only-child):first-child{border-bottom-width:calc(var(--ai-border-width) / 2);border-end-end-radius:0;border-end-start-radius:0}.m_1a0f1b21[data-orientation=vertical] .m_8d3f4000:not(:only-child):last-child,.m_1a0f1b21[data-orientation=vertical] .m_437b6484:not(:only-child):last-child{border-top-width:calc(var(--ai-border-width) / 2);border-start-start-radius:0;border-start-end-radius:0}.m_1a0f1b21[data-orientation=vertical] .m_8d3f4000:not(:only-child):not(:first-child):not(:last-child),.m_1a0f1b21[data-orientation=vertical] .m_437b6484:not(:only-child):not(:first-child):not(:last-child){border-bottom-width:calc(var(--ai-border-width) / 2);border-top-width:calc(var(--ai-border-width) / 2);border-radius:0}.m_8d3afb97{justify-content:center;align-items:center;width:100%;height:100%;transition:transform .15s,opacity .1s;display:flex}.m_437b6484{--section-height-xs:calc(1.125rem * var(--mantine-scale));--section-height-sm:calc(1.375rem * var(--mantine-scale));--section-height-md:calc(1.75rem * var(--mantine-scale));--section-height-lg:calc(2.125rem * var(--mantine-scale));--section-height-xl:calc(2.75rem * var(--mantine-scale));--section-height-input-xs:calc(1.875rem * var(--mantine-scale));--section-height-input-sm:calc(2.25rem * var(--mantine-scale));--section-height-input-md:calc(2.625rem * var(--mantine-scale));--section-height-input-lg:calc(3.125rem * var(--mantine-scale));--section-height-input-xl:calc(3.75rem * var(--mantine-scale));--section-padding-x-xs:calc(.375rem * var(--mantine-scale));--section-padding-x-sm:calc(.5rem * var(--mantine-scale));--section-padding-x-md:calc(.625rem * var(--mantine-scale));--section-padding-x-lg:calc(.75rem * var(--mantine-scale));--section-padding-x-xl:calc(1rem * var(--mantine-scale));--section-height:var(--section-height-sm);--section-padding-x:var(--section-padding-x-sm);--section-color:var(--mantine-color-white);font-weight:var(--mantine-font-weight-medium);border-radius:var(--section-radius,var(--mantine-radius-default));width:auto;font-size:var(--section-fz,var(--mantine-font-size-sm));background:var(--section-bg,var(--mantine-primary-color-filled));border:var(--section-bd,calc(.0625rem * var(--mantine-scale)) solid transparent);color:var(--section-color,var(--mantine-color-white));height:var(--section-height,var(--section-height-sm));padding-inline:var(--section-padding-x,var(--section-padding-x-sm));vertical-align:middle;justify-content:center;align-items:center;line-height:1;display:inline-flex}.m_86a44da5{--cb-size-xs:calc(1.125rem * var(--mantine-scale));--cb-size-sm:calc(1.375rem * var(--mantine-scale));--cb-size-md:calc(1.75rem * var(--mantine-scale));--cb-size-lg:calc(2.125rem * var(--mantine-scale));--cb-size-xl:calc(2.75rem * var(--mantine-scale));--cb-size:var(--cb-size-md);--cb-icon-size:70%;--cb-radius:var(--mantine-radius-default);-webkit-user-select:none;user-select:none;width:var(--cb-size);height:var(--cb-size);min-width:var(--cb-size);min-height:var(--cb-size);border-radius:var(--cb-radius);justify-content:center;align-items:center;line-height:1;display:inline-flex;position:relative}:where([data-mantine-color-scheme=light]) .m_86a44da5{color:var(--mantine-color-gray-7)}:where([data-mantine-color-scheme=dark]) .m_86a44da5{color:var(--mantine-color-dark-1)}.m_86a44da5[data-disabled],.m_86a44da5:disabled{cursor:not-allowed;opacity:.6}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_220c80f2:where(:not([data-disabled],:disabled)):hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_220c80f2:where(:not([data-disabled],:disabled)):hover{background-color:var(--mantine-color-dark-6)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_220c80f2:where(:not([data-disabled],:disabled)):active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_220c80f2:where(:not([data-disabled],:disabled)):active{background-color:var(--mantine-color-dark-6)}}.m_4081bf90{flex-direction:row;flex-wrap:var(--group-wrap,wrap);justify-content:var(--group-justify,flex-start);align-items:var(--group-align,center);gap:var(--group-gap,var(--mantine-spacing-md));display:flex}.m_4081bf90:where([data-grow])>*{max-width:var(--group-child-width);flex-grow:1}.m_615af6c9{line-height:1;font-weight:var(--mantine-font-weight-regular);font-size:var(--mantine-font-size-md);margin:0;padding:0}.m_b5489c3c{padding:var(--mb-padding,var(--mantine-spacing-md));background-color:var(--mantine-color-body);z-index:1000;min-height:calc(3.75rem * var(--mantine-scale));justify-content:space-between;align-items:center;padding-inline-end:calc(var(--mb-padding,var(--mantine-spacing-md)) - calc(.3125rem * var(--mantine-scale)));transition:padding-inline-end .1s;display:flex;position:sticky;top:0}.m_60c222c7{width:100%;z-index:var(--mb-z-index);pointer-events:none;position:fixed;top:0;bottom:0}.m_fd1ab0aa{pointer-events:all;box-shadow:var(--mb-shadow,var(--mantine-shadow-xl))}.m_fd1ab0aa [data-mantine-scrollbar]{z-index:1001}[data-offset-scrollbars] .m_fd1ab0aa:has([data-mantine-scrollbar]) .m_b5489c3c{padding-inline-end:calc(var(--mb-padding,var(--mantine-spacing-md)) + calc(.3125rem * var(--mantine-scale)))}.m_606cb269{margin-inline-start:auto}.m_5df29311{padding:var(--mb-padding,var(--mantine-spacing-md));padding-top:var(--mb-padding,var(--mantine-spacing-md))}.m_5df29311:where(:not(:only-child)){padding-top:0}.m_6c018570{margin-top:var(--input-margin-top,0rem);margin-bottom:var(--input-margin-bottom,0rem);--input-height-xs:calc(1.875rem * var(--mantine-scale));--input-height-sm:calc(2.25rem * var(--mantine-scale));--input-height-md:calc(2.625rem * var(--mantine-scale));--input-height-lg:calc(3.125rem * var(--mantine-scale));--input-height-xl:calc(3.75rem * var(--mantine-scale));--input-padding-y-xs:calc(.3125rem * var(--mantine-scale));--input-padding-y-sm:calc(.375rem * var(--mantine-scale));--input-padding-y-md:calc(.5rem * var(--mantine-scale));--input-padding-y-lg:calc(.625rem * var(--mantine-scale));--input-padding-y-xl:calc(.8125rem * var(--mantine-scale));--input-height:var(--input-height-sm);--input-radius:var(--mantine-radius-default);--input-cursor:text;--input-line-height:calc(var(--input-height) - calc(.125rem * var(--mantine-scale)));--input-padding:calc(var(--input-height) / 3);--input-padding-inline-start:var(--input-padding);--input-padding-inline-end:var(--input-padding);--input-placeholder-color:var(--mantine-color-placeholder);--input-color:var(--mantine-color-text);--input-disabled-bg:var(--mantine-color-disabled);--input-disabled-color:var(--mantine-color-disabled-color);--input-left-section-size:var(--input-left-section-width,calc(var(--input-height) - calc(.125rem * var(--mantine-scale))));--input-right-section-size:var(--input-right-section-width,calc(var(--input-height) - calc(.125rem * var(--mantine-scale))));--input-size:var(--input-height);--section-y:calc(.0625rem * var(--mantine-scale));--left-section-start:calc(.0625rem * var(--mantine-scale));--left-section-border-radius:var(--input-radius) 0 0 var(--input-radius);--right-section-end:calc(.0625rem * var(--mantine-scale));--right-section-border-radius:0 var(--input-radius) var(--input-radius) 0;position:relative}.m_6c018570[data-variant=unstyled]{--input-padding:0;--input-padding-y:0;--input-padding-inline-start:0;--input-padding-inline-end:0}.m_6c018570[data-pointer]{--input-cursor:pointer}.m_6c018570[data-with-bottom-section]{--input-bottom-section-height:calc(1.75rem * var(--mantine-scale))}.m_6c018570[data-multiline]{--input-padding-y-xs:calc(.28125rem * var(--mantine-scale));--input-padding-y-sm:calc(.34375rem * var(--mantine-scale));--input-padding-y-md:calc(.4375rem * var(--mantine-scale));--input-padding-y-lg:calc(.59375rem * var(--mantine-scale));--input-padding-y-xl:calc(.8125rem * var(--mantine-scale));--input-size:auto;--input-line-height:var(--mantine-line-height)}.m_6c018570[data-with-left-section]{--input-padding-inline-start:var(--input-left-section-size)}.m_6c018570[data-with-right-section]{--input-padding-inline-end:var(--input-right-section-size)}.m_6c018570[data-size=xs] .m_6c018570[data-with-right-section]:has([data-combined-clear-section]){--input-padding-inline-end:calc(2.5625rem * var(--mantine-scale))}.m_6c018570[data-size=sm] .m_6c018570[data-with-right-section]:has([data-combined-clear-section]){--input-padding-inline-end:calc(3.125rem * var(--mantine-scale))}.m_6c018570[data-size=md] .m_6c018570[data-with-right-section]:has([data-combined-clear-section]){--input-padding-inline-end:calc(3.75rem * var(--mantine-scale))}.m_6c018570[data-size=lg] .m_6c018570[data-with-right-section]:has([data-combined-clear-section]){--input-padding-inline-end:calc(4.5rem * var(--mantine-scale))}.m_6c018570[data-size=xl] .m_6c018570[data-with-right-section]:has([data-combined-clear-section]){--input-padding-inline-end:calc(5.5625rem * var(--mantine-scale))}[data-mantine-color-scheme=light] .m_6c018570[data-variant=default]{--input-bd:var(--mantine-color-gray-4);--input-bg:var(--mantine-color-white);--input-bd-focus:var(--mantine-primary-color-filled)}[data-mantine-color-scheme=light] .m_6c018570[data-variant=filled]{--input-bd:transparent;--input-bg:var(--mantine-color-gray-1);--input-bd-focus:var(--mantine-primary-color-filled)}[data-mantine-color-scheme=light] .m_6c018570[data-variant=unstyled]{--input-bd:transparent;--input-bg:transparent;--input-bd-focus:transparent}[data-mantine-color-scheme=dark] .m_6c018570[data-variant=default]{--input-bd:var(--mantine-color-dark-4);--input-bg:var(--mantine-color-dark-6);--input-bd-focus:var(--mantine-primary-color-filled)}[data-mantine-color-scheme=dark] .m_6c018570[data-variant=filled]{--input-bd:transparent;--input-bg:var(--mantine-color-dark-5);--input-bd-focus:var(--mantine-primary-color-filled)}[data-mantine-color-scheme=dark] .m_6c018570[data-variant=unstyled]{--input-bd:transparent;--input-bg:transparent;--input-bd-focus:transparent}[data-mantine-color-scheme] .m_6c018570[data-error]:not([data-variant=unstyled]){--input-bd:var(--mantine-color-error)}[data-mantine-color-scheme] .m_6c018570[data-error]{--input-color:var(--mantine-color-error);--input-placeholder-color:var(--mantine-color-error);--input-section-color:var(--mantine-color-error)}[data-mantine-color-scheme] .m_6c018570[data-success]:not([data-variant=unstyled]){--input-bd:var(--mantine-color-success)}[data-mantine-color-scheme] .m_6c018570[data-success]{--input-section-color:var(--mantine-color-success)}:where([dir=rtl]) .m_6c018570{--left-section-border-radius:0 var(--input-radius) var(--input-radius) 0;--right-section-border-radius:var(--input-radius) 0 0 var(--input-radius)}.m_6c018570[dir=ltr]{--left-section-border-radius:var(--input-radius) 0 0 var(--input-radius);--right-section-border-radius:0 var(--input-radius) var(--input-radius) 0}.m_8fb7ebe7{-webkit-tap-highlight-color:transparent;appearance:none;resize:var(--input-resize,none);width:100%;text-align:var(--input-text-align,start);color:var(--input-color);border:calc(.0625rem * var(--mantine-scale)) solid var(--input-bd);background-color:var(--input-bg);font-family:var(--input-font-family,var(--mantine-font-family));height:var(--input-size);min-height:var(--input-height);line-height:var(--input-line-height);font-size:var(--_input-fz,var(--input-fz,var(--mantine-font-size-md)));border-radius:var(--input-radius);padding-inline-start:var(--input-padding-inline-start);padding-inline-end:var(--input-padding-inline-end);padding-top:var(--input-padding-y,0rem);padding-bottom:var(--input-padding-y,0rem);cursor:var(--input-cursor);overflow:var(--input-overflow);transition:border-color .1s;display:block}.m_8fb7ebe7[data-no-overflow]{--input-overflow:hidden}.m_8fb7ebe7[data-monospace]{--input-font-family:var(--mantine-font-family-monospace);--_input-fz:calc(var(--input-fz) - calc(.125rem * var(--mantine-scale)))}.m_8fb7ebe7:focus,.m_8fb7ebe7:focus-within{--input-bd:var(--input-bd-focus);outline:none}.m_6c018570[data-error] .m_8fb7ebe7:focus,.m_6c018570[data-error] .m_8fb7ebe7:focus-within{--input-bd:var(--mantine-color-error)}.m_6c018570[data-success] .m_8fb7ebe7:focus,.m_6c018570[data-success] .m_8fb7ebe7:focus-within{--input-bd:var(--mantine-color-success)}.m_8fb7ebe7::placeholder{color:var(--input-placeholder-color);opacity:1}.m_8fb7ebe7::-webkit-inner-spin-button{appearance:none}.m_8fb7ebe7::-webkit-outer-spin-button{appearance:none}.m_8fb7ebe7::-webkit-search-decoration{appearance:none}.m_8fb7ebe7::-webkit-search-cancel-button{appearance:none}.m_8fb7ebe7::-webkit-search-results-button{appearance:none}.m_8fb7ebe7::-webkit-search-results-decoration{appearance:none}.m_8fb7ebe7[type=number]{-moz-appearance:textfield}.m_8fb7ebe7:disabled,.m_8fb7ebe7[data-disabled]{cursor:not-allowed;opacity:.6;background-color:var(--input-disabled-bg);color:var(--input-disabled-color)}.m_8fb7ebe7:has(input:disabled){cursor:not-allowed;opacity:.6;background-color:var(--input-disabled-bg);color:var(--input-disabled-color)}.m_8fb7ebe7[readonly]{caret-color:#0000}[data-with-bottom-section] .m_8fb7ebe7{padding-bottom:calc(var(--input-padding-y,0rem) + var(--input-bottom-section-height))}.m_93f4ed57{bottom:calc(.0625rem * var(--mantine-scale));left:calc(.0625rem * var(--mantine-scale));right:calc(.0625rem * var(--mantine-scale));height:var(--input-bottom-section-height);padding-inline:var(--input-padding);border-radius:0 0 var(--input-radius) var(--input-radius);pointer-events:all;color:var(--mantine-color-dimmed);font-size:var(--input-fz,var(--mantine-font-size-sm));justify-content:flex-start;align-items:center;display:flex;position:absolute}.m_82577fc2{pointer-events:var(--section-pointer-events);z-index:1;inset-inline-start:var(--section-start);inset-inline-end:var(--section-end);bottom:var(--section-y);top:var(--section-y);width:var(--section-size);border-radius:var(--section-border-radius);color:var(--input-section-color,var(--mantine-color-dimmed));justify-content:center;align-items:center;display:flex;position:absolute}.m_82577fc2[data-position=right]{--section-pointer-events:var(--input-right-section-pointer-events);--section-end:var(--right-section-end);--section-size:var(--input-right-section-size);--section-border-radius:var(--right-section-border-radius)}.m_6c018570[data-size=xs] .m_82577fc2[data-position=right]:has([data-combined-clear-section]){--section-size:calc(2.5625rem * var(--mantine-scale))}.m_6c018570[data-size=sm] .m_82577fc2[data-position=right]:has([data-combined-clear-section]){--section-size:calc(3.125rem * var(--mantine-scale))}.m_6c018570[data-size=md] .m_82577fc2[data-position=right]:has([data-combined-clear-section]){--section-size:calc(3.75rem * var(--mantine-scale))}.m_6c018570[data-size=lg] .m_82577fc2[data-position=right]:has([data-combined-clear-section]){--section-size:calc(4.5rem * var(--mantine-scale))}.m_6c018570[data-size=xl] .m_82577fc2[data-position=right]:has([data-combined-clear-section]){--section-size:calc(5.5625rem * var(--mantine-scale))}.m_82577fc2[data-position=left]{--section-pointer-events:var(--input-left-section-pointer-events);--section-start:var(--left-section-start);--section-size:var(--input-left-section-size);--section-border-radius:var(--left-section-border-radius)}.m_88bacfd0{color:var(--input-placeholder-color,var(--mantine-color-placeholder))}.m_6c018570[data-error] .m_88bacfd0{--input-placeholder-color:var(--input-color,var(--mantine-color-placeholder))}.m_46b77525{line-height:var(--mantine-line-height)}.m_8fdc1311{font-weight:var(--mantine-font-weight-medium);overflow-wrap:break-word;cursor:default;-webkit-tap-highlight-color:transparent;font-size:var(--input-label-size,var(--mantine-font-size-sm));display:inline-block}.m_78a94662{color:var(--input-asterisk-color,var(--mantine-color-error))}.m_8f816625,.m_9d9d40e0,.m_fe47ce59{word-wrap:break-word;margin:0;padding:0;line-height:1.2;display:block}.m_8f816625{color:var(--mantine-color-error);font-size:var(--input-error-size,calc(var(--mantine-font-size-sm) - calc(.125rem * var(--mantine-scale))))}.m_9d9d40e0{color:var(--mantine-color-success);font-size:var(--input-success-size,calc(var(--mantine-font-size-sm) - calc(.125rem * var(--mantine-scale))))}.m_fe47ce59{color:var(--mantine-color-dimmed);font-size:var(--input-description-size,calc(var(--mantine-font-size-sm) - calc(.125rem * var(--mantine-scale))))}.m_8bffd616{display:flex}.m_96b553a6{--transition-duration:.15s;z-index:0;transition-property:transform,width,height;transition-duration:0s;transition-timing-function:ease;position:absolute;top:0;left:0}.m_96b553a6:where([data-initialized]){transition-duration:var(--transition-duration)}.m_96b553a6:where([data-hidden]){display:none}.m_9bdbb667{--accordion-radius:var(--mantine-radius-default)}.m_df78851f{overflow-wrap:break-word}.m_4ba554d4{padding:var(--mantine-spacing-md);padding-top:calc(var(--mantine-spacing-xs) / 2)}.m_8fa820a0{width:100%;margin:0;padding:0}.m_4ba585b8{width:100%;padding-inline:var(--mantine-spacing-md);opacity:1;cursor:pointer;color:var(--mantine-color-bright);background-color:#0000;flex-direction:row-reverse;align-items:center;display:flex}.m_4ba585b8:where([data-chevron-position=left]){flex-direction:row;padding-inline-start:0}.m_4ba585b8:where(:disabled,[data-disabled]){opacity:.4;cursor:not-allowed}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_6939a5e9:where(:not(:disabled,[data-disabled])):hover,:where([data-mantine-color-scheme=light]) .m_4271d21b:where(:not(:disabled,[data-disabled])):hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_6939a5e9:where(:not(:disabled,[data-disabled])):hover,:where([data-mantine-color-scheme=dark]) .m_4271d21b:where(:not(:disabled,[data-disabled])):hover{background-color:var(--mantine-color-dark-6)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_6939a5e9:where(:not(:disabled,[data-disabled])):active,:where([data-mantine-color-scheme=light]) .m_4271d21b:where(:not(:disabled,[data-disabled])):active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_6939a5e9:where(:not(:disabled,[data-disabled])):active,:where([data-mantine-color-scheme=dark]) .m_4271d21b:where(:not(:disabled,[data-disabled])):active{background-color:var(--mantine-color-dark-6)}}.m_df3ffa0f{color:inherit;font-weight:var(--mantine-font-weight-regular);text-overflow:ellipsis;padding-top:var(--mantine-spacing-sm);padding-bottom:var(--mantine-spacing-sm);flex:1;overflow:hidden}.m_3f35ae96{transition:transform var(--accordion-transition-duration,.2s) ease;width:var(--accordion-chevron-size,calc(.9375rem * var(--mantine-scale)));min-width:var(--accordion-chevron-size,calc(.9375rem * var(--mantine-scale)));justify-content:flex-start;align-items:center;display:flex;transform:rotate(0)}.m_3f35ae96:where([data-rotate]){transform:rotate(180deg)}.m_3f35ae96:where([data-position=left]){margin-inline-start:var(--mantine-spacing-md);margin-inline-end:var(--mantine-spacing-md)}.m_9bd771fe{justify-content:center;align-items:center;margin-inline-end:var(--mantine-spacing-sm);display:flex}.m_9bd771fe:where([data-chevron-position=left]){margin-inline-start:var(--mantine-spacing-lg);margin-inline-end:0}:where([data-mantine-color-scheme=light]) .m_9bd7b098{--item-border-color:var(--mantine-color-gray-3);--item-filled-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_9bd7b098{--item-border-color:var(--mantine-color-dark-4);--item-filled-color:var(--mantine-color-dark-6)}.m_fe19b709{border-bottom:1px solid var(--item-border-color)}.m_1f921b3b{border:1px solid var(--item-border-color);transition:background-color .15s}.m_1f921b3b:where([data-active]){background-color:var(--item-filled-color)}.m_1f921b3b:first-of-type,.m_1f921b3b:first-of-type>[data-accordion-control],.m_1f921b3b:first-of-type>.m_8fa820a0>[data-accordion-control]{border-start-start-radius:var(--accordion-radius);border-start-end-radius:var(--accordion-radius)}.m_1f921b3b:last-of-type,.m_1f921b3b:last-of-type>[data-accordion-control],.m_1f921b3b:last-of-type>.m_8fa820a0>[data-accordion-control]{border-end-end-radius:var(--accordion-radius);border-end-start-radius:var(--accordion-radius)}.m_1f921b3b+.m_1f921b3b{border-top:0}.m_2cdf939a{border-radius:var(--accordion-radius)}.m_2cdf939a:where([data-active]){background-color:var(--item-filled-color)}.m_9f59b069{background-color:var(--item-filled-color);border-radius:var(--accordion-radius);border:calc(.0625rem * var(--mantine-scale)) solid transparent;transition:background-color .15s}.m_9f59b069[data-active]{border-color:var(--item-border-color)}:where([data-mantine-color-scheme=light]) .m_9f59b069[data-active]{background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_9f59b069[data-active]{background-color:var(--mantine-color-dark-7)}.m_9f59b069+.m_9f59b069{margin-top:var(--mantine-spacing-md)}.m_7f854edf{z-index:var(--affix-z-index);inset-inline-start:var(--affix-left);inset-inline-end:var(--affix-right);top:var(--affix-top);bottom:var(--affix-bottom);position:fixed}.m_de09d2d2{align-items:center;gap:var(--mantine-spacing-sm);width:fit-content;margin-inline:auto;display:flex}.m_eab73b29{width:calc(.0625rem * var(--mantine-scale));background-color:var(--mantine-color-default-border);align-self:stretch}.m_66836ed3{--alert-radius:var(--mantine-radius-default);--alert-bg:var(--mantine-primary-color-light);--alert-bd:calc(.0625rem * var(--mantine-scale)) solid transparent;--alert-color:var(--mantine-primary-color-light-color);padding:var(--mantine-spacing-md) var(--mantine-spacing-md);border-radius:var(--alert-radius);background-color:var(--alert-bg);border:var(--alert-bd);color:var(--alert-color);position:relative;overflow:hidden}.m_a5d60502{display:flex}.m_667c2793{gap:var(--mantine-spacing-xs);flex-direction:column;flex:1;display:flex}.m_6a03f287{font-size:var(--mantine-font-size-sm);font-weight:var(--mantine-font-weight-bold);justify-content:space-between;align-items:center;display:flex}.m_6a03f287:where([data-with-close-button]){padding-inline-end:var(--mantine-spacing-md)}.m_698f4f23{text-overflow:ellipsis;display:block;overflow:hidden}.m_667f2a6a{width:calc(1.25rem * var(--mantine-scale));height:calc(1.25rem * var(--mantine-scale));margin-inline-end:var(--mantine-spacing-md);margin-top:calc(.0625rem * var(--mantine-scale));justify-content:flex-start;align-items:center;line-height:1;display:flex}.m_7fa78076{text-overflow:ellipsis;font-size:var(--mantine-font-size-sm);overflow:hidden}:where([data-mantine-color-scheme=light]) .m_7fa78076{color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_7fa78076{color:var(--mantine-color-white)}.m_7fa78076:where([data-variant=filled]){color:var(--alert-color)}.m_7fa78076:where([data-variant=white]){color:var(--mantine-color-black)}.m_87f54839{width:calc(1.25rem * var(--mantine-scale));height:calc(1.25rem * var(--mantine-scale));color:var(--alert-color)}.m_b6d8b162{-webkit-tap-highlight-color:transparent;font-size:var(--text-fz,var(--mantine-font-size-md));line-height:var(--text-lh,var(--mantine-line-height-md));font-weight:var(--mantine-font-weight-regular);text-wrap:var(--text-text-wrap,var(--mantine-text-wrap));margin:0;padding:0;text-decoration:none}.m_b6d8b162:where([data-truncate]){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.m_b6d8b162:where([data-truncate=start]){text-align:end;direction:rtl}:where([dir=rtl]) .m_b6d8b162:where([data-truncate=start]){text-align:start;direction:ltr}.m_b6d8b162:where([data-variant=gradient]){background-image:var(--text-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.m_b6d8b162:where([data-line-clamp]){text-overflow:ellipsis;-webkit-line-clamp:var(--text-line-clamp);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.m_b6d8b162:where([data-inherit]){line-height:inherit;font-weight:inherit;font-size:inherit}.m_b6d8b162:where([data-inline]){line-height:1}.m_849cf0da{color:var(--mantine-color-anchor);appearance:none;cursor:pointer;background-color:#0000;border:none;margin:0;padding:0;text-decoration:none;display:inline}@media (hover:hover){.m_849cf0da:where([data-underline=hover]):hover{text-decoration:underline}}@media (hover:none){.m_849cf0da:where([data-underline=hover]):active{text-decoration:underline}}.m_849cf0da:where([data-underline=not-hover]){text-decoration:underline}@media (hover:hover){.m_849cf0da:where([data-underline=not-hover]):hover{text-decoration:none}}@media (hover:none){.m_849cf0da:where([data-underline=not-hover]):active{text-decoration:none}}.m_849cf0da:where([data-underline=always]){text-decoration:underline}.m_849cf0da:where([data-variant=gradient]),.m_849cf0da:where([data-variant=gradient]):hover{text-decoration:none}.m_849cf0da:where([data-line-clamp]){display:-webkit-box}.m_48204f9b{width:var(--slider-size);height:var(--slider-size);-webkit-user-select:none;user-select:none;border-radius:100%;justify-content:center;align-items:center;display:flex;position:relative}.m_48204f9b:focus-within{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.m_48204f9b{--slider-size:calc(3.75rem * var(--mantine-scale));--thumb-size:calc(var(--slider-size) / 5)}:where([data-mantine-color-scheme=light]) .m_48204f9b{background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_48204f9b{background-color:var(--mantine-color-dark-5)}.m_bb9cdbad{inset:calc(.0625rem * var(--mantine-scale));border-radius:var(--slider-size);pointer-events:none;position:absolute}.m_481dd586{width:calc(.125rem * var(--mantine-scale));transform:rotate(var(--angle));position:absolute;top:0;bottom:0;left:calc(50% - 1px)}.m_481dd586:before{content:"";top:calc(var(--thumb-size) / 3);left:calc(.03125rem * var(--mantine-scale));width:calc(.0625rem * var(--mantine-scale));height:calc(var(--thumb-size) / 1.5);position:absolute;transform:translate(-50%,-50%)}:where([data-mantine-color-scheme=light]) .m_481dd586:before{background-color:var(--mantine-color-gray-4)}:where([data-mantine-color-scheme=dark]) .m_481dd586:before{background-color:var(--mantine-color-dark-3)}.m_481dd586[data-label]:after{min-width:calc(1.125rem * var(--mantine-scale));text-align:center;content:attr(data-label);top:calc(-1.5rem * var(--mantine-scale));left:calc(-.4375rem * var(--mantine-scale));transform:rotate(calc(360deg - var(--angle)));font-size:var(--mantine-font-size-xs);position:absolute}.m_bc02ba3d{height:100%;width:calc(.1875rem * var(--mantine-scale));pointer-events:none;outline:none;position:absolute;inset-block:0;inset-inline:calc(50% - 1.5px) 0}.m_bc02ba3d:before{content:"";height:min(var(--thumb-size), calc(var(--slider-size) / 2));width:calc(.1875rem * var(--mantine-scale));position:absolute;top:0;right:0}:where([data-mantine-color-scheme=light]) .m_bc02ba3d:before{background-color:var(--mantine-color-gray-7)}:where([data-mantine-color-scheme=dark]) .m_bc02ba3d:before{background-color:var(--mantine-color-dark-1)}.m_bb8e875b{font-size:var(--mantine-font-size-xs)}.m_89ab340[data-resizing]{--app-shell-transition-duration:0s!important}.m_89ab340[data-disabled]{--app-shell-header-offset:0rem!important;--app-shell-navbar-offset:0rem!important;--app-shell-aside-offset:0rem!important;--app-shell-footer-offset:0rem!important}.m_89ab340[data-mode=static]{grid-template-columns:var(--app-shell-navbar-width,0) 1fr var(--app-shell-aside-width,0);grid-template-rows:auto 1fr auto;height:100%;display:grid;position:relative;overflow:auto}[data-mantine-color-scheme=light] .m_89ab340{--app-shell-border-color:var(--mantine-color-gray-3)}[data-mantine-color-scheme=dark] .m_89ab340{--app-shell-border-color:var(--mantine-color-dark-4)}.m_45252eee,.m_9cdde9a,.m_3b16f56b,.m_8983817,.m_3840c879{transition-duration:var(--app-shell-transition-duration);transition-timing-function:var(--app-shell-transition-timing-function)}.m_45252eee,.m_9cdde9a{top:var(--app-shell-header-offset,0rem);height:calc(100dvh - var(--app-shell-header-offset,0rem) - var(--app-shell-footer-offset,0rem));background-color:var(--mantine-color-body);flex-direction:column;transition-property:transform,top,height;display:flex;position:fixed}:where([data-mode=static]) .m_45252eee,:where([data-mode=static]) .m_9cdde9a{position:var(--app-shell-navbar-position,fixed);grid-row:var(--app-shell-navbar-grid-row,auto);height:100%}:where([data-layout=alt]) .m_45252eee,:where([data-layout=alt]) .m_9cdde9a{height:100dvh;top:0}:where([data-mode=static][data-layout=alt]) .m_45252eee,:where([data-mode=static][data-layout=alt]) .m_9cdde9a{grid-row:1/-1;height:100%}.m_45252eee{width:var(--app-shell-navbar-width);transform:var(--app-shell-navbar-transform);z-index:var(--app-shell-navbar-z-index);transition-property:transform,top,height;inset-inline-start:0}:where([data-mode=static]) .m_45252eee{grid-column:var(--app-shell-navbar-grid-column,auto);display:var(--app-shell-navbar-display,flex)}:where([dir=rtl]) .m_45252eee{transform:var(--app-shell-navbar-transform-rtl)}.m_45252eee:where([data-with-border]){border-inline-end:1px solid var(--app-shell-border-color)}.m_9cdde9a{width:var(--app-shell-aside-width);transform:var(--app-shell-aside-transform);z-index:var(--app-shell-aside-z-index);inset-inline-end:0}:where([data-mode=static]) .m_9cdde9a{position:var(--app-shell-aside-position,fixed);grid-column:var(--app-shell-aside-grid-column,auto);grid-row:var(--app-shell-aside-grid-row,auto);display:var(--app-shell-aside-display,flex)}:where([dir=rtl]) .m_9cdde9a{transform:var(--app-shell-aside-transform-rtl)}.m_9cdde9a:where([data-with-border]){border-inline-start:1px solid var(--app-shell-border-color)}:where([data-mode=static][data-layout=alt]) .m_9cdde9a{grid-row:1/-1}:where([data-scroll-locked]) .m_9cdde9a{visibility:var(--app-shell-aside-scroll-locked-visibility)}.m_8983817{padding-inline-start:calc(var(--app-shell-navbar-offset,0rem) + var(--app-shell-padding));padding-inline-end:calc(var(--app-shell-aside-offset,0rem) + var(--app-shell-padding));padding-top:calc(var(--app-shell-header-offset,0rem) + var(--app-shell-padding));padding-bottom:calc(var(--app-shell-footer-offset,0rem) + var(--app-shell-padding));min-height:100dvh;transition-property:padding}:where([data-mode=static]) .m_8983817{padding-inline-start:var(--app-shell-padding);padding-inline-end:var(--app-shell-padding);padding-top:var(--app-shell-padding);padding-bottom:var(--app-shell-padding);grid-column:var(--app-shell-main-column-start,1) / var(--app-shell-main-column-end,-1);grid-row:var(--app-shell-main-grid-row,2);min-height:auto}.m_3b16f56b,.m_3840c879{background-color:var(--mantine-color-body);transition-property:transform,margin-inline-start,margin-inline-end;position:fixed;inset-inline:0}:where([data-mode=static]) .m_3b16f56b,:where([data-mode=static]) .m_3840c879{position:var(--app-shell-header-position,fixed);grid-column:var(--app-shell-header-grid-column,auto)}:where([data-layout=alt]) .m_3b16f56b,:where([data-layout=alt]) .m_3840c879{margin-inline-start:var(--app-shell-navbar-offset,0rem);margin-inline-end:var(--app-shell-aside-offset,0rem)}:where([data-mode=static][data-layout=alt]) .m_3b16f56b,:where([data-mode=static][data-layout=alt]) .m_3840c879{grid-column:var(--app-shell-main-column-start,1) / var(--app-shell-main-column-end,-1);margin-inline:0}.m_3b16f56b{height:var(--app-shell-header-height);background-color:var(--mantine-color-body);transform:var(--app-shell-header-transform);z-index:var(--app-shell-header-z-index);top:0}:where([data-mode=static]) .m_3b16f56b{grid-row:var(--app-shell-header-grid-row,auto)}.m_3b16f56b:where([data-with-border]){border-bottom:1px solid var(--app-shell-border-color)}.m_3840c879{height:calc(var(--app-shell-footer-height) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);transform:var(--app-shell-footer-transform);z-index:var(--app-shell-footer-z-index);bottom:0}:where([data-mode=static]) .m_3840c879{position:var(--app-shell-footer-position,fixed);grid-column:var(--app-shell-footer-grid-column,auto);grid-row:var(--app-shell-footer-grid-row,auto)}:where([data-mode=static][data-layout=alt]) .m_3840c879{grid-column:var(--app-shell-main-column-start,1) / var(--app-shell-main-column-end,-1)}.m_3840c879:where([data-with-border]){border-top:1px solid var(--app-shell-border-color)}.m_6dcfc7c7{flex-grow:0}.m_6dcfc7c7:where([data-grow]){flex-grow:1}.m_71ac47fc{--ar-ratio:1;max-width:100%}.m_71ac47fc>:where(:not(style)){aspect-ratio:var(--ar-ratio);width:100%}.m_71ac47fc>:where(img,video){object-fit:cover}.m_88b62a41{--combobox-padding:calc(.25rem * var(--mantine-scale));padding:var(--combobox-padding)}.m_88b62a41:has([data-mantine-scrollbar]) .m_985517d8{max-width:calc(100% + var(--combobox-padding))}.m_88b62a41[data-composed]{padding-inline-end:0}.m_88b62a41[data-hidden]{display:none}.m_88b62a41[data-floating-height=viewport]:not([data-hidden]){--combobox-floating-options-max-height:calc(var(--combobox-floating-max-height,100vh) - var(--combobox-padding) * 2);max-height:var(--combobox-floating-max-height,none);overflow:hidden}.m_88b62a41,.m_b2821a6e{--combobox-option-padding-xs:calc(.25rem * var(--mantine-scale)) calc(.5rem * var(--mantine-scale));--combobox-option-padding-sm:calc(.375rem * var(--mantine-scale)) calc(.625rem * var(--mantine-scale));--combobox-option-padding-md:calc(.5rem * var(--mantine-scale)) calc(.75rem * var(--mantine-scale));--combobox-option-padding-lg:calc(.625rem * var(--mantine-scale)) calc(1rem * var(--mantine-scale));--combobox-option-padding-xl:calc(.875rem * var(--mantine-scale)) calc(1.25rem * var(--mantine-scale));--combobox-option-padding:var(--combobox-option-padding-sm)}.m_92253aa5{padding:var(--combobox-option-padding);font-size:var(--combobox-option-fz,var(--mantine-font-size-sm));border-radius:var(--mantine-radius-default);color:inherit;cursor:pointer;overflow-wrap:break-word;background-color:#0000}.m_92253aa5:where([data-combobox-selected]){background-color:var(--mantine-primary-color-filled);color:var(--mantine-color-white)}.m_92253aa5:where([data-combobox-disabled]){cursor:not-allowed;opacity:.35}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_92253aa5:hover:where(:not([data-combobox-selected],[data-combobox-disabled])){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_92253aa5:hover:where(:not([data-combobox-selected],[data-combobox-disabled])){background-color:var(--mantine-color-dark-7)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_92253aa5:active:where(:not([data-combobox-selected],[data-combobox-disabled])){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_92253aa5:active:where(:not([data-combobox-selected],[data-combobox-disabled])){background-color:var(--mantine-color-dark-7)}}.m_985517d8{margin-inline:calc(var(--combobox-padding) * -1);margin-top:calc(var(--combobox-padding) * -1);width:calc(100% + var(--combobox-padding) * 2);border-top-width:0;margin-bottom:var(--combobox-padding);border-inline-width:0;border-end-end-radius:0;border-end-start-radius:0;position:relative}:where([data-mantine-color-scheme=light]) .m_985517d8,:where([data-mantine-color-scheme=light]) .m_985517d8:focus{border-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_985517d8,:where([data-mantine-color-scheme=dark]) .m_985517d8:focus{border-color:var(--mantine-color-dark-4)}:where([data-mantine-color-scheme=light]) .m_985517d8{background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_985517d8{background-color:var(--mantine-color-dark-7)}.m_2530cd1d{font-size:var(--combobox-option-fz,var(--mantine-font-size-sm));text-align:center;padding:var(--combobox-option-padding);color:var(--mantine-color-dimmed)}.m_858f94bd,.m_82b967cb{font-size:var(--combobox-option-fz,var(--mantine-font-size-sm));margin-inline:calc(var(--combobox-padding) * -1);padding:var(--combobox-option-padding);border:0 solid #0000}:where([data-mantine-color-scheme=light]) .m_858f94bd,:where([data-mantine-color-scheme=light]) .m_82b967cb{border-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_858f94bd,:where([data-mantine-color-scheme=dark]) .m_82b967cb{border-color:var(--mantine-color-dark-4)}.m_82b967cb{border-top-width:calc(.0625rem * var(--mantine-scale));margin-top:var(--combobox-padding);margin-bottom:calc(var(--combobox-padding) * -1)}.m_858f94bd{border-bottom-width:calc(.0625rem * var(--mantine-scale));margin-bottom:var(--combobox-padding);margin-top:calc(var(--combobox-padding) * -1)}.m_254f3e4f:has(.m_2bb2e9e5:only-child){display:none}.m_2bb2e9e5{color:var(--mantine-color-dimmed);font-size:calc(var(--combobox-option-fz,var(--mantine-font-size-sm)) * .85);padding:var(--combobox-option-padding);font-weight:var(--mantine-font-weight-medium);align-items:center;display:flex;position:relative}.m_2bb2e9e5:after{content:"";height:calc(.0625rem * var(--mantine-scale));flex:1;margin-inline-start:var(--mantine-spacing-xs);inset-inline:0}:where([data-mantine-color-scheme=light]) .m_2bb2e9e5:after{background-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_2bb2e9e5:after{background-color:var(--mantine-color-dark-4)}.m_2bb2e9e5:only-child{display:none}.m_2943220b{--combobox-chevron-size-xs:calc(.875rem * var(--mantine-scale));--combobox-chevron-size-sm:calc(1.125rem * var(--mantine-scale));--combobox-chevron-size-md:calc(1.25rem * var(--mantine-scale));--combobox-chevron-size-lg:calc(1.5rem * var(--mantine-scale));--combobox-chevron-size-xl:calc(1.75rem * var(--mantine-scale));--combobox-chevron-size:var(--combobox-chevron-size-sm)}:where([data-mantine-color-scheme=light]) .m_2943220b{--_combobox-chevron-color:var(--combobox-chevron-color,var(--mantine-color-gray-6))}:where([data-mantine-color-scheme=dark]) .m_2943220b{--_combobox-chevron-color:var(--combobox-chevron-color,var(--mantine-color-dark-3))}.m_2943220b{width:var(--combobox-chevron-size);height:var(--combobox-chevron-size);color:var(--_combobox-chevron-color)}.m_2943220b:where([data-error]){color:var(--combobox-chevron-color,var(--mantine-color-error))}.m_390b5f4{align-items:center;gap:calc(.5rem * var(--mantine-scale));display:flex}.m_390b5f4:where([data-reverse]){justify-content:space-between}.m_8ee53fc2{opacity:.4;width:.8em;min-width:.8em;height:.8em}:where([data-combobox-selected]) .m_8ee53fc2{opacity:1}.m_a530ee0a{width:.8em;min-width:.8em;height:.8em}.m_5f75b09e{--label-lh-xs:calc(1rem * var(--mantine-scale));--label-lh-sm:calc(1.25rem * var(--mantine-scale));--label-lh-md:calc(1.5rem * var(--mantine-scale));--label-lh-lg:calc(1.875rem * var(--mantine-scale));--label-lh-xl:calc(2.25rem * var(--mantine-scale));--label-lh:var(--label-lh-sm)}.m_5f75b09e[data-label-position=left]{--label-order:1;--label-offset-end:var(--mantine-spacing-sm);--label-offset-start:0}.m_5f75b09e[data-label-position=right]{--label-order:2;--label-offset-end:0;--label-offset-start:var(--mantine-spacing-sm)}.m_5f6e695e{-webkit-tap-highlight-color:transparent;display:flex}.m_d3ea56bb{--label-cursor:var(--mantine-cursor-type);-webkit-tap-highlight-color:transparent;font-size:var(--label-fz,var(--mantine-font-size-sm));line-height:var(--label-lh);cursor:var(--label-cursor);flex-direction:column;order:var(--label-order);display:inline-flex}fieldset:disabled .m_d3ea56bb,.m_d3ea56bb[data-disabled]{--label-cursor:not-allowed}.m_8ee546b8{cursor:var(--label-cursor);color:inherit;padding-inline-start:var(--label-offset-start);padding-inline-end:var(--label-offset-end)}fieldset:disabled .m_8ee546b8,.m_8ee546b8:where([data-disabled]){color:var(--mantine-color-disabled-color)}.m_328f68c0{margin-top:calc(var(--mantine-spacing-xs) / 2);cursor:default;padding-inline-start:var(--label-offset-start);padding-inline-end:var(--label-offset-end)}.m_8e8a99cc{margin-top:calc(var(--mantine-spacing-xs) / 2);padding-inline-start:var(--label-offset-start);padding-inline-end:var(--label-offset-end)}.m_26775b0a{--card-radius:var(--mantine-radius-default);border-radius:var(--card-radius);cursor:pointer;width:100%;display:block}.m_26775b0a :where(*){cursor:inherit}.m_26775b0a:where([data-with-border]){border:calc(.0625rem * var(--mantine-scale)) solid transparent}:where([data-mantine-color-scheme=light]) .m_26775b0a:where([data-with-border]){border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_26775b0a:where([data-with-border]){border-color:var(--mantine-color-dark-4)}.m_5e5256ee{--checkbox-size-xs:calc(1rem * var(--mantine-scale));--checkbox-size-sm:calc(1.25rem * var(--mantine-scale));--checkbox-size-md:calc(1.5rem * var(--mantine-scale));--checkbox-size-lg:calc(1.875rem * var(--mantine-scale));--checkbox-size-xl:calc(2.25rem * var(--mantine-scale));--checkbox-size:var(--checkbox-size-sm);--checkbox-color:var(--mantine-primary-color-filled)}.m_5e5256ee:where([data-variant=filled]){--checkbox-icon-color:var(--mantine-color-white)}.m_5e5256ee:where([data-variant=outline]){--checkbox-icon-color:var(--checkbox-color)}.m_5e5256ee{border:calc(.0625rem * var(--mantine-scale)) solid transparent;width:var(--checkbox-size);min-width:var(--checkbox-size);height:var(--checkbox-size);min-height:var(--checkbox-size);border-radius:var(--checkbox-radius,var(--mantine-radius-default));cursor:var(--mantine-cursor-type);-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;transition:border-color .1s,background-color .1s;display:flex;position:relative}:where([data-mantine-color-scheme=light]) .m_5e5256ee{background-color:var(--mantine-color-white);border-color:var(--mantine-color-gray-4)}:where([data-mantine-color-scheme=dark]) .m_5e5256ee{background-color:var(--mantine-color-dark-6);border-color:var(--mantine-color-dark-4)}.m_5e5256ee[data-indeterminate],.m_5e5256ee[data-checked]{background-color:var(--checkbox-color);border-color:var(--checkbox-color)}.m_5e5256ee[data-indeterminate]>.m_1b1c543a,.m_5e5256ee[data-checked]>.m_1b1c543a{opacity:1;color:var(--checkbox-icon-color);transform:none}.m_5e5256ee[data-disabled]{cursor:not-allowed;border-color:var(--mantine-color-disabled-border);background-color:var(--mantine-color-disabled)}[data-mantine-color-scheme=light] .m_5e5256ee[data-disabled][data-checked]>.m_1b1c543a{color:var(--mantine-color-gray-5)}[data-mantine-color-scheme=dark] .m_5e5256ee[data-disabled][data-checked]>.m_1b1c543a{color:var(--mantine-color-dark-3)}.m_76e20374[data-indeterminate]:not([data-disabled]),.m_76e20374[data-checked]:not([data-disabled]){border-color:var(--checkbox-color);background-color:#0000}.m_76e20374[data-indeterminate]:not([data-disabled])>.m_1b1c543a,.m_76e20374[data-checked]:not([data-disabled])>.m_1b1c543a{color:var(--checkbox-icon-color);opacity:1;transform:none}.m_1b1c543a{color:#0000;pointer-events:none;width:60%;transform:translateY(calc(.3125rem * var(--mantine-scale))) scale(.5);opacity:1;transition:transform .1s,opacity .1s;display:block}.m_bf2d988c{--checkbox-size-xs:calc(1rem * var(--mantine-scale));--checkbox-size-sm:calc(1.25rem * var(--mantine-scale));--checkbox-size-md:calc(1.5rem * var(--mantine-scale));--checkbox-size-lg:calc(1.875rem * var(--mantine-scale));--checkbox-size-xl:calc(2.25rem * var(--mantine-scale));--checkbox-size:var(--checkbox-size-sm);--checkbox-color:var(--mantine-primary-color-filled)}.m_bf2d988c:where([data-variant=filled]){--checkbox-icon-color:var(--mantine-color-white)}.m_bf2d988c:where([data-variant=outline]){--checkbox-icon-color:var(--checkbox-color)}.m_26062bec{width:var(--checkbox-size);height:var(--checkbox-size);order:1;position:relative}.m_26062bec:where([data-label-position=left]){order:2}.m_26063560{appearance:none;border:calc(.0625rem * var(--mantine-scale)) solid transparent;width:var(--checkbox-size);height:var(--checkbox-size);border-radius:var(--checkbox-radius,var(--mantine-radius-default));cursor:var(--mantine-cursor-type);-webkit-tap-highlight-color:transparent;margin:0;padding:0;transition:border-color .1s,background-color .1s;display:block}:where([data-mantine-color-scheme=light]) .m_26063560{background-color:var(--mantine-color-white);border-color:var(--mantine-color-gray-4)}:where([data-mantine-color-scheme=dark]) .m_26063560{background-color:var(--mantine-color-dark-6);border-color:var(--mantine-color-dark-4)}.m_26063560:where([data-with-error-styles][data-error]){border-color:var(--mantine-color-error)}.m_26063560[data-indeterminate],.m_26063560:checked{background-color:var(--checkbox-color);border-color:var(--checkbox-color)}.m_26063560[data-indeterminate]+.m_bf295423,.m_26063560:checked+.m_bf295423{opacity:1;transform:none}.m_26063560:disabled{cursor:not-allowed;border-color:var(--mantine-color-disabled-border);background-color:var(--mantine-color-disabled)}.m_26063560:disabled+.m_bf295423{color:var(--mantine-color-disabled-color)}.m_215c4542+.m_bf295423{color:var(--checkbox-color)}.m_215c4542[data-indeterminate]:not(:disabled),.m_215c4542:checked:not(:disabled){border-color:var(--checkbox-color);background-color:#0000}.m_215c4542[data-indeterminate]:not(:disabled)+.m_bf295423,.m_215c4542:checked:not(:disabled)+.m_bf295423{color:var(--checkbox-icon-color);opacity:1;transform:none}.m_bf295423{width:60%;color:var(--checkbox-icon-color);pointer-events:none;transform:translateY(calc(.3125rem * var(--mantine-scale))) scale(.5);opacity:0;margin:auto;transition:transform .1s,opacity .1s;position:absolute;inset:0}.m_11def92b{--ag-spacing:var(--mantine-spacing-sm);--ag-offset:calc(var(--ag-spacing) * -1);padding-inline-start:var(--ag-spacing);display:flex}.m_f85678b6{--avatar-size-xs:calc(1rem * var(--mantine-scale));--avatar-size-sm:calc(1.625rem * var(--mantine-scale));--avatar-size-md:calc(2.375rem * var(--mantine-scale));--avatar-size-lg:calc(3.5rem * var(--mantine-scale));--avatar-size-xl:calc(5.25rem * var(--mantine-scale));--avatar-size:var(--avatar-size-md);--avatar-radius:calc(62.5rem * var(--mantine-scale));--avatar-bg:var(--mantine-color-gray-light);--avatar-bd:calc(.0625rem * var(--mantine-scale)) solid transparent;--avatar-color:var(--mantine-color-gray-light-color);--avatar-placeholder-fz:calc(var(--avatar-size) / 2.5);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;border-radius:var(--avatar-radius);width:var(--avatar-size);height:var(--avatar-size);min-width:var(--avatar-size);padding:0;text-decoration:none;display:block;position:relative;overflow:hidden}.m_f85678b6:where([data-within-group]){border:2px solid var(--mantine-color-body);background:var(--mantine-color-body);margin-inline-start:var(--ag-offset)}.m_11f8ac07{object-fit:cover;width:100%;height:100%;display:block}.m_104cd71f{font-weight:var(--mantine-font-weight-bold);-webkit-user-select:none;user-select:none;border-radius:var(--avatar-radius);width:100%;height:100%;font-size:var(--avatar-placeholder-fz);background:var(--avatar-bg);border:var(--avatar-bd);color:var(--avatar-color);justify-content:center;align-items:center;display:flex}.m_104cd71f>[data-avatar-placeholder-icon]{width:70%;height:70%}.m_2ce0de02{border-radius:var(--bi-radius,0);background-position:50%;background-size:cover;border:0;width:100%;text-decoration:none;display:block}.m_347db0ec{--badge-height-xs:calc(1rem * var(--mantine-scale));--badge-height-sm:calc(1.125rem * var(--mantine-scale));--badge-height-md:calc(1.25rem * var(--mantine-scale));--badge-height-lg:calc(1.625rem * var(--mantine-scale));--badge-height-xl:calc(2rem * var(--mantine-scale));--badge-fz-xs:calc(.5625rem * var(--mantine-scale));--badge-fz-sm:calc(.625rem * var(--mantine-scale));--badge-fz-md:calc(.6875rem * var(--mantine-scale));--badge-fz-lg:calc(.8125rem * var(--mantine-scale));--badge-fz-xl:calc(1rem * var(--mantine-scale));--badge-padding-x-xs:calc(.375rem * var(--mantine-scale));--badge-padding-x-sm:calc(.5rem * var(--mantine-scale));--badge-padding-x-md:calc(.625rem * var(--mantine-scale));--badge-padding-x-lg:calc(.75rem * var(--mantine-scale));--badge-padding-x-xl:calc(1rem * var(--mantine-scale));--badge-height:var(--badge-height-md);--badge-fz:var(--badge-fz-md);--badge-padding-x:var(--badge-padding-x-md);--badge-radius:calc(62.5rem * var(--mantine-scale));--badge-lh:calc(var(--badge-height) - calc(.125rem * var(--mantine-scale)));--badge-color:var(--mantine-color-white);--badge-bg:var(--mantine-primary-color-filled);--badge-border-width:calc(.0625rem * var(--mantine-scale));--badge-bd:var(--badge-border-width) solid transparent;-webkit-tap-highlight-color:transparent;font-size:var(--badge-fz);border-radius:var(--badge-radius);height:var(--badge-height);line-height:var(--badge-lh);padding:0 var(--badge-padding-x);text-transform:uppercase;width:fit-content;font-weight:var(--mantine-font-weight-bold);letter-spacing:calc(.015625rem * var(--mantine-scale));cursor:default;text-overflow:ellipsis;color:var(--badge-color);background:var(--badge-bg);border:var(--badge-bd);justify-content:center;align-items:center;text-decoration:none;display:inline-grid;overflow:hidden}.m_347db0ec:where([data-with-left-section],[data-variant=dot]){grid-template-columns:auto 1fr}.m_347db0ec:where([data-with-right-section]){grid-template-columns:1fr auto}.m_347db0ec:where([data-with-left-section][data-with-right-section],[data-variant=dot][data-with-right-section]){grid-template-columns:auto 1fr auto}.m_347db0ec:where([data-block]){width:100%;display:flex}.m_347db0ec:where([data-circle]){padding-inline:calc(.125rem * var(--mantine-scale));width:var(--badge-height);display:flex}.m_fbd81e3d{--badge-dot-size:calc(var(--badge-height) / 3.4)}:where([data-mantine-color-scheme=light]) .m_fbd81e3d{background-color:var(--mantine-color-white);border-color:var(--mantine-color-gray-4);color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_fbd81e3d{background-color:var(--mantine-color-dark-5);border-color:var(--mantine-color-dark-5);color:var(--mantine-color-white)}.m_fbd81e3d:before{content:"";width:var(--badge-dot-size);height:var(--badge-dot-size);border-radius:var(--badge-dot-size);background-color:var(--badge-dot-color);margin-inline-end:var(--badge-dot-size);display:block}.m_5add502a{white-space:nowrap;text-overflow:ellipsis;text-align:center;cursor:inherit;overflow:hidden}.m_91fdda9b{--badge-section-margin:calc(var(--mantine-spacing-xs) / 2);max-height:calc(var(--badge-height) - var(--badge-border-width) * 2);justify-content:center;align-items:center;display:inline-flex}.m_91fdda9b:where([data-position=left]){margin-inline-end:var(--badge-section-margin)}.m_91fdda9b:where([data-position=right]){margin-inline-start:var(--badge-section-margin)}.m_ddec01c0{--blockquote-border:3px solid var(--bq-bd);text-wrap:var(--bq-text-wrap,var(--mantine-text-wrap));border-inline-start:var(--blockquote-border);padding:var(--mantine-spacing-xl) calc(2.375rem * var(--mantine-scale));border-start-end-radius:var(--bq-radius);border-end-end-radius:var(--bq-radius);margin:0;position:relative}:where([data-mantine-color-scheme=light]) .m_ddec01c0{background-color:var(--bq-bg-light)}:where([data-mantine-color-scheme=dark]) .m_ddec01c0{background-color:var(--bq-bg-dark)}.m_dde7bd57{--blockquote-icon-offset:calc(var(--bq-icon-size) / -2);color:var(--bq-bd);background-color:var(--mantine-color-body);top:var(--blockquote-icon-offset);width:var(--bq-icon-size);height:var(--bq-icon-size);border-radius:var(--bq-icon-size);justify-content:center;align-items:center;display:flex;position:absolute;inset-inline-start:var(--blockquote-icon-offset)}.m_dde51a35{margin-top:var(--mantine-spacing-md);opacity:.6;font-size:85%;display:block}.m_8b3717df{flex-wrap:wrap;align-items:center;display:flex}.m_f678d540{white-space:nowrap;-webkit-tap-highlight-color:transparent;line-height:1}.m_3b8f2208{margin-inline:var(--bc-separator-margin,var(--mantine-spacing-xs));justify-content:center;align-items:center;line-height:1;display:flex}:where([data-mantine-color-scheme=light]) .m_3b8f2208{color:var(--mantine-color-gray-7)}:where([data-mantine-color-scheme=dark]) .m_3b8f2208{color:var(--mantine-color-dark-2)}.m_fea6bf1a{--burger-size-xs:calc(.75rem * var(--mantine-scale));--burger-size-sm:calc(1.125rem * var(--mantine-scale));--burger-size-md:calc(1.5rem * var(--mantine-scale));--burger-size-lg:calc(2.125rem * var(--mantine-scale));--burger-size-xl:calc(2.625rem * var(--mantine-scale));--burger-size:var(--burger-size-md);--burger-line-size:calc(var(--burger-size) / 12);width:calc(var(--burger-size) + var(--mantine-spacing-xs));height:calc(var(--burger-size) + var(--mantine-spacing-xs));padding:calc(var(--mantine-spacing-xs) / 2);cursor:pointer}:where([data-mantine-color-scheme=light]) .m_fea6bf1a{--burger-color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_fea6bf1a{--burger-color:var(--mantine-color-white)}.m_d4fb9cad{-webkit-user-select:none;user-select:none;position:relative}.m_d4fb9cad,.m_d4fb9cad:before,.m_d4fb9cad:after{width:var(--burger-size);height:var(--burger-line-size);background-color:var(--burger-color);outline:calc(.0625rem * var(--mantine-scale)) solid transparent;transition-property:background-color,transform;transition-duration:var(--burger-transition-duration,.3s);transition-timing-function:var(--burger-transition-timing-function,ease);display:block}.m_d4fb9cad:before,.m_d4fb9cad:after{content:"";position:absolute;inset-inline-start:0}.m_d4fb9cad:before{top:calc(var(--burger-size) / -3)}.m_d4fb9cad:after{top:calc(var(--burger-size) / 3)}.m_d4fb9cad[data-opened]{background-color:#0000}.m_d4fb9cad[data-opened]:before{transform:translateY(calc(var(--burger-size) / 3)) rotate(45deg)}.m_d4fb9cad[data-opened]:after{transform:translateY(calc(var(--burger-size) / -3)) rotate(-45deg)}.m_77c9d27d{--button-height-xs:calc(1.875rem * var(--mantine-scale));--button-height-sm:calc(2.25rem * var(--mantine-scale));--button-height-md:calc(2.625rem * var(--mantine-scale));--button-height-lg:calc(3.125rem * var(--mantine-scale));--button-height-xl:calc(3.75rem * var(--mantine-scale));--button-height-compact-xs:calc(1.375rem * var(--mantine-scale));--button-height-compact-sm:calc(1.625rem * var(--mantine-scale));--button-height-compact-md:calc(1.875rem * var(--mantine-scale));--button-height-compact-lg:calc(2.125rem * var(--mantine-scale));--button-height-compact-xl:calc(2.5rem * var(--mantine-scale));--button-padding-x-xs:calc(.875rem * var(--mantine-scale));--button-padding-x-sm:calc(1.125rem * var(--mantine-scale));--button-padding-x-md:calc(1.375rem * var(--mantine-scale));--button-padding-x-lg:calc(1.625rem * var(--mantine-scale));--button-padding-x-xl:calc(2rem * var(--mantine-scale));--button-padding-x-compact-xs:calc(.4375rem * var(--mantine-scale));--button-padding-x-compact-sm:calc(.5rem * var(--mantine-scale));--button-padding-x-compact-md:calc(.625rem * var(--mantine-scale));--button-padding-x-compact-lg:calc(.75rem * var(--mantine-scale));--button-padding-x-compact-xl:calc(.875rem * var(--mantine-scale));--button-height:var(--button-height-sm);--button-padding-x:var(--button-padding-x-sm);--button-color:var(--mantine-color-white);-webkit-user-select:none;user-select:none;font-weight:var(--mantine-font-weight-medium);text-align:center;cursor:pointer;border-radius:var(--button-radius,var(--mantine-radius-default));width:auto;line-height:1;font-size:var(--button-fz,var(--mantine-font-size-sm));background:var(--button-bg,var(--mantine-primary-color-filled));border:var(--button-bd,calc(.0625rem * var(--mantine-scale)) solid transparent);color:var(--button-color,var(--mantine-color-white));height:var(--button-height,var(--button-height-sm));padding-inline:var(--button-padding-x,var(--button-padding-x-sm));vertical-align:middle;display:inline-block;position:relative;overflow:hidden}.m_77c9d27d:where([data-block]){width:100%;display:block}.m_77c9d27d:where([data-with-left-section]){padding-inline-start:calc(var(--button-padding-x) / 1.5)}.m_77c9d27d:where([data-with-right-section]){padding-inline-end:calc(var(--button-padding-x) / 1.5)}.m_77c9d27d:where(:disabled:not([data-loading]),[data-disabled]:not([data-loading])){cursor:not-allowed;border:calc(.0625rem * var(--mantine-scale)) solid transparent;color:var(--mantine-color-disabled-color);background:var(--mantine-color-disabled);transform:none}.m_77c9d27d:before{content:"";pointer-events:none;inset:calc(-.0625rem * var(--mantine-scale));border-radius:var(--button-radius,var(--mantine-radius-default));opacity:0;filter:blur(12px);transition:transform .15s,opacity .1s;position:absolute;transform:translateY(-100%)}:where([data-mantine-color-scheme=light]) .m_77c9d27d:before{background-color:#ffffff26}:where([data-mantine-color-scheme=dark]) .m_77c9d27d:before{background-color:#00000026}.m_77c9d27d:where([data-loading]){cursor:not-allowed;transform:none}.m_77c9d27d:where([data-loading]):before{opacity:1;transform:translateY(0)}.m_77c9d27d:where([data-loading]) .m_80f1301b{opacity:0;transform:translateY(100%)}@media (hover:hover){.m_77c9d27d:hover:where(:not([data-loading],:disabled,[data-disabled])){background-color:var(--button-hover,var(--mantine-primary-color-filled-hover));color:var(--button-hover-color,var(--button-color))}}@media (hover:none){.m_77c9d27d:active:where(:not([data-loading],:disabled,[data-disabled])){background-color:var(--button-hover,var(--mantine-primary-color-filled-hover));color:var(--button-hover-color,var(--button-color))}}.m_80f1301b{align-items:center;justify-content:var(--button-justify,center);height:100%;transition:transform .15s,opacity .1s;display:flex;overflow:visible}.m_811560b9{white-space:nowrap;opacity:1;text-box-trim:trim-both;text-box-edge:cap alphabetic;align-items:center;height:100%;display:flex;overflow:hidden}.m_811560b9:where([data-loading]){opacity:.2}.m_a74036a{align-items:center;display:flex}.m_a74036a:where([data-position=left]){margin-inline-end:var(--mantine-spacing-xs)}.m_a74036a:where([data-position=right]){margin-inline-start:var(--mantine-spacing-xs)}.m_a25b86ee{position:absolute;top:50%;left:50%}.m_80d6d844{--button-border-width:calc(.0625rem * var(--mantine-scale));display:flex}.m_80d6d844 :where(.m_77c9d27d):focus{z-index:1;position:relative}.m_80d6d844[data-orientation=horizontal]{flex-direction:row}.m_80d6d844[data-orientation=horizontal] .m_77c9d27d:not(:only-child):first-child,.m_80d6d844[data-orientation=horizontal] .m_70be2a01:not(:only-child):first-child{border-inline-end-width:calc(var(--button-border-width) / 2);border-start-end-radius:0;border-end-end-radius:0}.m_80d6d844[data-orientation=horizontal] .m_77c9d27d:not(:only-child):last-child,.m_80d6d844[data-orientation=horizontal] .m_70be2a01:not(:only-child):last-child{border-inline-start-width:calc(var(--button-border-width) / 2);border-start-start-radius:0;border-end-start-radius:0}.m_80d6d844[data-orientation=horizontal] .m_77c9d27d:not(:only-child):not(:first-child):not(:last-child),.m_80d6d844[data-orientation=horizontal] .m_70be2a01:not(:only-child):not(:first-child):not(:last-child){border-inline-width:calc(var(--button-border-width) / 2);border-radius:0}.m_80d6d844[data-orientation=vertical]{flex-direction:column}.m_80d6d844[data-orientation=vertical] .m_77c9d27d:not(:only-child):first-child,.m_80d6d844[data-orientation=vertical] .m_70be2a01:not(:only-child):first-child{border-bottom-width:calc(var(--button-border-width) / 2);border-end-end-radius:0;border-end-start-radius:0}.m_80d6d844[data-orientation=vertical] .m_77c9d27d:not(:only-child):last-child,.m_80d6d844[data-orientation=vertical] .m_70be2a01:not(:only-child):last-child{border-top-width:calc(var(--button-border-width) / 2);border-start-start-radius:0;border-start-end-radius:0}.m_80d6d844[data-orientation=vertical] .m_77c9d27d:not(:only-child):not(:first-child):not(:last-child),.m_80d6d844[data-orientation=vertical] .m_70be2a01:not(:only-child):not(:first-child):not(:last-child){border-bottom-width:calc(var(--button-border-width) / 2);border-top-width:calc(var(--button-border-width) / 2);border-radius:0}.m_70be2a01{--section-height-xs:calc(1.875rem * var(--mantine-scale));--section-height-sm:calc(2.25rem * var(--mantine-scale));--section-height-md:calc(2.625rem * var(--mantine-scale));--section-height-lg:calc(3.125rem * var(--mantine-scale));--section-height-xl:calc(3.75rem * var(--mantine-scale));--section-height-compact-xs:calc(1.375rem * var(--mantine-scale));--section-height-compact-sm:calc(1.625rem * var(--mantine-scale));--section-height-compact-md:calc(1.875rem * var(--mantine-scale));--section-height-compact-lg:calc(2.125rem * var(--mantine-scale));--section-height-compact-xl:calc(2.5rem * var(--mantine-scale));--section-padding-x-xs:calc(.875rem * var(--mantine-scale));--section-padding-x-sm:calc(1.125rem * var(--mantine-scale));--section-padding-x-md:calc(1.375rem * var(--mantine-scale));--section-padding-x-lg:calc(1.625rem * var(--mantine-scale));--section-padding-x-xl:calc(2rem * var(--mantine-scale));--section-padding-x-compact-xs:calc(.4375rem * var(--mantine-scale));--section-padding-x-compact-sm:calc(.5rem * var(--mantine-scale));--section-padding-x-compact-md:calc(.625rem * var(--mantine-scale));--section-padding-x-compact-lg:calc(.75rem * var(--mantine-scale));--section-padding-x-compact-xl:calc(.875rem * var(--mantine-scale));--section-height:var(--section-height-sm);--section-padding-x:var(--section-padding-x-sm);--section-color:var(--mantine-color-white);font-weight:var(--mantine-font-weight-medium);border-radius:var(--section-radius,var(--mantine-radius-default));width:auto;font-size:var(--section-fz,var(--mantine-font-size-sm));background:var(--section-bg,var(--mantine-primary-color-filled));border:var(--section-bd,calc(.0625rem * var(--mantine-scale)) solid transparent);color:var(--section-color,var(--mantine-color-white));height:var(--section-height,var(--section-height-sm));padding-inline:var(--section-padding-x,var(--section-padding-x-sm));vertical-align:middle;justify-content:center;align-items:center;line-height:1;display:inline-flex}.m_e615b15f{--card-padding:var(--mantine-spacing-md);padding:var(--card-padding);color:var(--mantine-color-text);display:flex;position:relative;overflow:hidden}.m_e615b15f:where([data-orientation=horizontal]){flex-direction:row}.m_e615b15f:where([data-orientation=vertical]){flex-direction:column}:where([data-mantine-color-scheme=light]) .m_e615b15f{background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_e615b15f{background-color:var(--mantine-color-dark-6)}.m_599a2148{margin-inline:calc(var(--card-padding) * -1);display:block}:where([data-mantine-color-scheme=light]) .m_599a2148{--border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_599a2148{--border-color:var(--mantine-color-dark-4)}.m_599a2148:where([data-orientation=vertical]):first-child{margin-top:calc(var(--card-padding) * -1);border-top:none!important}.m_599a2148:where([data-orientation=vertical]):last-child{margin-bottom:calc(var(--card-padding) * -1);border-bottom:none!important}.m_599a2148:where([data-orientation=vertical])[data-inherit-padding]{padding-inline:var(--card-padding)}.m_599a2148:where([data-orientation=vertical])[data-with-border]{border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color)}.m_599a2148:where([data-orientation=vertical])+.m_599a2148:where([data-orientation=vertical]){border-top:none!important}.m_599a2148:where([data-orientation=horizontal]){margin-block:calc(var(--card-padding) * -1);margin-inline:0}.m_599a2148:where([data-orientation=horizontal]):first-child{margin-inline-start:calc(var(--card-padding) * -1);border-inline-start:none!important}.m_599a2148:where([data-orientation=horizontal]):last-child{margin-inline-end:calc(var(--card-padding) * -1);border-inline-end:none!important}.m_599a2148:where([data-orientation=horizontal])[data-inherit-padding]{padding-block:var(--card-padding)}.m_599a2148:where([data-orientation=horizontal])[data-with-border]{border-inline-start:1px solid var(--border-color);border-inline-end:1px solid var(--border-color)}.m_599a2148:where([data-orientation=horizontal])+.m_599a2148:where([data-orientation=horizontal]){border-inline-start:none!important}.m_9a782f2c{--cascader-column-width:calc(12.5rem * var(--mantine-scale));flex-direction:row;align-items:stretch;display:flex}.m_4c5a03a5{width:var(--cascader-column-width);min-width:var(--cascader-column-width);border-inline-end:calc(.0625rem * var(--mantine-scale)) solid var(--popover-border-color,var(--mantine-color-default-border));flex-direction:column;display:flex}.m_4c5a03a5:where([data-last]){border-inline-end-color:#0000}.m_7f3ac6d2{padding:var(--combobox-padding);flex:1}.m_6b93b90{padding-inline:calc(var(--combobox-padding) / 2);color:var(--mantine-color-dimmed);cursor:pointer;border-inline-end:calc(.0625rem * var(--mantine-scale)) solid var(--popover-border-color,var(--mantine-color-default-border));justify-content:center;align-self:stretch;align-items:center;display:flex}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_6b93b90:hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_6b93b90:hover{background-color:var(--mantine-color-dark-7)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_6b93b90:active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_6b93b90:active{background-color:var(--mantine-color-dark-7)}}.m_6b93b90>svg{width:.9em;height:.9em;transform:rotate(90deg)}.m_6b93b90:where([data-position=start]){border-start-start-radius:var(--popover-radius,var(--mantine-radius-default));border-end-start-radius:var(--popover-radius,var(--mantine-radius-default))}.m_6b93b90:where([data-position=end]){border-inline-end-color:#0000;border-start-end-radius:var(--popover-radius,var(--mantine-radius-default));border-end-end-radius:var(--popover-radius,var(--mantine-radius-default))}.m_6b93b90:where([data-position=end])>svg,:where([dir=rtl]) .m_6b93b90>svg{transform:rotate(-90deg)}:where([dir=rtl]) .m_6b93b90:where([data-position=end])>svg{transform:rotate(90deg)}.m_791f687a{align-items:center;gap:var(--mantine-spacing-xs);width:100%;padding:var(--combobox-option-padding);font-size:var(--combobox-option-fz,var(--mantine-font-size-sm));border-radius:var(--combobox-option-radius,var(--mantine-radius-default));color:var(--mantine-color-text);cursor:pointer;display:flex}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_791f687a:hover:where(:not([data-disabled],[data-active])){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_791f687a:hover:where(:not([data-disabled],[data-active])){background-color:var(--mantine-color-dark-7)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_791f687a:active:where(:not([data-disabled],[data-active])){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_791f687a:active:where(:not([data-disabled],[data-active])){background-color:var(--mantine-color-dark-7)}}:where([data-mantine-color-scheme=light]) .m_791f687a:where([data-in-path]){background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_791f687a:where([data-in-path]){background-color:var(--mantine-color-dark-6)}.m_791f687a:where([data-active]){background-color:var(--mantine-primary-color-filled);color:var(--mantine-color-white)}@media (hover:hover){.m_791f687a:where([data-active]):hover{background-color:var(--mantine-primary-color-filled-hover)}}@media (hover:none){.m_791f687a:where([data-active]):active{background-color:var(--mantine-primary-color-filled-hover)}}.m_791f687a:where([data-disabled]){color:var(--mantine-color-dimmed);cursor:not-allowed;opacity:.5}.m_452a61d{align-items:center;gap:var(--mantine-spacing-xs);width:100%;display:flex}.m_aecd629a{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.m_92054c13{width:.9em;min-width:.9em;height:.9em;color:var(--mantine-color-dimmed);justify-content:center;align-items:center;display:flex;transform:rotate(-90deg)}:where([data-active]) .m_92054c13{color:inherit}:where([dir=rtl]) .m_92054c13{transform:rotate(90deg)}.m_ae51c8ae{opacity:.4;width:.8em;min-width:.8em;height:.8em}:where([data-active]) .m_ae51c8ae,:where([data-combobox-selected]) .m_ae51c8ae{opacity:1}.m_97ff10a8{padding:var(--combobox-option-padding);color:var(--mantine-color-dimmed);font-size:var(--combobox-option-fz,var(--mantine-font-size-sm));white-space:nowrap;justify-content:center;align-items:center;display:flex}.m_4451eb3a{justify-content:center;align-items:center;display:flex}.m_4451eb3a:where([data-inline]){display:inline-flex}.m_f59ffda3{--chip-size-xs:calc(1.4375rem * var(--mantine-scale));--chip-size-sm:calc(1.75rem * var(--mantine-scale));--chip-size-md:calc(2rem * var(--mantine-scale));--chip-size-lg:calc(2.25rem * var(--mantine-scale));--chip-size-xl:calc(2.5rem * var(--mantine-scale));--chip-icon-size-xs:calc(.5625rem * var(--mantine-scale));--chip-icon-size-sm:calc(.75rem * var(--mantine-scale));--chip-icon-size-md:calc(.875rem * var(--mantine-scale));--chip-icon-size-lg:calc(1rem * var(--mantine-scale));--chip-icon-size-xl:calc(1.125rem * var(--mantine-scale));--chip-padding-xs:calc(1rem * var(--mantine-scale));--chip-padding-sm:calc(1.25rem * var(--mantine-scale));--chip-padding-md:calc(1.5rem * var(--mantine-scale));--chip-padding-lg:calc(1.75rem * var(--mantine-scale));--chip-padding-xl:calc(2rem * var(--mantine-scale));--chip-checked-padding-xs:calc(.5125rem * var(--mantine-scale));--chip-checked-padding-sm:calc(.625rem * var(--mantine-scale));--chip-checked-padding-md:calc(.73125rem * var(--mantine-scale));--chip-checked-padding-lg:calc(.84375rem * var(--mantine-scale));--chip-checked-padding-xl:calc(.98125rem * var(--mantine-scale));--chip-spacing-xs:calc(.625rem * var(--mantine-scale));--chip-spacing-sm:calc(.75rem * var(--mantine-scale));--chip-spacing-md:calc(1rem * var(--mantine-scale));--chip-spacing-lg:calc(1.25rem * var(--mantine-scale));--chip-spacing-xl:calc(1.375rem * var(--mantine-scale));--chip-size:var(--chip-size-sm);--chip-icon-size:var(--chip-icon-size-sm);--chip-padding:var(--chip-padding-sm);--chip-spacing:var(--chip-spacing-sm);--chip-checked-padding:var(--chip-checked-padding-sm);--chip-bg:var(--mantine-primary-color-filled);--chip-hover:var(--mantine-primary-color-filled-hover);--chip-color:var(--mantine-color-white);--chip-bd:calc(.0625rem * var(--mantine-scale)) solid transparent}.m_be049a53{-webkit-user-select:none;user-select:none;border-radius:var(--chip-radius,1000rem);height:var(--chip-size);font-size:var(--chip-fz,var(--mantine-font-size-sm));line-height:calc(var(--chip-size) - calc(.125rem * var(--mantine-scale)));padding-inline:var(--chip-padding);cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent;border:calc(.0625rem * var(--mantine-scale)) solid transparent;color:var(--mantine-color-text);text-box-trim:trim-both;text-box-edge:cap alphabetic;align-items:center;display:inline-flex}.m_be049a53:where([data-checked]){padding-inline:var(--chip-checked-padding)}.m_be049a53:where([data-disabled]){cursor:not-allowed;background-color:var(--mantine-color-disabled);color:var(--mantine-color-disabled-color)}:where([data-mantine-color-scheme=light]) .m_3904c1af:not([data-disabled]){background-color:var(--mantine-color-white);border:1px solid var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_3904c1af:not([data-disabled]){background-color:var(--mantine-color-dark-6);border:1px solid var(--mantine-color-dark-4)}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_3904c1af:not([data-disabled]):hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_3904c1af:not([data-disabled]):hover{background-color:var(--mantine-color-dark-5)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_3904c1af:not([data-disabled]):active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_3904c1af:not([data-disabled]):active{background-color:var(--mantine-color-dark-5)}}.m_3904c1af:not([data-disabled]):where([data-checked]){--chip-icon-color:var(--chip-color);border:var(--chip-bd)}@media (hover:hover){.m_3904c1af:not([data-disabled]):where([data-checked]):hover{background-color:var(--chip-hover)}}@media (hover:none){.m_3904c1af:not([data-disabled]):where([data-checked]):active{background-color:var(--chip-hover)}}.m_fa109255:not([data-disabled]),.m_f7e165c3:not([data-disabled]){border:calc(.0625rem * var(--mantine-scale)) solid transparent;color:var(--mantine-color-text)}:where([data-mantine-color-scheme=light]) .m_fa109255:not([data-disabled]),:where([data-mantine-color-scheme=light]) .m_f7e165c3:not([data-disabled]){background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_fa109255:not([data-disabled]),:where([data-mantine-color-scheme=dark]) .m_f7e165c3:not([data-disabled]){background-color:var(--mantine-color-dark-5)}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_fa109255:not([data-disabled]):hover,:where([data-mantine-color-scheme=light]) .m_f7e165c3:not([data-disabled]):hover{background-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_fa109255:not([data-disabled]):hover,:where([data-mantine-color-scheme=dark]) .m_f7e165c3:not([data-disabled]):hover{background-color:var(--mantine-color-dark-4)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_fa109255:not([data-disabled]):active,:where([data-mantine-color-scheme=light]) .m_f7e165c3:not([data-disabled]):active{background-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_fa109255:not([data-disabled]):active,:where([data-mantine-color-scheme=dark]) .m_f7e165c3:not([data-disabled]):active{background-color:var(--mantine-color-dark-4)}}.m_fa109255:not([data-disabled]):where([data-checked]),.m_f7e165c3:not([data-disabled]):where([data-checked]){--chip-icon-color:var(--chip-color);color:var(--chip-color);background-color:var(--chip-bg)}@media (hover:hover){.m_fa109255:not([data-disabled]):where([data-checked]):hover,.m_f7e165c3:not([data-disabled]):where([data-checked]):hover{background-color:var(--chip-hover)}}@media (hover:none){.m_fa109255:not([data-disabled]):where([data-checked]):active,.m_f7e165c3:not([data-disabled]):where([data-checked]):active{background-color:var(--chip-hover)}}.m_9ac86df9{width:calc(var(--chip-icon-size) + (var(--chip-spacing) / 1.5));max-width:calc(var(--chip-icon-size) + (var(--chip-spacing) / 1.5));height:var(--chip-icon-size);align-items:center;display:flex;overflow:hidden}.m_d6d72580{width:var(--chip-icon-size);height:var(--chip-icon-size);color:var(--chip-icon-color,inherit);display:block}.m_bde07329{opacity:0;width:0;height:0;margin:0;padding:0}.m_bde07329:focus-visible+.m_be049a53{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.m_b183c0a2{font-family:var(--mantine-font-family-monospace);line-height:var(--mantine-line-height);padding:2px calc(var(--mantine-spacing-xs) / 2);border-radius:var(--mantine-radius-sm);font-size:var(--mantine-font-size-xs);margin:0;overflow:auto}:where([data-mantine-color-scheme=light]) .m_b183c0a2{background-color:var(--code-bg,var(--mantine-color-gray-0))}:where([data-mantine-color-scheme=dark]) .m_b183c0a2{background-color:var(--code-bg,var(--mantine-color-dark-6))}.m_b183c0a2[data-block]{padding:var(--mantine-spacing-xs)}.m_de3d2490{--cs-size:calc(1.75rem * var(--mantine-scale));--cs-radius:calc(62.5rem * var(--mantine-scale));-webkit-tap-highlight-color:transparent;appearance:none;width:var(--cs-size);height:var(--cs-size);min-width:var(--cs-size);min-height:var(--cs-size);border-radius:var(--cs-radius);color:inherit;border:none;line-height:1;text-decoration:none;display:block;position:relative}[data-mantine-color-scheme=light] .m_de3d2490{--alpha-overlay-color:var(--mantine-color-gray-3);--alpha-overlay-bg:var(--mantine-color-white)}[data-mantine-color-scheme=dark] .m_de3d2490{--alpha-overlay-color:var(--mantine-color-dark-4);--alpha-overlay-bg:var(--mantine-color-dark-7)}.m_862f3d1b{border-radius:var(--cs-radius);position:absolute;inset:0}.m_98ae7f22{border-radius:var(--cs-radius);z-index:1;box-shadow:#0000001a 0 0 0 calc(.0625rem * var(--mantine-scale)) inset, #00000026 0 0 calc(.25rem * var(--mantine-scale)) inset;position:absolute;inset:0}.m_95709ac0{border-radius:var(--cs-radius);background-size:calc(.5rem * var(--mantine-scale)) calc(.5rem * var(--mantine-scale));background-position:0 0, 0 calc(.25rem * var(--mantine-scale)), calc(.25rem * var(--mantine-scale)) calc(-.25rem * var(--mantine-scale)), calc(-.25rem * var(--mantine-scale)) 0;background-image:linear-gradient(45deg, var(--alpha-overlay-color) 25%, transparent 25%), linear-gradient(-45deg, var(--alpha-overlay-color) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--alpha-overlay-color) 75%), linear-gradient(-45deg, var(--alpha-overlay-bg) 75%, var(--alpha-overlay-color) 75%);position:absolute;inset:0}.m_93e74e3{border-radius:var(--cs-radius);z-index:2;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.m_fee9c77{--cp-width-xs:calc(11.25rem * var(--mantine-scale));--cp-width-sm:calc(12.5rem * var(--mantine-scale));--cp-width-md:calc(15rem * var(--mantine-scale));--cp-width-lg:calc(17.5rem * var(--mantine-scale));--cp-width-xl:calc(20rem * var(--mantine-scale));--cp-preview-size-xs:calc(1.625rem * var(--mantine-scale));--cp-preview-size-sm:calc(2.125rem * var(--mantine-scale));--cp-preview-size-md:calc(2.625rem * var(--mantine-scale));--cp-preview-size-lg:calc(3.125rem * var(--mantine-scale));--cp-preview-size-xl:calc(3.375rem * var(--mantine-scale));--cp-thumb-size-xs:calc(.5rem * var(--mantine-scale));--cp-thumb-size-sm:calc(.75rem * var(--mantine-scale));--cp-thumb-size-md:calc(1rem * var(--mantine-scale));--cp-thumb-size-lg:calc(1.25rem * var(--mantine-scale));--cp-thumb-size-xl:calc(1.375rem * var(--mantine-scale));--cp-saturation-height-xs:calc(6.25rem * var(--mantine-scale));--cp-saturation-height-sm:calc(6.875rem * var(--mantine-scale));--cp-saturation-height-md:calc(7.5rem * var(--mantine-scale));--cp-saturation-height-lg:calc(8.75rem * var(--mantine-scale));--cp-saturation-height-xl:calc(10rem * var(--mantine-scale));--cp-preview-size:var(--cp-preview-size-sm);--cp-thumb-size:var(--cp-thumb-size-sm);--cp-saturation-height:var(--cp-saturation-height-sm);--cp-width:var(--cp-width-sm);--cp-body-spacing:var(--mantine-spacing-sm);width:var(--cp-width);padding:calc(.0625rem * var(--mantine-scale))}.m_fee9c77:where([data-full-width]){width:100%}.m_9dddfbac{width:var(--cp-preview-size);height:var(--cp-preview-size)}.m_bffecc3e{padding-top:calc(var(--cp-body-spacing) / 2);display:flex}.m_3283bb96{flex:1}.m_3283bb96:not(:only-child){margin-inline-end:var(--mantine-spacing-xs)}.m_40d572ba{border:2px solid var(--mantine-color-white);width:var(--cp-thumb-size);height:var(--cp-thumb-size);border-radius:var(--cp-thumb-size);left:calc(var(--thumb-x-offset) - var(--cp-thumb-size) / 2);top:calc(var(--thumb-y-offset) - var(--cp-thumb-size) / 2);position:absolute;overflow:hidden;box-shadow:0 0 1px #0009}.m_d8ee6fd8{margin:calc(.125rem * var(--mantine-scale));cursor:pointer;padding-bottom:calc(var(--cp-swatch-size) - calc(.25rem * var(--mantine-scale)));flex:0 0 calc(var(--cp-swatch-size) - calc(.25rem * var(--mantine-scale)));height:unset!important;width:unset!important;min-width:0!important;min-height:0!important}.m_5711e686{margin-top:calc(.3125rem * var(--mantine-scale));margin-inline:calc(-.125rem * var(--mantine-scale));flex-wrap:wrap;display:flex}.m_5711e686:only-child{margin-top:0}.m_202a296e{--cp-thumb-size-xs:calc(.5rem * var(--mantine-scale));--cp-thumb-size-sm:calc(.75rem * var(--mantine-scale));--cp-thumb-size-md:calc(1rem * var(--mantine-scale));--cp-thumb-size-lg:calc(1.25rem * var(--mantine-scale));--cp-thumb-size-xl:calc(1.375rem * var(--mantine-scale));-webkit-tap-highlight-color:transparent;height:var(--cp-saturation-height);border-radius:var(--mantine-radius-sm);margin:calc(var(--cp-thumb-size) / 2);position:relative}.m_202a296e:where([data-focus-ring=auto]):focus:focus-visible .m_40d572ba,.m_202a296e:where([data-focus-ring=always]):focus .m_40d572ba{outline:2px solid var(--mantine-color-blue-filled)}.m_11b3db02{border-radius:var(--mantine-radius-sm);inset:calc(var(--cp-thumb-size) * -1 / 2 - calc(.0625rem * var(--mantine-scale)));position:absolute}.m_d856d47d{--cp-thumb-size-xs:calc(.5rem * var(--mantine-scale));--cp-thumb-size-sm:calc(.75rem * var(--mantine-scale));--cp-thumb-size-md:calc(1rem * var(--mantine-scale));--cp-thumb-size-lg:calc(1.25rem * var(--mantine-scale));--cp-thumb-size-xl:calc(1.375rem * var(--mantine-scale));--cp-thumb-size:var(--cp-thumb-size,calc(.75rem * var(--mantine-scale)));height:calc(var(--cp-thumb-size) + calc(.125rem * var(--mantine-scale)));margin-inline:calc(var(--cp-thumb-size) / 2);outline:none;position:relative}.m_d856d47d+.m_d856d47d{margin-top:calc(.375rem * var(--mantine-scale))}.m_d856d47d:where([data-focus-ring=auto]):focus:focus-visible .m_40d572ba,.m_d856d47d:where([data-focus-ring=always]):focus .m_40d572ba{outline:2px solid var(--mantine-color-blue-filled)}:where([data-mantine-color-scheme=light]) .m_d856d47d{--slider-checkers:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_d856d47d{--slider-checkers:var(--mantine-color-dark-4)}.m_8f327113{top:0;bottom:0;inset-inline:calc(var(--cp-thumb-size) * -1 / 2 - calc(.0625rem * var(--mantine-scale)));border-radius:10000rem;position:absolute}.m_b077c2bc{--ci-eye-dropper-icon-size-xs:calc(.875rem * var(--mantine-scale));--ci-eye-dropper-icon-size-sm:calc(1rem * var(--mantine-scale));--ci-eye-dropper-icon-size-md:calc(1.125rem * var(--mantine-scale));--ci-eye-dropper-icon-size-lg:calc(1.25rem * var(--mantine-scale));--ci-eye-dropper-icon-size-xl:calc(1.375rem * var(--mantine-scale));--ci-eye-dropper-icon-size:var(--ci-eye-dropper-icon-size-sm)}.m_66a028b5{--ci-button-size-xs:calc(1.375rem * var(--mantine-scale));--ci-button-size-sm:calc(1.625rem * var(--mantine-scale));--ci-button-size-md:calc(1.75rem * var(--mantine-scale));--ci-button-size-lg:calc(2rem * var(--mantine-scale));--ci-button-size-xl:calc(2.5rem * var(--mantine-scale));--ci-button-size:var(--ci-button-size-sm);width:var(--ci-button-size);height:var(--ci-button-size);min-width:var(--ci-button-size);min-height:var(--ci-button-size)}.m_c5ccdcab{--ci-preview-size-xs:calc(1rem * var(--mantine-scale));--ci-preview-size-sm:calc(1.125rem * var(--mantine-scale));--ci-preview-size-md:calc(1.375rem * var(--mantine-scale));--ci-preview-size-lg:calc(1.75rem * var(--mantine-scale));--ci-preview-size-xl:calc(2.25rem * var(--mantine-scale));--ci-preview-size:var(--ci-preview-size-sm)}.m_5ece2cd7{padding:calc(.5rem * var(--mantine-scale))}.m_7485cace{--container-size-xs:calc(33.75rem * var(--mantine-scale));--container-size-sm:calc(45rem * var(--mantine-scale));--container-size-md:calc(60rem * var(--mantine-scale));--container-size-lg:calc(71.25rem * var(--mantine-scale));--container-size-xl:calc(82.5rem * var(--mantine-scale));--container-size:var(--container-size-md)}.m_7485cace:where([data-strategy=block]){max-width:var(--container-size);padding-inline:var(--mantine-spacing-md);margin-inline:auto}.m_7485cace:where([data-strategy=block]):where([data-fluid]){max-width:100%}.m_7485cace:where([data-strategy=grid]){grid-template-columns:1fr min(100%, var(--container-size)) 1fr;margin-inline:auto;display:grid}.m_7485cace:where([data-strategy=grid])>*{grid-column:2}.m_7485cace:where([data-strategy=grid])>[data-breakout]{grid-column:1/-1}.m_7485cace:where([data-strategy=grid])>[data-breakout]>[data-container]{max-width:var(--container-size);margin-inline:auto}.m_f84d0407{--data-list-fz:var(--mantine-font-size-sm);--data-list-lh:var(--mantine-line-height-sm);--data-list-gap:var(--mantine-spacing-sm);--data-list-label-width:calc(7.5rem * var(--mantine-scale));gap:var(--data-list-gap);font-size:var(--data-list-fz);line-height:var(--data-list-lh);flex-direction:column;margin:0;padding:0;display:flex}.m_f84d0407:where([data-with-divider]){gap:0}.m_f848fe38{align-items:baseline;gap:var(--mantine-spacing-xs);flex-direction:row;display:flex}.m_f84d0407:where([data-orientation=vertical])>.m_f848fe38{flex-direction:column;gap:0}.m_c791b39c{color:var(--mantine-color-dimmed);font-size:var(--data-list-fz);line-height:var(--data-list-lh);min-width:var(--data-list-label-width);margin:0}.m_f84d0407:where([data-orientation=vertical]) .m_c791b39c{min-width:100%}.m_c81ec619{font-size:var(--data-list-fz);line-height:var(--data-list-lh);margin:0}.m_f84d0407:where([data-with-divider])>.m_f848fe38:where(:not(:first-of-type)){border-top:calc(.0625rem * var(--mantine-scale)) solid var(--mantine-color-default-border);padding-top:var(--data-list-gap);margin-top:var(--data-list-gap)}.m_e2125a27{--dialog-size-xs:calc(10rem * var(--mantine-scale));--dialog-size-sm:calc(12.5rem * var(--mantine-scale));--dialog-size-md:calc(21.25rem * var(--mantine-scale));--dialog-size-lg:calc(25rem * var(--mantine-scale));--dialog-size-xl:calc(31.25rem * var(--mantine-scale));--dialog-size:var(--dialog-size-md);width:var(--dialog-size);max-width:calc(100vw - var(--mantine-spacing-xl) * 2);min-height:calc(3.125rem * var(--mantine-scale));position:relative}.m_5abab665{top:calc(var(--mantine-spacing-md) / 2);position:absolute;inset-inline-end:calc(var(--mantine-spacing-md) / 2)}.m_3eebeb36{--divider-size-xs:calc(.0625rem * var(--mantine-scale));--divider-size-sm:calc(.125rem * var(--mantine-scale));--divider-size-md:calc(.1875rem * var(--mantine-scale));--divider-size-lg:calc(.25rem * var(--mantine-scale));--divider-size-xl:calc(.3125rem * var(--mantine-scale));--divider-size:var(--divider-size-xs)}:where([data-mantine-color-scheme=light]) .m_3eebeb36{--divider-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_3eebeb36{--divider-color:var(--mantine-color-dark-4)}.m_3eebeb36:where([data-orientation=horizontal]){border-top:var(--divider-size) var(--divider-border-style,solid) var(--divider-color)}.m_3eebeb36:where([data-orientation=vertical]){border-inline-start:var(--divider-size) var(--divider-border-style,solid) var(--divider-color);align-self:stretch;height:auto}.m_3eebeb36:where([data-with-label]){border:0}.m_9e365f20{font-size:var(--mantine-font-size-xs);color:var(--mantine-color-dimmed);white-space:nowrap;align-items:center;display:flex}.m_9e365f20:where([data-position=left]):before,.m_9e365f20:where([data-position=right]):after{display:none}.m_9e365f20:before{content:"";height:calc(.0625rem * var(--mantine-scale));border-top:var(--divider-size) var(--divider-border-style,solid) var(--divider-color);flex:1;margin-inline-end:var(--mantine-spacing-xs)}.m_9e365f20:after{content:"";height:calc(.0625rem * var(--mantine-scale));border-top:var(--divider-size) var(--divider-border-style,solid) var(--divider-color);flex:1;margin-inline-start:var(--mantine-spacing-xs)}.m_f11b401e{--drawer-size-xs:calc(20rem * var(--mantine-scale));--drawer-size-sm:calc(23.75rem * var(--mantine-scale));--drawer-size-md:calc(27.5rem * var(--mantine-scale));--drawer-size-lg:calc(38.75rem * var(--mantine-scale));--drawer-size-xl:calc(48.75rem * var(--mantine-scale));--drawer-size:var(--drawer-size-md);--drawer-offset:0rem}.m_5a7c2c9{z-index:1000}.m_b8a05bbd{flex:var(--drawer-flex,0 0 var(--drawer-size));height:var(--drawer-height,calc(100% - var(--drawer-offset) * 2));margin:var(--drawer-offset);max-width:calc(100% - var(--drawer-offset) * 2);max-height:calc(100% - var(--drawer-offset) * 2);overflow-y:auto}.m_b8a05bbd[data-hidden]{pointer-events:none;opacity:0!important}.m_31cd769a{justify-content:var(--drawer-justify,flex-start);align-items:var(--drawer-align,flex-start);display:flex}.m_7ffcadab{--empty-state-indicator-size-xs:calc(2rem * var(--mantine-scale));--empty-state-indicator-size-sm:calc(2.5rem * var(--mantine-scale));--empty-state-indicator-size-md:calc(3rem * var(--mantine-scale));--empty-state-indicator-size-lg:calc(3.75rem * var(--mantine-scale));--empty-state-indicator-size-xl:calc(4.5rem * var(--mantine-scale));--empty-state-gap-xs:calc(.375rem * var(--mantine-scale));--empty-state-gap-sm:calc(.5rem * var(--mantine-scale));--empty-state-gap-md:calc(.625rem * var(--mantine-scale));--empty-state-gap-lg:calc(.75rem * var(--mantine-scale));--empty-state-gap-xl:calc(1rem * var(--mantine-scale));--empty-state-title-fz-xs:var(--mantine-font-size-sm);--empty-state-title-fz-sm:var(--mantine-font-size-md);--empty-state-title-fz-md:var(--mantine-font-size-lg);--empty-state-title-fz-lg:var(--mantine-font-size-xl);--empty-state-title-fz-xl:calc(var(--mantine-font-size-xl) * 1.2);--empty-state-description-fz-xs:var(--mantine-font-size-xs);--empty-state-description-fz-sm:var(--mantine-font-size-sm);--empty-state-description-fz-md:var(--mantine-font-size-sm);--empty-state-description-fz-lg:var(--mantine-font-size-md);--empty-state-description-fz-xl:var(--mantine-font-size-lg);gap:var(--empty-state-gap,var(--empty-state-gap-md));display:flex}.m_7ffcadab[data-align=center]{flex-direction:column;align-items:center}.m_7ffcadab[data-align=left]{flex-direction:row;align-items:flex-start}.m_7ffcadab[data-align=right]{flex-direction:row-reverse;align-items:flex-start}.m_7ff5666b{gap:var(--empty-state-gap,var(--empty-state-gap-md));flex-direction:column;min-width:0;display:flex}[data-align=center]>.m_7ff5666b{text-align:center;align-items:center}[data-align=left]>.m_7ff5666b{text-align:left;align-items:flex-start}[data-align=right]>.m_7ff5666b{text-align:right;align-items:flex-end}.m_866226e6{color:var(--empty-state-indicator-color,var(--mantine-color-dimmed));font-size:var(--empty-state-indicator-size,var(--empty-state-indicator-size-md));flex-shrink:0;justify-content:center;align-items:center;line-height:1;display:flex}.m_866226e6>svg{width:1em;height:1em}[data-mantine-color-scheme=light] .m_866226e6[data-with-background]{--empty-state-indicator-default-bg:var(--mantine-color-gray-1)}[data-mantine-color-scheme=dark] .m_866226e6[data-with-background]{--empty-state-indicator-default-bg:var(--mantine-color-dark-6)}.m_866226e6[data-with-background]{border-radius:calc(62.5rem * var(--mantine-scale));background-color:var(--empty-state-indicator-bg,var(--empty-state-indicator-default-bg));width:2em;height:2em}.m_7fb28eaf{font-size:var(--empty-state-title-fz,var(--empty-state-title-fz-md));color:var(--mantine-color-bright);text-wrap:balance;margin:0;font-weight:600;line-height:1.3}.m_5f111313{font-size:var(--empty-state-description-fz,var(--empty-state-description-fz-md));color:var(--mantine-color-dimmed);text-wrap:pretty;max-width:32rem;margin:0;line-height:1.55}.m_65f4fb94{align-items:center;gap:var(--mantine-spacing-sm);flex-wrap:wrap;display:flex}.m_e9408a47{padding:var(--mantine-spacing-lg);padding-top:var(--mantine-spacing-xs);border-radius:var(--fieldset-radius,var(--mantine-radius-default));min-inline-size:auto}.m_84c9523a{border:calc(.0625rem * var(--mantine-scale)) solid}:where([data-mantine-color-scheme=light]) .m_84c9523a{border-color:var(--mantine-color-gray-3);background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_84c9523a{border-color:var(--mantine-color-dark-4);background-color:var(--mantine-color-dark-7)}.m_ef274e49{border:calc(.0625rem * var(--mantine-scale)) solid}:where([data-mantine-color-scheme=light]) .m_ef274e49{border-color:var(--mantine-color-gray-3);background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_ef274e49{border-color:var(--mantine-color-dark-4);background-color:var(--mantine-color-dark-6)}.m_eda993d3{border:0;border-radius:0;padding:0}.m_90794832{font-size:var(--mantine-font-size-sm)}.m_74ca27fe{margin-bottom:var(--mantine-spacing-sm);padding:0}.m_df020499{z-index:var(--floating-window-z-index);width:var(--floating-window-width,auto);height:var(--floating-window-height,auto);position:fixed}.m_8478a6da{container:mantine-grid/inline-size}.m_410352e9{--grid-overflow:visible;--grid-column-gap:var(--grid-gap);--grid-row-gap:var(--grid-gap);overflow:var(--grid-overflow)}.m_dee7bd2f{justify-content:var(--grid-justify);align-items:var(--grid-align);gap:var(--grid-row-gap) var(--grid-column-gap);flex-wrap:wrap;display:flex}.m_96bdd299{--col-flex-grow:0;--col-offset:0rem;flex-shrink:0;order:var(--col-order);flex-basis:var(--col-flex-basis);width:var(--col-width);max-width:var(--col-max-width);flex-grow:var(--col-flex-grow);align-self:var(--col-align-self);margin-inline-start:var(--col-offset)}.m_bcb3f3c2{color:var(--mantine-color-black)}:where([data-mantine-color-scheme=light]) .m_bcb3f3c2{background-color:var(--mark-bg-light)}:where([data-mantine-color-scheme=dark]) .m_bcb3f3c2{background-color:var(--mark-bg-dark)}.m_9e117634{object-fit:var(--image-object-fit,cover);border-radius:var(--image-radius,0);width:100%;display:block}@keyframes m_885901b1{0%{opacity:.6;transform:scale(0)}to{opacity:0;transform:scale(2.8)}}.m_e5262200{--indicator-size:calc(.625rem * var(--mantine-scale));--indicator-color:var(--mantine-primary-color-filled);display:block;position:relative}.m_e5262200:where([data-inline]){display:inline-block}.m_760d1fb1{top:var(--indicator-top);left:var(--indicator-left);right:var(--indicator-right);bottom:var(--indicator-bottom);transform:translate(var(--indicator-translate-x), var(--indicator-translate-y));min-width:var(--indicator-size);height:var(--indicator-size);border-radius:var(--indicator-radius,1000rem);z-index:var(--indicator-z-index,200);font-size:var(--mantine-font-size-xs);background-color:var(--indicator-color);color:var(--indicator-text-color,var(--mantine-color-white));white-space:nowrap;justify-content:center;align-items:center;display:flex;position:absolute}.m_760d1fb1:before{content:"";background-color:var(--indicator-color);border-radius:var(--indicator-radius,1000rem);z-index:-1;position:absolute;inset:0}.m_760d1fb1:where([data-with-label]){padding-inline:calc(var(--mantine-spacing-xs) / 2)}.m_760d1fb1:where([data-with-border]){border:2px solid var(--mantine-color-body)}.m_760d1fb1[data-processing]:before{animation:1s linear infinite m_885901b1}.m_dc6f14e2{--kbd-fz-xs:calc(.625rem * var(--mantine-scale));--kbd-fz-sm:calc(.75rem * var(--mantine-scale));--kbd-fz-md:calc(.875rem * var(--mantine-scale));--kbd-fz-lg:calc(1rem * var(--mantine-scale));--kbd-fz-xl:calc(1.25rem * var(--mantine-scale));--kbd-fz:var(--kbd-fz-sm);font-family:var(--mantine-font-family-monospace);line-height:var(--mantine-line-height);font-weight:var(--mantine-font-weight-bold);font-size:var(--kbd-fz);border-radius:var(--mantine-radius-sm);border:calc(.0625rem * var(--mantine-scale)) solid;border-bottom-width:calc(.1875rem * var(--mantine-scale));text-align:center;unicode-bidi:embed;padding:.12em .45em}:where([data-mantine-color-scheme=light]) .m_dc6f14e2{border-color:var(--mantine-color-gray-3);color:var(--mantine-color-gray-7);background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_dc6f14e2{border-color:var(--mantine-color-dark-4);color:var(--mantine-color-dark-0);background-color:var(--mantine-color-dark-6)}.m_abbac491{--list-fz:var(--mantine-font-size-md);--list-lh:var(--mantine-line-height-md);--list-marker-gap:var(--mantine-spacing-lg);font-size:var(--list-fz);line-height:var(--list-lh);margin:0;padding:0;padding-inline-start:var(--list-marker-gap);list-style-position:outside}.m_abbac491[data-type=none]{--list-marker-gap:0}.m_abbac491:where([data-with-padding]){padding-inline-start:calc(var(--list-marker-gap) + var(--mantine-spacing-md))}.m_abb6bec2{white-space:normal;line-height:var(--list-lh)}.m_abb6bec2:where([data-with-icon]){list-style:none}.m_abb6bec2:where([data-with-icon]) .m_75cd9f71{--li-direction:row;--li-align:center}.m_abb6bec2:where(:not(:first-of-type)){margin-top:var(--list-spacing,0)}.m_abb6bec2:where([data-centered]){line-height:1}.m_75cd9f71{flex-direction:var(--li-direction,column);align-items:var(--li-align,flex-start);white-space:normal;display:inline-flex}.m_60f83e5b{vertical-align:middle;margin-inline-end:var(--mantine-spacing-sm);display:inline-block}.m_6e45937b{z-index:var(--lo-z-index);justify-content:center;align-items:center;display:flex;position:absolute;inset:0;overflow:hidden}.m_e8eb006c{z-index:calc(var(--lo-z-index) + 1);position:relative}.m_df587f17{z-index:var(--lo-z-index)}@keyframes m_55dc625a{0%{transform:translate(0)}to{transform:translateX(calc(-100% / var(--marquee-repeat,4) - var(--marquee-gap,var(--mantine-spacing-md)) / var(--marquee-repeat,4)))}}@keyframes m_cdef532c{0%{transform:translateY(0)}to{transform:translateY(calc(-100% / var(--marquee-repeat,4) - var(--marquee-gap,var(--mantine-spacing-md)) / var(--marquee-repeat,4)))}}.m_7dc7d3cd{--_fade-color:var(--marquee-fade-color,var(--mantine-color-body));--_fade-size:var(--marquee-fade-size,5%);max-width:100%;max-height:100%;display:flex;position:relative;overflow:hidden}.m_7dc7d3cd:where([data-orientation=horizontal]){flex-direction:row}.m_7dc7d3cd:where([data-orientation=vertical]){flex-direction:column}.m_7dc7d3cd[data-fade-edges]:before,.m_7dc7d3cd[data-fade-edges]:after{content:"";z-index:1;pointer-events:none;position:absolute}.m_7dc7d3cd[data-orientation=horizontal][data-fade-edges]:before,.m_7dc7d3cd[data-orientation=horizontal][data-fade-edges]:after{width:var(--_fade-size);top:0;bottom:0}.m_7dc7d3cd[data-orientation=horizontal][data-fade-edges]:before{background:linear-gradient(to right, var(--_fade-color), transparent);left:0}.m_7dc7d3cd[data-orientation=horizontal][data-fade-edges]:after{background:linear-gradient(to left, var(--_fade-color), transparent);right:0}.m_7dc7d3cd[data-orientation=vertical][data-fade-edges]:before,.m_7dc7d3cd[data-orientation=vertical][data-fade-edges]:after{height:var(--_fade-size);left:0;right:0}.m_7dc7d3cd[data-orientation=vertical][data-fade-edges]:before{background:linear-gradient(to bottom, var(--_fade-color), transparent);top:0}.m_7dc7d3cd[data-orientation=vertical][data-fade-edges]:after{background:linear-gradient(to top, var(--_fade-color), transparent);bottom:0}.m_1f9675ae{gap:var(--marquee-gap,var(--mantine-spacing-md));animation-duration:var(--marquee-duration,100s);animation-timing-function:linear;animation-iteration-count:infinite;display:flex}.m_7dc7d3cd[data-orientation=horizontal]>.m_1f9675ae{flex-direction:row;animation-name:m_55dc625a}.m_7dc7d3cd[data-orientation=vertical]>.m_1f9675ae{flex-direction:column;animation-name:m_cdef532c}.m_7dc7d3cd[data-reverse]>.m_1f9675ae{animation-direction:reverse}.m_7dc7d3cd[data-pause-on-hover]:hover>.m_1f9675ae{animation-play-state:paused}.m_3a9900f4{gap:var(--marquee-gap,var(--mantine-spacing-md));flex-shrink:0;display:flex}.m_7dc7d3cd[data-orientation=horizontal] .m_3a9900f4{flex-direction:row}.m_7dc7d3cd[data-orientation=vertical] .m_3a9900f4{flex-direction:column}.m_dc9b7c9f{padding:calc(.25rem * var(--mantine-scale))}.m_9bfac126{color:var(--mantine-color-dimmed);font-weight:var(--mantine-font-weight-medium);font-size:var(--mantine-font-size-xs);padding:calc(var(--mantine-spacing-xs) / 2) var(--mantine-spacing-sm);cursor:default}.m_efdf90cb{margin-top:calc(.25rem * var(--mantine-scale));margin-bottom:calc(.25rem * var(--mantine-scale));border-top:calc(.0625rem * var(--mantine-scale)) solid}:where([data-mantine-color-scheme=light]) .m_efdf90cb{border-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_efdf90cb{border-color:var(--mantine-color-dark-4)}.m_99ac2aa1{font-size:var(--mantine-font-size-sm);width:100%;padding:calc(var(--mantine-spacing-xs) / 1.5) var(--mantine-spacing-sm);border-radius:var(--popover-radius,var(--mantine-radius-default));color:var(--menu-item-color,var(--mantine-color-text));-webkit-user-select:none;user-select:none;align-items:center;display:flex}.m_99ac2aa1:where([data-disabled],:disabled){color:var(--mantine-color-disabled-color);opacity:.6;cursor:not-allowed}:where([data-mantine-color-scheme=light]) .m_99ac2aa1:where(:hover,:focus,[data-menu-active]):where(:not(:disabled,[data-disabled])){background-color:var(--menu-item-hover,var(--mantine-color-gray-1))}:where([data-mantine-color-scheme=dark]) .m_99ac2aa1:where(:hover,:focus,[data-menu-active]):where(:not(:disabled,[data-disabled])){background-color:var(--menu-item-hover,var(--mantine-color-dark-4))}.m_99ac2aa1:where([data-sub-menu-item]){padding-inline-end:calc(.3125rem * var(--mantine-scale))}.m_ef8769b6{--menu-search-padding:var(--popover-padding,4px);margin-inline:calc(var(--menu-search-padding) * -1);margin-top:calc(var(--menu-search-padding) * -1);width:calc(100% + var(--menu-search-padding) * 2);border-top-width:0;margin-bottom:var(--menu-search-padding);border-inline-width:0;border-end-end-radius:0;border-end-start-radius:0}:where([data-mantine-color-scheme=light]) .m_ef8769b6,:where([data-mantine-color-scheme=light]) .m_ef8769b6:focus{border-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_ef8769b6,:where([data-mantine-color-scheme=dark]) .m_ef8769b6:focus{border-color:var(--mantine-color-dark-4)}:where([data-mantine-color-scheme=light]) .m_ef8769b6{background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_ef8769b6{background-color:var(--mantine-color-dark-7)}.m_5476e0d3{flex:1}.m_8395186e{width:calc(.75rem * var(--mantine-scale));height:calc(.75rem * var(--mantine-scale));flex-shrink:0;justify-content:center;align-items:center;margin-inline-end:calc(.5rem * var(--mantine-scale));display:inline-flex}.m_8b75e504{justify-content:center;align-items:center;display:flex}.m_8b75e504:where([data-position=left]){margin-inline-end:var(--mantine-spacing-xs)}.m_8b75e504:where([data-position=right]){margin-inline-start:var(--mantine-spacing-xs)}.m_b85b0bed{transform:rotate(-90deg)}:where([dir=rtl]) .m_b85b0bed{transform:rotate(90deg)}.m_de2654db{align-items:center;display:flex}.m_f08a2b4a{font-size:var(--mantine-font-size-sm);padding:calc(var(--mantine-spacing-xs) / 1.5) var(--mantine-spacing-sm);border-radius:var(--mantine-radius-default);color:var(--mantine-color-text);-webkit-user-select:none;user-select:none;cursor:pointer;background-color:#0000;line-height:1}.m_f08a2b4a:where([data-disabled],:disabled){color:var(--mantine-color-disabled-color);opacity:.6;cursor:not-allowed}:where([data-mantine-color-scheme=light]) .m_f08a2b4a:where(:hover,:focus-visible,[data-expanded]):where(:not(:disabled,[data-disabled])){background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_f08a2b4a:where(:hover,:focus-visible,[data-expanded]):where(:not(:disabled,[data-disabled])){background-color:var(--mantine-color-dark-5)}.m_9df02822{--modal-size-xs:calc(20rem * var(--mantine-scale));--modal-size-sm:calc(23.75rem * var(--mantine-scale));--modal-size-md:calc(27.5rem * var(--mantine-scale));--modal-size-lg:calc(38.75rem * var(--mantine-scale));--modal-size-xl:calc(48.75rem * var(--mantine-scale));--modal-size:var(--modal-size-md);--modal-y-offset:5dvh;--modal-x-offset:5vw}.m_9df02822[data-full-screen]{--modal-border-radius:0!important}.m_9df02822[data-full-screen] .m_54c44539{--modal-content-flex:0 0 100%;--modal-content-max-height:auto;--modal-content-height:100dvh}.m_9df02822[data-full-screen] .m_1f958f16{--modal-inner-y-offset:0;--modal-inner-x-offset:0}.m_9df02822[data-centered] .m_1f958f16{--modal-inner-align:center}.m_d0e2b9cd{border-start-start-radius:var(--modal-radius,var(--mantine-radius-default));border-start-end-radius:var(--modal-radius,var(--mantine-radius-default))}.m_54c44539{flex:var(--modal-content-flex,0 0 var(--modal-size));max-width:100%;max-height:var(--modal-content-max-height,calc(100dvh - var(--modal-y-offset) * 2));height:var(--modal-content-height,auto);overflow-y:auto}.m_54c44539[data-full-screen]{border-radius:0}.m_54c44539[data-hidden]{pointer-events:none;opacity:0!important}.m_1f958f16{justify-content:center;align-items:var(--modal-inner-align,flex-start);padding-top:var(--modal-inner-y-offset,var(--modal-y-offset));padding-bottom:var(--modal-inner-y-offset,var(--modal-y-offset));padding-inline:var(--modal-inner-x-offset,var(--modal-x-offset));display:flex}.m_7cda1cd6{--pill-fz-xs:calc(.625rem * var(--mantine-scale));--pill-fz-sm:calc(.75rem * var(--mantine-scale));--pill-fz-md:calc(.875rem * var(--mantine-scale));--pill-fz-lg:calc(1rem * var(--mantine-scale));--pill-fz-xl:calc(1.125rem * var(--mantine-scale));--pill-height-xs:calc(1.125rem * var(--mantine-scale));--pill-height-sm:calc(1.375rem * var(--mantine-scale));--pill-height-md:calc(1.5625rem * var(--mantine-scale));--pill-height-lg:calc(1.75rem * var(--mantine-scale));--pill-height-xl:calc(2rem * var(--mantine-scale));--pill-fz:var(--pill-fz-sm);--pill-height:var(--pill-height-sm);font-size:var(--pill-fz);height:var(--pill-height);border-radius:var(--pill-radius,1000rem);white-space:nowrap;-webkit-user-select:none;user-select:none;flex:0;align-items:center;max-width:100%;padding-inline:.8em;line-height:1;display:inline-flex;position:relative}:where([data-mantine-color-scheme=dark]) .m_7cda1cd6{background-color:var(--mantine-color-dark-7);color:var(--mantine-color-dark-0)}:where([data-mantine-color-scheme=light]) .m_7cda1cd6{color:var(--mantine-color-black)}.m_7cda1cd6:where([data-with-remove]:not(:has(button:disabled))){padding-inline-end:0}.m_7cda1cd6:where([data-disabled],:has(button:disabled)){cursor:not-allowed}.m_7cda1cd6:where([draggable=true]){cursor:grab}.m_7cda1cd6:where([draggable=true]):focus-visible{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.m_7cda1cd6:where([data-dragging]){opacity:.4;cursor:grabbing}.m_7cda1cd6:where([data-drag-over=before]):before,.m_7cda1cd6:where([data-drag-over=after]):after{content:"";width:calc(.125rem * var(--mantine-scale));background-color:var(--mantine-primary-color-filled);pointer-events:none;z-index:1;position:absolute;top:0;bottom:0}.m_7cda1cd6:where([data-drag-over=before]):before{inset-inline-start:calc(-.25rem * var(--mantine-scale))}.m_7cda1cd6:where([data-drag-over=after]):after{inset-inline-end:calc(-.25rem * var(--mantine-scale))}:where([data-mantine-color-scheme=light]) .m_44da308b{background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=light]) .m_44da308b:where([data-disabled],:has(button:disabled)){background-color:var(--mantine-color-disabled)}:where([data-mantine-color-scheme=light]) .m_e3a01f8{background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=light]) .m_e3a01f8:where([data-disabled],:has(button:disabled)){background-color:var(--mantine-color-disabled)}.m_1e0e6180{cursor:inherit;height:100%;line-height:var(--pill-height);text-overflow:ellipsis;display:block;overflow:hidden}.m_ae386778{color:inherit;font-size:inherit;height:100%;min-height:unset;min-width:2em;width:unset;border-radius:0;border-start-end-radius:var(--pill-radius,50%);border-end-end-radius:var(--pill-radius,50%);flex:0;padding-inline:.1em .3em}.m_7cda1cd6[data-disabled]>.m_ae386778,.m_ae386778:disabled{cursor:not-allowed;background-color:#0000;width:.8em;min-width:.8em;padding:0;display:none}.m_7cda1cd6[data-disabled]>.m_ae386778>svg,.m_ae386778:disabled>svg{display:none}.m_ae386778>svg{pointer-events:none}.m_1dcfd90b{--pg-gap-xs:calc(.375rem * var(--mantine-scale));--pg-gap-sm:calc(.5rem * var(--mantine-scale));--pg-gap-md:calc(.625rem * var(--mantine-scale));--pg-gap-lg:calc(.75rem * var(--mantine-scale));--pg-gap-xl:calc(.75rem * var(--mantine-scale));--pg-gap:var(--pg-gap-sm);align-items:center;gap:var(--pg-gap);flex-wrap:wrap;display:flex}.m_45c4369d{appearance:none;min-width:calc(6.25rem * var(--mantine-scale));font-size:inherit;height:1.6em;color:inherit;background-color:#0000;border:0;flex:1;padding:0}.m_45c4369d::placeholder{color:var(--input-placeholder-color);opacity:1}.m_45c4369d:where([data-type=hidden],[data-type=auto]){height:calc(.0625rem * var(--mantine-scale));width:calc(.0625rem * var(--mantine-scale));pointer-events:none;opacity:0;position:absolute;top:0;left:0}.m_45c4369d:focus{outline:none}.m_45c4369d:where([data-type=auto]:focus){visibility:visible;opacity:1;height:1.6em;position:static}.m_45c4369d:where([data-pointer]:not([data-disabled],:disabled)){cursor:pointer}.m_45c4369d:where([data-disabled],:disabled){cursor:not-allowed}.m_f0824112{--nl-bg:var(--mantine-primary-color-light);--nl-hover:var(--mantine-primary-color-light-hover);--nl-color:var(--mantine-primary-color-light-color);width:100%;padding:8px var(--mantine-spacing-sm);-webkit-user-select:none;user-select:none;align-items:center;display:flex}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_f0824112:hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_f0824112:hover{background-color:var(--mantine-color-dark-6)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_f0824112:active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_f0824112:active{background-color:var(--mantine-color-dark-6)}}.m_f0824112:where([data-disabled]){opacity:.4;pointer-events:none}.m_f0824112:where([data-active],[aria-current=page]){background-color:var(--nl-bg);color:var(--nl-color)}@media (hover:hover){.m_f0824112:where([data-active],[aria-current=page]):hover{background-color:var(--nl-hover)}}@media (hover:none){.m_f0824112:where([data-active],[aria-current=page]):active{background-color:var(--nl-hover)}}.m_f0824112:where([data-active],[aria-current=page]) .m_57492dcc{--description-opacity:.9;--description-color:var(--nl-color)}.m_690090b5{justify-content:center;align-items:center;transition:transform .15s;display:flex}.m_690090b5>svg{display:block}.m_690090b5:where([data-position=left]){margin-inline-end:var(--mantine-spacing-sm)}.m_690090b5:where([data-position=right]){margin-inline-start:var(--mantine-spacing-sm)}.m_690090b5:where([data-rotate]){transform:rotate(90deg)}.m_1f6ac4c4{font-size:var(--mantine-font-size-sm)}.m_f07af9d2{text-overflow:ellipsis;flex:1;overflow:hidden}.m_f07af9d2:where([data-no-wrap]){white-space:nowrap}.m_57492dcc{font-size:var(--mantine-font-size-xs);opacity:var(--description-opacity,1);color:var(--description-color,var(--mantine-color-dimmed));text-overflow:ellipsis;display:block;overflow:hidden}:where([data-no-wrap]) .m_57492dcc{white-space:nowrap}.m_e17b862f{padding-inline-start:var(--nl-offset,var(--mantine-spacing-lg))}.m_1fd8a00b{transform:rotate(-90deg)}.m_a513464{--notification-radius:var(--mantine-radius-default);--notification-color:var(--mantine-primary-color-filled);box-sizing:border-box;padding-inline-start:calc(1.375rem * var(--mantine-scale));padding-inline-end:var(--mantine-spacing-xs);padding-top:var(--mantine-spacing-xs);padding-bottom:var(--mantine-spacing-xs);border-radius:var(--notification-radius);box-shadow:var(--mantine-shadow-lg);align-items:center;display:flex;position:relative;overflow:hidden}.m_a513464:before{content:"";width:calc(.375rem * var(--mantine-scale));top:var(--notification-radius);bottom:var(--notification-radius);border-radius:var(--notification-radius);background-color:var(--notification-color);display:block;position:absolute;inset-inline-start:calc(.25rem * var(--mantine-scale))}:where([data-mantine-color-scheme=light]) .m_a513464{background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_a513464{background-color:var(--mantine-color-dark-6)}.m_a513464:where([data-with-icon]):before{display:none}:where([data-mantine-color-scheme=light]) .m_a513464:where([data-with-border]){border:1px solid var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_a513464:where([data-with-border]){border:1px solid var(--mantine-color-dark-4)}.m_a4ceffb{box-sizing:border-box;width:calc(1.75rem * var(--mantine-scale));height:calc(1.75rem * var(--mantine-scale));border-radius:calc(1.75rem * var(--mantine-scale));background-color:var(--notification-color);color:var(--mantine-color-white);justify-content:center;align-items:center;margin-inline-end:var(--mantine-spacing-md);display:flex}.m_b0920b15{margin-inline-end:var(--mantine-spacing-md)}.m_a49ed24{flex:1;margin-inline-end:var(--mantine-spacing-xs);overflow:hidden}.m_3feedf16{margin-bottom:calc(.125rem * var(--mantine-scale));text-overflow:ellipsis;font-size:var(--mantine-font-size-sm);line-height:var(--mantine-line-height-sm);font-weight:var(--mantine-font-weight-medium);overflow:hidden}:where([data-mantine-color-scheme=light]) .m_3feedf16{color:var(--mantine-color-gray-9)}:where([data-mantine-color-scheme=dark]) .m_3feedf16{color:var(--mantine-color-white)}.m_3d733a3a{font-size:var(--mantine-font-size-sm);line-height:var(--mantine-line-height-sm);text-overflow:ellipsis;overflow:hidden}:where([data-mantine-color-scheme=light]) .m_3d733a3a{color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_3d733a3a{color:var(--mantine-color-dark-0)}:where([data-mantine-color-scheme=light]) .m_3d733a3a:where([data-with-title]){color:var(--mantine-color-gray-6)}:where([data-mantine-color-scheme=dark]) .m_3d733a3a:where([data-with-title]){color:var(--mantine-color-dark-2)}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_919a4d88:hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_919a4d88:hover{background-color:var(--mantine-color-dark-8)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_919a4d88:active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_919a4d88:active{background-color:var(--mantine-color-dark-8)}}.m_e2f5cd4e{--ni-right-section-width-xs:calc(1.0625rem * var(--mantine-scale));--ni-right-section-width-sm:calc(1.5rem * var(--mantine-scale));--ni-right-section-width-md:calc(1.6875rem * var(--mantine-scale));--ni-right-section-width-lg:calc(1.9375rem * var(--mantine-scale));--ni-right-section-width-xl:calc(2.125rem * var(--mantine-scale))}.m_95e17d22{--ni-chevron-size-xs:calc(.625rem * var(--mantine-scale));--ni-chevron-size-sm:calc(.875rem * var(--mantine-scale));--ni-chevron-size-md:calc(1rem * var(--mantine-scale));--ni-chevron-size-lg:calc(1.125rem * var(--mantine-scale));--ni-chevron-size-xl:calc(1.25rem * var(--mantine-scale));--ni-chevron-size:var(--ni-chevron-size-sm);width:100%;height:calc(var(--input-height) - calc(.125rem * var(--mantine-scale)));max-width:calc(var(--ni-chevron-size) * 1.7);flex-direction:column;margin-inline-start:auto;display:flex}.m_80b4b171{--control-border:1px solid var(--input-bd);--control-radius:calc(var(--input-radius) - calc(.0625rem * var(--mantine-scale)));width:100%;height:calc(var(--input-height) / 2 - calc(.0625rem * var(--mantine-scale)));border-inline-start:var(--control-border);color:var(--mantine-color-text);cursor:pointer;background-color:#0000;flex:0 0 50%;justify-content:center;align-items:center;padding:0;display:flex}.m_80b4b171:where(:disabled){cursor:not-allowed;opacity:.6;color:var(--mantine-color-disabled-color);background-color:#0000}.m_e2f5cd4e[data-error] :where(.m_80b4b171){color:var(--mantine-color-error)}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_80b4b171:hover{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_80b4b171:hover{background-color:var(--mantine-color-dark-4)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_80b4b171:active{background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_80b4b171:active{background-color:var(--mantine-color-dark-4)}}.m_80b4b171:where(:first-of-type){border-radius:0;border-start-end-radius:var(--control-radius)}.m_80b4b171:last-of-type{border-radius:0;border-end-end-radius:var(--control-radius)}.m_f62ab2af{contain:layout style;gap:var(--ol-gap,var(--mantine-spacing-xs));flex-wrap:wrap;display:flex}.m_4addd315{--pagination-control-size-xs:calc(1.375rem * var(--mantine-scale));--pagination-control-size-sm:calc(1.625rem * var(--mantine-scale));--pagination-control-size-md:calc(2rem * var(--mantine-scale));--pagination-control-size-lg:calc(2.375rem * var(--mantine-scale));--pagination-control-size-xl:calc(2.75rem * var(--mantine-scale));--pagination-control-size-input-xs:calc(1.875rem * var(--mantine-scale));--pagination-control-size-input-sm:calc(2.25rem * var(--mantine-scale));--pagination-control-size-input-md:calc(2.625rem * var(--mantine-scale));--pagination-control-size-input-lg:calc(3.125rem * var(--mantine-scale));--pagination-control-size-input-xl:calc(3.75rem * var(--mantine-scale));--pagination-control-size:var(--pagination-control-size-md);--pagination-control-fz:var(--mantine-font-size-md);--pagination-active-bg:var(--mantine-primary-color-filled)}.m_4addd315:where([data-layout=responsive]){container-type:inline-size}.m_326d024a{border:calc(.0625rem * var(--mantine-scale)) solid;cursor:pointer;color:var(--mantine-color-text);height:var(--pagination-control-size);min-width:var(--pagination-control-size);font-size:var(--pagination-control-fz);border-radius:var(--pagination-control-radius,var(--mantine-radius-default));justify-content:center;align-items:center;line-height:1;display:flex}.m_326d024a:where([data-with-padding]){padding:calc(var(--pagination-control-size) / 4)}.m_326d024a:where(:disabled,[data-disabled]){cursor:not-allowed;opacity:.4}:where([data-mantine-color-scheme=light]) .m_326d024a{border-color:var(--mantine-color-gray-4);background-color:var(--mantine-color-white)}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_326d024a:hover:where(:not(:disabled,[data-disabled])){background-color:var(--mantine-color-gray-0)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_326d024a:active:where(:not(:disabled,[data-disabled])){background-color:var(--mantine-color-gray-0)}}:where([data-mantine-color-scheme=dark]) .m_326d024a{border-color:var(--mantine-color-dark-4);background-color:var(--mantine-color-dark-6)}@media (hover:hover){:where([data-mantine-color-scheme=dark]) .m_326d024a:hover:where(:not(:disabled,[data-disabled])){background-color:var(--mantine-color-dark-5)}}@media (hover:none){:where([data-mantine-color-scheme=dark]) .m_326d024a:active:where(:not(:disabled,[data-disabled])){background-color:var(--mantine-color-dark-5)}}.m_326d024a:where([data-active]){background-color:var(--pagination-active-bg);border-color:var(--pagination-active-bg);color:var(--pagination-active-color,var(--mantine-color-white))}@media (hover:hover){.m_326d024a:where([data-active]):hover{background-color:var(--pagination-active-bg)}}@media (hover:none){.m_326d024a:where([data-active]):active{background-color:var(--pagination-active-bg)}}.m_4ad7767d{height:var(--pagination-control-size);min-width:var(--pagination-control-size);pointer-events:none;justify-content:center;align-items:center;display:flex}.m_105fdbed{gap:inherit;align-items:center;display:flex}@container (width<=400px){.m_105fdbed{display:none}}.m_10817321{height:var(--pagination-control-size);font-size:var(--pagination-control-fz);white-space:nowrap;justify-content:center;align-items:center;display:none}@container (width<=400px){.m_10817321{display:flex}}.m_f61ca620{--psi-button-size-xs:calc(1.375rem * var(--mantine-scale));--psi-button-size-sm:calc(1.625rem * var(--mantine-scale));--psi-button-size-md:calc(1.75rem * var(--mantine-scale));--psi-button-size-lg:calc(2rem * var(--mantine-scale));--psi-button-size-xl:calc(2.5rem * var(--mantine-scale));--psi-icon-size-xs:calc(1rem * var(--mantine-scale));--psi-icon-size-sm:calc(1.25rem * var(--mantine-scale));--psi-icon-size-md:calc(1.375rem * var(--mantine-scale));--psi-icon-size-lg:calc(1.5rem * var(--mantine-scale));--psi-icon-size-xl:calc(1.75rem * var(--mantine-scale));--psi-button-size:var(--psi-button-size-sm);--psi-icon-size:var(--psi-icon-size-sm)}.m_ccf8da4c{position:relative;overflow:hidden}.m_f2d85dd2{font-family:var(--mantine-font-family);font-size:inherit;line-height:var(--mantine-line-height);width:100%;height:100%;color:inherit;background-color:#0000;border:0;outline:0;padding-inline-start:var(--input-padding-inline-start);padding-inline-end:var(--input-padding-inline-end);position:absolute;inset:0}.m_ccf8da4c[data-disabled] .m_f2d85dd2,.m_f2d85dd2:disabled{cursor:not-allowed}.m_f2d85dd2::placeholder{color:var(--input-placeholder-color);opacity:1}.m_f2d85dd2::-ms-reveal{display:none}.m_b1072d44{width:var(--psi-button-size);height:var(--psi-button-size);min-width:var(--psi-button-size);min-height:var(--psi-button-size)}.m_b1072d44:disabled{display:none}.m_f1cb205a{--pin-input-size-xs:calc(1.875rem * var(--mantine-scale));--pin-input-size-sm:calc(2.25rem * var(--mantine-scale));--pin-input-size-md:calc(2.625rem * var(--mantine-scale));--pin-input-size-lg:calc(3.125rem * var(--mantine-scale));--pin-input-size-xl:calc(3.75rem * var(--mantine-scale));--pin-input-size:var(--pin-input-size-sm)}.m_cb288ead{width:var(--pin-input-size);height:var(--pin-input-size)}@keyframes m_81a374bd{0%{background-position:0 0}to{background-position:calc(2.5rem * var(--mantine-scale)) 0}}@keyframes m_e0fb7a86{0%{background-position:0 0}to{background-position:0 calc(2.5rem * var(--mantine-scale))}}.m_db6d6462{--progress-radius:var(--mantine-radius-default);--progress-size:var(--progress-size-md);--progress-size-xs:calc(.1875rem * var(--mantine-scale));--progress-size-sm:calc(.3125rem * var(--mantine-scale));--progress-size-md:calc(.5rem * var(--mantine-scale));--progress-size-lg:calc(.75rem * var(--mantine-scale));--progress-size-xl:calc(1rem * var(--mantine-scale));height:var(--progress-size);border-radius:var(--progress-radius);display:flex;position:relative;overflow:hidden}:where([data-mantine-color-scheme=light]) .m_db6d6462{background-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_db6d6462{background-color:var(--mantine-color-dark-4)}.m_db6d6462:where([data-orientation=vertical]){height:auto;width:var(--progress-size);flex-direction:column-reverse}.m_2242eb65{background-color:var(--progress-section-color);height:100%;width:var(--progress-section-size);background-size:calc(1.25rem * var(--mantine-scale)) calc(1.25rem * var(--mantine-scale));transition:width var(--progress-transition-duration,.1s) ease;justify-content:center;align-items:center;display:flex;overflow:hidden}.m_2242eb65:where([data-striped]){background-image:linear-gradient(45deg,#ffffff26 25%,#0000 25% 50%,#ffffff26 50% 75%,#0000 75%,#0000)}.m_2242eb65:where([data-animated]){animation:1s linear infinite m_81a374bd}.m_2242eb65:where(:last-of-type){border-radius:0;border-start-end-radius:var(--progress-radius);border-end-end-radius:var(--progress-radius)}.m_2242eb65:where(:first-of-type){border-radius:0;border-start-start-radius:var(--progress-radius);border-end-start-radius:var(--progress-radius)}.m_db6d6462:where([data-orientation=vertical]) .m_2242eb65{width:100%;height:var(--progress-section-size);transition:height var(--progress-transition-duration,.1s) ease}.m_db6d6462:where([data-orientation=vertical]) .m_2242eb65:where([data-striped]){background-image:linear-gradient(135deg,#ffffff26 25%,#0000 25% 50%,#ffffff26 50% 75%,#0000 75%,#0000)}.m_db6d6462:where([data-orientation=vertical]) .m_2242eb65:where([data-animated]){animation:1s linear infinite m_e0fb7a86}.m_db6d6462:where([data-orientation=vertical]) .m_2242eb65:where(:last-of-type){border-radius:0;border-start-start-radius:var(--progress-radius);border-start-end-radius:var(--progress-radius)}.m_db6d6462:where([data-orientation=vertical]) .m_2242eb65:where(:first-of-type){border-radius:0;border-end-end-radius:var(--progress-radius);border-end-start-radius:var(--progress-radius)}.m_91e40b74{color:var(--progress-label-color,var(--mantine-color-white));-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;font-weight:700;font-size:min(calc(var(--progress-size) * .65), calc(1.125rem * var(--mantine-scale)));padding-inline:calc(.25rem * var(--mantine-scale));line-height:1;overflow:hidden}.m_db6d6462:where([data-orientation=vertical]) .m_91e40b74{writing-mode:vertical-rl}.m_9dc8ae12{--card-radius:var(--mantine-radius-default);border-radius:var(--card-radius);cursor:pointer;width:100%;display:block}.m_9dc8ae12 :where(*){cursor:inherit}.m_9dc8ae12:where([data-with-border]){border:calc(.0625rem * var(--mantine-scale)) solid transparent}:where([data-mantine-color-scheme=light]) .m_9dc8ae12:where([data-with-border]){border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_9dc8ae12:where([data-with-border]){border-color:var(--mantine-color-dark-4)}.m_717d7ff6{--radio-size-xs:calc(1rem * var(--mantine-scale));--radio-size-sm:calc(1.25rem * var(--mantine-scale));--radio-size-md:calc(1.5rem * var(--mantine-scale));--radio-size-lg:calc(1.875rem * var(--mantine-scale));--radio-size-xl:calc(2.25rem * var(--mantine-scale));--radio-icon-size-xs:calc(.375rem * var(--mantine-scale));--radio-icon-size-sm:calc(.5rem * var(--mantine-scale));--radio-icon-size-md:calc(.625rem * var(--mantine-scale));--radio-icon-size-lg:calc(.875rem * var(--mantine-scale));--radio-icon-size-xl:calc(1rem * var(--mantine-scale));--radio-icon-size:var(--radio-icon-size-sm);--radio-size:var(--radio-size-sm);--radio-color:var(--mantine-primary-color-filled);--radio-icon-color:var(--mantine-color-white);border:calc(.0625rem * var(--mantine-scale)) solid transparent;width:var(--radio-size);min-width:var(--radio-size);height:var(--radio-size);min-height:var(--radio-size);border-radius:var(--radio-radius,10000px);cursor:var(--mantine-cursor-type);-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;transition:border-color .1s,background-color .1s;display:flex;position:relative}:where([data-mantine-color-scheme=light]) .m_717d7ff6{background-color:var(--mantine-color-white);border-color:var(--mantine-color-gray-4)}:where([data-mantine-color-scheme=dark]) .m_717d7ff6{background-color:var(--mantine-color-dark-6);border-color:var(--mantine-color-dark-4)}.m_717d7ff6[data-checked]{background-color:var(--radio-color);border-color:var(--radio-color)}.m_717d7ff6[data-checked]>.m_3e4da632{opacity:1;color:var(--radio-icon-color);transform:none}.m_717d7ff6[data-disabled]{cursor:not-allowed;background-color:var(--mantine-color-disabled);border-color:var(--mantine-color-disabled-border)}.m_717d7ff6[data-disabled][data-checked]>.m_3e4da632{color:var(--mantine-color-disabled-color)}.m_2980836c[data-checked]:not([data-disabled]){border-color:var(--radio-color);background-color:#0000}.m_2980836c[data-checked]:not([data-disabled])>.m_3e4da632{color:var(--radio-color);opacity:1;transform:none}.m_3e4da632{width:var(--radio-icon-size);height:var(--radio-icon-size);color:#0000;pointer-events:none;transform:translateY(calc(.3125rem * var(--mantine-scale))) scale(.5);opacity:1;transition:transform .1s,opacity .1s;display:block}.m_f3f1af94{--radio-size-xs:calc(1rem * var(--mantine-scale));--radio-size-sm:calc(1.25rem * var(--mantine-scale));--radio-size-md:calc(1.5rem * var(--mantine-scale));--radio-size-lg:calc(1.875rem * var(--mantine-scale));--radio-size-xl:calc(2.25rem * var(--mantine-scale));--radio-size:var(--radio-size-sm);--radio-icon-size-xs:calc(.375rem * var(--mantine-scale));--radio-icon-size-sm:calc(.5rem * var(--mantine-scale));--radio-icon-size-md:calc(.625rem * var(--mantine-scale));--radio-icon-size-lg:calc(.875rem * var(--mantine-scale));--radio-icon-size-xl:calc(1rem * var(--mantine-scale));--radio-icon-size:var(--radio-icon-size-sm);--radio-icon-color:var(--mantine-color-white)}.m_89c4f5e4{width:var(--radio-size);height:var(--radio-size);order:1;position:relative}.m_89c4f5e4:where([data-label-position=left]){order:2}.m_f3ed6b2b{color:var(--radio-icon-color);opacity:var(--radio-icon-opacity,0);translate:-50% -50%;transform:var(--radio-icon-transform,scale(.2) translateY(calc(.625rem * var(--mantine-scale))));pointer-events:none;width:var(--radio-icon-size);height:var(--radio-icon-size);transition:opacity .1s,transform .2s;position:absolute;top:50%;left:50%}.m_8a3dbb89{border:calc(.0625rem * var(--mantine-scale)) solid;appearance:none;width:var(--radio-size);height:var(--radio-size);border-radius:var(--radio-radius,var(--radio-size));cursor:var(--mantine-cursor-type);-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;margin:0;transition-property:background-color,border-color;transition-duration:.1s;transition-timing-function:ease;display:flex;position:relative}:where([data-mantine-color-scheme=light]) .m_8a3dbb89{background-color:var(--mantine-color-white);border-color:var(--mantine-color-gray-4)}:where([data-mantine-color-scheme=dark]) .m_8a3dbb89{background-color:var(--mantine-color-dark-6);border-color:var(--mantine-color-dark-4)}.m_8a3dbb89:checked{background-color:var(--radio-color,var(--mantine-primary-color-filled));border-color:var(--radio-color,var(--mantine-primary-color-filled))}.m_8a3dbb89:checked+.m_f3ed6b2b{--radio-icon-opacity:1;--radio-icon-transform:scale(1)}.m_8a3dbb89:disabled{cursor:not-allowed;background-color:var(--mantine-color-disabled);border-color:var(--mantine-color-disabled-border)}.m_8a3dbb89:disabled+.m_f3ed6b2b{--radio-icon-color:var(--mantine-color-disabled-color)}.m_8a3dbb89:where([data-with-error-styles][data-error]){border-color:var(--mantine-color-error)}.m_1bfe9d39+.m_f3ed6b2b{--radio-icon-color:var(--radio-color)}.m_1bfe9d39:checked:not(:disabled){border-color:var(--radio-color);background-color:#0000}.m_1bfe9d39:checked:not(:disabled)+.m_f3ed6b2b{--radio-icon-color:var(--radio-color);--radio-icon-opacity:1;--radio-icon-transform:none}.m_f8d312f2{--rating-size-xs:calc(.875rem * var(--mantine-scale));--rating-size-sm:calc(1.125rem * var(--mantine-scale));--rating-size-md:calc(1.25rem * var(--mantine-scale));--rating-size-lg:calc(1.75rem * var(--mantine-scale));--rating-size-xl:calc(2rem * var(--mantine-scale));width:max-content;display:flex}.m_f8d312f2:where(:has(input:disabled)){pointer-events:none}.m_61734bb7{transition:transform .1s;position:relative}.m_61734bb7:where([data-active]){z-index:1;transform:scale(1.1)}.m_5662a89a{width:var(--rating-size);height:var(--rating-size);display:block}:where([data-mantine-color-scheme=light]) .m_5662a89a{fill:var(--mantine-color-gray-3);stroke:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_5662a89a{fill:var(--mantine-color-dark-3);stroke:var(--mantine-color-dark-3)}.m_5662a89a:where([data-filled]){fill:var(--rating-color);stroke:var(--rating-color)}.m_211007ba{white-space:nowrap;opacity:0;-webkit-tap-highlight-color:transparent;width:0;height:0;position:absolute;overflow:hidden}.m_211007ba:focus-visible+label{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.m_21342ee4{cursor:pointer;z-index:var(--rating-item-z-index,0);-webkit-tap-highlight-color:transparent;display:block;position:absolute;top:0;left:0}.m_21342ee4:where([data-read-only]){cursor:default}.m_21342ee4:where(:last-of-type){position:relative}.m_fae05d6a{clip-path:var(--rating-symbol-clip-path)}.m_47dd3981{align-items:baseline;display:inline-flex;position:relative;overflow:hidden}.m_47dd3981[data-tabular-numbers]{font-variant-numeric:tabular-nums}.m_ccf525bd{z-index:1;white-space:pre;color:#0000;forced-color-adjust:none;position:absolute;inset:0;overflow:hidden}.m_b301d46e{z-index:2;pointer-events:none;-webkit-user-select:none;user-select:none;width:1ch;height:1em;transition:width var(--rn-duration) var(--rn-timing-function), opacity var(--rn-duration) var(--rn-timing-function);line-height:1;display:inline-block;position:relative;overflow:hidden}.m_b301d46e[data-empty]{opacity:0;width:0}.m_8ae40964{animation:m_18d73873 var(--rn-duration) var(--rn-timing-function);flex-direction:column;display:flex}.m_8ae40964>span{justify-content:center;align-items:center;height:1em;display:flex}.m_47d64bf5{z-index:2;white-space:pre;pointer-events:none;-webkit-user-select:none;user-select:none;transition:opacity var(--rn-duration) var(--rn-timing-function);display:inline-block;position:relative;overflow:hidden}.m_47d64bf5[data-empty]{opacity:0;width:0}@keyframes m_18d73873{0%{transform:var(--rn-roll-from)}to{transform:var(--rn-roll-to)}}.m_1b3c8819{--tooltip-radius:var(--mantine-radius-default);padding:calc(var(--mantine-spacing-xs) / 2) var(--mantine-spacing-xs);pointer-events:none;font-size:var(--mantine-font-size-sm);white-space:nowrap;border-radius:var(--tooltip-radius);position:absolute}:where([data-mantine-color-scheme=light]) .m_1b3c8819{background-color:var(--tooltip-bg,var(--mantine-color-gray-9));color:var(--tooltip-color,var(--mantine-color-white))}:where([data-mantine-color-scheme=dark]) .m_1b3c8819{background-color:var(--tooltip-bg,var(--mantine-color-gray-2));color:var(--tooltip-color,var(--mantine-color-black))}.m_1b3c8819:where([data-multiline]){white-space:normal}.m_1b3c8819:where([data-fixed]){position:fixed}.m_1b3c8819:where([data-interactive]){pointer-events:auto}.m_f898399f{background-color:inherit;z-index:1;border:0}.m_b32e4812{width:var(--rp-size);height:var(--rp-size);min-width:var(--rp-size);min-height:var(--rp-size);--rp-transition-duration:0s;position:relative}.m_d43b5134{width:var(--rp-size);height:var(--rp-size);min-width:var(--rp-size);min-height:var(--rp-size);transform:rotate(calc(var(--rp-start-angle,270deg) - 360deg))}.m_b1ca1fbf{stroke:var(--curve-color,var(--rp-curve-root-color));transition:stroke-dashoffset var(--rp-transition-duration) ease, stroke-dasharray var(--rp-transition-duration) ease, stroke var(--rp-transition-duration)}[data-mantine-color-scheme=light] .m_b1ca1fbf{--rp-curve-root-color:var(--mantine-color-gray-2)}[data-mantine-color-scheme=dark] .m_b1ca1fbf{--rp-curve-root-color:var(--mantine-color-dark-4)}.m_b23f9dc4{top:50%;inset-inline:var(--rp-label-offset);position:absolute;transform:translateY(-50%)}.m_bc8f275{--scroller-control-size:calc(3.125rem * var(--mantine-scale));--scroller-background-color:var(--mantine-color-body);align-items:center;max-width:100%;display:flex;position:relative;overflow:hidden}.m_ee44dece{scrollbar-width:none;-ms-overflow-style:none;-webkit-user-select:none;user-select:none;flex:1;overflow:auto hidden}.m_ee44dece::-webkit-scrollbar{display:none}.m_ee44dece[data-draggable]{cursor:grab}.m_53e4f606{white-space:nowrap;display:inline-flex}.m_47754fc8{width:var(--scroller-control-size);height:var(--scroller-control-size)}.m_53e526ea{width:var(--scroller-control-size);z-index:1;color:var(--mantine-color-dimmed);opacity:1;pointer-events:auto;align-items:center;transition:opacity .2s,color .15s;display:flex;position:absolute;top:0;bottom:0}.m_53e526ea:hover{color:var(--mantine-color-text)}.m_53e526ea:where([data-position=start]){background:linear-gradient(to right, var(--scroller-background-color) 40%, transparent);justify-content:flex-start;inset-inline-start:0}.m_53e526ea:where([data-position=start]) .m_47754fc8{transform:rotate(90deg)}.m_53e526ea:where([data-position=end]){background:linear-gradient(to left, var(--scroller-background-color) 40%, transparent);justify-content:flex-end;inset-inline-end:0}.m_53e526ea:where([data-position=end]) .m_47754fc8{transform:rotate(-90deg)}.m_53e526ea:where([data-hidden]){opacity:0;pointer-events:none}.m_cf365364{--sc-padding-xs:calc(.125rem * var(--mantine-scale)) calc(.375rem * var(--mantine-scale));--sc-padding-sm:calc(.1875rem * var(--mantine-scale)) calc(.625rem * var(--mantine-scale));--sc-padding-md:calc(.25rem * var(--mantine-scale)) calc(.875rem * var(--mantine-scale));--sc-padding-lg:calc(.4375rem * var(--mantine-scale)) calc(1rem * var(--mantine-scale));--sc-padding-xl:calc(.625rem * var(--mantine-scale)) calc(1.25rem * var(--mantine-scale));--sc-transition-duration:.2s;--sc-padding:var(--sc-padding-sm);--sc-transition-timing-function:ease;--sc-font-size:var(--mantine-font-size-sm);border-radius:var(--sc-radius,var(--mantine-radius-default));width:auto;padding:calc(.25rem * var(--mantine-scale));flex-direction:row;display:inline-flex;position:relative;overflow:hidden}.m_cf365364:where([data-full-width]){display:flex}.m_cf365364:where([data-orientation=vertical]){flex-direction:column;width:max-content;display:flex}.m_cf365364:where([data-orientation=vertical]):where([data-full-width]){width:auto}:where([data-mantine-color-scheme=light]) .m_cf365364{background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_cf365364{background-color:var(--mantine-color-dark-8)}.m_9e182ccd{z-index:1;border-radius:max(calc(var(--sc-radius,var(--mantine-radius-default)) - 4px), calc(var(--sc-radius,var(--mantine-radius-default)) / 4));display:block;position:absolute}:where([data-mantine-color-scheme=light]) .m_9e182ccd{box-shadow:var(--sc-shadow,none);background-color:var(--sc-color,var(--mantine-color-white))}:where([data-mantine-color-scheme=dark]) .m_9e182ccd{box-shadow:none;background-color:var(--sc-color,var(--mantine-color-dark-5))}.m_1738fcb2{-webkit-tap-highlight-color:transparent;font-weight:var(--mantine-font-weight-medium);text-align:center;white-space:nowrap;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;border-radius:calc(var(--sc-radius,var(--mantine-radius-default)) - 4px);font-size:var(--sc-font-size);padding:var(--sc-padding);transition:color var(--sc-transition-duration) var(--sc-transition-timing-function);cursor:pointer;outline:var(--segmented-control-outline,none);display:block;overflow:hidden}:where([data-mantine-color-scheme=light]) .m_1738fcb2{color:var(--mantine-color-gray-7)}:where([data-mantine-color-scheme=dark]) .m_1738fcb2{color:var(--mantine-color-dark-1)}.m_1738fcb2:where([data-read-only]){cursor:default}fieldset:disabled .m_1738fcb2,.m_1738fcb2:where([data-disabled]){cursor:not-allowed;color:var(--mantine-color-disabled-color)}:where([data-mantine-color-scheme=light]) .m_1738fcb2:where([data-active]){color:var(--sc-label-color,var(--mantine-color-black))}:where([data-mantine-color-scheme=dark]) .m_1738fcb2:where([data-active]){color:var(--sc-label-color,var(--mantine-color-white))}.m_cf365364:where([data-initialized]) .m_1738fcb2:where([data-active]):before{display:none}.m_1738fcb2:where([data-active]):before{content:"";z-index:0;border-radius:calc(var(--sc-radius,var(--mantine-radius-default)) - 4px);position:absolute;inset:0}:where([data-mantine-color-scheme=light]) .m_1738fcb2:where([data-active]):before{box-shadow:var(--sc-shadow,none);background-color:var(--sc-color,var(--mantine-color-white))}:where([data-mantine-color-scheme=dark]) .m_1738fcb2:where([data-active]):before{box-shadow:none;background-color:var(--sc-color,var(--mantine-color-dark-5))}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_1738fcb2:where(:not([data-disabled],[data-active],[data-read-only])):hover{color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_1738fcb2:where(:not([data-disabled],[data-active],[data-read-only])):hover{color:var(--mantine-color-white)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_1738fcb2:where(:not([data-disabled],[data-active],[data-read-only])):active{color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_1738fcb2:where(:not([data-disabled],[data-active],[data-read-only])):active{color:var(--mantine-color-white)}}@media (hover:hover){fieldset:disabled .m_1738fcb2:hover{color:var(--mantine-color-disabled-color)!important}}@media (hover:none){fieldset:disabled .m_1738fcb2:active{color:var(--mantine-color-disabled-color)!important}}.m_1714d588{white-space:nowrap;opacity:0;width:0;height:0;position:absolute;overflow:hidden}.m_1714d588[data-focus-ring=auto]:focus:focus-visible+.m_1738fcb2,.m_1714d588[data-focus-ring=always]:focus+.m_1738fcb2{--segmented-control-outline:2px solid var(--mantine-primary-color-filled)}.m_69686b9b{z-index:2;transition:border-color var(--sc-transition-duration) var(--sc-transition-timing-function);flex:1;position:relative}.m_cf365364[data-with-items-borders] :where(.m_69686b9b):before{content:"";top:0;bottom:0;background-color:var(--separator-color);width:calc(.0625rem * var(--mantine-scale));transition:background-color var(--sc-transition-duration) var(--sc-transition-timing-function);position:absolute;inset-inline-start:0}.m_69686b9b[data-orientation=vertical]:before{top:0;inset-inline:0;height:calc(.0625rem * var(--mantine-scale));width:auto;bottom:auto}:where([data-mantine-color-scheme=light]) .m_69686b9b{--separator-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_69686b9b{--separator-color:var(--mantine-color-dark-4)}.m_69686b9b:first-of-type:before,[data-mantine-color-scheme] .m_69686b9b[data-active]:before,[data-mantine-color-scheme] .m_69686b9b[data-active]+.m_69686b9b:before{--separator-color:transparent}.m_78882f40{z-index:2;position:relative}.m_fa528724{--scp-filled-segment-color:var(--mantine-primary-color-filled);--scp-transition-duration:0s;--scp-thickness:calc(.75rem * var(--mantine-scale))}:where([data-mantine-color-scheme=light]) .m_fa528724{--scp-empty-segment-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_fa528724{--scp-empty-segment-color:var(--mantine-color-dark-4)}.m_fa528724{width:fit-content;position:relative}.m_62e9e7e2{transform:var(--scp-rotation);display:block;overflow:hidden}.m_c573fb6f{transition:stroke-dashoffset var(--scp-transition-duration) ease, stroke-dasharray var(--scp-transition-duration) ease, stroke-opacity var(--scp-transition-duration) ease, stroke var(--scp-transition-duration)}.m_4fa340f2{text-align:center;z-index:1;margin:0;padding:0;position:absolute;inset-inline:0}.m_4fa340f2:where([data-position=bottom]){padding-inline:calc(var(--scp-thickness) * 2);bottom:0}.m_4fa340f2:where([data-position=bottom]):where([data-orientation=down]){top:0;bottom:auto}.m_4fa340f2:where([data-position=center]){padding-inline:calc(var(--scp-thickness) * 3);top:50%;transform:translateY(-50%)}.m_925c2d2c{container:simple-grid/inline-size}.m_2415a157{grid-template-columns:repeat(var(--sg-cols), minmax(0, 1fr));grid-auto-rows:var(--sg-auto-rows,auto);gap:var(--sg-spacing-y) var(--sg-spacing-x);display:grid}.m_2415a157[data-auto-cols=auto-fill]{grid-template-columns:repeat(auto-fill, minmax(var(--sg-min-col-width), 1fr))}.m_2415a157[data-auto-cols=auto-fit]{grid-template-columns:repeat(auto-fit, minmax(var(--sg-min-col-width), 1fr))}@keyframes m_299c329c{0%,to{opacity:.4}50%{opacity:1}}.m_18320242{height:var(--skeleton-height,auto);width:var(--skeleton-width,100%);border-radius:var(--skeleton-radius,var(--mantine-radius-default));position:relative;transform:translateZ(0)}.m_18320242:where([data-animate]):after{animation:1.5s linear infinite m_299c329c}.m_18320242:where([data-visible]){overflow:hidden}.m_18320242:where([data-visible]):before{content:"";z-index:10;background-color:var(--mantine-color-body);position:absolute;inset:0}.m_18320242:where([data-visible]):after{content:"";z-index:11;position:absolute;inset:0}:where([data-mantine-color-scheme=light]) .m_18320242:where([data-visible]):after{background-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_18320242:where([data-visible]):after{background-color:var(--mantine-color-dark-4)}.m_dd36362e{--slider-size-xs:calc(.25rem * var(--mantine-scale));--slider-size-sm:calc(.375rem * var(--mantine-scale));--slider-size-md:calc(.5rem * var(--mantine-scale));--slider-size-lg:calc(.625rem * var(--mantine-scale));--slider-size-xl:calc(.75rem * var(--mantine-scale));--slider-size:var(--slider-size-md);--slider-radius:calc(62.5rem * var(--mantine-scale));--slider-color:var(--mantine-primary-color-filled);--slider-track-disabled-bg:var(--mantine-color-disabled);-webkit-tap-highlight-color:transparent;height:calc(var(--slider-size) * 2);padding-inline:var(--slider-size);touch-action:none;outline:none;flex-direction:column;align-items:center;display:flex;position:relative}[data-mantine-color-scheme=light] .m_dd36362e{--slider-track-bg:var(--mantine-color-gray-2)}[data-mantine-color-scheme=dark] .m_dd36362e{--slider-track-bg:var(--mantine-color-dark-4)}.m_dd36362e[data-orientation=vertical]{width:calc(var(--slider-size) * 2);height:calc(12.5rem * var(--mantine-scale));padding-inline:0;padding-block:var(--slider-size)}.m_c9357328{top:calc(-2.25rem * var(--mantine-scale));font-size:var(--mantine-font-size-xs);color:var(--mantine-color-white);padding:calc(var(--mantine-spacing-xs) / 2);border-radius:var(--mantine-radius-sm);white-space:nowrap;pointer-events:none;-webkit-user-select:none;user-select:none;touch-action:none;position:absolute}:where([data-mantine-color-scheme=light]) .m_c9357328{background-color:var(--mantine-color-gray-9)}:where([data-mantine-color-scheme=dark]) .m_c9357328{background-color:var(--mantine-color-dark-4)}:where(.m_dd36362e[data-orientation=vertical]) .m_c9357328{top:auto;inset-inline-start:calc(100% + 8px)}.m_c9a9a60a{height:var(--slider-thumb-size);width:var(--slider-thumb-size);border:calc(.25rem * var(--mantine-scale)) solid;cursor:pointer;border-radius:var(--slider-radius);z-index:3;-webkit-user-select:none;user-select:none;touch-action:none;outline-offset:calc(.125rem * var(--mantine-scale));top:50%;left:var(--slider-thumb-offset);justify-content:center;align-items:center;transition:box-shadow .1s,transform .1s;display:flex;position:absolute;transform:translate(-50%,-50%)}:where([dir=rtl]) .m_c9a9a60a{left:auto;right:calc(var(--slider-thumb-offset) - var(--slider-thumb-size))}fieldset:disabled .m_c9a9a60a,.m_c9a9a60a:where([data-disabled]){display:none}.m_c9a9a60a:where([data-dragging]){box-shadow:var(--mantine-shadow-sm);transform:translate(-50%,-50%)scale(1.05)}:where([data-mantine-color-scheme=light]) .m_c9a9a60a{color:var(--slider-color);border-color:var(--slider-color);background-color:var(--mantine-color-white)}:where([data-mantine-color-scheme=dark]) .m_c9a9a60a{color:var(--mantine-color-white);border-color:var(--mantine-color-white);background-color:var(--slider-color)}:where(.m_dd36362e[data-orientation=vertical]) .m_c9a9a60a{top:auto;left:50%;right:auto;bottom:var(--slider-thumb-offset);transform:translate(-50%,50%)}:where(.m_dd36362e[data-orientation=vertical]) .m_c9a9a60a:where([data-dragging]){transform:translate(-50%,50%)scale(1.05)}:where([dir=rtl]) :where(.m_dd36362e[data-orientation=vertical]) .m_c9a9a60a{left:50%;right:auto}.m_a8645c2{width:100%;height:calc(var(--slider-size) * 2);cursor:pointer;align-items:center;display:flex}fieldset:disabled .m_a8645c2,.m_a8645c2:where([data-disabled]){cursor:not-allowed}:where(.m_dd36362e[data-orientation=vertical]) .m_a8645c2{width:calc(var(--slider-size) * 2);flex-direction:column;height:100%}.m_c9ade57f{width:100%;height:var(--slider-size);position:relative}.m_c9ade57f:where([data-inverted]:not([data-disabled])){--track-bg:var(--slider-color)}fieldset:disabled .m_c9ade57f:where([data-inverted]),.m_c9ade57f:where([data-inverted][data-disabled]){--track-bg:var(--slider-track-disabled-bg)}.m_c9ade57f:before{content:"";border-radius:var(--slider-radius);top:0;bottom:0;inset-inline:calc(var(--slider-size) * -1);background-color:var(--track-bg,var(--slider-track-bg));z-index:0;position:absolute}:where(.m_dd36362e[data-orientation=vertical]) .m_c9ade57f{width:var(--slider-size);height:100%}:where(.m_dd36362e[data-orientation=vertical]) .m_c9ade57f:before{inset-inline:0;top:calc(var(--slider-size) * -1);bottom:calc(var(--slider-size) * -1)}.m_38aeed47{z-index:1;background-color:var(--slider-color);border-radius:var(--slider-radius);width:var(--slider-bar-width);top:0;bottom:0;position:absolute;inset-inline-start:var(--slider-bar-offset)}.m_38aeed47:where([data-inverted]){background-color:var(--slider-track-bg)}fieldset:disabled .m_38aeed47:where(:not([data-inverted])),.m_38aeed47:where([data-disabled]:not([data-inverted])){background-color:var(--mantine-color-disabled-color)}:where(.m_dd36362e[data-orientation=vertical]) .m_38aeed47{top:auto;bottom:var(--slider-bar-offset);width:100%;height:var(--slider-bar-width);inset-inline-start:0}.m_b7b0423a{inset-inline-start:calc(var(--mark-offset) - var(--slider-size) / 2);z-index:2;pointer-events:none;height:0;position:absolute;top:0}:where(.m_dd36362e[data-orientation=vertical]) .m_b7b0423a{inset-inline-start:0;top:auto;bottom:calc(var(--mark-offset) + var(--slider-size) / 2);width:0;height:0}.m_dd33bc19{border:calc(.125rem * var(--mantine-scale)) solid;height:var(--slider-size);width:var(--slider-size);border-radius:calc(62.5rem * var(--mantine-scale));background-color:var(--mantine-color-white);pointer-events:none}:where([data-mantine-color-scheme=light]) .m_dd33bc19{border-color:var(--mantine-color-gray-2)}:where([data-mantine-color-scheme=dark]) .m_dd33bc19{border-color:var(--mantine-color-dark-4)}.m_dd33bc19:where([data-filled]){border-color:var(--slider-color)}.m_dd33bc19:where([data-filled]):where([data-disabled]){border-color:var(--mantine-color-disabled-border)}.m_68c77a5b{transform:translate(calc(-50% + var(--slider-size) / 2), calc(var(--mantine-spacing-xs) / 2));font-size:var(--mantine-font-size-sm);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}:where([dir=rtl]) .m_68c77a5b{transform:translate(calc(50% - var(--slider-size) / 2), calc(var(--mantine-spacing-xs) / 2))}:where([data-mantine-color-scheme=light]) .m_68c77a5b{color:var(--mantine-color-gray-6)}:where([data-mantine-color-scheme=dark]) .m_68c77a5b{color:var(--mantine-color-dark-2)}:where(.m_dd36362e[data-orientation=vertical]) .m_68c77a5b{transform:translate(calc(var(--slider-size) + var(--mantine-spacing-xs) / 2), calc(-50% - var(--slider-size) / 2))}.m_19e66008{display:flex}.m_19e66008:where([data-orientation=horizontal]){flex-direction:row}.m_19e66008:where([data-orientation=vertical]){flex-direction:column}.m_19e5428e{flex-grow:0;flex-shrink:1;overflow:auto}.m_27f81bce{flex:0 0 var(--splitter-line-size,calc(.125rem * var(--mantine-scale)));touch-action:none;background-color:var(--splitter-handle-color,var(--mantine-color-body));outline:none;justify-content:center;align-items:center;display:flex;position:relative}.m_27f81bce:where([data-orientation=horizontal]){cursor:col-resize}.m_27f81bce:where([data-orientation=vertical]){cursor:row-resize}.m_22feb770{z-index:1;border-radius:calc(62.5rem * var(--mantine-scale));color:var(--mantine-color-dimmed);justify-content:center;align-items:center;transition:color .1s;display:flex;position:absolute}:where([data-mantine-color-scheme=light]) .m_22feb770{background-color:var(--mantine-color-white);border:calc(.0625rem * var(--mantine-scale)) solid var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_22feb770{background-color:var(--mantine-color-dark-6);border:calc(.0625rem * var(--mantine-scale)) solid var(--mantine-color-dark-4)}.m_22feb770:where([data-orientation=horizontal]){width:calc(.75rem * var(--mantine-scale));height:calc(3.75rem * var(--mantine-scale))}.m_22feb770:where([data-orientation=vertical]){width:calc(3.75rem * var(--mantine-scale));height:calc(.75rem * var(--mantine-scale))}.m_22feb770>svg{width:100%;height:100%}.m_27f81bce:focus-visible .m_22feb770{box-shadow:0 0 0 calc(.125rem * var(--mantine-scale)) var(--mantine-primary-color-filled)}.m_559cce2d{position:relative}.m_559cce2d:where([data-has-spoiler]){margin-bottom:calc(1.5rem * var(--mantine-scale))}.m_b912df4e{transition:max-height var(--spoiler-transition-duration,.2s) ease;flex-direction:column;display:flex;overflow:hidden}.m_b9131032{inset-inline-start:0;height:calc(1.5rem * var(--mantine-scale));position:absolute;top:100%}.m_6d731127{align-items:var(--stack-align,stretch);justify-content:var(--stack-justify,flex-start);gap:var(--stack-gap,var(--mantine-spacing-md));flex-direction:column;display:flex}.m_cbb4ea7e{--stepper-icon-size-xs:calc(2.125rem * var(--mantine-scale));--stepper-icon-size-sm:calc(2.25rem * var(--mantine-scale));--stepper-icon-size-md:calc(2.625rem * var(--mantine-scale));--stepper-icon-size-lg:calc(3rem * var(--mantine-scale));--stepper-icon-size-xl:calc(3.25rem * var(--mantine-scale));--stepper-icon-size:var(--stepper-icon-size-md);--stepper-color:var(--mantine-primary-color-filled);--stepper-content-padding:var(--mantine-spacing-md);--stepper-spacing:var(--mantine-spacing-md);--stepper-radius:calc(62.5rem * var(--mantine-scale));--stepper-fz:var(--mantine-font-size-md);--stepper-outline-thickness:calc(.125rem * var(--mantine-scale))}[data-mantine-color-scheme=light] .m_cbb4ea7e{--stepper-outline-color:var(--mantine-color-gray-2)}[data-mantine-color-scheme=dark] .m_cbb4ea7e{--stepper-outline-color:var(--mantine-color-dark-5)}.m_aaf89d0b{flex-wrap:nowrap;align-items:center;display:flex}.m_aaf89d0b:where([data-wrap]){gap:var(--mantine-spacing-md) 0;flex-wrap:wrap}.m_aaf89d0b:where([data-label-position=bottom]){align-items:flex-start}.m_aaf89d0b:where([data-orientation=vertical]){flex-direction:column}.m_aaf89d0b:where([data-orientation=vertical]):where([data-icon-position=left]){align-items:flex-start}.m_aaf89d0b:where([data-orientation=vertical]):where([data-icon-position=right]){align-items:flex-end}.m_aaf89d0b:where([data-orientation=horizontal]){flex-direction:row}.m_2a371ac9{height:var(--stepper-outline-thickness);margin-inline:var(--mantine-spacing-md);background-color:var(--stepper-outline-color);flex:1;transition:background-color .15s}.m_2a371ac9:where([data-active]){background-color:var(--stepper-color)}.m_aaf89d0b:where([data-label-position=bottom]) .m_2a371ac9{margin-top:calc((var(--stepper-icon-size) - var(--stepper-outline-thickness)) / 2)}.m_78da155d{padding-top:var(--stepper-content-padding)}.m_cbb57068{--step-color:var(--stepper-color);cursor:default;display:flex}.m_cbb57068:where([data-allow-click]){cursor:pointer}.m_cbb57068:where([data-icon-position=left]){flex-direction:row}.m_cbb57068:where([data-icon-position=right]){flex-direction:row-reverse}.m_cbb57068:where([data-label-position=bottom]){min-width:var(--stepper-icon-size);max-width:calc(var(--stepper-icon-size) * 4);flex-direction:column;align-items:center;overflow:visible}.m_cbb57068:where([data-label-position=bottom]):where([data-icon-position=right]){flex-direction:column}.m_f56b1e2c{align-items:center}.m_833edb7e{--separator-spacing:calc(var(--mantine-spacing-xs) / 2);min-height:calc(var(--stepper-icon-size) + var(--mantine-spacing-xl) + var(--separator-spacing));margin-top:var(--separator-spacing);justify-content:flex-start;overflow:hidden}.m_833edb7e:where(:first-of-type){margin-top:0}.m_833edb7e:where(:last-of-type){min-height:auto}.m_833edb7e:where(:last-of-type) .m_6496b3f3{display:none}.m_818e70b{position:relative}.m_6496b3f3{top:calc(var(--stepper-icon-size) + var(--separator-spacing));border-inline-start:var(--stepper-outline-thickness) solid var(--stepper-outline-color);height:100vh;position:absolute;inset-inline-start:calc(var(--stepper-icon-size) / 2)}.m_6496b3f3:where([data-active]){border-color:var(--stepper-color)}.m_1959ad01{height:var(--stepper-icon-size);width:var(--stepper-icon-size);min-height:var(--stepper-icon-size);min-width:var(--stepper-icon-size);border-radius:var(--stepper-radius);font-size:var(--stepper-fz);border:var(--stepper-outline-thickness) solid var(--stepper-outline-color);background-color:var(--stepper-outline-color);justify-content:center;align-items:center;font-weight:700;transition:background-color .15s,border-color .15s;display:flex;position:relative}:where([data-mantine-color-scheme=light]) .m_1959ad01{color:var(--mantine-color-gray-7)}:where([data-mantine-color-scheme=dark]) .m_1959ad01{color:var(--mantine-color-dark-1)}.m_1959ad01:where([data-progress]){border-color:var(--step-color)}.m_1959ad01:where([data-completed]){color:var(--stepper-icon-color,var(--mantine-color-white));background-color:var(--step-color);border-color:var(--step-color)}.m_8faaac38{display:flex}.m_a79331dc{color:var(--stepper-icon-color,var(--mantine-color-white));justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.m_1956aa2a{flex-direction:column;display:flex}.m_1956aa2a:where([data-icon-position=left]){margin-inline-start:var(--mantine-spacing-sm)}.m_1956aa2a:where([data-icon-position=right]){text-align:end;margin-inline-end:var(--mantine-spacing-sm)}.m_cbb57068:where([data-label-position=bottom]) .m_1956aa2a{text-align:center;margin:calc(var(--mantine-spacing-xs) / 2) 0 0;align-items:center}.m_12051f6c{font-weight:var(--mantine-font-weight-medium);font-size:var(--stepper-fz);line-height:1}.m_164eea74{margin-top:calc(var(--stepper-spacing) / 3);margin-bottom:calc(var(--stepper-spacing) / 3);font-size:calc(var(--stepper-fz) - calc(.125rem * var(--mantine-scale)));color:var(--mantine-color-dimmed);line-height:1}.m_5f93f3bb{--switch-height-xs:calc(1rem * var(--mantine-scale));--switch-height-sm:calc(1.25rem * var(--mantine-scale));--switch-height-md:calc(1.5rem * var(--mantine-scale));--switch-height-lg:calc(1.875rem * var(--mantine-scale));--switch-height-xl:calc(2.25rem * var(--mantine-scale));--switch-width-xs:calc(2rem * var(--mantine-scale));--switch-width-sm:calc(2.375rem * var(--mantine-scale));--switch-width-md:calc(2.875rem * var(--mantine-scale));--switch-width-lg:calc(3.5rem * var(--mantine-scale));--switch-width-xl:calc(4.5rem * var(--mantine-scale));--switch-thumb-size-xs:calc(.75rem * var(--mantine-scale));--switch-thumb-size-sm:calc(.875rem * var(--mantine-scale));--switch-thumb-size-md:calc(1.125rem * var(--mantine-scale));--switch-thumb-size-lg:calc(1.375rem * var(--mantine-scale));--switch-thumb-size-xl:calc(1.75rem * var(--mantine-scale));--switch-label-font-size-xs:calc(.3125rem * var(--mantine-scale));--switch-label-font-size-sm:calc(.375rem * var(--mantine-scale));--switch-label-font-size-md:calc(.4375rem * var(--mantine-scale));--switch-label-font-size-lg:calc(.5625rem * var(--mantine-scale));--switch-label-font-size-xl:calc(.6875rem * var(--mantine-scale));--switch-track-label-padding-xs:calc(.125rem * var(--mantine-scale));--switch-track-label-padding-sm:calc(.15625rem * var(--mantine-scale));--switch-track-label-padding-md:calc(.1875rem * var(--mantine-scale));--switch-track-label-padding-lg:calc(.1875rem * var(--mantine-scale));--switch-track-label-padding-xl:calc(.21875rem * var(--mantine-scale));--switch-height:var(--switch-height-sm);--switch-width:var(--switch-width-sm);--switch-thumb-size:var(--switch-thumb-size-sm);--switch-label-font-size:var(--switch-label-font-size-sm);--switch-track-label-padding:var(--switch-track-label-padding-sm);--switch-radius:calc(62.5rem * var(--mantine-scale));--switch-color:var(--mantine-primary-color-filled);--switch-disabled-color:var(--mantine-color-disabled);position:relative}.m_926b4011{opacity:0;white-space:nowrap;width:100%;height:100%;margin:0;padding:0;position:absolute;overflow:hidden}.m_9307d992{-webkit-tap-highlight-color:transparent;cursor:var(--switch-cursor,var(--mantine-cursor-type));border-radius:var(--switch-radius);background-color:var(--switch-bg);height:var(--switch-height);min-width:var(--switch-width);appearance:none;font-size:var(--switch-label-font-size);font-weight:var(--mantine-font-weight-medium);order:var(--switch-order,1);-webkit-user-select:none;user-select:none;z-index:0;color:var(--switch-text-color);align-items:center;margin:0;line-height:0;transition:background-color .15s,border-color .15s;display:flex;position:relative;overflow:hidden}.m_9307d992:where([data-without-labels]){width:var(--switch-width)}.m_926b4011:focus-visible+.m_9307d992{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.m_926b4011:checked+.m_9307d992{--switch-bg:var(--switch-color);--switch-text-color:var(--mantine-color-white)}.m_926b4011:disabled+.m_9307d992,.m_926b4011[data-disabled]+.m_9307d992{--switch-bg:var(--switch-disabled-color);--switch-cursor:not-allowed}[data-mantine-color-scheme=light] .m_9307d992{--switch-bg:var(--mantine-color-gray-3);--switch-text-color:var(--mantine-color-gray-6)}[data-mantine-color-scheme=dark] .m_9307d992{--switch-bg:var(--mantine-color-dark-5);--switch-text-color:var(--mantine-color-dark-1)}.m_9307d992[data-label-position=left]{--switch-order:2}.m_93039a1d{z-index:1;border-radius:var(--switch-radius);background-color:var(--switch-thumb-bg,var(--mantine-color-white));height:var(--switch-thumb-size);width:var(--switch-thumb-size);transition:inset-inline-start .15s;display:flex;position:absolute;inset-inline-start:var(--switch-thumb-start,var(--switch-track-label-padding))}.m_93039a1d:where([data-with-thumb-indicator]):before{content:"";background-color:var(--switch-bg);border-radius:var(--switch-radius);width:40%;height:40%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.m_93039a1d>*{margin:auto}.m_926b4011:checked+*>.m_93039a1d{--switch-thumb-start:calc(100% - var(--switch-thumb-size) - var(--switch-track-label-padding))}.m_926b4011:disabled+*>.m_93039a1d,.m_926b4011[data-disabled]+*>.m_93039a1d{--switch-thumb-bg:var(--switch-thumb-bg-disabled)}[data-mantine-color-scheme=light] .m_93039a1d{--switch-thumb-bg-disabled:var(--mantine-color-gray-0)}[data-mantine-color-scheme=dark] .m_93039a1d{--switch-thumb-bg-disabled:var(--mantine-color-dark-3)}.m_8277e082{height:100%;min-width:calc(var(--switch-width) - var(--switch-thumb-size));padding-inline:var(--switch-track-label-padding);place-content:center;margin-inline-start:calc(var(--switch-thumb-size) + var(--switch-track-label-padding));transition:margin .15s;display:grid}.m_926b4011:checked+*>.m_8277e082{margin-inline-start:0;margin-inline-end:calc(var(--switch-thumb-size) + var(--switch-track-label-padding))}.m_b23fa0ef{border-collapse:collapse;border-spacing:0;width:100%;line-height:var(--mantine-line-height);font-size:var(--mantine-font-size-sm);table-layout:var(--table-layout,auto);caption-side:var(--table-caption-side,bottom);border:none}:where([data-mantine-color-scheme=light]) .m_b23fa0ef{--table-hover-color:var(--mantine-color-gray-1);--table-striped-color:var(--mantine-color-gray-0);--table-border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_b23fa0ef{--table-hover-color:var(--mantine-color-dark-5);--table-striped-color:var(--mantine-color-dark-6);--table-border-color:var(--mantine-color-dark-4)}.m_b23fa0ef:where([data-with-table-border]){border:calc(.0625rem * var(--mantine-scale)) solid var(--table-border-color)}.m_b23fa0ef:where([data-tabular-nums]){font-variant-numeric:tabular-nums}.m_b23fa0ef:where([data-variant=vertical]) :where(.m_4e7aa4f3){font-weight:var(--mantine-font-weight-medium)}:where([data-mantine-color-scheme=light]) .m_b23fa0ef:where([data-variant=vertical]) :where(.m_4e7aa4f3){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_b23fa0ef:where([data-variant=vertical]) :where(.m_4e7aa4f3){background-color:var(--mantine-color-dark-6)}.m_4e7aa4f3{text-align:start}.m_4e7aa4fd{background-color:#0000;border-bottom:none}@media (hover:hover){.m_4e7aa4fd:hover:where([data-hover]){background-color:var(--tr-hover-bg)}}@media (hover:none){.m_4e7aa4fd:active:where([data-hover]){background-color:var(--tr-hover-bg)}}.m_4e7aa4fd:where([data-with-row-border]){border-bottom:calc(.0625rem * var(--mantine-scale)) solid var(--table-border-color)}.m_4e7aa4ef,.m_4e7aa4f3{padding:var(--table-vertical-spacing) var(--table-horizontal-spacing,var(--mantine-spacing-xs))}.m_4e7aa4ef:where([data-with-column-border]:not(:first-child)),.m_4e7aa4f3:where([data-with-column-border]:not(:first-child)){border-inline-start:calc(.0625rem * var(--mantine-scale)) solid var(--table-border-color)}.m_4e7aa4ef:where([data-with-column-border]:not(:last-child)),.m_4e7aa4f3:where([data-with-column-border]:not(:last-child)){border-inline-end:calc(.0625rem * var(--mantine-scale)) solid var(--table-border-color)}.m_b2404537>:where(tr):where([data-with-row-border]:last-of-type){border-bottom:none}.m_b2404537>:where(tr):where([data-striped=odd]:nth-of-type(odd)),.m_b2404537>:where(tr):where([data-striped=even]:nth-of-type(2n)){background-color:var(--table-striped-color)}.m_b2404537>:where(tr)[data-hover]{--tr-hover-bg:var(--table-highlight-on-hover-color,var(--table-hover-color))}.m_b242d975{top:var(--table-sticky-header-offset,0);z-index:3}.m_b242d975:where([data-sticky]){position:sticky}.m_b242d975:where([data-sticky]) :where(.m_4e7aa4f3){top:var(--table-sticky-header-offset,0);background-color:var(--mantine-color-body);position:sticky}.m_b242d975:where([data-sticky]) :where(.m_4e7aa4fd[data-with-row-border]){border-bottom:none}.m_b242d975:where([data-sticky]) :where(.m_4e7aa4fd[data-with-row-border]) :where(.m_4e7aa4f3){box-shadow:inset 0 -1px 0 var(--table-border-color)}.m_b242d975:where([data-sticky]) :where(.m_4e7aa4f3[data-with-column-border]){border-inline:none}.m_b242d975:where([data-sticky]) :where(.m_4e7aa4f3[data-with-column-border]:not(:first-child)):before{content:"";width:calc(.0625rem * var(--mantine-scale));background-color:var(--table-border-color);position:absolute;inset-block:0;inset-inline-start:calc(-.03125rem * var(--mantine-scale))}:where([data-with-table-border]) .m_b242d975[data-sticky]{top:var(--table-sticky-header-offset,0);z-index:4;border-top:none;position:sticky}:where([data-with-table-border]) .m_b242d975[data-sticky]:before{content:"";left:0;top:calc(-.03125rem * var(--mantine-scale));width:100%;height:calc(.0625rem * var(--mantine-scale));background-color:var(--table-border-color);z-index:5;display:block;position:absolute}:where([data-with-table-border]) .m_b242d975[data-sticky] .m_4e7aa4f3:first-child{border-top:none}.m_9e5a3ac7{color:var(--mantine-color-dimmed)}.m_9e5a3ac7:where([data-side=top]){margin-bottom:var(--mantine-spacing-xs)}.m_9e5a3ac7:where([data-side=bottom]){margin-top:var(--mantine-spacing-xs)}.m_a100c15{overflow-x:var(--table-overflow)}.m_62259741{min-width:var(--table-min-width);max-height:var(--table-max-height)}.m_bcaa9990{--toc-depth-offset:.8em;flex-direction:column;display:flex}.m_375a65ef{font-size:var(--toc-size,var(--mantine-font-size-md));border-radius:var(--toc-radius,var(--mantine-radius-default));padding:.3em .8em;padding-left:max(calc(var(--depth-offset) * var(--toc-depth-offset)), .8em);display:block}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_375a65ef:where(:hover):where(:not([data-variant=none])){background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_375a65ef:where(:hover):where(:not([data-variant=none])){background-color:var(--mantine-color-dark-5)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_375a65ef:where(:active):where(:not([data-variant=none])){background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_375a65ef:where(:active):where(:not([data-variant=none])){background-color:var(--mantine-color-dark-5)}}.m_375a65ef:where([data-active]){background-color:var(--toc-bg);color:var(--toc-color)}[data-mantine-color-scheme=light] .m_89d60db1{--tab-border-color:var(--mantine-color-gray-3)}[data-mantine-color-scheme=dark] .m_89d60db1{--tab-border-color:var(--mantine-color-dark-4)}.m_89d60db1{display:var(--tabs-display);flex-direction:var(--tabs-flex-direction);--tabs-list-direction:row;--tabs-panel-grow:unset;--tabs-display:block;--tabs-flex-direction:row;--tabs-list-border-width:0;--tabs-list-border-size:0 0 var(--tabs-list-border-width) 0;--tabs-list-gap:unset;--tabs-list-line-bottom:0;--tabs-list-line-top:unset;--tabs-list-line-start:0;--tabs-list-line-end:0;--tab-radius:var(--tabs-radius) var(--tabs-radius) 0 0;--tab-border-width:0 0 var(--tabs-list-border-width) 0}.m_89d60db1[data-inverted]{--tabs-list-line-bottom:unset;--tabs-list-line-top:0;--tab-radius:0 0 var(--tabs-radius) var(--tabs-radius);--tab-border-width:var(--tabs-list-border-width) 0 0 0}.m_89d60db1[data-inverted] .m_576c9d4:before{top:0;bottom:unset}.m_89d60db1[data-orientation=vertical]{--tabs-list-line-start:unset;--tabs-list-line-end:0;--tabs-list-line-top:0;--tabs-list-line-bottom:0;--tabs-list-border-size:0 var(--tabs-list-border-width) 0 0;--tab-border-width:0 var(--tabs-list-border-width) 0 0;--tab-radius:var(--tabs-radius) 0 0 var(--tabs-radius);--tabs-list-direction:column;--tabs-panel-grow:1;--tabs-display:flex}[dir=rtl] .m_89d60db1[data-orientation=vertical]{--tabs-list-border-size:0 0 0 var(--tabs-list-border-width);--tab-border-width:0 0 0 var(--tabs-list-border-width);--tab-radius:0 var(--tabs-radius) var(--tabs-radius) 0}.m_89d60db1[data-orientation=vertical][data-placement=right]{--tabs-flex-direction:row-reverse;--tabs-list-line-start:0;--tabs-list-line-end:unset;--tabs-list-border-size:0 0 0 var(--tabs-list-border-width);--tab-border-width:0 0 0 var(--tabs-list-border-width);--tab-radius:0 var(--tabs-radius) var(--tabs-radius) 0}[dir=rtl] .m_89d60db1[data-orientation=vertical][data-placement=right]{--tabs-list-border-size:0 var(--tabs-list-border-width) 0 0;--tab-border-width:0 var(--tabs-list-border-width) 0 0;--tab-radius:var(--tabs-radius) 0 0 var(--tabs-radius)}.m_89d60db1[data-variant=default]{--tabs-list-border-width:calc(.125rem * var(--mantine-scale))}[data-mantine-color-scheme=light] .m_89d60db1[data-variant=default]{--tab-hover-color:var(--mantine-color-gray-0)}[data-mantine-color-scheme=dark] .m_89d60db1[data-variant=default]{--tab-hover-color:var(--mantine-color-dark-6)}.m_89d60db1[data-variant=outline]{--tabs-list-border-width:calc(.0625rem * var(--mantine-scale))}.m_89d60db1[data-variant=pills]{--tabs-list-gap:calc(var(--mantine-spacing-sm) / 2)}[data-mantine-color-scheme=light] .m_89d60db1[data-variant=pills]{--tab-hover-color:var(--mantine-color-gray-0)}[data-mantine-color-scheme=dark] .m_89d60db1[data-variant=pills]{--tab-hover-color:var(--mantine-color-dark-6)}.m_89d33d6d{justify-content:var(--tabs-justify,flex-start);flex-wrap:wrap;flex-direction:var(--tabs-list-direction);gap:var(--tabs-list-gap);display:flex}.m_89d33d6d:where([data-grow]) .m_4ec4dce6{flex:1}.m_b0c91715{flex-grow:var(--tabs-panel-grow)}.m_4ec4dce6{padding:var(--mantine-spacing-xs) var(--mantine-spacing-md);font-size:var(--mantine-font-size-sm);white-space:nowrap;z-index:0;-webkit-user-select:none;user-select:none;align-items:center;line-height:1;display:flex;position:relative}.m_4ec4dce6:where(:disabled,[data-disabled]){opacity:.5;cursor:not-allowed}.m_4ec4dce6:focus{z-index:1}.m_fc420b1f{justify-content:center;align-items:center;display:flex}.m_fc420b1f:where([data-position=left]:not(:only-child)){margin-inline-end:var(--mantine-spacing-xs)}.m_fc420b1f:where([data-position=right]:not(:only-child)){margin-inline-start:var(--mantine-spacing-xs)}.m_42bbd1ae{text-align:center;flex:1}.m_576c9d4{position:relative}.m_576c9d4:before{content:"";border:1px solid var(--tab-border-color);bottom:var(--tabs-list-line-bottom);inset-inline-start:var(--tabs-list-line-start);inset-inline-end:var(--tabs-list-line-end);top:var(--tabs-list-line-top);position:absolute}.m_539e827b{border-radius:var(--tab-radius);border-width:var(--tab-border-width);background-color:#0000;border-style:solid;border-color:#0000}.m_539e827b:where([data-active]){border-color:var(--tabs-color)}@media (hover:hover){.m_539e827b:hover{background-color:var(--tab-hover-color)}.m_539e827b:hover:where(:not([data-active])){border-color:var(--tab-border-color)}}@media (hover:none){.m_539e827b:active{background-color:var(--tab-hover-color)}.m_539e827b:active:where(:not([data-active])){border-color:var(--tab-border-color)}}@media (hover:hover){.m_539e827b:disabled:hover,.m_539e827b[data-disabled]:hover{background-color:#0000}}@media (hover:none){.m_539e827b:disabled:active,.m_539e827b[data-disabled]:active{background-color:#0000}}.m_6772fbd5{position:relative}.m_6772fbd5:before{content:"";border-color:var(--tab-border-color);border-width:var(--tabs-list-border-size);bottom:var(--tabs-list-line-bottom);inset-inline-start:var(--tabs-list-line-start);inset-inline-end:var(--tabs-list-line-end);top:var(--tabs-list-line-top);border-style:solid;position:absolute}.m_b59ab47c{border-top:calc(.0625rem * var(--mantine-scale)) solid transparent;border-bottom:calc(.0625rem * var(--mantine-scale)) solid transparent;border-inline:calc(.0625rem * var(--mantine-scale)) solid transparent;border-top-color:var(--tab-border-top-color);border-bottom-color:var(--tab-border-bottom-color);border-radius:var(--tab-radius);--tab-border-bottom-color:transparent;--tab-border-top-color:transparent;--tab-border-inline-end-color:transparent;--tab-border-inline-start-color:transparent;position:relative}.m_b59ab47c:where([data-active]):before{content:"";background-color:var(--tab-border-color);bottom:var(--tab-before-bottom,calc(-.0625rem * var(--mantine-scale)));inset-inline-start:var(--tab-before-start,calc(-.0625rem * var(--mantine-scale)));inset-inline-end:var(--tab-before-end,auto);top:var(--tab-before-top,auto);width:calc(.0625rem * var(--mantine-scale));height:calc(.0625rem * var(--mantine-scale));position:absolute}.m_b59ab47c:where([data-active]):after{content:"";background-color:var(--tab-border-color);bottom:var(--tab-after-bottom,calc(-.0625rem * var(--mantine-scale)));inset-inline-start:var(--tab-after-start,auto);inset-inline-end:var(--tab-after-end,calc(-.0625rem * var(--mantine-scale)));top:var(--tab-after-top,auto);width:calc(.0625rem * var(--mantine-scale));height:calc(.0625rem * var(--mantine-scale));position:absolute}.m_b59ab47c:where([data-active]){border-top-color:var(--tab-border-top-color);border-bottom-color:var(--tab-border-bottom-color);border-inline-start-color:var(--tab-border-inline-start-color);border-inline-end-color:var(--tab-border-inline-end-color);--tab-border-top-color:var(--tab-border-color);--tab-border-inline-start-color:var(--tab-border-color);--tab-border-inline-end-color:var(--tab-border-color);--tab-border-bottom-color:var(--mantine-color-body)}.m_b59ab47c:where([data-active])[data-inverted]{--tab-border-bottom-color:var(--tab-border-color);--tab-border-top-color:var(--mantine-color-body);--tab-before-bottom:auto;--tab-before-top:calc(-.0625rem * var(--mantine-scale));--tab-after-bottom:auto;--tab-after-top:calc(-.0625rem * var(--mantine-scale))}.m_b59ab47c:where([data-active])[data-orientation=vertical][data-placement=left]{--tab-border-inline-end-color:var(--mantine-color-body);--tab-border-inline-start-color:var(--tab-border-color);--tab-border-bottom-color:var(--tab-border-color);--tab-before-end:calc(-.0625rem * var(--mantine-scale));--tab-before-start:auto;--tab-before-bottom:auto;--tab-before-top:calc(-.0625rem * var(--mantine-scale));--tab-after-start:auto;--tab-after-end:calc(-.0625rem * var(--mantine-scale))}.m_b59ab47c:where([data-active])[data-orientation=vertical][data-placement=right]{--tab-border-inline-start-color:var(--mantine-color-body);--tab-border-inline-end-color:var(--tab-border-color);--tab-border-bottom-color:var(--tab-border-color);--tab-before-start:calc(-.0625rem * var(--mantine-scale));--tab-before-end:auto;--tab-before-bottom:auto;--tab-before-top:calc(-.0625rem * var(--mantine-scale));--tab-after-end:auto;--tab-after-start:calc(-.0625rem * var(--mantine-scale))}.m_c3381914{border-radius:var(--tabs-radius);background-color:var(--tab-bg);color:var(--tab-color);--tab-bg:transparent;--tab-color:inherit}@media (hover:hover){.m_c3381914:not([data-disabled]):hover{--tab-bg:var(--tab-hover-color)}}@media (hover:none){.m_c3381914:not([data-disabled]):active{--tab-bg:var(--tab-hover-color)}}.m_c3381914[data-active][data-active]{--tab-bg:var(--tabs-color);--tab-color:var(--tabs-text-color,var(--mantine-color-white))}@media (hover:hover){.m_c3381914[data-active][data-active]:hover{--tab-bg:var(--tabs-color)}}@media (hover:none){.m_c3381914[data-active][data-active]:active{--tab-bg:var(--tabs-color)}}.m_7341320d{--ti-size-xs:calc(1.125rem * var(--mantine-scale));--ti-size-sm:calc(1.375rem * var(--mantine-scale));--ti-size-md:calc(1.75rem * var(--mantine-scale));--ti-size-lg:calc(2.125rem * var(--mantine-scale));--ti-size-xl:calc(2.75rem * var(--mantine-scale));--ti-size:var(--ti-size-md);-webkit-user-select:none;user-select:none;width:var(--ti-size);height:var(--ti-size);min-width:var(--ti-size);min-height:var(--ti-size);border-radius:var(--ti-radius,var(--mantine-radius-default));background:var(--ti-bg,var(--mantine-primary-color-filled));color:var(--ti-color,var(--mantine-color-white));border:var(--ti-bd,1px solid transparent);justify-content:center;align-items:center;line-height:1;display:inline-flex;position:relative}.m_43657ece{--offset:calc(var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2);--tl-bullet-size:calc(1.25rem * var(--mantine-scale));--tl-line-width:calc(.25rem * var(--mantine-scale));--tl-radius:calc(62.5rem * var(--mantine-scale));--tl-color:var(--mantine-primary-color-filled)}.m_43657ece:where(:not([data-opposite])):where([data-align=left]){padding-inline-start:var(--offset)}.m_43657ece:where(:not([data-opposite])):where([data-align=right]){padding-inline-end:var(--offset)}.m_2ebe8099{font-weight:var(--mantine-font-weight-medium);margin-bottom:calc(var(--mantine-spacing-xs) / 2);line-height:1}.m_436178ff{--item-border:var(--tl-line-width) var(--tli-border-style,solid) var(--item-border-color);color:var(--mantine-color-text);position:relative}.m_436178ff:before{content:"";pointer-events:none;top:0;inset-inline-start:var(--timeline-line-start,0);inset-inline-end:var(--timeline-line-end,0);bottom:calc(var(--mantine-spacing-xl) * -1);border-inline-start:var(--item-border);display:var(--timeline-line-display,none);position:absolute}.m_43657ece:where(:not([data-opposite]))[data-align=left] .m_436178ff:before{--timeline-line-start:calc(var(--tl-line-width) * -1);--timeline-line-end:auto}.m_43657ece:where(:not([data-opposite]))[data-align=right] .m_436178ff:before{--timeline-line-start:auto;--timeline-line-end:calc(var(--tl-line-width) * -1)}.m_43657ece:where([data-opposite]) .m_436178ff:before{--timeline-line-start:calc(50% - var(--tl-line-width) / 2);--timeline-line-end:auto}.m_43657ece:where(:not([data-opposite])):where([data-align=left]) .m_436178ff{text-align:start;padding-inline-start:var(--offset)}.m_43657ece:where(:not([data-opposite])):where([data-align=right]) .m_436178ff{text-align:end;padding-inline-end:var(--offset)}.m_43657ece:where([data-opposite]) .m_436178ff{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);display:grid}:where([data-mantine-color-scheme=light]) .m_436178ff{--item-border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_436178ff{--item-border-color:var(--mantine-color-dark-4)}.m_436178ff:where([data-line-active]):before{border-color:var(--tli-color,var(--tl-color))}.m_436178ff:where(:not(:last-of-type)){--timeline-line-display:block}.m_436178ff:where(:not(:first-of-type)){margin-top:var(--mantine-spacing-xl)}.m_8affcee1{width:var(--tl-bullet-size);height:var(--tl-bullet-size);border-radius:var(--tli-radius,var(--tl-radius));border:var(--tl-line-width) solid;background-color:var(--mantine-color-body);color:var(--mantine-color-text);justify-content:center;align-items:center;display:flex;position:absolute;top:0}:where([data-mantine-color-scheme=light]) .m_8affcee1{border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_8affcee1{border-color:var(--mantine-color-dark-4)}.m_43657ece:where(:not([data-opposite])):where([data-align=left]) .m_8affcee1{inset-inline-start:calc((var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2) * -1);inset-inline-end:auto}.m_43657ece:where(:not([data-opposite])):where([data-align=right]) .m_8affcee1{inset-inline-start:auto;inset-inline-end:calc((var(--tl-bullet-size) / 2 + var(--tl-line-width) / 2) * -1)}.m_43657ece:where([data-opposite]) .m_8affcee1{grid-area:1/2;position:relative;inset-inline-start:unset;inset-inline-end:unset}.m_8affcee1:where([data-with-child]){border-width:var(--tl-line-width)}:where([data-mantine-color-scheme=light]) .m_8affcee1:where([data-with-child]){background-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_8affcee1:where([data-with-child]){background-color:var(--mantine-color-dark-4)}.m_8affcee1:where([data-active]){border-color:var(--tli-color,var(--tl-color));background-color:var(--mantine-color-white);color:var(--tl-icon-color,var(--mantine-color-white))}.m_8affcee1:where([data-active]):where([data-with-child]){background-color:var(--tli-color,var(--tl-color));color:var(--tl-icon-color,var(--mantine-color-white))}.m_43657ece:where(:not([data-opposite])):where([data-align=left]) .m_540e8f41{text-align:start;padding-inline-start:var(--offset)}.m_43657ece:where(:not([data-opposite])):where([data-align=right]) .m_540e8f41{text-align:end;padding-inline-end:var(--offset)}.m_43657ece:where([data-opposite]):where([data-align=left]) .m_540e8f41{text-align:start;grid-area:1/3;padding-inline-start:var(--offset)}.m_43657ece:where([data-opposite]):where([data-align=right]) .m_540e8f41{text-align:end;grid-area:1/1;padding-inline-end:var(--offset)}.m_43657ece:where([data-opposite]):where([data-align=left]) .m_436178ff:where([data-alternate]) .m_540e8f41{text-align:end;grid-column:1;padding-inline-start:0;padding-inline-end:var(--offset)}.m_43657ece:where([data-opposite]):where([data-align=right]) .m_436178ff:where([data-alternate]) .m_540e8f41{text-align:start;grid-column:3;padding-inline-start:var(--offset);padding-inline-end:0}.m_43657ece:where([data-align=left]) .m_f3ba506{text-align:end;grid-area:1/1;padding-inline-end:var(--offset)}.m_43657ece:where([data-align=right]) .m_f3ba506{text-align:start;grid-area:1/3;padding-inline-start:var(--offset)}.m_43657ece:where([data-align=left]) .m_436178ff:where([data-alternate]) .m_f3ba506{text-align:start;grid-column:3;padding-inline-start:var(--offset);padding-inline-end:0}.m_43657ece:where([data-align=right]) .m_436178ff:where([data-alternate]) .m_f3ba506{text-align:end;grid-column:1;padding-inline-start:0;padding-inline-end:var(--offset)}.m_8a5d1357{font-weight:var(--title-fw);font-size:var(--title-fz);line-height:var(--title-lh);font-family:var(--mantine-font-family-headings);text-wrap:var(--title-text-wrap,var(--mantine-heading-text-wrap));margin:0}.m_8a5d1357:where([data-line-clamp]){text-overflow:ellipsis;-webkit-line-clamp:var(--title-line-clamp);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:where([data-tree-root]){--level-offset:var(--mantine-spacing-lg);--tree-line-width:calc(.0625rem * var(--mantine-scale));--tree-line-color:var(--mantine-color-default-border)}.m_f698e191{-webkit-user-select:none;user-select:none;margin:0;padding:0}.m_75f3ecf{margin:0;padding:0}.m_f6970eb1{cursor:pointer;outline:0;margin:0;padding:0;list-style:none}.m_f6970eb1:focus-visible>.m_dc283425,.m_f6970eb1[data-focus-ring]:focus>.m_dc283425{outline:2px solid var(--mantine-primary-color-filled);outline-offset:calc(.125rem * var(--mantine-scale))}.m_dc283425{padding-inline-start:var(--label-offset);position:relative}:where([data-mantine-color-scheme=light]) .m_dc283425:where([data-selected]){background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_dc283425:where([data-selected]){background-color:var(--mantine-color-dark-5)}.m_dc283425:where([data-dragging]){opacity:.4}.m_dc283425:where([data-drag-over=before]):before{content:"";top:calc(-.0625rem * var(--mantine-scale));height:calc(.125rem * var(--mantine-scale));background-color:var(--mantine-primary-color-filled);pointer-events:none;z-index:1;position:absolute;inset-inline-start:var(--label-offset,0);inset-inline-end:0}.m_dc283425:where([data-drag-over=after]):after{content:"";bottom:calc(-.0625rem * var(--mantine-scale));height:calc(.125rem * var(--mantine-scale));background-color:var(--mantine-primary-color-filled);pointer-events:none;z-index:1;position:absolute;inset-inline-start:var(--label-offset,0);inset-inline-end:0}.m_dc283425:where([data-drag-over=inside]){background-color:var(--mantine-primary-color-light)}:where([data-with-lines]) .m_f6970eb1{position:relative}:where([data-with-lines]) .m_f6970eb1:not([data-level="1"]):before{content:"";top:calc(.75rem * var(--mantine-scale));width:calc(var(--level-offset) / 2);border-top:var(--tree-line-width) solid var(--tree-line-color);pointer-events:none;z-index:1;height:0;position:absolute;inset-inline-start:calc(var(--label-offset) - var(--level-offset) / 2)}:where([data-with-lines]) .m_75f3ecf>.m_f6970eb1:after{content:"";top:0;bottom:0;border-inline-start:var(--tree-line-width) solid var(--tree-line-color);pointer-events:none;z-index:1;width:0;position:absolute;inset-inline-start:calc(var(--label-offset) - var(--level-offset) / 2)}:where([data-with-lines]) .m_75f3ecf>.m_f6970eb1:last-child:after{height:calc(.75rem * var(--mantine-scale));bottom:auto}:where([data-with-lines]) .m_f6970eb1:where([data-dragging]):before,:where([data-with-lines]) .m_f6970eb1:where([data-dragging]):after,:where([data-with-lines]) .m_f6970eb1:where([data-dragging]) .m_c03b303c{display:none}.m_c03b303c{width:0;top:0;bottom:0;border-inline-start:var(--tree-line-width) solid var(--tree-line-color);pointer-events:none;z-index:1;display:none;position:absolute;inset-inline-start:calc((var(--flat-line-column) - 1.5) * var(--level-offset))}:where([data-with-lines]) .m_c03b303c{display:block}.m_bf7448d9{height:calc(.75rem * var(--mantine-scale));bottom:auto}.m_529d33e8{--ts-level-offset:calc(1.25rem * var(--mantine-scale));--ts-line-width:calc(.0625rem * var(--mantine-scale));--ts-line-color:var(--mantine-color-default-border);--ts-option-padding-y:calc(.25rem * var(--mantine-scale));--ts-option-padding-x:calc(.5rem * var(--mantine-scale))}.m_28bb748{align-items:center;gap:calc(.375rem * var(--mantine-scale));padding:var(--ts-option-padding-y) var(--ts-option-padding-x);padding-inline-start:var(--ts-option-padding-x);display:flex;position:relative}.m_aa3e3f86{--_ts-expand-icon-size:calc(1.45 * var(--combobox-option-fz,var(--mantine-font-size-sm)));width:var(--_ts-expand-icon-size);min-width:var(--_ts-expand-icon-size);height:var(--_ts-expand-icon-size);border-radius:var(--mantine-radius-sm);cursor:pointer;color:var(--mantine-color-dimmed);justify-content:center;align-items:center;display:flex;transform:rotate(-90deg)}:where([data-combobox-selected]) .m_aa3e3f86{color:var(--mantine-color-white)}:where([dir=rtl]) .m_aa3e3f86{transform:rotate(90deg)}.m_aa3e3f86:where([data-expanded]){transform:rotate(0)}@media (hover:hover){:where([data-mantine-color-scheme=light]) .m_aa3e3f86:hover{background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_aa3e3f86:hover{background-color:var(--mantine-color-dark-5)}}@media (hover:none){:where([data-mantine-color-scheme=light]) .m_aa3e3f86:active{background-color:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_aa3e3f86:active{background-color:var(--mantine-color-dark-5)}}.m_eaa4cdee{opacity:.4;width:.8em;min-width:.8em;height:.8em;margin-inline-start:auto}:where([data-combobox-selected]) .m_eaa4cdee{opacity:1}.m_ffe3a9c1{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.m_57207d5d,.m_41b9db0b{border-inline-start:var(--ts-line-width) solid var(--ts-line-color);pointer-events:none;width:0;position:absolute;top:0;bottom:0}.m_41b9db0b:where([data-last]){height:50%;bottom:auto}.m_1246e79{border-top:var(--ts-line-width) solid var(--ts-line-color);pointer-events:none;height:0;position:absolute;top:50%}.m_d08caa0 :first-child{margin-top:0}.m_d08caa0 :last-child{margin-bottom:0}.m_d08caa0 :where(h1,h2,h3,h4,h5,h6){margin-bottom:var(--mantine-spacing-xs);text-wrap:var(--mantine-heading-text-wrap);font-family:var(--mantine-font-family-headings)}.m_d08caa0 :where(h1){margin-top:calc(1.5 * var(--mantine-spacing-xl));font-size:var(--mantine-h1-font-size);line-height:var(--mantine-h1-line-height);font-weight:var(--mantine-h1-font-weight)}.m_d08caa0 :where(h2){margin-top:var(--mantine-spacing-xl);font-size:var(--mantine-h2-font-size);line-height:var(--mantine-h2-line-height);font-weight:var(--mantine-h2-font-weight)}.m_d08caa0 :where(h3){margin-top:calc(.8 * var(--mantine-spacing-xl));font-size:var(--mantine-h3-font-size);line-height:var(--mantine-h3-line-height);font-weight:var(--mantine-h3-font-weight)}.m_d08caa0 :where(h4){margin-top:calc(.8 * var(--mantine-spacing-xl));font-size:var(--mantine-h4-font-size);line-height:var(--mantine-h4-line-height);font-weight:var(--mantine-h4-font-weight)}.m_d08caa0 :where(h5){margin-top:calc(.5 * var(--mantine-spacing-xl));font-size:var(--mantine-h5-font-size);line-height:var(--mantine-h5-line-height);font-weight:var(--mantine-h5-font-weight)}.m_d08caa0 :where(h6){margin-top:calc(.5 * var(--mantine-spacing-xl));font-size:var(--mantine-h6-font-size);line-height:var(--mantine-h6-line-height);font-weight:var(--mantine-h6-font-weight)}.m_d08caa0 :where(img){max-width:100%;margin-bottom:var(--mantine-spacing-xs)}.m_d08caa0 :where(p){margin-top:0;margin-bottom:var(--mantine-spacing-lg)}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(mark){background-color:var(--mantine-color-yellow-2);color:inherit}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(mark){background-color:var(--mantine-color-yellow-5);color:var(--mantine-color-black)}.m_d08caa0 :where(a){color:var(--mantine-color-anchor);text-decoration:none}@media (hover:hover){.m_d08caa0 :where(a):hover{text-decoration:underline}}@media (hover:none){.m_d08caa0 :where(a):active{text-decoration:underline}}.m_d08caa0 :where(hr){margin-top:var(--mantine-spacing-md);margin-bottom:var(--mantine-spacing-md);border:0;border-top:calc(.0625rem * var(--mantine-scale)) solid}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(hr){border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(hr){border-color:var(--mantine-color-dark-3)}.m_d08caa0 :where(pre){padding:var(--mantine-spacing-xs);line-height:var(--mantine-line-height);margin:0;margin-top:var(--mantine-spacing-md);margin-bottom:var(--mantine-spacing-md);font-family:var(--mantine-font-family-monospace);font-size:var(--mantine-font-size-xs);border-radius:var(--mantine-radius-sm);overflow-x:auto}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(pre){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(pre){background-color:var(--mantine-color-dark-8)}.m_d08caa0 :where(pre) :where(code){color:inherit;background-color:#0000;border:0;border-radius:0;padding:0}.m_d08caa0 :where(kbd){--kbd-fz:calc(.75rem * var(--mantine-scale));--kbd-padding:calc(.1875rem * var(--mantine-scale)) calc(.3125rem * var(--mantine-scale));font-family:var(--mantine-font-family-monospace);line-height:var(--mantine-line-height);font-weight:var(--mantine-font-weight-bold);padding:var(--kbd-padding);font-size:var(--kbd-fz);border-radius:var(--mantine-radius-sm);border:calc(.0625rem * var(--mantine-scale)) solid;border-bottom-width:calc(.1875rem * var(--mantine-scale))}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(kbd){border-color:var(--mantine-color-gray-3);color:var(--mantine-color-gray-7);background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(kbd){border-color:var(--mantine-color-dark-3);color:var(--mantine-color-dark-0);background-color:var(--mantine-color-dark-5)}.m_d08caa0 :where(code){line-height:var(--mantine-line-height);padding:calc(.0625rem * var(--mantine-scale)) calc(.3125rem * var(--mantine-scale));border-radius:var(--mantine-radius-sm);font-family:var(--mantine-font-family-monospace);font-size:var(--mantine-font-size-xs)}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(code){background-color:var(--mantine-color-gray-0);color:var(--mantine-color-black)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(code){background-color:var(--mantine-color-dark-5);color:var(--mantine-color-white)}.m_d08caa0 :where(ul,ol):not([data-type=taskList]){margin-bottom:var(--mantine-spacing-md);padding-inline-start:var(--mantine-spacing-xl);list-style-position:outside}.m_d08caa0 :where(table){border-collapse:collapse;caption-side:bottom;width:100%;margin-bottom:var(--mantine-spacing-md)}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(table){--table-border-color:var(--mantine-color-gray-3)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(table){--table-border-color:var(--mantine-color-dark-4)}.m_d08caa0 :where(table) :where(caption){margin-top:var(--mantine-spacing-xs);font-size:var(--mantine-font-size-sm);color:var(--mantine-color-dimmed)}.m_d08caa0 :where(table) :where(th){text-align:start;font-weight:700;font-size:var(--mantine-font-size-sm);padding:var(--mantine-spacing-xs) var(--mantine-spacing-sm)}.m_d08caa0 :where(table) :where(thead th){border-bottom:calc(.0625rem * var(--mantine-scale)) solid;border-color:var(--table-border-color)}.m_d08caa0 :where(table) :where(tfoot th){border-top:calc(.0625rem * var(--mantine-scale)) solid;border-color:var(--table-border-color)}.m_d08caa0 :where(table) :where(td){padding:var(--mantine-spacing-xs) var(--mantine-spacing-sm);border-bottom:calc(.0625rem * var(--mantine-scale)) solid;border-color:var(--table-border-color);font-size:var(--mantine-font-size-sm)}.m_d08caa0 :where(table) :where(tr:last-of-type td){border-bottom:0}.m_d08caa0 :where(details){margin-bottom:var(--mantine-spacing-md);padding:var(--mantine-spacing-sm) var(--mantine-spacing-md);border:1px solid var(--details-border-color);border-radius:var(--mantine-radius-default)}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(details){--details-border-color:var(--mantine-color-gray-3);--details-summary-hover:var(--mantine-color-gray-1)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(details){--details-border-color:var(--mantine-color-dark-4);--details-summary-hover:var(--mantine-color-dark-5)}.m_d08caa0 :where(details) :where(summary){align-items:center;gap:var(--mantine-spacing-xs);cursor:pointer;font-weight:600;list-style:none;display:flex;position:relative}.m_d08caa0 :where(details) :where(summary)::-webkit-details-marker{display:none}.m_d08caa0 :where(details) :where(summary):before{content:"";width:1.25rem;height:calc(1em * var(--mantine-line-height));border-radius:var(--mantine-radius-sm);flex-shrink:0}.m_d08caa0 :where(details) :where(summary:hover):before{background-color:var(--details-summary-hover)}.m_d08caa0 :where(details) :where(summary):after{content:"";inset-inline-start:calc(.4375rem * var(--mantine-scale));border-style:solid;border-width:calc(.3125rem * var(--mantine-scale)) 0 calc(.3125rem * var(--mantine-scale)) calc(.375rem * var(--mantine-scale));border-color:#0000 #0000 #0000 currentColor;width:0;height:0;position:absolute;top:50%;transform:translateY(-50%)}.m_d08caa0 :where(details):where([open])>:where(summary):after{transform:translateY(-50%)rotate(90deg)}.m_d08caa0 :where(details)>:where(:last-child){margin-bottom:0}.m_d08caa0 :where(blockquote){font-size:var(--mantine-font-size-lg);line-height:var(--mantine-line-height);margin:var(--mantine-spacing-md) 0;border-radius:var(--mantine-radius-sm);padding:var(--mantine-spacing-md) var(--mantine-spacing-lg)}:where([data-mantine-color-scheme=light]) .m_d08caa0 :where(blockquote){background-color:var(--mantine-color-gray-0)}:where([data-mantine-color-scheme=dark]) .m_d08caa0 :where(blockquote){background-color:var(--mantine-color-dark-8)}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.react-grid-layout{transition:height .2s;position:relative}.react-grid-item{transition:left .2s,top .2s,width .2s,height .2s}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{z-index:1;will-change:width, height;transition:none}.react-grid-item.react-draggable-dragging{z-index:3;will-change:transform;transition:none}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{opacity:.2;z-index:2;-webkit-user-select:none;user-select:none;background:red;transition-duration:.1s}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{opacity:0;width:20px;height:20px;position:absolute}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";border-bottom:2px solid #0006;border-right:2px solid #0006;width:5px;height:5px;position:absolute;bottom:3px;right:3px}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{cursor:sw-resize;bottom:0;left:0;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{cursor:se-resize;bottom:0;right:0}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{cursor:nw-resize;top:0;left:0;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{cursor:ne-resize;top:0;right:0;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{cursor:ew-resize;margin-top:-10px;top:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{cursor:ns-resize;margin-left:-10px;left:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:100% 100%;background-repeat:no-repeat;background-origin:content-box;width:20px;height:20px;padding:0 3px 3px 0;position:absolute}.react-resizable-handle-sw{cursor:sw-resize;bottom:0;left:0;transform:rotate(90deg)}.react-resizable-handle-se{cursor:se-resize;bottom:0;right:0}.react-resizable-handle-nw{cursor:nw-resize;top:0;left:0;transform:rotate(180deg)}.react-resizable-handle-ne{cursor:ne-resize;top:0;right:0;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{cursor:ew-resize;margin-top:-10px;top:50%}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{cursor:ns-resize;margin-left:-10px;left:50%}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}html{background:#fcfcfc}html[data-mantine-color-scheme=dark]{background:#0b0e14}:where(.mantine-Title-root,h1,h2,h3,h4,h5,h6){letter-spacing:-.01em}body{font-variant-numeric:tabular-nums}html,body,#root{min-width:320px;min-height:100%}.dashboard-grid{min-height:420px}.dashboard-table{table-layout:fixed;width:100%}.dashboard-dimension-nowrap{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.chat-composer-field{background:var(--mantine-color-body);transition:border-color .15s,box-shadow .15s}.chat-composer-field:focus-within{border-color:var(--mantine-primary-color-filled);box-shadow:0 0 0 2px var(--mantine-primary-color-light)}.rail-row{border-radius:var(--mantine-radius-md);transition:background-color .12s}.rail-row:hover{background:var(--mantine-color-default-hover)}.rail-row[data-active]{background:var(--mantine-primary-color-light)}.rail-row-actions{opacity:0;transition:opacity .12s}.rail-row:hover .rail-row-actions,.rail-row:focus-within .rail-row-actions{opacity:1}@media (hover:none){.rail-row-actions{opacity:1}}.react-grid-item.react-grid-placeholder{border-radius:var(--mantine-radius-lg);background:var(--mantine-primary-color-filled);opacity:.14}.react-grid-item>.react-resizable-handle{opacity:0;transition:opacity .15s}.react-grid-item:hover>.react-resizable-handle,.react-grid-item:focus-within>.react-resizable-handle{opacity:.55}.chat-pane{height:calc(100dvh - var(--app-shell-header-offset,0px));flex-direction:column;display:flex}.chat-scroll{flex:1;min-height:0;overflow-y:auto}.chat-composer{padding-bottom:var(--mantine-spacing-sm);background:var(--mantine-color-body);flex:none}.chat-message-meta,.chat-code-actions{opacity:0;transition:opacity .12s}.chat-message:hover .chat-message-meta,.chat-message:focus-within .chat-message-meta,.chat-code:hover .chat-code-actions,.chat-code:focus-within .chat-code-actions{opacity:1}@media (hover:none){.chat-message-meta,.chat-code-actions{opacity:1}}.chat-markdown :where(h1,h2,h3,h4){font-size:var(--mantine-font-size-lg);margin-top:var(--mantine-spacing-md);margin-bottom:var(--mantine-spacing-xs)}.chat-markdown :where(p,ul,ol){margin-top:0;margin-bottom:var(--mantine-spacing-sm)}.chat-table{margin-bottom:var(--mantine-spacing-sm);overflow-x:auto}.chat-code pre{margin:0 0 var(--mantine-spacing-sm);padding:var(--mantine-spacing-sm) var(--mantine-spacing-md);border:1px solid var(--mantine-color-default-border);border-radius:var(--mantine-radius-md);background:var(--mantine-color-default);font-family:var(--mantine-font-family-monospace);font-size:var(--mantine-font-size-sm);overflow-x:auto}.chat-code pre code{color:inherit;font-size:inherit;background:0 0;border-radius:0;padding:0;font-family:inherit}.panel-markdown{overflow-wrap:anywhere;font-size:14px;line-height:1.55}.panel-markdown :where(p,ul,ol){margin:0 0 .5em}.panel-markdown code{font-family:var(--mantine-font-family-monospace);font-size:12px}.dashboard-grid:not(.dashboard-grid-editing),.dashboard-grid:not(.dashboard-grid-editing)>.react-grid-item{transition:none}.dashboard-panel-padding{padding-inline:16px} diff --git a/internal/ui/dist/assets/mcp-app-frame-BJYd06Jq.js b/internal/ui/dist/assets/mcp-app-frame-BJYd06Jq.js new file mode 100644 index 00000000..9fc231c0 --- /dev/null +++ b/internal/ui/dist/assets/mcp-app-frame-BJYd06Jq.js @@ -0,0 +1,58 @@ +import{C as e,St as t,_t as n,f as r,p as i,u as a,y as o,yt as s}from"./brand-BUxUP_Hq.js";import{i as c}from"./auth-B4efqRtx.js";import{t as l}from"./use-computed-color-scheme-BdszbBN3.js";import{A as u,C as d,D as f,E as p,F as m,I as h,M as g,N as _,O as v,P as y,S as b,T as x,_ as S,b as C,c as w,d as T,f as E,g as ee,h as te,j as ne,k as D,l as O,m as k,o as re,p as A,s as ie,u as ae,v as oe,w as j,x as se,y as M}from"./index-DET0nsjw.js";var N={invalid_type:`invalid_type`,too_big:`too_big`,too_small:`too_small`,invalid_format:`invalid_format`,not_multiple_of:`not_multiple_of`,unrecognized_keys:`unrecognized_keys`,invalid_union:`invalid_union`,invalid_key:`invalid_key`,invalid_element:`invalid_element`,invalid_value:`invalid_value`,custom:`custom`},ce;ce||={};function le(e){return m(ie,e)}function ue(e){return y(re,e)}function de(e){return _(w,e)}var fe=Object.create,P=Object.defineProperty,pe=Object.getOwnPropertyDescriptor,me=Object.getOwnPropertyNames,F=Object.getPrototypeOf,he=Object.prototype.hasOwnProperty,ge=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),_e=(e,t)=>{let n={};for(var r in e)P(n,r,{get:e[r],enumerable:!0});return t&&P(n,Symbol.toStringTag,{value:`Module`}),n},ve=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=me(t),a=0,o=i.length,s;at[e]).bind(null,s),enumerable:!(r=pe(t,s))||r.enumerable});return e},ye=(e,t,n)=>(n=e==null?{}:fe(F(e)),ve(t||!e||!e.__esModule?P(n,`default`,{value:e,enumerable:!0}):n,e)),I=new Set([`https://json-schema.org/draft/2020-12/schema`,`http://json-schema.org/draft/2020-12/schema`]),be=new Set([`https://json-schema.org/draft/2019-09/schema`,`http://json-schema.org/draft/2019-09/schema`]),xe=new Set([`https://json-schema.org/draft-07/schema`,`http://json-schema.org/draft-07/schema`]),Se=new Set([`https://json-schema.org/draft-06/schema`,`http://json-schema.org/draft-06/schema`]);function Ce(e){return typeof e==`string`&&be.has(e.replace(/#$/,``))}function we(e,t){if(!(`$schema`in e)||typeof e.$schema!=`string`)return`2020-12`;let n=e.$schema.replace(/#$/,``);if(I.has(n))return`2020-12`;if(be.has(n))return`2019-09`;if(xe.has(n)||Se.has(n))return`draft-7`;throw Error(`JSON Schema declares an unsupported dialect ("$schema": "${e.$schema.slice(0,200)}"). The default validator supports JSON Schema 2020-12, 2019-09, draft-07, and draft-06; ${t}`)}var Te=`2025-11-25`,Ee=[Te,`2025-06-18`,`2025-03-26`,`2024-11-05`,`2024-10-07`],De=`io.modelcontextprotocol/related-task`,Oe=`io.modelcontextprotocol/protocolVersion`,ke=`io.modelcontextprotocol/clientInfo`,Ae=`io.modelcontextprotocol/serverInfo`,je=`io.modelcontextprotocol/clientCapabilities`,Me=`io.modelcontextprotocol/subscriptionId`,Ne=`io.modelcontextprotocol/logLevel`,Pe=oe(()=>v([f(),b(),k(),ae(),p(f(),Pe),A(Pe)])),L=p(f(),Pe),Fe=A(Pe),Ie=v([f(),b().int()]),Le=f(),Re=d({ttl:b().optional()}),ze=d({taskId:f()}),Be=C({progressToken:Ie.optional(),[De]:ze.optional()}),R=d({_meta:Be.optional()}),Ve=R.extend({task:Re.optional()}),z=d({method:f(),params:R.loose().optional()}),B=d({_meta:Be.optional()}),V=d({method:f(),params:B.loose().optional()}),He=C({get[Ae](){return tt.optional().catch(void 0)}}),H=C({_meta:He.optional()}),U=v([f(),b().int()]),Ue=d({jsonrpc:M(`2.0`),id:U,...z.shape}).strict(),We=d({jsonrpc:M(`2.0`),...V.shape}).strict(),Ge=d({jsonrpc:M(`2.0`),id:U,result:H}).strict(),Ke=d({jsonrpc:M(`2.0`),id:U.optional(),error:d({code:b().int(),message:f(),data:D().optional()})}).strict(),qe=v([Ue,We,Ge,Ke]),Je=v([Ge,Ke]),Ye=H.strict(),Xe=B.extend({requestId:U.optional(),reason:f().optional()}),Ze=V.extend({method:M(`notifications/cancelled`),params:Xe}),Qe=d({src:f(),mimeType:f().optional(),sizes:A(f()).optional(),theme:O([`light`,`dark`]).optional()}),$e=d({icons:A(Qe).optional()}),et=d({name:f(),title:f().optional()}),tt=et.extend({...et.shape,...$e.shape,version:f(),websiteUrl:f().optional(),description:f().optional()}),nt=S(d({applyDefaults:k().optional()}),L),rt=x(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,S(d({form:nt.optional(),url:L.optional()}),L.optional())),it=C({list:L.optional(),cancel:L.optional(),requests:C({sampling:C({createMessage:L.optional()}).optional(),elicitation:C({create:L.optional()}).optional()}).optional()}),at=C({list:L.optional(),cancel:L.optional(),requests:C({tools:C({call:L.optional()}).optional()}).optional()}),ot=d({experimental:p(f(),L).optional(),sampling:d({context:L.optional(),tools:L.optional()}).optional(),elicitation:rt.optional(),roots:d({listChanged:k().optional()}).optional(),tasks:it.optional(),extensions:p(f(),L).optional()}),W=R.extend({protocolVersion:f(),capabilities:ot,clientInfo:tt}),st=z.extend({method:M(`initialize`),params:W}),ct=d({experimental:p(f(),L).optional(),logging:L.optional(),completions:L.optional(),prompts:d({listChanged:k().optional()}).optional(),resources:d({subscribe:k().optional(),listChanged:k().optional()}).optional(),tools:d({listChanged:k().optional()}).optional(),tasks:at.optional(),extensions:p(f(),L).optional()}),lt=H.extend({protocolVersion:f(),capabilities:ct,serverInfo:tt,instructions:f().optional()}),ut=V.extend({method:M(`notifications/initialized`),params:B.optional()}),dt=z.extend({method:M(`server/discover`),params:R.optional()}),ft=H.extend({supportedVersions:A(f()),capabilities:ct,instructions:f().optional()}),pt=z.extend({method:M(`ping`),params:R.optional()}),mt=d({progress:b(),total:j(b()),message:j(f())}),ht=d({...B.shape,...mt.shape,progressToken:Ie}),gt=V.extend({method:M(`notifications/progress`),params:ht}),_t=R.extend({cursor:Le.optional()}),vt=z.extend({params:_t.optional()}),yt=H.extend({nextCursor:Le.optional()}),bt=d({uri:f(),mimeType:j(f()),_meta:p(f(),D()).optional()}),xt=bt.extend({text:f()}),St=f().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:`Invalid Base64 string`}),Ct=bt.extend({blob:St}),wt=O([`user`,`assistant`]),Tt=d({audience:A(wt).optional(),priority:b().min(0).max(1).optional(),lastModified:le({offset:!0}).optional()}),Et=d({...et.shape,...$e.shape,uri:f(),description:j(f()),mimeType:j(f()),size:j(b()),annotations:Tt.optional(),_meta:j(C({}))}),Dt=d({...et.shape,...$e.shape,uriTemplate:f(),description:j(f()),mimeType:j(f()),annotations:Tt.optional(),_meta:j(C({}))}),Ot=vt.extend({method:M(`resources/list`)}),kt=yt.extend({resources:A(Et)}),At=vt.extend({method:M(`resources/templates/list`)}),jt=yt.extend({resourceTemplates:A(Dt)}),Mt=R.extend({uri:f()}),Nt=Mt,Pt=z.extend({method:M(`resources/read`),params:Nt}),Ft=H.extend({contents:A(v([xt,Ct]))}),G=V.extend({method:M(`notifications/resources/list_changed`),params:B.optional()}),K=Mt,It=z.extend({method:M(`resources/subscribe`),params:K}),Lt=Mt,Rt=z.extend({method:M(`resources/unsubscribe`),params:Lt}),zt=d({toolsListChanged:k().optional(),promptsListChanged:k().optional(),resourcesListChanged:k().optional(),resourceSubscriptions:A(f()).optional()}),Bt=R.extend({notifications:zt}),Vt=z.extend({method:M(`subscriptions/listen`),params:Bt}),Ht=B.extend({notifications:zt}),Ut=V.extend({method:M(`notifications/subscriptions/acknowledged`),params:Ht}),Wt=He.extend({[Me]:U}),Gt=H.extend({_meta:Wt}),Kt=B.extend({uri:f()}),qt=V.extend({method:M(`notifications/resources/updated`),params:Kt}),Jt=d({name:f(),description:j(f()),required:j(k())}),Yt=d({...et.shape,...$e.shape,description:j(f()),arguments:j(A(Jt)),_meta:j(C({}))}),Xt=vt.extend({method:M(`prompts/list`)}),Zt=yt.extend({prompts:A(Yt)}),Qt=R.extend({name:f(),arguments:p(f(),f()).optional()}),$t=z.extend({method:M(`prompts/get`),params:Qt}),q=d({type:M(`text`),text:f(),annotations:Tt.optional(),_meta:p(f(),D()).optional()}),en=d({type:M(`image`),data:St,mimeType:f(),annotations:Tt.optional(),_meta:p(f(),D()).optional()}),tn=d({type:M(`audio`),data:St,mimeType:f(),annotations:Tt.optional(),_meta:p(f(),D()).optional()}),nn=d({type:M(`tool_use`),name:f(),id:f(),input:p(f(),D()),_meta:p(f(),D()).optional()}),rn=d({type:M(`resource`),resource:v([xt,Ct]),annotations:Tt.optional(),_meta:p(f(),D()).optional()}),an=Et.extend({type:M(`resource_link`)}),on=v([q,en,tn,an,rn]),sn=d({role:wt,content:on}),cn=H.extend({description:f().optional(),messages:A(sn)}),ln=V.extend({method:M(`notifications/prompts/list_changed`),params:B.optional()}),un=d({title:f().optional(),readOnlyHint:k().optional(),destructiveHint:k().optional(),idempotentHint:k().optional(),openWorldHint:k().optional()}),dn=d({taskSupport:O([`required`,`optional`,`forbidden`]).optional()}),fn=d({...et.shape,...$e.shape,description:f().optional(),inputSchema:d({type:M(`object`),properties:p(f(),Pe).optional(),required:A(f()).optional()}).catchall(D()),outputSchema:C({$schema:f().optional()}).optional(),annotations:un.optional(),execution:dn.optional(),_meta:p(f(),D()).optional()}),pn=vt.extend({method:M(`tools/list`)}),mn=yt.extend({tools:A(fn)}),hn=H.extend({content:A(on).default([]),structuredContent:D().optional(),isError:k().optional()}),gn=hn.or(H.extend({toolResult:D()})),_n=Ve.extend({name:f(),arguments:p(f(),D()).optional()}),vn=z.extend({method:M(`tools/call`),params:_n}),yn=V.extend({method:M(`notifications/tools/list_changed`),params:B.optional()}),bn=d({autoRefresh:k().default(!0),debounceMs:b().int().nonnegative().default(300)}),xn=O([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),Sn=R.extend({level:xn}),Cn=z.extend({method:M(`logging/setLevel`),params:Sn}),wn=B.extend({level:xn,logger:f().optional(),data:D()}),Tn=V.extend({method:M(`notifications/message`),params:wn}),En=d({name:f().optional()}),Dn=d({hints:A(En).optional(),costPriority:b().min(0).max(1).optional(),speedPriority:b().min(0).max(1).optional(),intelligencePriority:b().min(0).max(1).optional()}),On=d({mode:O([`auto`,`required`,`none`]).optional()}),kn=d({type:M(`tool_result`),toolUseId:f().describe(`The unique identifier for the corresponding tool call.`),content:A(on),structuredContent:D().optional(),isError:k().optional(),_meta:p(f(),D()).optional()}),An=te(`type`,[q,en,tn]),jn=te(`type`,[q,en,tn,nn,kn]),Mn=d({role:wt,content:v([jn,A(jn)]),_meta:p(f(),D()).optional()}),Nn=Ve.extend({messages:A(Mn),modelPreferences:Dn.optional(),systemPrompt:f().optional(),includeContext:O([`none`,`thisServer`,`allServers`]).optional(),temperature:b().optional(),maxTokens:b().int(),stopSequences:A(f()).optional(),metadata:L.optional(),tools:A(fn).optional(),toolChoice:On.optional()}),Pn=z.extend({method:M(`sampling/createMessage`),params:Nn}),Fn=H.extend({model:f(),stopReason:j(O([`endTurn`,`stopSequence`,`maxTokens`]).or(f())),role:wt,content:An}),In=H.extend({model:f(),stopReason:j(O([`endTurn`,`stopSequence`,`maxTokens`,`toolUse`]).or(f())),role:wt,content:v([jn,A(jn)])}),Ln=d({type:M(`boolean`),title:f().optional(),description:f().optional(),default:k().optional()}),Rn=d({type:M(`string`),title:f().optional(),description:f().optional(),minLength:b().optional(),maxLength:b().optional(),format:O([`email`,`uri`,`date`,`date-time`]).optional(),default:f().optional()}),zn=d({type:O([`number`,`integer`]),title:f().optional(),description:f().optional(),minimum:b().optional(),maximum:b().optional(),default:b().optional()}),Bn=d({type:M(`string`),title:f().optional(),description:f().optional(),enum:A(f()),default:f().optional()}),Vn=d({type:M(`string`),title:f().optional(),description:f().optional(),oneOf:A(d({const:f(),title:f()})),default:f().optional()}),Hn=d({type:M(`string`),title:f().optional(),description:f().optional(),enum:A(f()),enumNames:A(f()).optional(),default:f().optional()}),Un=v([Bn,Vn]),Wn=d({type:M(`array`),title:f().optional(),description:f().optional(),minItems:b().optional(),maxItems:b().optional(),items:d({type:M(`string`),enum:A(f())}),default:A(f()).optional()}),Gn=d({type:M(`array`),title:f().optional(),description:f().optional(),minItems:b().optional(),maxItems:b().optional(),items:d({anyOf:A(d({const:f(),title:f()}))}),default:A(f()).optional()}),Kn=v([Wn,Gn]),qn=v([Hn,Un,Kn]),Jn=v([qn,Ln,Rn,zn]),Yn=Ve.extend({mode:M(`form`).optional(),message:f(),requestedSchema:d({type:M(`object`),properties:p(f(),Jn),required:A(f()).optional()}).catchall(D())}),Xn=Ve.extend({mode:M(`url`),message:f(),elicitationId:f(),url:f().url()}),Zn=v([Yn,Xn]),Qn=z.extend({method:M(`elicitation/create`),params:Zn}),$n=B.extend({elicitationId:f()}),er=V.extend({method:M(`notifications/elicitation/complete`),params:$n}),tr=H.extend({action:O([`accept`,`decline`,`cancel`]),content:x(e=>e===null?void 0:e,p(f(),v([f(),b(),k(),A(f())])).optional())}),nr=d({type:M(`ref/resource`),uri:f()}),rr=d({type:M(`ref/prompt`),name:f()}),ir=R.extend({ref:v([rr,nr]),argument:d({name:f(),value:f()}),context:d({arguments:p(f(),f()).optional()}).optional()}),ar=z.extend({method:M(`completion/complete`),params:ir}),or=H.extend({completion:C({values:A(f()).max(100),total:j(b().int()),hasMore:j(k())})}),sr=d({uri:f().startsWith(`file://`),name:f().optional(),_meta:p(f(),D()).optional()}),cr=z.extend({method:M(`roots/list`),params:R.optional()}),lr=H.extend({roots:A(sr)}),ur=V.extend({method:M(`notifications/roots/list_changed`),params:B.optional()}),dr=C({ttl:b().optional(),pollInterval:b().optional()}),fr=O([`working`,`input_required`,`completed`,`failed`,`cancelled`]),pr=d({taskId:f(),status:fr,ttl:v([b(),ae()]),createdAt:f(),lastUpdatedAt:f(),pollInterval:j(b()),statusMessage:j(f())}),mr=H.extend({task:pr}),hr=B.merge(pr),gr=V.extend({method:M(`notifications/tasks/status`),params:hr}),_r=z.extend({method:M(`tasks/get`),params:R.extend({taskId:f()})}),vr=H.merge(pr),yr=z.extend({method:M(`tasks/result`),params:R.extend({taskId:f()})}),br=H.loose(),xr=vt.extend({method:M(`tasks/list`)}),Sr=yt.extend({tasks:A(pr)}),Cr=z.extend({method:M(`tasks/cancel`),params:R.extend({taskId:f()})}),wr=H.merge(pr),Tr=v([pt,st,dt,ar,Cn,$t,Xt,Ot,At,Pt,It,Rt,Vt,vn,pn]),Er=v([Ze,gt,ut,ur]),Dr=v([Ye,Fn,In,tr,lr]),Or=v([pt,Pn,Qn,cr]),kr=v([Ze,gt,Tn,qt,G,yn,ln,Ut,er]),Ar=v([Ye,lt,ft,or,cn,Zt,kt,jt,Ft,hn,mn,Gt]),J=u().superRefine((e,t)=>{if(!URL.canParse(e))return t.addIssue({code:N.custom,message:`URL must be parseable`,fatal:!0}),h}).refine(e=>{let t=new URL(e);return t.protocol!==`javascript:`&&t.protocol!==`data:`&&t.protocol!==`vbscript:`},{message:`URL cannot use javascript:, data:, or vbscript: scheme`}),jr=C({resource:f().url(),authorization_servers:A(J).optional(),jwks_uri:f().url().optional(),scopes_supported:A(f()).optional(),bearer_methods_supported:A(f()).optional(),resource_signing_alg_values_supported:A(f()).optional(),resource_name:f().optional(),resource_documentation:f().optional(),resource_policy_uri:f().url().optional(),resource_tos_uri:f().url().optional(),tls_client_certificate_bound_access_tokens:k().optional(),authorization_details_types_supported:A(f()).optional(),dpop_signing_alg_values_supported:A(f()).optional(),dpop_bound_access_tokens_required:k().optional()}),Mr=C({issuer:f(),authorization_endpoint:J,token_endpoint:J,registration_endpoint:J.optional(),scopes_supported:A(f()).optional(),response_types_supported:A(f()),response_modes_supported:A(f()).optional(),grant_types_supported:A(f()).optional(),token_endpoint_auth_methods_supported:A(f()).optional(),token_endpoint_auth_signing_alg_values_supported:A(f()).optional(),service_documentation:J.optional(),revocation_endpoint:J.optional(),revocation_endpoint_auth_methods_supported:A(f()).optional(),revocation_endpoint_auth_signing_alg_values_supported:A(f()).optional(),introspection_endpoint:f().optional(),introspection_endpoint_auth_methods_supported:A(f()).optional(),introspection_endpoint_auth_signing_alg_values_supported:A(f()).optional(),code_challenge_methods_supported:A(f()).optional(),client_id_metadata_document_supported:k().optional(),authorization_response_iss_parameter_supported:k().optional().catch(void 0),dpop_signing_alg_values_supported:A(f()).optional()}),Nr=C({issuer:f(),authorization_endpoint:J,token_endpoint:J,userinfo_endpoint:J.optional(),jwks_uri:J,registration_endpoint:J.optional(),scopes_supported:A(f()).optional(),response_types_supported:A(f()),response_modes_supported:A(f()).optional(),grant_types_supported:A(f()).optional(),acr_values_supported:A(f()).optional(),subject_types_supported:A(f()),id_token_signing_alg_values_supported:A(f()),id_token_encryption_alg_values_supported:A(f()).optional(),id_token_encryption_enc_values_supported:A(f()).optional(),userinfo_signing_alg_values_supported:A(f()).optional(),userinfo_encryption_alg_values_supported:A(f()).optional(),userinfo_encryption_enc_values_supported:A(f()).optional(),request_object_signing_alg_values_supported:A(f()).optional(),request_object_encryption_alg_values_supported:A(f()).optional(),request_object_encryption_enc_values_supported:A(f()).optional(),token_endpoint_auth_methods_supported:A(f()).optional(),token_endpoint_auth_signing_alg_values_supported:A(f()).optional(),display_values_supported:A(f()).optional(),claim_types_supported:A(f()).optional(),claims_supported:A(f()).optional(),service_documentation:f().optional(),claims_locales_supported:A(f()).optional(),ui_locales_supported:A(f()).optional(),claims_parameter_supported:k().optional(),request_parameter_supported:k().optional(),request_uri_parameter_supported:k().optional(),require_request_uri_registration:k().optional(),op_policy_uri:J.optional(),op_tos_uri:J.optional(),client_id_metadata_document_supported:k().optional(),authorization_response_iss_parameter_supported:k().optional().catch(void 0)}),Pr=d({...Nr.shape,...Mr.pick({code_challenge_methods_supported:!0}).shape}),Fr=d({access_token:f(),id_token:f().optional(),token_type:f(),expires_in:de().optional(),scope:f().optional(),refresh_token:f().optional(),issuer:f().optional().catch(void 0)}).strip(),Ir=d({issued_token_type:M(`urn:ietf:params:oauth:token-type:id-jag`),access_token:f(),token_type:f().optional(),expires_in:b().optional(),scope:f().optional()}).strip(),Lr=d({error:f(),error_description:f().optional(),error_uri:f().optional()}),Rr=J.optional().or(M(``).transform(()=>void 0)),zr=d({redirect_uris:A(J),token_endpoint_auth_method:f().optional(),grant_types:A(f()).optional(),response_types:A(f()).optional(),application_type:f().optional(),client_name:f().optional(),client_uri:J.optional(),logo_uri:Rr,scope:f().optional(),contacts:A(f()).optional(),tos_uri:Rr,policy_uri:f().optional(),jwks_uri:J.optional(),jwks:E().optional(),software_id:f().optional(),software_version:f().optional(),software_statement:f().optional()}).strip(),Br=d({client_id:f(),client_secret:f().optional(),client_id_issued_at:b().optional(),client_secret_expires_at:b().optional(),issuer:f().optional().catch(void 0)}).strip(),Vr=zr.merge(Br),Hr=d({error:f(),error_description:f().optional()}).strip(),Ur=d({token:f(),token_type_hint:f().optional()}).strip(),Wr=Symbol.for(`mcp.sdk.errorBrands`);function Gr(e,t){let n=new Set,r=t;for(;typeof r==`function`;){let e=r.mcpBrand;Object.prototype.hasOwnProperty.call(r,`mcpBrand`)&&typeof e==`string`&&n.add(e),r=Object.getPrototypeOf(r)}n.size!==0&&Object.defineProperty(e,Wr,{value:n,enumerable:!1,configurable:!0})}function Kr(e,t){try{if(typeof t==`object`&&t&&Object.prototype.hasOwnProperty.call(e,`mcpBrand`)&&typeof e.mcpBrand==`string`&&Object.prototype.hasOwnProperty.call(t,Wr)){let n=t[Wr];if(n&&typeof n.has==`function`&&n.has(e.mcpBrand))return!0}}catch{}return Function.prototype[Symbol.hasInstance].call(e,t)}var qr=function(e){return e.InvalidRequest=`invalid_request`,e.InvalidClient=`invalid_client`,e.InvalidGrant=`invalid_grant`,e.UnauthorizedClient=`unauthorized_client`,e.UnsupportedGrantType=`unsupported_grant_type`,e.InvalidScope=`invalid_scope`,e.AccessDenied=`access_denied`,e.ServerError=`server_error`,e.TemporarilyUnavailable=`temporarily_unavailable`,e.UnsupportedResponseType=`unsupported_response_type`,e.UnsupportedTokenType=`unsupported_token_type`,e.InvalidToken=`invalid_token`,e.MethodNotAllowed=`method_not_allowed`,e.TooManyRequests=`too_many_requests`,e.InvalidClientMetadata=`invalid_client_metadata`,e.InvalidRedirectUri=`invalid_redirect_uri`,e.InsufficientScope=`insufficient_scope`,e.InvalidTarget=`invalid_target`,e.InvalidDpopProof=`invalid_dpop_proof`,e.UseDpopNonce=`use_dpop_nonce`,e}({}),Jr=class e extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.OAuthError`})}static[Symbol.hasInstance](e){return Kr(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Kr(this,e)}constructor(e,t,n){super(t),this.code=e,this.errorUri=n,this.name=`OAuthError`,Gr(this,new.target)}toResponseObject(){let e={error:this.code,error_description:this.message};return this.errorUri&&(e.error_uri=this.errorUri),e}static fromResponse(t){return new e(t.error,t.error_description??t.error,t.error_uri)}},Y=function(e){return e.NotConnected=`NOT_CONNECTED`,e.AlreadyConnected=`ALREADY_CONNECTED`,e.NotInitialized=`NOT_INITIALIZED`,e.CapabilityNotSupported=`CAPABILITY_NOT_SUPPORTED`,e.RequestTimeout=`REQUEST_TIMEOUT`,e.ConnectionClosed=`CONNECTION_CLOSED`,e.SendFailed=`SEND_FAILED`,e.InvalidResult=`INVALID_RESULT`,e.UnsupportedResultType=`UNSUPPORTED_RESULT_TYPE`,e.InputRequiredRoundsExceeded=`INPUT_REQUIRED_ROUNDS_EXCEEDED`,e.ListPaginationExceeded=`LIST_PAGINATION_EXCEEDED`,e.MethodNotSupportedByProtocolVersion=`METHOD_NOT_SUPPORTED_BY_PROTOCOL_VERSION`,e.EraNegotiationFailed=`ERA_NEGOTIATION_FAILED`,e.ClientHttpNotImplemented=`CLIENT_HTTP_NOT_IMPLEMENTED`,e.ClientHttpAuthentication=`CLIENT_HTTP_AUTHENTICATION`,e.ClientHttpForbidden=`CLIENT_HTTP_FORBIDDEN`,e.ClientHttpUnexpectedContent=`CLIENT_HTTP_UNEXPECTED_CONTENT`,e.ClientHttpFailedToOpenStream=`CLIENT_HTTP_FAILED_TO_OPEN_STREAM`,e.ClientHttpFailedToTerminateSession=`CLIENT_HTTP_FAILED_TO_TERMINATE_SESSION`,e}({}),X=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.SdkError`})}static[Symbol.hasInstance](e){return Kr(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Kr(this,e)}constructor(e,t,n,r){super(t,r),this.code=e,this.data=n,this.name=`SdkError`,Gr(this,new.target)}},Yr=class extends X{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.SdkHttpError`})}constructor(e,t,n,r){super(e,t,n,r),this.name=`SdkHttpError`}get status(){return this.data.status}get statusText(){return this.data.statusText}};function Xr(e){let t=typeof e==`string`?new URL(e):new URL(e.href);return t.hash=``,t}function Zr(e){if(typeof e!=`object`||!e||Array.isArray(e))return e;let t={...e};return delete t.issuer,t}function Qr({requestedResource:e,configuredResource:t}){let n=typeof e==`string`?new URL(e):new URL(e.href),r=typeof t==`string`?new URL(t):new URL(t.href);if(n.origin!==r.origin||n.pathname.length=$r}function ni(e){return e.filter(e=>!ti(e))}function ri(e){return e.filter(e=>ti(e))}function ii(e){let t=e.structuredContent;return t===void 0||typeof t==`object`&&t&&!Array.isArray(t)||(e.content?.some(e=>e.type===`text`)??!1)?e:{...e,content:[...e.content??[],{type:`text`,text:JSON.stringify(t)}]}}var ai=[`task`,`inputRequests`,`requestState`];function oi(e){return typeof e!=`object`||!e||Array.isArray(e)||e.content!==void 0||ai.some(t=>t in e)?e:{...e,content:[]}}function si(){let e=oe(()=>v([f(),b(),k(),ae(),p(f(),e),A(e)])),t=p(f(),e),n=v([f(),b().int()]),r=f(),i=d({ttl:b().optional()}),a=d({taskId:f()}),o=C({progressToken:n.optional(),"io.modelcontextprotocol/related-task":a.optional()}),s=d({_meta:o.optional()}),c=s.extend({task:i.optional()}),l=d({method:f(),params:s.loose().optional()}),u=d({_meta:o.optional()}),m=d({method:f(),params:u.loose().optional()}),h=C({_meta:o.optional()}),g=v([f(),b().int()]),_=h.strict(),y=u.extend({requestId:g.optional(),reason:f().optional()}),w=m.extend({method:M(`notifications/cancelled`),params:y}),T=d({src:f(),mimeType:f().optional(),sizes:A(f()).optional(),theme:O([`light`,`dark`]).optional()}),E=d({icons:A(T).optional()}),ee=d({name:f(),title:f().optional()}),ne=ee.extend({...ee.shape,...E.shape,version:f(),websiteUrl:f().optional(),description:f().optional()}),re=S(d({applyDefaults:k().optional()}),t),ie=x(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,S(d({form:re.optional(),url:t.optional()}),t.optional())),se=C({list:t.optional(),cancel:t.optional(),requests:C({sampling:C({createMessage:t.optional()}).optional(),elicitation:C({create:t.optional()}).optional()}).optional()}),N=C({list:t.optional(),cancel:t.optional(),requests:C({tools:C({call:t.optional()}).optional()}).optional()}),ce=d({experimental:p(f(),t).optional(),sampling:d({context:t.optional(),tools:t.optional()}).optional(),elicitation:ie.optional(),roots:d({listChanged:k().optional()}).optional(),tasks:se.optional(),extensions:p(f(),t).optional()}),ue=s.extend({protocolVersion:f(),capabilities:ce,clientInfo:ne}),de=l.extend({method:M(`initialize`),params:ue}),fe=d({experimental:p(f(),t).optional(),logging:t.optional(),completions:t.optional(),prompts:d({listChanged:k().optional()}).optional(),resources:d({subscribe:k().optional(),listChanged:k().optional()}).optional(),tools:d({listChanged:k().optional()}).optional(),tasks:N.optional(),extensions:p(f(),t).optional()}),P=h.extend({protocolVersion:f(),capabilities:fe,serverInfo:ne,instructions:f().optional()}),pe=m.extend({method:M(`notifications/initialized`),params:u.optional()}),me=l.extend({method:M(`ping`),params:s.optional()}),F=d({progress:b(),total:j(b()),message:j(f())}),he=d({...u.shape,...F.shape,progressToken:n}),ge=m.extend({method:M(`notifications/progress`),params:he}),_e=s.extend({cursor:r.optional()}),ve=l.extend({params:_e.optional()}),ye=h.extend({nextCursor:r.optional()}),I=d({uri:f(),mimeType:j(f()),_meta:p(f(),D()).optional()}),be=I.extend({text:f()}),xe=f().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:`Invalid Base64 string`}),Se=I.extend({blob:xe}),Ce=O([`user`,`assistant`]),we=d({audience:A(Ce).optional(),priority:b().min(0).max(1).optional(),lastModified:le({offset:!0}).optional()}),Te=d({...ee.shape,...E.shape,uri:f(),description:j(f()),mimeType:j(f()),size:j(b()),annotations:we.optional(),_meta:j(C({}))}),Ee=d({...ee.shape,...E.shape,uriTemplate:f(),description:j(f()),mimeType:j(f()),annotations:we.optional(),_meta:j(C({}))}),De=ve.extend({method:M(`resources/list`)}),Oe=ye.extend({resources:A(Te)}),ke=ve.extend({method:M(`resources/templates/list`)}),Ae=ye.extend({resourceTemplates:A(Ee)}),je=s.extend({uri:f()}),Me=je,Ne=l.extend({method:M(`resources/read`),params:Me}),Pe=h.extend({contents:A(v([be,Se]))}),L=m.extend({method:M(`notifications/resources/list_changed`),params:u.optional()}),Fe=je,Ie=l.extend({method:M(`resources/subscribe`),params:Fe}),Le=je,Re=l.extend({method:M(`resources/unsubscribe`),params:Le}),ze=u.extend({uri:f()}),Be=m.extend({method:M(`notifications/resources/updated`),params:ze}),R=d({name:f(),description:j(f()),required:j(k())}),Ve=d({...ee.shape,...E.shape,description:j(f()),arguments:j(A(R)),_meta:j(C({}))}),z=ve.extend({method:M(`prompts/list`)}),B=ye.extend({prompts:A(Ve)}),V=s.extend({name:f(),arguments:p(f(),f()).optional()}),He=l.extend({method:M(`prompts/get`),params:V}),H=d({type:M(`text`),text:f(),annotations:we.optional(),_meta:p(f(),D()).optional()}),U=d({type:M(`image`),data:xe,mimeType:f(),annotations:we.optional(),_meta:p(f(),D()).optional()}),Ue=d({type:M(`audio`),data:xe,mimeType:f(),annotations:we.optional(),_meta:p(f(),D()).optional()}),We=d({type:M(`tool_use`),name:f(),id:f(),input:p(f(),D()),_meta:p(f(),D()).optional()}),Ge=d({type:M(`resource`),resource:v([be,Se]),annotations:we.optional(),_meta:p(f(),D()).optional()}),Ke=Te.extend({type:M(`resource_link`)}),qe=v([H,U,Ue,Ke,Ge]),Je=d({role:Ce,content:qe}),Ye=h.extend({description:f().optional(),messages:A(Je)}),Xe=m.extend({method:M(`notifications/prompts/list_changed`),params:u.optional()}),Ze=d({title:f().optional(),readOnlyHint:k().optional(),destructiveHint:k().optional(),idempotentHint:k().optional(),openWorldHint:k().optional()}),Qe=d({taskSupport:O([`required`,`optional`,`forbidden`]).optional()}),$e=d({...ee.shape,...E.shape,description:f().optional(),inputSchema:d({type:M(`object`),properties:p(f(),e).optional(),required:A(f()).optional()}).catchall(D()),outputSchema:d({type:M(`object`),properties:p(f(),e).optional(),required:A(f()).optional()}).catchall(D()).optional(),annotations:Ze.optional(),execution:Qe.optional(),_meta:p(f(),D()).optional()}),et=ve.extend({method:M(`tools/list`)}),tt=ye.extend({tools:A($e)}),nt=h.extend({content:A(qe),structuredContent:p(f(),D()).optional(),isError:k().optional()}),rt=c.extend({name:f(),arguments:p(f(),D()).optional()}),it=l.extend({method:M(`tools/call`),params:rt}),at=m.extend({method:M(`notifications/tools/list_changed`),params:u.optional()}),ot=O([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),W=s.extend({level:ot}),st=l.extend({method:M(`logging/setLevel`),params:W}),ct=u.extend({level:ot,logger:f().optional(),data:D()}),lt=m.extend({method:M(`notifications/message`),params:ct}),ut=d({name:f().optional()}),dt=d({hints:A(ut).optional(),costPriority:b().min(0).max(1).optional(),speedPriority:b().min(0).max(1).optional(),intelligencePriority:b().min(0).max(1).optional()}),ft=d({mode:O([`auto`,`required`,`none`]).optional()}),pt=d({type:M(`tool_result`),toolUseId:f().describe(`The unique identifier for the corresponding tool call.`),content:A(qe),structuredContent:d({}).loose().optional(),isError:k().optional(),_meta:p(f(),D()).optional()}),mt=te(`type`,[H,U,Ue]),ht=te(`type`,[H,U,Ue,We,pt]),gt=d({role:Ce,content:v([ht,A(ht)]),_meta:p(f(),D()).optional()}),_t=c.extend({messages:A(gt),modelPreferences:dt.optional(),systemPrompt:f().optional(),includeContext:O([`none`,`thisServer`,`allServers`]).optional(),temperature:b().optional(),maxTokens:b().int(),stopSequences:A(f()).optional(),metadata:t.optional(),tools:A($e).optional(),toolChoice:ft.optional()}),vt=l.extend({method:M(`sampling/createMessage`),params:_t}),yt=h.extend({model:f(),stopReason:j(O([`endTurn`,`stopSequence`,`maxTokens`]).or(f())),role:Ce,content:mt}),bt=h.extend({model:f(),stopReason:j(O([`endTurn`,`stopSequence`,`maxTokens`,`toolUse`]).or(f())),role:Ce,content:v([ht,A(ht)])}),xt=d({type:M(`boolean`),title:f().optional(),description:f().optional(),default:k().optional()}),St=d({type:M(`string`),title:f().optional(),description:f().optional(),minLength:b().optional(),maxLength:b().optional(),format:O([`email`,`uri`,`date`,`date-time`]).optional(),default:f().optional()}),Ct=d({type:O([`number`,`integer`]),title:f().optional(),description:f().optional(),minimum:b().optional(),maximum:b().optional(),default:b().optional()}),wt=d({type:M(`string`),title:f().optional(),description:f().optional(),enum:A(f()),default:f().optional()}),Tt=d({type:M(`string`),title:f().optional(),description:f().optional(),oneOf:A(d({const:f(),title:f()})),default:f().optional()}),Et=d({type:M(`string`),title:f().optional(),description:f().optional(),enum:A(f()),enumNames:A(f()).optional(),default:f().optional()}),Dt=v([wt,Tt]),Ot=d({type:M(`array`),title:f().optional(),description:f().optional(),minItems:b().optional(),maxItems:b().optional(),items:d({type:M(`string`),enum:A(f())}),default:A(f()).optional()}),kt=d({type:M(`array`),title:f().optional(),description:f().optional(),minItems:b().optional(),maxItems:b().optional(),items:d({anyOf:A(d({const:f(),title:f()}))}),default:A(f()).optional()}),At=v([Ot,kt]),jt=v([Et,Dt,At]),Mt=v([jt,xt,St,Ct]),Nt=c.extend({mode:M(`form`).optional(),message:f(),requestedSchema:d({type:M(`object`),properties:p(f(),Mt),required:A(f()).optional()}).catchall(D())}),Pt=c.extend({mode:M(`url`),message:f(),elicitationId:f(),url:f().url()}),Ft=v([Nt,Pt]),G=l.extend({method:M(`elicitation/create`),params:Ft}),K=u.extend({elicitationId:f()}),It=m.extend({method:M(`notifications/elicitation/complete`),params:K}),Lt=h.extend({action:O([`accept`,`decline`,`cancel`]),content:x(e=>e===null?void 0:e,p(f(),v([f(),b(),k(),A(f())])).optional())}),Rt=d({type:M(`ref/resource`),uri:f()}),zt=d({type:M(`ref/prompt`),name:f()}),Bt=s.extend({ref:v([zt,Rt]),argument:d({name:f(),value:f()}),context:d({arguments:p(f(),f()).optional()}).optional()}),Vt=l.extend({method:M(`completion/complete`),params:Bt}),Ht=h.extend({completion:C({values:A(f()).max(100),total:j(b().int()),hasMore:j(k())})}),Ut=d({uri:f().startsWith(`file://`),name:f().optional(),_meta:p(f(),D()).optional()}),Wt=l.extend({method:M(`roots/list`),params:s.optional()}),Gt=h.extend({roots:A(Ut)}),Kt=m.extend({method:M(`notifications/roots/list_changed`),params:u.optional()}),qt=C({ttl:b().optional(),pollInterval:b().optional()}),Jt=O([`working`,`input_required`,`completed`,`failed`,`cancelled`]),Yt=d({taskId:f(),status:Jt,ttl:v([b(),ae()]),createdAt:f(),lastUpdatedAt:f(),pollInterval:j(b()),statusMessage:j(f())}),Xt=h.extend({task:Yt}),Zt=u.merge(Yt),Qt=m.extend({method:M(`notifications/tasks/status`),params:Zt}),$t=l.extend({method:M(`tasks/get`),params:s.extend({taskId:f()})}),q=h.merge(Yt),en=l.extend({method:M(`tasks/result`),params:s.extend({taskId:f()})}),tn=h.loose(),nn=ve.extend({method:M(`tasks/list`)}),rn=ye.extend({tasks:A(Yt)}),an=l.extend({method:M(`tasks/cancel`),params:s.extend({taskId:f()})});return{JSONValueSchema:e,JSONObjectSchema:t,ProgressTokenSchema:n,CursorSchema:r,TaskMetadataSchema:i,RelatedTaskMetadataSchema:a,RequestMetaSchema:o,BaseRequestParamsSchema:s,TaskAugmentedRequestParamsSchema:c,RequestSchema:l,NotificationsParamsSchema:u,NotificationSchema:m,ResultSchema:h,RequestIdSchema:g,EmptyResultSchema:_,CancelledNotificationParamsSchema:y,CancelledNotificationSchema:w,IconSchema:T,IconsSchema:E,BaseMetadataSchema:ee,ImplementationSchema:ne,ClientTasksCapabilitySchema:se,ServerTasksCapabilitySchema:N,ClientCapabilitiesSchema:ce,InitializeRequestParamsSchema:ue,InitializeRequestSchema:de,ServerCapabilitiesSchema:fe,InitializeResultSchema:P,InitializedNotificationSchema:pe,PingRequestSchema:me,ProgressSchema:F,ProgressNotificationParamsSchema:he,ProgressNotificationSchema:ge,PaginatedRequestParamsSchema:_e,PaginatedRequestSchema:ve,PaginatedResultSchema:ye,ResourceContentsSchema:I,TextResourceContentsSchema:be,BlobResourceContentsSchema:Se,RoleSchema:Ce,AnnotationsSchema:we,ResourceSchema:Te,ResourceTemplateSchema:Ee,ListResourcesRequestSchema:De,ListResourcesResultSchema:Oe,ListResourceTemplatesRequestSchema:ke,ListResourceTemplatesResultSchema:Ae,ResourceRequestParamsSchema:je,ReadResourceRequestParamsSchema:Me,ReadResourceRequestSchema:Ne,ReadResourceResultSchema:Pe,ResourceListChangedNotificationSchema:L,SubscribeRequestParamsSchema:Fe,SubscribeRequestSchema:Ie,UnsubscribeRequestParamsSchema:Le,UnsubscribeRequestSchema:Re,ResourceUpdatedNotificationParamsSchema:ze,ResourceUpdatedNotificationSchema:Be,PromptArgumentSchema:R,PromptSchema:Ve,ListPromptsRequestSchema:z,ListPromptsResultSchema:B,GetPromptRequestParamsSchema:V,GetPromptRequestSchema:He,TextContentSchema:H,ImageContentSchema:U,AudioContentSchema:Ue,ToolUseContentSchema:We,EmbeddedResourceSchema:Ge,ResourceLinkSchema:Ke,ContentBlockSchema:qe,PromptMessageSchema:Je,GetPromptResultSchema:Ye,PromptListChangedNotificationSchema:Xe,ToolAnnotationsSchema:Ze,ToolExecutionSchema:Qe,ToolSchema:$e,ListToolsRequestSchema:et,ListToolsResultSchema:tt,CallToolResultSchema:nt,CallToolRequestParamsSchema:rt,CallToolRequestSchema:it,ToolListChangedNotificationSchema:at,LoggingLevelSchema:ot,SetLevelRequestParamsSchema:W,SetLevelRequestSchema:st,LoggingMessageNotificationParamsSchema:ct,LoggingMessageNotificationSchema:lt,ModelHintSchema:ut,ModelPreferencesSchema:dt,ToolChoiceSchema:ft,ToolResultContentSchema:pt,SamplingContentSchema:mt,SamplingMessageContentBlockSchema:ht,SamplingMessageSchema:gt,CreateMessageRequestParamsSchema:_t,CreateMessageRequestSchema:vt,CreateMessageResultSchema:yt,CreateMessageResultWithToolsSchema:bt,BooleanSchemaSchema:xt,StringSchemaSchema:St,NumberSchemaSchema:Ct,UntitledSingleSelectEnumSchemaSchema:wt,TitledSingleSelectEnumSchemaSchema:Tt,LegacyTitledEnumSchemaSchema:Et,SingleSelectEnumSchemaSchema:Dt,UntitledMultiSelectEnumSchemaSchema:Ot,TitledMultiSelectEnumSchemaSchema:kt,MultiSelectEnumSchemaSchema:At,EnumSchemaSchema:jt,PrimitiveSchemaDefinitionSchema:Mt,ElicitRequestFormParamsSchema:Nt,ElicitRequestURLParamsSchema:Pt,ElicitRequestParamsSchema:Ft,ElicitRequestSchema:G,ElicitationCompleteNotificationParamsSchema:K,ElicitationCompleteNotificationSchema:It,ElicitResultSchema:Lt,ResourceTemplateReferenceSchema:Rt,PromptReferenceSchema:zt,CompleteRequestParamsSchema:Bt,CompleteRequestSchema:Vt,CompleteResultSchema:Ht,RootSchema:Ut,ListRootsRequestSchema:Wt,ListRootsResultSchema:Gt,RootsListChangedNotificationSchema:Kt,TaskCreationParamsSchema:qt,TaskStatusSchema:Jt,TaskSchema:Yt,CreateTaskResultSchema:Xt,TaskStatusNotificationParamsSchema:Zt,TaskStatusNotificationSchema:Qt,GetTaskRequestSchema:$t,GetTaskResultSchema:q,GetTaskPayloadRequestSchema:en,GetTaskPayloadResultSchema:tn,ListTasksRequestSchema:nn,ListTasksResultSchema:rn,CancelTaskRequestSchema:an,CancelTaskResultSchema:h.merge(Yt),ClientRequestSchema:v([me,de,Vt,st,He,z,De,ke,Ne,Ie,Re,it,et,$t,en,nn,an]),ClientNotificationSchema:v([w,ge,pe,Kt,Qt]),ClientResultSchema:v([_,yt,bt,Lt,Gt,q,rn,Xt]),ServerRequestSchema:v([me,vt,G,Wt,$t,en,nn,an]),ServerNotificationSchema:v([w,ge,lt,Be,L,at,Xe,Qt,It]),ServerResultSchema:v([_,P,Ht,Ye,B,Oe,Ae,Pe,nt,tt,q,rn,Xt]),CallToolResultWireSchema:D().superRefine((e,t)=>{if(typeof e==`object`&&e&&!Array.isArray(e)&&e.content===void 0){for(let n of ai)if(n in e){t.addIssue({code:`custom`,message:`content is required when the body carries '${n}' — another result family cannot default into an empty tools/call success`});return}}}).transform(oi).pipe(nt)}}var ci;function li(){return ci??=si()}function ui(e){return e.type!==`object`}var di=new Set([`const`,`enum`,`default`,`examples`]),fi=new Set([`properties`,`patternProperties`,`$defs`,`definitions`,`dependentSchemas`,`dependencies`]);function pi(e){return e!==void 0&&!(typeof e==`string`&&e.startsWith(`#`))}function mi(e){let t=typeof e.$schema==`string`?e.$schema:void 0;if(pi(e.$id))return{...t!==void 0&&{$schema:t},type:`object`,properties:{result:e},required:[`result`]};let n=Ce(e.$schema)&&e.$recursiveAnchor!==!0,r=(e,t)=>{if(Array.isArray(e))return e.map(e=>r(e,!1));if(typeof e!=`object`||!e||!t&&pi(e.$id))return e;let i={},a=!1;for(let[o,s]of Object.entries(e))t?i[o]=r(s,!1):(o===`$ref`||o===`$dynamicRef`)&&typeof s==`string`?i[o]=s===`#`?`#/properties/result`:s.startsWith(`#/`)?`#/properties/result${s.slice(1)}`:s:o===`$recursiveRef`&&s===`#`&&n?a=!0:i[o]=di.has(o)?s:fi.has(o)?r(s,!0):r(s,!1);return a&&(`$ref`in i?i.allOf=[...Array.isArray(i.allOf)?i.allOf:[],{$ref:`#/properties/result`}]:i.$ref=`#/properties/result`),i};return{...t!==void 0&&{$schema:t},type:`object`,properties:{result:r(e,!1)},required:[`result`]}}var hi={ping:null,initialize:null,"completion/complete":null,"logging/setLevel":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"resources/subscribe":null,"resources/unsubscribe":null,"tools/call":null,"tools/list":null,"tasks/get":null,"tasks/result":null,"tasks/list":null,"tasks/cancel":null,"sampling/createMessage":null,"elicitation/create":null,"roots/list":null},gi={"notifications/cancelled":null,"notifications/progress":null,"notifications/initialized":null,"notifications/roots/list_changed":null,"notifications/tasks/status":null,"notifications/message":null,"notifications/resources/updated":null,"notifications/resources/list_changed":null,"notifications/tools/list_changed":null,"notifications/prompts/list_changed":null,"notifications/elicitation/complete":null},_i={ping:null,initialize:null,"completion/complete":null,"logging/setLevel":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"resources/subscribe":null,"resources/unsubscribe":null,"tools/call":null,"tools/list":null,"sampling/createMessage":null,"elicitation/create":null,"roots/list":null},vi;function yi(){if(vi)return vi;let e=li();return vi={requestSchemas:{ping:e.PingRequestSchema,initialize:e.InitializeRequestSchema,"completion/complete":e.CompleteRequestSchema,"logging/setLevel":e.SetLevelRequestSchema,"prompts/get":e.GetPromptRequestSchema,"prompts/list":e.ListPromptsRequestSchema,"resources/list":e.ListResourcesRequestSchema,"resources/templates/list":e.ListResourceTemplatesRequestSchema,"resources/read":e.ReadResourceRequestSchema,"resources/subscribe":e.SubscribeRequestSchema,"resources/unsubscribe":e.UnsubscribeRequestSchema,"tools/call":e.CallToolRequestSchema,"tools/list":e.ListToolsRequestSchema,"tasks/get":e.GetTaskRequestSchema,"tasks/result":e.GetTaskPayloadRequestSchema,"tasks/list":e.ListTasksRequestSchema,"tasks/cancel":e.CancelTaskRequestSchema,"sampling/createMessage":e.CreateMessageRequestSchema,"elicitation/create":e.ElicitRequestSchema,"roots/list":e.ListRootsRequestSchema},notificationSchemas:{"notifications/cancelled":e.CancelledNotificationSchema,"notifications/progress":e.ProgressNotificationSchema,"notifications/initialized":e.InitializedNotificationSchema,"notifications/roots/list_changed":e.RootsListChangedNotificationSchema,"notifications/tasks/status":e.TaskStatusNotificationSchema,"notifications/message":e.LoggingMessageNotificationSchema,"notifications/resources/updated":e.ResourceUpdatedNotificationSchema,"notifications/resources/list_changed":e.ResourceListChangedNotificationSchema,"notifications/tools/list_changed":e.ToolListChangedNotificationSchema,"notifications/prompts/list_changed":e.PromptListChangedNotificationSchema,"notifications/elicitation/complete":e.ElicitationCompleteNotificationSchema},resultSchemas:{ping:e.EmptyResultSchema,initialize:e.InitializeResultSchema,"completion/complete":e.CompleteResultSchema,"logging/setLevel":e.EmptyResultSchema,"prompts/get":e.GetPromptResultSchema,"prompts/list":e.ListPromptsResultSchema,"resources/list":e.ListResourcesResultSchema,"resources/templates/list":e.ListResourceTemplatesResultSchema,"resources/read":e.ReadResourceResultSchema,"resources/subscribe":e.EmptyResultSchema,"resources/unsubscribe":e.EmptyResultSchema,"tools/call":e.CallToolResultWireSchema,"tools/list":e.ListToolsResultSchema,"sampling/createMessage":e.CreateMessageResultWithToolsSchema,"elicitation/create":e.ElicitResultSchema,"roots/list":e.ListRootsResultSchema}},vi}function bi(e){return Object.prototype.hasOwnProperty.call(hi,e)}function xi(e){return Object.prototype.hasOwnProperty.call(gi,e)}function Si(e){return Object.prototype.hasOwnProperty.call(_i,e)}function Ci(e){return Si(e)?yi().resultSchemas[e]:void 0}function wi(e){return bi(e)?yi().requestSchemas[e]:void 0}function Ti(e){return xi(e)?yi().notificationSchemas[e]:void 0}Object.keys(hi),Object.keys(gi);function Ei(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Di(e,t){if(e===void 0)return{ok:!1,reason:`not-in-era`};let n=e.safeParse(t);return n.success?{ok:!0,value:n.data}:{ok:!1,reason:`invalid`,message:String(n.error)}}var Oi={ok:!1,reason:`not-in-era`};function ki(e){return Ei(e)&&Ei(e.outputSchema)&&ui(e.outputSchema)}function Ai(e){return e}var ji={era:`2025-11-25`,hasRequestMethod:bi,hasNotificationMethod:xi,validateRequest:(e,t)=>Di(wi(e),t),validateResult:(e,t)=>Di(Ci(e),t),validateNotification:(e,t)=>Di(Ti(e),t),hasInputRequestMethod:()=>!1,validateInputRequest:()=>Oi,validateInputResponse:()=>Oi,samplingResultVariant:((e,t)=>{let n=li();return Di(e?n.CreateMessageResultWithToolsSchema:n.CreateMessageResultSchema,t)}),outboundEnvelope:e=>void 0,validateEnvelopeMeta:e=>[],projectCallToolResult(e,t){let n=ii(e),r=n.structuredContent;if(r===void 0)return n;let i=typeof r!=`object`||!r||Array.isArray(r),a=t!==void 0&&ui(t);return!i&&!a?n:{...n,structuredContent:{result:r}}},decodeResult(e,t){if(Ei(t)&&`resultType`in t){let e={...t};return delete e.resultType,{kind:`complete`,result:Ai(e)}}return{kind:`complete`,result:Ai(t)}},encodeResult(e,t){if(e!==`tools/list`)return t;let n=t.tools;return!Array.isArray(n)||!n.some(e=>ki(e))?t:{...t,tools:n.map(e=>ki(e)?{...e,outputSchema:mi(e.outputSchema)}:e)}},encodeErrorCode:e=>e===-32002?-32602:e,checkInboundEnvelope:e=>void 0};function Mi(){let e=oe(()=>v([f(),b(),k(),ae(),p(f(),e),A(e)])),t=p(f(),e),n=v([f(),b().int()]),r=f(),i=v([f(),b().int()]),a=O([`user`,`assistant`]),o=O([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),s=f().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:`Invalid Base64 string`}),c=d({ttl:b().optional()}),l=d({taskId:f()}),u=C({progressToken:n.optional(),"io.modelcontextprotocol/related-task":l.optional()}),m=d({_meta:u.optional()}),h=m.extend({task:c.optional()}),g=d({_meta:u.optional()}),_=d({method:f(),params:g.loose().optional()}),y=d({src:f(),mimeType:f().optional(),sizes:A(f()).optional(),theme:O([`light`,`dark`]).optional()}),w=d({icons:A(y).optional()}),T=d({name:f(),title:f().optional()}),E=T.extend({...T.shape,...w.shape,version:f(),websiteUrl:f().optional(),description:f().optional()}),ee=S(d({applyDefaults:k().optional()}),t),te=x(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,S(d({form:ee.optional(),url:t.optional()}),t.optional())),ne=C({list:t.optional(),cancel:t.optional(),requests:C({sampling:C({createMessage:t.optional()}).optional(),elicitation:C({create:t.optional()}).optional()}).optional()}),re=C({list:t.optional(),cancel:t.optional(),requests:C({tools:C({call:t.optional()}).optional()}).optional()}),ie=d({experimental:p(f(),t).optional(),sampling:d({context:t.optional(),tools:t.optional()}).optional(),elicitation:te.optional(),roots:d({listChanged:k().optional()}).optional(),tasks:ne.optional(),extensions:p(f(),t).optional()}),se=d({experimental:p(f(),t).optional(),logging:t.optional(),completions:t.optional(),prompts:d({listChanged:k().optional()}).optional(),resources:d({subscribe:k().optional(),listChanged:k().optional()}).optional(),tools:d({listChanged:k().optional()}).optional(),tasks:re.optional(),extensions:p(f(),t).optional()}),N=d({progress:b(),total:j(b()),message:j(f())}),ce=d({...g.shape,...N.shape,progressToken:n}),ue=_.extend({method:M(`notifications/progress`),params:ce}),de=g.extend({level:o,logger:f().optional(),data:D()}),fe=_.extend({method:M(`notifications/message`),params:de}),P=d({uri:f(),mimeType:j(f()),_meta:p(f(),D()).optional()}),pe=P.extend({text:f()}),me=P.extend({blob:s}),F=d({audience:A(a).optional(),priority:b().min(0).max(1).optional(),lastModified:le({offset:!0}).optional()}),he=d({...T.shape,...w.shape,uri:f(),description:j(f()),mimeType:j(f()),size:j(b()),annotations:F.optional(),_meta:j(C({}))}),ge=d({...T.shape,...w.shape,uriTemplate:f(),description:j(f()),mimeType:j(f()),annotations:F.optional(),_meta:j(C({}))}),_e=_.extend({method:M(`notifications/resources/list_changed`),params:g.optional()}),ve=g.extend({uri:f()}),ye=_.extend({method:M(`notifications/resources/updated`),params:ve}),I=d({name:f(),description:j(f()),required:j(k())}),be=d({...T.shape,...w.shape,description:j(f()),arguments:j(A(I)),_meta:j(C({}))}),xe=_.extend({method:M(`notifications/prompts/list_changed`),params:g.optional()}),Se=d({type:M(`text`),text:f(),annotations:F.optional(),_meta:p(f(),D()).optional()}),Ce=d({type:M(`image`),data:s,mimeType:f(),annotations:F.optional(),_meta:p(f(),D()).optional()}),we=d({type:M(`audio`),data:s,mimeType:f(),annotations:F.optional(),_meta:p(f(),D()).optional()}),Te=d({type:M(`tool_use`),name:f(),id:f(),input:p(f(),D()),_meta:p(f(),D()).optional()}),Ee=d({type:M(`resource`),resource:v([pe,me]),annotations:F.optional(),_meta:p(f(),D()).optional()}),De=he.extend({type:M(`resource_link`)}),Me=v([Se,Ce,we,De,Ee]),Pe=d({role:a,content:Me}),L=d({title:f().optional(),readOnlyHint:k().optional(),destructiveHint:k().optional(),idempotentHint:k().optional(),openWorldHint:k().optional()}),Fe=_.extend({method:M(`notifications/tools/list_changed`),params:g.optional()}),Ie=d({name:f().optional()}),Le=d({hints:A(Ie).optional(),costPriority:b().min(0).max(1).optional(),speedPriority:b().min(0).max(1).optional(),intelligencePriority:b().min(0).max(1).optional()}),Re=d({mode:O([`auto`,`required`,`none`]).optional()}),ze=d({type:M(`boolean`),title:f().optional(),description:f().optional(),default:k().optional()}),Be=d({type:M(`string`),title:f().optional(),description:f().optional(),minLength:b().optional(),maxLength:b().optional(),format:O([`email`,`uri`,`date`,`date-time`]).optional(),default:f().optional()}),R=d({type:O([`number`,`integer`]),title:f().optional(),description:f().optional(),minimum:b().optional(),maximum:b().optional(),default:b().optional()}),Ve=d({type:M(`string`),title:f().optional(),description:f().optional(),enum:A(f()),default:f().optional()}),z=d({type:M(`string`),title:f().optional(),description:f().optional(),oneOf:A(d({const:f(),title:f()})),default:f().optional()}),B=d({type:M(`string`),title:f().optional(),description:f().optional(),enum:A(f()),enumNames:A(f()).optional(),default:f().optional()}),V=v([Ve,z]),He=d({type:M(`array`),title:f().optional(),description:f().optional(),minItems:b().optional(),maxItems:b().optional(),items:d({type:M(`string`),enum:A(f())}),default:A(f()).optional()}),H=d({type:M(`array`),title:f().optional(),description:f().optional(),minItems:b().optional(),maxItems:b().optional(),items:d({anyOf:A(d({const:f(),title:f()}))}),default:A(f()).optional()}),U=v([He,H]),Ue=v([B,V,U]),We=v([Ue,ze,Be,R]),Ge=h.extend({mode:M(`form`).optional(),message:f(),requestedSchema:d({type:M(`object`),properties:p(f(),We),required:A(f()).optional()}).catchall(D())}),Ke=d({type:M(`ref/resource`),uri:f()}),qe=d({type:M(`ref/prompt`),name:f()}),Je=d({uri:f().startsWith(`file://`),name:f().optional(),_meta:p(f(),D()).optional()}),Ye=ie.shape,Xe=d({experimental:Ye.experimental,sampling:Ye.sampling,elicitation:Ye.elicitation,roots:Ye.roots,extensions:Ye.extensions}),Ze=se.shape,Qe=d({experimental:Ze.experimental,logging:Ze.logging,completions:Ze.completions,prompts:Ze.prompts,resources:Ze.resources,tools:Ze.tools,extensions:Ze.extensions}),$e=C({progressToken:n.optional(),[Oe]:f(),[ke]:E.optional(),[je]:Xe,[Ne]:o.optional()}),et=d({...T.shape,...w.shape,description:f().optional(),inputSchema:C({$schema:f().optional(),type:M(`object`)}),outputSchema:C({$schema:f().optional()}).optional(),annotations:L.optional(),_meta:p(f(),D()).optional()}),tt=d({type:M(`tool_result`),toolUseId:f(),content:A(Me),structuredContent:D().optional(),isError:k().optional(),_meta:p(f(),D()).optional()}),nt=v([Se,Ce,we,Te,tt]),rt=d({role:a,content:v([nt,A(nt)]),_meta:p(f(),D()).optional()}),it=f(),at=C({[Ae]:E.optional().catch(void 0)}),ot=at.optional();function W(e){return C({_meta:ot,resultType:it.default(`complete`),...e})}let st=W({}),ct=W({nextCursor:r.optional()}),lt=W({content:A(Me),structuredContent:D().optional(),isError:k().optional()}),ut=W({ttlMs:b().int().min(0),cacheScope:O([`public`,`private`]),tools:A(et),nextCursor:r.optional()}),dt=W({ttlMs:b().int().min(0),cacheScope:O([`public`,`private`]),prompts:A(be),nextCursor:r.optional()}),ft=W({description:f().optional(),messages:A(Pe)}),pt=W({ttlMs:b().int().min(0),cacheScope:O([`public`,`private`]),resources:A(he),nextCursor:r.optional()}),mt=W({ttlMs:b().int().min(0),cacheScope:O([`public`,`private`]),resourceTemplates:A(ge),nextCursor:r.optional()}),ht=W({ttlMs:b().int().min(0),cacheScope:O([`public`,`private`]),contents:A(v([pe,me]))}),gt=W({completion:d({values:A(f()).max(100),total:b().int().optional(),hasMore:k().optional()}).loose()}),_t=W({ttlMs:b().int().min(0),cacheScope:O([`public`,`private`])}),vt=W({ttlMs:b().int().min(0).catch(0),cacheScope:O([`public`,`private`]).catch(`private`),supportedVersions:A(f()),capabilities:Qe,instructions:f().optional()}),yt=d({messages:A(rt),modelPreferences:Le.optional(),systemPrompt:f().optional(),includeContext:O([`none`,`thisServer`,`allServers`]).optional(),temperature:b().optional(),maxTokens:b().int(),stopSequences:A(f()).optional(),metadata:t.optional(),tools:A(et).optional(),toolChoice:Re.optional()}),bt=d({method:M(`sampling/createMessage`),params:yt}),xt=d({method:M(`roots/list`),params:d({_meta:p(f(),D()).optional()}).optional()}),St=d({...rt.shape,model:f(),stopReason:f().optional()}),Ct=d({roots:A(Je)}),wt=d({action:O([`accept`,`decline`,`cancel`]),content:p(f(),v([f(),b(),k(),A(f())])).optional()}),Tt=d({mode:M(`url`),message:f(),url:f().url()}),Et=v([Ge,Tt]),Dt=d({method:M(`elicitation/create`),params:Et}),Ot=v([bt,xt,Dt]),kt=v([St,Ct,wt]),At=p(f(),Ot),jt=p(f(),kt),Mt=W({inputRequests:At.optional(),requestState:f().optional()}),Nt={inputResponses:jt.optional(),requestState:f().optional()},Pt=d({_meta:$e,...Nt}),Ft=C({progressToken:n.optional()});function G(e,t){return d({method:M(e),params:d({_meta:$e,...t})})}function K(e,t){return d({method:M(e),params:d({_meta:Ft.optional(),...t}).optional()})}let It={name:f(),arguments:p(f(),D()).optional(),...Nt},Lt={cursor:r.optional()},Rt=G(`tools/call`,It),zt=G(`tools/list`,Lt),Bt=G(`prompts/list`,Lt),Vt=G(`prompts/get`,{name:f(),arguments:p(f(),f()).optional(),...Nt}),Ht=G(`resources/list`,Lt),Ut=G(`resources/templates/list`,Lt),Wt=G(`resources/read`,{uri:f(),...Nt}),Gt={ref:v([qe,Ke]),argument:d({name:f(),value:f()}),context:d({arguments:p(f(),f()).optional()}).optional()},Kt=G(`completion/complete`,Gt),qt=G(`server/discover`,{}),Jt=d({toolsListChanged:k().optional(),promptsListChanged:k().optional(),resourcesListChanged:k().optional(),resourceSubscriptions:A(f()).optional()}),Yt={notifications:Jt},Xt=G(`subscriptions/listen`,Yt),Zt=at.extend({"io.modelcontextprotocol/subscriptionId":i}),Qt=C({_meta:Zt,resultType:it.default(`complete`)}),$t={"tools/call":K(`tools/call`,It),"tools/list":K(`tools/list`,Lt),"prompts/get":K(`prompts/get`,{name:f(),arguments:p(f(),f()).optional()}),"prompts/list":K(`prompts/list`,Lt),"resources/list":K(`resources/list`,Lt),"resources/templates/list":K(`resources/templates/list`,Lt),"resources/read":K(`resources/read`,{uri:f()}),"completion/complete":K(`completion/complete`,Gt),"server/discover":K(`server/discover`,{}),"subscriptions/listen":K(`subscriptions/listen`,Yt)};function q(e){return C({_meta:ot,...e})}let en={"tools/call":q({content:A(Me),structuredContent:D().optional(),isError:k().optional()}),"tools/list":q({ttlMs:b().int().min(0),cacheScope:O([`public`,`private`]),tools:A(et),nextCursor:r.optional()}),"prompts/get":q({description:f().optional(),messages:A(Pe)}),"prompts/list":q({ttlMs:b().int().min(0),cacheScope:O([`public`,`private`]),prompts:A(be),nextCursor:r.optional()}),"resources/list":q({ttlMs:b().int().min(0),cacheScope:O([`public`,`private`]),resources:A(he),nextCursor:r.optional()}),"resources/templates/list":q({ttlMs:b().int().min(0),cacheScope:O([`public`,`private`]),resourceTemplates:A(ge),nextCursor:r.optional()}),"resources/read":q({ttlMs:b().int().min(0),cacheScope:O([`public`,`private`]),contents:A(v([pe,me]))}),"completion/complete":q({completion:d({values:A(f()).max(100),total:b().int().optional(),hasMore:k().optional()}).loose()}),"server/discover":q({ttlMs:b().int().min(0).catch(0),cacheScope:O([`public`,`private`]).catch(`private`),supportedVersions:A(f()),capabilities:Qe,instructions:f().optional()}),"subscriptions/listen":q({})},tn=C({"io.modelcontextprotocol/subscriptionId":i.optional()}),nn=d({method:M(`notifications/subscriptions/acknowledged`),params:d({_meta:tn.optional(),notifications:Jt})}),rn=d({_meta:tn.optional(),requestId:i,reason:f().optional()}),an=d({method:M(`notifications/cancelled`),params:rn}),on={"notifications/cancelled":an,"notifications/progress":ue,"notifications/message":fe,"notifications/resources/updated":ye,"notifications/resources/list_changed":_e,"notifications/tools/list_changed":Fe,"notifications/prompts/list_changed":xe,"notifications/subscriptions/acknowledged":nn},sn=e=>d({jsonrpc:M(`2.0`),id:v([f(),b().int()]),result:e}).strict();return{JSONValueSchema:e,JSONObjectSchema:t,ProgressTokenSchema:n,CursorSchema:r,RequestIdSchema:i,RoleSchema:a,LoggingLevelSchema:o,TaskMetadataSchema:c,RelatedTaskMetadataSchema:l,RequestMetaSchema:u,BaseRequestParamsSchema:m,TaskAugmentedRequestParamsSchema:h,NotificationsParamsSchema:g,NotificationSchema:_,IconSchema:y,IconsSchema:w,BaseMetadataSchema:T,ImplementationSchema:E,ClientTasksCapabilitySchema:ne,ServerTasksCapabilitySchema:re,ClientCapabilitiesSchema:ie,ServerCapabilitiesSchema:se,ProgressSchema:N,ProgressNotificationParamsSchema:ce,ProgressNotificationSchema:ue,LoggingMessageNotificationParamsSchema:de,LoggingMessageNotificationSchema:fe,ResourceContentsSchema:P,TextResourceContentsSchema:pe,BlobResourceContentsSchema:me,AnnotationsSchema:F,ResourceSchema:he,ResourceTemplateSchema:ge,ResourceListChangedNotificationSchema:_e,ResourceUpdatedNotificationParamsSchema:ve,ResourceUpdatedNotificationSchema:ye,PromptArgumentSchema:I,PromptSchema:be,PromptListChangedNotificationSchema:xe,TextContentSchema:Se,ImageContentSchema:Ce,AudioContentSchema:we,ToolUseContentSchema:Te,EmbeddedResourceSchema:Ee,ResourceLinkSchema:De,ContentBlockSchema:Me,PromptMessageSchema:Pe,ToolAnnotationsSchema:L,ToolListChangedNotificationSchema:Fe,ModelHintSchema:Ie,ModelPreferencesSchema:Le,ToolChoiceSchema:Re,BooleanSchemaSchema:ze,StringSchemaSchema:Be,NumberSchemaSchema:R,UntitledSingleSelectEnumSchemaSchema:Ve,TitledSingleSelectEnumSchemaSchema:z,LegacyTitledEnumSchemaSchema:B,SingleSelectEnumSchemaSchema:V,UntitledMultiSelectEnumSchemaSchema:He,TitledMultiSelectEnumSchemaSchema:H,MultiSelectEnumSchemaSchema:U,EnumSchemaSchema:Ue,PrimitiveSchemaDefinitionSchema:We,ElicitRequestFormParamsSchema:Ge,ResourceTemplateReferenceSchema:Ke,PromptReferenceSchema:qe,RootSchema:Je,ClientCapabilities2026Schema:Xe,ServerCapabilities2026Schema:Qe,RequestMetaEnvelopeSchema:$e,ToolSchema:et,ToolResultContentSchema:tt,SamplingMessageContentBlockSchema:nt,SamplingMessageSchema:rt,ResultTypeSchema:it,ResultMetaSchema:at,ResultSchema:st,PaginatedResultSchema:ct,CallToolResultSchema:lt,ListToolsResultSchema:ut,ListPromptsResultSchema:dt,GetPromptResultSchema:ft,ListResourcesResultSchema:pt,ListResourceTemplatesResultSchema:mt,ReadResourceResultSchema:ht,CompleteResultSchema:gt,CacheableResultSchema:_t,DiscoverResultSchema:vt,CreateMessageRequestParamsSchema:yt,CreateMessageRequestSchema:bt,ListRootsRequestSchema:xt,CreateMessageResultSchema:St,ListRootsResultSchema:Ct,ElicitResultSchema:wt,ElicitRequestURLParamsSchema:Tt,ElicitRequestParamsSchema:Et,ElicitRequestSchema:Dt,InputRequestSchema:Ot,InputResponseSchema:kt,InputRequestsSchema:At,InputResponsesSchema:jt,InputRequiredResultSchema:Mt,InputResponseRequestParamsSchema:Pt,CallToolRequestSchema:Rt,ListToolsRequestSchema:zt,ListPromptsRequestSchema:Bt,GetPromptRequestSchema:Vt,ListResourcesRequestSchema:Ht,ListResourceTemplatesRequestSchema:Ut,ReadResourceRequestSchema:Wt,CompleteRequestSchema:Kt,DiscoverRequestSchema:qt,SubscriptionFilterSchema:Jt,SubscriptionsListenRequestSchema:Xt,SubscriptionsListenResultMetaSchema:Zt,SubscriptionsListenResultSchema:Qt,dispatchRequestSchemas:$t,dispatchResultSchemas:en,NotificationMetaSchema:tn,SubscriptionsAcknowledgedNotificationSchema:nn,CancelledNotificationParamsSchema:rn,CancelledNotificationSchema:an,notificationSchemas2026:on,JSONRPCResultResponseSchema:sn(st),CallToolResultResponseSchema:sn(v([lt,Mt])),ListToolsResultResponseSchema:sn(ut),ListPromptsResultResponseSchema:sn(dt),GetPromptResultResponseSchema:sn(v([ft,Mt])),ListResourcesResultResponseSchema:sn(pt),ListResourceTemplatesResultResponseSchema:sn(mt),ReadResourceResultResponseSchema:sn(v([ht,Mt])),CompleteResultResponseSchema:sn(gt),DiscoverResultResponseSchema:sn(vt)}}var Ni;function Pi(){return Ni??=Mi()}var Fi=[`tools/list`,`prompts/list`,`resources/list`,`resources/templates/list`,`resources/read`,`server/discover`];function Ii(e){return Fi.includes(e)}var Li=Symbol(`modelcontextprotocol.resultCacheHintFallback`);function Ri(e){return e[Li]}function zi(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function Bi(e){return e===`public`||e===`private`}var Z=function(e){return e[e.ParseError=-32700]=`ParseError`,e[e.InvalidRequest=-32600]=`InvalidRequest`,e[e.MethodNotFound=-32601]=`MethodNotFound`,e[e.InvalidParams=-32602]=`InvalidParams`,e[e.InternalError=-32603]=`InternalError`,e[e.ResourceNotFound=-32002]=`ResourceNotFound`,e[e.MissingRequiredClientCapability=-32021]=`MissingRequiredClientCapability`,e[e.UnsupportedProtocolVersion=-32022]=`UnsupportedProtocolVersion`,e[e.UrlElicitationRequired=-32042]=`UrlElicitationRequired`,e}({}),Q=class e extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.ProtocolError`})}static[Symbol.hasInstance](e){return Kr(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Kr(this,e)}constructor(e,t,n){super(t),this.code=e,this.data=n,this.name=`ProtocolError`,Gr(this,new.target)}static fromError(t,n,r){if(t===Z.UrlElicitationRequired&&r){let e=r;if(e.elicitations)return new Hi(e.elicitations,n)}if(t===Z.UnsupportedProtocolVersion&&r){let e=r;if(Array.isArray(e.supported)&&typeof e.requested==`string`)return new Ui({supported:e.supported,requested:e.requested},n)}if(t===Z.InvalidParams||t===Z.ResourceNotFound){let e=r;if(typeof e?.uri==`string`&&(t===Z.ResourceNotFound||Object.keys(e).length===1))return new Vi(e.uri,n)}if(t===Z.MissingRequiredClientCapability&&r){let e=r;if(e.requiredCapabilities!==null&&typeof e.requiredCapabilities==`object`&&!Array.isArray(e.requiredCapabilities))return new Wi({requiredCapabilities:e.requiredCapabilities},n)}return new e(t,n,r)}},Vi=class extends Q{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.ResourceNotFoundError`})}constructor(e,t=`Resource not found: ${e}`){super(Z.InvalidParams,t,{uri:e})}get uri(){return this.data.uri}},Hi=class extends Q{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.UrlElicitationRequiredError`})}constructor(e,t=`URL elicitation${e.length>1?`s`:``} required`){super(Z.UrlElicitationRequired,t,{elicitations:e})}get elicitations(){return this.data?.elicitations??[]}},Ui=class extends Q{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.UnsupportedProtocolVersionError`})}constructor(e,t=`Unsupported protocol version: ${e.requested}`){super(Z.UnsupportedProtocolVersion,t,e)}get supported(){return this.data.supported}get requested(){return this.data.requested}},Wi=class extends Q{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.MissingRequiredClientCapabilityError`})}constructor(e,t=`Missing required client capabilities: ${Object.keys(e.requiredCapabilities).join(`, `)}`){super(Z.MissingRequiredClientCapability,t,e)}get requiredCapabilities(){return this.data.requiredCapabilities}},Gi=0,Ki=`private`,qi=[`tools/call`,`prompts/get`,`resources/read`];function Ji(e,t){let n=t.resultType;if(n===void 0)return{...t,resultType:`complete`};if(n===`complete`||qi.includes(e))return t;throw new Q(Z.InternalError,`Handler for ${e} returned resultType '${String(n)}', but results of ${e} only support 'complete' on protocol revision 2026-07-28`)}function Yi(e,t){let n=Ri(t);if(t.resultType!==`complete`||!Ii(e))return n===void 0?t:ea(t);let r=t,i=zi(r.ttlMs)?r.ttlMs:Qi(n),a=Bi(r.cacheScope)?r.cacheScope:$i(n),o={...r,ttlMs:i,cacheScope:a};return delete o[Li],o}function Xi(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Zi(e,t){if(t===void 0)return e;let n=e._meta;return n===void 0?{...e,_meta:{[Ae]:t}}:!Xi(n)||n[`io.modelcontextprotocol/serverInfo`]!==void 0?e:{...e,_meta:{...n,[Ae]:t}}}function Qi(e){return e!==void 0&&zi(e.ttlMs)?e.ttlMs:Gi}function $i(e){return e!==void 0&&Bi(e.cacheScope)?e.cacheScope:Ki}function ea(e){let t={...e};return delete t[Li],t}var ta=[`elicitation/create`,`sampling/createMessage`,`roots/list`],na;function ra(){if(na)return na;let e=Pi();return na={request:{"elicitation/create":d({method:M(`elicitation/create`),params:e.ElicitRequestParamsSchema}),"sampling/createMessage":d({method:M(`sampling/createMessage`),params:e.CreateMessageRequestParamsSchema}),"roots/list":d({method:M(`roots/list`),params:C({}).optional()})},response:{"elicitation/create":e.ElicitResultSchema,"sampling/createMessage":e.CreateMessageResultSchema,"roots/list":e.ListRootsResultSchema}},na}function ia(e){return ta.includes(e)}function aa(e){return ia(e)?ra().request[e]:void 0}function oa(e){return ia(e)?ra().response[e]:void 0}var sa={"tools/call":null,"tools/list":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"completion/complete":null,"server/discover":null,"subscriptions/listen":null},ca={"notifications/cancelled":null,"notifications/progress":null,"notifications/message":null,"notifications/resources/updated":null,"notifications/resources/list_changed":null,"notifications/tools/list_changed":null,"notifications/prompts/list_changed":null,"notifications/subscriptions/acknowledged":null};function la(e){return Object.prototype.hasOwnProperty.call(sa,e)}function ua(e){return Object.prototype.hasOwnProperty.call(ca,e)}function da(e){return Object.prototype.hasOwnProperty.call(sa,e)}function fa(e){return la(e)?Pi().dispatchRequestSchemas[e]:void 0}function pa(e){return da(e)?Pi().dispatchResultSchemas[e]:void 0}function ma(e){return ua(e)?Pi().notificationSchemas2026[e]:void 0}Object.keys(sa),Object.keys(ca);function ha(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ga(e,t){if(e===void 0)return{ok:!1,reason:`not-in-era`};let n=e.safeParse(t);return n.success?{ok:!0,value:n.data}:{ok:!1,reason:`invalid`,message:String(n.error)}}var _a={ok:!1,reason:`not-in-era`},va=[Oe,je];function ya(e,t){let n=t,r=!1,i=()=>(r||=(n={...n},!0),n),a=t.tools;e===`tools/list`&&Array.isArray(a)&&a.some(e=>ha(e)&&`execution`in e)&&(i().tools=a.map(e=>{if(!ha(e)||!(`execution`in e))return e;let t={...e};return delete t.execution,t}));let o=t.capabilities;if(ha(o)&&`tasks`in o){let e={...o};delete e.tasks,i().capabilities=e}return n}var ba={era:`2026-07-28`,hasRequestMethod:la,hasNotificationMethod:ua,hasInputRequestMethod:e=>aa(e)!==void 0,validateRequest:(e,t)=>ga(fa(e),t),validateResult:(e,t)=>ga(pa(e),t),validateNotification:(e,t)=>ga(ma(e),t),validateInputRequest:(e,t)=>ga(aa(e),t),validateInputResponse:(e,t)=>ga(oa(e),t),samplingResultVariant:()=>_a,outboundEnvelope(e){return{[Oe]:e.protocolVersion,[ke]:e.clientInfo,[je]:e.clientCapabilities,...e.logLevel!==void 0&&{"io.modelcontextprotocol/logLevel":e.logLevel}}},validateEnvelopeMeta(e){let t=[];for(let n of va)n in e||t.push({key:n,problem:`missing`});let n=Pi().RequestMetaEnvelopeSchema.safeParse(e);if(!n.success)for(let e of n.error.issues){let n=e.path.map(String),r=n.length>0?n.join(`.`):`_meta`;n.length===1&&t.some(e=>e.key===r&&e.problem===`missing`)||t.push({key:r,problem:e.message})}return t},projectCallToolResult:e=>ii(e),inputRequestSchema:aa,decodeResult(e,t){if(!ha(t))return{kind:`invalid`,error:new X(Y.InvalidResult,`Invalid result for ${e}: not an object`,{method:e})};let n=t.resultType;if(n===void 0)return{kind:`invalid`,error:new X(Y.InvalidResult,`Invalid result for ${e}: missing required resultType — servers implementing protocol revision 2026-07-28 MUST include it (the absent-means-complete bridge applies only to earlier-revision servers)`,{method:e,violation:`missing-resultType`})};if(typeof n!=`string`)return{kind:`invalid`,error:new X(Y.InvalidResult,`Invalid result for ${e}: non-string resultType`,{method:e,resultType:n})};if(n===`input_required`){let n=t.inputRequests,r=ha(n)?n:{},i=t.requestState,a=t._meta===void 0?void 0:Pi().ResultMetaSchema.safeParse(t._meta),o=a?.success?a.data:void 0;return Object.keys(r).length===0&&typeof i!=`string`?{kind:`invalid`,error:new X(Y.InvalidResult,`Invalid result for ${e}: input_required carries neither inputRequests nor requestState (every input_required result must include at least one of the two)`,{method:e,violation:`input-required-missing-both`})}:{kind:`input_required`,inputRequests:r,...typeof i==`string`&&{requestState:i},...o!==void 0&&{_meta:o}}}if(n!==`complete`)return{kind:`invalid`,error:new X(Y.UnsupportedResultType,`Unsupported result type '${n}' for ${e}`,{resultType:n,method:e})};let r=Sa(),i=Object.hasOwn(r,e)?r[e]:void 0;if(i!==void 0){let n=i.safeParse(t);if(!n.success)return{kind:`invalid`,error:new X(Y.InvalidResult,`Invalid result for ${e}: ${n.error}`,{method:e})}}let a={...t};return delete a.resultType,{kind:`complete`,result:a}},encodeResult(e,t,n){return Zi(Yi(e,Ji(e,ya(e,t))),n)},encodeErrorCode:e=>e===-32002?-32602:e,checkInboundEnvelope(e){if(e.envelope===void 0)return`Request is missing the required _meta envelope for protocol revision 2026-07-28 (io.modelcontextprotocol/protocolVersion, io.modelcontextprotocol/clientCapabilities)`;let t=Pi().RequestMetaEnvelopeSchema.safeParse(e.envelope);if(!t.success)return`Invalid _meta envelope for protocol revision 2026-07-28: ${t.error.issues.map(e=>e.message).join(`; `)}`}},xa;function Sa(){if(xa)return xa;let e=Pi();return xa={"tools/call":e.CallToolResultSchema,"tools/list":e.ListToolsResultSchema,"prompts/get":e.GetPromptResultSchema,"prompts/list":e.ListPromptsResultSchema,"resources/list":e.ListResourcesResultSchema,"resources/templates/list":e.ListResourceTemplatesResultSchema,"resources/read":e.ReadResourceResultSchema,"completion/complete":e.CompleteResultSchema,"server/discover":e.DiscoverResultSchema},xa}var Ca=`2026-07-28`;function wa(e){return e!==void 0&&ti(e)?ba:ji}function Ta(e){return e.revision===void 0?e.era===`modern`?ba.era:ji.era:wa(e.revision).era}function Ea(e){return Oa.some(t=>t.hasRequestMethod(e))}function Da(e){return Oa.some(t=>t.hasNotificationMethod(e))}var Oa=[ji,ba],ka=_e({AnnotationsSchema:()=>Tt,AudioContentSchema:()=>tn,BaseMetadataSchema:()=>et,BaseRequestParamsSchema:()=>R,BlobResourceContentsSchema:()=>Ct,BooleanSchemaSchema:()=>Ln,CallToolRequestParamsSchema:()=>_n,CallToolRequestSchema:()=>vn,CallToolResultSchema:()=>hn,CancelTaskRequestSchema:()=>Cr,CancelTaskResultSchema:()=>wr,CancelledNotificationParamsSchema:()=>Xe,CancelledNotificationSchema:()=>Ze,ClientCapabilitiesSchema:()=>ot,ClientNotificationSchema:()=>Er,ClientRequestSchema:()=>Tr,ClientResultSchema:()=>Dr,ClientTasksCapabilitySchema:()=>it,CompatibilityCallToolResultSchema:()=>gn,CompleteRequestParamsSchema:()=>ir,CompleteRequestSchema:()=>ar,CompleteResultSchema:()=>or,ContentBlockSchema:()=>on,CreateMessageRequestParamsSchema:()=>Nn,CreateMessageRequestSchema:()=>Pn,CreateMessageResultSchema:()=>Fn,CreateMessageResultWithToolsSchema:()=>In,CreateTaskResultSchema:()=>mr,CursorSchema:()=>Le,DiscoverRequestSchema:()=>dt,DiscoverResultSchema:()=>ft,ElicitRequestFormParamsSchema:()=>Yn,ElicitRequestParamsSchema:()=>Zn,ElicitRequestSchema:()=>Qn,ElicitRequestURLParamsSchema:()=>Xn,ElicitResultSchema:()=>tr,ElicitationCompleteNotificationParamsSchema:()=>$n,ElicitationCompleteNotificationSchema:()=>er,EmbeddedResourceSchema:()=>rn,EmptyResultSchema:()=>Ye,EnumSchemaSchema:()=>qn,GetPromptRequestParamsSchema:()=>Qt,GetPromptRequestSchema:()=>$t,GetPromptResultSchema:()=>cn,GetTaskPayloadRequestSchema:()=>yr,GetTaskPayloadResultSchema:()=>br,GetTaskRequestSchema:()=>_r,GetTaskResultSchema:()=>vr,IconSchema:()=>Qe,IconsSchema:()=>$e,ImageContentSchema:()=>en,ImplementationSchema:()=>tt,InitializeRequestParamsSchema:()=>W,InitializeRequestSchema:()=>st,InitializeResultSchema:()=>lt,InitializedNotificationSchema:()=>ut,JSONArraySchema:()=>Fe,JSONObjectSchema:()=>L,JSONRPCErrorResponseSchema:()=>Ke,JSONRPCMessageSchema:()=>qe,JSONRPCNotificationSchema:()=>We,JSONRPCRequestSchema:()=>Ue,JSONRPCResponseSchema:()=>Je,JSONRPCResultResponseSchema:()=>Ge,JSONValueSchema:()=>Pe,LegacyTitledEnumSchemaSchema:()=>Hn,ListChangedOptionsBaseSchema:()=>bn,ListPromptsRequestSchema:()=>Xt,ListPromptsResultSchema:()=>Zt,ListResourceTemplatesRequestSchema:()=>At,ListResourceTemplatesResultSchema:()=>jt,ListResourcesRequestSchema:()=>Ot,ListResourcesResultSchema:()=>kt,ListRootsRequestSchema:()=>cr,ListRootsResultSchema:()=>lr,ListTasksRequestSchema:()=>xr,ListTasksResultSchema:()=>Sr,ListToolsRequestSchema:()=>pn,ListToolsResultSchema:()=>mn,LoggingLevelSchema:()=>xn,LoggingMessageNotificationParamsSchema:()=>wn,LoggingMessageNotificationSchema:()=>Tn,ModelHintSchema:()=>En,ModelPreferencesSchema:()=>Dn,MultiSelectEnumSchemaSchema:()=>Kn,NotificationSchema:()=>V,NotificationsParamsSchema:()=>B,NumberSchemaSchema:()=>zn,PaginatedRequestParamsSchema:()=>_t,PaginatedRequestSchema:()=>vt,PaginatedResultSchema:()=>yt,PingRequestSchema:()=>pt,PrimitiveSchemaDefinitionSchema:()=>Jn,ProgressNotificationParamsSchema:()=>ht,ProgressNotificationSchema:()=>gt,ProgressSchema:()=>mt,ProgressTokenSchema:()=>Ie,PromptArgumentSchema:()=>Jt,PromptListChangedNotificationSchema:()=>ln,PromptMessageSchema:()=>sn,PromptReferenceSchema:()=>rr,PromptSchema:()=>Yt,ReadResourceRequestParamsSchema:()=>Nt,ReadResourceRequestSchema:()=>Pt,ReadResourceResultSchema:()=>Ft,RelatedTaskMetadataSchema:()=>ze,RequestIdSchema:()=>U,RequestMetaSchema:()=>Be,RequestSchema:()=>z,ResourceContentsSchema:()=>bt,ResourceLinkSchema:()=>an,ResourceListChangedNotificationSchema:()=>G,ResourceRequestParamsSchema:()=>Mt,ResourceSchema:()=>Et,ResourceTemplateReferenceSchema:()=>nr,ResourceTemplateSchema:()=>Dt,ResourceUpdatedNotificationParamsSchema:()=>Kt,ResourceUpdatedNotificationSchema:()=>qt,ResultMetaObjectSchema:()=>He,ResultSchema:()=>H,RoleSchema:()=>wt,RootSchema:()=>sr,RootsListChangedNotificationSchema:()=>ur,SamplingContentSchema:()=>An,SamplingMessageContentBlockSchema:()=>jn,SamplingMessageSchema:()=>Mn,ServerCapabilitiesSchema:()=>ct,ServerNotificationSchema:()=>kr,ServerRequestSchema:()=>Or,ServerResultSchema:()=>Ar,ServerTasksCapabilitySchema:()=>at,SetLevelRequestParamsSchema:()=>Sn,SetLevelRequestSchema:()=>Cn,SingleSelectEnumSchemaSchema:()=>Un,StringSchemaSchema:()=>Rn,SubscribeRequestParamsSchema:()=>K,SubscribeRequestSchema:()=>It,SubscriptionFilterSchema:()=>zt,SubscriptionsAcknowledgedNotificationParamsSchema:()=>Ht,SubscriptionsAcknowledgedNotificationSchema:()=>Ut,SubscriptionsListenRequestParamsSchema:()=>Bt,SubscriptionsListenRequestSchema:()=>Vt,SubscriptionsListenResultMetaSchema:()=>Wt,SubscriptionsListenResultSchema:()=>Gt,TaskAugmentedRequestParamsSchema:()=>Ve,TaskCreationParamsSchema:()=>dr,TaskMetadataSchema:()=>Re,TaskSchema:()=>pr,TaskStatusNotificationParamsSchema:()=>hr,TaskStatusNotificationSchema:()=>gr,TaskStatusSchema:()=>fr,TextContentSchema:()=>q,TextResourceContentsSchema:()=>xt,TitledMultiSelectEnumSchemaSchema:()=>Gn,TitledSingleSelectEnumSchemaSchema:()=>Vn,ToolAnnotationsSchema:()=>un,ToolChoiceSchema:()=>On,ToolExecutionSchema:()=>dn,ToolListChangedNotificationSchema:()=>yn,ToolResultContentSchema:()=>kn,ToolSchema:()=>fn,ToolUseContentSchema:()=>nn,UnsubscribeRequestParamsSchema:()=>Lt,UnsubscribeRequestSchema:()=>Rt,UntitledMultiSelectEnumSchemaSchema:()=>Wn,UntitledSingleSelectEnumSchemaSchema:()=>Bn}),Aa=e=>Ue.safeParse(e).success,ja=e=>We.safeParse(e).success,Ma=e=>Ge.safeParse(e).success,Na=e=>Ke.safeParse(e).success,Pa=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&e.resultType===`input_required`,Fa=e=>st.safeParse(e).success,Ia=e=>ut.safeParse(e).success,La=`Mcp-Param-`,Ra=`x-mcp-header`,za=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,Ba=new Set([`string`,`integer`,`boolean`,`number`]);function Va(e){let t=[],n=new Map,r=(e,i,a)=>{if(typeof e!=`object`||!e)return;let o=e;if(Ra in o){if(!a||i.length===0)return`${Wa(i)}: x-mcp-header is only permitted on properties statically reachable via a chain of 'properties' keys (not under items, additionalProperties, oneOf/anyOf/allOf/not, if/then/else, or $ref)`;let e=o[Ra];if(typeof e!=`string`||e.length===0)return`${Wa(i)}: x-mcp-header MUST be a non-empty string`;if(!za.test(e))return`${Wa(i)}: x-mcp-header '${e}' is not a valid RFC 9110 token (no spaces, control characters or HTTP delimiters)`;let r=typeof o.type==`string`?o.type:void 0;if(r===void 0||!Ba.has(r))return`${Wa(i)}: x-mcp-header is only permitted on primitive-typed properties (string, integer, boolean); got ${r??``}`;let s=e.toLowerCase(),c=n.get(s);if(c!==void 0)return`x-mcp-header '${e}' is not case-insensitively unique (also declared as '${c}')`;n.set(s,e),t.push({path:i,headerName:e,type:r})}let s=o.properties;if(typeof s==`object`&&s)for(let[e,t]of Object.entries(s)){let n=r(t,[...i,e],a);if(n!==void 0)return n}for(let e of Ha){let t=o[e];if(t===void 0)continue;let n=Array.isArray(t)?t:typeof t==`object`&&t&&Ua.has(e)?Object.values(t):[t];for(let t of n){let n=r(t,[...i,`<${e}>`],!1);if(n!==void 0)return n}}},i=r(e,[],!0);return i===void 0?{valid:!0,declarations:t}:{valid:!1,reason:i}}var Ha=[`items`,`prefixItems`,`contains`,`additionalProperties`,`unevaluatedProperties`,`unevaluatedItems`,`propertyNames`,`patternProperties`,`dependentSchemas`,`oneOf`,`anyOf`,`allOf`,`not`,`if`,`then`,`else`,`$defs`,`definitions`],Ua=new Set([`patternProperties`,`dependentSchemas`,`$defs`,`definitions`]);function Wa(e){return e.length===0?``:e.join(`.`)}var Ga=`=?base64?`,Ka=`?=`;function qa(e){if(typeof e==`string`)return e;if(typeof e==`boolean`)return e?`true`:`false`;if(typeof e==`number`)return!Number.isFinite(e)||Number.isInteger(e)&&!Number.isSafeInteger(e)?void 0:String(e)}function Ja(e){if(e.length===0||e.startsWith(Ga)&&e.endsWith(Ka)||e!==e.trim())return!0;for(let t=0;t=32&&n<=126))return!0}return!1}function Ya(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCodePoint(e);return btoa(n)}function Xa(e){return Ja(e)?`${Ga}${Ya(e)}${Ka}`:e}function Za(e,t){let n=e;for(let e of t){if(typeof n!=`object`||!n)return;n=n[e]}return n}function Qa(e,t){let n={};for(let r of e){let e=Za(t,r.path);if(e==null)continue;let i=qa(e);i!==void 0&&(n[`${La}${r.headerName}`]=Xa(i))}return n}Z.InvalidRequest,Z.UnsupportedProtocolVersion,Z.InvalidParams,Z.MethodNotFound,Z.InvalidParams,Z.MissingRequiredClientCapability,Z.ParseError,Z.InvalidRequest,Z.MethodNotFound,Z.UnsupportedProtocolVersion,Z.MissingRequiredClientCapability;var $a={"tools/call":`name`,"prompts/get":`name`,"resources/read":`uri`,"tasks/get":`taskId`,"tasks/update":`taskId`,"tasks/cancel":`taskId`};function eo(e,t){let n=Object.hasOwn($a,e)?$a[e]:void 0;if(n===void 0)return;let r=to(t)?t[n]:void 0;return{field:n,value:typeof r==`string`?r:void 0}}function to(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function no(e,t){return ne(e,t)}function ro(e){return new Set(e.flatMap(e=>Object.keys(e.shape)))}function io(e){if(e==null)return!1;let t=typeof e;return t!==`object`&&t!==`function`||!(`~standard`in e)?!1:typeof e[`~standard`]?.validate==`function`}var ao=!1,oo=`draft-2020-12`;function so(e,t=`input`){let n=e[`~standard`],r;if(n.jsonSchema)r=n.jsonSchema[t]({target:oo});else if(n.vendor===`zod`){if(!(`_zod`in e))throw Error(`Schema appears to be from zod 3, which the SDK cannot convert to JSON Schema. Upgrade to zod >=4.2.0, or wrap your JSON Schema with fromJsonSchema().`);ao||(ao=!0,console.warn("[mcp-sdk] Your zod version does not implement `~standard.jsonSchema` (added in zod 4.2.0). Falling back to z.toJSONSchema(). Upgrade to zod >=4.2.0 to silence this warning.")),r=g(e,{target:oo,io:t})}else throw Error(`Schema library "${n.vendor}" does not implement StandardJSONSchemaV1 (\`~standard.jsonSchema\`). Upgrade to a version that does, or wrap your JSON Schema with fromJsonSchema().`);if(t===`output`)return r.type===void 0&&co(r)?{type:`object`,...r}:r;if(r.type!==void 0&&r.type!==`object`)throw Error(`MCP tool and prompt schemas must describe objects (got type: ${JSON.stringify(r.type)}). Wrap your schema in z.object({...}) or equivalent.`);return{type:`object`,...r}}function co(e){if(`properties`in e||`patternProperties`in e||`additionalProperties`in e||`required`in e)return!0;for(let t of[`oneOf`,`anyOf`,`allOf`]){let n=e[t];if(Array.isArray(n)&&n.length>0)return n.every(e=>typeof e==`object`&&!!e&&(e.type===`object`||co(e)))}return!1}function lo(e){return e.path?.length?`${e.path.map(e=>String(typeof e==`object`?e.key:e)).join(`.`)}: ${e.message}`:e.message}async function uo(e,t){let n=await e[`~standard`].validate(t);return n.issues&&n.issues.length>0?{success:!1,error:n.issues.map(e=>lo(e)).join(`, `)}:{success:!0,data:n.value}}function fo(e){let t=g(e,{target:oo,io:`input`});return typeof t.pattern==`string`?t.pattern:void 0}var po=/\\\.\\d\{(\d+)\}/;function mo(e){let t=po.exec(e),n=[void 0,-1,0];return t&&n.push(Number(t[1])),[!1,!0].flatMap(e=>[!1,!0].flatMap(t=>n.map(n=>le({local:e,offset:t,precision:n}))))}function ho(e,t){let n;switch(e){case`email`:n=[ee()];break;case`uri`:n=[u()];break;case`date`:n=[ue()];break;case`date-time`:n=mo(t)}return new Set(n.map(e=>fo(e)).filter(e=>e!==void 0))}function go(e,t,n){return n!==`zod`||ho(e,t).has(t)}function _o(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function vo(e){try{return so(e,`input`)}catch(e){let t=e instanceof Error?e.message:String(e);throw new Q(Z.InvalidParams,`Elicitation requestedSchema must describe an object with flat primitive properties: ${t}`)}}var yo=new Set([`$comment`,`deprecated`,`description`,`examples`,`readOnly`,`title`,`writeOnly`]);function bo(e){return yo.has(e)||e.startsWith(`x-`)}var xo=new Set([`$schema`,...Object.keys(Yn.shape.requestedSchema.shape)]),So={string:ro([Rn,Bn,Vn,Hn]),number:ro([zn]),integer:ro([zn]),boolean:ro([Ln]),array:ro([Wn,Gn])},Co=new Set(Rn.shape.format.unwrap().options);function wo(e,t,n,r){if(!_o(e))return e;let i=typeof e.type==`string`&&Object.hasOwn(So,e.type)?So[e.type]:void 0;if(i===void 0)return e;let a={};for(let[o,s]of Object.entries(e))i.has(o)||bo(o)?a[o]=s:o===`pattern`&&e.type===`string`&&typeof e.format==`string`?Co.has(e.format)?(typeof s!=`string`||!go(e.format,s,n))&&r.push(`${t}.${o}`):a[o]=s:r.push(`${t}.${o}`);return a}function To(e,t){let n={},r=[];for(let[i,a]of Object.entries(e))i===`properties`&&_o(a)?n[i]=Object.fromEntries(Object.entries(a).map(([e,n])=>[e,wo(n,`properties.${e}`,t,r)])):xo.has(i)?n[i]=a:bo(i)||r.push(i);if(r.length>0)throw new Q(Z.InvalidParams,`Elicitation requestedSchema contains unsupported JSON Schema constraint(s) after Standard Schema conversion: ${r.join(`, `)}`);return n}function Eo(e,t){if(!_o(e.properties))return t;let n=Object.entries(e.properties).filter(([,e])=>!no(Jn,e).success).map(([e])=>`properties.${e}`);return n.length>0?n.join(`, `):t}function Do(e,t,n=``){return Array.isArray(e)&&Array.isArray(t)?e.flatMap((e,r)=>Do(e,t[r],`${n}[${r}]`)):!_o(e)||!_o(t)?[]:Object.entries(e).flatMap(([e,r])=>{let i=n?`${n}.${e}`:e;return Object.prototype.hasOwnProperty.call(t,e)?Do(r,t[e],i):bo(e)?[]:[i]})}function Oo(e){if(!io(e.requestedSchema))return{...e,mode:`form`,requestedSchema:e.requestedSchema};let t=e.requestedSchema[`~standard`].vendor,n=To(vo(e.requestedSchema),t),r=no(Yn.shape.requestedSchema,n);if(!r.success)throw new Q(Z.InvalidParams,`Elicitation requestedSchema only supports flat primitive properties (string, number, integer, boolean, and string enums): ${Eo(n,r.error.message)}`);let i=Do(n,r.data);if(i.length>0)throw new Q(Z.InvalidParams,`Elicitation requestedSchema contains unsupported JSON Schema constraint(s) after Standard Schema conversion: ${i.join(`, `)}`);let a=(r.data.required??[]).filter(e=>!Object.prototype.hasOwnProperty.call(r.data.properties,e));if(a.length>0)throw new Q(Z.InvalidParams,`Elicitation requestedSchema lists required properties that are not defined in properties: ${a.join(`, `)}`);return{...e,mode:`form`,requestedSchema:r.data}}function ko(e){let t=e.inputRequests!==void 0&&Object.keys(e.inputRequests).length>0,n=typeof e.requestState==`string`;if(!t&&!n)throw TypeError(`inputRequired() requires at least one of inputRequests (with at least one entry) or requestState (spec: every InputRequiredResult MUST include at least one of the two)`);return{resultType:`input_required`,...e.inputRequests!==void 0&&{inputRequests:e.inputRequests},...e.requestState!==void 0&&{requestState:e.requestState}}}Object.assign(ko,{elicit(e){try{return{method:`elicitation/create`,params:Oo(e)}}catch(e){throw e instanceof Q?TypeError(e.message,{cause:e}):e}},elicitUrl(e){return{method:`elicitation/create`,params:{...e,mode:`url`}}},createMessage(e){return{method:`sampling/createMessage`,params:e}},listRoots(){return{method:`roots/list`}}});var Ao=!0,jo=10,Mo=250;function No(e){return{autoFulfill:e?.autoFulfill??Ao,maxRounds:e?.maxRounds??jo}}function Po(e,t,n){let r=t!==void 0&&Object.keys(t).length>0;return!r&&n===void 0?e:{...e,...r&&{inputResponses:t},...n!==void 0&&{requestState:n}}}function Fo(e,t){return`Multi-round-trip request '${e}' still required input after ${t} rounds (inputRequired.maxRounds)`}function Io(e,t){return new Promise((n,r)=>{if(t?.aborted){r(t.reason instanceof X?t.reason:new X(Y.RequestTimeout,String(t.reason)));return}let i=setTimeout(()=>{t?.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),r(t?.reason instanceof X?t.reason:new X(Y.RequestTimeout,String(t?.reason)))};t?.addEventListener(`abort`,a,{once:!0})})}function Lo(e){let t=new AbortController,n=()=>t.abort(e?.reason);return e?.addEventListener(`abort`,n,{once:!0}),e?.aborted&&t.abort(e.reason),{signal:t.signal,abort:e=>t.abort(e),dispose:()=>e?.removeEventListener(`abort`,n)}}async function Ro(e){let{config:t,method:n,originalParams:r,requestOptions:i,hooks:a,signal:o}=e,s=e.flowStartedAt??Date.now(),c=e.firstPayload,l=0;for(;;){if(l+=1,l>t.maxRounds)throw new X(Y.InputRequiredRoundsExceeded,Fo(n,t.maxRounds),{rounds:t.maxRounds,lastResult:{inputRequests:c.inputRequests,...c.requestState!==void 0&&{requestState:c.requestState}}});i.onprogress?.({progress:l,message:`Fulfilling input required by '${n}' (round ${l})`});let e=Object.entries(c.inputRequests??{}),u;if(e.length>0){let t=Lo(o);try{let n=await Promise.all(e.map(async([e,n])=>{try{return[e,await a.dispatchInputRequest(e,n,t.signal)]}catch(e){throw t.abort(e),e}}));u=Object.fromEntries(n)}finally{t.dispose()}}else await Io(Mo,o);let d={...i.timeout!==void 0&&{timeout:i.timeout}};if(i.maxTotalTimeout!==void 0){let e=Date.now()-s,t=i.maxTotalTimeout-e;if(t<=0)throw new X(Y.RequestTimeout,`Maximum total timeout exceeded`,{maxTotalTimeout:i.maxTotalTimeout,totalElapsed:e});d.maxTotalTimeout=t}let f=await a.retry(Po(r,u,c.requestState),d);if(Pa(f)){c={inputRequests:f.inputRequests??{},...f.requestState!==void 0&&{requestState:f.requestState}};continue}return f}}var zo=`AnnotationsSchema.AudioContentSchema.BaseMetadataSchema.BlobResourceContentsSchema.BooleanSchemaSchema.CallToolRequestSchema.CallToolRequestParamsSchema.CallToolResultSchema.CancelledNotificationSchema.CancelledNotificationParamsSchema.CancelTaskRequestSchema.CancelTaskResultSchema.ClientCapabilitiesSchema.ClientNotificationSchema.ClientRequestSchema.ClientResultSchema.CompatibilityCallToolResultSchema.CompleteRequestSchema.CompleteRequestParamsSchema.CompleteResultSchema.ContentBlockSchema.CreateMessageRequestSchema.CreateMessageRequestParamsSchema.CreateMessageResultSchema.CreateMessageResultWithToolsSchema.CreateTaskResultSchema.CursorSchema.DiscoverRequestSchema.DiscoverResultSchema.ElicitationCompleteNotificationSchema.ElicitationCompleteNotificationParamsSchema.ElicitRequestSchema.ElicitRequestFormParamsSchema.ElicitRequestParamsSchema.ElicitRequestURLParamsSchema.ElicitResultSchema.EmbeddedResourceSchema.EmptyResultSchema.EnumSchemaSchema.GetPromptRequestSchema.GetPromptRequestParamsSchema.GetPromptResultSchema.GetTaskPayloadRequestSchema.GetTaskPayloadResultSchema.GetTaskRequestSchema.GetTaskResultSchema.IconSchema.IconsSchema.ImageContentSchema.ImplementationSchema.InitializedNotificationSchema.InitializeRequestSchema.InitializeRequestParamsSchema.InitializeResultSchema.JSONArraySchema.JSONObjectSchema.JSONRPCErrorResponseSchema.JSONRPCMessageSchema.JSONRPCNotificationSchema.JSONRPCRequestSchema.JSONRPCResponseSchema.JSONRPCResultResponseSchema.JSONValueSchema.LegacyTitledEnumSchemaSchema.ListPromptsRequestSchema.ListPromptsResultSchema.ListResourcesRequestSchema.ListResourcesResultSchema.ListResourceTemplatesRequestSchema.ListResourceTemplatesResultSchema.ListRootsRequestSchema.ListRootsResultSchema.ListTasksRequestSchema.ListTasksResultSchema.ListToolsRequestSchema.ListToolsResultSchema.LoggingLevelSchema.LoggingMessageNotificationSchema.LoggingMessageNotificationParamsSchema.ModelHintSchema.ModelPreferencesSchema.MultiSelectEnumSchemaSchema.NotificationSchema.NumberSchemaSchema.PaginatedRequestSchema.PaginatedRequestParamsSchema.PaginatedResultSchema.PingRequestSchema.PrimitiveSchemaDefinitionSchema.ProgressSchema.ProgressNotificationSchema.ProgressNotificationParamsSchema.ProgressTokenSchema.PromptSchema.PromptArgumentSchema.PromptListChangedNotificationSchema.PromptMessageSchema.PromptReferenceSchema.ReadResourceRequestSchema.ReadResourceRequestParamsSchema.ReadResourceResultSchema.RelatedTaskMetadataSchema.RequestSchema.RequestIdSchema.RequestMetaSchema.ResourceSchema.ResourceContentsSchema.ResourceLinkSchema.ResourceListChangedNotificationSchema.ResourceRequestParamsSchema.ResourceTemplateSchema.ResourceTemplateReferenceSchema.ResourceUpdatedNotificationSchema.ResourceUpdatedNotificationParamsSchema.ResultMetaObjectSchema.ResultSchema.RoleSchema.RootSchema.RootsListChangedNotificationSchema.SamplingContentSchema.SamplingMessageSchema.SamplingMessageContentBlockSchema.ServerCapabilitiesSchema.ServerNotificationSchema.ServerRequestSchema.ServerResultSchema.SetLevelRequestSchema.SetLevelRequestParamsSchema.SingleSelectEnumSchemaSchema.StringSchemaSchema.SubscribeRequestSchema.SubscribeRequestParamsSchema.SubscriptionFilterSchema.SubscriptionsAcknowledgedNotificationSchema.SubscriptionsAcknowledgedNotificationParamsSchema.SubscriptionsListenRequestSchema.SubscriptionsListenRequestParamsSchema.SubscriptionsListenResultSchema.SubscriptionsListenResultMetaSchema.TaskAugmentedRequestParamsSchema.TaskCreationParamsSchema.TaskMetadataSchema.TaskSchema.TaskStatusSchema.TaskStatusNotificationSchema.TaskStatusNotificationParamsSchema.TextContentSchema.TextResourceContentsSchema.TitledMultiSelectEnumSchemaSchema.TitledSingleSelectEnumSchemaSchema.ToolSchema.ToolAnnotationsSchema.ToolChoiceSchema.ToolExecutionSchema.ToolListChangedNotificationSchema.ToolResultContentSchema.ToolUseContentSchema.UnsubscribeRequestSchema.UnsubscribeRequestParamsSchema.UntitledMultiSelectEnumSchemaSchema.UntitledSingleSelectEnumSchemaSchema`.split(`.`),Bo={IdJagTokenExchangeResponseSchema:Ir,OAuthClientInformationFullSchema:Vr,OAuthClientInformationSchema:Br,OAuthClientMetadataSchema:zr,OAuthClientRegistrationErrorSchema:Hr,OAuthErrorResponseSchema:Lr,OAuthMetadataSchema:Mr,OAuthProtectedResourceMetadataSchema:jr,OAuthTokenRevocationRequestSchema:Ur,OAuthTokensSchema:Fr,OpenIdProviderDiscoveryMetadataSchema:Pr,OpenIdProviderMetadataSchema:Nr},Vo={},Ho={};function Uo(e,t){let n=e.slice(0,-6);Vo[n]=t,Ho[n]=e=>t.safeParse(e).success}for(let e of zo)Uo(e,ka[e]);for(let[e,t]of Object.entries(Bo))Uo(e,t);Object.freeze(Vo);var Wo=Object.freeze(Ho);function Go(e){switch(e){case`initialize`:case`notifications/initialized`:return wa(void 0);case`server/discover`:return wa(Ca);default:return}}var Ko=[Oe,ke,je,Ne],qo=[`inputResponses`,`requestState`];function Jo(e,t){let n=e.params;if(!$o(n))return{message:e,lifted:{}};let r=n._meta,i=$o(r)?Ko.filter(e=>e in r):[],a=t===`request`?qo.filter(e=>e in n):[];if(i.length===0&&a.length===0)return{message:e,lifted:{}};let o={},s={...n};if(i.length>0&&$o(r)){let e={},t={...r};for(let n of i)e[n]=r[n],delete t[n];o.envelope=e,Object.keys(t).length>0?s._meta=t:delete s._meta}for(let e of a)e===`inputResponses`&&(o.inputResponses=s[e]),e===`requestState`&&(o.requestState=s[e]),delete s[e];return{message:{...e,params:s},lifted:o}}function Yo(e,t){let n=e.validateResult(t,void 0);if(n.ok||n.reason!==`not-in-era`)return{"~standard":{version:1,vendor:`mcp-wire-codec`,validate(n){let r=e.validateResult(t,n);return r.ok?{value:r.value}:{issues:[{message:r.reason===`invalid`?r.message:`not-in-era: ${t}`}]}}}}}function Xo(e){return()=>e}var Zo=Xo(void 0),Qo=class{_transport;_requestMessageId=0;_requestHandlers=new Map;_requestHandlerAbortControllers=new Map;_notificationHandlers=new Map;_responseHandlers=new Map;_progressHandlers=new Map;_timeoutInfo=new Map;_pendingDebouncedNotifications=new Set;_negotiatedProtocolVersion;_supportedProtocolVersions;onclose;onerror;fallbackRequestHandler;fallbackNotificationHandler;constructor(e){this._options=e,this._supportedProtocolVersions=e?.supportedProtocolVersions??Ee,this.setNotificationHandler(`notifications/cancelled`,e=>{this._oncancel(e)}),this.setNotificationHandler(`notifications/progress`,e=>{this._onprogress(e)}),this.setRequestHandler(`ping`,e=>({}))}_shouldDropInbound(e){}_outboundMetaEnvelope(){}_envelopeOutbound(e){let t=this._outboundMetaEnvelope();if(t===void 0)return e;let n=e.params??{};return{...e,params:{...n,_meta:{...t,...n._meta}}}}_resolveNonCompleteResult(e,t){return Promise.reject(new X(Y.UnsupportedResultType,`Unsupported result type '${e.kind}' for ${t.request.method}`,{resultType:e.kind,method:t.request.method}))}_getRequestHandler(e){return this._requestHandlers.get(e)}async _oncancel(e){e.params.requestId!==void 0&&this._requestHandlerAbortControllers.get(e.params.requestId)?.abort(e.params.reason)}_setupTimeout(e,t,n,r,i=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(r,t),startTime:Date.now(),timeout:t,maxTotalTimeout:n,resetTimeoutOnProgress:i,onTimeout:r})}_resetTimeout(e){let t=this._timeoutInfo.get(e);if(!t)return!1;let n=Date.now()-t.startTime;if(t.maxTotalTimeout&&n>=t.maxTotalTimeout)throw this._timeoutInfo.delete(e),new X(Y.RequestTimeout,`Maximum total timeout exceeded`,{maxTotalTimeout:t.maxTotalTimeout,totalElapsed:n});return clearTimeout(t.timeoutId),t.timeoutId=setTimeout(t.onTimeout,t.timeout),!0}_cleanupTimeout(e){let t=this._timeoutInfo.get(e);t&&(clearTimeout(t.timeoutId),this._timeoutInfo.delete(e))}async connect(e){this._transport=e;let t=this.transport?.onclose;this._transport.onclose=()=>{try{t?.()}finally{this._onclose()}};let n=this.transport?.onerror;this._transport.onerror=e=>{n?.(e),this._onerror(e)};let r=this._transport?.onmessage;this._transport.onmessage=(e,t)=>{r?.(e,t),Ma(e)||Na(e)?this._onresponse(e):Aa(e)?this._onrequest(e,t):ja(e)?this._onnotification(e,t):this._onerror(Error(`Unknown message type: ${JSON.stringify(e)}`))},e.setSupportedProtocolVersions?.(this._supportedProtocolVersions),await this._transport.start()}_onclose(){let e=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._pendingDebouncedNotifications.clear();for(let e of this._timeoutInfo.values())clearTimeout(e.timeoutId);this._timeoutInfo.clear();let t=this._requestHandlerAbortControllers;this._requestHandlerAbortControllers=new Map;let n=new X(Y.ConnectionClosed,`Connection closed`);this._transport=void 0;try{this.onclose?.()}finally{for(let t of e.values())t(n);for(let e of t.values())e.abort(n)}}_onerror(e){this.onerror?.(e)}_onnotification(e,t){let{message:n}=Jo(e,`notification`),r=this._negotiatedWireCodec();if(t?.classification===void 0&&this._shouldDropInbound(e)===`drop`)return;if(t?.classification!==void 0){let e=Ta(t.classification);if(e!==r.era){this._onerror(Error(`Era mismatch on inbound notification '${n.method}': classified as ${e} but this instance serves ${r.era}`));return}}if(Da(n.method)&&!r.hasNotificationMethod(n.method))return;let i=this._notificationHandlers.get(n.method),a=this.fallbackNotificationHandler;(i!==void 0||a!==void 0)&&Promise.resolve().then(()=>i===void 0?a(n):i(n,r)).catch(e=>this._onerror(Error(`Uncaught error in notification handler: ${e}`)))}_onrequest(e,t){let{message:n,lifted:r}=Jo(e,`request`),i=this._negotiatedWireCodec();if(t?.classification===void 0&&this._shouldDropInbound(e)===`drop`){this._onerror(Error(`Dropped inbound request '${e.method}': not servable on this connection's protocol era`));return}let a=this._transport,o=(e,t,r)=>{let i={jsonrpc:`2.0`,id:n.id,error:{code:e,message:t,...r!==void 0&&{data:r}}};a?.send(i).catch(e=>this._onerror(Error(`Failed to send an error response: ${e}`)))};if(t?.classification!==void 0){let e=Ta(t.classification);if(e!==i.era){this._onerror(Error(`Era mismatch on inbound request '${n.method}': classified as ${e} but this instance serves ${i.era}`));let r=t.classification.revision??e;o(Z.UnsupportedProtocolVersion,`Unsupported protocol version: ${r}`,{supported:this._supportedProtocolVersions,requested:r});return}}if(Ea(n.method)&&!i.hasRequestMethod(n.method)){o(Z.MethodNotFound,`Method not found`);return}let s=this._requestHandlers.get(n.method)??this.fallbackRequestHandler;if(s===void 0){o(Z.MethodNotFound,`Method not found`);return}let c=i.checkInboundEnvelope(r);if(c!==void 0){o(Z.InvalidParams,c);return}let l=(e,t)=>this._notificationViaCodec(this._resolveOutboundCodec(e.method),e,{...t,relatedRequestId:n.id}),u=(e,t,r)=>this._requestWithSchemaViaCodec(this._resolveOutboundCodec(e.method),e,t,{...r,relatedRequestId:n.id}),d=new AbortController;this._requestHandlerAbortControllers.set(n.id,d);let f=r.inputResponses===void 0?void 0:ns(r.inputResponses),p={sessionId:a?.sessionId,mcpReq:{id:n.id,method:n.method,_meta:n.params?._meta,...r.envelope!==void 0&&{envelope:r.envelope},...f!==void 0&&{inputResponses:f.accepted},...f!==void 0&&f.droppedKeys.length>0&&{droppedInputResponseKeys:f.droppedKeys},requestState:r.requestState===void 0?Zo:Xo(r.requestState),signal:d.signal,send:((e,t,n)=>{let r=this._resolveOutboundCodec(e.method);if(this._assertOutboundRequestInEra(r,e.method),io(t))return u(e,t,n);let i=Yo(r,e.method);if(i===void 0)throw TypeError(`'${e.method}' is not a spec method; pass a result schema as the second argument to ctx.mcpReq.send().`);return u(e,i,t)}),notify:l},http:t?.authInfo?{authInfo:t.authInfo}:void 0},m=this.buildContext(p,t);Promise.resolve().then(()=>s(n,m)).then(async e=>{if(d.signal.aborted)return;let t;try{t=i.encodeResult(n.method,e,this._outboundServerInfo())}catch(e){this._onerror(Error(`Failed to encode result for ${n.method}: ${e}`)),o(Z.InternalError,`Internal error`);return}let r={result:t,jsonrpc:`2.0`,id:n.id};await a?.send(r)},async e=>{if(d.signal.aborted)return;let t=Number.isSafeInteger(e.code)?e.code:Z.InternalError,r={jsonrpc:`2.0`,id:n.id,error:{code:i.encodeErrorCode(t),message:e.message??`Internal error`,...e.data!==void 0&&{data:e.data}}};await a?.send(r)}).catch(e=>this._onerror(Error(`Failed to send response: ${e}`))).finally(()=>{this._requestHandlerAbortControllers.get(n.id)===d&&this._requestHandlerAbortControllers.delete(n.id)})}_onprogress(e){let{progressToken:t,...n}=e.params,r=Number(t),i=this._progressHandlers.get(r);if(!i){this._onerror(Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let a=this._responseHandlers.get(r),o=this._timeoutInfo.get(r);if(o&&a&&o.resetTimeoutOnProgress)try{this._resetTimeout(r)}catch(e){this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),a(e);return}i(n)}_onresponse(e){let t=Number(e.id),n=this._responseHandlers.get(t);if(n===void 0){this._onerror(Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}this._responseHandlers.delete(t),this._cleanupTimeout(t),this._progressHandlers.delete(t),Ma(e)?n(e):n(Q.fromError(e.error.code,e.error.message,e.error.data))}get transport(){return this._transport}async close(){await this._transport?.close()}request(e,t,n){let r=this._resolveOutboundCodec(e.method);if(this._assertOutboundRequestInEra(r,e.method),io(t))return this._requestWithSchemaViaCodec(r,e,t,n);let i=Yo(r,e.method);if(i===void 0)throw TypeError(`'${e.method}' is not a spec method; pass a result schema as the second argument to request().`);return this._requestWithSchemaViaCodec(r,e,i,t)}_negotiatedWireCodec(){return wa(this._negotiatedProtocolVersion)}_wireCodec(){return this._negotiatedWireCodec()}_resolveOutboundCodec(e){if(this._negotiatedProtocolVersion===void 0){let t=Go(e);if(t)return t}return this._negotiatedWireCodec()}_assertOutboundRequestInEra(e,t){if(Ea(t)&&!e.hasRequestMethod(t))throw new X(Y.MethodNotSupportedByProtocolVersion,`Method '${t}' is not supported by the negotiated protocol version (wire era ${e.era})`,{method:t,era:e.era})}_requestWithSchema(e,t,n){let r=this._resolveOutboundCodec(e.method);return this._assertOutboundRequestInEra(r,e.method),this._requestWithSchemaViaCodec(r,e,t,n)}_requestWithSchemaViaCodec(e,t,n,r){let{relatedRequestId:i,resumptionToken:a,onresumptiontoken:o,headers:s}=r??{},c=Date.now(),l,u;return new Promise((d,f)=>{let p=e=>{f(e)};if(!this._transport){p(Error(`Not connected`));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(t.method)}catch(e){p(e);return}if(r?.signal?.aborted){let e=r.signal.reason;throw e instanceof X?e:new X(Y.RequestTimeout,String(e))}let m=e.era===`2026-07-28`&&this._transport.hasPerRequestStream===!0?new AbortController:void 0,h=this._requestMessageId++;u=h;let g={...t,jsonrpc:`2.0`,id:h};r?.onprogress&&(this._progressHandlers.set(h,r.onprogress),g.params={...t.params,_meta:{...t.params?._meta,progressToken:h}});let _=this._envelopeOutbound(g),v=!1,y=e=>{v||(this._progressHandlers.delete(h),m===void 0?t.method!==`initialize`&&this._transport?.send(this._envelopeOutbound({jsonrpc:`2.0`,method:`notifications/cancelled`,params:{requestId:h,reason:String(e)}}),{relatedRequestId:i,resumptionToken:a,onresumptiontoken:o}).catch(e=>this._onerror(Error(`Failed to send cancellation: ${e}`))):m.abort(),f(e instanceof X?e:new X(Y.RequestTimeout,String(e))))};this._responseHandlers.set(h,i=>{if(r?.signal?.aborted)return;if(v=!0,i instanceof Error)return f(i);let a;try{a=e.decodeResult(t.method,i.result)}catch(e){return f(e instanceof Error?e:Error(String(e)))}if(a.kind===`invalid`)return f(a.error);if(a.kind===`input_required`){if(r?.allowInputRequired===!0)return d(cs(a));let i={codec:e,request:t,resultSchema:n,options:r,flowStartedAt:c,retry:(r,i)=>this._requestWithSchemaViaCodec(e,r===void 0?{method:t.method}:{method:t.method,params:r},n,i)};return d(this._resolveNonCompleteResult(a,i))}let o=a.result;uo(n,o).then(e=>{e.success?d(e.data):f(new X(Y.InvalidResult,`Invalid result for ${t.method}: ${e.error}`))},f)}),l=()=>y(r?.signal?.reason),r?.signal?.addEventListener(`abort`,l,{once:!0});let b=r?.timeout??6e4;this._setupTimeout(h,b,r?.maxTotalTimeout,()=>y(new X(Y.RequestTimeout,`Request timed out`,{timeout:b})),r?.resetTimeoutOnProgress??!1),this._transport.send(_,{relatedRequestId:i,resumptionToken:a,onresumptiontoken:o,headers:s,requestSignal:m?.signal}).catch(e=>{this._progressHandlers.delete(h),f(e)})}).finally(()=>{l&&r?.signal?.removeEventListener(`abort`,l),u!==void 0&&(this._responseHandlers.delete(u),this._cleanupTimeout(u))})}async notification(e,t){return await this._notificationViaCodec(this._resolveOutboundCodec(e.method),e,t)}async _notificationViaCodec(e,t,n){if(!this._transport)throw new X(Y.NotConnected,`Not connected`);if(Da(t.method)&&!e.hasNotificationMethod(t.method))throw new X(Y.MethodNotSupportedByProtocolVersion,`Notification '${t.method}' is not supported by the negotiated protocol version (wire era ${e.era})`,{method:t.method,era:e.era});this.assertNotificationCapability(t.method);let r=this._envelopeOutbound({jsonrpc:`2.0`,...t});if((this._options?.debouncedNotificationMethods??[]).includes(t.method)&&!t.params&&n?.relatedRequestId===void 0){if(this._pendingDebouncedNotifications.has(t.method))return;this._pendingDebouncedNotifications.add(t.method),Promise.resolve().then(()=>{this._pendingDebouncedNotifications.delete(t.method),this._transport&&this._transport?.send(r,n).catch(e=>this._onerror(e))});return}await this._transport.send(r,n)}setRequestHandler(e,t,n){this.assertRequestHandlerCapability(e);let r;if(typeof t==`function`){if(!Ea(e))throw TypeError(`'${e}' is not a spec request method; pass schemas as the second argument to setRequestHandler().`);r=(n,r)=>{let i=this._negotiatedWireCodec(),a=i.validateRequest(e,n);if(!a.ok&&a.reason===`not-in-era`&&(a=i.validateInputRequest(e,n)),!a.ok)throw a.reason===`not-in-era`?new Q(Z.InternalError,`No wire schema for ${e} in the resolved era`):Error(a.message);return Promise.resolve(t(a.value,r))}}else if(n)r=async(r,i)=>{let a=await uo(t.params,{...r.params});if(!a.success)throw new Q(Z.InvalidParams,`Invalid params for ${e}: ${a.error}`);return n(a.data,i)};else throw TypeError(`setRequestHandler: handler is required`);this._requestHandlers.set(e,this._wrapHandler(e,r))}_wrapHandler(e,t){return t}_outboundServerInfo(){}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,t,n){if(typeof t==`function`){if(!Da(e))throw TypeError(`'${e}' is not a spec notification method; pass schemas as the second argument to setNotificationHandler().`);this._notificationHandlers.set(e,(n,r)=>{let i=r.validateNotification(e,n);if(!i.ok)throw i.reason===`not-in-era`?new Q(Z.InternalError,`No wire schema for ${e} in the resolved era`):Error(i.message);return Promise.resolve(t(i.value))});return}if(!n)throw TypeError(`setNotificationHandler: handler is required`);this._notificationHandlers.set(e,async r=>{let i=await uo(t.params,{...r.params});if(!i.success)throw new Q(Z.InvalidParams,`Invalid params for notification ${e}: ${i.error}`);await n(i.data,r)})}removeNotificationHandler(e){this._notificationHandlers.delete(e)}};function $o(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function es(e,t){let n={...e};for(let e in t){let r=e,i=t[r];if(i===void 0)continue;let a=n[r];n[r]=$o(a)&&$o(i)?{...a,...i}:i}return n}function ts(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ns(e){let t={},n=[];if(!ts(e))return{accepted:t,droppedKeys:n};for(let[r,i]of Object.entries(e)){if(!ts(i)||`method`in i||`result`in i){n.push(r);continue}t[r]=i}return{accepted:t,droppedKeys:n}}function rs(e){throw new X(Y.SendFailed,`ctx.mcpReq.${e} is not available while fulfilling an embedded input request: the request is fulfilled locally and has no related peer request`)}function is(e,t,n,r,i){return{sessionId:i,mcpReq:{id:e,method:t,_meta:n?._meta,requestState:Xo(void 0),signal:r,send:(()=>rs(`send`)),notify:()=>rs(`notify`)}}}async function as(e,t,n,r,i){if(!ts(r)||typeof r.method!=`string`)throw new X(Y.InvalidResult,`Invalid input request '${n}': each inputRequests entry must be an embedded request object with a method`,{key:n});let a=r.method;if(!t.hasInputRequestMethod(a))throw new X(Y.InvalidResult,`Invalid input request '${n}': '${a}' is not an embedded request the ${t.era} revision defines (expected elicitation/create, sampling/createMessage, or roots/list)`,{key:n,method:a});let o=e.getRequestHandler(a);if(o===void 0)throw new X(Y.CapabilityNotSupported,`Cannot fulfil input request '${n}': no handler is registered for '${a}' on this client. Declare the corresponding capability and register a handler, or handle input_required results manually.`,{key:n,method:a});let s=ts(r.params)?r.params:void 0;return await o({jsonrpc:`2.0`,id:n,method:a,...s!==void 0&&{params:s}},e.buildContext(is(n,a,s,i,e.sessionId)))}function os(e,t){return{...e?.signal!==void 0&&{signal:e.signal},...e?.onprogress!==void 0&&{onprogress:e.onprogress},...e?.resetTimeoutOnProgress!==void 0&&{resetTimeoutOnProgress:e.resetTimeoutOnProgress},...e?.headers!==void 0&&{headers:e.headers},...t.timeout!==void 0&&{timeout:t.timeout},...t.maxTotalTimeout!==void 0&&{maxTotalTimeout:t.maxTotalTimeout},allowInputRequired:!0}}function ss(e,t,n,r){let{codec:i,request:a,options:o,flowStartedAt:s}=r,c={inputRequests:n.inputRequests,...n.requestState!==void 0&&{requestState:n.requestState}},l={dispatchInputRequest:(t,n,r)=>as(e,i,t,n,r),retry:(e,t)=>r.retry(e,os(o,t))};return Ro({config:t,method:a.method,originalParams:a.params,firstPayload:c,flowStartedAt:s,signal:o?.signal,requestOptions:{...o?.timeout!==void 0&&{timeout:o.timeout},...o?.maxTotalTimeout!==void 0&&{maxTotalTimeout:o.maxTotalTimeout},...o?.onprogress!==void 0&&{onprogress:o.onprogress}},hooks:l})}function cs(e){return{resultType:`input_required`,inputRequests:e.inputRequests,...e.requestState!==void 0&&{requestState:e.requestState},...e._meta!==void 0&&{_meta:e._meta}}}var ls=ye(ge((e=>{var t=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,n=/\\([\u000b\u0020-\u00ff])/g,r=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;e.parse=i;function i(e){if(!e)throw TypeError(`argument string is required`);var i=typeof e==`object`?a(e):e;if(typeof i!=`string`)throw TypeError(`argument string is required to be a string`);var s=i.indexOf(`;`),c=s===-1?i.trim():i.slice(0,s).trim();if(!r.test(c))throw TypeError(`invalid media type`);var l=new o(c.toLowerCase());if(s!==-1){var u,d,f;for(t.lastIndex=s;d=t.exec(i);){if(d.index!==s)throw TypeError(`invalid parameter format`);s+=d[0].length,u=d[1].toLowerCase(),f=d[2],f.charCodeAt(0)===34&&(f=f.slice(1,-1),f.indexOf(`\\`)!==-1&&(f=f.replace(n,`$1`))),l.parameters[u]=f}if(s!==i.length)throw TypeError(`invalid parameter format`)}return l}function a(e){var t;if(typeof e.getHeader==`function`?t=e.getHeader(`content-type`):typeof e.headers==`object`&&(t=e.headers&&e.headers[`content-type`]),typeof t!=`string`)throw TypeError(`content-type header is missing from object`);return t}function o(e){this.parameters=Object.create(null),this.type=e}}))(),1);function us(e){if(e)try{return ls.parse(e).type}catch{let t=(e.split(`;`,1)[0]??``).trim().toLowerCase();return t===``||e.slice(t.length).includes(`,`)?void 0:t}}function ds(e){return e?e instanceof Headers?Object.fromEntries(e.entries()):Array.isArray(e)?Object.fromEntries(e):{...e}:{}}function fs(e=fetch,t){return t?async(n,r)=>e(n,{...t,...r,headers:r?.headers?{...ds(t.headers),...ds(r.headers)}:t.headers}):e}function ps(e,t){let n=typeof e;if(n!==typeof t)return!1;if(Array.isArray(e)){if(!Array.isArray(t))return!1;let n=e.length;if(n!==t.length)return!1;for(let r=0;r1?t[a.href]=e:(a.hash=``,r===``?n=a:bs(e,t,n))}}else if(e!==!0&&e!==!1)return t;let i=n.href+(r?`#`+r:``);if(t[i]!==void 0)throw Error(`Duplicate schema URI "${i}".`);if(t[i]=e,e===!0||e===!1)return t;if(e.__absolute_uri__===void 0&&Object.defineProperty(e,"__absolute_uri__",{enumerable:!1,value:i}),e.$ref&&e.__absolute_ref__===void 0){let t=new URL(e.$ref,n.href);t.hash=t.hash,Object.defineProperty(e,"__absolute_ref__",{enumerable:!1,value:t.href})}if(e.$recursiveRef&&e.__absolute_recursive_ref__===void 0){let t=new URL(e.$recursiveRef,n.href);t.hash=t.hash,Object.defineProperty(e,"__absolute_recursive_ref__",{enumerable:!1,value:t.href})}if(e.$anchor){let r=new URL(`#`+e.$anchor,n.href);t[r.href]=e}for(let i in e){if(vs[i])continue;let a=`${r}/${ms(i)}`,o=e[i];if(Array.isArray(o)){if(gs[i]){let e=o.length;for(let r=0;r%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,Ds=/^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,Os=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,ks=/^(?:\/(?:[^~/]|~0|~1)*)*$/,As=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,js=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,Ms=e=>{if(e[0]===`"`)return!1;let[t,n,...r]=e.split(`@`);return!t||!n||r.length!==0||t.length>64||n.length>253||t[0]===`.`||t.endsWith(`.`)||t.includes(`..`)||!/^[a-z0-9.-]+$/i.test(n)||!/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+$/i.test(t)?!1:n.split(`.`).every(e=>/^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/i.test(e))},Ns=/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,Ps=/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,Fs=e=>e.length>1&&e.length<80&&(/^P\d+([.,]\d+)?W$/.test(e)||/^P[\dYMDTHS]*(\d[.,]\d+)?[YMDHS]$/.test(e)&&/^P([.,\d]+Y)?([.,\d]+M)?([.,\d]+D)?(T([.,\d]+H)?([.,\d]+M)?([.,\d]+S)?)?$/.test(e));function Is(e){return e.test.bind(e)}var Ls={date:zs,time:Bs.bind(void 0,!1),"date-time":Hs,duration:Fs,uri:Gs,"uri-reference":Is(Ts),"uri-template":Is(Es),url:Is(Ds),email:Ms,hostname:Is(ws),ipv4:Is(Ns),ipv6:Is(Ps),regex:qs,uuid:Is(Os),"json-pointer":Is(ks),"json-pointer-uri-fragment":Is(As),"relative-json-pointer":Is(js)};function Rs(e){return e%4==0&&(e%100!=0||e%400==0)}function zs(e){let t=e.match(xs);if(!t)return!1;let n=+t[1],r=+t[2],i=+t[3];return r>=1&&r<=12&&i>=1&&i<=(r==2&&Rs(n)?29:Ss[r])}function Bs(e,t){let n=t.match(Cs);if(!n)return!1;let r=+n[1],i=+n[2],a=+n[3],o=!!n[5];return(r<=23&&i<=59&&a<=59||r==23&&i==59&&a==60)&&(!e||o)}var Vs=/t|\s/i;function Hs(e){let t=e.split(Vs);return t.length==2&&zs(t[0])&&Bs(!0,t[1])}var Us=/\/|:/,Ws=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function Gs(e){return Us.test(e)&&Ws.test(e)}var Ks=/[^\\]\\Z/;function qs(e){if(Ks.test(e))return!1;try{return new RegExp(e,`u`),!0}catch{return!1}}function Js(e){let t=0,n=e.length,r=0,i;for(;r=55296&&i<=56319&&rps(e,t))||I.push({instanceLocation:o,keyword:`enum`,keywordLocation:`${s}/enum`,error:`Instance does not match any of ${JSON.stringify(g)}.`}):g.some(t=>e===t)||I.push({instanceLocation:o,keyword:`enum`,keywordLocation:`${s}/enum`,error:`Instance does not match any of ${JSON.stringify(g)}.`})),v!==void 0){let t=`${s}/not`;$(e,v,n,r,i,a,o,t).valid&&I.push({instanceLocation:o,keyword:`not`,keywordLocation:t,error:`Instance matched "not" schema.`})}let be=[];if(y!==void 0){let t=`${s}/anyOf`,l=I.length,u=!1;for(let s=0;s{let u=Object.create(c),d=$(e,s,n,r,i,p===!0?a:null,o,`${t}/${l}`,u);return I.push(...d.errors),d.valid&&be.push(u),d.valid}).length;u===1?I.length=l:I.splice(l,0,{instanceLocation:o,keyword:`oneOf`,keywordLocation:t,error:`Instance does not match exactly one subschema (${u} matches).`})}if((u===`object`||u===`array`)&&Object.assign(c,...be),S!==void 0){let t=`${s}/if`;if($(e,S,n,r,i,a,o,t,c).valid){if(C!==void 0){let l=$(e,C,n,r,i,a,o,`${s}/then`,c);l.valid||I.push({instanceLocation:o,keyword:`if`,keywordLocation:t,error:`Instance does not match "then" schema.`},...l.errors)}}else if(w!==void 0){let l=$(e,w,n,r,i,a,o,`${s}/else`,c);l.valid||I.push({instanceLocation:o,keyword:`if`,keywordLocation:t,error:`Instance does not match "else" schema.`},...l.errors)}}if(u===`object`){if(_!==void 0)for(let t of _)t in e||I.push({instanceLocation:o,keyword:`required`,keywordLocation:`${s}/required`,error:`Instance does not have required property "${t}".`});let t=Object.keys(e);if(D!==void 0&&t.lengthO&&I.push({instanceLocation:o,keyword:`maxProperties`,keywordLocation:`${s}/maxProperties`,error:`Instance does not have at least ${O} properties.`}),k!==void 0){let t=`${s}/propertyNames`;for(let s in e){let e=`${o}/${ms(s)}`,c=$(s,k,n,r,i,a,e,t);c.valid||I.push({instanceLocation:o,keyword:`propertyNames`,keywordLocation:t,error:`Property name "${s}" does not match schema.`},...c.errors)}}if(re!==void 0){let t=`${s}/dependantRequired`;for(let n in re)if(n in e){let r=re[n];for(let i of r)i in e||I.push({instanceLocation:o,keyword:`dependentRequired`,keywordLocation:t,error:`Instance has "${n}" but does not have "${i}".`})}}if(A!==void 0)for(let t in A){let l=`${s}/dependentSchemas`;if(t in e){let s=$(e,A[t],n,r,i,a,o,`${l}/${ms(t)}`,c);s.valid||I.push({instanceLocation:o,keyword:`dependentSchemas`,keywordLocation:l,error:`Instance has "${t}" but does not match dependant schema.`},...s.errors)}}if(ie!==void 0){let t=`${s}/dependencies`;for(let s in ie)if(s in e){let c=ie[s];if(Array.isArray(c))for(let n of c)n in e||I.push({instanceLocation:o,keyword:`dependencies`,keywordLocation:t,error:`Instance has "${s}" but does not have "${n}".`});else{let l=$(e,c,n,r,i,a,o,`${t}/${ms(s)}`);l.valid||I.push({instanceLocation:o,keyword:`dependencies`,keywordLocation:t,error:`Instance has "${s}" but does not match dependant schema.`},...l.errors)}}}let l=Object.create(null),u=!1;if(E!==void 0){let t=`${s}/properties`;for(let s in E){if(!(s in e))continue;let d=`${o}/${ms(s)}`,f=$(e[s],E[s],n,r,i,a,d,`${t}/${ms(s)}`);if(f.valid)c[s]=l[s]=!0;else if(u=i,I.push({instanceLocation:o,keyword:`properties`,keywordLocation:t,error:`Property "${s}" does not match schema.`},...f.errors),u)break}}if(!u&&ee!==void 0){let t=`${s}/patternProperties`;for(let s in ee){let d=new RegExp(s,`u`),f=ee[s];for(let p in e){if(!d.test(p))continue;let m=`${o}/${ms(p)}`,h=$(e[p],f,n,r,i,a,m,`${t}/${ms(s)}`);h.valid?c[p]=l[p]=!0:(u=i,I.push({instanceLocation:o,keyword:`patternProperties`,keywordLocation:t,error:`Property "${p}" matches pattern "${s}" but does not match associated schema.`},...h.errors))}}}if(!u&&te!==void 0){let t=`${s}/additionalProperties`;for(let s in e){if(l[s])continue;let d=`${o}/${ms(s)}`,f=$(e[s],te,n,r,i,a,d,t);f.valid?c[s]=!0:(u=i,I.push({instanceLocation:o,keyword:`additionalProperties`,keywordLocation:t,error:`Property "${s}" does not match additional properties schema.`},...f.errors))}}else if(!u&&ne!==void 0){let t=`${s}/unevaluatedProperties`;for(let s in e)if(!c[s]){let l=`${o}/${ms(s)}`,u=$(e[s],ne,n,r,i,a,l,t);u.valid?c[s]=!0:I.push({instanceLocation:o,keyword:`unevaluatedProperties`,keywordLocation:t,error:`Property "${s}" does not match unevaluated properties schema.`},...u.errors)}}}else if(u===`array`){ue!==void 0&&e.length>ue&&I.push({instanceLocation:o,keyword:`maxItems`,keywordLocation:`${s}/maxItems`,error:`Array has too many items (${e.length} > ${ue}).`}),le!==void 0&&e.length=(N||0)&&(I.length=u),N===void 0&&ce===void 0&&d===0?I.splice(u,0,{instanceLocation:o,keyword:`contains`,keywordLocation:l,error:`Array does not contain item matching schema.`}):N!==void 0&&dce&&I.push({instanceLocation:o,keyword:`maxContains`,keywordLocation:`${s}/maxContains`,error:`Array may contain at most ${ce} items matching schema. ${d} items were found.`})}}if(!u&&se!==void 0){let u=`${s}/unevaluatedItems`;for(;l=P||e>P)&&I.push({instanceLocation:o,keyword:`maximum`,keywordLocation:`${s}/maximum`,error:`${e} is greater than ${me?`or equal to `:``} ${P}.`})):(fe!==void 0&&eP&&I.push({instanceLocation:o,keyword:`maximum`,keywordLocation:`${s}/maximum`,error:`${e} is greater than ${P}.`}),pe!==void 0&&e<=pe&&I.push({instanceLocation:o,keyword:`exclusiveMinimum`,keywordLocation:`${s}/exclusiveMinimum`,error:`${e} is less than ${pe}.`}),me!==void 0&&e>=me&&I.push({instanceLocation:o,keyword:`exclusiveMaximum`,keywordLocation:`${s}/exclusiveMaximum`,error:`${e} is greater than or equal to ${me}.`})),F!==void 0){let t=e%F;Math.abs(0-t)>=1.1920929e-7&&Math.abs(F-t)>=1.1920929e-7&&I.push({instanceLocation:o,keyword:`multipleOf`,keywordLocation:`${s}/multipleOf`,error:`${e} is not a multiple of ${F}.`})}}else if(u===`string`){let t=he===void 0&&ge===void 0?0:Js(e);he!==void 0&&tge&&I.push({instanceLocation:o,keyword:`maxLength`,keywordLocation:`${s}/maxLength`,error:`String is too long (${t} > ${ge}).`}),_e!==void 0&&!new RegExp(_e,`u`).test(e)&&I.push({instanceLocation:o,keyword:`pattern`,keywordLocation:`${s}/pattern`,error:`String does not match pattern.`}),T!==void 0&&Ls[T]&&!Ls[T](e)&&I.push({instanceLocation:o,keyword:`format`,keywordLocation:`${s}/format`,error:`String does not match format "${T}".`})}return{valid:I.length===0,errors:I}}var Ys=class{schema;draft;shortCircuit;lookup;constructor(e,t=`2019-09`,n=!0){this.schema=e,this.draft=t,this.shortCircuit=n,this.lookup=bs(e)}validate(e){return $(e,this.schema,this.draft,this.lookup,this.shortCircuit)}addSchema(e,t){t&&(e={...e,$id:t}),bs(e,this.lookup)}},Xs=class{shortcircuit;draft;constructor(e){this.shortcircuit=e?.shortcircuit??!0,this.draft=e?.draft}_draftFor(e){let t=we(e,`pass an explicit { draft } to CfWorkerJsonSchemaValidator to validate other dialects.`);return t===`draft-7`?`7`:t}getValidator(e){let t=new Ys(e,this.draft??this._draftFor(e),this.shortcircuit);return e=>{let n=t.validate(e);return n.valid?{valid:!0,data:e,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:n.errors.map(e=>`${e.instanceLocation}: ${e.error}`).join(`; `)}}}},Zs=globalThis.crypto;async function Qs(e){return(await Zs).getRandomValues(new Uint8Array(e))}async function $s(e){let t=``;for(;t.length128)throw`Expected a length between 43 and 128. Received ${e}.`;let t=await ec(e);return{code_verifier:t,code_challenge:await tc(t)}}var rc=class extends Error{constructor(e,t){super(e),this.name=`ParseError`,this.type=t.type,this.field=t.field,this.value=t.value,this.line=t.line}},ic=10,ac=13,oc=32;function sc(e){}function cc(e){if(typeof e==`function`)throw TypeError("`config` must be an object, got a function instead. Did you mean `createParser({onEvent: fn})`?");let{onEvent:t=sc,onError:n=sc,onRetry:r=sc,onComment:i,maxBufferSize:a}=e,o=[],s=0,c=!0,l,u=``,d=0,f,p=!1;function m(e){if(p)throw Error("Cannot feed parser: it was terminated after exceeding the configured max buffer size. Call `reset()` to resume parsing.");if(c&&(c=!1,e.charCodeAt(0)===239&&e.charCodeAt(1)===187&&e.charCodeAt(2)===191&&(e=e.slice(3))),o.length===0){let t=g(e);t!==``&&(o.push(t),s=t.length),h();return}if(e.indexOf(` +`)===-1&&e.indexOf(`\r`)===-1){o.push(e),s+=e.length,h();return}o.push(e);let t=o.join(``);o.length=0,s=0;let n=g(t);n!==``&&(o.push(n),s=n.length),h()}function h(){a!==void 0&&(s+u.length<=a||(p=!0,o.length=0,s=0,l=void 0,u=``,d=0,f=void 0,n(new rc(`Buffered data exceeded max buffer size of ${a} characters`,{type:`max-buffer-size-exceeded`}))))}function g(e){let n=0;if(e.indexOf(`\r`)===-1){let r=e.indexOf(` +`,n);for(;r!==-1;){if(n===r){d>0&&t({id:l,event:f,data:u}),l=void 0,u=``,d=0,f=void 0,n=r+1,r=e.indexOf(` +`,n);continue}let i=e.charCodeAt(n);if(lc(e,n,i)){let i=e.charCodeAt(n+5)===oc?n+6:n+5,a=e.slice(i,r);if(d===0&&e.charCodeAt(r+1)===ic){t({id:l,event:f,data:a}),l=void 0,u=``,f=void 0,n=r+2,r=e.indexOf(` +`,n);continue}u=d===0?a:`${u} +${a}`,d++}else uc(e,n,i)?f=e.slice(e.charCodeAt(n+6)===oc?n+7:n+6,r)||void 0:_(e,n,r);n=r+1,r=e.indexOf(` +`,n)}return e.slice(n)}for(;n20?`${e.slice(0,20)}\u2026`:e}"`,{type:`unknown-field`,field:e,value:t,line:i}))}}function y(){d>0&&t({id:l,event:f,data:u}),l=void 0,u=``,d=0,f=void 0}function b(e={}){if(e.consume&&o.length>0){let e=o.join(``);_(e,0,e.length)}c=!0,l=void 0,u=``,d=0,f=void 0,o.length=0,s=0,p=!1}return{feed:m,reset:b}}function lc(e,t,n){return n===100&&e.charCodeAt(t+1)===97&&e.charCodeAt(t+2)===116&&e.charCodeAt(t+3)===97&&e.charCodeAt(t+4)===58}function uc(e,t,n){return n===101&&e.charCodeAt(t+1)===118&&e.charCodeAt(t+2)===101&&e.charCodeAt(t+3)===110&&e.charCodeAt(t+4)===116&&e.charCodeAt(t+5)===58}var dc=class extends TransformStream{constructor({onError:e,onRetry:t,onComment:n,maxBufferSize:r}={}){let i;super({start(a){i=cc({onEvent:e=>{a.enqueue(e)},onError(t){typeof e==`function`&&e(t),(e===`terminate`||t.type===`max-buffer-size-exceeded`)&&a.error(t)},onRetry:t,onComment:n,maxBufferSize:r})},transform(e){i.feed(e)}})}},fc=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.OAuthClientFlowError`})}static[Symbol.hasInstance](e){return Kr(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Kr(this,e)}constructor(e){super(e),this.name=new.target.name,Gr(this,new.target)}},pc=class extends fc{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.IssuerMismatchError`})}kind;expected;received;constructor(e,t,n){super(`Issuer mismatch in ${e===`metadata`?`authorization server metadata (RFC 8414 §3.3)`:`authorization response (RFC 9207)`}: expected ${JSON.stringify(t)}, received ${JSON.stringify(n)}`),this.kind=e,this.expected=t,this.received=n}},mc=class extends fc{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.RegistrationRejectedError`})}status;body;submittedMetadata;constructor(e){super(`Dynamic Client Registration rejected (HTTP ${e.status}): ${e.body}`),this.status=e.status,this.body=e.body,this.submittedMetadata=e.submittedMetadata}},hc=class extends fc{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.InsecureTokenEndpointError`})}tokenEndpoint;constructor(e){super(`Refusing to send credentials to non-https token endpoint '${e}'. OAuth token requests MUST use TLS (localhost / *.localhost / 127.0.0.1 / ::1 are exempt).`),this.tokenEndpoint=e}},gc=class extends fc{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.AuthorizationServerMismatchError`})}constructor(e,t){super(`Authorization server mismatch: credentials are bound to ${JSON.stringify(e)} but this call resolved ${JSON.stringify(t)}; refusing to present them to a different authorization server`),this.recordedIssuer=e,this.currentIssuer=t}},_c=class extends fc{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.InsufficientScopeError`})}requiredScope;resourceMetadataUrl;errorDescription;constructor(e){super(`Insufficient scope${e.requiredScope?`: required "${e.requiredScope}"`:``}`),this.requiredScope=e.requiredScope,this.resourceMetadataUrl=e.resourceMetadataUrl,this.errorDescription=e.errorDescription}};function vc(e,t,n){if(e)return typeof e.issuer==`string`?yc(e.issuer,t)?e:void 0:(n?.canPersistStamp!==!1&&console.warn(`[mcp-sdk] SEP-2352: stored OAuth credential has no 'issuer' stamp (pre-upgrade storage or provider not round-tripping the value). SEP-2352 isolation is inactive for this read; ensure your provider round-trips the issuer field.`),e.issuer===void 0?e:{...e,issuer:void 0})}function yc(e,t){return e===t||e.endsWith(`/`)&&e.slice(0,-1)===t||t.endsWith(`/`)&&t.slice(0,-1)===e}function bc(e){if(e==null)return!1;let t=e;return typeof t.tokens==`function`&&typeof t.clientInformation==`function`}async function xc(e,t,n){let{resourceMetadataUrl:r,scope:i}=Yc(t.response);if(await Uc(e,{serverUrl:t.serverUrl,resourceMetadataUrl:r,scope:i,fetchFn:t.fetchFn,...n})!==`AUTHORIZED`)throw new Cc}function Sc(e,t){return{token:async()=>(await e.tokens())?.access_token,onUnauthorized:async n=>xc(e,n,t)}}var Cc=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.UnauthorizedError`})}static[Symbol.hasInstance](e){return Kr(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Kr(this,e)}constructor(e){super(e??`Unauthorized`),this.name=`UnauthorizedError`,Gr(this,new.target)}};function wc(e){return e?.authorization_response_iss_parameter_supported===!0}function Tc({iss:e,expectedIssuer:t,issParameterSupported:n}){if(t!==void 0){if(e===void 0){if(n)throw new pc(`authorization_response`,t,void 0);return}if(e!==t)throw new pc(`authorization_response`,t,e)}}function Ec(...e){let t=new Set;for(let n of e)if(n)for(let e of n.split(/\s+/))e&&t.add(e);return t.size>0?[...t].join(` `):void 0}function Dc(e,t){if(!e)return!1;let n=new Set((t??``).split(/\s+/).filter(Boolean));for(let t of e.split(/\s+/))if(t&&!n.has(t))return!0;return!1}async function Oc(e,t,n,r,i){if(typeof e==`string`)return{authorizationCode:e,iss:t};let a=e.get(`iss`)??void 0,o=e.get(`code`);if(o)return{authorizationCode:o,iss:a};let s=(await n.discoveryState?.())?.authorizationServerMetadata;if(!s)try{s=(await al(r,i)).authorizationServerMetadata}catch{s=void 0}if(!s)throw new Cc(`Authorization callback failed and the issuer could not be verified`);Tc({iss:a,expectedIssuer:s.issuer,issParameterSupported:wc(s)});let c=e.get(`error`);throw c?new Jr(c,e.get(`error_description`)??c,e.get(`error_uri`)??void 0):new Cc("Authorization callback contained neither `code` nor `error`")}function kc(e){return[`client_secret_basic`,`client_secret_post`,`none`].includes(e)}var Ac=`code`,jc=`S256`;function Mc(e,t){let n=e.client_secret!==void 0;return`token_endpoint_auth_method`in e&&e.token_endpoint_auth_method&&kc(e.token_endpoint_auth_method)&&(t.length===0||t.includes(e.token_endpoint_auth_method))?e.token_endpoint_auth_method:t.length===0?n?`client_secret_basic`:`none`:n&&t.includes(`client_secret_basic`)?`client_secret_basic`:n&&t.includes(`client_secret_post`)?`client_secret_post`:t.includes(`none`)?`none`:n?`client_secret_post`:`none`}function Nc(e,t,n,r){let{client_id:i,client_secret:a}=t;switch(e){case`client_secret_basic`:Pc(i,a,n);return;case`client_secret_post`:Fc(i,a,r);return;case`none`:Ic(i,r);return;default:throw Error(`Unsupported client authentication method: ${e}`)}}function Pc(e,t,n){if(!t)throw Error(`client_secret_basic authentication requires a client_secret`);let r=btoa(`${e}:${t}`);n.set(`Authorization`,`Basic ${r}`)}function Fc(e,t,n){n.set(`client_id`,e),t&&n.set(`client_secret`,t)}function Ic(e,t){t.set(`client_id`,e)}function Lc(e){return e===`localhost`||e.endsWith(`.localhost`)||e===`127.0.0.1`||e===`[::1]`||e===`::1`}function Rc(e){let t=new URL(String(e));if(t.protocol!==`https:`&&!Lc(t.hostname))throw new hc(t.href);return t}function zc(e){for(let t of e??[]){let e;try{e=new URL(t)}catch{continue}if(e.protocol!==`http:`&&e.protocol!==`https:`||Lc(e.hostname))return`native`}return`web`}function Bc(e){let t=e.clientMetadata;return{...t,grant_types:t.grant_types??(e.redirectUrl===void 0?void 0:[`authorization_code`,`refresh_token`]),application_type:t.application_type??zc(t.redirect_uris)}}async function Vc(e){let t=e instanceof Response?e.status:void 0,n=e instanceof Response?await e.text():e;try{let e=Lr.parse(JSON.parse(n));return Jr.fromResponse(e)}catch(e){let r=`${t?`HTTP ${t}: `:``}Invalid OAuth error response: ${e}. Raw body: ${n}`;return new Jr(qr.ServerError,r)}}function Hc(e,t,n){let r=e.invalidateCredentials===void 0?`retrying authorization without discarding the stored ${n} (provider implements no invalidateCredentials())`:`invalidating the stored ${n} and retrying authorization`;console.warn(`[mcp-sdk] OAuth ${JSON.stringify(t.code)} — ${r}. Cause: ${JSON.stringify(t.message)}`)}async function Uc(e,t){try{return await Gc(e,t)}catch(n){if(n instanceof Jr){if(n.code===qr.InvalidClient||n.code===qr.UnauthorizedClient)return Hc(e,n,`client credentials and tokens`),await e.invalidateCredentials?.(`client`),await e.invalidateCredentials?.(`tokens`),await Gc(e,t);if(n.code===qr.InvalidGrant||n.code===qr.InvalidDpopProof)return Hc(e,n,`tokens`),await e.invalidateCredentials?.(`tokens`),await Gc(e,t)}throw n}}function Wc(e){let{requestedScope:t,resourceMetadata:n,authServerMetadata:r,clientMetadata:i}=e,a=t||n?.scopes_supported?.join(` `)||i.scope;return a&&r?.scopes_supported?.includes(`offline_access`)&&!a.split(` `).includes(`offline_access`)&&i.grant_types?.includes(`refresh_token`)&&(a=`${a} offline_access`),a}async function Gc(e,{serverUrl:t,authorizationCode:n,iss:r,scope:i,resourceMetadataUrl:a,fetchFn:o,skipIssuerMetadataValidation:s,forceReauthorization:c}){let l=Bc(e),u=await e.discoveryState?.(),d,f,p,m,h=a;if(!h&&u?.resourceMetadataUrl&&(h=new URL(u.resourceMetadataUrl)),u?.authorizationServerUrl){if(f=u.authorizationServerUrl,d=u.resourceMetadata,p=u.authorizationServerMetadata??await il(f,{fetchFn:o,skipIssuerValidation:s}),!d)try{d=await Zc(t,{resourceMetadataUrl:h},o)}catch(e){if(e instanceof TypeError)throw e}(p!==u.authorizationServerMetadata||d!==u.resourceMetadata)&&await e.saveDiscoveryState?.({authorizationServerUrl:String(f),resourceMetadataUrl:h?.toString(),resourceMetadata:d,authorizationServerMetadata:p})}else{let e=await al(t,{resourceMetadataUrl:h,fetchFn:o,skipIssuerMetadataValidation:s});f=e.authorizationServerUrl,p=e.authorizationServerMetadata,d=e.resourceMetadata,m={authorizationServerUrl:String(f),resourceMetadataUrl:h?.toString(),resourceMetadata:d,authorizationServerMetadata:p}}let g=p?.issuer??String(f),_={issuer:g};if(await e.saveAuthorizationServerUrl?.(g),n!==void 0){let t=u?.authorizationServerMetadata?.issuer??u?.authorizationServerUrl;if(t===void 0){if(e.saveDiscoveryState!==void 0)throw new gc(`discoveryState was not available on the callback leg; ensure your provider persists discoveryState alongside codeVerifier`,g);console.warn(`[mcp-sdk] OAuthClientProvider does not implement saveDiscoveryState()/discoveryState(); the SEP-2352 callback-leg authorization-server binding cannot be checked. Implement discoveryState (persist alongside codeVerifier) — see docs/migration/upgrade-to-v2.md §SEP-2352.`)}else if(!yc(t,g))throw new gc(t,g)}m&&await e.saveDiscoveryState?.(m);let v=await qc(t,e,d),y=v&&d&&!e.validateResourceURL?d.resource:v;y&&await e.saveResourceUrl?.(ol(y));let b=Wc({requestedScope:i,resourceMetadata:d,authServerMetadata:p,clientMetadata:e.clientMetadata}),x=await Promise.resolve(e.clientInformation(_)),S=vc(x,g,{canPersistStamp:e.saveClientInformation!==void 0});if(S===void 0&&x?.issuer&&e.saveClientInformation===void 0)throw new gc(x.issuer,g);if(S&&S.issuer===void 0&&(S={...S,issuer:g},await e.saveClientInformation?.(S,_)),!S){if(n!==void 0)throw Error(`Existing OAuth client information is required when exchanging an authorization code`);let t=p?.client_id_metadata_document_supported===!0,r=e.clientMetadataUrl;if(r&&!Kc(r))throw new Jr(qr.InvalidClientMetadata,`clientMetadataUrl must be a valid HTTPS URL with a non-root pathname, got: ${r}`);if(t&&r)S={client_id:r,issuer:g},await e.saveClientInformation?.(S,_);else{if(!e.saveClientInformation)throw Error(`OAuth client information must be saveable for dynamic registration`);S={...await fl(f,{metadata:p,clientMetadata:l,scope:b,fetchFn:o}),issuer:g},await e.saveClientInformation(S,_)}}let C=!e.redirectUrl;if(n!==void 0||C){n!==void 0&&Tc({iss:r,expectedIssuer:p?.issuer,issParameterSupported:wc(p)});let t=await dl(e,f,{metadata:p,resource:y,authorizationCode:n,iss:r,scope:b,fetchFn:o});return await e.saveTokens({...t,issuer:g},_),`AUTHORIZED`}let w=vc(await e.tokens(_),g);if(w&&w.issuer===void 0&&(w={...w,issuer:g},await e.saveTokens(w,_)),w?.refresh_token&&!c){let t;try{t=await ul(f,{metadata:p,clientInformation:S,refreshToken:w.refresh_token,resource:y,addClientAuthentication:e.addClientAuthentication,dpop:await e.dpop?.(),fetchFn:o})}catch(e){if(e instanceof hc)throw e;if(!(e instanceof Jr)||e.code===qr.ServerError)console.warn(`[mcp-sdk] Could not refresh OAuth tokens; falling back to a new authorization request. Cause: ${JSON.stringify(e instanceof Error?e.message:String(e))}`);else throw e}if(t)return await e.saveTokens({...t,issuer:g},_),`AUTHORIZED`}let T=e.state?await e.state():void 0,{authorizationUrl:E,codeVerifier:ee}=await sl(f,{metadata:p,clientInformation:S,state:T,redirectUrl:e.redirectUrl,scope:b,resource:y});return await e.saveCodeVerifier(ee),await e.redirectToAuthorization(E),`REDIRECT`}function Kc(e){if(!e)return!1;try{let t=new URL(e);return t.protocol===`https:`&&t.pathname!==`/`}catch{return!1}}async function qc(e,t,n){let r=Xr(e);if(t.validateResourceURL)return await t.validateResourceURL(r,n?.resource);if(n){if(!Qr({requestedResource:r,configuredResource:n.resource}))throw Error(`Protected resource ${n.resource} does not match expected ${r} (or origin)`);return new URL(n.resource)}}var Jc=new Set([`bearer`,`dpop`]);function Yc(e){let t=e.headers.get(`WWW-Authenticate`);if(!t)return{};let[n,r]=t.split(` `);if(!n||!Jc.has(n.toLowerCase())||!r)return{};let i=Xc(e,`resource_metadata`)||void 0,a;if(i)try{a=new URL(i)}catch{}let o=Xc(e,`scope`)||void 0,s=Xc(e,`error`)||void 0,c=Xc(e,`error_description`)||void 0;return{resourceMetadataUrl:a,scope:o,error:s,errorDescription:c}}function Xc(e,t){let n=e.headers.get(`WWW-Authenticate`);if(!n)return null;let r=new RegExp(String.raw`${t}=(?:"([^"]+)"|([^\s,]+))`),i=n.match(r);if(i){let e=i[1]||i[2];if(e)return e}return null}async function Zc(e,t,n=fetch){let r=await nl(e,`oauth-protected-resource`,n,{protocolVersion:t?.protocolVersion,metadataUrl:t?.resourceMetadataUrl});if(!r||r.status===404)throw await r?.text?.().catch(()=>{}),Error(`Resource server does not implement OAuth 2.0 Protected Resource Metadata.`);if(!r.ok)throw await r.text?.().catch(()=>{}),Error(`HTTP ${r.status} trying to load well-known OAuth protected resource metadata.`);return jr.parse(await r.json())}async function Qc(e,t,n=fetch){try{return await n(e,{headers:t})}catch(r){if(!(r instanceof TypeError))throw r;if(t)try{return await n(e,{})}catch(e){if(!(e instanceof TypeError))throw e;return}return}}function $c(e,t=``,n={}){return t.endsWith(`/`)&&(t=t.slice(0,-1)),n.prependPathname?`${t}/.well-known/${e}`:`/.well-known/${e}${t}`}async function el(e,t,n=fetch){return await Qc(e,{"MCP-Protocol-Version":t},n)}function tl(e,t){return e?t===`/`?!1:e.status>=400&&e.status<500||e.status===502:!0}async function nl(e,t,n,r){let i=new URL(e),a=r?.protocolVersion??`2025-11-25`,o;if(r?.metadataUrl)o=new URL(r.metadataUrl);else{let e=$c(t,i.pathname);o=new URL(e,r?.metadataServerUrl??i),o.search=i.search}let s=await el(o,a,n);return!r?.metadataUrl&&tl(s,i.pathname)&&(s=await el(new URL(`/.well-known/${t}`,i),a,n)),s}function rl(e){let t=typeof e==`string`?new URL(e):e,n=t.pathname!==`/`,r=[];if(!n)return r.push({url:new URL(`/.well-known/oauth-authorization-server`,t.origin),type:`oauth`},{url:new URL(`/.well-known/openid-configuration`,t.origin),type:`oidc`}),r;let i=t.pathname;return i.endsWith(`/`)&&(i=i.slice(0,-1)),r.push({url:new URL(`/.well-known/oauth-authorization-server${i}`,t.origin),type:`oauth`},{url:new URL(`/.well-known/openid-configuration${i}`,t.origin),type:`oidc`},{url:new URL(`${i}/.well-known/openid-configuration`,t.origin),type:`oidc`}),r}async function il(e,{fetchFn:t=fetch,protocolVersion:n=Te,skipIssuerValidation:r=!1}={}){let i={"MCP-Protocol-Version":n,Accept:`application/json`},a=rl(e);for(let{url:n,type:o}of a){let a=await Qc(n,i,t);if(!a)continue;if(!a.ok){if(await a.text?.().catch(()=>{}),a.status>=400&&a.status<500||a.status===502)continue;throw Error(`HTTP ${a.status} trying to load ${o===`oauth`?`OAuth`:`OpenID provider`} metadata from ${n}`)}let s=o===`oauth`?Mr.parse(await a.json()):Pr.parse(await a.json());if(!r){let t=typeof e==`string`?e:e.href;if(!(s.issuer===t||t.endsWith(`/`)&&s.issuer===t.slice(0,-1)))throw new pc(`metadata`,t,s.issuer)}return s}}async function al(e,t){let n,r;try{n=await Zc(e,{resourceMetadataUrl:t?.resourceMetadataUrl},t?.fetchFn),n.authorization_servers&&n.authorization_servers.length>0&&(r=n.authorization_servers[0])}catch(e){if(e instanceof TypeError)throw e}r||=String(new URL(`/`,e));let i=await il(r,{fetchFn:t?.fetchFn,skipIssuerValidation:t?.skipIssuerMetadataValidation});return{authorizationServerUrl:r,authorizationServerMetadata:i,resourceMetadata:n}}function ol(e){return typeof e==`string`?e:e.href}async function sl(e,{metadata:t,clientInformation:n,redirectUrl:r,scope:i,state:a,resource:o}){let s;if(t){if(s=new URL(t.authorization_endpoint),!t.response_types_supported.includes(Ac))throw Error(`Incompatible auth server: does not support response type ${Ac}`);if(t.code_challenge_methods_supported&&!t.code_challenge_methods_supported.includes(jc))throw Error(`Incompatible auth server: does not support code challenge method ${jc}`)}else s=new URL(`/authorize`,e);let c=await nc(),l=c.code_verifier,u=c.code_challenge;return s.searchParams.set(`response_type`,Ac),s.searchParams.set(`client_id`,n.client_id),s.searchParams.set(`code_challenge`,u),s.searchParams.set(`code_challenge_method`,jc),s.searchParams.set(`redirect_uri`,String(r)),a&&s.searchParams.set(`state`,a),i&&s.searchParams.set(`scope`,i),i?.split(` `).includes(`offline_access`)&&s.searchParams.append(`prompt`,`consent`),o&&s.searchParams.set(`resource`,ol(o)),{authorizationUrl:s,codeVerifier:l}}function cl(e,t,n){return new URLSearchParams({grant_type:`authorization_code`,code:e,code_verifier:t,redirect_uri:String(n)})}async function ll(e,{metadata:t,tokenRequestParams:n,clientInformation:r,addClientAuthentication:i,resource:a,dpop:o,fetchFn:s}){let c=Rc(t?.token_endpoint??new URL(`/token`,e)),l=new Headers({"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`});a&&n.set(`resource`,ol(a)),!i&&r&&Nc(Mc(r,t?.token_endpoint_auth_methods_supported??[]),r,l,n);let u=async()=>{let e=new Headers(l);return i&&await i(e,n,c,t),o&&e.set(`DPoP`,await o.buildProof({htm:`POST`,htu:c})),(s??fetch)(c,{method:`POST`,headers:e,body:n})},d=await u();if(o&&d.status===400&&(await d.clone().json().catch(()=>{}))?.error===qr.UseDpopNonce&&(o.observeNonce(d,c),d=await u()),o?.observeNonce(d,c),!d.ok)throw await Vc(d);let f=await d.json();try{return Fr.parse(Zr(f))}catch(e){throw typeof f==`object`&&f&&`error`in f?await Vc(JSON.stringify(f)):e}}async function ul(e,{metadata:t,clientInformation:n,refreshToken:r,resource:i,addClientAuthentication:a,dpop:o,fetchFn:s}){return{refresh_token:r,...await ll(e,{metadata:t,tokenRequestParams:new URLSearchParams({grant_type:`refresh_token`,refresh_token:r}),clientInformation:n,addClientAuthentication:a,resource:i,dpop:o,fetchFn:s})}}async function dl(e,t,{metadata:n,resource:r,authorizationCode:i,iss:a,scope:o,fetchFn:s}={}){i!==void 0&&Tc({iss:a,expectedIssuer:n?.issuer,issParameterSupported:wc(n)});let c=n?.issuer??String(t),l=async()=>{let t=await e.clientInformation({issuer:c}),n=vc(t,c,{canPersistStamp:!1});if(t&&n===void 0)throw new gc(String(t.issuer),c);return n},u=await l(),d=o??e.clientMetadata.scope,f;if(e.prepareTokenRequest&&(f=await e.prepareTokenRequest(d)),!f){if(!i)throw Error(`Either provider.prepareTokenRequest() or authorizationCode is required`);if(!e.redirectUrl)throw Error(`redirectUrl is required for authorization_code flow`);f=cl(i,await e.codeVerifier(),e.redirectUrl)}return u??=await l(),ll(t,{metadata:n,tokenRequestParams:f,clientInformation:u,addClientAuthentication:e.addClientAuthentication,resource:r,dpop:await e.dpop?.(),fetchFn:s})}async function fl(e,{metadata:t,clientMetadata:n,scope:r,fetchFn:i}){let a;if(t){if(!t.registration_endpoint)throw Error(`Incompatible auth server: does not support dynamic client registration`);a=new URL(t.registration_endpoint)}else a=new URL(`/register`,e);let o={...n,...r===void 0?{}:{scope:r}},s=await(i??fetch)(a,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(o)});if(!s.ok)throw new mc({status:s.status,body:await s.text(),submittedMetadata:o});return Vr.parse(Zr(await s.json()))}var pl=new Set([`tools/list`,`prompts/list`,`resources/list`,`resources/templates/list`,`server/discover`]),ml=class{_entries=new Map;_maxEntries;_stamp=0;_cappedSize=0;constructor(e){this._maxEntries=e?.maxEntries??512}get size(){return this._entries.size}get(e){return this._entries.get(hl(e))}set(e,t){let n=hl(e),r=pl.has(e.method),i=!this._entries.has(n);if(!r&&i&&this._maxEntries>0&&this._cappedSize>=this._maxEntries){for(let e of this._entries.keys())if(!pl.has(e.slice(0,e.indexOf(`\0`)))){this._entries.delete(e),this._cappedSize--;break}}let a=++this._stamp;return this._entries.set(n,{...t,stamp:a}),i&&!r&&this._cappedSize++,a}delete(e){this._entries.delete(hl(e))&&!pl.has(e.method)&&this._cappedSize--}evict(e){let t=`${e}\0`,n=pl.has(e);for(let e of this._entries.keys())e.startsWith(t)&&(this._entries.delete(e),n||this._cappedSize--)}clear(){this._entries.clear(),this._cappedSize=0}};function hl(e){return`${e.method}\0${JSON.stringify([e.partition??``,e.params??``])}`}function gl(e,t){return t===void 0?e:`${e}\0${t}`}var _l=864e5,vl=class{_evictionGeneration=new Map;_toolIndex;_toolOutputValidatorIndex;_serverIdentity=``;constructor(e,t,n=()=>{},r=``,i=Date.now){this._store=e,this._isUserSupplied=t,this._reportError=n,this._cachePartition=r,this._now=i}now(){return this._now()}setServerIdentity(e){this._serverIdentity=e}_partitionFor(e){return JSON.stringify([this._serverIdentity,e===`public`?``:this._cachePartition])}async _probe(e,t){let n={method:e,params:t??``},r=this._partitionFor(`private`),i=await this._store.get({...n,partition:r});if(i!==void 0)return i;let a=this._partitionFor(`public`);if(a===r)return;let o=await this._store.get({...n,partition:a});return o?.scope===`public`?o:void 0}async evict(e){this._evictionGeneration.set(e,(this._evictionGeneration.get(e)??0)+1),await this._deleteBoth(e,``)}async _deleteBoth(e,t){let n=this._partitionFor(`private`),r=this._partitionFor(`public`);try{await this._store.delete({method:e,params:t,partition:n})}catch(e){this._reportError(e)}if(r!==n)try{await this._store.delete({method:e,params:t,partition:r})}catch(e){this._reportError(e)}}async evictKey(e,t){let n=gl(e,t),r=this._evictionGeneration.get(n);r!==void 0&&this._evictionGeneration.set(n,r+1),await this._deleteBoth(e,t)}captureGeneration(e,t){let n=gl(e,t),r=this._evictionGeneration.get(n)??0;return this._evictionGeneration.set(n,r),r}async write(e,t,n,r){if((this._evictionGeneration.get(gl(e,r?.params))??0)!==n)return;let i=r?.params??``,a=this._partitionFor(`private`),o=this._partitionFor(`public`),s=(r?.scope??`private`)===`public`?o:a;try{await this._store.set({method:e,params:i,partition:s},{value:yl(t),expiresAt:r?.expiresAt,scope:r?.scope})}catch(e){this._reportError(e)}if(o!==a)try{await this._store.delete({method:e,params:i,partition:s===a?o:a})}catch(e){this._reportError(e)}}async read(e,t){let n=await this._probe(e,t);if(n?.expiresAt!==void 0&&n.expiresAt>this.now())try{let e=JSON.parse(n.value);if(typeof e!=`object`||!e||Array.isArray(e))throw TypeError(`cached document is not an object`);return{value:e}}catch(n){this._reportError(n),await this._deleteBoth(e,t??``);return}}resetForReconnect(){this._isUserSupplied||this._store.clear(),this._evictionGeneration.clear(),this._toolIndex=void 0,this._toolOutputValidatorIndex=void 0,this._serverIdentity=``}async toolDefinition(e){let t=await this._probe(`tools/list`);if(t===void 0){this._toolIndex=void 0;return}if(this._toolIndex?.stamp!==t.stamp){let e=this._decodeListTools(t),n=new Map;if(e!==void 0)for(let t of e.tools)n.set(t.name,t);this._toolIndex={stamp:t.stamp,byName:n}}return this._toolIndex.byName.get(e)}async outputValidator(e,t){let n=await this._probe(`tools/list`);if(n===void 0){this._toolOutputValidatorIndex=void 0;return}if(this._toolOutputValidatorIndex?.stamp!==n.stamp){let e=this._decodeListTools(n)??{tools:[]},r=new Map;for(let n of e.tools){let e=t(n);e!==void 0&&r.set(n.name,e)}this._toolOutputValidatorIndex={stamp:n.stamp,byName:r}}return this._toolOutputValidatorIndex.byName.get(e)}_decodeListTools(e){try{let t=JSON.parse(e.value);if(!Array.isArray(t?.tools)||!t.tools.every(e=>typeof e==`object`&&!!e))throw TypeError(`cached tools/list document has a malformed tools array`);return t}catch(e){this._reportError(e);return}}};function yl(e){let t;try{t=JSON.stringify(e)}catch(e){throw TypeError(`cache value is not JSON-serializable: ${e instanceof Error?e.message:String(e)}`)}if(typeof t!=`string`)throw TypeError(`cache value is not JSON-serializable: it has no JSON representation`);return t}var bl=Symbol.for(`mcp.authSeamEscape`);function xl(e){if(typeof e==`object`&&e||typeof e==`function`)try{Object.defineProperty(e,bl,{value:!0,configurable:!0})}catch{}return e}function Sl(e){return(typeof e==`object`&&!!e||typeof e==`function`)&&e[bl]===!0}var Cl=-32022,wl=new Set([-32001,-32020,-32021]);function Tl(e,t){switch(e.kind){case`result`:return El(e.result,t);case`rpc-error`:return Dl(e,t);case`http-error`:return Ol(e,t);case`network-error`:return kl(e.error,t);case`auth-required`:return{kind:`error`,error:e.error};case`closed`:return t.transportKind===`stdio`?{kind:`legacy`}:kl(Error(`Connection closed during the version negotiation probe`),t);case`timeout`:return t.transportKind===`stdio`?{kind:`legacy`}:{kind:`error`,error:new X(Y.RequestTimeout,`Version negotiation probe timed out after ${e.timeoutMs}ms`,{timeout:e.timeoutMs})}}}function El(e,t){let n=wa(Ca).validateResult(`server/discover`,e);if(!n.ok)return{kind:`legacy`};let r=n.value.supportedVersions,i=t.clientModernVersions.find(e=>r.includes(e));return i===void 0?t.fallbackAvailable?{kind:`legacy`}:{kind:`error`,error:new Ui({supported:[...r],requested:t.requestedVersion})}:{kind:`modern`,version:i,discover:n.value}}function Dl(e,t){let{code:n,message:r,data:i}=e;if(n===Cl){let e=Ml(i);if(e===void 0)return{kind:`legacy`};let n=new Ui({supported:e,requested:Nl(i)??t.requestedVersion},r),a=ri(e),o=t.clientModernVersions.find(e=>a.includes(e));return o===void 0?a.length>0?{kind:`error`,error:n}:t.fallbackAvailable?{kind:`legacy`}:{kind:`error`,error:n}:{kind:`corrective`,version:o,error:n}}return wl.has(n),{kind:`legacy`}}function Ol(e,t){if(e.status===401||e.status===403){let t=e.status===403;return{kind:`error`,error:new Yr(t?Y.ClientHttpForbidden:Y.ClientHttpAuthentication,`Version negotiation failed: ${t?`the server denied access (HTTP 403)`:`the server requires authorization (HTTP 401)`}`,{status:e.status,statusText:e.statusText,text:e.body})}}if(e.status>=500)return{kind:`error`,error:new Yr(Y.EraNegotiationFailed,`Version negotiation failed: the server answered the probe with HTTP ${e.status}`,{status:e.status,statusText:e.statusText,text:e.body})};let n=Pl(e.body);return n===void 0?{kind:`legacy`}:Dl(n,t)}function kl(e,t){return t.environment===`browser`&&Al(e)?{kind:`legacy`}:{kind:`error`,error:new X(Y.EraNegotiationFailed,`Version negotiation probe failed: ${jl(e)}`,{cause:e},{cause:e})}}function Al(e){return e instanceof TypeError||e instanceof Error&&e.name===`TypeError`}function jl(e){return e instanceof Error?e.message:String(e)}function Ml(e){if(typeof e!=`object`||!e)return;let t=e.supported;if(Array.isArray(t)&&t.length!==0&&t.every(e=>typeof e==`string`))return t}function Nl(e){if(typeof e!=`object`||!e)return;let t=e.requested;return typeof t==`string`?t:void 0}function Pl(e){if(e===void 0||e===``)return;let t;try{t=JSON.parse(e)}catch{return}if(typeof t!=`object`||!t)return;let n=t.error;if(typeof n!=`object`||!n)return;let{code:r,message:i,data:a}=n;if(typeof r==`number`)return{code:r,message:typeof i==`string`?i:``,data:a}}var Fl=`legacy`;function Il(e,t){let n=e?.mode??Fl;if(n===`legacy`)return{kind:`legacy`};let r=e?.probe??{};if(typeof n==`object`){if(!ti(n.pin))throw TypeError(`versionNegotiation: { pin: '${n.pin}' } is not a modern protocol revision — pinning is for 2026-07-28 and later; omit versionNegotiation (or use mode: 'legacy') for 2025-era servers.`);return{kind:`pin`,version:n.pin,probe:r}}let i=t?ri(t):[];return{kind:`auto`,modernVersions:i.length>0?i:[...ei],fallbackAvailable:!t||ni(t).length>0,probe:r}}function Ll(){let e=globalThis;return e.window!==void 0&&e.document!==void 0?`browser`:`node`}function Rl(e){return`stderr`in e&&`pid`in e?`stdio`:`http`}var zl=class e{_pending;_probeCounter=0;_savedOnMessage;_savedOnError;_savedOnClose;_closeDelivered=!1;constructor(e){this._transport=e,this._savedOnMessage=e.onmessage,this._savedOnError=e.onerror,this._savedOnClose=e.onclose}static async open(t){let n=new e(t);t.onmessage=e=>{let t=n._pending;if(t!==void 0&&(Ma(e)||Na(e))&&e.id===t.id){n._pending=void 0,Ma(e)?t.resolve({kind:`response`,result:e.result}):t.resolve({kind:`response`,error:e.error});return}},t.onerror=e=>{n._savedOnError?.(e)},t.onclose=()=>{let e=n._pending;e!==void 0&&(n._pending=void 0,e.resolve({kind:`closed`})),n._closeDelivered=!0,n._savedOnClose?.()};try{await t.start()}catch(e){throw n.detach(),e}return n}async exchange(e,t){let n=`server-discover-probe-${++this._probeCounter}`;return new Promise(r=>{let i=!1,a=e=>{i||(i=!0,clearTimeout(o),this._pending?.id===n&&(this._pending=void 0),r(e))},o=setTimeout(()=>a({kind:`timeout`}),t);this._pending={id:n,resolve:a},this._transport.send(e(n)).catch(e=>a({kind:`send-error`,error:e}))})}detach(){if(this._pending=void 0,this._transport.onmessage=this._savedOnMessage,this._transport.onerror=this._savedOnError,this._closeDelivered&&this._savedOnClose!==void 0){let e=this._savedOnClose,t=this._transport,n=!1,r=()=>{if(!n){n=!0;return}e()};t.onclose=r,Bl.set(t,()=>{t.onclose===r&&(t.onclose=e)})}else this._transport.onclose=this._savedOnClose}release(){this.detach();let e=this._transport,t=e.start,n=!0;e.start=async function(){if(n){n=!1,e.start=t;return}return t.call(e)}}},Bl=new WeakMap;function Vl(e){let t=Bl.get(e);Bl.delete(e),t?.()}function Hl(e,t,n,r){return{jsonrpc:`2.0`,id:e,method:`server/discover`,params:{_meta:wa(t).outboundEnvelope({protocolVersion:t,clientInfo:n,clientCapabilities:r})}}}function Ul(e,t){switch(e.kind){case`response`:return e.error===void 0?{kind:`result`,result:e.result}:{kind:`rpc-error`,...e.error};case`send-error`:{let t=e.error;if(Sl(t)||t instanceof Cc||t instanceof Error&&t.name===`UnauthorizedError`)return{kind:`auth-required`,error:t};if(t instanceof Yr){let e=t.data?.text;return{kind:`http-error`,status:t.data.status,body:typeof e==`string`?e:void 0,statusText:t.data.statusText}}return{kind:`network-error`,error:t}}case`closed`:return{kind:`closed`};case`timeout`:return{kind:`timeout`,timeoutMs:t}}}async function Wl(e,t){let n=e.probe.timeoutMs??t.defaultTimeoutMs,r=Math.max(0,e.probe.maxRetries??0),i=e.kind===`pin`?[e.version]:e.modernVersions,a=e.kind===`auto`&&e.fallbackAvailable,o=await zl.open(t.transport),s=async()=>{let s=i[0],c=!1,l=r;for(;;){let r=await o.exchange(e=>Hl(e,s,t.clientInfo,t.capabilities),n);if(r.kind===`timeout`&&l>0){l--;continue}let u=Ul(r,n),d=Tl(u,{clientModernVersions:i,requestedVersion:s,fallbackAvailable:a,environment:t.environment,transportKind:t.transportKind});switch(d.kind){case`modern`:return{era:`modern`,version:d.version,discover:d.discover};case`corrective`:if(c)throw d.error;c=!0,s=d.version;continue;case`legacy`:{let n=u.kind===`closed`?`the connection closed during the server/discover probe`:void 0;if(e.kind===`pin`)throw new X(Y.EraNegotiationFailed,n===void 0?`Version negotiation failed: the server did not offer pinned protocol version ${e.version} via server/discover (no fallback in pin mode)`:`Version negotiation failed: ${n} before the server offered pinned protocol version ${e.version} (no fallback in pin mode)`);if(!e.fallbackAvailable)throw new X(Y.EraNegotiationFailed,n===void 0?`Version negotiation failed: the server gave no modern evidence and this client supports no pre-2026-07-28 protocol version to fall back to`:`Version negotiation failed: ${n} and this client supports no pre-2026-07-28 protocol version to fall back to`);if(n!==void 0&&t.disposableProbe!==!0)throw new X(Y.EraNegotiationFailed,`Version negotiation failed: ${n} (this transport probed in place — the disposable sibling probe requires the SDK's base StdioClientTransport)`);return{era:`legacy`}}case`error`:throw d.error}}},c;try{c=await s()}catch(e){throw o.detach(),e}return o.release(),c}function Gl(e){let t=Object.getPrototypeOf(e);if(t===null||!Object.prototype.hasOwnProperty.call(t,`_dispose`))return;let n=e._serverParams;return typeof n==`object`&&n&&typeof n.command==`string`?n:void 0}async function Kl(e,t,n,r){let i=t.constructor,a=new i({...n,stderr:`ignore`}),o=t.close,s=!1,c,l=new Promise((e,t)=>{c=()=>t(ql())});t.close=async function(){return s=!0,c?.(),o.call(t)};let u;try{let t=Wl(e,{...r,transport:a,transportKind:`stdio`,disposableProbe:!0});t.catch(()=>{}),u=await Promise.race([t,l])}finally{await Jl(a),t.close=o}if(s)throw ql();return u}function ql(){return new X(Y.EraNegotiationFailed,`Version negotiation failed: the transport was closed during the server/discover probe`)}async function Jl(e){try{let t=e._dispose;await(typeof t==`function`?t.call(e):e.close())}catch{}}function Yl(e){let t=e._meta?.[Ae];return Wo.Implementation(t)?t:void 0}function Xl(e,t){if(e&&typeof t==`object`&&t){if(e.type===`object`&&e.properties&&typeof e.properties==`object`){let n=t,r=e.properties;for(let e of Object.keys(r)){let t=r[e];n[e]===void 0&&Object.prototype.hasOwnProperty.call(t,`default`)&&(n[e]=t.default),n[e]!==void 0&&Xl(t,n[e])}}if(Array.isArray(e.anyOf))for(let n of e.anyOf)typeof n!=`boolean`&&Xl(n,t);if(Array.isArray(e.oneOf))for(let n of e.oneOf)typeof n!=`boolean`&&Xl(n,t)}}function Zl(e){if(!e)return{supportsFormMode:!1,supportsUrlMode:!1};let t=e.form!==void 0,n=e.url!==void 0;return{supportsFormMode:t||!t&&!n,supportsUrlMode:n}}function Ql(e){if(typeof e==`object`&&e&&(e.kind===`legacy`&&!(`supportedVersions`in e)&&!(`discover`in e)||e.kind===`modern`&&ft.safeParse(e.discover).success))return e;throw new X(Y.EraNegotiationFailed,`connect({ prior }): unrecognized prior — expected { kind: 'modern', discover } or { kind: 'legacy' }`)}var $l={"notifications/tools/list_changed":[`tools/list`],"notifications/prompts/list_changed":[`prompts/list`],"notifications/resources/list_changed":[`resources/list`,`resources/templates/list`]},eu=64,tu=class extends Qo{_serverCapabilities;_serverVersion;_capabilities;_instructions;_jsonSchemaValidator;_cache;_defaultCacheTtlMs;_listMaxPages;_listChangedDebounceTimers=new Map;_listChangedConfig;_enforceStrictCapabilities;_versionNegotiation;_supportedProtocolVersionsOption;_inputRequiredDriverConfig;_listenState=new Map;_nextListenId=0;_autoOpenedSubscription;_discoverResult;_resetConnectionState(){if(this._negotiatedProtocolVersion=void 0,this._serverCapabilities=void 0,this._serverVersion=void 0,this._instructions=void 0,this._discoverResult=void 0,this._autoOpenedSubscription=void 0,this._listenState.size>0){let e=new X(Y.ConnectionClosed,`subscriptions/listen: client reconnected or closed; subscription state from the previous connection was reset`);for(let t of this._listenState.values())t.settle({cause:`remote`,error:e})}this._listenState.clear();for(let e of this._listChangedDebounceTimers.values())clearTimeout(e);this._listChangedDebounceTimers.clear(),this._cache.resetForReconnect()}async close(){try{await super.close()}finally{this._resetConnectionState()}}constructor(e,t){super(t),this._clientInfo=e,this._capabilities=t?.capabilities?{...t.capabilities}:{},this._jsonSchemaValidator=t?.jsonSchemaValidator??new Xs,this._enforceStrictCapabilities=t?.enforceStrictCapabilities??!1,this._versionNegotiation=t?.versionNegotiation,this._supportedProtocolVersionsOption=t?.supportedProtocolVersions,this._inputRequiredDriverConfig=No(t?.inputRequired),this._cache=new vl(t?.responseCacheStore??new ml,t?.responseCacheStore!==void 0,e=>this._reportStoreError(e),t?.cachePartition??``),this._defaultCacheTtlMs=t?.defaultCacheTtlMs??0,this._listMaxPages=t?.listMaxPages??eu,t?.listChanged&&(this._listChangedConfig=t.listChanged)}buildContext(e,t){return e}_shouldDropInbound(e){if(this._negotiatedProtocolVersion!==void 0&&ti(this._negotiatedProtocolVersion)&&Aa(e))return`drop`}_outboundMetaEnvelope(){let e=this._negotiatedProtocolVersion;if(e!==void 0)return this._wireCodec().outboundEnvelope({protocolVersion:e,clientInfo:this._clientInfo,clientCapabilities:this._capabilities})}_resolveNonCompleteResult(e,t){return this._inputRequiredDriverConfig.autoFulfill?ss({getRequestHandler:e=>this._getRequestHandler(e),buildContext:e=>this.buildContext(e,void 0),sessionId:this.transport?.sessionId},this._inputRequiredDriverConfig,e,t):Promise.reject(new X(Y.UnsupportedResultType,`Unsupported result type 'input_required' for ${t.request.method}: multi-round-trip auto-fulfilment is not enabled on this instance — pass allowInputRequired: true to handle it manually, or enable inputRequired.autoFulfill`,{resultType:`input_required`,method:t.request.method}))}_setupListChangedHandlers(e){e.tools&&this._serverCapabilities?.tools?.listChanged&&this._setupListChangedHandler(`tools`,`notifications/tools/list_changed`,e.tools,async()=>(await this.listTools(void 0,{cacheMode:`refresh`})).tools),e.prompts&&this._serverCapabilities?.prompts?.listChanged&&this._setupListChangedHandler(`prompts`,`notifications/prompts/list_changed`,e.prompts,async()=>(await this.listPrompts(void 0,{cacheMode:`refresh`})).prompts),e.resources&&this._serverCapabilities?.resources?.listChanged&&this._setupListChangedHandler(`resources`,`notifications/resources/list_changed`,e.resources,async()=>(await this.listResources(void 0,{cacheMode:`refresh`})).resources)}registerCapabilities(e){if(this.transport)throw Error(`Cannot register capabilities after connecting to transport`);this._capabilities=es(this._capabilities,e)}setVersionNegotiation(e){if(this.transport)throw Error(`Cannot configure version negotiation after connecting to transport`);this._versionNegotiation=e}_wrapHandler(e,t){return e===`elicitation/create`?async(e,n)=>{let r=wa(this._negotiatedProtocolVersion),i=r.validateRequest(`elicitation/create`,e);if(!i.ok&&i.reason===`not-in-era`&&(i=r.validateInputRequest(`elicitation/create`,e)),!i.ok)throw new Q(i.reason===`not-in-era`?Z.InternalError:Z.InvalidParams,i.reason===`not-in-era`?`No wire schema for elicitation/create in the resolved era`:`Invalid elicitation request: ${i.message}`);let{params:a}=i.value;a.mode=a.mode??`form`;let{supportsFormMode:o,supportsUrlMode:s}=Zl(this._capabilities.elicitation);if(a.mode===`form`&&!o)throw new Q(Z.InvalidParams,`Client does not support form-mode elicitation requests`);if(a.mode===`url`&&!s)throw new Q(Z.InvalidParams,`Client does not support URL-mode elicitation requests`);let c=await t(e,n),l=r.validateResult(`elicitation/create`,c);if(!l.ok&&l.reason===`not-in-era`&&(l=r.validateInputResponse(`elicitation/create`,c)),!l.ok)throw new Q(l.reason===`not-in-era`?Z.InternalError:Z.InvalidParams,l.reason===`not-in-era`?`No wire schema for elicitation/create in the resolved era`:`Invalid elicitation result: ${l.message}`);let u=l.value,d=a.mode===`form`?a.requestedSchema:void 0;if(a.mode===`form`&&u.action===`accept`&&u.content&&d&&this._capabilities.elicitation?.form?.applyDefaults)try{Xl(d,u.content)}catch{}return u}:e===`sampling/createMessage`?async(e,n)=>{let r=wa(this._negotiatedProtocolVersion),i=r.validateRequest(`sampling/createMessage`,e);if(!i.ok&&i.reason===`not-in-era`&&(i=r.validateInputRequest(`sampling/createMessage`,e)),!i.ok)throw new Q(i.reason===`not-in-era`?Z.InternalError:Z.InvalidParams,i.reason===`not-in-era`?`No wire schema for sampling/createMessage in the resolved era`:`Invalid sampling request: ${i.message}`);let{params:a}=i.value,o=await t(e,n),s=!!(a.tools||a.toolChoice),c=r.samplingResultVariant(s,o);if(!c.ok&&c.reason===`not-in-era`&&(c=r.validateInputResponse(`sampling/createMessage`,o)),!c.ok)throw new Q(c.reason===`not-in-era`?Z.InternalError:Z.InvalidParams,c.reason===`not-in-era`?`No result schema for sampling/createMessage in the resolved era`:`Invalid sampling result: ${c.message}`);return c.value}:t}assertCapability(e,t){if(!this._serverCapabilities?.[e])throw new X(Y.CapabilityNotSupported,`Server does not support ${e} (required for ${t})`)}async connect(e,t){if(t?.prior!=null)return this._connectFromPrior(e,Ql(t.prior),t);let n=Il(this._versionNegotiation,this._supportedProtocolVersionsOption);return n.kind===`legacy`?this._connectPlainLegacy(e,t):this._connectNegotiated(e,n,t)}async _connectPlainLegacy(e,t){if(await super.connect(e),e.sessionId!==void 0){let t=this._negotiatedProtocolVersion;t!==void 0&&e.setProtocolVersion?.(t);return}this._resetConnectionState(),await this._legacyHandshake(e,t)}async _legacyHandshake(e,t){let n=ni(this._supportedProtocolVersions);try{let r=n[0];if(r===void 0)throw new X(Y.EraNegotiationFailed,`Cannot run the initialize handshake: supportedProtocolVersions contains no pre-2026-07-28 protocol version`);let i=await this.request({method:`initialize`,params:{protocolVersion:r,capabilities:this._capabilities,clientInfo:this._clientInfo}},t);if(i===void 0)throw Error(`Server sent invalid initialize result: ${i}`);if(!n.includes(i.protocolVersion))throw Error(`Server's protocol version is not supported: ${i.protocolVersion}`);this._serverCapabilities=i.capabilities,this._serverVersion=i.serverInfo,this._cache.setServerIdentity(this._deriveServerIdentity(e)),e.setProtocolVersion&&e.setProtocolVersion(i.protocolVersion),this._instructions=i.instructions,await this.notification({method:`notifications/initialized`}),this._negotiatedProtocolVersion=i.protocolVersion,this._listChangedConfig&&this._setupListChangedHandlers(this._listChangedConfig)}catch(e){throw this.close(),e}}async _connectNegotiated(e,t,n){if(e.sessionId!==void 0){await super.connect(e);let t=this._negotiatedProtocolVersion;t!==void 0&&e.setProtocolVersion&&e.setProtocolVersion(t);return}this._resetConnectionState();let r;try{let i=Rl(e),a={clientInfo:this._clientInfo,capabilities:this._capabilities,environment:Ll(),defaultTimeoutMs:n?.timeout??6e4},o=i===`stdio`?Gl(e):void 0;r=o===void 0?await Wl(t,{...a,transport:e,transportKind:i}):await Kl(t,e,o,a)}catch(t){throw await e.close().catch(()=>{}),Vl(e),t}if(Vl(e),await super.connect(e),r.era===`legacy`){await this._legacyHandshake(e,n);return}if(this._serverCapabilities=r.discover.capabilities,this._serverVersion=Yl(r.discover),this._cache.setServerIdentity(this._deriveServerIdentity(e)),this._instructions=r.discover.instructions,this._discoverResult=r.discover,this._negotiatedProtocolVersion=r.version,e.setProtocolVersion&&e.setProtocolVersion(r.version),this._listChangedConfig){let e=this._listChangedConfig,t=this._serverCapabilities,r={...e.tools&&t?.tools?.listChanged&&{tools:e.tools},...e.prompts&&t?.prompts?.listChanged&&{prompts:e.prompts},...e.resources&&t?.resources?.listChanged&&{resources:e.resources}},i=!0;try{this._setupListChangedHandlers(r)}catch(e){i=!1,this.onerror?.(e instanceof Error?e:Error(String(e)))}let a=i?{...r.tools&&{toolsListChanged:!0},...r.prompts&&{promptsListChanged:!0},...r.resources&&{resourcesListChanged:!0}}:{};if(Object.keys(a).length>0){let e=new AbortController,t=()=>e.abort(n?.signal?.reason);n?.signal?.aborted&&t(),n?.signal?.addEventListener(`abort`,t);try{this._autoOpenedSubscription=await this.listen(a,{timeout:n?.timeout,signal:e.signal})}catch(e){if(n?.signal?.aborted)throw await this.close().catch(()=>{}),e;this.onerror?.(e instanceof Error?e:Error(String(e)))}finally{n?.signal?.removeEventListener(`abort`,t)}}}}async _connectFromPrior(e,t,n){if(t.kind===`legacy`)return this._connectPlainLegacy(e,n);let r=t.discover;this._resetConnectionState();let i=this._supportedProtocolVersionsOption,a=(i&&ri(i).length>0?ri(i):ei).find(e=>r.supportedVersions.includes(e));if(a===void 0)throw new X(Y.EraNegotiationFailed,`connect({ prior }) with a modern verdict requires a 2026-07-28+ mutual protocol version; the supplied DiscoverResult and this client's supportedProtocolVersions have no modern overlap. For a server known to be legacy, pass prior: { kind: 'legacy' } to skip the probe and initialize directly, or use versionNegotiation: { mode: 'auto' } to re-probe with legacy fallback.`);if(await super.connect(e),this._discoverResult=r,this._serverCapabilities=r.capabilities,this._serverVersion=Yl(r),this._cache.setServerIdentity(this._deriveServerIdentity(e)),this._instructions=r.instructions,this._negotiatedProtocolVersion=a,e.setProtocolVersion?.(a),this._listChangedConfig)try{this._setupListChangedHandlers(this._listChangedConfig)}catch(e){this.onerror?.(e instanceof Error?e:Error(String(e)))}}getServerCapabilities(){return this._serverCapabilities}getServerVersion(){return this._serverVersion}_deriveServerIdentity(e){let t=this._serverVersion;return t===void 0?e.sessionId??`anonymous:${Date.now()}-${Math.random().toString(36).slice(2)}`:`${t.name}@${t.version}`}getNegotiatedProtocolVersion(){return this._negotiatedProtocolVersion}getProtocolEra(){let e=this._negotiatedProtocolVersion;if(e!==void 0)return ti(e)?`modern`:`legacy`}getInstructions(){return this._instructions}getDiscoverResult(){return this._discoverResult}assertCapabilityForMethod(e){switch(e){case`logging/setLevel`:if(!this._serverCapabilities?.logging)throw new X(Y.CapabilityNotSupported,`Server does not support logging (required for ${e})`);break;case`prompts/get`:case`prompts/list`:if(!this._serverCapabilities?.prompts)throw new X(Y.CapabilityNotSupported,`Server does not support prompts (required for ${e})`);break;case`resources/list`:case`resources/templates/list`:case`resources/read`:case`resources/subscribe`:case`resources/unsubscribe`:if(!this._serverCapabilities?.resources)throw new X(Y.CapabilityNotSupported,`Server does not support resources (required for ${e})`);if(e===`resources/subscribe`&&!this._serverCapabilities.resources.subscribe)throw new X(Y.CapabilityNotSupported,`Server does not support resource subscriptions (required for ${e})`);break;case`tools/call`:case`tools/list`:if(!this._serverCapabilities?.tools)throw new X(Y.CapabilityNotSupported,`Server does not support tools (required for ${e})`);break;case`completion/complete`:if(!this._serverCapabilities?.completions)throw new X(Y.CapabilityNotSupported,`Server does not support completions (required for ${e})`)}}assertNotificationCapability(e){if(e===`notifications/roots/list_changed`&&!this._capabilities.roots?.listChanged)throw new X(Y.CapabilityNotSupported,`Client does not support roots list changed notifications (required for ${e})`)}assertRequestHandlerCapability(e){switch(e){case`sampling/createMessage`:if(!this._capabilities.sampling)throw new X(Y.CapabilityNotSupported,`Client does not support sampling capability (required for ${e})`);break;case`elicitation/create`:if(!this._capabilities.elicitation)throw new X(Y.CapabilityNotSupported,`Client does not support elicitation capability (required for ${e})`);break;case`roots/list`:if(!this._capabilities.roots)throw new X(Y.CapabilityNotSupported,`Client does not support roots capability (required for ${e})`)}}async ping(e){return this.request({method:`ping`},e)}async discover(e){let t=await this._requestWithSchema({method:`server/discover`},ft,e);return this._discoverResult=t,t}async complete(e,t){return this.request({method:`completion/complete`,params:e},t)}async setLoggingLevel(e,t){return this.request({method:`logging/setLevel`,params:{level:e}},t)}async getPrompt(e,t){return this.request({method:`prompts/get`,params:e},t)}async listPrompts(e,t){if(!this._serverCapabilities?.prompts&&!this._enforceStrictCapabilities)return console.debug(`Client.listPrompts() called but server does not advertise prompts capability - returning empty list`),{prompts:[]};if(e?.cursor!==void 0)return this.request({method:`prompts/list`,params:e},t);let n=await this._serveFromCache(`prompts/list`,void 0,t);return n===void 0?this._listAllPages(`prompts/list`,e,t,e=>e.prompts):n}async listResources(e,t){if(!this._serverCapabilities?.resources&&!this._enforceStrictCapabilities)return console.debug(`Client.listResources() called but server does not advertise resources capability - returning empty list`),{resources:[]};if(e?.cursor!==void 0)return this.request({method:`resources/list`,params:e},t);let n=await this._serveFromCache(`resources/list`,void 0,t);return n===void 0?this._listAllPages(`resources/list`,e,t,e=>e.resources):n}async listResourceTemplates(e,t){if(!this._serverCapabilities?.resources&&!this._enforceStrictCapabilities)return console.debug(`Client.listResourceTemplates() called but server does not advertise resources capability - returning empty list`),{resourceTemplates:[]};if(e?.cursor!==void 0)return this.request({method:`resources/templates/list`,params:e},t);let n=await this._serveFromCache(`resources/templates/list`,void 0,t);return n===void 0?this._listAllPages(`resources/templates/list`,e,t,e=>e.resourceTemplates):n}async _listAllPages(e,t,n,r,i){let a=n?.cacheMode===`bypass`,o=this._cache.captureGeneration(e),s=await this.request({method:e,...t&&{params:{...t}}},n),c=s.nextCursor,l=s,u=1;for(;c!==void 0;){if(this._listMaxPages!==0&&u>=this._listMaxPages)throw new X(Y.ListPaginationExceeded,`${e}: exceeded listMaxPages (${this._listMaxPages}); server pagination did not terminate`,{method:e,listMaxPages:this._listMaxPages});let i=await this.request({method:e,params:{...t,cursor:c}},n);if(i.nextCursor===c&&JSON.stringify(r(i))===JSON.stringify(r(l)))break;r(s).push(...r(i)),l=i,c=i.nextCursor,u++}return delete s.nextCursor,i?.(s),a||await this._cache.write(e,s,o,this._freshness(s)),s}_freshness(e,t){let n=e,r=typeof n.ttlMs==`number`?n.ttlMs:this._defaultCacheTtlMs,i=n.cacheScope===`public`?`public`:`private`;return{expiresAt:this._cache.now()+Math.min(Math.max(0,r),_l),scope:i,params:t}}async _serveFromCache(e,t,n){if(n?.cacheMode===`bypass`||n?.cacheMode===`refresh`)return;let r=await this._cache.read(e,t).catch(e=>void this._reportStoreError(e));if(r!==void 0){if(n?.signal?.aborted){let e=n.signal.reason;throw e instanceof X?e:new X(Y.RequestTimeout,String(e))}return r.value}}_reportStoreError(e){this.onerror?.(e instanceof Error?e:Error(String(e)))}_compileOutputValidator(e){if(e.outputSchema)try{return{ok:!0,validator:this._jsonSchemaValidator.getValidator(e.outputSchema)}}catch(e){return{ok:!1,compileError:e}}}async _resolveXMcpHeaderScan(e,t){let n=t??await this._cache.toolDefinition(e);return n===void 0?void 0:Va(n.inputSchema)}async readResource(e,t){let n=await this._serveFromCache(`resources/read`,e.uri,t);if(n!==void 0)return n;let r=this._cache.captureGeneration(`resources/read`,e.uri),i=await this.request({method:`resources/read`,params:e},t);if(t?.cacheMode!==`bypass`){let n=this._freshness(i,e.uri);n.expiresAt>this._cache.now()?await this._cache.write(`resources/read`,i,r,n):t?.cacheMode===`refresh`&&await this._cache.evictKey(`resources/read`,e.uri)}return i}async subscribeResource(e,t){return this.request({method:`resources/subscribe`,params:e},t)}async unsubscribeResource(e,t){return this.request({method:`resources/unsubscribe`,params:e},t)}async listen(e,t){if(this.transport===void 0)throw new X(Y.NotConnected,`Not connected`);let n=this._negotiatedProtocolVersion;if(n===void 0||!ti(n))throw new X(Y.MethodNotSupportedByProtocolVersion,`subscriptions/listen requires a 2026-07-28-era connection (negotiated: ${n??`none`}). On a 2025-era connection, change notifications are delivered unsolicited: use ClientOptions.listChanged and resources/subscribe instead.`,{method:`subscriptions/listen`,protocolVersion:n});if(t?.signal?.aborted){let e=t.signal.reason;throw e instanceof X?e:new X(Y.RequestTimeout,String(e))}let r=new AbortController,i=`listen:${this._nextListenId++}`,a=`opening`,o,s,c,l,u=new Promise((e,t)=>{c=e,l=t}),d,f=new Promise(e=>{d=e}),p=e=>{if(a===`closed`)return;let n=a===`opening`;if(o!==void 0&&(clearTimeout(o),o=void 0),`ack`in e){a=`open`,c(e.ack);return}a=`closed`,s!==void 0&&t?.signal?.removeEventListener(`abort`,s),this._listenState.delete(i),r.abort(),d(e.cause),n&&l(e.error??new X(Y.ConnectionClosed,`subscriptions/listen closed before the server acknowledged`))},m=async()=>{r.abort(),await this.notification({method:`notifications/cancelled`,params:{requestId:i}}).catch(()=>{})},h=async()=>{a!==`closed`&&(p({cause:`local`}),await m())};this._listenState.set(i,{settle:p});let g=t?.timeout??6e4;if(o=setTimeout(()=>{p({cause:`remote`,error:new X(Y.RequestTimeout,`subscriptions/listen ack timed out`,{timeout:g})}),m().catch(()=>{})},g),t?.signal){let e=t.signal;s=()=>{if(a===`closed`)return;let t=e.reason;p({cause:`local`,error:t instanceof Error?t:Error(String(t??`Aborted`))}),m().catch(()=>{})},e.addEventListener(`abort`,s,{once:!0})}let _={jsonrpc:`2.0`,id:i,method:`subscriptions/listen`,params:{_meta:{...this._outboundMetaEnvelope()},notifications:e}},v=e=>{p({cause:`remote`,error:e instanceof Error?e:Error(String(e))})};try{this.transport.send(_,{requestSignal:r.signal,onRequestStreamEnd:()=>p({cause:`remote`,error:Error(`subscriptions/listen: stream ended`)})}).catch(v)}catch(e){v(e)}return{honoredFilter:await u,close:h,closed:f}}get autoOpenedSubscription(){return this._autoOpenedSubscription}_onnotification(e,t){let n=Object.hasOwn($l,e.method)?$l[e.method]:void 0;if(e.method===`notifications/resources/updated`){let t=e.params?.uri;typeof t==`string`&&this._cache.evictKey(`resources/read`,t)}else if(n!==void 0)for(let e of n)this._cache.evict(e);if(e.method===`notifications/subscriptions/acknowledged`){let t=e.params?._meta?.[Me],n=typeof t==`string`?this._listenState.get(t):void 0;if(n!==void 0){let t=this._wireCodec().validateNotification(`notifications/subscriptions/acknowledged`,e);n.settle({ack:t.ok?t.value.params.notifications:{}});return}}if(e.method===`notifications/cancelled`){let t=e.params?.requestId,n=typeof t==`string`?this._listenState.get(t):void 0;if(n!==void 0){n.settle({cause:`remote`,error:Error(`subscriptions/listen: server cancelled the subscription`)});return}}super._onnotification(e,t)}_onresponse(e){let t=e.id,n=typeof t==`string`?this._listenState.get(t):void 0;if(n!==void 0){Na(e)?n.settle({cause:`remote`,error:Q.fromError(e.error.code,e.error.message,e.error.data)}):n.settle({cause:`graceful`,error:new X(Y.ConnectionClosed,`subscriptions/listen: server closed the subscription gracefully before acknowledging`)});return}super._onresponse(e)}_onclose(){if(this._listenState.size>0){let e=new X(Y.ConnectionClosed,`Connection closed`);for(let t of this._listenState.values())t.settle({cause:`remote`,error:e});this._listenState.clear()}super._onclose()}async callTool(e,t){let n=this.getProtocolEra()===`modern`&&Ll()!==`browser`,r=async()=>{if(!n)return t;let r;try{r=await this._resolveXMcpHeaderScan(e.name,t?.toolDefinition)}catch(e){this._reportStoreError(e)}if(!r?.valid||r.declarations.length===0)return t;let i=Qa(r.declarations,e.arguments);return Object.keys(i).length===0?t:{...t,headers:{...t?.headers,...i}}},i=t?.toolDefinition===void 0?await this._cache.outputValidator(e.name,e=>this._compileOutputValidator(e)).catch(e=>void this._reportStoreError(e)):this._compileOutputValidator(t.toolDefinition),a=()=>{if(i===void 0||i.ok)return;let t=i.compileError,n=(t instanceof Error?t.message:String(t)).slice(0,200);throw new Q(Z.InvalidParams,`Tool '${e.name}' has an invalid outputSchema: ${n}`)};a();let o;try{o=await this.request({method:`tools/call`,params:e},await r())}catch(s){let c=s instanceof Q&&s.code===-32020;if(!n||!c||t?.toolDefinition!==void 0)throw s;let l={signal:t?.signal,timeout:t?.timeout,cacheMode:`refresh`};await this._cache.evict(`tools/list`),await this.listTools(void 0,l).catch(e=>this._reportStoreError(e)),i=await this._cache.outputValidator(e.name,e=>this._compileOutputValidator(e)).catch(e=>void this._reportStoreError(e)),a(),o=await this.request({method:`tools/call`,params:e},await r())}let s=i!==void 0&&i.ok?i.validator:void 0;if(s){if(o.structuredContent===void 0&&!o.isError)throw new Q(Z.InvalidRequest,`Tool ${e.name} has an output schema but did not return structured content`);if(o.structuredContent!==void 0&&!o.isError)try{let e=s(o.structuredContent);if(!e.valid)throw new Q(Z.InvalidParams,`Structured content does not match the tool's output schema: ${e.errorMessage}`)}catch(e){throw e instanceof Q?e:new Q(Z.InvalidParams,`Failed to validate structured content: ${e instanceof Error?e.message:String(e)}`)}}return o}async listTools(e,t){if(!this._serverCapabilities?.tools&&!this._enforceStrictCapabilities)return console.debug(`Client.listTools() called but server does not advertise tools capability - returning empty list`),{tools:[]};if(e?.cursor!==void 0){let n=await this.request({method:`tools/list`,params:e},t);return this._excludeInvalidXMcpHeaderTools(n),n}let n=await this._serveFromCache(`tools/list`,void 0,t);return n===void 0?this._listAllPages(`tools/list`,e,t,e=>e.tools,e=>this._excludeInvalidXMcpHeaderTools(e)):n}_excludeInvalidXMcpHeaderTools(e){if(this.getProtocolEra()!==`modern`||!this.transport||Rl(this.transport)===`stdio`)return;let t=e.tools.filter(e=>{let t=Va(e.inputSchema);return t.valid?!0:(console.warn(`[mcp-sdk] excluding tool '${e.name}' from tools/list: invalid x-mcp-header declaration — ${t.reason}`),!1)});t.length!==e.tools.length&&(e.tools=t)}_setupListChangedHandler(e,t,n,r){let i=no(bn,n);if(!i.success)throw Error(`Invalid ${e} listChanged options: ${i.error.message}`);if(typeof n.onChanged!=`function`)throw TypeError(`Invalid ${e} listChanged options: onChanged must be a function`);let{autoRefresh:a,debounceMs:o}=i.data,{onChanged:s}=n,c=async()=>{if(!a){s(null,null);return}try{s(null,await r())}catch(e){s(e instanceof Error?e:Error(String(e)),null)}};this.setNotificationHandler(t,()=>{if(o){let t=this._listChangedDebounceTimers.get(e);t&&clearTimeout(t);let n=setTimeout(c,o);this._listChangedDebounceTimers.set(e,n)}else c()})}async sendRootsListChanged(){return this.notification({method:`notifications/roots/list_changed`})}};function nu(e){return/(?:^|,)\s*dpop(?:\s|$|,)/i.test(e)}function ru(e){if(e.status!==401)return!1;let t=e.headers.get(`www-authenticate`)??``;return nu(t)&&/use_dpop_nonce/i.test(t)}var iu=(e,t)=>n=>{let r=typeof e==`function`?e:()=>e;return async(e,i)=>{let a=(i?.method??`GET`).toUpperCase(),o=new URL(e.toString()),s=await r();if(!s)return n(e,i);let c=async()=>{let r=await t();if(!r)return n(e,i);let c=new Headers(i?.headers),l=await s.buildProof({htm:a,htu:o,accessToken:r});return c.set(`Authorization`,`DPoP ${r}`),c.set(`DPoP`,l),n(e,{...i,headers:c})},l=await c();return ru(l)&&l.headers.has(`dpop-nonce`)&&(s.observeNonce(l,o),await l.text?.().catch(()=>{}),l=await c()),s.observeNonce(l,o),l}},au=e=>iu(async()=>{try{return await e.dpop?.()}catch(e){throw xl(e)}},async()=>{let t;try{t=await e.tokens()}catch(e){throw xl(e)}return t?.token_type?.toLowerCase()===`dpop`?t.access_token:void 0});(class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.SseError`})}static[Symbol.hasInstance](e){return Kr(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Kr(this,e)}constructor(e,t,n){super(`SSE error: ${t}`),this.code=e,this.event=n,Gr(this,new.target)}});var ou=1,su={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2},cu=new Set([`authorization`,`dpop`,`content-type`,`mcp-protocol-version`,`mcp-method`,`mcp-name`,`mcp-session-id`]);function lu(e,t){if(typeof AbortSignal.any==`function`)return AbortSignal.any([e,t]);let n=new AbortController;if(e.aborted)return n.abort(e.reason),n.signal;if(t.aborted)return n.abort(t.reason),n.signal;let r=()=>{e.removeEventListener(`abort`,i),t.removeEventListener(`abort`,a)};function i(){r(),n.abort(e.reason)}function a(){r(),n.abort(t.reason)}return e.addEventListener(`abort`,i,{once:!0}),t.addEventListener(`abort`,a,{once:!0}),n.signal}var uu=class{_abortController;_url;_resourceMetadataUrl;_scope;_requestInit;_authProvider;_oauthProvider;_skipIssuerMetadataValidation;_fetch;_fetchWithInit;_sessionId;_reconnectionOptions;_protocolVersion;_onInsufficientScope;_maxStepUpRetries;_serverRetryMs;_reconnectionScheduler;_cancelReconnection;onclose;onerror;onmessage;hasPerRequestStream=!0;constructor(e,t){this._url=e,this._resourceMetadataUrl=void 0,this._scope=void 0,this._requestInit=t?.requestInit,this._skipIssuerMetadataValidation=t?.skipIssuerMetadataValidation,this._fetch=t?.fetch,bc(t?.authProvider)?(this._oauthProvider=t.authProvider,this._authProvider=Sc(t.authProvider,{skipIssuerMetadataValidation:t.skipIssuerMetadataValidation}),t.authProvider.dpop&&(this._fetch=au(t.authProvider)(t.fetch??fetch))):this._authProvider=t?.authProvider,this._fetchWithInit=fs(t?.fetch,t?.requestInit),this._sessionId=t?.sessionId,this._protocolVersion=t?.protocolVersion,this._reconnectionOptions=t?.reconnectionOptions??su,this._reconnectionScheduler=t?.reconnectionScheduler,this._onInsufficientScope=t?.onInsufficientScope??`reauthorize`,this._maxStepUpRetries=Math.max(0,t?.maxStepUpRetries??ou)}async _stepUpAuthorize(e,t){try{return await this._stepUpAuthorizeInner(e,t)}catch(e){throw xl(e)}}async _stepUpAuthorizeInner(e,t){if(this._onInsufficientScope===`throw`||!this._oauthProvider)throw new _c({requiredScope:e.scope,resourceMetadataUrl:e.resourceMetadataUrl,errorDescription:e.errorDescription});if(t>=this._maxStepUpRetries)throw new Yr(Y.ClientHttpForbidden,`Server returned 403 insufficient_scope after step-up re-authorization (retry limit ${this._maxStepUpRetries} reached)`,{status:403,statusText:e.statusText??`Forbidden`,text:e.text});e.resourceMetadataUrl&&(this._resourceMetadataUrl=e.resourceMetadataUrl);let n=await this._oauthProvider.tokens(),r=Ec(this._scope,n?.scope,e.scope);this._scope=r;let i=Dc(r,n?.scope);return Uc(this._oauthProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:r,forceReauthorization:i,fetchFn:this._fetchWithInit,skipIssuerMetadataValidation:this._skipIssuerMetadataValidation})}async _commonHeaders(){let e=new Headers(this._requestInit?.headers||void 0),t;try{t=await this._authProvider?.token()}catch(e){throw xl(e)}return t&&e.set(`Authorization`,`Bearer ${t}`),this._sessionId&&e.set(`mcp-session-id`,this._sessionId),this._protocolVersion&&e.set(`mcp-protocol-version`,this._protocolVersion),e}_applyBodyDerivedHeaders(e,t){if(Array.isArray(t)||!Aa(t))return;let n=t.params?._meta?.[Oe];if(typeof n!=`string`)return;e.set(`mcp-protocol-version`,n),e.set(`mcp-method`,t.method);let r=eo(t.method,t.params);r?.value!==void 0&&e.set(`mcp-name`,Xa(r.value))}_isModernEnvelopedRequest(e){if(Array.isArray(e)||!Aa(e))return!1;let t=e.params?._meta?.[Oe];return typeof t==`string`&&ti(t)}async _startOrAuthSse(e,t=!1,n=0){let{resumptionToken:r,requestSignal:i}=e,a=()=>this._abortController?.signal.aborted===!0||i?.aborted===!0;try{let a=await this._commonHeaders(),o=[...a.get(`accept`)?.split(`,`).map(e=>e.trim().toLowerCase())??[],`text/event-stream`];a.set(`accept`,[...new Set(o)].join(`, `)),r&&a.set(`last-event-id`,r);let s=this._abortController?.signal,c=i!==void 0&&s!==void 0?lu(s,i):i??s,l=await(this._fetch??fetch)(this._url,{...this._requestInit,method:`GET`,headers:a,signal:c});if(!l.ok){if(l.status===401&&this._authProvider){if(l.headers.has(`www-authenticate`)){let{resourceMetadataUrl:e,scope:t}=Yc(l);this._resourceMetadataUrl=e,this._scope=Ec(this._scope,t)}if(this._authProvider.onUnauthorized&&!t){try{await this._authProvider.onUnauthorized({response:l,serverUrl:this._url,fetchFn:this._fetchWithInit})}catch(e){throw xl(e)}return await l.text?.().catch(()=>{}),this._startOrAuthSse(e,!0,n)}throw await l.text?.().catch(()=>{}),xl(t?new Yr(Y.ClientHttpAuthentication,`Server returned 401 after re-authentication`,{status:401,statusText:l.statusText}):new Cc)}if(l.status===403){let{resourceMetadataUrl:r,scope:i,error:a,errorDescription:o}=Yc(l);if(a===`insufficient_scope`){let a=await l.text?.().catch(()=>null);if(await this._stepUpAuthorize({scope:i,resourceMetadataUrl:r,errorDescription:o,statusText:l.statusText,text:a},n)!==`AUTHORIZED`)throw xl(new Cc);return this._startOrAuthSse(e,t,n+1)}}if(await l.text?.().catch(()=>{}),l.status===405){e.onRequestStreamEnd?.();return}throw new Yr(Y.ClientHttpFailedToOpenStream,`Failed to open SSE stream: ${l.statusText}`,{status:l.status,statusText:l.statusText})}this._handleSseStream(l.body,e,!0)}catch(e){throw a()||this.onerror?.(e),e}}_getNextReconnectionDelay(e){if(this._serverRetryMs!==void 0)return this._serverRetryMs;let t=this._reconnectionOptions.initialReconnectionDelay,n=this._reconnectionOptions.reconnectionDelayGrowFactor,r=this._reconnectionOptions.maxReconnectionDelay;return Math.min(t*n**+e,r)}_scheduleReconnection(e,t=0){let n=this._reconnectionOptions.maxRetries;if(t>=n){this.onerror?.(Error(`Maximum reconnection attempts (${n}) exceeded.`)),e.onRequestStreamEnd?.();return}let r=this._getNextReconnectionDelay(t),i=()=>{this._cancelReconnection=void 0,!(this._abortController?.signal.aborted||e.requestSignal?.aborted)&&this._startOrAuthSse(e).catch(n=>{if(!(this._abortController?.signal.aborted||e.requestSignal?.aborted)){this.onerror?.(Error(`Failed to reconnect SSE stream: ${n instanceof Error?n.message:String(n)}`));try{this._scheduleReconnection(e,t+1)}catch(e){this.onerror?.(e instanceof Error?e:Error(String(e)))}}})};if(this._reconnectionScheduler){let e=this._reconnectionScheduler(i,r,t);this._cancelReconnection=typeof e==`function`?e:void 0}else{let e=setTimeout(i,r);this._cancelReconnection=()=>clearTimeout(e)}}_handleSseStream(e,t,n){if(!e){t.onRequestStreamEnd?.();return}let{onresumptiontoken:r,replayMessageId:i,requestSignal:a,onRequestStreamEnd:o}=t,s=()=>this._abortController?.signal.aborted===!0||a?.aborted===!0,c,l=!1,u=!1;(async()=>{try{let t=e.pipeThrough(new TextDecoderStream).pipeThrough(new dc({onRetry:e=>{this._serverRetryMs=e}})).getReader();for(;;){let{value:e,done:n}=await t.read();if(n)break;if(e.id&&(c=e.id,l=!0,r?.(e.id)),e.data&&(!e.event||e.event===`message`))try{let t=qe.parse(JSON.parse(e.data));(Ma(t)||Na(t))&&(u=!0,i!==void 0&&(t.id=i)),this.onmessage?.(t)}catch(e){this.onerror?.(e)}}(n||l)&&!u&&this._abortController&&!s()?this._scheduleReconnection({resumptionToken:c,onresumptiontoken:r,replayMessageId:i,requestSignal:a,onRequestStreamEnd:o},0):s()||o?.()}catch(e){if(s())return;if(this.onerror?.(Error(`SSE stream disconnected: ${e}`)),(n||l)&&!u&&this._abortController&&!s())try{this._scheduleReconnection({resumptionToken:c,onresumptiontoken:r,replayMessageId:i,requestSignal:a,onRequestStreamEnd:o},0)}catch(e){this.onerror?.(Error(`Failed to reconnect: ${e instanceof Error?e.message:String(e)}`)),o?.()}else o?.()}})()}async start(){if(this._abortController)throw Error(`StreamableHTTPClientTransport already started! If using Client class, note that connect() calls start() automatically.`);this._abortController=new AbortController}async finishAuth(e,t){if(!this._oauthProvider)throw new Cc(`finishAuth requires an OAuthClientProvider`);let{authorizationCode:n,iss:r}=await Oc(e,t,this._oauthProvider,this._url,{fetchFn:this._fetchWithInit,resourceMetadataUrl:this._resourceMetadataUrl});if(await Uc(this._oauthProvider,{serverUrl:this._url,authorizationCode:n,iss:r,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit,skipIssuerMetadataValidation:this._skipIssuerMetadataValidation})!==`AUTHORIZED`)throw new Cc(`Failed to authorize`)}async close(){try{this._cancelReconnection?.()}finally{this._cancelReconnection=void 0,this._abortController?.abort(),this.onclose?.()}}async send(e,t){return this._send(e,t,!1)}async _send(e,t,n,r=0){try{let{resumptionToken:i,onresumptiontoken:a}=t||{};if(i){this._startOrAuthSse({resumptionToken:i,replayMessageId:Aa(e)?e.id:void 0,requestSignal:t?.requestSignal}).catch(e=>this.onerror?.(e));return}let o=await this._commonHeaders();this._applyBodyDerivedHeaders(o,e);let s=Array.isArray(e)?e.some(e=>Fa(e)):Fa(e);if(s&&o.delete(`mcp-session-id`),t?.headers!==void 0)for(let[e,n]of Object.entries(t.headers))cu.has(e.toLowerCase())||o.set(e,n);o.set(`content-type`,`application/json`);let c=[...o.get(`accept`)?.split(`,`).map(e=>e.trim().toLowerCase())??[],`application/json`,`text/event-stream`];o.set(`accept`,[...new Set(c)].join(`, `));let l=this._abortController?.signal,u=t?.requestSignal!==void 0&&l!==void 0?lu(l,t.requestSignal):t?.requestSignal??l,d={...this._requestInit,method:`POST`,headers:o,body:JSON.stringify(e),signal:u},f=await(this._fetch??fetch)(this._url,d);if(s&&f.ok&&(this._sessionId=f.headers.get(`mcp-session-id`)||void 0),!f.ok){if(f.status===401&&this._authProvider){if(f.headers.has(`www-authenticate`)){let{resourceMetadataUrl:e,scope:t}=Yc(f);this._resourceMetadataUrl=e,this._scope=Ec(this._scope,t)}if(this._authProvider.onUnauthorized&&!n){try{await this._authProvider.onUnauthorized({response:f,serverUrl:this._url,fetchFn:this._fetchWithInit})}catch(e){throw xl(e)}return await f.text?.().catch(()=>{}),this._send(e,t,!0,r)}throw await f.text?.().catch(()=>{}),xl(n?new Yr(Y.ClientHttpAuthentication,`Server returned 401 after re-authentication`,{status:401,statusText:f.statusText}):new Cc)}let i=await f.text?.().catch(()=>null);if(f.status===403){let{resourceMetadataUrl:a,scope:o,error:s,errorDescription:c}=Yc(f);if(s===`insufficient_scope`){if(await this._stepUpAuthorize({scope:o,resourceMetadataUrl:a,errorDescription:c,statusText:f.statusText,text:i},r)!==`AUTHORIZED`)throw xl(new Cc);return this._send(e,t,n,r+1)}}if(f.status===400&&typeof i==`string`&&this._isModernEnvelopedRequest(e))try{let t=qe.parse(JSON.parse(i)),n=(Array.isArray(e)?e:[e]).filter(e=>Aa(e));if(Na(t)&&n.some(e=>e.id===t.id)){this.onmessage?.(t);return}}catch{}throw new Yr(Y.ClientHttpNotImplemented,`Error POSTing to endpoint: ${i}`,{status:f.status,statusText:f.statusText,text:i})}if(f.status===202){await f.text?.().catch(()=>{}),Ia(e)&&this._startOrAuthSse({resumptionToken:void 0}).catch(e=>this.onerror?.(e));return}let p=(Array.isArray(e)?e:[e]).some(e=>`method`in e&&`id`in e&&e.id!==void 0),m=f.headers.get(`content-type`),h=us(m);if(p){if(h===`text/event-stream`)this._handleSseStream(f.body,{onresumptiontoken:a,requestSignal:t?.requestSignal,onRequestStreamEnd:t?.onRequestStreamEnd},!1);else if(h===`application/json`){let e=await f.json(),t=Array.isArray(e)?e.map(e=>qe.parse(e)):[qe.parse(e)];for(let e of t)this.onmessage?.(e)}else throw await f.text?.().catch(()=>{}),new X(Y.ClientHttpUnexpectedContent,`Unexpected content type: ${m}`,{contentType:m})}else await f.text?.().catch(()=>{})}catch(e){throw t?.requestSignal?.aborted!==!0&&this.onerror?.(e),e}}get sessionId(){return this._sessionId}async terminateSession(){if(this._sessionId)try{let e=await this._commonHeaders(),t={...this._requestInit,method:`DELETE`,headers:e,signal:this._abortController?.signal},n=await(this._fetch??fetch)(this._url,t);if(await n.text?.().catch(()=>{}),!n.ok&&n.status!==405)throw new Yr(Y.ClientHttpFailedToTerminateSession,`Failed to terminate session: ${n.statusText}`,{status:n.status,statusText:n.statusText});this._sessionId=void 0}catch(e){throw this.onerror?.(e),e}}setProtocolVersion(e){this._protocolVersion=e}get protocolVersion(){return this._protocolVersion}async resumeStream(e,t){await this._startOrAuthSse({resumptionToken:e,onresumptiontoken:t?.onresumptiontoken})}},du=class{_eventSlots=new Map;setHandler(e,t){let n=this._ensureEventSlot(e);n.onHandler&&t&&console.warn(`[MCP Apps] on${String(e)} handler replaced. Use addEventListener("${String(e)}", …) to add multiple listeners without replacing.`),n.onHandler=t}getHandler(e){return this._eventSlots.get(e)?.onHandler}addEventListener(e,t){this._ensureEventSlot(e).listeners.push(t)}removeEventListener(e,t){let n=this._eventSlots.get(e);if(!n)return;let r=n.listeners.indexOf(t);r!==-1&&n.listeners.splice(r,1)}dispatch(e,t){let n=this._eventSlots.get(e);if(n){n.onHandler?.(t);for(let e of[...n.listeners])e(t)}}_ensureEventSlot(e){let t=this._eventSlots.get(e);return t||(t={listeners:[]},this._eventSlots.set(e,t)),t}},fu=class{_methods=new Set;claim(e,t){if(this._methods.has(e))throw Error(`Handler for "${e}" already registered (via ${t}). Use addEventListener() to attach multiple listeners, or the on* setter for replace semantics.`);this._methods.add(e)}replace(e){this._methods.add(e)}release(e){this._methods.delete(e)}has(e){return this._methods.has(e)}},pu=new Set;function mu(e,t){let[n,r]=t,i=n?.shape;if(typeof i?.method?.value!=`string`)return;let a=i.method.value,o=e===`request`?`setRequestHandler`:`setNotificationHandler`;pu.has(o)||(pu.add(o),console.warn(`[ext-apps] ${o}(Schema, handler) is deprecated; use ${o}("${a}", { params: Schema.shape.params }, handler).`));let s=r;return[a,{params:i.params},e===`request`?(e,t)=>s({method:a,params:e},hu(t)):e=>s({method:a,params:e})]}function hu(e){return{signal:e.mcpReq.signal,requestId:e.mcpReq.id,sessionId:e.sessionId,_meta:e.mcpReq._meta,sendRequest:e.mcpReq.send,sendNotification:e.mcpReq.notify,authInfo:e.http?.authInfo}}var gu=`2026-01-26`,_u=v([M(`light`),M(`dark`)]).describe(`Color theme preference for the host environment.`),vu=v([M(`inline`),M(`fullscreen`),M(`pip`)]).describe(`Display mode for UI presentation.`),yu=v([M(`--color-background-primary`),M(`--color-background-secondary`),M(`--color-background-tertiary`),M(`--color-background-inverse`),M(`--color-background-ghost`),M(`--color-background-info`),M(`--color-background-danger`),M(`--color-background-success`),M(`--color-background-warning`),M(`--color-background-disabled`),M(`--color-text-primary`),M(`--color-text-secondary`),M(`--color-text-tertiary`),M(`--color-text-inverse`),M(`--color-text-ghost`),M(`--color-text-info`),M(`--color-text-danger`),M(`--color-text-success`),M(`--color-text-warning`),M(`--color-text-disabled`),M(`--color-border-primary`),M(`--color-border-secondary`),M(`--color-border-tertiary`),M(`--color-border-inverse`),M(`--color-border-ghost`),M(`--color-border-info`),M(`--color-border-danger`),M(`--color-border-success`),M(`--color-border-warning`),M(`--color-border-disabled`),M(`--color-ring-primary`),M(`--color-ring-secondary`),M(`--color-ring-inverse`),M(`--color-ring-info`),M(`--color-ring-danger`),M(`--color-ring-success`),M(`--color-ring-warning`),M(`--font-sans`),M(`--font-mono`),M(`--font-weight-normal`),M(`--font-weight-medium`),M(`--font-weight-semibold`),M(`--font-weight-bold`),M(`--font-text-xs-size`),M(`--font-text-sm-size`),M(`--font-text-md-size`),M(`--font-text-lg-size`),M(`--font-heading-xs-size`),M(`--font-heading-sm-size`),M(`--font-heading-md-size`),M(`--font-heading-lg-size`),M(`--font-heading-xl-size`),M(`--font-heading-2xl-size`),M(`--font-heading-3xl-size`),M(`--font-text-xs-line-height`),M(`--font-text-sm-line-height`),M(`--font-text-md-line-height`),M(`--font-text-lg-line-height`),M(`--font-heading-xs-line-height`),M(`--font-heading-sm-line-height`),M(`--font-heading-md-line-height`),M(`--font-heading-lg-line-height`),M(`--font-heading-xl-line-height`),M(`--font-heading-2xl-line-height`),M(`--font-heading-3xl-line-height`),M(`--border-radius-xs`),M(`--border-radius-sm`),M(`--border-radius-md`),M(`--border-radius-lg`),M(`--border-radius-xl`),M(`--border-radius-full`),M(`--border-width-regular`),M(`--shadow-hairline`),M(`--shadow-sm`),M(`--shadow-md`),M(`--shadow-lg`)]).describe(`CSS variable keys available to MCP apps for theming.`),bu=p(yu.describe(`Style variables for theming MCP apps. + +Individual style keys are optional - hosts may provide any subset of these values. +Values are strings containing CSS values (colors, sizes, font stacks, etc.). + +Note: This type uses \`Record\` rather than \`Partial>\` +for compatibility with Zod schema generation. Both are functionally equivalent for validation.`),v([f(),T()]).describe(`Style variables for theming MCP apps. + +Individual style keys are optional - hosts may provide any subset of these values. +Values are strings containing CSS values (colors, sizes, font stacks, etc.). + +Note: This type uses \`Record\` rather than \`Partial>\` +for compatibility with Zod schema generation. Both are functionally equivalent for validation.`)).describe(`Style variables for theming MCP apps. + +Individual style keys are optional - hosts may provide any subset of these values. +Values are strings containing CSS values (colors, sizes, font stacks, etc.). + +Note: This type uses \`Record\` rather than \`Partial>\` +for compatibility with Zod schema generation. Both are functionally equivalent for validation.`),xu=d({method:M(`ui/open-link`),params:d({url:f().describe(`URL to open in the host's browser`)})}),Su=d({isError:k().optional().describe(`True if the host failed to open the URL (e.g., due to security policy).`)}).passthrough(),Cu=d({isError:k().optional().describe(`True if the download failed (e.g., user cancelled or host denied).`)}).passthrough(),wu=d({isError:k().optional().describe(`True if the host rejected or failed to deliver the message.`)}).passthrough(),Tu=d({method:M(`ui/notifications/sandbox-proxy-ready`),params:d({})}),Eu=d({connectDomains:A(f()).optional().describe(`Origins for network requests (fetch/XHR/WebSocket). + +- Maps to CSP \`connect-src\` directive +- Empty or omitted → no network connections (secure default)`),resourceDomains:A(f()).optional().describe("Origins for static resources (images, scripts, stylesheets, fonts, media).\n\n- Maps to CSP `img-src`, `script-src`, `style-src`, `font-src`, `media-src` directives\n- Wildcard subdomains supported: `https://*.example.com`\n- Empty or omitted → no network resources (secure default)"),frameDomains:A(f()).optional().describe("Origins for nested iframes.\n\n- Maps to CSP `frame-src` directive\n- Empty or omitted → no nested iframes allowed (`frame-src 'none'`)"),baseUriDomains:A(f()).optional().describe("Allowed base URIs for the document.\n\n- Maps to CSP `base-uri` directive\n- Empty or omitted → only same origin allowed (`base-uri 'self'`)")}),Du=d({camera:d({}).optional().describe(`Request camera access. + +Maps to Permission Policy \`camera\` feature.`),microphone:d({}).optional().describe(`Request microphone access. + +Maps to Permission Policy \`microphone\` feature.`),geolocation:d({}).optional().describe(`Request geolocation access. + +Maps to Permission Policy \`geolocation\` feature.`),clipboardWrite:d({}).optional().describe(`Request clipboard write access. + +Maps to Permission Policy \`clipboard-write\` feature.`)}),Ou=d({method:M(`ui/notifications/size-changed`),params:d({width:b().optional().describe(`New width in pixels.`),height:b().optional().describe(`New height in pixels.`)})});d({method:M(`ui/notifications/tool-input`),params:d({arguments:p(f(),D().describe(`Complete tool call arguments as key-value pairs.`)).optional().describe(`Complete tool call arguments as key-value pairs.`)})}),d({method:M(`ui/notifications/tool-input-partial`),params:d({arguments:p(f(),D().describe(`Partial tool call arguments (incomplete, may change).`)).optional().describe(`Partial tool call arguments (incomplete, may change).`)})}),d({method:M(`ui/notifications/tool-cancelled`),params:d({reason:f().optional().describe(`Optional reason for the cancellation (e.g., "user action", "timeout").`)})});var ku=d({fonts:f().optional()}),Au=d({variables:bu.optional().describe(`CSS variables for theming the app.`),css:ku.optional().describe(`CSS blocks that apps can inject.`)});d({method:M(`ui/resource-teardown`),params:d({})});var ju=p(f(),D()),Mu=d({text:d({}).optional().describe(`Host supports text content blocks.`),image:d({}).optional().describe(`Host supports image content blocks.`),audio:d({}).optional().describe(`Host supports audio content blocks.`),resource:d({}).optional().describe(`Host supports resource content blocks.`),resourceLink:d({}).optional().describe(`Host supports resource link content blocks.`),structuredContent:d({}).optional().describe(`Host supports structured content.`)}),Nu=d({method:M(`ui/notifications/request-teardown`),params:d({}).optional()}),Pu=d({experimental:p(f(),p(f(),E()).describe(`Experimental features keyed by identifier.`)).optional().describe(`Experimental features keyed by identifier.`),openLinks:d({}).optional().describe(`Host supports opening external URLs.`),downloadFile:d({}).optional().describe(`Host supports file downloads via ui/download-file.`),serverTools:d({listChanged:k().optional().describe(`Host supports tools/list_changed notifications.`)}).optional().describe(`Host can proxy tool calls to the MCP server.`),serverResources:d({listChanged:k().optional().describe(`Host supports resources/list_changed notifications.`)}).optional().describe(`Host can proxy resource reads to the MCP server.`),logging:d({}).optional().describe(`Host accepts log messages.`),sandbox:d({permissions:Du.optional().describe(`Permissions granted by the host (camera, microphone, geolocation).`),csp:Eu.optional().describe(`CSP domains approved by the host.`)}).optional().describe(`Sandbox configuration applied by the host.`),updateModelContext:Mu.optional().describe(`Host accepts context updates (ui/update-model-context) to be included in the model's context for future turns.`),message:Mu.optional().describe(`Host supports receiving content messages (ui/message) from the view.`),sampling:d({tools:d({}).optional().describe("Host supports tool use via `tools` and `toolChoice` parameters.")}).optional().describe("Host supports LLM sampling (sampling/createMessage) from the view.\nMirrors the MCP `ClientCapabilities.sampling` shape so hosts can pass it through.")}),Fu=d({experimental:p(f(),p(f(),E()).describe(`Experimental features keyed by identifier.`)).optional().describe(`Experimental features keyed by identifier.`),tools:d({listChanged:k().optional().describe(`App supports tools/list_changed notifications.`)}).optional().describe(`App exposes MCP-style tools that the host can call.`),availableDisplayModes:A(vu).optional().describe(`Display modes the app supports.`)}),Iu=d({method:M(`ui/notifications/initialized`),params:d({}).optional()});d({csp:Eu.optional().describe(`Content Security Policy configuration for UI resources.`),permissions:Du.optional().describe(`Sandbox permissions requested by the UI resource.`),domain:f().optional().describe(`Dedicated origin for view sandbox. + +Useful when views need stable, dedicated origins for OAuth callbacks, CORS policies, or API key allowlists. + +**Host-dependent:** The format and validation rules for this field are determined by each host. Servers MUST consult host-specific documentation for the expected domain format. Common patterns include: +- Hash-based subdomains (e.g., \`{hash}.claudemcpcontent.com\`) +- URL-derived subdomains (e.g., \`www-example-com.oaiusercontent.com\`) + +If omitted, host uses default sandbox origin (typically per-conversation).`),prefersBorder:k().optional().describe(`Visual boundary preference - true if view prefers a visible border. + +Boolean requesting whether a visible border and background is provided by the host. Specifying an explicit value for this is recommended because hosts' defaults may vary. + +- \`true\`: request visible border + background +- \`false\`: request no visible border + background +- omitted: host decides border`)});var Lu=d({method:M(`ui/request-display-mode`),params:d({mode:vu.describe(`The display mode being requested.`)})}),Ru=d({mode:vu.describe(`The display mode that was actually set. May differ from requested if not supported.`)}).passthrough(),zu=v([M(`model`),M(`app`)]).describe(`Tool visibility scope - who can access the tool.`);d({resourceUri:f().optional(),visibility:A(zu).optional().describe(`Who can access this tool. Default: ["model", "app"] +- "model": Tool visible to and callable by the agent +- "app": Tool callable by the app from this server only`),csp:se().optional(),permissions:se().optional()}),d({mimeTypes:A(f()).optional().describe('Array of supported MIME types for UI resources.\nMust include `"text/html;profile=mcp-app"` for MCP Apps support.')});var Bu=d({method:M(`ui/download-file`),params:d({contents:A(v([rn,an])).describe(`Resource contents to download — embedded (inline data) or linked (host fetches). Uses standard MCP resource types.`)})}),Vu=d({method:M(`ui/message`),params:d({role:M(`user`).describe(`Message role, currently only "user" is supported.`),content:A(on).describe(`Message content blocks (text, image, etc.).`)})});d({method:M(`ui/notifications/sandbox-resource-ready`),params:d({html:f().describe(`HTML content to load into the inner iframe.`),sandbox:f().optional().describe(`Optional override for the inner iframe's sandbox attribute.`),csp:Eu.optional().describe(`CSP configuration from resource metadata.`),permissions:Du.optional().describe(`Sandbox permissions from resource metadata.`)})}),d({method:M(`ui/notifications/tool-result`),params:hn.describe(`Standard MCP tool execution result.`)});var Hu=d({toolInfo:d({id:U.optional().describe(`JSON-RPC id of the tools/call request.`),tool:fn.describe(`Tool definition including name, inputSchema, etc.`)}).optional().describe(`Metadata of the tool call that instantiated this App.`),theme:_u.optional().describe(`Current color theme preference.`),styles:Au.optional().describe(`Style configuration for theming the app.`),displayMode:vu.optional().describe(`How the UI is currently displayed.`),availableDisplayModes:A(vu).optional().describe(`Display modes the host supports.`),containerDimensions:v([d({height:b().describe(`Fixed container height in pixels.`)}),d({maxHeight:v([b(),T()]).optional().describe(`Maximum container height in pixels.`)})]).and(v([d({width:b().describe(`Fixed container width in pixels.`)}),d({maxWidth:v([b(),T()]).optional().describe(`Maximum container width in pixels.`)})])).optional().describe(`Container dimensions. Represents the dimensions of the iframe or other +container holding the app. Specify either width or maxWidth, and either height or maxHeight.`),locale:f().optional().describe(`User's language and region preference in BCP 47 format.`),timeZone:f().optional().describe(`User's timezone in IANA format.`),userAgent:f().optional().describe(`Host application identifier.`),platform:v([M(`web`),M(`desktop`),M(`mobile`)]).optional().describe(`Platform type for responsive design decisions.`),deviceCapabilities:d({touch:k().optional().describe(`Whether the device supports touch input.`),hover:k().optional().describe(`Whether the device supports hover interactions.`)}).optional().describe(`Device input capabilities.`),safeAreaInsets:d({top:b().describe(`Top safe area inset in pixels.`),right:b().describe(`Right safe area inset in pixels.`),bottom:b().describe(`Bottom safe area inset in pixels.`),left:b().describe(`Left safe area inset in pixels.`)}).optional().describe(`Mobile safe area boundaries in pixels.`)}).passthrough();d({method:M(`ui/notifications/host-context-changed`),params:Hu.describe(`Partial context update containing only changed fields.`)});var Uu=d({method:M(`ui/update-model-context`),params:d({content:A(on).optional().describe(`Context content blocks (text, image, etc.).`),structuredContent:p(f(),D().describe(`Structured content for machine-readable context data.`)).optional().describe(`Structured content for machine-readable context data.`)})}),Wu=d({method:M(`ui/initialize`),params:d({appInfo:tt.describe(`App identification (name and version).`),appCapabilities:Fu.describe(`Features and capabilities this app provides.`),protocolVersion:f().describe(`Protocol version this app supports.`)})}),Gu=d({protocolVersion:f().describe(`Negotiated protocol version string (e.g., "2025-11-21").`),hostInfo:tt.describe(`Host application identification and version.`),hostCapabilities:Pu.describe(`Features and capabilities provided by the host.`),hostContext:Hu.describe(`Rich context about the host environment.`)}).passthrough(),Ku=class{eventTarget;eventSource;messageListener;constructor(e=window.parent,t){this.eventTarget=e,this.eventSource=t,this.messageListener=e=>{if(t&&e.source!==this.eventSource){console.debug(`Ignoring message from unknown source`,e);return}let n=qe.safeParse(e.data);n.success?(console.debug(`Parsed message`,n.data),this.onmessage?.(n.data)):e.data?.jsonrpc===`2.0`?(console.error(`Failed to parse message`,n.error.message,e),this.onerror?.(Error(`Invalid JSON-RPC message received: `+n.error.message))):console.debug(`Ignoring non-JSON-RPC message`,n.error.message,e)}}async start(){window.addEventListener(`message`,this.messageListener)}async send(e,t){e.method!==`ui/notifications/tool-input-partial`&&console.debug(`Sending message`,e),this.eventTarget.postMessage(e,`*`)}async close(){window.removeEventListener(`message`,this.messageListener),this.onclose?.()}onclose;onerror;onmessage;sessionId;setProtocolVersion},qu=[gu],Ju=class extends Qo{_client;_hostInfo;_hostCapabilities;_appCapabilities;_hostContext={};_appInfo;_initializedReceived=!1;_registeredEvents=new Set;_events=new du;_methods=new fu;setRequestHandler=(...e)=>{let[t,...n]=mu(`request`,e)??e;this._methods.claim(t,`setRequestHandler`),super.setRequestHandler.call(this,t,...n)};setNotificationHandler=(...e)=>{let[t,...n]=mu(`notification`,e)??e;this._methods.claim(t,`setNotificationHandler`),super.setNotificationHandler.call(this,t,...n)};removeRequestHandler=e=>{this._methods.release(e),super.removeRequestHandler(e)};removeNotificationHandler=e=>{this._methods.release(e),super.removeNotificationHandler(e)};replaceRequestHandler=(e,...t)=>{this._methods.replace(e),super.setRequestHandler.call(this,e,...t)};_wrapHandler(e,t){let n=super._wrapHandler(e,t);return e===`ui/initialize`||e===`ping`?n:async(t,r)=>(this._initializedReceived||console.warn(`[ext-apps] AppBridge received '${e}' before ui/notifications/initialized. The View is calling host methods before completing the handshake; it should await app.connect() first.`),n(t,r))}eventSchemas={sizechange:Ou,sandboxready:Tu,initialized:Iu,requestteardown:Nu,loggingmessage:Tn};setEventHandler(e,t){this._ensureEventSlot(e),this._events.setHandler(e,t)}getEventHandler(e){return this._events.getHandler(e)}addEventListener(e,t){this._ensureEventSlot(e),this._events.addEventListener(e,t)}removeEventListener(e,t){this._events.removeEventListener(e,t)}_ensureEventSlot(e){if(this._registeredEvents.has(e))return;let t=this.eventSchemas[e];if(!t)throw Error(`Unknown event: ${String(e)}`);let n=t=>{e===`initialized`&&(this._initializedReceived=!0),this._events.dispatch(e,t)};e===`loggingmessage`?this.setNotificationHandler(`notifications/message`,e=>{n(e.params)}):this.setNotificationHandler(t.shape.method.value,{params:t.shape.params},e=>n(e)),this._registeredEvents.add(e)}warnIfRequestHandlerReplaced(e,t,n){t&&n&&console.warn(`[MCP Apps] ${e} handler replaced. Previous handler will no longer be called.`)}constructor(e,t,n,r){super(r),this._client=e,this._hostInfo=t,this._hostCapabilities=n,this._methods.replace(`notifications/cancelled`),this._methods.replace(`notifications/progress`),this._ensureEventSlot(`initialized`),this._hostContext=r?.hostContext||{},this.replaceRequestHandler(`ui/initialize`,{params:Wu.shape.params,result:Gu},e=>this._onAppsInitialize(e)),this.replaceRequestHandler(`ping`,(e,t)=>(this.onping?.(e.params,t),{})),this.replaceRequestHandler(`ui/request-display-mode`,{params:Lu.shape.params,result:Ru},()=>({mode:this._hostContext.displayMode??`inline`}))}buildContext(e){return e}assertCapabilityForMethod(e){}assertRequestHandlerCapability(e){}assertNotificationCapability(e){}getAppCapabilities(){return this._appCapabilities}getAppVersion(){return this._appInfo}onping;get onsizechange(){return this.getEventHandler(`sizechange`)}set onsizechange(e){this.setEventHandler(`sizechange`,e)}get onsandboxready(){return this.getEventHandler(`sandboxready`)}set onsandboxready(e){this.setEventHandler(`sandboxready`,e)}get oninitialized(){return this.getEventHandler(`initialized`)}set oninitialized(e){this.setEventHandler(`initialized`,e)}_onmessage;get onmessage(){return this._onmessage}set onmessage(e){this.warnIfRequestHandlerReplaced(`onmessage`,this._onmessage,e),this._onmessage=e,this.replaceRequestHandler(`ui/message`,{params:Vu.shape.params,result:wu},async(e,t)=>{if(!this._onmessage)throw Error(`No onmessage handler set`);return this._onmessage(e,t)})}_onopenlink;get onopenlink(){return this._onopenlink}set onopenlink(e){this.warnIfRequestHandlerReplaced(`onopenlink`,this._onopenlink,e),this._onopenlink=e,this.replaceRequestHandler(`ui/open-link`,{params:xu.shape.params,result:Su},async(e,t)=>{if(!this._onopenlink)throw Error(`No onopenlink handler set`);return this._onopenlink(e,t)})}_ondownloadfile;get ondownloadfile(){return this._ondownloadfile}set ondownloadfile(e){this.warnIfRequestHandlerReplaced(`ondownloadfile`,this._ondownloadfile,e),this._ondownloadfile=e,this.replaceRequestHandler(`ui/download-file`,{params:Bu.shape.params,result:Cu},async(e,t)=>{if(!this._ondownloadfile)throw Error(`No ondownloadfile handler set`);return this._ondownloadfile(e,t)})}get onrequestteardown(){return this.getEventHandler(`requestteardown`)}set onrequestteardown(e){this.setEventHandler(`requestteardown`,e)}_onrequestdisplaymode;get onrequestdisplaymode(){return this._onrequestdisplaymode}set onrequestdisplaymode(e){this.warnIfRequestHandlerReplaced(`onrequestdisplaymode`,this._onrequestdisplaymode,e),this._onrequestdisplaymode=e,this.replaceRequestHandler(`ui/request-display-mode`,{params:Lu.shape.params,result:Ru},async(e,t)=>{if(!this._onrequestdisplaymode)throw Error(`No onrequestdisplaymode handler set`);return this._onrequestdisplaymode(e,t)})}get onloggingmessage(){return this.getEventHandler(`loggingmessage`)}set onloggingmessage(e){this.setEventHandler(`loggingmessage`,e)}_onupdatemodelcontext;get onupdatemodelcontext(){return this._onupdatemodelcontext}set onupdatemodelcontext(e){this.warnIfRequestHandlerReplaced(`onupdatemodelcontext`,this._onupdatemodelcontext,e),this._onupdatemodelcontext=e,this.replaceRequestHandler(`ui/update-model-context`,{params:Uu.shape.params,result:Ye},async(e,t)=>{if(!this._onupdatemodelcontext)throw Error(`No onupdatemodelcontext handler set`);return this._onupdatemodelcontext(e,t)})}_oncalltool;get oncalltool(){return this._oncalltool}set oncalltool(e){this.warnIfRequestHandlerReplaced(`oncalltool`,this._oncalltool,e),this._oncalltool=e,this.replaceRequestHandler(`tools/call`,async(e,t)=>{if(!this._oncalltool)throw Error(`No oncalltool handler set`);return this._oncalltool(e.params,t)})}_oncreatesamplingmessage;get oncreatesamplingmessage(){return this._oncreatesamplingmessage}set oncreatesamplingmessage(e){this.warnIfRequestHandlerReplaced(`oncreatesamplingmessage`,this._oncreatesamplingmessage,e),this._oncreatesamplingmessage=e,this.replaceRequestHandler(`sampling/createMessage`,async(e,t)=>{if(!this._oncreatesamplingmessage)throw Error(`No oncreatesamplingmessage handler set`);return this._oncreatesamplingmessage(e.params,t)})}sendToolListChanged(e={}){return this.notification({method:`notifications/tools/list_changed`,params:e})}_onlistresources;get onlistresources(){return this._onlistresources}set onlistresources(e){this.warnIfRequestHandlerReplaced(`onlistresources`,this._onlistresources,e),this._onlistresources=e,this.replaceRequestHandler(`resources/list`,async(e,t)=>{if(!this._onlistresources)throw Error(`No onlistresources handler set`);return this._onlistresources(e.params,t)})}_onlistresourcetemplates;get onlistresourcetemplates(){return this._onlistresourcetemplates}set onlistresourcetemplates(e){this.warnIfRequestHandlerReplaced(`onlistresourcetemplates`,this._onlistresourcetemplates,e),this._onlistresourcetemplates=e,this.replaceRequestHandler(`resources/templates/list`,async(e,t)=>{if(!this._onlistresourcetemplates)throw Error(`No onlistresourcetemplates handler set`);return this._onlistresourcetemplates(e.params,t)})}_onreadresource;get onreadresource(){return this._onreadresource}set onreadresource(e){this.warnIfRequestHandlerReplaced(`onreadresource`,this._onreadresource,e),this._onreadresource=e,this.replaceRequestHandler(`resources/read`,async(e,t)=>{if(!this._onreadresource)throw Error(`No onreadresource handler set`);return this._onreadresource(e.params,t)})}sendResourceListChanged(e={}){return this.notification({method:`notifications/resources/list_changed`,params:e})}_onlistprompts;get onlistprompts(){return this._onlistprompts}set onlistprompts(e){this.warnIfRequestHandlerReplaced(`onlistprompts`,this._onlistprompts,e),this._onlistprompts=e,this.replaceRequestHandler(`prompts/list`,async(e,t)=>{if(!this._onlistprompts)throw Error(`No onlistprompts handler set`);return this._onlistprompts(e.params,t)})}sendPromptListChanged(e={}){return this.notification({method:`notifications/prompts/list_changed`,params:e})}getCapabilities(){return this._hostCapabilities}async _onAppsInitialize(e){let t=e.protocolVersion;return this._appInfo!==void 0&&console.warn(`[ext-apps] AppBridge received a second ui/initialize. The View may be double-mounting (e.g. React StrictMode in dev) without closing the previous App instance. Responding normally; the latest appInfo/appCapabilities replace the previous values.`),this._appCapabilities=e.appCapabilities,this._appInfo=e.appInfo,{protocolVersion:qu.includes(t)?t:gu,hostCapabilities:this.getCapabilities(),hostInfo:this._hostInfo,hostContext:this._hostContext}}setHostContext(e){let t={},n=!1;for(let r of Object.keys(e)){let i=this._hostContext[r],a=e[r];Yu(i,a)||(t[r]=a,n=!0)}n&&(this._hostContext=e,this.sendHostContextChange(t))}sendHostContextChange(e){return this.notification({method:`ui/notifications/host-context-changed`,params:e})}sendToolInput(e){return this.notification({method:`ui/notifications/tool-input`,params:e})}sendToolInputPartial(e){return this.notification({method:`ui/notifications/tool-input-partial`,params:e})}sendToolResult(e){return this.notification({method:`ui/notifications/tool-result`,params:e})}sendToolCancelled(e){return this.notification({method:`ui/notifications/tool-cancelled`,params:e})}sendSandboxResourceReady(e){return this.notification({method:`ui/notifications/sandbox-resource-ready`,params:e})}teardownResource(e,t){return this.request({method:`ui/resource-teardown`,params:e},ju,t)}sendResourceTeardown=this.teardownResource;callTool(e,t){return this.request({method:`tools/call`,params:e},t)}listTools(e,t){return this.request({method:`tools/list`,params:e},t)}async connect(e){if(this.transport)throw Error(`AppBridge is already connected. Call close() before connecting again.`);if(this._initializedReceived=!1,this._client){let e=this._client.getServerCapabilities();if(!e)throw Error(`Client server capabilities not available`);e.tools&&(this.oncalltool=async(e,t)=>this._client.request({method:`tools/call`,params:e},{signal:t.mcpReq.signal}),e.tools.listChanged&&this._client.setNotificationHandler(`notifications/tools/list_changed`,e=>this.sendToolListChanged(e.params))),e.resources&&(this.onlistresources=async(e,t)=>this._client.request({method:`resources/list`,params:e},{signal:t.mcpReq.signal}),this.onlistresourcetemplates=async(e,t)=>this._client.request({method:`resources/templates/list`,params:e},{signal:t.mcpReq.signal}),this.onreadresource=async(e,t)=>this._client.request({method:`resources/read`,params:e},{signal:t.mcpReq.signal}),e.resources.listChanged&&this._client.setNotificationHandler(`notifications/resources/list_changed`,e=>this.sendResourceListChanged(e.params))),e.prompts&&(this.onlistprompts=async(e,t)=>this._client.request({method:`prompts/list`,params:e},{signal:t.mcpReq.signal}),e.prompts.listChanged&&this._client.setNotificationHandler(`notifications/prompts/list_changed`,e=>this.sendPromptListChanged(e.params)))}return super.connect(e)}};function Yu(e,t){return JSON.stringify(e)===JSON.stringify(t)}var Xu=t(s(),1),Zu=n(),Qu=`text/html;profile=mcp-app`,$u=`io.modelcontextprotocol/ui`,ed=3,td=5,nd=2e3,rd=class extends Error{},id=null,ad=null;async function od(){let e=new uu(new URL(`/api/mcp`,location.origin),{fetch:(e,t)=>c(e,t)}),t=new tu({name:`fanout-browser`,version:`0.2.0`},{capabilities:{extensions:{[$u]:{mimeTypes:[Qu]}}}});try{await t.connect(e);let n={client:t,references:0,closed:!1,closeListeners:new Set};return t.onclose=()=>cd(n,!1),t.onerror=()=>cd(n,!0),n}catch(t){throw await e.close().catch(()=>void 0),t}}async function sd(){for(let e=0;e{ad===e&&!t.closed&&(id=t)}).catch(()=>{ad===e&&(ad=null)})}let e=ad;if(!e)continue;let t=await e;if(t.closed){ad===e&&(ad=null);continue}return t.closeTimer&&=(clearTimeout(t.closeTimer),void 0),t.references+=1,t}throw Error(`MCP connection closed during setup`)}function cd(e,t){if(!e.closed){e.closed=!0,e.closeTimer&&clearTimeout(e.closeTimer),e.closeTimer=void 0,id===e&&(id=null),ad=null;for(let t of[...e.closeListeners])t();t&&e.client.close().catch(()=>void 0)}}function ld(e){e.references=Math.max(0,e.references-1),!(e.closed||e.references||e.closeTimer)&&(e.closeTimer=setTimeout(()=>{e.closeTimer=void 0,!(e.references||id!==e)&&(e.closed=!0,id=null,ad=null,e.client.close().catch(()=>void 0))},0))}function ud(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function dd(e,t){if(!Array.isArray(e))return[];let n=new Set(t);return e.filter(e=>{if(typeof e!=`string`||/[\s;'\"]/.test(e))return!1;let t=e.match(/^([a-z]+):\/\/([^/]+)$/i);return!!(t&&n.has(t[1].toLowerCase()))})}function fd(e){let t=ud(ud(ud(e)?.ui)?.csp),n=dd(t?.connectDomains,[`http`,`https`,`ws`,`wss`]),r=dd(t?.resourceDomains,[`http`,`https`]),i=dd(t?.frameDomains,[`http`,`https`]),a=dd(t?.baseUriDomains,[`http`,`https`]),o=r.length?` ${r.join(` `)}`:``,s=[`default-src 'none'`,`script-src 'self' 'unsafe-inline'${o}`,`style-src 'self' 'unsafe-inline'${o}`,`img-src 'self' data:${o}`,`media-src 'self' data:${o}`,`font-src 'self' data:${o}`,`connect-src ${n.length?n.join(` `):`'none'`}`];return i.length&&s.push(`frame-src ${i.join(` `)}`),a.length&&s.push(`base-uri ${a.join(` `)}`),`${s.join(`; `)};`}function pd(e,t){let n=``;return/]*)?>/i.test(e)?e.replace(/]*)?>/i,e=>`${e}${n}`):/]*)?>/i.test(e)?e.replace(/]*)?>/i,e=>`${e}${n}`):`${n}${e}`}function md(e){return e.filter(e=>e.type===`text`).map(e=>String(e.text??``)).join(` +`)}function hd({content:t,onMessage:n}){let s=(0,Xu.useRef)(null),c=(0,Xu.useRef)(null),u=(0,Xu.useRef)(null),d=(0,Xu.useRef)(null),[f,p]=(0,Xu.useState)(``),[m,h]=(0,Xu.useState)(240),[g,_]=(0,Xu.useState)(``),[v,y]=(0,Xu.useState)(0),b=(0,Xu.useRef)(0),x=l(`light`),S=(0,Xu.useRef)(x);S.current=x,(0,Xu.useEffect)(()=>{d.current?.setHostContext({theme:x,displayMode:`inline`})},[x]),(0,Xu.useEffect)(()=>{b.current=0},[t.resourceUri]),(0,Xu.useEffect)(()=>{let e=!1,n;p(``),_(``);let r=()=>{let e=b.current+1;if(e>td)return;b.current=e;let t=e===1?0:Math.min(750*2**(e-2),6e3);t===0?y(e=>e+1):n=setTimeout(()=>y(e=>e+1),t)},i=()=>r();async function a(){try{let n=await sd();if(e){ld(n);return}u.current=n,n.closeListeners.add(i),c.current=n.client;let r=(await n.client.readResource({uri:t.resourceUri})).contents[0];if(!r||!(`text`in r)||!r.text)throw new rd(`MCP App resource has no HTML content`);if(r.uri!==t.resourceUri)throw new rd(`MCP App resource URI does not match the requested URI`);if(r.mimeType!==Qu)throw new rd(`MCP App resource has an unsupported MIME type`);e||(b.current=0,p(pd(r.text,r._meta)))}catch(t){console.error(`MCP app resource load failed`,t),e||(_(`This view could not be loaded. Please try again.`),b.current>0&&!(t instanceof rd)&&r())}}return a(),()=>{e=!0,n&&clearTimeout(n);let t=d.current?.teardownResource({}).catch(()=>void 0)??Promise.resolve(),r=u.current;r&&(r.closeListeners.delete(i),t.finally(()=>ld(r))),d.current=null,c.current=null,u.current=null}},[t.resourceUri,v]);async function C(){let e=s.current,r=c.current;if(e?.contentWindow&&f&&r&&!d.current)try{let i=new Ju(null,{name:`Fanout`,version:`0.2.0`},{openLinks:{},serverTools:{},logging:{}},{hostContext:{theme:S.current,displayMode:`inline`}});i.oncalltool=(e,t)=>r.callTool(e,{signal:t.mcpReq.signal}),d.current=i,i.onsizechange=({height:e})=>{e&&h(Math.min(nd,Math.max(240,Math.ceil(e)+32)))},i.onmessage=async({content:e})=>{let t=md(e);return t?(await n(t),{}):{isError:!0}},i.oninitialized=async()=>{await i.sendToolInput({arguments:t.toolInput??{}}),await i.sendToolResult({content:[{type:`text`,text:JSON.stringify(t.toolResult??{})}],structuredContent:t.toolResult,isError:t.isError})},await i.connect(new Ku(e.contentWindow,e.contentWindow))}catch(e){console.error(`MCP app bridge connect failed`,e),_(`This view could not be loaded. Please try again.`)}}return g?(0,Zu.jsx)(i,{color:`bad`,m:`md`,children:g}):f?(0,Zu.jsx)(e,{component:`iframe`,ref:s,title:`Fanout analysis view`,sandbox:`allow-scripts`,scrolling:`auto`,srcDoc:f,w:`100%`,bd:0,bg:`var(--mantine-color-body)`,style:{display:`block`,height:m,transition:`height 200ms ease`},onLoad:()=>void C()}):(0,Zu.jsxs)(a,{mih:180,p:`xl`,children:[(0,Zu.jsx)(o,{size:`sm`}),(0,Zu.jsx)(r,{c:`dimmed`,size:`sm`,ml:`sm`,children:`Preparing view…`})]})}export{hd as default,fd as mcpAppCSP}; \ No newline at end of file diff --git a/internal/ui/dist/assets/mcp-app-frame-Bz7U304u.js b/internal/ui/dist/assets/mcp-app-frame-Bz7U304u.js deleted file mode 100644 index 4345079c..00000000 --- a/internal/ui/dist/assets/mcp-app-frame-Bz7U304u.js +++ /dev/null @@ -1,58 +0,0 @@ -import{S as e,_t as t,d as n,f as r,ft as i,l as a,mt as o,v as s}from"./brand-eOqp_Ed4.js";import{i as c}from"./auth-BZHrLj_K.js";import{t as l}from"./use-computed-color-scheme-_1Kex6aU.js";import{A as u,C as d,D as f,E as p,F as m,M as h,N as g,O as _,P as v,S as y,T as b,_ as ee,a as x,b as S,c as C,d as w,f as T,g as te,h as ne,j as re,k as ie,l as ae,m as oe,o as se,p as E,s as ce,u as le,v as D,w as ue,x as O,y as k}from"./index-Byh_fBCG.js";var A={invalid_type:`invalid_type`,too_big:`too_big`,too_small:`too_small`,invalid_format:`invalid_format`,not_multiple_of:`not_multiple_of`,unrecognized_keys:`unrecognized_keys`,invalid_union:`invalid_union`,invalid_key:`invalid_key`,invalid_element:`invalid_element`,invalid_value:`invalid_value`,custom:`custom`},de;de||={};function fe(e){return v(se,e)}function pe(e){return g(x,e)}function me(e){return h(ce,e)}var he=Object.create,j=Object.defineProperty,ge=Object.getOwnPropertyDescriptor,M=Object.getOwnPropertyNames,N=Object.getPrototypeOf,_e=Object.prototype.hasOwnProperty,ve=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ye=(e,t)=>{let n={};for(var r in e)j(n,r,{get:e[r],enumerable:!0});return t&&j(n,Symbol.toStringTag,{value:`Module`}),n},P=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=M(t),a=0,o=i.length,s;at[e]).bind(null,s),enumerable:!(r=ge(t,s))||r.enumerable});return e},be=(e,t,n)=>(n=e==null?{}:he(N(e)),P(t||!e||!e.__esModule?j(n,`default`,{value:e,enumerable:!0}):n,e)),F=new Set([`https://json-schema.org/draft/2020-12/schema`,`http://json-schema.org/draft/2020-12/schema`]),xe=new Set([`https://json-schema.org/draft/2019-09/schema`,`http://json-schema.org/draft/2019-09/schema`]),Se=new Set([`https://json-schema.org/draft-07/schema`,`http://json-schema.org/draft-07/schema`]),Ce=new Set([`https://json-schema.org/draft-06/schema`,`http://json-schema.org/draft-06/schema`]);function we(e){return typeof e==`string`&&xe.has(e.replace(/#$/,``))}function Te(e,t){if(!(`$schema`in e)||typeof e.$schema!=`string`)return`2020-12`;let n=e.$schema.replace(/#$/,``);if(F.has(n))return`2020-12`;if(xe.has(n))return`2019-09`;if(Se.has(n)||Ce.has(n))return`draft-7`;throw Error(`JSON Schema declares an unsupported dialect ("$schema": "${e.$schema.slice(0,200)}"). The default validator supports JSON Schema 2020-12, 2019-09, draft-07, and draft-06; ${t}`)}var Ee=`2025-11-25`,De=[Ee,`2025-06-18`,`2025-03-26`,`2024-11-05`,`2024-10-07`],Oe=`io.modelcontextprotocol/related-task`,ke=`io.modelcontextprotocol/protocolVersion`,Ae=`io.modelcontextprotocol/clientInfo`,je=`io.modelcontextprotocol/serverInfo`,Me=`io.modelcontextprotocol/clientCapabilities`,Ne=`io.modelcontextprotocol/subscriptionId`,Pe=`io.modelcontextprotocol/logLevel`,Fe=ee(()=>f([p(),O(),E(),ae(),b(p(),Fe),T(Fe)])),I=b(p(),Fe),Ie=T(Fe),Le=f([p(),O().int()]),Re=p(),ze=y({ttl:O().optional()}),Be=y({taskId:p()}),Ve=k({progressToken:Le.optional(),[Oe]:Be.optional()}),L=y({_meta:Ve.optional()}),He=L.extend({task:ze.optional()}),R=y({method:p(),params:L.loose().optional()}),z=y({_meta:Ve.optional()}),B=y({method:p(),params:z.loose().optional()}),Ue=k({get[je](){return tt.optional().catch(void 0)}}),V=k({_meta:Ue.optional()}),H=f([p(),O().int()]),We=y({jsonrpc:D(`2.0`),id:H,...R.shape}).strict(),Ge=y({jsonrpc:D(`2.0`),...B.shape}).strict(),Ke=y({jsonrpc:D(`2.0`),id:H,result:V}).strict(),qe=y({jsonrpc:D(`2.0`),id:H.optional(),error:y({code:O().int(),message:p(),data:_().optional()})}).strict(),Je=f([We,Ge,Ke,qe]),Ye=f([Ke,qe]),Xe=V.strict(),Ze=z.extend({requestId:H.optional(),reason:p().optional()}),Qe=B.extend({method:D(`notifications/cancelled`),params:Ze}),$e=y({src:p(),mimeType:p().optional(),sizes:T(p()).optional(),theme:C([`light`,`dark`]).optional()}),et=y({icons:T($e).optional()}),U=y({name:p(),title:p().optional()}),tt=U.extend({...U.shape,...et.shape,version:p(),websiteUrl:p().optional(),description:p().optional()}),nt=te(y({applyDefaults:E().optional()}),I),rt=ue(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,te(y({form:nt.optional(),url:I.optional()}),I.optional())),it=k({list:I.optional(),cancel:I.optional(),requests:k({sampling:k({createMessage:I.optional()}).optional(),elicitation:k({create:I.optional()}).optional()}).optional()}),at=k({list:I.optional(),cancel:I.optional(),requests:k({tools:k({call:I.optional()}).optional()}).optional()}),ot=y({experimental:b(p(),I).optional(),sampling:y({context:I.optional(),tools:I.optional()}).optional(),elicitation:rt.optional(),roots:y({listChanged:E().optional()}).optional(),tasks:it.optional(),extensions:b(p(),I).optional()}),W=L.extend({protocolVersion:p(),capabilities:ot,clientInfo:tt}),st=R.extend({method:D(`initialize`),params:W}),ct=y({experimental:b(p(),I).optional(),logging:I.optional(),completions:I.optional(),prompts:y({listChanged:E().optional()}).optional(),resources:y({subscribe:E().optional(),listChanged:E().optional()}).optional(),tools:y({listChanged:E().optional()}).optional(),tasks:at.optional(),extensions:b(p(),I).optional()}),lt=V.extend({protocolVersion:p(),capabilities:ct,serverInfo:tt,instructions:p().optional()}),ut=B.extend({method:D(`notifications/initialized`),params:z.optional()}),dt=R.extend({method:D(`server/discover`),params:L.optional()}),ft=V.extend({supportedVersions:T(p()),capabilities:ct,instructions:p().optional()}),pt=R.extend({method:D(`ping`),params:L.optional()}),mt=y({progress:O(),total:d(O()),message:d(p())}),ht=y({...z.shape,...mt.shape,progressToken:Le}),gt=B.extend({method:D(`notifications/progress`),params:ht}),_t=L.extend({cursor:Re.optional()}),vt=R.extend({params:_t.optional()}),yt=V.extend({nextCursor:Re.optional()}),bt=y({uri:p(),mimeType:d(p()),_meta:b(p(),_()).optional()}),xt=bt.extend({text:p()}),St=p().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:`Invalid Base64 string`}),Ct=bt.extend({blob:St}),wt=C([`user`,`assistant`]),Tt=y({audience:T(wt).optional(),priority:O().min(0).max(1).optional(),lastModified:fe({offset:!0}).optional()}),Et=y({...U.shape,...et.shape,uri:p(),description:d(p()),mimeType:d(p()),size:d(O()),annotations:Tt.optional(),_meta:d(k({}))}),Dt=y({...U.shape,...et.shape,uriTemplate:p(),description:d(p()),mimeType:d(p()),annotations:Tt.optional(),_meta:d(k({}))}),Ot=vt.extend({method:D(`resources/list`)}),kt=yt.extend({resources:T(Et)}),At=vt.extend({method:D(`resources/templates/list`)}),jt=yt.extend({resourceTemplates:T(Dt)}),Mt=L.extend({uri:p()}),Nt=Mt,Pt=R.extend({method:D(`resources/read`),params:Nt}),Ft=V.extend({contents:T(f([xt,Ct]))}),G=B.extend({method:D(`notifications/resources/list_changed`),params:z.optional()}),K=Mt,It=R.extend({method:D(`resources/subscribe`),params:K}),Lt=Mt,Rt=R.extend({method:D(`resources/unsubscribe`),params:Lt}),zt=y({toolsListChanged:E().optional(),promptsListChanged:E().optional(),resourcesListChanged:E().optional(),resourceSubscriptions:T(p()).optional()}),Bt=L.extend({notifications:zt}),Vt=R.extend({method:D(`subscriptions/listen`),params:Bt}),Ht=z.extend({notifications:zt}),Ut=B.extend({method:D(`notifications/subscriptions/acknowledged`),params:Ht}),Wt=Ue.extend({[Ne]:H}),Gt=V.extend({_meta:Wt}),Kt=z.extend({uri:p()}),qt=B.extend({method:D(`notifications/resources/updated`),params:Kt}),Jt=y({name:p(),description:d(p()),required:d(E())}),Yt=y({...U.shape,...et.shape,description:d(p()),arguments:d(T(Jt)),_meta:d(k({}))}),Xt=vt.extend({method:D(`prompts/list`)}),Zt=yt.extend({prompts:T(Yt)}),Qt=L.extend({name:p(),arguments:b(p(),p()).optional()}),$t=R.extend({method:D(`prompts/get`),params:Qt}),q=y({type:D(`text`),text:p(),annotations:Tt.optional(),_meta:b(p(),_()).optional()}),en=y({type:D(`image`),data:St,mimeType:p(),annotations:Tt.optional(),_meta:b(p(),_()).optional()}),tn=y({type:D(`audio`),data:St,mimeType:p(),annotations:Tt.optional(),_meta:b(p(),_()).optional()}),nn=y({type:D(`tool_use`),name:p(),id:p(),input:b(p(),_()),_meta:b(p(),_()).optional()}),rn=y({type:D(`resource`),resource:f([xt,Ct]),annotations:Tt.optional(),_meta:b(p(),_()).optional()}),an=Et.extend({type:D(`resource_link`)}),on=f([q,en,tn,an,rn]),sn=y({role:wt,content:on}),cn=V.extend({description:p().optional(),messages:T(sn)}),ln=B.extend({method:D(`notifications/prompts/list_changed`),params:z.optional()}),un=y({title:p().optional(),readOnlyHint:E().optional(),destructiveHint:E().optional(),idempotentHint:E().optional(),openWorldHint:E().optional()}),dn=y({taskSupport:C([`required`,`optional`,`forbidden`]).optional()}),fn=y({...U.shape,...et.shape,description:p().optional(),inputSchema:y({type:D(`object`),properties:b(p(),Fe).optional(),required:T(p()).optional()}).catchall(_()),outputSchema:k({$schema:p().optional()}).optional(),annotations:un.optional(),execution:dn.optional(),_meta:b(p(),_()).optional()}),pn=vt.extend({method:D(`tools/list`)}),mn=yt.extend({tools:T(fn)}),hn=V.extend({content:T(on).default([]),structuredContent:_().optional(),isError:E().optional()}),gn=hn.or(V.extend({toolResult:_()})),_n=He.extend({name:p(),arguments:b(p(),_()).optional()}),vn=R.extend({method:D(`tools/call`),params:_n}),yn=B.extend({method:D(`notifications/tools/list_changed`),params:z.optional()}),bn=y({autoRefresh:E().default(!0),debounceMs:O().int().nonnegative().default(300)}),xn=C([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),Sn=L.extend({level:xn}),Cn=R.extend({method:D(`logging/setLevel`),params:Sn}),wn=z.extend({level:xn,logger:p().optional(),data:_()}),Tn=B.extend({method:D(`notifications/message`),params:wn}),En=y({name:p().optional()}),Dn=y({hints:T(En).optional(),costPriority:O().min(0).max(1).optional(),speedPriority:O().min(0).max(1).optional(),intelligencePriority:O().min(0).max(1).optional()}),On=y({mode:C([`auto`,`required`,`none`]).optional()}),kn=y({type:D(`tool_result`),toolUseId:p().describe(`The unique identifier for the corresponding tool call.`),content:T(on),structuredContent:_().optional(),isError:E().optional(),_meta:b(p(),_()).optional()}),An=oe(`type`,[q,en,tn]),jn=oe(`type`,[q,en,tn,nn,kn]),Mn=y({role:wt,content:f([jn,T(jn)]),_meta:b(p(),_()).optional()}),Nn=He.extend({messages:T(Mn),modelPreferences:Dn.optional(),systemPrompt:p().optional(),includeContext:C([`none`,`thisServer`,`allServers`]).optional(),temperature:O().optional(),maxTokens:O().int(),stopSequences:T(p()).optional(),metadata:I.optional(),tools:T(fn).optional(),toolChoice:On.optional()}),Pn=R.extend({method:D(`sampling/createMessage`),params:Nn}),Fn=V.extend({model:p(),stopReason:d(C([`endTurn`,`stopSequence`,`maxTokens`]).or(p())),role:wt,content:An}),In=V.extend({model:p(),stopReason:d(C([`endTurn`,`stopSequence`,`maxTokens`,`toolUse`]).or(p())),role:wt,content:f([jn,T(jn)])}),Ln=y({type:D(`boolean`),title:p().optional(),description:p().optional(),default:E().optional()}),Rn=y({type:D(`string`),title:p().optional(),description:p().optional(),minLength:O().optional(),maxLength:O().optional(),format:C([`email`,`uri`,`date`,`date-time`]).optional(),default:p().optional()}),zn=y({type:C([`number`,`integer`]),title:p().optional(),description:p().optional(),minimum:O().optional(),maximum:O().optional(),default:O().optional()}),Bn=y({type:D(`string`),title:p().optional(),description:p().optional(),enum:T(p()),default:p().optional()}),Vn=y({type:D(`string`),title:p().optional(),description:p().optional(),oneOf:T(y({const:p(),title:p()})),default:p().optional()}),Hn=y({type:D(`string`),title:p().optional(),description:p().optional(),enum:T(p()),enumNames:T(p()).optional(),default:p().optional()}),Un=f([Bn,Vn]),Wn=y({type:D(`array`),title:p().optional(),description:p().optional(),minItems:O().optional(),maxItems:O().optional(),items:y({type:D(`string`),enum:T(p())}),default:T(p()).optional()}),Gn=y({type:D(`array`),title:p().optional(),description:p().optional(),minItems:O().optional(),maxItems:O().optional(),items:y({anyOf:T(y({const:p(),title:p()}))}),default:T(p()).optional()}),Kn=f([Wn,Gn]),qn=f([Hn,Un,Kn]),Jn=f([qn,Ln,Rn,zn]),Yn=He.extend({mode:D(`form`).optional(),message:p(),requestedSchema:y({type:D(`object`),properties:b(p(),Jn),required:T(p()).optional()}).catchall(_())}),Xn=He.extend({mode:D(`url`),message:p(),elicitationId:p(),url:p().url()}),Zn=f([Yn,Xn]),Qn=R.extend({method:D(`elicitation/create`),params:Zn}),$n=z.extend({elicitationId:p()}),er=B.extend({method:D(`notifications/elicitation/complete`),params:$n}),tr=V.extend({action:C([`accept`,`decline`,`cancel`]),content:ue(e=>e===null?void 0:e,b(p(),f([p(),O(),E(),T(p())])).optional())}),nr=y({type:D(`ref/resource`),uri:p()}),rr=y({type:D(`ref/prompt`),name:p()}),ir=L.extend({ref:f([rr,nr]),argument:y({name:p(),value:p()}),context:y({arguments:b(p(),p()).optional()}).optional()}),ar=R.extend({method:D(`completion/complete`),params:ir}),or=V.extend({completion:k({values:T(p()).max(100),total:d(O().int()),hasMore:d(E())})}),sr=y({uri:p().startsWith(`file://`),name:p().optional(),_meta:b(p(),_()).optional()}),cr=R.extend({method:D(`roots/list`),params:L.optional()}),lr=V.extend({roots:T(sr)}),ur=B.extend({method:D(`notifications/roots/list_changed`),params:z.optional()}),dr=k({ttl:O().optional(),pollInterval:O().optional()}),fr=C([`working`,`input_required`,`completed`,`failed`,`cancelled`]),pr=y({taskId:p(),status:fr,ttl:f([O(),ae()]),createdAt:p(),lastUpdatedAt:p(),pollInterval:d(O()),statusMessage:d(p())}),mr=V.extend({task:pr}),hr=z.merge(pr),gr=B.extend({method:D(`notifications/tasks/status`),params:hr}),_r=R.extend({method:D(`tasks/get`),params:L.extend({taskId:p()})}),vr=V.merge(pr),yr=R.extend({method:D(`tasks/result`),params:L.extend({taskId:p()})}),br=V.loose(),xr=vt.extend({method:D(`tasks/list`)}),Sr=yt.extend({tasks:T(pr)}),Cr=R.extend({method:D(`tasks/cancel`),params:L.extend({taskId:p()})}),wr=V.merge(pr),Tr=f([pt,st,dt,ar,Cn,$t,Xt,Ot,At,Pt,It,Rt,Vt,vn,pn]),Er=f([Qe,gt,ut,ur]),Dr=f([Xe,Fn,In,tr,lr]),Or=f([pt,Pn,Qn,cr]),kr=f([Qe,gt,Tn,qt,G,yn,ln,Ut,er]),Ar=f([Xe,lt,ft,or,cn,Zt,kt,jt,Ft,hn,mn,Gt]),J=ie().superRefine((e,t)=>{if(!URL.canParse(e))return t.addIssue({code:A.custom,message:`URL must be parseable`,fatal:!0}),m}).refine(e=>{let t=new URL(e);return t.protocol!==`javascript:`&&t.protocol!==`data:`&&t.protocol!==`vbscript:`},{message:`URL cannot use javascript:, data:, or vbscript: scheme`}),jr=k({resource:p().url(),authorization_servers:T(J).optional(),jwks_uri:p().url().optional(),scopes_supported:T(p()).optional(),bearer_methods_supported:T(p()).optional(),resource_signing_alg_values_supported:T(p()).optional(),resource_name:p().optional(),resource_documentation:p().optional(),resource_policy_uri:p().url().optional(),resource_tos_uri:p().url().optional(),tls_client_certificate_bound_access_tokens:E().optional(),authorization_details_types_supported:T(p()).optional(),dpop_signing_alg_values_supported:T(p()).optional(),dpop_bound_access_tokens_required:E().optional()}),Mr=k({issuer:p(),authorization_endpoint:J,token_endpoint:J,registration_endpoint:J.optional(),scopes_supported:T(p()).optional(),response_types_supported:T(p()),response_modes_supported:T(p()).optional(),grant_types_supported:T(p()).optional(),token_endpoint_auth_methods_supported:T(p()).optional(),token_endpoint_auth_signing_alg_values_supported:T(p()).optional(),service_documentation:J.optional(),revocation_endpoint:J.optional(),revocation_endpoint_auth_methods_supported:T(p()).optional(),revocation_endpoint_auth_signing_alg_values_supported:T(p()).optional(),introspection_endpoint:p().optional(),introspection_endpoint_auth_methods_supported:T(p()).optional(),introspection_endpoint_auth_signing_alg_values_supported:T(p()).optional(),code_challenge_methods_supported:T(p()).optional(),client_id_metadata_document_supported:E().optional(),authorization_response_iss_parameter_supported:E().optional().catch(void 0),dpop_signing_alg_values_supported:T(p()).optional()}),Nr=k({issuer:p(),authorization_endpoint:J,token_endpoint:J,userinfo_endpoint:J.optional(),jwks_uri:J,registration_endpoint:J.optional(),scopes_supported:T(p()).optional(),response_types_supported:T(p()),response_modes_supported:T(p()).optional(),grant_types_supported:T(p()).optional(),acr_values_supported:T(p()).optional(),subject_types_supported:T(p()),id_token_signing_alg_values_supported:T(p()),id_token_encryption_alg_values_supported:T(p()).optional(),id_token_encryption_enc_values_supported:T(p()).optional(),userinfo_signing_alg_values_supported:T(p()).optional(),userinfo_encryption_alg_values_supported:T(p()).optional(),userinfo_encryption_enc_values_supported:T(p()).optional(),request_object_signing_alg_values_supported:T(p()).optional(),request_object_encryption_alg_values_supported:T(p()).optional(),request_object_encryption_enc_values_supported:T(p()).optional(),token_endpoint_auth_methods_supported:T(p()).optional(),token_endpoint_auth_signing_alg_values_supported:T(p()).optional(),display_values_supported:T(p()).optional(),claim_types_supported:T(p()).optional(),claims_supported:T(p()).optional(),service_documentation:p().optional(),claims_locales_supported:T(p()).optional(),ui_locales_supported:T(p()).optional(),claims_parameter_supported:E().optional(),request_parameter_supported:E().optional(),request_uri_parameter_supported:E().optional(),require_request_uri_registration:E().optional(),op_policy_uri:J.optional(),op_tos_uri:J.optional(),client_id_metadata_document_supported:E().optional(),authorization_response_iss_parameter_supported:E().optional().catch(void 0)}),Pr=y({...Nr.shape,...Mr.pick({code_challenge_methods_supported:!0}).shape}),Fr=y({access_token:p(),id_token:p().optional(),token_type:p(),expires_in:me().optional(),scope:p().optional(),refresh_token:p().optional(),issuer:p().optional().catch(void 0)}).strip(),Ir=y({issued_token_type:D(`urn:ietf:params:oauth:token-type:id-jag`),access_token:p(),token_type:p().optional(),expires_in:O().optional(),scope:p().optional()}).strip(),Lr=y({error:p(),error_description:p().optional(),error_uri:p().optional()}),Rr=J.optional().or(D(``).transform(()=>void 0)),zr=y({redirect_uris:T(J),token_endpoint_auth_method:p().optional(),grant_types:T(p()).optional(),response_types:T(p()).optional(),application_type:p().optional(),client_name:p().optional(),client_uri:J.optional(),logo_uri:Rr,scope:p().optional(),contacts:T(p()).optional(),tos_uri:Rr,policy_uri:p().optional(),jwks_uri:J.optional(),jwks:w().optional(),software_id:p().optional(),software_version:p().optional(),software_statement:p().optional()}).strip(),Br=y({client_id:p(),client_secret:p().optional(),client_id_issued_at:O().optional(),client_secret_expires_at:O().optional(),issuer:p().optional().catch(void 0)}).strip(),Vr=zr.merge(Br),Hr=y({error:p(),error_description:p().optional()}).strip(),Ur=y({token:p(),token_type_hint:p().optional()}).strip(),Wr=Symbol.for(`mcp.sdk.errorBrands`);function Gr(e,t){let n=new Set,r=t;for(;typeof r==`function`;){let e=r.mcpBrand;Object.prototype.hasOwnProperty.call(r,`mcpBrand`)&&typeof e==`string`&&n.add(e),r=Object.getPrototypeOf(r)}n.size!==0&&Object.defineProperty(e,Wr,{value:n,enumerable:!1,configurable:!0})}function Kr(e,t){try{if(typeof t==`object`&&t&&Object.prototype.hasOwnProperty.call(e,`mcpBrand`)&&typeof e.mcpBrand==`string`&&Object.prototype.hasOwnProperty.call(t,Wr)){let n=t[Wr];if(n&&typeof n.has==`function`&&n.has(e.mcpBrand))return!0}}catch{}return Function.prototype[Symbol.hasInstance].call(e,t)}var qr=function(e){return e.InvalidRequest=`invalid_request`,e.InvalidClient=`invalid_client`,e.InvalidGrant=`invalid_grant`,e.UnauthorizedClient=`unauthorized_client`,e.UnsupportedGrantType=`unsupported_grant_type`,e.InvalidScope=`invalid_scope`,e.AccessDenied=`access_denied`,e.ServerError=`server_error`,e.TemporarilyUnavailable=`temporarily_unavailable`,e.UnsupportedResponseType=`unsupported_response_type`,e.UnsupportedTokenType=`unsupported_token_type`,e.InvalidToken=`invalid_token`,e.MethodNotAllowed=`method_not_allowed`,e.TooManyRequests=`too_many_requests`,e.InvalidClientMetadata=`invalid_client_metadata`,e.InvalidRedirectUri=`invalid_redirect_uri`,e.InsufficientScope=`insufficient_scope`,e.InvalidTarget=`invalid_target`,e.InvalidDpopProof=`invalid_dpop_proof`,e.UseDpopNonce=`use_dpop_nonce`,e}({}),Jr=class e extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.OAuthError`})}static[Symbol.hasInstance](e){return Kr(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Kr(this,e)}constructor(e,t,n){super(t),this.code=e,this.errorUri=n,this.name=`OAuthError`,Gr(this,new.target)}toResponseObject(){let e={error:this.code,error_description:this.message};return this.errorUri&&(e.error_uri=this.errorUri),e}static fromResponse(t){return new e(t.error,t.error_description??t.error,t.error_uri)}},Y=function(e){return e.NotConnected=`NOT_CONNECTED`,e.AlreadyConnected=`ALREADY_CONNECTED`,e.NotInitialized=`NOT_INITIALIZED`,e.CapabilityNotSupported=`CAPABILITY_NOT_SUPPORTED`,e.RequestTimeout=`REQUEST_TIMEOUT`,e.ConnectionClosed=`CONNECTION_CLOSED`,e.SendFailed=`SEND_FAILED`,e.InvalidResult=`INVALID_RESULT`,e.UnsupportedResultType=`UNSUPPORTED_RESULT_TYPE`,e.InputRequiredRoundsExceeded=`INPUT_REQUIRED_ROUNDS_EXCEEDED`,e.ListPaginationExceeded=`LIST_PAGINATION_EXCEEDED`,e.MethodNotSupportedByProtocolVersion=`METHOD_NOT_SUPPORTED_BY_PROTOCOL_VERSION`,e.EraNegotiationFailed=`ERA_NEGOTIATION_FAILED`,e.ClientHttpNotImplemented=`CLIENT_HTTP_NOT_IMPLEMENTED`,e.ClientHttpAuthentication=`CLIENT_HTTP_AUTHENTICATION`,e.ClientHttpForbidden=`CLIENT_HTTP_FORBIDDEN`,e.ClientHttpUnexpectedContent=`CLIENT_HTTP_UNEXPECTED_CONTENT`,e.ClientHttpFailedToOpenStream=`CLIENT_HTTP_FAILED_TO_OPEN_STREAM`,e.ClientHttpFailedToTerminateSession=`CLIENT_HTTP_FAILED_TO_TERMINATE_SESSION`,e}({}),X=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.SdkError`})}static[Symbol.hasInstance](e){return Kr(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Kr(this,e)}constructor(e,t,n,r){super(t,r),this.code=e,this.data=n,this.name=`SdkError`,Gr(this,new.target)}},Yr=class extends X{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.SdkHttpError`})}constructor(e,t,n,r){super(e,t,n,r),this.name=`SdkHttpError`}get status(){return this.data.status}get statusText(){return this.data.statusText}};function Xr(e){let t=typeof e==`string`?new URL(e):new URL(e.href);return t.hash=``,t}function Zr(e){if(typeof e!=`object`||!e||Array.isArray(e))return e;let t={...e};return delete t.issuer,t}function Qr({requestedResource:e,configuredResource:t}){let n=typeof e==`string`?new URL(e):new URL(e.href),r=typeof t==`string`?new URL(t):new URL(t.href);if(n.origin!==r.origin||n.pathname.length=$r}function ni(e){return e.filter(e=>!ti(e))}function ri(e){return e.filter(e=>ti(e))}function ii(e){let t=e.structuredContent;return t===void 0||typeof t==`object`&&t&&!Array.isArray(t)||(e.content?.some(e=>e.type===`text`)??!1)?e:{...e,content:[...e.content??[],{type:`text`,text:JSON.stringify(t)}]}}var ai=[`task`,`inputRequests`,`requestState`];function oi(e){return typeof e!=`object`||!e||Array.isArray(e)||e.content!==void 0||ai.some(t=>t in e)?e:{...e,content:[]}}function si(){let e=ee(()=>f([p(),O(),E(),ae(),b(p(),e),T(e)])),t=b(p(),e),n=f([p(),O().int()]),r=p(),i=y({ttl:O().optional()}),a=y({taskId:p()}),o=k({progressToken:n.optional(),"io.modelcontextprotocol/related-task":a.optional()}),s=y({_meta:o.optional()}),c=s.extend({task:i.optional()}),l=y({method:p(),params:s.loose().optional()}),u=y({_meta:o.optional()}),m=y({method:p(),params:u.loose().optional()}),h=k({_meta:o.optional()}),g=f([p(),O().int()]),v=h.strict(),x=u.extend({requestId:g.optional(),reason:p().optional()}),S=m.extend({method:D(`notifications/cancelled`),params:x}),w=y({src:p(),mimeType:p().optional(),sizes:T(p()).optional(),theme:C([`light`,`dark`]).optional()}),ne=y({icons:T(w).optional()}),re=y({name:p(),title:p().optional()}),ie=re.extend({...re.shape,...ne.shape,version:p(),websiteUrl:p().optional(),description:p().optional()}),se=te(y({applyDefaults:E().optional()}),t),ce=ue(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,te(y({form:se.optional(),url:t.optional()}),t.optional())),le=k({list:t.optional(),cancel:t.optional(),requests:k({sampling:k({createMessage:t.optional()}).optional(),elicitation:k({create:t.optional()}).optional()}).optional()}),A=k({list:t.optional(),cancel:t.optional(),requests:k({tools:k({call:t.optional()}).optional()}).optional()}),de=y({experimental:b(p(),t).optional(),sampling:y({context:t.optional(),tools:t.optional()}).optional(),elicitation:ce.optional(),roots:y({listChanged:E().optional()}).optional(),tasks:le.optional(),extensions:b(p(),t).optional()}),pe=s.extend({protocolVersion:p(),capabilities:de,clientInfo:ie}),me=l.extend({method:D(`initialize`),params:pe}),he=y({experimental:b(p(),t).optional(),logging:t.optional(),completions:t.optional(),prompts:y({listChanged:E().optional()}).optional(),resources:y({subscribe:E().optional(),listChanged:E().optional()}).optional(),tools:y({listChanged:E().optional()}).optional(),tasks:A.optional(),extensions:b(p(),t).optional()}),j=h.extend({protocolVersion:p(),capabilities:he,serverInfo:ie,instructions:p().optional()}),ge=m.extend({method:D(`notifications/initialized`),params:u.optional()}),M=l.extend({method:D(`ping`),params:s.optional()}),N=y({progress:O(),total:d(O()),message:d(p())}),_e=y({...u.shape,...N.shape,progressToken:n}),ve=m.extend({method:D(`notifications/progress`),params:_e}),ye=s.extend({cursor:r.optional()}),P=l.extend({params:ye.optional()}),be=h.extend({nextCursor:r.optional()}),F=y({uri:p(),mimeType:d(p()),_meta:b(p(),_()).optional()}),xe=F.extend({text:p()}),Se=p().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:`Invalid Base64 string`}),Ce=F.extend({blob:Se}),we=C([`user`,`assistant`]),Te=y({audience:T(we).optional(),priority:O().min(0).max(1).optional(),lastModified:fe({offset:!0}).optional()}),Ee=y({...re.shape,...ne.shape,uri:p(),description:d(p()),mimeType:d(p()),size:d(O()),annotations:Te.optional(),_meta:d(k({}))}),De=y({...re.shape,...ne.shape,uriTemplate:p(),description:d(p()),mimeType:d(p()),annotations:Te.optional(),_meta:d(k({}))}),Oe=P.extend({method:D(`resources/list`)}),ke=be.extend({resources:T(Ee)}),Ae=P.extend({method:D(`resources/templates/list`)}),je=be.extend({resourceTemplates:T(De)}),Me=s.extend({uri:p()}),Ne=Me,Pe=l.extend({method:D(`resources/read`),params:Ne}),Fe=h.extend({contents:T(f([xe,Ce]))}),I=m.extend({method:D(`notifications/resources/list_changed`),params:u.optional()}),Ie=Me,Le=l.extend({method:D(`resources/subscribe`),params:Ie}),Re=Me,ze=l.extend({method:D(`resources/unsubscribe`),params:Re}),Be=u.extend({uri:p()}),Ve=m.extend({method:D(`notifications/resources/updated`),params:Be}),L=y({name:p(),description:d(p()),required:d(E())}),He=y({...re.shape,...ne.shape,description:d(p()),arguments:d(T(L)),_meta:d(k({}))}),R=P.extend({method:D(`prompts/list`)}),z=be.extend({prompts:T(He)}),B=s.extend({name:p(),arguments:b(p(),p()).optional()}),Ue=l.extend({method:D(`prompts/get`),params:B}),V=y({type:D(`text`),text:p(),annotations:Te.optional(),_meta:b(p(),_()).optional()}),H=y({type:D(`image`),data:Se,mimeType:p(),annotations:Te.optional(),_meta:b(p(),_()).optional()}),We=y({type:D(`audio`),data:Se,mimeType:p(),annotations:Te.optional(),_meta:b(p(),_()).optional()}),Ge=y({type:D(`tool_use`),name:p(),id:p(),input:b(p(),_()),_meta:b(p(),_()).optional()}),Ke=y({type:D(`resource`),resource:f([xe,Ce]),annotations:Te.optional(),_meta:b(p(),_()).optional()}),qe=Ee.extend({type:D(`resource_link`)}),Je=f([V,H,We,qe,Ke]),Ye=y({role:we,content:Je}),Xe=h.extend({description:p().optional(),messages:T(Ye)}),Ze=m.extend({method:D(`notifications/prompts/list_changed`),params:u.optional()}),Qe=y({title:p().optional(),readOnlyHint:E().optional(),destructiveHint:E().optional(),idempotentHint:E().optional(),openWorldHint:E().optional()}),$e=y({taskSupport:C([`required`,`optional`,`forbidden`]).optional()}),et=y({...re.shape,...ne.shape,description:p().optional(),inputSchema:y({type:D(`object`),properties:b(p(),e).optional(),required:T(p()).optional()}).catchall(_()),outputSchema:y({type:D(`object`),properties:b(p(),e).optional(),required:T(p()).optional()}).catchall(_()).optional(),annotations:Qe.optional(),execution:$e.optional(),_meta:b(p(),_()).optional()}),U=P.extend({method:D(`tools/list`)}),tt=be.extend({tools:T(et)}),nt=h.extend({content:T(Je),structuredContent:b(p(),_()).optional(),isError:E().optional()}),rt=c.extend({name:p(),arguments:b(p(),_()).optional()}),it=l.extend({method:D(`tools/call`),params:rt}),at=m.extend({method:D(`notifications/tools/list_changed`),params:u.optional()}),ot=C([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),W=s.extend({level:ot}),st=l.extend({method:D(`logging/setLevel`),params:W}),ct=u.extend({level:ot,logger:p().optional(),data:_()}),lt=m.extend({method:D(`notifications/message`),params:ct}),ut=y({name:p().optional()}),dt=y({hints:T(ut).optional(),costPriority:O().min(0).max(1).optional(),speedPriority:O().min(0).max(1).optional(),intelligencePriority:O().min(0).max(1).optional()}),ft=y({mode:C([`auto`,`required`,`none`]).optional()}),pt=y({type:D(`tool_result`),toolUseId:p().describe(`The unique identifier for the corresponding tool call.`),content:T(Je),structuredContent:y({}).loose().optional(),isError:E().optional(),_meta:b(p(),_()).optional()}),mt=oe(`type`,[V,H,We]),ht=oe(`type`,[V,H,We,Ge,pt]),gt=y({role:we,content:f([ht,T(ht)]),_meta:b(p(),_()).optional()}),_t=c.extend({messages:T(gt),modelPreferences:dt.optional(),systemPrompt:p().optional(),includeContext:C([`none`,`thisServer`,`allServers`]).optional(),temperature:O().optional(),maxTokens:O().int(),stopSequences:T(p()).optional(),metadata:t.optional(),tools:T(et).optional(),toolChoice:ft.optional()}),vt=l.extend({method:D(`sampling/createMessage`),params:_t}),yt=h.extend({model:p(),stopReason:d(C([`endTurn`,`stopSequence`,`maxTokens`]).or(p())),role:we,content:mt}),bt=h.extend({model:p(),stopReason:d(C([`endTurn`,`stopSequence`,`maxTokens`,`toolUse`]).or(p())),role:we,content:f([ht,T(ht)])}),xt=y({type:D(`boolean`),title:p().optional(),description:p().optional(),default:E().optional()}),St=y({type:D(`string`),title:p().optional(),description:p().optional(),minLength:O().optional(),maxLength:O().optional(),format:C([`email`,`uri`,`date`,`date-time`]).optional(),default:p().optional()}),Ct=y({type:C([`number`,`integer`]),title:p().optional(),description:p().optional(),minimum:O().optional(),maximum:O().optional(),default:O().optional()}),wt=y({type:D(`string`),title:p().optional(),description:p().optional(),enum:T(p()),default:p().optional()}),Tt=y({type:D(`string`),title:p().optional(),description:p().optional(),oneOf:T(y({const:p(),title:p()})),default:p().optional()}),Et=y({type:D(`string`),title:p().optional(),description:p().optional(),enum:T(p()),enumNames:T(p()).optional(),default:p().optional()}),Dt=f([wt,Tt]),Ot=y({type:D(`array`),title:p().optional(),description:p().optional(),minItems:O().optional(),maxItems:O().optional(),items:y({type:D(`string`),enum:T(p())}),default:T(p()).optional()}),kt=y({type:D(`array`),title:p().optional(),description:p().optional(),minItems:O().optional(),maxItems:O().optional(),items:y({anyOf:T(y({const:p(),title:p()}))}),default:T(p()).optional()}),At=f([Ot,kt]),jt=f([Et,Dt,At]),Mt=f([jt,xt,St,Ct]),Nt=c.extend({mode:D(`form`).optional(),message:p(),requestedSchema:y({type:D(`object`),properties:b(p(),Mt),required:T(p()).optional()}).catchall(_())}),Pt=c.extend({mode:D(`url`),message:p(),elicitationId:p(),url:p().url()}),Ft=f([Nt,Pt]),G=l.extend({method:D(`elicitation/create`),params:Ft}),K=u.extend({elicitationId:p()}),It=m.extend({method:D(`notifications/elicitation/complete`),params:K}),Lt=h.extend({action:C([`accept`,`decline`,`cancel`]),content:ue(e=>e===null?void 0:e,b(p(),f([p(),O(),E(),T(p())])).optional())}),Rt=y({type:D(`ref/resource`),uri:p()}),zt=y({type:D(`ref/prompt`),name:p()}),Bt=s.extend({ref:f([zt,Rt]),argument:y({name:p(),value:p()}),context:y({arguments:b(p(),p()).optional()}).optional()}),Vt=l.extend({method:D(`completion/complete`),params:Bt}),Ht=h.extend({completion:k({values:T(p()).max(100),total:d(O().int()),hasMore:d(E())})}),Ut=y({uri:p().startsWith(`file://`),name:p().optional(),_meta:b(p(),_()).optional()}),Wt=l.extend({method:D(`roots/list`),params:s.optional()}),Gt=h.extend({roots:T(Ut)}),Kt=m.extend({method:D(`notifications/roots/list_changed`),params:u.optional()}),qt=k({ttl:O().optional(),pollInterval:O().optional()}),Jt=C([`working`,`input_required`,`completed`,`failed`,`cancelled`]),Yt=y({taskId:p(),status:Jt,ttl:f([O(),ae()]),createdAt:p(),lastUpdatedAt:p(),pollInterval:d(O()),statusMessage:d(p())}),Xt=h.extend({task:Yt}),Zt=u.merge(Yt),Qt=m.extend({method:D(`notifications/tasks/status`),params:Zt}),$t=l.extend({method:D(`tasks/get`),params:s.extend({taskId:p()})}),q=h.merge(Yt),en=l.extend({method:D(`tasks/result`),params:s.extend({taskId:p()})}),tn=h.loose(),nn=P.extend({method:D(`tasks/list`)}),rn=be.extend({tasks:T(Yt)}),an=l.extend({method:D(`tasks/cancel`),params:s.extend({taskId:p()})});return{JSONValueSchema:e,JSONObjectSchema:t,ProgressTokenSchema:n,CursorSchema:r,TaskMetadataSchema:i,RelatedTaskMetadataSchema:a,RequestMetaSchema:o,BaseRequestParamsSchema:s,TaskAugmentedRequestParamsSchema:c,RequestSchema:l,NotificationsParamsSchema:u,NotificationSchema:m,ResultSchema:h,RequestIdSchema:g,EmptyResultSchema:v,CancelledNotificationParamsSchema:x,CancelledNotificationSchema:S,IconSchema:w,IconsSchema:ne,BaseMetadataSchema:re,ImplementationSchema:ie,ClientTasksCapabilitySchema:le,ServerTasksCapabilitySchema:A,ClientCapabilitiesSchema:de,InitializeRequestParamsSchema:pe,InitializeRequestSchema:me,ServerCapabilitiesSchema:he,InitializeResultSchema:j,InitializedNotificationSchema:ge,PingRequestSchema:M,ProgressSchema:N,ProgressNotificationParamsSchema:_e,ProgressNotificationSchema:ve,PaginatedRequestParamsSchema:ye,PaginatedRequestSchema:P,PaginatedResultSchema:be,ResourceContentsSchema:F,TextResourceContentsSchema:xe,BlobResourceContentsSchema:Ce,RoleSchema:we,AnnotationsSchema:Te,ResourceSchema:Ee,ResourceTemplateSchema:De,ListResourcesRequestSchema:Oe,ListResourcesResultSchema:ke,ListResourceTemplatesRequestSchema:Ae,ListResourceTemplatesResultSchema:je,ResourceRequestParamsSchema:Me,ReadResourceRequestParamsSchema:Ne,ReadResourceRequestSchema:Pe,ReadResourceResultSchema:Fe,ResourceListChangedNotificationSchema:I,SubscribeRequestParamsSchema:Ie,SubscribeRequestSchema:Le,UnsubscribeRequestParamsSchema:Re,UnsubscribeRequestSchema:ze,ResourceUpdatedNotificationParamsSchema:Be,ResourceUpdatedNotificationSchema:Ve,PromptArgumentSchema:L,PromptSchema:He,ListPromptsRequestSchema:R,ListPromptsResultSchema:z,GetPromptRequestParamsSchema:B,GetPromptRequestSchema:Ue,TextContentSchema:V,ImageContentSchema:H,AudioContentSchema:We,ToolUseContentSchema:Ge,EmbeddedResourceSchema:Ke,ResourceLinkSchema:qe,ContentBlockSchema:Je,PromptMessageSchema:Ye,GetPromptResultSchema:Xe,PromptListChangedNotificationSchema:Ze,ToolAnnotationsSchema:Qe,ToolExecutionSchema:$e,ToolSchema:et,ListToolsRequestSchema:U,ListToolsResultSchema:tt,CallToolResultSchema:nt,CallToolRequestParamsSchema:rt,CallToolRequestSchema:it,ToolListChangedNotificationSchema:at,LoggingLevelSchema:ot,SetLevelRequestParamsSchema:W,SetLevelRequestSchema:st,LoggingMessageNotificationParamsSchema:ct,LoggingMessageNotificationSchema:lt,ModelHintSchema:ut,ModelPreferencesSchema:dt,ToolChoiceSchema:ft,ToolResultContentSchema:pt,SamplingContentSchema:mt,SamplingMessageContentBlockSchema:ht,SamplingMessageSchema:gt,CreateMessageRequestParamsSchema:_t,CreateMessageRequestSchema:vt,CreateMessageResultSchema:yt,CreateMessageResultWithToolsSchema:bt,BooleanSchemaSchema:xt,StringSchemaSchema:St,NumberSchemaSchema:Ct,UntitledSingleSelectEnumSchemaSchema:wt,TitledSingleSelectEnumSchemaSchema:Tt,LegacyTitledEnumSchemaSchema:Et,SingleSelectEnumSchemaSchema:Dt,UntitledMultiSelectEnumSchemaSchema:Ot,TitledMultiSelectEnumSchemaSchema:kt,MultiSelectEnumSchemaSchema:At,EnumSchemaSchema:jt,PrimitiveSchemaDefinitionSchema:Mt,ElicitRequestFormParamsSchema:Nt,ElicitRequestURLParamsSchema:Pt,ElicitRequestParamsSchema:Ft,ElicitRequestSchema:G,ElicitationCompleteNotificationParamsSchema:K,ElicitationCompleteNotificationSchema:It,ElicitResultSchema:Lt,ResourceTemplateReferenceSchema:Rt,PromptReferenceSchema:zt,CompleteRequestParamsSchema:Bt,CompleteRequestSchema:Vt,CompleteResultSchema:Ht,RootSchema:Ut,ListRootsRequestSchema:Wt,ListRootsResultSchema:Gt,RootsListChangedNotificationSchema:Kt,TaskCreationParamsSchema:qt,TaskStatusSchema:Jt,TaskSchema:Yt,CreateTaskResultSchema:Xt,TaskStatusNotificationParamsSchema:Zt,TaskStatusNotificationSchema:Qt,GetTaskRequestSchema:$t,GetTaskResultSchema:q,GetTaskPayloadRequestSchema:en,GetTaskPayloadResultSchema:tn,ListTasksRequestSchema:nn,ListTasksResultSchema:rn,CancelTaskRequestSchema:an,CancelTaskResultSchema:h.merge(Yt),ClientRequestSchema:f([M,me,Vt,st,Ue,R,Oe,Ae,Pe,Le,ze,it,U,$t,en,nn,an]),ClientNotificationSchema:f([S,ve,ge,Kt,Qt]),ClientResultSchema:f([v,yt,bt,Lt,Gt,q,rn,Xt]),ServerRequestSchema:f([M,vt,G,Wt,$t,en,nn,an]),ServerNotificationSchema:f([S,ve,lt,Ve,I,at,Ze,Qt,It]),ServerResultSchema:f([v,j,Ht,Xe,z,ke,je,Fe,nt,tt,q,rn,Xt]),CallToolResultWireSchema:_().superRefine((e,t)=>{if(typeof e==`object`&&e&&!Array.isArray(e)&&e.content===void 0){for(let n of ai)if(n in e){t.addIssue({code:`custom`,message:`content is required when the body carries '${n}' — another result family cannot default into an empty tools/call success`});return}}}).transform(oi).pipe(nt)}}var ci;function li(){return ci??=si()}function ui(e){return e.type!==`object`}var di=new Set([`const`,`enum`,`default`,`examples`]),fi=new Set([`properties`,`patternProperties`,`$defs`,`definitions`,`dependentSchemas`,`dependencies`]);function pi(e){return e!==void 0&&!(typeof e==`string`&&e.startsWith(`#`))}function mi(e){let t=typeof e.$schema==`string`?e.$schema:void 0;if(pi(e.$id))return{...t!==void 0&&{$schema:t},type:`object`,properties:{result:e},required:[`result`]};let n=we(e.$schema)&&e.$recursiveAnchor!==!0,r=(e,t)=>{if(Array.isArray(e))return e.map(e=>r(e,!1));if(typeof e!=`object`||!e||!t&&pi(e.$id))return e;let i={},a=!1;for(let[o,s]of Object.entries(e))t?i[o]=r(s,!1):(o===`$ref`||o===`$dynamicRef`)&&typeof s==`string`?i[o]=s===`#`?`#/properties/result`:s.startsWith(`#/`)?`#/properties/result${s.slice(1)}`:s:o===`$recursiveRef`&&s===`#`&&n?a=!0:i[o]=di.has(o)?s:fi.has(o)?r(s,!0):r(s,!1);return a&&(`$ref`in i?i.allOf=[...Array.isArray(i.allOf)?i.allOf:[],{$ref:`#/properties/result`}]:i.$ref=`#/properties/result`),i};return{...t!==void 0&&{$schema:t},type:`object`,properties:{result:r(e,!1)},required:[`result`]}}var hi={ping:null,initialize:null,"completion/complete":null,"logging/setLevel":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"resources/subscribe":null,"resources/unsubscribe":null,"tools/call":null,"tools/list":null,"tasks/get":null,"tasks/result":null,"tasks/list":null,"tasks/cancel":null,"sampling/createMessage":null,"elicitation/create":null,"roots/list":null},gi={"notifications/cancelled":null,"notifications/progress":null,"notifications/initialized":null,"notifications/roots/list_changed":null,"notifications/tasks/status":null,"notifications/message":null,"notifications/resources/updated":null,"notifications/resources/list_changed":null,"notifications/tools/list_changed":null,"notifications/prompts/list_changed":null,"notifications/elicitation/complete":null},_i={ping:null,initialize:null,"completion/complete":null,"logging/setLevel":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"resources/subscribe":null,"resources/unsubscribe":null,"tools/call":null,"tools/list":null,"sampling/createMessage":null,"elicitation/create":null,"roots/list":null},vi;function yi(){if(vi)return vi;let e=li();return vi={requestSchemas:{ping:e.PingRequestSchema,initialize:e.InitializeRequestSchema,"completion/complete":e.CompleteRequestSchema,"logging/setLevel":e.SetLevelRequestSchema,"prompts/get":e.GetPromptRequestSchema,"prompts/list":e.ListPromptsRequestSchema,"resources/list":e.ListResourcesRequestSchema,"resources/templates/list":e.ListResourceTemplatesRequestSchema,"resources/read":e.ReadResourceRequestSchema,"resources/subscribe":e.SubscribeRequestSchema,"resources/unsubscribe":e.UnsubscribeRequestSchema,"tools/call":e.CallToolRequestSchema,"tools/list":e.ListToolsRequestSchema,"tasks/get":e.GetTaskRequestSchema,"tasks/result":e.GetTaskPayloadRequestSchema,"tasks/list":e.ListTasksRequestSchema,"tasks/cancel":e.CancelTaskRequestSchema,"sampling/createMessage":e.CreateMessageRequestSchema,"elicitation/create":e.ElicitRequestSchema,"roots/list":e.ListRootsRequestSchema},notificationSchemas:{"notifications/cancelled":e.CancelledNotificationSchema,"notifications/progress":e.ProgressNotificationSchema,"notifications/initialized":e.InitializedNotificationSchema,"notifications/roots/list_changed":e.RootsListChangedNotificationSchema,"notifications/tasks/status":e.TaskStatusNotificationSchema,"notifications/message":e.LoggingMessageNotificationSchema,"notifications/resources/updated":e.ResourceUpdatedNotificationSchema,"notifications/resources/list_changed":e.ResourceListChangedNotificationSchema,"notifications/tools/list_changed":e.ToolListChangedNotificationSchema,"notifications/prompts/list_changed":e.PromptListChangedNotificationSchema,"notifications/elicitation/complete":e.ElicitationCompleteNotificationSchema},resultSchemas:{ping:e.EmptyResultSchema,initialize:e.InitializeResultSchema,"completion/complete":e.CompleteResultSchema,"logging/setLevel":e.EmptyResultSchema,"prompts/get":e.GetPromptResultSchema,"prompts/list":e.ListPromptsResultSchema,"resources/list":e.ListResourcesResultSchema,"resources/templates/list":e.ListResourceTemplatesResultSchema,"resources/read":e.ReadResourceResultSchema,"resources/subscribe":e.EmptyResultSchema,"resources/unsubscribe":e.EmptyResultSchema,"tools/call":e.CallToolResultWireSchema,"tools/list":e.ListToolsResultSchema,"sampling/createMessage":e.CreateMessageResultWithToolsSchema,"elicitation/create":e.ElicitResultSchema,"roots/list":e.ListRootsResultSchema}},vi}function bi(e){return Object.prototype.hasOwnProperty.call(hi,e)}function xi(e){return Object.prototype.hasOwnProperty.call(gi,e)}function Si(e){return Object.prototype.hasOwnProperty.call(_i,e)}function Ci(e){return Si(e)?yi().resultSchemas[e]:void 0}function wi(e){return bi(e)?yi().requestSchemas[e]:void 0}function Ti(e){return xi(e)?yi().notificationSchemas[e]:void 0}Object.keys(hi),Object.keys(gi);function Ei(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Di(e,t){if(e===void 0)return{ok:!1,reason:`not-in-era`};let n=e.safeParse(t);return n.success?{ok:!0,value:n.data}:{ok:!1,reason:`invalid`,message:String(n.error)}}var Oi={ok:!1,reason:`not-in-era`};function ki(e){return Ei(e)&&Ei(e.outputSchema)&&ui(e.outputSchema)}function Ai(e){return e}var ji={era:`2025-11-25`,hasRequestMethod:bi,hasNotificationMethod:xi,validateRequest:(e,t)=>Di(wi(e),t),validateResult:(e,t)=>Di(Ci(e),t),validateNotification:(e,t)=>Di(Ti(e),t),hasInputRequestMethod:()=>!1,validateInputRequest:()=>Oi,validateInputResponse:()=>Oi,samplingResultVariant:((e,t)=>{let n=li();return Di(e?n.CreateMessageResultWithToolsSchema:n.CreateMessageResultSchema,t)}),outboundEnvelope:e=>void 0,validateEnvelopeMeta:e=>[],projectCallToolResult(e,t){let n=ii(e),r=n.structuredContent;if(r===void 0)return n;let i=typeof r!=`object`||!r||Array.isArray(r),a=t!==void 0&&ui(t);return!i&&!a?n:{...n,structuredContent:{result:r}}},decodeResult(e,t){if(Ei(t)&&`resultType`in t){let e={...t};return delete e.resultType,{kind:`complete`,result:Ai(e)}}return{kind:`complete`,result:Ai(t)}},encodeResult(e,t){if(e!==`tools/list`)return t;let n=t.tools;return!Array.isArray(n)||!n.some(e=>ki(e))?t:{...t,tools:n.map(e=>ki(e)?{...e,outputSchema:mi(e.outputSchema)}:e)}},encodeErrorCode:e=>e===-32002?-32602:e,checkInboundEnvelope:e=>void 0};function Mi(){let e=ee(()=>f([p(),O(),E(),ae(),b(p(),e),T(e)])),t=b(p(),e),n=f([p(),O().int()]),r=p(),i=f([p(),O().int()]),a=C([`user`,`assistant`]),o=C([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),s=p().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:`Invalid Base64 string`}),c=y({ttl:O().optional()}),l=y({taskId:p()}),u=k({progressToken:n.optional(),"io.modelcontextprotocol/related-task":l.optional()}),m=y({_meta:u.optional()}),h=m.extend({task:c.optional()}),g=y({_meta:u.optional()}),v=y({method:p(),params:g.loose().optional()}),x=y({src:p(),mimeType:p().optional(),sizes:T(p()).optional(),theme:C([`light`,`dark`]).optional()}),S=y({icons:T(x).optional()}),w=y({name:p(),title:p().optional()}),ne=w.extend({...w.shape,...S.shape,version:p(),websiteUrl:p().optional(),description:p().optional()}),re=te(y({applyDefaults:E().optional()}),t),ie=ue(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,te(y({form:re.optional(),url:t.optional()}),t.optional())),oe=k({list:t.optional(),cancel:t.optional(),requests:k({sampling:k({createMessage:t.optional()}).optional(),elicitation:k({create:t.optional()}).optional()}).optional()}),se=k({list:t.optional(),cancel:t.optional(),requests:k({tools:k({call:t.optional()}).optional()}).optional()}),ce=y({experimental:b(p(),t).optional(),sampling:y({context:t.optional(),tools:t.optional()}).optional(),elicitation:ie.optional(),roots:y({listChanged:E().optional()}).optional(),tasks:oe.optional(),extensions:b(p(),t).optional()}),le=y({experimental:b(p(),t).optional(),logging:t.optional(),completions:t.optional(),prompts:y({listChanged:E().optional()}).optional(),resources:y({subscribe:E().optional(),listChanged:E().optional()}).optional(),tools:y({listChanged:E().optional()}).optional(),tasks:se.optional(),extensions:b(p(),t).optional()}),A=y({progress:O(),total:d(O()),message:d(p())}),de=y({...g.shape,...A.shape,progressToken:n}),pe=v.extend({method:D(`notifications/progress`),params:de}),me=g.extend({level:o,logger:p().optional(),data:_()}),he=v.extend({method:D(`notifications/message`),params:me}),j=y({uri:p(),mimeType:d(p()),_meta:b(p(),_()).optional()}),ge=j.extend({text:p()}),M=j.extend({blob:s}),N=y({audience:T(a).optional(),priority:O().min(0).max(1).optional(),lastModified:fe({offset:!0}).optional()}),_e=y({...w.shape,...S.shape,uri:p(),description:d(p()),mimeType:d(p()),size:d(O()),annotations:N.optional(),_meta:d(k({}))}),ve=y({...w.shape,...S.shape,uriTemplate:p(),description:d(p()),mimeType:d(p()),annotations:N.optional(),_meta:d(k({}))}),ye=v.extend({method:D(`notifications/resources/list_changed`),params:g.optional()}),P=g.extend({uri:p()}),be=v.extend({method:D(`notifications/resources/updated`),params:P}),F=y({name:p(),description:d(p()),required:d(E())}),xe=y({...w.shape,...S.shape,description:d(p()),arguments:d(T(F)),_meta:d(k({}))}),Se=v.extend({method:D(`notifications/prompts/list_changed`),params:g.optional()}),Ce=y({type:D(`text`),text:p(),annotations:N.optional(),_meta:b(p(),_()).optional()}),we=y({type:D(`image`),data:s,mimeType:p(),annotations:N.optional(),_meta:b(p(),_()).optional()}),Te=y({type:D(`audio`),data:s,mimeType:p(),annotations:N.optional(),_meta:b(p(),_()).optional()}),Ee=y({type:D(`tool_use`),name:p(),id:p(),input:b(p(),_()),_meta:b(p(),_()).optional()}),De=y({type:D(`resource`),resource:f([ge,M]),annotations:N.optional(),_meta:b(p(),_()).optional()}),Oe=_e.extend({type:D(`resource_link`)}),Ne=f([Ce,we,Te,Oe,De]),Fe=y({role:a,content:Ne}),I=y({title:p().optional(),readOnlyHint:E().optional(),destructiveHint:E().optional(),idempotentHint:E().optional(),openWorldHint:E().optional()}),Ie=v.extend({method:D(`notifications/tools/list_changed`),params:g.optional()}),Le=y({name:p().optional()}),Re=y({hints:T(Le).optional(),costPriority:O().min(0).max(1).optional(),speedPriority:O().min(0).max(1).optional(),intelligencePriority:O().min(0).max(1).optional()}),ze=y({mode:C([`auto`,`required`,`none`]).optional()}),Be=y({type:D(`boolean`),title:p().optional(),description:p().optional(),default:E().optional()}),Ve=y({type:D(`string`),title:p().optional(),description:p().optional(),minLength:O().optional(),maxLength:O().optional(),format:C([`email`,`uri`,`date`,`date-time`]).optional(),default:p().optional()}),L=y({type:C([`number`,`integer`]),title:p().optional(),description:p().optional(),minimum:O().optional(),maximum:O().optional(),default:O().optional()}),He=y({type:D(`string`),title:p().optional(),description:p().optional(),enum:T(p()),default:p().optional()}),R=y({type:D(`string`),title:p().optional(),description:p().optional(),oneOf:T(y({const:p(),title:p()})),default:p().optional()}),z=y({type:D(`string`),title:p().optional(),description:p().optional(),enum:T(p()),enumNames:T(p()).optional(),default:p().optional()}),B=f([He,R]),Ue=y({type:D(`array`),title:p().optional(),description:p().optional(),minItems:O().optional(),maxItems:O().optional(),items:y({type:D(`string`),enum:T(p())}),default:T(p()).optional()}),V=y({type:D(`array`),title:p().optional(),description:p().optional(),minItems:O().optional(),maxItems:O().optional(),items:y({anyOf:T(y({const:p(),title:p()}))}),default:T(p()).optional()}),H=f([Ue,V]),We=f([z,B,H]),Ge=f([We,Be,Ve,L]),Ke=h.extend({mode:D(`form`).optional(),message:p(),requestedSchema:y({type:D(`object`),properties:b(p(),Ge),required:T(p()).optional()}).catchall(_())}),qe=y({type:D(`ref/resource`),uri:p()}),Je=y({type:D(`ref/prompt`),name:p()}),Ye=y({uri:p().startsWith(`file://`),name:p().optional(),_meta:b(p(),_()).optional()}),Xe=ce.shape,Ze=y({experimental:Xe.experimental,sampling:Xe.sampling,elicitation:Xe.elicitation,roots:Xe.roots,extensions:Xe.extensions}),Qe=le.shape,$e=y({experimental:Qe.experimental,logging:Qe.logging,completions:Qe.completions,prompts:Qe.prompts,resources:Qe.resources,tools:Qe.tools,extensions:Qe.extensions}),et=k({progressToken:n.optional(),[ke]:p(),[Ae]:ne.optional(),[Me]:Ze,[Pe]:o.optional()}),U=y({...w.shape,...S.shape,description:p().optional(),inputSchema:k({$schema:p().optional(),type:D(`object`)}),outputSchema:k({$schema:p().optional()}).optional(),annotations:I.optional(),_meta:b(p(),_()).optional()}),tt=y({type:D(`tool_result`),toolUseId:p(),content:T(Ne),structuredContent:_().optional(),isError:E().optional(),_meta:b(p(),_()).optional()}),nt=f([Ce,we,Te,Ee,tt]),rt=y({role:a,content:f([nt,T(nt)]),_meta:b(p(),_()).optional()}),it=p(),at=k({[je]:ne.optional().catch(void 0)}),ot=at.optional();function W(e){return k({_meta:ot,resultType:it.default(`complete`),...e})}let st=W({}),ct=W({nextCursor:r.optional()}),lt=W({content:T(Ne),structuredContent:_().optional(),isError:E().optional()}),ut=W({ttlMs:O().int().min(0),cacheScope:C([`public`,`private`]),tools:T(U),nextCursor:r.optional()}),dt=W({ttlMs:O().int().min(0),cacheScope:C([`public`,`private`]),prompts:T(xe),nextCursor:r.optional()}),ft=W({description:p().optional(),messages:T(Fe)}),pt=W({ttlMs:O().int().min(0),cacheScope:C([`public`,`private`]),resources:T(_e),nextCursor:r.optional()}),mt=W({ttlMs:O().int().min(0),cacheScope:C([`public`,`private`]),resourceTemplates:T(ve),nextCursor:r.optional()}),ht=W({ttlMs:O().int().min(0),cacheScope:C([`public`,`private`]),contents:T(f([ge,M]))}),gt=W({completion:y({values:T(p()).max(100),total:O().int().optional(),hasMore:E().optional()}).loose()}),_t=W({ttlMs:O().int().min(0),cacheScope:C([`public`,`private`])}),vt=W({ttlMs:O().int().min(0).catch(0),cacheScope:C([`public`,`private`]).catch(`private`),supportedVersions:T(p()),capabilities:$e,instructions:p().optional()}),yt=y({messages:T(rt),modelPreferences:Re.optional(),systemPrompt:p().optional(),includeContext:C([`none`,`thisServer`,`allServers`]).optional(),temperature:O().optional(),maxTokens:O().int(),stopSequences:T(p()).optional(),metadata:t.optional(),tools:T(U).optional(),toolChoice:ze.optional()}),bt=y({method:D(`sampling/createMessage`),params:yt}),xt=y({method:D(`roots/list`),params:y({_meta:b(p(),_()).optional()}).optional()}),St=y({...rt.shape,model:p(),stopReason:p().optional()}),Ct=y({roots:T(Ye)}),wt=y({action:C([`accept`,`decline`,`cancel`]),content:b(p(),f([p(),O(),E(),T(p())])).optional()}),Tt=y({mode:D(`url`),message:p(),url:p().url()}),Et=f([Ke,Tt]),Dt=y({method:D(`elicitation/create`),params:Et}),Ot=f([bt,xt,Dt]),kt=f([St,Ct,wt]),At=b(p(),Ot),jt=b(p(),kt),Mt=W({inputRequests:At.optional(),requestState:p().optional()}),Nt={inputResponses:jt.optional(),requestState:p().optional()},Pt=y({_meta:et,...Nt}),Ft=k({progressToken:n.optional()});function G(e,t){return y({method:D(e),params:y({_meta:et,...t})})}function K(e,t){return y({method:D(e),params:y({_meta:Ft.optional(),...t}).optional()})}let It={name:p(),arguments:b(p(),_()).optional(),...Nt},Lt={cursor:r.optional()},Rt=G(`tools/call`,It),zt=G(`tools/list`,Lt),Bt=G(`prompts/list`,Lt),Vt=G(`prompts/get`,{name:p(),arguments:b(p(),p()).optional(),...Nt}),Ht=G(`resources/list`,Lt),Ut=G(`resources/templates/list`,Lt),Wt=G(`resources/read`,{uri:p(),...Nt}),Gt={ref:f([Je,qe]),argument:y({name:p(),value:p()}),context:y({arguments:b(p(),p()).optional()}).optional()},Kt=G(`completion/complete`,Gt),qt=G(`server/discover`,{}),Jt=y({toolsListChanged:E().optional(),promptsListChanged:E().optional(),resourcesListChanged:E().optional(),resourceSubscriptions:T(p()).optional()}),Yt={notifications:Jt},Xt=G(`subscriptions/listen`,Yt),Zt=at.extend({"io.modelcontextprotocol/subscriptionId":i}),Qt=k({_meta:Zt,resultType:it.default(`complete`)}),$t={"tools/call":K(`tools/call`,It),"tools/list":K(`tools/list`,Lt),"prompts/get":K(`prompts/get`,{name:p(),arguments:b(p(),p()).optional()}),"prompts/list":K(`prompts/list`,Lt),"resources/list":K(`resources/list`,Lt),"resources/templates/list":K(`resources/templates/list`,Lt),"resources/read":K(`resources/read`,{uri:p()}),"completion/complete":K(`completion/complete`,Gt),"server/discover":K(`server/discover`,{}),"subscriptions/listen":K(`subscriptions/listen`,Yt)};function q(e){return k({_meta:ot,...e})}let en={"tools/call":q({content:T(Ne),structuredContent:_().optional(),isError:E().optional()}),"tools/list":q({ttlMs:O().int().min(0),cacheScope:C([`public`,`private`]),tools:T(U),nextCursor:r.optional()}),"prompts/get":q({description:p().optional(),messages:T(Fe)}),"prompts/list":q({ttlMs:O().int().min(0),cacheScope:C([`public`,`private`]),prompts:T(xe),nextCursor:r.optional()}),"resources/list":q({ttlMs:O().int().min(0),cacheScope:C([`public`,`private`]),resources:T(_e),nextCursor:r.optional()}),"resources/templates/list":q({ttlMs:O().int().min(0),cacheScope:C([`public`,`private`]),resourceTemplates:T(ve),nextCursor:r.optional()}),"resources/read":q({ttlMs:O().int().min(0),cacheScope:C([`public`,`private`]),contents:T(f([ge,M]))}),"completion/complete":q({completion:y({values:T(p()).max(100),total:O().int().optional(),hasMore:E().optional()}).loose()}),"server/discover":q({ttlMs:O().int().min(0).catch(0),cacheScope:C([`public`,`private`]).catch(`private`),supportedVersions:T(p()),capabilities:$e,instructions:p().optional()}),"subscriptions/listen":q({})},tn=k({"io.modelcontextprotocol/subscriptionId":i.optional()}),nn=y({method:D(`notifications/subscriptions/acknowledged`),params:y({_meta:tn.optional(),notifications:Jt})}),rn=y({_meta:tn.optional(),requestId:i,reason:p().optional()}),an=y({method:D(`notifications/cancelled`),params:rn}),on={"notifications/cancelled":an,"notifications/progress":pe,"notifications/message":he,"notifications/resources/updated":be,"notifications/resources/list_changed":ye,"notifications/tools/list_changed":Ie,"notifications/prompts/list_changed":Se,"notifications/subscriptions/acknowledged":nn},sn=e=>y({jsonrpc:D(`2.0`),id:f([p(),O().int()]),result:e}).strict();return{JSONValueSchema:e,JSONObjectSchema:t,ProgressTokenSchema:n,CursorSchema:r,RequestIdSchema:i,RoleSchema:a,LoggingLevelSchema:o,TaskMetadataSchema:c,RelatedTaskMetadataSchema:l,RequestMetaSchema:u,BaseRequestParamsSchema:m,TaskAugmentedRequestParamsSchema:h,NotificationsParamsSchema:g,NotificationSchema:v,IconSchema:x,IconsSchema:S,BaseMetadataSchema:w,ImplementationSchema:ne,ClientTasksCapabilitySchema:oe,ServerTasksCapabilitySchema:se,ClientCapabilitiesSchema:ce,ServerCapabilitiesSchema:le,ProgressSchema:A,ProgressNotificationParamsSchema:de,ProgressNotificationSchema:pe,LoggingMessageNotificationParamsSchema:me,LoggingMessageNotificationSchema:he,ResourceContentsSchema:j,TextResourceContentsSchema:ge,BlobResourceContentsSchema:M,AnnotationsSchema:N,ResourceSchema:_e,ResourceTemplateSchema:ve,ResourceListChangedNotificationSchema:ye,ResourceUpdatedNotificationParamsSchema:P,ResourceUpdatedNotificationSchema:be,PromptArgumentSchema:F,PromptSchema:xe,PromptListChangedNotificationSchema:Se,TextContentSchema:Ce,ImageContentSchema:we,AudioContentSchema:Te,ToolUseContentSchema:Ee,EmbeddedResourceSchema:De,ResourceLinkSchema:Oe,ContentBlockSchema:Ne,PromptMessageSchema:Fe,ToolAnnotationsSchema:I,ToolListChangedNotificationSchema:Ie,ModelHintSchema:Le,ModelPreferencesSchema:Re,ToolChoiceSchema:ze,BooleanSchemaSchema:Be,StringSchemaSchema:Ve,NumberSchemaSchema:L,UntitledSingleSelectEnumSchemaSchema:He,TitledSingleSelectEnumSchemaSchema:R,LegacyTitledEnumSchemaSchema:z,SingleSelectEnumSchemaSchema:B,UntitledMultiSelectEnumSchemaSchema:Ue,TitledMultiSelectEnumSchemaSchema:V,MultiSelectEnumSchemaSchema:H,EnumSchemaSchema:We,PrimitiveSchemaDefinitionSchema:Ge,ElicitRequestFormParamsSchema:Ke,ResourceTemplateReferenceSchema:qe,PromptReferenceSchema:Je,RootSchema:Ye,ClientCapabilities2026Schema:Ze,ServerCapabilities2026Schema:$e,RequestMetaEnvelopeSchema:et,ToolSchema:U,ToolResultContentSchema:tt,SamplingMessageContentBlockSchema:nt,SamplingMessageSchema:rt,ResultTypeSchema:it,ResultMetaSchema:at,ResultSchema:st,PaginatedResultSchema:ct,CallToolResultSchema:lt,ListToolsResultSchema:ut,ListPromptsResultSchema:dt,GetPromptResultSchema:ft,ListResourcesResultSchema:pt,ListResourceTemplatesResultSchema:mt,ReadResourceResultSchema:ht,CompleteResultSchema:gt,CacheableResultSchema:_t,DiscoverResultSchema:vt,CreateMessageRequestParamsSchema:yt,CreateMessageRequestSchema:bt,ListRootsRequestSchema:xt,CreateMessageResultSchema:St,ListRootsResultSchema:Ct,ElicitResultSchema:wt,ElicitRequestURLParamsSchema:Tt,ElicitRequestParamsSchema:Et,ElicitRequestSchema:Dt,InputRequestSchema:Ot,InputResponseSchema:kt,InputRequestsSchema:At,InputResponsesSchema:jt,InputRequiredResultSchema:Mt,InputResponseRequestParamsSchema:Pt,CallToolRequestSchema:Rt,ListToolsRequestSchema:zt,ListPromptsRequestSchema:Bt,GetPromptRequestSchema:Vt,ListResourcesRequestSchema:Ht,ListResourceTemplatesRequestSchema:Ut,ReadResourceRequestSchema:Wt,CompleteRequestSchema:Kt,DiscoverRequestSchema:qt,SubscriptionFilterSchema:Jt,SubscriptionsListenRequestSchema:Xt,SubscriptionsListenResultMetaSchema:Zt,SubscriptionsListenResultSchema:Qt,dispatchRequestSchemas:$t,dispatchResultSchemas:en,NotificationMetaSchema:tn,SubscriptionsAcknowledgedNotificationSchema:nn,CancelledNotificationParamsSchema:rn,CancelledNotificationSchema:an,notificationSchemas2026:on,JSONRPCResultResponseSchema:sn(st),CallToolResultResponseSchema:sn(f([lt,Mt])),ListToolsResultResponseSchema:sn(ut),ListPromptsResultResponseSchema:sn(dt),GetPromptResultResponseSchema:sn(f([ft,Mt])),ListResourcesResultResponseSchema:sn(pt),ListResourceTemplatesResultResponseSchema:sn(mt),ReadResourceResultResponseSchema:sn(f([ht,Mt])),CompleteResultResponseSchema:sn(gt),DiscoverResultResponseSchema:sn(vt)}}var Ni;function Pi(){return Ni??=Mi()}var Fi=[`tools/list`,`prompts/list`,`resources/list`,`resources/templates/list`,`resources/read`,`server/discover`];function Ii(e){return Fi.includes(e)}var Li=Symbol(`modelcontextprotocol.resultCacheHintFallback`);function Ri(e){return e[Li]}function zi(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0}function Bi(e){return e===`public`||e===`private`}var Z=function(e){return e[e.ParseError=-32700]=`ParseError`,e[e.InvalidRequest=-32600]=`InvalidRequest`,e[e.MethodNotFound=-32601]=`MethodNotFound`,e[e.InvalidParams=-32602]=`InvalidParams`,e[e.InternalError=-32603]=`InternalError`,e[e.ResourceNotFound=-32002]=`ResourceNotFound`,e[e.MissingRequiredClientCapability=-32021]=`MissingRequiredClientCapability`,e[e.UnsupportedProtocolVersion=-32022]=`UnsupportedProtocolVersion`,e[e.UrlElicitationRequired=-32042]=`UrlElicitationRequired`,e}({}),Q=class e extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.ProtocolError`})}static[Symbol.hasInstance](e){return Kr(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Kr(this,e)}constructor(e,t,n){super(t),this.code=e,this.data=n,this.name=`ProtocolError`,Gr(this,new.target)}static fromError(t,n,r){if(t===Z.UrlElicitationRequired&&r){let e=r;if(e.elicitations)return new Hi(e.elicitations,n)}if(t===Z.UnsupportedProtocolVersion&&r){let e=r;if(Array.isArray(e.supported)&&typeof e.requested==`string`)return new Ui({supported:e.supported,requested:e.requested},n)}if(t===Z.InvalidParams||t===Z.ResourceNotFound){let e=r;if(typeof e?.uri==`string`&&(t===Z.ResourceNotFound||Object.keys(e).length===1))return new Vi(e.uri,n)}if(t===Z.MissingRequiredClientCapability&&r){let e=r;if(e.requiredCapabilities!==null&&typeof e.requiredCapabilities==`object`&&!Array.isArray(e.requiredCapabilities))return new Wi({requiredCapabilities:e.requiredCapabilities},n)}return new e(t,n,r)}},Vi=class extends Q{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.ResourceNotFoundError`})}constructor(e,t=`Resource not found: ${e}`){super(Z.InvalidParams,t,{uri:e})}get uri(){return this.data.uri}},Hi=class extends Q{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.UrlElicitationRequiredError`})}constructor(e,t=`URL elicitation${e.length>1?`s`:``} required`){super(Z.UrlElicitationRequired,t,{elicitations:e})}get elicitations(){return this.data?.elicitations??[]}},Ui=class extends Q{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.UnsupportedProtocolVersionError`})}constructor(e,t=`Unsupported protocol version: ${e.requested}`){super(Z.UnsupportedProtocolVersion,t,e)}get supported(){return this.data.supported}get requested(){return this.data.requested}},Wi=class extends Q{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.MissingRequiredClientCapabilityError`})}constructor(e,t=`Missing required client capabilities: ${Object.keys(e.requiredCapabilities).join(`, `)}`){super(Z.MissingRequiredClientCapability,t,e)}get requiredCapabilities(){return this.data.requiredCapabilities}},Gi=0,Ki=`private`,qi=[`tools/call`,`prompts/get`,`resources/read`];function Ji(e,t){let n=t.resultType;if(n===void 0)return{...t,resultType:`complete`};if(n===`complete`||qi.includes(e))return t;throw new Q(Z.InternalError,`Handler for ${e} returned resultType '${String(n)}', but results of ${e} only support 'complete' on protocol revision 2026-07-28`)}function Yi(e,t){let n=Ri(t);if(t.resultType!==`complete`||!Ii(e))return n===void 0?t:ea(t);let r=t,i=zi(r.ttlMs)?r.ttlMs:Qi(n),a=Bi(r.cacheScope)?r.cacheScope:$i(n),o={...r,ttlMs:i,cacheScope:a};return delete o[Li],o}function Xi(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Zi(e,t){if(t===void 0)return e;let n=e._meta;return n===void 0?{...e,_meta:{[je]:t}}:!Xi(n)||n[`io.modelcontextprotocol/serverInfo`]!==void 0?e:{...e,_meta:{...n,[je]:t}}}function Qi(e){return e!==void 0&&zi(e.ttlMs)?e.ttlMs:Gi}function $i(e){return e!==void 0&&Bi(e.cacheScope)?e.cacheScope:Ki}function ea(e){let t={...e};return delete t[Li],t}var ta=[`elicitation/create`,`sampling/createMessage`,`roots/list`],na;function ra(){if(na)return na;let e=Pi();return na={request:{"elicitation/create":y({method:D(`elicitation/create`),params:e.ElicitRequestParamsSchema}),"sampling/createMessage":y({method:D(`sampling/createMessage`),params:e.CreateMessageRequestParamsSchema}),"roots/list":y({method:D(`roots/list`),params:k({}).optional()})},response:{"elicitation/create":e.ElicitResultSchema,"sampling/createMessage":e.CreateMessageResultSchema,"roots/list":e.ListRootsResultSchema}},na}function ia(e){return ta.includes(e)}function aa(e){return ia(e)?ra().request[e]:void 0}function oa(e){return ia(e)?ra().response[e]:void 0}var sa={"tools/call":null,"tools/list":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"completion/complete":null,"server/discover":null,"subscriptions/listen":null},ca={"notifications/cancelled":null,"notifications/progress":null,"notifications/message":null,"notifications/resources/updated":null,"notifications/resources/list_changed":null,"notifications/tools/list_changed":null,"notifications/prompts/list_changed":null,"notifications/subscriptions/acknowledged":null};function la(e){return Object.prototype.hasOwnProperty.call(sa,e)}function ua(e){return Object.prototype.hasOwnProperty.call(ca,e)}function da(e){return Object.prototype.hasOwnProperty.call(sa,e)}function fa(e){return la(e)?Pi().dispatchRequestSchemas[e]:void 0}function pa(e){return da(e)?Pi().dispatchResultSchemas[e]:void 0}function ma(e){return ua(e)?Pi().notificationSchemas2026[e]:void 0}Object.keys(sa),Object.keys(ca);function ha(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ga(e,t){if(e===void 0)return{ok:!1,reason:`not-in-era`};let n=e.safeParse(t);return n.success?{ok:!0,value:n.data}:{ok:!1,reason:`invalid`,message:String(n.error)}}var _a={ok:!1,reason:`not-in-era`},va=[ke,Me];function ya(e,t){let n=t,r=!1,i=()=>(r||=(n={...n},!0),n),a=t.tools;e===`tools/list`&&Array.isArray(a)&&a.some(e=>ha(e)&&`execution`in e)&&(i().tools=a.map(e=>{if(!ha(e)||!(`execution`in e))return e;let t={...e};return delete t.execution,t}));let o=t.capabilities;if(ha(o)&&`tasks`in o){let e={...o};delete e.tasks,i().capabilities=e}return n}var ba={era:`2026-07-28`,hasRequestMethod:la,hasNotificationMethod:ua,hasInputRequestMethod:e=>aa(e)!==void 0,validateRequest:(e,t)=>ga(fa(e),t),validateResult:(e,t)=>ga(pa(e),t),validateNotification:(e,t)=>ga(ma(e),t),validateInputRequest:(e,t)=>ga(aa(e),t),validateInputResponse:(e,t)=>ga(oa(e),t),samplingResultVariant:()=>_a,outboundEnvelope(e){return{[ke]:e.protocolVersion,[Ae]:e.clientInfo,[Me]:e.clientCapabilities,...e.logLevel!==void 0&&{"io.modelcontextprotocol/logLevel":e.logLevel}}},validateEnvelopeMeta(e){let t=[];for(let n of va)n in e||t.push({key:n,problem:`missing`});let n=Pi().RequestMetaEnvelopeSchema.safeParse(e);if(!n.success)for(let e of n.error.issues){let n=e.path.map(String),r=n.length>0?n.join(`.`):`_meta`;n.length===1&&t.some(e=>e.key===r&&e.problem===`missing`)||t.push({key:r,problem:e.message})}return t},projectCallToolResult:e=>ii(e),inputRequestSchema:aa,decodeResult(e,t){if(!ha(t))return{kind:`invalid`,error:new X(Y.InvalidResult,`Invalid result for ${e}: not an object`,{method:e})};let n=t.resultType;if(n===void 0)return{kind:`invalid`,error:new X(Y.InvalidResult,`Invalid result for ${e}: missing required resultType — servers implementing protocol revision 2026-07-28 MUST include it (the absent-means-complete bridge applies only to earlier-revision servers)`,{method:e,violation:`missing-resultType`})};if(typeof n!=`string`)return{kind:`invalid`,error:new X(Y.InvalidResult,`Invalid result for ${e}: non-string resultType`,{method:e,resultType:n})};if(n===`input_required`){let n=t.inputRequests,r=ha(n)?n:{},i=t.requestState,a=t._meta===void 0?void 0:Pi().ResultMetaSchema.safeParse(t._meta),o=a?.success?a.data:void 0;return Object.keys(r).length===0&&typeof i!=`string`?{kind:`invalid`,error:new X(Y.InvalidResult,`Invalid result for ${e}: input_required carries neither inputRequests nor requestState (every input_required result must include at least one of the two)`,{method:e,violation:`input-required-missing-both`})}:{kind:`input_required`,inputRequests:r,...typeof i==`string`&&{requestState:i},...o!==void 0&&{_meta:o}}}if(n!==`complete`)return{kind:`invalid`,error:new X(Y.UnsupportedResultType,`Unsupported result type '${n}' for ${e}`,{resultType:n,method:e})};let r=Sa(),i=Object.hasOwn(r,e)?r[e]:void 0;if(i!==void 0){let n=i.safeParse(t);if(!n.success)return{kind:`invalid`,error:new X(Y.InvalidResult,`Invalid result for ${e}: ${n.error}`,{method:e})}}let a={...t};return delete a.resultType,{kind:`complete`,result:a}},encodeResult(e,t,n){return Zi(Yi(e,Ji(e,ya(e,t))),n)},encodeErrorCode:e=>e===-32002?-32602:e,checkInboundEnvelope(e){if(e.envelope===void 0)return`Request is missing the required _meta envelope for protocol revision 2026-07-28 (io.modelcontextprotocol/protocolVersion, io.modelcontextprotocol/clientCapabilities)`;let t=Pi().RequestMetaEnvelopeSchema.safeParse(e.envelope);if(!t.success)return`Invalid _meta envelope for protocol revision 2026-07-28: ${t.error.issues.map(e=>e.message).join(`; `)}`}},xa;function Sa(){if(xa)return xa;let e=Pi();return xa={"tools/call":e.CallToolResultSchema,"tools/list":e.ListToolsResultSchema,"prompts/get":e.GetPromptResultSchema,"prompts/list":e.ListPromptsResultSchema,"resources/list":e.ListResourcesResultSchema,"resources/templates/list":e.ListResourceTemplatesResultSchema,"resources/read":e.ReadResourceResultSchema,"completion/complete":e.CompleteResultSchema,"server/discover":e.DiscoverResultSchema},xa}var Ca=`2026-07-28`;function wa(e){return e!==void 0&&ti(e)?ba:ji}function Ta(e){return e.revision===void 0?e.era===`modern`?ba.era:ji.era:wa(e.revision).era}function Ea(e){return Oa.some(t=>t.hasRequestMethod(e))}function Da(e){return Oa.some(t=>t.hasNotificationMethod(e))}var Oa=[ji,ba],ka=ye({AnnotationsSchema:()=>Tt,AudioContentSchema:()=>tn,BaseMetadataSchema:()=>U,BaseRequestParamsSchema:()=>L,BlobResourceContentsSchema:()=>Ct,BooleanSchemaSchema:()=>Ln,CallToolRequestParamsSchema:()=>_n,CallToolRequestSchema:()=>vn,CallToolResultSchema:()=>hn,CancelTaskRequestSchema:()=>Cr,CancelTaskResultSchema:()=>wr,CancelledNotificationParamsSchema:()=>Ze,CancelledNotificationSchema:()=>Qe,ClientCapabilitiesSchema:()=>ot,ClientNotificationSchema:()=>Er,ClientRequestSchema:()=>Tr,ClientResultSchema:()=>Dr,ClientTasksCapabilitySchema:()=>it,CompatibilityCallToolResultSchema:()=>gn,CompleteRequestParamsSchema:()=>ir,CompleteRequestSchema:()=>ar,CompleteResultSchema:()=>or,ContentBlockSchema:()=>on,CreateMessageRequestParamsSchema:()=>Nn,CreateMessageRequestSchema:()=>Pn,CreateMessageResultSchema:()=>Fn,CreateMessageResultWithToolsSchema:()=>In,CreateTaskResultSchema:()=>mr,CursorSchema:()=>Re,DiscoverRequestSchema:()=>dt,DiscoverResultSchema:()=>ft,ElicitRequestFormParamsSchema:()=>Yn,ElicitRequestParamsSchema:()=>Zn,ElicitRequestSchema:()=>Qn,ElicitRequestURLParamsSchema:()=>Xn,ElicitResultSchema:()=>tr,ElicitationCompleteNotificationParamsSchema:()=>$n,ElicitationCompleteNotificationSchema:()=>er,EmbeddedResourceSchema:()=>rn,EmptyResultSchema:()=>Xe,EnumSchemaSchema:()=>qn,GetPromptRequestParamsSchema:()=>Qt,GetPromptRequestSchema:()=>$t,GetPromptResultSchema:()=>cn,GetTaskPayloadRequestSchema:()=>yr,GetTaskPayloadResultSchema:()=>br,GetTaskRequestSchema:()=>_r,GetTaskResultSchema:()=>vr,IconSchema:()=>$e,IconsSchema:()=>et,ImageContentSchema:()=>en,ImplementationSchema:()=>tt,InitializeRequestParamsSchema:()=>W,InitializeRequestSchema:()=>st,InitializeResultSchema:()=>lt,InitializedNotificationSchema:()=>ut,JSONArraySchema:()=>Ie,JSONObjectSchema:()=>I,JSONRPCErrorResponseSchema:()=>qe,JSONRPCMessageSchema:()=>Je,JSONRPCNotificationSchema:()=>Ge,JSONRPCRequestSchema:()=>We,JSONRPCResponseSchema:()=>Ye,JSONRPCResultResponseSchema:()=>Ke,JSONValueSchema:()=>Fe,LegacyTitledEnumSchemaSchema:()=>Hn,ListChangedOptionsBaseSchema:()=>bn,ListPromptsRequestSchema:()=>Xt,ListPromptsResultSchema:()=>Zt,ListResourceTemplatesRequestSchema:()=>At,ListResourceTemplatesResultSchema:()=>jt,ListResourcesRequestSchema:()=>Ot,ListResourcesResultSchema:()=>kt,ListRootsRequestSchema:()=>cr,ListRootsResultSchema:()=>lr,ListTasksRequestSchema:()=>xr,ListTasksResultSchema:()=>Sr,ListToolsRequestSchema:()=>pn,ListToolsResultSchema:()=>mn,LoggingLevelSchema:()=>xn,LoggingMessageNotificationParamsSchema:()=>wn,LoggingMessageNotificationSchema:()=>Tn,ModelHintSchema:()=>En,ModelPreferencesSchema:()=>Dn,MultiSelectEnumSchemaSchema:()=>Kn,NotificationSchema:()=>B,NotificationsParamsSchema:()=>z,NumberSchemaSchema:()=>zn,PaginatedRequestParamsSchema:()=>_t,PaginatedRequestSchema:()=>vt,PaginatedResultSchema:()=>yt,PingRequestSchema:()=>pt,PrimitiveSchemaDefinitionSchema:()=>Jn,ProgressNotificationParamsSchema:()=>ht,ProgressNotificationSchema:()=>gt,ProgressSchema:()=>mt,ProgressTokenSchema:()=>Le,PromptArgumentSchema:()=>Jt,PromptListChangedNotificationSchema:()=>ln,PromptMessageSchema:()=>sn,PromptReferenceSchema:()=>rr,PromptSchema:()=>Yt,ReadResourceRequestParamsSchema:()=>Nt,ReadResourceRequestSchema:()=>Pt,ReadResourceResultSchema:()=>Ft,RelatedTaskMetadataSchema:()=>Be,RequestIdSchema:()=>H,RequestMetaSchema:()=>Ve,RequestSchema:()=>R,ResourceContentsSchema:()=>bt,ResourceLinkSchema:()=>an,ResourceListChangedNotificationSchema:()=>G,ResourceRequestParamsSchema:()=>Mt,ResourceSchema:()=>Et,ResourceTemplateReferenceSchema:()=>nr,ResourceTemplateSchema:()=>Dt,ResourceUpdatedNotificationParamsSchema:()=>Kt,ResourceUpdatedNotificationSchema:()=>qt,ResultMetaObjectSchema:()=>Ue,ResultSchema:()=>V,RoleSchema:()=>wt,RootSchema:()=>sr,RootsListChangedNotificationSchema:()=>ur,SamplingContentSchema:()=>An,SamplingMessageContentBlockSchema:()=>jn,SamplingMessageSchema:()=>Mn,ServerCapabilitiesSchema:()=>ct,ServerNotificationSchema:()=>kr,ServerRequestSchema:()=>Or,ServerResultSchema:()=>Ar,ServerTasksCapabilitySchema:()=>at,SetLevelRequestParamsSchema:()=>Sn,SetLevelRequestSchema:()=>Cn,SingleSelectEnumSchemaSchema:()=>Un,StringSchemaSchema:()=>Rn,SubscribeRequestParamsSchema:()=>K,SubscribeRequestSchema:()=>It,SubscriptionFilterSchema:()=>zt,SubscriptionsAcknowledgedNotificationParamsSchema:()=>Ht,SubscriptionsAcknowledgedNotificationSchema:()=>Ut,SubscriptionsListenRequestParamsSchema:()=>Bt,SubscriptionsListenRequestSchema:()=>Vt,SubscriptionsListenResultMetaSchema:()=>Wt,SubscriptionsListenResultSchema:()=>Gt,TaskAugmentedRequestParamsSchema:()=>He,TaskCreationParamsSchema:()=>dr,TaskMetadataSchema:()=>ze,TaskSchema:()=>pr,TaskStatusNotificationParamsSchema:()=>hr,TaskStatusNotificationSchema:()=>gr,TaskStatusSchema:()=>fr,TextContentSchema:()=>q,TextResourceContentsSchema:()=>xt,TitledMultiSelectEnumSchemaSchema:()=>Gn,TitledSingleSelectEnumSchemaSchema:()=>Vn,ToolAnnotationsSchema:()=>un,ToolChoiceSchema:()=>On,ToolExecutionSchema:()=>dn,ToolListChangedNotificationSchema:()=>yn,ToolResultContentSchema:()=>kn,ToolSchema:()=>fn,ToolUseContentSchema:()=>nn,UnsubscribeRequestParamsSchema:()=>Lt,UnsubscribeRequestSchema:()=>Rt,UntitledMultiSelectEnumSchemaSchema:()=>Wn,UntitledSingleSelectEnumSchemaSchema:()=>Bn}),Aa=e=>We.safeParse(e).success,ja=e=>Ge.safeParse(e).success,Ma=e=>Ke.safeParse(e).success,Na=e=>qe.safeParse(e).success,Pa=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&e.resultType===`input_required`,Fa=e=>st.safeParse(e).success,Ia=e=>ut.safeParse(e).success,La=`Mcp-Param-`,Ra=`x-mcp-header`,za=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,Ba=new Set([`string`,`integer`,`boolean`,`number`]);function Va(e){let t=[],n=new Map,r=(e,i,a)=>{if(typeof e!=`object`||!e)return;let o=e;if(Ra in o){if(!a||i.length===0)return`${Wa(i)}: x-mcp-header is only permitted on properties statically reachable via a chain of 'properties' keys (not under items, additionalProperties, oneOf/anyOf/allOf/not, if/then/else, or $ref)`;let e=o[Ra];if(typeof e!=`string`||e.length===0)return`${Wa(i)}: x-mcp-header MUST be a non-empty string`;if(!za.test(e))return`${Wa(i)}: x-mcp-header '${e}' is not a valid RFC 9110 token (no spaces, control characters or HTTP delimiters)`;let r=typeof o.type==`string`?o.type:void 0;if(r===void 0||!Ba.has(r))return`${Wa(i)}: x-mcp-header is only permitted on primitive-typed properties (string, integer, boolean); got ${r??``}`;let s=e.toLowerCase(),c=n.get(s);if(c!==void 0)return`x-mcp-header '${e}' is not case-insensitively unique (also declared as '${c}')`;n.set(s,e),t.push({path:i,headerName:e,type:r})}let s=o.properties;if(typeof s==`object`&&s)for(let[e,t]of Object.entries(s)){let n=r(t,[...i,e],a);if(n!==void 0)return n}for(let e of Ha){let t=o[e];if(t===void 0)continue;let n=Array.isArray(t)?t:typeof t==`object`&&t&&Ua.has(e)?Object.values(t):[t];for(let t of n){let n=r(t,[...i,`<${e}>`],!1);if(n!==void 0)return n}}},i=r(e,[],!0);return i===void 0?{valid:!0,declarations:t}:{valid:!1,reason:i}}var Ha=[`items`,`prefixItems`,`contains`,`additionalProperties`,`unevaluatedProperties`,`unevaluatedItems`,`propertyNames`,`patternProperties`,`dependentSchemas`,`oneOf`,`anyOf`,`allOf`,`not`,`if`,`then`,`else`,`$defs`,`definitions`],Ua=new Set([`patternProperties`,`dependentSchemas`,`$defs`,`definitions`]);function Wa(e){return e.length===0?``:e.join(`.`)}var Ga=`=?base64?`,Ka=`?=`;function qa(e){if(typeof e==`string`)return e;if(typeof e==`boolean`)return e?`true`:`false`;if(typeof e==`number`)return!Number.isFinite(e)||Number.isInteger(e)&&!Number.isSafeInteger(e)?void 0:String(e)}function Ja(e){if(e.length===0||e.startsWith(Ga)&&e.endsWith(Ka)||e!==e.trim())return!0;for(let t=0;t=32&&n<=126))return!0}return!1}function Ya(e){let t=new TextEncoder().encode(e),n=``;for(let e of t)n+=String.fromCodePoint(e);return btoa(n)}function Xa(e){return Ja(e)?`${Ga}${Ya(e)}${Ka}`:e}function Za(e,t){let n=e;for(let e of t){if(typeof n!=`object`||!n)return;n=n[e]}return n}function Qa(e,t){let n={};for(let r of e){let e=Za(t,r.path);if(e==null)continue;let i=qa(e);i!==void 0&&(n[`${La}${r.headerName}`]=Xa(i))}return n}Z.InvalidRequest,Z.UnsupportedProtocolVersion,Z.InvalidParams,Z.MethodNotFound,Z.InvalidParams,Z.MissingRequiredClientCapability,Z.ParseError,Z.InvalidRequest,Z.MethodNotFound,Z.UnsupportedProtocolVersion,Z.MissingRequiredClientCapability;var $a={"tools/call":`name`,"prompts/get":`name`,"resources/read":`uri`,"tasks/get":`taskId`,"tasks/update":`taskId`,"tasks/cancel":`taskId`};function eo(e,t){let n=Object.hasOwn($a,e)?$a[e]:void 0;if(n===void 0)return;let r=to(t)?t[n]:void 0;return{field:n,value:typeof r==`string`?r:void 0}}function to(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function no(e,t){return u(e,t)}function ro(e){return new Set(e.flatMap(e=>Object.keys(e.shape)))}function io(e){if(e==null)return!1;let t=typeof e;return t!==`object`&&t!==`function`||!(`~standard`in e)?!1:typeof e[`~standard`]?.validate==`function`}var ao=!1,oo=`draft-2020-12`;function so(e,t=`input`){let n=e[`~standard`],r;if(n.jsonSchema)r=n.jsonSchema[t]({target:oo});else if(n.vendor===`zod`){if(!(`_zod`in e))throw Error(`Schema appears to be from zod 3, which the SDK cannot convert to JSON Schema. Upgrade to zod >=4.2.0, or wrap your JSON Schema with fromJsonSchema().`);ao||(ao=!0,console.warn("[mcp-sdk] Your zod version does not implement `~standard.jsonSchema` (added in zod 4.2.0). Falling back to z.toJSONSchema(). Upgrade to zod >=4.2.0 to silence this warning.")),r=re(e,{target:oo,io:t})}else throw Error(`Schema library "${n.vendor}" does not implement StandardJSONSchemaV1 (\`~standard.jsonSchema\`). Upgrade to a version that does, or wrap your JSON Schema with fromJsonSchema().`);if(t===`output`)return r.type===void 0&&co(r)?{type:`object`,...r}:r;if(r.type!==void 0&&r.type!==`object`)throw Error(`MCP tool and prompt schemas must describe objects (got type: ${JSON.stringify(r.type)}). Wrap your schema in z.object({...}) or equivalent.`);return{type:`object`,...r}}function co(e){if(`properties`in e||`patternProperties`in e||`additionalProperties`in e||`required`in e)return!0;for(let t of[`oneOf`,`anyOf`,`allOf`]){let n=e[t];if(Array.isArray(n)&&n.length>0)return n.every(e=>typeof e==`object`&&!!e&&(e.type===`object`||co(e)))}return!1}function lo(e){return e.path?.length?`${e.path.map(e=>String(typeof e==`object`?e.key:e)).join(`.`)}: ${e.message}`:e.message}async function uo(e,t){let n=await e[`~standard`].validate(t);return n.issues&&n.issues.length>0?{success:!1,error:n.issues.map(e=>lo(e)).join(`, `)}:{success:!0,data:n.value}}function fo(e){let t=re(e,{target:oo,io:`input`});return typeof t.pattern==`string`?t.pattern:void 0}var po=/\\\.\\d\{(\d+)\}/;function mo(e){let t=po.exec(e),n=[void 0,-1,0];return t&&n.push(Number(t[1])),[!1,!0].flatMap(e=>[!1,!0].flatMap(t=>n.map(n=>fe({local:e,offset:t,precision:n}))))}function ho(e,t){let n;switch(e){case`email`:n=[ne()];break;case`uri`:n=[ie()];break;case`date`:n=[pe()];break;case`date-time`:n=mo(t)}return new Set(n.map(e=>fo(e)).filter(e=>e!==void 0))}function go(e,t,n){return n!==`zod`||ho(e,t).has(t)}function _o(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function vo(e){try{return so(e,`input`)}catch(e){let t=e instanceof Error?e.message:String(e);throw new Q(Z.InvalidParams,`Elicitation requestedSchema must describe an object with flat primitive properties: ${t}`)}}var yo=new Set([`$comment`,`deprecated`,`description`,`examples`,`readOnly`,`title`,`writeOnly`]);function bo(e){return yo.has(e)||e.startsWith(`x-`)}var xo=new Set([`$schema`,...Object.keys(Yn.shape.requestedSchema.shape)]),So={string:ro([Rn,Bn,Vn,Hn]),number:ro([zn]),integer:ro([zn]),boolean:ro([Ln]),array:ro([Wn,Gn])},Co=new Set(Rn.shape.format.unwrap().options);function wo(e,t,n,r){if(!_o(e))return e;let i=typeof e.type==`string`&&Object.hasOwn(So,e.type)?So[e.type]:void 0;if(i===void 0)return e;let a={};for(let[o,s]of Object.entries(e))i.has(o)||bo(o)?a[o]=s:o===`pattern`&&e.type===`string`&&typeof e.format==`string`?Co.has(e.format)?(typeof s!=`string`||!go(e.format,s,n))&&r.push(`${t}.${o}`):a[o]=s:r.push(`${t}.${o}`);return a}function To(e,t){let n={},r=[];for(let[i,a]of Object.entries(e))i===`properties`&&_o(a)?n[i]=Object.fromEntries(Object.entries(a).map(([e,n])=>[e,wo(n,`properties.${e}`,t,r)])):xo.has(i)?n[i]=a:bo(i)||r.push(i);if(r.length>0)throw new Q(Z.InvalidParams,`Elicitation requestedSchema contains unsupported JSON Schema constraint(s) after Standard Schema conversion: ${r.join(`, `)}`);return n}function Eo(e,t){if(!_o(e.properties))return t;let n=Object.entries(e.properties).filter(([,e])=>!no(Jn,e).success).map(([e])=>`properties.${e}`);return n.length>0?n.join(`, `):t}function Do(e,t,n=``){return Array.isArray(e)&&Array.isArray(t)?e.flatMap((e,r)=>Do(e,t[r],`${n}[${r}]`)):!_o(e)||!_o(t)?[]:Object.entries(e).flatMap(([e,r])=>{let i=n?`${n}.${e}`:e;return Object.prototype.hasOwnProperty.call(t,e)?Do(r,t[e],i):bo(e)?[]:[i]})}function Oo(e){if(!io(e.requestedSchema))return{...e,mode:`form`,requestedSchema:e.requestedSchema};let t=e.requestedSchema[`~standard`].vendor,n=To(vo(e.requestedSchema),t),r=no(Yn.shape.requestedSchema,n);if(!r.success)throw new Q(Z.InvalidParams,`Elicitation requestedSchema only supports flat primitive properties (string, number, integer, boolean, and string enums): ${Eo(n,r.error.message)}`);let i=Do(n,r.data);if(i.length>0)throw new Q(Z.InvalidParams,`Elicitation requestedSchema contains unsupported JSON Schema constraint(s) after Standard Schema conversion: ${i.join(`, `)}`);let a=(r.data.required??[]).filter(e=>!Object.prototype.hasOwnProperty.call(r.data.properties,e));if(a.length>0)throw new Q(Z.InvalidParams,`Elicitation requestedSchema lists required properties that are not defined in properties: ${a.join(`, `)}`);return{...e,mode:`form`,requestedSchema:r.data}}function ko(e){let t=e.inputRequests!==void 0&&Object.keys(e.inputRequests).length>0,n=typeof e.requestState==`string`;if(!t&&!n)throw TypeError(`inputRequired() requires at least one of inputRequests (with at least one entry) or requestState (spec: every InputRequiredResult MUST include at least one of the two)`);return{resultType:`input_required`,...e.inputRequests!==void 0&&{inputRequests:e.inputRequests},...e.requestState!==void 0&&{requestState:e.requestState}}}Object.assign(ko,{elicit(e){try{return{method:`elicitation/create`,params:Oo(e)}}catch(e){throw e instanceof Q?TypeError(e.message,{cause:e}):e}},elicitUrl(e){return{method:`elicitation/create`,params:{...e,mode:`url`}}},createMessage(e){return{method:`sampling/createMessage`,params:e}},listRoots(){return{method:`roots/list`}}});var Ao=!0,jo=10,Mo=250;function No(e){return{autoFulfill:e?.autoFulfill??Ao,maxRounds:e?.maxRounds??jo}}function Po(e,t,n){let r=t!==void 0&&Object.keys(t).length>0;return!r&&n===void 0?e:{...e,...r&&{inputResponses:t},...n!==void 0&&{requestState:n}}}function Fo(e,t){return`Multi-round-trip request '${e}' still required input after ${t} rounds (inputRequired.maxRounds)`}function Io(e,t){return new Promise((n,r)=>{if(t?.aborted){r(t.reason instanceof X?t.reason:new X(Y.RequestTimeout,String(t.reason)));return}let i=setTimeout(()=>{t?.removeEventListener(`abort`,a),n()},e),a=()=>{clearTimeout(i),r(t?.reason instanceof X?t.reason:new X(Y.RequestTimeout,String(t?.reason)))};t?.addEventListener(`abort`,a,{once:!0})})}function Lo(e){let t=new AbortController,n=()=>t.abort(e?.reason);return e?.addEventListener(`abort`,n,{once:!0}),e?.aborted&&t.abort(e.reason),{signal:t.signal,abort:e=>t.abort(e),dispose:()=>e?.removeEventListener(`abort`,n)}}async function Ro(e){let{config:t,method:n,originalParams:r,requestOptions:i,hooks:a,signal:o}=e,s=e.flowStartedAt??Date.now(),c=e.firstPayload,l=0;for(;;){if(l+=1,l>t.maxRounds)throw new X(Y.InputRequiredRoundsExceeded,Fo(n,t.maxRounds),{rounds:t.maxRounds,lastResult:{inputRequests:c.inputRequests,...c.requestState!==void 0&&{requestState:c.requestState}}});i.onprogress?.({progress:l,message:`Fulfilling input required by '${n}' (round ${l})`});let e=Object.entries(c.inputRequests??{}),u;if(e.length>0){let t=Lo(o);try{let n=await Promise.all(e.map(async([e,n])=>{try{return[e,await a.dispatchInputRequest(e,n,t.signal)]}catch(e){throw t.abort(e),e}}));u=Object.fromEntries(n)}finally{t.dispose()}}else await Io(Mo,o);let d={...i.timeout!==void 0&&{timeout:i.timeout}};if(i.maxTotalTimeout!==void 0){let e=Date.now()-s,t=i.maxTotalTimeout-e;if(t<=0)throw new X(Y.RequestTimeout,`Maximum total timeout exceeded`,{maxTotalTimeout:i.maxTotalTimeout,totalElapsed:e});d.maxTotalTimeout=t}let f=await a.retry(Po(r,u,c.requestState),d);if(Pa(f)){c={inputRequests:f.inputRequests??{},...f.requestState!==void 0&&{requestState:f.requestState}};continue}return f}}var zo=`AnnotationsSchema.AudioContentSchema.BaseMetadataSchema.BlobResourceContentsSchema.BooleanSchemaSchema.CallToolRequestSchema.CallToolRequestParamsSchema.CallToolResultSchema.CancelledNotificationSchema.CancelledNotificationParamsSchema.CancelTaskRequestSchema.CancelTaskResultSchema.ClientCapabilitiesSchema.ClientNotificationSchema.ClientRequestSchema.ClientResultSchema.CompatibilityCallToolResultSchema.CompleteRequestSchema.CompleteRequestParamsSchema.CompleteResultSchema.ContentBlockSchema.CreateMessageRequestSchema.CreateMessageRequestParamsSchema.CreateMessageResultSchema.CreateMessageResultWithToolsSchema.CreateTaskResultSchema.CursorSchema.DiscoverRequestSchema.DiscoverResultSchema.ElicitationCompleteNotificationSchema.ElicitationCompleteNotificationParamsSchema.ElicitRequestSchema.ElicitRequestFormParamsSchema.ElicitRequestParamsSchema.ElicitRequestURLParamsSchema.ElicitResultSchema.EmbeddedResourceSchema.EmptyResultSchema.EnumSchemaSchema.GetPromptRequestSchema.GetPromptRequestParamsSchema.GetPromptResultSchema.GetTaskPayloadRequestSchema.GetTaskPayloadResultSchema.GetTaskRequestSchema.GetTaskResultSchema.IconSchema.IconsSchema.ImageContentSchema.ImplementationSchema.InitializedNotificationSchema.InitializeRequestSchema.InitializeRequestParamsSchema.InitializeResultSchema.JSONArraySchema.JSONObjectSchema.JSONRPCErrorResponseSchema.JSONRPCMessageSchema.JSONRPCNotificationSchema.JSONRPCRequestSchema.JSONRPCResponseSchema.JSONRPCResultResponseSchema.JSONValueSchema.LegacyTitledEnumSchemaSchema.ListPromptsRequestSchema.ListPromptsResultSchema.ListResourcesRequestSchema.ListResourcesResultSchema.ListResourceTemplatesRequestSchema.ListResourceTemplatesResultSchema.ListRootsRequestSchema.ListRootsResultSchema.ListTasksRequestSchema.ListTasksResultSchema.ListToolsRequestSchema.ListToolsResultSchema.LoggingLevelSchema.LoggingMessageNotificationSchema.LoggingMessageNotificationParamsSchema.ModelHintSchema.ModelPreferencesSchema.MultiSelectEnumSchemaSchema.NotificationSchema.NumberSchemaSchema.PaginatedRequestSchema.PaginatedRequestParamsSchema.PaginatedResultSchema.PingRequestSchema.PrimitiveSchemaDefinitionSchema.ProgressSchema.ProgressNotificationSchema.ProgressNotificationParamsSchema.ProgressTokenSchema.PromptSchema.PromptArgumentSchema.PromptListChangedNotificationSchema.PromptMessageSchema.PromptReferenceSchema.ReadResourceRequestSchema.ReadResourceRequestParamsSchema.ReadResourceResultSchema.RelatedTaskMetadataSchema.RequestSchema.RequestIdSchema.RequestMetaSchema.ResourceSchema.ResourceContentsSchema.ResourceLinkSchema.ResourceListChangedNotificationSchema.ResourceRequestParamsSchema.ResourceTemplateSchema.ResourceTemplateReferenceSchema.ResourceUpdatedNotificationSchema.ResourceUpdatedNotificationParamsSchema.ResultMetaObjectSchema.ResultSchema.RoleSchema.RootSchema.RootsListChangedNotificationSchema.SamplingContentSchema.SamplingMessageSchema.SamplingMessageContentBlockSchema.ServerCapabilitiesSchema.ServerNotificationSchema.ServerRequestSchema.ServerResultSchema.SetLevelRequestSchema.SetLevelRequestParamsSchema.SingleSelectEnumSchemaSchema.StringSchemaSchema.SubscribeRequestSchema.SubscribeRequestParamsSchema.SubscriptionFilterSchema.SubscriptionsAcknowledgedNotificationSchema.SubscriptionsAcknowledgedNotificationParamsSchema.SubscriptionsListenRequestSchema.SubscriptionsListenRequestParamsSchema.SubscriptionsListenResultSchema.SubscriptionsListenResultMetaSchema.TaskAugmentedRequestParamsSchema.TaskCreationParamsSchema.TaskMetadataSchema.TaskSchema.TaskStatusSchema.TaskStatusNotificationSchema.TaskStatusNotificationParamsSchema.TextContentSchema.TextResourceContentsSchema.TitledMultiSelectEnumSchemaSchema.TitledSingleSelectEnumSchemaSchema.ToolSchema.ToolAnnotationsSchema.ToolChoiceSchema.ToolExecutionSchema.ToolListChangedNotificationSchema.ToolResultContentSchema.ToolUseContentSchema.UnsubscribeRequestSchema.UnsubscribeRequestParamsSchema.UntitledMultiSelectEnumSchemaSchema.UntitledSingleSelectEnumSchemaSchema`.split(`.`),Bo={IdJagTokenExchangeResponseSchema:Ir,OAuthClientInformationFullSchema:Vr,OAuthClientInformationSchema:Br,OAuthClientMetadataSchema:zr,OAuthClientRegistrationErrorSchema:Hr,OAuthErrorResponseSchema:Lr,OAuthMetadataSchema:Mr,OAuthProtectedResourceMetadataSchema:jr,OAuthTokenRevocationRequestSchema:Ur,OAuthTokensSchema:Fr,OpenIdProviderDiscoveryMetadataSchema:Pr,OpenIdProviderMetadataSchema:Nr},Vo={},Ho={};function Uo(e,t){let n=e.slice(0,-6);Vo[n]=t,Ho[n]=e=>t.safeParse(e).success}for(let e of zo)Uo(e,ka[e]);for(let[e,t]of Object.entries(Bo))Uo(e,t);Object.freeze(Vo);var Wo=Object.freeze(Ho);function Go(e){switch(e){case`initialize`:case`notifications/initialized`:return wa(void 0);case`server/discover`:return wa(Ca);default:return}}var Ko=[ke,Ae,Me,Pe],qo=[`inputResponses`,`requestState`];function Jo(e,t){let n=e.params;if(!$o(n))return{message:e,lifted:{}};let r=n._meta,i=$o(r)?Ko.filter(e=>e in r):[],a=t===`request`?qo.filter(e=>e in n):[];if(i.length===0&&a.length===0)return{message:e,lifted:{}};let o={},s={...n};if(i.length>0&&$o(r)){let e={},t={...r};for(let n of i)e[n]=r[n],delete t[n];o.envelope=e,Object.keys(t).length>0?s._meta=t:delete s._meta}for(let e of a)e===`inputResponses`&&(o.inputResponses=s[e]),e===`requestState`&&(o.requestState=s[e]),delete s[e];return{message:{...e,params:s},lifted:o}}function Yo(e,t){let n=e.validateResult(t,void 0);if(n.ok||n.reason!==`not-in-era`)return{"~standard":{version:1,vendor:`mcp-wire-codec`,validate(n){let r=e.validateResult(t,n);return r.ok?{value:r.value}:{issues:[{message:r.reason===`invalid`?r.message:`not-in-era: ${t}`}]}}}}}function Xo(e){return()=>e}var Zo=Xo(void 0),Qo=class{_transport;_requestMessageId=0;_requestHandlers=new Map;_requestHandlerAbortControllers=new Map;_notificationHandlers=new Map;_responseHandlers=new Map;_progressHandlers=new Map;_timeoutInfo=new Map;_pendingDebouncedNotifications=new Set;_negotiatedProtocolVersion;_supportedProtocolVersions;onclose;onerror;fallbackRequestHandler;fallbackNotificationHandler;constructor(e){this._options=e,this._supportedProtocolVersions=e?.supportedProtocolVersions??De,this.setNotificationHandler(`notifications/cancelled`,e=>{this._oncancel(e)}),this.setNotificationHandler(`notifications/progress`,e=>{this._onprogress(e)}),this.setRequestHandler(`ping`,e=>({}))}_shouldDropInbound(e){}_outboundMetaEnvelope(){}_envelopeOutbound(e){let t=this._outboundMetaEnvelope();if(t===void 0)return e;let n=e.params??{};return{...e,params:{...n,_meta:{...t,...n._meta}}}}_resolveNonCompleteResult(e,t){return Promise.reject(new X(Y.UnsupportedResultType,`Unsupported result type '${e.kind}' for ${t.request.method}`,{resultType:e.kind,method:t.request.method}))}_getRequestHandler(e){return this._requestHandlers.get(e)}async _oncancel(e){e.params.requestId!==void 0&&this._requestHandlerAbortControllers.get(e.params.requestId)?.abort(e.params.reason)}_setupTimeout(e,t,n,r,i=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(r,t),startTime:Date.now(),timeout:t,maxTotalTimeout:n,resetTimeoutOnProgress:i,onTimeout:r})}_resetTimeout(e){let t=this._timeoutInfo.get(e);if(!t)return!1;let n=Date.now()-t.startTime;if(t.maxTotalTimeout&&n>=t.maxTotalTimeout)throw this._timeoutInfo.delete(e),new X(Y.RequestTimeout,`Maximum total timeout exceeded`,{maxTotalTimeout:t.maxTotalTimeout,totalElapsed:n});return clearTimeout(t.timeoutId),t.timeoutId=setTimeout(t.onTimeout,t.timeout),!0}_cleanupTimeout(e){let t=this._timeoutInfo.get(e);t&&(clearTimeout(t.timeoutId),this._timeoutInfo.delete(e))}async connect(e){this._transport=e;let t=this.transport?.onclose;this._transport.onclose=()=>{try{t?.()}finally{this._onclose()}};let n=this.transport?.onerror;this._transport.onerror=e=>{n?.(e),this._onerror(e)};let r=this._transport?.onmessage;this._transport.onmessage=(e,t)=>{r?.(e,t),Ma(e)||Na(e)?this._onresponse(e):Aa(e)?this._onrequest(e,t):ja(e)?this._onnotification(e,t):this._onerror(Error(`Unknown message type: ${JSON.stringify(e)}`))},e.setSupportedProtocolVersions?.(this._supportedProtocolVersions),await this._transport.start()}_onclose(){let e=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._pendingDebouncedNotifications.clear();for(let e of this._timeoutInfo.values())clearTimeout(e.timeoutId);this._timeoutInfo.clear();let t=this._requestHandlerAbortControllers;this._requestHandlerAbortControllers=new Map;let n=new X(Y.ConnectionClosed,`Connection closed`);this._transport=void 0;try{this.onclose?.()}finally{for(let t of e.values())t(n);for(let e of t.values())e.abort(n)}}_onerror(e){this.onerror?.(e)}_onnotification(e,t){let{message:n}=Jo(e,`notification`),r=this._negotiatedWireCodec();if(t?.classification===void 0&&this._shouldDropInbound(e)===`drop`)return;if(t?.classification!==void 0){let e=Ta(t.classification);if(e!==r.era){this._onerror(Error(`Era mismatch on inbound notification '${n.method}': classified as ${e} but this instance serves ${r.era}`));return}}if(Da(n.method)&&!r.hasNotificationMethod(n.method))return;let i=this._notificationHandlers.get(n.method),a=this.fallbackNotificationHandler;(i!==void 0||a!==void 0)&&Promise.resolve().then(()=>i===void 0?a(n):i(n,r)).catch(e=>this._onerror(Error(`Uncaught error in notification handler: ${e}`)))}_onrequest(e,t){let{message:n,lifted:r}=Jo(e,`request`),i=this._negotiatedWireCodec();if(t?.classification===void 0&&this._shouldDropInbound(e)===`drop`){this._onerror(Error(`Dropped inbound request '${e.method}': not servable on this connection's protocol era`));return}let a=this._transport,o=(e,t,r)=>{let i={jsonrpc:`2.0`,id:n.id,error:{code:e,message:t,...r!==void 0&&{data:r}}};a?.send(i).catch(e=>this._onerror(Error(`Failed to send an error response: ${e}`)))};if(t?.classification!==void 0){let e=Ta(t.classification);if(e!==i.era){this._onerror(Error(`Era mismatch on inbound request '${n.method}': classified as ${e} but this instance serves ${i.era}`));let r=t.classification.revision??e;o(Z.UnsupportedProtocolVersion,`Unsupported protocol version: ${r}`,{supported:this._supportedProtocolVersions,requested:r});return}}if(Ea(n.method)&&!i.hasRequestMethod(n.method)){o(Z.MethodNotFound,`Method not found`);return}let s=this._requestHandlers.get(n.method)??this.fallbackRequestHandler;if(s===void 0){o(Z.MethodNotFound,`Method not found`);return}let c=i.checkInboundEnvelope(r);if(c!==void 0){o(Z.InvalidParams,c);return}let l=(e,t)=>this._notificationViaCodec(this._resolveOutboundCodec(e.method),e,{...t,relatedRequestId:n.id}),u=(e,t,r)=>this._requestWithSchemaViaCodec(this._resolveOutboundCodec(e.method),e,t,{...r,relatedRequestId:n.id}),d=new AbortController;this._requestHandlerAbortControllers.set(n.id,d);let f=r.inputResponses===void 0?void 0:ns(r.inputResponses),p={sessionId:a?.sessionId,mcpReq:{id:n.id,method:n.method,_meta:n.params?._meta,...r.envelope!==void 0&&{envelope:r.envelope},...f!==void 0&&{inputResponses:f.accepted},...f!==void 0&&f.droppedKeys.length>0&&{droppedInputResponseKeys:f.droppedKeys},requestState:r.requestState===void 0?Zo:Xo(r.requestState),signal:d.signal,send:((e,t,n)=>{let r=this._resolveOutboundCodec(e.method);if(this._assertOutboundRequestInEra(r,e.method),io(t))return u(e,t,n);let i=Yo(r,e.method);if(i===void 0)throw TypeError(`'${e.method}' is not a spec method; pass a result schema as the second argument to ctx.mcpReq.send().`);return u(e,i,t)}),notify:l},http:t?.authInfo?{authInfo:t.authInfo}:void 0},m=this.buildContext(p,t);Promise.resolve().then(()=>s(n,m)).then(async e=>{if(d.signal.aborted)return;let t;try{t=i.encodeResult(n.method,e,this._outboundServerInfo())}catch(e){this._onerror(Error(`Failed to encode result for ${n.method}: ${e}`)),o(Z.InternalError,`Internal error`);return}let r={result:t,jsonrpc:`2.0`,id:n.id};await a?.send(r)},async e=>{if(d.signal.aborted)return;let t=Number.isSafeInteger(e.code)?e.code:Z.InternalError,r={jsonrpc:`2.0`,id:n.id,error:{code:i.encodeErrorCode(t),message:e.message??`Internal error`,...e.data!==void 0&&{data:e.data}}};await a?.send(r)}).catch(e=>this._onerror(Error(`Failed to send response: ${e}`))).finally(()=>{this._requestHandlerAbortControllers.get(n.id)===d&&this._requestHandlerAbortControllers.delete(n.id)})}_onprogress(e){let{progressToken:t,...n}=e.params,r=Number(t),i=this._progressHandlers.get(r);if(!i){this._onerror(Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let a=this._responseHandlers.get(r),o=this._timeoutInfo.get(r);if(o&&a&&o.resetTimeoutOnProgress)try{this._resetTimeout(r)}catch(e){this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),a(e);return}i(n)}_onresponse(e){let t=Number(e.id),n=this._responseHandlers.get(t);if(n===void 0){this._onerror(Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}this._responseHandlers.delete(t),this._cleanupTimeout(t),this._progressHandlers.delete(t),Ma(e)?n(e):n(Q.fromError(e.error.code,e.error.message,e.error.data))}get transport(){return this._transport}async close(){await this._transport?.close()}request(e,t,n){let r=this._resolveOutboundCodec(e.method);if(this._assertOutboundRequestInEra(r,e.method),io(t))return this._requestWithSchemaViaCodec(r,e,t,n);let i=Yo(r,e.method);if(i===void 0)throw TypeError(`'${e.method}' is not a spec method; pass a result schema as the second argument to request().`);return this._requestWithSchemaViaCodec(r,e,i,t)}_negotiatedWireCodec(){return wa(this._negotiatedProtocolVersion)}_wireCodec(){return this._negotiatedWireCodec()}_resolveOutboundCodec(e){if(this._negotiatedProtocolVersion===void 0){let t=Go(e);if(t)return t}return this._negotiatedWireCodec()}_assertOutboundRequestInEra(e,t){if(Ea(t)&&!e.hasRequestMethod(t))throw new X(Y.MethodNotSupportedByProtocolVersion,`Method '${t}' is not supported by the negotiated protocol version (wire era ${e.era})`,{method:t,era:e.era})}_requestWithSchema(e,t,n){let r=this._resolveOutboundCodec(e.method);return this._assertOutboundRequestInEra(r,e.method),this._requestWithSchemaViaCodec(r,e,t,n)}_requestWithSchemaViaCodec(e,t,n,r){let{relatedRequestId:i,resumptionToken:a,onresumptiontoken:o,headers:s}=r??{},c=Date.now(),l,u;return new Promise((d,f)=>{let p=e=>{f(e)};if(!this._transport){p(Error(`Not connected`));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(t.method)}catch(e){p(e);return}if(r?.signal?.aborted){let e=r.signal.reason;throw e instanceof X?e:new X(Y.RequestTimeout,String(e))}let m=e.era===`2026-07-28`&&this._transport.hasPerRequestStream===!0?new AbortController:void 0,h=this._requestMessageId++;u=h;let g={...t,jsonrpc:`2.0`,id:h};r?.onprogress&&(this._progressHandlers.set(h,r.onprogress),g.params={...t.params,_meta:{...t.params?._meta,progressToken:h}});let _=this._envelopeOutbound(g),v=!1,y=e=>{v||(this._progressHandlers.delete(h),m===void 0?t.method!==`initialize`&&this._transport?.send(this._envelopeOutbound({jsonrpc:`2.0`,method:`notifications/cancelled`,params:{requestId:h,reason:String(e)}}),{relatedRequestId:i,resumptionToken:a,onresumptiontoken:o}).catch(e=>this._onerror(Error(`Failed to send cancellation: ${e}`))):m.abort(),f(e instanceof X?e:new X(Y.RequestTimeout,String(e))))};this._responseHandlers.set(h,i=>{if(r?.signal?.aborted)return;if(v=!0,i instanceof Error)return f(i);let a;try{a=e.decodeResult(t.method,i.result)}catch(e){return f(e instanceof Error?e:Error(String(e)))}if(a.kind===`invalid`)return f(a.error);if(a.kind===`input_required`){if(r?.allowInputRequired===!0)return d(cs(a));let i={codec:e,request:t,resultSchema:n,options:r,flowStartedAt:c,retry:(r,i)=>this._requestWithSchemaViaCodec(e,r===void 0?{method:t.method}:{method:t.method,params:r},n,i)};return d(this._resolveNonCompleteResult(a,i))}let o=a.result;uo(n,o).then(e=>{e.success?d(e.data):f(new X(Y.InvalidResult,`Invalid result for ${t.method}: ${e.error}`))},f)}),l=()=>y(r?.signal?.reason),r?.signal?.addEventListener(`abort`,l,{once:!0});let b=r?.timeout??6e4;this._setupTimeout(h,b,r?.maxTotalTimeout,()=>y(new X(Y.RequestTimeout,`Request timed out`,{timeout:b})),r?.resetTimeoutOnProgress??!1),this._transport.send(_,{relatedRequestId:i,resumptionToken:a,onresumptiontoken:o,headers:s,requestSignal:m?.signal}).catch(e=>{this._progressHandlers.delete(h),f(e)})}).finally(()=>{l&&r?.signal?.removeEventListener(`abort`,l),u!==void 0&&(this._responseHandlers.delete(u),this._cleanupTimeout(u))})}async notification(e,t){return await this._notificationViaCodec(this._resolveOutboundCodec(e.method),e,t)}async _notificationViaCodec(e,t,n){if(!this._transport)throw new X(Y.NotConnected,`Not connected`);if(Da(t.method)&&!e.hasNotificationMethod(t.method))throw new X(Y.MethodNotSupportedByProtocolVersion,`Notification '${t.method}' is not supported by the negotiated protocol version (wire era ${e.era})`,{method:t.method,era:e.era});this.assertNotificationCapability(t.method);let r=this._envelopeOutbound({jsonrpc:`2.0`,...t});if((this._options?.debouncedNotificationMethods??[]).includes(t.method)&&!t.params&&n?.relatedRequestId===void 0){if(this._pendingDebouncedNotifications.has(t.method))return;this._pendingDebouncedNotifications.add(t.method),Promise.resolve().then(()=>{this._pendingDebouncedNotifications.delete(t.method),this._transport&&this._transport?.send(r,n).catch(e=>this._onerror(e))});return}await this._transport.send(r,n)}setRequestHandler(e,t,n){this.assertRequestHandlerCapability(e);let r;if(typeof t==`function`){if(!Ea(e))throw TypeError(`'${e}' is not a spec request method; pass schemas as the second argument to setRequestHandler().`);r=(n,r)=>{let i=this._negotiatedWireCodec(),a=i.validateRequest(e,n);if(!a.ok&&a.reason===`not-in-era`&&(a=i.validateInputRequest(e,n)),!a.ok)throw a.reason===`not-in-era`?new Q(Z.InternalError,`No wire schema for ${e} in the resolved era`):Error(a.message);return Promise.resolve(t(a.value,r))}}else if(n)r=async(r,i)=>{let a=await uo(t.params,{...r.params});if(!a.success)throw new Q(Z.InvalidParams,`Invalid params for ${e}: ${a.error}`);return n(a.data,i)};else throw TypeError(`setRequestHandler: handler is required`);this._requestHandlers.set(e,this._wrapHandler(e,r))}_wrapHandler(e,t){return t}_outboundServerInfo(){}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,t,n){if(typeof t==`function`){if(!Da(e))throw TypeError(`'${e}' is not a spec notification method; pass schemas as the second argument to setNotificationHandler().`);this._notificationHandlers.set(e,(n,r)=>{let i=r.validateNotification(e,n);if(!i.ok)throw i.reason===`not-in-era`?new Q(Z.InternalError,`No wire schema for ${e} in the resolved era`):Error(i.message);return Promise.resolve(t(i.value))});return}if(!n)throw TypeError(`setNotificationHandler: handler is required`);this._notificationHandlers.set(e,async r=>{let i=await uo(t.params,{...r.params});if(!i.success)throw new Q(Z.InvalidParams,`Invalid params for notification ${e}: ${i.error}`);await n(i.data,r)})}removeNotificationHandler(e){this._notificationHandlers.delete(e)}};function $o(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function es(e,t){let n={...e};for(let e in t){let r=e,i=t[r];if(i===void 0)continue;let a=n[r];n[r]=$o(a)&&$o(i)?{...a,...i}:i}return n}function ts(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ns(e){let t={},n=[];if(!ts(e))return{accepted:t,droppedKeys:n};for(let[r,i]of Object.entries(e)){if(!ts(i)||`method`in i||`result`in i){n.push(r);continue}t[r]=i}return{accepted:t,droppedKeys:n}}function rs(e){throw new X(Y.SendFailed,`ctx.mcpReq.${e} is not available while fulfilling an embedded input request: the request is fulfilled locally and has no related peer request`)}function is(e,t,n,r,i){return{sessionId:i,mcpReq:{id:e,method:t,_meta:n?._meta,requestState:Xo(void 0),signal:r,send:(()=>rs(`send`)),notify:()=>rs(`notify`)}}}async function as(e,t,n,r,i){if(!ts(r)||typeof r.method!=`string`)throw new X(Y.InvalidResult,`Invalid input request '${n}': each inputRequests entry must be an embedded request object with a method`,{key:n});let a=r.method;if(!t.hasInputRequestMethod(a))throw new X(Y.InvalidResult,`Invalid input request '${n}': '${a}' is not an embedded request the ${t.era} revision defines (expected elicitation/create, sampling/createMessage, or roots/list)`,{key:n,method:a});let o=e.getRequestHandler(a);if(o===void 0)throw new X(Y.CapabilityNotSupported,`Cannot fulfil input request '${n}': no handler is registered for '${a}' on this client. Declare the corresponding capability and register a handler, or handle input_required results manually.`,{key:n,method:a});let s=ts(r.params)?r.params:void 0;return await o({jsonrpc:`2.0`,id:n,method:a,...s!==void 0&&{params:s}},e.buildContext(is(n,a,s,i,e.sessionId)))}function os(e,t){return{...e?.signal!==void 0&&{signal:e.signal},...e?.onprogress!==void 0&&{onprogress:e.onprogress},...e?.resetTimeoutOnProgress!==void 0&&{resetTimeoutOnProgress:e.resetTimeoutOnProgress},...e?.headers!==void 0&&{headers:e.headers},...t.timeout!==void 0&&{timeout:t.timeout},...t.maxTotalTimeout!==void 0&&{maxTotalTimeout:t.maxTotalTimeout},allowInputRequired:!0}}function ss(e,t,n,r){let{codec:i,request:a,options:o,flowStartedAt:s}=r,c={inputRequests:n.inputRequests,...n.requestState!==void 0&&{requestState:n.requestState}},l={dispatchInputRequest:(t,n,r)=>as(e,i,t,n,r),retry:(e,t)=>r.retry(e,os(o,t))};return Ro({config:t,method:a.method,originalParams:a.params,firstPayload:c,flowStartedAt:s,signal:o?.signal,requestOptions:{...o?.timeout!==void 0&&{timeout:o.timeout},...o?.maxTotalTimeout!==void 0&&{maxTotalTimeout:o.maxTotalTimeout},...o?.onprogress!==void 0&&{onprogress:o.onprogress}},hooks:l})}function cs(e){return{resultType:`input_required`,inputRequests:e.inputRequests,...e.requestState!==void 0&&{requestState:e.requestState},...e._meta!==void 0&&{_meta:e._meta}}}var ls=be(ve((e=>{var t=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,n=/\\([\u000b\u0020-\u00ff])/g,r=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;e.parse=i;function i(e){if(!e)throw TypeError(`argument string is required`);var i=typeof e==`object`?a(e):e;if(typeof i!=`string`)throw TypeError(`argument string is required to be a string`);var s=i.indexOf(`;`),c=s===-1?i.trim():i.slice(0,s).trim();if(!r.test(c))throw TypeError(`invalid media type`);var l=new o(c.toLowerCase());if(s!==-1){var u,d,f;for(t.lastIndex=s;d=t.exec(i);){if(d.index!==s)throw TypeError(`invalid parameter format`);s+=d[0].length,u=d[1].toLowerCase(),f=d[2],f.charCodeAt(0)===34&&(f=f.slice(1,-1),f.indexOf(`\\`)!==-1&&(f=f.replace(n,`$1`))),l.parameters[u]=f}if(s!==i.length)throw TypeError(`invalid parameter format`)}return l}function a(e){var t;if(typeof e.getHeader==`function`?t=e.getHeader(`content-type`):typeof e.headers==`object`&&(t=e.headers&&e.headers[`content-type`]),typeof t!=`string`)throw TypeError(`content-type header is missing from object`);return t}function o(e){this.parameters=Object.create(null),this.type=e}}))(),1);function us(e){if(e)try{return ls.parse(e).type}catch{let t=(e.split(`;`,1)[0]??``).trim().toLowerCase();return t===``||e.slice(t.length).includes(`,`)?void 0:t}}function ds(e){return e?e instanceof Headers?Object.fromEntries(e.entries()):Array.isArray(e)?Object.fromEntries(e):{...e}:{}}function fs(e=fetch,t){return t?async(n,r)=>e(n,{...t,...r,headers:r?.headers?{...ds(t.headers),...ds(r.headers)}:t.headers}):e}function ps(e,t){let n=typeof e;if(n!==typeof t)return!1;if(Array.isArray(e)){if(!Array.isArray(t))return!1;let n=e.length;if(n!==t.length)return!1;for(let r=0;r1?t[a.href]=e:(a.hash=``,r===``?n=a:bs(e,t,n))}}else if(e!==!0&&e!==!1)return t;let i=n.href+(r?`#`+r:``);if(t[i]!==void 0)throw Error(`Duplicate schema URI "${i}".`);if(t[i]=e,e===!0||e===!1)return t;if(e.__absolute_uri__===void 0&&Object.defineProperty(e,"__absolute_uri__",{enumerable:!1,value:i}),e.$ref&&e.__absolute_ref__===void 0){let t=new URL(e.$ref,n.href);t.hash=t.hash,Object.defineProperty(e,"__absolute_ref__",{enumerable:!1,value:t.href})}if(e.$recursiveRef&&e.__absolute_recursive_ref__===void 0){let t=new URL(e.$recursiveRef,n.href);t.hash=t.hash,Object.defineProperty(e,"__absolute_recursive_ref__",{enumerable:!1,value:t.href})}if(e.$anchor){let r=new URL(`#`+e.$anchor,n.href);t[r.href]=e}for(let i in e){if(vs[i])continue;let a=`${r}/${ms(i)}`,o=e[i];if(Array.isArray(o)){if(gs[i]){let e=o.length;for(let r=0;r%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,Ds=/^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,Os=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,ks=/^(?:\/(?:[^~/]|~0|~1)*)*$/,As=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,js=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,Ms=e=>{if(e[0]===`"`)return!1;let[t,n,...r]=e.split(`@`);return!t||!n||r.length!==0||t.length>64||n.length>253||t[0]===`.`||t.endsWith(`.`)||t.includes(`..`)||!/^[a-z0-9.-]+$/i.test(n)||!/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+$/i.test(t)?!1:n.split(`.`).every(e=>/^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/i.test(e))},Ns=/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,Ps=/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,Fs=e=>e.length>1&&e.length<80&&(/^P\d+([.,]\d+)?W$/.test(e)||/^P[\dYMDTHS]*(\d[.,]\d+)?[YMDHS]$/.test(e)&&/^P([.,\d]+Y)?([.,\d]+M)?([.,\d]+D)?(T([.,\d]+H)?([.,\d]+M)?([.,\d]+S)?)?$/.test(e));function Is(e){return e.test.bind(e)}var Ls={date:zs,time:Bs.bind(void 0,!1),"date-time":Hs,duration:Fs,uri:Gs,"uri-reference":Is(Ts),"uri-template":Is(Es),url:Is(Ds),email:Ms,hostname:Is(ws),ipv4:Is(Ns),ipv6:Is(Ps),regex:qs,uuid:Is(Os),"json-pointer":Is(ks),"json-pointer-uri-fragment":Is(As),"relative-json-pointer":Is(js)};function Rs(e){return e%4==0&&(e%100!=0||e%400==0)}function zs(e){let t=e.match(xs);if(!t)return!1;let n=+t[1],r=+t[2],i=+t[3];return r>=1&&r<=12&&i>=1&&i<=(r==2&&Rs(n)?29:Ss[r])}function Bs(e,t){let n=t.match(Cs);if(!n)return!1;let r=+n[1],i=+n[2],a=+n[3],o=!!n[5];return(r<=23&&i<=59&&a<=59||r==23&&i==59&&a==60)&&(!e||o)}var Vs=/t|\s/i;function Hs(e){let t=e.split(Vs);return t.length==2&&zs(t[0])&&Bs(!0,t[1])}var Us=/\/|:/,Ws=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function Gs(e){return Us.test(e)&&Ws.test(e)}var Ks=/[^\\]\\Z/;function qs(e){if(Ks.test(e))return!1;try{return new RegExp(e,`u`),!0}catch{return!1}}function Js(e){let t=0,n=e.length,r=0,i;for(;r=55296&&i<=56319&&rps(e,t))||F.push({instanceLocation:o,keyword:`enum`,keywordLocation:`${s}/enum`,error:`Instance does not match any of ${JSON.stringify(g)}.`}):g.some(t=>e===t)||F.push({instanceLocation:o,keyword:`enum`,keywordLocation:`${s}/enum`,error:`Instance does not match any of ${JSON.stringify(g)}.`})),v!==void 0){let t=`${s}/not`;$(e,v,n,r,i,a,o,t).valid&&F.push({instanceLocation:o,keyword:`not`,keywordLocation:t,error:`Instance matched "not" schema.`})}let xe=[];if(y!==void 0){let t=`${s}/anyOf`,l=F.length,u=!1;for(let s=0;s{let u=Object.create(c),d=$(e,s,n,r,i,p===!0?a:null,o,`${t}/${l}`,u);return F.push(...d.errors),d.valid&&xe.push(u),d.valid}).length;u===1?F.length=l:F.splice(l,0,{instanceLocation:o,keyword:`oneOf`,keywordLocation:t,error:`Instance does not match exactly one subschema (${u} matches).`})}if((u===`object`||u===`array`)&&Object.assign(c,...xe),x!==void 0){let t=`${s}/if`;if($(e,x,n,r,i,a,o,t,c).valid){if(S!==void 0){let l=$(e,S,n,r,i,a,o,`${s}/then`,c);l.valid||F.push({instanceLocation:o,keyword:`if`,keywordLocation:t,error:`Instance does not match "then" schema.`},...l.errors)}}else if(C!==void 0){let l=$(e,C,n,r,i,a,o,`${s}/else`,c);l.valid||F.push({instanceLocation:o,keyword:`if`,keywordLocation:t,error:`Instance does not match "else" schema.`},...l.errors)}}if(u===`object`){if(_!==void 0)for(let t of _)t in e||F.push({instanceLocation:o,keyword:`required`,keywordLocation:`${s}/required`,error:`Instance does not have required property "${t}".`});let t=Object.keys(e);if(ie!==void 0&&t.lengthae&&F.push({instanceLocation:o,keyword:`maxProperties`,keywordLocation:`${s}/maxProperties`,error:`Instance does not have at least ${ae} properties.`}),oe!==void 0){let t=`${s}/propertyNames`;for(let s in e){let e=`${o}/${ms(s)}`,c=$(s,oe,n,r,i,a,e,t);c.valid||F.push({instanceLocation:o,keyword:`propertyNames`,keywordLocation:t,error:`Property name "${s}" does not match schema.`},...c.errors)}}if(se!==void 0){let t=`${s}/dependantRequired`;for(let n in se)if(n in e){let r=se[n];for(let i of r)i in e||F.push({instanceLocation:o,keyword:`dependentRequired`,keywordLocation:t,error:`Instance has "${n}" but does not have "${i}".`})}}if(E!==void 0)for(let t in E){let l=`${s}/dependentSchemas`;if(t in e){let s=$(e,E[t],n,r,i,a,o,`${l}/${ms(t)}`,c);s.valid||F.push({instanceLocation:o,keyword:`dependentSchemas`,keywordLocation:l,error:`Instance has "${t}" but does not match dependant schema.`},...s.errors)}}if(ce!==void 0){let t=`${s}/dependencies`;for(let s in ce)if(s in e){let c=ce[s];if(Array.isArray(c))for(let n of c)n in e||F.push({instanceLocation:o,keyword:`dependencies`,keywordLocation:t,error:`Instance has "${s}" but does not have "${n}".`});else{let l=$(e,c,n,r,i,a,o,`${t}/${ms(s)}`);l.valid||F.push({instanceLocation:o,keyword:`dependencies`,keywordLocation:t,error:`Instance has "${s}" but does not match dependant schema.`},...l.errors)}}}let l=Object.create(null),u=!1;if(T!==void 0){let t=`${s}/properties`;for(let s in T){if(!(s in e))continue;let d=`${o}/${ms(s)}`,f=$(e[s],T[s],n,r,i,a,d,`${t}/${ms(s)}`);if(f.valid)c[s]=l[s]=!0;else if(u=i,F.push({instanceLocation:o,keyword:`properties`,keywordLocation:t,error:`Property "${s}" does not match schema.`},...f.errors),u)break}}if(!u&&te!==void 0){let t=`${s}/patternProperties`;for(let s in te){let d=new RegExp(s,`u`),f=te[s];for(let p in e){if(!d.test(p))continue;let m=`${o}/${ms(p)}`,h=$(e[p],f,n,r,i,a,m,`${t}/${ms(s)}`);h.valid?c[p]=l[p]=!0:(u=i,F.push({instanceLocation:o,keyword:`patternProperties`,keywordLocation:t,error:`Property "${p}" matches pattern "${s}" but does not match associated schema.`},...h.errors))}}}if(!u&&ne!==void 0){let t=`${s}/additionalProperties`;for(let s in e){if(l[s])continue;let d=`${o}/${ms(s)}`,f=$(e[s],ne,n,r,i,a,d,t);f.valid?c[s]=!0:(u=i,F.push({instanceLocation:o,keyword:`additionalProperties`,keywordLocation:t,error:`Property "${s}" does not match additional properties schema.`},...f.errors))}}else if(!u&&re!==void 0){let t=`${s}/unevaluatedProperties`;for(let s in e)if(!c[s]){let l=`${o}/${ms(s)}`,u=$(e[s],re,n,r,i,a,l,t);u.valid?c[s]=!0:F.push({instanceLocation:o,keyword:`unevaluatedProperties`,keywordLocation:t,error:`Property "${s}" does not match unevaluated properties schema.`},...u.errors)}}}else if(u===`array`){pe!==void 0&&e.length>pe&&F.push({instanceLocation:o,keyword:`maxItems`,keywordLocation:`${s}/maxItems`,error:`Array has too many items (${e.length} > ${pe}).`}),fe!==void 0&&e.length=(A||0)&&(F.length=u),A===void 0&&de===void 0&&d===0?F.splice(u,0,{instanceLocation:o,keyword:`contains`,keywordLocation:l,error:`Array does not contain item matching schema.`}):A!==void 0&&dde&&F.push({instanceLocation:o,keyword:`maxContains`,keywordLocation:`${s}/maxContains`,error:`Array may contain at most ${de} items matching schema. ${d} items were found.`})}}if(!u&&O!==void 0){let u=`${s}/unevaluatedItems`;for(;l=j||e>j)&&F.push({instanceLocation:o,keyword:`maximum`,keywordLocation:`${s}/maximum`,error:`${e} is greater than ${M?`or equal to `:``} ${j}.`})):(he!==void 0&&ej&&F.push({instanceLocation:o,keyword:`maximum`,keywordLocation:`${s}/maximum`,error:`${e} is greater than ${j}.`}),ge!==void 0&&e<=ge&&F.push({instanceLocation:o,keyword:`exclusiveMinimum`,keywordLocation:`${s}/exclusiveMinimum`,error:`${e} is less than ${ge}.`}),M!==void 0&&e>=M&&F.push({instanceLocation:o,keyword:`exclusiveMaximum`,keywordLocation:`${s}/exclusiveMaximum`,error:`${e} is greater than or equal to ${M}.`})),N!==void 0){let t=e%N;Math.abs(0-t)>=1.1920929e-7&&Math.abs(N-t)>=1.1920929e-7&&F.push({instanceLocation:o,keyword:`multipleOf`,keywordLocation:`${s}/multipleOf`,error:`${e} is not a multiple of ${N}.`})}}else if(u===`string`){let t=_e===void 0&&ve===void 0?0:Js(e);_e!==void 0&&t<_e&&F.push({instanceLocation:o,keyword:`minLength`,keywordLocation:`${s}/minLength`,error:`String is too short (${t} < ${_e}).`}),ve!==void 0&&t>ve&&F.push({instanceLocation:o,keyword:`maxLength`,keywordLocation:`${s}/maxLength`,error:`String is too long (${t} > ${ve}).`}),ye!==void 0&&!new RegExp(ye,`u`).test(e)&&F.push({instanceLocation:o,keyword:`pattern`,keywordLocation:`${s}/pattern`,error:`String does not match pattern.`}),w!==void 0&&Ls[w]&&!Ls[w](e)&&F.push({instanceLocation:o,keyword:`format`,keywordLocation:`${s}/format`,error:`String does not match format "${w}".`})}return{valid:F.length===0,errors:F}}var Ys=class{schema;draft;shortCircuit;lookup;constructor(e,t=`2019-09`,n=!0){this.schema=e,this.draft=t,this.shortCircuit=n,this.lookup=bs(e)}validate(e){return $(e,this.schema,this.draft,this.lookup,this.shortCircuit)}addSchema(e,t){t&&(e={...e,$id:t}),bs(e,this.lookup)}},Xs=class{shortcircuit;draft;constructor(e){this.shortcircuit=e?.shortcircuit??!0,this.draft=e?.draft}_draftFor(e){let t=Te(e,`pass an explicit { draft } to CfWorkerJsonSchemaValidator to validate other dialects.`);return t===`draft-7`?`7`:t}getValidator(e){let t=new Ys(e,this.draft??this._draftFor(e),this.shortcircuit);return e=>{let n=t.validate(e);return n.valid?{valid:!0,data:e,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:n.errors.map(e=>`${e.instanceLocation}: ${e.error}`).join(`; `)}}}},Zs=globalThis.crypto;async function Qs(e){return(await Zs).getRandomValues(new Uint8Array(e))}async function $s(e){let t=``;for(;t.length128)throw`Expected a length between 43 and 128. Received ${e}.`;let t=await ec(e);return{code_verifier:t,code_challenge:await tc(t)}}var rc=class extends Error{constructor(e,t){super(e),this.name=`ParseError`,this.type=t.type,this.field=t.field,this.value=t.value,this.line=t.line}},ic=10,ac=13,oc=32;function sc(e){}function cc(e){if(typeof e==`function`)throw TypeError("`config` must be an object, got a function instead. Did you mean `createParser({onEvent: fn})`?");let{onEvent:t=sc,onError:n=sc,onRetry:r=sc,onComment:i,maxBufferSize:a}=e,o=[],s=0,c=!0,l,u=``,d=0,f,p=!1;function m(e){if(p)throw Error("Cannot feed parser: it was terminated after exceeding the configured max buffer size. Call `reset()` to resume parsing.");if(c&&(c=!1,e.charCodeAt(0)===239&&e.charCodeAt(1)===187&&e.charCodeAt(2)===191&&(e=e.slice(3))),o.length===0){let t=g(e);t!==``&&(o.push(t),s=t.length),h();return}if(e.indexOf(` -`)===-1&&e.indexOf(`\r`)===-1){o.push(e),s+=e.length,h();return}o.push(e);let t=o.join(``);o.length=0,s=0;let n=g(t);n!==``&&(o.push(n),s=n.length),h()}function h(){a!==void 0&&(s+u.length<=a||(p=!0,o.length=0,s=0,l=void 0,u=``,d=0,f=void 0,n(new rc(`Buffered data exceeded max buffer size of ${a} characters`,{type:`max-buffer-size-exceeded`}))))}function g(e){let n=0;if(e.indexOf(`\r`)===-1){let r=e.indexOf(` -`,n);for(;r!==-1;){if(n===r){d>0&&t({id:l,event:f,data:u}),l=void 0,u=``,d=0,f=void 0,n=r+1,r=e.indexOf(` -`,n);continue}let i=e.charCodeAt(n);if(lc(e,n,i)){let i=e.charCodeAt(n+5)===oc?n+6:n+5,a=e.slice(i,r);if(d===0&&e.charCodeAt(r+1)===ic){t({id:l,event:f,data:a}),l=void 0,u=``,f=void 0,n=r+2,r=e.indexOf(` -`,n);continue}u=d===0?a:`${u} -${a}`,d++}else uc(e,n,i)?f=e.slice(e.charCodeAt(n+6)===oc?n+7:n+6,r)||void 0:_(e,n,r);n=r+1,r=e.indexOf(` -`,n)}return e.slice(n)}for(;n20?`${e.slice(0,20)}\u2026`:e}"`,{type:`unknown-field`,field:e,value:t,line:i}))}}function y(){d>0&&t({id:l,event:f,data:u}),l=void 0,u=``,d=0,f=void 0}function b(e={}){if(e.consume&&o.length>0){let e=o.join(``);_(e,0,e.length)}c=!0,l=void 0,u=``,d=0,f=void 0,o.length=0,s=0,p=!1}return{feed:m,reset:b}}function lc(e,t,n){return n===100&&e.charCodeAt(t+1)===97&&e.charCodeAt(t+2)===116&&e.charCodeAt(t+3)===97&&e.charCodeAt(t+4)===58}function uc(e,t,n){return n===101&&e.charCodeAt(t+1)===118&&e.charCodeAt(t+2)===101&&e.charCodeAt(t+3)===110&&e.charCodeAt(t+4)===116&&e.charCodeAt(t+5)===58}var dc=class extends TransformStream{constructor({onError:e,onRetry:t,onComment:n,maxBufferSize:r}={}){let i;super({start(a){i=cc({onEvent:e=>{a.enqueue(e)},onError(t){typeof e==`function`&&e(t),(e===`terminate`||t.type===`max-buffer-size-exceeded`)&&a.error(t)},onRetry:t,onComment:n,maxBufferSize:r})},transform(e){i.feed(e)}})}},fc=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.OAuthClientFlowError`})}static[Symbol.hasInstance](e){return Kr(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Kr(this,e)}constructor(e){super(e),this.name=new.target.name,Gr(this,new.target)}},pc=class extends fc{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.IssuerMismatchError`})}kind;expected;received;constructor(e,t,n){super(`Issuer mismatch in ${e===`metadata`?`authorization server metadata (RFC 8414 §3.3)`:`authorization response (RFC 9207)`}: expected ${JSON.stringify(t)}, received ${JSON.stringify(n)}`),this.kind=e,this.expected=t,this.received=n}},mc=class extends fc{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.RegistrationRejectedError`})}status;body;submittedMetadata;constructor(e){super(`Dynamic Client Registration rejected (HTTP ${e.status}): ${e.body}`),this.status=e.status,this.body=e.body,this.submittedMetadata=e.submittedMetadata}},hc=class extends fc{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.InsecureTokenEndpointError`})}tokenEndpoint;constructor(e){super(`Refusing to send credentials to non-https token endpoint '${e}'. OAuth token requests MUST use TLS (localhost / *.localhost / 127.0.0.1 / ::1 are exempt).`),this.tokenEndpoint=e}},gc=class extends fc{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.AuthorizationServerMismatchError`})}constructor(e,t){super(`Authorization server mismatch: credentials are bound to ${JSON.stringify(e)} but this call resolved ${JSON.stringify(t)}; refusing to present them to a different authorization server`),this.recordedIssuer=e,this.currentIssuer=t}},_c=class extends fc{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.InsufficientScopeError`})}requiredScope;resourceMetadataUrl;errorDescription;constructor(e){super(`Insufficient scope${e.requiredScope?`: required "${e.requiredScope}"`:``}`),this.requiredScope=e.requiredScope,this.resourceMetadataUrl=e.resourceMetadataUrl,this.errorDescription=e.errorDescription}};function vc(e,t,n){if(e)return typeof e.issuer==`string`?yc(e.issuer,t)?e:void 0:(n?.canPersistStamp!==!1&&console.warn(`[mcp-sdk] SEP-2352: stored OAuth credential has no 'issuer' stamp (pre-upgrade storage or provider not round-tripping the value). SEP-2352 isolation is inactive for this read; ensure your provider round-trips the issuer field.`),e.issuer===void 0?e:{...e,issuer:void 0})}function yc(e,t){return e===t||e.endsWith(`/`)&&e.slice(0,-1)===t||t.endsWith(`/`)&&t.slice(0,-1)===e}function bc(e){if(e==null)return!1;let t=e;return typeof t.tokens==`function`&&typeof t.clientInformation==`function`}async function xc(e,t,n){let{resourceMetadataUrl:r,scope:i}=Yc(t.response);if(await Uc(e,{serverUrl:t.serverUrl,resourceMetadataUrl:r,scope:i,fetchFn:t.fetchFn,...n})!==`AUTHORIZED`)throw new Cc}function Sc(e,t){return{token:async()=>(await e.tokens())?.access_token,onUnauthorized:async n=>xc(e,n,t)}}var Cc=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.UnauthorizedError`})}static[Symbol.hasInstance](e){return Kr(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Kr(this,e)}constructor(e){super(e??`Unauthorized`),this.name=`UnauthorizedError`,Gr(this,new.target)}};function wc(e){return e?.authorization_response_iss_parameter_supported===!0}function Tc({iss:e,expectedIssuer:t,issParameterSupported:n}){if(t!==void 0){if(e===void 0){if(n)throw new pc(`authorization_response`,t,void 0);return}if(e!==t)throw new pc(`authorization_response`,t,e)}}function Ec(...e){let t=new Set;for(let n of e)if(n)for(let e of n.split(/\s+/))e&&t.add(e);return t.size>0?[...t].join(` `):void 0}function Dc(e,t){if(!e)return!1;let n=new Set((t??``).split(/\s+/).filter(Boolean));for(let t of e.split(/\s+/))if(t&&!n.has(t))return!0;return!1}async function Oc(e,t,n,r,i){if(typeof e==`string`)return{authorizationCode:e,iss:t};let a=e.get(`iss`)??void 0,o=e.get(`code`);if(o)return{authorizationCode:o,iss:a};let s=(await n.discoveryState?.())?.authorizationServerMetadata;if(!s)try{s=(await al(r,i)).authorizationServerMetadata}catch{s=void 0}if(!s)throw new Cc(`Authorization callback failed and the issuer could not be verified`);Tc({iss:a,expectedIssuer:s.issuer,issParameterSupported:wc(s)});let c=e.get(`error`);throw c?new Jr(c,e.get(`error_description`)??c,e.get(`error_uri`)??void 0):new Cc("Authorization callback contained neither `code` nor `error`")}function kc(e){return[`client_secret_basic`,`client_secret_post`,`none`].includes(e)}var Ac=`code`,jc=`S256`;function Mc(e,t){let n=e.client_secret!==void 0;return`token_endpoint_auth_method`in e&&e.token_endpoint_auth_method&&kc(e.token_endpoint_auth_method)&&(t.length===0||t.includes(e.token_endpoint_auth_method))?e.token_endpoint_auth_method:t.length===0?n?`client_secret_basic`:`none`:n&&t.includes(`client_secret_basic`)?`client_secret_basic`:n&&t.includes(`client_secret_post`)?`client_secret_post`:t.includes(`none`)?`none`:n?`client_secret_post`:`none`}function Nc(e,t,n,r){let{client_id:i,client_secret:a}=t;switch(e){case`client_secret_basic`:Pc(i,a,n);return;case`client_secret_post`:Fc(i,a,r);return;case`none`:Ic(i,r);return;default:throw Error(`Unsupported client authentication method: ${e}`)}}function Pc(e,t,n){if(!t)throw Error(`client_secret_basic authentication requires a client_secret`);let r=btoa(`${e}:${t}`);n.set(`Authorization`,`Basic ${r}`)}function Fc(e,t,n){n.set(`client_id`,e),t&&n.set(`client_secret`,t)}function Ic(e,t){t.set(`client_id`,e)}function Lc(e){return e===`localhost`||e.endsWith(`.localhost`)||e===`127.0.0.1`||e===`[::1]`||e===`::1`}function Rc(e){let t=new URL(String(e));if(t.protocol!==`https:`&&!Lc(t.hostname))throw new hc(t.href);return t}function zc(e){for(let t of e??[]){let e;try{e=new URL(t)}catch{continue}if(e.protocol!==`http:`&&e.protocol!==`https:`||Lc(e.hostname))return`native`}return`web`}function Bc(e){let t=e.clientMetadata;return{...t,grant_types:t.grant_types??(e.redirectUrl===void 0?void 0:[`authorization_code`,`refresh_token`]),application_type:t.application_type??zc(t.redirect_uris)}}async function Vc(e){let t=e instanceof Response?e.status:void 0,n=e instanceof Response?await e.text():e;try{let e=Lr.parse(JSON.parse(n));return Jr.fromResponse(e)}catch(e){let r=`${t?`HTTP ${t}: `:``}Invalid OAuth error response: ${e}. Raw body: ${n}`;return new Jr(qr.ServerError,r)}}function Hc(e,t,n){let r=e.invalidateCredentials===void 0?`retrying authorization without discarding the stored ${n} (provider implements no invalidateCredentials())`:`invalidating the stored ${n} and retrying authorization`;console.warn(`[mcp-sdk] OAuth ${JSON.stringify(t.code)} — ${r}. Cause: ${JSON.stringify(t.message)}`)}async function Uc(e,t){try{return await Gc(e,t)}catch(n){if(n instanceof Jr){if(n.code===qr.InvalidClient||n.code===qr.UnauthorizedClient)return Hc(e,n,`client credentials and tokens`),await e.invalidateCredentials?.(`client`),await e.invalidateCredentials?.(`tokens`),await Gc(e,t);if(n.code===qr.InvalidGrant||n.code===qr.InvalidDpopProof)return Hc(e,n,`tokens`),await e.invalidateCredentials?.(`tokens`),await Gc(e,t)}throw n}}function Wc(e){let{requestedScope:t,resourceMetadata:n,authServerMetadata:r,clientMetadata:i}=e,a=t||n?.scopes_supported?.join(` `)||i.scope;return a&&r?.scopes_supported?.includes(`offline_access`)&&!a.split(` `).includes(`offline_access`)&&i.grant_types?.includes(`refresh_token`)&&(a=`${a} offline_access`),a}async function Gc(e,{serverUrl:t,authorizationCode:n,iss:r,scope:i,resourceMetadataUrl:a,fetchFn:o,skipIssuerMetadataValidation:s,forceReauthorization:c}){let l=Bc(e),u=await e.discoveryState?.(),d,f,p,m,h=a;if(!h&&u?.resourceMetadataUrl&&(h=new URL(u.resourceMetadataUrl)),u?.authorizationServerUrl){if(f=u.authorizationServerUrl,d=u.resourceMetadata,p=u.authorizationServerMetadata??await il(f,{fetchFn:o,skipIssuerValidation:s}),!d)try{d=await Zc(t,{resourceMetadataUrl:h},o)}catch(e){if(e instanceof TypeError)throw e}(p!==u.authorizationServerMetadata||d!==u.resourceMetadata)&&await e.saveDiscoveryState?.({authorizationServerUrl:String(f),resourceMetadataUrl:h?.toString(),resourceMetadata:d,authorizationServerMetadata:p})}else{let e=await al(t,{resourceMetadataUrl:h,fetchFn:o,skipIssuerMetadataValidation:s});f=e.authorizationServerUrl,p=e.authorizationServerMetadata,d=e.resourceMetadata,m={authorizationServerUrl:String(f),resourceMetadataUrl:h?.toString(),resourceMetadata:d,authorizationServerMetadata:p}}let g=p?.issuer??String(f),_={issuer:g};if(await e.saveAuthorizationServerUrl?.(g),n!==void 0){let t=u?.authorizationServerMetadata?.issuer??u?.authorizationServerUrl;if(t===void 0){if(e.saveDiscoveryState!==void 0)throw new gc(`discoveryState was not available on the callback leg; ensure your provider persists discoveryState alongside codeVerifier`,g);console.warn(`[mcp-sdk] OAuthClientProvider does not implement saveDiscoveryState()/discoveryState(); the SEP-2352 callback-leg authorization-server binding cannot be checked. Implement discoveryState (persist alongside codeVerifier) — see docs/migration/upgrade-to-v2.md §SEP-2352.`)}else if(!yc(t,g))throw new gc(t,g)}m&&await e.saveDiscoveryState?.(m);let v=await qc(t,e,d),y=v&&d&&!e.validateResourceURL?d.resource:v;y&&await e.saveResourceUrl?.(ol(y));let b=Wc({requestedScope:i,resourceMetadata:d,authServerMetadata:p,clientMetadata:e.clientMetadata}),ee=await Promise.resolve(e.clientInformation(_)),x=vc(ee,g,{canPersistStamp:e.saveClientInformation!==void 0});if(x===void 0&&ee?.issuer&&e.saveClientInformation===void 0)throw new gc(ee.issuer,g);if(x&&x.issuer===void 0&&(x={...x,issuer:g},await e.saveClientInformation?.(x,_)),!x){if(n!==void 0)throw Error(`Existing OAuth client information is required when exchanging an authorization code`);let t=p?.client_id_metadata_document_supported===!0,r=e.clientMetadataUrl;if(r&&!Kc(r))throw new Jr(qr.InvalidClientMetadata,`clientMetadataUrl must be a valid HTTPS URL with a non-root pathname, got: ${r}`);if(t&&r)x={client_id:r,issuer:g},await e.saveClientInformation?.(x,_);else{if(!e.saveClientInformation)throw Error(`OAuth client information must be saveable for dynamic registration`);x={...await fl(f,{metadata:p,clientMetadata:l,scope:b,fetchFn:o}),issuer:g},await e.saveClientInformation(x,_)}}let S=!e.redirectUrl;if(n!==void 0||S){n!==void 0&&Tc({iss:r,expectedIssuer:p?.issuer,issParameterSupported:wc(p)});let t=await dl(e,f,{metadata:p,resource:y,authorizationCode:n,iss:r,scope:b,fetchFn:o});return await e.saveTokens({...t,issuer:g},_),`AUTHORIZED`}let C=vc(await e.tokens(_),g);if(C&&C.issuer===void 0&&(C={...C,issuer:g},await e.saveTokens(C,_)),C?.refresh_token&&!c){let t;try{t=await ul(f,{metadata:p,clientInformation:x,refreshToken:C.refresh_token,resource:y,addClientAuthentication:e.addClientAuthentication,dpop:await e.dpop?.(),fetchFn:o})}catch(e){if(e instanceof hc)throw e;if(!(e instanceof Jr)||e.code===qr.ServerError)console.warn(`[mcp-sdk] Could not refresh OAuth tokens; falling back to a new authorization request. Cause: ${JSON.stringify(e instanceof Error?e.message:String(e))}`);else throw e}if(t)return await e.saveTokens({...t,issuer:g},_),`AUTHORIZED`}let w=e.state?await e.state():void 0,{authorizationUrl:T,codeVerifier:te}=await sl(f,{metadata:p,clientInformation:x,state:w,redirectUrl:e.redirectUrl,scope:b,resource:y});return await e.saveCodeVerifier(te),await e.redirectToAuthorization(T),`REDIRECT`}function Kc(e){if(!e)return!1;try{let t=new URL(e);return t.protocol===`https:`&&t.pathname!==`/`}catch{return!1}}async function qc(e,t,n){let r=Xr(e);if(t.validateResourceURL)return await t.validateResourceURL(r,n?.resource);if(n){if(!Qr({requestedResource:r,configuredResource:n.resource}))throw Error(`Protected resource ${n.resource} does not match expected ${r} (or origin)`);return new URL(n.resource)}}var Jc=new Set([`bearer`,`dpop`]);function Yc(e){let t=e.headers.get(`WWW-Authenticate`);if(!t)return{};let[n,r]=t.split(` `);if(!n||!Jc.has(n.toLowerCase())||!r)return{};let i=Xc(e,`resource_metadata`)||void 0,a;if(i)try{a=new URL(i)}catch{}let o=Xc(e,`scope`)||void 0,s=Xc(e,`error`)||void 0,c=Xc(e,`error_description`)||void 0;return{resourceMetadataUrl:a,scope:o,error:s,errorDescription:c}}function Xc(e,t){let n=e.headers.get(`WWW-Authenticate`);if(!n)return null;let r=new RegExp(String.raw`${t}=(?:"([^"]+)"|([^\s,]+))`),i=n.match(r);if(i){let e=i[1]||i[2];if(e)return e}return null}async function Zc(e,t,n=fetch){let r=await nl(e,`oauth-protected-resource`,n,{protocolVersion:t?.protocolVersion,metadataUrl:t?.resourceMetadataUrl});if(!r||r.status===404)throw await r?.text?.().catch(()=>{}),Error(`Resource server does not implement OAuth 2.0 Protected Resource Metadata.`);if(!r.ok)throw await r.text?.().catch(()=>{}),Error(`HTTP ${r.status} trying to load well-known OAuth protected resource metadata.`);return jr.parse(await r.json())}async function Qc(e,t,n=fetch){try{return await n(e,{headers:t})}catch(r){if(!(r instanceof TypeError))throw r;if(t)try{return await n(e,{})}catch(e){if(!(e instanceof TypeError))throw e;return}return}}function $c(e,t=``,n={}){return t.endsWith(`/`)&&(t=t.slice(0,-1)),n.prependPathname?`${t}/.well-known/${e}`:`/.well-known/${e}${t}`}async function el(e,t,n=fetch){return await Qc(e,{"MCP-Protocol-Version":t},n)}function tl(e,t){return e?t===`/`?!1:e.status>=400&&e.status<500||e.status===502:!0}async function nl(e,t,n,r){let i=new URL(e),a=r?.protocolVersion??`2025-11-25`,o;if(r?.metadataUrl)o=new URL(r.metadataUrl);else{let e=$c(t,i.pathname);o=new URL(e,r?.metadataServerUrl??i),o.search=i.search}let s=await el(o,a,n);return!r?.metadataUrl&&tl(s,i.pathname)&&(s=await el(new URL(`/.well-known/${t}`,i),a,n)),s}function rl(e){let t=typeof e==`string`?new URL(e):e,n=t.pathname!==`/`,r=[];if(!n)return r.push({url:new URL(`/.well-known/oauth-authorization-server`,t.origin),type:`oauth`},{url:new URL(`/.well-known/openid-configuration`,t.origin),type:`oidc`}),r;let i=t.pathname;return i.endsWith(`/`)&&(i=i.slice(0,-1)),r.push({url:new URL(`/.well-known/oauth-authorization-server${i}`,t.origin),type:`oauth`},{url:new URL(`/.well-known/openid-configuration${i}`,t.origin),type:`oidc`},{url:new URL(`${i}/.well-known/openid-configuration`,t.origin),type:`oidc`}),r}async function il(e,{fetchFn:t=fetch,protocolVersion:n=Ee,skipIssuerValidation:r=!1}={}){let i={"MCP-Protocol-Version":n,Accept:`application/json`},a=rl(e);for(let{url:n,type:o}of a){let a=await Qc(n,i,t);if(!a)continue;if(!a.ok){if(await a.text?.().catch(()=>{}),a.status>=400&&a.status<500||a.status===502)continue;throw Error(`HTTP ${a.status} trying to load ${o===`oauth`?`OAuth`:`OpenID provider`} metadata from ${n}`)}let s=o===`oauth`?Mr.parse(await a.json()):Pr.parse(await a.json());if(!r){let t=typeof e==`string`?e:e.href;if(!(s.issuer===t||t.endsWith(`/`)&&s.issuer===t.slice(0,-1)))throw new pc(`metadata`,t,s.issuer)}return s}}async function al(e,t){let n,r;try{n=await Zc(e,{resourceMetadataUrl:t?.resourceMetadataUrl},t?.fetchFn),n.authorization_servers&&n.authorization_servers.length>0&&(r=n.authorization_servers[0])}catch(e){if(e instanceof TypeError)throw e}r||=String(new URL(`/`,e));let i=await il(r,{fetchFn:t?.fetchFn,skipIssuerValidation:t?.skipIssuerMetadataValidation});return{authorizationServerUrl:r,authorizationServerMetadata:i,resourceMetadata:n}}function ol(e){return typeof e==`string`?e:e.href}async function sl(e,{metadata:t,clientInformation:n,redirectUrl:r,scope:i,state:a,resource:o}){let s;if(t){if(s=new URL(t.authorization_endpoint),!t.response_types_supported.includes(Ac))throw Error(`Incompatible auth server: does not support response type ${Ac}`);if(t.code_challenge_methods_supported&&!t.code_challenge_methods_supported.includes(jc))throw Error(`Incompatible auth server: does not support code challenge method ${jc}`)}else s=new URL(`/authorize`,e);let c=await nc(),l=c.code_verifier,u=c.code_challenge;return s.searchParams.set(`response_type`,Ac),s.searchParams.set(`client_id`,n.client_id),s.searchParams.set(`code_challenge`,u),s.searchParams.set(`code_challenge_method`,jc),s.searchParams.set(`redirect_uri`,String(r)),a&&s.searchParams.set(`state`,a),i&&s.searchParams.set(`scope`,i),i?.split(` `).includes(`offline_access`)&&s.searchParams.append(`prompt`,`consent`),o&&s.searchParams.set(`resource`,ol(o)),{authorizationUrl:s,codeVerifier:l}}function cl(e,t,n){return new URLSearchParams({grant_type:`authorization_code`,code:e,code_verifier:t,redirect_uri:String(n)})}async function ll(e,{metadata:t,tokenRequestParams:n,clientInformation:r,addClientAuthentication:i,resource:a,dpop:o,fetchFn:s}){let c=Rc(t?.token_endpoint??new URL(`/token`,e)),l=new Headers({"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`});a&&n.set(`resource`,ol(a)),!i&&r&&Nc(Mc(r,t?.token_endpoint_auth_methods_supported??[]),r,l,n);let u=async()=>{let e=new Headers(l);return i&&await i(e,n,c,t),o&&e.set(`DPoP`,await o.buildProof({htm:`POST`,htu:c})),(s??fetch)(c,{method:`POST`,headers:e,body:n})},d=await u();if(o&&d.status===400&&(await d.clone().json().catch(()=>{}))?.error===qr.UseDpopNonce&&(o.observeNonce(d,c),d=await u()),o?.observeNonce(d,c),!d.ok)throw await Vc(d);let f=await d.json();try{return Fr.parse(Zr(f))}catch(e){throw typeof f==`object`&&f&&`error`in f?await Vc(JSON.stringify(f)):e}}async function ul(e,{metadata:t,clientInformation:n,refreshToken:r,resource:i,addClientAuthentication:a,dpop:o,fetchFn:s}){return{refresh_token:r,...await ll(e,{metadata:t,tokenRequestParams:new URLSearchParams({grant_type:`refresh_token`,refresh_token:r}),clientInformation:n,addClientAuthentication:a,resource:i,dpop:o,fetchFn:s})}}async function dl(e,t,{metadata:n,resource:r,authorizationCode:i,iss:a,scope:o,fetchFn:s}={}){i!==void 0&&Tc({iss:a,expectedIssuer:n?.issuer,issParameterSupported:wc(n)});let c=n?.issuer??String(t),l=async()=>{let t=await e.clientInformation({issuer:c}),n=vc(t,c,{canPersistStamp:!1});if(t&&n===void 0)throw new gc(String(t.issuer),c);return n},u=await l(),d=o??e.clientMetadata.scope,f;if(e.prepareTokenRequest&&(f=await e.prepareTokenRequest(d)),!f){if(!i)throw Error(`Either provider.prepareTokenRequest() or authorizationCode is required`);if(!e.redirectUrl)throw Error(`redirectUrl is required for authorization_code flow`);f=cl(i,await e.codeVerifier(),e.redirectUrl)}return u??=await l(),ll(t,{metadata:n,tokenRequestParams:f,clientInformation:u,addClientAuthentication:e.addClientAuthentication,resource:r,dpop:await e.dpop?.(),fetchFn:s})}async function fl(e,{metadata:t,clientMetadata:n,scope:r,fetchFn:i}){let a;if(t){if(!t.registration_endpoint)throw Error(`Incompatible auth server: does not support dynamic client registration`);a=new URL(t.registration_endpoint)}else a=new URL(`/register`,e);let o={...n,...r===void 0?{}:{scope:r}},s=await(i??fetch)(a,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(o)});if(!s.ok)throw new mc({status:s.status,body:await s.text(),submittedMetadata:o});return Vr.parse(Zr(await s.json()))}var pl=new Set([`tools/list`,`prompts/list`,`resources/list`,`resources/templates/list`,`server/discover`]),ml=class{_entries=new Map;_maxEntries;_stamp=0;_cappedSize=0;constructor(e){this._maxEntries=e?.maxEntries??512}get size(){return this._entries.size}get(e){return this._entries.get(hl(e))}set(e,t){let n=hl(e),r=pl.has(e.method),i=!this._entries.has(n);if(!r&&i&&this._maxEntries>0&&this._cappedSize>=this._maxEntries){for(let e of this._entries.keys())if(!pl.has(e.slice(0,e.indexOf(`\0`)))){this._entries.delete(e),this._cappedSize--;break}}let a=++this._stamp;return this._entries.set(n,{...t,stamp:a}),i&&!r&&this._cappedSize++,a}delete(e){this._entries.delete(hl(e))&&!pl.has(e.method)&&this._cappedSize--}evict(e){let t=`${e}\0`,n=pl.has(e);for(let e of this._entries.keys())e.startsWith(t)&&(this._entries.delete(e),n||this._cappedSize--)}clear(){this._entries.clear(),this._cappedSize=0}};function hl(e){return`${e.method}\0${JSON.stringify([e.partition??``,e.params??``])}`}function gl(e,t){return t===void 0?e:`${e}\0${t}`}var _l=864e5,vl=class{_evictionGeneration=new Map;_toolIndex;_toolOutputValidatorIndex;_serverIdentity=``;constructor(e,t,n=()=>{},r=``,i=Date.now){this._store=e,this._isUserSupplied=t,this._reportError=n,this._cachePartition=r,this._now=i}now(){return this._now()}setServerIdentity(e){this._serverIdentity=e}_partitionFor(e){return JSON.stringify([this._serverIdentity,e===`public`?``:this._cachePartition])}async _probe(e,t){let n={method:e,params:t??``},r=this._partitionFor(`private`),i=await this._store.get({...n,partition:r});if(i!==void 0)return i;let a=this._partitionFor(`public`);if(a===r)return;let o=await this._store.get({...n,partition:a});return o?.scope===`public`?o:void 0}async evict(e){this._evictionGeneration.set(e,(this._evictionGeneration.get(e)??0)+1),await this._deleteBoth(e,``)}async _deleteBoth(e,t){let n=this._partitionFor(`private`),r=this._partitionFor(`public`);try{await this._store.delete({method:e,params:t,partition:n})}catch(e){this._reportError(e)}if(r!==n)try{await this._store.delete({method:e,params:t,partition:r})}catch(e){this._reportError(e)}}async evictKey(e,t){let n=gl(e,t),r=this._evictionGeneration.get(n);r!==void 0&&this._evictionGeneration.set(n,r+1),await this._deleteBoth(e,t)}captureGeneration(e,t){let n=gl(e,t),r=this._evictionGeneration.get(n)??0;return this._evictionGeneration.set(n,r),r}async write(e,t,n,r){if((this._evictionGeneration.get(gl(e,r?.params))??0)!==n)return;let i=r?.params??``,a=this._partitionFor(`private`),o=this._partitionFor(`public`),s=(r?.scope??`private`)===`public`?o:a;try{await this._store.set({method:e,params:i,partition:s},{value:yl(t),expiresAt:r?.expiresAt,scope:r?.scope})}catch(e){this._reportError(e)}if(o!==a)try{await this._store.delete({method:e,params:i,partition:s===a?o:a})}catch(e){this._reportError(e)}}async read(e,t){let n=await this._probe(e,t);if(n?.expiresAt!==void 0&&n.expiresAt>this.now())try{let e=JSON.parse(n.value);if(typeof e!=`object`||!e||Array.isArray(e))throw TypeError(`cached document is not an object`);return{value:e}}catch(n){this._reportError(n),await this._deleteBoth(e,t??``);return}}resetForReconnect(){this._isUserSupplied||this._store.clear(),this._evictionGeneration.clear(),this._toolIndex=void 0,this._toolOutputValidatorIndex=void 0,this._serverIdentity=``}async toolDefinition(e){let t=await this._probe(`tools/list`);if(t===void 0){this._toolIndex=void 0;return}if(this._toolIndex?.stamp!==t.stamp){let e=this._decodeListTools(t),n=new Map;if(e!==void 0)for(let t of e.tools)n.set(t.name,t);this._toolIndex={stamp:t.stamp,byName:n}}return this._toolIndex.byName.get(e)}async outputValidator(e,t){let n=await this._probe(`tools/list`);if(n===void 0){this._toolOutputValidatorIndex=void 0;return}if(this._toolOutputValidatorIndex?.stamp!==n.stamp){let e=this._decodeListTools(n)??{tools:[]},r=new Map;for(let n of e.tools){let e=t(n);e!==void 0&&r.set(n.name,e)}this._toolOutputValidatorIndex={stamp:n.stamp,byName:r}}return this._toolOutputValidatorIndex.byName.get(e)}_decodeListTools(e){try{let t=JSON.parse(e.value);if(!Array.isArray(t?.tools)||!t.tools.every(e=>typeof e==`object`&&!!e))throw TypeError(`cached tools/list document has a malformed tools array`);return t}catch(e){this._reportError(e);return}}};function yl(e){let t;try{t=JSON.stringify(e)}catch(e){throw TypeError(`cache value is not JSON-serializable: ${e instanceof Error?e.message:String(e)}`)}if(typeof t!=`string`)throw TypeError(`cache value is not JSON-serializable: it has no JSON representation`);return t}var bl=Symbol.for(`mcp.authSeamEscape`);function xl(e){if(typeof e==`object`&&e||typeof e==`function`)try{Object.defineProperty(e,bl,{value:!0,configurable:!0})}catch{}return e}function Sl(e){return(typeof e==`object`&&!!e||typeof e==`function`)&&e[bl]===!0}var Cl=-32022,wl=new Set([-32001,-32020,-32021]);function Tl(e,t){switch(e.kind){case`result`:return El(e.result,t);case`rpc-error`:return Dl(e,t);case`http-error`:return Ol(e,t);case`network-error`:return kl(e.error,t);case`auth-required`:return{kind:`error`,error:e.error};case`closed`:return t.transportKind===`stdio`?{kind:`legacy`}:kl(Error(`Connection closed during the version negotiation probe`),t);case`timeout`:return t.transportKind===`stdio`?{kind:`legacy`}:{kind:`error`,error:new X(Y.RequestTimeout,`Version negotiation probe timed out after ${e.timeoutMs}ms`,{timeout:e.timeoutMs})}}}function El(e,t){let n=wa(Ca).validateResult(`server/discover`,e);if(!n.ok)return{kind:`legacy`};let r=n.value.supportedVersions,i=t.clientModernVersions.find(e=>r.includes(e));return i===void 0?t.fallbackAvailable?{kind:`legacy`}:{kind:`error`,error:new Ui({supported:[...r],requested:t.requestedVersion})}:{kind:`modern`,version:i,discover:n.value}}function Dl(e,t){let{code:n,message:r,data:i}=e;if(n===Cl){let e=Ml(i);if(e===void 0)return{kind:`legacy`};let n=new Ui({supported:e,requested:Nl(i)??t.requestedVersion},r),a=ri(e),o=t.clientModernVersions.find(e=>a.includes(e));return o===void 0?a.length>0?{kind:`error`,error:n}:t.fallbackAvailable?{kind:`legacy`}:{kind:`error`,error:n}:{kind:`corrective`,version:o,error:n}}return wl.has(n),{kind:`legacy`}}function Ol(e,t){if(e.status===401||e.status===403){let t=e.status===403;return{kind:`error`,error:new Yr(t?Y.ClientHttpForbidden:Y.ClientHttpAuthentication,`Version negotiation failed: ${t?`the server denied access (HTTP 403)`:`the server requires authorization (HTTP 401)`}`,{status:e.status,statusText:e.statusText,text:e.body})}}if(e.status>=500)return{kind:`error`,error:new Yr(Y.EraNegotiationFailed,`Version negotiation failed: the server answered the probe with HTTP ${e.status}`,{status:e.status,statusText:e.statusText,text:e.body})};let n=Pl(e.body);return n===void 0?{kind:`legacy`}:Dl(n,t)}function kl(e,t){return t.environment===`browser`&&Al(e)?{kind:`legacy`}:{kind:`error`,error:new X(Y.EraNegotiationFailed,`Version negotiation probe failed: ${jl(e)}`,{cause:e},{cause:e})}}function Al(e){return e instanceof TypeError||e instanceof Error&&e.name===`TypeError`}function jl(e){return e instanceof Error?e.message:String(e)}function Ml(e){if(typeof e!=`object`||!e)return;let t=e.supported;if(Array.isArray(t)&&t.length!==0&&t.every(e=>typeof e==`string`))return t}function Nl(e){if(typeof e!=`object`||!e)return;let t=e.requested;return typeof t==`string`?t:void 0}function Pl(e){if(e===void 0||e===``)return;let t;try{t=JSON.parse(e)}catch{return}if(typeof t!=`object`||!t)return;let n=t.error;if(typeof n!=`object`||!n)return;let{code:r,message:i,data:a}=n;if(typeof r==`number`)return{code:r,message:typeof i==`string`?i:``,data:a}}var Fl=`legacy`;function Il(e,t){let n=e?.mode??Fl;if(n===`legacy`)return{kind:`legacy`};let r=e?.probe??{};if(typeof n==`object`){if(!ti(n.pin))throw TypeError(`versionNegotiation: { pin: '${n.pin}' } is not a modern protocol revision — pinning is for 2026-07-28 and later; omit versionNegotiation (or use mode: 'legacy') for 2025-era servers.`);return{kind:`pin`,version:n.pin,probe:r}}let i=t?ri(t):[];return{kind:`auto`,modernVersions:i.length>0?i:[...ei],fallbackAvailable:!t||ni(t).length>0,probe:r}}function Ll(){let e=globalThis;return e.window!==void 0&&e.document!==void 0?`browser`:`node`}function Rl(e){return`stderr`in e&&`pid`in e?`stdio`:`http`}var zl=class e{_pending;_probeCounter=0;_savedOnMessage;_savedOnError;_savedOnClose;_closeDelivered=!1;constructor(e){this._transport=e,this._savedOnMessage=e.onmessage,this._savedOnError=e.onerror,this._savedOnClose=e.onclose}static async open(t){let n=new e(t);t.onmessage=e=>{let t=n._pending;if(t!==void 0&&(Ma(e)||Na(e))&&e.id===t.id){n._pending=void 0,Ma(e)?t.resolve({kind:`response`,result:e.result}):t.resolve({kind:`response`,error:e.error});return}},t.onerror=e=>{n._savedOnError?.(e)},t.onclose=()=>{let e=n._pending;e!==void 0&&(n._pending=void 0,e.resolve({kind:`closed`})),n._closeDelivered=!0,n._savedOnClose?.()};try{await t.start()}catch(e){throw n.detach(),e}return n}async exchange(e,t){let n=`server-discover-probe-${++this._probeCounter}`;return new Promise(r=>{let i=!1,a=e=>{i||(i=!0,clearTimeout(o),this._pending?.id===n&&(this._pending=void 0),r(e))},o=setTimeout(()=>a({kind:`timeout`}),t);this._pending={id:n,resolve:a},this._transport.send(e(n)).catch(e=>a({kind:`send-error`,error:e}))})}detach(){if(this._pending=void 0,this._transport.onmessage=this._savedOnMessage,this._transport.onerror=this._savedOnError,this._closeDelivered&&this._savedOnClose!==void 0){let e=this._savedOnClose,t=this._transport,n=!1,r=()=>{if(!n){n=!0;return}e()};t.onclose=r,Bl.set(t,()=>{t.onclose===r&&(t.onclose=e)})}else this._transport.onclose=this._savedOnClose}release(){this.detach();let e=this._transport,t=e.start,n=!0;e.start=async function(){if(n){n=!1,e.start=t;return}return t.call(e)}}},Bl=new WeakMap;function Vl(e){let t=Bl.get(e);Bl.delete(e),t?.()}function Hl(e,t,n,r){return{jsonrpc:`2.0`,id:e,method:`server/discover`,params:{_meta:wa(t).outboundEnvelope({protocolVersion:t,clientInfo:n,clientCapabilities:r})}}}function Ul(e,t){switch(e.kind){case`response`:return e.error===void 0?{kind:`result`,result:e.result}:{kind:`rpc-error`,...e.error};case`send-error`:{let t=e.error;if(Sl(t)||t instanceof Cc||t instanceof Error&&t.name===`UnauthorizedError`)return{kind:`auth-required`,error:t};if(t instanceof Yr){let e=t.data?.text;return{kind:`http-error`,status:t.data.status,body:typeof e==`string`?e:void 0,statusText:t.data.statusText}}return{kind:`network-error`,error:t}}case`closed`:return{kind:`closed`};case`timeout`:return{kind:`timeout`,timeoutMs:t}}}async function Wl(e,t){let n=e.probe.timeoutMs??t.defaultTimeoutMs,r=Math.max(0,e.probe.maxRetries??0),i=e.kind===`pin`?[e.version]:e.modernVersions,a=e.kind===`auto`&&e.fallbackAvailable,o=await zl.open(t.transport),s=async()=>{let s=i[0],c=!1,l=r;for(;;){let r=await o.exchange(e=>Hl(e,s,t.clientInfo,t.capabilities),n);if(r.kind===`timeout`&&l>0){l--;continue}let u=Ul(r,n),d=Tl(u,{clientModernVersions:i,requestedVersion:s,fallbackAvailable:a,environment:t.environment,transportKind:t.transportKind});switch(d.kind){case`modern`:return{era:`modern`,version:d.version,discover:d.discover};case`corrective`:if(c)throw d.error;c=!0,s=d.version;continue;case`legacy`:{let n=u.kind===`closed`?`the connection closed during the server/discover probe`:void 0;if(e.kind===`pin`)throw new X(Y.EraNegotiationFailed,n===void 0?`Version negotiation failed: the server did not offer pinned protocol version ${e.version} via server/discover (no fallback in pin mode)`:`Version negotiation failed: ${n} before the server offered pinned protocol version ${e.version} (no fallback in pin mode)`);if(!e.fallbackAvailable)throw new X(Y.EraNegotiationFailed,n===void 0?`Version negotiation failed: the server gave no modern evidence and this client supports no pre-2026-07-28 protocol version to fall back to`:`Version negotiation failed: ${n} and this client supports no pre-2026-07-28 protocol version to fall back to`);if(n!==void 0&&t.disposableProbe!==!0)throw new X(Y.EraNegotiationFailed,`Version negotiation failed: ${n} (this transport probed in place — the disposable sibling probe requires the SDK's base StdioClientTransport)`);return{era:`legacy`}}case`error`:throw d.error}}},c;try{c=await s()}catch(e){throw o.detach(),e}return o.release(),c}function Gl(e){let t=Object.getPrototypeOf(e);if(t===null||!Object.prototype.hasOwnProperty.call(t,`_dispose`))return;let n=e._serverParams;return typeof n==`object`&&n&&typeof n.command==`string`?n:void 0}async function Kl(e,t,n,r){let i=t.constructor,a=new i({...n,stderr:`ignore`}),o=t.close,s=!1,c,l=new Promise((e,t)=>{c=()=>t(ql())});t.close=async function(){return s=!0,c?.(),o.call(t)};let u;try{let t=Wl(e,{...r,transport:a,transportKind:`stdio`,disposableProbe:!0});t.catch(()=>{}),u=await Promise.race([t,l])}finally{await Jl(a),t.close=o}if(s)throw ql();return u}function ql(){return new X(Y.EraNegotiationFailed,`Version negotiation failed: the transport was closed during the server/discover probe`)}async function Jl(e){try{let t=e._dispose;await(typeof t==`function`?t.call(e):e.close())}catch{}}function Yl(e){let t=e._meta?.[je];return Wo.Implementation(t)?t:void 0}function Xl(e,t){if(e&&typeof t==`object`&&t){if(e.type===`object`&&e.properties&&typeof e.properties==`object`){let n=t,r=e.properties;for(let e of Object.keys(r)){let t=r[e];n[e]===void 0&&Object.prototype.hasOwnProperty.call(t,`default`)&&(n[e]=t.default),n[e]!==void 0&&Xl(t,n[e])}}if(Array.isArray(e.anyOf))for(let n of e.anyOf)typeof n!=`boolean`&&Xl(n,t);if(Array.isArray(e.oneOf))for(let n of e.oneOf)typeof n!=`boolean`&&Xl(n,t)}}function Zl(e){if(!e)return{supportsFormMode:!1,supportsUrlMode:!1};let t=e.form!==void 0,n=e.url!==void 0;return{supportsFormMode:t||!t&&!n,supportsUrlMode:n}}function Ql(e){if(typeof e==`object`&&e&&(e.kind===`legacy`&&!(`supportedVersions`in e)&&!(`discover`in e)||e.kind===`modern`&&ft.safeParse(e.discover).success))return e;throw new X(Y.EraNegotiationFailed,`connect({ prior }): unrecognized prior — expected { kind: 'modern', discover } or { kind: 'legacy' }`)}var $l={"notifications/tools/list_changed":[`tools/list`],"notifications/prompts/list_changed":[`prompts/list`],"notifications/resources/list_changed":[`resources/list`,`resources/templates/list`]},eu=64,tu=class extends Qo{_serverCapabilities;_serverVersion;_capabilities;_instructions;_jsonSchemaValidator;_cache;_defaultCacheTtlMs;_listMaxPages;_listChangedDebounceTimers=new Map;_listChangedConfig;_enforceStrictCapabilities;_versionNegotiation;_supportedProtocolVersionsOption;_inputRequiredDriverConfig;_listenState=new Map;_nextListenId=0;_autoOpenedSubscription;_discoverResult;_resetConnectionState(){if(this._negotiatedProtocolVersion=void 0,this._serverCapabilities=void 0,this._serverVersion=void 0,this._instructions=void 0,this._discoverResult=void 0,this._autoOpenedSubscription=void 0,this._listenState.size>0){let e=new X(Y.ConnectionClosed,`subscriptions/listen: client reconnected or closed; subscription state from the previous connection was reset`);for(let t of this._listenState.values())t.settle({cause:`remote`,error:e})}this._listenState.clear();for(let e of this._listChangedDebounceTimers.values())clearTimeout(e);this._listChangedDebounceTimers.clear(),this._cache.resetForReconnect()}async close(){try{await super.close()}finally{this._resetConnectionState()}}constructor(e,t){super(t),this._clientInfo=e,this._capabilities=t?.capabilities?{...t.capabilities}:{},this._jsonSchemaValidator=t?.jsonSchemaValidator??new Xs,this._enforceStrictCapabilities=t?.enforceStrictCapabilities??!1,this._versionNegotiation=t?.versionNegotiation,this._supportedProtocolVersionsOption=t?.supportedProtocolVersions,this._inputRequiredDriverConfig=No(t?.inputRequired),this._cache=new vl(t?.responseCacheStore??new ml,t?.responseCacheStore!==void 0,e=>this._reportStoreError(e),t?.cachePartition??``),this._defaultCacheTtlMs=t?.defaultCacheTtlMs??0,this._listMaxPages=t?.listMaxPages??eu,t?.listChanged&&(this._listChangedConfig=t.listChanged)}buildContext(e,t){return e}_shouldDropInbound(e){if(this._negotiatedProtocolVersion!==void 0&&ti(this._negotiatedProtocolVersion)&&Aa(e))return`drop`}_outboundMetaEnvelope(){let e=this._negotiatedProtocolVersion;if(e!==void 0)return this._wireCodec().outboundEnvelope({protocolVersion:e,clientInfo:this._clientInfo,clientCapabilities:this._capabilities})}_resolveNonCompleteResult(e,t){return this._inputRequiredDriverConfig.autoFulfill?ss({getRequestHandler:e=>this._getRequestHandler(e),buildContext:e=>this.buildContext(e,void 0),sessionId:this.transport?.sessionId},this._inputRequiredDriverConfig,e,t):Promise.reject(new X(Y.UnsupportedResultType,`Unsupported result type 'input_required' for ${t.request.method}: multi-round-trip auto-fulfilment is not enabled on this instance — pass allowInputRequired: true to handle it manually, or enable inputRequired.autoFulfill`,{resultType:`input_required`,method:t.request.method}))}_setupListChangedHandlers(e){e.tools&&this._serverCapabilities?.tools?.listChanged&&this._setupListChangedHandler(`tools`,`notifications/tools/list_changed`,e.tools,async()=>(await this.listTools(void 0,{cacheMode:`refresh`})).tools),e.prompts&&this._serverCapabilities?.prompts?.listChanged&&this._setupListChangedHandler(`prompts`,`notifications/prompts/list_changed`,e.prompts,async()=>(await this.listPrompts(void 0,{cacheMode:`refresh`})).prompts),e.resources&&this._serverCapabilities?.resources?.listChanged&&this._setupListChangedHandler(`resources`,`notifications/resources/list_changed`,e.resources,async()=>(await this.listResources(void 0,{cacheMode:`refresh`})).resources)}registerCapabilities(e){if(this.transport)throw Error(`Cannot register capabilities after connecting to transport`);this._capabilities=es(this._capabilities,e)}setVersionNegotiation(e){if(this.transport)throw Error(`Cannot configure version negotiation after connecting to transport`);this._versionNegotiation=e}_wrapHandler(e,t){return e===`elicitation/create`?async(e,n)=>{let r=wa(this._negotiatedProtocolVersion),i=r.validateRequest(`elicitation/create`,e);if(!i.ok&&i.reason===`not-in-era`&&(i=r.validateInputRequest(`elicitation/create`,e)),!i.ok)throw new Q(i.reason===`not-in-era`?Z.InternalError:Z.InvalidParams,i.reason===`not-in-era`?`No wire schema for elicitation/create in the resolved era`:`Invalid elicitation request: ${i.message}`);let{params:a}=i.value;a.mode=a.mode??`form`;let{supportsFormMode:o,supportsUrlMode:s}=Zl(this._capabilities.elicitation);if(a.mode===`form`&&!o)throw new Q(Z.InvalidParams,`Client does not support form-mode elicitation requests`);if(a.mode===`url`&&!s)throw new Q(Z.InvalidParams,`Client does not support URL-mode elicitation requests`);let c=await t(e,n),l=r.validateResult(`elicitation/create`,c);if(!l.ok&&l.reason===`not-in-era`&&(l=r.validateInputResponse(`elicitation/create`,c)),!l.ok)throw new Q(l.reason===`not-in-era`?Z.InternalError:Z.InvalidParams,l.reason===`not-in-era`?`No wire schema for elicitation/create in the resolved era`:`Invalid elicitation result: ${l.message}`);let u=l.value,d=a.mode===`form`?a.requestedSchema:void 0;if(a.mode===`form`&&u.action===`accept`&&u.content&&d&&this._capabilities.elicitation?.form?.applyDefaults)try{Xl(d,u.content)}catch{}return u}:e===`sampling/createMessage`?async(e,n)=>{let r=wa(this._negotiatedProtocolVersion),i=r.validateRequest(`sampling/createMessage`,e);if(!i.ok&&i.reason===`not-in-era`&&(i=r.validateInputRequest(`sampling/createMessage`,e)),!i.ok)throw new Q(i.reason===`not-in-era`?Z.InternalError:Z.InvalidParams,i.reason===`not-in-era`?`No wire schema for sampling/createMessage in the resolved era`:`Invalid sampling request: ${i.message}`);let{params:a}=i.value,o=await t(e,n),s=!!(a.tools||a.toolChoice),c=r.samplingResultVariant(s,o);if(!c.ok&&c.reason===`not-in-era`&&(c=r.validateInputResponse(`sampling/createMessage`,o)),!c.ok)throw new Q(c.reason===`not-in-era`?Z.InternalError:Z.InvalidParams,c.reason===`not-in-era`?`No result schema for sampling/createMessage in the resolved era`:`Invalid sampling result: ${c.message}`);return c.value}:t}assertCapability(e,t){if(!this._serverCapabilities?.[e])throw new X(Y.CapabilityNotSupported,`Server does not support ${e} (required for ${t})`)}async connect(e,t){if(t?.prior!=null)return this._connectFromPrior(e,Ql(t.prior),t);let n=Il(this._versionNegotiation,this._supportedProtocolVersionsOption);return n.kind===`legacy`?this._connectPlainLegacy(e,t):this._connectNegotiated(e,n,t)}async _connectPlainLegacy(e,t){if(await super.connect(e),e.sessionId!==void 0){let t=this._negotiatedProtocolVersion;t!==void 0&&e.setProtocolVersion?.(t);return}this._resetConnectionState(),await this._legacyHandshake(e,t)}async _legacyHandshake(e,t){let n=ni(this._supportedProtocolVersions);try{let r=n[0];if(r===void 0)throw new X(Y.EraNegotiationFailed,`Cannot run the initialize handshake: supportedProtocolVersions contains no pre-2026-07-28 protocol version`);let i=await this.request({method:`initialize`,params:{protocolVersion:r,capabilities:this._capabilities,clientInfo:this._clientInfo}},t);if(i===void 0)throw Error(`Server sent invalid initialize result: ${i}`);if(!n.includes(i.protocolVersion))throw Error(`Server's protocol version is not supported: ${i.protocolVersion}`);this._serverCapabilities=i.capabilities,this._serverVersion=i.serverInfo,this._cache.setServerIdentity(this._deriveServerIdentity(e)),e.setProtocolVersion&&e.setProtocolVersion(i.protocolVersion),this._instructions=i.instructions,await this.notification({method:`notifications/initialized`}),this._negotiatedProtocolVersion=i.protocolVersion,this._listChangedConfig&&this._setupListChangedHandlers(this._listChangedConfig)}catch(e){throw this.close(),e}}async _connectNegotiated(e,t,n){if(e.sessionId!==void 0){await super.connect(e);let t=this._negotiatedProtocolVersion;t!==void 0&&e.setProtocolVersion&&e.setProtocolVersion(t);return}this._resetConnectionState();let r;try{let i=Rl(e),a={clientInfo:this._clientInfo,capabilities:this._capabilities,environment:Ll(),defaultTimeoutMs:n?.timeout??6e4},o=i===`stdio`?Gl(e):void 0;r=o===void 0?await Wl(t,{...a,transport:e,transportKind:i}):await Kl(t,e,o,a)}catch(t){throw await e.close().catch(()=>{}),Vl(e),t}if(Vl(e),await super.connect(e),r.era===`legacy`){await this._legacyHandshake(e,n);return}if(this._serverCapabilities=r.discover.capabilities,this._serverVersion=Yl(r.discover),this._cache.setServerIdentity(this._deriveServerIdentity(e)),this._instructions=r.discover.instructions,this._discoverResult=r.discover,this._negotiatedProtocolVersion=r.version,e.setProtocolVersion&&e.setProtocolVersion(r.version),this._listChangedConfig){let e=this._listChangedConfig,t=this._serverCapabilities,r={...e.tools&&t?.tools?.listChanged&&{tools:e.tools},...e.prompts&&t?.prompts?.listChanged&&{prompts:e.prompts},...e.resources&&t?.resources?.listChanged&&{resources:e.resources}},i=!0;try{this._setupListChangedHandlers(r)}catch(e){i=!1,this.onerror?.(e instanceof Error?e:Error(String(e)))}let a=i?{...r.tools&&{toolsListChanged:!0},...r.prompts&&{promptsListChanged:!0},...r.resources&&{resourcesListChanged:!0}}:{};if(Object.keys(a).length>0){let e=new AbortController,t=()=>e.abort(n?.signal?.reason);n?.signal?.aborted&&t(),n?.signal?.addEventListener(`abort`,t);try{this._autoOpenedSubscription=await this.listen(a,{timeout:n?.timeout,signal:e.signal})}catch(e){if(n?.signal?.aborted)throw await this.close().catch(()=>{}),e;this.onerror?.(e instanceof Error?e:Error(String(e)))}finally{n?.signal?.removeEventListener(`abort`,t)}}}}async _connectFromPrior(e,t,n){if(t.kind===`legacy`)return this._connectPlainLegacy(e,n);let r=t.discover;this._resetConnectionState();let i=this._supportedProtocolVersionsOption,a=(i&&ri(i).length>0?ri(i):ei).find(e=>r.supportedVersions.includes(e));if(a===void 0)throw new X(Y.EraNegotiationFailed,`connect({ prior }) with a modern verdict requires a 2026-07-28+ mutual protocol version; the supplied DiscoverResult and this client's supportedProtocolVersions have no modern overlap. For a server known to be legacy, pass prior: { kind: 'legacy' } to skip the probe and initialize directly, or use versionNegotiation: { mode: 'auto' } to re-probe with legacy fallback.`);if(await super.connect(e),this._discoverResult=r,this._serverCapabilities=r.capabilities,this._serverVersion=Yl(r),this._cache.setServerIdentity(this._deriveServerIdentity(e)),this._instructions=r.instructions,this._negotiatedProtocolVersion=a,e.setProtocolVersion?.(a),this._listChangedConfig)try{this._setupListChangedHandlers(this._listChangedConfig)}catch(e){this.onerror?.(e instanceof Error?e:Error(String(e)))}}getServerCapabilities(){return this._serverCapabilities}getServerVersion(){return this._serverVersion}_deriveServerIdentity(e){let t=this._serverVersion;return t===void 0?e.sessionId??`anonymous:${Date.now()}-${Math.random().toString(36).slice(2)}`:`${t.name}@${t.version}`}getNegotiatedProtocolVersion(){return this._negotiatedProtocolVersion}getProtocolEra(){let e=this._negotiatedProtocolVersion;if(e!==void 0)return ti(e)?`modern`:`legacy`}getInstructions(){return this._instructions}getDiscoverResult(){return this._discoverResult}assertCapabilityForMethod(e){switch(e){case`logging/setLevel`:if(!this._serverCapabilities?.logging)throw new X(Y.CapabilityNotSupported,`Server does not support logging (required for ${e})`);break;case`prompts/get`:case`prompts/list`:if(!this._serverCapabilities?.prompts)throw new X(Y.CapabilityNotSupported,`Server does not support prompts (required for ${e})`);break;case`resources/list`:case`resources/templates/list`:case`resources/read`:case`resources/subscribe`:case`resources/unsubscribe`:if(!this._serverCapabilities?.resources)throw new X(Y.CapabilityNotSupported,`Server does not support resources (required for ${e})`);if(e===`resources/subscribe`&&!this._serverCapabilities.resources.subscribe)throw new X(Y.CapabilityNotSupported,`Server does not support resource subscriptions (required for ${e})`);break;case`tools/call`:case`tools/list`:if(!this._serverCapabilities?.tools)throw new X(Y.CapabilityNotSupported,`Server does not support tools (required for ${e})`);break;case`completion/complete`:if(!this._serverCapabilities?.completions)throw new X(Y.CapabilityNotSupported,`Server does not support completions (required for ${e})`)}}assertNotificationCapability(e){if(e===`notifications/roots/list_changed`&&!this._capabilities.roots?.listChanged)throw new X(Y.CapabilityNotSupported,`Client does not support roots list changed notifications (required for ${e})`)}assertRequestHandlerCapability(e){switch(e){case`sampling/createMessage`:if(!this._capabilities.sampling)throw new X(Y.CapabilityNotSupported,`Client does not support sampling capability (required for ${e})`);break;case`elicitation/create`:if(!this._capabilities.elicitation)throw new X(Y.CapabilityNotSupported,`Client does not support elicitation capability (required for ${e})`);break;case`roots/list`:if(!this._capabilities.roots)throw new X(Y.CapabilityNotSupported,`Client does not support roots capability (required for ${e})`)}}async ping(e){return this.request({method:`ping`},e)}async discover(e){let t=await this._requestWithSchema({method:`server/discover`},ft,e);return this._discoverResult=t,t}async complete(e,t){return this.request({method:`completion/complete`,params:e},t)}async setLoggingLevel(e,t){return this.request({method:`logging/setLevel`,params:{level:e}},t)}async getPrompt(e,t){return this.request({method:`prompts/get`,params:e},t)}async listPrompts(e,t){if(!this._serverCapabilities?.prompts&&!this._enforceStrictCapabilities)return console.debug(`Client.listPrompts() called but server does not advertise prompts capability - returning empty list`),{prompts:[]};if(e?.cursor!==void 0)return this.request({method:`prompts/list`,params:e},t);let n=await this._serveFromCache(`prompts/list`,void 0,t);return n===void 0?this._listAllPages(`prompts/list`,e,t,e=>e.prompts):n}async listResources(e,t){if(!this._serverCapabilities?.resources&&!this._enforceStrictCapabilities)return console.debug(`Client.listResources() called but server does not advertise resources capability - returning empty list`),{resources:[]};if(e?.cursor!==void 0)return this.request({method:`resources/list`,params:e},t);let n=await this._serveFromCache(`resources/list`,void 0,t);return n===void 0?this._listAllPages(`resources/list`,e,t,e=>e.resources):n}async listResourceTemplates(e,t){if(!this._serverCapabilities?.resources&&!this._enforceStrictCapabilities)return console.debug(`Client.listResourceTemplates() called but server does not advertise resources capability - returning empty list`),{resourceTemplates:[]};if(e?.cursor!==void 0)return this.request({method:`resources/templates/list`,params:e},t);let n=await this._serveFromCache(`resources/templates/list`,void 0,t);return n===void 0?this._listAllPages(`resources/templates/list`,e,t,e=>e.resourceTemplates):n}async _listAllPages(e,t,n,r,i){let a=n?.cacheMode===`bypass`,o=this._cache.captureGeneration(e),s=await this.request({method:e,...t&&{params:{...t}}},n),c=s.nextCursor,l=s,u=1;for(;c!==void 0;){if(this._listMaxPages!==0&&u>=this._listMaxPages)throw new X(Y.ListPaginationExceeded,`${e}: exceeded listMaxPages (${this._listMaxPages}); server pagination did not terminate`,{method:e,listMaxPages:this._listMaxPages});let i=await this.request({method:e,params:{...t,cursor:c}},n);if(i.nextCursor===c&&JSON.stringify(r(i))===JSON.stringify(r(l)))break;r(s).push(...r(i)),l=i,c=i.nextCursor,u++}return delete s.nextCursor,i?.(s),a||await this._cache.write(e,s,o,this._freshness(s)),s}_freshness(e,t){let n=e,r=typeof n.ttlMs==`number`?n.ttlMs:this._defaultCacheTtlMs,i=n.cacheScope===`public`?`public`:`private`;return{expiresAt:this._cache.now()+Math.min(Math.max(0,r),_l),scope:i,params:t}}async _serveFromCache(e,t,n){if(n?.cacheMode===`bypass`||n?.cacheMode===`refresh`)return;let r=await this._cache.read(e,t).catch(e=>void this._reportStoreError(e));if(r!==void 0){if(n?.signal?.aborted){let e=n.signal.reason;throw e instanceof X?e:new X(Y.RequestTimeout,String(e))}return r.value}}_reportStoreError(e){this.onerror?.(e instanceof Error?e:Error(String(e)))}_compileOutputValidator(e){if(e.outputSchema)try{return{ok:!0,validator:this._jsonSchemaValidator.getValidator(e.outputSchema)}}catch(e){return{ok:!1,compileError:e}}}async _resolveXMcpHeaderScan(e,t){let n=t??await this._cache.toolDefinition(e);return n===void 0?void 0:Va(n.inputSchema)}async readResource(e,t){let n=await this._serveFromCache(`resources/read`,e.uri,t);if(n!==void 0)return n;let r=this._cache.captureGeneration(`resources/read`,e.uri),i=await this.request({method:`resources/read`,params:e},t);if(t?.cacheMode!==`bypass`){let n=this._freshness(i,e.uri);n.expiresAt>this._cache.now()?await this._cache.write(`resources/read`,i,r,n):t?.cacheMode===`refresh`&&await this._cache.evictKey(`resources/read`,e.uri)}return i}async subscribeResource(e,t){return this.request({method:`resources/subscribe`,params:e},t)}async unsubscribeResource(e,t){return this.request({method:`resources/unsubscribe`,params:e},t)}async listen(e,t){if(this.transport===void 0)throw new X(Y.NotConnected,`Not connected`);let n=this._negotiatedProtocolVersion;if(n===void 0||!ti(n))throw new X(Y.MethodNotSupportedByProtocolVersion,`subscriptions/listen requires a 2026-07-28-era connection (negotiated: ${n??`none`}). On a 2025-era connection, change notifications are delivered unsolicited: use ClientOptions.listChanged and resources/subscribe instead.`,{method:`subscriptions/listen`,protocolVersion:n});if(t?.signal?.aborted){let e=t.signal.reason;throw e instanceof X?e:new X(Y.RequestTimeout,String(e))}let r=new AbortController,i=`listen:${this._nextListenId++}`,a=`opening`,o,s,c,l,u=new Promise((e,t)=>{c=e,l=t}),d,f=new Promise(e=>{d=e}),p=e=>{if(a===`closed`)return;let n=a===`opening`;if(o!==void 0&&(clearTimeout(o),o=void 0),`ack`in e){a=`open`,c(e.ack);return}a=`closed`,s!==void 0&&t?.signal?.removeEventListener(`abort`,s),this._listenState.delete(i),r.abort(),d(e.cause),n&&l(e.error??new X(Y.ConnectionClosed,`subscriptions/listen closed before the server acknowledged`))},m=async()=>{r.abort(),await this.notification({method:`notifications/cancelled`,params:{requestId:i}}).catch(()=>{})},h=async()=>{a!==`closed`&&(p({cause:`local`}),await m())};this._listenState.set(i,{settle:p});let g=t?.timeout??6e4;if(o=setTimeout(()=>{p({cause:`remote`,error:new X(Y.RequestTimeout,`subscriptions/listen ack timed out`,{timeout:g})}),m().catch(()=>{})},g),t?.signal){let e=t.signal;s=()=>{if(a===`closed`)return;let t=e.reason;p({cause:`local`,error:t instanceof Error?t:Error(String(t??`Aborted`))}),m().catch(()=>{})},e.addEventListener(`abort`,s,{once:!0})}let _={jsonrpc:`2.0`,id:i,method:`subscriptions/listen`,params:{_meta:{...this._outboundMetaEnvelope()},notifications:e}},v=e=>{p({cause:`remote`,error:e instanceof Error?e:Error(String(e))})};try{this.transport.send(_,{requestSignal:r.signal,onRequestStreamEnd:()=>p({cause:`remote`,error:Error(`subscriptions/listen: stream ended`)})}).catch(v)}catch(e){v(e)}return{honoredFilter:await u,close:h,closed:f}}get autoOpenedSubscription(){return this._autoOpenedSubscription}_onnotification(e,t){let n=Object.hasOwn($l,e.method)?$l[e.method]:void 0;if(e.method===`notifications/resources/updated`){let t=e.params?.uri;typeof t==`string`&&this._cache.evictKey(`resources/read`,t)}else if(n!==void 0)for(let e of n)this._cache.evict(e);if(e.method===`notifications/subscriptions/acknowledged`){let t=e.params?._meta?.[Ne],n=typeof t==`string`?this._listenState.get(t):void 0;if(n!==void 0){let t=this._wireCodec().validateNotification(`notifications/subscriptions/acknowledged`,e);n.settle({ack:t.ok?t.value.params.notifications:{}});return}}if(e.method===`notifications/cancelled`){let t=e.params?.requestId,n=typeof t==`string`?this._listenState.get(t):void 0;if(n!==void 0){n.settle({cause:`remote`,error:Error(`subscriptions/listen: server cancelled the subscription`)});return}}super._onnotification(e,t)}_onresponse(e){let t=e.id,n=typeof t==`string`?this._listenState.get(t):void 0;if(n!==void 0){Na(e)?n.settle({cause:`remote`,error:Q.fromError(e.error.code,e.error.message,e.error.data)}):n.settle({cause:`graceful`,error:new X(Y.ConnectionClosed,`subscriptions/listen: server closed the subscription gracefully before acknowledging`)});return}super._onresponse(e)}_onclose(){if(this._listenState.size>0){let e=new X(Y.ConnectionClosed,`Connection closed`);for(let t of this._listenState.values())t.settle({cause:`remote`,error:e});this._listenState.clear()}super._onclose()}async callTool(e,t){let n=this.getProtocolEra()===`modern`&&Ll()!==`browser`,r=async()=>{if(!n)return t;let r;try{r=await this._resolveXMcpHeaderScan(e.name,t?.toolDefinition)}catch(e){this._reportStoreError(e)}if(!r?.valid||r.declarations.length===0)return t;let i=Qa(r.declarations,e.arguments);return Object.keys(i).length===0?t:{...t,headers:{...t?.headers,...i}}},i=t?.toolDefinition===void 0?await this._cache.outputValidator(e.name,e=>this._compileOutputValidator(e)).catch(e=>void this._reportStoreError(e)):this._compileOutputValidator(t.toolDefinition),a=()=>{if(i===void 0||i.ok)return;let t=i.compileError,n=(t instanceof Error?t.message:String(t)).slice(0,200);throw new Q(Z.InvalidParams,`Tool '${e.name}' has an invalid outputSchema: ${n}`)};a();let o;try{o=await this.request({method:`tools/call`,params:e},await r())}catch(s){let c=s instanceof Q&&s.code===-32020;if(!n||!c||t?.toolDefinition!==void 0)throw s;let l={signal:t?.signal,timeout:t?.timeout,cacheMode:`refresh`};await this._cache.evict(`tools/list`),await this.listTools(void 0,l).catch(e=>this._reportStoreError(e)),i=await this._cache.outputValidator(e.name,e=>this._compileOutputValidator(e)).catch(e=>void this._reportStoreError(e)),a(),o=await this.request({method:`tools/call`,params:e},await r())}let s=i!==void 0&&i.ok?i.validator:void 0;if(s){if(o.structuredContent===void 0&&!o.isError)throw new Q(Z.InvalidRequest,`Tool ${e.name} has an output schema but did not return structured content`);if(o.structuredContent!==void 0&&!o.isError)try{let e=s(o.structuredContent);if(!e.valid)throw new Q(Z.InvalidParams,`Structured content does not match the tool's output schema: ${e.errorMessage}`)}catch(e){throw e instanceof Q?e:new Q(Z.InvalidParams,`Failed to validate structured content: ${e instanceof Error?e.message:String(e)}`)}}return o}async listTools(e,t){if(!this._serverCapabilities?.tools&&!this._enforceStrictCapabilities)return console.debug(`Client.listTools() called but server does not advertise tools capability - returning empty list`),{tools:[]};if(e?.cursor!==void 0){let n=await this.request({method:`tools/list`,params:e},t);return this._excludeInvalidXMcpHeaderTools(n),n}let n=await this._serveFromCache(`tools/list`,void 0,t);return n===void 0?this._listAllPages(`tools/list`,e,t,e=>e.tools,e=>this._excludeInvalidXMcpHeaderTools(e)):n}_excludeInvalidXMcpHeaderTools(e){if(this.getProtocolEra()!==`modern`||!this.transport||Rl(this.transport)===`stdio`)return;let t=e.tools.filter(e=>{let t=Va(e.inputSchema);return t.valid?!0:(console.warn(`[mcp-sdk] excluding tool '${e.name}' from tools/list: invalid x-mcp-header declaration — ${t.reason}`),!1)});t.length!==e.tools.length&&(e.tools=t)}_setupListChangedHandler(e,t,n,r){let i=no(bn,n);if(!i.success)throw Error(`Invalid ${e} listChanged options: ${i.error.message}`);if(typeof n.onChanged!=`function`)throw TypeError(`Invalid ${e} listChanged options: onChanged must be a function`);let{autoRefresh:a,debounceMs:o}=i.data,{onChanged:s}=n,c=async()=>{if(!a){s(null,null);return}try{s(null,await r())}catch(e){s(e instanceof Error?e:Error(String(e)),null)}};this.setNotificationHandler(t,()=>{if(o){let t=this._listChangedDebounceTimers.get(e);t&&clearTimeout(t);let n=setTimeout(c,o);this._listChangedDebounceTimers.set(e,n)}else c()})}async sendRootsListChanged(){return this.notification({method:`notifications/roots/list_changed`})}};function nu(e){return/(?:^|,)\s*dpop(?:\s|$|,)/i.test(e)}function ru(e){if(e.status!==401)return!1;let t=e.headers.get(`www-authenticate`)??``;return nu(t)&&/use_dpop_nonce/i.test(t)}var iu=(e,t)=>n=>{let r=typeof e==`function`?e:()=>e;return async(e,i)=>{let a=(i?.method??`GET`).toUpperCase(),o=new URL(e.toString()),s=await r();if(!s)return n(e,i);let c=async()=>{let r=await t();if(!r)return n(e,i);let c=new Headers(i?.headers),l=await s.buildProof({htm:a,htu:o,accessToken:r});return c.set(`Authorization`,`DPoP ${r}`),c.set(`DPoP`,l),n(e,{...i,headers:c})},l=await c();return ru(l)&&l.headers.has(`dpop-nonce`)&&(s.observeNonce(l,o),await l.text?.().catch(()=>{}),l=await c()),s.observeNonce(l,o),l}},au=e=>iu(async()=>{try{return await e.dpop?.()}catch(e){throw xl(e)}},async()=>{let t;try{t=await e.tokens()}catch(e){throw xl(e)}return t?.token_type?.toLowerCase()===`dpop`?t.access_token:void 0});(class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:`mcp.SseError`})}static[Symbol.hasInstance](e){return Kr(this,e)}static isInstance(e){if(typeof this!=`function`)throw TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return Kr(this,e)}constructor(e,t,n){super(`SSE error: ${t}`),this.code=e,this.event=n,Gr(this,new.target)}});var ou=1,su={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2},cu=new Set([`authorization`,`dpop`,`content-type`,`mcp-protocol-version`,`mcp-method`,`mcp-name`,`mcp-session-id`]);function lu(e,t){if(typeof AbortSignal.any==`function`)return AbortSignal.any([e,t]);let n=new AbortController;if(e.aborted)return n.abort(e.reason),n.signal;if(t.aborted)return n.abort(t.reason),n.signal;let r=()=>{e.removeEventListener(`abort`,i),t.removeEventListener(`abort`,a)};function i(){r(),n.abort(e.reason)}function a(){r(),n.abort(t.reason)}return e.addEventListener(`abort`,i,{once:!0}),t.addEventListener(`abort`,a,{once:!0}),n.signal}var uu=class{_abortController;_url;_resourceMetadataUrl;_scope;_requestInit;_authProvider;_oauthProvider;_skipIssuerMetadataValidation;_fetch;_fetchWithInit;_sessionId;_reconnectionOptions;_protocolVersion;_onInsufficientScope;_maxStepUpRetries;_serverRetryMs;_reconnectionScheduler;_cancelReconnection;onclose;onerror;onmessage;hasPerRequestStream=!0;constructor(e,t){this._url=e,this._resourceMetadataUrl=void 0,this._scope=void 0,this._requestInit=t?.requestInit,this._skipIssuerMetadataValidation=t?.skipIssuerMetadataValidation,this._fetch=t?.fetch,bc(t?.authProvider)?(this._oauthProvider=t.authProvider,this._authProvider=Sc(t.authProvider,{skipIssuerMetadataValidation:t.skipIssuerMetadataValidation}),t.authProvider.dpop&&(this._fetch=au(t.authProvider)(t.fetch??fetch))):this._authProvider=t?.authProvider,this._fetchWithInit=fs(t?.fetch,t?.requestInit),this._sessionId=t?.sessionId,this._protocolVersion=t?.protocolVersion,this._reconnectionOptions=t?.reconnectionOptions??su,this._reconnectionScheduler=t?.reconnectionScheduler,this._onInsufficientScope=t?.onInsufficientScope??`reauthorize`,this._maxStepUpRetries=Math.max(0,t?.maxStepUpRetries??ou)}async _stepUpAuthorize(e,t){try{return await this._stepUpAuthorizeInner(e,t)}catch(e){throw xl(e)}}async _stepUpAuthorizeInner(e,t){if(this._onInsufficientScope===`throw`||!this._oauthProvider)throw new _c({requiredScope:e.scope,resourceMetadataUrl:e.resourceMetadataUrl,errorDescription:e.errorDescription});if(t>=this._maxStepUpRetries)throw new Yr(Y.ClientHttpForbidden,`Server returned 403 insufficient_scope after step-up re-authorization (retry limit ${this._maxStepUpRetries} reached)`,{status:403,statusText:e.statusText??`Forbidden`,text:e.text});e.resourceMetadataUrl&&(this._resourceMetadataUrl=e.resourceMetadataUrl);let n=await this._oauthProvider.tokens(),r=Ec(this._scope,n?.scope,e.scope);this._scope=r;let i=Dc(r,n?.scope);return Uc(this._oauthProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:r,forceReauthorization:i,fetchFn:this._fetchWithInit,skipIssuerMetadataValidation:this._skipIssuerMetadataValidation})}async _commonHeaders(){let e=new Headers(this._requestInit?.headers||void 0),t;try{t=await this._authProvider?.token()}catch(e){throw xl(e)}return t&&e.set(`Authorization`,`Bearer ${t}`),this._sessionId&&e.set(`mcp-session-id`,this._sessionId),this._protocolVersion&&e.set(`mcp-protocol-version`,this._protocolVersion),e}_applyBodyDerivedHeaders(e,t){if(Array.isArray(t)||!Aa(t))return;let n=t.params?._meta?.[ke];if(typeof n!=`string`)return;e.set(`mcp-protocol-version`,n),e.set(`mcp-method`,t.method);let r=eo(t.method,t.params);r?.value!==void 0&&e.set(`mcp-name`,Xa(r.value))}_isModernEnvelopedRequest(e){if(Array.isArray(e)||!Aa(e))return!1;let t=e.params?._meta?.[ke];return typeof t==`string`&&ti(t)}async _startOrAuthSse(e,t=!1,n=0){let{resumptionToken:r,requestSignal:i}=e,a=()=>this._abortController?.signal.aborted===!0||i?.aborted===!0;try{let a=await this._commonHeaders(),o=[...a.get(`accept`)?.split(`,`).map(e=>e.trim().toLowerCase())??[],`text/event-stream`];a.set(`accept`,[...new Set(o)].join(`, `)),r&&a.set(`last-event-id`,r);let s=this._abortController?.signal,c=i!==void 0&&s!==void 0?lu(s,i):i??s,l=await(this._fetch??fetch)(this._url,{...this._requestInit,method:`GET`,headers:a,signal:c});if(!l.ok){if(l.status===401&&this._authProvider){if(l.headers.has(`www-authenticate`)){let{resourceMetadataUrl:e,scope:t}=Yc(l);this._resourceMetadataUrl=e,this._scope=Ec(this._scope,t)}if(this._authProvider.onUnauthorized&&!t){try{await this._authProvider.onUnauthorized({response:l,serverUrl:this._url,fetchFn:this._fetchWithInit})}catch(e){throw xl(e)}return await l.text?.().catch(()=>{}),this._startOrAuthSse(e,!0,n)}throw await l.text?.().catch(()=>{}),xl(t?new Yr(Y.ClientHttpAuthentication,`Server returned 401 after re-authentication`,{status:401,statusText:l.statusText}):new Cc)}if(l.status===403){let{resourceMetadataUrl:r,scope:i,error:a,errorDescription:o}=Yc(l);if(a===`insufficient_scope`){let a=await l.text?.().catch(()=>null);if(await this._stepUpAuthorize({scope:i,resourceMetadataUrl:r,errorDescription:o,statusText:l.statusText,text:a},n)!==`AUTHORIZED`)throw xl(new Cc);return this._startOrAuthSse(e,t,n+1)}}if(await l.text?.().catch(()=>{}),l.status===405){e.onRequestStreamEnd?.();return}throw new Yr(Y.ClientHttpFailedToOpenStream,`Failed to open SSE stream: ${l.statusText}`,{status:l.status,statusText:l.statusText})}this._handleSseStream(l.body,e,!0)}catch(e){throw a()||this.onerror?.(e),e}}_getNextReconnectionDelay(e){if(this._serverRetryMs!==void 0)return this._serverRetryMs;let t=this._reconnectionOptions.initialReconnectionDelay,n=this._reconnectionOptions.reconnectionDelayGrowFactor,r=this._reconnectionOptions.maxReconnectionDelay;return Math.min(t*n**+e,r)}_scheduleReconnection(e,t=0){let n=this._reconnectionOptions.maxRetries;if(t>=n){this.onerror?.(Error(`Maximum reconnection attempts (${n}) exceeded.`)),e.onRequestStreamEnd?.();return}let r=this._getNextReconnectionDelay(t),i=()=>{this._cancelReconnection=void 0,!(this._abortController?.signal.aborted||e.requestSignal?.aborted)&&this._startOrAuthSse(e).catch(n=>{if(!(this._abortController?.signal.aborted||e.requestSignal?.aborted)){this.onerror?.(Error(`Failed to reconnect SSE stream: ${n instanceof Error?n.message:String(n)}`));try{this._scheduleReconnection(e,t+1)}catch(e){this.onerror?.(e instanceof Error?e:Error(String(e)))}}})};if(this._reconnectionScheduler){let e=this._reconnectionScheduler(i,r,t);this._cancelReconnection=typeof e==`function`?e:void 0}else{let e=setTimeout(i,r);this._cancelReconnection=()=>clearTimeout(e)}}_handleSseStream(e,t,n){if(!e){t.onRequestStreamEnd?.();return}let{onresumptiontoken:r,replayMessageId:i,requestSignal:a,onRequestStreamEnd:o}=t,s=()=>this._abortController?.signal.aborted===!0||a?.aborted===!0,c,l=!1,u=!1;(async()=>{try{let t=e.pipeThrough(new TextDecoderStream).pipeThrough(new dc({onRetry:e=>{this._serverRetryMs=e}})).getReader();for(;;){let{value:e,done:n}=await t.read();if(n)break;if(e.id&&(c=e.id,l=!0,r?.(e.id)),e.data&&(!e.event||e.event===`message`))try{let t=Je.parse(JSON.parse(e.data));(Ma(t)||Na(t))&&(u=!0,i!==void 0&&(t.id=i)),this.onmessage?.(t)}catch(e){this.onerror?.(e)}}(n||l)&&!u&&this._abortController&&!s()?this._scheduleReconnection({resumptionToken:c,onresumptiontoken:r,replayMessageId:i,requestSignal:a,onRequestStreamEnd:o},0):s()||o?.()}catch(e){if(s())return;if(this.onerror?.(Error(`SSE stream disconnected: ${e}`)),(n||l)&&!u&&this._abortController&&!s())try{this._scheduleReconnection({resumptionToken:c,onresumptiontoken:r,replayMessageId:i,requestSignal:a,onRequestStreamEnd:o},0)}catch(e){this.onerror?.(Error(`Failed to reconnect: ${e instanceof Error?e.message:String(e)}`)),o?.()}else o?.()}})()}async start(){if(this._abortController)throw Error(`StreamableHTTPClientTransport already started! If using Client class, note that connect() calls start() automatically.`);this._abortController=new AbortController}async finishAuth(e,t){if(!this._oauthProvider)throw new Cc(`finishAuth requires an OAuthClientProvider`);let{authorizationCode:n,iss:r}=await Oc(e,t,this._oauthProvider,this._url,{fetchFn:this._fetchWithInit,resourceMetadataUrl:this._resourceMetadataUrl});if(await Uc(this._oauthProvider,{serverUrl:this._url,authorizationCode:n,iss:r,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit,skipIssuerMetadataValidation:this._skipIssuerMetadataValidation})!==`AUTHORIZED`)throw new Cc(`Failed to authorize`)}async close(){try{this._cancelReconnection?.()}finally{this._cancelReconnection=void 0,this._abortController?.abort(),this.onclose?.()}}async send(e,t){return this._send(e,t,!1)}async _send(e,t,n,r=0){try{let{resumptionToken:i,onresumptiontoken:a}=t||{};if(i){this._startOrAuthSse({resumptionToken:i,replayMessageId:Aa(e)?e.id:void 0,requestSignal:t?.requestSignal}).catch(e=>this.onerror?.(e));return}let o=await this._commonHeaders();this._applyBodyDerivedHeaders(o,e);let s=Array.isArray(e)?e.some(e=>Fa(e)):Fa(e);if(s&&o.delete(`mcp-session-id`),t?.headers!==void 0)for(let[e,n]of Object.entries(t.headers))cu.has(e.toLowerCase())||o.set(e,n);o.set(`content-type`,`application/json`);let c=[...o.get(`accept`)?.split(`,`).map(e=>e.trim().toLowerCase())??[],`application/json`,`text/event-stream`];o.set(`accept`,[...new Set(c)].join(`, `));let l=this._abortController?.signal,u=t?.requestSignal!==void 0&&l!==void 0?lu(l,t.requestSignal):t?.requestSignal??l,d={...this._requestInit,method:`POST`,headers:o,body:JSON.stringify(e),signal:u},f=await(this._fetch??fetch)(this._url,d);if(s&&f.ok&&(this._sessionId=f.headers.get(`mcp-session-id`)||void 0),!f.ok){if(f.status===401&&this._authProvider){if(f.headers.has(`www-authenticate`)){let{resourceMetadataUrl:e,scope:t}=Yc(f);this._resourceMetadataUrl=e,this._scope=Ec(this._scope,t)}if(this._authProvider.onUnauthorized&&!n){try{await this._authProvider.onUnauthorized({response:f,serverUrl:this._url,fetchFn:this._fetchWithInit})}catch(e){throw xl(e)}return await f.text?.().catch(()=>{}),this._send(e,t,!0,r)}throw await f.text?.().catch(()=>{}),xl(n?new Yr(Y.ClientHttpAuthentication,`Server returned 401 after re-authentication`,{status:401,statusText:f.statusText}):new Cc)}let i=await f.text?.().catch(()=>null);if(f.status===403){let{resourceMetadataUrl:a,scope:o,error:s,errorDescription:c}=Yc(f);if(s===`insufficient_scope`){if(await this._stepUpAuthorize({scope:o,resourceMetadataUrl:a,errorDescription:c,statusText:f.statusText,text:i},r)!==`AUTHORIZED`)throw xl(new Cc);return this._send(e,t,n,r+1)}}if(f.status===400&&typeof i==`string`&&this._isModernEnvelopedRequest(e))try{let t=Je.parse(JSON.parse(i)),n=(Array.isArray(e)?e:[e]).filter(e=>Aa(e));if(Na(t)&&n.some(e=>e.id===t.id)){this.onmessage?.(t);return}}catch{}throw new Yr(Y.ClientHttpNotImplemented,`Error POSTing to endpoint: ${i}`,{status:f.status,statusText:f.statusText,text:i})}if(f.status===202){await f.text?.().catch(()=>{}),Ia(e)&&this._startOrAuthSse({resumptionToken:void 0}).catch(e=>this.onerror?.(e));return}let p=(Array.isArray(e)?e:[e]).some(e=>`method`in e&&`id`in e&&e.id!==void 0),m=f.headers.get(`content-type`),h=us(m);if(p){if(h===`text/event-stream`)this._handleSseStream(f.body,{onresumptiontoken:a,requestSignal:t?.requestSignal,onRequestStreamEnd:t?.onRequestStreamEnd},!1);else if(h===`application/json`){let e=await f.json(),t=Array.isArray(e)?e.map(e=>Je.parse(e)):[Je.parse(e)];for(let e of t)this.onmessage?.(e)}else throw await f.text?.().catch(()=>{}),new X(Y.ClientHttpUnexpectedContent,`Unexpected content type: ${m}`,{contentType:m})}else await f.text?.().catch(()=>{})}catch(e){throw t?.requestSignal?.aborted!==!0&&this.onerror?.(e),e}}get sessionId(){return this._sessionId}async terminateSession(){if(this._sessionId)try{let e=await this._commonHeaders(),t={...this._requestInit,method:`DELETE`,headers:e,signal:this._abortController?.signal},n=await(this._fetch??fetch)(this._url,t);if(await n.text?.().catch(()=>{}),!n.ok&&n.status!==405)throw new Yr(Y.ClientHttpFailedToTerminateSession,`Failed to terminate session: ${n.statusText}`,{status:n.status,statusText:n.statusText});this._sessionId=void 0}catch(e){throw this.onerror?.(e),e}}setProtocolVersion(e){this._protocolVersion=e}get protocolVersion(){return this._protocolVersion}async resumeStream(e,t){await this._startOrAuthSse({resumptionToken:e,onresumptiontoken:t?.onresumptiontoken})}},du=class{_eventSlots=new Map;setHandler(e,t){let n=this._ensureEventSlot(e);n.onHandler&&t&&console.warn(`[MCP Apps] on${String(e)} handler replaced. Use addEventListener("${String(e)}", …) to add multiple listeners without replacing.`),n.onHandler=t}getHandler(e){return this._eventSlots.get(e)?.onHandler}addEventListener(e,t){this._ensureEventSlot(e).listeners.push(t)}removeEventListener(e,t){let n=this._eventSlots.get(e);if(!n)return;let r=n.listeners.indexOf(t);r!==-1&&n.listeners.splice(r,1)}dispatch(e,t){let n=this._eventSlots.get(e);if(n){n.onHandler?.(t);for(let e of[...n.listeners])e(t)}}_ensureEventSlot(e){let t=this._eventSlots.get(e);return t||(t={listeners:[]},this._eventSlots.set(e,t)),t}},fu=class{_methods=new Set;claim(e,t){if(this._methods.has(e))throw Error(`Handler for "${e}" already registered (via ${t}). Use addEventListener() to attach multiple listeners, or the on* setter for replace semantics.`);this._methods.add(e)}replace(e){this._methods.add(e)}release(e){this._methods.delete(e)}has(e){return this._methods.has(e)}},pu=new Set;function mu(e,t){let[n,r]=t,i=n?.shape;if(typeof i?.method?.value!=`string`)return;let a=i.method.value,o=e===`request`?`setRequestHandler`:`setNotificationHandler`;pu.has(o)||(pu.add(o),console.warn(`[ext-apps] ${o}(Schema, handler) is deprecated; use ${o}("${a}", { params: Schema.shape.params }, handler).`));let s=r;return[a,{params:i.params},e===`request`?(e,t)=>s({method:a,params:e},hu(t)):e=>s({method:a,params:e})]}function hu(e){return{signal:e.mcpReq.signal,requestId:e.mcpReq.id,sessionId:e.sessionId,_meta:e.mcpReq._meta,sendRequest:e.mcpReq.send,sendNotification:e.mcpReq.notify,authInfo:e.http?.authInfo}}var gu=`2026-01-26`,_u=f([D(`light`),D(`dark`)]).describe(`Color theme preference for the host environment.`),vu=f([D(`inline`),D(`fullscreen`),D(`pip`)]).describe(`Display mode for UI presentation.`),yu=f([D(`--color-background-primary`),D(`--color-background-secondary`),D(`--color-background-tertiary`),D(`--color-background-inverse`),D(`--color-background-ghost`),D(`--color-background-info`),D(`--color-background-danger`),D(`--color-background-success`),D(`--color-background-warning`),D(`--color-background-disabled`),D(`--color-text-primary`),D(`--color-text-secondary`),D(`--color-text-tertiary`),D(`--color-text-inverse`),D(`--color-text-ghost`),D(`--color-text-info`),D(`--color-text-danger`),D(`--color-text-success`),D(`--color-text-warning`),D(`--color-text-disabled`),D(`--color-border-primary`),D(`--color-border-secondary`),D(`--color-border-tertiary`),D(`--color-border-inverse`),D(`--color-border-ghost`),D(`--color-border-info`),D(`--color-border-danger`),D(`--color-border-success`),D(`--color-border-warning`),D(`--color-border-disabled`),D(`--color-ring-primary`),D(`--color-ring-secondary`),D(`--color-ring-inverse`),D(`--color-ring-info`),D(`--color-ring-danger`),D(`--color-ring-success`),D(`--color-ring-warning`),D(`--font-sans`),D(`--font-mono`),D(`--font-weight-normal`),D(`--font-weight-medium`),D(`--font-weight-semibold`),D(`--font-weight-bold`),D(`--font-text-xs-size`),D(`--font-text-sm-size`),D(`--font-text-md-size`),D(`--font-text-lg-size`),D(`--font-heading-xs-size`),D(`--font-heading-sm-size`),D(`--font-heading-md-size`),D(`--font-heading-lg-size`),D(`--font-heading-xl-size`),D(`--font-heading-2xl-size`),D(`--font-heading-3xl-size`),D(`--font-text-xs-line-height`),D(`--font-text-sm-line-height`),D(`--font-text-md-line-height`),D(`--font-text-lg-line-height`),D(`--font-heading-xs-line-height`),D(`--font-heading-sm-line-height`),D(`--font-heading-md-line-height`),D(`--font-heading-lg-line-height`),D(`--font-heading-xl-line-height`),D(`--font-heading-2xl-line-height`),D(`--font-heading-3xl-line-height`),D(`--border-radius-xs`),D(`--border-radius-sm`),D(`--border-radius-md`),D(`--border-radius-lg`),D(`--border-radius-xl`),D(`--border-radius-full`),D(`--border-width-regular`),D(`--shadow-hairline`),D(`--shadow-sm`),D(`--shadow-md`),D(`--shadow-lg`)]).describe(`CSS variable keys available to MCP apps for theming.`),bu=b(yu.describe(`Style variables for theming MCP apps. - -Individual style keys are optional - hosts may provide any subset of these values. -Values are strings containing CSS values (colors, sizes, font stacks, etc.). - -Note: This type uses \`Record\` rather than \`Partial>\` -for compatibility with Zod schema generation. Both are functionally equivalent for validation.`),f([p(),le()]).describe(`Style variables for theming MCP apps. - -Individual style keys are optional - hosts may provide any subset of these values. -Values are strings containing CSS values (colors, sizes, font stacks, etc.). - -Note: This type uses \`Record\` rather than \`Partial>\` -for compatibility with Zod schema generation. Both are functionally equivalent for validation.`)).describe(`Style variables for theming MCP apps. - -Individual style keys are optional - hosts may provide any subset of these values. -Values are strings containing CSS values (colors, sizes, font stacks, etc.). - -Note: This type uses \`Record\` rather than \`Partial>\` -for compatibility with Zod schema generation. Both are functionally equivalent for validation.`),xu=y({method:D(`ui/open-link`),params:y({url:p().describe(`URL to open in the host's browser`)})}),Su=y({isError:E().optional().describe(`True if the host failed to open the URL (e.g., due to security policy).`)}).passthrough(),Cu=y({isError:E().optional().describe(`True if the download failed (e.g., user cancelled or host denied).`)}).passthrough(),wu=y({isError:E().optional().describe(`True if the host rejected or failed to deliver the message.`)}).passthrough(),Tu=y({method:D(`ui/notifications/sandbox-proxy-ready`),params:y({})}),Eu=y({connectDomains:T(p()).optional().describe(`Origins for network requests (fetch/XHR/WebSocket). - -- Maps to CSP \`connect-src\` directive -- Empty or omitted → no network connections (secure default)`),resourceDomains:T(p()).optional().describe("Origins for static resources (images, scripts, stylesheets, fonts, media).\n\n- Maps to CSP `img-src`, `script-src`, `style-src`, `font-src`, `media-src` directives\n- Wildcard subdomains supported: `https://*.example.com`\n- Empty or omitted → no network resources (secure default)"),frameDomains:T(p()).optional().describe("Origins for nested iframes.\n\n- Maps to CSP `frame-src` directive\n- Empty or omitted → no nested iframes allowed (`frame-src 'none'`)"),baseUriDomains:T(p()).optional().describe("Allowed base URIs for the document.\n\n- Maps to CSP `base-uri` directive\n- Empty or omitted → only same origin allowed (`base-uri 'self'`)")}),Du=y({camera:y({}).optional().describe(`Request camera access. - -Maps to Permission Policy \`camera\` feature.`),microphone:y({}).optional().describe(`Request microphone access. - -Maps to Permission Policy \`microphone\` feature.`),geolocation:y({}).optional().describe(`Request geolocation access. - -Maps to Permission Policy \`geolocation\` feature.`),clipboardWrite:y({}).optional().describe(`Request clipboard write access. - -Maps to Permission Policy \`clipboard-write\` feature.`)}),Ou=y({method:D(`ui/notifications/size-changed`),params:y({width:O().optional().describe(`New width in pixels.`),height:O().optional().describe(`New height in pixels.`)})});y({method:D(`ui/notifications/tool-input`),params:y({arguments:b(p(),_().describe(`Complete tool call arguments as key-value pairs.`)).optional().describe(`Complete tool call arguments as key-value pairs.`)})}),y({method:D(`ui/notifications/tool-input-partial`),params:y({arguments:b(p(),_().describe(`Partial tool call arguments (incomplete, may change).`)).optional().describe(`Partial tool call arguments (incomplete, may change).`)})}),y({method:D(`ui/notifications/tool-cancelled`),params:y({reason:p().optional().describe(`Optional reason for the cancellation (e.g., "user action", "timeout").`)})});var ku=y({fonts:p().optional()}),Au=y({variables:bu.optional().describe(`CSS variables for theming the app.`),css:ku.optional().describe(`CSS blocks that apps can inject.`)});y({method:D(`ui/resource-teardown`),params:y({})});var ju=b(p(),_()),Mu=y({text:y({}).optional().describe(`Host supports text content blocks.`),image:y({}).optional().describe(`Host supports image content blocks.`),audio:y({}).optional().describe(`Host supports audio content blocks.`),resource:y({}).optional().describe(`Host supports resource content blocks.`),resourceLink:y({}).optional().describe(`Host supports resource link content blocks.`),structuredContent:y({}).optional().describe(`Host supports structured content.`)}),Nu=y({method:D(`ui/notifications/request-teardown`),params:y({}).optional()}),Pu=y({experimental:b(p(),b(p(),w()).describe(`Experimental features keyed by identifier.`)).optional().describe(`Experimental features keyed by identifier.`),openLinks:y({}).optional().describe(`Host supports opening external URLs.`),downloadFile:y({}).optional().describe(`Host supports file downloads via ui/download-file.`),serverTools:y({listChanged:E().optional().describe(`Host supports tools/list_changed notifications.`)}).optional().describe(`Host can proxy tool calls to the MCP server.`),serverResources:y({listChanged:E().optional().describe(`Host supports resources/list_changed notifications.`)}).optional().describe(`Host can proxy resource reads to the MCP server.`),logging:y({}).optional().describe(`Host accepts log messages.`),sandbox:y({permissions:Du.optional().describe(`Permissions granted by the host (camera, microphone, geolocation).`),csp:Eu.optional().describe(`CSP domains approved by the host.`)}).optional().describe(`Sandbox configuration applied by the host.`),updateModelContext:Mu.optional().describe(`Host accepts context updates (ui/update-model-context) to be included in the model's context for future turns.`),message:Mu.optional().describe(`Host supports receiving content messages (ui/message) from the view.`),sampling:y({tools:y({}).optional().describe("Host supports tool use via `tools` and `toolChoice` parameters.")}).optional().describe("Host supports LLM sampling (sampling/createMessage) from the view.\nMirrors the MCP `ClientCapabilities.sampling` shape so hosts can pass it through.")}),Fu=y({experimental:b(p(),b(p(),w()).describe(`Experimental features keyed by identifier.`)).optional().describe(`Experimental features keyed by identifier.`),tools:y({listChanged:E().optional().describe(`App supports tools/list_changed notifications.`)}).optional().describe(`App exposes MCP-style tools that the host can call.`),availableDisplayModes:T(vu).optional().describe(`Display modes the app supports.`)}),Iu=y({method:D(`ui/notifications/initialized`),params:y({}).optional()});y({csp:Eu.optional().describe(`Content Security Policy configuration for UI resources.`),permissions:Du.optional().describe(`Sandbox permissions requested by the UI resource.`),domain:p().optional().describe(`Dedicated origin for view sandbox. - -Useful when views need stable, dedicated origins for OAuth callbacks, CORS policies, or API key allowlists. - -**Host-dependent:** The format and validation rules for this field are determined by each host. Servers MUST consult host-specific documentation for the expected domain format. Common patterns include: -- Hash-based subdomains (e.g., \`{hash}.claudemcpcontent.com\`) -- URL-derived subdomains (e.g., \`www-example-com.oaiusercontent.com\`) - -If omitted, host uses default sandbox origin (typically per-conversation).`),prefersBorder:E().optional().describe(`Visual boundary preference - true if view prefers a visible border. - -Boolean requesting whether a visible border and background is provided by the host. Specifying an explicit value for this is recommended because hosts' defaults may vary. - -- \`true\`: request visible border + background -- \`false\`: request no visible border + background -- omitted: host decides border`)});var Lu=y({method:D(`ui/request-display-mode`),params:y({mode:vu.describe(`The display mode being requested.`)})}),Ru=y({mode:vu.describe(`The display mode that was actually set. May differ from requested if not supported.`)}).passthrough(),zu=f([D(`model`),D(`app`)]).describe(`Tool visibility scope - who can access the tool.`);y({resourceUri:p().optional(),visibility:T(zu).optional().describe(`Who can access this tool. Default: ["model", "app"] -- "model": Tool visible to and callable by the agent -- "app": Tool callable by the app from this server only`),csp:S().optional(),permissions:S().optional()}),y({mimeTypes:T(p()).optional().describe('Array of supported MIME types for UI resources.\nMust include `"text/html;profile=mcp-app"` for MCP Apps support.')});var Bu=y({method:D(`ui/download-file`),params:y({contents:T(f([rn,an])).describe(`Resource contents to download — embedded (inline data) or linked (host fetches). Uses standard MCP resource types.`)})}),Vu=y({method:D(`ui/message`),params:y({role:D(`user`).describe(`Message role, currently only "user" is supported.`),content:T(on).describe(`Message content blocks (text, image, etc.).`)})});y({method:D(`ui/notifications/sandbox-resource-ready`),params:y({html:p().describe(`HTML content to load into the inner iframe.`),sandbox:p().optional().describe(`Optional override for the inner iframe's sandbox attribute.`),csp:Eu.optional().describe(`CSP configuration from resource metadata.`),permissions:Du.optional().describe(`Sandbox permissions from resource metadata.`)})}),y({method:D(`ui/notifications/tool-result`),params:hn.describe(`Standard MCP tool execution result.`)});var Hu=y({toolInfo:y({id:H.optional().describe(`JSON-RPC id of the tools/call request.`),tool:fn.describe(`Tool definition including name, inputSchema, etc.`)}).optional().describe(`Metadata of the tool call that instantiated this App.`),theme:_u.optional().describe(`Current color theme preference.`),styles:Au.optional().describe(`Style configuration for theming the app.`),displayMode:vu.optional().describe(`How the UI is currently displayed.`),availableDisplayModes:T(vu).optional().describe(`Display modes the host supports.`),containerDimensions:f([y({height:O().describe(`Fixed container height in pixels.`)}),y({maxHeight:f([O(),le()]).optional().describe(`Maximum container height in pixels.`)})]).and(f([y({width:O().describe(`Fixed container width in pixels.`)}),y({maxWidth:f([O(),le()]).optional().describe(`Maximum container width in pixels.`)})])).optional().describe(`Container dimensions. Represents the dimensions of the iframe or other -container holding the app. Specify either width or maxWidth, and either height or maxHeight.`),locale:p().optional().describe(`User's language and region preference in BCP 47 format.`),timeZone:p().optional().describe(`User's timezone in IANA format.`),userAgent:p().optional().describe(`Host application identifier.`),platform:f([D(`web`),D(`desktop`),D(`mobile`)]).optional().describe(`Platform type for responsive design decisions.`),deviceCapabilities:y({touch:E().optional().describe(`Whether the device supports touch input.`),hover:E().optional().describe(`Whether the device supports hover interactions.`)}).optional().describe(`Device input capabilities.`),safeAreaInsets:y({top:O().describe(`Top safe area inset in pixels.`),right:O().describe(`Right safe area inset in pixels.`),bottom:O().describe(`Bottom safe area inset in pixels.`),left:O().describe(`Left safe area inset in pixels.`)}).optional().describe(`Mobile safe area boundaries in pixels.`)}).passthrough();y({method:D(`ui/notifications/host-context-changed`),params:Hu.describe(`Partial context update containing only changed fields.`)});var Uu=y({method:D(`ui/update-model-context`),params:y({content:T(on).optional().describe(`Context content blocks (text, image, etc.).`),structuredContent:b(p(),_().describe(`Structured content for machine-readable context data.`)).optional().describe(`Structured content for machine-readable context data.`)})}),Wu=y({method:D(`ui/initialize`),params:y({appInfo:tt.describe(`App identification (name and version).`),appCapabilities:Fu.describe(`Features and capabilities this app provides.`),protocolVersion:p().describe(`Protocol version this app supports.`)})}),Gu=y({protocolVersion:p().describe(`Negotiated protocol version string (e.g., "2025-11-21").`),hostInfo:tt.describe(`Host application identification and version.`),hostCapabilities:Pu.describe(`Features and capabilities provided by the host.`),hostContext:Hu.describe(`Rich context about the host environment.`)}).passthrough(),Ku=class{eventTarget;eventSource;messageListener;constructor(e=window.parent,t){this.eventTarget=e,this.eventSource=t,this.messageListener=e=>{if(t&&e.source!==this.eventSource){console.debug(`Ignoring message from unknown source`,e);return}let n=Je.safeParse(e.data);n.success?(console.debug(`Parsed message`,n.data),this.onmessage?.(n.data)):e.data?.jsonrpc===`2.0`?(console.error(`Failed to parse message`,n.error.message,e),this.onerror?.(Error(`Invalid JSON-RPC message received: `+n.error.message))):console.debug(`Ignoring non-JSON-RPC message`,n.error.message,e)}}async start(){window.addEventListener(`message`,this.messageListener)}async send(e,t){e.method!==`ui/notifications/tool-input-partial`&&console.debug(`Sending message`,e),this.eventTarget.postMessage(e,`*`)}async close(){window.removeEventListener(`message`,this.messageListener),this.onclose?.()}onclose;onerror;onmessage;sessionId;setProtocolVersion},qu=[gu],Ju=class extends Qo{_client;_hostInfo;_hostCapabilities;_appCapabilities;_hostContext={};_appInfo;_initializedReceived=!1;_registeredEvents=new Set;_events=new du;_methods=new fu;setRequestHandler=(...e)=>{let[t,...n]=mu(`request`,e)??e;this._methods.claim(t,`setRequestHandler`),super.setRequestHandler.call(this,t,...n)};setNotificationHandler=(...e)=>{let[t,...n]=mu(`notification`,e)??e;this._methods.claim(t,`setNotificationHandler`),super.setNotificationHandler.call(this,t,...n)};removeRequestHandler=e=>{this._methods.release(e),super.removeRequestHandler(e)};removeNotificationHandler=e=>{this._methods.release(e),super.removeNotificationHandler(e)};replaceRequestHandler=(e,...t)=>{this._methods.replace(e),super.setRequestHandler.call(this,e,...t)};_wrapHandler(e,t){let n=super._wrapHandler(e,t);return e===`ui/initialize`||e===`ping`?n:async(t,r)=>(this._initializedReceived||console.warn(`[ext-apps] AppBridge received '${e}' before ui/notifications/initialized. The View is calling host methods before completing the handshake; it should await app.connect() first.`),n(t,r))}eventSchemas={sizechange:Ou,sandboxready:Tu,initialized:Iu,requestteardown:Nu,loggingmessage:Tn};setEventHandler(e,t){this._ensureEventSlot(e),this._events.setHandler(e,t)}getEventHandler(e){return this._events.getHandler(e)}addEventListener(e,t){this._ensureEventSlot(e),this._events.addEventListener(e,t)}removeEventListener(e,t){this._events.removeEventListener(e,t)}_ensureEventSlot(e){if(this._registeredEvents.has(e))return;let t=this.eventSchemas[e];if(!t)throw Error(`Unknown event: ${String(e)}`);let n=t=>{e===`initialized`&&(this._initializedReceived=!0),this._events.dispatch(e,t)};e===`loggingmessage`?this.setNotificationHandler(`notifications/message`,e=>{n(e.params)}):this.setNotificationHandler(t.shape.method.value,{params:t.shape.params},e=>n(e)),this._registeredEvents.add(e)}warnIfRequestHandlerReplaced(e,t,n){t&&n&&console.warn(`[MCP Apps] ${e} handler replaced. Previous handler will no longer be called.`)}constructor(e,t,n,r){super(r),this._client=e,this._hostInfo=t,this._hostCapabilities=n,this._methods.replace(`notifications/cancelled`),this._methods.replace(`notifications/progress`),this._ensureEventSlot(`initialized`),this._hostContext=r?.hostContext||{},this.replaceRequestHandler(`ui/initialize`,{params:Wu.shape.params,result:Gu},e=>this._onAppsInitialize(e)),this.replaceRequestHandler(`ping`,(e,t)=>(this.onping?.(e.params,t),{})),this.replaceRequestHandler(`ui/request-display-mode`,{params:Lu.shape.params,result:Ru},()=>({mode:this._hostContext.displayMode??`inline`}))}buildContext(e){return e}assertCapabilityForMethod(e){}assertRequestHandlerCapability(e){}assertNotificationCapability(e){}getAppCapabilities(){return this._appCapabilities}getAppVersion(){return this._appInfo}onping;get onsizechange(){return this.getEventHandler(`sizechange`)}set onsizechange(e){this.setEventHandler(`sizechange`,e)}get onsandboxready(){return this.getEventHandler(`sandboxready`)}set onsandboxready(e){this.setEventHandler(`sandboxready`,e)}get oninitialized(){return this.getEventHandler(`initialized`)}set oninitialized(e){this.setEventHandler(`initialized`,e)}_onmessage;get onmessage(){return this._onmessage}set onmessage(e){this.warnIfRequestHandlerReplaced(`onmessage`,this._onmessage,e),this._onmessage=e,this.replaceRequestHandler(`ui/message`,{params:Vu.shape.params,result:wu},async(e,t)=>{if(!this._onmessage)throw Error(`No onmessage handler set`);return this._onmessage(e,t)})}_onopenlink;get onopenlink(){return this._onopenlink}set onopenlink(e){this.warnIfRequestHandlerReplaced(`onopenlink`,this._onopenlink,e),this._onopenlink=e,this.replaceRequestHandler(`ui/open-link`,{params:xu.shape.params,result:Su},async(e,t)=>{if(!this._onopenlink)throw Error(`No onopenlink handler set`);return this._onopenlink(e,t)})}_ondownloadfile;get ondownloadfile(){return this._ondownloadfile}set ondownloadfile(e){this.warnIfRequestHandlerReplaced(`ondownloadfile`,this._ondownloadfile,e),this._ondownloadfile=e,this.replaceRequestHandler(`ui/download-file`,{params:Bu.shape.params,result:Cu},async(e,t)=>{if(!this._ondownloadfile)throw Error(`No ondownloadfile handler set`);return this._ondownloadfile(e,t)})}get onrequestteardown(){return this.getEventHandler(`requestteardown`)}set onrequestteardown(e){this.setEventHandler(`requestteardown`,e)}_onrequestdisplaymode;get onrequestdisplaymode(){return this._onrequestdisplaymode}set onrequestdisplaymode(e){this.warnIfRequestHandlerReplaced(`onrequestdisplaymode`,this._onrequestdisplaymode,e),this._onrequestdisplaymode=e,this.replaceRequestHandler(`ui/request-display-mode`,{params:Lu.shape.params,result:Ru},async(e,t)=>{if(!this._onrequestdisplaymode)throw Error(`No onrequestdisplaymode handler set`);return this._onrequestdisplaymode(e,t)})}get onloggingmessage(){return this.getEventHandler(`loggingmessage`)}set onloggingmessage(e){this.setEventHandler(`loggingmessage`,e)}_onupdatemodelcontext;get onupdatemodelcontext(){return this._onupdatemodelcontext}set onupdatemodelcontext(e){this.warnIfRequestHandlerReplaced(`onupdatemodelcontext`,this._onupdatemodelcontext,e),this._onupdatemodelcontext=e,this.replaceRequestHandler(`ui/update-model-context`,{params:Uu.shape.params,result:Xe},async(e,t)=>{if(!this._onupdatemodelcontext)throw Error(`No onupdatemodelcontext handler set`);return this._onupdatemodelcontext(e,t)})}_oncalltool;get oncalltool(){return this._oncalltool}set oncalltool(e){this.warnIfRequestHandlerReplaced(`oncalltool`,this._oncalltool,e),this._oncalltool=e,this.replaceRequestHandler(`tools/call`,async(e,t)=>{if(!this._oncalltool)throw Error(`No oncalltool handler set`);return this._oncalltool(e.params,t)})}_oncreatesamplingmessage;get oncreatesamplingmessage(){return this._oncreatesamplingmessage}set oncreatesamplingmessage(e){this.warnIfRequestHandlerReplaced(`oncreatesamplingmessage`,this._oncreatesamplingmessage,e),this._oncreatesamplingmessage=e,this.replaceRequestHandler(`sampling/createMessage`,async(e,t)=>{if(!this._oncreatesamplingmessage)throw Error(`No oncreatesamplingmessage handler set`);return this._oncreatesamplingmessage(e.params,t)})}sendToolListChanged(e={}){return this.notification({method:`notifications/tools/list_changed`,params:e})}_onlistresources;get onlistresources(){return this._onlistresources}set onlistresources(e){this.warnIfRequestHandlerReplaced(`onlistresources`,this._onlistresources,e),this._onlistresources=e,this.replaceRequestHandler(`resources/list`,async(e,t)=>{if(!this._onlistresources)throw Error(`No onlistresources handler set`);return this._onlistresources(e.params,t)})}_onlistresourcetemplates;get onlistresourcetemplates(){return this._onlistresourcetemplates}set onlistresourcetemplates(e){this.warnIfRequestHandlerReplaced(`onlistresourcetemplates`,this._onlistresourcetemplates,e),this._onlistresourcetemplates=e,this.replaceRequestHandler(`resources/templates/list`,async(e,t)=>{if(!this._onlistresourcetemplates)throw Error(`No onlistresourcetemplates handler set`);return this._onlistresourcetemplates(e.params,t)})}_onreadresource;get onreadresource(){return this._onreadresource}set onreadresource(e){this.warnIfRequestHandlerReplaced(`onreadresource`,this._onreadresource,e),this._onreadresource=e,this.replaceRequestHandler(`resources/read`,async(e,t)=>{if(!this._onreadresource)throw Error(`No onreadresource handler set`);return this._onreadresource(e.params,t)})}sendResourceListChanged(e={}){return this.notification({method:`notifications/resources/list_changed`,params:e})}_onlistprompts;get onlistprompts(){return this._onlistprompts}set onlistprompts(e){this.warnIfRequestHandlerReplaced(`onlistprompts`,this._onlistprompts,e),this._onlistprompts=e,this.replaceRequestHandler(`prompts/list`,async(e,t)=>{if(!this._onlistprompts)throw Error(`No onlistprompts handler set`);return this._onlistprompts(e.params,t)})}sendPromptListChanged(e={}){return this.notification({method:`notifications/prompts/list_changed`,params:e})}getCapabilities(){return this._hostCapabilities}async _onAppsInitialize(e){let t=e.protocolVersion;return this._appInfo!==void 0&&console.warn(`[ext-apps] AppBridge received a second ui/initialize. The View may be double-mounting (e.g. React StrictMode in dev) without closing the previous App instance. Responding normally; the latest appInfo/appCapabilities replace the previous values.`),this._appCapabilities=e.appCapabilities,this._appInfo=e.appInfo,{protocolVersion:qu.includes(t)?t:gu,hostCapabilities:this.getCapabilities(),hostInfo:this._hostInfo,hostContext:this._hostContext}}setHostContext(e){let t={},n=!1;for(let r of Object.keys(e)){let i=this._hostContext[r],a=e[r];Yu(i,a)||(t[r]=a,n=!0)}n&&(this._hostContext=e,this.sendHostContextChange(t))}sendHostContextChange(e){return this.notification({method:`ui/notifications/host-context-changed`,params:e})}sendToolInput(e){return this.notification({method:`ui/notifications/tool-input`,params:e})}sendToolInputPartial(e){return this.notification({method:`ui/notifications/tool-input-partial`,params:e})}sendToolResult(e){return this.notification({method:`ui/notifications/tool-result`,params:e})}sendToolCancelled(e){return this.notification({method:`ui/notifications/tool-cancelled`,params:e})}sendSandboxResourceReady(e){return this.notification({method:`ui/notifications/sandbox-resource-ready`,params:e})}teardownResource(e,t){return this.request({method:`ui/resource-teardown`,params:e},ju,t)}sendResourceTeardown=this.teardownResource;callTool(e,t){return this.request({method:`tools/call`,params:e},t)}listTools(e,t){return this.request({method:`tools/list`,params:e},t)}async connect(e){if(this.transport)throw Error(`AppBridge is already connected. Call close() before connecting again.`);if(this._initializedReceived=!1,this._client){let e=this._client.getServerCapabilities();if(!e)throw Error(`Client server capabilities not available`);e.tools&&(this.oncalltool=async(e,t)=>this._client.request({method:`tools/call`,params:e},{signal:t.mcpReq.signal}),e.tools.listChanged&&this._client.setNotificationHandler(`notifications/tools/list_changed`,e=>this.sendToolListChanged(e.params))),e.resources&&(this.onlistresources=async(e,t)=>this._client.request({method:`resources/list`,params:e},{signal:t.mcpReq.signal}),this.onlistresourcetemplates=async(e,t)=>this._client.request({method:`resources/templates/list`,params:e},{signal:t.mcpReq.signal}),this.onreadresource=async(e,t)=>this._client.request({method:`resources/read`,params:e},{signal:t.mcpReq.signal}),e.resources.listChanged&&this._client.setNotificationHandler(`notifications/resources/list_changed`,e=>this.sendResourceListChanged(e.params))),e.prompts&&(this.onlistprompts=async(e,t)=>this._client.request({method:`prompts/list`,params:e},{signal:t.mcpReq.signal}),e.prompts.listChanged&&this._client.setNotificationHandler(`notifications/prompts/list_changed`,e=>this.sendPromptListChanged(e.params)))}return super.connect(e)}};function Yu(e,t){return JSON.stringify(e)===JSON.stringify(t)}var Xu=t(o(),1),Zu=i(),Qu=`text/html;profile=mcp-app`,$u=`io.modelcontextprotocol/ui`,ed=3,td=5,nd=2e3,rd=class extends Error{},id=null,ad=null;async function od(){let e=new uu(new URL(`/api/mcp`,location.origin),{fetch:(e,t)=>c(e,t)}),t=new tu({name:`fanout-browser`,version:`0.2.0`},{capabilities:{extensions:{[$u]:{mimeTypes:[Qu]}}}});try{await t.connect(e);let n={client:t,references:0,closed:!1,closeListeners:new Set};return t.onclose=()=>cd(n,!1),t.onerror=()=>cd(n,!0),n}catch(t){throw await e.close().catch(()=>void 0),t}}async function sd(){for(let e=0;e{ad===e&&!t.closed&&(id=t)}).catch(()=>{ad===e&&(ad=null)})}let e=ad;if(!e)continue;let t=await e;if(t.closed){ad===e&&(ad=null);continue}return t.closeTimer&&=(clearTimeout(t.closeTimer),void 0),t.references+=1,t}throw Error(`MCP connection closed during setup`)}function cd(e,t){if(!e.closed){e.closed=!0,e.closeTimer&&clearTimeout(e.closeTimer),e.closeTimer=void 0,id===e&&(id=null),ad=null;for(let t of[...e.closeListeners])t();t&&e.client.close().catch(()=>void 0)}}function ld(e){e.references=Math.max(0,e.references-1),!(e.closed||e.references||e.closeTimer)&&(e.closeTimer=setTimeout(()=>{e.closeTimer=void 0,!(e.references||id!==e)&&(e.closed=!0,id=null,ad=null,e.client.close().catch(()=>void 0))},0))}function ud(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function dd(e,t){if(!Array.isArray(e))return[];let n=new Set(t);return e.filter(e=>{if(typeof e!=`string`||/[\s;'\"]/.test(e))return!1;let t=e.match(/^([a-z]+):\/\/([^/]+)$/i);return!!(t&&n.has(t[1].toLowerCase()))})}function fd(e){let t=ud(ud(ud(e)?.ui)?.csp),n=dd(t?.connectDomains,[`http`,`https`,`ws`,`wss`]),r=dd(t?.resourceDomains,[`http`,`https`]),i=dd(t?.frameDomains,[`http`,`https`]),a=dd(t?.baseUriDomains,[`http`,`https`]),o=r.length?` ${r.join(` `)}`:``,s=[`default-src 'none'`,`script-src 'self' 'unsafe-inline'${o}`,`style-src 'self' 'unsafe-inline'${o}`,`img-src 'self' data:${o}`,`media-src 'self' data:${o}`,`font-src 'self' data:${o}`,`connect-src ${n.length?n.join(` `):`'none'`}`];return i.length&&s.push(`frame-src ${i.join(` `)}`),a.length&&s.push(`base-uri ${a.join(` `)}`),`${s.join(`; `)};`}function pd(e,t){let n=``;return/]*)?>/i.test(e)?e.replace(/]*)?>/i,e=>`${e}${n}`):/]*)?>/i.test(e)?e.replace(/]*)?>/i,e=>`${e}${n}`):`${n}${e}`}function md(e){return e.filter(e=>e.type===`text`).map(e=>String(e.text??``)).join(` -`)}function hd({content:t,onMessage:i}){let o=(0,Xu.useRef)(null),c=(0,Xu.useRef)(null),u=(0,Xu.useRef)(null),d=(0,Xu.useRef)(null),[f,p]=(0,Xu.useState)(``),[m,h]=(0,Xu.useState)(240),[g,_]=(0,Xu.useState)(``),[v,y]=(0,Xu.useState)(0),b=(0,Xu.useRef)(0),ee=l(`light`),x=(0,Xu.useRef)(ee);x.current=ee,(0,Xu.useEffect)(()=>{d.current?.setHostContext({theme:ee,displayMode:`inline`})},[ee]),(0,Xu.useEffect)(()=>{b.current=0},[t.resourceUri]),(0,Xu.useEffect)(()=>{let e=!1,n;p(``),_(``);let r=()=>{let e=b.current+1;if(e>td)return;b.current=e;let t=e===1?0:Math.min(750*2**(e-2),6e3);t===0?y(e=>e+1):n=setTimeout(()=>y(e=>e+1),t)},i=()=>r();async function a(){try{let n=await sd();if(e){ld(n);return}u.current=n,n.closeListeners.add(i),c.current=n.client;let r=(await n.client.readResource({uri:t.resourceUri})).contents[0];if(!r||!(`text`in r)||!r.text)throw new rd(`MCP App resource has no HTML content`);if(r.uri!==t.resourceUri)throw new rd(`MCP App resource URI does not match the requested URI`);if(r.mimeType!==Qu)throw new rd(`MCP App resource has an unsupported MIME type`);e||(b.current=0,p(pd(r.text,r._meta)))}catch(t){console.error(`MCP app resource load failed`,t),e||(_(`This view could not be loaded. Please try again.`),b.current>0&&!(t instanceof rd)&&r())}}return a(),()=>{e=!0,n&&clearTimeout(n);let t=d.current?.teardownResource({}).catch(()=>void 0)??Promise.resolve(),r=u.current;r&&(r.closeListeners.delete(i),t.finally(()=>ld(r))),d.current=null,c.current=null,u.current=null}},[t.resourceUri,v]);async function S(){let e=o.current,n=c.current;if(e?.contentWindow&&f&&n&&!d.current)try{let r=new Ju(null,{name:`Fanout`,version:`0.2.0`},{openLinks:{},serverTools:{},logging:{}},{hostContext:{theme:x.current,displayMode:`inline`}});r.oncalltool=(e,t)=>n.callTool(e,{signal:t.mcpReq.signal}),d.current=r,r.onsizechange=({height:e})=>{e&&h(Math.min(nd,Math.max(240,Math.ceil(e)+32)))},r.onmessage=async({content:e})=>{let t=md(e);return t?(await i(t),{}):{isError:!0}},r.oninitialized=async()=>{await r.sendToolInput({arguments:t.toolInput??{}}),await r.sendToolResult({content:[{type:`text`,text:JSON.stringify(t.toolResult??{})}],structuredContent:t.toolResult,isError:t.isError})},await r.connect(new Ku(e.contentWindow,e.contentWindow))}catch(e){console.error(`MCP app bridge connect failed`,e),_(`This view could not be loaded. Please try again.`)}}return g?(0,Zu.jsx)(r,{color:`bad`,m:`md`,children:g}):f?(0,Zu.jsx)(e,{component:`iframe`,ref:o,title:`Fanout analysis view`,sandbox:`allow-scripts`,scrolling:`auto`,srcDoc:f,w:`100%`,bd:0,bg:`var(--mantine-color-body)`,style:{display:`block`,height:m,transition:`height 200ms ease`},onLoad:()=>void S()}):(0,Zu.jsxs)(a,{mih:180,p:`xl`,children:[(0,Zu.jsx)(s,{size:`sm`}),(0,Zu.jsx)(n,{c:`dimmed`,size:`sm`,ml:`sm`,children:`Preparing view…`})]})}export{hd as default,fd as mcpAppCSP}; \ No newline at end of file diff --git a/internal/ui/dist/assets/page-BEErwk1M.js b/internal/ui/dist/assets/page-BEErwk1M.js deleted file mode 100644 index 88033d90..00000000 --- a/internal/ui/dist/assets/page-BEErwk1M.js +++ /dev/null @@ -1,22 +0,0 @@ -import{A as e,E as t,J as n,L as r,M as i,O as a,Q as o,S as s,T as c,W as l,Y as u,Z as d,_ as f,_t as p,a as m,b as h,d as g,f as _,ft as v,g as y,gt as b,h as x,ht as S,it as C,k as w,l as T,lt as E,m as D,mt as O,nt as k,o as A,ot as j,p as M,pt as N,q as ee,r as te,rt as P,s as F,u as I,v as L,w as R,x as ne}from"./brand-eOqp_Ed4.js";import{c as re,o as ie,s as ae}from"./auth-BZHrLj_K.js";import{A as oe,C as z,D as B,E as se,H as ce,I as le,M as ue,N as de,O as fe,S as pe,T as me,U as he,W as ge,_ as _e,a as ve,b as ye,c as be,d as xe,g as Se,i as Ce,j as we,k as Te,m as Ee,n as De,o as Oe,p as ke,s as Ae,u as je,v as Me,w as Ne,x as Pe,y as Fe}from"./tokens-D12raFtt.js";import{C as Ie,D as Le,E as Re,S as ze,b as Be,o as Ve,t as He,w as Ue,x as We}from"./Tooltip-Bef-UcCW.js";import{t as Ge}from"./use-computed-color-scheme-_1Kex6aU.js";import{E as Ke,T as qe,t as Je}from"./useQuery-B6EnqqkT.js";import{a as Ye,i as Xe,n as Ze,o as Qe,r as $e,s as et,t as tt}from"./format-HB47ZCa3.js";import{o as nt,s as rt}from"./preload-helper-CAfbhz7u.js";import{n as it,t as at}from"./WarningCircle.es-CVethYG9.js";function ot(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();let n=st(e);if(n.length!==st(t).length)return!1;for(let r=0;r{if(typeof n!=`string`||n.trim().length===0)throw Error(t);return`${e}-${n}`}}function lt(e,t){if(e===t||Number.isNaN(e)&&Number.isNaN(t))return!0;if(!(e instanceof Object)||!(t instanceof Object))return!1;let n=Object.keys(e),{length:r}=n;if(r!==Object.keys(t).length)return!1;for(let i=0;i(e+1)%1e6;function dt(){let[,e]=(0,V.useReducer)(ut,0);return e}function ft(e,t){if(!e||!t)return!1;if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n{r.current||=window.setTimeout(()=>{i(...e),r.current=null},t)},[t]),o=(0,V.useCallback)(()=>{r.current&&=(window.clearTimeout(r.current),null)},[]);return(0,V.useEffect)(()=>(n.autoInvoke&&a(),o),[o,a]),{start:a,clear:o}}function gt(e){let t=(0,V.useRef)(void 0);return(0,V.useEffect)(()=>{t.current=e},[e]),t.current}function _t(e,t,n){let r=(0,V.useRef)(null);(0,V.useEffect)(()=>{r.current&&=(r.current.disconnect(),null);let i=typeof n==`function`?n():n;return i&&(r.current=new MutationObserver(e),r.current.observe(i,t)),()=>{r.current&&=(r.current.disconnect(),null)}},[e,t,n])}function vt(){let[e,t]=(0,V.useState)(!1);return(0,V.useEffect)(()=>t(!0),[]),e}function yt(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`}function bt(e,t=document){let n=t.querySelector(e);if(n)return n;let r=t.querySelectorAll(`*`);for(let t=0;t{if(!e||!t||!n.current)return;let r=e.getBoundingClientRect(),i=t.getBoundingClientRect(),a=t.offsetWidth===0?1:i.width/t.offsetWidth,o=t.offsetHeight===0?1:i.height/t.offsetHeight,s=window.getComputedStyle(e),c=window.getComputedStyle(t),l=Be(s.borderTopWidth)+Be(c.borderTopWidth),u=Be(s.borderLeftWidth)+Be(c.borderLeftWidth),d={top:(r.top-i.top)/o-l,left:(r.left-i.left)/a-u,width:r.width/a,height:r.height/o};n.current.style.transform=`translateY(${d.top}px) translateX(${d.left}px)`,n.current.style.width=`${d.width}px`,n.current.style.height=`${d.height}px`},p=()=>{window.clearTimeout(o.current),n.current&&(n.current.style.transitionDuration=`0ms`),f(),o.current=window.setTimeout(()=>{n.current&&(n.current.style.transitionDuration=``)},30)},m=(0,V.useRef)(null),h=(0,V.useRef)(null);return(0,V.useEffect)(()=>{if(c&&s.current!==e&&i&&i(),s.current=e,f(),e)return m.current=new ResizeObserver(p),m.current.observe(e),t&&(h.current=new ResizeObserver(p),h.current.observe(t)),()=>{m.current?.disconnect(),h.current?.disconnect()}},[t,e]),(0,V.useEffect)(()=>{if(t){let e=e=>{wt(e.target,t)&&(p(),d(!1))};return t.addEventListener(`transitionend`,e),()=>{t.removeEventListener(`transitionend`,e)}}},[t]),(0,V.useEffect)(()=>{if(n.current&&a){let e=e=>{e.propertyName===`transform`&&a()};return n.current.addEventListener(`transitionend`,e),()=>{n.current?.removeEventListener(`transitionend`,e)}}},[a]),ht(()=>{et()!==`test`&&l(!0)},20,{autoInvoke:!0}),_t(e=>{e.forEach(e=>{e.type===`attributes`&&e.attributeName===`dir`&&p()})},{attributes:!0,attributeFilter:[`dir`]},()=>document.documentElement),{initialized:c,hidden:u}}var Et={root:`m_96b553a6`},Dt=n((e,{transitionDuration:t},{shouldReduceMotion:n})=>({root:{"--transition-duration":e.respectReducedMotion&&n?`0ms`:typeof t==`number`?`${t}ms`:t||`150ms`}})),Ot=R(t=>{let n=e(`FloatingIndicator`,null,t),{classNames:r,className:i,style:o,styles:c,unstyled:l,vars:f,target:p,parent:m,transitionDuration:h,mod:g,displayAfterTransitionEnd:_,onTransitionStart:v,onTransitionEnd:y,attributes:b,ref:x,...S}=n,C=u(),w=a({name:`FloatingIndicator`,classes:Et,props:n,className:i,style:o,classNames:r,styles:c,unstyled:l,attributes:b,vars:f,varsResolver:Dt,stylesCtx:{shouldReduceMotion:C}}),T=(0,V.useRef)(null),{initialized:E,hidden:D}=Tt({target:p,parent:m,ref:T,displayAfterTransitionEnd:_,onTransitionStart:v,onTransitionEnd:y}),O=d(x,T);return!p||!m?null:(0,H.jsx)(s,{ref:O,mod:[{initialized:E,hidden:D},g],...w(`root`),...S})});Ot.displayName=`@mantine/core/FloatingIndicator`,Ot.classes=Et,Ot.varsResolver=Dt;function kt(e){return typeof e==`string`?{value:e,label:e}:typeof e==`object`&&`value`in e&&!(`label`in e)?{value:e.value,label:`${e.value}`,disabled:e.disabled}:typeof e==`object`&&`group`in e?{group:e.group,items:e.items.map(e=>kt(e))}:typeof e==`number`||typeof e==`bigint`||typeof e==`boolean`?{value:e,label:`${e}`}:e}function At(e){return e?e.map(e=>kt(e)):[]}function jt(e){return e.reduce((e,t)=>`group`in t?{...e,...jt(t.items)}:(e[`${t.value}`]=t,e),{})}var Mt={dropdown:`m_88b62a41`,search:`m_985517d8`,options:`m_b2821a6e`,option:`m_92253aa5`,empty:`m_2530cd1d`,header:`m_858f94bd`,footer:`m_82b967cb`,group:`m_254f3e4f`,groupLabel:`m_2bb2e9e5`,chevron:`m_2943220b`,optionsDropdownOption:`m_390b5f4`,optionsDropdownCheckIcon:`m_8ee53fc2`,optionsDropdownCheckPlaceholder:`m_a530ee0a`},Nt={error:null},Pt=n((e,{size:t,color:n})=>({chevron:{"--combobox-chevron-size":j(t,`combobox-chevron-size`),"--combobox-chevron-color":n?l(n,e):void 0}})),Ft=R(t=>{let n=e(`ComboboxChevron`,Nt,t),{size:r,error:i,style:o,className:c,classNames:l,styles:u,unstyled:d,vars:f,attributes:p,mod:m,...h}=n,g=a({name:`ComboboxChevron`,classes:Mt,props:n,style:o,className:c,classNames:l,styles:u,unstyled:d,vars:f,varsResolver:Pt,attributes:p,rootSelector:`chevron`});return(0,H.jsx)(s,{component:`svg`,...h,...g(`chevron`),size:r,viewBox:`0 0 15 15`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,mod:[`combobox-chevron`,{error:i},m],children:(0,H.jsx)(`path`,{d:`M4.93179 5.43179C4.75605 5.60753 4.75605 5.89245 4.93179 6.06819C5.10753 6.24392 5.39245 6.24392 5.56819 6.06819L7.49999 4.13638L9.43179 6.06819C9.60753 6.24392 9.89245 6.24392 10.0682 6.06819C10.2439 5.89245 10.2439 5.60753 10.0682 5.43179L7.81819 3.18179C7.73379 3.0974 7.61933 3.04999 7.49999 3.04999C7.38064 3.04999 7.26618 3.0974 7.18179 3.18179L4.93179 5.43179ZM10.0682 9.56819C10.2439 9.39245 10.2439 9.10753 10.0682 8.93179C9.89245 8.75606 9.60753 8.75606 9.43179 8.93179L7.49999 10.8636L5.56819 8.93179C5.39245 8.75606 5.10753 8.75606 4.93179 8.93179C4.75605 9.10753 4.75605 9.39245 4.93179 9.56819L7.18179 11.8182C7.35753 11.9939 7.64245 11.9939 7.81819 11.8182L10.0682 9.56819Z`,fill:`currentColor`,fillRule:`evenodd`,clipRule:`evenodd`})})});Ft.classes=Mt,Ft.varsResolver=Pt,Ft.displayName=`@mantine/core/ComboboxChevron`;var[It,Lt]=Re(`Combobox component was not found in tree`);function Rt({onMouseDown:e,onClick:t,onClear:n,...r}){return(0,H.jsx)(D.ClearButton,{tabIndex:-1,"aria-hidden":!0,...r,onMouseDown:t=>{t.preventDefault(),e?.(t)},onClick:e=>{n(),t?.(e)}})}Rt.displayName=`@mantine/core/ComboboxClearButton`;var zt=R(t=>{let{classNames:n,styles:r,className:i,style:a,hidden:o,...s}=e(`ComboboxDropdown`,null,t),c=Lt();return(0,H.jsx)(ue.Dropdown,{...s,role:`presentation`,"data-hidden":o||void 0,"data-floating-height":c.floatingHeight||void 0,...c.getStyles(`dropdown`,{className:i,style:a,classNames:n,styles:r})})});zt.classes=Mt,zt.displayName=`@mantine/core/ComboboxDropdown`;var Bt={refProp:`ref`},Vt=R(t=>{let{children:n,refProp:r,ref:i}=e(`ComboboxDropdownTarget`,Bt,t);if(Lt(),!Le(n))throw Error(`Combobox.DropdownTarget component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported`);return(0,H.jsx)(ue.Target,{ref:i,refProp:r,children:n})});Vt.displayName=`@mantine/core/ComboboxDropdownTarget`;var Ht=R(t=>{let{classNames:n,className:r,style:i,styles:a,vars:o,...c}=e(`ComboboxEmpty`,null,t),l=Lt();return(0,H.jsx)(s,{...l.getStyles(`empty`,{className:r,classNames:n,styles:a,style:i}),...c})});Ht.classes=Mt,Ht.displayName=`@mantine/core/ComboboxEmpty`;function Ut({onKeyDown:e,onClick:t,withKeyboardNavigation:n,withAriaAttributes:r,withExpandedAttribute:i,targetType:a,autoComplete:o}){let s=Lt(),[c,l]=(0,V.useState)(null),u=t=>{if(e?.(t),!s.readOnly&&n){if(t.nativeEvent.isComposing)return;if(t.nativeEvent.code===`ArrowDown`&&(t.preventDefault(),s.store.dropdownOpened?l(s.store.selectNextOption()):(s.store.openDropdown(`keyboard`),l(s.store.selectActiveOption()),s.store.updateSelectedOptionIndex(`selected`,{scrollIntoView:!0}))),t.nativeEvent.code===`ArrowUp`&&(t.preventDefault(),s.store.dropdownOpened?l(s.store.selectPreviousOption()):(s.store.openDropdown(`keyboard`),l(s.store.selectActiveOption()),s.store.updateSelectedOptionIndex(`selected`,{scrollIntoView:!0}))),t.nativeEvent.code===`Enter`||t.nativeEvent.code===`NumpadEnter`){if(t.nativeEvent.keyCode===229)return;let e=s.store.getSelectedOptionIndex();s.store.dropdownOpened&&e!==-1?(t.preventDefault(),s.store.clickSelectedOption()):a===`button`&&(t.preventDefault(),s.store.openDropdown(`keyboard`))}t.key===`Escape`&&s.store.closeDropdown(`keyboard`),t.nativeEvent.code===`Space`&&a===`button`&&(t.preventDefault(),s.store.toggleDropdown(`keyboard`))}},d=r?{...i?{role:`combobox`}:{},"aria-haspopup":`listbox`,"aria-expanded":i?!!(s.store.listId&&s.store.dropdownOpened):void 0,"aria-controls":s.store.dropdownOpened&&s.store.listId?s.store.listId:void 0,"aria-activedescendant":s.store.dropdownOpened&&c||void 0,autoComplete:o,"data-expanded":s.store.dropdownOpened||void 0,"data-mantine-stop-propagation":s.store.dropdownOpened||void 0}:{},f=e=>{a===`button`&&e.currentTarget.focus(),t?.(e)};return{...d,onKeyDown:u,onClick:f}}var Wt={refProp:`ref`,targetType:`input`,withKeyboardNavigation:!0,withAriaAttributes:!0,withExpandedAttribute:!1,autoComplete:`off`},Gt=R(t=>{let{children:n,refProp:r,withKeyboardNavigation:i,withAriaAttributes:a,withExpandedAttribute:o,targetType:s,autoComplete:c,ref:l,...u}=e(`ComboboxEventsTarget`,Wt,t),f=ze(n);if(!f)throw Error(`Combobox.EventsTarget component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported`);let p=Lt(),m=Ut({targetType:s,withAriaAttributes:a,withKeyboardNavigation:i,withExpandedAttribute:o,onKeyDown:f.props.onKeyDown,onClick:f.props.onClick,autoComplete:c});return(0,V.cloneElement)(f,{...m,...u,[r]:d(l,p.store.targetRef,Ie(f))})});Gt.displayName=`@mantine/core/ComboboxEventsTarget`;var Kt=R(t=>{let{classNames:n,className:r,style:i,styles:a,vars:o,...c}=e(`ComboboxFooter`,null,t),l=Lt();return(0,H.jsx)(s,{...l.getStyles(`footer`,{className:r,classNames:n,style:i,styles:a}),...c,onMouseDown:e=>{e.preventDefault()}})});Kt.classes=Mt,Kt.displayName=`@mantine/core/ComboboxFooter`;var qt=R(t=>{let{classNames:n,className:r,style:i,styles:a,vars:c,children:l,label:u,id:d,...f}=e(`ComboboxGroup`,null,t),p=Lt(),m=o(d),h=u!=null&&u!==!1&&u!==``;return(0,H.jsxs)(s,{role:`group`,"aria-labelledby":h?m:void 0,...p.getStyles(`group`,{className:r,classNames:n,style:i,styles:a}),...f,children:[h&&(0,H.jsx)(`div`,{id:m,...p.getStyles(`groupLabel`,{classNames:n,styles:a}),children:u}),l]})});qt.classes=Mt,qt.displayName=`@mantine/core/ComboboxGroup`;var Jt=R(t=>{let{classNames:n,className:r,style:i,styles:a,vars:o,...c}=e(`ComboboxHeader`,null,t),l=Lt();return(0,H.jsx)(s,{...l.getStyles(`header`,{className:r,classNames:n,style:i,styles:a}),...c,onMouseDown:e=>{e.preventDefault()}})});Jt.classes=Mt,Jt.displayName=`@mantine/core/ComboboxHeader`;function Yt({value:e,valuesDivider:t=`,`,...n}){return(0,H.jsx)(`input`,{type:`hidden`,value:Array.isArray(e)?e.join(t):e?`${e}`:``,...n})}Yt.displayName=`@mantine/core/ComboboxHiddenInput`;var Xt=R(t=>{let n=e(`ComboboxOption`,null,t),{classNames:r,className:i,style:a,styles:o,vars:c,onClick:l,id:u,active:d,onMouseDown:f,onMouseOver:p,disabled:m,selected:h,mod:g,..._}=n,v=Lt(),y=(0,V.useId)(),b=u||y;return(0,H.jsx)(s,{...v.getStyles(`option`,{className:i,classNames:r,styles:o,style:a}),..._,id:b,mod:[`combobox-option`,{"combobox-active":d,"combobox-disabled":m,"combobox-selected":h},g],role:`option`,onClick:e=>{m?e.preventDefault():(v.onOptionSubmit?.(n.value,n),l?.(e))},onMouseDown:e=>{e.preventDefault(),f?.(e)},onMouseOver:e=>{v.resetSelectionOnOptionHover&&v.store.resetSelectedOption(),p?.(e)}})});Xt.classes=Mt,Xt.displayName=`@mantine/core/ComboboxOption`;var Zt=R(t=>{let{classNames:n,className:r,style:i,styles:a,id:c,onMouseDown:l,labelledBy:u,...d}=e(`ComboboxOptions`,null,t),f=Lt(),p=o(c);return(0,V.useEffect)(()=>{f.store.setListId(p)},[p]),(0,H.jsx)(s,{...f.getStyles(`options`,{className:r,style:i,classNames:n,styles:a}),...d,id:p,role:`listbox`,"aria-labelledby":u,onMouseDown:e=>{e.preventDefault(),l?.(e)}})});Zt.classes=Mt,Zt.displayName=`@mantine/core/ComboboxOptions`;var Qt={withAriaAttributes:!0,withKeyboardNavigation:!0},$t=R(t=>{let{classNames:n,styles:r,unstyled:i,vars:a,withAriaAttributes:o,onKeyDown:s,onClick:c,withKeyboardNavigation:l,size:u,ref:f,...p}=e(`ComboboxSearch`,Qt,t),m=Lt(),h=m.getStyles(`search`),g=Ut({targetType:`input`,withAriaAttributes:o,withKeyboardNavigation:l,withExpandedAttribute:!1,onKeyDown:s,onClick:c,autoComplete:`off`});return(0,H.jsx)(D,{ref:d(f,m.store.searchRef),classNames:[{input:h.className},n],styles:[{input:h.style},r],size:u||m.size,...g,...p,__staticSelector:`Combobox`})});$t.classes=Mt,$t.displayName=`@mantine/core/ComboboxSearch`;var en={refProp:`ref`,targetType:`input`,withKeyboardNavigation:!0,withAriaAttributes:!0,withExpandedAttribute:!1,autoComplete:`off`},tn=R(t=>{let{children:n,refProp:r,withKeyboardNavigation:i,withAriaAttributes:a,withExpandedAttribute:o,targetType:s,autoComplete:c,ref:l,...u}=e(`ComboboxTarget`,en,t),f=ze(n);if(!f)throw Error(`Combobox.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported`);let p=Lt(),m=Ut({targetType:s,withAriaAttributes:a,withKeyboardNavigation:i,withExpandedAttribute:o,onKeyDown:f.props.onKeyDown,onClick:f.props.onClick,autoComplete:c}),h=(0,V.cloneElement)(f,{...m,...u});return(0,H.jsx)(ue.Target,{refProp:r,ref:d(l,p.store.targetRef),children:h})});tn.displayName=`@mantine/core/ComboboxTarget`;function nn(e,t,n){for(let n=e-1;n>=0;--n)if(!t[n].hasAttribute(`data-combobox-disabled`))return n;if(n){for(let e=t.length-1;e>-1;--e)if(!t[e].hasAttribute(`data-combobox-disabled`))return e}return e}function rn(e,t,n){for(let n=e+1;n{s||(c(!0),i?.(e))},[c,i,s]),_=(0,V.useCallback)((e=`unknown`)=>{s&&(c(!1),r?.(e))},[c,r,s]),v=(0,V.useCallback)((e=`unknown`)=>{s?_(e):g(e)},[_,g,s]),y=(0,V.useCallback)(()=>{let e=St(f.current);bt(`#${l.current} [data-combobox-selected]`,e)?.removeAttribute(`data-combobox-selected`)},[]),b=(0,V.useCallback)(e=>{let t=St(f.current),n=bt(`#${l.current}`,t),r=n?xt(`[data-combobox-option]`,n):null;if(!r)return null;let i=e>=r.length?0:e<0?r.length-1:e;return u.current=i,r?.[i]&&!r[i].hasAttribute(`data-combobox-disabled`)?(y(),r[i].setAttribute(`data-combobox-selected`,`true`),r[i].scrollIntoView({block:`nearest`,behavior:o}),r[i].id):null},[o,y]),x=(0,V.useCallback)(()=>{let e=St(f.current),t=bt(`#${l.current} [data-combobox-active]`,e);if(t){let n=xt(`#${l.current} [data-combobox-option]`,e).findIndex(e=>e===t);return b(n)}return b(0)},[b]),S=(0,V.useCallback)(()=>{let e=St(f.current),t=xt(`#${l.current} [data-combobox-option]`,e);return b(rn(u.current,t,a))},[b,a]),C=(0,V.useCallback)(()=>{let e=St(f.current),t=xt(`#${l.current} [data-combobox-option]`,e);return b(nn(u.current,t,a))},[b,a]),w=(0,V.useCallback)(()=>{let e=St(f.current),t=xt(`#${l.current} [data-combobox-option]`,e);return b(an(t))},[b]),T=(0,V.useCallback)((e=`selected`,t)=>{if(typeof e==`number`){u.current=e;let n=St(f.current),r=xt(`#${l.current} [data-combobox-option]`,n);t?.scrollIntoView&&r[e]?.scrollIntoView({block:`nearest`,behavior:o});return}h.current=window.setTimeout(()=>{let n=St(f.current),r=xt(`#${l.current} [data-combobox-option]`,n),i=r.findIndex(t=>t.hasAttribute(`data-combobox-${e}`));u.current=i,t?.scrollIntoView&&r[i]?.scrollIntoView({block:`nearest`,behavior:o})},0)},[]),E=(0,V.useCallback)(()=>{u.current=-1,y()},[y]),D=(0,V.useCallback)(()=>{let e=St(f.current);(xt(`#${l.current} [data-combobox-option]`,e)?.[u.current])?.click()},[]),O=(0,V.useCallback)(e=>{l.current=e},[]),k=(0,V.useCallback)(()=>{p.current=window.setTimeout(()=>d.current?.focus(),0)},[]),A=(0,V.useCallback)(()=>{m.current=window.setTimeout(()=>f.current?.focus(),0)},[]),j=(0,V.useCallback)(()=>u.current,[]);return(0,V.useEffect)(()=>()=>{window.clearTimeout(p.current),window.clearTimeout(m.current),window.clearTimeout(h.current)},[]),{dropdownOpened:s,openDropdown:g,closeDropdown:_,toggleDropdown:v,selectedOptionIndex:u.current,getSelectedOptionIndex:j,selectOption:b,selectFirstOption:w,selectActiveOption:x,selectNextOption:S,selectPreviousOption:C,resetSelectedOption:E,updateSelectedOptionIndex:T,listId:l.current,setListId:O,clickSelectedOption:D,searchRef:d,focusSearchInput:k,targetRef:f,focusTarget:A}}var sn={keepMounted:!0,keepMountedMode:`display-none`,withinPortal:!0,resetSelectionOnOptionHover:!1,width:`target`,transitionProps:{transition:`fade`,duration:0},size:`sm`},cn=n((e,{size:t,dropdownPadding:n})=>({options:{"--combobox-option-fz":P(t),"--combobox-option-padding":j(t,`combobox-option-padding`)},dropdown:{"--combobox-padding":n===void 0?void 0:E(n),"--combobox-option-fz":P(t),"--combobox-option-padding":j(t,`combobox-option-padding`)}})),ln=t=>{let n=e(`Combobox`,sn,t),{classNames:r,styles:i,unstyled:o,children:s,store:c,vars:l,onOptionSubmit:u,onClose:d,size:f,dropdownPadding:p,resetSelectionOnOptionHover:m,__staticSelector:h,readOnly:g,attributes:_,floatingHeight:v,middlewares:y,...b}=n,x=v===`viewport`?{...y,flip:!1,size:{...typeof y?.size==`object`?y.size:{},padding:typeof y?.size==`object`&&y.size.padding!==void 0?y.size.padding:10,apply:({availableHeight:e,availableWidth:t,elements:n,...r})=>{n.floating.style.setProperty(`--combobox-floating-max-height`,`${e}px`);let i=y?.size;typeof i==`object`&&i.apply?i.apply({availableHeight:e,availableWidth:t,elements:n,...r}):i&&Object.assign(n.floating.style,{maxWidth:`${t}px`,maxHeight:`${e}px`})}}}:y,S=on(),C=c||S,w=a({name:h||`Combobox`,classes:Mt,props:n,classNames:r,styles:i,unstyled:o,attributes:_,vars:l,varsResolver:cn}),T=()=>{d?.(),C.closeDropdown()};return(0,H.jsx)(It,{value:{getStyles:w,store:C,onOptionSubmit:u,size:f,resetSelectionOnOptionHover:m,readOnly:g,floatingHeight:v},children:(0,H.jsx)(ue,{opened:C.dropdownOpened,...b,middlewares:x,onChange:e=>!e&&T(),withRoles:!1,unstyled:o,children:s})})};ln.extend=e=>e,ln.classes=Mt,ln.varsResolver=cn,ln.displayName=`@mantine/core/Combobox`,ln.Target=tn,ln.Dropdown=zt,ln.Options=Zt,ln.Option=Xt,ln.Search=$t,ln.Empty=Ht,ln.Chevron=Ft,ln.Footer=Kt,ln.Header=Jt,ln.EventsTarget=Gt,ln.DropdownTarget=Vt,ln.Group=qt,ln.ClearButton=Rt,ln.HiddenInput=Yt;function un({children:e,role:t}){let n=(0,V.use)(x);return n?(0,H.jsx)(`div`,{role:t,"aria-labelledby":n.labelId,"aria-describedby":n.describedBy,children:e}):(0,H.jsx)(H.Fragment,{children:e})}var dn={root:`m_5f75b09e`,body:`m_5f6e695e`,labelWrapper:`m_d3ea56bb`,label:`m_8ee546b8`,description:`m_328f68c0`,error:`m_8e8a99cc`},fn=dn;function pn({__staticSelector:e,__stylesApiProps:t,className:n,classNames:r,styles:i,unstyled:o,children:c,label:l,description:u,id:d,disabled:f,error:p,size:m,labelPosition:h=`left`,bodyElement:g=`div`,labelElement:_=`label`,variant:v,style:y,vars:b,mod:x,attributes:S,...C}){let w=a({name:e,props:t,className:n,style:y,classes:dn,classNames:r,styles:i,unstyled:o,attributes:S}),T=u?`${d}-description`:void 0,E=p&&typeof p!=`boolean`?`${d}-error`:void 0;return(0,H.jsx)(s,{...w(`root`),__vars:{"--label-fz":P(m),"--label-lh":j(m,`label-lh`)},mod:[{"label-position":h},x],variant:v,size:m,...C,children:(0,H.jsxs)(s,{component:g,htmlFor:g===`label`?d:void 0,...w(`body`),children:[c,(0,H.jsxs)(`div`,{...w(`labelWrapper`),"data-disabled":f||void 0,children:[l&&(0,H.jsx)(s,{component:_,htmlFor:_===`label`?d:void 0,...w(`label`),"data-disabled":f||void 0,children:l}),u&&(0,H.jsx)(D.Description,{id:T,size:m,__inheritStyles:!1,...w(`description`),children:u}),p&&typeof p!=`boolean`&&(0,H.jsx)(D.Error,{id:E,size:m,__inheritStyles:!1,...w(`error`),children:p})]})]})})}pn.displayName=`@mantine/core/InlineInput`;function mn(e){return`group`in e}function hn({options:e,search:t,limit:n}){let r=t.trim().toLowerCase(),i=[];for(let a=0;a0)return!1;return!0}function _n(e,t=new Set){if(Array.isArray(e))for(let n of e)if(mn(n))_n(n.items,t);else{if(n.value===void 0)throw Error(`[@mantine/core] Each option must have value property`);if(t.has(n.value))throw Error(`[@mantine/core] Duplicate options are not supported. Option with value "${n.value}" was provided more than once`);t.add(n.value)}}function vn(e,t){return Array.isArray(e)?e.includes(t):e===t}function yn({data:e,withCheckIcon:t,withAlignedLabels:n,value:r,checkIconPosition:i,unstyled:a,renderOption:o}){if(!mn(e)){let s=vn(r,e.value),c=t&&(s?(0,H.jsx)(we,{className:Mt.optionsDropdownCheckIcon}):n?(0,H.jsx)(`div`,{className:Mt.optionsDropdownCheckPlaceholder}):null),l=(0,H.jsxs)(H.Fragment,{children:[i===`left`&&c,(0,H.jsx)(`span`,{children:e.label}),i===`right`&&c]});return(0,H.jsx)(ln.Option,{value:e.value,disabled:e.disabled,className:ee({[Mt.optionsDropdownOption]:!a}),"data-reverse":i===`right`||void 0,"data-checked":s||void 0,"aria-selected":s,active:s,children:typeof o==`function`?o({option:e,checked:s}):l})}let s=e.items.map(e=>(0,H.jsx)(yn,{data:e,value:r,unstyled:a,withCheckIcon:t,withAlignedLabels:n,checkIconPosition:i,renderOption:o},`${e.value}`));return(0,H.jsx)(ln.Group,{label:e.group,children:s})}function bn({data:e,hidden:t,hiddenWhenEmpty:n,filter:r,search:i,limit:a,maxDropdownHeight:o,floatingHeight:s,withScrollArea:c=!0,filterOptions:l=!0,withCheckIcon:u=!1,withAlignedLabels:d=!1,value:f,checkIconPosition:p,nothingFoundMessage:m,unstyled:h,labelId:g,renderOption:_,scrollAreaProps:v,"aria-label":y}){let b=Lt();_n(e);let x=typeof i==`string`?(r||hn)({options:e,search:l?i:``,limit:a??1/0}):e,S=gn(x),C=x.map((e,t)=>(0,H.jsx)(yn,{data:e,withCheckIcon:u,withAlignedLabels:d,value:f,checkIconPosition:p,unstyled:h,renderOption:_},mn(e)?`group-${typeof e.group==`string`?e.group:t}`:`${e.value}`));return(0,H.jsx)(ln.Dropdown,{hidden:t||n&&S,"data-composed":!0,children:(0,H.jsxs)(ln.Options,{labelledBy:g,"aria-label":y,children:[c?(0,H.jsx)(Ve.Autosize,{mah:(s??b.floatingHeight)===`viewport`?`var(--combobox-floating-options-max-height)`:o??220,type:`scroll`,scrollbarSize:`var(--combobox-padding)`,offsetScrollbars:`y`,...v,children:C}):C,S&&m&&(0,H.jsx)(ln.Empty,{children:m})]})})}function xn(e,t,n,r){if(t===n||r===`before`&&n===t+1||r===`after`&&n===t-1)return e;let i=e.slice(),[a]=i.splice(t,1),o=t{let t=e.lastElementChild;return t?t instanceof HTMLInputElement?t:t.querySelector(`input`):null},Cn=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n{let e=i.current;e&&(i.current=null,Cn(o.current,e.expectedValue)&&e.container?.querySelector(`[data-mantine-pill-index="${e.index}"]`)?.focus())});let s=(0,V.useCallback)(e=>{a.current=e},[]);return{getPillProps:e=>{if(n)return{draggable:!0,tabIndex:-1,"data-mantine-pill-index":e,"aria-keyshortcuts":`Alt+ArrowLeft Alt+ArrowRight`,onMouseDown:e=>{e.button===0&&e.stopPropagation()},onDragStart:t=>{t.stopPropagation(),t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(`text/plain`,String(e)),r.current.draggedIndex=e;let n=t.currentTarget,i=n.getBoundingClientRect(),a=n.cloneNode(!0);a.removeAttribute(`data-dragging`),a.removeAttribute(`data-drag-over`),a.style.position=`fixed`,a.style.top=`-9999px`,a.style.left=`-9999px`,a.style.width=`${i.width}px`,a.style.height=`${i.height}px`,a.style.pointerEvents=`none`,document.body.appendChild(a),t.dataTransfer.setDragImage(a,t.clientX-i.left,t.clientY-i.top),setTimeout(()=>a.parentNode?.removeChild(a),0),requestAnimationFrame(()=>{n.setAttribute(`data-dragging`,`true`)})},onDragOver:t=>{let{draggedIndex:n}=r.current;if(n===null||n===e)return;let i=t.currentTarget,a=i.getBoundingClientRect(),o=t.clientX-a.left,s=(getComputedStyle(i).direction===`rtl`?o>a.width/2:o{let t=e.currentTarget,n=e.relatedTarget;n&&t.contains(n)||(t.removeAttribute(`data-drag-over`),r.current.currentDropTarget===t&&(r.current.currentDropTarget=null))},onDrop:n=>{n.preventDefault(),n.stopPropagation();let i=n.currentTarget,a=i.getAttribute(`data-drag-over`);i.removeAttribute(`data-drag-over`);let{draggedIndex:s}=r.current;if(s!==null&&a&&s!==e){let n=xn(o.current,s,e,a);n!==o.current&&t(n)}r.current.draggedIndex=null,r.current.currentDropTarget=null},onDragEnd:e=>{e.currentTarget.removeAttribute(`data-dragging`);let t=r.current.currentDropTarget;t&&t.removeAttribute(`data-drag-over`),r.current.draggedIndex=null,r.current.currentDropTarget=null},onKeyDown:n=>{if(n.key!==`ArrowLeft`&&n.key!==`ArrowRight`)return;let r=n.currentTarget,a=getComputedStyle(r).direction===`rtl`?n.key===`ArrowLeft`:n.key===`ArrowRight`,s=a?e+1:e-1;if(n.altKey){if(s<0||s>=o.current.length)return;n.preventDefault(),n.stopPropagation();let c=a?`after`:`before`,l=xn(o.current,e,s,c);if(l===o.current)return;i.current={container:r.parentElement,index:s,expectedValue:l},t(l);return}if(s<0)return;let c=r.parentElement;if(c){if(n.preventDefault(),n.stopPropagation(),s>=o.current.length){Sn(c)?.focus();return}c.querySelector(`[data-mantine-pill-index="${s}"]`)?.focus()}}}},getListProps:()=>n?{ref:s}:{},handleInputKeyDown:e=>{if(!n||e.key!==`ArrowLeft`)return;let t=e.currentTarget;if(!(t.value.length===0||t.selectionStart===0&&t.selectionEnd===0))return;let r=a.current;if(!r)return;let i=r.querySelectorAll(`[data-mantine-pill-index]`);i.length!==0&&(e.preventDefault(),i[i.length-1].focus())}}}function Tn(e){let t=e.currentTarget;return St(t).activeElement!==t}var En=(0,V.createContext)(null),Dn={root:`m_7cda1cd6`,"root--default":`m_44da308b`,"root--contrast":`m_e3a01f8`,label:`m_1e0e6180`,remove:`m_ae386778`,group:`m_1dcfd90b`},On=(0,V.createContext)(null),kn=n((e,{gap:t},{size:n})=>({group:{"--pg-gap":t===void 0?j(n,`pg-gap`):j(t)}})),An=R(t=>{let n=e(`PillGroup`,null,t),{classNames:r,className:i,style:o,styles:c,unstyled:l,vars:u,size:d,disabled:f,attributes:p,...m}=n,h=(0,V.use)(En)?.size||d||void 0,g=a({name:`PillGroup`,classes:Dn,props:n,className:i,style:o,classNames:r,styles:c,unstyled:l,attributes:p,vars:u,varsResolver:kn,stylesCtx:{size:h},rootSelector:`group`});return(0,H.jsx)(On,{value:{size:h,disabled:f},children:(0,H.jsx)(s,{size:h,...g(`group`),...m})})});An.classes=Dn,An.varsResolver=kn,An.displayName=`@mantine/core/PillGroup`;var jn={variant:`default`},Mn=n((e,{radius:t},{size:n})=>({root:{"--pill-fz":j(n,`pill-fz`),"--pill-height":j(n,`pill-height`),"--pill-radius":t===void 0?void 0:C(t)}})),Nn=R(t=>{let n=e(`Pill`,jn,t),{classNames:r,className:i,style:o,styles:c,unstyled:l,vars:u,variant:d,children:p,withRemoveButton:m,onRemove:h,removeButtonProps:g,radius:_,size:v,disabled:y,mod:b,attributes:x,...S}=n,C=(0,V.use)(On),w=(0,V.use)(En),T=v||C?.size||void 0,E=w?.variant===`filled`?`contrast`:d||`default`,D=a({name:`Pill`,classes:Dn,props:n,className:i,style:o,classNames:r,styles:c,unstyled:l,attributes:x,vars:u,varsResolver:Mn,stylesCtx:{size:T}});return(0,H.jsxs)(s,{component:`span`,variant:E,size:T,...D(`root`,{variant:E}),mod:[{"with-remove":m&&!y,disabled:y||C?.disabled},b],...S,children:[(0,H.jsx)(`span`,{...D(`label`),children:p}),m&&(0,H.jsx)(f,{variant:`transparent`,radius:_,tabIndex:-1,"aria-hidden":!0,unstyled:l,...g,...D(`remove`,{className:g?.className,style:g?.style}),onMouseDown:e=>{e.preventDefault(),e.stopPropagation(),g?.onMouseDown?.(e)},onClick:e=>{e.stopPropagation(),h?.(),g?.onClick?.(e)}})]})});Nn.classes=Dn,Nn.varsResolver=Mn,Nn.displayName=`@mantine/core/Pill`,Nn.Group=An;var Pn={field:`m_45c4369d`},Fn={type:`visible`},In=R(t=>{let n=e(`PillsInputField`,Fn,t),{classNames:r,className:i,style:o,styles:c,unstyled:l,vars:u,type:f,disabled:p,id:m,pointer:h,mod:g,attributes:_,ref:v,...y}=n,b=(0,V.use)(En),S=(0,V.use)(x),C=a({name:`PillsInputField`,classes:Pn,props:n,className:i,style:o,classNames:r,styles:c,unstyled:l,attributes:_,rootSelector:`field`}),w=p||b?.disabled;return(0,H.jsx)(s,{component:`input`,ref:d(v,b?.fieldRef),"data-type":f,disabled:w,mod:[{disabled:w,pointer:h},g],...C(`field`),...y,id:S?.inputId||m,"aria-invalid":b?.hasError,"aria-describedby":S?.describedBy,type:`text`,onMouseDown:e=>!h&&e.stopPropagation()})});In.classes=Pn,In.displayName=`@mantine/core/PillsInputField`;var Ln={size:`sm`},Rn=R(t=>{let{children:n,onMouseDown:r,onClick:i,size:a,disabled:o,__staticSelector:s,error:c,variant:l,...u}=e([`Input`,`InputWrapper`,`PillsInput`],Ln,t),d=(0,V.useRef)(null);return(0,H.jsx)(En,{value:{fieldRef:d,size:a,disabled:o,hasError:!!c,variant:l},children:(0,H.jsx)(M,{size:a,error:c,variant:l,component:`div`,"data-no-overflow":!0,onMouseDown:e=>{e.preventDefault(),r?.(e),d.current?.focus()},onClick:e=>{e.preventDefault(),e.currentTarget.closest(`fieldset`)?.disabled||(d.current?.focus(),i?.(e))},...u,multiline:!0,disabled:o,__staticSelector:s||`PillsInput`,withAria:!1,children:n})})});Rn.displayName=`@mantine/core/PillsInput`,Rn.classes=M.classes,Rn.Field=In;function zn(e,t){let n=t.trim().toLowerCase();if(n===``)return;let r=Object.values(e).filter(e=>!e.disabled&&e.label.trim().toLowerCase()===n);return r.length===1?r[0]:void 0}function Bn(e){return typeof e==`string`?e.trim().toLowerCase():e}function Vn({data:e,value:t}){let n=t.map(Bn);return e.reduce((e,t)=>(mn(t)?e.push({group:t.group,items:t.items.filter(e=>n.indexOf(Bn(e.value))===-1)}):n.indexOf(Bn(t.value))===-1&&e.push(t),e),[])}var Hn={xs:41,sm:50,md:60,lg:72,xl:89},Un={maxValues:1/0,withCheckIcon:!0,checkIconPosition:`left`,hiddenInputValuesDivider:`,`,clearSearchOnChange:!0,openOnFocus:!0,size:`sm`},Wn=c(n=>{let r=e([`Input`,`InputWrapper`,`MultiSelect`],Un,n),{classNames:i,className:s,style:c,styles:l,unstyled:u,vars:d,size:f,value:p,defaultValue:m,onChange:h,onKeyDown:g,variant:_,data:v,dropdownOpened:y,defaultDropdownOpened:b,onDropdownOpen:x,onDropdownClose:S,selectFirstOptionOnChange:C,selectFirstOptionOnDropdownOpen:T,onOptionSubmit:E,comboboxProps:D,filter:O,limit:k,withScrollArea:A,maxDropdownHeight:j,floatingHeight:M,searchValue:N,defaultSearchValue:ee,onSearchChange:te,readOnly:P,disabled:F,onFocus:I,onBlur:L,radius:R,rightSection:ne,rightSectionWidth:ie,rightSectionPointerEvents:ae,rightSectionProps:oe,leftSection:z,leftSectionWidth:B,leftSectionPointerEvents:se,leftSectionProps:ce,inputContainer:le,inputWrapperOrder:ue,withAsterisk:de,labelProps:fe,descriptionProps:pe,errorProps:me,successProps:he,wrapperProps:ge,description:_e,label:ve,error:ye,success:be,maxValues:xe,searchable:Se,nothingFoundMessage:Ce,withCheckIcon:we,withAlignedLabels:Te,checkIconPosition:Ee,hidePickedOptions:De,withErrorStyles:Oe,withSuccessStyles:ke,name:Ae,form:je,id:Me,clearable:Ne,clearSectionMode:Pe,clearButtonProps:Fe,hiddenInputProps:Ie,placeholder:Le,hiddenInputValuesDivider:Re,required:ze,mod:Be,renderOption:Ve,renderPill:He,onRemove:Ue,onClear:We,onMaxValues:Ge,scrollAreaProps:Ke,chevronColor:qe,attributes:Je,clearSearchOnChange:Ye,openOnFocus:Xe,loading:Ze,loadingPosition:Qe,withPillsReorder:$e,...et}=r,tt=o(Me),nt=At(v),rt=jt(nt),it=(0,V.useRef)({}),at=on({opened:y,defaultOpened:b,onDropdownOpen:()=>{x?.(),T&&at.selectFirstOption()},onDropdownClose:()=>{S?.(),at.resetSelectedOption()}}),{styleProps:ot,rest:{type:st,autoComplete:ct,...lt}}=t(et),[ut,dt]=re({value:p,defaultValue:m,finalValue:[],onChange:h}),{getPillProps:ft,getListProps:pt,handleInputKeyDown:mt}=wn({value:ut,onChange:dt,enabled:$e&&!F&&!P}),[ht,gt]=re({value:N,defaultValue:ee,finalValue:``,onChange:te}),_t=e=>{gt(e),at.resetSelectedOption()},vt=a({name:`MultiSelect`,classes:{},props:r,classNames:i,styles:l,unstyled:u,attributes:Je}),{resolvedClassNames:yt,resolvedStyles:bt}=w({props:r,styles:l,classNames:i}),xt=e=>{g?.(e),!e.defaultPrevented&&(e.key===` `&&!Se&&(e.preventDefault(),at.toggleDropdown()),e.key===`Backspace`&&ht.length===0&&ut.length>0&&(Ue?.(ut[ut.length-1]),dt(ut.slice(0,ut.length-1))),mt(e))},St=ut.map((e,t)=>{let n=rt[`${e}`]||it.current[`${e}`],r=ft(t);return He?(0,H.jsx)(V.Fragment,{children:He({option:n,value:e,onRemove:()=>{dt(ut.filter(t=>e!==t)),Ue?.(e)},disabled:F,reorderProps:r})},`${e}-${t}`):(0,H.jsx)(Nn,{withRemoveButton:!P&&!rt[`${e}`]?.disabled,onRemove:()=>{dt(ut.filter(t=>e!==t)),Ue?.(e)},unstyled:u,disabled:F,...vt(`pill`),...r,children:n?.label||e},`${e}-${t}`)});(0,V.useEffect)(()=>{C&&at.selectFirstOption()},[C,ht]),(0,V.useEffect)(()=>{ut.forEach(e=>{`${e}`in rt&&(it.current[`${e}`]=rt[`${e}`])})},[rt,ut]);let Ct=(0,H.jsx)(ln.ClearButton,{...Fe,onClear:()=>{We?.(),dt([]),_t(``)}}),wt=Vn({data:nt,value:ut}),Tt=Ne&&ut.length>0&&!F&&!P,Et=Tt?{paddingInlineEnd:Hn[f]??Hn.sm}:void 0;return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(ln,{store:at,classNames:yt,styles:bt,unstyled:u,size:f,readOnly:P,__staticSelector:`MultiSelect`,attributes:Je,floatingHeight:M,onOptionSubmit:e=>{E?.(e),Ye&&_t(``),at.updateSelectedOptionIndex(`selected`),ut.includes(rt[`${e}`].value)?(dt(ut.filter(t=>t!==rt[`${e}`].value)),Ue?.(rt[`${e}`].value)):ut.lengthSe?at.openDropdown():at.toggleDropdown(),"data-expanded":at.dropdownOpened||void 0,id:tt,required:ze,mod:Be,attributes:Je,children:(0,H.jsxs)(Nn.Group,{attributes:Je,disabled:F,unstyled:u,...vt(`pillsList`,{style:Et}),...pt(),children:[St,(0,H.jsx)(ln.EventsTarget,{autoComplete:ct,withExpandedAttribute:!0,children:(0,H.jsx)(Rn.Field,{...lt,id:tt,placeholder:Le,type:!Se&&!Le?`hidden`:`visible`,...vt(`inputField`),unstyled:u,onFocus:e=>{I?.(e),Xe&&Se&&at.openDropdown()},onBlur:e=>{L?.(e),at.closeDropdown(),_t(``)},onKeyDown:xt,value:ht,onChange:e=>{if(Tn(e)){if(!P){let t=zn(rt,e.currentTarget.value);t&&!ut.includes(t.value)&&ut.length({root:{"--sc-radius":t===void 0?void 0:C(t),"--sc-color":n?l(n,e):void 0,"--sc-shadow":n?void 0:`var(--mantine-shadow-xs)`,"--sc-transition-duration":r===void 0?void 0:`${r}ms`,"--sc-transition-timing-function":a,"--sc-padding":j(i,`sc-padding`),"--sc-font-size":P(i)}})),Jn=c(t=>{let n=e(`SegmentedControl`,Kn,t),{classNames:r,className:c,style:l,styles:u,unstyled:f,vars:p,data:m,value:h,defaultValue:g,onChange:_,size:v,name:y,disabled:b,readOnly:x,fullWidth:S,orientation:C,radius:w,color:T,transitionDuration:E,transitionTimingFunction:D,variant:O,autoContrast:A,withItemsBorders:j,mod:M,attributes:N,ref:ee,...te}=n,P=a({name:`SegmentedControl`,props:n,classes:Gn,className:c,style:l,classNames:r,styles:u,unstyled:f,attributes:N,vars:p,varsResolver:qn}),F=i(),I=m.map(e=>yt(e)?{label:`${e}`,value:e}:e),L=vt(),[R,ne]=(0,V.useState)(k()),[ie,ae]=(0,V.useState)(null),[oe,z]=(0,V.useState)({}),B=(e,t)=>{e!==null&&oe[t]!==e&&(oe[t]=e,z({...oe}))},[se,ce]=re({value:h,defaultValue:g,finalValue:Array.isArray(m)?I.find(e=>!e.disabled)?.value??m[0]?.value??null:null,onChange:_}),le=o(y),ue=I.map(e=>`${e.value}`),fe=I.map(e=>(0,V.createElement)(s,{...P(`control`),mod:{active:se===e.value,orientation:C},key:`${e.value}`},(0,V.createElement)(`input`,{...P(`input`),disabled:b||e.disabled,type:`radio`,name:le,value:`${e.value}`,id:`${le}-${e.value}`,checked:se===e.value,onChange:()=>!x&&ce(e.value),"data-focus-ring":F.focusRing,key:`${e.value}-input`}),(0,V.createElement)(s,{component:`label`,...P(`label`),mod:{active:se===e.value&&!(b||e.disabled),disabled:b||e.disabled,"read-only":x},htmlFor:`${le}-${e.value}`,ref:t=>B(t,`${e.value}`),__vars:{"--sc-label-color":T===void 0?void 0:de({color:T,theme:F,autoContrast:A})},key:`${e.value}-label`},(0,H.jsx)(`span`,{...P(`innerLabel`),children:e.label})))),pe=d(ee,ae);return mt(()=>{ne(k())},[m.length]),mt(()=>{z(e=>{let t={};return ue.forEach(n=>{n in e&&(t[n]=e[n])}),Object.keys(t).length===Object.keys(e).length?e:t})},[ue]),m.length===0?null:(0,H.jsxs)(s,{...P(`root`),variant:O,size:v,ref:pe,mod:[{"full-width":S,orientation:C,initialized:L,"with-items-borders":j},M],...te,role:`radiogroup`,"data-disabled":b,children:[se!==void 0&&(0,H.jsx)(Ot,{target:oe[`${se}`],parent:ie,component:`span`,transitionDuration:`var(--sc-transition-duration)`,...P(`indicator`)},R),fe]})});Jn.classes=Gn,Jn.varsResolver=qn,Jn.displayName=`@mantine/core/SegmentedControl`;var Yn={size:`sm`,withCheckIcon:!0,allowDeselect:!0,checkIconPosition:`left`,openOnFocus:!0},Xn=c(t=>{let n=e([`Input`,`InputWrapper`,`Select`],Yn,t),{classNames:r,styles:i,unstyled:a,vars:s,dropdownOpened:c,defaultDropdownOpened:l,onDropdownClose:u,onDropdownOpen:d,onFocus:f,onBlur:p,onClick:m,onChange:h,data:g,value:_,defaultValue:v,selectFirstOptionOnChange:y,selectFirstOptionOnDropdownOpen:b,onOptionSubmit:x,comboboxProps:S,readOnly:C,disabled:T,filter:E,limit:D,withScrollArea:O,maxDropdownHeight:k,floatingHeight:A,size:j,searchable:N,rightSection:ee,checkIconPosition:te,withCheckIcon:P,withAlignedLabels:F,nothingFoundMessage:I,name:L,form:R,searchValue:ne,defaultSearchValue:ie,onSearchChange:ae,allowDeselect:oe,error:z,rightSectionPointerEvents:B,id:se,clearable:ce,clearSectionMode:le,clearButtonProps:ue,hiddenInputProps:de,renderOption:fe,onClear:pe,autoComplete:me,scrollAreaProps:he,__defaultRightSection:ge,__clearSection:_e,__clearable:ve,chevronColor:ye,autoSelectOnBlur:be,openOnFocus:xe,attributes:Se,...Ce}=n,we=(0,V.useMemo)(()=>At(g),[g]),Te=(0,V.useRef)({}),Ee=(0,V.useMemo)(()=>jt(we),[we]),De=o(se),[Oe,ke,Ae]=re({value:_,defaultValue:v,finalValue:null,onChange:h}),je=Oe==null?void 0:`${Oe}`in Ee?Ee[`${Oe}`]:Te.current[`${Oe}`],Me=gt(je),[Ne,Pe,Fe]=re({value:ne,defaultValue:ie,finalValue:je?je.label:``,onChange:ae}),Ie=on({opened:c,defaultOpened:l,onDropdownOpen:()=>{d?.(),b?Ie.selectFirstOption():Ie.updateSelectedOptionIndex(`active`,{scrollIntoView:!0})},onDropdownClose:()=>{u?.(),setTimeout(Ie.resetSelectedOption,0)}}),Le=e=>{Pe(e),Ie.resetSelectedOption()},{resolvedClassNames:Re,resolvedStyles:ze}=w({props:n,styles:i,classNames:r});(0,V.useEffect)(()=>{y&&Ie.selectFirstOption()},[y,Ne]),(0,V.useEffect)(()=>{_===null&&Le(``),_!=null&&je&&(Me?.value!==je.value||Me?.label!==je.label)&&Le(je.label)},[_,je]),(0,V.useEffect)(()=>{!Ae&&!Fe&&Le(Oe==null?``:`${Oe}`in Ee?Ee[`${Oe}`]?.label:Te.current[`${Oe}`]?.label||``)},[Ee,Oe]),(0,V.useEffect)(()=>{Oe&&`${Oe}`in Ee&&(Te.current[`${Oe}`]=Ee[`${Oe}`])},[Ee,Oe]);let Be=(0,H.jsx)(ln.ClearButton,{...ue,onClear:()=>{ke(null,null),Le(``),pe?.()}}),Ve=ce&&Oe!=null&&!T&&!C;return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(ln,{store:Ie,__staticSelector:`Select`,classNames:Re,styles:ze,unstyled:a,readOnly:C,size:j,attributes:Se,floatingHeight:A,keepMounted:be,onOptionSubmit:e=>{x?.(e);let t=oe&&`${Ee[e].value}`==`${Oe}`?null:Ee[e],n=t?t.value:null;n!==Oe&&ke(n,t),!Ae&&Le(n==null?``:t?.label||``),Ie.closeDropdown()},...S,children:[(0,H.jsx)(ln.Target,{targetType:N?`input`:`button`,autoComplete:me,withExpandedAttribute:!0,children:(0,H.jsx)(M,{id:De,__defaultRightSection:(0,H.jsx)(ln.Chevron,{size:j,error:z,unstyled:a,color:ye}),__clearSection:Be,__clearable:Ve,__clearSectionMode:le,rightSection:ee,rightSectionPointerEvents:B||`none`,...Ce,size:j,__staticSelector:`Select`,disabled:T,readOnly:C||!N,value:Ne,onChange:e=>{if(Tn(e)){if(!C){let t=zn(Ee,e.currentTarget.value);t&&`${t.value}`!=`${Oe}`&&(ke(t.value,t),!Ae&&Le(t.label))}return}Le(e.currentTarget.value),Ie.openDropdown(),y&&Ie.selectFirstOption()},onFocus:e=>{xe&&N&&Ie.openDropdown(),f?.(e)},onBlur:e=>{be&&Ie.clickSelectedOption(),Ie.closeDropdown();let t=Oe!=null&&(`${Oe}`in Ee?Ee[`${Oe}`]:Te.current[`${Oe}`]);Le(t&&t.label||``),p?.(e)},onClick:e=>{N?Ie.openDropdown():Ie.toggleDropdown(),m?.(e)},classNames:Re,styles:ze,unstyled:a,pointer:!N,error:z,attributes:Se})}),(0,H.jsx)(bn,{data:we,hidden:C||T,filter:E,search:Ne,limit:D,hiddenWhenEmpty:!I,withScrollArea:O,maxDropdownHeight:k,filterOptions:!!N&&je?.label!==Ne,value:Oe,checkIconPosition:te,withCheckIcon:P,withAlignedLabels:F,nothingFoundMessage:I,unstyled:a,labelId:Ce.label?`${De}-label`:void 0,"aria-label":Ce.label?void 0:Ce[`aria-label`],renderOption:fe,scrollAreaProps:he})]}),(0,H.jsx)(ln.HiddenInput,{value:Oe,name:L,form:R,disabled:T,...de})]})});Xn.classes={...M.classes,...ln.classes},Xn.displayName=`@mantine/core/Select`;var Zn=(0,V.createContext)(null),Qn={hiddenInputValuesSeparator:`,`},$n=c((t=>{let{value:n,defaultValue:r,onChange:i,size:a,wrapperProps:o,children:s,readOnly:c,name:l,hiddenInputValuesSeparator:u,hiddenInputProps:d,maxSelectedValues:f,disabled:p,...m}=e(`SwitchGroup`,Qn,t),[h,g]=re({value:n,defaultValue:r,finalValue:[],onChange:i}),_=e=>{let t=e.currentTarget.value;if(c)return;let n=h.includes(t);!n&&f&&h.length>=f||g(n?h.filter(e=>e!==t):[...h,t])},v=e=>{if(p)return!0;if(!f)return!1;let t=h.includes(e),n=h.length>=f;return!t&&n},y=h.join(u);return(0,H.jsx)(Zn,{value:{value:h,onChange:_,size:a,isDisabled:v},children:(0,H.jsxs)(D.Wrapper,{size:a,...o,...m,labelElement:`div`,__staticSelector:`SwitchGroup`,children:[(0,H.jsx)(un,{role:`group`,children:s}),(0,H.jsx)(`input`,{type:`hidden`,name:l,value:y,...d})]})})}));$n.classes=D.Wrapper.classes,$n.displayName=`@mantine/core/SwitchGroup`;var er={root:`m_5f93f3bb`,input:`m_926b4011`,track:`m_9307d992`,thumb:`m_93039a1d`,trackLabel:`m_8277e082`},tr={labelPosition:`right`,withThumbIndicator:!0},nr=n((e,{radius:t,color:n,size:r})=>({root:{"--switch-radius":t===void 0?void 0:C(t),"--switch-height":j(r,`switch-height`),"--switch-width":j(r,`switch-width`),"--switch-thumb-size":j(r,`switch-thumb-size`),"--switch-label-font-size":j(r,`switch-label-font-size`),"--switch-track-label-padding":j(r,`switch-track-label-padding`),"--switch-color":n?l(n,e):void 0}})),rr=R(n=>{let r=e(`Switch`,tr,n),{classNames:i,className:c,style:l,styles:u,unstyled:d,vars:f,color:p,label:m,offLabel:h,onLabel:g,id:_,size:v,radius:y,wrapperProps:b,thumbIcon:x,checked:S,defaultChecked:C,onChange:w,labelPosition:T,description:E,error:D,disabled:O,variant:k,rootRef:A,mod:j,withThumbIndicator:M,attributes:N,...ee}=r,te=(0,V.use)(Zn),P=v||te?.size,F=a({name:`Switch`,props:r,classes:er,className:c,style:l,classNames:i,styles:u,unstyled:d,attributes:N,vars:f,varsResolver:nr}),{styleProps:I,rest:L}=t(ee),R=o(_),ne=[E?`${R}-description`:void 0,D&&typeof D!=`boolean`?`${R}-error`:void 0,L[`aria-describedby`]].filter(Boolean).join(` `)||void 0,ie={checked:te?.value.includes(L.value)??S,onChange:e=>{te?.onChange(e),w?.(e)}},ae=O||te?.isDisabled?.(L.value),[oe,z]=re({value:ie.checked??S,defaultValue:C,finalValue:!1});return(0,H.jsxs)(pn,{...F(`root`),__staticSelector:`Switch`,__stylesApiProps:r,id:R,size:P,labelPosition:T,label:m,description:E,error:D,disabled:ae,bodyElement:`label`,labelElement:`span`,classNames:i,styles:u,unstyled:d,"data-checked":ie.checked,variant:k,ref:A,mod:j,attributes:N,inert:L.inert,...I,...b,children:[(0,H.jsx)(`input`,{...L,...ie,disabled:ae,checked:oe,"data-checked":ie.checked,onChange:e=>{ie.onChange?.(e),z(e.currentTarget.checked)},id:R,type:`checkbox`,role:`switch`,inert:L.inert,"aria-describedby":ne,...F(`input`)}),(0,H.jsxs)(s,{"aria-hidden":`true`,component:`span`,mod:{error:D,"label-position":T,"without-labels":!g&&!h},...F(`track`),children:[(0,H.jsx)(s,{component:`span`,mod:{"reduce-motion":!0,"with-thumb-indicator":M&&!x},...F(`thumb`),children:x}),(0,H.jsx)(`span`,{...F(`trackLabel`),children:oe?g:h})]})]})});rr.classes={...er,...fn},rr.varsResolver=nr,rr.displayName=`@mantine/core/Switch`,rr.Group=$n;var[ir,ar]=Re(`Tabs component was not found in the tree`),or={root:`m_89d60db1`,"list--default":`m_576c9d4`,list:`m_89d33d6d`,tab:`m_4ec4dce6`,panel:`m_b0c91715`,tabSection:`m_fc420b1f`,tabLabel:`m_42bbd1ae`,"tab--default":`m_539e827b`,"list--outline":`m_6772fbd5`,"tab--outline":`m_b59ab47c`,"tab--pills":`m_c3381914`},sr=R(t=>{let n=e(`TabsList`,null,t),{children:r,className:i,grow:a,justify:o,classNames:c,styles:l,style:u,mod:d,...f}=n,p=ar();return(0,H.jsx)(s,{...p.getStyles(`list`,{className:i,style:u,classNames:c,styles:l,props:n,variant:p.variant}),role:`tablist`,variant:p.variant,mod:[{grow:a,orientation:p.orientation,placement:p.orientation===`vertical`&&p.placement,inverted:p.inverted},d],"aria-orientation":p.orientation,__vars:{"--tabs-justify":o},...f,children:r})});sr.classes=or,sr.displayName=`@mantine/core/TabsList`;var cr=R(t=>{let n=e(`TabsPanel`,null,t),{children:i,className:a,value:o,classNames:c,styles:l,style:u,mod:d,keepMounted:f,...p}=n,m=r(),h=ar();(0,V.useEffect)(()=>(h.setMountedPanel(o,!0),()=>{h.setMountedPanel(o,!1)}),[o]);let g=h.value===o,_=h.keepMounted||f,v=h.keepMountedMode!==`display-none`,y=_&&v&&m!==`test`?(0,H.jsx)(V.Activity,{mode:g?`visible`:`hidden`,children:i}):_||g?i:null;return(0,H.jsx)(s,{...h.getStyles(`panel`,{className:a,classNames:c,styles:l,style:[u,g?void 0:{display:`none`}],props:n}),mod:[{orientation:h.orientation},d],role:`tabpanel`,id:h.getPanelId(o),"aria-labelledby":h.getTabId(o),...p,children:y})});cr.classes=or,cr.displayName=`@mantine/core/TabsPanel`;var lr=R(t=>{let n=e(`TabsTab`,null,t),{className:r,children:a,rightSection:o,leftSection:s,value:c,onClick:u,onKeyDown:d,disabled:f,color:p,style:m,classNames:h,styles:g,vars:_,mod:v,tabIndex:y,...b}=n,x=i(),{dir:S}=We(),C=ar(),w=c===C.value,T=e=>{C.onChange(C.allowTabDeactivation&&c===C.value?null:c),u?.(e)},E={classNames:h,styles:g,props:n};return(0,H.jsxs)(ne,{...C.getStyles(`tab`,{className:r,style:m,variant:C.variant,...E}),disabled:f,unstyled:C.unstyled,variant:C.variant,mod:[{active:w,disabled:f,orientation:C.orientation,inverted:C.inverted,placement:C.orientation===`vertical`&&C.placement},v],role:`tab`,id:C.getTabId(c),"aria-selected":w,tabIndex:y===void 0?w||C.value===null?0:-1:y,"aria-controls":C.mountedPanels.current.has(c)?C.getPanelId(c):void 0,onClick:T,__vars:{"--tabs-color":p?l(p,x):void 0},onKeyDown:le({siblingSelector:`[role="tab"]`,parentSelector:`[role="tablist"]`,activateOnFocus:C.activateTabWithKeyboard,loop:C.loop,orientation:C.orientation||`horizontal`,dir:S,onKeyDown:d}),...b,children:[s&&(0,H.jsx)(`span`,{...C.getStyles(`tabSection`,E),"data-position":`left`,children:s}),a&&(0,H.jsx)(`span`,{...C.getStyles(`tabLabel`,E),children:a}),o&&(0,H.jsx)(`span`,{...C.getStyles(`tabSection`,E),"data-position":`right`,children:o})]})});lr.classes=or,lr.displayName=`@mantine/core/TabsTab`;var ur=`Tabs.Tab or Tabs.Panel component was rendered with invalid value or without value`,dr={keepMounted:!0,keepMountedMode:`activity`,orientation:`horizontal`,loop:!0,activateTabWithKeyboard:!0,variant:`default`,placement:`left`},fr=n((e,{radius:t,color:n,autoContrast:r})=>({root:{"--tabs-radius":C(t),"--tabs-color":l(n,e),"--tabs-text-color":Ct(r,e)?de({color:n,theme:e,autoContrast:r}):void 0}})),pr=R(t=>{let n=e(`Tabs`,dr,t),{defaultValue:r,value:i,onChange:c,orientation:l,children:u,loop:d,id:f,activateTabWithKeyboard:p,allowTabDeactivation:m,variant:h,color:g,radius:_,inverted:v,placement:y,keepMounted:b,keepMountedMode:x,classNames:S,styles:C,unstyled:w,className:T,style:E,vars:D,autoContrast:O,mod:k,attributes:A,...j}=n,M=o(f),N=(0,V.useRef)(new Set),ee=dt(),te=(0,V.useCallback)((e,t)=>{let n=N.current;t&&!n.has(e)?(n.add(e),ee()):!t&&n.has(e)&&(n.delete(e),ee())},[]),[P,F]=re({value:i,defaultValue:r,finalValue:null,onChange:c}),I=a({name:`Tabs`,props:n,classes:or,className:T,style:E,classNames:S,styles:C,unstyled:w,attributes:A,vars:D,varsResolver:fr});return(0,H.jsx)(ir,{value:{placement:y,value:P,orientation:l,id:M,loop:d,activateTabWithKeyboard:p,getTabId:ct(`${M}-tab`,ur),getPanelId:ct(`${M}-panel`,ur),onChange:F,allowTabDeactivation:m,variant:h,color:g,radius:_,inverted:v,keepMounted:b,keepMountedMode:x,unstyled:w,getStyles:I,mountedPanels:N,setMountedPanel:te},children:(0,H.jsx)(s,{id:M,variant:h,mod:[{orientation:l,inverted:l===`horizontal`&&v,placement:l===`vertical`&&y},k],...I(`root`),...j,children:u})})});pr.classes=or,pr.varsResolver=fr,pr.displayName=`@mantine/core/Tabs`,pr.Tab=lr,pr.Panel=cr,pr.List=sr;var mr=new Map([[`bold`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M244,56v48a12,12,0,0,1-12,12H184a12,12,0,1,1,0-24H201.1l-19-17.38c-.13-.12-.26-.24-.38-.37A76,76,0,1,0,127,204h1a75.53,75.53,0,0,0,52.15-20.72,12,12,0,0,1,16.49,17.45A99.45,99.45,0,0,1,128,228h-1.37A100,100,0,1,1,198.51,57.06L220,76.72V56a12,12,0,0,1,24,0Z`}))],[`duotone`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M216,128a88,88,0,1,1-88-88A88,88,0,0,1,216,128Z`,opacity:`0.2`}),V.createElement(`path`,{d:`M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1,0-16H211.4L184.81,71.64l-.25-.24a80,80,0,1,0-1.67,114.78,8,8,0,0,1,11,11.63A95.44,95.44,0,0,1,128,224h-1.32A96,96,0,1,1,195.75,60L224,85.8V56a8,8,0,1,1,16,0Z`}))],[`fill`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1-5.66-13.66l17-17-10.55-9.65-.25-.24a80,80,0,1,0-1.67,114.78,8,8,0,1,1,11,11.63A95.44,95.44,0,0,1,128,224h-1.32A96,96,0,1,1,195.75,60l10.93,10L226.34,50.3A8,8,0,0,1,240,56Z`}))],[`light`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M238,56v48a6,6,0,0,1-6,6H184a6,6,0,0,1,0-12h32.55l-30.38-27.8c-.06-.06-.12-.13-.19-.19a82,82,0,1,0-1.7,117.65,6,6,0,0,1,8.24,8.73A93.46,93.46,0,0,1,128,222h-1.28A94,94,0,1,1,194.37,61.4L226,90.35V56a6,6,0,1,1,12,0Z`}))],[`regular`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1,0-16H211.4L184.81,71.64l-.25-.24a80,80,0,1,0-1.67,114.78,8,8,0,0,1,11,11.63A95.44,95.44,0,0,1,128,224h-1.32A96,96,0,1,1,195.75,60L224,85.8V56a8,8,0,1,1,16,0Z`}))],[`thin`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M236,56v48a4,4,0,0,1-4,4H184a4,4,0,0,1,0-8h37.7L187.53,68.69l-.13-.12a84,84,0,1,0-1.75,120.51,4,4,0,0,1,5.5,5.82A91.43,91.43,0,0,1,128,220h-1.26A92,92,0,1,1,193,62.84l35,32.05V56a4,4,0,1,1,8,0Z`}))]]),hr=new Map([[`bold`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M220,48V96a12,12,0,0,1-24,0V77l-35.51,35.52a12,12,0,0,1-17-17L179,60H160a12,12,0,0,1,0-24h48A12,12,0,0,1,220,48ZM95.51,143.51,60,179V160a12,12,0,0,0-24,0v48a12,12,0,0,0,12,12H96a12,12,0,0,0,0-24H77l35.52-35.51a12,12,0,0,0-17-17ZM208,148a12,12,0,0,0-12,12v19l-35.51-35.52a12,12,0,0,0-17,17L179,196H160a12,12,0,0,0,0,24h48a12,12,0,0,0,12-12V160A12,12,0,0,0,208,148ZM77,60H96a12,12,0,0,0,0-24H48A12,12,0,0,0,36,48V96a12,12,0,0,0,24,0V77l35.51,35.52a12,12,0,0,0,17-17Z`}))],[`duotone`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M208,48V208H48V48Z`,opacity:`0.2`}),V.createElement(`path`,{d:`M216,48V96a8,8,0,0,1-16,0V67.31l-42.34,42.35a8,8,0,0,1-11.32-11.32L188.69,56H160a8,8,0,0,1,0-16h48A8,8,0,0,1,216,48ZM98.34,146.34,56,188.69V160a8,8,0,0,0-16,0v48a8,8,0,0,0,8,8H96a8,8,0,0,0,0-16H67.31l42.35-42.34a8,8,0,0,0-11.32-11.32ZM208,152a8,8,0,0,0-8,8v28.69l-42.34-42.35a8,8,0,0,0-11.32,11.32L188.69,200H160a8,8,0,0,0,0,16h48a8,8,0,0,0,8-8V160A8,8,0,0,0,208,152ZM67.31,56H96a8,8,0,0,0,0-16H48a8,8,0,0,0-8,8V96a8,8,0,0,0,16,0V67.31l42.34,42.35a8,8,0,0,0,11.32-11.32Z`}))],[`fill`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M109.66,146.34a8,8,0,0,1,0,11.32L83.31,184l18.35,18.34A8,8,0,0,1,96,216H48a8,8,0,0,1-8-8V160a8,8,0,0,1,13.66-5.66L72,172.69l26.34-26.35A8,8,0,0,1,109.66,146.34ZM83.31,72l18.35-18.34A8,8,0,0,0,96,40H48a8,8,0,0,0-8,8V96a8,8,0,0,0,13.66,5.66L72,83.31l26.34,26.35a8,8,0,0,0,11.32-11.32ZM208,40H160a8,8,0,0,0-5.66,13.66L172.69,72,146.34,98.34a8,8,0,0,0,11.32,11.32L184,83.31l18.34,18.35A8,8,0,0,0,216,96V48A8,8,0,0,0,208,40Zm3.06,112.61a8,8,0,0,0-8.72,1.73L184,172.69l-26.34-26.35a8,8,0,0,0-11.32,11.32L172.69,184l-18.35,18.34A8,8,0,0,0,160,216h48a8,8,0,0,0,8-8V160A8,8,0,0,0,211.06,152.61Z`}))],[`light`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M214,48V96a6,6,0,0,1-12,0V62.48l-45.76,45.76a6,6,0,0,1-8.48-8.48L193.52,54H160a6,6,0,0,1,0-12h48A6,6,0,0,1,214,48ZM99.76,147.76,54,193.52V160a6,6,0,0,0-12,0v48a6,6,0,0,0,6,6H96a6,6,0,0,0,0-12H62.48l45.76-45.76a6,6,0,0,0-8.48-8.48ZM208,154a6,6,0,0,0-6,6v33.52l-45.76-45.76a6,6,0,0,0-8.48,8.48L193.52,202H160a6,6,0,0,0,0,12h48a6,6,0,0,0,6-6V160A6,6,0,0,0,208,154ZM62.48,54H96a6,6,0,0,0,0-12H48a6,6,0,0,0-6,6V96a6,6,0,0,0,12,0V62.48l45.76,45.76a6,6,0,0,0,8.48-8.48Z`}))],[`regular`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M216,48V96a8,8,0,0,1-16,0V67.31l-42.34,42.35a8,8,0,0,1-11.32-11.32L188.69,56H160a8,8,0,0,1,0-16h48A8,8,0,0,1,216,48ZM98.34,146.34,56,188.69V160a8,8,0,0,0-16,0v48a8,8,0,0,0,8,8H96a8,8,0,0,0,0-16H67.31l42.35-42.34a8,8,0,0,0-11.32-11.32ZM208,152a8,8,0,0,0-8,8v28.69l-42.34-42.35a8,8,0,0,0-11.32,11.32L188.69,200H160a8,8,0,0,0,0,16h48a8,8,0,0,0,8-8V160A8,8,0,0,0,208,152ZM67.31,56H96a8,8,0,0,0,0-16H48a8,8,0,0,0-8,8V96a8,8,0,0,0,16,0V67.31l42.34,42.35a8,8,0,0,0,11.32-11.32Z`}))],[`thin`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M212,48V96a4,4,0,0,1-8,0V57.66l-49.17,49.17a4,4,0,0,1-5.66-5.66L198.34,52H160a4,4,0,0,1,0-8h48A4,4,0,0,1,212,48ZM101.17,149.17,52,198.34V160a4,4,0,0,0-8,0v48a4,4,0,0,0,4,4H96a4,4,0,0,0,0-8H57.66l49.17-49.17a4,4,0,0,0-5.66-5.66ZM208,156a4,4,0,0,0-4,4v38.34l-49.17-49.17a4,4,0,0,0-5.66,5.66L198.34,204H160a4,4,0,0,0,0,8h48a4,4,0,0,0,4-4V160A4,4,0,0,0,208,156ZM57.66,52H96a4,4,0,0,0,0-8H48a4,4,0,0,0-4,4V96a4,4,0,0,0,8,0V57.66l49.17,49.17a4,4,0,0,0,5.66-5.66Z`}))]]),gr=new Map([[`bold`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M216.49,104.49l-80,80a12,12,0,0,1-17,0l-80-80a12,12,0,0,1,17-17L128,159l71.51-71.52a12,12,0,0,1,17,17Z`}))],[`duotone`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M208,96l-80,80L48,96Z`,opacity:`0.2`}),V.createElement(`path`,{d:`M215.39,92.94A8,8,0,0,0,208,88H48a8,8,0,0,0-5.66,13.66l80,80a8,8,0,0,0,11.32,0l80-80A8,8,0,0,0,215.39,92.94ZM128,164.69,67.31,104H188.69Z`}))],[`fill`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,48,88H208a8,8,0,0,1,5.66,13.66Z`}))],[`light`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M212.24,100.24l-80,80a6,6,0,0,1-8.48,0l-80-80a6,6,0,0,1,8.48-8.48L128,167.51l75.76-75.75a6,6,0,0,1,8.48,8.48Z`}))],[`regular`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z`}))],[`thin`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M210.83,98.83l-80,80a4,4,0,0,1-5.66,0l-80-80a4,4,0,0,1,5.66-5.66L128,170.34l77.17-77.17a4,4,0,1,1,5.66,5.66Z`}))]]),_r=new Map([[`bold`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M216.49,168.49a12,12,0,0,1-17,0L128,97,56.49,168.49a12,12,0,0,1-17-17l80-80a12,12,0,0,1,17,0l80,80A12,12,0,0,1,216.49,168.49Z`}))],[`duotone`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M208,160H48l80-80Z`,opacity:`0.2`}),V.createElement(`path`,{d:`M213.66,154.34l-80-80a8,8,0,0,0-11.32,0l-80,80A8,8,0,0,0,48,168H208a8,8,0,0,0,5.66-13.66ZM67.31,152,128,91.31,188.69,152Z`}))],[`fill`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M215.39,163.06A8,8,0,0,1,208,168H48a8,8,0,0,1-5.66-13.66l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,215.39,163.06Z`}))],[`light`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M212.24,164.24a6,6,0,0,1-8.48,0L128,88.49,52.24,164.24a6,6,0,0,1-8.48-8.48l80-80a6,6,0,0,1,8.48,0l80,80A6,6,0,0,1,212.24,164.24Z`}))],[`regular`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M213.66,165.66a8,8,0,0,1-11.32,0L128,91.31,53.66,165.66a8,8,0,0,1-11.32-11.32l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,213.66,165.66Z`}))],[`thin`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M210.83,162.83a4,4,0,0,1-5.66,0L128,85.66,50.83,162.83a4,4,0,0,1-5.66-5.66l80-80a4,4,0,0,1,5.66,0l80,80A4,4,0,0,1,210.83,162.83Z`}))]]),vr=new Map([[`bold`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M172,108a12,12,0,0,1-12,12H96a12,12,0,0,1,0-24h64A12,12,0,0,1,172,108Zm-12,28H96a12,12,0,0,0,0,24h64a12,12,0,0,0,0-24Zm76-8A108,108,0,0,1,78.77,224.15L46.34,235A20,20,0,0,1,21,209.66l10.81-32.43A108,108,0,1,1,236,128Zm-24,0A84,84,0,1,0,55.27,170.06a12,12,0,0,1,1,9.81l-9.93,29.79,29.79-9.93a12.1,12.1,0,0,1,3.8-.62,12,12,0,0,1,6,1.62A84,84,0,0,0,212,128Z`}))],[`duotone`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M224,128A96,96,0,0,1,79.93,211.11h0L42.54,223.58a8,8,0,0,1-10.12-10.12l12.47-37.39h0A96,96,0,1,1,224,128Z`,opacity:`0.2`}),V.createElement(`path`,{d:`M128,24A104,104,0,0,0,36.18,176.88L24.83,210.93a16,16,0,0,0,20.24,20.24l34.05-11.35A104,104,0,1,0,128,24Zm0,192a87.87,87.87,0,0,1-44.06-11.81,8,8,0,0,0-4-1.08,7.85,7.85,0,0,0-2.53.42L40,216,52.47,178.6a8,8,0,0,0-.66-6.54A88,88,0,1,1,128,216Zm40-104a8,8,0,0,1-8,8H96a8,8,0,0,1,0-16h64A8,8,0,0,1,168,112Zm0,32a8,8,0,0,1-8,8H96a8,8,0,0,1,0-16h64A8,8,0,0,1,168,144Z`}))],[`fill`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M128,24A104,104,0,0,0,36.18,176.88L24.83,210.93a16,16,0,0,0,20.24,20.24l34.05-11.35A104,104,0,1,0,128,24Zm32,128H96a8,8,0,0,1,0-16h64a8,8,0,0,1,0,16Zm0-32H96a8,8,0,0,1,0-16h64a8,8,0,0,1,0,16Z`}))],[`light`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M166,112a6,6,0,0,1-6,6H96a6,6,0,0,1,0-12h64A6,6,0,0,1,166,112Zm-6,26H96a6,6,0,0,0,0,12h64a6,6,0,0,0,0-12Zm70-10A102,102,0,0,1,79.31,217.65L44.44,229.27a14,14,0,0,1-17.71-17.71l11.62-34.87A102,102,0,1,1,230,128Zm-12,0A90,90,0,1,0,50.08,173.06a6,6,0,0,1,.5,4.91L38.12,215.35a2,2,0,0,0,2.53,2.53L78,205.42a6.2,6.2,0,0,1,1.9-.31,6.09,6.09,0,0,1,3,.81A90,90,0,0,0,218,128Z`}))],[`regular`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M168,112a8,8,0,0,1-8,8H96a8,8,0,0,1,0-16h64A8,8,0,0,1,168,112Zm-8,24H96a8,8,0,0,0,0,16h64a8,8,0,0,0,0-16Zm72-8A104,104,0,0,1,79.12,219.82L45.07,231.17a16,16,0,0,1-20.24-20.24l11.35-34.05A104,104,0,1,1,232,128Zm-16,0A88,88,0,1,0,51.81,172.06a8,8,0,0,1,.66,6.54L40,216,77.4,203.53a7.85,7.85,0,0,1,2.53-.42,8,8,0,0,1,4,1.08A88,88,0,0,0,216,128Z`}))],[`thin`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M164,112a4,4,0,0,1-4,4H96a4,4,0,0,1,0-8h64A4,4,0,0,1,164,112Zm-4,28H96a4,4,0,0,0,0,8h64a4,4,0,0,0,0-8Zm68-12A100,100,0,0,1,79.5,215.47l-35.69,11.9a12,12,0,0,1-15.18-15.18l11.9-35.69A100,100,0,1,1,228,128Zm-8,0A92,92,0,1,0,48.35,174.07a4,4,0,0,1,.33,3.27L36.22,214.72a4,4,0,0,0,5.06,5.06l37.38-12.46a3.93,3.93,0,0,1,1.27-.21,4.05,4.05,0,0,1,2,.54A92,92,0,0,0,220,128Z`}))]]),yr=new Map([[`bold`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Zm68-84a12,12,0,0,1-12,12H128a12,12,0,0,1-12-12V72a12,12,0,0,1,24,0v44h44A12,12,0,0,1,196,128Z`}))],[`duotone`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z`,opacity:`0.2`}),V.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm64-88a8,8,0,0,1-8,8H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48A8,8,0,0,1,192,128Z`}))],[`fill`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm56,112H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z`}))],[`light`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm0,192a90,90,0,1,1,90-90A90.1,90.1,0,0,1,128,218Zm62-90a6,6,0,0,1-6,6H128a6,6,0,0,1-6-6V72a6,6,0,0,1,12,0v50h50A6,6,0,0,1,190,128Z`}))],[`regular`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm64-88a8,8,0,0,1-8,8H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48A8,8,0,0,1,192,128Z`}))],[`thin`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm0,192a92,92,0,1,1,92-92A92.1,92.1,0,0,1,128,220Zm60-92a4,4,0,0,1-4,4H128a4,4,0,0,1-4-4V72a4,4,0,0,1,8,0v52h52A4,4,0,0,1,188,128Z`}))]]),br=new Map([[`bold`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M108,84a16,16,0,1,1,16,16A16,16,0,0,1,108,84Zm128,44A108,108,0,1,1,128,20,108.12,108.12,0,0,1,236,128Zm-24,0a84,84,0,1,0-84,84A84.09,84.09,0,0,0,212,128Zm-72,36.68V132a20,20,0,0,0-20-20,12,12,0,0,0-4,23.32V168a20,20,0,0,0,20,20,12,12,0,0,0,4-23.32Z`}))],[`duotone`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z`,opacity:`0.2`}),V.createElement(`path`,{d:`M144,176a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176Zm88-48A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128ZM124,96a12,12,0,1,0-12-12A12,12,0,0,0,124,96Z`}))],[`fill`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-4,48a12,12,0,1,1-12,12A12,12,0,0,1,124,72Zm12,112a16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40a8,8,0,0,1,0,16Z`}))],[`light`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M142,176a6,6,0,0,1-6,6,14,14,0,0,1-14-14V128a2,2,0,0,0-2-2,6,6,0,0,1,0-12,14,14,0,0,1,14,14v40a2,2,0,0,0,2,2A6,6,0,0,1,142,176ZM124,94a10,10,0,1,0-10-10A10,10,0,0,0,124,94Zm106,34A102,102,0,1,1,128,26,102.12,102.12,0,0,1,230,128Zm-12,0a90,90,0,1,0-90,90A90.1,90.1,0,0,0,218,128Z`}))],[`regular`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z`}))],[`thin`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M140,176a4,4,0,0,1-4,4,12,12,0,0,1-12-12V128a4,4,0,0,0-4-4,4,4,0,0,1,0-8,12,12,0,0,1,12,12v40a4,4,0,0,0,4,4A4,4,0,0,1,140,176ZM124,92a8,8,0,1,0-8-8A8,8,0,0,0,124,92Zm104,36A100,100,0,1,1,128,28,100.11,100.11,0,0,1,228,128Zm-8,0a92,92,0,1,0-92,92A92.1,92.1,0,0,0,220,128Z`}))]]),xr=new Map([[`bold`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M28,64A12,12,0,0,1,40,52H216a12,12,0,0,1,0,24H40A12,12,0,0,1,28,64Zm12,76h64a12,12,0,0,0,0-24H40a12,12,0,0,0,0,24Zm80,40H40a12,12,0,0,0,0,24h80a12,12,0,0,0,0-24Zm120.49,20.49a12,12,0,0,1-17,0l-18.08-18.08a44,44,0,1,1,17-17l18.08,18.07A12,12,0,0,1,240.49,200.49ZM184,164a20,20,0,1,0-20-20A20,20,0,0,0,184,164Z`}))],[`duotone`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M216,144a32,32,0,1,1-32-32A32,32,0,0,1,216,144Z`,opacity:`0.2`}),V.createElement(`path`,{d:`M32,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H40A8,8,0,0,1,32,64Zm8,72h72a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16Zm88,48H40a8,8,0,0,0,0,16h88a8,8,0,0,0,0-16Zm109.66,13.66a8,8,0,0,1-11.32,0L206,177.36A40,40,0,1,1,217.36,166l20.3,20.3A8,8,0,0,1,237.66,197.66ZM184,168a24,24,0,1,0-24-24A24,24,0,0,0,184,168Z`}))],[`fill`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M32,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H40A8,8,0,0,1,32,64Zm8,72h72a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16Zm88,48H40a8,8,0,0,0,0,16h88a8,8,0,0,0,0-16Zm109.66,2.34L217.36,166A40,40,0,1,0,206,177.36l20.3,20.3a8,8,0,0,0,11.32-11.32Z`}))],[`light`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M34,64a6,6,0,0,1,6-6H216a6,6,0,0,1,0,12H40A6,6,0,0,1,34,64Zm6,70h72a6,6,0,0,0,0-12H40a6,6,0,0,0,0,12Zm88,52H40a6,6,0,0,0,0,12h88a6,6,0,0,0,0-12Zm108.24,10.24a6,6,0,0,1-8.48,0l-21.49-21.48a38.06,38.06,0,1,1,8.49-8.49l21.48,21.49A6,6,0,0,1,236.24,196.24ZM184,170a26,26,0,1,0-26-26A26,26,0,0,0,184,170Z`}))],[`regular`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M32,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H40A8,8,0,0,1,32,64Zm8,72h72a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16Zm88,48H40a8,8,0,0,0,0,16h88a8,8,0,0,0,0-16Zm109.66,13.66a8,8,0,0,1-11.32,0L206,177.36A40,40,0,1,1,217.36,166l20.3,20.3A8,8,0,0,1,237.66,197.66ZM184,168a24,24,0,1,0-24-24A24,24,0,0,0,184,168Z`}))],[`thin`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M36,64a4,4,0,0,1,4-4H216a4,4,0,0,1,0,8H40A4,4,0,0,1,36,64Zm4,68h72a4,4,0,0,0,0-8H40a4,4,0,0,0,0,8Zm88,56H40a4,4,0,0,0,0,8h88a4,4,0,0,0,0-8Zm106.83,6.83a4,4,0,0,1-5.66,0l-22.72-22.72a36.06,36.06,0,1,1,5.66-5.66l22.72,22.72A4,4,0,0,1,234.83,194.83ZM184,172a28,28,0,1,0-28-28A28,28,0,0,0,184,172Z`}))]]),Sr=new Map([[`bold`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M156,112a12,12,0,0,1-12,12H80a12,12,0,0,1,0-24h64A12,12,0,0,1,156,112Zm76.49,120.49a12,12,0,0,1-17,0L168,185a92.12,92.12,0,1,1,17-17l47.54,47.53A12,12,0,0,1,232.49,232.49ZM112,180a68,68,0,1,0-68-68A68.08,68.08,0,0,0,112,180Z`}))],[`duotone`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M192,112a80,80,0,1,1-80-80A80,80,0,0,1,192,112Z`,opacity:`0.2`}),V.createElement(`path`,{d:`M229.66,218.34,179.6,168.28a88.21,88.21,0,1,0-11.32,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Zm112,0a8,8,0,0,1-8,8H80a8,8,0,0,1,0-16h64A8,8,0,0,1,152,112Z`}))],[`fill`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M229.66,218.34,179.6,168.28a88.21,88.21,0,1,0-11.32,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM144,120H80a8,8,0,0,1,0-16h64a8,8,0,0,1,0,16Z`}))],[`light`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M150,112a6,6,0,0,1-6,6H80a6,6,0,0,1,0-12h64A6,6,0,0,1,150,112Zm78.24,116.24a6,6,0,0,1-8.48,0l-51.38-51.38a86.15,86.15,0,1,1,8.48-8.48l51.38,51.38A6,6,0,0,1,228.24,228.24ZM112,186a74,74,0,1,0-74-74A74.09,74.09,0,0,0,112,186Z`}))],[`regular`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M152,112a8,8,0,0,1-8,8H80a8,8,0,0,1,0-16h64A8,8,0,0,1,152,112Zm77.66,117.66a8,8,0,0,1-11.32,0l-50.06-50.07a88.11,88.11,0,1,1,11.31-11.31l50.07,50.06A8,8,0,0,1,229.66,229.66ZM112,184a72,72,0,1,0-72-72A72.08,72.08,0,0,0,112,184Z`}))],[`thin`,V.createElement(V.Fragment,null,V.createElement(`path`,{d:`M148,112a4,4,0,0,1-4,4H80a4,4,0,0,1,0-8h64A4,4,0,0,1,148,112Zm78.83,114.83a4,4,0,0,1-5.66,0l-52.7-52.7a84.1,84.1,0,1,1,5.66-5.66l52.7,52.7A4,4,0,0,1,226.83,226.83ZM112,188a76,76,0,1,0-76-76A76.08,76.08,0,0,0,112,188Z`}))]]),Cr=V.forwardRef((e,t)=>V.createElement(m,{ref:t,...e,weights:mr}));Cr.displayName=`ArrowClockwiseIcon`;var wr=Cr,Tr=V.forwardRef((e,t)=>V.createElement(m,{ref:t,...e,weights:hr}));Tr.displayName=`ArrowsOutIcon`;var Er=Tr,Dr=V.forwardRef((e,t)=>V.createElement(m,{ref:t,...e,weights:gr}));Dr.displayName=`CaretDownIcon`;var Or=Dr,kr=V.forwardRef((e,t)=>V.createElement(m,{ref:t,...e,weights:_r}));kr.displayName=`CaretUpIcon`;var Ar=kr,jr=V.forwardRef((e,t)=>V.createElement(m,{ref:t,...e,weights:vr}));jr.displayName=`ChatCircleTextIcon`;var Mr=jr,Nr=V.forwardRef((e,t)=>V.createElement(m,{ref:t,...e,weights:yr}));Nr.displayName=`ClockIcon`;var Pr=Nr,Fr=V.forwardRef((e,t)=>V.createElement(m,{ref:t,...e,weights:br}));Fr.displayName=`InfoIcon`;var Ir=Fr,Lr=V.forwardRef((e,t)=>V.createElement(m,{ref:t,...e,weights:xr}));Lr.displayName=`ListMagnifyingGlassIcon`;var Rr=Lr,zr=V.forwardRef((e,t)=>V.createElement(m,{ref:t,...e,weights:Sr}));zr.displayName=`MagnifyingGlassMinusIcon`;var Br=zr,Vr=`$__all`;function Hr(e){let{margin:t,containerPadding:n,containerWidth:r,cols:i}=e;return(r-t[0]*(i-1)-n[0]*2)/i}function Ur(e,t,n){return Number.isFinite(e)?Math.round(t*e+Math.max(0,e-1)*n):e}function Wr(e,t,n,r,i,a,o){let{margin:s,containerPadding:c,rowHeight:l}=e,u=Hr(e),d,f,p,m;if(o?(d=Math.round(o.width),f=Math.round(o.height)):(d=Ur(r,u,s[0]),f=Ur(i,l,s[1])),a?(p=Math.round(a.top),m=Math.round(a.left)):o?(p=Math.round(o.top),m=Math.round(o.left)):(p=Math.round((l+s[1])*n+c[1]),m=Math.round((u+s[0])*t+c[0])),!a&&!o){if(Number.isFinite(r)){let e=Math.round((u+s[0])*(t+r)+c[0])-m-d;e!==s[0]&&(d+=e-s[0])}if(Number.isFinite(i)){let e=Math.round((l+s[1])*(n+i)+c[1])-p-f;e!==s[1]&&(f+=e-s[1])}}return{top:p,left:m,width:d,height:f}}function Gr(e,t,n,r,i){let{margin:a,containerPadding:o,cols:s,rowHeight:c,maxRows:l}=e,u=Hr(e),d=Math.round((n-o[0])/(u+a[0])),f=Math.round((t-o[1])/(c+a[1]));return d=Jr(d,0,s-r),f=Jr(f,0,l-i),{x:d,y:f}}function Kr(e,t,n){let{margin:r,containerPadding:i,rowHeight:a}=e,o=Hr(e);return{x:Math.round((n-i[0])/(o+r[0])),y:Math.round((t-i[1])/(a+r[1]))}}function qr(e,t,n){let{margin:r,rowHeight:i}=e,a=Hr(e);return{w:Math.max(1,Math.round((t+r[0])/(a+r[0]))),h:Math.max(1,Math.round((n+r[1])/(i+r[1])))}}function Jr(e,t,n){return Math.max(Math.min(e,n),t)}function Yr(e,t){return!(e.i===t.i||e.x+e.w<=t.x||e.x>=t.x+t.w||e.y+e.h<=t.y||e.y>=t.y+t.h)}function Xr(e,t){for(let n=0;nYr(e,t))}function Qr(e,t){return t===`horizontal`?ei(e):t===`vertical`||t===`wrap`?$r(e):[...e]}function $r(e){return[...e].sort((e,t)=>e.y===t.y?e.x-t.x:e.y-t.y)}function ei(e){return[...e].sort((e,t)=>e.x===t.x?e.y-t.y:e.x-t.x)}function ti(e){let t=0;for(let n=0;nt&&(t=e)}}return t}function ni(e,t){for(let n=0;ne.static===!0)}function ii(e){return{i:e.i,x:e.x,y:e.y,w:e.w,h:e.h,minW:e.minW,maxW:e.maxW,minH:e.minH,maxH:e.maxH,moved:!!e.moved,static:!!e.static,isDraggable:e.isDraggable,isResizable:e.isResizable,resizeHandles:e.resizeHandles,constraints:e.constraints,isBounded:e.isBounded}}function ai(e){let t=Array(e.length);for(let n=0;nt.cols&&(i.x=t.cols-i.w),i.x<0&&(i.x=0,i.w=t.cols),!i.static)n.push(i);else for(;Xr(n,i);)i.y++}}return e}function li(e,t,n,r,i,a,o,s,c){if(t.static&&t.isDraggable!==!0||t.y===r&&t.x===n)return[...e];let l=t.x,u=t.y;typeof n==`number`&&(t.x=n),typeof r==`number`&&(t.y=r),t.moved=!0;let d=Qr(e,o);(o===`vertical`&&typeof r==`number`?u>=r:o===`horizontal`&&typeof n==`number`&&l>=n)&&(d=d.reverse());let f=Zr(d,t),p=f.length>0;if(p&&c)return ai(e);if(p&&a)return t.x=l,t.y=u,t.moved=!1,e;let m=[...e];for(let e=0;et.y,d=l!==void 0&&t.x+t.w>l.x;if(!l)return li(e,n,o?a.x:void 0,s?a.y:void 0,r,c,i);if(u&&s)return li(e,n,void 0,n.y+1,r,c,i);if(u&&i===null)return t.y=n.y,n.y+=n.h,[...e];if(d&&o)return li(e,t,n.x,void 0,r,c,i)}let l=o?n.x+1:void 0,u=s?n.y+1:void 0;return l===void 0&&u===void 0?[...e]:li(e,n,l,u,r,c,i)}function di(e,t,n){return Math.max(t,Math.min(n,e))}var fi=[{name:`gridBounds`,constrainPosition(e,t,n,{cols:r,maxRows:i}){return{x:di(t,0,Math.max(0,r-e.w)),y:di(n,0,Math.max(0,i-e.h))}},constrainSize(e,t,n,r,{cols:i,maxRows:a}){let o=r===`w`||r===`nw`||r===`sw`?e.x+e.w:i-e.x,s=r===`n`||r===`nw`||r===`ne`?e.y+e.h:a-e.y;return{w:di(t,1,Math.max(1,o)),h:di(n,1,Math.max(1,s))}}},{name:`minMaxSize`,constrainSize(e,t,n){return{w:di(t,e.minW??1,e.maxW??1/0),h:di(n,e.minH??1,e.maxH??1/0)}}}];function pi(e,t,n,r,i){let a={x:n,y:r};for(let n of e)n.constrainPosition&&(a=n.constrainPosition(t,a.x,a.y,i));if(t.constraints)for(let e of t.constraints)e.constrainPosition&&(a=e.constrainPosition(t,a.x,a.y,i));return a}function mi(e,t,n,r,i,a){let o={w:n,h:r};for(let n of e)n.constrainSize&&(o=n.constrainSize(t,o.w,o.h,i,a));if(t.constraints)for(let e of t.constraints)e.constrainSize&&(o=e.constrainSize(t,o.w,o.h,i,a));return o}function hi({top:e,left:t,width:n,height:r}){let i=`translate(${t}px,${e}px)`;return{transform:i,WebkitTransform:i,MozTransform:i,msTransform:i,OTransform:i,width:`${n}px`,height:`${r}px`,position:`absolute`}}function gi({top:e,left:t,width:n,height:r}){return{top:`${e}px`,left:`${t}px`,width:`${n}px`,height:`${r}px`,position:`absolute`}}function _i(e){return e*100+`%`}function vi(e,t,n,r){return e+n>r?t:n}function yi(e,t,n){return e<0?t:n}function bi(e){return Math.max(0,e)}function xi(e){return Math.max(0,e)}var Si=(e,t,n)=>{let{left:r,height:i,width:a}=t,o=e.top-(i-e.height);return{left:r,width:a,height:yi(o,e.height,i),top:xi(o)}},Ci=(e,t,n)=>{let{top:r,left:i,height:a,width:o}=t;return{top:r,height:a,width:vi(e.left,e.width,o,n),left:bi(i)}},wi=(e,t,n)=>{let{top:r,height:i,width:a}=t,o=e.left+e.width-a;return o<0?{height:i,width:e.left+e.width,top:xi(r),left:0}:{height:i,width:a,top:xi(r),left:o}},Ti=(e,t,n)=>{let{top:r,left:i,height:a,width:o}=t;return{width:o,left:i,height:yi(r,e.height,a),top:xi(r)}},Ei={n:Si,ne:(e,t,n)=>Si(e,Ci(e,t,n)),e:Ci,se:(e,t,n)=>Ti(e,Ci(e,t,n)),s:Ti,sw:(e,t,n)=>Ti(e,wi(e,t)),w:wi,nw:(e,t,n)=>Si(e,wi(e,t))};function Di(e,t,n,r){let i=Ei[e];return i?i(t,{...t,...n},r):n}var Oi={type:`transform`,scale:1,calcStyle(e){return hi(e)}},ki={type:`absolute`,scale:1,calcStyle(e){return gi(e)}};function Ai(e){return{type:`transform`,scale:e,calcStyle(e){return hi(e)},calcDragPosition(t,n,r,i){return{left:(t-r)/e,top:(n-i)/e}}}}var ji=Oi,Mi={cols:12,rowHeight:150,margin:[10,10],containerPadding:null,maxRows:1/0},Ni={enabled:!0,bounded:!1,threshold:3},Pi={enabled:!0,handles:[`se`]},Fi={enabled:!1,defaultItem:{w:1,h:1}};function Ii(e,t,n,r,i){let a=r===`x`?`w`:`h`;t[r]+=1;let o=e.findIndex(e=>e.i===t.i),s=i??ri(e).length>0;for(let i=o+1;it.y+t.h)break;Yr(t,o)&&Ii(e,o,n+t[a],r,s)}}t[r]=n}function Li(e,t,n,r){for(t.x=Math.max(t.x,0),t.y=Math.max(t.y,0),t.y=Math.min(r,t.y);t.y>0&&!Xr(e,t);)t.y--;let i;for(;(i=Xr(e,t))!==void 0;)Ii(n,t,i.y+i.h,`y`);return t.y=Math.max(t.y,0),t}function Ri(e,t,n,r){for(t.x=Math.max(t.x,0),t.y=Math.max(t.y,0);t.x>0&&!Xr(e,t);)t.x--;let i;for(;(i=Xr(e,t))!==void 0;)if(Ii(r,t,i.x+i.w,`x`),t.x+t.w>n)for(t.x=n-t.w,t.y++;t.x>0&&!Xr(e,t);)t.x--;return t.x=Math.max(t.x,0),t}var zi={type:`vertical`,allowOverlap:!1,compact(e,t){let n=ri(e),r=ti(n),i=$r(e),a=Array(e.length);for(let t=0;te[t]-e[n])}function qi(e,t){let n=Ki(e),r=n[0];if(r===void 0)throw Error(`No breakpoints defined`);for(let i=1;ie[a]&&(r=a)}return r}function Ji(e,t){let n=t[e];if(n===void 0)throw Error(`ResponsiveReactGridLayout: \`cols\` entry for breakpoint ${String(e)} is missing!`);return n}function Yi(e,t,n,r,i,a){let o=e[n];if(o)return ai(o);let s=e[r],c=Ki(t),l=c.slice(c.indexOf(n));for(let t=0;t{t.exports=`SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED`})),Qi=S(((e,t)=>{var n=Zi();function r(){}function i(){}i.resetWarningCache=r,t.exports=function(){function e(e,t,r,i,a,o){if(o!==n){var s=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name=`Invariant Violation`,s}}e.isRequired=e;function t(){return e}var a={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return a.PropTypes=a,a}})),$i=S(((e,t)=>{t.exports=Qi()()})),ea=p($i(),1),ta=p(N(),1);function na(e,t){for(let n=0,r=e.length;n`u`)return``;let t=window.document?.documentElement?.style;if(!t||e in t)return``;for(let n=0;nt===e.identifier)||e.changedTouches&&na(e.changedTouches,e=>t===e.identifier)}function Ea(e){if(e.targetTouches&&e.targetTouches[0])return e.targetTouches[0].identifier;if(e.changedTouches&&e.changedTouches[0])return e.changedTouches[0].identifier}function Da(){return typeof __webpack_nonce__<`u`?__webpack_nonce__:void 0}function Oa(e,t){if(!e)return;let n=e.getElementById(`react-draggable-style-el`);if(!n){n=e.createElement(`style`),n.type=`text/css`,n.id=`react-draggable-style-el`;let r=t??Da();r&&n.setAttribute(`nonce`,r),n.innerHTML=`.react-draggable-transparent-selection *::-moz-selection {all: inherit;} -`,n.innerHTML+=`.react-draggable-transparent-selection *::selection {all: inherit;} -`,e.getElementsByTagName(`head`)[0].appendChild(n)}e.body&&ja(e.body,`react-draggable-transparent-selection`)}function ka(e){window.requestAnimationFrame?window.requestAnimationFrame(()=>{Aa(e)}):Aa(e)}function Aa(e){if(e)try{e.body&&Ma(e.body,`react-draggable-transparent-selection`);let t=e.selection;if(t)t.empty();else{let t=(e.defaultView||window).getSelection();t&&t.type!==`Caret`&&t.removeAllRanges()}}catch{}}function ja(e,t){e.classList?e.classList.add(t):e.className.match(RegExp(`(?:^|\\s)${t}(?!\\S)`))||(e.className+=` ${t}`)}function Ma(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(RegExp(`(?:^|\\s)${t}(?!\\S)`,`g`),``)}function Na(e,t,n){if(!e.props.bounds)return[t,n];let{bounds:r}=e.props;r=typeof r==`string`?r:Ba(r);let i=Va(e);if(typeof r==`string`){let{ownerDocument:e}=i,t=e.defaultView;if(!t)throw Error(`Cannot resolve the owner window of the draggable node.`);let n;if(n=r===`parent`?i.parentNode:i.getRootNode().querySelector(r),!(n instanceof t.HTMLElement))throw Error(`Bounds selector "`+r+`" could not find an element.`);let a=n,o=t.getComputedStyle(i),s=t.getComputedStyle(a);r={left:-i.offsetLeft+aa(s.paddingLeft)+aa(o.marginLeft),top:-i.offsetTop+aa(s.paddingTop)+aa(o.marginTop),right:ba(a)-va(i)-i.offsetLeft+aa(s.paddingRight)-aa(o.marginRight),bottom:ya(a)-_a(i)-i.offsetTop+aa(s.paddingBottom)-aa(o.marginBottom)}}return ia(r.right)&&(t=Math.min(t,r.right)),ia(r.bottom)&&(n=Math.min(n,r.bottom)),ia(r.left)&&(t=Math.max(t,r.left)),ia(r.top)&&(n=Math.max(n,r.top)),[t,n]}function Pa(e,t,n){return[Math.round(t/e[0])*e[0],Math.round(n/e[1])*e[1]]}function Fa(e){return e.props.axis===`both`||e.props.axis===`x`}function Ia(e){return e.props.axis===`both`||e.props.axis===`y`}function La(e,t,n){let r=typeof t==`number`?Ta(e,t):null;if(typeof t==`number`&&!r)return null;let i=Va(n),a=n.props.offsetParent||i.offsetParent||i.ownerDocument.body;return xa(r||e,a,n.props.scale)}function Ra(e,t,n){let r=!ia(e.lastX),i=Va(e);return r?{node:i,deltaX:0,deltaY:0,lastX:t,lastY:n,x:t,y:n}:{node:i,deltaX:t-e.lastX,deltaY:n-e.lastY,lastX:e.lastX,lastY:e.lastY,x:t,y:n}}function za(e,t){let n=e.props.scale;return{node:t.node,x:e.state.x+t.deltaX/n,y:e.state.y+t.deltaY/n,deltaX:t.deltaX/n,deltaY:t.deltaY/n,lastX:e.state.x,lastY:e.state.y}}function Ba(e){return{left:e.left,top:e.top,right:e.right,bottom:e.bottom}}function Va(e){let t=e.findDOMNode();if(!t)throw Error(`: Unmounted during event!`);return t}var Ha=typeof process<`u`&&{}.DRAGGABLE_DEBUG?console.log.bind(console):function(){},Ua={touch:{start:`touchstart`,move:`touchmove`,stop:`touchend`},mouse:{start:`mousedown`,move:`mousemove`,stop:`mouseup`}},Wa=Ua.mouse,Ga=class extends V.Component{constructor(){super(...arguments),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,this.touchIdentifier=null,this.mounted=!1,this.handleDragStart=e=>{if(this.props.onMouseDown(e),!this.props.allowAnyClick&&(typeof e.button==`number`&&e.button!==0||e.ctrlKey))return!1;let t=this.findDOMNode();if(!t||!t.ownerDocument||!t.ownerDocument.body)throw Error(` not mounted on DragStart!`);let{ownerDocument:n}=t;if(this.props.disabled||!(e.target instanceof n.defaultView.Node)||this.props.handle&&!ma(e.target,this.props.handle,t)||this.props.cancel&&ma(e.target,this.props.cancel,t))return;e.type===`touchstart`&&!this.props.allowMobileScroll&&e.preventDefault();let r=Ea(e);this.touchIdentifier=r;let i=La(e,r,this);if(i==null)return;let{x:a,y:o}=i,s=Ra(this,a,o);Ha(`DraggableCore: handleDragStart: %j`,s),Ha(`calling`,this.props.onStart),this.props.onStart(e,s)!==!1&&this.mounted!==!1&&(this.props.enableUserSelectHack&&Oa(n,this.props.nonce),this.dragging=!0,this.lastX=a,this.lastY=o,ha(n,Wa.move,this.handleDrag),ha(n,Wa.stop,this.handleDragStop))},this.handleDrag=e=>{let t=La(e,this.touchIdentifier,this);if(t==null)return;let{x:n,y:r}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX,t=r-this.lastY;if([e,t]=Pa(this.props.grid,e,t),!e&&!t)return;n=this.lastX+e,r=this.lastY+t}let i=Ra(this,n,r);if(Ha(`DraggableCore: handleDrag: %j`,i),this.props.onDrag(e,i)===!1||this.mounted===!1){try{this.handleDragStop(new MouseEvent(`mouseup`))}catch{let e=document.createEvent(`MouseEvents`);e.initMouseEvent(`mouseup`,!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(e)}return}this.lastX=n,this.lastY=r},this.handleDragStop=e=>{if(!this.dragging)return;let t=La(e,this.touchIdentifier,this);if(t==null)return;let{x:n,y:r}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX||0,t=r-this.lastY||0;[e,t]=Pa(this.props.grid,e,t),n=this.lastX+e,r=this.lastY+t}let i=Ra(this,n,r);if(this.props.onStop(e,i)===!1||this.mounted===!1)return!1;let a=this.findDOMNode();a&&this.props.enableUserSelectHack&&ka(a.ownerDocument),Ha(`DraggableCore: handleDragStop: %j`,i),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,a&&(Ha(`DraggableCore: Removing handlers`),ga(a.ownerDocument,Wa.move,this.handleDrag),ga(a.ownerDocument,Wa.stop,this.handleDragStop))},this.onMouseDown=e=>(Wa=Ua.mouse,this.handleDragStart(e)),this.onMouseUp=e=>(Wa=Ua.mouse,this.handleDragStop(e)),this.onTouchStart=e=>(Wa=Ua.touch,this.handleDragStart(e)),this.onTouchEnd=e=>(Wa=Ua.touch,this.handleDragStop(e))}componentDidMount(){this.mounted=!0;let e=this.findDOMNode();e&&ha(e,Ua.touch.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;let e=this.findDOMNode();if(e){let{ownerDocument:t}=e;ga(t,Ua.mouse.move,this.handleDrag),ga(t,Ua.touch.move,this.handleDrag),ga(t,Ua.mouse.stop,this.handleDragStop),ga(t,Ua.touch.stop,this.handleDragStop),ga(e,Ua.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&ka(t)}}findDOMNode(){if(this.props?.nodeRef)return this.props.nodeRef.current;let e=ta.default;return typeof e.findDOMNode==`function`?e.findDOMNode(this):(Ha(`react-draggable: ReactDOM.findDOMNode is not available in React 19+. You must provide a nodeRef prop. See: https://github.com/react-grid-layout/react-draggable#noderef`),null)}render(){return V.cloneElement(V.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};Ga.displayName=`DraggableCore`,Ga.propTypes={allowAnyClick:ea.default.bool,allowMobileScroll:ea.default.bool,children:ea.default.node.isRequired,disabled:ea.default.bool,enableUserSelectHack:ea.default.bool,offsetParent:function(e,t){if(e[t]&&e[t].nodeType!==1)throw Error(`Draggable's offsetParent must be a DOM Node.`)},grid:ea.default.arrayOf(ea.default.number),handle:ea.default.string,cancel:ea.default.string,nodeRef:ea.default.object,nonce:ea.default.string,onStart:ea.default.func,onDrag:ea.default.func,onStop:ea.default.func,onMouseDown:ea.default.func,scale:ea.default.number,className:oa,style:oa,transform:oa},Ga.defaultProps={allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1};var Ka=class extends V.Component{constructor(e){super(e),this.onDragStart=(e,t)=>{if(Ha(`Draggable: onDragStart: %j`,t),this.props.onStart(e,za(this,t))===!1)return!1;this.setState({dragging:!0,dragged:!0})},this.onDrag=(e,t)=>{if(!this.state.dragging)return!1;Ha(`Draggable: onDrag: %j`,t);let n=za(this,t),r={x:n.x,y:n.y,slackX:0,slackY:0};if(this.props.bounds){let{x:e,y:t}=r;r.x+=this.state.slackX,r.y+=this.state.slackY;let[i,a]=Na(this,r.x,r.y);r.x=i,r.y=a,r.slackX=this.state.slackX+(e-r.x),r.slackY=this.state.slackY+(t-r.y),n.x=r.x,n.y=r.y,n.deltaX=r.x-this.state.x,n.deltaY=r.y-this.state.y}if(this.props.onDrag(e,n)===!1)return!1;this.setState(r)},this.onDragStop=(e,t)=>{if(!this.state.dragging||this.props.onStop(e,za(this,t))===!1)return!1;Ha(`Draggable: onDragStop: %j`,t);let n={dragging:!1,slackX:0,slackY:0};if(this.props.position){let{x:e,y:t}=this.props.position;n.x=e,n.y=t}this.setState(n)},this.state={dragging:!1,dragged:!1,x:e.position?e.position.x:e.defaultPosition.x,y:e.position?e.position.y:e.defaultPosition.y,prevPropsPosition:{...e.position},slackX:0,slackY:0,isElementSVG:!1},e.position&&!(e.onDrag||e.onStop)&&console.warn("A `position` was applied to this , without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}static getDerivedStateFromProps({position:e},{prevPropsPosition:t}){return e&&(!t||e.x!==t.x||e.y!==t.y)?(Ha(`Draggable: getDerivedStateFromProps %j`,{position:e,prevPropsPosition:t}),{x:e.x,y:e.y,prevPropsPosition:{...e}}):null}componentDidMount(){window.SVGElement!==void 0&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.state.dragging&&this.setState({dragging:!1})}findDOMNode(){if(this.props?.nodeRef)return this.props.nodeRef.current;let e=ta.default;return typeof e.findDOMNode==`function`?e.findDOMNode(this):null}render(){let{axis:e,bounds:t,children:n,defaultPosition:r,defaultClassName:i,defaultClassNameDragging:a,defaultClassNameDragged:o,position:s,positionOffset:c,scale:l,...u}=this.props,d={},f=null,p=!s||this.state.dragging,m=s||r,h={x:Fa(this)&&p?this.state.x:m.x,y:Ia(this)&&p?this.state.y:m.y};this.state.isElementSVG?f=Ca(h,c):d=Sa(h,c);let g=V.Children.only(n),_=ee(g.props.className||``,i,{[a]:this.state.dragging,[o]:this.state.dragged});return V.createElement(Ga,{...u,onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop},V.cloneElement(g,{className:_,style:{...g.props.style,...d},transform:f}))}};Ka.displayName=`Draggable`,Ka.propTypes={...Ga.propTypes,axis:ea.default.oneOf([`both`,`x`,`y`,`none`]),bounds:ea.default.oneOfType([ea.default.shape({left:ea.default.number,right:ea.default.number,top:ea.default.number,bottom:ea.default.number}),ea.default.string,ea.default.oneOf([!1])]),defaultClassName:ea.default.string,defaultClassNameDragging:ea.default.string,defaultClassNameDragged:ea.default.string,defaultPosition:ea.default.shape({x:ea.default.number,y:ea.default.number}),positionOffset:ea.default.shape({x:ea.default.oneOfType([ea.default.number,ea.default.string]),y:ea.default.oneOfType([ea.default.number,ea.default.string])}),position:ea.default.shape({x:ea.default.number,y:ea.default.number}),className:oa,style:oa,transform:oa},Ka.defaultProps={...Ga.defaultProps,axis:`both`,bounds:!1,defaultClassName:`react-draggable`,defaultClassNameDragging:`react-draggable-dragging`,defaultClassNameDragged:`react-draggable-dragged`,defaultPosition:{x:0,y:0},scale:1};var qa=S(((e,t)=>{function n(e){var t,r,i=``;if(typeof e==`string`||typeof e==`number`)i+=e;else if(typeof e==`object`){if(Array.isArray(e)){var a=e.length;for(t=0;t{var n=Object.create,r=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,c=(e,t)=>{for(var n in t)r(e,n,{get:t[n],enumerable:!0})},l=(e,t,n,o)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let c of a(t))!s.call(e,c)&&c!==n&&r(e,c,{get:()=>t[c],enumerable:!(o=i(t,c))||o.enumerable});return e},u=(e,t,i)=>(i=e==null?{}:n(o(e)),l(t||!e||!e.__esModule?r(i,`default`,{value:e,enumerable:!0}):i,e)),d=e=>l(r({},`__esModule`,{value:!0}),e),f={};c(f,{DraggableCore:()=>we,default:()=>Te}),t.exports=d(f);var p=u(O()),m=u($i()),h=u(N()),g=qa();function _(e,t){for(let n=0,r=e.length;n`u`)return``;let t=window.document?.documentElement?.style;if(!t||e in t)return``;for(let n=0;nt===e.identifier)||e.changedTouches&&_(e.changedTouches,e=>t===e.identifier)}function ie(e){if(e.targetTouches&&e.targetTouches[0])return e.targetTouches[0].identifier;if(e.changedTouches&&e.changedTouches[0])return e.changedTouches[0].identifier}function ae(){return typeof __webpack_nonce__<`u`?__webpack_nonce__:void 0}function oe(e,t){if(!e)return;let n=e.getElementById(`react-draggable-style-el`);if(!n){n=e.createElement(`style`),n.type=`text/css`,n.id=`react-draggable-style-el`;let r=t??ae();r&&n.setAttribute(`nonce`,r),n.innerHTML=`.react-draggable-transparent-selection *::-moz-selection {all: inherit;} -`,n.innerHTML+=`.react-draggable-transparent-selection *::selection {all: inherit;} -`,e.getElementsByTagName(`head`)[0].appendChild(n)}e.body&&se(e.body,`react-draggable-transparent-selection`)}function z(e){window.requestAnimationFrame?window.requestAnimationFrame(()=>{B(e)}):B(e)}function B(e){if(e)try{e.body&&ce(e.body,`react-draggable-transparent-selection`);let t=e.selection;if(t)t.empty();else{let t=(e.defaultView||window).getSelection();t&&t.type!==`Caret`&&t.removeAllRanges()}}catch{}}function se(e,t){e.classList?e.classList.add(t):e.className.match(RegExp(`(?:^|\\s)${t}(?!\\S)`))||(e.className+=` ${t}`)}function ce(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(RegExp(`(?:^|\\s)${t}(?!\\S)`,`g`),``)}function le(e,t,n){if(!e.props.bounds)return[t,n];let{bounds:r}=e.props;r=typeof r==`string`?r:ge(r);let i=_e(e);if(typeof r==`string`){let{ownerDocument:e}=i,t=e.defaultView;if(!t)throw Error(`Cannot resolve the owner window of the draggable node.`);let n;if(n=r===`parent`?i.parentNode:i.getRootNode().querySelector(r),!(n instanceof t.HTMLElement))throw Error(`Bounds selector "`+r+`" could not find an element.`);let a=n,o=t.getComputedStyle(i),s=t.getComputedStyle(a);r={left:-i.offsetLeft+b(s.paddingLeft)+b(o.marginLeft),top:-i.offsetTop+b(s.paddingTop)+b(o.marginTop),right:F(a)-te(i)-i.offsetLeft+b(s.paddingRight)-b(o.marginRight),bottom:P(a)-ee(i)-i.offsetTop+b(s.paddingBottom)-b(o.marginBottom)}}return y(r.right)&&(t=Math.min(t,r.right)),y(r.bottom)&&(n=Math.min(n,r.bottom)),y(r.left)&&(t=Math.max(t,r.left)),y(r.top)&&(n=Math.max(n,r.top)),[t,n]}function ue(e,t,n){return[Math.round(t/e[0])*e[0],Math.round(n/e[1])*e[1]]}function de(e){return e.props.axis===`both`||e.props.axis===`x`}function fe(e){return e.props.axis===`both`||e.props.axis===`y`}function pe(e,t,n){let r=typeof t==`number`?re(e,t):null;if(typeof t==`number`&&!r)return null;let i=_e(n),a=n.props.offsetParent||i.offsetParent||i.ownerDocument.body;return I(r||e,a,n.props.scale)}function me(e,t,n){let r=!y(e.lastX),i=_e(e);return r?{node:i,deltaX:0,deltaY:0,lastX:t,lastY:n,x:t,y:n}:{node:i,deltaX:t-e.lastX,deltaY:n-e.lastY,lastX:e.lastX,lastY:e.lastY,x:t,y:n}}function he(e,t){let n=e.props.scale;return{node:t.node,x:e.state.x+t.deltaX/n,y:e.state.y+t.deltaY/n,deltaX:t.deltaX/n,deltaY:t.deltaY/n,lastX:e.state.x,lastY:e.state.y}}function ge(e){return{left:e.left,top:e.top,right:e.right,bottom:e.bottom}}function _e(e){let t=e.findDOMNode();if(!t)throw Error(`: Unmounted during event!`);return t}var ve=u(O()),ye=u($i()),be=u(N()),xe=typeof process<`u`&&{}.DRAGGABLE_DEBUG?console.log.bind(console):function(){},Se={touch:{start:`touchstart`,move:`touchmove`,stop:`touchend`},mouse:{start:`mousedown`,move:`mousemove`,stop:`mouseup`}},Ce=Se.mouse,we=class extends ve.Component{constructor(){super(...arguments),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,this.touchIdentifier=null,this.mounted=!1,this.handleDragStart=e=>{if(this.props.onMouseDown(e),!this.props.allowAnyClick&&(typeof e.button==`number`&&e.button!==0||e.ctrlKey))return!1;let t=this.findDOMNode();if(!t||!t.ownerDocument||!t.ownerDocument.body)throw Error(` not mounted on DragStart!`);let{ownerDocument:n}=t;if(this.props.disabled||!(e.target instanceof n.defaultView.Node)||this.props.handle&&!A(e.target,this.props.handle,t)||this.props.cancel&&A(e.target,this.props.cancel,t))return;e.type===`touchstart`&&!this.props.allowMobileScroll&&e.preventDefault();let r=ie(e);this.touchIdentifier=r;let i=pe(e,r,this);if(i==null)return;let{x:a,y:o}=i,s=me(this,a,o);xe(`DraggableCore: handleDragStart: %j`,s),xe(`calling`,this.props.onStart),this.props.onStart(e,s)!==!1&&this.mounted!==!1&&(this.props.enableUserSelectHack&&oe(n,this.props.nonce),this.dragging=!0,this.lastX=a,this.lastY=o,j(n,Ce.move,this.handleDrag),j(n,Ce.stop,this.handleDragStop))},this.handleDrag=e=>{let t=pe(e,this.touchIdentifier,this);if(t==null)return;let{x:n,y:r}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX,t=r-this.lastY;if([e,t]=ue(this.props.grid,e,t),!e&&!t)return;n=this.lastX+e,r=this.lastY+t}let i=me(this,n,r);if(xe(`DraggableCore: handleDrag: %j`,i),this.props.onDrag(e,i)===!1||this.mounted===!1){try{this.handleDragStop(new MouseEvent(`mouseup`))}catch{let e=document.createEvent(`MouseEvents`);e.initMouseEvent(`mouseup`,!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(e)}return}this.lastX=n,this.lastY=r},this.handleDragStop=e=>{if(!this.dragging)return;let t=pe(e,this.touchIdentifier,this);if(t==null)return;let{x:n,y:r}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX||0,t=r-this.lastY||0;[e,t]=ue(this.props.grid,e,t),n=this.lastX+e,r=this.lastY+t}let i=me(this,n,r);if(this.props.onStop(e,i)===!1||this.mounted===!1)return!1;let a=this.findDOMNode();a&&this.props.enableUserSelectHack&&z(a.ownerDocument),xe(`DraggableCore: handleDragStop: %j`,i),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,a&&(xe(`DraggableCore: Removing handlers`),M(a.ownerDocument,Ce.move,this.handleDrag),M(a.ownerDocument,Ce.stop,this.handleDragStop))},this.onMouseDown=e=>(Ce=Se.mouse,this.handleDragStart(e)),this.onMouseUp=e=>(Ce=Se.mouse,this.handleDragStop(e)),this.onTouchStart=e=>(Ce=Se.touch,this.handleDragStart(e)),this.onTouchEnd=e=>(Ce=Se.touch,this.handleDragStop(e))}componentDidMount(){this.mounted=!0;let e=this.findDOMNode();e&&j(e,Se.touch.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;let e=this.findDOMNode();if(e){let{ownerDocument:t}=e;M(t,Se.mouse.move,this.handleDrag),M(t,Se.touch.move,this.handleDrag),M(t,Se.mouse.stop,this.handleDragStop),M(t,Se.touch.stop,this.handleDragStop),M(e,Se.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&z(t)}}findDOMNode(){if(this.props?.nodeRef)return this.props.nodeRef.current;let e=be.default;return typeof e.findDOMNode==`function`?e.findDOMNode(this):(xe(`react-draggable: ReactDOM.findDOMNode is not available in React 19+. You must provide a nodeRef prop. See: https://github.com/react-grid-layout/react-draggable#noderef`),null)}render(){return ve.cloneElement(ve.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};we.displayName=`DraggableCore`,we.propTypes={allowAnyClick:ye.default.bool,allowMobileScroll:ye.default.bool,children:ye.default.node.isRequired,disabled:ye.default.bool,enableUserSelectHack:ye.default.bool,offsetParent:function(e,t){if(e[t]&&e[t].nodeType!==1)throw Error(`Draggable's offsetParent must be a DOM Node.`)},grid:ye.default.arrayOf(ye.default.number),handle:ye.default.string,cancel:ye.default.string,nodeRef:ye.default.object,nonce:ye.default.string,onStart:ye.default.func,onDrag:ye.default.func,onStop:ye.default.func,onMouseDown:ye.default.func,scale:ye.default.number,className:x,style:x,transform:x},we.defaultProps={allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1};var Te=class extends p.Component{constructor(e){super(e),this.onDragStart=(e,t)=>{if(xe(`Draggable: onDragStart: %j`,t),this.props.onStart(e,he(this,t))===!1)return!1;this.setState({dragging:!0,dragged:!0})},this.onDrag=(e,t)=>{if(!this.state.dragging)return!1;xe(`Draggable: onDrag: %j`,t);let n=he(this,t),r={x:n.x,y:n.y,slackX:0,slackY:0};if(this.props.bounds){let{x:e,y:t}=r;r.x+=this.state.slackX,r.y+=this.state.slackY;let[i,a]=le(this,r.x,r.y);r.x=i,r.y=a,r.slackX=this.state.slackX+(e-r.x),r.slackY=this.state.slackY+(t-r.y),n.x=r.x,n.y=r.y,n.deltaX=r.x-this.state.x,n.deltaY=r.y-this.state.y}if(this.props.onDrag(e,n)===!1)return!1;this.setState(r)},this.onDragStop=(e,t)=>{if(!this.state.dragging||this.props.onStop(e,he(this,t))===!1)return!1;xe(`Draggable: onDragStop: %j`,t);let n={dragging:!1,slackX:0,slackY:0};if(this.props.position){let{x:e,y:t}=this.props.position;n.x=e,n.y=t}this.setState(n)},this.state={dragging:!1,dragged:!1,x:e.position?e.position.x:e.defaultPosition.x,y:e.position?e.position.y:e.defaultPosition.y,prevPropsPosition:{...e.position},slackX:0,slackY:0,isElementSVG:!1},e.position&&!(e.onDrag||e.onStop)&&console.warn("A `position` was applied to this , without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}static getDerivedStateFromProps({position:e},{prevPropsPosition:t}){return e&&(!t||e.x!==t.x||e.y!==t.y)?(xe(`Draggable: getDerivedStateFromProps %j`,{position:e,prevPropsPosition:t}),{x:e.x,y:e.y,prevPropsPosition:{...e}}):null}componentDidMount(){window.SVGElement!==void 0&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.state.dragging&&this.setState({dragging:!1})}findDOMNode(){if(this.props?.nodeRef)return this.props.nodeRef.current;let e=h.default;return typeof e.findDOMNode==`function`?e.findDOMNode(this):null}render(){let{axis:e,bounds:t,children:n,defaultPosition:r,defaultClassName:i,defaultClassNameDragging:a,defaultClassNameDragged:o,position:s,positionOffset:c,scale:l,...u}=this.props,d={},f=null,m=!s||this.state.dragging,h=s||r,_={x:de(this)&&m?this.state.x:h.x,y:fe(this)&&m?this.state.y:h.y};this.state.isElementSVG?f=R(_,c):d=L(_,c);let v=p.Children.only(n),y=(0,g.clsx)(v.props.className||``,i,{[a]:this.state.dragging,[o]:this.state.dragged});return p.createElement(we,{...u,onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop},p.cloneElement(v,{className:y,style:{...v.props.style,...d},transform:f}))}};Te.displayName=`Draggable`,Te.propTypes={...we.propTypes,axis:m.default.oneOf([`both`,`x`,`y`,`none`]),bounds:m.default.oneOfType([m.default.shape({left:m.default.number,right:m.default.number,top:m.default.number,bottom:m.default.number}),m.default.string,m.default.oneOf([!1])]),defaultClassName:m.default.string,defaultClassNameDragging:m.default.string,defaultClassNameDragged:m.default.string,defaultPosition:m.default.shape({x:m.default.number,y:m.default.number}),positionOffset:m.default.shape({x:m.default.oneOfType([m.default.number,m.default.string]),y:m.default.oneOfType([m.default.number,m.default.string])}),position:m.default.shape({x:m.default.number,y:m.default.number}),className:x,style:x,transform:x},Te.defaultProps={...we.defaultProps,axis:`both`,bounds:!1,defaultClassName:`react-draggable`,defaultClassNameDragging:`react-draggable-dragging`,defaultClassNameDragged:`react-draggable-dragged`,defaultPosition:{x:0,y:0},scale:1},0&&(t.exports={DraggableCore:we})})),Ya=S(((e,t)=>{var n=Ja(),r=n.DraggableCore,i=n.default||n;t.exports=i,t.exports.default=i,t.exports.DraggableCore=r})),Xa=S((e=>{e.__esModule=!0,e.cloneElement=c;var t=n(O());function n(e){return e&&e.__esModule?e:{default:e}}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function i(e){for(var t=1;t{e.__esModule=!0,e.resizableProps=void 0;var t=n($i());Ya();function n(e){return e&&e.__esModule?e:{default:e}}e.resizableProps={axis:t.default.oneOf([`both`,`x`,`y`,`none`]),className:t.default.string,children:t.default.element.isRequired,draggableOpts:t.default.shape({allowAnyClick:t.default.bool,cancel:t.default.string,children:t.default.node,disabled:t.default.bool,enableUserSelectHack:t.default.bool,offsetParent:typeof Element<`u`?t.default.instanceOf(Element):t.default.any,grid:t.default.arrayOf(t.default.number),handle:t.default.string,nodeRef:t.default.object,onStart:t.default.func,onDrag:t.default.func,onStop:t.default.func,onMouseDown:t.default.func,scale:t.default.number}),height:function(){var e=[...arguments];let n=e[0];return n.axis===`both`||n.axis===`y`?t.default.number.isRequired(...e):t.default.number(...e)},handle:t.default.oneOfType([t.default.node,t.default.func]),handleSize:t.default.arrayOf(t.default.number),lockAspectRatio:t.default.bool,maxConstraints:t.default.arrayOf(t.default.number),minConstraints:t.default.arrayOf(t.default.number),onResizeStop:t.default.func,onResizeStart:t.default.func,onResize:t.default.func,resizeHandles:t.default.arrayOf(t.default.oneOf([`s`,`w`,`e`,`n`,`sw`,`nw`,`se`,`ne`])),transformScale:t.default.number,width:function(){var e=[...arguments];let n=e[0];return n.axis===`both`||n.axis===`x`?t.default.number.isRequired(...e):t.default.number(...e)}}})),Qa=S((e=>{e.__esModule=!0,e.default=void 0;var t=o(O()),n=Ya(),r=Xa(),i=Za(),a=[`children`,`className`,`draggableOpts`,`width`,`height`,`handle`,`handleSize`,`lockAspectRatio`,`axis`,`minConstraints`,`maxConstraints`,`onResize`,`onResizeStop`,`onResizeStart`,`resizeHandles`,`transformScale`];function o(e,t){if(typeof WeakMap==`function`)var n=new WeakMap,r=new WeakMap;return(o=function(e,t){if(!t&&e&&e.__esModule)return e;var i,a,o={__proto__:null,default:e};if(e===null||typeof e!=`object`&&typeof e!=`function`)return o;if(i=t?r:n){if(i.has(e))return i.get(e);i.set(e,o)}for(let t in e)t!=="default"&&{}.hasOwnProperty.call(e,t)&&((a=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?i(o,t,a):o[t]=e[t]);return o})(e,t)}function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;tMath.abs(i*n)?t=e/n:e=t*n}let o=e,s=t,c=this.slack||[0,0],l=c[0],u=c[1];return e+=l,t+=u,r&&(e=Math.max(r[0],e),t=Math.max(r[1],t)),i&&(e=Math.min(i[0],e),t=Math.min(i[1],t)),this.slack=[l+(o-e),u+(s-t)],[e,t]}resizeHandler(e,t){return(n,r)=>{let i=r.node,a=r.deltaX,o=r.deltaY;e===`onResizeStart`&&this.resetData();let s=(this.props.axis===`both`||this.props.axis===`x`)&&t!==`n`&&t!==`s`,c=(this.props.axis===`both`||this.props.axis===`y`)&&t!==`e`&&t!==`w`;if(!s&&!c)return;let l=t[0],u=t[t.length-1],d=i.getBoundingClientRect();if(this.lastHandleRect!=null){if(u===`w`){let e=d.left-this.lastHandleRect.left;a+=e}if(l===`n`){let e=d.top-this.lastHandleRect.top;o+=e}}this.lastHandleRect=d,u===`w`&&(a=-a),l===`n`&&(o=-o);let f=this.lastSize?.width??this.props.width,p=this.lastSize?.height??this.props.height,m=f+(s?a/this.props.transformScale:0),h=p+(c?o/this.props.transformScale:0);var g=this.runConstraints(m,h);if(m=g[0],h=g[1],e===`onResizeStop`&&this.lastSize){var _=this.lastSize;m=_.width,h=_.height}let v=m!==f||h!==p;e!==`onResizeStop`&&(this.lastSize={width:m,height:h});let y=typeof this.props[e]==`function`?this.props[e]:null;y&&(e!==`onResize`||v)&&(n.persist==null||n.persist(),y(n,{node:i,size:{width:m,height:h},handle:t})),e===`onResizeStop`&&this.resetData()}}renderResizeHandle(e,n){let r=this.props.handle;if(!r)return t.createElement(`span`,{className:`react-resizable-handle react-resizable-handle-`+e,ref:n});if(typeof r==`function`)return r(e,n);let i=typeof r.type==`string`,a=u({ref:n},i?{}:{handleAxis:e});return t.cloneElement(r,a)}render(){let e=this.props,i=e.children,o=e.className,l=e.draggableOpts;e.width,e.height,e.handle,e.handleSize,e.lockAspectRatio,e.axis,e.minConstraints,e.maxConstraints,e.onResize,e.onResizeStop,e.onResizeStart;let d=e.resizeHandles;e.transformScale;let f=c(e,a);return(0,r.cloneElement)(i,u(u({},f),{},{className:(o?o+` `:``)+`react-resizable`,children:[...t.Children.toArray(i.props.children),...d.map(e=>{let r=this.handleRefs[e]??(this.handleRefs[e]=t.createRef());return t.createElement(n.DraggableCore,s({},l,{nodeRef:r,key:`resizableHandle-`+e,onStop:this.resizeHandler(`onResizeStop`,e),onStart:this.resizeHandler(`onResizeStart`,e),onDrag:this.resizeHandler(`onResize`,e)}),this.renderResizeHandle(e,r))})]}))}};e.default=m,m.propTypes=i.resizableProps,m.defaultProps={axis:`both`,handleSize:[20,20],lockAspectRatio:!1,minConstraints:[20,20],maxConstraints:[1/0,1/0],resizeHandles:[`se`],transformScale:1}})),$a=S((e=>{e.__esModule=!0,e.default=void 0;var t=s(O()),n=o($i()),r=o(Qa()),i=Za(),a=[`handle`,`handleSize`,`onResize`,`onResizeStart`,`onResizeStop`,`draggableOpts`,`minConstraints`,`maxConstraints`,`lockAspectRatio`,`axis`,`width`,`height`,`resizeHandles`,`style`,`transformScale`];function o(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(typeof WeakMap==`function`)var n=new WeakMap,r=new WeakMap;return(s=function(e,t){if(!t&&e&&e.__esModule)return e;var i,a,o={__proto__:null,default:e};if(e===null||typeof e!=`object`&&typeof e!=`function`)return o;if(i=t?r:n){if(i.has(e))return i.get(e);i.set(e,o)}for(let t in e)t!=="default"&&{}.hasOwnProperty.call(e,t)&&((a=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?i(o,t,a):o[t]=e[t]);return o})(e,t)}function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let n=t.size;this.props.onResize?(e.persist==null||e.persist(),this.setState(n,()=>this.props.onResize&&this.props.onResize(e,t))):this.setState(n)}}static getDerivedStateFromProps(e,t){return t.propsWidth!==e.width||t.propsHeight!==e.height?{width:e.width,height:e.height,propsWidth:e.width,propsHeight:e.height}:null}render(){let e=this.props,n=e.handle,i=e.handleSize;e.onResize;let o=e.onResizeStart,s=e.onResizeStop,l=e.draggableOpts,d=e.minConstraints,f=e.maxConstraints,p=e.lockAspectRatio,h=e.axis;e.width,e.height;let g=e.resizeHandles,_=e.style,v=e.transformScale,y=m(e,a);return t.createElement(r.default,{axis:h,draggableOpts:l,handle:n,handleSize:i,height:this.state.height,lockAspectRatio:p,maxConstraints:f,minConstraints:d,onResizeStart:o,onResize:this.onResize,onResizeStop:s,resizeHandles:g,transformScale:v,width:this.state.width},t.createElement(`div`,c({},y,{style:u(u({},_),{},{width:this.state.width+`px`,height:this.state.height+`px`})})))}};e.default=h,h.propTypes=u(u({},i.resizableProps),{},{children:n.default.element})})),eo=S(((e,t)=>{t.exports=function(){throw Error(`Don't instantiate Resizable directly! Use require('react-resizable').Resizable`)},t.exports.Resizable=Qa().default,t.exports.ResizableBox=$a().default})),to=S(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?r(e):typeof define==`function`&&define.amd?define([`exports`],r):(n=typeof globalThis<`u`?globalThis:n||self,r(n[`fast-equals`]={}))})(e,(function(e){function t(e){return function(t,n,r,i,a,o,s){return e(t,n,s)}}function n(e){return function(t,n,r,i){if(!t||!n||typeof t!=`object`||typeof n!=`object`)return e(t,n,r,i);var a=i.get(t),o=i.get(n);if(a&&o)return a===n&&o===t;i.set(t,n),i.set(n,t);var s=e(t,n,r,i);return i.delete(t),i.delete(n),s}}function r(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n}function i(e){return e.constructor===Object||e.constructor==null}function a(e){return typeof e.then==`function`}function o(e,t){return e===t||e!==e&&t!==t}var s=Object.prototype.toString;function c(e){var t=e.areArraysEqual,n=e.areDatesEqual,r=e.areMapsEqual,c=e.areObjectsEqual,l=e.areRegExpsEqual,u=e.areSetsEqual,d=e.createIsNestedEqual,f=d(p);function p(e,d,p){if(e===d)return!0;if(!e||!d||typeof e!=`object`||typeof d!=`object`)return e!==e&&d!==d;if(i(e)&&i(d))return c(e,d,f,p);var m=Array.isArray(e),h=Array.isArray(d);if(m||h)return m===h&&t(e,d,f,p);var g=s.call(e);return g===s.call(d)?g===`[object Date]`?n(e,d,f,p):g===`[object RegExp]`?l(e,d,f,p):g===`[object Map]`?r(e,d,f,p):g===`[object Set]`?u(e,d,f,p):g===`[object Object]`||g===`[object Arguments]`?a(e)||a(d)?!1:c(e,d,f,p):g===`[object Boolean]`||g===`[object Number]`||g===`[object String]`?o(e.valueOf(),d.valueOf()):!1:!1}return p}function l(e,t,n,r){var i=e.length;if(t.length!==i)return!1;for(;i-->0;)if(!n(e[i],t[i],i,i,e,t,r))return!1;return!0}var u=n(l);function d(e,t){return o(e.valueOf(),t.valueOf())}function f(e,t,n,r){var i=e.size===t.size;if(!i)return!1;if(!e.size)return!0;var a={},o=0;return e.forEach(function(s,c){if(i){var l=!1,u=0;t.forEach(function(i,d){!l&&!a[u]&&(l=n(c,d,o,u,e,t,r)&&n(s,i,c,d,e,t,r))&&(a[u]=!0),u++}),o++,i=l}}),i}var p=n(f),m=`_owner`,h=Object.prototype.hasOwnProperty;function g(e,t,n,r){var i=Object.keys(e),a=i.length;if(Object.keys(t).length!==a)return!1;for(var o;a-->0;){if(o=i[a],o===m){var s=!!e.$$typeof,c=!!t.$$typeof;if((s||c)&&s!==c)return!1}if(!h.call(t,o)||!n(e[o],t[o],o,o,e,t,r))return!1}return!0}var _=n(g);function v(e,t){return e.source===t.source&&e.flags===t.flags}function y(e,t,n,r){var i=e.size===t.size;if(!i)return!1;if(!e.size)return!0;var a={};return e.forEach(function(o,s){if(i){var c=!1,l=0;t.forEach(function(i,u){!c&&!a[l]&&(c=n(o,i,s,u,e,t,r))&&(a[l]=!0),l++}),i=c}}),i}var b=n(y),x=Object.freeze({areArraysEqual:l,areDatesEqual:d,areMapsEqual:f,areObjectsEqual:g,areRegExpsEqual:v,areSetsEqual:y,createIsNestedEqual:t}),S=Object.freeze({areArraysEqual:u,areDatesEqual:d,areMapsEqual:p,areObjectsEqual:_,areRegExpsEqual:v,areSetsEqual:b,createIsNestedEqual:t}),C=c(x);function w(e,t){return C(e,t,void 0)}var T=c(r(x,{createIsNestedEqual:function(){return o}}));function E(e,t){return T(e,t,void 0)}var D=c(S);function O(e,t){return D(e,t,new WeakMap)}var k=c(r(S,{createIsNestedEqual:function(){return o}}));function A(e,t){return k(e,t,new WeakMap)}function j(e){return c(r(x,e(x)))}function M(e){var t=c(r(S,e(S)));return(function(e,n,r){return r===void 0&&(r=new WeakMap),t(e,n,r)})}e.circularDeepEqual=O,e.circularShallowEqual=A,e.createCustomCircularEqual=M,e.createCustomEqual=j,e.deepEqual=w,e.sameValueZeroEqual=o,e.shallowEqual=E,Object.defineProperty(e,"__esModule",{value:!0})}))})),no=eo(),ro=to();function io(e){let{children:t,cols:n,containerWidth:r,margin:i,containerPadding:a,rowHeight:o,maxRows:s,isDraggable:c,isResizable:l,isBounded:u,static:d,useCSSTransforms:f=!0,usePercentages:p=!1,transformScale:m=1,positionStrategy:h,dragThreshold:g=0,droppingPosition:_,className:v=``,style:y,handle:b=``,cancel:x=``,x:S,y:C,w,h:T,minW:E=1,maxW:D=1/0,minH:O=1,maxH:k=1/0,i:A,resizeHandles:j,resizeHandle:M,constraints:N=fi,layoutItem:te,layout:P=[],onDragStart:F,onDrag:I,onDragStop:L,onResizeStart:R,onResize:ne,onResizeStop:re}=e,[ie,ae]=(0,V.useState)(!1),[oe,z]=(0,V.useState)(!1),B=(0,V.useRef)(null),se=(0,V.useRef)({left:0,top:0}),ce=(0,V.useRef)({top:0,left:0,width:0,height:0}),le=(0,V.useRef)(void 0),ue=(0,V.useRef)(P);ue.current=P;let de=(0,V.useRef)(null),fe=(0,V.useRef)(null),pe=(0,V.useRef)(!1),me=(0,V.useRef)({x:0,y:0}),he=(0,V.useRef)(!1),ge=(0,V.useMemo)(()=>({cols:n,containerPadding:a,containerWidth:r,margin:i,maxRows:s,rowHeight:o}),[n,a,r,i,s,o]),_e=(0,V.useMemo)(()=>({cols:n,maxRows:s,containerWidth:r,containerHeight:0,rowHeight:o,margin:i,layout:[]}),[n,s,r,o,i]),ve=(0,V.useCallback)(()=>({..._e,layout:ue.current}),[_e]),ye=(0,V.useMemo)(()=>te??{i:A,x:S,y:C,w,h:T,minW:E,maxW:D,minH:O,maxH:k},[te,A,S,C,w,T,E,D,O,k]),be=(0,V.useCallback)(e=>{if(h?.calcStyle)return h.calcStyle(e);if(f)return hi(e);let t=gi(e);return p?{...t,left:_i(e.left/r),width:_i(e.width/r)}:t},[h,f,p,r]),xe=(0,V.useCallback)((e,{node:t})=>{if(!F)return;let{offsetParent:n}=t;if(!n)return;let r=n.getBoundingClientRect(),i=t.getBoundingClientRect(),a=i.left/m,o=r.left/m,s=i.top/m,c=r.top/m,l;if(h?.calcDragPosition){let t=e;l=h.calcDragPosition(t.clientX,t.clientY,t.clientX-i.left,t.clientY-i.top)}else l={left:a-o+n.scrollLeft,top:s-c+n.scrollTop};if(se.current=l,g>0){let t=e;me.current={x:t.clientX,y:t.clientY},pe.current=!0,he.current=!1,ae(!0);return}ae(!0);let u=Kr(ge,l.top,l.left),{x:d,y:f}=pi(N,ye,u.x,u.y,ve());F(A,d,f,{e,node:t,newPosition:l})},[F,m,ge,h,g,N,ye,ve,A]),Se=(0,V.useCallback)((e,{node:t,deltaX:n,deltaY:a})=>{if(!I||!ie)return;let s=e;if(pe.current&&!he.current){let n=s.clientX-me.current.x,r=s.clientY-me.current.y;if(Math.hypot(n,r){if(!L||!ie)return;let n=pe.current;if(pe.current=!1,he.current=!1,me.current={x:0,y:0},n){ae(!1),se.current={left:0,top:0};return}let{left:r,top:i}=se.current,a={top:i,left:r};ae(!1),se.current={left:0,top:0};let o=Kr(ge,i,r),{x:s,y:c}=pi(N,ye,o.x,o.y,ve());L(A,s,c,{e,node:t,newPosition:a})},[L,ie,ge,N,ye,ve,A]);de.current=xe,fe.current=Se;let we=(0,V.useCallback)((e,{node:t,size:n,handle:i},a,o)=>{let s=o===`onResizeStart`?R:o===`onResize`?ne:re;if(!s)return;let c;c=t?Di(i,a,n,r):{...n,top:a.top,left:a.left},ce.current=c;let l=qr(ge,c.width,c.height),{w:u,h:d}=mi(N,ye,l.w,l.h,i,ve());s(A,u,d,{e:e.nativeEvent??e,node:t,size:c,handle:i})},[R,ne,re,r,ge,A,N,ye,ve]),Te=(0,V.useCallback)((e,t)=>{z(!0);let n=Wr(ge,S,C,w,T),r={...t,handle:t.handle};we(e,r,n,`onResizeStart`)},[we,ge,S,C,w,T]),Ee=(0,V.useCallback)((e,t)=>{let n=Wr(ge,S,C,w,T),r={...t,handle:t.handle};we(e,r,n,`onResize`)},[we,ge,S,C,w,T]),De=(0,V.useCallback)((e,t)=>{z(!1),ce.current={top:0,left:0,width:0,height:0};let n=Wr(ge,S,C,w,T),r={...t,handle:t.handle};we(e,r,n,`onResizeStop`)},[we,ge,S,C,w,T]);(0,V.useEffect)(()=>{if(!_)return;let e=B.current;if(!e)return;let t=le.current||{left:0,top:0},n=ie&&(_.left!==t.left||_.top!==t.top);if(!ie){let t={node:e,deltaX:_.left,deltaY:_.top,lastX:0,lastY:0,x:_.left,y:_.top};de.current?.(_.e,t)}else if(n){let t={node:e,deltaX:_.left-se.current.left,deltaY:_.top-se.current.top,lastX:se.current.left,lastY:se.current.top,x:_.left,y:_.top};fe.current?.(_.e,t)}le.current=_},[_,ie,A]);let Oe=Wr(ge,S,C,w,T,ie?se.current:null,oe?ce.current:null),ke=V.Children.only(t),Ae=Hr(ge),je=[Ur(E,Ae,i[0]),Ur(O,o,i[1])],Me=[Ur(D,Ae,i[0]),Ur(k,o,i[1])],Ne=ke.props,Pe=Ne.className,Fe=Ne.style,Ie=V.cloneElement(ke,{ref:B,className:ee(`react-grid-item`,Pe,v,{static:d,resizing:oe,"react-draggable":c,"react-draggable-dragging":ie,dropping:!!_,cssTransforms:f}),style:{...y,...Fe,...be(Oe)}}),Le=M;return Ie=(0,H.jsx)(no.Resizable,{draggableOpts:{disabled:!l},className:l?void 0:`react-resizable-hide`,width:Oe.width,height:Oe.height,minConstraints:je,maxConstraints:Me,onResizeStart:Te,onResize:Ee,onResizeStop:De,transformScale:m,resizeHandles:j,handle:Le,children:Ie}),Ie=(0,H.jsx)(Ga,{disabled:!c,onStart:xe,onDrag:Se,onStop:Ce,handle:b,cancel:`.react-resizable-handle`+(x?`,`+x:``),scale:m,nodeRef:B,children:Ie}),Ie}var ao=()=>{},oo=`react-grid-layout`,so=!1;try{so=/firefox/i.test(navigator.userAgent)}catch{}function co(e,t){let n=V.Children.toArray(e),r=V.Children.toArray(t);if(n.length!==r.length)return!1;for(let e=0;e{if(!V.isValidElement(t)||t.key===null)return;let n=String(t.key);a.add(n);let r=e.find(e=>e.i===n);if(r)i.push(ii(r));else{let e=t.props[`data-grid`];e?i.push({i:n,x:e.x??0,y:e.y??0,w:e.w??1,h:e.h??1,minW:e.minW,maxW:e.maxW,minH:e.minH,maxH:e.maxH,static:e.static,isDraggable:e.isDraggable,isResizable:e.isResizable,resizeHandles:e.resizeHandles,isBounded:e.isBounded}):i.push({i:n,x:0,y:ti(i),w:1,h:1})}});let o=ci(i,{cols:n});return r.compact(o,n)}function uo(e){let{children:t,width:n,gridConfig:r,dragConfig:i,resizeConfig:a,dropConfig:o,positionStrategy:s=ji,compactor:c,constraints:l=fi,layout:u=[],droppingItem:d,autoSize:f=!0,className:p=``,style:m={},innerRef:h,onLayoutChange:g=ao,onDragStart:_=ao,onDrag:v=ao,onDragStop:y=ao,onResizeStart:b=ao,onResize:x=ao,onResizeStop:S=ao,onDrop:C=ao,onDropDragOver:w=ao}=e,T=(0,V.useMemo)(()=>({...Mi,...r}),[r]),E=(0,V.useMemo)(()=>({...Ni,...i}),[i]),D=(0,V.useMemo)(()=>({...Pi,...a}),[a]),O=(0,V.useMemo)(()=>({...Fi,...o}),[o]),{cols:k,rowHeight:A,maxRows:j,margin:M,containerPadding:N}=T,{enabled:te,bounded:P,handle:F,cancel:I,threshold:L}=E,{enabled:R,handles:ne,handleComponent:re}=D,{enabled:ie,defaultItem:ae,onDragOver:oe}=O,z=c??Gi(`vertical`),B=z.type,se=z.allowOverlap,ce=z.preventCollision??!1,le=(0,V.useMemo)(()=>d??{i:`__dropping-elem__`,...ae},[d,ae]),ue=s.type===`transform`,de=s.scale,fe=N??M,[pe,me]=(0,V.useState)(!1),[he,ge]=(0,V.useState)(()=>lo(u,t,k,z)),[_e,ve]=(0,V.useState)(null),[ye,be]=(0,V.useState)(!1),[xe,Se]=(0,V.useState)(null),[Ce,we]=(0,V.useState)(),Te=(0,V.useRef)(null),Ee=(0,V.useRef)(null),De=(0,V.useRef)(null),Oe=(0,V.useRef)(0),ke=(0,V.useRef)(he),Ae=(0,V.useRef)(u),je=(0,V.useRef)(t),Me=(0,V.useRef)(B),Ne=(0,V.useRef)(he);Ne.current=he,(0,V.useEffect)(()=>{me(!0),(0,ro.deepEqual)(he,u)||g(he)},[]),(0,V.useEffect)(()=>{if(_e||xe)return;let e=!(0,ro.deepEqual)(u,Ae.current),n=!co(t,je.current),r=B!==Me.current;if(e||n||r){let n=lo(e?u:he,t,k,z);(0,ro.deepEqual)(n,he)||ge(n)}Ae.current=u,je.current=t,Me.current=B},[u,t,k,B,z,_e,xe,he]),(0,V.useEffect)(()=>{if(!_e&&!(0,ro.deepEqual)(he,ke.current)){ke.current=he;let e=he.filter(e=>e.i!==le.i);g(e)}},[he,_e,g,le.i]);let Pe=(0,V.useMemo)(()=>{if(!f)return;let e=ti(he),t=fe[1];return e*A+(e-1)*M[1]+t*2+`px`},[f,he,A,M,fe]),Fe=(0,V.useCallback)((e,t,n,r)=>{let i=Ne.current,a=ni(i,e);if(!a)return;let o={w:a.w,h:a.h,x:a.x,y:a.y,i:e};Te.current=ii(a),De.current=i,ve(o),_(i,a,a,null,r.e,r.node)},[_]),Ie=(0,V.useCallback)((e,t,n,r)=>{let i=Ne.current,a=Te.current,o=ni(i,e);if(!o)return;let s={w:o.w,h:o.h,x:o.x,y:o.y,i:e},c=li(i,o,t,n,!0,ce,B,k,se);v(c,a,o,s,r.e,r.node),ge(z.compact(c,k)),ve(s)},[ce,B,k,se,z,v]),Le=(0,V.useCallback)((e,t,n,r)=>{if(!_e)return;let i=Ne.current,a=Te.current,o=ni(i,e);if(!o)return;let s=li(i,o,t,n,!0,ce,B,k,se),c=z.compact(s,k);y(c,a,o,null,r.e,r.node);let l=De.current;Te.current=null,De.current=null,ve(null),ge(c),l&&!(0,ro.deepEqual)(l,c)&&g(c)},[_e,ce,B,k,se,z,y,g]),Re=(0,V.useCallback)((e,t,n,r)=>{let i=Ne.current,a=ni(i,e);a&&(Ee.current=ii(a),De.current=i,be(!0),b(i,a,a,null,r.e,r.node))},[b]),ze=(0,V.useCallback)((e,t,n,r)=>{let i=Ne.current,a=Ee.current,{handle:o}=r,s=!1,c,l,[u,d]=si(i,e,e=>(c=e.x,l=e.y,[`sw`,`w`,`nw`,`n`,`ne`].includes(o)&&([`sw`,`nw`,`w`].includes(o)&&(c=e.x+(e.w-t),t=e.x!==c&&c<0?e.w:t,c=c<0?0:c),[`ne`,`n`,`nw`].includes(o)&&(l=e.y+(e.h-n),n=e.y!==l&&l<0?e.h:n,l=l<0?0:l),s=!0),ce&&!se&&Zr(i,{...e,w:t,h:n,x:c??e.x,y:l??e.y}).filter(t=>t.i!==e.i).length>0&&(l=e.y,n=e.h,c=e.x,t=e.w,s=!1),e.w=t,e.h=n,e));if(!d)return;let f=u;s&&c!==void 0&&l!==void 0&&(f=li(u,d,c,l,!0,ce,B,k,se));let p={w:d.w,h:d.h,x:d.x,y:d.y,i:e,static:!0};x(f,a,d,p,r.e,r.node),ge(z.compact(f,k)),ve(p)},[ce,B,k,se,z,x]),Be=(0,V.useCallback)((e,t,n,r)=>{let i=Ne.current,a=Ee.current,o=ni(i,e),s=z.compact(i,k);S(s,a,o??null,null,r.e,r.node);let c=De.current;Ee.current=null,De.current=null,ve(null),be(!1),ge(s),c&&!(0,ro.deepEqual)(c,s)&&g(s)},[k,z,S,g]),Ve=(0,V.useCallback)(()=>{let e=Ne.current;if(!e.some(e=>e.i===le.i)){Se(null),ve(null),we(void 0);return}let t=z.compact(e.filter(e=>e.i!==le.i),k);ge(t),Se(null),ve(null),we(void 0)},[le.i,k,z]),He=(0,V.useCallback)(e=>{if(e.preventDefault(),e.stopPropagation(),so&&!e.nativeEvent.target?.classList.contains(oo))return!1;let t=oe?oe(e.nativeEvent):w(e);if(t===!1)return xe&&Ve(),!1;let{dragOffsetX:r=0,dragOffsetY:i=0,...a}=t??{},o={...le,...a},s=e.currentTarget.getBoundingClientRect(),c={cols:k,margin:M,maxRows:j,rowHeight:A,containerWidth:n,containerPadding:fe},l=Hr(c),u=Ur(o.w,l,M[0]),d=Ur(o.h,A,M[1]),f=u/2,p=d/2,m=e.clientX-s.left+r-f,h=e.clientY-s.top+i-p,g=Math.max(0,m),_=Math.max(0,h),v={left:g/de,top:_/de,e:e.nativeEvent};if(xe)Ce&&(Ce.left!==v.left||Ce.top!==v.top)&&we(v);else{let e=Gr(c,_,g,o.w,o.h);Se((0,H.jsx)(`div`,{},o.i)),we(v);let t=Ne.current.filter(e=>e.i!==o.i);ge([...t,{...o,x:e.x,y:e.y,static:!1,isDraggable:!0}])}},[xe,Ce,le,oe,w,Ve,de,k,M,j,A,n,fe]),Ue=(0,V.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),Oe.current--,Oe.current<0&&(Oe.current=0),Oe.current===0&&Ve()},[Ve]),We=(0,V.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),Oe.current++},[]),Ge=(0,V.useCallback)(e=>{e.preventDefault(),e.stopPropagation();let t=Ne.current,n=t.find(e=>e.i===le.i);Oe.current=0,Ve(),C(t,n,e.nativeEvent)},[le.i,Ve,C]),Ke=(0,V.useCallback)((e,t)=>{if(!e||!e.key)return null;let r=ni(he,String(e.key));if(!r)return null;let i=typeof r.isDraggable==`boolean`?r.isDraggable:!r.static&&te,a=typeof r.isResizable==`boolean`?r.isResizable:!r.static&&R,o=r.resizeHandles||[...ne],c=i&&P&&r.isBounded!==!1,u=re;return(0,H.jsx)(io,{containerWidth:n,cols:k,margin:M,containerPadding:fe,maxRows:j,rowHeight:A,cancel:I,handle:F,onDragStart:Fe,onDrag:Ie,onDragStop:Le,onResizeStart:Re,onResize:ze,onResizeStop:Be,isDraggable:i,isResizable:a,isBounded:c,useCSSTransforms:ue&&pe,usePercentages:!pe,transformScale:de,positionStrategy:s,dragThreshold:L,w:r.w,h:r.h,x:r.x,y:r.y,i:r.i,minH:r.minH,minW:r.minW,maxH:r.maxH,maxW:r.maxW,static:r.static,droppingPosition:t?Ce:void 0,resizeHandles:o,resizeHandle:u,constraints:l,layoutItem:r,layout:he,children:e},r.i)},[he,n,k,M,fe,j,A,I,F,Fe,Ie,Le,Re,ze,Be,te,R,P,ue,pe,de,s,L,Ce,ne,re,l]),qe=()=>_e?(0,H.jsx)(io,{w:_e.w,h:_e.h,x:_e.x,y:_e.y,i:_e.i,className:`react-grid-placeholder ${ye?`placeholder-resizing`:``}`,containerWidth:n,cols:k,margin:M,containerPadding:fe,maxRows:j,rowHeight:A,isDraggable:!1,isResizable:!1,isBounded:!1,useCSSTransforms:ue,transformScale:de,constraints:l,layout:he,children:(0,H.jsx)(`div`,{})}):null,Je=ee(oo,p),Ye={height:Pe,...m};return(0,H.jsxs)(`div`,{ref:h,className:Je,style:Ye,onDrop:ie?Ge:void 0,onDragLeave:ie?Ue:void 0,onDragEnter:ie?We:void 0,onDragOver:ie?He:void 0,children:[V.Children.map(t,e=>V.isValidElement(e)?Ke(e):null),ie&&xe&&Ke(xe,!0),qe()]})}var fo={lg:1200,md:996,sm:768,xs:480,xxs:0},po={lg:12,md:10,sm:6,xs:4,xxs:2},mo=()=>{};function ho(e,t,n,r){let i=[];V.Children.forEach(t,t=>{if(!V.isValidElement(t)||t.key===null)return;let n=String(t.key),r=e.find(e=>e.i===n);if(r)i.push({...r,i:n});else{let e=t.props[`data-grid`];e?i.push({i:n,x:e.x??0,y:e.y??0,w:e.w??1,h:e.h??1,minW:e.minW,maxW:e.maxW,minH:e.minH,maxH:e.maxH,static:e.static,isDraggable:e.isDraggable,isResizable:e.isResizable,resizeHandles:e.resizeHandles,isBounded:e.isBounded}):i.push({i:n,x:0,y:ti(i),w:1,h:1})}});let a=ci(i,{cols:n});return r.compact(a,n)}function go(e){let{children:t,width:n,breakpoint:r,breakpoints:i=fo,cols:a=po,layouts:o={},rowHeight:s=150,maxRows:c=1/0,margin:l=[10,10],containerPadding:u=null,compactor:d,onBreakpointChange:f=mo,onLayoutChange:p=mo,onWidthChange:m=mo,...h}=e,g=d??Gi(`vertical`),_=g.type,v=g.allowOverlap,y=(0,V.useMemo)(()=>r??qi(i,n),[]),b=(0,V.useMemo)(()=>Ji(y,a),[y,a]),x=(0,V.useMemo)(()=>Yi(o,i,y,y,b,_),[]),[S,C]=(0,V.useState)(y),[w,T]=(0,V.useState)(b),[E,D]=(0,V.useState)(x),[O,k]=(0,V.useState)(o),A=(0,V.useRef)(n),j=(0,V.useRef)(r),M=(0,V.useRef)(i),N=(0,V.useRef)(a),ee=(0,V.useRef)(o),te=(0,V.useRef)(_),P=(0,V.useRef)(O);(0,V.useEffect)(()=>{P.current=O},[O]);let F=(0,V.useMemo)(()=>(0,ro.deepEqual)(o,ee.current)?null:Yi(o,i,S,S,w,g),[o,i,S,w,g]),I=F??E;(0,V.useEffect)(()=>{F!==null&&(D(F),k(o),P.current=o,ee.current=o)},[F,o]),(0,V.useEffect)(()=>{if(_!==te.current){let e=g.compact(ai(I),w),t={...P.current,[S]:e};D(e),k(t),P.current=t,p(e,t),te.current=_}},[_,g,I,w,v,S,p]),(0,V.useEffect)(()=>{let e=n!==A.current,o=r!==j.current,s=!(0,ro.deepEqual)(i,M.current),c=!(0,ro.deepEqual)(a,N.current);if(e||o||s||c){let e=r??qi(i,n),o=Ji(e,a),d=S;if(d!==e||s||c){let n={...P.current};n[d]||(n[d]=ai(E));let r=Yi(n,i,e,d,o,g);r=ho(r,t,o,g),n[e]=r,C(e),T(o),D(r),k(n),P.current=n,f(e,o),p(r,n)}let h=Xi(l,e),_=u?Xi(u,e):null;m(n,h,o,_),A.current=n,j.current=r,M.current=i,N.current=a}},[n,r,i,a,S,w,E,t,g,_,v,l,u,f,p,m]);let L=(0,V.useCallback)(e=>{let t={...P.current,[S]:e};D(e),k(t),P.current=t,p(e,t)},[S,p]),R=(0,V.useMemo)(()=>Xi(l,S),[l,S]),ne=(0,V.useMemo)(()=>u===null?null:Xi(u,S),[u,S]),re=(0,V.useMemo)(()=>({cols:w,rowHeight:s,maxRows:c,margin:R,containerPadding:ne}),[w,s,c,R,ne]);return(0,H.jsx)(uo,{...h,width:n,gridConfig:re,compactor:g,onLayoutChange:L,layout:I,children:t})}function _o(e){let{children:t,width:n,breakpoint:r,breakpoints:i,cols:a,layouts:o,onBreakpointChange:s,onLayoutChange:c,onWidthChange:l,rowHeight:u,maxRows:d,margin:f,containerPadding:p,droppingItem:m,compactType:h,preventCollision:g=!1,allowOverlap:_=!1,verticalCompact:v,isDraggable:y=!0,isBounded:b=!1,draggableHandle:x,draggableCancel:S,isResizable:C=!0,resizeHandles:w=[`se`],resizeHandle:T,isDroppable:E=!1,useCSSTransforms:D=!0,transformScale:O=1,autoSize:k,className:A,style:j,innerRef:M,onDragStart:N,onDrag:ee,onDragStop:te,onResizeStart:P,onResize:F,onResizeStop:I,onDrop:L,onDropDragOver:R}=e,ne=h===void 0?`vertical`:h;v===!1&&(ne=null);let re={enabled:y,bounded:b,handle:x,cancel:S},ie={enabled:C,handles:w,handleComponent:T},ae={enabled:E},oe;oe=D?O===1?Oi:Ai(O):ki;let z=Gi(ne,_,g);return(0,H.jsx)(go,{width:n,breakpoint:r,breakpoints:i,cols:a,layouts:o,rowHeight:u,maxRows:d,margin:f,containerPadding:p,compactor:z,dragConfig:re,resizeConfig:ie,dropConfig:ae,positionStrategy:oe,droppingItem:m,autoSize:k,className:A,style:j,innerRef:M,onBreakpointChange:s,onLayoutChange:c,onWidthChange:l,onDragStart:N,onDrag:ee,onDragStop:te,onResizeStart:P,onResize:F,onResizeStop:I,onDrop:L,onDropDragOver:R,children:t})}_o.displayName=`ResponsiveReactGridLayout`;var vo=_o,yo=`react-grid-layout`;function bo(e){function t(t){let{measureBeforeMount:n=!1,className:r,style:i,...a}=t,[o,s]=(0,V.useState)(1280),[c,l]=(0,V.useState)(!1),u=(0,V.useRef)(null),d=(0,V.useRef)(null);return(0,V.useEffect)(()=>{l(!0)},[]),(0,V.useEffect)(()=>{let e=u.current;if(!(e instanceof HTMLElement))return;let t=null,n=new ResizeObserver(e=>{if(e[0]){let n=Math.round(e[0].contentRect.width);t!==null&&cancelAnimationFrame(t),t=requestAnimationFrame(()=>{s(e=>e===n?e:n),t=null})}});return n.observe(e),d.current=n,()=>{t!==null&&cancelAnimationFrame(t),n.unobserve(e),n.disconnect()}},[c]),n&&!c?(0,H.jsx)(`div`,{className:ee(r,yo),style:i,ref:u}):(0,H.jsx)(e,{innerRef:u,className:r,style:i,...a,width:o})}return t.displayName=`WidthProvider(${e.displayName||e.name||`Component`})`,t}var xo=new Intl.NumberFormat(`en`,{notation:`compact`,maximumFractionDigits:1}),So=new Intl.NumberFormat(`en`,{maximumFractionDigits:2});function Co(e){return Math.abs(e)<1e-4?e.toExponential(2).replace(/\.?(0+)(?=e)/,``):String(Number(e.toPrecision(3)))}function wo(e,t=So){return e!==0&&Math.abs(e)<1?Co(e):t.format(e)}function To(e,t){let n=t===`s`?e*1e3:t===`ns`?e/1e6:e;return e!==0&&n===0?`${Co(e)}${t}`:n!==0&&Math.abs(n)<1?`${Co(n)}ms`:tt(n)}function Eo(e){let t=[`B`,`KiB`,`MiB`,`GiB`,`TiB`],n=e,r=0;for(;Math.abs(n)>=1024&&r=1e4?xo:So);default:return wo(t,Math.abs(t)>=1e4?xo:So)}}function Oo(e){return t=>e===`ms`||e===`s`||e===`ns`?Do(e,t).replace(/(\.\d*?)0+([a-z]*)$/,`$1$2`).replace(/\.([a-z]*)$/,`$1`):Do(e,t)}function ko({panel:e,result:t,onClose:n}){let r=t?.frame;return(0,H.jsx)(Te,{opened:!!e,onClose:n,position:`right`,size:`xl`,closeButtonProps:{"aria-label":`Close inspect`},title:e?`Inspect · ${e.title}`:``,children:e&&(0,H.jsxs)(pr,{defaultValue:`data`,children:[(0,H.jsxs)(pr.List,{children:[(0,H.jsx)(pr.Tab,{value:`data`,children:`Data`}),(0,H.jsx)(pr.Tab,{value:`query`,children:`Query`}),(0,H.jsx)(pr.Tab,{value:`spec`,children:`Spec`}),(0,H.jsx)(pr.Tab,{value:`timing`,children:`Timing`})]}),(0,H.jsx)(pr.Panel,{value:`data`,pt:`sm`,children:r?(0,H.jsx)(Ve,{h:`75vh`,children:(0,H.jsxs)(Qe,{fz:`xs`,striped:!0,children:[(0,H.jsx)(Qe.Thead,{children:(0,H.jsx)(Qe.Tr,{children:r.columns.map(e=>(0,H.jsx)(Qe.Th,{ff:`monospace`,children:e.name},e.name))})}),(0,H.jsx)(Qe.Tbody,{children:Array.from({length:Math.min(r.rows,500)},(t,n)=>(0,H.jsx)(Qe.Tr,{children:r.columns.map((t,i)=>{let a=r.values[i][n];return(0,H.jsx)(Qe.Td,{ff:`monospace`,children:a===null?`—`:t.type===`time`?new Date(Number(a)).toISOString():t.role===`measure`?Do(t.unit??e.unit,Number(a)):String(a)},t.name)})},n))})]})}):(0,H.jsx)(g,{c:`dimmed`,size:`sm`,children:`No data.`})}),(0,H.jsx)(pr.Panel,{value:`query`,pt:`sm`,children:(0,H.jsx)(ae,{block:!0,children:t?.sql??e.sql??`—`})}),(0,H.jsx)(pr.Panel,{value:`spec`,pt:`sm`,children:(0,H.jsx)(ae,{block:!0,children:JSON.stringify(e,null,2)})}),(0,H.jsx)(pr.Panel,{value:`timing`,pt:`sm`,children:(0,H.jsxs)(g,{size:`sm`,children:[`Ran in `,t?.elapsed_ms??0,` ms`,t?.interval?`, one point per ${t.interval}`:``,r?`, ${r.rows} rows${r.truncated?` (truncated)`:``}`:``,`.`]})})]})})}function Ao(e){return Ce[e?`dark`:`light`]}function jo(e){let t=e?5:7;return{ok:Ae[t],warn:je[t],bad:De[t],info:Oe[t]}}function Mo(e,t){let n=be[t?`dark`:`light`],r=0;for(let t of e)r=r*31+t.charCodeAt(0)|0;return n[Math.abs(r)%n.length]}var No=e=>typeof e==`number`&&Number.isFinite(e)?e:null;function Po(e){return e.columns.flatMap((e,t)=>e.role===`measure`?[t]:[])}function Fo(e){let t=e.columns.findIndex(e=>e.role===`time`);if(t<0)return[];let n=e.columns.findIndex(e=>e.role===`dimension`),r=Po(e);if(n>=0&&r.length>0){let i=r[0],a=new Map;for(let r=0;r({name:e.columns[n].name,unit:e.columns[n].unit,points:e.values[t].map((t,r)=>[Number(t),No(e.values[n][r])])}))}function Io(e){let t=e.columns.flatMap((e,t)=>e.role===`dimension`?[t]:[]),n=Po(e);if(t.length===0||n.length===0)return{categories:[],series:[]};let r=t[0],i=[];for(let t=0;t1){let a=t[1],o=n[0],s=new Map;for(let t=0;tnull)),s.get(n)[i.indexOf(String(e.values[r][t]??``))]=No(e.values[o][t])}return{categories:i,series:[...s.entries()].map(([t,n])=>({name:t,unit:e.columns[o].unit,values:n}))}}return{categories:i,series:n.map(t=>({name:e.columns[t].name,unit:e.columns[t].unit,values:e.values[t].map(No)}))}}function Lo(e,t){let n=e.filter(e=>e!==null);if(n.length===0)return null;switch(t){case`last`:return n[n.length-1];case`min`:return Math.min(...n);case`max`:return Math.max(...n);case`sum`:return n.reduce((e,t)=>e+t,0);default:return n.reduce((e,t)=>e+t,0)/n.length}}function Ro(e,t){let n=Po(t)[0];return n===void 0?null:(e.reduce??`window`)===`window`?t.totals?No(t.totals[n]):Lo(t.values[n].map(No),`mean`):Lo(t.values[n].map(No),e.reduce??`mean`)}function zo(e){let t=Po(e)[0];return t===void 0?[]:e.values[t].map(No)}var Bo={ok:0,warn:1,bad:2};function Vo(e){if(!e?.length)return;let t=[...e].sort((e,t)=>Bo[e.status]-Bo[t.status]),n=t[0],r=t[t.length-1];return Bo[r.status]>Bo[n.status]&&r.value!==n.value?r.value>n.value?`lower`:`higher`:`lower`}function Ho(e,t,n){if(e===null||!t||t.length===0)return null;n??=Vo(t);let r=`ok`;for(let i of t)(n===`lower`?e>=i.value:e<=i.value)&&Bo[i.status]>Bo[r]&&(r=i.status);return r}function Uo(e){let t=Ao(e),n=jo(e);return{dark:e,text:t.text,muted:t.muted,grid:t.grid,surface:t.surface,border:t.border,status:{ok:n.ok,warn:n.warn,bad:n.bad},font:ve.display}}var Wo=(e,t)=>e===`Other`?t.muted:Mo(e,t.dark);function Go(e,t){return{animationDuration:200,textStyle:{fontFamily:e.font,color:e.muted,fontSize:11},grid:{left:8,right:16,top:28,bottom:8,containLabel:!0},tooltip:{trigger:`axis`,confine:!0,backgroundColor:e.surface,borderColor:e.border,textStyle:{color:e.text,fontSize:12},valueFormatter:e=>Do(t,e),axisPointer:{type:`line`,lineStyle:{color:e.border}}},aria:{enabled:!0}}}function Ko(e){let t=(e.thresholds??[]).map(e=>e.value);if(t.length===0)return;let n=Math.max(...t);return e=>Math.max(e.max,n)}function qo(e,t,n){return(e.thresholds??[]).map(r=>({yAxis:r.value,label:{formatter:r.label??`${r.status} ${Do(n??e.unit,r.value)}`,position:`insideStartTop`,color:t.muted,fontSize:10},lineStyle:{color:t.status[r.status],type:[4,3],width:1}}))}function Jo(e,t,n){let r=t.frame?Fo(t.frame):[],i=r[0]?.unit??e.unit,a=t.previous&&t.shift_ms!==void 0?Fo(t.previous):[],o=[...new Set([...r,...a].map(t=>t.unit??e.unit))];o.length===0&&o.push(e.unit);let s=e.options?.style??`line`,c=t.shift_ms,l=r.map((t,r)=>{let a=Wo(t.name,n);return{name:t.name,yAxisIndex:o.indexOf(t.unit??e.unit),tooltip:{valueFormatter:n=>Do(t.unit??e.unit,n)},type:s===`bars`||s===`stacked`?`bar`:`line`,data:t.points,showSymbol:!1,connectNulls:!1,sampling:s===`bars`||s===`stacked`?void 0:`lttb`,stack:s===`stacked`?`total`:void 0,areaStyle:s===`area`?{opacity:.12}:void 0,lineStyle:{width:2,color:a},itemStyle:{color:a,borderRadius:s===`bars`||s===`stacked`?[2,2,0,0]:void 0},barMaxWidth:12,emphasis:{focus:`series`},markLine:r===0&&(e.thresholds?.length??0)>0?{symbol:[`none`,`none`],silent:!0,data:qo(e,n,i)}:void 0}}),u=c===void 0?[]:a.map(t=>({name:`${t.name} · previous`,yAxisIndex:o.indexOf(t.unit??e.unit),tooltip:{valueFormatter:n=>Do(t.unit??e.unit,n)},type:`line`,data:t.points.map(([e,t])=>[e+c,t]),showSymbol:!1,silent:!0,z:1,lineStyle:{width:1,type:`dashed`,color:n.border},itemStyle:{color:n.border}})),d=(e.options?.legend??`auto`)!==`hidden`&&r.length>1,f=o.map((t,r)=>({type:e.options?.scale===`log`?`log`:`value`,position:r===0?`left`:`right`,offset:Math.max(0,r-1)*56,max:r===0?Ko(e):void 0,axisLine:{show:!1},splitLine:{show:r===0,lineStyle:{color:n.grid}},axisLabel:{color:n.muted,formatter:Oo(t)}}));return{...Go(n,i),legend:{type:`scroll`,show:d,top:0,left:0,right:0,icon:`roundRect`,itemWidth:10,itemHeight:10,textStyle:{color:n.text,fontSize:12},data:r.map(e=>e.name)},grid:{left:8,right:16+Math.max(0,o.length-2)*56,top:d?30:12,bottom:8,containLabel:!0},xAxis:{type:`time`,axisLine:{lineStyle:{color:n.grid}},axisTick:{show:!1},splitLine:{show:!1},axisLabel:{color:n.muted,hideOverlap:!0}},yAxis:f.length===1?f[0]:f,series:[...l,...u]}}function Yo(e,t,n){let{categories:r,series:i}=Io(t),a=i[0]?.unit??e.unit,o=[...new Set(i.map(t=>t.unit??e.unit))];o.length===0&&o.push(e.unit);let s=i.length>1,c=o.map((e,t)=>({type:`value`,position:t===0?`bottom`:`top`,offset:Math.max(0,t-1)*36,splitLine:{show:t===0,lineStyle:{color:n.grid}},axisLabel:{color:n.muted,formatter:Oo(e),hideOverlap:!0}}));return{...Go(n,a),tooltip:{...Go(n,a).tooltip,axisPointer:{type:`shadow`}},legend:{type:`scroll`,show:s,top:0,left:0,right:0,icon:`roundRect`,itemWidth:10,itemHeight:10,textStyle:{color:n.text,fontSize:12}},grid:{left:8,right:56,top:(s?30:8)+Math.max(0,o.length-1)*36,bottom:8,containLabel:!0},yAxis:{type:`category`,inverse:!0,data:r,axisLine:{lineStyle:{color:n.grid}},axisTick:{show:!1},axisLabel:{color:n.text,width:180,overflow:`truncate`}},xAxis:c.length===1?c[0]:c,series:i.map((t,r)=>({name:t.name,xAxisIndex:o.indexOf(t.unit??e.unit),tooltip:{valueFormatter:n=>Do(t.unit??e.unit,n)},type:`bar`,data:t.values,barMaxWidth:16,barGap:`20%`,itemStyle:{color:s?Wo(t.name,n):Mo(e.id,n.dark),borderRadius:[0,3,3,0]},label:{show:!s||r===0,position:`right`,color:n.muted,formatter:({value:n})=>Do(t.unit??e.unit,n)}}))}}function Xo(e,t,n,r=e.unit){let i=e.min??0,a=e.max??100;a-i;let o=[...e.thresholds??[]].sort((e,t)=>e.value-t.value),s=Zo(e,i,a,n);return{series:[{type:`gauge`,min:i,max:a,startAngle:210,endAngle:-30,radius:`95%`,center:[`50%`,`60%`],axisLine:{lineStyle:{width:10,color:o.length?s:[[1,n.grid]]}},progress:{show:o.length===0,width:10,itemStyle:{color:Mo(e.id,n.dark)}},pointer:{show:o.length>0,length:`55%`,width:4,itemStyle:{color:n.text}},axisTick:{show:!1},splitLine:{show:!1},axisLabel:{show:!1},anchor:{show:!1},detail:{valueAnimation:!0,offsetCenter:[0,`35%`],color:n.text,fontSize:22,fontWeight:600,fontFamily:n.font,formatter:()=>Do(r,t)},data:[{value:t??i}]}]}}function Zo(e,t,n,r){let i=n-t||1,a=[t,...(e.thresholds??[]).map(e=>Math.min(n,Math.max(t,e.value))),n].sort((e,t)=>e-t),o=[];for(let t=0;t[(e.end-t)/i,r.status[e.status]])}var Qo=function(e,t){return Qo=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Qo(e,t)};function U(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Class extends value `+String(t)+` is not a constructor or null`);Qo(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var $o=`12px sans-serif`,es=20,ts=100,ns=`007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N`;function rs(e){var t={};if(typeof JSON>`u`)return t;for(var n=0;n=0)s=o*n.length;else for(var c=0;c=vs&&(_s=0),_s++}function bs(){var e=[...arguments];typeof console<`u`&&console.error.apply(console,e)}function xs(e){if(typeof e!=`object`||!e)return e;var t=e,n=cs.call(e);if(n===`[object Array]`){if(!$s(e)){t=[];for(var r=0,i=e.length;r`u`&&typeof self<`u`?dc.worker=!0:!dc.hasGlobalWindow||`Deno`in window||typeof navigator<`u`&&typeof navigator.userAgent==`string`&&navigator.userAgent.indexOf(`Node.js`)>-1?(dc.node=!0,dc.svgSupported=!0):fc(navigator.userAgent,dc);function fc(e,t){var n=t.browser,r=e.match(/Firefox\/([\d.]+)/),i=e.match(/MSIE\s([\d.]+)/)||e.match(/Trident\/.+?rv:(([\d.]+))/),a=e.match(/Edge?\/([\d.]+)/),o=/micromessenger/i.test(e);if(r&&(n.firefox=!0,n.version=r[1]),i&&(n.ie=!0,n.version=i[1]),a&&(n.edge=!0,n.version=a[1],n.newEdge=+a[1].split(`.`)[0]>18),o&&(n.weChat=!0),t.svgSupported=typeof SVGRect<`u`,t.touchEventsSupported=`ontouchstart`in window&&!n.ie&&!n.edge,t.pointerEventsSupported=`onpointerdown`in window&&(n.edge||n.ie&&+n.version>=11),t.domSupported=typeof document<`u`){var s=document.documentElement.style;t.transform3dSupported=(n.ie&&`transition`in s||n.edge||`WebKitCSSMatrix`in window&&`m11`in new WebKitCSSMatrix||`MozPerspective`in s)&&!(`OTransition`in s),t.transformSupported=t.transform3dSupported||n.ie&&+n.version>=9}}var pc=`.`,mc=`___EC__COMPONENT__CONTAINER___`,hc=`___EC__EXTENDED_CLASS___`;function gc(e){var t={main:``,sub:``};if(e){var n=e.split(pc);t.main=n[0]||``,t.sub=n[1]||``}return t}function _c(e){Ys(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(e),`componentType "`+e+`" illegal`)}function vc(e){return!!(e&&e[hc])}function yc(e,t){e.$constructor=e,e.extend=function(e){var t=this,n;return bc(t)?n=function(e){U(t,e);function t(){return e.apply(this,arguments)||this}return t}(t):(n=function(){(e.$constructor||t).apply(this,arguments)},Es(n,this)),W(n.prototype,e),n[hc]=!0,n.extend=this.extend,n.superCall=wc,n.superApply=Tc,n.superClass=t,n}}function bc(e){return Is(e)&&/^class\s/.test(Function.prototype.toString.call(e))}function xc(e,t){e.extend=t.extend}var Sc=Math.round(Math.random()*10);function Cc(e){var t=[`__\0is_clz`,Sc++].join(`_`);e.prototype[t]=!0,e.isInstance=function(e){return!!(e&&e[t])}}function wc(e,t){var n=[...arguments].slice(2);return this.superClass.prototype[t].apply(e,n)}function Tc(e,t,n){return this.superClass.prototype[t].apply(e,n)}function Ec(e){var t={};e.registerClass=function(e){var r=e.type||e.prototype.type;if(r){_c(r),e.prototype.type=r;var i=gc(r);if(!i.sub)t[i.main]=e;else if(i.sub!==mc){var a=n(i);a[i.sub]=e}}return e},e.getClass=function(e,n,r){var i=t[e];if(i&&i[mc]&&(i=n?i[n]:null),r&&!i)throw Error(n?`Component `+e+`.`+(n||``)+` is used but not imported.`:e+`.type should be specified.`);return i},e.getClassesByMainType=function(e){var n=gc(e),r=[],i=t[n.main];return i&&i[mc]?G(i,function(e,t){t!==mc&&r.push(e)}):r.push(i),r},e.hasClass=function(e){return!!t[gc(e).main]},e.getAllClassMainTypes=function(){var e=[];return G(t,function(t,n){e.push(n)}),e},e.hasSubTypes=function(e){var n=t[gc(e).main];return n&&n[mc]};function n(e){var n=t[e.main];return(!n||!n[mc])&&(n=t[e.main]={},n[mc]=!0),n}}function Dc(e,t){for(var n=0;n=0||i&&Ts(i,s)<0)){var c=n.getShallow(s,t);c!=null&&(a[e[o][0]]=c)}}return a}}var Oc=Dc([[`fill`,`color`],[`shadowBlur`],[`shadowOffsetX`],[`shadowOffsetY`],[`opacity`],[`shadowColor`]]),kc=function(){function e(){}return e.prototype.getAreaStyle=function(e,t){return Oc(this,e,t)},e}(),Ac=function(){function e(e){this.value=e}return e}(),jc=function(){function e(){this._len=0}return e.prototype.insert=function(e){var t=new Ac(e);return this.insertEntry(t),t},e.prototype.insertEntry=function(e){this.head?(this.tail.next=e,e.prev=this.tail,e.next=null,this.tail=e):this.head=this.tail=e,this._len++},e.prototype.remove=function(e){var t=e.prev,n=e.next;t?t.next=n:this.head=n,n?n.prev=t:this.tail=t,e.next=e.prev=null,this._len--},e.prototype.len=function(){return this._len},e.prototype.clear=function(){this.head=this.tail=null,this._len=0},e}(),Mc=function(){function e(e){this._list=new jc,this._maxSize=10,this._map={},this._maxSize=e}return e.prototype.put=function(e,t){var n=this._list,r=this._map,i=null;if(r[e]==null){var a=n.len(),o=this._lastRemovedEntry;if(a>=this._maxSize&&a>0){var s=n.head;n.remove(s),delete r[s.key],i=s.value,this._lastRemovedEntry=s}o?o.value=t:o=new Ac(t),o.key=e,n.insertEntry(o),r[e]=o}return i},e.prototype.get=function(e){var t=this._map[e],n=this._list;if(t!=null)return t!==n.tail&&(n.remove(t),n.insertEntry(t)),t.value},e.prototype.clear=function(){this._list.clear(),this._map={}},e.prototype.len=function(){return this._list.len()},e}(),Nc=new Mc(50);function Pc(e){if(typeof e==`string`){var t=Nc.get(e);return t&&t.image}return e}function Fc(e,t,n,r,i){if(!e)return t;if(typeof e==`string`){if(t&&t.__zrImageSrc===e||!n)return t;var a=Nc.get(e),o={hostEl:n,cb:r,cbPayload:i};return a?(t=a.image,!Lc(t)&&a.pending.push(o)):(t=as.loadImage(e,Ic,Ic),t.__zrImageSrc=e,Nc.put(e,t.__cachedImgObj={image:t,pending:[o]})),t}return e}function Ic(){var e=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var t=0;tu||d>f||p>m||h>g)return!1;var _=!(u=e.x&&t<=e.x+e.width&&n>=e.y&&n<=e.y+e.height},e.prototype.contain=function(t,n){return e.contain(this,t,n)},e.prototype.clone=function(){return new e(this.x,this.y,this.width,this.height)},e.prototype.copy=function(e){wl(this,e)},e.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},e.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},e.prototype.isZero=function(){return this.width===0||this.height===0},e.create=function(t){return new e(t?t.x:0,t?t.y:0,t?t.width:0,t?t.height:0)},e.copy=function(e,t){return e.x=t.x,e.y=t.y,e.width=t.width,e.height=t.height,e},e.applyTransform=function(e,t,n){if(!n){e!==t&&wl(e,t);return}if(n[1]<1e-5&&n[1]>-1e-5&&n[2]<1e-5&&n[2]>-1e-5){var r=n[0],i=n[3],a=n[4],o=n[5];e.x=t.x*r+a,e.y=t.y*i+o,e.width=t.width*r,e.height=t.height*i,e.width<0&&(e.x+=e.width,e.width=-e.width),e.height<0&&(e.y+=e.height,e.height=-e.height);return}ml.x=gl.x=t.x,ml.y=_l.y=t.y,hl.x=_l.x=t.x+t.width,hl.y=gl.y=t.y+t.height,ml.transform(n),_l.transform(n),hl.transform(n),gl.transform(n),e.x=ll(ml.x,hl.x,gl.x,_l.x),e.y=ll(ml.y,hl.y,gl.y,_l.y);var s=ul(ml.x,hl.x,gl.x,_l.x),c=ul(ml.y,hl.y,gl.y,_l.y);e.width=s-e.x,e.height=c-e.y},e.calculateTransform=function(e,t,n){var r=n.width/t.width,i=n.height/t.height;return e=zc(e||[]),Hc(e,e,Jc(Ol,-t.x,-t.y)),Wc(e,e,Jc(Ol,r,i)),Hc(e,e,Jc(Ol,n.x,n.y)),e},e}();Sl.create;var Cl=Sl.set,wl=Sl.copy,Tl=Sl.calculateTransform;Sl.applyTransform,Sl.contain;var El=new Sl(0,0,0,0),Dl=new Sl(0,0,0,0),Ol=[];function kl(e,t,n,r,i,a,o,s){var c=dl(t-n),l=dl(r-e),u=ll(c,l),d=fl[i],f=fl[1-i],p=pl[i];t=l||!vl.bidirectional)&&(yl[d]=-l,yl[f]=0,vl.useDir&&vl.calcDirMTV())))}function Al(){var e=0,t=new cl,n=new cl,r={minTv:new cl,maxTv:new cl,useDir:!1,dirMinTv:new cl,touchThreshold:0,bidirectional:!0,negativeSize:!1,reset:function(i,a){r.touchThreshold=0,i&&i.touchThreshold!=null&&(r.touchThreshold=ul(0,i.touchThreshold)),r.negativeSize=!1,a&&(r.minTv.set(1/0,1/0),r.maxTv.set(0,0),r.useDir=!1,i&&i.direction!=null&&(r.useDir=!0,r.dirMinTv.copy(r.minTv),n.copy(r.minTv),e=i.direction,r.bidirectional=i.bidirectional==null||!!i.bidirectional,r.bidirectional||t.set(Math.cos(e),Math.sin(e))))},calcDirMTV:function(){var a=r.minTv,o=r.dirMinTv,s=a.y*a.y+a.x*a.x,c=Math.sin(e),l=Math.cos(e),u=c*a.y+l*a.x;if(i(u)){i(a.x)&&i(a.y)&&o.set(0,0);return}if(n.x=s*l/u,n.y=s*c/u,i(n.x)&&i(n.y)){o.set(0,0);return}(r.bidirectional||t.dot(n)>0)&&n.len()=Fl)){e||=`12px sans-serif`;for(var t=[],n=+new Date,r=0;r<=127;r++)t[r]=as.measureText(String.fromCharCode(r),e).width;var i=+new Date-n;return i>16?Pl=Fl:i>2&&Pl++,t}}var Pl=0,Fl=5;function Il(e,t){return e.asciiWidthMapTried||=(e.asciiWidthMap=Nl(e.font),!0),0<=t&&t<=127?e.asciiWidthMap==null?e.asciiCharWidth:e.asciiWidthMap[t]:e.stWideCharWidth}function Ll(e,t){var n=e.strWidthCache,r=n.get(t);return r??(r=as.measureText(t,e.font).width,n.put(t,r)),r}function Rl(e,t,n,r){var i=Ll(jl(t),e),a=Hl(t);return new Sl(Bl(0,i,n),Vl(0,a,r),i,a)}function zl(e,t,n,r){var i=((e||``)+``).split(` -`);if(i.length===1)return Rl(i[0],t,n,r);for(var a=new Sl(0,0,0,0),o=0;o=0?parseFloat(e)/100*t:parseFloat(e):e}function Wl(e,t,n){var r=t.position||`inside`,i=t.distance==null?5:t.distance,a=n.height,o=n.width,s=a/2,c=n.x,l=n.y,u=`left`,d=`top`;if(r instanceof Array)c+=Ul(r[0],n.width),l+=Ul(r[1],n.height),u=null,d=null;else switch(r){case`left`:c-=i,l+=s,u=`right`,d=`middle`;break;case`right`:c+=i+o,l+=s,d=`middle`;break;case`top`:c+=o/2,l-=i,u=`center`,d=`bottom`;break;case`bottom`:c+=o/2,l+=a+i,u=`center`;break;case`inside`:c+=o/2,l+=s,u=`center`,d=`middle`;break;case`insideLeft`:c+=i,l+=s,d=`middle`;break;case`insideRight`:c+=o-i,l+=s,u=`right`,d=`middle`;break;case`insideTop`:c+=o/2,l+=i,u=`center`;break;case`insideBottom`:c+=o/2,l+=a-i,u=`center`,d=`bottom`;break;case`insideTopLeft`:c+=i,l+=i;break;case`insideTopRight`:c+=o-i,l+=i,u=`right`;break;case`insideBottomLeft`:c+=i,l+=a-i,d=`bottom`;break;case`insideBottomRight`:c+=o-i,l+=a-i,u=`right`,d=`bottom`}return e||={},e.x=c,e.y=l,e.align=u,e.verticalAlign=d,e}var Gl=/\{([a-zA-Z0-9_]+)\|([^}]*)\}/g;function Kl(e,t,n,r,i,a){if(!n){e.text=``,e.isTruncated=!1;return}var o=(t+``).split(` -`);a=ql(n,r,i,a);for(var s=!1,c={},l=0,u=o.length;l=s;l++)c-=s;var u=Ll(o,n);return u>c&&(n=``,u=0),c=e-u,i.ellipsis=n,i.ellipsisWidth=u,i.contentWidth=c,i.containerWidth=e,i}function Jl(e,t,n){var r=n.containerWidth,i=n.contentWidth,a=n.fontMeasureInfo;if(!r){e.textLine=``,e.isTruncated=!1;return}var o=Ll(a,t);if(o<=r){e.textLine=t,e.isTruncated=!1;return}for(var s=0;;s++){if(o<=i||s>=n.maxIterations){t+=n.ellipsis;break}var c=s===0?Yl(t,i,a):o>0?Math.floor(t.length*i/o):0;t=t.substr(0,c),o=Ll(a,t)}t===``&&(t=n.placeholder),e.textLine=t,e.isTruncated=!0}function Yl(e,t,n){for(var r=0,i=0,a=e.length;ig&&p){var y=Math.floor(g/f);m||=_.length>y,_=_.slice(0,y),v=_.length*f}if(i&&u&&h!=null)for(var b=ql(h,l,t.ellipsis,{minChar:t.truncateMinChar,placeholder:t.placeholder}),x={},S=0;S<_.length;S++)Jl(x,_[S],b),_[S]=x.textLine,m||=x.isTruncated;for(var C=g,w=0,T=jl(l),S=0;S<_.length;S++)w=Math.max(Ll(T,_[S]),w);h??=w;var E=h;return C+=c,E+=s,{lines:_,height:g,outerWidth:E,outerHeight:C,lineHeight:f,calculatedLineHeight:d,contentWidth:w,contentHeight:v,width:h,isTruncated:m}}var Zl=function(){function e(){}return e}(),Ql=function(){function e(e){this.tokens=[],e&&(this.tokens=e)}return e}(),$l=function(){function e(){this.width=0,this.height=0,this.contentWidth=0,this.contentHeight=0,this.outerWidth=0,this.outerHeight=0,this.lines=[],this.isTruncated=!1}return e}();function eu(e,t,n,r,i){var a=new $l,o=lu(e);if(!o)return a;var s=t.padding,c=s?s[1]+s[3]:0,l=s?s[0]+s[2]:0,u=t.width;u==null&&n!=null&&(u=n-c);var d=t.height;d==null&&r!=null&&(d=r-l);for(var f=t.overflow,p=(f===`break`||f===`breakAll`)&&u!=null?{width:u,accumWidth:0,breakAll:f===`breakAll`}:null,m=Gl.lastIndex=0,h;(h=Gl.exec(o))!=null;){var g=h.index;g>m&&tu(a,o.substring(m,g),t,p),tu(a,h[2],t,p,h[1]),m=Gl.lastIndex}md){var te=a.lines.length;O>0?(T.tokens=T.tokens.slice(0,O),C(T,D,E),a.lines=a.lines.slice(0,w+1)):a.lines=a.lines.slice(0,w),a.isTruncated=a.isTruncated||a.lines.length0&&m+r.accumWidth>r.width&&(u=t.split(` -`),l=!0),r.accumWidth=m}else{var h=au(t,c,r.width,r.breakAll,r.accumWidth);r.accumWidth=h.accumWidth+p,d=h.linesWidths,u=h.lines}}u||=t.split(` -`);for(var g=jl(c),_=0;_=32&&t<=591||t>=880&&t<=4351||t>=4608&&t<=5119||t>=7680&&t<=8303}var ru=ks(`,&?/;] `.split(``),function(e,t){return e[t]=!0,e},{});function iu(e){return!nu(e)||!!ru[e]}function au(e,t,n,r,i){for(var a=[],o=[],s=``,c=``,l=0,u=0,d=jl(t),f=0;fn:i+u+m>n){u?(s||c)&&(h?(s||(s=c,c=``,l=0,u=l),a.push(s),o.push(u-l),c+=p,l+=m,s=``,u=l):(c&&(s+=c,c=``,l=0),a.push(s),o.push(u),s=p,u=m)):h?(a.push(c),o.push(l),c=p,l=m):(a.push(p),o.push(m));continue}u+=m,h?(c+=p,l+=m):(c&&(s+=c,c=``,l=0),s+=p)}return c&&(s+=c),s&&(a.push(s),o.push(u)),a.length===1&&(u+=i),{accumWidth:u,lines:a,linesWidths:o}}function ou(e,t,n,r,i,a){if(e.baseX=n,e.baseY=r,e.outerWidth=e.outerHeight=null,t){var o=t.width*2,s=t.height*2;Sl.set(su,Bl(n,o,i),Vl(r,s,a),o,s),Sl.intersect(t,su,null,cu);var c=cu.outIntersectRect;e.outerWidth=c.width,e.outerHeight=c.height,e.baseX=Bl(c.x,c.width,i,!0),e.baseY=Vl(c.y,c.height,a,!0)}}var su=new Sl(0,0,0,0),cu={outIntersectRect:{},clamp:!0};function lu(e){return e==null?e=``:e+=``}function uu(e){var t=lu(e.text),n=e.font;return du(e,Ll(jl(n),t),Hl(n),null)}function du(e,t,n,r){var i=new Sl(Bl(e.x||0,t,e.textAlign),Vl(e.y||0,n,e.textBaseline),t,n),a=r??(fu(e)?e.lineWidth:0);return a>0&&(i.x-=a/2,i.y-=a/2,i.width+=a,i.height+=a),i}function fu(e){var t=e.stroke;return t!=null&&t!==`none`&&e.lineWidth>0}var pu=zc,mu=5e-5;function hu(e){return e>mu||e<-mu}var gu=[],_u=[],vu=Rc(),yu=Math.abs,bu=function(){function e(){}return e.prototype.getLocalTransform=function(e){return xu(this,e)},e.prototype.setPosition=function(e){this.x=e[0],this.y=e[1]},e.prototype.setScale=function(e){this.scaleX=e[0],this.scaleY=e[1]},e.prototype.setSkew=function(e){this.skewX=e[0],this.skewY=e[1]},e.prototype.setOrigin=function(e){this.originX=e[0],this.originY=e[1]},e.prototype.needLocalTransform=function(){return hu(this.rotation)||hu(this.x)||hu(this.y)||hu(this.scaleX-1)||hu(this.scaleY-1)||hu(this.skewX)||hu(this.skewY)},e.prototype.updateTransform=function(){var e=this.parent&&this.parent.transform,t=this.needLocalTransform(),n=this.transform;if(!(t||e)){n&&(pu(n),this.invTransform=null);return}n||=Rc(),t?this.getLocalTransform(n):pu(n),e&&(t?Vc(n,e,n):Bc(n,e)),this.transform=n,this._resolveGlobalScaleRatio(n),this.invTransform=this.invTransform||Rc(),Gc(this.invTransform,n)},e.prototype._resolveGlobalScaleRatio=function(e){var t=this.globalScaleRatio;if(t!=null&&t!==1){this.getGlobalScale(gu);var n=gu[0]<0?-1:1,r=gu[1]<0?-1:1,i=((gu[0]-n)*t+n)/gu[0]||0,a=((gu[1]-r)*t+r)/gu[1]||0;e[0]*=i,e[1]*=i,e[2]*=a,e[3]*=a}},e.prototype.getComputedTransform=function(){for(var e=this,t=[];e;)t.push(e),e=e.parent;for(;e=t.pop();)e.updateTransform();return this.transform},e.prototype.setLocalTransform=function(e){if(e){var t=e[0]*e[0]+e[1]*e[1],n=e[2]*e[2]+e[3]*e[3],r=Math.atan2(e[1],e[0]),i=Math.PI/2+r-Math.atan2(e[3],e[2]);n=Math.sqrt(n)*Math.cos(i),t=Math.sqrt(t),this.skewX=i,this.skewY=0,this.rotation=-r,this.x=+e[4],this.y=+e[5],this.scaleX=t,this.scaleY=n,this.originX=0,this.originY=0}},e.prototype.decomposeTransform=function(){if(this.transform){var e=this.parent,t=this.transform;e&&e.transform&&(e.invTransform=e.invTransform||Rc(),Vc(_u,e.invTransform,t),t=_u);var n=this.originX,r=this.originY;(n||r)&&(vu[4]=n,vu[5]=r,Vc(_u,t,vu),_u[4]-=n,_u[5]-=r,t=_u),this.setLocalTransform(t)}},e.prototype.getGlobalScale=function(e){var t=this.transform;return e||=[],t?(e[0]=Math.sqrt(t[0]*t[0]+t[1]*t[1]),e[1]=Math.sqrt(t[2]*t[2]+t[3]*t[3]),t[0]<0&&(e[0]=-e[0]),t[3]<0&&(e[1]=-e[1]),e):(e[0]=1,e[1]=1,e)},e.prototype.transformCoordToLocal=function(e,t){var n=[e,t],r=this.invTransform;return r&&al(n,n,r),n},e.prototype.transformCoordToGlobal=function(e,t){var n=[e,t],r=this.transform;return r&&al(n,n,r),n},e.prototype.getLineScale=function(){var e=this.transform;return e&&yu(e[0]-1)>1e-10&&yu(e[3]-1)>1e-10?Math.sqrt(yu(e[0]*e[3]-e[2]*e[1])):1},e.prototype.copyTransform=function(e){Cu(this,e)},e.getLocalTransform=function(e,t){t||=[];var n=e.originX||0,r=e.originY||0,i=e.scaleX,a=e.scaleY,o=e.anchorX,s=e.anchorY,c=e.rotation||0,l=e.x,u=e.y,d=e.skewX?Math.tan(e.skewX):0,f=e.skewY?Math.tan(-e.skewY):0;if(n||r||o||s){var p=n+o,m=r+s;t[4]=-p*i-d*m*a,t[5]=-m*a-f*p*i}else t[4]=t[5]=0;return t[0]=i,t[3]=a,t[1]=f*i,t[2]=d*a,c&&Uc(t,t,c),t[4]+=n+l,t[5]+=r+u,t},e.initDefaultProps=(function(){var t=e.prototype;t.scaleX=t.scaleY=t.globalScaleRatio=1,t.x=t.y=t.originX=t.originY=t.skewX=t.skewY=t.rotation=t.anchorX=t.anchorY=0})(),e}(),xu=bu.getLocalTransform,Su=[`x`,`y`,`originX`,`originY`,`anchorX`,`anchorY`,`rotation`,`scaleX`,`scaleY`,`skewX`,`skewY`];function Cu(e,t){return Cs(e,t,Su)}var wu={linear:function(e){return e},quadraticIn:function(e){return e*e},quadraticOut:function(e){return e*(2-e)},quadraticInOut:function(e){return(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1)},cubicIn:function(e){return e*e*e},cubicOut:function(e){return--e*e*e+1},cubicInOut:function(e){return(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2)},quarticIn:function(e){return e*e*e*e},quarticOut:function(e){return 1- --e*e*e*e},quarticInOut:function(e){return(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2)},quinticIn:function(e){return e*e*e*e*e},quinticOut:function(e){return--e*e*e*e*e+1},quinticInOut:function(e){return(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2)},sinusoidalIn:function(e){return 1-Math.cos(e*Math.PI/2)},sinusoidalOut:function(e){return Math.sin(e*Math.PI/2)},sinusoidalInOut:function(e){return .5*(1-Math.cos(Math.PI*e))},exponentialIn:function(e){return e===0?0:1024**(e-1)},exponentialOut:function(e){return e===1?1:1-2**(-10*e)},exponentialInOut:function(e){return e===0?0:e===1?1:(e*=2)<1?.5*1024**(e-1):.5*(-(2**(-10*(e-1)))+2)},circularIn:function(e){return 1-Math.sqrt(1-e*e)},circularOut:function(e){return Math.sqrt(1- --e*e)},circularInOut:function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)},elasticIn:function(e){var t,n=.1,r=.4;return e===0?0:e===1?1:(!n||n<1?(n=1,t=r/4):t=r*Math.asin(1/n)/(2*Math.PI),-(n*2**(10*--e)*Math.sin((e-t)*(2*Math.PI)/r)))},elasticOut:function(e){var t,n=.1,r=.4;return e===0?0:e===1?1:(!n||n<1?(n=1,t=r/4):t=r*Math.asin(1/n)/(2*Math.PI),n*2**(-10*e)*Math.sin((e-t)*(2*Math.PI)/r)+1)},elasticInOut:function(e){var t,n=.1,r=.4;return e===0?0:e===1?1:(!n||n<1?(n=1,t=r/4):t=r*Math.asin(1/n)/(2*Math.PI),(e*=2)<1?-.5*(n*2**(10*--e)*Math.sin((e-t)*(2*Math.PI)/r)):n*2**(-10*--e)*Math.sin((e-t)*(2*Math.PI)/r)*.5+1)},backIn:function(e){var t=1.70158;return e*e*((t+1)*e-t)},backOut:function(e){var t=1.70158;return--e*e*((t+1)*e+t)+1},backInOut:function(e){var t=2.5949095;return(e*=2)<1?.5*(e*e*((t+1)*e-t)):.5*((e-=2)*e*((t+1)*e+t)+2)},bounceIn:function(e){return 1-wu.bounceOut(1-e)},bounceOut:function(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375},bounceInOut:function(e){return e<.5?wu.bounceIn(e*2)*.5:wu.bounceOut(e*2-1)*.5+.5}},Tu=Math.pow,Eu=Math.sqrt,Du=1e-8,Ou=1e-4,ku=Eu(3),Au=1/3,ju=Kc(),Mu=Kc(),Nu=Kc();function Pu(e){return e>-Du&&eDu||e<-Du}function Iu(e,t,n,r,i){var a=1-i;return a*a*(a*e+3*i*t)+i*i*(i*r+3*a*n)}function Lu(e,t,n,r,i){var a=1-i;return 3*(((t-e)*a+2*(n-t)*i)*a+(r-n)*i*i)}function Ru(e,t,n,r,i,a){var o=r+3*(t-n)-e,s=3*(n-t*2+e),c=3*(t-e),l=e-i,u=s*s-3*o*c,d=s*c-9*o*l,f=c*c-3*s*l,p=0;if(Pu(u)&&Pu(d)){if(Pu(s))a[0]=0;else{var m=-c/s;m>=0&&m<=1&&(a[p++]=m)}}else{var h=d*d-4*u*f;if(Pu(h)){var g=d/u,m=-s/o+g,_=-g/2;m>=0&&m<=1&&(a[p++]=m),_>=0&&_<=1&&(a[p++]=_)}else if(h>0){var v=Eu(h),y=u*s+1.5*o*(-d+v),b=u*s+1.5*o*(-d-v);y=y<0?-Tu(-y,Au):Tu(y,Au),b=b<0?-Tu(-b,Au):Tu(b,Au);var m=(-s-(y+b))/(3*o);m>=0&&m<=1&&(a[p++]=m)}else{var x=(2*u*s-3*o*d)/(2*Eu(u*u*u)),S=Math.acos(x)/3,C=Eu(u),w=Math.cos(S),m=(-s-2*C*w)/(3*o),_=(-s+C*(w+ku*Math.sin(S)))/(3*o),T=(-s+C*(w-ku*Math.sin(S)))/(3*o);m>=0&&m<=1&&(a[p++]=m),_>=0&&_<=1&&(a[p++]=_),T>=0&&T<=1&&(a[p++]=T)}}return p}function zu(e,t,n,r,i){var a=6*n-12*t+6*e,o=9*t+3*r-3*e-9*n,s=3*t-3*e,c=0;if(Pu(o)){if(Fu(a)){var l=-s/a;l>=0&&l<=1&&(i[c++]=l)}}else{var u=a*a-4*o*s;if(Pu(u))i[0]=-a/(2*o);else if(u>0){var d=Eu(u),l=(-a+d)/(2*o),f=(-a-d)/(2*o);l>=0&&l<=1&&(i[c++]=l),f>=0&&f<=1&&(i[c++]=f)}}return c}function Bu(e,t,n,r,i,a){var o=(t-e)*i+e,s=(n-t)*i+t,c=(r-n)*i+n,l=(s-o)*i+o,u=(c-s)*i+s,d=(u-l)*i+l;a[0]=e,a[1]=o,a[2]=l,a[3]=d,a[4]=d,a[5]=u,a[6]=c,a[7]=r}function Vu(e,t,n,r,i,a,o,s,c,l,u){var d,f=.005,p=1/0,m,h,g,_;ju[0]=c,ju[1]=l;for(var v=0;v<1;v+=.05)Mu[0]=Iu(e,n,i,o,v),Mu[1]=Iu(t,r,a,s,v),g=il(ju,Mu),g=0&&g=0&&l<=1&&(i[c++]=l)}}else{var u=o*o-4*a*s;if(Pu(u)){var l=-o/(2*a);l>=0&&l<=1&&(i[c++]=l)}else if(u>0){var d=Eu(u),l=(-o+d)/(2*a),f=(-o-d)/(2*a);l>=0&&l<=1&&(i[c++]=l),f>=0&&f<=1&&(i[c++]=f)}}return c}function Ku(e,t,n){var r=e+n-2*t;return r===0?.5:(e-t)/r}function qu(e,t,n,r,i){var a=(t-e)*r+e,o=(n-t)*r+t,s=(o-a)*r+a;i[0]=e,i[1]=a,i[2]=s,i[3]=s,i[4]=o,i[5]=n}function Ju(e,t,n,r,i,a,o,s,c){var l,u=.005,d=1/0;ju[0]=o,ju[1]=s;for(var f=0;f<1;f+=.05){Mu[0]=Uu(e,n,i,f),Mu[1]=Uu(t,r,a,f);var p=il(ju,Mu);p=0&&p=1?1:Ru(0,r,a,1,e,s)&&Iu(0,i,o,1,s[0])}}}var Qu=function(){function e(e){this._inited=!1,this._startTime=0,this._pausedTime=0,this._paused=!1,this._life=e.life||1e3,this._delay=e.delay||0,this.loop=e.loop||!1,this.onframe=e.onframe||cc,this.ondestroy=e.ondestroy||cc,this.onrestart=e.onrestart||cc,e.easing&&this.setEasing(e.easing)}return e.prototype.step=function(e,t){if(this._inited||=(this._startTime=e+this._delay,!0),this._paused){this._pausedTime+=t;return}var n=this._life,r=e-this._startTime-this._pausedTime,i=r/n;i<0&&(i=0),i=Math.min(i,1);var a=this.easingFunc,o=a?a(i):i;if(this.onframe(o),i===1){if(this.loop){var s=r%n;this._startTime=e-s,this._pausedTime=0,this.onrestart()}else return!0}return!1},e.prototype.pause=function(){this._paused=!0},e.prototype.resume=function(){this._paused=!1},e.prototype.setEasing=function(e){this.easing=e,this.easingFunc=Is(e)?e:wu[e]||Zu(e)},e}(),$u={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function ed(e){return e=Math.round(e),e<0?0:e>255?255:e}function td(e){return e=Math.round(e),e<0?0:e>360?360:e}function nd(e){return e<0?0:e>1?1:e}function rd(e){var t=e;return t.length&&t.charAt(t.length-1)===`%`?ed(parseFloat(t)/100*255):ed(parseInt(t,10))}function id(e){var t=e;return t.length&&t.charAt(t.length-1)===`%`?nd(parseFloat(t)/100):nd(parseFloat(t))}function ad(e,t,n){return n<0?n+=1:n>1&&--n,n*6<1?e+(t-e)*n*6:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}function od(e,t,n){return e+(t-e)*n}function sd(e,t,n,r,i){return e[0]=t,e[1]=n,e[2]=r,e[3]=i,e}function cd(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}var ld=new Mc(20),ud=null;function dd(e,t){ud&&cd(ud,t),ud=ld.put(e,ud||t.slice())}function fd(e,t){if(e){t||=[];var n=ld.get(e);if(n)return cd(t,n);e+=``;var r=e.replace(/ /g,``).toLowerCase();if(r in $u)return cd(t,$u[r]),dd(e,t),t;var i=r.length;if(r.charAt(0)===`#`){if(i===4||i===5){var a=parseInt(r.slice(1,4),16);if(!(a>=0&&a<=4095)){sd(t,0,0,0,1);return}return sd(t,(a&3840)>>4|(a&3840)>>8,a&240|(a&240)>>4,a&15|(a&15)<<4,i===5?parseInt(r.slice(4),16)/15:1),dd(e,t),t}if(i===7||i===9){var a=parseInt(r.slice(1,7),16);if(!(a>=0&&a<=16777215)){sd(t,0,0,0,1);return}return sd(t,(a&16711680)>>16,(a&65280)>>8,a&255,i===9?parseInt(r.slice(7),16)/255:1),dd(e,t),t}return}var o=r.indexOf(`(`),s=r.indexOf(`)`);if(o!==-1&&s+1===i){var c=r.substr(0,o),l=r.substr(o+1,s-(o+1)).split(`,`),u=1;switch(c){case`rgba`:if(l.length!==4)return l.length===3?sd(t,+l[0],+l[1],+l[2],1):sd(t,0,0,0,1);u=id(l.pop());case`rgb`:if(l.length>=3)return sd(t,rd(l[0]),rd(l[1]),rd(l[2]),l.length===3?u:id(l[3])),dd(e,t),t;sd(t,0,0,0,1);return;case`hsla`:if(l.length!==4){sd(t,0,0,0,1);return}return l[3]=id(l[3]),pd(l,t),dd(e,t),t;case`hsl`:if(l.length!==3){sd(t,0,0,0,1);return}return pd(l,t),dd(e,t),t;default:return}}sd(t,0,0,0,1)}}function pd(e,t){var n=(parseFloat(e[0])%360+360)%360/360,r=id(e[1]),i=id(e[2]),a=i<=.5?i*(r+1):i+r-i*r,o=i*2-a;return t||=[],sd(t,ed(ad(o,a,n+1/3)*255),ed(ad(o,a,n)*255),ed(ad(o,a,n-1/3)*255),1),e.length===4&&(t[3]=e[3]),t}function md(e){if(e){var t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=a-i,s=(a+i)/2,c,l;if(o===0)c=0,l=0;else{l=s<.5?o/(a+i):o/(2-a-i);var u=((a-t)/6+o/2)/o,d=((a-n)/6+o/2)/o,f=((a-r)/6+o/2)/o;t===a?c=f-d:n===a?c=1/3+u-f:r===a&&(c=2/3+d-u),c<0&&(c+=1),c>1&&--c}var p=[c*360,l,s];return e[3]!=null&&p.push(e[3]),p}}function hd(e,t){var n=fd(e);if(n){for(var r=0;r<3;r++)t<0?n[r]=n[r]*(1-t)|0:n[r]=(255-n[r])*t+n[r]|0,n[r]>255?n[r]=255:n[r]<0&&(n[r]=0);return vd(n,n.length===4?`rgba`:`rgb`)}}function gd(e,t,n){if(t&&t.length&&e>=0&&e<=1){var r=e*(t.length-1),i=Math.floor(r),a=Math.ceil(r),o=fd(t[i]),s=fd(t[a]),c=r-i,l=vd([ed(od(o[0],s[0],c)),ed(od(o[1],s[1],c)),ed(od(o[2],s[2],c)),nd(od(o[3],s[3],c))],`rgba`);return n?{color:l,leftIndex:i,rightIndex:a,value:r}:l}}function _d(e,t,n,r){var i=fd(e);if(e)return i=md(i),t!=null&&(i[0]=td(Is(t)?t(i[0]):t)),n!=null&&(i[1]=id(Is(n)?n(i[1]):n)),r!=null&&(i[2]=id(Is(r)?r(i[2]):r)),vd(pd(i),`rgba`)}function vd(e,t){if(e&&e.length){var n=e[0]+`,`+e[1]+`,`+e[2];return(t===`rgba`||t===`hsva`||t===`hsla`)&&(n+=`,`+e[3]),t+`(`+n+`)`}}function yd(e,t){var n=fd(e);return n?(.299*n[0]+.587*n[1]+.114*n[2])*n[3]/255+(1-n[3])*t:0}var bd=new Mc(100);function xd(e){if(J(e)){var t=bd.get(e);return t||(t=hd(e,-.1),bd.put(e,t)),t}if(Hs(e)){var n=W({},e);return n.colorStops=K(e.colorStops,function(e){return{offset:e.offset,color:hd(e.color,-.1)}}),n}return e}function Sd(e){return e.type===`linear`}function Cd(e){return e.type===`radial`}(function(){return typeof Buffer<`u`&&typeof Buffer.from==`function`?function(e){return Buffer.from(e).toString(`base64`)}:typeof btoa==`function`&&typeof unescape==`function`&&typeof encodeURIComponent==`function`?function(e){return btoa(unescape(encodeURIComponent(e)))}:function(e){return null}})();var wd=Array.prototype.slice;function Td(e,t,n){return(t-e)*n+e}function Ed(e,t,n,r){for(var i=t.length,a=0;ar?t:e,a=Math.min(n,r),o=i[a-1]||{color:[0,0,0,0],offset:0},s=a;so)r.length=o;else for(var s=a;s=1},e.prototype.getAdditiveTrack=function(){return this._additiveTrack},e.prototype.addKeyframe=function(e,t,n){this._needsSort=!0;var r=this.keyframes,i=r.length,a=!1,o=Vd,s=t;if(Os(t)){var c=Pd(t);o=c,(c===1&&!Rs(t[0])||c===2&&!Rs(t[0][0]))&&(a=!0)}else if(Rs(t)&&!Ws(t))o=Fd;else if(J(t)){if(!isNaN(+t))o=Fd;else{var l=fd(t);l&&(s=l,o=Rd)}}else if(Hs(t)){var u=W({},s);u.colorStops=K(t.colorStops,function(e){return{offset:e.offset,color:fd(e.color)}}),Sd(t)?o=zd:Cd(t)&&(o=Bd),s=u}i===0?this.valType=o:(o!==this.valType||o===Vd)&&(a=!0),this.discrete=this.discrete||a;var d={time:e,value:s,rawValue:t,percent:0};return n&&(d.easing=n,d.easingFunc=Is(n)?n:wu[n]||Zu(n)),r.push(d),d},e.prototype.prepare=function(e,t){var n=this.keyframes;this._needsSort&&n.sort(function(e,t){return e.time-t.time});for(var r=this.valType,i=n.length,a=n[i-1],o=this.discrete,s=Ud(r),c=Hd(r),l=0;l=0&&!(a[l].percent<=t);l--);l=d(l,o-2)}else{for(l=u;lt);l++);l=d(l-1,o-2)}p=a[l+1],f=a[l]}if(f&&p){this._lastFr=l,this._lastFrP=t;var m=p.percent-f.percent,h=m===0?1:d((t-f.percent)/m,1);p.easingFunc&&(h=p.easingFunc(h));var g=n?this._additiveValue:c?Wd:e[s];if((Ud(i)||c)&&!g&&(g=this._additiveValue=[]),this.discrete)e[s]=h<1?f.rawValue:p.rawValue;else if(Ud(i))i===Id?Ed(g,f[r],p[r],h):Dd(g,f[r],p[r],h);else if(Hd(i)){var _=f[r],v=p[r],y=i===zd;e[s]={type:y?`linear`:`radial`,x:Td(_.x,v.x,h),y:Td(_.y,v.y,h),colorStops:K(_.colorStops,function(e,t){var n=v.colorStops[t];return{offset:Td(e.offset,n.offset,h),color:Nd(Ed([],e.color,n.color,h))}}),global:v.global},y?(e[s].x2=Td(_.x2,v.x2,h),e[s].y2=Td(_.y2,v.y2,h)):e[s].r=Td(_.r,v.r,h)}else if(c)Ed(g,f[r],p[r],h),n||(e[s]=Nd(g));else{var b=Td(f[r],p[r],h);n?this._additiveValue=b:e[s]=b}n&&this._addToTarget(e)}}},e.prototype._addToTarget=function(e){var t=this.valType,n=this.propName,r=this._additiveValue;t===Fd?e[n]=e[n]+r:t===Rd?(fd(e[n],Wd),Od(Wd,Wd,r,1),e[n]=Nd(Wd)):t===Id?Od(e[n],e[n],r,1):t===Ld&&kd(e[n],e[n],r,1)},e}(),Kd=function(){function e(e,t,n,r){if(this._tracks={},this._trackKeys=[],this._maxTime=0,this._started=0,this._clip=null,this._target=e,this._loop=t,t&&r){bs(`Can' use additive animation on looped animation.`);return}this._additiveAnimators=r,this._allowDiscrete=n}return e.prototype.getMaxTime=function(){return this._maxTime},e.prototype.getDelay=function(){return this._delay},e.prototype.getLoop=function(){return this._loop},e.prototype.getTarget=function(){return this._target},e.prototype.changeTarget=function(e){this._target=e},e.prototype.when=function(e,t,n){return this.whenWithKeys(e,t,Ms(t),n)},e.prototype.whenWithKeys=function(e,t,n,r){for(var i=this._tracks,a=0;a0&&s.addKeyframe(0,Md(c),r),this._trackKeys.push(o)}s.addKeyframe(e,Md(t[o]),r)}return this._maxTime=Math.max(this._maxTime,e),this},e.prototype.pause=function(){this._clip.pause(),this._paused=!0},e.prototype.resume=function(){this._clip.resume(),this._paused=!1},e.prototype.isPaused=function(){return!!this._paused},e.prototype.duration=function(e){return this._maxTime=e,this._force=!0,this},e.prototype._doneCallback=function(){this._setTracksFinished(),this._clip=null;var e=this._doneCbs;if(e)for(var t=e.length,n=0;n0)){this._started=1;for(var t=this,n=[],r=this._maxTime||0,i=0;i1){var o=a.pop();i.addKeyframe(o.time,e[r]),i.prepare(this._maxTime,i.getAdditiveTrack())}}}},e}(),qd=function(){function e(e){e&&(this._$eventProcessor=e)}return e.prototype.on=function(e,t,n,r){this._$handlers||={};var i=this._$handlers;if(typeof t==`function`&&(r=n,n=t,t=null),!n||!e)return this;var a=this._$eventProcessor;t!=null&&a&&a.normalizeQuery&&(t=a.normalizeQuery(t)),i[e]||(i[e]=[]);for(var o=0;o=0:n.inside,y=void 0,b=void 0,x=void 0;v&&this.canBeInsideText()?(y=n.insideFill,b=n.insideStroke,(y==null||y===`auto`)&&(y=this.getInsideTextFill()),(b==null||b===`auto`)&&(b=this.getInsideTextStroke(y),x=!0)):(y=n.outsideFill,b=n.outsideStroke,(y==null||y===`auto`)&&(y=this.getOutsideFill()),(b==null||b===`auto`)&&(b=this.getOutsideStroke(y),x=!0)),y||=`#000`,(y!==g.fill||b!==g.stroke||x!==g.autoStroke||a!==g.align||o!==g.verticalAlign)&&(s=!0,g.fill=y,g.stroke=b,g.autoStroke=x,g.align=a,g.verticalAlign=o,t.setDefaultTextStyle(g)),t.__dirty|=1,s&&t.dirtyStyle(!0)}},e.prototype.canBeInsideText=function(){return!0},e.prototype.getInsideTextFill=function(){return`#fff`},e.prototype.getInsideTextStroke=function(e){return`#000`},e.prototype.getOutsideFill=function(){return this.__zr&&this.__zr.isDarkMode()?Qd:Zd},e.prototype.getOutsideStroke=function(e){var t=this.__zr&&this.__zr.getBackgroundColor(),n=typeof t==`string`&&fd(t);n||=[255,255,255,1];for(var r=n[3],i=this.__zr.isDarkMode(),a=0;a<3;a++)n[a]=n[a]*r+(i?0:255)*(1-r);return n[3]=1,vd(n,`rgba`)},e.prototype.traverse=function(e,t){},e.prototype.attrKV=function(e,t){e===`textConfig`?this.setTextConfig(t):e===`textContent`?this.setTextContent(t):e===`clipPath`?this.setClipPath(t):e===`extra`?(this.extra=this.extra||{},W(this.extra,t)):this[e]=t},e.prototype.hide=function(){this.ignore=!0,this.markRedraw()},e.prototype.show=function(){this.ignore=!1,this.markRedraw()},e.prototype.attr=function(e,t){if(typeof e==`string`)this.attrKV(e,t);else if(Y(e))for(var n=Ms(e),r=0;r0},e.prototype.getState=function(e){return this.states[e]},e.prototype.ensureState=function(e){var t=this.states;return t[e]||(t[e]={}),t[e]},e.prototype.clearStates=function(e){this.useState(ef,!1,e)},e.prototype.useState=function(e,t,n,r){var i=e===ef;if(this.hasState()||!i){var a=this.currentStates,o=this.stateTransition;if(!(Ts(a,e)>=0&&(t||a.length===1))){var s;if(this.stateProxy&&!i&&(s=this.stateProxy(e)),s||=this.states&&this.states[e],!s&&!i){bs(`State `+e+` not exists.`);return}i||this.saveCurrentToNormalState(s);var c=this._textContent,l=hf(this,c,s,r);l&&!this.__inHover&&(this.__inHover=l),this._applyStateObj(e,s,this._normalState,t,_f(this,n,o),o);var u=this._textGuide;return c&&c.useState(e,t,n,!!l),u&&u.useState(e,t,n,!!l),i?(this.currentStates=[],this._normalState={}):t?this.currentStates.push(e):this.currentStates=[e],this._updateAnimationTargets(),this.markRedraw(),!l&&this.__inHover&&(this.__inHover=0,this.__dirty&=-2),s}}},e.prototype.useStates=function(e,t,n){if(!e.length)this.clearStates();else{var r=[],i=this.currentStates,a=e.length,o=a===i.length;if(o){for(var s=0;s=0){var n=this.currentStates.slice();n.splice(t,1),this.useStates(n)}},e.prototype.replaceState=function(e,t,n){var r=this.currentStates.slice(),i=Ts(r,e),a=Ts(r,t)>=0;i>=0?a?r.splice(i,1):r[i]=t:n&&!a&&r.push(t),this.useStates(r)},e.prototype.toggleState=function(e,t){t?this.useState(e,!0):this.removeState(e)},e.prototype._mergeStates=function(e){for(var t={},n,r=0;r=0&&t.splice(n,1)}),this.animators.push(e),n&&n.animation.addAnimator(e),n&&n.wakeUp()},e.prototype.updateDuringAnimation=function(e){this.markRedraw()},e.prototype.stopAnimation=function(e,t){for(var n=this.animators,r=n.length,i=[],a=0;a0&&n.during&&a[0].during(function(e,t){n.during(t)});for(var f=0;f0||i.force&&!o.length){var C=void 0,w=void 0,T=void 0;if(s){w={},f&&(C={});for(var b=0;b0}var vf=`__zr_style_`+Math.round(Math.random()*10),yf={shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowColor:`#000`,opacity:1,blend:`source-over`},bf={style:{shadowBlur:!0,shadowOffsetX:!0,shadowOffsetY:!0,shadowColor:!0,opacity:!0}};yf[vf]=!0;var xf=[`z`,`z2`,`invisible`],Sf=[`invisible`],Cf=function(e){U(t,e);function t(t){return e.call(this,t)||this}return t.prototype._init=function(t){for(var n=Ms(t),r=0;r1e-4){s[0]=e-n,s[1]=t-r,c[0]=e+n,c[1]=t+r;return}if(Mf[0]=Af(i)*n+e,Mf[1]=kf(i)*r+t,Nf[0]=Af(a)*n+e,Nf[1]=kf(a)*r+t,l(s,Mf,Nf),u(c,Mf,Nf),i%=jf,i<0&&(i+=jf),a%=jf,a<0&&(a+=jf),i>a&&!o?a+=jf:ii&&(Pf[0]=Af(p)*n+e,Pf[1]=kf(p)*r+t,l(s,Pf,s),u(c,Pf,c))}var Vf={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},Hf=[],Uf=[],Wf=[],Gf=[],Kf=[],qf=[],Jf=Math.min,Yf=Math.max,Xf=Math.cos,Zf=Math.sin,Qf=Math.abs,$f=Math.PI,ep=$f*2,tp=typeof Float32Array<`u`,np=[];function rp(e){return Math.round(e/$f*1e8)/1e8%2*$f}function ip(e,t){var n=rp(e[0]);n<0&&(n+=ep);var r=n-e[0],i=e[1];i+=r,!t&&i-n>=ep?i=n+ep:t&&n-i>=ep?i=n-ep:!t&&n>i?i=n+(ep-rp(n-i)):t&&n0&&(this._ux=Qf(n/Yd/e)||0,this._uy=Qf(n/Yd/t)||0)},e.prototype.setDPR=function(e){this.dpr=e},e.prototype.setContext=function(e){this._ctx=e},e.prototype.getContext=function(){return this._ctx},e.prototype.beginPath=function(){return this._ctx&&this._ctx.beginPath(),this.reset(),this},e.prototype.reset=function(){this._saveData&&(this._len=0),this._pathSegLen&&(this._pathSegLen=null,this._pathLen=0),this._version++},e.prototype.moveTo=function(e,t){return this._drawPendingPt(),this.addData(Vf.M,e,t),this._ctx&&this._ctx.moveTo(e,t),this._x0=e,this._y0=t,this._xi=e,this._yi=t,this},e.prototype.lineTo=function(e,t){var n=Qf(e-this._xi),r=Qf(t-this._yi),i=n>this._ux||r>this._uy;if(this.addData(Vf.L,e,t),this._ctx&&i&&this._ctx.lineTo(e,t),i)this._xi=e,this._yi=t,this._pendingPtDist=0;else{var a=n*n+r*r;a>this._pendingPtDist&&(this._pendingPtX=e,this._pendingPtY=t,this._pendingPtDist=a)}return this},e.prototype.bezierCurveTo=function(e,t,n,r,i,a){return this._drawPendingPt(),this.addData(Vf.C,e,t,n,r,i,a),this._ctx&&this._ctx.bezierCurveTo(e,t,n,r,i,a),this._xi=i,this._yi=a,this},e.prototype.quadraticCurveTo=function(e,t,n,r){return this._drawPendingPt(),this.addData(Vf.Q,e,t,n,r),this._ctx&&this._ctx.quadraticCurveTo(e,t,n,r),this._xi=n,this._yi=r,this},e.prototype.arc=function(e,t,n,r,i,a){this._drawPendingPt(),np[0]=r,np[1]=i,ip(np,a),r=np[0],i=np[1];var o=i-r;return this.addData(Vf.A,e,t,n,n,r,o,0,+!a),this._ctx&&this._ctx.arc(e,t,n,r,i,a),this._xi=Xf(i)*n+e,this._yi=Zf(i)*n+t,this},e.prototype.arcTo=function(e,t,n,r,i){return this._drawPendingPt(),this._ctx&&this._ctx.arcTo(e,t,n,r,i),this},e.prototype.rect=function(e,t,n,r){return this._drawPendingPt(),this._ctx&&this._ctx.rect(e,t,n,r),this.addData(Vf.R,e,t,n,r),this},e.prototype.closePath=function(){this._drawPendingPt(),this.addData(Vf.Z);var e=this._ctx,t=this._x0,n=this._y0;return e&&e.closePath(),this._xi=t,this._yi=n,this},e.prototype.fill=function(e){e&&e.fill(),this.toStatic()},e.prototype.stroke=function(e){e&&e.stroke(),this.toStatic()},e.prototype.len=function(){return this._len},e.prototype.setData=function(e){if(this._saveData){var t=e.length;!(this.data&&this.data.length===t)&&tp&&(this.data=new Float32Array(t));for(var n=0;n0&&a))for(var o=0;ol.length&&(this._expandData(),l=this.data);for(var u=0;u0&&(this._ctx&&this._ctx.lineTo(this._pendingPtX,this._pendingPtY),this._pendingPtDist=0)},e.prototype._expandData=function(){if(!(this.data instanceof Array)){for(var e=[],t=0;t11&&(this.data=new Float32Array(e)))}},e.prototype.getBoundingRect=function(){Wf[0]=Wf[1]=Kf[0]=Kf[1]=Number.MAX_VALUE,Gf[0]=Gf[1]=qf[0]=qf[1]=-Number.MAX_VALUE;for(var e=this.data,t=0,n=0,r=0,i=0,a=0;an||Qf(v)>r||d===t-1)&&(m=Math.sqrt(_*_+v*v),i=h,a=g);break;case Vf.C:var y=e[d++],b=e[d++],h=e[d++],g=e[d++],x=e[d++],S=e[d++];m=Hu(i,a,y,b,h,g,x,S,10),i=x,a=S;break;case Vf.Q:var y=e[d++],b=e[d++],h=e[d++],g=e[d++];m=Yu(i,a,y,b,h,g,10),i=h,a=g;break;case Vf.A:var C=e[d++],w=e[d++],T=e[d++],E=e[d++],D=e[d++],O=e[d++],k=O+D;d+=1,p&&(o=Xf(D)*T+C,s=Zf(D)*E+w),m=Yf(T,E)*Jf(ep,Math.abs(O)),i=Xf(k)*T+C,a=Zf(k)*E+w;break;case Vf.R:o=i=e[d++],s=a=e[d++];var A=e[d++],j=e[d++];m=A*2+j*2;break;case Vf.Z:var _=o-i,v=s-a;m=Math.sqrt(_*_+v*v),i=o,a=s}m>=0&&(c[u++]=m,l+=m)}return this._pathLen=l,l},e.prototype.rebuildPath=function(e,t){var n=this.data,r=this._ux,i=this._uy,a=this._len,o,s,c,l,u,d,f=t<1,p,m,h=0,g=0,_,v=0,y,b;if(!(f&&(this._pathSegLen||this._calculateLength(),p=this._pathSegLen,m=this._pathLen,_=t*m,!_)))lo:for(var x=0;x0&&(e.lineTo(y,b),v=0),S){case Vf.M:o=c=n[x++],s=l=n[x++],e.moveTo(c,l);break;case Vf.L:u=n[x++],d=n[x++];var w=Qf(u-c),T=Qf(d-l);if(w>r||T>i){if(f){var E=p[g++];if(h+E>_){var D=(_-h)/E;e.lineTo(c*(1-D)+u*D,l*(1-D)+d*D);break lo}h+=E}e.lineTo(u,d),c=u,l=d,v=0}else{var O=w*w+T*T;O>v&&(y=u,b=d,v=O)}break;case Vf.C:var k=n[x++],A=n[x++],j=n[x++],M=n[x++],N=n[x++],ee=n[x++];if(f){var E=p[g++];if(h+E>_){var D=(_-h)/E;Bu(c,k,j,N,D,Hf),Bu(l,A,M,ee,D,Uf),e.bezierCurveTo(Hf[1],Uf[1],Hf[2],Uf[2],Hf[3],Uf[3]);break lo}h+=E}e.bezierCurveTo(k,A,j,M,N,ee),c=N,l=ee;break;case Vf.Q:var k=n[x++],A=n[x++],j=n[x++],M=n[x++];if(f){var E=p[g++];if(h+E>_){var D=(_-h)/E;qu(c,k,j,D,Hf),qu(l,A,M,D,Uf),e.quadraticCurveTo(Hf[1],Uf[1],Hf[2],Uf[2]);break lo}h+=E}e.quadraticCurveTo(k,A,j,M),c=j,l=M;break;case Vf.A:var te=n[x++],P=n[x++],F=n[x++],I=n[x++],L=n[x++],R=n[x++],ne=n[x++],re=!n[x++],ie=F>I?F:I,ae=Qf(F-I)>.001,oe=L+R,z=!1;if(f){var E=p[g++];h+E>_&&(oe=L+R*(_-h)/E,z=!0),h+=E}if(ae&&e.ellipse?e.ellipse(te,P,F,I,ne,L,oe,re):e.arc(te,P,ie,L,oe,re),z)break lo;C&&(o=Xf(L)*F+te,s=Zf(L)*I+P),c=Xf(oe)*F+te,l=Zf(oe)*I+P;break;case Vf.R:o=c=n[x],s=l=n[x+1],u=n[x++],d=n[x++];var B=n[x++],se=n[x++];if(f){var E=p[g++];if(h+E>_){var ce=_-h;e.moveTo(u,d),e.lineTo(u+Jf(ce,B),d),ce-=B,ce>0&&e.lineTo(u+B,d+Jf(ce,se)),ce-=se,ce>0&&e.lineTo(u+Yf(B-ce,0),d+se),ce-=B,ce>0&&e.lineTo(u,d+Yf(se-ce,0));break lo}h+=E}e.rect(u,d,B,se);break;case Vf.Z:if(f){var E=p[g++];if(h+E>_){var D=(_-h)/E;e.lineTo(c*(1-D)+o*D,l*(1-D)+s*D);break lo}h+=E}e.closePath(),c=o,l=s}}},e.prototype.clone=function(){var t=new e,n=this.data;return t.data=n.slice?n.slice():Array.prototype.slice.call(n),t._len=this._len,t},e.prototype.canSave=function(){return!!this._saveData},e.CMD=Vf,e.initDefaultProps=(function(){var t=e.prototype;t._saveData=!0,t._ux=0,t._uy=0,t._pendingPtDist=0,t._version=0})(),e}();function op(e,t,n,r,i,a,o){if(i===0)return!1;var s=i,c=0,l=e;if(o>t+s&&o>r+s||oe+s&&a>n+s||at+d&&u>r+d&&u>a+d&&u>s+d||ue+d&&l>n+d&&l>i+d&&l>o+d||lt+l&&c>r+l&&c>a+l||ce+l&&s>n+l&&s>i+l||sn||u+li&&(i+=dp);var f=Math.atan2(c,s);return f<0&&(f+=dp),f>=r&&f<=i||f+dp>=r&&f+dp<=i}function pp(e,t,n,r,i,a){if(a>t&&a>r||ai?s:0}var mp=ap.CMD,hp=Math.PI*2,gp=1e-4;function _p(e,t){return Math.abs(e-t)t&&l>r&&l>a&&l>s||l1&&bp(),p=Iu(t,r,a,s,yp[0]),f>1&&(m=Iu(t,r,a,s,yp[1]))),f===2?gt&&s>r&&s>a||s=0&&l<=1){for(var u=0,d=Uu(t,r,a,l),f=0;fn||s<-n)return 0;var c=Math.sqrt(n*n-s*s);vp[0]=-c,vp[1]=c;var l=Math.abs(r-i);if(l<1e-4)return 0;if(l>=hp-1e-4){r=0,i=hp;var u=a?1:-1;return o>=vp[0]+e&&o<=vp[1]+e?u:0}if(r>i){var d=r;r=i,i=d}r<0&&(r+=hp,i+=hp);for(var f=0,p=0;p<2;p++){var m=vp[p];if(m+e>o){var h=Math.atan2(s,m),u=a?1:-1;h<0&&(h=hp+h),(h>=r&&h<=i||h+hp>=r&&h+hp<=i)&&(h>Math.PI/2&&h1&&(n||(s+=pp(c,l,u,d,r,i))),g&&(c=a[m],l=a[m+1],u=c,d=l),h){case mp.M:u=a[m++],d=a[m++],c=u,l=d;break;case mp.L:if(n){if(op(c,l,a[m],a[m+1],t,r,i))return!0}else s+=pp(c,l,a[m],a[m+1],r,i)||0;c=a[m++],l=a[m++];break;case mp.C:if(n){if(sp(c,l,a[m++],a[m++],a[m++],a[m++],a[m],a[m+1],t,r,i))return!0}else s+=xp(c,l,a[m++],a[m++],a[m++],a[m++],a[m],a[m+1],r,i)||0;c=a[m++],l=a[m++];break;case mp.Q:if(n){if(cp(c,l,a[m++],a[m++],a[m],a[m+1],t,r,i))return!0}else s+=Sp(c,l,a[m++],a[m++],a[m],a[m+1],r,i)||0;c=a[m++],l=a[m++];break;case mp.A:var _=a[m++],v=a[m++],y=a[m++],b=a[m++],x=a[m++],S=a[m++];m+=1;var C=!!(1-a[m++]);f=Math.cos(x)*y+_,p=Math.sin(x)*b+v,g?(u=f,d=p):s+=pp(c,l,f,p,r,i);var w=(r-_)*b/y+_;if(n){if(fp(_,v,b,x,x+S,C,t,w,i))return!0}else s+=Cp(_,v,b,x,x+S,C,w,i);c=Math.cos(x+S)*y+_,l=Math.sin(x+S)*b+v;break;case mp.R:u=c=a[m++],d=l=a[m++];var T=a[m++],E=a[m++];if(f=u+T,p=d+E,n){if(op(u,d,f,d,t,r,i)||op(f,d,f,p,t,r,i)||op(f,p,u,p,t,r,i)||op(u,p,u,d,t,r,i))return!0}else s+=pp(f,d,f,p,r,i),s+=pp(u,p,u,d,r,i);break;case mp.Z:if(n){if(op(c,l,u,d,t,r,i))return!0}else s+=pp(c,l,u,d,r,i);c=u,l=d}}return!n&&!_p(l,d)&&(s+=pp(c,l,u,d,r,i)||0),s!==0}function Tp(e,t,n){return wp(e,0,!1,t,n)}function Ep(e,t,n,r){return wp(e,t,!0,n,r)}var Dp=ws({fill:`#000`,stroke:null,strokePercent:1,fillOpacity:1,strokeOpacity:1,lineDashOffset:0,lineWidth:1,lineCap:`butt`,miterLimit:10,strokeNoScale:!1,strokeFirst:!1},yf),Op={style:ws({fill:!0,stroke:!0,strokePercent:!0,fillOpacity:!0,strokeOpacity:!0,lineDashOffset:!0,lineWidth:!0,miterLimit:!0},bf.style)},kp=Su.concat([`invisible`,`culling`,`z`,`z2`,`zlevel`,`parent`]),Ap=function(e){U(t,e);function t(t){return e.call(this,t)||this}return t.prototype.update=function(){var n=this;e.prototype.update.call(this);var r=this.style;if(r.decal){var i=this._decalEl=this._decalEl||new t;i.buildPath===t.prototype.buildPath&&(i.buildPath=function(e){n.buildPath(e,n.shape)}),i.silent=!0;var a=i.style;for(var o in r)a[o]!==r[o]&&(a[o]=r[o]);a.fill=r.fill?r.decal:null,a.decal=null,a.shadowColor=null,r.strokeFirst&&(a.stroke=null);for(var s=0;s.5?Zd:t>.2?$d:Qd}if(e)return Qd}return Zd},t.prototype.getInsideTextStroke=function(e){var t=this.style.fill;if(J(t)){var n=this.__zr;if(!!(n&&n.isDarkMode())==yd(e,0)<.4)return t}},t.prototype.buildPath=function(e,t,n){},t.prototype.pathUpdated=function(){this.__dirty&=-5},t.prototype.getUpdatedPathProxy=function(e){return!this.path&&this.createPathProxy(),this.path.beginPath(),this.buildPath(this.path,this.shape,e),this.path},t.prototype.createPathProxy=function(){this.path=new ap(!1)},t.prototype.hasStroke=function(){var e=this.style,t=e.stroke;return!(t==null||t===`none`||!(e.lineWidth>0))},t.prototype.hasFill=function(){var e=this.style.fill;return e!=null&&e!==`none`},t.prototype.getBoundingRect=function(){var e=this._rect,t=this.style,n=!e;if(n){var r=!1;this.path||(r=!0,this.createPathProxy());var i=this.path;(r||this.__dirty&4)&&(i.beginPath(),this.buildPath(i,this.shape,!1),this.pathUpdated()),e=i.getBoundingRect()}if(this._rect=e,this.hasStroke()&&this.path&&this.path.len()>0){var a=this._rectStroke||=e.clone();if(this.__dirty||n){a.copy(e);var o=t.strokeNoScale?this.getLineScale():1,s=t.lineWidth;if(!this.hasFill()){var c=this.strokeContainThreshold;s=Math.max(s,c??4)}o>1e-10&&(a.width+=s/o,a.height+=s/o,a.x-=s/o/2,a.y-=s/o/2)}return a}return e},t.prototype.contain=function(e,t){var n=this.transformCoordToLocal(e,t),r=this.getBoundingRect(),i=this.style;if(e=n[0],t=n[1],r.contain(e,t)){var a=this.path;if(this.hasStroke()){var o=i.lineWidth,s=i.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(this.hasFill()||(o=Math.max(o,this.strokeContainThreshold)),Ep(a,o/s,e,t)))return!0}if(this.hasFill())return Tp(a,e,t)}return!1},t.prototype.dirtyShape=function(){this.__dirty|=4,this._rect&&=null,this._decalEl&&this._decalEl.dirtyShape(),this.markRedraw()},t.prototype.dirty=function(){this.dirtyStyle(),this.dirtyShape()},t.prototype.animateShape=function(e){return this.animate(`shape`,e)},t.prototype.updateDuringAnimation=function(e){e===`style`?this.dirtyStyle():e===`shape`?this.dirtyShape():this.markRedraw()},t.prototype.attrKV=function(t,n){t===`shape`?this.setShape(n):e.prototype.attrKV.call(this,t,n)},t.prototype.setShape=function(e,t){var n=this.shape;return n||=this.shape={},typeof e==`string`?n[e]=t:W(n,e),this.dirtyShape(),this},t.prototype.shapeChanged=function(){return!!(this.__dirty&4)},t.prototype.createStyle=function(e){return ac(Dp,e)},t.prototype._innerSaveToNormal=function(t){e.prototype._innerSaveToNormal.call(this,t);var n=this._normalState;t.shape&&!n.shape&&(n.shape=W({},this.shape))},t.prototype._applyStateObj=function(t,n,r,i,a,o){if(e.prototype._applyStateObj.call(this,t,n,r,i,a,o),this.__inHover!==1){var s=!(n&&i),c;if(n&&n.shape?a?i?c=n.shape:(c=W({},r.shape),W(c,n.shape)):(c=W({},i?this.shape:r.shape),W(c,n.shape)):s&&(c=r.shape),c){if(a){this.shape=W({},this.shape);for(var l={},u=Ms(c),d=0;di&&(d=s+c,s*=i/d,c*=i/d),l+u>i&&(d=l+u,l*=i/d,u*=i/d),c+l>a&&(d=c+l,c*=a/d,l*=a/d),s+u>a&&(d=s+u,s*=a/d,u*=a/d),e.moveTo(n+s,r),e.lineTo(n+i-c,r),c!==0&&e.arc(n+i-c,r+c,c,-Math.PI/2,0),e.lineTo(n+i,r+a-l),l!==0&&e.arc(n+i-l,r+a-l,l,0,Math.PI/2),e.lineTo(n+u,r+a),u!==0&&e.arc(n+u,r+a-u,u,Math.PI/2,Math.PI),e.lineTo(n,r+s),s!==0&&e.arc(n+s,r+s,s,Math.PI,Math.PI*1.5),e.closePath()}var Rp=Math.round;function zp(e,t,n){if(t){var r=t.x1,i=t.x2,a=t.y1,o=t.y2;e.x1=r,e.x2=i,e.y1=a,e.y2=o;var s=n&&n.lineWidth;return s?(Rp(r*2)===Rp(i*2)&&(e.x1=e.x2=Vp(r,s,!0)),Rp(a*2)===Rp(o*2)&&(e.y1=e.y2=Vp(a,s,!0)),e):e}}function Bp(e,t,n){if(t){var r=t.x,i=t.y,a=t.width,o=t.height;e.x=r,e.y=i,e.width=a,e.height=o;var s=n&&n.lineWidth;return s?(e.x=Vp(r,s,!0),e.y=Vp(i,s,!0),e.width=Math.max(Vp(r+a,s,!1)-e.x,a===0?0:1),e.height=Math.max(Vp(i+o,s,!1)-e.y,o===0?0:1),e):e}}function Vp(e,t,n){if(!t)return e;var r=Rp(e*2);return(r+Rp(t))%2==0?r/2:(r+(n?1:-1))/2}var Hp=function(){function e(){this.x=0,this.y=0,this.width=0,this.height=0}return e}(),Up={},Wp=function(e){U(t,e);function t(t){return e.call(this,t)||this}return t.prototype.getDefaultShape=function(){return new Hp},t.prototype.buildPath=function(e,t){var n,r,i,a;if(this.subPixelOptimize){var o=Bp(Up,t,this.style);n=o.x,r=o.y,i=o.width,a=o.height,o.r=t.r,t=o}else n=t.x,r=t.y,i=t.width,a=t.height;t.r?Lp(e,t):e.rect(n,r,i,a)},t.prototype.isZeroArea=function(){return!this.shape.width||!this.shape.height},t}(Ap);Wp.prototype.type=`rect`;var Gp={fill:`#000`},Kp=2,qp={},Jp={style:ws({fill:!0,stroke:!0,fillOpacity:!0,strokeOpacity:!0,lineWidth:!0,fontSize:!0,lineHeight:!0,width:!0,height:!0,textShadowColor:!0,textShadowBlur:!0,textShadowOffsetX:!0,textShadowOffsetY:!0,backgroundColor:!0,padding:!0,borderColor:!0,borderWidth:!0,borderRadius:!0},bf.style)},Yp=function(e){U(t,e);function t(t){var n=e.call(this)||this;return n.type=`text`,n._children=[],n._defaultStyle=Gp,n.attr(t),n}return t.prototype.childrenRef=function(){return this._children},t.prototype.update=function(){e.prototype.update.call(this),this.styleChanged()&&this._updateSubTexts();for(var t=0;t0,T=0;T=0&&(D=y[E],D.align===`right`);)this._placeToken(D,e,x,m,T,`right`,g),S-=D.width,T-=D.width,E--;for(w+=(s-(w-p)-(h-T)-S)/2;C<=E;)D=y[C],this._placeToken(D,e,x,m,w+D.width/2,`center`,g),w+=D.width,C++;m+=x}},t.prototype._placeToken=function(e,t,n,r,i,a,o){var s=t.rich[e.styleName]||{};s.text=e.text;var c=e.verticalAlign,l=r+n/2;c===`top`?l=r+e.height/2:c===`bottom`&&(l=r+n-e.height/2),!e.isLineHolder&&cm(s)&&this._renderBackground(s,t,a===`right`?i-e.width:a===`center`?i-e.width/2:i,l-e.height/2,e.width,e.height);var u=!!s.backgroundColor,d=e.textPadding;d&&(i=om(i,a,d),l-=e.height/2-d[0]-e.innerHeight/2);var f=this._getOrCreateChild(Mp),p=f.createStyle();f.useStyle(p);var m=this._defaultStyle,h=!1,g=0,_=!1,v=am(`fill`in s?s.fill:`fill`in t?t.fill:(h=!0,m.fill)),y=im(`stroke`in s?s.stroke:`stroke`in t?t.stroke:!u&&!o&&(!m.autoStroke||h)?(g=Kp,_=!0,m.stroke):null),b=s.textShadowBlur>0||t.textShadowBlur>0;p.text=e.text,p.x=i,p.y=l,b&&(p.shadowBlur=s.textShadowBlur||t.textShadowBlur||0,p.shadowColor=s.textShadowColor||t.textShadowColor||`transparent`,p.shadowOffsetX=s.textShadowOffsetX||t.textShadowOffsetX||0,p.shadowOffsetY=s.textShadowOffsetY||t.textShadowOffsetY||0),p.textAlign=a,p.textBaseline=`middle`,p.font=e.font||`12px sans-serif`,p.opacity=Ks(s.opacity,t.opacity,1),em(p,s),y&&(p.lineWidth=Ks(s.lineWidth,t.lineWidth,g),p.lineDash=X(s.lineDash,t.lineDash),p.lineDashOffset=t.lineDashOffset||0,p.stroke=y),v&&(p.fill=v),f.setBoundingRect(du(p,e.contentWidth,e.contentHeight,_?0:null))},t.prototype._renderBackground=function(e,t,n,r,i,a){var o=e.backgroundColor,s=e.borderWidth,c=e.borderColor,l=o&&o.image,u=o&&!l,d=e.borderRadius,f=this,p,m;if(u||e.lineHeight||s&&c){p=this._getOrCreateChild(Wp),p.useStyle(p.createStyle()),p.style.fill=null;var h=p.shape;h.x=n,h.y=r,h.width=i,h.height=a,h.r=d,p.dirtyShape()}if(u){var g=p.style;g.fill=o||null,g.fillOpacity=X(e.fillOpacity,1)}else if(l){m=this._getOrCreateChild(Ip),m.onload=function(){f.dirtyStyle()};var _=m.style;_.image=o.image,_.x=n,_.y=r,_.width=i,_.height=a}if(s&&c){var g=p.style;g.lineWidth=s,g.stroke=c,g.strokeOpacity=X(e.strokeOpacity,1),g.lineDash=e.borderDash,g.lineDashOffset=e.borderDashOffset||0,p.strokeContainThreshold=0,p.hasFill()&&p.hasStroke()&&(g.strokeFirst=!0,g.lineWidth*=2)}var v=(p||m).style;v.shadowBlur=e.shadowBlur||0,v.shadowColor=e.shadowColor||`transparent`,v.shadowOffsetX=e.shadowOffsetX||0,v.shadowOffsetY=e.shadowOffsetY||0,v.opacity=Ks(e.opacity,t.opacity,1)},t.makeFont=function(e){var t=``;return tm(e)&&(t=[e.fontStyle,e.fontWeight,$p(e.fontSize),e.fontFamily||`sans-serif`].join(` `)),t&&Xs(t)||e.textFont||e.font},t}(Cf),Xp={left:!0,right:1,center:1},Zp={top:1,bottom:1,middle:1},Qp=[`fontStyle`,`fontWeight`,`fontSize`,`fontFamily`];function $p(e){return typeof e==`string`&&(e.indexOf(`px`)!==-1||e.indexOf(`rem`)!==-1||e.indexOf(`em`)!==-1)?e:isNaN(+e)?`12px`:e+`px`}function em(e,t){for(var n=0;n0){if(e<=i)return o;if(e>=a)return s}else if(e>=i)return o;else if(e<=a)return s}else{if(e===i)return o;if(e===a)return s}return(e-i)/c*l+o}var wm=Tm;function Tm(e,t,n){switch(e){case`center`:case`middle`:e=`50%`;break;case`left`:case`top`:e=`0%`;break;case`right`:case`bottom`:e=`100%`}return Em(e,t,n)}function Em(e,t,n){return J(e)?Dm(e)?parseFloat(e)/100*t+(n||0):parseFloat(e):e==null?NaN:+e}function Dm(e){return!!dm(e).match(/%$/)}function Om(e,t,n){return isNaN(t)?n?``+e:+e:(t=fm(pm(0,t),um),e=(+e).toFixed(t),n?e:+e)}function km(e){return e.sort(function(e,t){return e-t}),e}function Am(e){if(e=+e,isNaN(e))return 0;if(e>1e-14){for(var t=1,n=0;n<15;n++,t*=10)if(hm(e*t)/t===e)return n}return jm(e)}function jm(e){var t=e.toString().toLowerCase(),n=t.indexOf(`e`),r=n>0?+t.slice(n+1):0,i=n>0?n:t.length,a=t.indexOf(`.`);return pm(0,(a<0?0:i-1-a)-r)}function Mm(e,t,n){var r=mm(e[1]-e[0]);if(!isFinite(r)||r===0)return NaN;var i=ym(2*mm(n||1)*mm(r))/bm,a=ym(mm(t))/bm,o=pm(0,_m(-i+a));return isFinite(o)||(o=NaN),o}function Nm(e,t){var n=pm(Am(e),Am(t)),r=e+t;return n>um?r:Om(r,n)}var Pm=vm(2,53)-1;function Fm(e){var t=xm*2;return(e%t+t)%t}function Im(e){return e>-lm&&e=10&&t++,t}function Vm(e,t){var n=Bm(e),r=vm(10,n),i=e/r;return e=(t===2?1:t?i<1.5?1:i<2.5?2:i<4?3:i<7?5:10:i<1?1:i<2?2:i<3?3:i<5?5:10)*r,Om(e,-n)}function Hm(e){var t=parseFloat(e);return t==e&&(t!==0||!J(e)||e.indexOf(`x`)<=0)?t:NaN}function Um(e){return!isNaN(Hm(e))}function Wm(){return hm(Sm()*9)}function Gm(e,t){return t===0?e:Gm(t,e%t)}function Km(e,t){return e==null?t:t==null?e:e*t/Gm(e,t)}function qm(e){return e!=null&&isFinite(e)}var Jm=`[ECharts] `,Ym={},Xm=typeof console<`u`&&console.warn&&console.log;function Zm(e,t,n){if(Xm){if(n){if(Ym[t])return;Ym[t]=!0}console[e](Jm+t)}}function Qm(e,t){Zm(`error`,e,t)}function $m(e){throw Error(e)}function eh(e,t,n){return(t-e)*n+e}var th=`series\0`,nh=`\0_ec_\0`;function rh(e){return e instanceof Array?e:e==null?[]:[e]}function ih(e,t,n){if(e){e[t]=e[t]||{},e.emphasis=e.emphasis||{},e.emphasis[t]=e.emphasis[t]||{};for(var r=0,i=n.length;r0?e.length:0),this.item=null,this.key=NaN,this},e.prototype.next=function(){return(this._step>0?this._idx=this._end)&&(this.item=this._list[this._idx],this.key=this._idx+=this._step,!0)},e})();function Ph(){return[1/0,-1/0]}function Fh(e,t){zh(t)&&(te[1]&&(e[1]=t))}function Ih(e,t){zh(t)&&te[1]&&(e[1]=t)}function Rh(e,t){Bh(t[0],t[1])&&(t[0]e[1]&&(e[1]=t[1]))}function zh(e){return e!=null&&isFinite(e)}function Bh(e,t){return zh(e)&&zh(t)&&e<=t}function Vh(e){var t=e[1]-e[0];return isFinite(t)&&t>=0}function Hh(e){Bh(e[0],e[1])&&e[0]>e[1]&&(e[0]=e[1])}function Uh(){var e=`__ec_once_`+Wh++;return function(t,n){sc(t,e)||(t[e]=1,n())}}var Wh=Wm();function Gh(e,t,n){var r=Z(),i=0;G(e,function(a){var o=t(a),s=r.get(o)||0;n&&n(a,s),!s&&!n&&(e[i++]=a),r.set(o,s+1)}),n||(e.length=i)}function Kh(e){return e.value+``}function qh(e){return e+``}function Jh(e,t){return X(t,!0)?e.seriesIndex+2:0}function Yh(e,t,n){var r=e.getData().count();return{progressiveRender:n.progressiveEnabled&&t.incrementalPrepareRender&&r>=n.threshold,large:e.get(`large`)&&r>=e.get(`largeThreshold`),modDataCount:e.get(`progressiveChunkMode`)===`mod`?e.getData().count():null}}function Xh(e){return{overallReset:e}}var Zh=Ch(),Qh=function(e,t,n,r){if(r){var i=Zh(r);i.dataIndex=n,i.dataType=t,i.seriesIndex=e,i.ssrType=`chart`,r.type===`group`&&r.traverse(function(r){var i=Zh(r);i.seriesIndex=e,i.dataIndex=n,i.dataType=t,i.ssrType=`chart`})}},$h=Z([`tooltip`,`label`,`itemName`,`itemId`,`itemGroupId`,`itemChildGroupId`,`seriesName`]),eg=`original`,tg=`arrayRows`,ng=`objectRows`,rg=`keyedColumns`,ig=`typedArray`,ag=`unknown`,og=`column`,sg=[`getDom`,`getZr`,`getWidth`,`getHeight`,`getDevicePixelRatio`,`dispatchAction`,`isSSR`,`isDisposed`,`on`,`off`,`getDataURL`,`getConnectedDataURL`,`getOption`,`getId`,`updateLabelLayout`],cg=function(){function e(e){G(sg,function(t){this[t]=Ps(e[t],e)},this)}return e}();function lg(e,t){return t.mainType===`series`?e.getViewOfSeriesModel(t):e.getViewOfComponentModel(t)}var ug=1,dg={},fg=Ch(),pg=Ch(),mg=[`emphasis`,`blur`,`select`],hg=[`normal`,`emphasis`,`blur`,`select`],gg=`highlight`,_g=`downplay`,vg=`select`,yg=`unselect`,bg=`toggleSelect`,xg=`selectchanged`;function Sg(e){return e!=null&&e!==`none`}function Cg(e,t,n){e.onHoverStateChange&&(e.hoverState||0)!==n&&e.onHoverStateChange(t),e.hoverState=n}function wg(e){Cg(e,`emphasis`,2)}function Tg(e){e.hoverState===2&&Cg(e,`normal`,0)}function Eg(e){Cg(e,`blur`,1)}function Dg(e){e.hoverState===1&&Cg(e,`normal`,0)}function Og(e){e.selected=!0}function kg(e){e.selected=!1}function Ag(e,t,n){t(e,n)}function jg(e,t,n){Ag(e,t,n),e.isGroup&&e.traverse(function(e){Ag(e,t,n)})}function Mg(e,t){switch(t){case`emphasis`:e.hoverState=2;break;case`normal`:e.hoverState=0;break;case`blur`:e.hoverState=1;break;case`select`:e.selected=!0}}function Ng(e,t,n,r){for(var i=e.style,a={},o=0;o=0,a=!1;if(e instanceof Ap){var o=fg(e),s=i&&o.selectFill||o.normalFill,c=i&&o.selectStroke||o.normalStroke;if(Sg(s)||Sg(c)){r||={};var l=r.style||{};l.fill===`inherit`?(a=!0,r=W({},r),l=W({},l),l.fill=s):!Sg(l.fill)&&Sg(s)?(a=!0,r=W({},r),l=W({},l),l.fill=xd(s)):!Sg(l.stroke)&&Sg(c)&&(a||(r=W({},r),l=W({},l)),l.stroke=xd(c)),r.style=l}}if(r&&r.z2==null){a||(r=W({},r));var u=e.z2EmphasisLift;r.z2=e.z2+(u??10)}return r}function Fg(e,t,n){if(n&&n.z2==null){n=W({},n);var r=e.z2SelectLift;n.z2=e.z2+(r??9)}return n}function Ig(e,t,n){var r=Ts(e.currentStates,t)>=0,i=e.style.opacity,a=r?null:Ng(e,[`opacity`],t,{opacity:1});n||={};var o=n.style||{};return o.opacity??(n=W({},n),o=W({opacity:r?i:a.opacity*.1},o),n.style=o),n}function Lg(e,t){var n=this.states[e];if(this.style){if(e===`emphasis`)return Pg(this,e,t,n);if(e===`blur`)return Ig(this,e,n);if(e===`select`)return Fg(this,e,n)}return n}function Rg(e){e.stateProxy=Lg;var t=e.getTextContent(),n=e.getTextGuideLine();t&&(t.stateProxy=Lg),n&&(n.stateProxy=Lg)}function zg(e,t){!qg(e,t)&&!e.__highByOuter&&jg(e,wg)}function Bg(e,t){!qg(e,t)&&!e.__highByOuter&&jg(e,Tg)}function Vg(e,t){e.__highByOuter|=1<<(t||0),jg(e,wg)}function Hg(e,t){!(e.__highByOuter&=~(1<<(t||0)))&&jg(e,Tg)}function Ug(e){jg(e,Eg)}function Wg(e){jg(e,Dg)}function Gg(e){jg(e,Og)}function Kg(e){jg(e,kg)}function qg(e,t){return e.__highDownSilentOnTouch&&t.zrByTouch}function Jg(e){var t=e.getModel(),n=[],r=[];t.eachComponent(function(t,i){var a=pg(i),o=lg(e,i),s=t===`series`;!s&&r.push(o),a.isBlured&&(o.group.traverse(function(e){Dg(e)}),s&&n.push(i)),a.isBlured=!1}),G(r,function(e){e&&e.toggleBlurSeries&&e.toggleBlurSeries(n,!1,t)})}function Yg(e,t,n,r){var i=r.getModel();n||=`coordinateSystem`;function a(e,t){for(var n=0;n0){var a={dataIndex:i,seriesIndex:e.seriesIndex};r!=null&&(a.dataType=r),t.push(a)}})}),t}function i_(e,t,n){d_(e,!0),jg(e,Rg),s_(e,t,n)}function a_(e){d_(e,!1)}function o_(e,t,n,r){r?a_(e):i_(e,t,n)}function s_(e,t,n){var r=Zh(e);t==null?r.focus&&=null:(r.focus=t,r.blurScope=n)}var c_=[`emphasis`,`blur`,`select`],l_={itemStyle:`getItemStyle`,lineStyle:`getLineStyle`,areaStyle:`getAreaStyle`};function u_(e,t,n,r){n||=`itemStyle`;for(var i=0;i1&&(o*=S_(m),s*=S_(m));var h=(i===a?-1:1)*S_((o*o*(s*s)-o*o*(p*p)-s*s*(f*f))/(o*o*(p*p)+s*s*(f*f)))||0,g=h*o*p/s,_=h*-s*f/o,v=(e+n)/2+w_(d)*g-C_(d)*_,y=(t+r)/2+C_(d)*g+w_(d)*_,b=O_([1,0],[(f-g)/o,(p-_)/s]),x=[(f-g)/o,(p-_)/s],S=[(-1*f-g)/o,(-1*p-_)/s],C=O_(x,S);if(D_(x,S)<=-1&&(C=T_),D_(x,S)>=1&&(C=0),C<0){var w=Math.round(C/T_*1e6)/1e6;C=T_*2+w%2*T_}u.addData(l,v,y,o,s,b,C,d,a)}var A_=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,j_=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;function M_(e){var t=new ap;if(!e)return t;var n=0,r=0,i=n,a=r,o,s=ap.CMD,c=e.match(A_);if(!c)return t;for(var l=0;l=0&&(n.splice(r,0,e),this._doAdd(e))}return this},t.prototype.replace=function(e,t){var n=Ts(this._children,e);return n>=0&&this.replaceAt(t,n),this},t.prototype.replaceAt=function(e,t){var n=this._children,r=n[t];if(e&&e!==this&&e.parent!==this&&e!==r){n[t]=e,r.parent=null;var i=this.__zr;i&&r.removeSelfFromZr(i),this._doAdd(e)}return this},t.prototype._doAdd=function(e){e.parent&&e.parent.remove(e),e.parent=this;var t=this.__zr;t&&t!==e.__zr&&e.addSelfToZr(t),t&&t.refresh()},t.prototype.remove=function(e){var t=this.__zr,n=this._children,r=Ts(n,e);return r<0?this:(n.splice(r,1),e.parent=null,t&&e.removeSelfFromZr(t),t&&t.refresh(),this)},t.prototype.removeAll=function(){for(var e=this._children,t=this.__zr,n=0;nA*A+j*j&&(w=E,T=D),{cx:w,cy:T,x0:-u,y0:-d,x1:w*(i/x-1),y1:T*(i/x-1)}}function rv(e){var t;if(q(e)){var n=e.length;if(!n)return e;t=n===1?[e[0],e[0],0,0]:n===2?[e[0],e[0],e[1],e[1]]:n===3?e.concat(e[2]):e}else t=[e,e,e,e];return t}function iv(e,t){var n,r=Q_(t.r,0),i=Q_(t.r0||0,0),a=r>0;if(a||i>0){if(a||(r=i,i=0),i>r){var o=r;r=i,i=o}var s=t.startAngle,c=t.endAngle;if(!(isNaN(s)||isNaN(c))){var l=t.cx,u=t.cy,d=!!t.clockwise,f=X_(c-s),p=f>G_&&f%G_;if(p>ev&&(f=p),!(r>ev))e.moveTo(l,u);else if(f>G_-ev)e.moveTo(l+r*q_(s),u+r*K_(s)),e.arc(l,u,r,s,c,!d),i>ev&&(e.moveTo(l+i*q_(c),u+i*K_(c)),e.arc(l,u,i,c,s,d));else{var m=void 0,h=void 0,g=void 0,_=void 0,v=void 0,y=void 0,b=void 0,x=void 0,S=void 0,C=void 0,w=void 0,T=void 0,E=void 0,D=void 0,O=void 0,k=void 0,A=r*q_(s),j=r*K_(s),M=i*q_(c),N=i*K_(c),ee=f>ev;if(ee){var te=t.cornerRadius;te&&(n=rv(te),m=n[0],h=n[1],g=n[2],_=n[3]);var P=X_(r-i)/2;if(v=$_(P,g),y=$_(P,_),b=$_(P,m),x=$_(P,h),w=S=Q_(v,y),T=C=Q_(b,x),(S>ev||C>ev)&&(E=r*q_(c),D=r*K_(c),O=i*q_(s),k=i*K_(s),fev){var ae=$_(g,w),oe=$_(_,w),z=nv(O,k,A,j,r,ae,d),B=nv(E,D,M,N,r,oe,d);e.moveTo(l+z.cx+z.x0,u+z.cy+z.y0),w0&&e.arc(l+z.cx,u+z.cy,ae,Y_(z.y0,z.x0),Y_(z.y1,z.x1),!d),e.arc(l,u,r,Y_(z.cy+z.y1,z.cx+z.x1),Y_(B.cy+B.y1,B.cx+B.x1),!d),oe>0&&e.arc(l+B.cx,u+B.cy,oe,Y_(B.y1,B.x1),Y_(B.y0,B.x0),!d))}else e.moveTo(l+A,u+j),e.arc(l,u,r,s,c,!d);if(!(i>ev)||!ee)e.lineTo(l+M,u+N);else if(T>ev){var ae=$_(m,T),oe=$_(h,T),z=nv(M,N,E,D,i,-oe,d),B=nv(A,j,O,k,i,-ae,d);e.lineTo(l+z.cx+z.x0,u+z.cy+z.y0),T0&&e.arc(l+z.cx,u+z.cy,oe,Y_(z.y0,z.x0),Y_(z.y1,z.x1),!d),e.arc(l,u,i,Y_(z.cy+z.y1,z.cx+z.x1),Y_(B.cy+B.y1,B.cx+B.x1),d),ae>0&&e.arc(l+B.cx,u+B.cy,ae,Y_(B.y1,B.x1),Y_(B.y0,B.x0),!d))}else e.lineTo(l+M,u+N),e.arc(l,u,i,c,s,d)}e.closePath()}}}var av=function(){function e(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=Math.PI*2,this.clockwise=!0,this.cornerRadius=0}return e}(),ov=function(e){U(t,e);function t(t){return e.call(this,t)||this}return t.prototype.getDefaultShape=function(){return new av},t.prototype.buildPath=function(e,t){iv(e,t)},t.prototype.isZeroArea=function(){return this.shape.startAngle===this.shape.endAngle||this.shape.r===this.shape.r0},t}(Ap);ov.prototype.type=`sector`;var sv=function(){function e(){this.cx=0,this.cy=0,this.r=0,this.r0=0}return e}(),cv=function(e){U(t,e);function t(t){return e.call(this,t)||this}return t.prototype.getDefaultShape=function(){return new sv},t.prototype.buildPath=function(e,t){var n=t.cx,r=t.cy,i=Math.PI*2;e.moveTo(n+t.r,r),e.arc(n,r,t.r,0,i,!1),e.moveTo(n+t.r0,r),e.arc(n,r,t.r0,0,i,!0)},t}(Ap);cv.prototype.type=`ring`;function lv(e,t,n,r){var i=[],a=[],o=[],s=[],c,l,u,d;if(r){u=[1/0,1/0],d=[-1/0,-1/0];for(var f=0,p=e.length;f=2){if(r){var a=lv(i,r,n,t.smoothConstraint);e.moveTo(i[0][0],i[0][1]);for(var o=i.length,s=0;s<(n?o:o-1);s++){var c=a[s*2],l=a[s*2+1],u=i[(s+1)%o];e.bezierCurveTo(c[0],c[1],l[0],l[1],u[0],u[1])}}else{e.moveTo(i[0][0],i[0][1]);for(var s=1,d=i.length;sMv[1]){if(i=!1,Nv.negativeSize||n)return i;var s=Av(Mv[0]-jv[1]),c=Av(jv[0]-Mv[1]);Ov(s,c)>Fv.len()&&(s=c||!Nv.bidirectional)&&(cl.scale(Pv,o,-c*r),Nv.useDir&&Nv.calcDirMTV()))}}return i},e.prototype._getProjMinMaxOnAxis=function(e,t,n){for(var r=this._axes[e],i=this._origin,a=t[0].dot(r)+i[e],o=a,s=a,c=1;c0){var d=u.duration,f=u.delay,p=u.easing,m={duration:d,delay:f||0,easing:p,done:a,force:!!a||!!o,setToFinal:!l,scope:e,during:o};s?t.animateFrom(n,m):t.animateTo(n,m)}else t.stopAnimation(),!s&&t.attr(n),o&&o(1),a&&a()}function Hv(e,t,n,r,i,a){Vv(`update`,e,t,n,r,i,a)}function Uv(e,t,n,r,i,a){Vv(`enter`,e,t,n,r,i,a)}function Wv(e){if(!e.__zr)return!0;for(var t=0;tCv,BezierCurve:()=>xv,BoundingRect:()=>Sl,Circle:()=>V_,CompoundPath:()=>wv,Ellipse:()=>U_,Group:()=>z_,HOVER_LAYER_FOR_INCREMENTAL:()=>2,HOVER_LAYER_FROM_THRESHOLD:()=>1,HOVER_LAYER_NO:()=>0,Image:()=>Ip,IncrementalDisplayable:()=>Rv,Line:()=>_v,LinearGradient:()=>Ev,OrientedBoundingRect:()=>Iv,Path:()=>Ap,Point:()=>cl,Polygon:()=>fv,Polyline:()=>mv,RadialGradient:()=>Dv,Rect:()=>Wp,Ring:()=>cv,Sector:()=>ov,Text:()=>Yp,WH:()=>Qv,XY:()=>Zv,applyTransform:()=>py,calcZ2Range:()=>Iy,clipPointsByRect:()=>vy,clipRectByRect:()=>yy,createIcon:()=>by,decomposeTransform:()=>By,ensureCopyRect:()=>Ny,ensureCopyTransform:()=>Py,expandOrShrinkRect:()=>Ty,extendPath:()=>ty,extendShape:()=>$v,getCurrentCanvasPainter:()=>Hy,getShapeClass:()=>ry,getTransform:()=>fy,groupTransition:()=>_y,initProps:()=>Uv,isBoundingRectAxisAligned:()=>jy,isElementRemoved:()=>Wv,lineLineIntersect:()=>Sy,linePolygonIntersect:()=>xy,makeImage:()=>ay,makePath:()=>iy,mergePath:()=>sy,payloadDisableAnimation:()=>zy,registerShape:()=>ny,removeElement:()=>Gv,removeElementWithFadeOut:()=>qv,resizePath:()=>cy,retrieveZInfo:()=>Fy,setTooltipConfig:()=>Oy,subPixelOptimize:()=>dy,subPixelOptimizeLine:()=>ly,subPixelOptimizeRect:()=>uy,transformDirection:()=>my,traverseElements:()=>Ay,traverseUpdateZ:()=>Ly,updateProps:()=>Hv}),Xv={},Zv=[`x`,`y`],Qv=[`width`,`height`];function $v(e){return Ap.extend(e)}var ey=L_;function ty(e,t){return ey(e,t)}function ny(e,t){Xv[e]=t}function ry(e){if(Xv.hasOwnProperty(e))return Xv[e]}function iy(e,t,n,r){var i=I_(e,t);return n&&(r===`center`&&(n=oy(n,i.getBoundingRect())),cy(i,n)),i}function ay(e,t,n){var r=new Ip({style:{image:e,x:t.x,y:t.y,width:t.width,height:t.height},onload:function(e){if(n===`center`){var i={width:e.width,height:e.height};r.setStyle(oy(t,i))}}});return r}function oy(e,t){var n=t.width/t.height,r=e.height*n,i;r<=e.width?i=e.height:(r=e.width,i=r/n);var a=e.x+e.width/2,o=e.y+e.height/2;return{x:a-r/2,y:o-i/2,width:r,height:i}}var sy=R_;function cy(e,t){if(e.applyTransform){var n=e.getBoundingRect().calculateTransform(t);e.applyTransform(n)}}function ly(e,t){return zp(e,e,{lineWidth:t}),e}function uy(e,t){return Bp(e,e,t),e}var dy=Vp;function fy(e,t){for(var n=zc([]);e&&e!==t;)Vc(n,e.getLocalTransform(),n),e=e.parent;return n}function py(e,t,n){return t&&!Os(t)&&(t=bu.getLocalTransform(t)),n&&(t=Gc([],t)),al([],e,t)}function my(e,t,n){var r=t[4]===0||t[5]===0||t[0]===0?1:mm(2*t[4]/t[0]),i=t[4]===0||t[5]===0||t[2]===0?1:mm(2*t[4]/t[2]),a=[e===`left`?-r:e===`right`?r:0,e===`top`?-i:e===`bottom`?i:0];return a=py(a,t,n),mm(a[0])>mm(a[1])?a[0]>0?`right`:`left`:a[1]>0?`bottom`:`top`}function hy(e){return!e.isGroup}function gy(e){return e.shape!=null}function _y(e,t,n){if(!e||!t)return;function r(e){var t={};return e.traverse(function(e){hy(e)&&e.anid&&(t[e.anid]=e)}),t}function i(e){var t={x:e.x,y:e.y,rotation:e.rotation};return gy(e)&&(t.shape=xs(e.shape)),t}var a=r(e);t.traverse(function(e){if(hy(e)&&e.anid){var t=a[e.anid];if(t){var r=i(e);e.attr(i(t)),Hv(e,r,n,Zh(e).dataIndex)}}})}function vy(e,t){return K(e,function(e){var n=e[0];n=pm(n,t.x),n=fm(n,t.x+t.width);var r=e[1];return r=pm(r,t.y),r=fm(r,t.y+t.height),[n,r]})}function yy(e,t){var n=pm(e.x,t.x),r=fm(e.x+e.width,t.x+t.width),i=pm(e.y,t.y),a=fm(e.y+e.height,t.y+t.height);if(r>=n&&a>=i)return{x:n,y:i,width:r-n,height:a-i}}function by(e,t,n){var r=W({rectHover:!0},t),i=r.style={strokeNoScale:!0};if(n||={x:-1,y:-1,width:2,height:2},e)return e.indexOf(`image://`)===0?(i.image=e.slice(8),ws(i,n),new Ip(r)):iy(e.replace(`path://`,``),r,n,`center`)}function xy(e,t,n,r,i){for(var a=0,o=i[i.length-1];a1)return!1;var g=Cy(p,m,u,d)/f;return!(g<0||g>1)}function Cy(e,t,n,r){return e*r-n*t}function wy(e){return e<=1e-6&&e>=-1e-6}function Ty(e,t,n,r,i){return t==null?e:(Rs(t)?Ey[0]=Ey[1]=Ey[2]=Ey[3]=t:(Ey[0]=t[0],Ey[1]=t[1],Ey[2]=t[2],Ey[3]=t[3]),r&&(Ey[0]=pm(0,Ey[0]),Ey[1]=pm(0,Ey[1]),Ey[2]=pm(0,Ey[2]),Ey[3]=pm(0,Ey[3])),n&&(Ey[0]=-Ey[0],Ey[1]=-Ey[1],Ey[2]=-Ey[2],Ey[3]=-Ey[3]),Dy(e,Ey,`x`,`width`,3,1,i&&i[0]||0),Dy(e,Ey,`y`,`height`,0,2,i&&i[1]||0),e)}var Ey=[0,0,0,0];function Dy(e,t,n,r,i,a,o){var s=t[a]+t[i],c=e[r];e[r]+=s,o=pm(0,fm(o,c)),e[r]=0?-t[i]:t[a]>=0?c+t[a]:mm(s)>1e-8?(c-o)*t[i]/s:0):e[n]-=t[i]}function Oy(e){var t=e.itemTooltipOption,n=e.componentModel,r=e.itemName,i=J(t)?{formatter:t}:t,a=n.mainType,o=n.componentIndex,s={componentType:a,name:r,$vars:[`name`]};s[a+`Index`]=o;var c=e.formatterParamsExtra;c&&G(Ms(c),function(e){sc(s,e)||(s[e]=c[e],s.$vars.push(e))});var l=Zh(e.el);l.componentMainType=a,l.componentIndex=o,l.tooltipConfig={name:r,option:ws({content:r,encodeHTMLContent:!0,formatterParams:s},i)}}function ky(e,t){var n;e.isGroup&&(n=t(e)),n||e.traverse(t)}function Ay(e,t){if(e){if(q(e))for(var n=0;nt&&(t=r),rt&&(n=t=0),{min:n,max:t}}function Ly(e,t,n){Ry(e,t,n,-1/0)}function Ry(e,t,n,r){if(e.ignoreModelZ)return r;var i=e.getTextContent(),a=e.getTextGuideLine();if(e.isGroup)for(var o=e.childrenRef(),s=0;s1){var l=s.shift();s.length===1&&(n[o]=s[0]),this._update&&this._update(l,a)}else c===1?(n[o]=null,this._update&&this._update(s,a)):this._remove&&this._remove(a)}this._performRestAdd(i,n)},e.prototype._executeMultiple=function(){var e=this._old,t=this._new,n={},r={},i=[],a=[];this._initIndexMap(e,n,i,`_oldKeyGetter`),this._initIndexMap(t,r,a,`_newKeyGetter`);for(var o=0;o1&&d===1)this._updateManyToOne&&this._updateManyToOne(l,c),r[s]=null;else if(u===1&&d>1)this._updateOneToMany&&this._updateOneToMany(l,c),r[s]=null;else if(u===1&&d===1)this._update&&this._update(l,c),r[s]=null;else if(u>1&&d>1)this._updateManyToMany&&this._updateManyToMany(l,c),r[s]=null;else if(u>1)for(var f=0;f1)for(var o=0;ol&&(l=p)}s[0]=c,s[1]=l}},r=function(){return this._data?this._data.length/this._dimSize:0};Wb=(e={},e[tg+`_`+og]={pure:!0,appendData:i},e[tg+`_row`]={pure:!0,appendData:function(){throw Error(`Do not support appendData when set seriesLayoutBy: "row".`)}},e[ng]={pure:!0,appendData:i},e[rg]={pure:!0,appendData:function(e){var t=this._data;G(e,function(e,n){for(var r=t[n]||(t[n]=[]),i=0;i<(e||[]).length;i++)r.push(e[i])})}},e[eg]={appendData:i},e[ig]={persistent:!1,pure:!0,appendData:function(e){this._data=e},clean:function(){this._offset+=this.count(),this._data=null}},e);function i(e){for(var t=0;tt},gte:function(e,t){return e>=t}};(function(){function e(e,t){Rs(t)||$m(``),this._opFn=fx[e],this._rvalFloat=Hm(t)}return e.prototype.evaluate=function(e){return Rs(e)?this._opFn(e,this._rvalFloat):this._opFn(Hm(e),this._rvalFloat)},e})();var px=function(){function e(e,t){var n=e===`desc`;this._resultLT=n?1:-1,t??=n?`min`:`max`,this._incomparable=t===`min`?-1/0:1/0}return e.prototype.evaluate=function(e,t){var n=Rs(e)?e:Hm(e),r=Rs(t)?t:Hm(t),i=isNaN(n),a=isNaN(r);if(i&&(n=this._incomparable),a&&(r=this._incomparable),i&&a){var o=J(e),s=J(t);o&&(n=s?e:0),s&&(r=o?t:0)}return nr?-this._resultLT:0},e}();(function(){function e(e,t){this._rval=t,this._isEQ=e,this._rvalTypeof=typeof t,this._rvalFloat=Hm(t)}return e.prototype.evaluate=function(e){var t=e===this._rval;if(!t){var n=typeof e;n!==this._rvalTypeof&&(n===`number`||this._rvalTypeof===`number`)&&(t=Hm(e)===this._rvalFloat)}return this._isEQ?t:!t},e})();function mx(e){var t=``,n=-1/0,r=-1/0,i=1/0,a=1/0;return e&&(e.g!=null&&(t+=`G`+e.g,n=e.g),e.ge!=null&&(t+=`GE`+e.ge,r=e.ge),e.l!=null&&(t+=`L`+e.l,i=e.l),e.le!=null&&(t+=`LE`+e.le,a=e.le)),{key:t,g:n,ge:r,l:i,le:a}}function hx(e,t){return t>e.g&&t>=e.ge&&t`u`?Array:Uint32Array,_x=typeof Uint16Array>`u`?Array:Uint16Array,vx=typeof Int32Array>`u`?Array:Int32Array,yx=typeof Float64Array>`u`?Array:Float64Array,bx={float:yx,int:vx,ordinal:Array,number:Array,time:yx},xx;function Sx(e){return e>65535?gx:_x}function Cx(e){var t=e.constructor;return t===Array?e.slice():new t(e)}function Tx(e,t,n,r,i){var a=bx[n||`float`];if(i){var o=e[t],s=o&&o.length;if(s!==r){for(var c=new a(r),l=0;lh[1]&&(h[1]=m)}return this._rawCount=this._count=s,{start:o,end:s}},e.prototype._initDataFromProvider=function(e,t,n){for(var r=this._provider,i=this._chunks,a=this._dimensions,o=a.length,s=this._rawExtent,c=K(a,function(e){return e.property}),l=0;lg[1]&&(g[1]=h)}}!r.persistent&&r.clean&&r.clean(),this._rawCount=this._count=t,this._extent=[]},e.prototype.count=function(){return this._count},e.prototype.get=function(e,t){if(!(t>=0&&t=0&&t=this._rawCount||e<0)return-1;if(!this._indices)return e;var t=this._indices,n=t[e];if(n!=null&&ne)i=a-1;else return a}return-1},e.prototype.getIndices=function(){var e,t=this._indices;if(t){var n=t.constructor,r=this._count;if(n===Array){e=new n(r);for(var i=0;i=l&&g<=u||isNaN(g))&&(o[s++]=p),p++}f=!0}else if(i===2){for(var m=d[r[0]],_=d[r[1]],v=e[r[1]][0],y=e[r[1]][1],h=0;h=l&&g<=u||isNaN(g))&&(b>=v&&b<=y||isNaN(b))&&(o[s++]=p),p++}f=!0}}if(!f){if(i===1)for(var h=0;h=l&&g<=u||isNaN(g))&&(o[s++]=x)}else for(var h=0;he[w][1])&&(S=!1)}S&&(o[s++]=t.getRawIndex(h))}}return sg[1]&&(g[1]=h)}}}},e.prototype.lttbDownSample=function(e,t){var n=this.clone([e],!0),r=n._chunks[e],i=this.count(),a=0,o=Math.floor(1/t),s=this.getRawIndex(0),c,l,u,d=new(Sx(this._rawCount))(Math.min((Math.ceil(i/o)+2)*2,i));d[a++]=s;for(var f=1;fc&&(c=l,u=v)}T>0&&To&&(m=o-l);for(var h=0;hp&&(p=g,f=l+h)}var _=this.getRawIndex(u),v=this.getRawIndex(f);ul-p&&(s=l-p,o.length=s);for(var m=0;mu[1]&&(u[1]=g),d[f++]=_}return i._count=f,i._indices=d,i._updateGetRawIdx(),i},e.prototype.each=function(e,t){if(this._count)for(var n=e.length,r=this._chunks,i=0,a=this.count();id&&(d=p))}return o[c]=[u,d]},e.prototype.getRawDataItem=function(e){var t=this.getRawIndex(e);if(this._provider.persistent)return this._provider.getItem(t);for(var n=[],r=this._chunks,i=0;i=0?this._indices[e]:-1},e.prototype._updateGetRawIdx=function(){this.getRawIndex=this._indices?this._getRawIdx:this._getRawIdxIdentity},e.internalField=function(){function e(e,t,n,r){return dx(e[r],this._dimensions[r])}xx={arrayRows:e,objectRows:function(e,t,n,r){return dx(e[t],this._dimensions[r])},keyedColumns:e,original:function(e,t,n,r){var i=e&&(e.value==null?e:e.value);return dx(i instanceof Array?i[r]:i,this._dimensions[r])},typedArray:function(e,t,n,r){return e[r]}}}(),e}(),Dx=Ch(),Ox={float:`f`,int:`i`,ordinal:`o`,number:`n`,time:`t`},kx=function(){function e(e){this.dimensions=e.dimensions,this._dimOmitted=e.dimensionOmitted,this.source=e.source,this._fullDimCount=e.fullDimensionCount,this._updateDimOmitted(e.dimensionOmitted)}return e.prototype.isDimensionOmitted=function(){return this._dimOmitted},e.prototype._updateDimOmitted=function(e){this._dimOmitted=e,e&&(this._dimNameMap||=Mx(this.source))},e.prototype.getSourceDimensionIndex=function(e){return X(this._dimNameMap.get(e),-1)},e.prototype.getSourceDimension=function(e){var t=this.source.dimensionsDefine;if(t)return t[e]},e.prototype.makeStoreSchema=function(){for(var e=this._fullDimCount,t=zb(this.source),n=!Nx(e),r=``,i=[],a=0,o=0;a30}var Px=Y,Fx=K,Ix=typeof Int32Array>`u`?Array:Int32Array,Lx=`e\0\0`,Rx=-1,zx=[`hasItemOption`,`_nameList`,`_idList`,`_invertedIndicesMap`,`_dimSummary`,`userOutput`,`_rawData`,`_dimValueGetter`,`_nameDimIdx`,`_idDimIdx`,`_nameRepeatCount`],Bx=[`_approximateExtent`],Vx,Hx,Ux,Wx,Gx,Kx,qx,Jx=function(){function e(e,t){this.type=`list`,this._dimOmitted=!1,this._nameList=[],this._idList=[],this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._approximateExtent={},this._calculationInfo={},this.hasItemOption=!1,this.TRANSFERABLE_METHODS=[`cloneShallow`,`downSample`,`minmaxDownSample`,`lttbDownSample`,`map`],this.CHANGABLE_METHODS=[`filterSelf`,`selectRange`],this.DOWNSAMPLE_METHODS=[`downSample`,`minmaxDownSample`,`lttbDownSample`];var n,r=!1;Ax(e)?(n=e.dimensions,this._dimOmitted=e.isDimensionOmitted(),this._schema=e):(r=!0,n=e),n||=[`x`,`y`];for(var i={},a=[],o={},s=!1,c={},l=0;l=t)){var n=this._store.getProvider();this._updateOrdinalMeta();var r=this._nameList,i=this._idList;if(n.getSource().sourceFormat===`original`&&!n.pure)for(var a=[],o=e;o0},e.prototype.ensureUniqueItemVisual=function(e,t){var n=this._itemVisuals,r=n[e];r||=n[e]={};var i=r[t];return i??(i=this.getVisual(t),q(i)?i=i.slice():Px(i)&&(i=W({},i)),r[t]=i),i},e.prototype.setItemVisual=function(e,t,n){var r=this._itemVisuals[e]||{};this._itemVisuals[e]=r,Px(t)?W(r,t):r[t]=n},e.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},e.prototype.setLayout=function(e,t){Px(e)?W(this._layout,e):this._layout[e]=t},e.prototype.getLayout=function(e){return this._layout[e]},e.prototype.getItemLayout=function(e){return this._itemLayouts[e]},e.prototype.setItemLayout=function(e,t,n){this._itemLayouts[e]=n?W(this._itemLayouts[e]||{},t):t},e.prototype.clearItemLayouts=function(){this._itemLayouts.length=0},e.prototype.setItemGraphicEl=function(e,t){Qh(this.hostModel&&this.hostModel.seriesIndex,this.dataType,e,t),this._graphicEls[e]=t},e.prototype.getItemGraphicEl=function(e){return this._graphicEls[e]},e.prototype.eachItemGraphicEl=function(e,t){G(this._graphicEls,function(n,r){n&&e&&e.call(t,n,r)})},e.prototype.cloneShallow=function(t){return t||=new e(this._schema?this._schema:Fx(this.dimensions,this._getDimInfo,this),this.hostModel),Gx(t,this),t._store=this._store,t},e.prototype.wrapMethod=function(e,t){var n=this[e];Is(n)&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(e),this[e]=function(){var e=n.apply(this,arguments);return t.apply(this,[e].concat(qs(arguments)))})},e.internalField=function(){Vx=function(e){var t=e._invertedIndicesMap;G(t,function(n,r){var i=e._dimInfos[r],a=i.ordinalMeta,o=e._store;if(a){n=t[r]=new Ix(a.categories.length);for(var s=0;s1&&(s+=`__ec__`+l),r[t]=s}}}(),e}();function Yx(e,t){Ab(e)||(e=Mb(e)),t||={};var n=t.coordDimensions||[],r=t.dimensionsDefine||e.dimensionsDefine||[],i=Z(),a=[],o=Xx(e,n,r,t.dimensionsCount),s=t.canOmitUnusedDimensions&&Nx(o),c=r===e.dimensionsDefine,l=c?Mx(e):jx(r),u=t.encodeDefine;!u&&t.encodeDefaulter&&(u=t.encodeDefaulter(e,o));for(var d=Z(u),f=new vx(o),p=0;p0&&(e.name+=t-1)}),new kx({source:e,dimensions:a,fullDimensionCount:o,dimensionOmitted:s})}function Xx(e,t,n,r){var i=Math.max(e.dimensionsDetectedCount||1,t.length,n.length,r||0);return G(t,function(e){var t;Y(e)&&(t=e.dimsDef)&&(i=Math.max(i,t.length))}),i}function Zx(e,t,n){if(n||t.hasKey(e)){for(var r=0;t.hasKey(e+r);)r++;e+=r}return t.set(e,!0),e}var Qx={},$x={},eS=function(){function e(){this._normalMasterList=[],this._nonSeriesBoxMasterList=[]}return e.prototype.create=function(e,t){this._nonSeriesBoxMasterList=n(Qx,!0),this._normalMasterList=n($x,!1);function n(n,r){var i=[];return G(n,function(n,r){var a=n.create(e,t);i=i.concat(a||[])}),i}},e.prototype.update=function(e,t){G(this._normalMasterList,function(n){n.update&&n.update(e,t)})},e.prototype.getCoordinateSystems=function(){return this._normalMasterList.concat(this._nonSeriesBoxMasterList)},e.register=function(e,t){if(e===`matrix`||e===`calendar`){Qx[e]=t;return}$x[e]=t},e.get=function(e){return $x[e]||Qx[e]},e}();function tS(e){return!!Qx[e]}var nS=Z();function rS(e){var t=e.getShallow(`coord`,!0),n=1;if(t==null){var r=nS.get(e.type);r&&r.getCoord2&&(n=2,t=r.getCoord2(e))}return{coord:t,from:n}}function iS(e,t){var n=e.getShallow(`coordinateSystem`),r=e.getShallow(`coordinateSystemUsage`,!0),i=0;if(n){var a=e.mainType===`series`;r??=a?`data`:`box`,r===`data`?(i=1,a||(i=0)):r===`box`&&(i=2,!a&&!tS(n)&&(i=0))}return{coordSysType:n,kind:i}}function aS(e){var t=e.targetModel,n=e.coordSysType,r=e.coordSysProvider,i=e.isDefaultDataCoordSys;e.allowNotFound;var a=iS(t,!0),o=a.kind,s=a.coordSysType;if(i&&o!==1&&(o=1,s=n),o===0||s!==n)return 0;var c=r(n,t);return c?(o===1?t.coordinateSystem=c:t.boxCoordinateSystem=c,o):0}var oS=function(){function e(e){this.coordSysDims=[],this.axisMap=Z(),this.categoryAxisMap=Z(),this.coordSysName=e}return e}();function sS(e){var t=e.get(`coordinateSystem`),n=new oS(t),r=cS[t];if(r)return r(e,n,n.axisMap,n.categoryAxisMap),n}var cS={cartesian2d:function(e,t,n,r){var i=e.getReferringComponents(`xAxis`,Dh).models[0],a=e.getReferringComponents(`yAxis`,Dh).models[0];t.coordSysDims=[`x`,`y`],n.set(`x`,i),n.set(`y`,a),lS(i)&&(r.set(`x`,i),t.firstCategoryDimIndex=0),lS(a)&&(r.set(`y`,a),t.firstCategoryDimIndex??=1)},singleAxis:function(e,t,n,r){var i=e.getReferringComponents(`singleAxis`,Dh).models[0];t.coordSysDims=[`single`],n.set(`single`,i),lS(i)&&(r.set(`single`,i),t.firstCategoryDimIndex=0)},polar:function(e,t,n,r){var i=e.getReferringComponents(`polar`,Dh).models[0],a=i.findAxisModel(`radiusAxis`),o=i.findAxisModel(`angleAxis`);t.coordSysDims=[`radius`,`angle`],n.set(`radius`,a),n.set(`angle`,o),lS(a)&&(r.set(`radius`,a),t.firstCategoryDimIndex=0),lS(o)&&(r.set(`angle`,o),t.firstCategoryDimIndex??=1)},geo:function(e,t,n,r){t.coordSysDims=[`lng`,`lat`]},parallel:function(e,t,n,r){var i=e.ecModel,a=i.getComponent(`parallel`,e.get(`parallelIndex`)),o=t.coordSysDims=a.dimensions.slice();G(a.parallelAxisIndex,function(e,a){var s=i.getComponent(`parallelAxis`,e),c=o[a];n.set(c,s),lS(s)&&(r.set(c,s),t.firstCategoryDimIndex??=a)})},matrix:function(e,t,n,r){var i=e.getReferringComponents(`matrix`,Dh).models[0];t.coordSysDims=[`x`,`y`];var a=i.getDimensionModel(`x`),o=i.getDimensionModel(`y`);n.set(`x`,a),n.set(`y`,o),r.set(`x`,a),r.set(`y`,o)}};function lS(e){return e.get(`type`)===`category`}function uS(e,t,n){n||={};var r=n.byIndex,i=n.stackedCoordDimension,a,o,s;dS(t)?a=t:(o=t.schema,a=o.dimensions,s=t.store);var c=!!(e&&e.get(`stack`)),l,u,d,f,p=!0;function m(e){return e.type!==`ordinal`&&e.type!==`time`}if(G(a,function(e,t){J(e)&&(a[t]=e={name:e}),m(e)||(p=!1)}),G(a,function(e,t){c&&!e.isExtraCoord&&(!r&&!l&&e.ordinalMeta&&(l=e),!u&&m(e)&&(!p||e.coordDim!==`x`&&e.coordDim!==`angle`)&&(!i||i===e.coordDim)&&(u=e))}),u&&!r&&!l&&(r=!0),u){d=`__\0ecstackresult_`+e.id,f=`__\0ecstackedover_`+e.id,l&&(l.createInvertedIndices=!0);var h=u.coordDim,g=u.type,_=0;G(a,function(e){e.coordDim===h&&_++});var v={name:d,coordDim:h,coordDimIndex:_,type:g,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:a.length},y={name:f,coordDim:f,coordDimIndex:_+1,type:g,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:a.length+1};o?(s&&(v.storeDimIndex=s.ensureCalculationDimension(f,g),y.storeDimIndex=s.ensureCalculationDimension(d,g)),o.appendCalculationDimension(v),o.appendCalculationDimension(y)):(a.push(v),a.push(y))}return{stackedDimension:u&&u.name,stackedByDimension:l&&l.name,isStackedByIndex:r,stackedOverDimension:f,stackResultDimension:d}}function dS(e){return!Ax(e.schema)}function fS(e,t){return!!t&&t===e.getCalculationInfo(`stackedDimension`)}function pS(e,t){return fS(e,t)?e.getCalculationInfo(`stackResultDimension`):t}function mS(e,t){var n=e.get(`coordinateSystem`),r=eS.get(n),i;return t&&t.coordSysDims&&(i=K(t.coordSysDims,function(e){var n={name:e},r=t.axisMap.get(e);return r&&(n.type=cx(r.get(`type`))),n})),i||=r&&(r.getDimensionsInfo?r.getDimensionsInfo():r.dimensions.slice())||[`x`,`y`],i}function hS(e,t,n){var r,i;return n&&G(e,function(e,a){var o=e.coordDim,s=n.categoryAxisMap.get(o);s&&(r??=a,e.ordinalMeta=s.getOrdinalMeta(),t&&(e.createInvertedIndices=!0)),e.otherDims.itemName!=null&&(i=!0)}),!i&&r!=null&&(e[r].otherDims.itemName=0),r}function gS(e,t,n){n||={};var r=t.getSourceManager(),i,a=!1;e?(a=!0,i=Mb(e)):(i=r.getSource(),a=i.sourceFormat===eg);var o=sS(t),s=mS(t,o),c=n.useEncodeDefaulter,l=Is(c)?c:c?Fs(wb,s,t):null,u={coordDimensions:s,generateCoord:n.generateCoord,encodeDefine:t.getEncode(),encodeDefaulter:l,canOmitUnusedDimensions:!a},d=Yx(i,u),f=hS(d.dimensions,n.createInvertedIndices,o),p=a?null:r.getSharedDataStore(d),m=uS(t,{schema:d,store:p}),h=new Jx(d,t);h.setCalculationInfo(m);var g=f!=null&&_S(i)?function(e,t,n,r){return r===f?n:this.defaultDimValueGetter(e,t,n,r)}:null;return h.hasItemOption=!1,h.initData(a?i:p,null,g),h}function _S(e){if(e.sourceFormat===`original`)return!q(oh(vS(e.data||[])))}function vS(e){for(var t=0;t=0&&n.push(e)}),n}}function CS(e,t){return Ss(Ss({},e,!0),t,!0)}var wS=Math.log(2);function TS(e,t,n,r,i,a){var o=r+`-`+i,s=e.length;if(a.hasOwnProperty(o))return a[o];if(t===1){var c=Math.round(Math.log((1<>1)%2;s.cssText=[`position: absolute`,`visibility: hidden`,`padding: 0`,`margin: 0`,`border-width: 0`,`user-select: none`,`width:0`,`height:0`,r[c]+`:0`,i[l]+`:0`,r[1-c]+`:auto`,i[1-l]+`:auto`,``].join(`!important;`),e.appendChild(o),n.push(o)}return t.clearMarkers=function(){G(n,function(e){e.parentNode&&e.parentNode.removeChild(e)})},n}function NS(e,t,n){for(var r=n?`invTrans`:`trans`,i=t[r],a=t.srcCoords,o=[],s=[],c=!0,l=0;l<4;l++){var u=e[l].getBoundingClientRect(),d=2*l,f=u.left,p=u.top;o.push(f,p),c=c&&a&&f===a[d]&&p===a[d+1],s.push(e[l].offsetLeft,e[l].offsetTop)}return c&&i?i:(t.srcCoords=o,t[r]=n?ES(s,o):ES(o,s))}function PS(e){return e.nodeName.toUpperCase()===`CANVAS`}var FS=/([&<>"'])/g,IS={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`};function LS(e){return e==null?``:(e+``).replace(FS,function(e,t){return IS[t]})}var RS={time:{month:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],monthAbbr:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],dayOfWeek:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],dayOfWeekAbbr:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`]},legend:{selector:{all:`All`,inverse:`Inv`}},toolbox:{brush:{title:{rect:`Box Select`,polygon:`Lasso Select`,lineX:`Horizontally Select`,lineY:`Vertically Select`,keep:`Keep Selections`,clear:`Clear Selections`}},dataView:{title:`Data View`,lang:[`Data View`,`Close`,`Refresh`]},dataZoom:{title:{zoom:`Zoom`,back:`Zoom Reset`}},magicType:{title:{line:`Switch to Line Chart`,bar:`Switch to Bar Chart`,stack:`Stack`,tiled:`Tile`}},restore:{title:`Restore`},saveAsImage:{title:`Save as Image`,lang:[`Right Click to Save Image`]}},series:{typeNames:{pie:`Pie chart`,bar:`Bar chart`,line:`Line chart`,scatter:`Scatter plot`,effectScatter:`Ripple scatter plot`,radar:`Radar chart`,tree:`Tree`,treemap:`Treemap`,boxplot:`Boxplot`,candlestick:`Candlestick`,k:`K line chart`,heatmap:`Heat map`,map:`Map`,parallel:`Parallel coordinate map`,lines:`Line graph`,graph:`Relationship graph`,sankey:`Sankey diagram`,funnel:`Funnel chart`,gauge:`Gauge`,pictorialBar:`Pictorial bar`,themeRiver:`Theme River Map`,sunburst:`Sunburst`,custom:`Custom chart`,chart:`Chart`}},aria:{general:{withTitle:`This is a chart about "{title}"`,withoutTitle:`This is a chart`},series:{single:{prefix:``,withName:` with type {seriesType} named {seriesName}.`,withoutName:` with type {seriesType}.`},multiple:{prefix:`. It consists of {seriesCount} series count.`,withName:` The {seriesId} series is a {seriesType} representing {seriesName}.`,withoutName:` The {seriesId} series is a {seriesType}.`,separator:{middle:``,end:``}}},data:{allData:`The data is as follows: `,partialData:`The first {displayCnt} items are: `,withName:`the data for {name} is {value}`,withoutName:`{value}`,separator:{middle:`, `,end:`. `}}}},zS={time:{month:[`一月`,`二月`,`三月`,`四月`,`五月`,`六月`,`七月`,`八月`,`九月`,`十月`,`十一月`,`十二月`],monthAbbr:[`1月`,`2月`,`3月`,`4月`,`5月`,`6月`,`7月`,`8月`,`9月`,`10月`,`11月`,`12月`],dayOfWeek:[`星期日`,`星期一`,`星期二`,`星期三`,`星期四`,`星期五`,`星期六`],dayOfWeekAbbr:[`日`,`一`,`二`,`三`,`四`,`五`,`六`]},legend:{selector:{all:`全选`,inverse:`反选`}},toolbox:{brush:{title:{rect:`矩形选择`,polygon:`圈选`,lineX:`横向选择`,lineY:`纵向选择`,keep:`保持选择`,clear:`清除选择`}},dataView:{title:`数据视图`,lang:[`数据视图`,`关闭`,`刷新`]},dataZoom:{title:{zoom:`区域缩放`,back:`区域缩放还原`}},magicType:{title:{line:`切换为折线图`,bar:`切换为柱状图`,stack:`切换为堆叠`,tiled:`切换为平铺`}},restore:{title:`还原`},saveAsImage:{title:`保存为图片`,lang:[`右键另存为图片`]}},series:{typeNames:{pie:`饼图`,bar:`柱状图`,line:`折线图`,scatter:`散点图`,effectScatter:`涟漪散点图`,radar:`雷达图`,tree:`树图`,treemap:`矩形树图`,boxplot:`箱型图`,candlestick:`K线图`,k:`K线图`,heatmap:`热力图`,map:`地图`,parallel:`平行坐标图`,lines:`线图`,graph:`关系图`,sankey:`桑基图`,funnel:`漏斗图`,gauge:`仪表盘图`,pictorialBar:`象形柱图`,themeRiver:`主题河流图`,sunburst:`旭日图`,custom:`自定义图表`,chart:`图表`}},aria:{general:{withTitle:`这是一个关于“{title}”的图表。`,withoutTitle:`这是一个图表,`},series:{single:{prefix:``,withName:`图表类型是{seriesType},表示{seriesName}。`,withoutName:`图表类型是{seriesType}。`},multiple:{prefix:`它由{seriesCount}个图表系列组成。`,withName:`第{seriesId}个系列是一个表示{seriesName}的{seriesType},`,withoutName:`第{seriesId}个系列是一个{seriesType},`,separator:{middle:`;`,end:`。`}}},data:{allData:`其数据是——`,partialData:`其中,前{displayCnt}项是——`,withName:`{name}的数据是{value}`,withoutName:`{value}`,separator:{middle:`,`,end:``}}}},BS=`ZH`,VS=`EN`,HS=VS,US={},WS={},GS=dc.domSupported?function(){return(document.documentElement.lang||navigator.language||navigator.browserLanguage||HS).toUpperCase().indexOf(BS)>-1?BS:HS}():HS;function KS(e,t){e=e.toUpperCase(),WS[e]=new _b(t),US[e]=t}function qS(e){if(J(e)){var t=US[e.toUpperCase()]||{};return e===BS||e===VS?xs(t):Ss(xs(t),xs(US[HS]),!1)}return Ss(xs(e),xs(US[HS]),!1)}function JS(e){return WS[e]}function YS(){return WS[HS]}KS(VS,RS),KS(BS,zS);var XS=null;function ZS(){return XS}function QS(e,t){var n=ZS(),r=t.breakOption,i=t.breakParsed;return!i&&n&&(i=n.parseAxisBreakOption(r,e)),i}function $S(e){var t=e.brk;return t?t.breaks:[]}function eC(e){var t=e.brk;return t?t.hasBreaks():!1}var tC=1e3,nC=tC*60,rC=nC*60,iC=rC*24,aC=iC*365,oC={year:/({yyyy}|{yy})/,month:/({MMMM}|{MMM}|{MM}|{M})/,day:/({dd}|{d})/,hour:/({HH}|{H}|{hh}|{h})/,minute:/({mm}|{m})/,second:/({ss}|{s})/,millisecond:/({SSS}|{S})/},sC={year:`{yyyy}`,month:`{MMM}`,day:`{d}`,hour:`{HH}:{mm}`,minute:`{HH}:{mm}`,second:`{HH}:{mm}:{ss}`,millisecond:`{HH}:{mm}:{ss} {SSS}`},cC=`{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}`,lC=`{yyyy}-{MM}-{dd}`,uC={year:`{yyyy}`,month:`{yyyy}-{MM}`,day:lC,hour:lC+` `+sC.hour,minute:lC+` `+sC.minute,second:lC+` `+sC.second,millisecond:cC},dC=[`year`,`month`,`day`,`hour`,`minute`,`second`,`millisecond`],fC=[`year`,`half-year`,`quarter`,`month`,`week`,`half-week`,`day`,`half-day`,`quarter-day`,`hour`,`minute`,`second`,`millisecond`];function pC(e){return!J(e)&&!Is(e)?mC(e):e}function mC(e){e||={};var t={},n=!0;return G(dC,function(t){n&&=e[t]==null}),G(dC,function(r,i){var a=e[r];t[r]={};for(var o=null,s=i;s>=0;s--){var c=dC[s],l=Y(a)&&!q(a)?a[c]:a,u=void 0;q(l)?(u=l.slice(),o=u[0]||``):J(l)?(o=l,u=[o]):(o==null?o=sC[r]:oC[c].test(o)||(o=t[c][c][0]+` `+o),u=[o],n&&(u[1]=`{primary|`+o+`}`)),t[r][c]=u}}),t}function hC(e,t){return e+=``,`0000`.substr(0,t-e.length)+e}function gC(e){switch(e){case`half-year`:case`quarter`:return`month`;case`week`:case`half-week`:return`day`;case`half-day`:case`quarter-day`:return`hour`;default:return e}}function _C(e){return e===gC(e)}function vC(e){switch(e){case`year`:case`month`:return`day`;case`millisecond`:return`millisecond`;default:return`second`}}function yC(e,t,n,r){var i=Rm(e),a=i[CC(n)](),o=i[wC(n)]()+1,s=Math.floor((o-1)/3)+1,c=i[TC(n)](),l=i[`get`+(n?`UTC`:``)+`Day`](),u=i[EC(n)](),d=(u-1)%12+1,f=i[DC(n)](),p=i[OC(n)](),m=i[kC(n)](),h=u>=12?`pm`:`am`,g=h.toUpperCase(),_=(r instanceof _b?r:JS(r||GS)||YS()).getModel(`time`),v=_.get(`month`),y=_.get(`monthAbbr`),b=_.get(`dayOfWeek`),x=_.get(`dayOfWeekAbbr`);return(t||``).replace(/{a}/g,h+``).replace(/{A}/g,g+``).replace(/{yyyy}/g,a+``).replace(/{yy}/g,hC(a%100+``,2)).replace(/{Q}/g,s+``).replace(/{MMMM}/g,v[o-1]).replace(/{MMM}/g,y[o-1]).replace(/{MM}/g,hC(o,2)).replace(/{M}/g,o+``).replace(/{dd}/g,hC(c,2)).replace(/{d}/g,c+``).replace(/{eeee}/g,b[l]).replace(/{ee}/g,x[l]).replace(/{e}/g,l+``).replace(/{HH}/g,hC(u,2)).replace(/{H}/g,u+``).replace(/{hh}/g,hC(d+``,2)).replace(/{h}/g,d+``).replace(/{mm}/g,hC(f,2)).replace(/{m}/g,f+``).replace(/{ss}/g,hC(p,2)).replace(/{s}/g,p+``).replace(/{SSS}/g,hC(m,3)).replace(/{S}/g,m+``)}function bC(e,t,n,r,i){var a=null;if(J(n))a=n;else if(Is(n)){var o={time:e.time,level:e.time?e.time.level:0},s=ZS();s&&s.makeAxisLabelFormatterParamBreak(o,e.break),a=n(e.value,t,o)}else{var c=e.time;if(c){var l=n[c.lowerTimeUnit][c.upperTimeUnit];a=l[Math.min(c.level,l.length-1)]||``}else{var u=xC(e.value,i);a=n[u][u][0]}}return yC(new Date(e.value),a,i,r)}function xC(e,t){var n=Rm(e),r=n[wC(t)]()+1,i=n[TC(t)](),a=n[EC(t)](),o=n[DC(t)](),s=n[OC(t)](),c=n[kC(t)]()===0,l=c&&s===0,u=l&&o===0,d=u&&a===0,f=d&&i===1;return f&&r===1?`year`:f?`month`:d?`day`:u?`hour`:l?`minute`:c?`second`:`millisecond`}function SC(e,t,n){switch(t){case`year`:e[jC(n)](0);case`month`:e[MC(n)](1);case`day`:e[NC(n)](0);case`hour`:e[PC(n)](0);case`minute`:e[FC(n)](0);case`second`:e[IC(n)](0)}return e}function CC(e){return e?`getUTCFullYear`:`getFullYear`}function wC(e){return e?`getUTCMonth`:`getMonth`}function TC(e){return e?`getUTCDate`:`getDate`}function EC(e){return e?`getUTCHours`:`getHours`}function DC(e){return e?`getUTCMinutes`:`getMinutes`}function OC(e){return e?`getUTCSeconds`:`getSeconds`}function kC(e){return e?`getUTCMilliseconds`:`getMilliseconds`}function AC(e){return e?`setUTCFullYear`:`setFullYear`}function jC(e){return e?`setUTCMonth`:`setMonth`}function MC(e){return e?`setUTCDate`:`setDate`}function NC(e){return e?`setUTCHours`:`setHours`}function PC(e){return e?`setUTCMinutes`:`setMinutes`}function FC(e){return e?`setUTCSeconds`:`setSeconds`}function IC(e){return e?`setUTCMilliseconds`:`setMilliseconds`}function LC(e){if(!Um(e))return J(e)?e:`-`;var t=(e+``).split(`.`);return t[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,`$1,`)+(t.length>1?`.`+t[1]:``)}function RC(e,t){return e=(e||``).toLowerCase().replace(/-(.)/g,function(e,t){return t.toUpperCase()}),t&&e&&(e=e.charAt(0).toUpperCase()+e.slice(1)),e}var zC=Js;function BC(e,t,n){var r=`{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}`;function i(e){return e&&Xs(e)?e:`-`}function a(e){return qm(e)}var o=t===`time`,s=e instanceof Date;if(o||s){var c=o?Rm(e):e;if(!isNaN(+c))return yC(c,r,n);if(s)return`-`}if(t===`ordinal`)return Ls(e)?i(e):Rs(e)&&a(e)?e+``:`-`;var l=Hm(e);return a(l)?LC(l):Ls(e)?i(e):typeof e==`boolean`?e+``:`-`}var VC=[`a`,`b`,`c`,`d`,`e`,`f`,`g`],HC=function(e,t){return`{`+e+(t??``)+`}`};function UC(e,t,n){q(t)||(t=[t]);var r=t.length;if(!r)return``;for(var i=t[0].$vars||[],a=0;a`:``:{renderMode:a,content:`{`+(n.markerId||`markerX`)+`|} `,style:i===`subItem`?{width:4,height:4,borderRadius:2,backgroundColor:r}:{width:10,height:10,borderRadius:5,backgroundColor:r}}:``}function GC(e,t){return t||=`transparent`,J(e)?e:Y(e)&&e.colorStops&&(e.colorStops[0]||{}).color||t}var KC=G,qC=[`left`,`right`,`top`,`bottom`,`width`,`height`],JC=[[`width`,`left`,`right`],[`height`,`top`,`bottom`]];function YC(e,t,n,r,i){var a=0,o=0;r??=1/0,i??=1/0;var s=0;t.eachChild(function(c,l){var u=c.getBoundingRect(),d=t.childAt(l+1),f=d&&d.getBoundingRect(),p,m;if(e===`horizontal`){var h=u.width+(f?-f.x+u.x:0);p=a+h,p>r||c.newline?(a=0,p=h,o+=s+n,s=u.height):s=Math.max(s,u.height)}else{var g=u.height+(f?-f.y+u.y:0);m=o+g,m>i||c.newline?(a+=s+n,o=0,m=g,s=u.width):s=Math.max(s,u.width)}c.newline||(c.x=a,c.y=o,c.markRedraw(),e===`horizontal`?a=p+n:o=m+n)})}var XC=YC;Fs(YC,`vertical`),Fs(YC,`horizontal`);function ZC(e,t){return{left:e.getShallow(`left`,t),top:e.getShallow(`top`,t),right:e.getShallow(`right`,t),bottom:e.getShallow(`bottom`,t),width:e.getShallow(`width`,t),height:e.getShallow(`height`,t)}}function QC(e,t,n){n=zC(n||0);var r=t.width,i=t.height,a=wm(e.left,r),o=wm(e.top,i),s=wm(e.right,r),c=wm(e.bottom,i),l=wm(e.width,r),u=wm(e.height,i),d=n[2]+n[0],f=n[1]+n[3],p=e.aspect;switch(isNaN(l)&&(l=r-s-f-a),isNaN(u)&&(u=i-c-d-o),p!=null&&(isNaN(l)&&isNaN(u)&&(p>r/i?l=r*.8:u=i*.8),isNaN(l)&&(l=p*u),isNaN(u)&&(u=l/p)),isNaN(a)&&(a=r-s-l-f),isNaN(o)&&(o=i-c-u-d),e.left||e.right){case`center`:a=r/2-l/2-n[3];break;case`right`:a=r-l-f}switch(e.top||e.bottom){case`middle`:case`center`:o=i/2-u/2-n[0];break;case`bottom`:o=i-u-d}a||=0,o||=0,isNaN(l)&&(l=r-f-a-(s||0)),isNaN(u)&&(u=i-d-o-(c||0));var m=new Sl((t.x||0)+a+n[3],(t.y||0)+o+n[0],l,u);return m.margin=n,m}var $C={rect:1,point:2};function ew(e,t,n){var r,i,a,o=e.boxCoordinateSystem,s;if(o){var c=rS(e),l=c.coord,u=c.from;if(o.dataToLayout){a=$C.rect,s=u;var d=o.dataToLayout(l);r=d.contentRect||d.rect}else n&&n.enableLayoutOnlyByCenter&&o.dataToPoint&&(a=$C.point,s=u,i=o.dataToPoint(l))}return a??=$C.rect,a===$C.rect&&(r||={x:0,y:0,width:t.getWidth(),height:t.getHeight()},i=[r.x+r.width/2,r.y+r.height/2]),{type:a,refContainer:r,refPoint:i,boxCoordFrom:s}}function tw(e){var t=e.layoutMode||e.constructor.layoutMode;return Y(t)?t:t?{type:t}:null}function nw(e,t,n){var r=n&&n.ignoreSize;!q(r)&&(r=[r,r]);var i=o(JC[0],0),a=o(JC[1],1);c(JC[0],e,i),c(JC[1],e,a);function o(n,i){var a={},o=0,c={},l=0,u=2;if(KC(n,function(t){c[t]=e[t]}),KC(n,function(e){sc(t,e)&&(a[e]=c[e]=t[e]),s(a,e)&&o++,s(c,e)&&l++}),r[i])return s(t,n[1])?c[n[2]]=null:s(t,n[2])&&(c[n[1]]=null),c;if(l===u||!o)return c;if(o>=u)return a;for(var d=0;d=0;o--)a=Ss(a,n[o],!0);t.defaultOption=a}return t.defaultOption},t.prototype.getReferringComponents=function(e,t){var n=e+`Index`,r=e+`Id`;return Oh(this.ecModel,e,{index:this.get(n,!0),id:this.get(r,!0)},t)},t.prototype.getBoxLayoutParams=function(){return ZC(this,!1)},t.prototype.getZLevelKey=function(){return``},t.prototype.setZLevel=function(e){this.option.zlevel=e},t.protoInitialize=function(){var e=t.prototype;e.type=`component`,e.id=``,e.name=``,e.mainType=``,e.subType=``,e.componentIndex=0}(),t}(_b);xc(ow,_b),Ec(ow),xS(ow),SS(ow,sw);function sw(e){var t=[];return G(ow.getClassesByMainType(e),function(e){t=t.concat(e.dependencies||e.prototype.dependencies||[])}),t=K(t,function(e){return gc(e).main}),e!==`dataset`&&Ts(t,`dataset`)<=0&&t.unshift(`dataset`),t}var cw=Ch(),lw=Ch(),uw=function(){function e(){}return e.prototype.getColorFromPalette=function(e,t,n){var r=rh(this.get(`color`,!0)),i=this.get(`colorLayer`,!0);return pw(this,cw,r,i,e,t,n)},e.prototype.clearColorPalette=function(){mw(this,cw)},e}();function dw(e,t,n,r){return pw(e,lw,rh(e.get([`aria`,`decal`,`decals`])),null,t,n,r)}function fw(e,t){for(var n=e.length,r=0;rt)return e[r];return e[n-1]}function pw(e,t,n,r,i,a,o){a||=e;var s=t(a),c=s.paletteIdx||0,l=s.paletteNameMap=s.paletteNameMap||{};if(l.hasOwnProperty(i))return l[i];var u=o==null||!r?n:fw(r,o);if(u||=n,u&&u.length){var d=u[c];return i&&(l[i]=d),s.paletteIdx=(c+1)%u.length,d}}function mw(e,t){t(e).paletteIdx=0,t(e).paletteNameMap={}}var hw=/\{@(.+?)\}/g,gw=function(){function e(){}return e.prototype.getDataParams=function(e,t){var n=this.getData(t),r=this.getRawValue(e,t),i=n.getRawIndex(e),a=n.getName(e),o=n.getRawDataItem(e),s=n.getItemVisual(e,`style`),c=s&&s[n.getItemVisual(e,`drawType`)||`fill`],l=s&&s.stroke,u=this.mainType,d=u===`series`,f=n.userOutput&&n.userOutput.get();return{componentType:u,componentSubType:this.subType,componentIndex:this.componentIndex,seriesType:d?this.subType:null,seriesIndex:this.seriesIndex,seriesId:d?this.id:null,seriesName:d?this.name:null,name:a,dataIndex:i,data:o,dataType:t,value:r,color:c,borderColor:l,dimensionNames:f?f.fullDimensions:null,encode:f?f.encode:null,$vars:[`seriesName`,`name`,`value`]}},e.prototype.getFormattedLabel=function(e,t,n,r,i,a){t||=`normal`;var o=this.getData(n),s=this.getDataParams(e,n);if(a&&(s.value=a.interpolatedValue),r!=null&&q(s.value)&&(s.value=s.value[r]),i||=o.getItemModel(e).get(t===`normal`?[`label`,`formatter`]:[t,`label`,`formatter`]),Is(i))return s.status=t,s.dimensionIndex=r,i(s);if(J(i))return UC(i,s).replace(hw,function(t,n){var r=n.length,i=n;i.charAt(0)===`[`&&i.charAt(r-1)===`]`&&(i=+i.slice(1,r-1));var s=ix(o,e,i);if(a&&q(a.interpolatedValue)){var c=o.getDimensionIndex(i);c>=0&&(s=a.interpolatedValue[c])}return s==null?``:s+``})},e.prototype.getRawValue=function(e,t){return ix(this.getData(t),e)},e.prototype.formatTooltip=function(e,t,n){},e}();function _w(e){var t,n;return Y(e)?e.type&&(n=e):t=e,{text:t,frag:n}}function vw(e){return new yw(e)}var yw=function(){function e(e){e||={},this._reset=e.reset,this._plan=e.plan,this._count=e.count,this._onDirty=e.onDirty,this._dirty=!0}return e.prototype.perform=function(e){var t=this._upstream,n=e&&e.skip;if(this._dirty&&t){var r=this.context;r.data=r.outputData=t.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var i;this._plan&&!n&&(i=this._plan(this.context));var a=l(this._modBy),o=this._modDataCount||0,s=l(e&&e.modBy),c=e&&e.modDataCount||0;(a!==s||o!==c)&&(i=`reset`);function l(e){return!(e>=1)&&(e=1),e}var u;(this._dirty||i===`reset`)&&(this._dirty=!1,u=this._doReset(n)),this._modBy=s,this._modDataCount=c;var d=e&&e.step;if(this._dueEnd=t?t._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var f=this._dueIndex,p=Math.min(d==null?1/0:this._dueIndex+d,this._dueEnd);if(!n&&(u||f1&&r>0?s:o}};return a;function o(){return t=e?null:a9e10&&(this._versionSignBase=0)},e.prototype._getVersionSign=function(){return this._sourceHost.uid+`_`+this._versionSignBase},e.prototype.prepareSource=function(){this._isDirty()&&(this._createSource(),this._dirty=!1)},e.prototype._createSource=function(){this._setLocalSource([],[]);var e=this._sourceHost,t=this._getUpstreamSourceManagers(),n=!!t.length,r,i;if(Nw(e)){var a=e,o=void 0,s=void 0,c=void 0;if(n){var l=t[0];l.prepareSource(),c=l.getSource(),o=c.data,s=c.sourceFormat,i=[l._getVersionSign()]}else o=a.get(`data`,!0),s=Bs(o)?ig:eg,i=[];var u=this._getSourceMetaRawOption()||{},d=c&&c.metaRawOption||{},f=X(u.seriesLayoutBy,d.seriesLayoutBy)||null,p=X(u.sourceHeader,d.sourceHeader),m=X(u.dimensions,d.dimensions);r=f!==d.seriesLayoutBy||!!p!=!!d.sourceHeader||m?[jb(o,{seriesLayoutBy:f,sourceHeader:p,dimensions:m},s)]:[]}else{var h=e;if(n){var g=this._applyTransform(t);r=g.sourceList,i=g.upstreamSignList}else r=[jb(h.get(`source`,!0),this._getSourceMetaRawOption(),null)],i=[]}this._setLocalSource(r,i)},e.prototype._applyTransform=function(e){var t=this._sourceHost,n=t.get(`transform`,!0),r=t.get(`fromTransformResult`,!0);r!=null&&e.length!==1&&Pw(``);var i,a=[],o=[];return G(e,function(e){e.prepareSource();var t=e.getSource(r||0);r!=null&&!t&&Pw(``),a.push(t),o.push(e._getVersionSign())}),n?i=kw(n,a,{datasetIndex:t.componentIndex}):r!=null&&(i=[Nb(a[0])]),{sourceList:i,upstreamSignList:o}},e.prototype._isDirty=function(){if(this._dirty)return!0;for(var e=this._getUpstreamSourceManagers(),t=0;t1||n>0&&!e.noHeader;return G(e.blocks,function(e){var n=Kw(e);n>=t&&(t=n+ +(r&&(!n||Ww(e)&&!e.noHeader)))}),t}return 0}function qw(e,t,n,r){var i=t.noHeader,a=Xw(Kw(t)),o=[],s=t.blocks||[];Ys(!s||q(s)),s||=[];var c=e.orderMode;if(t.sortBlocks&&c){s=s.slice();var l={valueAsc:`asc`,valueDesc:`desc`};if(sc(l,c)){var u=new px(l[c],null);s.sort(function(e,t){return u.evaluate(e.sortParam,t.sortParam)})}else c===`seriesDesc`&&s.reverse()}G(s,function(n,i){var s=t.valueFormatter,c=Gw(n)(s?W(W({},e),{valueFormatter:s}):e,n,i>0?a.html:0,r);c!=null&&o.push(c)});var d=e.renderMode===`richText`?o.join(a.richText):Zw(r,o.join(``),i?n:a.html);if(i)return d;var f=BC(t.header,`ordinal`,e.useUTC),p=Bw(r,e.renderMode).nameStyle,m=zw(r);return e.renderMode===`richText`?eT(e,f,p)+a.richText+d:Zw(r,`
`+LS(f)+`
`+d,n)}function Jw(e,t,n,r){var i=e.renderMode,a=t.noName,o=t.noValue,s=!t.markerType,c=t.name,l=e.useUTC,u=t.valueFormatter||e.valueFormatter||function(e){return e=q(e)?e:[e],K(e,function(e,t){return BC(e,q(p)?p[t]:p,l)})};if(!(a&&o)){var d=s?``:e.markupStyleCreator.makeTooltipMarker(t.markerType,t.markerColor||Q.color.secondary,i),f=a?``:BC(c,`ordinal`,l),p=t.valueType,m=o?[]:u(t.value,t.rawDataIndex),h=!s||!a,g=!s&&a,_=Bw(r,i),v=_.nameStyle,y=_.valueStyle;return i===`richText`?(s?``:d)+(a?``:eT(e,f,v))+(o?``:tT(e,m,h,g,y)):Zw(r,(s?``:d)+(a?``:Qw(f,!s,v))+(o?``:$w(m,h,g,y)),n)}}function Yw(e,t,n,r,i,a){if(e)return Gw(e)({useUTC:i,renderMode:n,orderMode:r,markupStyleCreator:t,valueFormatter:e.valueFormatter},e,0,a)}function Xw(e){return{html:Vw[e],richText:Hw[e]}}function Zw(e,t,n){var r=`
`,i=`margin: `+n+`px 0 0`,a=zw(e);return`
`+t+r+`
`}function Qw(e,t,n){var r=t?`margin-left:2px`:``;return``+LS(e)+``}function $w(e,t,n,r){var i=t?`float:right;margin-left:`+(n?`10px`:`20px`):``;return e=q(e)?e:[e],``+K(e,function(e){return LS(e)}).join(`  `)+``}function eT(e,t,n){return e.markupStyleCreator.wrapRichTextStyle(t,n)}function tT(e,t,n,r,i){var a=[i],o=r?10:20;return n&&a.push({padding:[0,0,0,o],align:`right`}),e.markupStyleCreator.wrapRichTextStyle(q(t)?t.join(` `):t,a)}function nT(e,t){var n=e.getData().getItemVisual(t,`style`)[e.visualDrawType];return GC(n)}function rT(e,t){return e.get(`padding`)??(t===`richText`?[8,10]:10)}var iT=function(){function e(){this.richTextStyles={},this._nextStyleNameId=Wm()}return e.prototype._generateStyleName=function(){return`__EC_aUTo_`+this._nextStyleNameId++},e.prototype.makeTooltipMarker=function(e,t,n){var r=n===`richText`?this._generateStyleName():null,i=WC({color:t,type:e,renderMode:n,markerId:r});return J(i)?i:(this.richTextStyles[r]=i.style,i.content)},e.prototype.wrapRichTextStyle=function(e,t){var n={};q(t)?G(t,function(e){return W(n,e)}):W(n,t);var r=this._generateStyleName();return this.richTextStyles[r]=n,`{`+r+`|`+e+`}`},e}();function aT(e){var t=e.series,n=e.dataIndex,r=e.multipleSeries,i=t.getData(),a=i.mapDimensionsAll(`defaultedTooltip`),o=a.length,s=t.getRawValue(n),c=q(s),l=nT(t,n),u,d,f,p;if(o>1||c&&!o){var m=oT(s,t,n,a,l);u=m.inlineValues,d=m.inlineValueTypes,f=m.blocks,p=m.inlineValues[0]}else if(o){var h=i.getDimensionInfo(a[0]);p=u=ix(i,n,a[0]),d=h.type}else p=u=c?s[0]:s;var g=vh(t),_=g&&t.name||``,v=i.getName(n),y=r?_:v;return Uw(`section`,{header:_,noHeader:r||!g,sortParam:p,blocks:[Uw(`nameValue`,{markerType:`item`,markerColor:l,name:y,noName:!Xs(y),value:u,valueType:d,rawDataIndex:i.getRawIndex(n)})].concat(f||[])})}function oT(e,t,n,r,i){var a=t.getData(),o=ks(e,function(e,t,n){var r=a.getDimensionInfo(n);return e||=r&&r.tooltip!==!1&&r.displayName!=null},!1),s=[],c=[],l=[];r.length?G(r,function(e){u(ix(a,n,e),e)}):G(e,u);function u(e,t){var n=a.getDimensionInfo(t);n&&n.otherDims.tooltip!==!1&&(o?l.push(Uw(`nameValue`,{markerType:`subItem`,markerColor:i,name:n.displayName,value:e,valueType:n.type})):(s.push(e),c.push(n.type)))}return{inlineValues:s,inlineValueTypes:c,blocks:l}}var sT=Ch();function cT(e,t){return e.getName(t)||e.getId(t)}var lT=function(e){U(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t._selectedDataIndicesMap={},t}return t.prototype.init=function(e,t,n){this.seriesIndex=this.componentIndex,this.dataTask=vw({count:fT,reset:pT}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(e,n),(sT(this).sourceManager=new Mw(this)).prepareSource();var r=this.getInitialData(e,n);hT(r,this),this.dataTask.context.data=r,sT(this).dataBeforeProcessed=r,uT(this),this._initSelectedMapFromData(r)},t.prototype.mergeDefaultAndTheme=function(e,t){var n=tw(this),r=n?rw(e):{},i=this.subType;ow.hasClass(i)&&(i+=`Series`),Ss(e,t.getTheme().get(this.subType)),Ss(e,this.getDefaultOption()),ih(e,`label`,[`show`]),this.fillDataTextStyle(e.data),n&&nw(e,r,n)},t.prototype.mergeOption=function(e,t){e=Ss(this.option,e,!0),this.fillDataTextStyle(e.data);var n=tw(this);n&&nw(this.option,e,n);var r=sT(this).sourceManager;r.dirty(),r.prepareSource();var i=this.getInitialData(e,t);hT(i,this),this.dataTask.dirty(),this.dataTask.context.data=i,sT(this).dataBeforeProcessed=i,uT(this),this._initSelectedMapFromData(i)},t.prototype.fillDataTextStyle=function(e){if(e&&!Bs(e))for(var t=[`show`],n=0;n=0&&u<0)&&(l=v,u=_,d=0),_===u&&(c[d++]=m))}return c.length=d,c},t.prototype.formatTooltip=function(e,t,n){return aT({series:this,dataIndex:e,multipleSeries:t})},t.prototype.isAnimationEnabled=function(){var e=this.ecModel;if(dc.node&&!(e&&e.ssr))return!1;var t=this.getShallow(`animation`);return t&&this.getData().count()>this.getShallow(`animationThreshold`)&&(t=!1),!!t},t.prototype.restoreData=function(){this.dataTask.dirty()},t.prototype.getColorFromPalette=function(e,t,n){var r=this.ecModel,i=uw.prototype.getColorFromPalette.call(this,e,t,n);return i||=r.getColorFromPalette(e,t,n),i},t.prototype.coordDimToDataDim=function(e){return this.getRawData().mapDimensionsAll(e)},t.prototype.getProgressive=function(){return this.get(`progressive`)},t.prototype.getProgressiveThreshold=function(){return this.get(`progressiveThreshold`)},t.prototype.select=function(e,t){this._innerSelect(this.getData(t),e)},t.prototype.unselect=function(e,t){var n=this.option.selectedMap;if(n){var r=this.option.selectedMode,i=this.getData(t);if(r===`series`||n===`all`){this.option.selectedMap={},this._selectedDataIndicesMap={};return}for(var a=0;a=0&&n.push(i)}return n},t.prototype.isSelected=function(e,t){var n=this.option.selectedMap;if(!n)return!1;var r=this.getData(t);return(n===`all`||n[cT(r,e)])&&!r.getItemModel(e).get([`select`,`disabled`])},t.prototype.isUniversalTransitionEnabled=function(){if(this.__universalTransitionEnabled)return!0;var e=this.option.universalTransition;return e?e===!0||e&&e.enabled:!1},t.prototype._innerSelect=function(e,t){var n,r,i=this.option,a=i.selectedMode,o=t.length;if(a&&o){if(a===`series`)i.selectedMap=`all`;else if(a===`multiple`){Y(i.selectedMap)||(i.selectedMap={});for(var s=i.selectedMap,c=0;c0&&this._innerSelect(e,t)}},t.registerClass=function(e){return ow.registerClass(e)},t.protoInitialize=function(){var e=t.prototype;e.type=`series.__base__`,e.seriesIndex=0,e.ignoreStyleOnData=!1,e.hasSymbolVisual=!1,e.defaultSymbol=`circle`,e.visualStyleAccessPath=`itemStyle`,e.visualDrawType=`fill`}(),t}(ow);Ds(lT,gw),Ds(lT,uw),xc(lT,ow);function uT(e){var t=e.name;vh(e)||(e.name=dT(e)||t)}function dT(e){var t=e.getRawData(),n=t.mapDimensionsAll(`seriesName`),r=[];return G(n,function(e){var n=t.getDimensionInfo(e);n.displayName&&r.push(n.displayName)}),r.join(` `)}function fT(e){return e.model.getRawData().count()}function pT(e){var t=e.model;return t.setData(t.getRawData().cloneShallow()),mT}function mT(e,t){t.outputData&&e.end>t.outputData.count()&&t.model.getRawData().cloneShallow(t.outputData)}function hT(e,t){G(ic(e.CHANGABLE_METHODS,e.DOWNSAMPLE_METHODS),function(n){e.wrapMethod(n,Fs(gT,t))})}function gT(e,t){var n=_T(e);return n&&n.setOutputEnd((t||this).count()),t}function _T(e){var t=(e.ecModel||{}).scheduler,n=t&&t.getPipeline(e.uid);if(n){var r=n.currentTask;if(r){var i=r.agentStubMap;i&&(r=i.get(e.uid))}return r}}var vT=Ap.extend({type:`triangle`,shape:{cx:0,cy:0,width:0,height:0},buildPath:function(e,t){var n=t.cx,r=t.cy,i=t.width/2,a=t.height/2;e.moveTo(n,r-a),e.lineTo(n+i,r+a),e.lineTo(n-i,r+a),e.closePath()}}),yT={line:_v,rect:Wp,roundRect:Wp,square:Wp,circle:V_,diamond:Ap.extend({type:`diamond`,shape:{cx:0,cy:0,width:0,height:0},buildPath:function(e,t){var n=t.cx,r=t.cy,i=t.width/2,a=t.height/2;e.moveTo(n,r-a),e.lineTo(n+i,r),e.lineTo(n,r+a),e.lineTo(n-i,r),e.closePath()}}),pin:Ap.extend({type:`pin`,shape:{x:0,y:0,width:0,height:0},buildPath:function(e,t){var n=t.x,r=t.y,i=t.width/5*3,a=Math.max(i,t.height),o=i/2,s=o*o/(a-o),c=r-a+o+s,l=Math.asin(s/o),u=Math.cos(l)*o,d=Math.sin(l),f=Math.cos(l),p=o*.6,m=o*.7;e.moveTo(n-u,c+s),e.arc(n,c,o,Math.PI-l,Math.PI*2+l),e.bezierCurveTo(n+u-d*p,c+s+f*p,n,r-m,n,r),e.bezierCurveTo(n,r-m,n-u+d*p,c+s+f*p,n-u,c+s),e.closePath()}}),arrow:Ap.extend({type:`arrow`,shape:{x:0,y:0,width:0,height:0},buildPath:function(e,t){var n=t.height,r=t.width,i=t.x,a=t.y,o=r/3*2;e.moveTo(i,a),e.lineTo(i+o,a+n),e.lineTo(i,a+n/4*3),e.lineTo(i-o,a+n),e.lineTo(i,a),e.closePath()}}),triangle:vT},bT={line:function(e,t,n,r,i){i.x1=e,i.y1=t+r/2,i.x2=e+n,i.y2=t+r/2},rect:function(e,t,n,r,i){i.x=e,i.y=t,i.width=n,i.height=r},roundRect:function(e,t,n,r,i){i.x=e,i.y=t,i.width=n,i.height=r,i.r=Math.min(n,r)/4},square:function(e,t,n,r,i){var a=Math.min(n,r);i.x=e,i.y=t,i.width=a,i.height=a},circle:function(e,t,n,r,i){i.cx=e+n/2,i.cy=t+r/2,i.r=Math.min(n,r)/2},diamond:function(e,t,n,r,i){i.cx=e+n/2,i.cy=t+r/2,i.width=n,i.height=r},pin:function(e,t,n,r,i){i.x=e+n/2,i.y=t+r/2,i.width=n,i.height=r},arrow:function(e,t,n,r,i){i.x=e+n/2,i.y=t+r/2,i.width=n,i.height=r},triangle:function(e,t,n,r,i){i.cx=e+n/2,i.cy=t+r/2,i.width=n,i.height=r}},xT={};G(yT,function(e,t){xT[t]=new e});var ST=Ap.extend({type:`symbol`,shape:{symbolType:``,x:0,y:0,width:0,height:0},calculateTextPosition:function(e,t,n){var r=Wl(e,t,n),i=this.shape;return i&&i.symbolType===`pin`&&t.position===`inside`&&(r.y=n.y+n.height*.4),r},buildPath:function(e,t,n){var r=t.symbolType;if(r!==`none`){var i=xT[r];i||=(r=`rect`,xT[r]),bT[r](t.x,t.y,t.width,t.height,i.shape),i.buildPath(e,i.shape,n)}}});function CT(e,t){if(this.type!==`image`){var n=this.style;this.__isEmptyBrush?(n.stroke=e,n.fill=t||Q.color.neutral00,n.lineWidth=2):this.shape.symbolType===`line`?n.stroke=e:n.fill=e,this.markRedraw()}}function wT(e,t,n,r,i,a,o){var s=e.indexOf(`empty`)===0;s&&(e=e.substr(5,1).toLowerCase()+e.substr(6));var c=e.indexOf(`image://`)===0?ay(e.slice(8),new Sl(t,n,r,i),o?`center`:`cover`):e.indexOf(`path://`)===0?iy(e.slice(7),{},new Sl(t,n,r,i),o?`center`:`cover`):new ST({shape:{symbolType:e,x:t,y:n,width:r,height:i}});return c.__isEmptyBrush=s,c.setColor=CT,a&&c.setColor(a),c}function TT(e){return q(e)||(e=[+e,+e]),[e[0]||0,e[1]||0]}function ET(e,t){if(e!=null)return q(e)||(e=[e,e]),[wm(e[0],t[0])||0,wm(X(e[1],e[0]),t[1])||0]}var DT=function(e){U(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n.hasSymbolVisual=!0,n}return t.prototype.getInitialData=function(e){return gS(null,this,{useEncodeDefaulter:!0})},t.prototype.getLegendIcon=function(e){var t=new z_,n=wT(`line`,0,e.itemHeight/2,e.itemWidth,0,e.lineStyle.stroke,!1);t.add(n),n.setStyle(e.lineStyle);var r=this.getData().getVisual(`symbol`),i=this.getData().getVisual(`symbolRotate`),a=r===`none`?`circle`:r,o=e.itemHeight*.8,s=wT(a,(e.itemWidth-o)/2,(e.itemHeight-o)/2,o,o,e.itemStyle.fill);return t.add(s),s.setStyle(e.itemStyle),s.rotation=(e.iconRotate===`inherit`?i:e.iconRotate||0)*Math.PI/180,s.setOrigin([e.itemWidth/2,e.itemHeight/2]),a.indexOf(`empty`)>-1&&(s.style.stroke=s.style.fill,s.style.fill=Q.color.neutral00,s.style.lineWidth=2),t},t.type=`series.line`,t.dependencies=[`grid`,`polar`],t.defaultOption={z:3,coordinateSystem:`cartesian2d`,legendHoverLink:!0,clip:!0,label:{position:`top`},endLabel:{show:!1,valueAnimation:!0,distance:8},lineStyle:{width:2,type:`solid`},emphasis:{scale:!0},step:!1,smooth:!1,smoothMonotone:null,symbol:`emptyCircle`,symbolSize:6,symbolRotate:null,showSymbol:!0,showAllSymbol:`auto`,connectNulls:!1,sampling:`none`,animationEasing:`linear`,progressive:0,hoverLayerThreshold:1/0,universalTransition:{divideShape:`clone`},triggerLineEvent:!1,triggerEvent:!1},t}(lT);function OT(e,t){var n=e.mapDimensionsAll(`defaultedLabel`),r=n.length;if(r===1){var i=ix(e,t,n[0]);return i==null?null:i+``}if(r){for(var a=[],o=0;o=0&&r.push(t[a])}return r.join(` `)}var AT=function(e){U(t,e);function t(t,n,r,i){var a=e.call(this)||this;return a.updateData(t,n,r,i),a}return t.prototype._createSymbol=function(e,t,n,r,i,a){this.removeAll();var o=wT(e,-1,-1,2,2,null,a);o.attr({z2:X(i,100),culling:!0,scaleX:r[0]/2,scaleY:r[1]/2}),o.drift=jT,this._symbolType=e,this.add(o)},t.prototype.stopSymbolAnimation=function(e){this.childAt(0).stopAnimation(null,e)},t.prototype.getSymbolType=function(){return this._symbolType},t.prototype.getSymbolPath=function(){return this.childAt(0)},t.prototype.highlight=function(){Vg(this.childAt(0))},t.prototype.downplay=function(){Hg(this.childAt(0))},t.prototype.setZ=function(e,t){var n=this.childAt(0);n.zlevel=e,n.z=t},t.prototype.setDraggable=function(e,t){var n=this.childAt(0);n.draggable=e,n.cursor=!t&&e?`move`:n.cursor},t.prototype.updateData=function(e,n,r,i){this.silent=!1;var a=e.getItemVisual(n,`symbol`)||`circle`,o=e.hostModel,s=t.getSymbolSize(e,n),c=t.getSymbolZ2(e,n),l=a!==this._symbolType,u=i&&i.disableAnimation;if(l){var d=e.getItemVisual(n,`symbolKeepAspect`);this._createSymbol(a,e,n,s,c,d)}else{var f=this.childAt(0);f.silent=!1;var p={scaleX:s[0]/2,scaleY:s[1]/2};u?f.attr(p):Hv(f,p,o,n),Jv(f)}if(this._updateCommon(e,n,s,r,i),l){var f=this.childAt(0);if(!u){var p={scaleX:this._sizeX,scaleY:this._sizeY,style:{opacity:f.style.opacity}};f.scaleX=f.scaleY=0,f.style.opacity=0,Uv(f,p,o,n)}}u&&this.childAt(0).stopAnimation(`leave`)},t.prototype._updateCommon=function(e,t,n,r,i){var a=this.childAt(0),o=e.hostModel,s,c,l,u,d,f,p,m,h;if(r&&(s=r.emphasisItemStyle,c=r.blurItemStyle,l=r.selectItemStyle,u=r.focus,d=r.blurScope,p=r.labelStatesModels,m=r.hoverScale,h=r.cursorStyle,f=r.emphasisDisabled),!r||e.hasItemOption){var g=r&&r.itemModel?r.itemModel:e.getItemModel(t),_=g.getModel(`emphasis`);s=_.getModel(`itemStyle`).getItemStyle(),l=g.getModel([`select`,`itemStyle`]).getItemStyle(),c=g.getModel([`blur`,`itemStyle`]).getItemStyle(),u=_.get(`focus`),d=_.get(`blurScope`),f=_.get(`disabled`),p=qy(g),m=_.getShallow(`scale`),h=g.getShallow(`cursor`)}var v=e.getItemVisual(t,`symbolRotate`);a.attr(`rotation`,(v||0)*Math.PI/180||0);var y=ET(e.getItemVisual(t,`symbolOffset`),n);y&&(a.x=y[0],a.y=y[1]),h&&a.attr(`cursor`,h);var b=e.getItemVisual(t,`style`),x=b.fill;if(a instanceof Ip){var S=a.style;a.useStyle(W({image:S.image,x:S.x,y:S.y,width:S.width,height:S.height},b))}else a.__isEmptyBrush?a.useStyle(W({},b)):a.useStyle(b),a.style.decal=null,a.setColor(x,i&&i.symbolInnerColor),a.style.strokeNoScale=!0;var C=e.getItemVisual(t,`liftZ`),w=this._z2;C==null?w!=null&&(a.z2=w,this._z2=null):w??(this._z2=a.z2,a.z2+=C);var T=i&&i.useNameLabel;Ky(a,p,{labelFetcher:o,labelDataIndex:t,defaultText:E,inheritColor:x,defaultOpacity:b.opacity});function E(t){return T?e.getName(t):OT(e,t)}this._sizeX=n[0]/2,this._sizeY=n[1]/2;var D=a.ensureState(`emphasis`);D.style=s,a.ensureState(`select`).style=l,a.ensureState(`blur`).style=c;var O=m==null||m===!0?Math.max(1.1,3/this._sizeY):isFinite(m)&&m>0?+m:1;D.scaleX=this._sizeX*O,D.scaleY=this._sizeY*O,this.setSymbolScale(1),o_(this,u,d,f)},t.prototype.setSymbolScale=function(e){this.scaleX=this.scaleY=e},t.prototype.fadeOut=function(e,t,n){var r=this.childAt(0),i=Zh(this).dataIndex,a=n&&n.animation;if(this.silent=r.silent=!0,n&&n.fadeLabel){var o=r.getTextContent();o&&Gv(o,{style:{opacity:0}},t,{dataIndex:i,removeOpt:a,cb:function(){r.removeTextContent()}})}else r.removeTextContent();Gv(r,{style:{opacity:0},scaleX:0,scaleY:0},t,{dataIndex:i,cb:e,removeOpt:a})},t.getSymbolSize=function(e,t){return TT(e.getItemVisual(t,`symbolSize`))},t.getSymbolZ2=function(e,t){return e.getItemVisual(t,`z2`)},t}(z_);function jT(e,t){this.parent.drift(e,t)}function MT(e,t,n,r){return t&&!isNaN(t[0])&&!isNaN(t[1])&&!(r&&r.isIgnore&&r.isIgnore(n))&&!(r&&r.clipShape&&!r.clipShape.contain(t[0],t[1]))&&e.getItemVisual(n,`symbol`)!==`none`}function NT(e){return e!=null&&!Y(e)&&(e={isIgnore:e}),e||{}}function PT(e){var t=e.hostModel,n=t.getModel(`emphasis`);return{emphasisItemStyle:n.getModel(`itemStyle`).getItemStyle(),blurItemStyle:t.getModel([`blur`,`itemStyle`]).getItemStyle(),selectItemStyle:t.getModel([`select`,`itemStyle`]).getItemStyle(),focus:n.get(`focus`),blurScope:n.get(`blurScope`),emphasisDisabled:n.get(`disabled`),hoverScale:n.get(`scale`),labelStatesModels:qy(t),cursorStyle:t.get(`cursor`)}}function FT(e,t,n,r,i,a,o){var s=new e(t,n,r,i);return s.setPosition(a),t.setItemGraphicEl(n,s),o.add(s),s}var IT=function(){function e(e){this.group=new z_,this._SymbolCtor=e||AT}return e.prototype.updateData=function(e,t){this._progressiveEls=null,t=NT(t);var n=this.group,r=e.hostModel,i=this._data,a=this._SymbolCtor,o=t.disableAnimation,s=this._seriesScope=PT(e),c={disableAnimation:o},l=t.getSymbolPoint||function(t){return e.getItemLayout(t)};i||n.removeAll(),e.diff(i).add(function(r){var i=l(r);MT(e,i,r,t)&&FT(a,e,r,s,c,i,n)}).update(function(u,d){var f=i.getItemGraphicEl(d),p=l(u);if(!MT(e,p,u,t)){n.remove(f);return}var m=e.getItemVisual(u,`symbol`)||`circle`,h=f&&f.getSymbolType&&f.getSymbolType();if(!f||h&&h!==m)n.remove(f),f=new a(e,u,s,c),f.setPosition(p);else{f.updateData(e,u,s,c);var g={x:p[0],y:p[1]};o?f.attr(g):Hv(f,g,r)}n.add(f),e.setItemGraphicEl(u,f)}).remove(function(e){var t=i.getItemGraphicEl(e);t&&t.fadeOut(function(){n.remove(t)},r)}).execute(),this._getSymbolPoint=l,this._data=e},e.prototype.updateLayout=function(e){var t=this._data;if(t)for(var n=this,r=t.getStore(),i=0,a=r.count();i0?n=r[0]:r[1]<0&&(n=r[1]),n}function zT(e,t,n,r){var i=NaN;e.stacked&&(i=n.get(n.getCalculationInfo(`stackedOverDimension`),r)),isNaN(i)&&(i=e.valueStart);var a=e.baseDataOffset,o=[];return o[a]=n.get(e.baseDim,r),o[1-a]=i,t.dataToPoint(o)}function BT(e,t){return!isFinite(e)||!isFinite(t)}var VT=typeof Float32Array<`u`?Float32Array:void 0,HT=typeof Float64Array<`u`?Float64Array:void 0;function UT(e){return WT({ctor:VT},e).arr}function WT(e,t){var n=e.arr,r=e.ctor;if(t>Pm&&(t=Pm),!n||e.typed&&n.length=i||h<0)break;if(BT(_,v)){if(c){h+=a;continue}break}if(h===n)e[a>0?`moveTo`:`lineTo`](_,v),d=_,f=v;else{var y=_-l,b=v-u;if(y*y+b*b<.5){h+=a;continue}if(o>0){for(var x=h+a,S=t[x*2],C=t[x*2+1];S===_&&C===v&&g=r||BT(S,C))p=_,m=v;else{E=S-l,D=C-u;var A=_-l,j=S-_,M=v-u,N=C-v,ee=void 0,te=void 0;if(s===`x`){ee=Math.abs(A),te=Math.abs(j);var P=E>0?1:-1;p=_-P*ee*o,m=v,O=_+P*te*o,k=v}else if(s===`y`){ee=Math.abs(M),te=Math.abs(N);var F=D>0?1:-1;p=_,m=v-F*ee*o,O=_,k=v+F*te*o}else ee=Math.sqrt(A*A+M*M),te=Math.sqrt(j*j+N*N),T=te/(te+ee),p=_-E*o*(1-T),m=v-D*o*(1-T),O=_+E*o*T,k=v+D*o*T,O=qT(O,JT(S,_)),k=qT(k,JT(C,v)),O=JT(O,qT(S,_)),k=JT(k,qT(C,v)),E=O-_,D=k-v,p=_-E*ee/te,m=v-D*ee/te,p=qT(p,JT(l,_)),m=qT(m,JT(u,v)),p=JT(p,qT(l,_)),m=JT(m,qT(u,v)),E=_-p,D=v-m,O=_+E*te/ee,k=v+D*te/ee}e.bezierCurveTo(d,f,p,m,_,v),d=O,f=k}else e.lineTo(_,v)}l=_,u=v,h+=a}return g}var XT=function(){function e(){this.smooth=0,this.smoothConstraint=!0}return e}(),ZT=function(e){U(t,e);function t(t){var n=e.call(this,t)||this;return n.type=`ec-polyline`,n}return t.prototype.getDefaultStyle=function(){return{stroke:Q.color.neutral99,fill:null}},t.prototype.getDefaultShape=function(){return new XT},t.prototype.buildPath=function(e,t){var n=t.points,r=0,i=n.length/2;if(t.connectNulls){for(;i>0&&BT(n[i*2-2],n[i*2-1]);i--);for(;r=0){var _=o?(d-a)*g+a:(u-i)*g+i;return o?[e,_]:[_,e]}i=u,a=d;break;case r.C:u=n[c++],d=n[c++],f=n[c++],p=n[c++],m=n[c++],h=n[c++];var v=o?Ru(i,u,f,m,e,s):Ru(a,d,p,h,e,s);if(v>0)for(var y=0;y=0){var _=o?Iu(a,d,p,h,b):Iu(i,u,f,m,b);return o?[e,_]:[_,e]}}i=m,a=h}}},t}(Ap),QT=function(e){U(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(XT),$T=function(e){U(t,e);function t(t){var n=e.call(this,t)||this;return n.type=`ec-polygon`,n}return t.prototype.getDefaultShape=function(){return new QT},t.prototype.buildPath=function(e,t){var n=t.points,r=t.stackedOnPoints,i=0,a=n.length/2,o=t.smoothMonotone;if(t.connectNulls){for(;a>0&&BT(n[a*2-2],n[a*2-1]);a--);for(;i=t[0]&&e<=t[1]},getExtent:function(){return this._extents[0].slice()},getExtentUnsafe:function(e){return this._extents[e]},setExtent:function(e,t){DE(this._extents,0,e,t)},setExtent2:function(e,t,n){var r=this._extents;r[e]||(r[e]=r[0].slice()),DE(r,e,t,n)},freeze:function(){}};function DE(e,t,n,r){Bh(n,r)&&(e[t][0]=n,e[t][1]=r)}function OE(e){return kE(e)||jE(e)}function kE(e){return e.type===`interval`}function AE(e){return e.type===`time`}function jE(e){return e.type===`log`}function ME(e){return e.type===`ordinal`}function NE(e){var t=Bm(e),n=vm(10,t),r=hm(e/n);return r?r===2?r=3:r===3?r=5:r*=2:r=1,Om(r*n,-t)}function PE(e){return Am(e)+2}function FE(e,t){return ym(e)/ym(t)}function IE(e,t,n){var r=n&&n.lookup;if(r){for(var i=0;i1&&a/o>2&&(i=Math.round(Math.ceil(i/o)*o)),i!==r[0]&&c(r[0],!0,!0);for(var s=i;s<=r[1];s+=o)c(s,!1,s===r[0]||s===r[1]);s-o!==r[1]&&c(r[1],!0,!0);function c(e,t,r){n({value:e,offInterval:t},r)}}var VE=function(e){U(t,e);function t(n){var r=e.call(this)||this;r.type=`ordinal`,r.parse=t.parse,yE(r,t.decoratedMethods);var i=n.ordinalMeta;i||=new hE({}),q(i)&&(i=new hE({categories:K(i,function(e){return Y(e)?e.value:e})})),r._ordinalMeta=i;var a=vE(null,null,n.extent||[0,i.categories.length-1]);return r._mapper=a.mapper,bE(r,a.mapper),r}return t.parse=function(e){return e==null?e=NaN:J(e)?(e=this._ordinalMeta.getOrdinal(e),e??=NaN):e=hm(e),e},t.prototype.getTicks=function(){var e=[];return BE(this,0,function(t){e.push(t)}),e},t.prototype.getMinorTicks=function(e){},t.prototype.setSortInfo=function(e){if(e==null){this._ordinalNumbersByTick=this._ticksByOrdinalNumber=null;return}for(var t=e.ordinalNumbers,n=this._ordinalNumbersByTick=[],r=this._ticksByOrdinalNumber=[],i=0,a=this._ordinalMeta.categories.length,o=fm(a,t.length);i=0&&e=0&&e=0&&eo[0]&&mi[1]||!isFinite(p)||!isFinite(i[1]))break}else{if(m>f)break;p=fm(p,i[1]),m===f&&(p=i[1])}if(l.push({value:p}),p=Om(p+n,a),s){var h=s.calcNiceTickMultiple(p,d);h>=0&&(p=Om(p+h*n,a))}if(l.length>0&&p===l[l.length-1].value)break;if(l.length>u)return[]}var g=l.length?l[l.length-1].value:i[1];return r[1]>g&&l.push({value:e.expandToNicedExtent?Om(g+n,a):r[1]}),c&&o.pruneTicksByBreak(e.pruneByBreak,l,s.breaks,function(e){return e.value},t.interval,r),c&&e.breakTicks!==`none`&&o.addBreaksToTicks(l,s.breaks,r),l},t.prototype.getMinorTicks=function(e){return HE(this,e,$S(this),this._cfg.interval)},t.prototype.getLabel=function(e,t){if(e==null)return``;var n=t&&t.precision;return n==null?n=Am(e.value)||0:n===`auto`&&(n=this._cfg.intervalPrecision),LC(Om(e.value,n,!0))},t.type=`interval`,t}(pE);pE.registerClass(UE);var WE=function(e,t,n,r){for(;n>>1;e[i][1]16?16:e>7.5?7:e>3.5?4:e>1.5?2:1}function YE(e){var t=30*iC;return e/=t,e>6?6:e>3?3:e>2?2:1}function XE(e){return e/=rC,e>12?12:e>6?6:e>3.5?4:e>2?2:1}function ZE(e,t){return e/=t?nC:tC,e>30?30:e>20?20:e>15?15:e>10?10:e>5?5:e>2?2:1}function QE(e){return pm(Vm(e,!0),1)}function $E(e,t,n){var r=Math.max(0,Ts(dC,t)-1);return SC(new Date(e),dC[r],n).getTime()}function eD(e,t){var n=new Date(0);n[e](1);var r=n.getTime();n[e](1+t);var i=n.getTime()-r;return function(e,t){return Math.max(0,Math.round((t-e)/i))}}function tD(e,t,n,r,i,a){var o=fC,s=0;function c(e,t,n,i,o,c,l){for(var u=eD(o,e),d=t,f=new Date(d);d3e3));)if(f[o](f[i]()+e),d=f.getTime(),a){var p=a.calcNiceTickMultiple(d,u);p>0&&(f[o](f[i]()+p*e),d=f.getTime())}l.push({value:d,notAdd:d>r[1]})}function l(e,i,a){var o=[],s=!i.length;if(!qE(gC(e),r[0],r[1],n)){s&&(i=[{value:$E(r[0],e,n)},{value:r[1]}]);for(var l=0;l=r[0]&&u<=r[1]&&c(f,u,d,p,m,h,o),e===`year`&&a.length>1&&l===0&&a.unshift({value:a[0].value-f})}}for(var l=0;l=r[0]&&v<=r[1]&&f++)}var y=i/t;if(f>y*1.5&&p>y/1.5||(u.push(g),f>y||e===o[m]))break}d=[]}}for(var b=As(K(u,function(e){return As(e,function(e){return e.value>=r[0]&&e.value<=r[1]&&!e.notAdd})}),function(e){return e.length>0}),x=b.length-1,S=[],m=0;mr[0])&&S.unshift({value:r[0],time:{level:0,upperTimeUnit:O,lowerTimeUnit:O},notNice:!0}),(!D||D.values&&(a=s);var c=KE.length,l=Math.min(WE(KE,a,0,c),c-1),u=KE[l][1],d=KE[Math.max(l-1,0)][0];e.setTimeInterval({approxInterval:a,interval:u,minLevelUnit:d})};pE.registerClass(GE);var rD=0,iD=1,aD=2,oD=function(e){U(t,e);function t(n){var r=e.call(this)||this;r.type=`log`,r.parse=UE.parse,r.base=n.logBase||10;var i=[],a=[],o=r._lookup={from:i,to:a};i[rD]=i[iD]=a[rD]=a[iD]=NaN,yE(r,t.mapperMethods);var s=ZS(),c=n.breakOption,l={lookup:o};return s&&s.parseAxisBreakOptionInwardTransform(c,r,{noNegative:!0},aD,l),r.powStub=new UE({breakParsed:l.original}),r.intervalStub=new UE({breakParsed:l.transformed}),bE(r,r.intervalStub),r}return t.prototype.getTicks=function(e){var t=this.base,n=this.powStub,r=ZS(),i=this.intervalStub,a={lookup:{from:i.getExtent(),to:n.getExtent()}};return K(i.getTicks(e||{}),function(e){var i=e.value,o=IE(i,t,a),s;if(r){var c=r.getTicksBreakOutwardTransform(this,e,$S(n),this._lookup);c&&(s=c.vBreak,o=c.tickVal)}return{value:o,break:s}},this)},t.prototype.getMinorTicks=function(e){return HE(this,e,$S(this.powStub),this.intervalStub.getConfig().interval)},t.prototype.getLabel=function(e,t){return this.intervalStub.getLabel(e,t)},t.type=`log`,t.mapperMethods={needTransform:function(){return!0},normalize:function(e){return this.intervalStub.normalize(FE(e,this.base))},scale:function(e){return IE(this.intervalStub.scale(e),this.base,null)},transformIn:function(e,t){return e=FE(e,this.base),t&&t.depth===2?e:this.intervalStub.transformIn(e,t)},transformOut:function(e,t){var n=t?t.depth:null;return sD.depth=n,cD.lookup=this._lookup,IE(n===2?e:this.intervalStub.transformOut(e,sD),this.base,cD)},contain:function(e){return this.powStub.contain(e)},setExtent:function(e,t){this.setExtent2(0,e,t)},setExtent2:function(e,t,n){if(!(!Bh(t,n)||t<=0||n<=0)){var r=lD,i=lD;if(e===0){var a=this._lookup;r=a.to,i=a.from}this.powStub.setExtent2(e,r[rD]=t,r[iD]=n);var o=this.base;this.intervalStub.setExtent2(e,i[rD]=FE(t,o),i[iD]=FE(n,o))}},getFilter:function(){return{g:0}},sanitize:function(e,t){return Bh(t[0],t[1])&&qm(e)&&e<=0&&(e=t[0]),e},getDefaultStartValue:function(){return 1},getExtent:function(){return this.powStub.getExtent()},getExtentUnsafe:function(e,t){return t===null?this.powStub.getExtentUnsafe(e,null):this.intervalStub.getExtentUnsafe(e,t)}},t}(pE);pE.registerClass(oD);var sD={},cD={},lD=[],uD={value:1,category:1,time:1,log:1},dD=Ch();function fD(e){var t=e.get(`type`);return(t==null||!sc(uD,t)&&!pE.getClass(t))&&(t=`value`),t}function pD(e,t,n){var r=ZS(),i;switch(r&&(i=wD(e,t,n)),t){case`category`:return new VE({ordinalMeta:e.getOrdinalMeta?e.getOrdinalMeta():e.getCategories(),extent:Ph()});case`time`:return new GE({locale:e.ecModel.getLocaleModel(),useUTC:e.ecModel.get(`useUTC`),breakOption:i});case`log`:return new oD({logBase:e.get(`logBase`),breakOption:i});case`value`:return new UE({breakOption:i});default:return new((pE.getClass(t))||UE)({})}}function mD(e,t,n){var r=n?SE(e,null):e.getExtentUnsafe(0,null),i=r[0],a=r[1];return Bh(i,a)?i===t||a===t?2:it?1:3:3}function hD(e){dD(e).noOnMyZero=!0}function gD(e){return dD(e).noOnMyZero}function _D(e){var t=e.getLabelModel().get(`formatter`);if(e.type===`time`){var n=pC(t);return function(t,r){return e.scale.getFormattedLabel(t,r,n)}}if(J(t))return function(n){var r=e.scale.getLabel(n);return t.replace(`{value}`,r??``)};if(Is(t)){if(e.type===`category`)return function(n,r){return t(vD(e,n),n.value-e.scale.getExtent()[0],null)};var r=ZS();return function(n,i){var a=null;return r&&(a=r.makeAxisLabelFormatterParamBreak(a,n.break)),t(vD(e,n),i,a)}}return function(t){return e.scale.getLabel(t)}}function vD(e,t){var n=e.scale;return ME(n)?n.getLabel(t):t.value}function yD(e){return e.get(`interval`)??`auto`}function bD(e){return e.type===`category`&&yD(e.getLabelModel())===0}function xD(e,t){var n={};return G(e.mapDimensionsAll(t),function(t){n[pS(e,t)]=!0}),Ms(n)}function SD(e){return e===`middle`||e===`center`}function CD(e){return e.getShallow(`show`)}function wD(e,t,n){var r=e.get(`breaks`,!0);if(r!=null)return!ZS()||!n||!TD(t)?void 0:r}function TD(e){return e!==`category`}function ED(e,t,n,r,i,a){var o=jE(e),s=o?e.intervalStub:e;if(s.setExtent(r[0],r[1]),o){var c=e.powStub,l={depth:2},u=e.transformOut(r[0],l),d=e.transformOut(r[1],l),f=RE(n,r);t[0]&&!f[0]&&(u=i[0]),t[1]&&!f[1]&&(d=i[1]),c.setExtent(u,d)}s.setConfig(a)}function DD(e,t){return ME(e)?e.getRawOrdinalNumber(t.value):t.value}function OD(e,t){return ME(e)&&!!t.get(`boundaryGap`)}function kD(e,t){if(e.length===t.length){for(var n=0;nt){a?n.push(o(a,c,t)):i&&n.push(o(i,c,0),o(i,c,t));break}else i&&=(n.push(o(i,c,0)),null),n.push(c),a=c}return n}function ID(e,t,n){var r=e.getVisual(`visualMeta`);if(r&&r.length&&e.count()&&t.type===`cartesian2d`){for(var i,a,o=r.length-1;o>=0;o--){var s=e.getDimensionInfo(r[o].dimension);if(i=s&&s.coordDim,i===`x`||i===`y`){a=r[o];break}}if(a){var c=t.getAxis(i),l=K(a.stops,function(e){return{coord:c.toGlobalCoord(c.dataToCoord(e.value)),color:e.color}}),u=l.length,d=a.outerColors.slice();u&&l[0].coord>l[u-1].coord&&(l.reverse(),d.reverse());var f=FD(l,i===`x`?n.getWidth():n.getHeight()),p=f.length;if(!p&&u)return l[0].coord<0?d[1]?d[1]:l[u-1].color:d[0]?d[0]:l[0].color;var m=10,h=f[0].coord-m,g=f[p-1].coord+m,_=g-h;if(_<.001)return`transparent`;G(f,function(e){e.offset=(e.coord-h)/_}),f.push({offset:p?f[p-1].offset:.5,color:d[1]||`transparent`}),f.unshift({offset:p?f[0].offset:.5,color:d[0]||`transparent`});var v=new Ev(0,0,0,0,f,!0);return v[i]=h,v[i+`2`]=g,v}}}function LD(e,t,n){var r=e.get(`showAllSymbol`),i=r===`auto`;if(!r||i){var a=n.getAxesByScale(`ordinal`)[0];if(a&&!(i&&RD(a,t))){var o=t.mapDimension(a.dim),s={};return G(a.getViewLabels(),function(e){e.tick.offInterval||(s[DD(a.scale,e.tick)]=1)}),function(e){return!s.hasOwnProperty(t.get(o,e))}}}}function RD(e,t){var n=e.getExtent(),r=Math.abs(n[1]-n[0])/e.scale.count();isNaN(r)&&(r=0);for(var i=t.count(),a=Math.max(1,Math.round(i/5)),o=0;or)return!1;return!0}function zD(e){for(var t=e.length/2;t>0&&BT(e[t*2-2],e[t*2-1]);t--);return t-1}function BD(e,t){return[e[t*2],e[t*2+1]]}function VD(e,t,n){for(var r=e.length/2,i=n===`x`?0:1,a,o,s=0,c=-1,l=0;l=t||a>=t&&o<=t){c=l;break}s=l,a=o}return{range:[s,c],t:(t-a)/(o-a)}}function HD(e){if(e.get([`endLabel`,`show`]))return!0;for(var t=0;t0&&e.get([`emphasis`,`lineStyle`,`width`])===`bolder`){var M=f.getState(`emphasis`).style;M.lineWidth=+f.style.lineWidth+1}Zh(f).seriesIndex=e.seriesIndex,o_(f,k,A,j);var N=MD(e.get(`smooth`)),ee=e.get(`smoothMonotone`);if(f.setShape({smooth:N,smoothMonotone:ee,connectNulls:x}),p){var te=a.getCalculationInfo(`stackedOnSeries`),P=0;p.useStyle(ws(s.getAreaStyle(),{fill:E,opacity:.7,lineJoin:`bevel`,decal:a.getVisual(`style`).decal})),te&&(P=MD(te.get(`smooth`))),p.setShape({smooth:N,stackedOnSmooth:P,smoothMonotone:ee,connectNulls:x}),u_(p,e,`areaStyle`),Zh(p).seriesIndex=e.seriesIndex,o_(p,k,A,j)}var F=this._changePolyState;a.eachItemGraphicEl(function(e){e&&(e.onHoverStateChange=F)}),this._polyline.onHoverStateChange=F,this._data=a,this._coordSys=r,this._stackedOnPoints=y,this._points=c,this._step=w,this._valueOrigin=_;var I=e.get(`triggerEvent`),L=e.get(`triggerLineEvent`),R=L===!0||I===!0||I===`line`,ne=L===!0||I===!0||I===`area`;this.packEventData(e,f,R),p&&this.packEventData(e,p,ne)},t.prototype.packEventData=function(e,t,n){Zh(t).eventData=n?{componentType:`series`,componentSubType:`line`,componentIndex:e.componentIndex,seriesIndex:e.seriesIndex,seriesName:e.name,seriesType:`line`,selfType:t===this._polygon?`area`:`line`}:null},t.prototype.highlight=function(e,t,n,r){var i=e.getData(),a=Sh(i,r);if(this._changePolyState(`emphasis`),!(a instanceof Array)&&a!=null&&a>=0){var o=i.getLayout(`points`),s=i.getItemGraphicEl(a);if(!s){var c=o[a*2],l=o[a*2+1];if(BT(c,l)||this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(c,l))return;var u=e.get(`zlevel`)||0,d=e.get(`z`)||0;s=new AT(i,a),s.x=c,s.y=l,s.setZ(u,d);var f=s.getSymbolPath().getTextContent();f&&(f.zlevel=u,f.z=d,f.z2=this._polyline.z2+1),s.__temp=!0,i.setItemGraphicEl(a,s),s.stopSymbolAnimation(!0),this.group.add(s)}s.highlight()}else rE.prototype.highlight.call(this,e,t,n,r)},t.prototype.downplay=function(e,t,n,r){var i=e.getData(),a=Sh(i,r);if(this._changePolyState(`normal`),a!=null&&a>=0){var o=i.getItemGraphicEl(a);o&&(o.__temp?(i.setItemGraphicEl(a,null),this.group.remove(o)):o.downplay())}else rE.prototype.downplay.call(this,e,t,n,r)},t.prototype._changePolyState=function(e){var t=this._polygon;Mg(this._polyline,e),t&&Mg(t,e)},t.prototype._newPolyline=function(e){var t=this._polyline;return t&&this._lineGroup.remove(t),t=new ZT({shape:{points:e},segmentIgnoreThreshold:2,z2:10}),this._lineGroup.add(t),this._polyline=t,t},t.prototype._newPolygon=function(e,t){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new $T({shape:{points:e,stackedOnPoints:t},segmentIgnoreThreshold:2}),this._lineGroup.add(n),this._polygon=n,n},t.prototype._initSymbolLabelAnimation=function(e,t,n){var r,i,a=t.getBaseAxis(),o=a.inverse;t.type===`cartesian2d`?(r=a.isHorizontal(),i=!1):t.type===`polar`&&(r=a.dim===`angle`,i=!0);var s=e.hostModel,c=s.get(`animationDuration`);Is(c)&&(c=c(null));var l=s.get(`animationDelay`)||0,u=Is(l)?l(null):l;e.eachItemGraphicEl(function(e,a){var s=e;if(s){var d=[e.x,e.y],f=void 0,p=void 0,m=void 0;if(n){if(i){var h=n,g=t.pointToCoord(d);r?(f=h.startAngle,p=h.endAngle,m=-g[1]/180*Math.PI):(f=h.r0,p=h.r,m=g[0])}else{var _=n;r?(f=_.x,p=_.x+_.width,m=e.x):(f=_.y+_.height,p=_.y,m=e.y)}}var v=p===f?0:(m-f)/(p-f);o&&(v=1-v);var y=Is(l)?l(a):c*v+u,b=s.getSymbolPath(),x=b.getTextContent();s.attr({scaleX:0,scaleY:0}),s.animateTo({scaleX:1,scaleY:1},{duration:200,setToFinal:!0,delay:y}),x&&x.animateFrom({style:{opacity:0}},{duration:300,delay:y}),b.disableLabelAnimation=!0}})},t.prototype._initOrUpdateEndLabel=function(e,t,n){var r=e.getModel(`endLabel`);if(HD(e)){var i=e.getData(),a=this._polyline,o=i.getLayout(`points`);if(!o){a.removeTextContent(),this._endLabel=null;return}var s=this._endLabel;s||(s=this._endLabel=new Yp({z2:200}),s.ignoreClip=!0,a.setTextContent(this._endLabel),a.disableLabelAnimation=!0);var c=zD(o);c>=0&&(Ky(a,qy(e,`endLabel`),{inheritColor:n,labelFetcher:e,labelDataIndex:c,defaultText:function(e,t,n){return n==null?OT(i,e):kT(i,n)},enableTextSetter:!0},WD(r,t)),a.textConfig.position=null)}else this._endLabel&&=(this._polyline.removeTextContent(),null)},t.prototype._endLabelOnDuring=function(e,t,n,r,i,a,o){var s=this._endLabel,c=this._polyline;if(s){e<1&&r.originalX==null&&(r.originalX=s.x,r.originalY=s.y);var l=n.getLayout(`points`),u=n.hostModel,d=u.get(`connectNulls`),f=a.get(`precision`),p=a.get(`distance`)||0,m=o.getBaseAxis(),h=m.isHorizontal(),g=m.inverse,_=t.shape,v=g?h?_.x:_.y+_.height:h?_.x+_.width:_.y,y=(h?p:0)*(g?-1:1),b=(h?0:-p)*(g?-1:1),x=h?`x`:`y`,S=VD(l,v,x),C=S.range,w=C[1]-C[0],T=void 0;if(w>=1){if(w>1&&!d){var E=BD(l,C[0]);s.attr({x:E[0]+y,y:E[1]+b}),i&&(T=u.getRawValue(C[0]))}else{var E=c.getPointOn(v,x);E&&s.attr({x:E[0]+y,y:E[1]+b});var D=u.getRawValue(C[0]),O=u.getRawValue(C[1]);i&&(T=Nh(n,f,D,O,S.t))}r.lastFrameIndex=C[0]}else{var k=e===1||r.lastFrameIndex>0?C[0]:0,E=BD(l,k);i&&(T=u.getRawValue(k)),s.attr({x:E[0]+y,y:E[1]+b})}if(i){var A=rb(s);typeof A.setLabelText==`function`&&A.setLabelText(T)}}},t.prototype._doUpdateAnimation=function(e,t,n,r,i,a,o){var s=this._polyline,c=this._polygon,l=e.hostModel,u=KT(this._data,e,this._stackedOnPoints,t,this._coordSys,n,this._valueOrigin,a),d=u.current,f=u.stackedOnCurrent,p=u.next,m=u.stackedOnNext;if(i&&(f=PD(u.stackedOnCurrent,u.current,n,i,o),d=PD(u.current,null,n,i,o),m=PD(u.stackedOnNext,u.next,n,i,o),p=PD(u.next,null,n,i,o)),jD(d,p)>3e3||c&&jD(f,m)>3e3){s.stopAnimation(),s.setShape({points:p}),c&&(c.stopAnimation(),c.setShape({points:p,stackedOnPoints:m}));return}s.shape.__points=u.current,s.shape.points=d;var h={shape:{points:p}};u.current!==d&&(h.shape.__points=u.next),s.stopAnimation(),Hv(s,h,l),c&&(c.setShape({points:d,stackedOnPoints:f}),c.stopAnimation(),Hv(c,{shape:{stackedOnPoints:m}},l),s.shape.points!==c.shape.points&&(c.shape.points=s.shape.points));for(var g=[],_=u.status,v=0;v<_.length;v++)if(_[v].cmd===`=`){var y=e.getItemGraphicEl(_[v].idx1);y&&g.push({el:y,ptIdx:v})}s.animators&&s.animators.length&&s.animators[0].during(function(){c&&c.dirtyShape();for(var e=s.shape.__points,t=0;tt&&(t=e[n]);return isFinite(t)?t:NaN},min:function(e){for(var t=1/0,n=0;n10&&a.type===`cartesian2d`&&i){var s=a.getBaseAxis(),c=a.getOtherAxis(s),l=s.getExtent(),u=n.getDevicePixelRatio(),d=Math.abs(l[1]-l[0])*(u||1),f=Math.round(o/d);if(isFinite(f)&&f>1){i===`lttb`?e.setData(r.lttbDownSample(r.mapDimension(c.dim),1/f)):i===`minmax`&&e.setData(r.minmaxDownSample(r.mapDimension(c.dim),1/f));var p=void 0;J(i)?p=qD[i]:Is(i)&&(p=i),p&&e.setData(r.downSample(r.mapDimension(c.dim),1/f,p,JD))}}}}}function XD(e){e.registerChartView(GD),e.registerSeriesModel(DT),e.registerLayout(KD(`line`,!0)),e.registerVisual({seriesType:`line`,reset:function(e){var t=e.getData(),n=e.getModel(`lineStyle`).getLineStyle();n&&!n.stroke&&(n.stroke=t.getVisual(`style`).fill),t.setVisual(`legendLineStyle`,n)}}),e.registerProcessor(e.PRIORITY.PROCESSOR.STATISTIC,YD(`line`))}var ZD=Ch(),QD=Ch(),$D={estimate:1,determine:2};function eO(e){return{out:{noPxChangeTryDetermine:[]},kind:e}}function tO(e,t){var n=e.getLabelModel().get(`customValues`);if(n){var r=e.scale;return{labels:K(rO(n,r),function(t,n){return{formattedLabel:_D(e)(t,n),rawLabel:r.getLabel(t),tick:t}})}}return e.type===`category`?iO(e,t):sO(e)}function nO(e,t,n){var r=e.scale,i=e.getTickModel().get(`customValues`);return i?{ticks:rO(i,r)}:e.type===`category`?oO(e,t):{ticks:r.getTicks(n)}}function rO(e,t){var n=t.getExtent(),r=[];return G(e,function(e){e=t.parse(e),e>=n[0]&&e<=n[1]&&r.push(e)}),Gh(r,qh,null),km(r),K(r,function(e){return{value:e}})}function iO(e,t){var n=e.getLabelModel(),r=aO(e,n,t);return!n.get(`show`)||e.scale.isBlank()?{labels:[]}:r}function aO(e,t,n){var r=lO(e),i=yD(t),a=n.kind===$D.estimate;if(!a){var o=dO(r,i);if(o)return o}var s,c;Is(i)?s=vO(e,i,!1):(c=i===`auto`?pO(e,n):i,s=vO(e,c,!1));var l={labels:s,labelCategoryInterval:c};return a?n.out.noPxChangeTryDetermine.push(function(){return fO(r,i,l),!0}):fO(r,i,l),l}function oO(e,t){var n=cO(e),r=yD(t),i=dO(n,r);if(i)return i;var a,o;if((!t.get(`show`)||e.scale.isBlank())&&(a=[]),Is(r))a=vO(e,r,!0);else if(r===`auto`){var s=aO(e,e.getLabelModel(),eO($D.determine));o=s.labelCategoryInterval,a=K(s.labels,function(e){return e.tick})}else o=r,a=vO(e,o,!0);return fO(n,r,{ticks:a,tickCategoryInterval:o})}function sO(e){var t=e.scale.getTicks(),n=_D(e);return{labels:K(t,function(t,r){return{formattedLabel:n(t,r),rawLabel:e.scale.getLabel(t),tick:t}})}}var cO=uO(`axisTick`),lO=uO(`axisLabel`);function uO(e){return function(t){return QD(t)[e]||(QD(t)[e]={list:[]})}}function dO(e,t){for(var n=0;nu&&(l=Math.max(1,Math.floor(c/u)));for(var d=s[0],f=e.dataToCoord(d+1)-e.dataToCoord(d),p=Math.abs(f*Math.cos(a)),m=Math.abs(f*Math.sin(a)),h=0,g=0;d<=s[1];d+=l){var _=0,v=0,y=zl(i({value:d}),r.font,`center`,`top`);_=y.width*1.3,v=y.height*1.3,h=Math.max(h,_,7),g=Math.max(g,v,7)}var b=h/p,x=g/m;isNaN(b)&&(b=1/0),isNaN(x)&&(x=1/0);var S=Math.max(0,Math.floor(Math.min(b,x)));return n===$D.estimate?(t.out.noPxChangeTryDetermine.push(Ps(hO,null,e,S,c)),S):gO(e,S,c)??S}function hO(e,t,n){return gO(e,t,n)==null}function gO(e,t,n){var r=ZD(e.model),i=e.getExtent(),a=r.lastAutoInterval,o=r.lastTickCount;if(a!=null&&o!=null&&Math.abs(a-t)<=1&&Math.abs(o-n)<=1&&a>t&&r.axisExtent0===i[0]&&r.axisExtent1===i[1])return a;r.lastTickCount=n,r.lastAutoInterval=t,r.axisExtent0=i[0],r.axisExtent1=i[1]}function _O(e){var t=e.getLabelModel();return{axisRotate:e.getRotate?e.getRotate():e.isHorizontal&&!e.isHorizontal()?90:0,labelRotate:t.get(`rotate`)||0,font:t.getFont()}}function vO(e,t,n){var r=_D(e),i=e.scale,a=[],o=Is(t);return BE(i,o?0:t,function(e,s){var c=i.getLabel(e);if(o){var l=!!t(e.value,c);if(e.offInterval=!l,!l&&!s)return}a.push(n?e:{formattedLabel:r(e),rawLabel:c,tick:e})}),a}var yO=Ch();function bO(e){yO(e).prepare={}}function xO(e){yO(e).fullUpdate={}}function SO(e){return yO(e).prepare}function CO(e){return yO(e).fullUpdate}var wO=Uh(),TO=Ch(),EO=Ch();function DO(e,t){var n=e.model,r=TO(CO(n.ecModel)).keyed,i=r&&r.get(t);return i&&i.get(n.uid)}function OO(e,t){return jO(DO(e,t))}function kO(e,t){var n=[];return AO(e.model.ecModel,function(e){for(var r=0;r0?(t>o&&(o=t),a=!1):t===-2&&(a=!0))}),qm(n)&&n>0&&qm(o)?(e.w=r/n*o,e.w2=o):a&&(e.w=r*WO,e.w2=e.w*n/r)}var JO=[0,1],YO=function(){function e(e,t,n){this.onBand=!1,this.inverse=!1,this.dim=e,this.scale=t,this._extent=n||[0,0]}return e.prototype.contain=function(e){var t=this._extent,n=Math.min(t[0],t[1]),r=Math.max(t[0],t[1]);return e>=n&&e<=r},e.prototype.containData=function(e){return this.scale.contain(this.scale.parse(e))},e.prototype.getExtent=function(){return this._extent.slice()},e.prototype.setExtent=function(e,t){var n=this._extent;n[0]=e,n[1]=t},e.prototype.dataToCoord=function(e,t){var n=this.scale;return e=n.normalize(n.parse(e)),Cm(e,JO,XO(this),t)},e.prototype.coordToData=function(e,t){var n=Cm(e,XO(this),JO,t);return this.scale.scale(n)},e.prototype.pointToData=function(e,t){},e.prototype.getTicksCoords=function(e){e||={};var t=e.tickModel||this.getTickModel(),n=K(nO(this,t,{breakTicks:e.breakTicks,pruneByBreak:e.pruneByBreak}).ticks,function(e){return{coord:this.dataToCoord(DD(this.scale,e)),tick:e}},this),r=t.get(`alignWithLabel`),i=ZO(this,n,r);return K(n,function(e){return{coord:e.coord,tickValue:e.tick.value,onBand:i}})},e.prototype.getMinorTicksCoords=function(){if(ME(this.scale))return[];var e=this.model.getModel(`minorTick`).get(`splitNumber`);return e>0&&e<100||(e=5),K(this.scale.getMinorTicks(e),function(e){return K(e,function(e){return{coord:this.dataToCoord(e),tickValue:e}},this)},this)},e.prototype.getViewLabels=function(e){return e||=eO($D.determine),tO(this,e).labels},e.prototype.getLabelModel=function(){return this.model.getModel(`axisLabel`)},e.prototype.getTickModel=function(){return this.model.getModel(`axisTick`)},e.prototype.getBandWidth=function(){return GO(this,{min:1}).w},e.prototype.calculateCategoryInterval=function(e){return e||=eO($D.determine),mO(this,e)},e}();function XO(e){var t=e.getExtent();if(e.onBand){var n=(t[1]-t[0])/e.scale.count()/2;t[0]+=n,t[1]-=n}return t}function ZO(e,t,n){var r=t.length;if(!e.onBand||n||!r)return!1;var i=GO(e).w;if(!i)return!1;G(t,function(e){e.coord-=i/2});var a=e.scale.getExtent(),o=t[r-1];return o.tick.offInterval&&t.pop(),t.push({coord:o.coord+i,tick:{value:a[1]+1}}),!0}var QO=function(e){U(t,e);function t(t,n,r,i,a){var o=e.call(this,t,n,r)||this;return o.index=0,o.type=i||`value`,o.position=a||`bottom`,o}return t.prototype.isHorizontal=function(){var e=this.position;return e===`top`||e===`bottom`},t.prototype.getGlobalExtent=function(e){var t=this.getExtent();return t[0]=this.toGlobalCoord(t[0]),t[1]=this.toGlobalCoord(t[1]),e&&t[0]>t[1]&&t.reverse(),t},t.prototype.pointToData=function(e,t){return this.coordToData(this.toLocalCoord(e[this.dim===`x`?0:1]),t)},t.prototype.setCategorySortInfo=function(e){if(this.type!==`category`)return!1;this.model.option.categorySortInfo=e,this.scale.setSortInfo(e)},t}(YO),$O=[`label`,`labelLine`,`layoutOption`,`priority`,`defaultAttr`,`marginForce`,`minMarginForce`,`marginDefault`,`suggestIgnore`],ek=1,tk=2,nk=ek|tk;function rk(e,t,n){n||=nk,t?e.dirty|=n:e.dirty&=~n}function ik(e,t){return t||=nk,e.dirty==null||!!(e.dirty&t)}function ak(e){if(e)return ik(e)&&ok(e,e.label,e),e}function ok(e,t,n){var r=t.getComputedTransform();e.transform=Py(e.transform,r);var i=e.localRect=Ny(e.localRect,t.getBoundingRect()),a=t.style,o=a.margin,s=n&&n.marginForce,c=n&&n.minMarginForce,l=n&&n.marginDefault,u=a.__marginType;u==null&&l&&(o=l,u=ob.textMargin);for(var d=0;d<4;d++)sk[d]=u===ob.minMargin&&c&&c[d]!=null?c[d]:s&&s[d]!=null?s[d]:o?o[d]:0;u===ob.textMargin&&Ty(i,sk,!1,!1);var f=e.rect=Ny(e.rect,i);return r&&f.applyTransform(r),u===ob.minMargin&&Ty(f,sk,!1,!1),e.axisAligned=jy(r),(e.label=e.label||{}).ignore=t.ignore,rk(e,!1),rk(e,!0,tk),e}var sk=[0,0,0,0];function ck(e,t,n){return e.transform=Py(e.transform,n),e.localRect=Ny(e.localRect,t),e.rect=Ny(e.rect,t),n&&e.rect.applyTransform(n),e.axisAligned=jy(n),e.obb=void 0,(e.label=e.label||{}).ignore=!1,e}function lk(e,t){if(e){e.label.x+=t.x,e.label.y+=t.y,e.label.markRedraw();var n=e.transform;n&&(n[4]+=t.x,n[5]+=t.y);var r=e.rect;r&&(r.x+=t.x,r.y+=t.y);var i=e.obb;i&&i.fromBoundingRect(e.localRect,n)}}function uk(e,t){for(var n=0;n<$O.length;n++){var r=$O[n];e[r]??(e[r]=t[r])}return ak(e)}function dk(e){var t=e.obb;return(!t||ik(e,tk))&&(e.obb=t||=new Iv,t.fromBoundingRect(e.localRect,e.transform),rk(e,!1,tk)),t}function fk(e){var t=[];e.sort(function(e,t){return+!!t.suggestIgnore-!!e.suggestIgnore||t.priority-e.priority});function n(e){if(!e.ignore){var t=e.ensureState(`emphasis`);t.ignore??=!1}e.ignore=!0}for(var r=0;r.1?`x`:`y`,u=a.transGroup[l];if(o.sort(function(e,t){return Math.abs(e.label[l]-u)-Math.abs(t.label[l]-u)}),c&&s){var d=i.getExtent(),f=Math.min(d[0],d[1]),p=Math.max(d[0],d[1])-f;s.union(new Sl(f,0,p,1))}a.stOccupiedRect=s,a.labelInfoList=o}var wk=Rc(),Tk=new Sl(0,0,0,0),Ek=function(e,t,n,r,i,a){if(SD(e.nameLocation)){var o=a.stOccupiedRect;o&&Dk(ck({},o,a.transGroup.transform),r,i)}else Ok(a.labelInfoList,a.dirVec,r,i)};function Dk(e,t,n){var r=new cl;pk(e,t,r,{direction:Math.atan2(n.y,n.x),bidirectional:!1,touchThreshold:.05})&&lk(t,r)}function Ok(e,t,n,r){for(var i=cl.dot(r,t)>=0,a=0,o=e.length;a0?`top`:`bottom`,i=`center`):Im(r-_k)?(a=n>0?`bottom`:`top`,i=`center`):(a=`middle`,i=r>0&&r<_k?n>0?`right`:`left`:n>0?`left`:`right`),{rotation:r,textAlign:i,textVerticalAlign:a}},e.makeAxisEventDataBase=function(e){var t={componentType:e.mainType,componentIndex:e.componentIndex};return t[e.mainType+`Index`]=e.componentIndex,t},e.isLabelSilent=function(e){var t=e.get(`tooltip`);return e.get(`silent`)||!(e.get(`triggerEvent`)||t&&t.show)},e}(),Ak=[`axisLine`,`axisTickLabelEstimate`,`axisTickLabelDetermine`,`axisName`],jk={axisLine:function(e,t,n,r,i,a,o){var s=r.get([`axisLine`,`show`]);if(s===`auto`&&(s=!0,e.raw.axisLineAutoShow!=null&&(s=!!e.raw.axisLineAutoShow)),s){var c=r.axis.getExtent(),l=a.transform,u=[c[0],0],d=[c[1],0],f=u[0]>d[0];l&&(al(u,u,l),al(d,d,l));var p=W({lineCap:`round`},r.getModel([`axisLine`,`lineStyle`]).getLineStyle()),m={strokeContainThreshold:e.raw.strokeContainThreshold||5,silent:!0,z2:1,style:p};if(r.get([`axisLine`,`breakLine`])&&eC(r.axis.scale))hk().buildAxisBreakLine(r,i,a,m);else{var h=new _v(W({shape:{x1:u[0],y1:u[1],x2:d[0],y2:d[1]}},m));ly(h.shape,h.style.lineWidth),h.anid=`line`,i.add(h)}var g=r.get([`axisLine`,`symbol`]);if(g!=null){var _=r.get([`axisLine`,`symbolSize`]);J(g)&&(g=[g,g]),(J(_)||Rs(_))&&(_=[_,_]);var v=ET(r.get([`axisLine`,`symbolOffset`])||0,_),y=_[0],b=_[1];G([{rotate:e.rotation+Math.PI/2,offset:v[0],r:0},{rotate:e.rotation-Math.PI/2,offset:v[1],r:Math.sqrt((u[0]-d[0])*(u[0]-d[0])+(u[1]-d[1])*(u[1]-d[1]))}],function(t,n){if(g[n]!==`none`&&g[n]!=null){var r=wT(g[n],-y/2,-b/2,y,b,p.stroke,!0),a=t.r+t.offset,o=f?d:u;r.attr({rotation:t.rotate,x:o[0]+a*Math.cos(e.rotation),y:o[1]-a*Math.sin(e.rotation),silent:!0,z2:11}),i.add(r)}})}}},axisTickLabelEstimate:function(e,t,n,r,i,a,o,s){Bk(t,i,s)&&Mk(e,t,n,r,i,a,o,$D.estimate)},axisTickLabelDetermine:function(e,t,n,r,i,a,o,s){Bk(t,i,s)&&Mk(e,t,n,r,i,a,o,$D.determine);var c=Rk(e,i,a,r);Fk(e,t.labelLayoutList,c),zk(e,i,a,r,e.tickDirection)},axisName:function(e,t,n,r,i,a,o,s){var c=n.ensureRecord(r);t.nameEl&&=(i.remove(t.nameEl),c.nameLayout=c.nameLocation=null);var l=e.axisName;if(qk(l)){var u=e.nameLocation,d=e.nameDirection,f=r.getModel(`nameTextStyle`),p=r.get(`nameGap`)||0,m=r.axis.getExtent(),h=r.axis.inverse?-1:1,g=new cl(0,0),_=new cl(0,0);u===`start`?(g.x=m[0]-h*p,_.x=-h):u===`end`?(g.x=m[1]+h*p,_.x=h):(g.x=(m[0]+m[1])/2,g.y=e.labelOffset+d*p,_.y=d);var v=Rc();_.transform(Uc(v,v,e.rotation));var y=r.get(`nameRotate`);y!=null&&(y=y*_k/180);var b,x;SD(u)?b=kk.innerTextLayout(e.rotation,y??e.rotation,d):(b=Nk(e.rotation,u,y||0,m),x=e.raw.axisNameAvailableWidth,x!=null&&(x=Math.abs(x/Math.sin(b.rotation)),!isFinite(x)&&(x=null)));var S=f.getFont(),C=r.get(`nameTruncate`,!0)||{},w=C.ellipsis,T=Gs(e.raw.nameTruncateMaxWidth,C.maxWidth,x),E=s.nameMarginLevel||0,D=new Yp({x:g.x,y:g.y,rotation:b.rotation,silent:kk.isLabelSilent(r),style:Jy(f,{text:l,font:S,overflow:`truncate`,width:T,ellipsis:w,fill:f.getTextColor()||r.get([`axisLine`,`lineStyle`,`color`]),align:f.get(`align`)||b.textAlign,verticalAlign:f.get(`verticalAlign`)||b.textVerticalAlign}),z2:1});if(Oy({el:D,componentModel:r,itemName:l}),D.__fullText=l,D.anid=`name`,r.get(`triggerEvent`)){var O=kk.makeAxisEventDataBase(r);O.targetType=`axisName`,O.name=l,Zh(D).eventData=O}a.add(D),D.updateTransform(),t.nameEl=D;var k=c.nameLayout=ak({label:D,priority:D.z2,defaultAttr:{ignore:D.ignore},marginDefault:SD(u)?vk[E]:yk[E]});if(c.nameLocation=u,i.add(D),D.decomposeTransform(),e.shouldNameMoveOverlap&&k){var A=n.ensureRecord(r);n.resolveAxisNameOverlap(e,n,r,k,_,A)}}}};function Mk(e,t,n,r,i,a,o,s){Hk(t)||Vk(e,t,i,s,r,o);var c=t.labelLayoutList;Wk(e,r,c,a),Yk(r,e.rotation,c);var l=e.optionHideOverlap;Pk(r,c,l),l&&fk(As(c,function(e){return e&&!e.label.ignore})),Ck(e,n,r,c)}function Nk(e,t,n,r){var i=Fm(n-e),a,o,s=r[0]>r[1],c=t===`start`&&!s||t!==`start`&&s;return Im(i-_k/2)?(o=c?`bottom`:`top`,a=`center`):Im(i-_k*1.5)?(o=c?`top`:`bottom`,a=`center`):(o=`middle`,a=i<_k*1.5&&i>_k/2?c?`left`:`right`:c?`right`:`left`),{rotation:i,textAlign:a,textVerticalAlign:o}}function Pk(e,t,n){var r=e.axis,i=e.get([`axisLabel`,`customValues`]);if(bD(r))return;function a(e,a,o){var s=ak(t[a]),c=ak(t[o]),l=r.scale;if(s&&c){if(e==null){if(!n&&i)return;var u=bk(s.label).labelInfo.tick;if(AE(l)&&u.notNice||ME(l)&&u.offInterval){Ik(s.label);return}}if(e===!1||s.suggestIgnore){Ik(s.label);return}if(c.suggestIgnore){Ik(c.label);return}var d=.1;if(!n){var f=[0,0,0,0];s=uk({marginForce:f},s),c=uk({marginForce:f},c)}pk(s,c,null,{touchThreshold:d})&&Ik(e?c.label:s.label)}}var o=e.get([`axisLabel`,`showMinLabel`]),s=e.get([`axisLabel`,`showMaxLabel`]),c=t.length;a(o,0,1),a(s,c-1,c-2)}function Fk(e,t,n){e.showMinorTicks||G(t,function(e){if(e&&e.label.ignore)for(var t=0;t0&&u[1]>0&&!d[0]&&(u[0]=0),u[0]<0&&u[1]<0&&!d[1]&&(u[1]=0));var y=!1;u[0]>u[1]&&(u.reverse(),y=!0);var b=aA(e,t.get(`startValue`,!0)),x=b!=null;!qm(b)&&r&&(b=e.getDefaultStartValue?e.getDefaultStartValue():0),qm(b)&&(x||!_||v)&&(bu[1]&&!d[1]&&(u[1]=b,d[1]=!0)),iA(this._i={scale:e,dataMM:l,noZoomEffMM:u,zoomMM:[],fixMM:d,zoomFixMM:[!1,!1],startValue:b,isBlank:g,incl0:v,tggAxInv:y,ctnShp:i},u)}return e.prototype.makeNoZoom=function(){return this._i.noZoomEffMM.slice()},e.prototype.makeFinal=function(){var e=this._i,t=e.zoomMM,n=e.noZoomEffMM,r=e.zoomFixMM,i=e.fixMM,a={fixMM:i,zoomFixMM:r,isBlank:e.isBlank,incl0:e.incl0,tggAxInv:e.tggAxInv,ctnShp:e.ctnShp,effMM:n.slice()},o=a.effMM;return t[0]!=null&&(o[0]=t[0],i[0]=r[0]=!0),t[1]!=null&&(o[1]=t[1],i[1]=r[1]=!0),iA(e,o),a},e.prototype.makeRenderInfo=function(){return{startValue:this._i.startValue}},e.prototype.setZoomMM=function(e,t){this._i.zoomMM[e]=t},e}();function iA(e,t){var n=e.scale,r=e.dataMM;n.sanitize&&(t[0]=n.sanitize(t[0],r),t[1]=n.sanitize(t[1],r),Hh(t))}function aA(e,t){return t==null?null:Ws(t)?NaN:e.parse(t)}function oA(e,t){var n;if(ME(e))n=[0,0];else{var r=t.get(`boundaryGap`);typeof r==`boolean`&&(r=null),n=q(r)?r:[r,r]}return[sA(n[0]),sA(n[1])]}function sA(e){return Ul(typeof e==`boolean`?0:e,1)||0}function cA(e){var t=tA(e.scale);return t.extent||=Ph(),t}function lA(e,t){cA(e).dimIdxInCoord=t.get(e.dim)}function uA(e,t){var n=e.scale,r=e.model,i=e.dim;n.rawExtentInfo||dA(n,e,i,r,t)}function dA(e,t,n,r,i){var a=cA(t),o=a.extent,s=!1;MO(t,function(r){if(r.boxCoordinateSystem){var i=rS(r).coord,c=a.dimIdxInCoord;if(c>=0&&q(i)){var l=i[c];l!=null&&!q(l)&&Fh(o,e.parse(l))}}else if(r.coordinateSystem){var u=r.getData();if(u){var d=e.getFilter?e.getFilter():null;G(xD(u,n),function(e){Rh(o,u.getApproximateExtent(e,d))})}r.__requireStartValue&&r.__requireStartValue(t)&&(s=!0)}});var c=_A(e,t,r);pA(e,new rA(e,r,o,s,c),i),a.extent=null}function fA(e,t){var n=e.scale;pA(n,new rA(n,e.model,t,!1,!1),nA)}function pA(e,t,n){e.rawExtentInfo=t,t.from=n}function mA(e,t){hA.set(e,t)}var hA=Z();function gA(e,t,n,r,i){e.rawExtentInfo||fA({scale:e,model:t},i||Ph());var a=e.rawExtentInfo.makeFinal(),o=a.effMM;return e.setExtent(o[0],o[1]),e.setBlank(a.isBlank),r&&a.tggAxInv&&n&&!n.get(`legacyMinMaxDontInverseAxis`)&&(r.inverse=!r.inverse),a}function _A(e,t,n){var r=OD(e,n),i=n.get(`containShape`,!0);if(i==null&&!r&&(i=!0),!i)return!1;var a=!1;return IO(t,function(e){a=!!hA.get(e)||a}),a}function vA(e,t,n,r){if(n.ctnShp){var i;if(IO(e,function(t){var n=hA.get(t);if(n){var a=n(e,r);a&&(i||=[0,0],Ih(i,a[0]),Lh(i,a[1]),hD(e))}}),i){var a=t.getExtent();if(ME(t))e.onBand||t.setExtent2(1,fm(a[0],a[0]+i[0]),pm(a[1],a[1]+i[1]));else{var o=a.slice();n.zoomFixMM[0]||(o[0]=fm(o[0],t.transformOut(t.transformIn(o[0],null)+i[0],null))),n.zoomFixMM[1]||(o[1]=pm(o[1],t.transformOut(t.transformIn(o[1],null)+i[1],null))),(o[0]a[1])&&t.setExtent2(1,o[0],o[1])}}}}function yA(){RO(`liPosMinGap`,bA)}function bA(e,t,n){var r=Z(),i=n.serUids,a=n.liPosMinGap,o,s=t.axis,c=s.scale,l=c.needTransform(),u=c.getFilter?c.getFilter():null,d=mx(u);function f(n){PO(e,t.sers,function(e){var t=e.getRawData(),r=t.getDimensionIndex(t.mapDimension(s.dim));r>=0&&n(r,e,t.getStore())})}var p=0;if(f(function(e,t,n){r.set(t.uid,1),(!i||!i.hasKey(t.uid))&&(o=!0),p+=n.count()}),(!i||i.keys().length!==r.keys().length)&&(o=!0),!o&&a!=null){t.liPosMinGap=a;return}WT(xA,p);var m=0;f(function(e,t,n){for(var r=0,i=n.count();r0&&v0?-2:-1,n.serUids=r}var xA=WT({ctor:HT},50);function SA(e){return function(t,n){var r=GO(t,{fromStat:{key:e}});if(qm(r.w2))return[-r.w2/2,r.w2/2]}}function CA(e,t){return e+`|&`+t}function wA(e){return yA(),{liPosMinGap:!ME(e.scale)}}function TA(e,t,n,r){HO(e,{key:t,seriesType:n,coordSysType:r,getMetrics:wA})}function EA(e){return e.scale.rawExtentInfo.makeRenderInfo().startValue}var DA={left:0,right:0,top:0,bottom:0},OA=[`25%`,`25%`],kA=`cartesian2d`,AA=function(e){U(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.mergeDefaultAndTheme=function(t,n){var r=rw(t.outerBounds);e.prototype.mergeDefaultAndTheme.apply(this,arguments),r&&t.outerBounds&&nw(t.outerBounds,r)},t.prototype.mergeOption=function(t,n){e.prototype.mergeOption.apply(this,arguments),this.option.outerBounds&&t.outerBounds&&nw(this.option.outerBounds,t.outerBounds)},t.type=`grid`,t.dependencies=[`xAxis`,`yAxis`],t.layoutMode=`box`,t.defaultOption={show:!1,z:0,left:`15%`,top:65,right:`10%`,bottom:80,containLabel:!1,outerBoundsMode:`auto`,outerBounds:DA,outerBoundsContain:`all`,outerBoundsClampWidth:OA[0],outerBoundsClampHeight:OA[1],backgroundColor:Q.color.transparent,borderWidth:1,borderColor:Q.color.neutral30},t}(ow),jA=Uh(),MA=`__ec_stack_`;function NA(e){return e.get(`stack`)||MA+e.seriesIndex}function PA(e,t){var n=FA(e,t);return n.columnMap=IA(n),n}function FA(e,t){var n=CA(t,kA),r=[],i=GO(e,{fromStat:{key:n},min:1});return NO(e,n,function(e){r.push({barWidth:wm(e.get(`barWidth`),i.w),barMaxWidth:wm(e.get(`barMaxWidth`),i.w),barMinWidth:wm(e.get(`barMinWidth`)||(zA(e)?.5:1),i.w),barGap:e.get(`barGap`),barCategoryGap:e.get(`barCategoryGap`),defaultBarGap:e.get(`defaultBarGap`),stackId:NA(e)})}),{bandWidthResult:i,seriesInfo:r}}function IA(e){var t=e.bandWidthResult.w,n=t,r=0,i,a,o=[],s={};G(e.seriesInfo,function(e,t){t||(a=e.defaultBarGap||0);var c=e.stackId;sc(s,c)||r++;var l=s[c];l||(l=s[c]={width:0,maxWidth:0},o.push(c));var u=e.barWidth;u&&!l.width&&(l.width=u,u=fm(n,u),n-=u);var d=e.barMaxWidth;d&&(l.maxWidth=d);var f=e.barMinWidth;f&&(l.minWidth=f);var p=e.barGap;p!=null&&(a=p);var m=e.barCategoryGap;m!=null&&(i=m)}),i??=pm(35-o.length*4,15)+`%`;var c=wm(i,t),l=wm(a,1),u=(n-c)/(r+(r-1)*l);u=pm(u,0),G(o,function(e){var t=s[e],i=t.maxWidth,a=t.minWidth;if(t.width){var o=t.width;i&&(o=fm(o,i)),a&&(o=pm(o,a)),t.width=o,n-=o+l*o,r--}else{var o=u;i&&io&&(o=a),o!==u&&(t.width=o,n-=o+l*o,r--)}}),u=(n-c)/(r+(r-1)*l),u=pm(u,0);var d=0,f;G(o,function(e){var t=s[e];t.width||=u,f=t,d+=t.width*(1+l)}),f&&(d-=f.width*l);var p={},m=-d/2;return G(o,function(e){var n=s[e];p[e]=p[e]||{bandWidth:t,offset:m,width:n.width},m+=n.width*(1+l)}),p}function LA(e){return{seriesType:e,overallReset:function(t){var n=CA(e,kA);FO(t,n,function(t){var r=PA(t,e);NO(t,n,function(e){var t=r.columnMap[NA(e)];e.getData().setLayout({bandWidth:t.bandWidth,offset:t.offset,size:t.width})})})}}}function RA(e){return{seriesType:e,plan:eE(),reset:function(e){if(Zk(e)){var t=e.getData(),n=e.coordinateSystem,r=n.getBaseAxis(),i=n.getOtherAxis(r),a=t.getDimensionIndex(t.mapDimension(i.dim)),o=t.getDimensionIndex(t.mapDimension(r.dim)),s=e.get(`showBackground`,!0),c=t.mapDimension(i.dim),l=t.getCalculationInfo(`stackResultDimension`),u=fS(t,c)&&!!t.getCalculationInfo(`stackedOnSeries`),d=i.isHorizontal(),f=i.toGlobalCoord(i.dataToCoord(EA(i))),p=zA(e),m=e.get(`barMinHeight`)||0,h=l&&t.getDimensionIndex(l),g=t.getLayout(`size`),_=t.getLayout(`offset`);return{progress:function(e,t){for(var r=e.count,i=p&&UT(r*3),c=p&&s&&UT(r*3),l=p&&UT(r),v=n.master.getRect(),y=d?v.width:v.height,b,x=t.getStore(),S=0;(b=e.next())!=null;){var C=x.get(u?h:a,b),w=x.get(o,b),T=f,E=void 0;u&&(E=+C-x.get(a,b));var D=void 0,O=void 0,k=void 0,A=void 0;if(d){var j=n.dataToPoint([C,w]);u&&(T=n.dataToPoint([E,w])[0]),D=T,O=j[1]+_,k=j[0]-T,A=g,mm(k)s){u=(p+l)/2;break}f===1&&(d=m-r[0].tickValue)}u??(l?l&&(u=r[r.length-1].coord):u=r[0].coord),a[n]=e.toGlobalCoord(u)}});else{var o=this.getData(),s=o.getLayout(`offset`),c=o.getLayout(`size`),l=+!r.getBaseAxis().isHorizontal();a[l]+=s+c/2}return a}return[NaN,NaN]},t.prototype.__requireStartValue=function(e){return this.getBaseAxis()!==e},t.type=`series.__base_bar__`,t.defaultOption={z:2,coordinateSystem:`cartesian2d`,legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:`mod`,defaultBarGap:`10%`},t}(lT);lT.registerClass(HA);var UA=function(e){U(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.getInitialData=function(){return gS(null,this,{useEncodeDefaulter:!0,createInvertedIndices:!!this.get(`realtimeSort`,!0)||null})},t.prototype.getProgressive=function(){return this.get(`large`)?this.get(`progressive`):!1},t.prototype.__preparePipelineContext=function(e,t){var n=Yh(this,e,t);return n.progressiveRender&&(n.large=!0),n},t.prototype.brushSelector=function(e,t,n){return n.rect(t.getItemLayout(e))},t.type=`series.bar`,t.dependencies=[`grid`,`polar`],t.defaultOption=CS(HA.defaultOption,{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:`rgba(180, 180, 180, 0.2)`,borderColor:null,borderWidth:0,borderType:`solid`,borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1},select:{itemStyle:{borderColor:Q.color.primary,borderWidth:2}},realtimeSort:!1}),t}(HA),WA=`\0__throttleOriginMethod`,GA=`\0__throttleRate`,KA=`\0__throttleType`;function qA(e,t,n){var r,i=0,a=0,o=null,s,c,l,u;t||=0;function d(){a=new Date().getTime(),o=null,e.apply(c,l||[])}var f=function(){var e=[...arguments];r=new Date().getTime(),c=this,l=e;var f=u||t,p=u||n;u=null,s=r-(p?i:a)-f,clearTimeout(o),p?o=setTimeout(d,f):s>=0?d():o=setTimeout(d,-s),i=r};return f.clear=function(){o&&=(clearTimeout(o),null)},f.debounceNextCall=function(e){u=e},f}function JA(e,t,n,r){var i=e[t];if(i){var a=i[WA]||i,o=i[KA];if(i[GA]!==n||o!==r){if(n==null||!r)return e[t]=a;i=e[t]=qA(a,n,r===`debounce`),i[WA]=a,i[KA]=r,i[GA]=n}return i}}function YA(e,t){var n=e[t];n&&n[WA]&&(n.clear&&n.clear(),e[t]=n[WA])}var XA=function(){function e(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=Math.PI*2,this.clockwise=!0}return e}(),ZA=function(e){U(t,e);function t(t){var n=e.call(this,t)||this;return n.type=`sausage`,n}return t.prototype.getDefaultShape=function(){return new XA},t.prototype.buildPath=function(e,t){var n=t.cx,r=t.cy,i=Math.max(t.r0||0,0),a=Math.max(t.r,0),o=(a-i)*.5,s=i+o,c=t.startAngle,l=t.endAngle,u=t.clockwise,d=Math.PI*2,f=u?l-cMath.PI/2&&ua)return!0;a=l}return!1},t.prototype._isOrderDifferentInView=function(e,t){for(var n=t.scale,r=n.getExtent(),i=Math.max(0,r[0]),a=Math.min(r[1],n.getOrdinalMeta().categories.length-1);i<=a;++i)if(e.ordinalNumbers[i]!==n.getRawOrdinalNumber(i))return!0},t.prototype._updateSortWithinSameData=function(e,t,n,r){if(this._isOrderChangedWithinSameData(e,t,n)){var i=this._dataSort(e,n,t);this._isOrderDifferentInView(i,n)&&(this._removeOnRenderedListener(r),r.dispatchAction({type:`changeAxisOrder`,componentType:n.dim+`Axis`,axisId:n.index,sortInfo:i}))}},t.prototype._dispatchInitSort=function(e,t,n){var r=t.baseAxis,i=this._dataSort(e,r,function(n){return e.get(e.mapDimension(t.otherAxis.dim),n)});n.dispatchAction({type:`changeAxisOrder`,componentType:r.dim+`Axis`,isInitSort:!0,axisId:r.index,sortInfo:i})},t.prototype.remove=function(e,t){this._clear(this._model),this._removeOnRenderedListener(t)},t.prototype.dispose=function(e,t){this._removeOnRenderedListener(t)},t.prototype._removeOnRenderedListener=function(e){this._onRendered&&=(e.getZr().off(`rendered`,this._onRendered),null)},t.prototype._clear=function(e){var t=this.group,n=this._data;e&&e.isAnimationEnabled()&&n&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],n.eachItemGraphicEl(function(t){qv(t,e,Zh(t).dataIndex)})):t.removeAll(),this._data=null,this._isFirstFrame=!0},t.prototype._removeBackground=function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null},t.type=`bar`,t}(rE),oj={cartesian2d:function(e,t){var n=t.width<0?-1:1,r=t.height<0?-1:1;n<0&&(t.x+=t.width,t.width=-t.width),r<0&&(t.y+=t.height,t.height=-t.height);var i=e.x+e.width,a=e.y+e.height,o=rj(t.x,e.x),s=ij(t.x+t.width,i),c=rj(t.y,e.y),l=ij(t.y+t.height,a),u=si?s:o,t.y=d&&c>a?l:c,t.width=u?0:s-o,t.height=d?0:l-c,n<0&&(t.x+=t.width,t.width=-t.width),r<0&&(t.y+=t.height,t.height=-t.height),u||d},polar:function(e,t){var n=t.r0<=t.r?1:-1;if(n<0){var r=t.r;t.r=t.r0,t.r0=r}var i=ij(t.r,e.r),a=rj(t.r0,e.r0);t.r=i,t.r0=a;var o=i-a<0;if(n<0){var r=t.r;t.r=t.r0,t.r0=r}return o}},sj={cartesian2d:function(e,t,n,r,i,a,o,s,c){var l=new Wp({shape:W({},r),z2:1});if(l.__dataIndex=n,l.name=`item`,a){var u=l.shape,d=i?`height`:`width`;u[d]=0}return l},polar:function(e,t,n,r,i,a,o,s,c){var l=!i&&c?ZA:ov,u=new l({shape:r,z2:1});if(u.name=`item`,u.calculateTextPosition=QA(gj(i),{isRoundCap:l===ZA}),a){var d=u.shape,f=i?`r`:`endAngle`,p={};d[f]=i?r.r0:r.startAngle,p[f]=r[f],(s?Hv:Uv)(u,{shape:p},a)}return u}};function cj(e,t){var n=e.get(`realtimeSort`,!0),r=t.getBaseAxis();if(n&&r.type===`category`&&t.type===`cartesian2d`)return{baseAxis:r,otherAxis:t.getOtherAxis(r)}}function lj(e,t,n,r,i,a,o,s){var c,l;a?(l={x:r.x,width:r.width},c={y:r.y,height:r.height}):(l={y:r.y,height:r.height},c={x:r.x,width:r.width}),s||(o?Hv:Uv)(n,{shape:c},t,i,null);var u=t?e.baseAxis.model:null;(o?Hv:Uv)(n,{shape:l},u,i)}function uj(e,t){for(var n=0;n0?1:-1,o=r.height>0?1:-1;return{x:r.x+a*i/2,y:r.y+o*i/2,width:r.width-a*i,height:r.height-o*i}},polar:function(e,t,n){var r=e.getItemLayout(t);return{cx:r.cx,cy:r.cy,r0:r.r0,r:r.r,startAngle:r.startAngle,endAngle:r.endAngle,clockwise:r.clockwise}}};function hj(e){return e.startAngle!=null&&e.endAngle!=null&&e.startAngle===e.endAngle}function gj(e){return function(e){var t=e?`Arc`:`Angle`;return function(e){switch(e){case`start`:case`insideStart`:case`end`:case`insideEnd`:return e+t;default:return e}}}(e)}function _j(e,t,n,r,i,a,o,s){var c=t.getItemVisual(n,`style`);if(!s){var l=r.get([`itemStyle`,`borderRadius`])||0;e.setShape(`r`,l)}else if(!a.get(`roundCap`)){var u=e.shape;W(u,nj(r.getModel(`itemStyle`),u,!0)),e.setShape(u)}e.useStyle(c);var d=r.getShallow(`cursor`);d&&e.attr(`cursor`,d);var f=s?o?i.r>=i.r0?`endArc`:`startArc`:i.endAngle>=i.startAngle?`endAngle`:`startAngle`:o?Ej(i,a.coordinateSystem):Dj(i,a.coordinateSystem),p=qy(r);Ky(e,p,{labelFetcher:a,labelDataIndex:n,defaultText:OT(a.getData(),n),inheritColor:c.fill,defaultOpacity:c.opacity,defaultOutsidePosition:f});var m=e.getTextContent();if(s&&m){var h=r.get([`label`,`position`]);e.textConfig.inside=h===`middle`||null,$A(e,h===`outside`?f:h,gj(o),r.get([`label`,`rotate`]))}ib(m,p,a.getRawValue(n),function(e){return kT(t,e)});var g=r.getModel([`emphasis`]);o_(e,g.get(`focus`),g.get(`blurScope`),g.get(`disabled`)),u_(e,r),hj(i)&&(e.style.fill=`none`,e.style.stroke=`none`,G(e.states,function(e){e.style&&(e.style.fill=e.style.stroke=`none`)}))}function vj(e,t){var n=e.get([`itemStyle`,`borderColor`]);if(!n||n===`none`)return 0;var r=e.get([`itemStyle`,`borderWidth`])||0,i=isNaN(t.width)?Number.MAX_VALUE:Math.abs(t.width),a=isNaN(t.height)?Number.MAX_VALUE:Math.abs(t.height);return Math.min(r,i,a)}var yj=function(){function e(){}return e}(),bj=function(e){U(t,e);function t(t){var n=e.call(this,t)||this;return n.type=`largeBar`,n}return t.prototype.getDefaultShape=function(){return new yj},t.prototype.buildPath=function(e,t){for(var n=t.points,r=this.baseDimIdx,i=1-this.baseDimIdx,a=[],o=[],s=this.barWidth,c=0;c=0?n:null},30,!1);function Cj(e,t,n){for(var r=e.baseDimIdx,i=1-r,a=e.shape.points,o=e.largeDataIndices,s=[],c=[],l=e.barWidth,u=0,d=a.length/3;u=s[0]&&t<=s[0]+c[0]&&n>=s[1]&&n<=s[1]+c[1])return o[u]}return-1}function wj(e,t,n){if(fE(n,`cartesian2d`)){var r=t,i=n.getArea();return{x:e?r.x:i.x,y:e?i.y:r.y,width:e?r.width:i.width,height:e?i.height:r.height}}var i=n.getArea(),a=t;return{cx:i.cx,cy:i.cy,r0:e?i.r0:a.r0,r:e?i.r:a.r,startAngle:e?a.startAngle:0,endAngle:e?a.endAngle:Math.PI*2}}function Tj(e,t,n){return new(e.type===`polar`?ov:Wp)({shape:wj(t,n,e),silent:!0,z2:0})}function Ej(e,t){return e.height===0?t.getOtherAxis(t.getBaseAxis()).inverse?`bottom`:`top`:e.height>0?`bottom`:`top`}function Dj(e,t){return e.width===0?t.getOtherAxis(t.getBaseAxis()).inverse?`left`:`right`:e.width>=0?`right`:`left`}function Oj(e){e.registerChartView(aj),e.registerSeriesModel(UA),e.registerLayout(e.PRIORITY.VISUAL.LAYOUT,LA(`bar`)),e.registerLayout(e.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,RA(`bar`)),e.registerProcessor(e.PRIORITY.PROCESSOR.STATISTIC,YD(`bar`)),e.registerAction({type:`changeAxisOrder`,event:`changeAxisOrder`,update:`update`},function(e,t){var n=e.componentType||`series`;t.eachComponent({mainType:n,query:e},function(t){e.sortInfo&&t.axis.setCategorySortInfo(e.sortInfo)})}),VA(e)}function kj(e,t,n,r,i){var a=e+t;n.isSilent(a)||r.eachComponent({mainType:`series`,subType:`pie`},function(e){for(var t=e.seriesIndex,r=e.option.selectedMap,o=i.selected,s=0;s=0){var i=r===`touchend`?t.changedTouches[0]:t.targetTouches[0];i&&Lj(e,i,t,n)}else{Lj(e,t,t,n);var a=Vj(t);t.zrDelta=a?a/120:-(t.detail||0)/3}var o=t.button;return t.which==null&&o!==void 0&&Pj.test(t.type)&&(t.which=o&1?1:o&2?3:o&4?2:0),t}function Vj(e){var t=e.wheelDelta;if(t)return t;var n=e.deltaX,r=e.deltaY;if(n==null||r==null)return t;var i=Math.abs(r===0?n:r),a=r>0?-1:r<0?1:n>0?-1:1;return 3*i*a}function Hj(e,t,n,r){e.addEventListener(t,n,r)}function Uj(e,t,n,r){e.removeEventListener(t,n,r)}var Wj=function(e){e.preventDefault(),e.stopPropagation(),e.cancelBubble=!0},Gj=function(){function e(){this._track=[]}return e.prototype.recognize=function(e,t,n){return this._doTrack(e,t,n),this._recognize(e)},e.prototype.clear=function(){return this._track.length=0,this},e.prototype._doTrack=function(e,t,n){var r=e.touches;if(r){for(var i={points:[],touches:[],target:t,event:e},a=0,o=r.length;a1&&r&&r.length>1){var a=Kj(r)/Kj(i);!isFinite(a)&&(a=1),t.pinchScale=a;var o=qj(r);return t.pinchX=o[0],t.pinchY=o[1],{type:`pinch`,target:e[0].target,event:t}}}}},Yj=`silent`;function Xj(e,t,n){return{type:e,event:n,target:t.target,topTarget:t.topTarget,cancelBubble:!1,offsetX:n.zrX,offsetY:n.zrY,gestureEvent:n.gestureEvent,pinchX:n.pinchX,pinchY:n.pinchY,pinchScale:n.pinchScale,wheelDelta:n.zrDelta,zrByTouch:n.zrByTouch,which:n.which,stop:Zj}}function Zj(){Wj(this.event)}var Qj=function(e){U(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.handler=null,t}return t.prototype.dispose=function(){},t.prototype.setCursor=function(){},t}(qd),$j=function(){function e(e,t){this.x=e,this.y=t}return e}(),eM=[`click`,`dblclick`,`mousewheel`,`mouseout`,`mouseup`,`mousedown`,`mousemove`,`contextmenu`],tM=new Sl(0,0,0,0),nM=function(e){U(t,e);function t(t,n,r,i,a){var o=e.call(this)||this;return o._hovered=new $j(0,0),o.storage=t,o.painter=n,o.painterRoot=i,o._pointerSize=a,r||=new Qj,o.proxy=null,o.setHandlerProxy(r),o._draggingMgr=new Nj(o),o}return t.prototype.setHandlerProxy=function(e){this.proxy&&this.proxy.dispose(),e&&(G(eM,function(t){e.on&&e.on(t,this[t],this)},this),e.handler=this),this.proxy=e},t.prototype.mousemove=function(e){var t=e.zrX,n=e.zrY,r=aM(this,t,n),i=this._hovered,a=i.target;a&&!a.__zr&&(i=this.findHover(i.x,i.y),a=i.target);var o=this._hovered=r?new $j(t,n):this.findHover(t,n),s=o.target,c=this.proxy;c.setCursor&&c.setCursor(s?s.cursor:`default`),a&&s!==a&&this.dispatchToElement(i,`mouseout`,e),this.dispatchToElement(o,`mousemove`,e),s&&s!==a&&this.dispatchToElement(o,`mouseover`,e)},t.prototype.mouseout=function(e){var t=e.zrEventControl;t!==`only_globalout`&&this.dispatchToElement(this._hovered,`mouseout`,e),t!==`no_globalout`&&this.trigger(`globalout`,{type:`globalout`,event:e})},t.prototype.resize=function(){this._hovered=new $j(0,0)},t.prototype.dispatch=function(e,t){var n=this[e];n&&n.call(this,t)},t.prototype.dispose=function(){this.proxy.dispose(),this.storage=null,this.proxy=null,this.painter=null},t.prototype.setCursorStyle=function(e){var t=this.proxy;t.setCursor&&t.setCursor(e)},t.prototype.dispatchToElement=function(e,t,n){e||={};var r=e.target;if(!(r&&r.silent)){for(var i=`on`+t,a=Xj(t,e,n);r&&(r[i]&&(a.cancelBubble=!!r[i].call(r,a)),r.trigger(t,a),r=r.__hostTarget?r.__hostTarget:r.parent,!a.cancelBubble););a.cancelBubble||(this.trigger(t,a),this.painter&&this.painter.eachOtherLayer&&this.painter.eachOtherLayer(function(e){typeof e[i]==`function`&&e[i].call(e,a),e.trigger&&e.trigger(t,a)}))}},t.prototype.findHover=function(e,t,n){var r=this.storage.getDisplayList(),i=new $j(e,t);if(iM(r,i,e,t,n),this._pointerSize&&!i.target){for(var a=[],o=this._pointerSize,s=o/2,c=new Sl(e-s,t-s,o,o),l=r.length-1;l>=0;l--){var u=r[l];u!==n&&!u.ignore&&!u.ignoreCoarsePointer&&(!u.parent||!u.parent.ignoreCoarsePointer)&&(tM.copy(u.getBoundingRect()),u.transform&&tM.applyTransform(u.transform),tM.intersect(c)&&a.push(u))}if(a.length){for(var d=4,f=Math.PI/12,p=Math.PI*2,m=0;m4)return;this._downPoint=null}this.dispatchToElement(a,e,t)}});function rM(e,t,n){if(e[e.rectHover?`rectContain`:`contain`](t,n)){for(var r=e,i=void 0,a=!1;r;){if(r.ignoreClip&&(a=!0),!a){var o=r.getClipPath();if(o&&!o.contain(t,n))return!1}r.silent&&(i=!0);var s=r.__hostTarget;r=s?r.ignoreHostSilent?null:s:r.parent}return!i||Yj}return!1}function iM(e,t,n,r,i){for(var a=e.length-1;a>=0;a--){var o=e[a],s=void 0;if(o!==i&&!o.ignore&&(s=rM(o,n,r))&&(!t.topTarget&&(t.topTarget=o),s!==Yj)){t.target=o;break}}}function aM(e,t,n){var r=e.painter;return t<0||t>r.getWidth()||n<0||n>r.getHeight()}var oM=32,sM=7;function cM(e){for(var t=0;e>=oM;)t|=e&1,e>>=1;return e+t}function lM(e,t,n,r){var i=t+1;if(i===n)return 1;if(r(e[i++],e[t])<0){for(;i=0;)i++;return i-t}function uM(e,t,n){for(n--;t>>1,i(a,e[c])<0?s=c:o=c+1;var l=r-o;switch(l){case 3:e[o+3]=e[o+2];case 2:e[o+2]=e[o+1];case 1:e[o+1]=e[o];break;default:for(;l>0;)e[o+l]=e[o+l-1],l--}e[o]=a}}function fM(e,t,n,r,i,a){var o=0,s=0,c=1;if(a(e,t[n+i])>0){for(s=r-i;c0;)o=c,c=(c<<1)+1,c<=0&&(c=s);c>s&&(c=s),o+=i,c+=i}else{for(s=i+1;cs&&(c=s);var l=o;o=i-c,c=i-l}for(o++;o>>1);a(e,t[n+u])>0?o=u+1:c=u}return c}function pM(e,t,n,r,i,a){var o=0,s=0,c=1;if(a(e,t[n+i])<0){for(s=i+1;cs&&(c=s);var l=o;o=i-c,c=i-l}else{for(s=r-i;c=0;)o=c,c=(c<<1)+1,c<=0&&(c=s);c>s&&(c=s),o+=i,c+=i}for(o++;o>>1);a(e,t[n+u])<0?c=u:o=u+1}return c}function mM(e,t){var n=sM,r,i,a=0,o=[];r=[],i=[];function s(e,t){r[a]=e,i[a]=t,a+=1}function c(){for(;a>1;){var e=a-2;if(e>=1&&i[e-1]<=i[e]+i[e+1]||e>=2&&i[e-2]<=i[e]+i[e-1])i[e-1]i[e+1])break;u(e)}}function l(){for(;a>1;){var e=a-2;e>0&&i[e-1]=sM||m>=sM);if(h)break;f<0&&(f=0),f+=2}if(n=f,n<1&&(n=1),i===1){for(c=0;c=0;c--)e[p+c]=e[f+c];e[d]=o[u];return}for(var m=n;;){var h=0,g=0,_=!1;do if(t(o[u],e[l])<0){if(e[d--]=e[l--],h++,g=0,--i===0){_=!0;break}}else if(e[d--]=o[u--],g++,h=0,--s===1){_=!0;break}while((h|g)=0;c--)e[p+c]=e[f+c];if(i===0){_=!0;break}}if(e[d--]=o[u--],--s===1){_=!0;break}if(g=s-fM(e[l],o,0,s,s-1,t),g!==0){for(d-=g,u-=g,s-=g,p=d+1,f=u+1,c=0;c=sM||g>=sM);if(_)break;m<0&&(m=0),m+=2}if(n=m,n<1&&(n=1),s===1){for(d-=i,l-=i,p=d+1,f=l+1,c=i-1;c>=0;c--)e[p+c]=e[f+c];e[d]=o[u]}else if(s===0)throw Error();else for(f=d-(s-1),c=0;cs&&(c=s),dM(e,n,n+c,n+a,t),a=c}o.pushRun(n,a),o.mergeRuns(),i-=a,n+=a}while(i!==0);o.forceMergeRuns()}}var gM=!1;function _M(){gM||(gM=!0,console.warn(`z / z2 / zlevel of displayable is invalid, which may cause unexpected errors`))}function vM(e,t){return e.zlevel===t.zlevel?e.z===t.z?e.z2-t.z2:e.z-t.z:e.zlevel-t.zlevel}var yM=function(){function e(){this._roots=[],this._displayList=[],this._displayListLen=0,this.displayableSortFunc=vM}return e.prototype.traverse=function(e,t){for(var n=0;n=0&&this._roots.splice(r,1)},e.prototype.delAllRoots=function(){this._roots=[],this._displayList=[],this._displayListLen=0},e.prototype.getRoots=function(){return this._roots},e.prototype.dispose=function(){this._displayList=null,this._roots=null},e}(),bM=dc.hasGlobalWindow&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(e){return setTimeout(e,16)};function xM(){return new Date().getTime()}var SM=function(e){U(t,e);function t(t){var n=e.call(this)||this;return n._running=!1,n._time=0,n._pausedTime=0,n._pauseStart=0,n._paused=!1,t||={},n.stage=t.stage||{},n}return t.prototype.addClip=function(e){e.animation&&this.removeClip(e),this._head?(this._tail.next=e,e.prev=this._tail,e.next=null,this._tail=e):this._head=this._tail=e,e.animation=this},t.prototype.addAnimator=function(e){e.animation=this;var t=e.getClip();t&&this.addClip(t)},t.prototype.removeClip=function(e){if(e.animation){var t=e.prev,n=e.next;t?t.next=n:this._head=n,n?n.prev=t:this._tail=t,e.next=e.prev=e.animation=null}},t.prototype.removeAnimator=function(e){var t=e.getClip();t&&this.removeClip(t),e.animation=null},t.prototype.update=function(e){for(var t=xM()-this._pausedTime,n=t-this._time,r=this._head;r;){var i=r.next;r.step(t,n)?(r.ondestroy(),this.removeClip(r),r=i):r=i}this._time=t,e||(this.trigger(`frame`,n),this.stage.update&&this.stage.update())},t.prototype._startLoop=function(){var e=this;this._running=!0;function t(){e._running&&(bM(t),!e._paused&&e.update())}bM(t)},t.prototype.start=function(){this._running||(this._time=xM(),this._pausedTime=0,this._startLoop())},t.prototype.stop=function(){this._running=!1},t.prototype.pause=function(){this._paused||=(this._pauseStart=xM(),!0)},t.prototype.resume=function(){this._paused&&=(this._pausedTime+=xM()-this._pauseStart,!1)},t.prototype.clear=function(){for(var e=this._head;e;){var t=e.next;e.prev=e.next=e.animation=null,e=t}this._head=this._tail=null},t.prototype.isFinished=function(){return this._head==null},t.prototype.animate=function(e,t){t||={},this.start();var n=new Kd(e,t.loop);return this.addAnimator(n),n},t}(qd),CM=300,wM=dc.domSupported,TM=(function(){var e=[`click`,`dblclick`,`mousewheel`,`wheel`,`mouseout`,`mouseup`,`mousedown`,`mousemove`,`contextmenu`],t=[`touchstart`,`touchend`,`touchmove`],n={pointerdown:1,pointerup:1,pointermove:1,pointerout:1};return{mouse:e,touch:t,pointer:K(e,function(e){var t=e.replace(`mouse`,`pointer`);return n.hasOwnProperty(t)?t:e})}})(),EM={mouse:[`mousemove`,`mouseup`],pointer:[`pointermove`,`pointerup`]},DM=!1;function OM(e){var t=e.pointerType;return t===`pen`||t===`touch`}function kM(e){e.touching=!0,e.touchTimer!=null&&(clearTimeout(e.touchTimer),e.touchTimer=null),e.touchTimer=setTimeout(function(){e.touching=!1,e.touchTimer=null},700)}function AM(e){e&&(e.zrByTouch=!0)}function jM(e,t){return Bj(e.dom,new NM(e,t),!0)}function MM(e,t){for(var n=t,r=!1;n&&n.nodeType!==9&&!(r=n.domBelongToZr||n!==t&&n===e.painterRoot);)n=n.parentNode;return r}var NM=function(){function e(e,t){this.stopPropagation=cc,this.stopImmediatePropagation=cc,this.preventDefault=cc,this.type=t.type,this.target=this.currentTarget=e.dom,this.pointerType=t.pointerType,this.clientX=t.clientX,this.clientY=t.clientY}return e}(),PM={mousedown:function(e){e=Bj(this.dom,e),this.__mayPointerCapture=[e.zrX,e.zrY],this.trigger(`mousedown`,e)},mousemove:function(e){e=Bj(this.dom,e);var t=this.__mayPointerCapture;t&&(e.zrX!==t[0]||e.zrY!==t[1])&&this.__togglePointerCapture(!0),this.trigger(`mousemove`,e)},mouseup:function(e){e=Bj(this.dom,e),this.__togglePointerCapture(!1),this.trigger(`mouseup`,e)},mouseout:function(e){e=Bj(this.dom,e);var t=e.toElement||e.relatedTarget;MM(this,t)||(this.__pointerCapturing&&(e.zrEventControl=`no_globalout`),this.trigger(`mouseout`,e))},wheel:function(e){DM=!0,e=Bj(this.dom,e),this.trigger(`mousewheel`,e)},mousewheel:function(e){DM||(e=Bj(this.dom,e),this.trigger(`mousewheel`,e))},touchstart:function(e){e=Bj(this.dom,e),AM(e),this.__lastTouchMoment=new Date,this.handler.processGesture(e,`start`),PM.mousemove.call(this,e),PM.mousedown.call(this,e)},touchmove:function(e){e=Bj(this.dom,e),AM(e),this.handler.processGesture(e,`change`),PM.mousemove.call(this,e)},touchend:function(e){e=Bj(this.dom,e),AM(e),this.handler.processGesture(e,`end`),PM.mouseup.call(this,e),+new Date-this.__lastTouchMoment0&&(this._stillFrameAccum++,this._stillFrameAccum>this._sleepAfterStill&&this.animation.stop())},e.prototype.setSleepAfterStill=function(e){this._sleepAfterStill=e},e.prototype.wakeUp=function(){this._disposed||(this.animation.start(),this._stillFrameAccum=0)},e.prototype.refreshHover=function(){this._needsRefreshHover=!0},e.prototype.refreshHoverImmediately=function(){this._disposed||this._refresh({animUpdate:!1,refresh:!1,refreshHover:!0})},e.prototype.resize=function(e){this._disposed||(e||={},this.painter.resize(e.width,e.height),this.handler.resize())},e.prototype.clearAnimation=function(){this._disposed||this.animation.clear()},e.prototype.getWidth=function(){if(!this._disposed)return this.painter.getWidth()},e.prototype.getHeight=function(){if(!this._disposed)return this.painter.getHeight()},e.prototype.setCursorStyle=function(e){this._disposed||this.handler.setCursorStyle(e)},e.prototype.findHover=function(e,t){if(!this._disposed)return this.handler.findHover(e,t)},e.prototype.on=function(e,t,n){return this._disposed||this.handler.on(e,t,n),this},e.prototype.off=function(e,t){this._disposed||this.handler.off(e,t)},e.prototype.trigger=function(e,t){this._disposed||this.handler.trigger(e,t)},e.prototype.clear=function(){if(!this._disposed){for(var e=this.storage.getRoots(),t=0;t=0;o--)r[o]&&!yh(r[o])?a=!0:(r[o]=null,!a&&i--);r.length=i,e[n]=r}}),delete e[aN],e},t.prototype.setTheme=function(e){this._theme=new _b(e),this._resetOption(`recreate`,null)},t.prototype.getTheme=function(){return this._theme},t.prototype.getLocaleModel=function(){return this._locale},t.prototype.setUpdatePayload=function(e){this._payload=e},t.prototype.getUpdatePayload=function(){return this._payload},t.prototype.getComponent=function(e,t){var n=this._componentsMap.get(e);if(n){var r=n[t||0];if(r)return r;if(t==null){for(var i=0;i=t:n===`max`?e<=t:e===t}function vN(e,t){return e.join(`,`)===t.join(`,`)}var yN=G,bN=Y,xN=[`areaStyle`,`lineStyle`,`nodeStyle`,`linkStyle`,`chordStyle`,`label`,`labelLine`];function SN(e){var t=e&&e.itemStyle;if(t)for(var n=0,r=xN.length;n0?e[n-1].seriesModel:null)}),GN(e))})}function GN(e){G(e,function(t,n){var r=[],i=[NaN,NaN],a=[t.stackResultDimension,t.stackedOverDimension],o=t.data,s=t.isStackedByIndex,c=t.seriesModel.get(`stackStrategy`)||`samesign`;o.modify(a,function(a,l,u){var d=o.get(t.stackedDimension,u);if(isNaN(d))return i;var f,p;s?p=o.getRawIndex(u):f=o.get(t.stackedByDimension,u);for(var m=NaN,h=n-1;h>=0;h--){var g=e[h];if(s||(p=g.data.rawIndexOf(g.stackedByDimension,f)),p>=0){var _=g.data.getByRawIndex(g.stackResultDimension,p);if(c===`all`||c===`positive`&&_>0||c===`negative`&&_<0||c===`samesign`&&d>=0&&_>0||c===`samesign`&&d<=0&&_<0){d=Nm(d,_),m=_;break}}}return r[0]=d,r[1]=m,r})})}var KN=function(){function e(){this.group=new z_,this.uid=bS(`viewComponent`)}return e.prototype.init=function(e,t){},e.prototype.render=function(e,t,n,r){},e.prototype.dispose=function(e,t){},e.prototype.updateView=function(e,t,n,r){},e.prototype.updateLayout=function(e,t,n,r){},e.prototype.updateVisual=function(e,t,n,r){},e.prototype.toggleBlurSeries=function(e,t,n){},e.prototype.eachRendered=function(e){var t=this.group;t&&t.traverse(e)},e}();yc(KN),Ec(KN);var qN=Ch(),JN={itemStyle:Dc(mb,!0),lineStyle:Dc(db,!0)},YN={lineStyle:`stroke`,itemStyle:`fill`};function XN(e,t){return e.visualStyleMapper||JN[t]||(console.warn(`Unknown style type '`+t+`'.`),JN.itemStyle)}function ZN(e,t){return e.visualDrawType||YN[t]||(console.warn(`Unknown style type '`+t+`'.`),`fill`)}var QN={createOnAllSeries:!0,performRawSeries:!0,reset:function(e,t){var n=e.getData(),r=e.visualStyleAccessPath||`itemStyle`,i=e.getModel(r),a=XN(e,r)(i),o=i.getShallow(`decal`);o&&(n.setVisual(`decal`,o),o.dirty=!0);var s=ZN(e,r),c=a[s],l=Is(c)?c:null,u=a.fill===`auto`||a.stroke===`auto`;if(!a[s]||l||u){var d=e.getColorFromPalette(e.name,null,t.getSeriesCount());a[s]||(a[s]=d,n.setVisual(`colorFromPalette`,!0)),a.fill=a.fill===`auto`||Is(a.fill)?d:a.fill,a.stroke=a.stroke===`auto`||Is(a.stroke)?d:a.stroke}if(n.setVisual(`style`,a),n.setVisual(`drawType`,s),!t.isSeriesFiltered(e)&&l)return n.setVisual(`colorFromPalette`,!1),{dataEach:function(t,n){var r=e.getDataParams(n),i=W({},a);i[s]=l(r),t.setItemVisual(n,`style`,i)}}}},$N=new _b,eP={createOnAllSeries:!0,reset:function(e,t){if(!e.ignoreStyleOnData){var n=e.getData(),r=e.visualStyleAccessPath||`itemStyle`,i=XN(e,r),a=n.getVisual(`drawType`);return{dataEach:n.hasItemOption?function(e,t){var n=e.getRawDataItem(t);if(n&&n[r]){$N.option=n[r];var o=i($N);W(e.ensureUniqueItemVisual(t,`style`),o),$N.option.decal&&(e.setItemVisual(t,`decal`,$N.option.decal),$N.option.decal.dirty=!0),a in o&&e.setItemVisual(t,`colorFromPalette`,!1)}}:null}}}},tP={performRawSeries:!0,overallReset:function(e){var t=Z();e.eachSeries(function(e){if(!e.isColorBySeries()){var n=e.type+`-`+e.getColorBy();qN(e).scope=t.get(n)||t.set(n,{})}}),e.eachSeries(function(e){if(!e.isColorBySeries()){var t=e.getRawData(),n={},r=e.getData(),i=qN(e).scope,a=ZN(e,e.visualStyleAccessPath||`itemStyle`);r.each(function(e){var t=r.getRawIndex(e);n[t]=e}),t.each(function(o){var s=n[o];if(r.getItemVisual(s,`colorFromPalette`)){var c=r.ensureUniqueItemVisual(s,`style`),l=t.getName(o)||o+``,u=t.count();c[a]=e.getColorFromPalette(l,i,u)}})}})}},nP=Math.PI;function rP(e,t){t||={},ws(t,{text:`loading`,textColor:Q.color.primary,fontSize:12,fontWeight:`normal`,fontStyle:`normal`,fontFamily:`sans-serif`,maskColor:`rgba(255,255,255,0.8)`,showSpinner:!0,color:Q.color.theme[0],spinnerRadius:10,lineWidth:5,zlevel:0});var n=new z_,r=new Wp({style:{fill:t.maskColor},zlevel:t.zlevel,z:1e4});n.add(r);var i=new Yp({style:{text:t.text,fill:t.textColor,fontSize:t.fontSize,fontWeight:t.fontWeight,fontStyle:t.fontStyle,fontFamily:t.fontFamily},zlevel:t.zlevel,z:10001}),a=new Wp({style:{fill:`none`},textContent:i,textConfig:{position:`right`,distance:10},zlevel:t.zlevel,z:10001});n.add(a);var o;return t.showSpinner&&(o=new Cv({shape:{startAngle:-nP/2,endAngle:-nP/2+.1,r:t.spinnerRadius},style:{stroke:t.color,lineCap:`round`,lineWidth:t.lineWidth},zlevel:t.zlevel,z:10001}),o.animateShape(!0).when(1e3,{endAngle:nP*3/2}).start(`circularInOut`),o.animateShape(!0).when(1e3,{startAngle:nP*3/2}).delay(300).start(`circularInOut`),n.add(o)),n.resize=function(){var n=i.getBoundingRect().width,s=t.showSpinner?t.spinnerRadius:0,c=(e.getWidth()-s*2-(t.showSpinner&&n?10:0)-n)/2-(t.showSpinner&&n?0:5+n/2)+(t.showSpinner?0:n/2)+(n?0:s),l=e.getHeight()/2;t.showSpinner&&o.setShape({cx:c,cy:l}),a.setShape({x:c-s,y:l-s,width:s*2,height:s*2}),r.setShape({x:0,y:0,width:e.getWidth(),height:e.getHeight()})},n.resize(),n}var iP=function(){function e(e,t,n,r){this._stageTaskMap=Z(),this.ecInstance=e,this.api=t,n=this._dataProcessorHandlers=n.slice(),r=this._visualHandlers=r.slice(),this._allHandlers=n.concat(r)}return e.prototype.restoreData=function(e,t){e.restoreData(t),this._stageTaskMap.each(function(e){var t=e.overallTask;t&&t.dirty()})},e.prototype.getPerformArgs=function(e,t){if(e.__pipeline){var n=this._pipelineMap.get(e.__pipeline.id),r=n.context,i=!t&&n.progressiveEnabled&&(!r||r.progressiveRender)&&e.__idxInPipeline>n.blockIndex?n.step:null,a=r&&r.modDataCount;return{step:i,modBy:a==null?null:Math.ceil(a/i),modDataCount:a}}},e.prototype.getPipeline=function(e){return this._pipelineMap.get(e)},e.prototype.updateStreamModes=function(e,t){var n=this._pipelineMap.get(e.uid);e.pipelineContext=n.context=e.__preparePipelineContext?e.__preparePipelineContext(t,n):Yh(e,t,n)},e.prototype.restorePipelines=function(e,t){var n=this,r=n._pipelineMap=Z();t.eachSeries(function(t){var i=e.painter.type===`canvas`&&t.getProgressive(),a=t.uid;r.set(a,{id:a,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:i&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(i||700),count:0}),n._pipe(t,t.dataTask)})},e.prototype.prepareStageTasks=function(){var e=this._stageTaskMap,t=this.api.getModel(),n=this.api;G(this._allHandlers,function(r){var i=e.get(r.uid)||e.set(r.uid,{});Ys(!(r.reset&&r.overallReset),``),r.reset&&this._createSeriesStageTask(r,i,t,n),r.overallReset&&this._createOverallStageTask(r,i,t,n)},this)},e.prototype.prepareView=function(e,t,n,r){var i=e.renderTask,a=i.context;a.model=t,a.ecModel=n,a.api=r,i.__block=!e.incrementalPrepareRender,this._pipe(t,i)},e.prototype.performDataProcessorTasks=function(e,t){this._performStageTasks(this._dataProcessorHandlers,e,t,{block:!0})},e.prototype.performVisualTasks=function(e,t,n){this._performStageTasks(this._visualHandlers,e,t,n)},e.prototype._performStageTasks=function(e,t,n,r){r||={};var i=!1,a=this;G(e,function(e,s){if(!(r.visualType&&r.visualType!==e.visualType)){var c=a._stageTaskMap.get(e.uid),l=c.seriesTaskMap,u=c.overallTask;if(u){var d,f=u.agentStubMap;f.each(function(e){o(r,e)&&(e.dirty(),d=!0)}),d&&u.dirty(),a.updatePayload(u,n);var p=a.getPerformArgs(u,r.block);f.each(function(e){e.perform(p)}),u.perform(p)&&(i=!0)}else l&&l.each(function(s,c){o(r,s)&&s.dirty();var l=a.getPerformArgs(s,r.block);l.skip=!e.performRawSeries&&t.isSeriesFiltered(s.context.model),a.updatePayload(s,n),s.perform(l)&&(i=!0)})}});function o(e,t){return e.setDirty&&(!e.dirtyMap||e.dirtyMap.get(t.__pipeline.id))}this.unfinished=i||this.unfinished},e.prototype.performSeriesTasks=function(e){var t;e.eachSeries(function(e){t=e.dataTask.perform()||t}),this.unfinished=t||this.unfinished},e.prototype.plan=function(){this._pipelineMap.each(function(e){var t=e.tail;do{if(t.__block){e.blockIndex=t.__idxInPipeline;break}t=t.getUpstream()}while(t)})},e.prototype.updatePayload=function(e,t){t!==`remain`&&(e.context.payload=t)},e.prototype._createSeriesStageTask=function(e,t,n,r){var i=this,a=t.seriesTaskMap,o=t.seriesTaskMap=Z(),s=e.seriesType,c=e.getTargetSeries;e.createOnAllSeries?n.eachRawSeries(l):s?n.eachRawSeriesByType(s,l):c&&c(n,r).each(l);function l(t){var s=t.uid,c=o.set(s,a&&a.get(s)||vw({plan:lP,reset:uP,count:pP}));c.context={model:t,ecModel:n,api:r,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:i},i._pipe(t,c)}},e.prototype._createOverallStageTask=function(e,t,n,r){var i=this,a=t.overallTask=t.overallTask||vw({reset:aP});a.context={ecModel:n,api:r,overallReset:e.overallReset,scheduler:i};var o=a.agentStubMap,s=a.agentStubMap=Z(),c=e.seriesType,l=e.getTargetSeries,u=e.dirtyOnOverallProgress,d=!1;Ys(!e.createOnAllSeries,``),c?n.eachRawSeriesByType(c,f):l?l(n,r).each(f):G(n.getSeries(),f);function f(e){var t=e.uid,n=s.set(t,o&&o.get(t)||(d=!0,vw({reset:oP,onDirty:cP})));n.context={model:e,dirtyOnOverallProgress:u},n.agent=a,n.__block=u,i._pipe(e,n)}d&&a.dirty()},e.prototype._pipe=function(e,t){var n=e.uid,r=this._pipelineMap.get(n);!r.head&&(r.head=t),r.tail&&r.tail.pipe(t),r.tail=t,t.__idxInPipeline=r.count++,t.__pipeline=r},e.wrapStageHandler=function(e,t){return Is(e)&&(e={overallReset:e,seriesType:mP(e)}),e.uid=bS(`stageHandler`),t&&(e.visualType=t),e},e}();function aP(e){e.overallReset(e.ecModel,e.api,e.payload)}function oP(e){return e.dirtyOnOverallProgress&&sP}function sP(){this.agent.dirty(),this.getDownstream().dirty()}function cP(){this.agent&&this.agent.dirty()}function lP(e){return e.plan?e.plan(e.model,e.ecModel,e.api,e.payload):null}function uP(e){e.useClearVisual&&e.data.clearAllVisual();var t=e.resetDefines=rh(e.reset(e.model,e.ecModel,e.api,e.payload));return t.length>1?K(t,function(e,t){return fP(t)}):dP}var dP=fP(0);function fP(e){return function(t,n){var r=n.data,i=n.resetDefines[e];if(i&&i.dataEach)for(var a=t.start;a0&&u===i.length-l.length){var d=i.slice(0,u);d!==`data`&&(t.mainType=d,t[l.toLowerCase()]=e,s=!0)}}o.hasOwnProperty(i)&&(n[i]=e,s=!0),s||(r[i]=e)})}return{cptQuery:t,dataQuery:n,otherQuery:r}},e.prototype.filter=function(e,t){var n=this.eventInfo;if(!n)return!0;var r=n.targetEl,i=n.packedEvent,a=n.model,o=n.view;if(!a||!o)return!0;var s=t.cptQuery,c=t.dataQuery;return l(s,a,`mainType`)&&l(s,a,`subType`)&&l(s,a,`index`,`componentIndex`)&&l(s,a,`name`)&&l(s,a,`id`)&&l(c,i,`name`)&&l(c,i,`dataIndex`)&&l(c,i,`dataType`)&&(!o.filterForExposedEvent||o.filterForExposedEvent(e,t.otherQuery,r,i));function l(e,t,n,r){return e[n]==null||t[r||n]===e[n]}},e.prototype.afterTrigger=function(){this.eventInfo=null},e}(),wP=[`symbol`,`symbolSize`,`symbolRotate`,`symbolOffset`],TP=wP.concat([`symbolKeepAspect`]),EP={createOnAllSeries:!0,performRawSeries:!0,reset:function(e,t){var n=e.getData();if(e.legendIcon&&n.setVisual(`legendIcon`,e.legendIcon),!e.hasSymbolVisual)return;for(var r={},i={},a=!1,o=0;o=0&&BP(c)?c:.5,e.createRadialGradient(o,s,0,o,s,c)}function UP(e,t,n){for(var r=t.type===`radial`?HP(e,t,n):VP(e,t,n),i=t.colorStops,a=0;a0)?null:e===`dashed`?[4*t,2*t]:e===`dotted`?[t]:Rs(e)?[e]:q(e)?e:null}function JP(e){var t=e.style,n=t.lineDash&&t.lineWidth>0&&qP(t.lineDash,t.lineWidth),r=t.lineDashOffset;if(n){var i=t.strokeNoScale&&e.getLineScale?e.getLineScale():1;i&&i!==1&&(n=K(n,function(e){return e/i}),r/=i)}return[n,r]}var YP=new ap(!0);function XP(e){var t=e.stroke;return!(t==null||t===`none`||!(e.lineWidth>0))}function ZP(e){return typeof e==`string`&&e!==`none`}function QP(e){var t=e.fill;return t!=null&&t!==`none`}function $P(e,t){if(t.fillOpacity!=null&&t.fillOpacity!==1){var n=e.globalAlpha;e.globalAlpha=t.fillOpacity*t.opacity,e.fill(),e.globalAlpha=n}else e.fill()}function eF(e,t){if(t.strokeOpacity!=null&&t.strokeOpacity!==1){var n=e.globalAlpha;e.globalAlpha=t.strokeOpacity*t.opacity,e.stroke(),e.globalAlpha=n}else e.stroke()}function tF(e,t,n){var r=Fc(t.image,t.__image,n);if(Lc(r)){var i=e.createPattern(r,t.repeat||`repeat`);if(typeof DOMMatrix==`function`&&i&&i.setTransform){var a=new DOMMatrix;a.translateSelf(t.x||0,t.y||0),a.rotateSelf(0,0,(t.rotation||0)*lc),a.scaleSelf(t.scaleX||1,t.scaleY||1),i.setTransform(a)}return i}}function nF(e,t,n,r,i){var a,o=XP(n),s=QP(n),c=n.strokePercent,l=c<1,u=!t.path;(!t.silent||l)&&u&&t.createPathProxy();var d=t.path||YP,f=t.__dirty;if(!r){var p=n.fill,m=n.stroke,h=s&&!!p.colorStops,g=o&&!!m.colorStops,_=s&&!!p.image,v=o&&!!m.image,y=void 0,b=void 0,x=void 0,S=void 0,C=void 0;(h||g)&&(C=t.getBoundingRect()),h&&(y=f?UP(e,p,C):t.__canvasFillGradient,t.__canvasFillGradient=y),g&&(b=f?UP(e,m,C):t.__canvasStrokeGradient,t.__canvasStrokeGradient=b),_&&(x=f||!t.__canvasFillPattern?tF(e,p,t):t.__canvasFillPattern,t.__canvasFillPattern=x),v&&(S=f||!t.__canvasStrokePattern?tF(e,m,t):t.__canvasStrokePattern,t.__canvasStrokePattern=S),h?e.fillStyle=y:_&&(x?e.fillStyle=x:s=!1),g?e.strokeStyle=b:v&&(S?e.strokeStyle=S:o=!1)}var w=t.getGlobalScale();d.setScale(w[0],w[1],t.segmentIgnoreThreshold);var T,E;e.setLineDash&&n.lineDash&&(a=JP(t),T=a[0],E=a[1]);var D=!0;(u||f&4)&&(d.setDPR(e.dpr),l?d.setContext(null):(d.setContext(e),D=!1),d.reset(),t.buildPath(d,t.shape,r),d.toStatic(),t.pathUpdated()),D&&d.rebuildPath(e,l?c:1),T&&(e.setLineDash(T),e.lineDashOffset=E),r?(i.batchFill=s,i.batchStroke=o):n.strokeFirst?(o&&eF(e,n),s&&$P(e,n)):(s&&$P(e,n),o&&eF(e,n)),T&&e.setLineDash([])}function rF(e,t,n){var r=t.__image=Fc(n.image,t.__image,t,t.onload);if(r&&Lc(r)){var i=n.x||0,a=n.y||0,o=t.getWidth(),s=t.getHeight(),c=r.width/r.height;if(o==null&&s!=null?o=s*c:s==null&&o!=null?s=o/c:o==null&&s==null&&(o=r.width,s=r.height),n.sWidth&&n.sHeight){var l=n.sx||0,u=n.sy||0;e.drawImage(r,l,u,n.sWidth,n.sHeight,i,a,o,s)}else if(n.sx&&n.sy){var l=n.sx,u=n.sy,d=o-l,f=s-u;e.drawImage(r,l,u,d,f,i,a,o,s)}else e.drawImage(r,i,a,o,s)}}function iF(e,t,n){var r,i=n.text;if(i!=null&&(i+=``),i){e.font=n.font||`12px sans-serif`,e.textAlign=n.textAlign,e.textBaseline=n.textBaseline;var a=void 0,o=void 0;e.setLineDash&&n.lineDash&&(r=JP(t),a=r[0],o=r[1]),a&&(e.setLineDash(a),e.lineDashOffset=o),n.strokeFirst?(XP(n)&&e.strokeText(i,n.x,n.y),QP(n)&&e.fillText(i,n.x,n.y)):(QP(n)&&e.fillText(i,n.x,n.y),XP(n)&&e.strokeText(i,n.x,n.y)),a&&e.setLineDash([])}}var aF=[`shadowBlur`,`shadowOffsetX`,`shadowOffsetY`],oF=[[`lineCap`,`butt`],[`lineJoin`,`miter`],[`miterLimit`,10]];function sF(e,t,n,r,i){var a=!1;if(!r&&(n||={},t===n))return!1;if(r||t.opacity!==n.opacity){vF(e,i),a=!0;var o=Math.max(Math.min(t.opacity,1),0);e.globalAlpha=isNaN(o)?yf.opacity:o}(r||t.blend!==n.blend)&&(a||=(vF(e,i),!0),e.globalCompositeOperation=t.blend||yf.blend);for(var s=0;s0&&e.unfinished);e.unfinished||this._zr.flush()}}},t.prototype.getDom=function(){return this._dom},t.prototype.getId=function(){return this.id},t.prototype.getZr=function(){return this._zr},t.prototype.isSSR=function(){return this._ssr},t.prototype.setOption=function(e,t,n){if(!this[QF]){if(this._disposed){this.id;return}var r,i,a;if(Y(t)&&(n=t.lazyUpdate,r=t.silent,i=t.replaceMerge,a=t.transition,t=t.notMerge),this[QF]=!0,AI(this),!this._model||t){var o=new mN(this._api),s=this._theme,c=this._model=new sN;c.scheduler=this._scheduler,c.ssr=this._ssr,c.init(null,null,null,s,this._locale,o)}this._model.setOption(e,{replaceMerge:i},RI);var l={seriesTransition:a,optionChanged:!0};if(n)this[eI]={silent:r,updateParams:l},this[QF]=!1,this.getZr().wakeUp();else{try{fI(this),hI.update.call(this,null,l)}catch(e){throw this[eI]=null,this[QF]=!1,e}this._ssr||this._zr.flush(),this[eI]=null,this[QF]=!1,yI.call(this,r),bI.call(this,r)}}},t.prototype.setTheme=function(e,t){if(!this[QF]){if(this._disposed){this.id;return}var n=this._model;if(n){var r=t&&t.silent,i=null;this[eI]&&(r??=this[eI].silent,i=this[eI].updateParams,this[eI]=null),this[QF]=!0,AI(this);try{this._updateTheme(e),n.setTheme(this._theme),fI(this),hI.update.call(this,{type:`setTheme`},i)}catch(e){throw this[QF]=!1,e}this[QF]=!1,yI.call(this,r),bI.call(this,r)}}},t.prototype._updateTheme=function(e){J(e)&&(e=BI[e]),e&&(e=xs(e),e&&HN(e,!0),this._theme=e)},t.prototype.getModel=function(){return this._model},t.prototype.getOption=function(){return this._model&&this._model.getOption()},t.prototype.getWidth=function(){return this._zr.getWidth()},t.prototype.getHeight=function(){return this._zr.getHeight()},t.prototype.getDevicePixelRatio=function(){return this._zr.painter.dpr||dc.hasGlobalWindow&&window.devicePixelRatio||1},t.prototype.getRenderedCanvas=function(e){return this.renderToCanvas(e)},t.prototype.renderToCanvas=function(e){return e||={},this._zr.painter.getRenderedCanvas({backgroundColor:e.backgroundColor||this._model.get(`backgroundColor`),pixelRatio:e.pixelRatio||this.getDevicePixelRatio()})},t.prototype.renderToSVGString=function(e){return e||={},this._zr.painter.renderToString({useViewBox:e.useViewBox})},t.prototype.getSvgDataURL=function(){var e=this._zr;return G(e.storage.getDisplayList(),function(e){e.stopAnimation(null,!0)}),e.painter.toDataURL()},t.prototype.getDataURL=function(e){if(this._disposed){this.id;return}e||={};var t=e.excludeComponents,n=this._model,r=[],i=this;G(t,function(e){n.eachComponent({mainType:e},function(e){var t=i._componentsMap[e.__viewId];t.group.ignore||(r.push(t),t.group.ignore=!0)})});var a=this._zr.painter.getType()===`svg`?this.getSvgDataURL():this.renderToCanvas(e).toDataURL(`image/`+(e&&e.type||`png`));return G(r,function(e){e.group.ignore=!1}),a},t.prototype.getConnectedDataURL=function(e){if(this._disposed){this.id;return}var t=e.type===`svg`,n=this.group,r=Math.min,i=Math.max,a=1/0;if(UI[n]){var o=a,s=a,c=-a,l=-a,u=[],d=e&&e.pixelRatio||this.getDevicePixelRatio();G(HI,function(a,d){if(a.group===n){var f=t?a.getZr().painter.getSvgDom().innerHTML:a.renderToCanvas(xs(e)),p=a.getDom().getBoundingClientRect();o=r(p.left,o),s=r(p.top,s),c=i(p.right,c),l=i(p.bottom,l),u.push({dom:f,left:p.left,top:p.top})}}),o*=d,s*=d,c*=d,l*=d;var f=c-o,p=l-s,m=as.createCanvas(),h=qM(m,{renderer:t?`svg`:`canvas`});if(h.resize({width:f,height:p}),t){var g=``;return G(u,function(e){var t=e.left-o,n=e.top-s;g+=``+e.dom+``}),h.painter.getSvgRoot().innerHTML=g,e.connectedBackgroundColor&&h.painter.setBackgroundColor(e.connectedBackgroundColor),h.refreshImmediately(),h.painter.toDataURL()}return e.connectedBackgroundColor&&h.add(new Wp({shape:{x:0,y:0,width:f,height:p},style:{fill:e.connectedBackgroundColor}})),G(u,function(e){var t=new Ip({style:{x:e.left*d-o,y:e.top*d-s,image:e.dom}});h.add(t)}),h.refreshImmediately(),m.toDataURL(`image/`+(e&&e.type||`png`))}return this.getDataURL(e)},t.prototype.convertToPixel=function(e,t,n){return gI(this,`convertToPixel`,e,t,n)},t.prototype.convertToLayout=function(e,t,n){return gI(this,`convertToLayout`,e,t,n)},t.prototype.convertFromPixel=function(e,t,n){return gI(this,`convertFromPixel`,e,t,n)},t.prototype.containPixel=function(e,t){if(this._disposed){this.id;return}var n=this._model,r;return G(Th(n,e),function(e,n){n.indexOf(`Models`)>=0&&G(e,function(e){var i=e.coordinateSystem;if(i&&i.containPoint)r||=!!i.containPoint(t);else if(n===`seriesModels`){var a=this._chartsMap[e.__viewId];a&&a.containPoint&&(r||=a.containPoint(t,e))}},this)},this),!!r},t.prototype.getVisual=function(e,t){var n=this._model,r=Th(n,e,{defaultMainType:`series`}),i=r.seriesModel.getData(),a=r.hasOwnProperty(`dataIndexInside`)?r.dataIndexInside:r.hasOwnProperty(`dataIndex`)?i.indexOfRawIndex(r.dataIndex):null;return a==null?kP(i,t):OP(i,a,t)},t.prototype.getViewOfComponentModel=function(e){return this._componentsMap[e.__viewId]},t.prototype.getViewOfSeriesModel=function(e){return this._chartsMap[e.__viewId]},t.prototype._initEvents=function(){var e=this;G(NI,function(t){var n=function(n){var r=e.getModel(),i=n.target,a;if(t===`globalout`?a={}:i&&AP(i,function(e){var t=Zh(e);if(t&&t.dataIndex!=null){var n=t.dataModel||r.getSeriesByIndex(t.seriesIndex);return a=n&&n.getDataParams(t.dataIndex,t.dataType,i)||{},!0}if(t.eventData)return a=W({},t.eventData),!0},!0),a){var o=a.componentType,s=a.componentIndex;(o===`markLine`||o===`markPoint`||o===`markArea`)&&(o=`series`,s=a.seriesIndex);var c=o&&s!=null&&r.getComponent(o,s),l=c&&e[c.mainType===`series`?`_chartsMap`:`_componentsMap`][c.__viewId];a.event=n,a.type=t,e._$eventProcessor.eventInfo={targetEl:i,packedEvent:a,model:c,view:l},e.trigger(t,a)}};n.zrEventfulCallAtLast=!0,e._zr.on(t,n,e)});var t=this._messageCenter;G(II,function(n,r){t.on(r,function(t){e.trigger(r,t)})}),Aj(t,this,this._api)},t.prototype.isDisposed=function(){return this._disposed},t.prototype.clear=function(){if(this._disposed){this.id;return}this.setOption({series:[]},!0)},t.prototype.dispose=function(){if(this._disposed){this.id;return}this._disposed=!0,this.getDom()&&Ah(this.getDom(),KI,``);var e=this,t=e._api,n=e._model;G(e._componentsViews,function(e){e.dispose(n,t)}),G(e._chartsViews,function(e){e.dispose(n,t)}),e._zr.dispose(),e._dom=e._model=e._chartsMap=e._componentsMap=e._chartsViews=e._componentsViews=e._scheduler=e._api=e._zr=e._throttledZrFlush=e._theme=e._coordSysMgr=e._messageCenter=null,delete HI[e.id]},t.prototype.resize=function(e){if(!this[QF]){if(this._disposed){this.id;return}this._zr.resize(e);var t=this._model;if(this._loadingFX&&this._loadingFX.resize(),t){var n=t.resetOption(`media`),r=e&&e.silent;this[eI]&&(r??=this[eI].silent,n=!0,this[eI]=null),this[QF]=!0,AI(this);try{n&&fI(this),hI.update.call(this,{type:`resize`,animation:W({duration:0},e&&e.animation)})}catch(e){throw this[QF]=!1,e}this[QF]=!1,yI.call(this,r),bI.call(this,r)}}},t.prototype.showLoading=function(e,t){if(this._disposed){this.id;return}if(Y(e)&&(t=e,e=``),e||=`default`,this.hideLoading(),VI[e]){var n=VI[e](this._api,t),r=this._zr;this._loadingFX=n,r.add(n)}},t.prototype.hideLoading=function(){if(this._disposed){this.id;return}this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},t.prototype.makeActionFromEvent=function(e){var t=W({},e);return t.type=FI[e.type],t},t.prototype.dispatchAction=function(e,t){if(this._disposed){this.id;return}if(Y(t)||(t={silent:!!t}),PI[e.type]&&this._model){if(this[QF]){this._pendingActions.push(e);return}var n=t.silent;vI.call(this,e,n);var r=t.flush;r?this._zr.flush():r!==!1&&dc.browser.weChat&&this._throttledZrFlush(),yI.call(this,n),bI.call(this,n)}},t.prototype.updateLabelLayout=function(){jP.trigger(`series:layoutlabels`,this._model,this._api,{updatedSeries:[]})},t.prototype.appendData=function(e){if(this._disposed){this.id;return}var t=e.seriesIndex;this.getModel().getSeriesByIndex(t).appendData(e),this._scheduler.unfinished=!0,this.getZr().wakeUp()},t.internalField=function(){fI=function(e){bO(e._model);var t=e._scheduler;t.restorePipelines(e._zr,e._model),t.prepareStageTasks(),pI(e,!0),pI(e,!1),t.plan()},pI=function(e,t){for(var n=e._model,r=e._scheduler,i=t?e._componentsViews:e._chartsViews,a=t?e._componentsMap:e._chartsMap,o=e._zr,s=e._api,c=0;cX(t.get(`hoverLayerThreshold`),$M.hoverLayerThreshold)&&!dc.node&&!dc.worker;(e._usingTHL||a)&&(t.eachSeries(function(t){if(!t.preventUsingHoverLayer){var n=e._chartsMap[t.__viewId];n.__alive&&n.eachRendered(function(e){var t=e.states.emphasis;t&&t.hoverLayer!==2&&(t.hoverLayer=+!!a)})}}),e._usingTHL=a)}}function a(e,t){var n=e.get(`blendMode`)||null;t.eachRendered(function(e){e.isGroup||(e.style.blend=n)})}function o(e,t){if(!e.preventAutoZ){var n=Fy(e);t.eachRendered(function(e){return Ly(e,n.z,n.zlevel),!0})}}function s(e,t){t.eachRendered(function(e){if(!Wv(e)){var t=e.getTextContent(),n=e.getTextGuideLine();e.stateTransition&&=null,t&&t.stateTransition&&(t.stateTransition=null),n&&n.stateTransition&&(n.stateTransition=null),e.hasState()?(e.prevStates=e.currentStates,e.clearStates()):e.prevStates&&=null}})}function c(e,t){var n=e.getModel(`stateAnimation`),i=e.isAnimationEnabled(),a=n.get(`duration`),o=a>0?{duration:a,delay:n.get(`delay`),easing:n.get(`easing`)}:null;t.eachRendered(function(e){if(e.states&&e.states.emphasis){if(Wv(e))return;if(e instanceof Ap&&g_(e),e.__dirty){var t=e.prevStates;t&&e.useStates(t)}if(i){e.stateTransition=o;var n=e.getTextContent(),a=e.getTextGuideLine();n&&(n.stateTransition=o),a&&(a.stateTransition=o)}e.__dirty&&r(e)}})}EI=function(e){return new(function(t){U(n,t);function n(){return t!==null&&t.apply(this,arguments)||this}return n.prototype.getCoordinateSystems=function(){return e._coordSysMgr.getCoordinateSystems()},n.prototype.getComponentByElement=function(t){for(;t;){var n=t.__ecComponentInfo;if(n!=null)return e._model.getComponent(n.mainType,n.index);t=t.parent}},n.prototype.enterEmphasis=function(t,n){Vg(t,n),OI(e)},n.prototype.leaveEmphasis=function(t,n){Hg(t,n),OI(e)},n.prototype.enterBlur=function(t){Ug(t),OI(e)},n.prototype.leaveBlur=function(t){Wg(t),OI(e)},n.prototype.enterSelect=function(t){Gg(t),OI(e)},n.prototype.leaveSelect=function(t){Kg(t),OI(e)},n.prototype.getModel=function(){return e.getModel()},n.prototype.getViewOfComponentModel=function(t){return e.getViewOfComponentModel(t)},n.prototype.getViewOfSeriesModel=function(t){return e.getViewOfSeriesModel(t)},n.prototype.getECUpdateCycleVersion=function(){return e[$F]},n.prototype.usingTHL=function(){return e._usingTHL},n}(cg))(e)},DI=function(e){function t(e,t){for(var n=0;n=0)){sL.push(n);var o=iP.wrapStageHandler(n,i);o.__prio=t,o.__raw=n,e.push(o)}}function lL(e,t){VI[e]=t}function uL(e,t,n){var r=PP(`registerMap`);r&&r(e,t,n)}var dL=Ow;oL(UF,QN),oL(KF,eP),oL(KF,tP),oL(UF,EP),oL(KF,DP),oL(XF,MF),QI(HN),$I(IF,UN),lL(`default`,rP),rL({type:gg,event:gg,update:gg},cc),rL({type:_g,event:_g,update:_g},cc),rL({type:vg,event:xg,update:vg,action:cc,refineEvent:fL,publishNonRefinedEvent:!0}),rL({type:yg,event:xg,update:yg,action:cc,refineEvent:fL,publishNonRefinedEvent:!0}),rL({type:bg,event:xg,update:bg,action:cc,refineEvent:fL,publishNonRefinedEvent:!0});function fL(e,t,n,r){return{eventContent:{selected:r_(n),isFromClick:t.isFromClick||!1}}}ZI(`default`,{}),ZI(`dark`,SP);var pL=[],mL={registerPreprocessor:QI,registerProcessor:$I,registerPostInit:eL,registerPostUpdate:tL,registerUpdateLifecycle:nL,registerAction:rL,registerCoordinateSystem:iL,registerLayout:aL,registerVisual:oL,registerTransform:dL,registerLoading:lL,registerMap:uL,registerImpl:NP,PRIORITY:ZF,ComponentModel:ow,ComponentView:KN,SeriesModel:lT,ChartView:rE,registerComponentModel:function(e){ow.registerClass(e)},registerComponentView:function(e){KN.registerClass(e)},registerSeriesModel:function(e){lT.registerClass(e)},registerChartView:function(e){rE.registerClass(e)},registerCustomSeries:function(e,t){IP(e,t)},registerSubTypeDefaulter:function(e,t){ow.registerSubTypeDefaulter(e,t)},registerPainter:function(e,t){JM(e,t)}};function hL(e){if(q(e)){G(e,function(e){hL(e)});return}Ts(pL,e)>=0||(pL.push(e),Is(e)&&(e={install:e}),e.install(mL))}var gL=function(){function e(){}return e.prototype.needIncludeZero=function(){return!this.option.scale},e.prototype.getCoordSysModel=function(){},e}(),_L=function(e){U(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.getCoordSysModel=function(){return this.getReferringComponents(`grid`,Dh).models[0]},t.type=`cartesian2dAxis`,t}(ow);Ds(_L,gL);var vL={show:!0,z:0,inverse:!1,name:``,nameLocation:`end`,nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:`...`,placeholder:`.`},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:`auto`,onZeroAxisIndex:null,lineStyle:{color:Q.color.axisLine,width:1,type:`solid`},symbol:[`none`,`none`],symbolSize:[10,15],breakLine:!0},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12,color:Q.color.axisLabel,textMargin:[0,3]},splitLine:{show:!0,showMinLine:!0,showMaxLine:!0,lineStyle:{color:Q.color.axisSplitLine,width:1,type:`solid`}},splitArea:{show:!1,areaStyle:{color:[Q.color.backgroundTint,Q.color.backgroundTransparent]}},breakArea:{show:!0,itemStyle:{color:Q.color.neutral00,borderColor:Q.color.border,borderWidth:1,borderType:[3,3],opacity:.6},zigzagAmplitude:4,zigzagMinSpan:4,zigzagMaxSpan:20,zigzagZ:100,expandOnClick:!0},breakLabelLayout:{moveOverlap:`auto`}},yL=Ss({boundaryGap:!0,deduplication:null,jitter:0,jitterOverlap:!0,jitterMargin:2,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:`auto`,show:`auto`},axisLabel:{interval:`auto`}},vL),bL=Ss({boundaryGap:[0,0],axisLine:{show:`auto`},axisTick:{show:`auto`},splitNumber:5,minorTick:{show:!1,splitNumber:5,length:3,lineStyle:{}},minorSplitLine:{show:!1,lineStyle:{color:Q.color.axisMinorSplitLine,width:1}}},vL),xL={category:yL,value:bL,time:Ss({splitNumber:6,axisLabel:{rich:{primary:{fontWeight:`bold`}}},splitLine:{show:!1}},bL),log:ws({logBase:10},bL)};function SL(e,t,n,r){G(uD,function(i,a){var o=Ss(Ss({},xL[a],!0),r,!0),s=function(e){U(n,e);function n(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t+`Axis.`+a,n}return n.prototype.mergeDefaultAndTheme=function(e,t){var n=tw(this),r=n?rw(e):{};Ss(e,t.getTheme().get(a+`Axis`)),Ss(e,this.getDefaultOption()),e.type=CL(e),n&&nw(e,r,n)},n.prototype.optionUpdated=function(){this.option.type===`category`&&(this.__ordinalMeta=hE.createByAxisModel(this))},n.prototype.getCategories=function(e){var t=this.option;if(t.type===`category`)return e?t.data:this.__ordinalMeta.categories},n.prototype.getOrdinalMeta=function(){return this.__ordinalMeta},n.prototype.updateAxisBreaks=function(e){var t=hk();return t?t.updateModelAxisBreak(this,e):{breaks:[]}},n.type=t+`Axis.`+a,n.defaultOption=o,n}(n);e.registerComponentModel(s)}),e.registerSubTypeDefaulter(t+`Axis`,CL)}function CL(e){return e.type||(e.data?`category`:`value`)}var wL=function(){function e(e){this.type=`cartesian`,this._dimList=[],this._axes={},this.name=e||``}return e.prototype.getAxis=function(e){return this._axes[e]},e.prototype.getAxes=function(){return K(this._dimList,function(e){return this._axes[e]},this)},e.prototype.getAxesByScale=function(e){return e=e.toLowerCase(),As(this.getAxes(),function(t){return t.scale.type===e})},e.prototype.addAxis=function(e){var t=e.dim;this._axes[t]=e,this._dimList.push(t)},e}(),TL=[`x`,`y`];function EL(e){return(e.type===`interval`||e.type===`time`)&&!eC(e)}var DL=function(e){U(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.type=kA,t.dimensions=TL,t}return t.prototype.calcAffineTransform=function(){this._transform=this._invTransform=null;var e=this.getAxis(`x`).scale,t=this.getAxis(`y`).scale;if(EL(e)&&EL(t)){var n=SE(e,null),r=SE(t,null),i=this.dataToPoint([n[0],r[0]]),a=this.dataToPoint([n[1],r[1]]),o=n[1]-n[0],s=r[1]-r[0];if(o&&s){var c=(a[0]-i[0])/o,l=(a[1]-i[1])/s,u=i[0]-n[0]*c,d=i[1]-r[0]*l,f=this._transform=[c,0,0,l,u,d];this._invTransform=Gc([],f)}}},t.prototype.getBaseAxis=function(){return this.getAxesByScale(`ordinal`)[0]||this.getAxesByScale(`time`)[0]||this.getAxis(`x`)},t.prototype.containPoint=function(e){var t=this.getAxis(`x`),n=this.getAxis(`y`);return t.contain(t.toLocalCoord(e[0]))&&n.contain(n.toLocalCoord(e[1]))},t.prototype.containData=function(e){return this.getAxis(`x`).containData(e[0])&&this.getAxis(`y`).containData(e[1])},t.prototype.containZone=function(e,t){var n=this.dataToPoint(e),r=this.dataToPoint(t),i=this.getArea(),a=new Sl(n[0],n[1],r[0]-n[0],r[1]-n[1]);return i.intersect(a)},t.prototype.dataToPoint=function(e,t,n){n||=[];var r=e[0],i=e[1];if(this._transform&&r!=null&&isFinite(r)&&i!=null&&isFinite(i))return al(n,e,this._transform);var a=this.getAxis(`x`),o=this.getAxis(`y`);return n[0]=a.toGlobalCoord(a.dataToCoord(r,t)),n[1]=o.toGlobalCoord(o.dataToCoord(i,t)),n},t.prototype.clampData=function(e,t){var n=this.getAxis(`x`).scale,r=this.getAxis(`y`).scale,i=n.getExtent(),a=r.getExtent(),o=n.parse(e[0]),s=r.parse(e[1]);return t||=[],t[0]=Math.min(Math.max(Math.min(i[0],i[1]),o),Math.max(i[0],i[1])),t[1]=Math.min(Math.max(Math.min(a[0],a[1]),s),Math.max(a[0],a[1])),t},t.prototype.pointToData=function(e,t,n){if(n||=[],this._invTransform)return al(n,e,this._invTransform);var r=this.getAxis(`x`),i=this.getAxis(`y`);return n[0]=r.coordToData(r.toLocalCoord(e[0]),t),n[1]=i.coordToData(i.toLocalCoord(e[1]),t),n},t.prototype.getOtherAxis=function(e){return this.getAxis(e.dim===`x`?`y`:`x`)},t.prototype.getArea=function(e){e||=0;var t=this.getAxis(`x`).getGlobalExtent(),n=this.getAxis(`y`).getGlobalExtent(),r=Math.min(t[0],t[1])-e,i=Math.min(n[0],n[1])-e;return new Sl(r,i,Math.max(t[0],t[1])-r+e,Math.max(n[0],n[1])-i+e)},t}(wL);function OL(e,t){var n=e.scale,r=e.model,i=gA(n,r,r.ecModel,e,null),a=jE(n),o=jE(t)?t.intervalStub:t,s=a?n.intervalStub:n,c=n.base,l=o.getTicks(),u=o.getTicks({expandToNicedExtent:!0}),d=l.length-1,f,p,m;if(d===1)f=p=0,m=1;else if(d===2){var h=mm(l[0].value-l[1].value),g=mm(l[1].value-l[2].value);f=p=0,h===g?m=2:(m=1,h=C[1])return!0})):b[1]?(T=C[1],A(function(){if(ee(),k=Om(O-E*m,D),j(),w<=C[0])return!0})):A(function(){k=Om(_m(C[0]/E)*E,D),O=Om(gm(C[1]/E)*E,D);var e=hm((O-k)/E);if(e<=m){var t=m-e,n=void 0,r=i.incl0||a;if(r&&C[0]===0)n=[0,t];else if(r&&C[1]===0)n=[t,0];else{var o=gm(t/2);n=t%2==0?[o,o]:w+T=C[1])return!0}})}ED(n,b,S,[w,T],x,{interval:E,intervalCount:m,intervalPrecision:D,niceExtent:[k,O]})}function kL(e,t){var n=jE(e),r=n?e.intervalStub:e,i=t.fixMinMax||[],a=n?e.getExtent():null,o=r.getExtent(),s=LE(o,i,t.rawExtentResult);r.setExtent(s[0],s[1]),s=r.getExtent();var c=n?jL(r,t):AL(r,t),l=c.intervalPrecision,u=c.interval,d=t.userInterval;d!=null&&(c.interval=d,c.intervalPrecision=PE(d)),i[0]||(s[0]=Om(gm(s[0]/u)*u,l)),i[1]||(s[1]=Om(_m(s[1]/u)*u,l)),d!=null&&(c.niceExtent=s.slice()),ED(e,i,o,s,a,c)}function AL(e,t){var n=zE(t.splitNumber,5),r=wE(e),i=t.minInterval,a=t.maxInterval,o=Vm(r/n,!0);i!=null&&oa&&(o=a);var s=PE(o),c=e.getExtent(),l=[Om(_m(c[0]/o)*o,s),Om(gm(c[1]/o)*o,s)];return{interval:o,intervalPrecision:s,niceExtent:l}}function jL(e,t){var n=zE(t.splitNumber,10),r=e.getExtent(),i=wE(e),a=pm(zm(i),1);n/i*a<=.5&&(a*=10);var o=PE(a),s=[Om(_m(r[0]/a)*a,o),Om(gm(r[1]/a)*a,o)];return{intervalPrecision:o,interval:a,niceExtent:s}}function ML(e){var t=e.scale,n=e.model,r=n.axis,i=n.ecModel;NL(t,n,r,i,null)}function NL(e,t,n,r,i){var a=gA(e,t,r,n,i),o=kE(e)||AE(e);PL(e,{splitNumber:t.get(`splitNumber`),fixMinMax:a.fixMM,userInterval:t.get(`interval`),minInterval:o?t.get(`minInterval`):null,maxInterval:o?t.get(`maxInterval`):null,rawExtentResult:a}),n&&r&&vA(n,e,a,r)}function PL(e,t){FL[e.type](e,t)}var FL={interval:kL,log:kL,time:nD,ordinal:cc},IL=[[3,1],[0,2]],LL=function(){function e(e,t,n){this.type=`grid`,this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this.axisPointerEnabled=!0,this.dimensions=TL,this._initCartesian(e,t,n),this.model=e}return e.prototype.getRect=function(){return this._rect},e.prototype.update=function(e,t){var n=this._axesMap;G(this._axesList,function(e){uA(e,1);var t=e.scale;ME(t)&&t.setSortInfo(e.model.get(`categorySortInfo`))});function r(e){for(var t=Ms(e),n=[],r=t.length-1;r>=0;r--){var i=e[+t[r]];i.__alignTo?n.push(i):ML(i)}G(n,function(e){HL(e,e.__alignTo)?ML(e):OL(e,e.__alignTo.scale)})}r(n.x),r(n.y);var i={};G(n.x,function(e){zL(n,`y`,e,i)}),G(n.y,function(e){zL(n,`x`,e,i)}),this.resize(this.model,t)},e.prototype.resize=function(e,t,n){var r=ew(e,t),i=this._rect=QC(e.getBoxLayoutParams(),r.refContainer),a=this._axesMap,o=this._coordsList,s=e.get(`containLabel`);if(WL(a,i),!n){var c=JL(i,o,a,s,t),l=void 0;if(s)KL?(KL(this._axesList,i),WL(a,i)):l=qL(i.clone(),`axisLabel`,null,i,a,c,r);else{var u=XL(e,i,r),d=u.outerBoundsRect,f=u.parsedOuterBoundsContain,p=u.outerBoundsClamp;d&&(l=qL(d,f,p,i,a,c,r))}YL(i,a,$D.determine,null,l,r),G(this._coordsList,function(e){e.calcAffineTransform()})}},e.prototype.getAxis=function(e,t){var n=this._axesMap[e];if(n!=null)return n[t||0]},e.prototype.getAxes=function(){return this._axesList.slice()},e.prototype.getCartesian=function(e,t){if(e!=null&&t!=null){var n=`x`+e+`y`+t;return this._coordsMap[n]}Y(e)&&(t=e.yAxisIndex,e=e.xAxisIndex);for(var r=0,i=this._coordsList;r=0;i--){var a=e[+t[i]];OE(a.scale)&&wD(a.model,a.type,!0)==null&&(a.model.get(`alignTicks`)&&a.model.get(`interval`)==null?r.push(a):n=a)}n||=r.pop(),n&&G(r,function(e){e.__alignTo=n})}function HL(e,t){return eC(e.scale)||eC(t.scale)||t.scale.getTicks().length<2}function UL(e,t){var n=e.getExtent(),r=n[0]+n[1];e.toGlobalCoord=e.dim===`x`?function(e){return e+t}:function(e){return r-e+t},e.toLocalCoord=e.dim===`x`?function(e){return e-t}:function(e){return r-e+t}}function WL(e,t){G(e.x,function(e){return GL(e,t.x,t.width)}),G(e.y,function(e){return GL(e,t.y,t.height)})}function GL(e,t,n){var r=[0,n],i=+!!e.inverse;e.setExtent(r[i],r[1-i]),UL(e,t)}var KL;function qL(e,t,n,r,i,a,o){YL(r,i,$D.estimate,t,!1,o);var s=[0,0,0,0];l(0),l(1),u(r,0,NaN),u(r,1,NaN);var c=js(s,function(e){return e>0})==null;return Ty(r,s,!0,!0,n),WL(i,r),c;function l(e){G(i[Zv[e]],function(t){if(CD(t.model)){var n=a.ensureRecord(t.model),r=n.labelInfoList;if(r)for(var i=0;i0&&!Ws(t)&&t>1e-4&&(e/=t),e}}function JL(e,t,n,r,i){var a=new Sk(ZL);return G(n,function(n){return G(n,function(n){if(CD(n.model)){var o=!r;n.axisBuilder=$k(e,t,n.model,i,a,o)}})}),a}function YL(e,t,n,r,i,a){var o=n===$D.determine;G(t,function(t){return G(t,function(t){CD(t.model)&&(eA(t.axisBuilder,e,t.model),t.axisBuilder.build(o?{axisTickLabelDetermine:!0}:{axisTickLabelEstimate:!0},{noPxChange:i}))})});var s={x:0,y:0};c(0),c(1);function c(t){s[Zv[1-t]]=e[Qv[t]]<=a.refContainer[Qv[t]]*.5?0:1-t==1?2:1}G(t,function(e,t){return G(e,function(e){CD(e.model)&&((r===`all`||o)&&e.axisBuilder.build({axisName:!0},{nameMarginLevel:s[t]}),o&&e.axisBuilder.build({axisLine:!0}))})})}function XL(e,t,n){var r,i=e.get(`outerBoundsMode`,!0);i===`same`?r=t.clone():(i==null||i===`auto`)&&(r=QC(e.get(`outerBounds`,!0)||DA,n.refContainer));var a=e.get(`outerBoundsContain`,!0),o=a==null||a===`auto`||Ts([`all`,`axisLabel`],a)<0?`all`:a,s=[Em(X(e.get(`outerBoundsClampWidth`,!0),OA[0]),t.width),Em(X(e.get(`outerBoundsClampHeight`,!0),OA[1]),t.height)];return{outerBoundsRect:r,parsedOuterBoundsContain:o,outerBoundsClamp:s}}var ZL=function(e,t,n,r,i,a){var o=n.axis.dim===`x`?`y`:`x`;Ek(e,t,n,r,i,a),SD(e.nameLocation)||G(t.recordMap[o],function(e){e&&e.labelInfoList&&e.dirVec&&Ok(e.labelInfoList,e.dirVec,r,i)})};function QL(e,t){var n={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return $L(n,e,t),n.seriesInvolved&&tR(n,e),n}function $L(e,t,n){var r=t.getComponent(`tooltip`),i=t.getComponent(`axisPointer`),a=i.get(`link`,!0)||[],o=[];G(n.getCoordinateSystems(),function(n){if(!n.axisPointerEnabled)return;var s=cR(n.model),c=e.coordSysAxesInfo[s]={};e.coordSysMap[s]=n;var l=n.model.getModel(`tooltip`,r);if(G(n.getAxes(),Fs(p,!1,null)),n.getTooltipAxes&&r&&l.get(`show`)){var u=l.get(`trigger`)===`axis`,d=l.get([`axisPointer`,`type`])===`cross`,f=n.getTooltipAxes(l.get([`axisPointer`,`axis`]));(u||d)&&G(f.baseAxes,Fs(p,!d||`cross`,u)),d&&G(f.otherAxes,Fs(p,`cross`,!1))}function p(r,s,u){var d=u.model.getModel(`axisPointer`,i),f=d.get(`show`);if(f&&(f!==`auto`||r||sR(d))){s??=d.get(`triggerTooltip`),d=r?eR(u,l,i,t,r,s):d;var p=d.get(`snap`),m=d.get(`triggerEmphasis`),h=cR(u.model),g=s||p||u.type===`category`,_=e.axesInfo[h]={key:h,axis:u,coordSys:n,axisPointerModel:d,triggerTooltip:s,triggerEmphasis:m,involveSeries:g,snap:p,useHandle:sR(d),seriesModels:[],linkGroup:null};c[h]=_,e.seriesInvolved=e.seriesInvolved||g;var v=nR(a,u);if(v!=null){var y=o[v]||(o[v]={axesInfo:{}});y.axesInfo[h]=_,y.mapper=a[v].mapper,_.linkGroup=y}}}})}function eR(e,t,n,r,i,a){var o=t.getModel(`axisPointer`),s=[`type`,`snap`,`lineStyle`,`shadowStyle`,`label`,`animation`,`animationDurationUpdate`,`animationEasingUpdate`,`z`],c={};G(s,function(e){c[e]=xs(o.get(e))}),c.snap=e.type!==`category`&&!!a,o.get(`type`)===`cross`&&(c.type=`line`);var l=c.label||={};if(l.show??=!1,i===`cross`&&(l.show=o.get([`label`,`show`])??!0,!a)){var u=c.lineStyle=o.get(`crossStyle`);u&&ws(l,u.textStyle)}return e.model.getModel(`axisPointer`,new _b(c,n,r))}function tR(e,t){t.eachSeries(function(t){var n=t.coordinateSystem,r=t.get([`tooltip`,`trigger`],!0),i=t.get([`tooltip`,`show`],!0);n&&n.model&&r!==`none`&&r!==!1&&r!==`item`&&i!==!1&&t.get([`axisPointer`,`show`],!0)!==!1&&G(e.coordSysAxesInfo[cR(n.model)],function(e){var r=e.axis;n.getAxis(r.dim)===r&&(e.seriesModels.push(t),e.seriesDataCount??=0,e.seriesDataCount+=t.getData().count())})})}function nR(e,t){for(var n=t.model,r=t.dim,i=0;i=0||e===t}function iR(e){var t=aR(e);if(t){var n=t.axisPointerModel,r=t.axis.scale,i=n.option,a=n.get(`status`),o=n.get(`value`);o!=null&&(o=r.parse(o));var s=sR(n);a??(i.status=s?`show`:`hide`);var c=r.getExtent();(o==null||o>c[1])&&(o=c[1]),o0&&(y[0]=-y[0],y[1]=-y[1]);var x=v[0]<0?-1:1;if(r.__position!==`start`&&r.__position!==`end`){var S=-Math.atan2(v[1],v[0]);l[0].8?`left`:u[0]<-.8?`right`:`center`,p=u[1]>.8?`top`:u[1]<-.8?`bottom`:`middle`;break;case`start`:r.x=-u[0]*h+c[0],r.y=-u[1]*g+c[1],f=u[0]>.8?`right`:u[0]<-.8?`left`:`center`,p=u[1]>.8?`bottom`:u[1]<-.8?`top`:`middle`;break;case`insideStartTop`:case`insideStart`:case`insideStartBottom`:r.x=h*x+c[0],r.y=c[1]+C,f=v[0]<0?`right`:`left`,r.originX=-h*x,r.originY=-C;break;case`insideMiddleTop`:case`insideMiddle`:case`insideMiddleBottom`:case`middle`:r.x=b[0],r.y=b[1]+C,f=`center`,r.originY=-C;break;case`insideEndTop`:case`insideEnd`:case`insideEndBottom`:r.x=-h*x+l[0],r.y=l[1]+C,f=v[0]>=0?`right`:`left`,r.originX=h*x,r.originY=-C}r.scaleX=r.scaleY=i,r.setStyle({verticalAlign:r.__verticalAlign||p,align:r.__align||f})}},t}(z_),PR=function(){function e(e){this.group=new z_,this._LineCtor=e||NR}return e.prototype.updateData=function(e){var t=this;this._progressiveEls=null;var n=this,r=n.group,i=n._lineData;n._lineData=e,i||r.removeAll();var a=IR(e);e.diff(i).add(function(n){t._doAdd(e,n,a)}).update(function(n,r){t._doUpdate(i,e,r,n,a)}).remove(function(e){r.remove(i.getItemGraphicEl(e))}).execute()},e.prototype.updateLayout=function(){var e=this._lineData;e&&e.eachItemGraphicEl(function(t,n){t.updateLayout(e,n)},this)},e.prototype.incrementalPrepareUpdate=function(e){this._seriesScope=IR(e),this._lineData=null,this.group.removeAll()},e.prototype.incrementalUpdate=function(e,t,n){this._progressiveEls=[];function r(e){!e.isGroup&&!FR(e)&&(e.incremental=n,e.ensureState(`emphasis`).hoverLayer=2)}for(var i=e.start;i0}function IR(e){var t=e.hostModel,n=t.getModel(`emphasis`);return{lineStyle:t.getModel(`lineStyle`).getLineStyle(),emphasisLineStyle:n.getModel([`lineStyle`]).getLineStyle(),blurLineStyle:t.getModel([`blur`,`lineStyle`]).getLineStyle(),selectLineStyle:t.getModel([`select`,`lineStyle`]).getLineStyle(),emphasisDisabled:n.get(`disabled`),blurScope:n.get(`blurScope`),focus:n.get(`focus`),labelStatesModels:qy(t)}}function LR(e){return isNaN(e[0])||isNaN(e[1])}function RR(e){return e&&!LR(e[0])&&!LR(e[1])}var zR=function(){function e(){this.angle=0,this.width=10,this.r=10,this.x=0,this.y=0}return e}(),BR=function(e){U(t,e);function t(t){var n=e.call(this,t)||this;return n.type=`pointer`,n}return t.prototype.getDefaultShape=function(){return new zR},t.prototype.buildPath=function(e,t){var n=Math.cos,r=Math.sin,i=t.r,a=t.width,o=t.angle,s=t.x-n(o)*a*(a>=i/3?1:2),c=t.y-r(o)*a*(a>=i/3?1:2);o=t.angle-Math.PI/2,e.moveTo(s,c),e.lineTo(t.x+n(o)*a,t.y+r(o)*a),e.lineTo(t.x+n(t.angle)*i,t.y+r(t.angle)*i),e.lineTo(t.x-n(o)*a,t.y-r(o)*a),e.lineTo(s,c)},t}(Ap);function VR(e,t){var n=e.get(`center`),r=t.getWidth(),i=t.getHeight(),a=Math.min(r,i);return{cx:wm(n[0],t.getWidth()),cy:wm(n[1],t.getHeight()),r:wm(e.get(`radius`),a/2)}}function HR(e,t){var n=e==null?``:e+``;return t&&(J(t)?n=t.replace(`{value}`,n):Is(t)&&(n=t(e))),n}var UR=function(e){U(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.render=function(e,t,n){this.group.removeAll();var r=e.get([`axisLine`,`lineStyle`,`color`]),i=VR(e,n);this._renderMain(e,t,n,r,i),this._data=e.getData()},t.prototype.dispose=function(){},t.prototype._renderMain=function(e,t,n,r,i){var a=this.group,o=e.get(`clockwise`),s=-e.get(`startAngle`)/180*Math.PI,c=-e.get(`endAngle`)/180*Math.PI,l=e.getModel(`axisLine`),u=l.get(`roundCap`)?ZA:ov,d=l.get(`show`),f=l.getModel(`lineStyle`),p=f.get(`width`),m=[s,c];ip(m,!o),s=m[0],c=m[1];for(var h=c-s,g=s,_=[],v=0;d&&v=e&&(t===0?0:r[t-1][0])Math.PI/2&&(I+=Math.PI)):F===`tangential`?I=-S-Math.PI/2:Rs(F)&&(I=F*Math.PI/180),I===0?l.add(new Yp({style:Jy(_,{text:N,x:te,y:P,verticalAlign:k<-.8?`top`:k>.8?`bottom`:`middle`,align:O<-.4?`left`:O>.4?`right`:`center`},{inheritColor:ee}),silent:!0})):l.add(new Yp({style:Jy(_,{text:N,x:te,y:P,verticalAlign:`middle`,align:`center`},{inheritColor:ee}),silent:!0,originX:te,originY:P,rotation:I}))}if(g.get(`show`)&&A!==v){var j=g.get(`distance`);j=j?j+c:c;for(var L=0;L<=y;L++){O=Math.cos(S),k=Math.sin(S);var R=new _v({shape:{x1:O*(f-j)+u,y1:k*(f-j)+d,x2:O*(f-x-j)+u,y2:k*(f-x-j)+d},silent:!0,style:E});E.stroke===`auto`&&R.setStyle({stroke:r((A+L/y)/v)}),l.add(R),S+=w}S-=w}else S+=C}},t.prototype._renderPointer=function(e,t,n,r,i,a,o,s,c){var l=this.group,u=this._data,d=this._progressEls,f=[],p=e.get([`pointer`,`show`]),m=e.getModel(`progress`),h=m.get(`show`),g=e.getData(),_=g.mapDimension(`value`),v=+e.get(`min`),y=+e.get(`max`),b=[v,y],x=[a,o];function S(t,n){var r=g.getItemModel(t).getModel(`pointer`),a=wm(r.get(`width`),i.r),o=wm(r.get(`length`),i.r),s=e.get([`pointer`,`icon`]),c=r.get(`offsetCenter`),l=wm(c[0],i.r),u=wm(c[1],i.r),d=r.get(`keepAspect`),f=s?wT(s,l-a/2,u-o,a,o,null,d):new BR({shape:{angle:-Math.PI/2,width:a,r:o,x:l,y:u}});return f.rotation=-(n+Math.PI/2),f.x=i.cx,f.y=i.cy,f}function C(e,t){var n=m.get(`roundCap`)?ZA:ov,r=m.get(`overlap`),o=r?m.get(`width`):c/g.count(),l=r?i.r-o:i.r-(e+1)*o,u=r?i.r:i.r-e*o,d=new n({shape:{startAngle:a,endAngle:t,cx:i.cx,cy:i.cy,clockwise:s,r0:l,r:u}});return r&&(d.z2=Cm(g.get(_,e),[v,y],[100,0],!0)),d}(h||p)&&(g.diff(u).add(function(t){var n=g.get(_,t);if(p){var r=S(t,a);Uv(r,{rotation:-((isNaN(+n)?x[0]:Cm(n,b,x,!0))+Math.PI/2)},e),l.add(r),g.setItemGraphicEl(t,r)}if(h){var i=C(t,a);Uv(i,{shape:{endAngle:Cm(n,b,x,m.get(`clip`))}},e),l.add(i),Qh(e.seriesIndex,g.dataType,t,i),f[t]=i}}).update(function(t,n){var r=g.get(_,t);if(p){var i=u.getItemGraphicEl(n),o=i?i.rotation:a,s=S(t,o);s.rotation=o,Hv(s,{rotation:-((isNaN(+r)?x[0]:Cm(r,b,x,!0))+Math.PI/2)},e),l.add(s),g.setItemGraphicEl(t,s)}if(h){var c=d[n],v=C(t,c?c.shape.endAngle:a);Hv(v,{shape:{endAngle:Cm(r,b,x,m.get(`clip`))}},e),l.add(v),Qh(e.seriesIndex,g.dataType,t,v),f[t]=v}}).execute(),g.each(function(e){var t=g.getItemModel(e),n=t.getModel(`emphasis`),i=n.get(`focus`),a=n.get(`blurScope`),o=n.get(`disabled`),s=r(Cm(g.get(_,e),b,[0,1],!0));if(p){var c=g.getItemGraphicEl(e),l=g.getItemVisual(e,`style`),u=l.fill;if(c instanceof Ip){var d=c.style;c.useStyle(W({image:d.image,x:d.x,y:d.y,width:d.width,height:d.height},l))}else c.useStyle(l),c.type!==`pointer`&&c.setColor(u);c.setStyle(t.getModel([`pointer`,`itemStyle`]).getItemStyle()),c.style.fill===`auto`&&c.setStyle(`fill`,s),c.z2EmphasisLift=0,u_(c,t),o_(c,i,a,o)}if(h){var m=f[e];m.useStyle(g.getItemVisual(e,`style`)),m.setStyle(t.getModel([`progress`,`itemStyle`]).getItemStyle()),m.style.fill===`auto`&&m.setStyle(`fill`,s),m.z2EmphasisLift=0,u_(m,t),o_(m,i,a,o)}}),this._progressEls=f)},t.prototype._renderAnchor=function(e,t){var n=e.getModel(`anchor`);if(n.get(`show`)){var r=n.get(`size`),i=n.get(`icon`),a=n.get(`offsetCenter`),o=n.get(`keepAspect`),s=wT(i,t.cx-r/2+wm(a[0],t.r),t.cy-r/2+wm(a[1],t.r),r,r,null,o);s.z2=+!!n.get(`showAbove`),s.setStyle(n.getModel(`itemStyle`).getItemStyle()),this.group.add(s)}},t.prototype._renderTitleAndDetail=function(e,t,n,r,i){var a=this,o=e.getData(),s=o.mapDimension(`value`),c=+e.get(`min`),l=+e.get(`max`),u=new z_,d=[],f=[],p=e.isAnimationEnabled(),m=e.get([`pointer`,`showAbove`]);o.diff(this._data).add(function(e){d[e]=new Yp({silent:!0}),f[e]=new Yp({silent:!0})}).update(function(e,t){d[e]=a._titleEls[t],f[e]=a._detailEls[t]}).execute(),o.each(function(t){var n=o.getItemModel(t),a=o.get(s,t),h=new z_,g=r(Cm(a,[c,l],[0,1],!0)),_=n.getModel(`title`);if(_.get(`show`)){var v=_.get(`offsetCenter`),y=i.cx+wm(v[0],i.r),b=i.cy+wm(v[1],i.r),x=d[t];x.attr({z2:m?0:2,style:Jy(_,{x:y,y:b,text:o.getName(t),align:`center`,verticalAlign:`middle`},{inheritColor:g})}),h.add(x)}var S=n.getModel(`detail`);if(S.get(`show`)){var C=S.get(`offsetCenter`),w=i.cx+wm(C[0],i.r),T=i.cy+wm(C[1],i.r),E=wm(S.get(`width`),i.r),D=wm(S.get(`height`),i.r),O=e.get([`progress`,`show`])?o.getItemVisual(t,`style`).fill:g,x=f[t],k=S.get(`formatter`);x.attr({z2:m?0:2,style:Jy(S,{x:w,y:T,text:HR(a,k),width:isNaN(E)?null:E,height:isNaN(D)?null:D,align:`center`,verticalAlign:`middle`},{inheritColor:O})}),ib(x,{normal:S},a,function(e){return HR(e,k)}),p&&ab(x,t,o,e,{getFormattedLabel:function(e,t,n,r,i,o){return HR(o?o.interpolatedValue:a,k)}}),h.add(x)}u.add(h)}),this.group.add(u),this._titleEls=d,this._detailEls=f},t.type=`gauge`,t}(rE),WR=function(e){U(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n.visualStyleAccessPath=`itemStyle`,n}return t.prototype.getInitialData=function(e,t){return jj(this,[`value`])},t.type=`series.gauge`,t.defaultOption={z:2,colorBy:`data`,center:[`50%`,`50%`],legendHoverLink:!0,radius:`75%`,startAngle:225,endAngle:-45,clockwise:!0,min:0,max:100,splitNumber:10,axisLine:{show:!0,roundCap:!1,lineStyle:{color:[[1,Q.color.neutral10]],width:10}},progress:{show:!1,overlap:!0,width:10,roundCap:!1,clip:!0},splitLine:{show:!0,length:10,distance:10,lineStyle:{color:Q.color.axisTick,width:3,type:`solid`}},axisTick:{show:!0,splitNumber:5,length:6,distance:10,lineStyle:{color:Q.color.axisTickMinor,width:1,type:`solid`}},axisLabel:{show:!0,distance:15,color:Q.color.axisLabel,fontSize:12,rotate:0},pointer:{icon:null,offsetCenter:[0,0],show:!0,showAbove:!0,length:`60%`,width:6,keepAspect:!1},anchor:{show:!1,showAbove:!1,size:6,icon:`circle`,offsetCenter:[0,0],keepAspect:!1,itemStyle:{color:Q.color.neutral00,borderWidth:0,borderColor:Q.color.theme[0]}},title:{show:!0,offsetCenter:[0,`20%`],color:Q.color.secondary,fontSize:16,valueAnimation:!1},detail:{show:!0,backgroundColor:Q.color.transparent,borderWidth:0,borderColor:Q.color.neutral40,width:100,height:null,padding:[5,10],offsetCenter:[0,`40%`],color:Q.color.primary,fontSize:30,fontWeight:`bold`,lineHeight:30,valueAnimation:!1}},t}(lT);function GR(e){e.registerChartView(UR),e.registerSeriesModel(WR)}var KR=Ch(),qR=xs,JR=Ps,YR=function(){function e(){this._dragging=!1,this.animationThreshold=15}return e.prototype.render=function(e,t,n,r){var i=t.get(`value`),a=t.get(`status`);if(this._axisModel=e,this._axisPointerModel=t,this._api=n,r||this._lastValue!==i||this._lastStatus!==a){this._lastValue=i,this._lastStatus=a;var o=this._group,s=this._handle;if(!a||a===`hide`){o&&o.hide(),s&&s.hide();return}o&&o.show(),s&&s.show();var c={};this.makeElOption(c,i,e,t,n);var l=c.graphicKey;l!==this._lastGraphicKey&&this.clear(n),this._lastGraphicKey=l;var u=this._moveAnimation=this.determineAnimation(e,t);if(!o)o=this._group=new z_,this.createPointerEl(o,c,e,t),this.createLabelEl(o,c,e,t),n.getZr().add(o);else{var d=Fs(XR,t,u);this.updatePointerEl(o,c,d),this.updateLabelEl(o,c,d,t)}ez(o,t,!0),this._renderHandle(i)}},e.prototype.remove=function(e){this.clear(e)},e.prototype.dispose=function(e){this.clear(e)},e.prototype.determineAnimation=function(e,t){var n=t.get(`animation`),r=e.axis,i=r.type===`category`,a=t.get(`snap`);if(!a&&!i)return!1;if(n===`auto`||n==null){var o=this.animationThreshold;if(i&&GO(r).w>o)return!0;if(a){var s=aR(e).seriesDataCount,c=r.getExtent();return Math.abs(c[0]-c[1])/s>o}return!1}return n===!0},e.prototype.makeElOption=function(e,t,n,r,i){},e.prototype.createPointerEl=function(e,t,n,r){var i=t.pointer;if(i){var a=KR(e).pointerEl=new Yv[i.type](qR(t.pointer));e.add(a)}},e.prototype.createLabelEl=function(e,t,n,r){if(t.label){var i=KR(e).labelEl=new Yp(qR(t.label));e.add(i),QR(i,r)}},e.prototype.updatePointerEl=function(e,t,n){var r=KR(e).pointerEl;r&&t.pointer&&(r.setStyle(t.pointer.style),n(r,{shape:t.pointer.shape}))},e.prototype.updateLabelEl=function(e,t,n,r){var i=KR(e).labelEl;i&&(i.setStyle(t.label.style),n(i,{x:t.label.x,y:t.label.y}),QR(i,r))},e.prototype._renderHandle=function(e){if(!this._dragging&&this.updateHandleTransform){var t=this._axisPointerModel,n=this._api.getZr(),r=this._handle,i=t.getModel(`handle`),a=t.get(`status`);if(!i.get(`show`)||!a||a===`hide`){r&&n.remove(r),this._handle=null;return}var o;this._handle||(o=!0,r=this._handle=by(i.get(`icon`),{cursor:`move`,draggable:!0,onmousemove:function(e){Wj(e.event)},onmousedown:JR(this._onHandleDragMove,this,0,0),drift:JR(this._onHandleDragMove,this),ondragend:JR(this._onHandleDragEnd,this)}),n.add(r)),ez(r,t,!1),r.setStyle(i.getItemStyle(null,[`color`,`borderColor`,`borderWidth`,`opacity`,`shadowColor`,`shadowBlur`,`shadowOffsetX`,`shadowOffsetY`]));var s=i.get(`size`);q(s)||(s=[s,s]),r.scaleX=s[0]/2,r.scaleY=s[1]/2,JA(this,`_doDispatchAxisPointer`,i.get(`throttle`)||0,`fixRate`),this._moveHandleToValue(e,o)}},e.prototype._moveHandleToValue=function(e,t){XR(this._axisPointerModel,!t&&this._moveAnimation,this._handle,$R(this.getHandleTransform(e,this._axisModel,this._axisPointerModel)))},e.prototype._onHandleDragMove=function(e,t){var n=this._handle;if(n){this._dragging=!0;var r=this.updateHandleTransform($R(n),[e,t],this._axisModel,this._axisPointerModel);this._payloadInfo=r,n.stopAnimation(),n.attr($R(r)),KR(n).lastProp=null,this._doDispatchAxisPointer()}},e.prototype._doDispatchAxisPointer=function(){if(this._handle){var e=this._payloadInfo,t=this._axisModel;this._api.dispatchAction({type:`updateAxisPointer`,x:e.cursorPoint[0],y:e.cursorPoint[1],tooltipOption:e.tooltipOption,axesInfo:[{axisDim:t.axis.dim,axisIndex:t.componentIndex}]})}},e.prototype._onHandleDragEnd=function(){if(this._dragging=!1,this._handle){var e=this._axisPointerModel.get(`value`);this._moveHandleToValue(e),this._api.dispatchAction({type:`hideTip`})}},e.prototype.clear=function(e){this._lastValue=null,this._lastStatus=null;var t=e.getZr(),n=this._group,r=this._handle;t&&n&&(this._lastGraphicKey=null,n&&t.remove(n),r&&t.remove(r),this._group=null,this._handle=null,this._payloadInfo=null),YA(this,`_doDispatchAxisPointer`)},e.prototype.doClear=function(){},e.prototype.buildLabel=function(e,t,n){return n||=0,{x:e[n],y:e[1-n],width:t[n],height:t[1-n]}},e}();function XR(e,t,n,r){ZR(KR(n).lastProp,r)||(KR(n).lastProp=r,t?Hv(n,r,e):(n.stopAnimation(),n.attr(r)))}function ZR(e,t){if(Y(e)&&Y(t)){var n=!0;return G(t,function(t,r){n&&=ZR(e[r],t)}),!!n}return e===t}function QR(e,t){e[t.get([`label`,`show`])?`show`:`hide`]()}function $R(e){return{x:e.x||0,y:e.y||0,rotation:e.rotation||0}}function ez(e,t,n){var r=t.get(`z`),i=t.get(`zlevel`);e&&e.traverse(function(e){e.type!==`group`&&(r!=null&&(e.z=r),i!=null&&(e.zlevel=i),e.silent=n)})}function tz(e){var t=e.get(`type`),n=e.getModel(t+`Style`),r;return t===`line`?(r=n.getLineStyle(),r.fill=null):t===`shadow`&&(r=n.getAreaStyle(),r.stroke=null),r}function nz(e,t,n,r,i){var a=iz(n.get(`value`),t.axis,t.ecModel,n.get(`seriesDataIndices`),{precision:n.get([`label`,`precision`]),formatter:n.get([`label`,`formatter`])}),o=n.getModel(`label`),s=zC(o.get(`padding`)||0),c=o.getFont(),l=zl(a,c),u=i.position,d=l.width+s[1]+s[3],f=l.height+s[0]+s[2],p=i.align;p===`right`&&(u[0]-=d),p===`center`&&(u[0]-=d/2);var m=i.verticalAlign;m===`bottom`&&(u[1]-=f),m===`middle`&&(u[1]-=f/2),rz(u,d,f,r);var h=o.get(`backgroundColor`);(!h||h===`auto`)&&(h=t.get([`axisLine`,`lineStyle`,`color`])),e.label={x:u[0],y:u[1],style:Jy(o,{text:a,font:c,fill:o.getTextColor(),padding:s,backgroundColor:h}),z2:10}}function rz(e,t,n,r){var i=r.getWidth(),a=r.getHeight();e[0]=Math.min(e[0]+t,i)-t,e[1]=Math.min(e[1]+n,a)-n,e[0]=Math.max(e[0],0),e[1]=Math.max(e[1],0)}function iz(e,t,n,r,i){e=t.scale.parse(e);var a=t.scale.getLabel({value:e},{precision:i.precision}),o=i.formatter;if(o){var s={value:vD(t,{value:e}),axisDimension:t.dim,axisIndex:t.index,seriesData:[]};G(r,function(e){var t=n.getSeriesByIndex(e.seriesIndex),r=e.dataIndexInside,i=t&&t.getDataParams(r);i&&s.seriesData.push(i)}),J(o)?a=o.replace(`{value}`,a):Is(o)&&(a=o(s))}return a}function az(e,t,n){var r=Rc();return Uc(r,r,n.rotation),Hc(r,r,n.position),py([e.dataToCoord(t),(n.labelOffset||0)+(n.labelDirection||1)*(n.labelMargin||0)],r)}function oz(e,t,n,r,i,a){var o=kk.innerTextLayout(n.rotation,0,n.labelDirection);n.labelMargin=i.get([`label`,`margin`]),nz(t,r,i,a,{position:az(r.axis,e,n),align:o.textAlign,verticalAlign:o.textVerticalAlign})}function sz(e,t,n){return n||=0,{x1:e[n],y1:e[1-n],x2:t[n],y2:t[1-n]}}function cz(e,t,n){return n||=0,{x:e[n],y:e[1-n],width:t[n],height:t[1-n]}}function lz(e,t,n){return GO(e,{fromStat:{sers:K(t,function(e){return n.getSeriesByIndex(e.seriesIndex)})},min:1}).w}function uz(e,t,n){return[pm(fm(t[0],t[1]),e-n/2),fm(e+n/2,pm(t[0],t[1]))]}var dz=function(e){U(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.makeElOption=function(e,t,n,r,i){var a=n.axis,o=a.grid,s=r.get(`type`),c=a.getGlobalExtent(),l=fz(o,a).getOtherAxis(a).getGlobalExtent(),u=a.toGlobalCoord(a.dataToCoord(t,!0));if(s&&s!==`none`){var d=tz(r),f=pz[s](a,u,c,l,r.get(`seriesDataIndices`),r.ecModel);f.style=d,e.graphicKey=f.type,e.pointer=f}oz(t,e,Xk(o.getRect(),n),n,r,i)},t.prototype.getHandleTransform=function(e,t,n){var r=Xk(t.axis.grid.getRect(),t,{labelInside:!1});r.labelMargin=n.get([`handle`,`margin`]);var i=az(t.axis,e,r);return{x:i[0],y:i[1],rotation:r.rotation+(r.labelDirection<0?Math.PI:0)}},t.prototype.updateHandleTransform=function(e,t,n,r){var i=n.axis,a=i.grid,o=i.getGlobalExtent(!0),s=fz(a,i).getOtherAxis(i).getGlobalExtent(),c=i.dim===`x`?0:1,l=[e.x,e.y];l[c]+=t[c],l[c]=fm(o[1],l[c]),l[c]=pm(o[0],l[c]);var u=(s[1]+s[0])/2,d=[u,u];return d[c]=l[c],{x:l[0],y:l[1],rotation:e.rotation,cursorPoint:d,tooltipOption:[{verticalAlign:`middle`},{align:`center`}][c]}},t}(YR);function fz(e,t){var n={};return n[t.dim+`AxisIndex`]=t.index,e.getCartesian(n)}var pz={line:function(e,t,n,r){return{type:`Line`,subPixelOptimize:!0,shape:sz([t,r[0]],[t,r[1]],mz(e))}},shadow:function(e,t,n,r,i,a){var o=lz(e,i,a),s=r[1]-r[0],c=uz(t,n,o),l=c[0],u=c[1];return{type:`Rect`,shape:cz([l,r[0]],[u-l,s],mz(e))}}};function mz(e){return e.dim===`x`?0:1}var hz=function(e){U(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.type=`axisPointer`,t.defaultOption={show:`auto`,z:50,type:`line`,snap:!1,triggerTooltip:!0,triggerEmphasis:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:Q.color.border,width:1,type:`dashed`},shadowStyle:{color:Q.color.shadowTint},label:{show:!0,formatter:null,precision:`auto`,margin:3,color:Q.color.neutral00,padding:[5,7,5,7],backgroundColor:Q.color.accent60,borderColor:null,borderWidth:0,borderRadius:3},handle:{show:!1,icon:`M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z`,size:45,margin:50,color:Q.color.accent40,throttle:40}},t}(ow),gz=Ch(),_z=G;function vz(e,t,n){if(!dc.node){var r=t.getZr();gz(r).records||(gz(r).records={}),yz(r,t);var i=gz(r).records[e]||(gz(r).records[e]={});i.handler=n}}function yz(e,t){if(gz(e).initialized)return;gz(e).initialized=!0,n(`click`,Fs(Sz,`click`)),n(`mousemove`,Fs(Sz,`mousemove`)),n(`mousewheel`,Fs(Sz,`mousewheel`)),n(`globalout`,xz);function n(n,r){e.on(n,function(n){var i=Cz(t);_z(gz(e).records,function(e){e&&r(e,n,i.dispatchAction)}),bz(i.pendings,t)})}}function bz(e,t){var n=e.showTip.length,r=e.hideTip.length,i;n?i=e.showTip[n-1]:r&&(i=e.hideTip[r-1]),i&&(i.dispatchAction=null,t.dispatchAction(i))}function xz(e,t,n){e.handler(`leave`,null,n)}function Sz(e,t,n,r){t.handler(e,n,r)}function Cz(e){var t={showTip:[],hideTip:[]},n=function(r){var i=t[r.type];i?i.push(r):(r.dispatchAction=n,e.dispatchAction(r))};return{dispatchAction:n,pendings:t}}function wz(e,t){if(!dc.node){var n=t.getZr();(gz(n).records||{})[e]&&(gz(n).records[e]=null)}}var Tz=function(e){U(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.render=function(e,t,n){var r=t.getComponent(`tooltip`),i=e.get(`triggerOn`)||r&&r.get(`triggerOn`)||`mousemove|click|mousewheel`;vz(`axisPointer`,n,function(e,t,n){i!==`none`&&(e===`leave`||i.indexOf(e)>=0)&&n({type:`updateAxisPointer`,currTrigger:e,x:t&&t.offsetX,y:t&&t.offsetY})})},t.prototype.remove=function(e,t){wz(`axisPointer`,t)},t.prototype.dispose=function(e,t){wz(`axisPointer`,t)},t.type=`axisPointer`,t}(KN);function Ez(e,t){var n=[],r=e.seriesIndex,i;if(r==null||!(i=t.getSeriesByIndex(r)))return{point:[]};var a=i.getData(),o=Sh(a,e);if(o==null||o<0||q(o))return{point:[]};var s=a.getItemGraphicEl(o),c=i.coordinateSystem;if(i.getTooltipPosition)n=i.getTooltipPosition(o)||[];else if(c&&c.dataToPoint){if(e.isStacked){var l=c.getBaseAxis(),u=c.getOtherAxis(l).dim,d=l.dim,f=+(u===`x`||u===`radius`),p=a.mapDimension(d),m=[];m[f]=a.get(p,o),m[1-f]=a.get(a.getCalculationInfo(`stackResultDimension`),o),n=c.dataToPoint(m)||[]}else n=c.dataToPoint(a.getValues(K(c.dimensions,function(e){return a.mapDimension(e)}),o))||[]}else if(s){var h=s.getBoundingRect().clone();h.applyTransform(s.transform),n=[h.x+h.width/2,h.y+h.height/2]}return{point:n,el:s}}var Dz=Ch();function Oz(e,t,n){var r=e.currTrigger,i=[e.x,e.y],a=e,o=e.dispatchAction||Ps(n.dispatchAction,n),s=t.getComponent(`axisPointer`).coordSysAxesInfo;if(s){Rz(i)&&(i=Ez({seriesIndex:a.seriesIndex,dataIndex:a.dataIndex},t).point);var c=Rz(i),l=a.axesInfo,u=s.axesInfo,d=r===`leave`||Rz(i),f={},p={},m={list:[],map:{}},h={showPointer:Fs(jz,p),showTooltip:Fs(Mz,m)};G(s.coordSysMap,function(e,t){var n=c||e.containPoint(i);G(s.coordSysAxesInfo[t],function(e,t){var r=e.axis,a=Iz(l,e);if(!d&&n&&(!l||a)){var o=a&&a.value;o==null&&!c&&(o=r.pointToData(i)),o!=null&&kz(e,o,h,!1,f)}})});var g={};return G(u,function(e,t){var n=e.linkGroup;n&&!p[t]&&G(n.axesInfo,function(t,r){var i=p[r];if(t!==e&&i){var a=i.value;n.mapper&&(a=e.axis.scale.parse(n.mapper(a,Lz(t),Lz(e)))),g[e.key]=a}})}),G(g,function(e,t){kz(u[t],e,h,!0,f)}),Nz(p,u,f),Pz(m,i,e,o),Fz(u,o,n),f}}function kz(e,t,n,r,i){var a=e.axis;if(!a.scale.isBlank()&&a.containData(t)){if(!e.involveSeries){n.showPointer(e,t);return}var o=Az(t,e),s=o.payloadBatch,c=o.snapToValue;s[0]&&i.seriesIndex==null&&W(i,s[0]),!r&&e.snap&&a.containData(c)&&c!=null&&(t=c),n.showPointer(e,t,s),n.showTooltip(e,o,c)}}function Az(e,t){var n=t.axis,r=n.dim,i=e,a=[],o=Number.MAX_VALUE,s=-1;return G(t.seriesModels,function(t,c){var l=t.getData().mapDimensionsAll(r),u,d;if(t.getAxisTooltipData){var f=t.getAxisTooltipData(l,e,n);d=f.dataIndices,u=f.nestestValue}else{if(d=t.indicesOfNearest(r,l[0],e,n.type===`category`?.5:null),!d.length)return;u=t.getData().get(l[0],d[0])}if(qm(u)){var p=e-u,m=Math.abs(p);m<=o&&((m=0&&s<0)&&(o=m,s=p,i=u,a.length=0),G(d,function(e){a.push({seriesIndex:t.seriesIndex,dataIndexInside:e,dataIndex:t.getData().getRawIndex(e)})}))}}),{payloadBatch:a,snapToValue:i}}function jz(e,t,n,r){e[t.key]={value:n,payloadBatch:r}}function Mz(e,t,n,r){var i=n.payloadBatch,a=t.axis,o=a.model,s=t.axisPointerModel;if(t.triggerTooltip&&i.length){var c=t.coordSys.model,l=cR(c),u=e.map[l];u||(u=e.map[l]={coordSysId:c.id,coordSysIndex:c.componentIndex,coordSysType:c.type,coordSysMainType:c.mainType,dataByAxis:[]},e.list.push(u)),u.dataByAxis.push({axisDim:a.dim,axisIndex:o.componentIndex,axisType:o.type,axisId:o.id,value:r,valueLabelOpt:{precision:s.get([`label`,`precision`]),formatter:s.get([`label`,`formatter`])},seriesDataIndices:i.slice()})}}function Nz(e,t,n){var r=n.axesInfo=[];G(t,function(t,n){var i=t.axisPointerModel.option,a=e[n];a?(!t.useHandle&&(i.status=`show`),i.value=a.value,i.seriesDataIndices=(a.payloadBatch||[]).slice()):!t.useHandle&&(i.status=`hide`),i.status===`show`&&r.push({axisDim:t.axis.dim,axisIndex:t.axis.model.componentIndex,value:i.value})})}function Pz(e,t,n,r){if(Rz(t)||!e.list.length){r({type:`hideTip`});return}var i=((e.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};r({type:`showTip`,escapeConnect:!0,x:t[0],y:t[1],tooltipOption:n.tooltipOption,position:n.position,dataIndexInside:i.dataIndexInside,dataIndex:i.dataIndex,seriesIndex:i.seriesIndex,dataByCoordSys:e.list})}function Fz(e,t,n){var r=n.getZr(),i=`axisPointerLastHighlights`,a=Dz(r)[i]||{},o=Dz(r)[i]={};G(e,function(e,t){var n=e.axisPointerModel.option;n.status===`show`&&e.triggerEmphasis&&G(n.seriesDataIndices,function(e){o[e.seriesIndex+`|`+e.dataIndex]=e})});var s=[],c=[];function l(e){return{seriesIndex:e.seriesIndex,dataIndex:e.dataIndex}}G(a,function(e,t){!o[t]&&c.push(l(e))}),G(o,function(e,t){!a[t]&&s.push(l(e))}),c.length&&n.dispatchAction({type:`downplay`,escapeConnect:!0,notBlur:!0,batch:c}),s.length&&n.dispatchAction({type:`highlight`,escapeConnect:!0,notBlur:!0,batch:s})}function Iz(e,t){for(var n=0;n<(e||[]).length;n++){var r=e[n];if(t.axis.dim===r.axisDim&&t.axis.model.componentIndex===r.axisIndex)return r}}function Lz(e){var t=e.axis.model,n={},r=n.axisDim=e.axis.dim;return n.axisIndex=n[r+`AxisIndex`]=t.componentIndex,n.axisName=n[r+`AxisName`]=t.name,n.axisId=n[r+`AxisId`]=t.id,n}function Rz(e){return!e||e[0]==null||isNaN(e[0])||e[1]==null||isNaN(e[1])}function zz(e){uR.registerAxisPointerClass(`CartesianAxisPointer`,dz),e.registerComponentModel(hz),e.registerComponentView(Tz),e.registerPreprocessor(function(e){if(e){(!e.axisPointer||e.axisPointer.length===0)&&(e.axisPointer={});var t=e.axisPointer.link;t&&!q(t)&&(e.axisPointer.link=[t])}}),e.registerProcessor(e.PRIORITY.PROCESSOR.STATISTIC,{overallReset:function(e,t){e.getComponent(`axisPointer`).coordSysAxesInfo=QL(e,t)}}),e.registerAction({type:`updateAxisPointer`,event:`updateAxisPointer`,update:`:updateAxisPointer`},Oz)}function Bz(e){hL(xR),hL(zz)}function Vz(e,t){var n=zC(t.get(`padding`)),r=t.getItemStyle([`color`,`opacity`]);return r.fill=t.get(`backgroundColor`),new Wp({shape:{x:e.x-n[3],y:e.y-n[0],width:e.width+n[1]+n[3],height:e.height+n[0]+n[2],r:t.get(`borderRadius`)},style:r,silent:!0,z2:-1})}var Hz=function(e){U(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.type=`tooltip`,t.dependencies=[`axisPointer`],t.defaultOption={z:60,show:!0,showContent:!0,trigger:`item`,triggerOn:`mousemove|click|mousewheel`,alwaysShowContent:!1,renderMode:`auto`,confine:null,showDelay:0,hideDelay:100,transitionDuration:.4,displayTransition:!0,enterable:!1,backgroundColor:Q.color.neutral00,shadowBlur:10,shadowColor:`rgba(0, 0, 0, .2)`,shadowOffsetX:1,shadowOffsetY:2,borderRadius:4,borderWidth:1,defaultBorderColor:Q.color.border,padding:null,extraCssText:``,axisPointer:{type:`line`,axis:`auto`,animation:`auto`,animationDurationUpdate:200,animationEasingUpdate:`exponentialOut`,crossStyle:{color:Q.color.borderShade,width:1,type:`dashed`,textStyle:{}}},textStyle:{color:Q.color.tertiary,fontSize:14}},t}(ow);function Uz(e){var t=e.get(`confine`);return t==null?e.get(`renderMode`)===`richText`:!!t}function Wz(e){if(dc.domSupported){for(var t=document.documentElement.style,n=0,r=e.length;n-1?(s+=`top:50%`,c+=`translateY(-50%) rotate(`+(l=a===`left`?-225:-45)+`deg)`):(s+=`left:50%`,c+=`translateX(-50%) rotate(`+(l=a===`top`?225:45)+`deg)`);var u=l*Math.PI/180,d=o+i,f=d*Math.abs(Math.cos(u))+d*Math.abs(Math.sin(u)),p=Math.round(((f-Math.SQRT2*i)/2+Math.SQRT2*i-(f-d)/2)*100)/100;s+=`;`+a+`:-`+p+`px`;var m=t+` solid `+i+`px;`;return`
`}function eB(e,t,n){var r=`cubic-bezier(0.23,1,0.32,1)`,i=``,a=``;return n&&(i=` `+e/2+`s `+r,a=`opacity`+i+`,visibility`+i),t||(i=` `+e+`s `+r,a+=(a.length?`,`:``)+(dc.transformSupported?``+Xz+i:`,left`+i+`,top`+i)),Yz+`:`+a}function tB(e,t,n){var r=e.toFixed(0)+`px`,i=t.toFixed(0)+`px`;if(!dc.transformSupported)return n?`top:`+i+`;left:`+r+`;`:[[`top`,i],[`left`,r]];var a=dc.transform3dSupported,o=`translate`+(a?`3d`:``)+`(`+r+`,`+i+(a?`,0`:``)+`)`;return n?`top:0;left:0;`+Xz+`:`+o+`;`:[[`top`,0],[`left`,0],[Gz,o]]}function nB(e){var t=[],n=e.get(`fontSize`),r=e.getTextColor();r&&t.push(`color:`+r),t.push(`font:`+e.getFont());var i=X(e.get(`lineHeight`),Math.round(n*3/2));n&&t.push(`line-height:`+i+`px`);var a=e.get(`textShadowColor`),o=e.get(`textShadowBlur`)||0,s=e.get(`textShadowOffsetX`)||0,c=e.get(`textShadowOffsetY`)||0;return a&&o&&t.push(`text-shadow:`+s+`px `+c+`px `+o+`px `+a),G([`decoration`,`align`],function(n){var r=e.get(n);r&&t.push(`text-`+n+`:`+r)}),t.join(`;`)}function rB(e,t,n,r){var i=[],a=e.get(`transitionDuration`),o=e.get(`backgroundColor`),s=e.get(`shadowBlur`),c=e.get(`shadowColor`),l=e.get(`shadowOffsetX`),u=e.get(`shadowOffsetY`),d=e.getModel(`textStyle`),f=rT(e,`html`),p=l+`px `+u+`px `+s+`px `+c;return i.push(`box-shadow:`+p),t&&a>0&&i.push(eB(a,n,r)),o&&i.push(`background-color:`+o),G([`width`,`color`,`radius`],function(t){var n=`border-`+t,r=RC(n),a=e.get(r);a!=null&&i.push(n+`:`+a+(t===`color`?``:`px`))}),i.push(nB(d)),f!=null&&i.push(`padding:`+zC(f).join(`px `)+`px`),i.join(`;`)+`;`}function iB(e,t,n,r,i){var a=t&&t.painter;if(n){var o=a&&a.getViewportRoot();o&&kS(e,o,n,r,i)}else{e[0]=r,e[1]=i;var s=a&&a.getViewportRootOffset();s&&(e[0]+=s.offsetLeft,e[1]+=s.offsetTop)}e[2]=e[0]/t.getWidth(),e[3]=e[1]/t.getHeight()}var aB=function(){function e(e,t){if(this._show=!1,this._styleCoord=[0,0,0,0],this._enterable=!0,this._alwaysShowContent=!1,this._firstShow=!0,this._longHide=!0,dc.wxa)return null;var n=document.createElement(`div`);n.domBelongToZr=!0,this.el=n;var r=this._zr=e.getZr(),i=t.appendTo,a=i&&(J(i)?document.querySelector(i):Vs(i)?i:Is(i)&&i(e.getDom()));iB(this._styleCoord,r,a,e.getWidth()/2,e.getHeight()/2),(a||e.getDom()).appendChild(n),this._api=e,this._container=a;var o=this;n.onmouseenter=function(){o._enterable&&(clearTimeout(o._hideTimeout),o._show=!0),o._inContent=!0},n.onmousemove=function(e){if(e||=window.event,!o._enterable){var t=r.handler;Bj(r.painter.getViewportRoot(),e,!0),t.dispatch(`mousemove`,e)}},n.onmouseleave=function(){o._inContent=!1,o._enterable&&o._show&&o.hideLater(o._hideDelay)}}return e.prototype.update=function(e){if(!this._container){var t=this._api.getDom(),n=Jz(t,`position`),r=t.style;r.position!==`absolute`&&n!==`absolute`&&(r.position=`relative`)}var i=e.get(`alwaysShowContent`);i&&this._moveIfResized(),this._alwaysShowContent=i,this._enableDisplayTransition=e.get(`displayTransition`)&&e.get(`transitionDuration`)>0,this.el.className=e.get(`className`)||``},e.prototype.show=function(e,t){clearTimeout(this._hideTimeout),clearTimeout(this._longHideTimeout);var n=this.el,r=n.style,i=this._styleCoord;n.innerHTML?r.cssText=Zz+rB(e,!this._firstShow,this._longHide,this._enableDisplayTransition)+tB(i[0],i[1],!0)+(`border-color:`+GC(t)+`;`)+(e.get(`extraCssText`)||``)+(`;pointer-events:`+(this._enterable?`auto`:`none`)):r.display=`none`,this._show=!0,this._firstShow=!1,this._longHide=!1},e.prototype.setContent=function(e,t,n,r,i){var a=this.el;if(e==null){a.innerHTML=``;return}var o=``;if(J(i)&&n.get(`trigger`)===`item`&&!Uz(n)&&(o=$z(n,r,i)),J(e))a.innerHTML=e+o;else if(e){a.innerHTML=``,q(e)||(e=[e]);for(var s=0;s=0?this._tryShow(n,r):t===`leave`&&this._hide(r))},this))},t.prototype._keepShow=function(){var e=this._tooltipModel,t=this._ecModel,n=this._api,r=e.get(`triggerOn`);if(e.get(`trigger`)!==`axis`&&(this._lastDataByCoordSys=null,this._cbParamsList=null),this._lastX!=null&&this._lastY!=null&&r!==`none`&&r!==`click`){var i=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){!n.isDisposed()&&i.manuallyShowTip(e,t,n,{x:i._lastX,y:i._lastY,dataByCoordSys:i._lastDataByCoordSys})})}},t.prototype.manuallyShowTip=function(e,t,n,r){if(r.from!==this.uid&&!dc.node&&n.getDom()){var i=pB(r,n);this._ticket=``;var a=r.dataByCoordSys,o=vB(r,t,n);if(o){var s=o.el.getBoundingRect().clone();s.applyTransform(o.el.transform),this._tryShow({offsetX:s.x+s.width/2,offsetY:s.y+s.height/2,target:o.el,position:r.position,positionDefault:`bottom`},i)}else if(r.tooltip&&r.x!=null&&r.y!=null){var c=uB;c.x=r.x,c.y=r.y,c.update(),Zh(c).tooltipConfig={name:null,option:r.tooltip},this._tryShow({offsetX:r.x,offsetY:r.y,target:c},i)}else if(a)this._tryShow({offsetX:r.x,offsetY:r.y,position:r.position,dataByCoordSys:a,tooltipOption:r.tooltipOption},i);else if(r.seriesIndex!=null){if(this._manuallyAxisShowTip(e,t,n,r))return;var l=Ez(r,t),u=l.point[0],d=l.point[1];u!=null&&d!=null&&this._tryShow({offsetX:u,offsetY:d,target:l.el,position:r.position,positionDefault:`bottom`},i)}else r.x!=null&&r.y!=null&&(n.dispatchAction({type:`updateAxisPointer`,x:r.x,y:r.y}),this._tryShow({offsetX:r.x,offsetY:r.y,position:r.position,target:n.getZr().findHover(r.x,r.y).target},i))}},t.prototype.manuallyHideTip=function(e,t,n,r){var i=this._tooltipContent;this._tooltipModel&&i.hideLater(this._tooltipModel.get(`hideDelay`)),this._lastX=this._lastY=this._lastDataByCoordSys=null,this._cbParamsList=null,r.from!==this.uid&&this._hide(pB(r,n))},t.prototype._manuallyAxisShowTip=function(e,t,n,r){var i=r.seriesIndex,a=r.dataIndex,o=t.getComponent(`axisPointer`).coordSysAxesInfo;if(i!=null&&a!=null&&o!=null){var s=t.getSeriesByIndex(i);if(s&&fB([s.getData().getItemModel(a),s,(s.coordinateSystem||{}).model],this._tooltipModel).get(`trigger`)===`axis`)return n.dispatchAction({type:`updateAxisPointer`,seriesIndex:i,dataIndex:a,position:r.position}),!0}},t.prototype._tryShow=function(e,t){var n=e.target;if(this._tooltipModel){this._lastX=e.offsetX,this._lastY=e.offsetY;var r=e.dataByCoordSys;if(r&&r.length)this._showAxisTooltip(r,e);else if(n){if(Zh(n).ssrType===`legend`)return;this._lastDataByCoordSys=null,this._cbParamsList=null;var i,a;AP(n,function(e){if(e.tooltipDisabled)return i=a=null,!0;i||a||(Zh(e).dataIndex==null?Zh(e).tooltipConfig!=null&&(a=e):i=e)},!0),i?this._showSeriesItemTooltip(e,i,t):a?this._showComponentItemTooltip(e,a,t):this._hide(t)}else this._lastDataByCoordSys=null,this._cbParamsList=null,this._hide(t)}},t.prototype._showOrMove=function(e,t){var n=e.get(`showDelay`);t=Ps(t,this),clearTimeout(this._showTimout),n>0?this._showTimout=setTimeout(t,n):t()},t.prototype._showAxisTooltip=function(e,t){var n=this._ecModel,r=this._tooltipModel,i=[t.offsetX,t.offsetY],a=fB([t.tooltipOption],r),o=this._renderMode,s=[],c=Uw(`section`,{blocks:[],noHeader:!0}),l=[],u=new iT;G(e,function(e){G(e.dataByAxis,function(e){var t=n.getComponent(e.axisDim+`Axis`,e.axisIndex),i=e.value,a=t.axis,d=a.scale.parse(i);if(t&&i!=null){var f=iz(i,a,n,e.seriesDataIndices,e.valueLabelOpt),p=Uw(`section`,{header:f,noHeader:!Xs(f),sortBlocks:!0,blocks:[]});c.blocks.push(p),G(e.seriesDataIndices,function(i){var a=n.getSeriesByIndex(i.seriesIndex),c=i.dataIndexInside,m=a.getDataParams(c);if(!(m.dataIndex<0)){m.axisDim=e.axisDim,m.axisIndex=e.axisIndex,m.axisType=e.axisType,m.axisId=e.axisId,m.axisValue=vD(t.axis,{value:d}),m.axisValueLabel=f,m.marker=u.makeTooltipMarker(`item`,GC(m.color),o);var h=_w(a.formatTooltip(c,!0,null)),g=h.frag;if(g){var _=fB([a],r).get(`valueFormatter`);p.blocks.push(_?W({valueFormatter:_},g):g)}h.text&&l.push(h.text),s.push(m)}})}})}),c.blocks.reverse(),l.reverse();var d=t.position,f=Yw(c,u,o,a.get(`order`),n.get(`useUTC`),a.get(`textStyle`));f&&l.unshift(f);var p=o===`richText`?` - -`:`
`,m=l.join(p);this._showOrMove(a,function(){this._updateContentNotChangedOnAxis(e,s)?this._updatePosition(a,d,i[0],i[1],this._tooltipContent,s):this._showTooltipContent(a,m,s,Math.random()+``,i[0],i[1],d,null,u)})},t.prototype._showSeriesItemTooltip=function(e,t,n){var r=this._ecModel,i=Zh(t),a=i.seriesIndex,o=r.getSeriesByIndex(a),s=i.dataModel||o,c=i.dataIndex,l=i.dataType,u=s.getData(l),d=this._renderMode,f=e.positionDefault,p=fB([u.getItemModel(c),s,o&&(o.coordinateSystem||{}).model],this._tooltipModel,f?{position:f}:null),m=p.get(`trigger`);if(m==null||m===`item`){var h=s.getDataParams(c,l),g=new iT;h.marker=g.makeTooltipMarker(`item`,GC(h.color),d);var _=_w(s.formatTooltip(c,!1,l)),v=p.get(`order`),y=p.get(`valueFormatter`),b=_.frag,x=b?Yw(y?W({valueFormatter:y},b):b,g,d,v,r.get(`useUTC`),p.get(`textStyle`)):_.text,S=`item_`+s.name+`_`+c;this._showOrMove(p,function(){this._showTooltipContent(p,x,h,S,e.offsetX,e.offsetY,e.position,e.target,g)}),n({type:`showTip`,dataIndexInside:c,dataIndex:u.getRawIndex(c),seriesIndex:a,from:this.uid})}},t.prototype._showComponentItemTooltip=function(e,t,n){var r=this._renderMode===`html`,i=Zh(t),a=i.tooltipConfig.option||{},o=a.encodeHTMLContent;if(J(a)){var s=a;a={content:s,formatter:s},o=!0}o&&r&&a.content&&(a=xs(a),a.content=LS(a.content));var c=[a],l=this._ecModel.getComponent(i.componentMainType,i.componentIndex);l&&c.push(l),c.push({formatter:a.content});var u=e.positionDefault,d=fB(c,this._tooltipModel,u?{position:u}:null),f=d.get(`content`),p=Math.random()+``,m=new iT;this._showOrMove(d,function(){var n=xs(d.get(`formatterParams`)||{});this._showTooltipContent(d,f,n,p,e.offsetX,e.offsetY,e.position,t,m)}),n({type:`showTip`,from:this.uid})},t.prototype._showTooltipContent=function(e,t,n,r,i,a,o,s,c){if(this._ticket=``,e.get(`showContent`)&&e.get(`show`)){var l=this._tooltipContent;l.setEnterable(e.get(`enterable`));var u=e.get(`formatter`);o||=e.get(`position`);var d=t,f=this._getNearestPoint([i,a],n,e.get(`trigger`),e.get(`borderColor`),e.get(`defaultBorderColor`,!0)).color;if(u){if(J(u)){var p=e.ecModel.get(`useUTC`),m=q(n)?n[0]:n,h=m&&m.axisType&&m.axisType.indexOf(`time`)>=0;d=u,h&&(d=yC(m.axisValue,d,p)),d=UC(d,n,!0)}else if(Is(u)){var g=Ps(function(t,r){t===this._ticket&&(l.setContent(r,c,e,f,o),this._updatePosition(e,o,i,a,l,n,s))},this);this._ticket=r,d=u(n,r,g)}else d=u}l.setContent(d,c,e,f,o),l.show(e,f),this._updatePosition(e,o,i,a,l,n,s)}},t.prototype._getNearestPoint=function(e,t,n,r,i){if(n===`axis`||q(t))return{color:r||i};if(!q(t))return{color:r||t.color||t.borderColor}},t.prototype._updatePosition=function(e,t,n,r,i,a,o){var s=this._api.getWidth(),c=this._api.getHeight();t||=e.get(`position`);var l=i.getSize(),u=e.get(`align`),d=e.get(`verticalAlign`),f=o&&o.getBoundingRect().clone();if(o&&f.applyTransform(o.transform),Is(t)&&(t=t([n,r],a,i.el,f,{viewSize:[s,c],contentSize:l.slice()})),q(t))n=wm(t[0],s),r=wm(t[1],c);else if(Y(t)){var p=t;p.width=l[0],p.height=l[1];var m=QC(p,{width:s,height:c});n=m.x,r=m.y,u=null,d=null}else if(J(t)&&o){var h=gB(t,f,l,e.get(`borderWidth`));n=h[0],r=h[1]}else{var h=mB(n,r,i,s,c,u?null:20,d?null:20);n=h[0],r=h[1]}if(u&&(n-=_B(u)?l[0]/2:u===`right`?l[0]:0),d&&(r-=_B(d)?l[1]/2:d===`bottom`?l[1]:0),Uz(e)){var h=hB(n,r,i,s,c);n=h[0],r=h[1]}i.moveTo(n,r)},t.prototype._updateContentNotChangedOnAxis=function(e,t){var n=this._lastDataByCoordSys,r=this._cbParamsList,i=!!n&&n.length===e.length;return i&&G(n,function(n,a){var o=n.dataByAxis||[],s=(e[a]||{}).dataByAxis||[];i&&=o.length===s.length,i&&G(o,function(e,n){var a=s[n]||{},o=e.seriesDataIndices||[],c=a.seriesDataIndices||[];i=i&&e.value===a.value&&e.axisType===a.axisType&&e.axisId===a.axisId&&o.length===c.length,i&&G(o,function(e,t){var n=c[t];i=i&&e.seriesIndex===n.seriesIndex&&e.dataIndex===n.dataIndex}),r&&G(e.seriesDataIndices,function(e){var n=e.seriesIndex,a=t[n],o=r[n];a&&o&&o.data!==a.data&&(i=!1)})})}),this._lastDataByCoordSys=e,this._cbParamsList=t,!!i},t.prototype._hide=function(e){this._lastDataByCoordSys=null,this._cbParamsList=null,e({type:`hideTip`,from:this.uid})},t.prototype.dispose=function(e,t){!dc.node&&t.getDom()&&(YA(this,`_updatePosition`),this._tooltipContent.dispose(),wz(`itemTooltip`,t),this._tooltipContent=null,this._tooltipModel=null,this._lastDataByCoordSys=null,this._cbParamsList=null)},t.type=`tooltip`,t}(KN);function fB(e,t,n){var r=t.ecModel,i;n?(i=new _b(n,r,r),i=new _b(t.option,i,r)):i=t;for(var a=e.length-1;a>=0;a--){var o=e[a];o&&(o instanceof _b&&(o=o.get(`tooltip`,!0)),J(o)&&(o={formatter:o}),o&&(i=new _b(o,i,r)))}return i}function pB(e,t){return e.dispatchAction||Ps(t.dispatchAction,t)}function mB(e,t,n,r,i,a,o){var s=n.getSize(),c=s[0],l=s[1];return a!=null&&(e+c+a+2>r?e-=c+a:e+=a),o!=null&&(t+l+o>i?t-=l+o:t+=o),[e,t]}function hB(e,t,n,r,i){var a=n.getSize(),o=a[0],s=a[1];return e=Math.min(e+o,r)-o,t=Math.min(t+s,i)-s,e=Math.max(e,0),t=Math.max(t,0),[e,t]}function gB(e,t,n,r){var i=n[0],a=n[1],o=Math.ceil(Math.SQRT2*r)+8,s=0,c=0,l=t.width,u=t.height;switch(e){case`inside`:s=t.x+l/2-i/2,c=t.y+u/2-a/2;break;case`top`:s=t.x+l/2-i/2,c=t.y-a-o;break;case`bottom`:s=t.x+l/2-i/2,c=t.y+u+o;break;case`left`:s=t.x-i-o,c=t.y+u/2-a/2;break;case`right`:s=t.x+l+o,c=t.y+u/2-a/2}return[s,c]}function _B(e){return e===`center`||e===`middle`}function vB(e,t,n){var r=Eh(e).queryOptionMap,i=r.keys()[0];if(i&&i!==`series`){var a=Oh(t,i,r.get(i),{useDefault:!1,enableAll:!1,enableNone:!1}).models[0];if(a){var o=n.getViewOfComponentModel(a),s;if(o.group.traverse(function(t){var n=Zh(t).tooltipConfig;if(n&&n.name===e.name)return s=t,!0}),s)return{componentMainType:i,componentIndex:a.componentIndex,el:s}}}}function yB(e){hL(zz),e.registerComponentModel(Hz),e.registerComponentView(dB),e.registerAction({type:`showTip`,event:`showTip`,update:`tooltip:manuallyShowTip`},cc),e.registerAction({type:`hideTip`,event:`hideTip`,update:`tooltip:manuallyHideTip`},cc)}function bB(e,t){if(!e)return!1;for(var n=q(e)?e:[e],r=0;r=0&&(s[o]=+s[o].toFixed(f)),[s,d]}var DB={min:Fs(EB,`min`),max:Fs(EB,`max`),average:Fs(EB,`average`),median:Fs(EB,`median`)};function OB(e,t){if(t){var n=e.getData(),r=e.coordinateSystem,i=r&&r.dimensions;if(!TB(t)&&!q(t.coord)&&q(i)){var a=kB(t,n,r,e);if(t=xs(t),t.type&&DB[t.type]&&a.baseAxis&&a.valueAxis){var o=Ts(i,a.baseAxis.dim),s=Ts(i,a.valueAxis.dim),c=DB[t.type](n,a.valueAxis.dim,a.baseDataDim,a.valueDataDim,o,s);t.coord=c[0],t.value=c[1]}else t.coord=[t.xAxis==null?t.radiusAxis:t.xAxis,t.yAxis==null?t.angleAxis:t.yAxis]}if(t.coord==null||!q(i)){t.coord=[];var l=e.getBaseAxis();if(l&&t.type&&DB[t.type]){var u=r.getOtherAxis(l);u&&(t.value=NB(n,n.mapDimension(u.dim),t.type))}}else for(var d=t.coord,f=0;f<2;f++)DB[d[f]]&&(d[f]=NB(n,n.mapDimension(i[f]),d[f]));return t}}function kB(e,t,n,r){var i={};return e.valueIndex!=null||e.valueDim!=null?(i.valueDataDim=e.valueIndex==null?e.valueDim:t.getDimension(e.valueIndex),i.valueAxis=n.getAxis(AB(r,i.valueDataDim)),i.baseAxis=n.getOtherAxis(i.valueAxis),i.baseDataDim=t.mapDimension(i.baseAxis.dim)):(i.baseAxis=r.getBaseAxis(),i.valueAxis=n.getOtherAxis(i.baseAxis),i.baseDataDim=t.mapDimension(i.baseAxis.dim),i.valueDataDim=t.mapDimension(i.valueAxis.dim)),i}function AB(e,t){var n=e.getData().getDimensionInfo(t);return n&&n.coordDim}function jB(e,t){return e&&e.containData&&t.coord&&!wB(t)?e.containData(t.coord):!0}function MB(e,t){return e?function(e,n,r,i){return dx(i<2?e.coord&&e.coord[i]:e.value,t[i])}:function(e,n,r,i){return dx(e.value,t[i])}}function NB(e,t,n){if(n===`average`){var r=0,i=0;return e.each(t,function(e,t){isNaN(e)||(r+=e,i++)}),r/i}return n===`median`?e.getMedian(t):e.getDataExtent(t)[+(n===`max`)]}var PB=Ch(),FB=function(e){U(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.init=function(){this.markerGroupMap=Z()},t.prototype.render=function(e,t,n){var r=this,i=this.markerGroupMap;i.each(function(e){PB(e).keep=!1}),t.eachSeries(function(e){var i=CB.getMarkerModelFromSeries(e,r.type);i&&r.renderSeries(e,i,t,n)}),i.each(function(e){!PB(e).keep&&r.group.remove(e.group)}),IB(t,i,this.type)},t.prototype.markKeep=function(e){PB(e).keep=!0},t.prototype.toggleBlurSeries=function(e,t){var n=this;G(e,function(e){var r=CB.getMarkerModelFromSeries(e,n.type);r&&r.getData().eachItemGraphicEl(function(e){e&&(t?Ug(e):Wg(e))})})},t.type=`marker`,t}(KN);function IB(e,t,n){e.eachSeries(function(e){var r=CB.getMarkerModelFromSeries(e,n),i=t.get(e.id);if(r&&i&&i.group){var a=Fy(r),o=a.z,s=a.zlevel;Ly(i.group,o,s)}})}var LB=function(e){U(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.createMarkerModelFromSeries=function(e,n,r){return new t(e,n,r)},t.type=`markLine`,t.defaultOption={z:5,symbol:[`circle`,`arrow`],symbolSize:[8,16],symbolOffset:0,precision:2,tooltip:{trigger:`item`},label:{show:!0,position:`end`,distance:5},lineStyle:{type:`dashed`},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:`linear`},t}(CB),RB=Ch(),zB=function(e,t,n,r){var i=e.getData(),a;if(q(r))a=r;else{var o=r.type;if(o===`min`||o===`max`||o===`average`||o===`median`||r.xAxis!=null||r.yAxis!=null){var s=void 0,c=void 0;if(r.yAxis!=null||r.xAxis!=null)s=t.getAxis(r.yAxis==null?`x`:`y`),c=Gs(r.yAxis,r.xAxis);else{var l=kB(r,i,t,e);s=l.valueAxis,c=NB(i,pS(i,l.valueDataDim),o)}var u=s.dim===`x`?0:1,d=1-u,f=xs(r),p={coord:[]};f.type=null,f.coord=[],f.coord[d]=-1/0,p.coord[d]=1/0;var m=n.get(`precision`);m>=0&&Rs(c)&&(c=+c.toFixed(Math.min(m,20))),f.coord[u]=p.coord[u]=c,a=[f,p,{type:o,valueIndex:r.valueIndex,value:c}]}else a=[]}var h=[OB(e,a[0]),OB(e,a[1]),W({},a[2])];return h[2].type=h[2].type||null,Ss(h[2],h[0]),Ss(h[2],h[1]),h};function BB(e){return!isNaN(e)&&!isFinite(e)}function VB(e,t,n,r){var i=1-e,a=r.dimensions[e];return BB(t[i])&&BB(n[i])&&t[e]===n[e]&&r.getAxis(a).containData(t[e])}function HB(e,t){if(e.type===`cartesian2d`){var n=t[0].coord,r=t[1].coord;if(n&&r&&(VB(1,n,r,e)||VB(0,n,r,e)))return!0}return jB(e,t[0])&&jB(e,t[1])}function UB(e,t,n,r,i){var a=r.coordinateSystem,o=e.getItemModel(t),s,c=wm(o.get(`x`),i.getWidth()),l=wm(o.get(`y`),i.getHeight());if(!isNaN(c)&&!isNaN(l))s=[c,l];else{if(r.getMarkerPosition)s=r.getMarkerPosition(e.getValues(e.dimensions,t));else{var u=a.dimensions,d=e.get(u[0],t),f=e.get(u[1],t);s=a.dataToPoint([d,f])}if(fE(a,`cartesian2d`)){var p=a.getAxis(`x`),m=a.getAxis(`y`),u=a.dimensions;BB(e.get(u[0],t))?s[0]=p.toGlobalCoord(p.getExtent()[+!n]):BB(e.get(u[1],t))&&(s[1]=m.toGlobalCoord(m.getExtent()[+!n]))}isNaN(c)||(s[0]=c),isNaN(l)||(s[1]=l)}e.setItemLayout(t,s)}var WB=function(e){U(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.updateTransform=function(e,t,n){t.eachSeries(function(e){var t=CB.getMarkerModelFromSeries(e,`markLine`);if(t){var r=t.getData(),i=RB(t).from,a=RB(t).to;i.each(function(t){UB(i,t,!0,e,n),UB(a,t,!1,e,n)}),r.each(function(e){r.setItemLayout(e,[i.getItemLayout(e),a.getItemLayout(e)])}),this.markerGroupMap.get(e.id).updateLayout()}},this)},t.prototype.renderSeries=function(e,t,n,r){var i=e.coordinateSystem,a=e.id,o=e.getData(),s=this.markerGroupMap,c=s.get(a)||s.set(a,new PR);this.group.add(c.group);var l=GB(i,e,t),u=l.from,d=l.to,f=l.line;RB(t).from=u,RB(t).to=d,t.setData(f);var p=t.get(`symbol`),m=t.get(`symbolSize`),h=t.get(`symbolRotate`),g=t.get(`symbolOffset`);q(p)||(p=[p,p]),q(m)||(m=[m,m]),q(h)||(h=[h,h]),q(g)||(g=[g,g]),l.from.each(function(e){_(u,e,!0),_(d,e,!1)}),f.each(function(e){var t=f.getItemModel(e),n=t.getModel(`lineStyle`).getLineStyle();f.setItemLayout(e,[u.getItemLayout(e),d.getItemLayout(e)]);var r=t.get(`z2`);n.stroke??=u.getItemVisual(e,`style`).fill,f.setItemVisual(e,{z2:X(r,0),fromSymbolKeepAspect:u.getItemVisual(e,`symbolKeepAspect`),fromSymbolOffset:u.getItemVisual(e,`symbolOffset`),fromSymbolRotate:u.getItemVisual(e,`symbolRotate`),fromSymbolSize:u.getItemVisual(e,`symbolSize`),fromSymbol:u.getItemVisual(e,`symbol`),toSymbolKeepAspect:d.getItemVisual(e,`symbolKeepAspect`),toSymbolOffset:d.getItemVisual(e,`symbolOffset`),toSymbolRotate:d.getItemVisual(e,`symbolRotate`),toSymbolSize:d.getItemVisual(e,`symbolSize`),toSymbol:d.getItemVisual(e,`symbol`),style:n})}),c.updateData(f),l.line.eachItemGraphicEl(function(e){Zh(e).dataModel=t,e.traverse(function(e){Zh(e).dataModel=t})});function _(t,n,i){var a=t.getItemModel(n);UB(t,n,i,e,r);var s=a.getModel(`itemStyle`).getItemStyle();s.fill??=kP(o,`color`),t.setItemVisual(n,{symbolKeepAspect:a.get(`symbolKeepAspect`),symbolOffset:X(a.get(`symbolOffset`,!0),g[+!i]),symbolRotate:X(a.get(`symbolRotate`,!0),h[+!i]),symbolSize:X(a.get(`symbolSize`),m[+!i]),symbol:X(a.get(`symbol`,!0),p[+!i]),style:s})}this.markKeep(c),c.group.silent=t.get(`silent`)||e.get(`silent`)},t.type=`markLine`,t}(FB);function GB(e,t,n){var r=e?K(e&&e.dimensions,function(e){var n=t.getData();return W(W({},n.getDimensionInfo(n.mapDimension(e))||{}),{name:e,ordinalMeta:null})}):[{name:`value`,type:`float`}],i=new Jx(r,n),a=new Jx(r,n),o=new Jx([],n),s=K(n.get(`data`),Fs(zB,t,e,n));e&&(s=As(s,Fs(HB,e)));var c=MB(!!e,r);return i.initData(K(s,function(e){return e[0]}),null,c),a.initData(K(s,function(e){return e[1]}),null,c),o.initData(K(s,function(e){return e[2]})),o.hasItemOption=!0,{from:i,to:a,line:o}}function KB(e){e.registerComponentModel(LB),e.registerComponentView(WB),e.registerPreprocessor(function(e){bB(e.series,`markLine`)&&(e.markLine=e.markLine||{})})}var qB=function(e,t){if(t===`all`)return{type:`all`,title:e.getLocaleModel().get([`legend`,`selector`,`all`])};if(t===`inverse`)return{type:`inverse`,title:e.getLocaleModel().get([`legend`,`selector`,`inverse`])}},JB=function(e){U(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n.layoutMode={type:`box`,ignoreSize:!0},n}return t.prototype.init=function(e,t,n){this.mergeDefaultAndTheme(e,n),e.selected=e.selected||{},this._updateSelector(e)},t.prototype.mergeOption=function(t,n){e.prototype.mergeOption.call(this,t,n),this._updateSelector(t)},t.prototype._updateSelector=function(e){var t=e.selector,n=this.ecModel;t===!0&&(t=e.selector=[`all`,`inverse`]),q(t)&&G(t,function(e,r){J(e)&&(e={type:e}),t[r]=Ss(e,qB(n,e.type))})},t.prototype.optionUpdated=function(){this._updateData(this.ecModel);var e=this._data;if(e[0]&&this.get(`selectedMode`)===`single`){for(var t=!1,n=0;n=0},t.prototype.getOrient=function(){return this.get(`orient`)===`vertical`?{index:1,name:`vertical`}:{index:0,name:`horizontal`}},t.type=`legend.plain`,t.dependencies=[`series`],t.defaultOption={z:4,show:!0,orient:`horizontal`,left:`center`,bottom:Q.size.m,align:`auto`,backgroundColor:Q.color.transparent,borderColor:Q.color.border,borderRadius:0,borderWidth:0,padding:5,itemGap:8,itemWidth:25,itemHeight:14,symbolRotate:`inherit`,symbolKeepAspect:!0,inactiveColor:Q.color.disabled,inactiveBorderColor:Q.color.disabled,inactiveBorderWidth:`auto`,itemStyle:{color:`inherit`,opacity:`inherit`,borderColor:`inherit`,borderWidth:`auto`,borderCap:`inherit`,borderJoin:`inherit`,borderDashOffset:`inherit`,borderMiterLimit:`inherit`},lineStyle:{width:`auto`,color:`inherit`,inactiveColor:Q.color.disabled,inactiveWidth:2,opacity:`inherit`,type:`inherit`,cap:`inherit`,join:`inherit`,dashOffset:`inherit`,miterLimit:`inherit`},textStyle:{color:Q.color.secondary},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:`sans-serif`,color:Q.color.tertiary,borderWidth:1,borderColor:Q.color.border},emphasis:{selectorLabel:{show:!0,color:Q.color.quaternary}},selectorPosition:`auto`,selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1},triggerEvent:!1},t}(ow),YB=Fs,XB=G,ZB=z_,QB=function(e){U(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n.newlineDisabled=!1,n}return t.prototype.init=function(){this.group.add(this._contentGroup=new ZB),this.group.add(this._selectorGroup=new ZB),this._isFirstRender=!0},t.prototype.getContentGroup=function(){return this._contentGroup},t.prototype.getSelectorGroup=function(){return this._selectorGroup},t.prototype.render=function(e,t,n){var r=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),e.get(`show`,!0)){var i=e.get(`align`),a=e.get(`orient`);(!i||i===`auto`)&&(i=e.get(`left`)===`right`&&a===`vertical`?`right`:`left`);var o=e.get(`selector`,!0),s=e.get(`selectorPosition`,!0);o&&(!s||s===`auto`)&&(s=a===`horizontal`?`end`:`start`),this.renderInner(i,e,t,n,o,a,s);var c=ew(e,n).refContainer,l=e.getBoxLayoutParams(),u=e.get(`padding`),d=QC(l,c,u),f=this.layoutInner(e,i,d,r,o,s),p=QC(ws({width:f.width,height:f.height},l),c,u);this.group.x=p.x-f.x,this.group.y=p.y-f.y,this.group.markRedraw(),this.group.add(this._backgroundEl=Vz(f,e))}},t.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},t.prototype.renderInner=function(e,t,n,r,i,a,o){var s=this.getContentGroup(),c=Z(),l=t.get(`selectedMode`),u=t.get(`triggerEvent`),d=[];n.eachRawSeries(function(e){!e.get(`legendHoverLink`)&&d.push(e.id)}),XB(t.getData(),function(i,a){var o=this,f=i.get(`name`);if(!this.newlineDisabled&&(f===``||f===` -`)){var p=new ZB;p.newline=!0,s.add(p);return}var m=n.getSeriesByName(f)[0];if(!c.get(f)){if(m){var h=m.getData(),g=h.getVisual(`legendLineStyle`)||{},_=h.getVisual(`legendIcon`),v=h.getVisual(`style`),y=this._createItem(m,f,a,i,t,e,g,v,_,l,r);y.on(`click`,YB(tV,f,null,r,d)).on(`mouseover`,YB(nV,m.name,null,r,d)).on(`mouseout`,YB(rV,m.name,null,r,d)),n.ssr&&y.eachChild(function(e){var t=Zh(e);t.seriesIndex=m.seriesIndex,t.dataIndex=a,t.ssrType=`legend`}),u&&y.eachChild(function(e){o.packEventData(e,t,m,a,f)}),c.set(f,!0)}else n.eachRawSeries(function(o){var s=this;if(!c.get(f)&&o.legendVisualProvider){var p=o.legendVisualProvider;if(!p.containName(f))return;var m=p.indexOfName(f),h=p.getItemVisual(m,`style`),g=p.getItemVisual(m,`legendIcon`),_=fd(h.fill);_&&_[3]===0&&(_[3]=.2,h=W(W({},h),{fill:vd(_,`rgba`)}));var v=this._createItem(o,f,a,i,t,e,{},h,g,l,r);v.on(`click`,YB(tV,null,f,r,d)).on(`mouseover`,YB(nV,null,f,r,d)).on(`mouseout`,YB(rV,null,f,r,d)),n.ssr&&v.eachChild(function(e){var t=Zh(e);t.seriesIndex=o.seriesIndex,t.dataIndex=a,t.ssrType=`legend`}),u&&v.eachChild(function(e){s.packEventData(e,t,o,a,f)}),c.set(f,!0)}},this)}},this),i&&this._createSelector(i,t,r,a,o)},t.prototype.packEventData=function(e,t,n,r,i){var a={componentType:`legend`,componentIndex:t.componentIndex,dataIndex:r,value:i,seriesIndex:n.seriesIndex};Zh(e).eventData=a},t.prototype._createSelector=function(e,t,n,r,i){var a=this.getSelectorGroup();XB(e,function(e){var r=e.type,i=new Yp({style:{x:0,y:0,align:`center`,verticalAlign:`middle`},onclick:function(){n.dispatchAction({type:r===`all`?`legendAllSelect`:`legendInverseSelect`,legendId:t.id})}});a.add(i),Ky(i,{normal:t.getModel(`selectorLabel`),emphasis:t.getModel([`emphasis`,`selectorLabel`])},{defaultText:e.title}),i_(i)})},t.prototype._createItem=function(e,t,n,r,i,a,o,s,c,l,u){var d=e.visualDrawType,f=i.get(`itemWidth`),p=i.get(`itemHeight`),m=i.isSelected(t),h=r.get(`symbolRotate`),g=r.get(`symbolKeepAspect`),_=r.get(`icon`);c=_||c||`roundRect`;var v=$B(c,r,o,s,d,m,u),y=new ZB,b=r.getModel(`textStyle`);if(Is(e.getLegendIcon)&&(!_||_===`inherit`))y.add(e.getLegendIcon({itemWidth:f,itemHeight:p,icon:c,iconRotate:h,itemStyle:v.itemStyle,lineStyle:v.lineStyle,symbolKeepAspect:g}));else{var x=_===`inherit`&&e.getData().getVisual(`symbol`)?h===`inherit`?e.getData().getVisual(`symbolRotate`):h:0;y.add(eV({itemWidth:f,itemHeight:p,icon:c,iconRotate:x,itemStyle:v.itemStyle,lineStyle:v.lineStyle,symbolKeepAspect:g}))}var S=a===`left`?f+5:-5,C=a,w=i.get(`formatter`),T=t;J(w)&&w?T=w.replace(`{name}`,t??``):Is(w)&&(T=w(t));var E=m?b.getTextColor():r.get(`inactiveColor`);y.add(new Yp({style:Jy(b,{text:T,x:S,y:p/2,fill:E,align:C,verticalAlign:`middle`},{inheritColor:E})}));var D=new Wp({shape:y.getBoundingRect(),style:{fill:`transparent`}}),O=r.getModel(`tooltip`);return O.get(`show`)&&Oy({el:D,componentModel:i,itemName:t,itemTooltipOption:O.option}),y.add(D),y.eachChild(function(e){e.silent=!0}),D.silent=!l,this.getContentGroup().add(y),i_(y),y.__legendDataIndex=n,y},t.prototype.layoutInner=function(e,t,n,r,i,a){var o=this.getContentGroup(),s=this.getSelectorGroup();XC(e.get(`orient`),o,e.get(`itemGap`),n.width,n.height);var c=o.getBoundingRect(),l=[-c.x,-c.y];if(s.markRedraw(),o.markRedraw(),i){XC(`horizontal`,s,e.get(`selectorItemGap`,!0));var u=s.getBoundingRect(),d=[-u.x,-u.y],f=e.get(`selectorButtonGap`,!0),p=e.getOrient().index,m=p===0?`width`:`height`,h=p===0?`height`:`width`,g=p===0?`y`:`x`;a===`end`?d[p]+=c[m]+f:l[p]+=u[m]+f,d[1-p]+=c[h]/2-u[h]/2,s.x=d[0],s.y=d[1],o.x=l[0],o.y=l[1];var _={x:0,y:0};return _[m]=c[m]+f+u[m],_[h]=Math.max(c[h],u[h]),_[g]=Math.min(0,u[g]+d[1-p]),_}return o.x=l[0],o.y=l[1],this.group.getBoundingRect()},t.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},t.type=`legend.plain`,t}(KN);function $B(e,t,n,r,i,a,o){function s(e,t){e.lineWidth===`auto`&&(e.lineWidth=t.lineWidth>0?2:0),XB(e,function(n,r){e[r]===`inherit`&&(e[r]=t[r])})}var c=t.getModel(`itemStyle`),l=c.getItemStyle(),u=e.lastIndexOf(`empty`,0)===0?`fill`:`stroke`,d=c.getShallow(`decal`);l.decal=!d||d===`inherit`?r.decal:EF(d,o),l.fill===`inherit`&&(l.fill=r[i]),l.stroke===`inherit`&&(l.stroke=r[u]),l.opacity===`inherit`&&(l.opacity=(i===`fill`?r:n).opacity),s(l,r);var f=t.getModel(`lineStyle`),p=f.getLineStyle();if(s(p,n),l.fill===`auto`&&(l.fill=r.fill),l.stroke===`auto`&&(l.stroke=r.fill),p.stroke===`auto`&&(p.stroke=r.fill),!a){var m=t.get(`inactiveBorderWidth`),h=l[u];l.lineWidth=m===`auto`?r.lineWidth>0&&h?2:0:l.lineWidth,l.fill=t.get(`inactiveColor`),l.stroke=t.get(`inactiveBorderColor`),p.stroke=f.get(`inactiveColor`),p.lineWidth=f.get(`inactiveWidth`)}return{itemStyle:l,lineStyle:p}}function eV(e){var t=e.icon||`roundRect`,n=wT(t,0,0,e.itemWidth,e.itemHeight,e.itemStyle.fill,e.symbolKeepAspect);return n.setStyle(e.itemStyle),n.rotation=(e.iconRotate||0)*Math.PI/180,n.setOrigin([e.itemWidth/2,e.itemHeight/2]),t.indexOf(`empty`)>-1&&(n.style.stroke=n.style.fill,n.style.fill=Q.color.neutral00,n.style.lineWidth=2),n}function tV(e,t,n,r){rV(e,t,n,r),n.dispatchAction({type:`legendToggleSelect`,name:e??t}),nV(e,t,n,r)}function nV(e,t,n,r){n.usingTHL()||n.dispatchAction({type:`highlight`,seriesName:e,name:t,excludeSeriesId:r})}function rV(e,t,n,r){n.usingTHL()||n.dispatchAction({type:`downplay`,seriesName:e,name:t,excludeSeriesId:r})}function iV(e,t,n){var r=e===`allSelect`||e===`inverseSelect`,i={},a=[];n.eachComponent({mainType:`legend`,query:t},function(n){r?n[e]():n[e](t.name),aV(n,i),a.push(n.componentIndex)});var o={};return n.eachComponent(`legend`,function(e){G(i,function(t,n){e[t?`select`:`unSelect`](n)}),aV(e,o)}),r?{selected:o,legendIndex:a}:{name:t.name,selected:o}}function aV(e,t){var n=t||{};return G(e.getData(),function(t){var r=t.get(`name`);if(r!==` -`&&r!==``){var i=e.isSelected(r);n[r]=sc(n,r)?n[r]&&i:i}}),n}function oV(e){e.registerAction(`legendToggleSelect`,`legendselectchanged`,Fs(iV,`toggleSelected`)),e.registerAction(`legendAllSelect`,`legendselectall`,Fs(iV,`allSelect`)),e.registerAction(`legendInverseSelect`,`legendinverseselect`,Fs(iV,`inverseSelect`)),e.registerAction(`legendSelect`,`legendselected`,Fs(iV,`select`)),e.registerAction(`legendUnSelect`,`legendunselected`,Fs(iV,`unSelect`))}var sV=Xh(cV);function cV(e){var t=e.findComponents({mainType:`legend`});t&&t.length&&e.filterSeries(function(e){for(var n=0;nn[i],m=[-d.x,-d.y];t||(m[r]=c[s]);var h=[0,0],g=[-f.x,-f.y],_=X(e.get(`pageButtonGap`,!0),e.get(`itemGap`,!0));p&&(e.get(`pageButtonPosition`,!0)===`end`?g[r]+=n[i]-f[i]:h[r]+=f[i]+_),g[1-r]+=d[a]/2-f[a]/2,c.setPosition(m),l.setPosition(h),u.setPosition(g);var v={x:0,y:0};if(v[i]=p?n[i]:d[i],v[a]=Math.max(d[a],f[a]),v[o]=Math.min(0,f[o]+g[1-r]),l.__rectSize=n[i],p){var y={x:0,y:0};y[i]=Math.max(n[i]-f[i]-_,0),y[a]=v[a],l.setClipPath(new Wp({shape:y})),l.__rectSize=y[i]}else u.eachChild(function(e){e.attr({invisible:!0,silent:!0})});var b=this._getPageInfo(e);return b.pageIndex!=null&&Hv(c,{x:b.contentPosition[0],y:b.contentPosition[1]},p?e:null),this._updatePageInfoView(e,b),v},t.prototype._pageGo=function(e,t,n){var r=this._getPageInfo(t)[e];r!=null&&n.dispatchAction({type:`legendScroll`,scrollDataIndex:r,legendId:t.id})},t.prototype._updatePageInfoView=function(e,t){var n=this._controllerGroup;G([`pagePrev`,`pageNext`],function(r){var i=t[r+`DataIndex`]!=null,a=n.childOfName(r);a&&(a.setStyle(`fill`,i?e.get(`pageIconColor`,!0):e.get(`pageIconInactiveColor`,!0)),a.cursor=i?`pointer`:`default`)});var r=n.childOfName(`pageText`),i=e.get(`pageFormatter`),a=t.pageIndex,o=a==null?0:a+1,s=t.pageCount;r&&i&&r.setStyle(`text`,J(i)?i.replace(`{current}`,o==null?``:o+``).replace(`{total}`,s==null?``:s+``):i({current:o,total:s}))},t.prototype._getPageInfo=function(e){var t=e.get(`scrollDataIndex`,!0),n=this.getContentGroup(),r=this._containerGroup.__rectSize,i=e.getOrient().index,a=pV[i],o=mV[i],s=this._findTargetItemIndex(t),c=n.children(),l=c[s],u=c.length,d=+!!u,f={contentPosition:[n.x,n.y],pageCount:d,pageIndex:d-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!l)return f;var p=v(l);f.contentPosition[i]=-p.s;for(var m=s+1,h=p,g=p,_=null;m<=u;++m)_=v(c[m]),(!_&&g.e>h.s+r||_&&!y(_,h.s))&&(h=g.i>h.i?g:_,h&&(f.pageNextDataIndex??=h.i,++f.pageCount)),g=_;for(var m=s-1,h=p,g=p,_=null;m>=-1;--m)_=v(c[m]),(!_||!y(g,_.s))&&h.i=t&&e.s<=t+r}},t.prototype._findTargetItemIndex=function(e){if(!this._showController)return 0;var t,n=this.getContentGroup(),r;return n.eachChild(function(n,i){var a=n.__legendDataIndex;r==null&&a!=null&&(r=i),a===e&&(t=i)}),t??r},t.type=`legend.scroll`,t}(QB);function gV(e){e.registerAction(`legendScroll`,`legendscroll`,function(e,t){var n=e.scrollDataIndex;n!=null&&t.eachComponent({mainType:`legend`,subType:`scroll`,query:e},function(e){e.setScrollDataIndex(n)})})}function _V(e){hL(lV),e.registerComponentModel(uV),e.registerComponentView(hV),gV(e)}function vV(e){hL(lV),hL(_V)}var yV={label:{enabled:!0},decal:{show:!1}},bV=Ch(),xV=Ch(),SV=Xh(CV);function CV(e,t){var n=e.getModel(`aria`);if(!n.get(`enabled`))return;var r=xV(e).scope||(xV(e).scope={}),i=xs(yV);Ss(i.label,e.getLocaleModel().get(`aria`),!1),Ss(n.option,i,!1),a(),o();function a(){if(n.getModel(`decal`).get(`show`)){var t=Z();e.eachSeries(function(e){e.isColorBySeries()||(bV(e).scope=t.get(e.type)||t.set(e.type,{}))}),e.eachSeries(function(t){if(Is(t.enableAriaDecal)){t.enableAriaDecal();return}var n=t.getData();if(t.isColorBySeries()){var i=dw(t.ecModel,t.name,r,e.getSeriesCount()),a=n.getVisual(`decal`);n.setVisual(`decal`,u(a,i))}else{var o=t.getRawData(),s={},c=bV(t).scope;n.each(function(e){var t=n.getRawIndex(e);s[t]=e});var l=o.count();o.each(function(e){var r=s[e],i=o.getName(e)||e+``,a=dw(t.ecModel,i,c,l),d=n.getItemVisual(r,`decal`);n.setItemVisual(r,`decal`,u(d,a))})}function u(e,t){var n=e?W(W({},t),e):t;return n.dirty=!0,n}})}}function o(){var r=t.getZr().dom;if(r){var i=e.getLocaleModel().get(`aria`),a=n.getModel(`label`);if(a.option=ws(a.option,i),a.get(`enabled`)){if(r.setAttribute(`role`,`img`),a.get(`description`)){r.setAttribute(`aria-label`,a.get(`description`));return}var o=e.getSeriesCount(),u=a.get([`data`,`maxCount`])||10,d=a.get([`series`,`maxCount`])||10,f=Math.min(o,d),p;if(!(o<1)){var m=c();p=m?s(a.get([`general`,`withTitle`]),{title:m}):a.get([`general`,`withoutTitle`]);var h=[],g=o>1?a.get([`series`,`multiple`,`prefix`]):a.get([`series`,`single`,`prefix`]);p+=s(g,{seriesCount:o}),e.eachSeries(function(e,t){if(t1?a.get([`series`,`multiple`,r]):a.get([`series`,`single`,r]),n=s(n,{seriesId:e.seriesIndex,seriesName:e.get(`name`),seriesType:l(e.subType)});var i=e.getData();if(i.count()>u){var c=a.get([`data`,`partialData`]);n+=s(c,{displayCnt:u})}else n+=a.get([`data`,`allData`]);for(var d=a.get([`data`,`separator`,`middle`]),p=a.get([`data`,`separator`,`end`]),m=a.get([`data`,`excludeDimensionId`]),g=[],_=0;_=a}}}for(var l=OV(this),u=l.startIdx;u=0)&&(a=!0)}),a||i.__dirty){var o=n._opts.useDirtyRect&&!DV(i)?i.createRepaintRects(e,t,n._width,n._height):null,s=n._i.layerStack[0],c=!0;if(i.__dirty){c=!1,i.__dirty=!1;var l=i.zlevel===s.zl&&i.zlevel2===s.zl2?n._backgroundColor:null;i.clear(!1,l,o)}VV(i,function(t){var a=n._paintPerCursor(i,t,e,o,c);r&&=a})}},qV),dc.wxa&&UV(this._i,function(e){e&&e.ctx&&e.ctx.draw&&e.ctx.draw()}),r},e.prototype._paintPerCursor=function(e,t,n,r,i){var a=e.ctx;if(r){if(!r.length)t.drawIdx=t.endIdx;else for(var o=this.dpr,s=0;s=t.endIdx},e.prototype._paintPerCursorInRect=function(e,t,n,r,i){for(var a={inHover:!1,allClipped:!1,prevEl:null,viewWidth:this._width,viewHeight:this._height,beforeBrushParam:{contentRetained:i}},o=e.ctx,s=DV(e),c=s&&as.getTime(),l=t.drawIdx,u=t.notClearIdx,d=u>=0?Math.min(u,l):l;d15){d++;break}}}xF(o,a),t.drawIdx=Math.max(d,l)},e.prototype.getLayer=function(e,t){return this._ensureLayer(e,0,t)},e.prototype._ensureLayer=function(e,t,n){t||=0;var r=this._singleCanvas;r&&!this._needsManuallyCompositing&&(e=jV,t=0);var i=HV(this._i,e)[t];return i||(i=LV(`zr_`+e+`.`+t,this,e,t),this._layerConfig[e]&&Ss(i,this._layerConfig[e],!0),(n||r&&e!==jV)&&(i.virtual=!0),this._insertLayer(i,e,t,!1),i.initContext()),i},e.prototype.insertLayer=function(e,t){this._insertLayer(t,e,0,!1)},e.prototype._insertLayer=function(e,t,n,r){var i=this._i,a=i.layers,o=i.layerStack,s=this._domRoot,c=null;if(!(a[t]&&a[t][n])&&FV(e)){for(var l=o.length,u=0;u0&&(c=HV(i,o[u-1].zl)[o[u-1].zl2]),o.splice(u,0,{zl:t,zl2:n}),HV(i,t)[n]=e,!r&&!e.virtual){if(c){var d=c.dom;d.nextSibling?s.insertBefore(e.dom,d.nextSibling):s.appendChild(e.dom)}else s.firstChild?s.insertBefore(e.dom,s.firstChild):s.appendChild(e.dom)}e.painter||=this}},e.prototype.eachLayer=function(e,t){return UV(this._i,function(n,r){e.call(t,n,r)})},e.prototype.eachBuiltinLayer=function(e,t){return UV(this._i,function(n,r){e.call(t,n,r)},WV)},e.prototype.eachOtherLayer=function(e,t){return UV(this._i,function(n,r){e.call(t,n,r)},GV)},e.prototype.getLayers=function(){var e={};return UV(this._i,function(t,n,r){e[t.id]=t}),e},e.prototype._updateLayerStatus=function(e,t){var n=this;if(n._singleCanvas)for(var r=1;r=0;a--){var o=i.get(r[a]);if(!o.used)t.__dirty=!0,i.removeKey(r[a]),r.splice(a,1);else{var s=o.endIdxNew;(DV(t)?s=0;r--){var i=t[r];if(i.zl===e){var a=n[e][i.zl2];if(a.__builtin__)continue;if(t.splice(r,1),n[e][i.zl2]=void 0,!a.virtual){var o=a.dom.parentNode;o&&o.removeChild(a.dom)}}}},e.prototype.resize=function(e,t){if(this._domRoot.style){var n=this._domRoot;n.style.display=`none`;var r=this._opts,i=this.root;e!=null&&(r.width=e),t!=null&&(r.height=t),e=KP(i,0,r),t=KP(i,1,r),n.style.display=``,(this._width!==e||t!==this._height)&&(n.style.width=e+`px`,n.style.height=t+`px`,UV(this._i,function(n){n.resize(e,t)}),this.refresh({paintAll:!0})),this._width=e,this._height=t}else{if(e==null||t==null)return;this._width=e,this._height=t,this._ensureLayer(jV).resize(e,t)}return this},e.prototype.clearLayer=function(e){G(this._i.layers[e],function(e){e&&!e.__builtin__&&e.clear()})},e.prototype.dispose=function(){this.root.innerHTML=``,this.root=this.storage=this._domRoot=this._i=null},e.prototype.getRenderedCanvas=function(e){if(e||={},this._singleCanvas&&!this._compositeManually)return this._i.layers[jV][0].dom;var t=new kV(`image`,this,e.pixelRatio||this.dpr);t.initContext(),t.clear(!1,e.backgroundColor||this._backgroundColor);var n=t.ctx;if(e.pixelRatio<=this.dpr){this.refresh();var r=t.dom.width,i=t.dom.height;UV(this._i,function(e){e.__builtin__?n.drawImage(e.dom,0,0,r,i):e.renderToCanvas&&(n.save(),e.renderToCanvas(n),n.restore())})}else{for(var a={inHover:!1,viewWidth:this._width,viewHeight:this._height,beforeBrushParam:{}},o=this.storage.getDisplayList(!0),s=0,c=o.length;s{if(!a.current)return;let e=qI(a.current,void 0,{renderer:`canvas`});o.current=e,e.on(`click`,e=>c.current?.(e)),e.on(`legendselectchanged`,e=>{s.current={...e.selected}});let t=new ResizeObserver(()=>e.resize());return t.observe(a.current),()=>{t.disconnect(),e.dispose(),o.current=null}},[]),(0,V.useEffect)(()=>{let t=e.series??[],r=new Set(t.map(e=>e.name)),i=Object.fromEntries(Object.entries(s.current).filter(([e])=>r.has(e)));s.current=i;let a=e.legend;o.current?.setOption({...e,...a?{legend:{...a,selected:{...a.selected,...i}}}:{},aria:{...e.aria,enabled:!0,description:n}},{notMerge:!0})},[e,n]),(0,V.useEffect)(()=>{let e=o.current;if(e&&i)return e.group=i,XV.set(i,(XV.get(i)??0)+1),JI(i),()=>{e.group=``;let t=(XV.get(i)??1)-1;if(t>0){XV.set(i,t);return}XV.delete(i),YI(i)}},[i]),(0,H.jsx)(`div`,{ref:a,role:`img`,"aria-label":n,style:{height:t,width:`100%`,minWidth:0,cursor:r?`pointer`:void 0}})}function QV({panel:e,title:t=e.title,result:n,dark:r,height:i,onSelect:a}){let o=(0,V.useMemo)(()=>Yo(e,n.frame,Uo(r)),[e,n.frame,r]);return(0,H.jsx)(ZV,{option:o,height:i,label:`${t}: bar chart`,onClick:a?e=>e.name&&a(e.name):void 0})}function $V({panel:e,title:t=e.title,result:n,dark:r,height:i}){let a=Ro(e,n.frame),o=n.frame.columns.find(e=>e.role===`measure`)?.unit??e.unit,s=e.better??n.better,c=(0,V.useMemo)(()=>Xo({...e,better:s},a,Uo(r),o),[e,s,a,r,o]);return(0,H.jsx)(ZV,{option:c,height:i,label:`${t}: gauge`})}function eH(e,t){return!t.previous||(e.reduce??`window`)===`window`&&!t.previous.totals?null:Ro(e,t.previous)}var tH={ok:`●`,warn:`■`,bad:`◆`},nH={ok:`Healthy`,warn:`Degraded`,bad:`Unhealthy`};function rH({status:e}){return(0,H.jsx)(oe,{color:e,variant:`light`,tt:`none`,leftSection:(0,H.jsx)(`span`,{"aria-hidden":!0,children:tH[e]}),style:{minWidth:`max-content`},children:nH[e]})}function iH({panel:e,result:t}){let n=t.frame,r=Ro(e,n),i=n.columns.find(e=>e.role===`measure`)?.unit??e.unit,a=e.better??t.better??Vo(e.thresholds),o=Ho(r,e.thresholds,a),c=eH(e,t),l=zo(n);return(0,H.jsxs)(s,{h:`100%`,style:{display:`flex`,flexDirection:`column`,justifyContent:`space-between`,gap:4},children:[(0,H.jsxs)(y,{justify:`space-between`,align:`flex-start`,wrap:`nowrap`,gap:`xs`,children:[(0,H.jsx)(g,{fz:30,fw:600,lh:1.1,lts:`-0.02em`,ff:`var(--mantine-font-family-monospace)`,children:Do(i,r)}),o&&(0,H.jsx)(rH,{status:o})]}),c!==null&&r!==null&&(0,H.jsx)(aH,{value:r,previous:c,better:a,unit:i}),(0,H.jsx)(oH,{points:l})]})}function aH({value:e,previous:t,better:n,unit:r}){let i=r===`percent`,a=i?e-t:t===0?e===0?0:1/0:(e-t)/Math.abs(t)*100,o=a>=0,s=Math.abs(a)<2||!n?null:o?n===`higher`:n===`lower`,c=Number.isFinite(a)?i?`${o?`+`:`−`}${Math.abs(a).toFixed(1)} pts`:`${o?`+`:`−`}${Math.abs(a).toFixed(0)}%`:`new`;return(0,H.jsxs)(y,{gap:6,children:[(0,H.jsxs)(g,{size:`xs`,fw:600,c:s===null?`dimmed`:s?`ok`:`bad`,children:[o?`▲`:`▼`,` `,c]}),(0,H.jsx)(g,{size:`xs`,c:`dimmed`,children:`vs previous period`})]})}function oH({points:e}){let t=e.filter(e=>e!==null);if(t.length<2)return null;let n=Math.min(...t),r=Math.max(...t),i=t=>t/(e.length-1)*200,a=e=>30-(e-n)/(r-n||1)*28,o=e.map((t,n)=>t===null?``:`${n===0||e[n-1]===null?`M`:`L`}${i(n).toFixed(1)},${a(t).toFixed(1)}`).join(``);return(0,H.jsx)(`svg`,{viewBox:`0 0 200 32`,preserveAspectRatio:`none`,width:`100%`,height:32,"aria-hidden":!0,children:(0,H.jsx)(`path`,{d:o,fill:`none`,stroke:`var(--mantine-primary-color-filled)`,strokeWidth:1.5,vectorEffect:`non-scaling-stroke`})})}function sH(e){return cH(e)||typeof e==`function`||lH(e)}function cH(e){return typeof e==`function`&&(()=>{let t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function lH(e){return typeof e==`object`&&typeof e.$$typeof==`symbol`&&[`react.memo`,`react.forward_ref`].includes(e.$$typeof.description)}function uH(e,t){return e==null?null:sH(e)?V.createElement(e,t):e}function dH(e){if(`cell`in e&&e.cell){let t=e.cell,n=t.column.columnDef,r=t,i=n;return r.getIsAggregated?.()?uH(i.aggregatedCell??n.cell,t.getContext()):r.getIsPlaceholder?.()?null:uH(n.cell,t.getContext())}return`header`in e&&e.header?uH(e.header.column.columnDef.header,e.header.getContext()):`footer`in e&&e.footer?uH(e.footer.column.columnDef.footer,e.footer.getContext()):null}function fH(e){let t=ce(e.source,e.selector,{compare:ot});return typeof e.children==`function`?e.children(t):e.children}function pH(e){let t=e;return Object.defineProperty(e,"state",{get(){return e.get()}}),`set`in e&&(t.setState=e.set.bind(e)),t}function mH(e){let{createAtom:t,batch:n}=e,r=t(0);return{createOptionsStore:!1,wrapExternalAtoms:!1,addSubscription:()=>{throw Error(`Feature not supported in current reactivity implementation`)},unmount:()=>{throw Error(`Feature not supported in current reactivity implementation`)},schedule:e.schedule??(e=>queueMicrotask(e)),batch:n,untrack:e=>e(),createReadonlyAtom:(e,n)=>{let i=n?.compare??Object.is,a=!1,o,s=()=>{let t=e();return(!a||!i(o,t))&&(o=t,a=!0),o},c=t(()=>(r.get(),s()),{compare:i});return{get:s,subscribe:c.subscribe.bind(c)}},createWritableAtom:(e,n)=>t(e,{compare:n?.compare}),commit:()=>{r.set(e=>e+1)}}}function hH(e,t=Object.is){let n=!1,r;return{get:e.get,markCommitted:e=>{r=e,n=!0},subscribe:i=>e.subscribe(e=>{(!n||!t(r,e))&&i(e)})}}function gH(){return mH({createAtom:ge,batch:he})}function _H(e,t){return typeof e==`function`?e(t):e}function vH(e){if(Array.isArray(e))return e.map(vH);if(e&&typeof e==`object`){let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)return e;let n=t===null?bH():{},r=Object.keys(e);for(let t=0;t{(t.options.atoms?.[e]??t.baseAtoms[e]).set(e=>_H(n,e))}}function CH(e){if(typeof e!=`object`||!e)return!1;if(Array.isArray(e))return!0;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function wH(e){return Reflect.ownKeys(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}var TH=3;function EH(e,t){return DH(e,t,TH)}function DH(e,t,n){if(Object.is(e,t))return!0;if(n<=0||!CH(e)||!CH(t)||(Array.isArray(e)||Array.isArray(t))&&(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length))return!1;let r=wH(e),i=wH(t);if(r.length!==i.length)return!1;let a=e,o=t;for(let e=0;e{let t=_H(n,e);return r(e,t)?e:t})}function kH(e){return e instanceof Function}function AH(e,t){let n=[],r=e=>{e.forEach(e=>{n.push(e);let i=t(e);i.length&&r(i)})};return r(e),n}var jH=({fn:e,memoDeps:t,onAfterCompare:n,onAfterUpdate:r,onBeforeCompare:i,onBeforeUpdate:a})=>{let o=[],s;return c=>{i?.();let l=t?.(c),u=!l||l.length!==o?.length;if(!u&&l){for(let e=0;e{if(!t){t=!0;return}e()}}function NH({feature:e,fnName:t,objectId:n,onAfterUpdate:r,table:i,...a}){let o=()=>{if(!r)return;let{schedule:e,untrack:t}=i._reactivity;e(()=>t(()=>r()))},s={onAfterUpdate:()=>{o()}};return jH({...a,...s})}function PH(e,t=`_`){let[n,r]=e.split(t);return{fnKey:r,fnName:`${n}.${r}`,parentName:n}}function FH(e,t,n){for(let[r,{fn:i,memoDeps:a}]of Object.entries(n)){let{fnKey:n,fnName:o}=PH(r);t[n]=a?NH({memoDeps:a,fn:i,fnName:o,table:t,feature:e}):i}}function IH(e,t,n,r){for(let[i,{fn:a,memoDeps:o}]of Object.entries(r)){let{fnKey:r,fnName:s}=PH(i);if(o){let i=`_memo_${r}`;t[r]=function(...t){if(!this[i]){let t=this;this[i]=NH({memoDeps:e=>o(t,e),fn:(...e)=>a(t,...e),fnName:s,objectId:t.id,table:n,feature:e})}return this[i](...t)}}else t[r]=function(...e){return a(this,...e)}}}function LH(e,t,n,...r){return e[t]?.(...r)??n(e,...r)}function RH(e){return e.row.getValue(e.column.id)}function zH(e){return e.getValue()??e.table.options.renderFallbackValue}function BH(e){return{table:e.table,column:e.column,row:e.row,cell:e,getValue:()=>e.getValue(),renderValue:()=>e.renderValue()}}var VH={assignCellPrototype:(e,t)=>{IH(`coreCellsFeature`,e,t,{cell_getValue:{fn:e=>RH(e)},cell_renderValue:{fn:e=>zH(e)},cell_getContext:{fn:e=>BH(e),memoDeps:e=>[e]}})}};function HH(e){if(!e._headerPrototype){e._headerPrototype={table:e};let t=Object.values(e._features);for(let n=0;nLH(e,`getIsVisible`,GH)):(xH(t,e.id)?t[e.id]:void 0)??!0}function KH(e){return e.getAllLeafColumns().filter(e=>LH(e,`getIsVisible`,GH))}function qH(e,t=1){let n=t;for(let r=0;r0&&ZH(s,t-1,n,r,i,a)}function QH(e){for(let t=0;t{let n=t;for(let t=0;te[i.accessorKey]}if(!s)throw Error();let l=eU(e),u=Object.create(l);u.accessorFn=c,u.columnDef=i,u.columns=[],u.depth=n,u.id=`${String(s)}`,u.parent=r;let d=e._columnInstanceInitFns;for(let e=0;e{let r=[];if(!t?.length)r=n;else{let e=new Map;for(let t=0;t!n.includes(e.id));if(r===`remove`)return i;let a=new Map;for(let e=0;ee.getFlatColumns())]}function aU(e){if(e.columns.length){let t=e.columns.flatMap(e=>e.getLeafColumns());return LH(e.table,`getOrderColumns`,nU)(t)}return[e]}function oU(e){return{header:e=>{let t=e.header.column.columnDef;return t.accessorKey?t.accessorKey:t.accessorFn?t.id:null},cell:e=>e.renderValue()?.toString?.()??null,...Object.values(e._features).reduce((e,t)=>Object.assign(e,t.getDefaultColumnDef?.()),{}),...e.options.defaultColumn}}function sU(e,t,n,r=0){let i=Array(t.length);for(let a=0;ae.getFlatColumns())}function uU(e){let t=bH(),n=e.getAllFlatColumns();for(let e=0;ee.getLeafColumns());return LH(e,`getOrderColumns`,nU)(t)}function fU(e){let t=bH(),n=e.getAllLeafColumns();for(let e=0;e{IH(`coreColumnsFeature`,e,t,{column_getFlatColumns:{fn:e=>iU(e),memoDeps:e=>[e.table.options.columns]},column_getLeafColumns:{fn:e=>aU(e),memoDeps:e=>[e.table.atoms.columnOrder?.get(),e.table.atoms.grouping?.get(),e.table.options.columns,e.table.options.groupedColumnMode]}})},constructTableAPIs:e=>{FH(`coreColumnsFeature`,e,{table_getDefaultColumnDef:{fn:()=>oU(e),memoDeps:()=>[e.options.defaultColumn]},table_getAllColumns:{fn:()=>cU(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumns:{fn:()=>lU(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumnsById:{fn:()=>uU(e),memoDeps:()=>[e.options.columns]},table_getAllLeafColumns:{fn:()=>dU(e),memoDeps:()=>[e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode]},table_getAllLeafColumnsById:{fn:()=>fU(e),memoDeps:()=>[e.getAllLeafColumns()]},table_getColumn:{fn:t=>pU(e,t)}})}};function hU(e,t){for(let n=0;n!t.includes(e.id)&&!n.includes(e.id));return $H(r,[...o,...c,...s],e)}function yU(e){return[...e.getHeaderGroups()].reverse()}function bU(e){let t=e.getHeaderGroups(),n=[];for(let e=0;e{IH(`coreHeadersFeature`,e,t,{header_getLeafHeaders:{fn:e=>gU(e),memoDeps:e=>[e.column.table.options.columns]},header_getContext:{fn:e=>_U(e),memoDeps:e=>[e.column.table.options.columns]}})},constructTableAPIs:e=>{FH(`coreHeadersFeature`,e,{table_getHeaderGroups:{fn:()=>vU(e),memoDeps:()=>[e.options.columns,e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.atoms.columnPinning?.get(),e.atoms.columnVisibility?.get(),e.options.groupedColumnMode]},table_getFooterGroups:{fn:()=>yU(e),memoDeps:()=>[e.getHeaderGroups()]},table_getFlatHeaders:{fn:()=>bU(e),memoDeps:()=>[e.getHeaderGroups()]},table_getLeafHeaders:{fn:()=>xU(e),memoDeps:()=>[e.getHeaderGroups()]}})}};function CU(e){if(!e._rowPrototype){e._rowPrototype={table:e};let t=Object.values(e._features);for(let n=0;n{let s=CU(e),c=Object.create(s);c._displayIndexCache=-1,c._uniqueValuesCache=bH(),c._valuesCache=bH(),c.depth=i,c.id=t,c.index=r,c.original=n,c.parentId=o,c.subRows=a??[];let l=e._rowInstanceInitFns;for(let e=0;e{let i=e.getValue(r),a=n.getValue(r),o=t.resolveDataValue;return o&&(i=o(i),a=o(a)),t.sort(i,a,e,n,r)},e);return t}var DU=EU({resolveDataValue:e=>jU(e).toLowerCase(),sort:(e,t)=>MU(e,t)});EU({resolveDataValue:e=>jU(e),sort:(e,t)=>MU(e,t)}),EU({resolveDataValue:e=>jU(e).toLowerCase(),sort:(e,t)=>kU(e,t)}),EU({resolveDataValue:e=>jU(e),sort:(e,t)=>kU(e,t)}),EU({resolveDataValue:e=>AU(e),sort:(e,t)=>e>t?1:ekU(e,t)});function kU(e,t){return e===t?0:e>t?1:-1}function AU(e){return e instanceof Date?e.getTime():e}function jU(e){return typeof e==`number`?isNaN(e)||e===1/0||e===-1/0?``:String(e):typeof e==`string`?e:``}function MU(e,t){let n=0,r=0,i=e.length,a=t.length;for(;n=48&&e<=57}function PU(e,t,n){let r=t+1;for(;ro)return 1;if(o>a)return-1}return o>s?1:s>o?-1:0}function IU(e,t,n,r,i,a){let o=t;for(;oi?1:i>t?-1:0}let u=parseInt(e.slice(t,n),10),d=parseInt(r.slice(i,a),10);return u>d?1:d>u?-1:0}function LU(e,t,n){let r=0;for(let i=t;iBU(e))}function HU(e){e.atoms.expanded&&(e.options.autoResetAll??e.options.autoResetExpanded??!e.options.manualExpanding)&&e._reactivity.schedule(()=>UU(e))}function UU(e,t){let n=e.initialState.expanded;OH(e,`expanded`,t?bH():n===!0||Object.assign(bH(),vH(n??{})))}var WU=0;function GU(e){if(e.options.autoResetAll??e.options.autoResetPageIndex??!e.options.manualPagination){if((e.atoms.pagination?.get()?.pageIndex??WU)===WU)return;JU(e,!0)}}function KU(e,t){OH(e,`pagination`,t)}function qU(e,t){KU(e,n=>{let r=_H(t,n.pageIndex),i=e.options.pageCount===void 0||e.options.pageCount===-1?2**53-1:e.options.pageCount-1;return r=Math.max(0,Math.min(r,i)),{...n,pageIndex:r}})}function JU(e,t){qU(e,t?WU:e.initialState.pagination?.pageIndex??WU)}function YU(){return[]}function XU(e,t){OH(e,`sorting`,t)}function ZU(e,t){XU(e,t?[]:vH(e.initialState.sorting??[]))}function QU(e){e.atoms.sorting&&(e.options.autoResetAll??e.options.autoResetSorting??!1)&&ZU(e)}function $U(e){let t=e.table._rowModelFns.sortFns,n=e.table.getFilteredRowModel().flatRows.slice(0,10),r,i=!1;for(let t=0;t1)){r=`alphanumeric`;break}}if(!r&&i&&(r=`text`),r){let e=t?.[r];if(e||r===`alphanumeric`&&(e=t?.text),e)return e}return OU}function eW(e){let t=e.table.getFilteredRowModel().flatRows.slice(0,10);for(let n=0;n{let o=a.findIndex(t=>t.id===e.id),s=o===-1?void 0:a[o],c=[],l,u=i?t:r===`desc`,d=!!(a.length&&oW(e)&&n);return l=d?s?`toggle`:`add`:s?`toggle`:`replace`,l===`toggle`&&(i||r||(l=`remove`)),l===`add`?(c=[...a,{id:e.id,desc:u}],c.splice(0,c.length-(e.table.options.maxMultiSortColCount??2**53-1))):c=l===`toggle`?d?a.map(t=>t.id===e.id?{...t,desc:u}:t):[{id:e.id,desc:u}]:l===`remove`?d?a.filter(t=>t.id!==e.id):[]:[{id:e.id,desc:u}],c})}function rW(e){return e.columnDef.sortDescFirst??e.table.options.sortDescFirst??eW(e)===`desc`?`desc`:`asc`}function iW(e,t){let n=rW(e),r=sW(e);return r?r!==n&&(e.table.options.enableSortingRemoval??!0)&&(!t||(e.table.options.enableMultiRemove??!0))?!1:r===`desc`?`asc`:`desc`:n}function aW(e){return(e.columnDef.enableSorting??!0)&&(e.table.options.enableSorting??!0)&&!!e.accessorFn}function oW(e){return e.columnDef.enableMultiSort??e.table.options.enableMultiSort??!!e.accessorFn}function sW(e){let t=e.table.atoms.sorting?.get()?.find(t=>t.id===e.id);return t?t.desc?`desc`:`asc`:!1}function cW(e){return e.table.atoms.sorting?.get()?.findIndex(t=>t.id===e.id)??-1}function lW(e){XU(e.table,t=>t.length?t.filter(t=>t.id!==e.id):[])}function uW(e){let t=aW(e);return n=>{t&&nW(e,void 0,oW(e)?e.table.options.isMultiSortEvent?.(n):!1)}}function dW(){return e=>NH({feature:`coreRowModelsFeature`,table:e,fnName:`table.getCoreRowModel`,memoDeps:()=>[e.options.data],fn:()=>pW(e,e.options.data),onAfterUpdate:MH(()=>{HU(e),GU(e),QU(e),VU(e)})})}function fW(e,t,n,r=0,i){let a=[];for(let o=0;o{FH(`coreRowModelsFeature`,e,{table_getCoreRowModel:{fn:()=>mW(e)},table_getPreFilteredRowModel:{fn:()=>hW(e)},table_getFilteredRowModel:{fn:()=>gW(e)},table_getPreGroupedRowModel:{fn:()=>_W(e)},table_getGroupedRowModel:{fn:()=>vW(e)},table_getPreSortedRowModel:{fn:()=>yW(e)},table_getSortedRowModel:{fn:()=>bW(e)},table_getPreExpandedRowModel:{fn:()=>xW(e)},table_getExpandedRowModel:{fn:()=>SW(e)},table_getPrePaginatedRowModel:{fn:()=>CW(e)},table_getPaginatedRowModel:{fn:()=>wW(e)},table_getRowModel:{fn:()=>TW(e)}})}};function DW(e){if(!e._cellPrototype){e._cellPrototype={table:e};let t=Object.values(e._features);for(let n=0;n{t._displayIndexCache=e.length,e.push(t),t.subRows.length&&t.getIsExpanded?.()&&t.subRows.forEach(n)};return t.forEach(n),e}for(let e=0;ee.subRows)}function FW(e){let t=e.getCoreRowModel().flatRows,n=0;for(let e=0;e{IH(`coreRowsFeature`,e,t,{row_getDisplayIndex:{fn:e=>kW(e)},row_getAllCellsByColumnId:{fn:e=>zW(e),memoDeps:e=>[e.getAllCells()]},row_getAllCells:{fn:e=>RW(e),memoDeps:e=>[e.table.getAllLeafColumns()]},row_getLeafRows:{fn:e=>PW(e),memoDeps:e=>[e.subRows]},row_getParentRow:{fn:e=>IW(e)},row_getParentRows:{fn:e=>LW(e)},row_getUniqueValues:{fn:(e,t)=>MW(e,t)},row_getValue:{fn:(e,t)=>jW(e,t)},row_renderValue:{fn:(e,t)=>NW(e,t)}})},constructTableAPIs:e=>{FH(`coreRowsFeature`,e,{table_getRowsInDisplayOrder:{fn:()=>AW(e),memoDeps:()=>[e.getPrePaginatedRowModel().rows,e.options.paginateExpandedRows,e.options.paginateExpandedRows===!1?e.atoms.expanded?.get():void 0]},table_getRowId:{fn:(t,n,r)=>BW(t,e,n,r)},table_getRow:{fn:(t,n)=>VW(e,t,n)},table_getMaxSubRowDepth:{fn:()=>FW(e),memoDeps:()=>[e.getCoreRowModel()]}})}};function UW(e,t,n=(e,t)=>e===t){let r=t===void 0?e.options.state:t;e._reactivity.batch(()=>{if(r)for(let t in r){let i=e.baseAtoms[t];if(!i)continue;let a=r[t],o=a===void 0?e.initialState[t]:a;n(e._reactivity.untrack(()=>i.get()),o)||i.set(()=>o)}})}function WW(e,t,n=(e,t)=>e===t){e._reactivity.batch(()=>{UW(e,t,n),e._reactivity.commit?.()})}function GW(e){let t=vH(e.initialState);e._reactivity.batch(()=>{let n=Object.keys(t);for(let r=0;rr):e.options=r,n?.syncExternalState!==!1&&WW(e,r.state??null)}var JW={coreCellsFeature:VH,coreColumnsFeature:mU,coreHeadersFeature:SU,coreRowModelsFeature:EW,coreRowsFeature:HW,coreTablesFeature:{constructTableAPIs:e=>{FH(`coreTablesFeature`,e,{table_reset:{fn:()=>GW(e)},table_setOptions:{fn:t=>qW(e,t)}})}}};function YW(e){return e}function XW(e,t={}){return Object.values(e).forEach(e=>{t=e.getInitialState?.(t)??t}),vH(t)}function ZW(e){let t=e.features.coreReactivityFeature,{aggregationFns:n,columnMeta:r,coreRowModel:i,expandedRowModel:a,facetedMinMaxValues:o,facetedRowModel:s,facetedUniqueValues:c,filterFns:l,filterMeta:u,filteredRowModel:d,groupedRowModel:f,paginatedRowModel:p,sortFns:m,sortedRowModel:h,tableMeta:g,..._}=e.features,v={_cellInstanceInitFns:[],_columnInstanceInitFns:[],_features:{...JW,..._},_headerGroupInstanceInitFns:[],_headerInstanceInitFns:[],_reactivity:t,_rowInstanceInitFns:[],_rowModelFns:{aggregationFns:n,filterFns:l,sortFns:m},_rowModels:{},atoms:{},baseAtoms:{}},y=Object.values(v._features),b={...y.reduce((e,t)=>Object.assign(e,t.getDefaultTableOptions?.(v)),{}),...e};if(t.wrapExternalAtoms&&b.atoms)for(let[e,n]of Object.entries(b.atoms)){let r=n,i=t.createWritableAtom(r.get(),{debugName:`externalAtom/${e}`});b.atoms[e]=i;let a=!1,o=r.subscribe(e=>{a||i.set(e)}),s=i.subscribe(e=>{a=!0,r.set(e),a=!1});t.addSubscription(o),t.addSubscription(s)}t.createOptionsStore?(v.optionsStore=t.createWritableAtom(b,{debugName:`table/optionsStore`}),Object.defineProperty(v,"options",{configurable:!0,enumerable:!0,get(){return v.optionsStore.get()},set(e){v.optionsStore.set(()=>e)}})):v.options=b,v.initialState=XW(v._features,v.options.initialState);let x=Object.keys(v.initialState);for(let e=0;e{let e=v.options,t=e.atoms?.[n],r=t?t.get():v.baseAtoms[n].get();if(t)return r;let i=e.state;if(i&&xH(i,n)){let e=i[n];return e===void 0?v.initialState[n]:e}return r},{debugName:`table/atoms/${n}`})}UW(v),v.store=pH(t.createReadonlyAtom(()=>{let e={};for(let t=0;te.shiftKey}},assignColumnPrototype(e,t){IH(`rowSortingFeature`,e,t,{column_getAutoSortFn:{fn:e=>$U(e)},column_getAutoSortDir:{fn:e=>eW(e)},column_getSortFn:{fn:e=>tW(e)},column_toggleSorting:{fn:(e,t,n)=>nW(e,t,n)},column_getFirstSortDir:{fn:e=>rW(e)},column_getNextSortingOrder:{fn:(e,t)=>iW(e,t)},column_getCanSort:{fn:e=>aW(e)},column_getCanMultiSort:{fn:e=>oW(e)},column_getIsSorted:{fn:e=>sW(e)},column_getSortIndex:{fn:e=>cW(e)},column_clearSorting:{fn:e=>lW(e)},column_getToggleSortingHandler:{fn:e=>uW(e)}})},constructTableAPIs(e){FH(`rowSortingFeature`,e,{table_setSorting:{fn:t=>XU(e,t)},table_resetSorting:{fn:t=>ZU(e,t)}})}};function $W(){return e=>{let t=e;return NH({feature:`rowSortingFeature`,table:t,fnName:`table.getSortedRowModel`,memoDeps:()=>[t.atoms.sorting?.get(),t.getPreSortedRowModel()],fn:()=>eG(t),onAfterUpdate:MH(()=>GU(t))})}}function eG(e){let t=e.getPreSortedRowModel(),n=e.atoms.sorting?.get();if(!t.rows.length||!n?.length)return t;let r=[],i=n.filter(t=>{let n=e.getColumn(t.id);return n?aW(n):!1});if(!i.length)return t;let a=[];for(let t=0;t{for(let n=0;n{let t=e.slice();t.sort(o);let n=!1;for(let i=0;i`u`?V.useEffect:V.useLayoutEffect;function nG(e,t){let[{table:n,rootSource:r}]=(0,V.useState)(()=>{let t=ZW({...e,features:{coreReactivityFeature:gH(),...e.features}});return t.Subscribe=(e=>fH({...e,source:e.source??t.store})),t.FlexRender=dH,{table:t,rootSource:hH(t.store,ot)}}),i=n;qW(i,t=>({...t,...e}),{syncExternalState:!1});let a=i.options.state,o=r.get(),s=ce(r,t,{compare:ot});return tG(()=>{r.markCommitted(o),WW(i,a??null,ot)}),(0,V.useMemo)(()=>({...n,options:e,state:s}),[n,e,s])}var rG=YW({rowSortingFeature:QW,sortedRowModel:$W(),sortFns:{basic:OU,alphanumeric:DU}});function iG({panel:e,result:t,onSelect:n}){let r=t.frame,i=(0,V.useMemo)(()=>Array.from({length:r.rows},(e,t)=>r.columns.map((e,n)=>r.values[n][t])),[r]),a=r.columns.findIndex(e=>e.role===`measure`),o=(0,V.useMemo)(()=>r.columns.map((e,t)=>e.role===`measure`?Math.max(0,...r.values[t].filter(e=>typeof e==`number`)):0),[r]),c=(0,V.useMemo)(()=>r.columns.map((n,r)=>({id:n.name,header:n.name,accessorFn:e=>e[r],cell:i=>{let c=i.getValue();if(n.role===`measure`&&typeof c==`number`){let i=n.unit??e.unit,l=r===a?Ho(c,e.thresholds,e.better??t.better):null;return(0,H.jsxs)(s,{style:{display:`flex`,alignItems:`center`,justifyContent:`flex-end`,gap:8},children:[(0,H.jsx)(g,{size:`sm`,ff:`monospace`,c:l===`warn`||l===`bad`?l:void 0,children:Do(i,c)}),r===a&&o[r]>0&&(0,H.jsx)(s,{w:56,h:6,bg:`var(--mantine-color-default-border)`,style:{borderRadius:3,overflow:`hidden`,flex:`none`},children:(0,H.jsx)(s,{h:`100%`,w:`${c/o[r]*100}%`,bg:`var(--mantine-primary-color-filled)`})})]})}if(n.type===`time`&&typeof c==`number`)return(0,H.jsx)(g,{size:`sm`,ff:`monospace`,children:new Date(c).toLocaleString()});let l=c===null?`—`:String(c);return(0,H.jsx)(g,{size:`sm`,className:`dashboard-dimension-nowrap`,title:l,ff:n.type===`json`||/(_id|^id)$/.test(n.name)?`monospace`:void 0,children:l})},sortFn:n.role===`measure`?`basic`:`alphanumeric`})),[r,e,t.better,a,o]),[l,u]=(0,V.useState)([]),d=nG({features:rG,data:i,columns:c,state:{sorting:l},onSortingChange:u}),f=r.columns.findIndex(e=>e.role===`dimension`);return(0,H.jsxs)(s,{children:[(0,H.jsxs)(Qe,{className:`dashboard-table`,stickyHeader:!0,highlightOnHover:!!n,fz:`sm`,verticalSpacing:6,children:[(0,H.jsx)(Qe.Thead,{children:d.getHeaderGroups().map(e=>(0,H.jsx)(Qe.Tr,{children:e.headers.map(e=>{let t=r.columns[e.index]?.role===`measure`;return(0,H.jsx)(Qe.Th,{"aria-sort":e.column.getIsSorted()===`asc`?`ascending`:e.column.getIsSorted()===`desc`?`descending`:`none`,ta:t?`right`:void 0,children:(0,H.jsxs)(ne,{onClick:e.column.getToggleSortingHandler(),fz:`xs`,c:`dimmed`,ff:`monospace`,fw:500,children:[(0,H.jsx)(d.FlexRender,{header:e}),e.column.getIsSorted()===`asc`?(0,H.jsx)(Ar,{size:10}):e.column.getIsSorted()===`desc`?(0,H.jsx)(Or,{size:10}):null]})},e.id)})},e.id))}),(0,H.jsx)(Qe.Tbody,{children:d.getRowModel().rows.map(e=>(0,H.jsx)(Qe.Tr,{tabIndex:n&&f>=0?0:void 0,onKeyDown:t=>{n&&f>=0&&(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),n(String(e.original[f]??``)))},style:{cursor:n?`pointer`:void 0},onClick:n&&f>=0?()=>n(String(e.original[f]??``)):void 0,children:e.getAllCells().map(e=>(0,H.jsx)(Qe.Td,{children:(0,H.jsx)(d.FlexRender,{cell:e})},e.id))},e.id))})]}),r.truncated&&(0,H.jsxs)(g,{size:`xs`,c:`dimmed`,mt:4,children:[`Showing the first `,r.rows,` rows.`]})]})}function aG({panel:e}){return(0,H.jsx)(`div`,{className:`panel-markdown`,children:(0,H.jsx)(Ye,{remarkPlugins:[Xe],skipHtml:!0,disallowedElements:[`img`],components:{a:({children:e,...t})=>(0,H.jsx)(`a`,{...t,target:`_blank`,rel:`noopener noreferrer`,children:e})},children:e.content??``})})}function oG({panel:e,title:t=e.title,result:n,dark:r,height:i,group:a,onSelect:o}){let s=(0,V.useMemo)(()=>Jo(e,n,Uo(r)),[e,n.frame,n.previous,n.shift_ms,r]),c=o&&n.frame.columns.some(e=>e.role===`dimension`)?e=>{e.seriesName&&!e.seriesName.endsWith(` · previous`)&&e.seriesName!==`Other`&&o(e.seriesName)}:void 0;return(0,H.jsx)(ZV,{option:s,height:i,label:`${t}: time series`,group:a,onClick:c})}function sG({panel:e,title:t,result:n,dark:r,height:i,group:a,onSelect:o}){if(e.viz===`text`)return(0,H.jsx)(aG,{panel:e});if(!n?.frame)return null;switch(e.viz){case`stat`:return(0,H.jsx)(iH,{panel:e,result:n});case`gauge`:return(0,H.jsx)($V,{panel:e,title:t,result:n,dark:r,height:i});case`timeseries`:return(0,H.jsx)(oG,{panel:e,title:t,result:n,dark:r,height:i,group:a,onSelect:o});case`bar`:return(0,H.jsx)(QV,{panel:e,title:t,result:n,dark:r,height:i,onSelect:o});case`table`:return(0,H.jsx)(iG,{panel:e,result:n,height:i,onSelect:o})}}function cG({panel:e,title:t,result:n,loading:r,height:i,group:a,editing:o,agentAvailable:c,onSelect:l,onView:u,onInspect:d,onCopyLink:f,onExplain:p,onRemove:m,onDuplicate:_,staleAt:v}){let b=Ge(`light`)===`dark`,[x,S]=(0,V.useState)(Date.now);(0,V.useEffect)(()=>{if(!v)return;S(Date.now());let e=window.setInterval(()=>S(Date.now()),3e4);return()=>window.clearInterval(e)},[v]);let C=Math.max(80,i-52);return(0,H.jsxs)(h,{withBorder:!0,radius:`md`,h:`100%`,p:`sm`,style:{display:`flex`,flexDirection:`column`,minWidth:0},"data-panel":e.id,children:[(0,H.jsxs)(y,{justify:`space-between`,wrap:`nowrap`,gap:`xs`,mb:6,className:o?`panel-drag`:void 0,style:{cursor:o?`grab`:void 0},children:[(0,H.jsxs)(y,{gap:6,wrap:`nowrap`,miw:0,children:[(0,H.jsx)(g,{fw:600,size:`sm`,truncate:!0,children:t}),e.description&&(0,H.jsx)(He,{label:e.description,multiline:!0,w:260,children:(0,H.jsx)(rt,{variant:`transparent`,color:`gray`,size:`xs`,"aria-label":`${t} description`,children:(0,H.jsx)(Ir,{size:14})})}),r&&n&&(0,H.jsx)(L,{size:12,"aria-label":`Refreshing`})]}),(0,H.jsxs)(fe,{position:`bottom-end`,withinPortal:!0,children:[(0,H.jsx)(fe.Target,{children:(0,H.jsx)(rt,{variant:`subtle`,color:`gray`,size:`sm`,"aria-label":`${t} menu`,children:(0,H.jsx)(B,{size:18,weight:`bold`})})}),(0,H.jsxs)(fe.Dropdown,{children:[(0,H.jsx)(fe.Item,{leftSection:(0,H.jsx)(Er,{size:14}),onClick:u,children:`View`}),e.viz!==`text`&&(0,H.jsx)(fe.Item,{leftSection:(0,H.jsx)(se,{size:14}),onClick:d,children:`Inspect`}),c&&(0,H.jsx)(fe.Item,{leftSection:(0,H.jsx)(Mr,{size:14}),onClick:p,children:`Explain in chat`}),(0,H.jsx)(fe.Item,{leftSection:(0,H.jsx)(te,{size:14}),onClick:f,children:`Copy link`}),_&&(0,H.jsx)(fe.Item,{leftSection:(0,H.jsx)(te,{size:14}),onClick:_,children:`Duplicate`}),m&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(fe.Divider,{}),(0,H.jsx)(fe.Item,{color:`bad`,leftSection:(0,H.jsx)(Ne,{size:14}),onClick:m,children:`Remove panel`})]})]})]})]}),(0,H.jsx)(s,{style:{flex:1,minHeight:0,overflow:`auto`},children:!n&&e.viz!==`text`?(0,H.jsx)(T,{h:`100%`,children:(0,H.jsx)(L,{size:`sm`})}):n?.status===`error`?(0,H.jsx)(T,{h:`100%`,children:(0,H.jsxs)(F,{align:`center`,gap:4,maw:420,children:[(0,H.jsxs)(y,{gap:6,children:[(0,H.jsx)(at,{size:18,weight:`fill`,color:`var(--mantine-color-bad-filled)`}),(0,H.jsx)(g,{size:`sm`,fw:500,c:`bad`,children:`This panel failed`})]}),(0,H.jsx)(g,{size:`xs`,c:`dimmed`,ta:`center`,style:{overflowWrap:`anywhere`},children:n.error}),c&&(0,H.jsx)(I,{size:`compact-xs`,variant:`light`,onClick:p,children:`Ask Fanout to fix it`})]})}):n?.status===`empty`?(0,H.jsx)(T,{h:`100%`,children:(0,H.jsxs)(F,{align:`center`,gap:4,maw:420,children:[(0,H.jsx)(Rr,{size:20,color:`var(--mantine-color-dimmed)`}),(0,H.jsx)(g,{size:`sm`,c:`dimmed`,ta:`center`,children:n.diagnosis||`No data in this time range.`})]})}):(0,H.jsx)(sG,{panel:e,title:t,result:n,dark:b,height:C,group:a,onSelect:l})}),(v||n?.frame?.truncated||n?.previous?.truncated)&&(0,H.jsxs)(g,{size:`xs`,c:v?`warn`:`dimmed`,mt:6,role:`status`,children:[v?`Stale: last updated ${lG(v,x)}`:``,n?.frame?.truncated||n?.previous?.truncated?`${v?` · `:``}Truncated: showing limited data`:``]})]})}function lG(e,t){let n=Math.max(0,Math.floor((t-e)/1e3));if(n<60)return`just now`;let r=Math.floor(n/60);if(r<60)return`${r} minute${r===1?``:`s`} ago`;let i=Math.floor(r/60);return`${i} hour${i===1?``:`s`} ago`}var uG=bo(vo),dG=12,fG=e=>e*40+(e-1)*dG,pG=(e,t)=>e.replace(/\$([a-z][a-z0-9_]*)/g,(e,n)=>{let r=t[n];return r===void 0?e:r===`$__all`?`all`:Array.isArray(r)?r.join(`, `):r}),mG=0;function hG(e){let t;do t=`p_${Date.now().toString(36)}_${(++mG).toString(36)}_${Math.random().toString(36).slice(2,10)}`;while(e.some(e=>e.id===t));return t}function gG({dashboardId:e,version:t,spec:n,vars:r,results:i,fetching:a,fetchingIds:o=[],staleAt:s=new Map,time:c=n.time,onEditExit:l,editing:u,view:d,agentAvailable:f,onOpenChat:p,onVariable:m,onView:h,onVisible:v}){let b=qe(),[x,S]=(0,V.useState)(()=>n.panels.map(e=>({i:e.id,x:e.grid?.x??0,y:e.grid?.y??0,w:e.grid?.w??6,h:e.grid?.h??6})));(0,V.useEffect)(()=>{S(n.panels.map(e=>({i:e.id,x:e.grid?.x??0,y:e.grid?.y??0,w:e.grid?.w??6,h:e.grid?.h??6})))},[n]);let[C,w]=(0,V.useState)(`lg`),T=u&&C===`lg`,[E,D]=(0,V.useState)(()=>window.innerHeight),[O,k]=(0,V.useState)();(0,V.useEffect)(()=>{let e=()=>D(window.innerHeight);return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]);let[A,j]=(0,V.useState)(),M=(0,V.useRef)(null),N=(0,V.useRef)(v);N.current=v,(0,V.useEffect)(()=>{if(!M.current||typeof IntersectionObserver>`u`)return;let e=new Set(n.panels.map(e=>e.id)),t=new IntersectionObserver(t=>{for(let n of t){let t=n.target.dataset.panel;t&&(n.isIntersecting?e.add(t):e.delete(t))}d&&n.panels.some(e=>e.id===d)&&e.add(d),N.current([...e])},{rootMargin:`200px`});return M.current.querySelectorAll(`.react-grid-item[data-panel]`).forEach(e=>t.observe(e)),()=>t.disconnect()},[n,d]);let ee=(0,V.useMemo)(()=>n.panels.some(e=>{let t=x.find(t=>t.i===e.id);return t&&(t.x!==e.grid?.x||t.y!==e.grid?.y||t.w!==e.grid?.w||t.h!==e.grid?.h)}),[x,n]),te=e=>({...n,panels:e.map(e=>{let t=x.find(t=>t.i===e.id);return t?{...e,grid:{x:t.x,y:t.y,w:t.w,h:t.h}}:e})}),P=it({mutationFn:()=>pe(e,te(n.panels),t,`Edited layout`),onSuccess:t=>{b.setQueryData([`dashboard`,e],t)}}),F=it({mutationFn:r=>ee?pe(e,te(n.panels.filter(e=>e.id!==r)),t,`Removed a panel and saved layout`):ye(e,[{op:`remove_panel`,id:r}],t,`Removed a panel`),onSuccess:t=>{b.setQueryData([`dashboard`,e],t)}}),L=it({mutationFn:r=>{let i={...r,id:hG(n.panels),title:`${Array.from(r.title).slice(0,73).join(``)} (copy)`,grid:void 0};if(ee){let a=[...n.panels];return a.splice(a.findIndex(e=>e.id===r.id)+1,0,i),pe(e,te(a),t,`Duplicated a panel and saved layout`)}return ye(e,[{op:`add_panel`,after:r.id,panel:i}],t,`Duplicated a panel`)},onSuccess:t=>{b.setQueryData([`dashboard`,e],t)}});(0,V.useEffect)(()=>{u||(P.reset(),F.reset(),L.reset())},[u]);let R=()=>{P.reset(),F.reset(),L.reset(),l?.(),b.invalidateQueries({queryKey:[`dashboard`,e]})},ne=async e=>{let t=new URL(window.location.href);t.searchParams.set(`view`,e),t.searchParams.delete(`edit`);try{await navigator.clipboard.writeText(t.toString()),k(`Link copied`)}catch{k(`Copy this URL: ${t.toString()}`)}},re=`dashboard-${e}`,ie=(t,l)=>(0,H.jsx)(cG,{panel:t,title:pG(t.title,r),result:i.get(t.id),loading:a&&o.includes(t.id),height:l,group:re,editing:T,agentAvailable:f,onSelect:t.click?e=>m(t.click.set_variable,e):void 0,onView:()=>h(t.id),onInspect:()=>j(t.id),onCopyLink:()=>{ne(t.id)},onExplain:()=>p(`Explain the panel "${pG(t.title,r)}" (panel id: ${t.id}) on the dashboard "${n.name}" (dashboard id: ${e}). Effective time range: ${JSON.stringify(t.time??c)}. Resolved variables: ${JSON.stringify(r)}. ${i.get(t.id)?.status===`error`?`It fails with: ${i.get(t.id)?.error}. Please fix the panel.`:`What does it show right now, and is anything unusual?`}`),staleAt:s.get(t.id),onDuplicate:u?()=>L.mutate(t):void 0,onRemove:u?()=>F.mutate(t.id):void 0}),ae=n.panels.find(e=>e.id===d),oe=u?P.error??F.error??L.error:null,z=oe instanceof Se&&oe.status===409,B=e=>{T&&S(e.map(({i:e,x:t,y:n,w:r,h:i})=>({i:e,x:t,y:n,w:r,h:i})))};return(0,H.jsxs)(`div`,{ref:M,children:[u&&(0,H.jsxs)(y,{justify:`space-between`,mb:`sm`,p:`xs`,style:{border:`1px dashed var(--mantine-color-default-border)`,borderRadius:8},children:[(0,H.jsx)(g,{size:`sm`,c:`dimmed`,children:T?`Drag a panel by its title and resize it from the corner. Changes are saved as a new version.`:`The layout can be edited only on a wider screen.`}),(0,H.jsx)(I,{size:`compact-sm`,disabled:!ee||!T,loading:P.isPending,onClick:()=>P.mutate(),children:`Save layout`})]}),z&&(0,H.jsxs)(_,{color:`warn`,mb:`sm`,children:[`Someone saved this dashboard since you opened it. Load the latest version, then redo your change. `,(0,H.jsx)(I,{size:`compact-sm`,onClick:R,children:`Load latest`})]}),oe&&!z&&(0,H.jsx)(_,{color:`bad`,mb:`sm`,children:oe.message}),O&&(0,H.jsx)(_,{role:`status`,mb:`sm`,children:O}),(0,H.jsx)(uG,{className:`dashboard-grid`,layouts:{lg:x,md:x,sm:x.map(e=>({...e,x:0,w:12}))},breakpoints:{lg:1100,md:800,sm:0},cols:{lg:12,md:12,sm:12},rowHeight:40,margin:[dG,dG],containerPadding:[0,0],compactType:`vertical`,isDraggable:T,isResizable:T,onBreakpointChange:w,draggableHandle:`.panel-drag`,draggableCancel:`button`,onDragStop:B,onResizeStop:B,children:n.panels.map(e=>{let t=x.find(t=>t.i===e.id);return(0,H.jsx)(`div`,{"data-panel":e.id,children:ie(e,fG(t?.h??6))},e.id)})}),(0,H.jsx)(Ke,{opened:!!ae,onClose:()=>h(void 0),fullScreen:!0,"aria-label":ae?pG(ae.title,r):void 0,closeButtonProps:{"aria-label":`Close panel view`},children:ae&&(0,H.jsx)(`div`,{style:{height:`calc(100vh - 120px)`},children:ie(ae,E-140)})}),(0,H.jsx)(ko,{panel:n.panels.find(e=>e.id===A),result:A?i.get(A):void 0,onClose:()=>j(void 0)})]})}var _G={"5m":`Last 5 minutes`,"15m":`Last 15 minutes`,"1h":`Last hour`,"3h":`Last 3 hours`,"6h":`Last 6 hours`,"12h":`Last 12 hours`,"24h":`Last 24 hours`,"2d":`Last 2 days`,"7d":`Last 7 days`,"30d":`Last 30 days`};function vG(e){return e.from&&e.to?`${Ze(e.from)} – ${Ze(e.to)}`:_G[e.range??`1h`]??e.range??`Last hour`}function yG({time:e,refresh:t,compare:n,editing:r,fetching:i,updatedAt:a,onRange:o,onAbsolute:s,onZoomOut:c,onRefresh:l,onRefreshNow:u,onCompare:d,onEdit:f}){let[p,m]=(0,V.useState)(``),[h,_]=(0,V.useState)(``),[v,b]=(0,V.useState)(!1);return(0,H.jsxs)(y,{gap:`xs`,wrap:`wrap`,role:`group`,"aria-label":`Dashboard time`,children:[(0,H.jsxs)(fe,{position:`bottom-end`,withinPortal:!0,opened:v,onChange:b,children:[(0,H.jsx)(fe.Target,{children:(0,H.jsx)(I,{variant:`default`,size:`sm`,leftSection:(0,H.jsx)(Pr,{size:15}),rightSection:(0,H.jsx)(Or,{size:12,weight:`bold`}),children:vG(e)})}),(0,H.jsxs)(fe.Dropdown,{miw:260,children:[(0,H.jsx)(fe.Label,{children:`Relative`}),ke.map(t=>(0,H.jsx)(fe.Item,{onClick:()=>o(t),fw:e.range===t?600:void 0,children:_G[t]},t)),(0,H.jsx)(fe.Divider,{}),(0,H.jsx)(fe.Label,{children:`Absolute (your time zone)`}),(0,H.jsxs)(y,{gap:6,px:`xs`,pb:`xs`,wrap:`nowrap`,children:[(0,H.jsx)(ie,{type:`datetime-local`,size:`xs`,"aria-label":`From`,value:p,onChange:e=>m(e.currentTarget.value)}),(0,H.jsx)(ie,{type:`datetime-local`,size:`xs`,"aria-label":`To`,value:h,onChange:e=>_(e.currentTarget.value)})]}),(0,H.jsx)(y,{px:`xs`,pb:`xs`,justify:`flex-end`,children:(0,H.jsx)(I,{size:`compact-sm`,disabled:!p||!h||p>=h,onClick:()=>{s(new Date(p).toISOString(),new Date(h).toISOString()),b(!1)},children:`Apply range`})})]})]}),(0,H.jsx)(He,{label:`Zoom out`,children:(0,H.jsx)(I,{variant:`default`,size:`sm`,px:10,"aria-label":`Zoom out`,onClick:c,children:(0,H.jsx)(Br,{size:15})})}),(0,H.jsxs)(y,{gap:4,wrap:`nowrap`,children:[(0,H.jsx)(He,{label:a?`Updated ${Ze(a)}`:`Refresh now`,children:(0,H.jsx)(I,{variant:`default`,size:`sm`,px:10,"aria-label":`Refresh now`,loading:i,onClick:u,children:(0,H.jsx)(wr,{size:15})})}),(0,H.jsx)(Jn,{size:`xs`,"aria-label":`Auto refresh`,value:t,onChange:l,data:Ee.map(e=>({value:e,label:e===`off`?`Off`:e}))})]}),(0,H.jsx)(rr,{size:`sm`,label:`Compare with previous period`,checked:n,onChange:e=>d(e.currentTarget.checked)}),(0,H.jsx)(I,{variant:r?`filled`:`default`,size:`sm`,leftSection:(0,H.jsx)(me,{size:15}),onClick:f,children:r?`Done`:`Edit layout`}),a&&(0,H.jsxs)(g,{size:`xs`,c:`dimmed`,visibleFrom:`md`,children:[`Updated `,new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`2-digit`,second:`2-digit`}).format(a)]})]})}var bG=(e,t)=>!(t instanceof Se&&t.status<500)&&e<2,xG=(e,t)=>!(t instanceof Se&&t.status===504)&&bG(e,t),SG=e=>({panels:e.panels.map(({grid:e,...t})=>t),variables:e.variables,time:e.time}),CG={off:!1,"10s":1e4,"30s":3e4,"1m":6e4,"5m":3e5};function wG({dashboardId:e,spec:t,time:n,vars:r,compare:i,widths:a,visible:o,refresh:s,enabled:c=!0}){let l=(0,V.useMemo)(()=>Object.fromEntries(Object.entries(a).map(([e,t])=>[e,Math.max(100,Math.round(t/100)*100)])),[a]),u=JSON.stringify([e,SG(t),n,r,i]),d=o.filter(e=>t.panels.some(t=>t.id===e)),f=(0,V.useRef)([]),[p,m]=(0,V.useState)({key:u,results:new Map,updated:new Map,stale:new Set,receivedAt:0}),h=c&&t.panels.some(e=>e.viz!==`text`),g=Je({queryKey:[`panels`,u],queryFn:({signal:e})=>(f.current=(d.length?[...d]:t.panels.map(e=>e.id)).sort(),Pe({dashboard:t,panels:f.current,time:n,vars:r,widths:l,compare:i},e)),retry:xG,enabled:h,refetchInterval:CG[s]??3e4,staleTime:5e3,placeholderData:e=>e}),_=(0,V.useMemo)(()=>TG(p,u,g.isPlaceholderData?void 0:g.data,g.dataUpdatedAt,g.error?f.current:[]),[p,u,g.data,g.dataUpdatedAt,g.isPlaceholderData,g.error,g.errorUpdatedAt]),v=_.results;(0,V.useEffect)(()=>{g.isPlaceholderData||m(e=>TG(e,u,g.data,g.dataUpdatedAt,g.error?f.current:[]))},[u,g.data,g.dataUpdatedAt,g.isPlaceholderData,g.error,g.errorUpdatedAt]);let y=new Map([..._.stale].flatMap(e=>{let t=_.updated.get(e);return t?[[e,t]]:[]})),b=(g.data??[]).find(e=>e.status===`error`&&_.stale.has(e.id));return(0,V.useEffect)(()=>{h&&!g.isFetching&&d.some(e=>!v.has(e)&&t.panels.find(t=>t.id===e)?.viz!==`text`)&&g.refetch()},[o]),{results:v,staleAt:y,fetchingIds:g.isFetching?f.current:[],fetching:g.isFetching,error:g.error??(b?Error(b.error??`Panel refresh failed`):null),updatedAt:g.isPlaceholderData?null:g.dataUpdatedAt||null,refetch:()=>{h&&g.refetch()}}}function TG(e,t,n,r,i){let a=e.key===t?{key:t,results:new Map(e.results),updated:new Map(e.updated),stale:new Set(e.stale),receivedAt:e.receivedAt}:{key:t,results:new Map,updated:new Map,stale:new Set,receivedAt:0};for(let e of n&&r!==a.receivedAt?n:[])e.status===`error`&&a.results.get(e.id)?.frame?a.stale.add(e.id):(a.results.set(e.id,e),a.updated.set(e.id,r),a.stale.delete(e.id));n&&(a.receivedAt=r);for(let e of i)a.results.get(e)?.frame&&a.stale.add(e);return a}function EG(e,t,n){if(e.kind===`constant`)return e.value??``;let r=e.kind===`custom`?e.options?.map(e=>({value:e}))??[]:n,i=t[e.name],a=!e.multi&&Array.isArray(i)&&i.length===0?void 0:i;if(a===`$__all`){if(e.include_all)return Vr}else if(a!==void 0){if(e.kind===`text`||r===void 0)return a;let t=new Set(r.map(e=>e.value));if(Array.isArray(a)){if(a.length===0&&e.multi)return[];let n=a.filter(e=>t.has(e));if(n.length>0)return n}else if(t.has(a))return a}return e.default?e.default:e.include_all?Vr:r?.[0]?.value??``}function DG(e,t,n,r,i){let a=(n.variables?.length??0)>0,o=Je({queryKey:[`variables`,e,SG(n),r,i],queryFn:({signal:e})=>z({dashboard:n,time:r,vars:i},e),enabled:a,retry:bG,staleTime:6e4,placeholderData:e=>e}),s=o.isPlaceholderData?void 0:o.data,c=o.isError||(n.variables??[]).every(e=>e.kind!==`query`||i[e.name]!==void 0&&i[e.name]!==`$__all`&&(e.multi||!Array.isArray(i[e.name])||i[e.name].length>0)||!!e.default||e.include_all||s?.[e.name]!==void 0);return{...o,currentData:s,ready:c}}function OG({variables:e,vars:t,options:n,onChange:r}){return e.length===0?null:(0,H.jsx)(y,{gap:`sm`,wrap:`wrap`,role:`group`,"aria-label":`Dashboard variables`,children:e.map(e=>{let i=EG(e,t,n[e.name]),a=[...e.include_all?[{value:Vr,label:`All`}]:[],...(n[e.name]??e.options?.map(e=>({value:e}))??[]).map(e=>({value:e.value,label:e.value}))],o=(0,H.jsxs)(g,{size:`xs`,c:`dimmed`,ff:`monospace`,children:[`$`,e.name]});return e.kind===`constant`?(0,H.jsx)(ie,{label:o,size:`xs`,value:e.value,readOnly:!0,w:160},e.name):e.kind===`text`?(0,H.jsx)(ie,{label:o,size:`xs`,w:200,defaultValue:typeof i==`string`?i:``,onBlur:t=>r(e.name,t.currentTarget.value),onKeyDown:e=>{e.key===`Enter`&&e.currentTarget.blur()}},`${e.name}:${JSON.stringify(i)}`):e.multi?(0,H.jsx)(Wn,{label:o,size:`xs`,w:260,searchable:!0,clearable:!0,data:a.filter(e=>e.value!==Vr),value:Array.isArray(i)?i:i&&i!==`$__all`?[i]:[],placeholder:e.include_all?`All`:`None`,onChange:t=>r(e.name,t.length?t:e.include_all?Vr:[])},e.name):(0,H.jsx)(Xn,{label:o,size:`xs`,w:220,searchable:!0,allowDeselect:!1,data:a,value:Array.isArray(i)?i[0]??null:i||null,onChange:t=>t!==null&&r(e.name,t)},e.name)})})}var kG={"5m":`15m`,"15m":`1h`,"1h":`3h`,"3h":`6h`,"6h":`12h`,"12h":`24h`,"24h":`2d`,"2d":`7d`,"7d":`30d`,"30d":`30d`};function AG({dashboardId:e,search:t,onSearch:n,onOpen:r}){let{agentAvailable:i,openChat:a}=nt(),o=Je({queryKey:_e,queryFn:Fe,staleTime:15e3});(0,V.useEffect)(()=>{!e&&o.data?.length&&r((o.data.find(e=>e.is_default)??o.data[0]).id,!0)},[e,o.data]);let s=Je({queryKey:[`dashboard`,e],queryFn:()=>Me(e),enabled:!!e,retry:(e,t)=>!(t instanceof Se&&t.status===404)&&e<2});return!e&&o.error?(0,H.jsx)(T,{mih:`50vh`,children:(0,H.jsx)(_,{color:`bad`,title:`Dashboards could not be loaded`,children:o.error.message})}):!e&&o.data?.length===0?(0,H.jsx)(T,{mih:`50vh`,children:(0,H.jsxs)(F,{align:`center`,gap:`xs`,children:[(0,H.jsx)(A,{order:1,fz:24,children:`No dashboards yet`}),(0,H.jsx)(g,{c:`dimmed`,size:`sm`,ta:`center`,children:`Create a dashboard to explore your services.`}),i&&(0,H.jsx)(I,{mt:`sm`,size:`sm`,onClick:()=>a(`Build me a dashboard for my services, showing request volume, latency, and errors. Ask me which services to monitor first.`),children:`Create with AI`})]})}):!e||s.isLoading?(0,H.jsxs)(T,{mih:`50vh`,children:[(0,H.jsx)(L,{size:`sm`}),(0,H.jsx)(g,{c:`dimmed`,size:`sm`,ml:`sm`,children:`Loading your dashboard…`})]}):s.error instanceof Se&&s.error.status===404?(0,H.jsx)(T,{mih:`50vh`,children:(0,H.jsxs)(F,{align:`center`,gap:`xs`,children:[(0,H.jsx)(A,{order:1,fz:24,children:`This dashboard isn't here`}),(0,H.jsx)(g,{c:`dimmed`,size:`sm`,ta:`center`,children:`The link may be out of date, or the dashboard may have been deleted.`}),o.data?.length?(0,H.jsx)(I,{mt:`sm`,variant:`default`,size:`sm`,onClick:()=>r((o.data.find(e=>e.is_default)??o.data[0]).id,!0),children:`Open your default dashboard`}):null]})}):s.error||!s.data?(0,H.jsx)(T,{mih:`50vh`,children:(0,H.jsx)(g,{c:`dimmed`,size:`sm`,children:`Your dashboard is unavailable. Try refreshing.`})}):(0,H.jsx)(jG,{id:s.data.id,version:s.data.version,spec:s.data.spec,search:t,onSearch:n,agentAvailable:i,openChat:a},s.data.id)}function jG({id:e,version:t,spec:n,search:r,onSearch:i,agentAvailable:a,openChat:o}){let c=xe(n,r),[l,u]=(0,V.useState)(c.refresh??`30s`),d=r.compare?r.compare===`1`:n.time.compare===`previous_period`,f=r.vars??{},p=DG(e,t,n,c,f),m=(0,V.useMemo)(()=>{let e={};for(let t of n.variables??[]){let n=EG(t,f,p.currentData?.[t.name]);(t.kind!==`query`||n!==``)&&(e[t.name]=n)}return e},[n.variables,f,p.currentData]),[h,v]=(0,V.useState)(()=>window.innerWidth);(0,V.useEffect)(()=>{let e=0,t=()=>{window.clearTimeout(e),e=window.setTimeout(()=>v(window.innerWidth),300)};return window.addEventListener(`resize`,t),()=>{window.removeEventListener(`resize`,t),window.clearTimeout(e)}},[]);let b=(0,V.useMemo)(()=>{let e=Math.max(320,Math.min(h-64,1600));return Object.fromEntries(n.panels.map(t=>[t.id,e/12*(t.grid?.w??t.width??6)]))},[h,n]),[x,S]=(0,V.useState)(()=>n.panels.map(e=>e.id)),C=wG({dashboardId:e,version:t,spec:n,time:c,vars:m,compare:d,widths:b,visible:(0,V.useMemo)(()=>x.filter(e=>n.panels.some(t=>t.id===e)),[x,n.panels]),refresh:l,enabled:p.ready}),w=p.error??C.error,T=(e,t)=>{let n={...f};t===void 0?delete n[e]:n[e]=t,i({...r,vars:n},!0)};return(0,H.jsxs)(s,{component:`main`,maw:1600,mx:`auto`,px:{base:`md`,sm:`xl`},pt:`lg`,pb:`xl`,children:[(0,H.jsxs)(F,{gap:`sm`,mb:`md`,children:[(0,H.jsxs)(y,{justify:`space-between`,align:`flex-start`,wrap:`wrap`,gap:`sm`,children:[(0,H.jsxs)(s,{miw:0,children:[(0,H.jsx)(A,{order:1,fz:28,lts:`-0.02em`,children:n.name}),n.description&&(0,H.jsx)(g,{c:`dimmed`,size:`sm`,mt:2,children:n.description})]}),(0,H.jsx)(yG,{time:c,refresh:l,compare:d,editing:r.edit===`1`,fetching:C.fetching,updatedAt:C.updatedAt,onRange:e=>i({...r,range:e,from:void 0,to:void 0}),onAbsolute:(e,t)=>i({...r,range:void 0,from:e,to:t}),onZoomOut:()=>{if(c.from&&c.to){let e=Date.parse(c.from),t=Date.parse(c.to),n=(t-e)/2;i({...r,range:void 0,from:new Date(e-n).toISOString(),to:new Date(t+n).toISOString()})}else i({...r,range:kG[c.range??`1h`]??`1h`,from:void 0,to:void 0})},onRefresh:u,onRefreshNow:C.refetch,onCompare:e=>i({...r,compare:e?`1`:`0`},!0),onEdit:()=>i({...r,edit:r.edit===`1`?void 0:`1`})})]}),(0,H.jsx)(OG,{variables:n.variables??[],vars:f,options:p.data??{},onChange:T}),Object.entries(f).filter(([,e])=>e!==`$__all`).length>0&&(0,H.jsx)(y,{gap:6,children:Object.entries(f).filter(([,e])=>e!==`$__all`).map(([e,t])=>(0,H.jsxs)(I,{size:`compact-xs`,variant:`light`,onClick:()=>{let t={...f};delete t[e],i({...r,vars:t},!0)},children:[`$`,e,` = `,Array.isArray(t)?t.join(`, `):t,` ×`]},e))})]}),w&&(0,H.jsxs)(_,{color:`bad`,icon:(0,H.jsx)(at,{size:18,weight:`fill`}),mb:`md`,title:p.error?`Variables could not be loaded`:`Panels could not be loaded`,children:[w.message,w instanceof Se&&(0,H.jsx)(`ul`,{children:w.problems.map((e,t)=>(0,H.jsxs)(`li`,{children:[e.path,`: `,e.message,e.hint?` (${e.hint})`:``]},t))})]}),(0,H.jsx)(gG,{dashboardId:e,version:t,spec:n,vars:m,results:C.results,fetching:C.fetching,fetchingIds:C.fetchingIds,staleAt:C.staleAt,time:c,onEditExit:()=>i({...r,edit:void 0}),editing:r.edit===`1`,view:r.view,agentAvailable:a,onOpenChat:o,onVariable:T,onView:e=>i({...r,view:e}),onVisible:S})]})}export{AG as t}; \ No newline at end of file diff --git a/internal/ui/dist/assets/page-DCM1FyLW.js b/internal/ui/dist/assets/page-DCM1FyLW.js new file mode 100644 index 00000000..4e941f7c --- /dev/null +++ b/internal/ui/dist/assets/page-DCM1FyLW.js @@ -0,0 +1,40 @@ +import{$ as e,A as t,C as n,D as r,E as i,K as a,M as o,O as s,P as c,S as l,St as u,T as d,X as f,Y as p,Z as m,_ as h,_t as g,a as _,at as v,bt as y,c as b,ct as x,d as S,et as C,f as w,ft as T,g as E,h as D,it as O,j as k,k as A,lt as j,m as M,mt as N,o as P,ot as F,p as I,r as L,s as ee,u as R,ut as te,v as ne,vt as re,x as ie,xt as ae,y as oe,yt as z}from"./brand-BUxUP_Hq.js";import{c as se,o as ce,s as le}from"./auth-B4efqRtx.js";import{l as ue,o as de,s as fe}from"./preload-helper-BP8lmrjQ.js";import{A as pe,C as me,D as he,E as ge,F as _e,H as ve,I as ye,L as be,M as xe,N as Se,O as Ce,P as we,R as Te,S as Ee,T as De,W as Oe,X as ke,Z as Ae,a as je,b as Me,c as Ne,d as Pe,f as Fe,g as Ie,h as Le,j as Re,k as ze,l as Be,o as Ve,p as He,r as Ue,s as We,u as Ge,v as Ke,w as qe,x as Je,y as Ye,z as Xe}from"./theme-Ck1QYR6z.js";import{C as Ze,D as Qe,E as $e,S as et,b as tt,o as nt,t as rt,w as it}from"./Tooltip-B37f_b7x.js";import{t as at}from"./use-computed-color-scheme-BdszbBN3.js";import{E as ot,T as st,t as ct}from"./useQuery-Do7gxLQ4.js";import{a as lt,c as ut,i as dt,l as ft,n as pt,o as mt,r as ht,s as gt,t as _t}from"./format-BmrjoVVN.js";import{n as vt,r as yt,t as bt}from"./WarningCircle.es-HuL_Shey.js";function xt(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();let n=St(e);if(n.length!==St(t).length)return!1;for(let r=0;r{r.current||=window.setTimeout(()=>{i(...e),r.current=null},t)},[t]),o=(0,B.useCallback)(()=>{r.current&&=(window.clearTimeout(r.current),null)},[]);return(0,B.useEffect)(()=>(n.autoInvoke&&a(),o),[o,a]),{start:a,clear:o}}function kt(e){let t=(0,B.useRef)(void 0);return(0,B.useEffect)(()=>{t.current=e},[e]),t.current}function At(e,t,n){let r=(0,B.useRef)(null);(0,B.useEffect)(()=>{r.current&&=(r.current.disconnect(),null);let i=typeof n==`function`?n():n;return i&&(r.current=new MutationObserver(e),r.current.observe(i,t)),()=>{r.current&&=(r.current.disconnect(),null)}},[e,t,n])}function jt(){let[e,t]=(0,B.useState)(!1);return(0,B.useEffect)(()=>t(!0),[]),e}function Mt(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`}function Nt(e,t=document){let n=t.querySelector(e);if(n)return n;let r=t.querySelectorAll(`*`);for(let t=0;t{if(!e||!t||!n.current)return;let r=e.getBoundingClientRect(),i=t.getBoundingClientRect(),a=t.offsetWidth===0?1:i.width/t.offsetWidth,o=t.offsetHeight===0?1:i.height/t.offsetHeight,s=window.getComputedStyle(e),c=window.getComputedStyle(t),l=tt(s.borderTopWidth)+tt(c.borderTopWidth),u=tt(s.borderLeftWidth)+tt(c.borderLeftWidth),d={top:(r.top-i.top)/o-l,left:(r.left-i.left)/a-u,width:r.width/a,height:r.height/o};n.current.style.transform=`translateY(${d.top}px) translateX(${d.left}px)`,n.current.style.width=`${d.width}px`,n.current.style.height=`${d.height}px`},p=()=>{window.clearTimeout(o.current),n.current&&(n.current.style.transitionDuration=`0ms`),f(),o.current=window.setTimeout(()=>{n.current&&(n.current.style.transitionDuration=``)},30)},m=(0,B.useRef)(null),h=(0,B.useRef)(null);return(0,B.useEffect)(()=>{if(c&&s.current!==e&&i&&i(),s.current=e,f(),e)return m.current=new ResizeObserver(p),m.current.observe(e),t&&(h.current=new ResizeObserver(p),h.current.observe(t)),()=>{m.current?.disconnect(),h.current?.disconnect()}},[t,e]),(0,B.useEffect)(()=>{if(t){let e=e=>{Lt(e.target,t)&&(p(),d(!1))};return t.addEventListener(`transitionend`,e),()=>{t.removeEventListener(`transitionend`,e)}}},[t]),(0,B.useEffect)(()=>{if(n.current&&a){let e=e=>{e.propertyName===`transform`&&a()};return n.current.addEventListener(`transitionend`,e),()=>{n.current?.removeEventListener(`transitionend`,e)}}},[a]),Ot(()=>{ft()!==`test`&&l(!0)},20,{autoInvoke:!0}),At(e=>{e.forEach(e=>{e.type===`attributes`&&e.attributeName===`dir`&&p()})},{attributes:!0,attributeFilter:[`dir`]},()=>document.documentElement),{initialized:c,hidden:u}}var zt={root:`m_96b553a6`},Bt=f((e,{transitionDuration:t},{shouldReduceMotion:n})=>({root:{"--transition-duration":e.respectReducedMotion&&n?`0ms`:typeof t==`number`?`${t}ms`:t||`150ms`}})),Vt=d(r=>{let i=o(`FloatingIndicator`,null,r),{classNames:a,className:s,style:c,styles:l,unstyled:u,vars:d,target:f,parent:p,transitionDuration:h,mod:g,displayAfterTransitionEnd:_,onTransitionStart:v,onTransitionEnd:y,attributes:b,ref:x,...S}=i,C=m(),w=t({name:`FloatingIndicator`,classes:zt,props:i,className:s,style:c,classNames:a,styles:l,unstyled:u,attributes:b,vars:d,varsResolver:Bt,stylesCtx:{shouldReduceMotion:C}}),T=(0,B.useRef)(null),{initialized:E,hidden:D}=Rt({target:f,parent:p,ref:T,displayAfterTransitionEnd:_,onTransitionStart:v,onTransitionEnd:y}),O=e(x,T);return!f||!p?null:(0,V.jsx)(n,{ref:O,mod:[{initialized:E,hidden:D},g],...w(`root`),...S})});Vt.displayName=`@mantine/core/FloatingIndicator`,Vt.classes=zt,Vt.varsResolver=Bt;function Ht(e){return typeof e==`string`?{value:e,label:e}:typeof e==`object`&&`value`in e&&!(`label`in e)?{value:e.value,label:`${e.value}`,disabled:e.disabled}:typeof e==`object`&&`group`in e?{group:e.group,items:e.items.map(e=>Ht(e))}:typeof e==`number`||typeof e==`bigint`||typeof e==`boolean`?{value:e,label:`${e}`}:e}function Ut(e){return e?e.map(e=>Ht(e)):[]}function Wt(e){return e.reduce((e,t)=>`group`in t?{...e,...Wt(t.items)}:(e[`${t.value}`]=t,e),{})}var Gt={dropdown:`m_88b62a41`,search:`m_985517d8`,options:`m_b2821a6e`,option:`m_92253aa5`,empty:`m_2530cd1d`,header:`m_858f94bd`,footer:`m_82b967cb`,group:`m_254f3e4f`,groupLabel:`m_2bb2e9e5`,chevron:`m_2943220b`,optionsDropdownOption:`m_390b5f4`,optionsDropdownCheckIcon:`m_8ee53fc2`,optionsDropdownCheckPlaceholder:`m_a530ee0a`},Kt={error:null},qt=f((e,{size:t,color:n})=>({chevron:{"--combobox-chevron-size":x(t,`combobox-chevron-size`),"--combobox-chevron-color":n?a(n,e):void 0}})),Jt=d(e=>{let r=o(`ComboboxChevron`,Kt,e),{size:i,error:a,style:s,className:c,classNames:l,styles:u,unstyled:d,vars:f,attributes:p,mod:m,...h}=r,g=t({name:`ComboboxChevron`,classes:Gt,props:r,style:s,className:c,classNames:l,styles:u,unstyled:d,vars:f,varsResolver:qt,attributes:p,rootSelector:`chevron`});return(0,V.jsx)(n,{component:`svg`,...h,...g(`chevron`),size:i,viewBox:`0 0 15 15`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,mod:[`combobox-chevron`,{error:a},m],children:(0,V.jsx)(`path`,{d:`M4.93179 5.43179C4.75605 5.60753 4.75605 5.89245 4.93179 6.06819C5.10753 6.24392 5.39245 6.24392 5.56819 6.06819L7.49999 4.13638L9.43179 6.06819C9.60753 6.24392 9.89245 6.24392 10.0682 6.06819C10.2439 5.89245 10.2439 5.60753 10.0682 5.43179L7.81819 3.18179C7.73379 3.0974 7.61933 3.04999 7.49999 3.04999C7.38064 3.04999 7.26618 3.0974 7.18179 3.18179L4.93179 5.43179ZM10.0682 9.56819C10.2439 9.39245 10.2439 9.10753 10.0682 8.93179C9.89245 8.75606 9.60753 8.75606 9.43179 8.93179L7.49999 10.8636L5.56819 8.93179C5.39245 8.75606 5.10753 8.75606 4.93179 8.93179C4.75605 9.10753 4.75605 9.39245 4.93179 9.56819L7.18179 11.8182C7.35753 11.9939 7.64245 11.9939 7.81819 11.8182L10.0682 9.56819Z`,fill:`currentColor`,fillRule:`evenodd`,clipRule:`evenodd`})})});Jt.classes=Gt,Jt.varsResolver=qt,Jt.displayName=`@mantine/core/ComboboxChevron`;var[Yt,Xt]=$e(`Combobox component was not found in tree`);function Zt({onMouseDown:e,onClick:t,onClear:n,...r}){return(0,V.jsx)(D.ClearButton,{tabIndex:-1,"aria-hidden":!0,...r,onMouseDown:t=>{t.preventDefault(),e?.(t)},onClick:e=>{n(),t?.(e)}})}Zt.displayName=`@mantine/core/ComboboxClearButton`;var Qt=d(e=>{let{classNames:t,styles:n,className:r,style:i,hidden:a,...s}=o(`ComboboxDropdown`,null,e),c=Xt();return(0,V.jsx)(Te.Dropdown,{...s,role:`presentation`,"data-hidden":a||void 0,"data-floating-height":c.floatingHeight||void 0,...c.getStyles(`dropdown`,{className:r,style:i,classNames:t,styles:n})})});Qt.classes=Gt,Qt.displayName=`@mantine/core/ComboboxDropdown`;var $t={refProp:`ref`},en=d(e=>{let{children:t,refProp:n,ref:r}=o(`ComboboxDropdownTarget`,$t,e);if(Xt(),!Qe(t))throw Error(`Combobox.DropdownTarget component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported`);return(0,V.jsx)(Te.Target,{ref:r,refProp:n,children:t})});en.displayName=`@mantine/core/ComboboxDropdownTarget`;var tn=d(e=>{let{classNames:t,className:r,style:i,styles:a,vars:s,...c}=o(`ComboboxEmpty`,null,e),l=Xt();return(0,V.jsx)(n,{...l.getStyles(`empty`,{className:r,classNames:t,styles:a,style:i}),...c})});tn.classes=Gt,tn.displayName=`@mantine/core/ComboboxEmpty`;function nn({onKeyDown:e,onClick:t,withKeyboardNavigation:n,withAriaAttributes:r,withExpandedAttribute:i,targetType:a,autoComplete:o}){let s=Xt(),[c,l]=(0,B.useState)(null),u=t=>{if(e?.(t),!s.readOnly&&n){if(t.nativeEvent.isComposing)return;if(t.nativeEvent.code===`ArrowDown`&&(t.preventDefault(),s.store.dropdownOpened?l(s.store.selectNextOption()):(s.store.openDropdown(`keyboard`),l(s.store.selectActiveOption()),s.store.updateSelectedOptionIndex(`selected`,{scrollIntoView:!0}))),t.nativeEvent.code===`ArrowUp`&&(t.preventDefault(),s.store.dropdownOpened?l(s.store.selectPreviousOption()):(s.store.openDropdown(`keyboard`),l(s.store.selectActiveOption()),s.store.updateSelectedOptionIndex(`selected`,{scrollIntoView:!0}))),t.nativeEvent.code===`Enter`||t.nativeEvent.code===`NumpadEnter`){if(t.nativeEvent.keyCode===229)return;let e=s.store.getSelectedOptionIndex();s.store.dropdownOpened&&e!==-1?(t.preventDefault(),s.store.clickSelectedOption()):a===`button`&&(t.preventDefault(),s.store.openDropdown(`keyboard`))}t.key===`Escape`&&s.store.closeDropdown(`keyboard`),t.nativeEvent.code===`Space`&&a===`button`&&(t.preventDefault(),s.store.toggleDropdown(`keyboard`))}},d=r?{...i?{role:`combobox`}:{},"aria-haspopup":`listbox`,"aria-expanded":i?!!(s.store.listId&&s.store.dropdownOpened):void 0,"aria-controls":s.store.dropdownOpened&&s.store.listId?s.store.listId:void 0,"aria-activedescendant":s.store.dropdownOpened&&c||void 0,autoComplete:o,"data-expanded":s.store.dropdownOpened||void 0,"data-mantine-stop-propagation":s.store.dropdownOpened||void 0}:{},f=e=>{a===`button`&&e.currentTarget.focus(),t?.(e)};return{...d,onKeyDown:u,onClick:f}}var rn={refProp:`ref`,targetType:`input`,withKeyboardNavigation:!0,withAriaAttributes:!0,withExpandedAttribute:!1,autoComplete:`off`},an=d(t=>{let{children:n,refProp:r,withKeyboardNavigation:i,withAriaAttributes:a,withExpandedAttribute:s,targetType:c,autoComplete:l,ref:u,...d}=o(`ComboboxEventsTarget`,rn,t),f=et(n);if(!f)throw Error(`Combobox.EventsTarget component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported`);let p=Xt(),m=nn({targetType:c,withAriaAttributes:a,withKeyboardNavigation:i,withExpandedAttribute:s,onKeyDown:f.props.onKeyDown,onClick:f.props.onClick,autoComplete:l});return(0,B.cloneElement)(f,{...m,...d,[r]:e(u,p.store.targetRef,Ze(f))})});an.displayName=`@mantine/core/ComboboxEventsTarget`;var on=d(e=>{let{classNames:t,className:r,style:i,styles:a,vars:s,...c}=o(`ComboboxFooter`,null,e),l=Xt();return(0,V.jsx)(n,{...l.getStyles(`footer`,{className:r,classNames:t,style:i,styles:a}),...c,onMouseDown:e=>{e.preventDefault()}})});on.classes=Gt,on.displayName=`@mantine/core/ComboboxFooter`;var sn=d(e=>{let{classNames:t,className:r,style:i,styles:a,vars:s,children:c,label:l,id:u,...d}=o(`ComboboxGroup`,null,e),f=Xt(),p=C(u),m=l!=null&&l!==!1&&l!==``;return(0,V.jsxs)(n,{role:`group`,"aria-labelledby":m?p:void 0,...f.getStyles(`group`,{className:r,classNames:t,style:i,styles:a}),...d,children:[m&&(0,V.jsx)(`div`,{id:p,...f.getStyles(`groupLabel`,{classNames:t,styles:a}),children:l}),c]})});sn.classes=Gt,sn.displayName=`@mantine/core/ComboboxGroup`;var cn=d(e=>{let{classNames:t,className:r,style:i,styles:a,vars:s,...c}=o(`ComboboxHeader`,null,e),l=Xt();return(0,V.jsx)(n,{...l.getStyles(`header`,{className:r,classNames:t,style:i,styles:a}),...c,onMouseDown:e=>{e.preventDefault()}})});cn.classes=Gt,cn.displayName=`@mantine/core/ComboboxHeader`;function ln({value:e,valuesDivider:t=`,`,...n}){return(0,V.jsx)(`input`,{type:`hidden`,value:Array.isArray(e)?e.join(t):e?`${e}`:``,...n})}ln.displayName=`@mantine/core/ComboboxHiddenInput`;var un=d(e=>{let t=o(`ComboboxOption`,null,e),{classNames:r,className:i,style:a,styles:s,vars:c,onClick:l,id:u,active:d,onMouseDown:f,onMouseOver:p,disabled:m,selected:h,mod:g,..._}=t,v=Xt(),y=(0,B.useId)(),b=u||y;return(0,V.jsx)(n,{...v.getStyles(`option`,{className:i,classNames:r,styles:s,style:a}),..._,id:b,mod:[`combobox-option`,{"combobox-active":d,"combobox-disabled":m,"combobox-selected":h},g],role:`option`,onClick:e=>{m?e.preventDefault():(v.onOptionSubmit?.(t.value,t),l?.(e))},onMouseDown:e=>{e.preventDefault(),f?.(e)},onMouseOver:e=>{v.resetSelectionOnOptionHover&&v.store.resetSelectedOption(),p?.(e)}})});un.classes=Gt,un.displayName=`@mantine/core/ComboboxOption`;var dn=d(e=>{let{classNames:t,className:r,style:i,styles:a,id:s,onMouseDown:c,labelledBy:l,...u}=o(`ComboboxOptions`,null,e),d=Xt(),f=C(s);return(0,B.useEffect)(()=>{d.store.setListId(f)},[f]),(0,V.jsx)(n,{...d.getStyles(`options`,{className:r,style:i,classNames:t,styles:a}),...u,id:f,role:`listbox`,"aria-labelledby":l,onMouseDown:e=>{e.preventDefault(),c?.(e)}})});dn.classes=Gt,dn.displayName=`@mantine/core/ComboboxOptions`;var fn={withAriaAttributes:!0,withKeyboardNavigation:!0},pn=d(t=>{let{classNames:n,styles:r,unstyled:i,vars:a,withAriaAttributes:s,onKeyDown:c,onClick:l,withKeyboardNavigation:u,size:d,ref:f,...p}=o(`ComboboxSearch`,fn,t),m=Xt(),h=m.getStyles(`search`),g=nn({targetType:`input`,withAriaAttributes:s,withKeyboardNavigation:u,withExpandedAttribute:!1,onKeyDown:c,onClick:l,autoComplete:`off`});return(0,V.jsx)(D,{ref:e(f,m.store.searchRef),classNames:[{input:h.className},n],styles:[{input:h.style},r],size:d||m.size,...g,...p,__staticSelector:`Combobox`})});pn.classes=Gt,pn.displayName=`@mantine/core/ComboboxSearch`;var mn={refProp:`ref`,targetType:`input`,withKeyboardNavigation:!0,withAriaAttributes:!0,withExpandedAttribute:!1,autoComplete:`off`},hn=d(t=>{let{children:n,refProp:r,withKeyboardNavigation:i,withAriaAttributes:a,withExpandedAttribute:s,targetType:c,autoComplete:l,ref:u,...d}=o(`ComboboxTarget`,mn,t),f=et(n);if(!f)throw Error(`Combobox.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported`);let p=Xt(),m=nn({targetType:c,withAriaAttributes:a,withKeyboardNavigation:i,withExpandedAttribute:s,onKeyDown:f.props.onKeyDown,onClick:f.props.onClick,autoComplete:l}),h=(0,B.cloneElement)(f,{...m,...d});return(0,V.jsx)(Te.Target,{refProp:r,ref:e(u,p.store.targetRef),children:h})});hn.displayName=`@mantine/core/ComboboxTarget`;function gn(e,t,n){for(let n=e-1;n>=0;--n)if(!t[n].hasAttribute(`data-combobox-disabled`))return n;if(n){for(let e=t.length-1;e>-1;--e)if(!t[e].hasAttribute(`data-combobox-disabled`))return e}return e}function _n(e,t,n){for(let n=e+1;n{s||(c(!0),i?.(e))},[c,i,s]),_=(0,B.useCallback)((e=`unknown`)=>{s&&(c(!1),r?.(e))},[c,r,s]),v=(0,B.useCallback)((e=`unknown`)=>{s?_(e):g(e)},[_,g,s]),y=(0,B.useCallback)(()=>{let e=Ft(f.current);Nt(`#${l.current} [data-combobox-selected]`,e)?.removeAttribute(`data-combobox-selected`)},[]),b=(0,B.useCallback)(e=>{let t=Ft(f.current),n=Nt(`#${l.current}`,t),r=n?Pt(`[data-combobox-option]`,n):null;if(!r)return null;let i=e>=r.length?0:e<0?r.length-1:e;return u.current=i,r?.[i]&&!r[i].hasAttribute(`data-combobox-disabled`)?(y(),r[i].setAttribute(`data-combobox-selected`,`true`),r[i].scrollIntoView({block:`nearest`,behavior:o}),r[i].id):null},[o,y]),x=(0,B.useCallback)(()=>{let e=Ft(f.current),t=Nt(`#${l.current} [data-combobox-active]`,e);if(t){let n=Pt(`#${l.current} [data-combobox-option]`,e).findIndex(e=>e===t);return b(n)}return b(0)},[b]),S=(0,B.useCallback)(()=>{let e=Ft(f.current),t=Pt(`#${l.current} [data-combobox-option]`,e);return b(_n(u.current,t,a))},[b,a]),C=(0,B.useCallback)(()=>{let e=Ft(f.current),t=Pt(`#${l.current} [data-combobox-option]`,e);return b(gn(u.current,t,a))},[b,a]),w=(0,B.useCallback)(()=>{let e=Ft(f.current),t=Pt(`#${l.current} [data-combobox-option]`,e);return b(vn(t))},[b]),T=(0,B.useCallback)((e=`selected`,t)=>{if(typeof e==`number`){u.current=e;let n=Ft(f.current),r=Pt(`#${l.current} [data-combobox-option]`,n);t?.scrollIntoView&&r[e]?.scrollIntoView({block:`nearest`,behavior:o});return}h.current=window.setTimeout(()=>{let n=Ft(f.current),r=Pt(`#${l.current} [data-combobox-option]`,n),i=r.findIndex(t=>t.hasAttribute(`data-combobox-${e}`));u.current=i,t?.scrollIntoView&&r[i]?.scrollIntoView({block:`nearest`,behavior:o})},0)},[]),E=(0,B.useCallback)(()=>{u.current=-1,y()},[y]),D=(0,B.useCallback)(()=>{let e=Ft(f.current);(Pt(`#${l.current} [data-combobox-option]`,e)?.[u.current])?.click()},[]),O=(0,B.useCallback)(e=>{l.current=e},[]),k=(0,B.useCallback)(()=>{p.current=window.setTimeout(()=>d.current?.focus(),0)},[]),A=(0,B.useCallback)(()=>{m.current=window.setTimeout(()=>f.current?.focus(),0)},[]),j=(0,B.useCallback)(()=>u.current,[]);return(0,B.useEffect)(()=>()=>{window.clearTimeout(p.current),window.clearTimeout(m.current),window.clearTimeout(h.current)},[]),{dropdownOpened:s,openDropdown:g,closeDropdown:_,toggleDropdown:v,selectedOptionIndex:u.current,getSelectedOptionIndex:j,selectOption:b,selectFirstOption:w,selectActiveOption:x,selectNextOption:S,selectPreviousOption:C,resetSelectedOption:E,updateSelectedOptionIndex:T,listId:l.current,setListId:O,clickSelectedOption:D,searchRef:d,focusSearchInput:k,targetRef:f,focusTarget:A}}var bn={keepMounted:!0,keepMountedMode:`display-none`,withinPortal:!0,resetSelectionOnOptionHover:!1,width:`target`,transitionProps:{transition:`fade`,duration:0},size:`sm`},xn=f((e,{size:t,dropdownPadding:n})=>({options:{"--combobox-option-fz":v(t),"--combobox-option-padding":x(t,`combobox-option-padding`)},dropdown:{"--combobox-padding":n===void 0?void 0:T(n),"--combobox-option-fz":v(t),"--combobox-option-padding":x(t,`combobox-option-padding`)}})),Sn=e=>{let n=o(`Combobox`,bn,e),{classNames:r,styles:i,unstyled:a,children:s,store:c,vars:l,onOptionSubmit:u,onClose:d,size:f,dropdownPadding:p,resetSelectionOnOptionHover:m,__staticSelector:h,readOnly:g,attributes:_,floatingHeight:v,middlewares:y,...b}=n,x=v===`viewport`?{...y,flip:!1,size:{...typeof y?.size==`object`?y.size:{},padding:typeof y?.size==`object`&&y.size.padding!==void 0?y.size.padding:10,apply:({availableHeight:e,availableWidth:t,elements:n,...r})=>{n.floating.style.setProperty(`--combobox-floating-max-height`,`${e}px`);let i=y?.size;typeof i==`object`&&i.apply?i.apply({availableHeight:e,availableWidth:t,elements:n,...r}):i&&Object.assign(n.floating.style,{maxWidth:`${t}px`,maxHeight:`${e}px`})}}}:y,S=yn(),C=c||S,w=t({name:h||`Combobox`,classes:Gt,props:n,classNames:r,styles:i,unstyled:a,attributes:_,vars:l,varsResolver:xn}),T=()=>{d?.(),C.closeDropdown()};return(0,V.jsx)(Yt,{value:{getStyles:w,store:C,onOptionSubmit:u,size:f,resetSelectionOnOptionHover:m,readOnly:g,floatingHeight:v},children:(0,V.jsx)(Te,{opened:C.dropdownOpened,...b,middlewares:x,onChange:e=>!e&&T(),withRoles:!1,unstyled:a,children:s})})};Sn.extend=e=>e,Sn.classes=Gt,Sn.varsResolver=xn,Sn.displayName=`@mantine/core/Combobox`,Sn.Target=hn,Sn.Dropdown=Qt,Sn.Options=dn,Sn.Option=un,Sn.Search=pn,Sn.Empty=tn,Sn.Chevron=Jt,Sn.Footer=on,Sn.Header=cn,Sn.EventsTarget=an,Sn.DropdownTarget=en,Sn.Group=sn,Sn.ClearButton=Zt,Sn.HiddenInput=ln;function Cn({children:e,role:t}){let n=(0,B.use)(E);return n?(0,V.jsx)(`div`,{role:t,"aria-labelledby":n.labelId,"aria-describedby":n.describedBy,children:e}):(0,V.jsx)(V.Fragment,{children:e})}var wn={root:`m_5f75b09e`,body:`m_5f6e695e`,labelWrapper:`m_d3ea56bb`,label:`m_8ee546b8`,description:`m_328f68c0`,error:`m_8e8a99cc`},Tn=wn;function En({__staticSelector:e,__stylesApiProps:r,className:i,classNames:a,styles:o,unstyled:s,children:c,label:l,description:u,id:d,disabled:f,error:p,size:m,labelPosition:h=`left`,bodyElement:g=`div`,labelElement:_=`label`,variant:y,style:b,vars:S,mod:C,attributes:w,...T}){let E=t({name:e,props:r,className:i,style:b,classes:wn,classNames:a,styles:o,unstyled:s,attributes:w}),O=u?`${d}-description`:void 0,k=p&&typeof p!=`boolean`?`${d}-error`:void 0;return(0,V.jsx)(n,{...E(`root`),__vars:{"--label-fz":v(m),"--label-lh":x(m,`label-lh`)},mod:[{"label-position":h},C],variant:y,size:m,...T,children:(0,V.jsxs)(n,{component:g,htmlFor:g===`label`?d:void 0,...E(`body`),children:[c,(0,V.jsxs)(`div`,{...E(`labelWrapper`),"data-disabled":f||void 0,children:[l&&(0,V.jsx)(n,{component:_,htmlFor:_===`label`?d:void 0,...E(`label`),"data-disabled":f||void 0,children:l}),u&&(0,V.jsx)(D.Description,{id:O,size:m,__inheritStyles:!1,...E(`description`),children:u}),p&&typeof p!=`boolean`&&(0,V.jsx)(D.Error,{id:k,size:m,__inheritStyles:!1,...E(`error`),children:p})]})]})})}En.displayName=`@mantine/core/InlineInput`;function Dn(e){return`group`in e}function On({options:e,search:t,limit:n}){let r=t.trim().toLowerCase(),i=[];for(let a=0;a0)return!1;return!0}function An(e,t=new Set){if(Array.isArray(e))for(let n of e)if(Dn(n))An(n.items,t);else{if(n.value===void 0)throw Error(`[@mantine/core] Each option must have value property`);if(t.has(n.value))throw Error(`[@mantine/core] Duplicate options are not supported. Option with value "${n.value}" was provided more than once`);t.add(n.value)}}function jn(e,t){return Array.isArray(e)?e.includes(t):e===t}function Mn({data:e,withCheckIcon:t,withAlignedLabels:n,value:r,checkIconPosition:i,unstyled:a,renderOption:o}){if(!Dn(e)){let s=jn(r,e.value),c=t&&(s?(0,V.jsx)(be,{className:Gt.optionsDropdownCheckIcon}):n?(0,V.jsx)(`div`,{className:Gt.optionsDropdownCheckPlaceholder}):null),l=(0,V.jsxs)(V.Fragment,{children:[i===`left`&&c,(0,V.jsx)(`span`,{children:e.label}),i===`right`&&c]});return(0,V.jsx)(Sn.Option,{value:e.value,disabled:e.disabled,className:p({[Gt.optionsDropdownOption]:!a}),"data-reverse":i===`right`||void 0,"data-checked":s||void 0,"aria-selected":s,active:s,children:typeof o==`function`?o({option:e,checked:s}):l})}let s=e.items.map(e=>(0,V.jsx)(Mn,{data:e,value:r,unstyled:a,withCheckIcon:t,withAlignedLabels:n,checkIconPosition:i,renderOption:o},`${e.value}`));return(0,V.jsx)(Sn.Group,{label:e.group,children:s})}function Nn({data:e,hidden:t,hiddenWhenEmpty:n,filter:r,search:i,limit:a,maxDropdownHeight:o,floatingHeight:s,withScrollArea:c=!0,filterOptions:l=!0,withCheckIcon:u=!1,withAlignedLabels:d=!1,value:f,checkIconPosition:p,nothingFoundMessage:m,unstyled:h,labelId:g,renderOption:_,scrollAreaProps:v,"aria-label":y}){let b=Xt();An(e);let x=typeof i==`string`?(r||On)({options:e,search:l?i:``,limit:a??1/0}):e,S=kn(x),C=x.map((e,t)=>(0,V.jsx)(Mn,{data:e,withCheckIcon:u,withAlignedLabels:d,value:f,checkIconPosition:p,unstyled:h,renderOption:_},Dn(e)?`group-${typeof e.group==`string`?e.group:t}`:`${e.value}`));return(0,V.jsx)(Sn.Dropdown,{hidden:t||n&&S,"data-composed":!0,children:(0,V.jsxs)(Sn.Options,{labelledBy:g,"aria-label":y,children:[c?(0,V.jsx)(nt.Autosize,{mah:(s??b.floatingHeight)===`viewport`?`var(--combobox-floating-options-max-height)`:o??220,type:`scroll`,scrollbarSize:`var(--combobox-padding)`,offsetScrollbars:`y`,...v,children:C}):C,S&&m&&(0,V.jsx)(Sn.Empty,{children:m})]})})}function Pn(e,t,n,r){if(t===n||r===`before`&&n===t+1||r===`after`&&n===t-1)return e;let i=e.slice(),[a]=i.splice(t,1),o=t{let t=e.lastElementChild;return t?t instanceof HTMLInputElement?t:t.querySelector(`input`):null},In=(e,t)=>{if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n{let e=i.current;e&&(i.current=null,In(o.current,e.expectedValue)&&e.container?.querySelector(`[data-mantine-pill-index="${e.index}"]`)?.focus())});let s=(0,B.useCallback)(e=>{a.current=e},[]);return{getPillProps:e=>{if(n)return{draggable:!0,tabIndex:-1,"data-mantine-pill-index":e,"aria-keyshortcuts":`Alt+ArrowLeft Alt+ArrowRight`,onMouseDown:e=>{e.button===0&&e.stopPropagation()},onDragStart:t=>{t.stopPropagation(),t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(`text/plain`,String(e)),r.current.draggedIndex=e;let n=t.currentTarget,i=n.getBoundingClientRect(),a=n.cloneNode(!0);a.removeAttribute(`data-dragging`),a.removeAttribute(`data-drag-over`),a.style.position=`fixed`,a.style.top=`-9999px`,a.style.left=`-9999px`,a.style.width=`${i.width}px`,a.style.height=`${i.height}px`,a.style.pointerEvents=`none`,document.body.appendChild(a),t.dataTransfer.setDragImage(a,t.clientX-i.left,t.clientY-i.top),setTimeout(()=>a.parentNode?.removeChild(a),0),requestAnimationFrame(()=>{n.setAttribute(`data-dragging`,`true`)})},onDragOver:t=>{let{draggedIndex:n}=r.current;if(n===null||n===e)return;let i=t.currentTarget,a=i.getBoundingClientRect(),o=t.clientX-a.left,s=(getComputedStyle(i).direction===`rtl`?o>a.width/2:o{let t=e.currentTarget,n=e.relatedTarget;n&&t.contains(n)||(t.removeAttribute(`data-drag-over`),r.current.currentDropTarget===t&&(r.current.currentDropTarget=null))},onDrop:n=>{n.preventDefault(),n.stopPropagation();let i=n.currentTarget,a=i.getAttribute(`data-drag-over`);i.removeAttribute(`data-drag-over`);let{draggedIndex:s}=r.current;if(s!==null&&a&&s!==e){let n=Pn(o.current,s,e,a);n!==o.current&&t(n)}r.current.draggedIndex=null,r.current.currentDropTarget=null},onDragEnd:e=>{e.currentTarget.removeAttribute(`data-dragging`);let t=r.current.currentDropTarget;t&&t.removeAttribute(`data-drag-over`),r.current.draggedIndex=null,r.current.currentDropTarget=null},onKeyDown:n=>{if(n.key!==`ArrowLeft`&&n.key!==`ArrowRight`)return;let r=n.currentTarget,a=getComputedStyle(r).direction===`rtl`?n.key===`ArrowLeft`:n.key===`ArrowRight`,s=a?e+1:e-1;if(n.altKey){if(s<0||s>=o.current.length)return;n.preventDefault(),n.stopPropagation();let c=a?`after`:`before`,l=Pn(o.current,e,s,c);if(l===o.current)return;i.current={container:r.parentElement,index:s,expectedValue:l},t(l);return}if(s<0)return;let c=r.parentElement;if(c){if(n.preventDefault(),n.stopPropagation(),s>=o.current.length){Fn(c)?.focus();return}c.querySelector(`[data-mantine-pill-index="${s}"]`)?.focus()}}}},getListProps:()=>n?{ref:s}:{},handleInputKeyDown:e=>{if(!n||e.key!==`ArrowLeft`)return;let t=e.currentTarget;if(!(t.value.length===0||t.selectionStart===0&&t.selectionEnd===0))return;let r=a.current;if(!r)return;let i=r.querySelectorAll(`[data-mantine-pill-index]`);i.length!==0&&(e.preventDefault(),i[i.length-1].focus())}}}function Rn(e){let t=e.currentTarget;return Ft(t).activeElement!==t}var zn=(0,B.createContext)(null),Bn={root:`m_7cda1cd6`,"root--default":`m_44da308b`,"root--contrast":`m_e3a01f8`,label:`m_1e0e6180`,remove:`m_ae386778`,group:`m_1dcfd90b`},Vn=(0,B.createContext)(null),Hn=f((e,{gap:t},{size:n})=>({group:{"--pg-gap":t===void 0?x(n,`pg-gap`):x(t)}})),Un=d(e=>{let r=o(`PillGroup`,null,e),{classNames:i,className:a,style:s,styles:c,unstyled:l,vars:u,size:d,disabled:f,attributes:p,...m}=r,h=(0,B.use)(zn)?.size||d||void 0,g=t({name:`PillGroup`,classes:Bn,props:r,className:a,style:s,classNames:i,styles:c,unstyled:l,attributes:p,vars:u,varsResolver:Hn,stylesCtx:{size:h},rootSelector:`group`});return(0,V.jsx)(Vn,{value:{size:h,disabled:f},children:(0,V.jsx)(n,{size:h,...g(`group`),...m})})});Un.classes=Bn,Un.varsResolver=Hn,Un.displayName=`@mantine/core/PillGroup`;var Wn={variant:`default`},Gn=f((e,{radius:t},{size:n})=>({root:{"--pill-fz":x(n,`pill-fz`),"--pill-height":x(n,`pill-height`),"--pill-radius":t===void 0?void 0:F(t)}})),Kn=d(e=>{let r=o(`Pill`,Wn,e),{classNames:i,className:a,style:s,styles:c,unstyled:l,vars:u,variant:d,children:f,withRemoveButton:p,onRemove:m,removeButtonProps:h,radius:g,size:_,disabled:v,mod:y,attributes:b,...x}=r,S=(0,B.use)(Vn),C=(0,B.use)(zn),w=_||S?.size||void 0,T=C?.variant===`filled`?`contrast`:d||`default`,E=t({name:`Pill`,classes:Bn,props:r,className:a,style:s,classNames:i,styles:c,unstyled:l,attributes:b,vars:u,varsResolver:Gn,stylesCtx:{size:w}});return(0,V.jsxs)(n,{component:`span`,variant:T,size:w,...E(`root`,{variant:T}),mod:[{"with-remove":p&&!v,disabled:v||S?.disabled},y],...x,children:[(0,V.jsx)(`span`,{...E(`label`),children:f}),p&&(0,V.jsx)(ne,{variant:`transparent`,radius:g,tabIndex:-1,"aria-hidden":!0,unstyled:l,...h,...E(`remove`,{className:h?.className,style:h?.style}),onMouseDown:e=>{e.preventDefault(),e.stopPropagation(),h?.onMouseDown?.(e)},onClick:e=>{e.stopPropagation(),m?.(),h?.onClick?.(e)}})]})});Kn.classes=Bn,Kn.varsResolver=Gn,Kn.displayName=`@mantine/core/Pill`,Kn.Group=Un;var qn={field:`m_45c4369d`},Jn={type:`visible`},Yn=d(r=>{let i=o(`PillsInputField`,Jn,r),{classNames:a,className:s,style:c,styles:l,unstyled:u,vars:d,type:f,disabled:p,id:m,pointer:h,mod:g,attributes:_,ref:v,...y}=i,b=(0,B.use)(zn),x=(0,B.use)(E),S=t({name:`PillsInputField`,classes:qn,props:i,className:s,style:c,classNames:a,styles:l,unstyled:u,attributes:_,rootSelector:`field`}),C=p||b?.disabled;return(0,V.jsx)(n,{component:`input`,ref:e(v,b?.fieldRef),"data-type":f,disabled:C,mod:[{disabled:C,pointer:h},g],...S(`field`),...y,id:x?.inputId||m,"aria-invalid":b?.hasError,"aria-describedby":x?.describedBy,type:`text`,onMouseDown:e=>!h&&e.stopPropagation()})});Yn.classes=qn,Yn.displayName=`@mantine/core/PillsInputField`;var Xn={size:`sm`},Zn=d(e=>{let{children:t,onMouseDown:n,onClick:r,size:i,disabled:a,__staticSelector:s,error:c,variant:l,...u}=o([`Input`,`InputWrapper`,`PillsInput`],Xn,e),d=(0,B.useRef)(null);return(0,V.jsx)(zn,{value:{fieldRef:d,size:i,disabled:a,hasError:!!c,variant:l},children:(0,V.jsx)(M,{size:i,error:c,variant:l,component:`div`,"data-no-overflow":!0,onMouseDown:e=>{e.preventDefault(),n?.(e),d.current?.focus()},onClick:e=>{e.preventDefault(),e.currentTarget.closest(`fieldset`)?.disabled||(d.current?.focus(),r?.(e))},...u,multiline:!0,disabled:a,__staticSelector:s||`PillsInput`,withAria:!1,children:t})})});Zn.displayName=`@mantine/core/PillsInput`,Zn.classes=M.classes,Zn.Field=Yn;function Qn(e,t){let n=t.trim().toLowerCase();if(n===``)return;let r=Object.values(e).filter(e=>!e.disabled&&e.label.trim().toLowerCase()===n);return r.length===1?r[0]:void 0}function $n(e){return typeof e==`string`?e.trim().toLowerCase():e}function er({data:e,value:t}){let n=t.map($n);return e.reduce((e,t)=>(Dn(t)?e.push({group:t.group,items:t.items.filter(e=>n.indexOf($n(e.value))===-1)}):n.indexOf($n(t.value))===-1&&e.push(t),e),[])}var tr={xs:41,sm:50,md:60,lg:72,xl:89},nr={maxValues:1/0,withCheckIcon:!0,checkIconPosition:`left`,hiddenInputValuesDivider:`,`,clearSearchOnChange:!0,openOnFocus:!0,size:`sm`},rr=i(e=>{let n=o([`Input`,`InputWrapper`,`MultiSelect`],nr,e),{classNames:r,className:i,style:a,styles:c,unstyled:l,vars:u,size:d,value:f,defaultValue:p,onChange:m,onKeyDown:h,variant:g,data:_,dropdownOpened:v,defaultDropdownOpened:y,onDropdownOpen:b,onDropdownClose:x,selectFirstOptionOnChange:S,selectFirstOptionOnDropdownOpen:w,onOptionSubmit:T,comboboxProps:E,filter:D,limit:O,withScrollArea:A,maxDropdownHeight:j,floatingHeight:M,searchValue:N,defaultSearchValue:P,onSearchChange:F,readOnly:I,disabled:L,onFocus:ee,onBlur:R,radius:te,rightSection:ne,rightSectionWidth:re,rightSectionPointerEvents:ie,rightSectionProps:ae,leftSection:oe,leftSectionWidth:z,leftSectionPointerEvents:ce,leftSectionProps:le,inputContainer:ue,inputWrapperOrder:de,withAsterisk:fe,labelProps:pe,descriptionProps:me,errorProps:he,successProps:ge,wrapperProps:_e,description:ve,label:ye,error:be,success:xe,maxValues:Se,searchable:Ce,nothingFoundMessage:we,withCheckIcon:Te,withAlignedLabels:Ee,checkIconPosition:De,hidePickedOptions:Oe,withErrorStyles:ke,withSuccessStyles:Ae,name:je,form:Me,id:Ne,clearable:Pe,clearSectionMode:Fe,clearButtonProps:Ie,hiddenInputProps:Le,placeholder:Re,hiddenInputValuesDivider:ze,required:Be,mod:Ve,renderOption:He,renderPill:Ue,onRemove:We,onClear:Ge,onMaxValues:Ke,scrollAreaProps:qe,chevronColor:Je,attributes:Ye,clearSearchOnChange:Xe,openOnFocus:Ze,loading:Qe,loadingPosition:$e,withPillsReorder:et,...tt}=n,nt=C(Ne),rt=Ut(_),it=Wt(rt),at=(0,B.useRef)({}),ot=yn({opened:v,defaultOpened:y,onDropdownOpen:()=>{b?.(),w&&ot.selectFirstOption()},onDropdownClose:()=>{x?.(),ot.resetSelectedOption()}}),{styleProps:st,rest:{type:ct,autoComplete:lt,...ut}}=s(tt),[dt,ft]=se({value:f,defaultValue:p,finalValue:[],onChange:m}),{getPillProps:pt,getListProps:mt,handleInputKeyDown:ht}=Ln({value:dt,onChange:ft,enabled:et&&!L&&!I}),[gt,_t]=se({value:N,defaultValue:P,finalValue:``,onChange:F}),vt=e=>{_t(e),ot.resetSelectedOption()},yt=t({name:`MultiSelect`,classes:{},props:n,classNames:r,styles:c,unstyled:l,attributes:Ye}),{resolvedClassNames:bt,resolvedStyles:xt}=k({props:n,styles:c,classNames:r}),St=e=>{h?.(e),!e.defaultPrevented&&(e.key===` `&&!Ce&&(e.preventDefault(),ot.toggleDropdown()),e.key===`Backspace`&>.length===0&&dt.length>0&&(We?.(dt[dt.length-1]),ft(dt.slice(0,dt.length-1))),ht(e))},Ct=dt.map((e,t)=>{let n=it[`${e}`]||at.current[`${e}`],r=pt(t);return Ue?(0,V.jsx)(B.Fragment,{children:Ue({option:n,value:e,onRemove:()=>{ft(dt.filter(t=>e!==t)),We?.(e)},disabled:L,reorderProps:r})},`${e}-${t}`):(0,V.jsx)(Kn,{withRemoveButton:!I&&!it[`${e}`]?.disabled,onRemove:()=>{ft(dt.filter(t=>e!==t)),We?.(e)},unstyled:l,disabled:L,...yt(`pill`),...r,children:n?.label||e},`${e}-${t}`)});(0,B.useEffect)(()=>{S&&ot.selectFirstOption()},[S,gt]),(0,B.useEffect)(()=>{dt.forEach(e=>{`${e}`in it&&(at.current[`${e}`]=it[`${e}`])})},[it,dt]);let wt=(0,V.jsx)(Sn.ClearButton,{...Ie,onClear:()=>{Ge?.(),ft([]),vt(``)}}),Tt=er({data:rt,value:dt}),Et=Pe&&dt.length>0&&!L&&!I,Dt=Et?{paddingInlineEnd:tr[d]??tr.sm}:void 0;return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(Sn,{store:ot,classNames:bt,styles:xt,unstyled:l,size:d,readOnly:I,__staticSelector:`MultiSelect`,attributes:Ye,floatingHeight:M,onOptionSubmit:e=>{T?.(e),Xe&&vt(``),ot.updateSelectedOptionIndex(`selected`),dt.includes(it[`${e}`].value)?(ft(dt.filter(t=>t!==it[`${e}`].value)),We?.(it[`${e}`].value)):dt.lengthCe?ot.openDropdown():ot.toggleDropdown(),"data-expanded":ot.dropdownOpened||void 0,id:nt,required:Be,mod:Ve,attributes:Ye,children:(0,V.jsxs)(Kn.Group,{attributes:Ye,disabled:L,unstyled:l,...yt(`pillsList`,{style:Dt}),...mt(),children:[Ct,(0,V.jsx)(Sn.EventsTarget,{autoComplete:lt,withExpandedAttribute:!0,children:(0,V.jsx)(Zn.Field,{...ut,id:nt,placeholder:Re,type:!Ce&&!Re?`hidden`:`visible`,...yt(`inputField`),unstyled:l,onFocus:e=>{ee?.(e),Ze&&Ce&&ot.openDropdown()},onBlur:e=>{R?.(e),ot.closeDropdown(),vt(``)},onKeyDown:St,value:gt,onChange:e=>{if(Rn(e)){if(!I){let t=Qn(it,e.currentTarget.value);t&&!dt.includes(t.value)&&dt.length{let{classNames:t,className:r,style:i,styles:a,vars:s,...c}=o(`ProgressLabel`,null,e),l=ar();return(0,V.jsx)(n,{...l.getStyles(`label`,{className:r,style:i,classNames:t,styles:a}),...c})});sr.classes=or,sr.displayName=`@mantine/core/ProgressLabel`;var cr=f((e,{size:t,radius:n,transitionDuration:r})=>({root:{"--progress-size":x(t,`progress-size`),"--progress-radius":n===void 0?void 0:F(n),"--progress-transition-duration":typeof r==`number`?`${r}ms`:void 0}})),lr=d(e=>{let r=o(`ProgressRoot`,null,e),{classNames:i,className:a,style:s,styles:c,unstyled:l,vars:u,autoContrast:d,transitionDuration:f,orientation:p,attributes:m,mod:h,...g}=r,_=t({name:`Progress`,classes:or,props:r,className:a,style:s,classNames:i,styles:c,unstyled:l,attributes:m,vars:u,varsResolver:cr});return(0,V.jsx)(ir,{value:{getStyles:_,autoContrast:d},children:(0,V.jsx)(n,{mod:[{orientation:p},h],..._(`root`),...g})})});lr.classes=or,lr.varsResolver=cr,lr.displayName=`@mantine/core/ProgressRoot`;var ur={withAria:!0},dr=d(e=>{let{classNames:t,className:r,style:i,styles:s,vars:l,value:u,withAria:d,color:f,striped:p,animated:m,mod:h,...g}=o(`ProgressSection`,ur,e),_=ar(),v=c(),y=d?{role:`progressbar`,"aria-valuemax":100,"aria-valuemin":0,"aria-valuenow":u,"aria-valuetext":`${u}%`}:{};return(0,V.jsx)(n,{..._.getStyles(`section`,{className:r,classNames:t,styles:s,style:i}),...g,...y,mod:[{striped:p||m,animated:m},h],__vars:{"--progress-section-size":`${u}%`,"--progress-section-color":a(f,v),"--progress-label-color":It(_.autoContrast,v)?Xe({color:f,theme:v,autoContrast:_.autoContrast}):void 0}})});dr.classes=or,dr.displayName=`@mantine/core/ProgressSection`;var fr=d(e=>{let t=o(`Progress`,null,e),{value:n,classNames:r,styles:i,vars:a,color:s,striped:c,animated:l,"aria-label":u,...d}=t,{resolvedClassNames:f,resolvedStyles:p}=k({classNames:r,styles:i,props:t});return(0,V.jsx)(lr,{classNames:f,styles:p,vars:a,...d,children:(0,V.jsx)(dr,{value:n,color:s,striped:c,animated:l,"aria-label":u})})});fr.classes=or,fr.displayName=`@mantine/core/Progress`,fr.Section=dr,fr.Root=lr,fr.Label=sr;var pr={root:`m_cf365364`,indicator:`m_9e182ccd`,label:`m_1738fcb2`,input:`m_1714d588`,control:`m_69686b9b`,innerLabel:`m_78882f40`},mr={withItemsBorders:!0},hr=f((e,{radius:t,color:n,transitionDuration:r,size:i,transitionTimingFunction:o})=>({root:{"--sc-radius":t===void 0?void 0:F(t),"--sc-color":n?a(n,e):void 0,"--sc-shadow":n?void 0:`var(--mantine-shadow-xs)`,"--sc-transition-duration":r===void 0?void 0:`${r}ms`,"--sc-transition-timing-function":o,"--sc-padding":x(i,`sc-padding`),"--sc-font-size":v(i)}})),gr=i(r=>{let i=o(`SegmentedControl`,mr,r),{classNames:a,className:s,style:l,styles:u,unstyled:d,vars:f,data:p,value:m,defaultValue:h,onChange:g,size:_,name:v,disabled:y,readOnly:b,fullWidth:x,orientation:S,radius:w,color:T,transitionDuration:E,transitionTimingFunction:D,variant:k,autoContrast:A,withItemsBorders:j,mod:M,attributes:N,ref:P,...F}=i,I=t({name:`SegmentedControl`,props:i,classes:pr,className:s,style:l,classNames:a,styles:u,unstyled:d,attributes:N,vars:f,varsResolver:hr}),L=c(),ee=p.map(e=>Mt(e)?{label:`${e}`,value:e}:e),R=jt(),[te,ne]=(0,B.useState)(O()),[re,ie]=(0,B.useState)(null),[ae,oe]=(0,B.useState)({}),z=(e,t)=>{e!==null&&ae[t]!==e&&(ae[t]=e,oe({...ae}))},[ce,le]=se({value:m,defaultValue:h,finalValue:Array.isArray(p)?ee.find(e=>!e.disabled)?.value??p[0]?.value??null:null,onChange:g}),ue=C(v),de=ee.map(e=>`${e.value}`),fe=ee.map(e=>(0,B.createElement)(n,{...I(`control`),mod:{active:ce===e.value,orientation:S},key:`${e.value}`},(0,B.createElement)(`input`,{...I(`input`),disabled:y||e.disabled,type:`radio`,name:ue,value:`${e.value}`,id:`${ue}-${e.value}`,checked:ce===e.value,onChange:()=>!b&&le(e.value),"data-focus-ring":L.focusRing,key:`${e.value}-input`}),(0,B.createElement)(n,{component:`label`,...I(`label`),mod:{active:ce===e.value&&!(y||e.disabled),disabled:y||e.disabled,"read-only":b},htmlFor:`${ue}-${e.value}`,ref:t=>z(t,`${e.value}`),__vars:{"--sc-label-color":T===void 0?void 0:Xe({color:T,theme:L,autoContrast:A})},key:`${e.value}-label`},(0,V.jsx)(`span`,{...I(`innerLabel`),children:e.label})))),pe=e(P,ie);return Dt(()=>{ne(O())},[p.length]),Dt(()=>{oe(e=>{let t={};return de.forEach(n=>{n in e&&(t[n]=e[n])}),Object.keys(t).length===Object.keys(e).length?e:t})},[de]),p.length===0?null:(0,V.jsxs)(n,{...I(`root`),variant:k,size:_,ref:pe,mod:[{"full-width":x,orientation:S,initialized:R,"with-items-borders":j},M],...F,role:`radiogroup`,"data-disabled":y,children:[ce!==void 0&&(0,V.jsx)(Vt,{target:ae[`${ce}`],parent:re,component:`span`,transitionDuration:`var(--sc-transition-duration)`,...I(`indicator`)},te),fe]})});gr.classes=pr,gr.varsResolver=hr,gr.displayName=`@mantine/core/SegmentedControl`;var _r={size:`sm`,withCheckIcon:!0,allowDeselect:!0,checkIconPosition:`left`,openOnFocus:!0},vr=i(e=>{let t=o([`Input`,`InputWrapper`,`Select`],_r,e),{classNames:n,styles:r,unstyled:i,vars:a,dropdownOpened:s,defaultDropdownOpened:c,onDropdownClose:l,onDropdownOpen:u,onFocus:d,onBlur:f,onClick:p,onChange:m,data:h,value:g,defaultValue:_,selectFirstOptionOnChange:v,selectFirstOptionOnDropdownOpen:y,onOptionSubmit:b,comboboxProps:x,readOnly:S,disabled:w,filter:T,limit:E,withScrollArea:D,maxDropdownHeight:O,floatingHeight:A,size:j,searchable:N,rightSection:P,checkIconPosition:F,withCheckIcon:I,withAlignedLabels:L,nothingFoundMessage:ee,name:R,form:te,searchValue:ne,defaultSearchValue:re,onSearchChange:ie,allowDeselect:ae,error:oe,rightSectionPointerEvents:z,id:ce,clearable:le,clearSectionMode:ue,clearButtonProps:de,hiddenInputProps:fe,renderOption:pe,onClear:me,autoComplete:he,scrollAreaProps:ge,__defaultRightSection:_e,__clearSection:ve,__clearable:ye,chevronColor:be,autoSelectOnBlur:xe,openOnFocus:Se,attributes:Ce,...we}=t,Te=(0,B.useMemo)(()=>Ut(h),[h]),Ee=(0,B.useRef)({}),De=(0,B.useMemo)(()=>Wt(Te),[Te]),Oe=C(ce),[ke,Ae,je]=se({value:g,defaultValue:_,finalValue:null,onChange:m}),Me=ke==null?void 0:`${ke}`in De?De[`${ke}`]:Ee.current[`${ke}`],Ne=kt(Me),[Pe,Fe,Ie]=se({value:ne,defaultValue:re,finalValue:Me?Me.label:``,onChange:ie}),Le=yn({opened:s,defaultOpened:c,onDropdownOpen:()=>{u?.(),y?Le.selectFirstOption():Le.updateSelectedOptionIndex(`active`,{scrollIntoView:!0})},onDropdownClose:()=>{l?.(),setTimeout(Le.resetSelectedOption,0)}}),Re=e=>{Fe(e),Le.resetSelectedOption()},{resolvedClassNames:ze,resolvedStyles:Be}=k({props:t,styles:r,classNames:n});(0,B.useEffect)(()=>{v&&Le.selectFirstOption()},[v,Pe]),(0,B.useEffect)(()=>{g===null&&Re(``),g!=null&&Me&&(Ne?.value!==Me.value||Ne?.label!==Me.label)&&Re(Me.label)},[g,Me]),(0,B.useEffect)(()=>{!je&&!Ie&&Re(ke==null?``:`${ke}`in De?De[`${ke}`]?.label:Ee.current[`${ke}`]?.label||``)},[De,ke]),(0,B.useEffect)(()=>{ke&&`${ke}`in De&&(Ee.current[`${ke}`]=De[`${ke}`])},[De,ke]);let Ve=(0,V.jsx)(Sn.ClearButton,{...de,onClear:()=>{Ae(null,null),Re(``),me?.()}}),He=le&&ke!=null&&!w&&!S;return(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(Sn,{store:Le,__staticSelector:`Select`,classNames:ze,styles:Be,unstyled:i,readOnly:S,size:j,attributes:Ce,floatingHeight:A,keepMounted:xe,onOptionSubmit:e=>{b?.(e);let t=ae&&`${De[e].value}`==`${ke}`?null:De[e],n=t?t.value:null;n!==ke&&Ae(n,t),!je&&Re(n==null?``:t?.label||``),Le.closeDropdown()},...x,children:[(0,V.jsx)(Sn.Target,{targetType:N?`input`:`button`,autoComplete:he,withExpandedAttribute:!0,children:(0,V.jsx)(M,{id:Oe,__defaultRightSection:(0,V.jsx)(Sn.Chevron,{size:j,error:oe,unstyled:i,color:be}),__clearSection:Ve,__clearable:He,__clearSectionMode:ue,rightSection:P,rightSectionPointerEvents:z||`none`,...we,size:j,__staticSelector:`Select`,disabled:w,readOnly:S||!N,value:Pe,onChange:e=>{if(Rn(e)){if(!S){let t=Qn(De,e.currentTarget.value);t&&`${t.value}`!=`${ke}`&&(Ae(t.value,t),!je&&Re(t.label))}return}Re(e.currentTarget.value),Le.openDropdown(),v&&Le.selectFirstOption()},onFocus:e=>{Se&&N&&Le.openDropdown(),d?.(e)},onBlur:e=>{xe&&Le.clickSelectedOption(),Le.closeDropdown();let t=ke!=null&&(`${ke}`in De?De[`${ke}`]:Ee.current[`${ke}`]);Re(t&&t.label||``),f?.(e)},onClick:e=>{N?Le.openDropdown():Le.toggleDropdown(),p?.(e)},classNames:ze,styles:Be,unstyled:i,pointer:!N,error:oe,attributes:Ce})}),(0,V.jsx)(Nn,{data:Te,hidden:S||w,filter:T,search:Pe,limit:E,hiddenWhenEmpty:!ee,withScrollArea:D,maxDropdownHeight:O,filterOptions:!!N&&Me?.label!==Pe,value:ke,checkIconPosition:F,withCheckIcon:I,withAlignedLabels:L,nothingFoundMessage:ee,unstyled:i,labelId:we.label?`${Oe}-label`:void 0,"aria-label":we.label?void 0:we[`aria-label`],renderOption:pe,scrollAreaProps:ge})]}),(0,V.jsx)(Sn.HiddenInput,{value:ke,name:R,form:te,disabled:w,...fe})]})});vr.classes={...M.classes,...Sn.classes},vr.displayName=`@mantine/core/Select`;function yr(e){if(e!==void 0)return typeof e==`number`?T(e):e}function br({spacing:e,verticalSpacing:t,cols:n,minColWidth:r,autoRows:i,selector:a}){let o=c(),s=t===void 0?e:t,l=r!==void 0,u=te({"--sg-spacing-x":j(Ct(e)),"--sg-spacing-y":j(Ct(s)),"--sg-auto-rows":i,...l?{"--sg-min-col-width":yr(r)}:{"--sg-cols":Ct(n)?.toString()}}),d=N(o.breakpoints).reduce((t,r)=>(t[r]||(t[r]={}),typeof e==`object`&&e[r]!==void 0&&(t[r][`--sg-spacing-x`]=j(e[r])),typeof s==`object`&&s[r]!==void 0&&(t[r][`--sg-spacing-y`]=j(s[r])),!l&&typeof n==`object`&&n[r]!==void 0&&(t[r][`--sg-cols`]=n[r]),t),{}),f=ve(N(d),o.breakpoints).filter(e=>N(d[e.value]).length>0).map(e=>({query:`(min-width: ${o.breakpoints[e.value]})`,styles:d[e.value]}));return(0,V.jsx)(A,{styles:u,media:f,selector:a})}function xr(e){return typeof e==`object`&&e?N(e):[]}function Sr(e){return e.sort((e,t)=>Oe(e)-Oe(t))}function Cr({spacing:e,verticalSpacing:t,cols:n,minColWidth:r}){return Sr(Array.from(new Set([...xr(e),...xr(t),...r===void 0?xr(n):[]])))}function wr({spacing:e,verticalSpacing:t,cols:n,minColWidth:r,autoRows:i,selector:a}){let o=t===void 0?e:t,s=r!==void 0,c=te({"--sg-spacing-x":j(Ct(e)),"--sg-spacing-y":j(Ct(o)),"--sg-auto-rows":i,...s?{"--sg-min-col-width":yr(r)}:{"--sg-cols":Ct(n)?.toString()}}),l=Cr({spacing:e,verticalSpacing:t,cols:n,minColWidth:r}),u=l.reduce((t,r)=>(t[r]||(t[r]={}),typeof e==`object`&&e[r]!==void 0&&(t[r][`--sg-spacing-x`]=j(e[r])),typeof o==`object`&&o[r]!==void 0&&(t[r][`--sg-spacing-y`]=j(o[r])),!s&&typeof n==`object`&&n[r]!==void 0&&(t[r][`--sg-cols`]=n[r]),t),{}),d=l.map(e=>({query:`simple-grid (min-width: ${e})`,styles:u[e]}));return(0,V.jsx)(A,{styles:c,container:d,selector:a})}var Tr={container:`m_925c2d2c`,root:`m_2415a157`},Er={cols:1,spacing:`md`,type:`media`},Dr=d(e=>{let i=o(`SimpleGrid`,Er,e),{classNames:a,className:s,style:c,styles:l,unstyled:u,vars:d,cols:f,verticalSpacing:p,spacing:m,type:h,minColWidth:g,autoFlow:_,autoRows:v,attributes:y,...b}=i,x=t({name:`SimpleGrid`,classes:Tr,props:i,className:s,style:c,classNames:a,styles:l,unstyled:u,attributes:y,vars:d}),S=r(),C=g===void 0?void 0:_||`auto-fill`;return h===`container`?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(wr,{...i,selector:`.${S}`}),(0,V.jsx)(`div`,{...x(`container`),children:(0,V.jsx)(n,{...x(`root`,{className:S}),...b,"data-auto-cols":C})})]}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(br,{...i,selector:`.${S}`}),(0,V.jsx)(n,{...x(`root`,{className:S}),...b,"data-auto-cols":C})]})});Dr.classes=Tr,Dr.displayName=`@mantine/core/SimpleGrid`;var Or=(0,B.createContext)(null),kr={hiddenInputValuesSeparator:`,`},Ar=i((e=>{let{value:t,defaultValue:n,onChange:r,size:i,wrapperProps:a,children:s,readOnly:c,name:l,hiddenInputValuesSeparator:u,hiddenInputProps:d,maxSelectedValues:f,disabled:p,...m}=o(`SwitchGroup`,kr,e),[h,g]=se({value:t,defaultValue:n,finalValue:[],onChange:r}),_=e=>{let t=e.currentTarget.value;if(c)return;let n=h.includes(t);!n&&f&&h.length>=f||g(n?h.filter(e=>e!==t):[...h,t])},v=e=>{if(p)return!0;if(!f)return!1;let t=h.includes(e),n=h.length>=f;return!t&&n},y=h.join(u);return(0,V.jsx)(Or,{value:{value:h,onChange:_,size:i,isDisabled:v},children:(0,V.jsxs)(D.Wrapper,{size:i,...a,...m,labelElement:`div`,__staticSelector:`SwitchGroup`,children:[(0,V.jsx)(Cn,{role:`group`,children:s}),(0,V.jsx)(`input`,{type:`hidden`,name:l,value:y,...d})]})})}));Ar.classes=D.Wrapper.classes,Ar.displayName=`@mantine/core/SwitchGroup`;var jr={root:`m_5f93f3bb`,input:`m_926b4011`,track:`m_9307d992`,thumb:`m_93039a1d`,trackLabel:`m_8277e082`},Mr={labelPosition:`right`,withThumbIndicator:!0},Nr=f((e,{radius:t,color:n,size:r})=>({root:{"--switch-radius":t===void 0?void 0:F(t),"--switch-height":x(r,`switch-height`),"--switch-width":x(r,`switch-width`),"--switch-thumb-size":x(r,`switch-thumb-size`),"--switch-label-font-size":x(r,`switch-label-font-size`),"--switch-track-label-padding":x(r,`switch-track-label-padding`),"--switch-color":n?a(n,e):void 0}})),Pr=d(e=>{let r=o(`Switch`,Mr,e),{classNames:i,className:a,style:c,styles:l,unstyled:u,vars:d,color:f,label:p,offLabel:m,onLabel:h,id:g,size:_,radius:v,wrapperProps:y,thumbIcon:b,checked:x,defaultChecked:S,onChange:w,labelPosition:T,description:E,error:D,disabled:O,variant:k,rootRef:A,mod:j,withThumbIndicator:M,attributes:N,...P}=r,F=(0,B.use)(Or),I=_||F?.size,L=t({name:`Switch`,props:r,classes:jr,className:a,style:c,classNames:i,styles:l,unstyled:u,attributes:N,vars:d,varsResolver:Nr}),{styleProps:ee,rest:R}=s(P),te=C(g),ne=[E?`${te}-description`:void 0,D&&typeof D!=`boolean`?`${te}-error`:void 0,R[`aria-describedby`]].filter(Boolean).join(` `)||void 0,re={checked:F?.value.includes(R.value)??x,onChange:e=>{F?.onChange(e),w?.(e)}},ie=O||F?.isDisabled?.(R.value),[ae,oe]=se({value:re.checked??x,defaultValue:S,finalValue:!1});return(0,V.jsxs)(En,{...L(`root`),__staticSelector:`Switch`,__stylesApiProps:r,id:te,size:I,labelPosition:T,label:p,description:E,error:D,disabled:ie,bodyElement:`label`,labelElement:`span`,classNames:i,styles:l,unstyled:u,"data-checked":re.checked,variant:k,ref:A,mod:j,attributes:N,inert:R.inert,...ee,...y,children:[(0,V.jsx)(`input`,{...R,...re,disabled:ie,checked:ae,"data-checked":re.checked,onChange:e=>{re.onChange?.(e),oe(e.currentTarget.checked)},id:te,type:`checkbox`,role:`switch`,inert:R.inert,"aria-describedby":ne,...L(`input`)}),(0,V.jsxs)(n,{"aria-hidden":`true`,component:`span`,mod:{error:D,"label-position":T,"without-labels":!h&&!m},...L(`track`),children:[(0,V.jsx)(n,{component:`span`,mod:{"reduce-motion":!0,"with-thumb-indicator":M&&!b},...L(`thumb`),children:b}),(0,V.jsx)(`span`,{...L(`trackLabel`),children:ae?h:m})]})]})});Pr.classes={...jr,...Tn},Pr.varsResolver=Nr,Pr.displayName=`@mantine/core/Switch`,Pr.Group=Ar;var Fr=new Map([[`bold`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M244,56v48a12,12,0,0,1-12,12H184a12,12,0,1,1,0-24H201.1l-19-17.38c-.13-.12-.26-.24-.38-.37A76,76,0,1,0,127,204h1a75.53,75.53,0,0,0,52.15-20.72,12,12,0,0,1,16.49,17.45A99.45,99.45,0,0,1,128,228h-1.37A100,100,0,1,1,198.51,57.06L220,76.72V56a12,12,0,0,1,24,0Z`}))],[`duotone`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M216,128a88,88,0,1,1-88-88A88,88,0,0,1,216,128Z`,opacity:`0.2`}),B.createElement(`path`,{d:`M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1,0-16H211.4L184.81,71.64l-.25-.24a80,80,0,1,0-1.67,114.78,8,8,0,0,1,11,11.63A95.44,95.44,0,0,1,128,224h-1.32A96,96,0,1,1,195.75,60L224,85.8V56a8,8,0,1,1,16,0Z`}))],[`fill`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1-5.66-13.66l17-17-10.55-9.65-.25-.24a80,80,0,1,0-1.67,114.78,8,8,0,1,1,11,11.63A95.44,95.44,0,0,1,128,224h-1.32A96,96,0,1,1,195.75,60l10.93,10L226.34,50.3A8,8,0,0,1,240,56Z`}))],[`light`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M238,56v48a6,6,0,0,1-6,6H184a6,6,0,0,1,0-12h32.55l-30.38-27.8c-.06-.06-.12-.13-.19-.19a82,82,0,1,0-1.7,117.65,6,6,0,0,1,8.24,8.73A93.46,93.46,0,0,1,128,222h-1.28A94,94,0,1,1,194.37,61.4L226,90.35V56a6,6,0,1,1,12,0Z`}))],[`regular`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1,0-16H211.4L184.81,71.64l-.25-.24a80,80,0,1,0-1.67,114.78,8,8,0,0,1,11,11.63A95.44,95.44,0,0,1,128,224h-1.32A96,96,0,1,1,195.75,60L224,85.8V56a8,8,0,1,1,16,0Z`}))],[`thin`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M236,56v48a4,4,0,0,1-4,4H184a4,4,0,0,1,0-8h37.7L187.53,68.69l-.13-.12a84,84,0,1,0-1.75,120.51,4,4,0,0,1,5.5,5.82A91.43,91.43,0,0,1,128,220h-1.26A92,92,0,1,1,193,62.84l35,32.05V56a4,4,0,1,1,8,0Z`}))]]),Ir=new Map([[`bold`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M228,128a100,100,0,0,1-98.66,100H128a99.39,99.39,0,0,1-68.62-27.29,12,12,0,0,1,16.48-17.45,76,76,0,1,0-1.57-109c-.13.13-.25.25-.39.37L54.89,92H72a12,12,0,0,1,0,24H24a12,12,0,0,1-12-12V56a12,12,0,0,1,24,0V76.72L57.48,57.06A100,100,0,0,1,228,128Z`}))],[`duotone`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M216,128a88,88,0,1,1-88-88A88,88,0,0,1,216,128Z`,opacity:`0.2`}),B.createElement(`path`,{d:`M224,128a96,96,0,0,1-94.71,96H128A95.38,95.38,0,0,1,62.1,197.8a8,8,0,0,1,11-11.63A80,80,0,1,0,71.43,71.39a3.07,3.07,0,0,1-.26.25L44.59,96H72a8,8,0,0,1,0,16H24a8,8,0,0,1-8-8V56a8,8,0,0,1,16,0V85.8L60.25,60A96,96,0,0,1,224,128Z`}))],[`fill`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M224,128a96,96,0,0,1-94.71,96H128A95.38,95.38,0,0,1,62.1,197.8a8,8,0,0,1,11-11.63A80,80,0,1,0,71.43,71.39a3.07,3.07,0,0,1-.26.25L60.63,81.29l17,17A8,8,0,0,1,72,112H24a8,8,0,0,1-8-8V56A8,8,0,0,1,29.66,50.3L49.31,70,60.25,60A96,96,0,0,1,224,128Z`}))],[`light`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M222,128a94,94,0,0,1-92.74,94H128a93.43,93.43,0,0,1-64.5-25.65,6,6,0,1,1,8.24-8.72A82,82,0,1,0,70,70l-.19.19L39.44,98H72a6,6,0,0,1,0,12H24a6,6,0,0,1-6-6V56a6,6,0,0,1,12,0V90.34L61.63,61.4A94,94,0,0,1,222,128Z`}))],[`regular`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M224,128a96,96,0,0,1-94.71,96H128A95.38,95.38,0,0,1,62.1,197.8a8,8,0,0,1,11-11.63A80,80,0,1,0,71.43,71.39a3.07,3.07,0,0,1-.26.25L44.59,96H72a8,8,0,0,1,0,16H24a8,8,0,0,1-8-8V56a8,8,0,0,1,16,0V85.8L60.25,60A96,96,0,0,1,224,128Z`}))],[`thin`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M220,128a92,92,0,0,1-90.77,92H128a91.47,91.47,0,0,1-63.13-25.1,4,4,0,1,1,5.5-5.82A84,84,0,1,0,68.6,68.57l-.13.12L34.3,100H72a4,4,0,0,1,0,8H24a4,4,0,0,1-4-4V56a4,4,0,0,1,8,0V94.89l35-32A92,92,0,0,1,220,128Z`}))]]),Lr=new Map([[`bold`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M220,48V96a12,12,0,0,1-24,0V77l-35.51,35.52a12,12,0,0,1-17-17L179,60H160a12,12,0,0,1,0-24h48A12,12,0,0,1,220,48ZM95.51,143.51,60,179V160a12,12,0,0,0-24,0v48a12,12,0,0,0,12,12H96a12,12,0,0,0,0-24H77l35.52-35.51a12,12,0,0,0-17-17ZM208,148a12,12,0,0,0-12,12v19l-35.51-35.52a12,12,0,0,0-17,17L179,196H160a12,12,0,0,0,0,24h48a12,12,0,0,0,12-12V160A12,12,0,0,0,208,148ZM77,60H96a12,12,0,0,0,0-24H48A12,12,0,0,0,36,48V96a12,12,0,0,0,24,0V77l35.51,35.52a12,12,0,0,0,17-17Z`}))],[`duotone`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M208,48V208H48V48Z`,opacity:`0.2`}),B.createElement(`path`,{d:`M216,48V96a8,8,0,0,1-16,0V67.31l-42.34,42.35a8,8,0,0,1-11.32-11.32L188.69,56H160a8,8,0,0,1,0-16h48A8,8,0,0,1,216,48ZM98.34,146.34,56,188.69V160a8,8,0,0,0-16,0v48a8,8,0,0,0,8,8H96a8,8,0,0,0,0-16H67.31l42.35-42.34a8,8,0,0,0-11.32-11.32ZM208,152a8,8,0,0,0-8,8v28.69l-42.34-42.35a8,8,0,0,0-11.32,11.32L188.69,200H160a8,8,0,0,0,0,16h48a8,8,0,0,0,8-8V160A8,8,0,0,0,208,152ZM67.31,56H96a8,8,0,0,0,0-16H48a8,8,0,0,0-8,8V96a8,8,0,0,0,16,0V67.31l42.34,42.35a8,8,0,0,0,11.32-11.32Z`}))],[`fill`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M109.66,146.34a8,8,0,0,1,0,11.32L83.31,184l18.35,18.34A8,8,0,0,1,96,216H48a8,8,0,0,1-8-8V160a8,8,0,0,1,13.66-5.66L72,172.69l26.34-26.35A8,8,0,0,1,109.66,146.34ZM83.31,72l18.35-18.34A8,8,0,0,0,96,40H48a8,8,0,0,0-8,8V96a8,8,0,0,0,13.66,5.66L72,83.31l26.34,26.35a8,8,0,0,0,11.32-11.32ZM208,40H160a8,8,0,0,0-5.66,13.66L172.69,72,146.34,98.34a8,8,0,0,0,11.32,11.32L184,83.31l18.34,18.35A8,8,0,0,0,216,96V48A8,8,0,0,0,208,40Zm3.06,112.61a8,8,0,0,0-8.72,1.73L184,172.69l-26.34-26.35a8,8,0,0,0-11.32,11.32L172.69,184l-18.35,18.34A8,8,0,0,0,160,216h48a8,8,0,0,0,8-8V160A8,8,0,0,0,211.06,152.61Z`}))],[`light`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M214,48V96a6,6,0,0,1-12,0V62.48l-45.76,45.76a6,6,0,0,1-8.48-8.48L193.52,54H160a6,6,0,0,1,0-12h48A6,6,0,0,1,214,48ZM99.76,147.76,54,193.52V160a6,6,0,0,0-12,0v48a6,6,0,0,0,6,6H96a6,6,0,0,0,0-12H62.48l45.76-45.76a6,6,0,0,0-8.48-8.48ZM208,154a6,6,0,0,0-6,6v33.52l-45.76-45.76a6,6,0,0,0-8.48,8.48L193.52,202H160a6,6,0,0,0,0,12h48a6,6,0,0,0,6-6V160A6,6,0,0,0,208,154ZM62.48,54H96a6,6,0,0,0,0-12H48a6,6,0,0,0-6,6V96a6,6,0,0,0,12,0V62.48l45.76,45.76a6,6,0,0,0,8.48-8.48Z`}))],[`regular`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M216,48V96a8,8,0,0,1-16,0V67.31l-42.34,42.35a8,8,0,0,1-11.32-11.32L188.69,56H160a8,8,0,0,1,0-16h48A8,8,0,0,1,216,48ZM98.34,146.34,56,188.69V160a8,8,0,0,0-16,0v48a8,8,0,0,0,8,8H96a8,8,0,0,0,0-16H67.31l42.35-42.34a8,8,0,0,0-11.32-11.32ZM208,152a8,8,0,0,0-8,8v28.69l-42.34-42.35a8,8,0,0,0-11.32,11.32L188.69,200H160a8,8,0,0,0,0,16h48a8,8,0,0,0,8-8V160A8,8,0,0,0,208,152ZM67.31,56H96a8,8,0,0,0,0-16H48a8,8,0,0,0-8,8V96a8,8,0,0,0,16,0V67.31l42.34,42.35a8,8,0,0,0,11.32-11.32Z`}))],[`thin`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M212,48V96a4,4,0,0,1-8,0V57.66l-49.17,49.17a4,4,0,0,1-5.66-5.66L198.34,52H160a4,4,0,0,1,0-8h48A4,4,0,0,1,212,48ZM101.17,149.17,52,198.34V160a4,4,0,0,0-8,0v48a4,4,0,0,0,4,4H96a4,4,0,0,0,0-8H57.66l49.17-49.17a4,4,0,0,0-5.66-5.66ZM208,156a4,4,0,0,0-4,4v38.34l-49.17-49.17a4,4,0,0,0-5.66,5.66L198.34,204H160a4,4,0,0,0,0,8h48a4,4,0,0,0,4-4V160A4,4,0,0,0,208,156ZM57.66,52H96a4,4,0,0,0,0-8H48a4,4,0,0,0-4,4V96a4,4,0,0,0,8,0V57.66l49.17,49.17a4,4,0,0,0,5.66-5.66Z`}))]]),Rr=new Map([[`bold`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M216.49,104.49l-80,80a12,12,0,0,1-17,0l-80-80a12,12,0,0,1,17-17L128,159l71.51-71.52a12,12,0,0,1,17,17Z`}))],[`duotone`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M208,96l-80,80L48,96Z`,opacity:`0.2`}),B.createElement(`path`,{d:`M215.39,92.94A8,8,0,0,0,208,88H48a8,8,0,0,0-5.66,13.66l80,80a8,8,0,0,0,11.32,0l80-80A8,8,0,0,0,215.39,92.94ZM128,164.69,67.31,104H188.69Z`}))],[`fill`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,48,88H208a8,8,0,0,1,5.66,13.66Z`}))],[`light`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M212.24,100.24l-80,80a6,6,0,0,1-8.48,0l-80-80a6,6,0,0,1,8.48-8.48L128,167.51l75.76-75.75a6,6,0,0,1,8.48,8.48Z`}))],[`regular`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z`}))],[`thin`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M210.83,98.83l-80,80a4,4,0,0,1-5.66,0l-80-80a4,4,0,0,1,5.66-5.66L128,170.34l77.17-77.17a4,4,0,1,1,5.66,5.66Z`}))]]),zr=new Map([[`bold`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M216.49,168.49a12,12,0,0,1-17,0L128,97,56.49,168.49a12,12,0,0,1-17-17l80-80a12,12,0,0,1,17,0l80,80A12,12,0,0,1,216.49,168.49Z`}))],[`duotone`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M208,160H48l80-80Z`,opacity:`0.2`}),B.createElement(`path`,{d:`M213.66,154.34l-80-80a8,8,0,0,0-11.32,0l-80,80A8,8,0,0,0,48,168H208a8,8,0,0,0,5.66-13.66ZM67.31,152,128,91.31,188.69,152Z`}))],[`fill`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M215.39,163.06A8,8,0,0,1,208,168H48a8,8,0,0,1-5.66-13.66l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,215.39,163.06Z`}))],[`light`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M212.24,164.24a6,6,0,0,1-8.48,0L128,88.49,52.24,164.24a6,6,0,0,1-8.48-8.48l80-80a6,6,0,0,1,8.48,0l80,80A6,6,0,0,1,212.24,164.24Z`}))],[`regular`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M213.66,165.66a8,8,0,0,1-11.32,0L128,91.31,53.66,165.66a8,8,0,0,1-11.32-11.32l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,213.66,165.66Z`}))],[`thin`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M210.83,162.83a4,4,0,0,1-5.66,0L128,85.66,50.83,162.83a4,4,0,0,1-5.66-5.66l80-80a4,4,0,0,1,5.66,0l80,80A4,4,0,0,1,210.83,162.83Z`}))]]),Br=new Map([[`bold`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M172,108a12,12,0,0,1-12,12H96a12,12,0,0,1,0-24h64A12,12,0,0,1,172,108Zm-12,28H96a12,12,0,0,0,0,24h64a12,12,0,0,0,0-24Zm76-8A108,108,0,0,1,78.77,224.15L46.34,235A20,20,0,0,1,21,209.66l10.81-32.43A108,108,0,1,1,236,128Zm-24,0A84,84,0,1,0,55.27,170.06a12,12,0,0,1,1,9.81l-9.93,29.79,29.79-9.93a12.1,12.1,0,0,1,3.8-.62,12,12,0,0,1,6,1.62A84,84,0,0,0,212,128Z`}))],[`duotone`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M224,128A96,96,0,0,1,79.93,211.11h0L42.54,223.58a8,8,0,0,1-10.12-10.12l12.47-37.39h0A96,96,0,1,1,224,128Z`,opacity:`0.2`}),B.createElement(`path`,{d:`M128,24A104,104,0,0,0,36.18,176.88L24.83,210.93a16,16,0,0,0,20.24,20.24l34.05-11.35A104,104,0,1,0,128,24Zm0,192a87.87,87.87,0,0,1-44.06-11.81,8,8,0,0,0-4-1.08,7.85,7.85,0,0,0-2.53.42L40,216,52.47,178.6a8,8,0,0,0-.66-6.54A88,88,0,1,1,128,216Zm40-104a8,8,0,0,1-8,8H96a8,8,0,0,1,0-16h64A8,8,0,0,1,168,112Zm0,32a8,8,0,0,1-8,8H96a8,8,0,0,1,0-16h64A8,8,0,0,1,168,144Z`}))],[`fill`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M128,24A104,104,0,0,0,36.18,176.88L24.83,210.93a16,16,0,0,0,20.24,20.24l34.05-11.35A104,104,0,1,0,128,24Zm32,128H96a8,8,0,0,1,0-16h64a8,8,0,0,1,0,16Zm0-32H96a8,8,0,0,1,0-16h64a8,8,0,0,1,0,16Z`}))],[`light`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M166,112a6,6,0,0,1-6,6H96a6,6,0,0,1,0-12h64A6,6,0,0,1,166,112Zm-6,26H96a6,6,0,0,0,0,12h64a6,6,0,0,0,0-12Zm70-10A102,102,0,0,1,79.31,217.65L44.44,229.27a14,14,0,0,1-17.71-17.71l11.62-34.87A102,102,0,1,1,230,128Zm-12,0A90,90,0,1,0,50.08,173.06a6,6,0,0,1,.5,4.91L38.12,215.35a2,2,0,0,0,2.53,2.53L78,205.42a6.2,6.2,0,0,1,1.9-.31,6.09,6.09,0,0,1,3,.81A90,90,0,0,0,218,128Z`}))],[`regular`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M168,112a8,8,0,0,1-8,8H96a8,8,0,0,1,0-16h64A8,8,0,0,1,168,112Zm-8,24H96a8,8,0,0,0,0,16h64a8,8,0,0,0,0-16Zm72-8A104,104,0,0,1,79.12,219.82L45.07,231.17a16,16,0,0,1-20.24-20.24l11.35-34.05A104,104,0,1,1,232,128Zm-16,0A88,88,0,1,0,51.81,172.06a8,8,0,0,1,.66,6.54L40,216,77.4,203.53a7.85,7.85,0,0,1,2.53-.42,8,8,0,0,1,4,1.08A88,88,0,0,0,216,128Z`}))],[`thin`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M164,112a4,4,0,0,1-4,4H96a4,4,0,0,1,0-8h64A4,4,0,0,1,164,112Zm-4,28H96a4,4,0,0,0,0,8h64a4,4,0,0,0,0-8Zm68-12A100,100,0,0,1,79.5,215.47l-35.69,11.9a12,12,0,0,1-15.18-15.18l11.9-35.69A100,100,0,1,1,228,128Zm-8,0A92,92,0,1,0,48.35,174.07a4,4,0,0,1,.33,3.27L36.22,214.72a4,4,0,0,0,5.06,5.06l37.38-12.46a3.93,3.93,0,0,1,1.27-.21,4.05,4.05,0,0,1,2,.54A92,92,0,0,0,220,128Z`}))]]),Vr=new Map([[`bold`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Zm68-84a12,12,0,0,1-12,12H128a12,12,0,0,1-12-12V72a12,12,0,0,1,24,0v44h44A12,12,0,0,1,196,128Z`}))],[`duotone`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z`,opacity:`0.2`}),B.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm64-88a8,8,0,0,1-8,8H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48A8,8,0,0,1,192,128Z`}))],[`fill`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm56,112H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z`}))],[`light`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm0,192a90,90,0,1,1,90-90A90.1,90.1,0,0,1,128,218Zm62-90a6,6,0,0,1-6,6H128a6,6,0,0,1-6-6V72a6,6,0,0,1,12,0v50h50A6,6,0,0,1,190,128Z`}))],[`regular`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm64-88a8,8,0,0,1-8,8H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48A8,8,0,0,1,192,128Z`}))],[`thin`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm0,192a92,92,0,1,1,92-92A92.1,92.1,0,0,1,128,220Zm60-92a4,4,0,0,1-4,4H128a4,4,0,0,1-4-4V72a4,4,0,0,1,8,0v52h52A4,4,0,0,1,188,128Z`}))]]),Hr=new Map([[`bold`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M108,84a16,16,0,1,1,16,16A16,16,0,0,1,108,84Zm128,44A108,108,0,1,1,128,20,108.12,108.12,0,0,1,236,128Zm-24,0a84,84,0,1,0-84,84A84.09,84.09,0,0,0,212,128Zm-72,36.68V132a20,20,0,0,0-20-20,12,12,0,0,0-4,23.32V168a20,20,0,0,0,20,20,12,12,0,0,0,4-23.32Z`}))],[`duotone`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z`,opacity:`0.2`}),B.createElement(`path`,{d:`M144,176a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176Zm88-48A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128ZM124,96a12,12,0,1,0-12-12A12,12,0,0,0,124,96Z`}))],[`fill`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-4,48a12,12,0,1,1-12,12A12,12,0,0,1,124,72Zm12,112a16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40a8,8,0,0,1,0,16Z`}))],[`light`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M142,176a6,6,0,0,1-6,6,14,14,0,0,1-14-14V128a2,2,0,0,0-2-2,6,6,0,0,1,0-12,14,14,0,0,1,14,14v40a2,2,0,0,0,2,2A6,6,0,0,1,142,176ZM124,94a10,10,0,1,0-10-10A10,10,0,0,0,124,94Zm106,34A102,102,0,1,1,128,26,102.12,102.12,0,0,1,230,128Zm-12,0a90,90,0,1,0-90,90A90.1,90.1,0,0,0,218,128Z`}))],[`regular`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm16-40a8,8,0,0,1-8,8,16,16,0,0,1-16-16V128a8,8,0,0,1,0-16,16,16,0,0,1,16,16v40A8,8,0,0,1,144,176ZM112,84a12,12,0,1,1,12,12A12,12,0,0,1,112,84Z`}))],[`thin`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M140,176a4,4,0,0,1-4,4,12,12,0,0,1-12-12V128a4,4,0,0,0-4-4,4,4,0,0,1,0-8,12,12,0,0,1,12,12v40a4,4,0,0,0,4,4A4,4,0,0,1,140,176ZM124,92a8,8,0,1,0-8-8A8,8,0,0,0,124,92Zm104,36A100,100,0,1,1,128,28,100.11,100.11,0,0,1,228,128Zm-8,0a92,92,0,1,0-92,92A92.1,92.1,0,0,0,220,128Z`}))]]),Ur=new Map([[`bold`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M76,64A12,12,0,0,1,88,52H216a12,12,0,0,1,0,24H88A12,12,0,0,1,76,64Zm140,52H88a12,12,0,0,0,0,24H216a12,12,0,0,0,0-24Zm0,64H88a12,12,0,0,0,0,24H216a12,12,0,0,0,0-24ZM44,112a16,16,0,1,0,16,16A16,16,0,0,0,44,112Zm0-64A16,16,0,1,0,60,64,16,16,0,0,0,44,48Zm0,128a16,16,0,1,0,16,16A16,16,0,0,0,44,176Z`}))],[`duotone`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M216,64V192H88V64Z`,opacity:`0.2`}),B.createElement(`path`,{d:`M80,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H88A8,8,0,0,1,80,64Zm136,56H88a8,8,0,1,0,0,16H216a8,8,0,0,0,0-16Zm0,64H88a8,8,0,1,0,0,16H216a8,8,0,0,0,0-16ZM44,52A12,12,0,1,0,56,64,12,12,0,0,0,44,52Zm0,64a12,12,0,1,0,12,12A12,12,0,0,0,44,116Zm0,64a12,12,0,1,0,12,12A12,12,0,0,0,44,180Z`}))],[`fill`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM68,188a12,12,0,1,1,12-12A12,12,0,0,1,68,188Zm0-48a12,12,0,1,1,12-12A12,12,0,0,1,68,140Zm0-48A12,12,0,1,1,80,80,12,12,0,0,1,68,92Zm124,92H104a8,8,0,0,1,0-16h88a8,8,0,0,1,0,16Zm0-48H104a8,8,0,0,1,0-16h88a8,8,0,0,1,0,16Zm0-48H104a8,8,0,0,1,0-16h88a8,8,0,0,1,0,16Z`}))],[`light`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M82,64a6,6,0,0,1,6-6H216a6,6,0,0,1,0,12H88A6,6,0,0,1,82,64Zm134,58H88a6,6,0,0,0,0,12H216a6,6,0,0,0,0-12Zm0,64H88a6,6,0,0,0,0,12H216a6,6,0,0,0,0-12ZM44,54A10,10,0,1,0,54,64,10,10,0,0,0,44,54Zm0,128a10,10,0,1,0,10,10A10,10,0,0,0,44,182Zm0-64a10,10,0,1,0,10,10A10,10,0,0,0,44,118Z`}))],[`regular`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M80,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H88A8,8,0,0,1,80,64Zm136,56H88a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Zm0,64H88a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16ZM44,52A12,12,0,1,0,56,64,12,12,0,0,0,44,52Zm0,64a12,12,0,1,0,12,12A12,12,0,0,0,44,116Zm0,64a12,12,0,1,0,12,12A12,12,0,0,0,44,180Z`}))],[`thin`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M84,64a4,4,0,0,1,4-4H216a4,4,0,0,1,0,8H88A4,4,0,0,1,84,64Zm132,60H88a4,4,0,0,0,0,8H216a4,4,0,0,0,0-8Zm0,64H88a4,4,0,0,0,0,8H216a4,4,0,0,0,0-8ZM44,120a8,8,0,1,0,8,8A8,8,0,0,0,44,120Zm0-64a8,8,0,1,0,8,8A8,8,0,0,0,44,56Zm0,128a8,8,0,1,0,8,8A8,8,0,0,0,44,184Z`}))]]),Wr=new Map([[`bold`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M28,64A12,12,0,0,1,40,52H216a12,12,0,0,1,0,24H40A12,12,0,0,1,28,64Zm12,76h64a12,12,0,0,0,0-24H40a12,12,0,0,0,0,24Zm80,40H40a12,12,0,0,0,0,24h80a12,12,0,0,0,0-24Zm120.49,20.49a12,12,0,0,1-17,0l-18.08-18.08a44,44,0,1,1,17-17l18.08,18.07A12,12,0,0,1,240.49,200.49ZM184,164a20,20,0,1,0-20-20A20,20,0,0,0,184,164Z`}))],[`duotone`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M216,144a32,32,0,1,1-32-32A32,32,0,0,1,216,144Z`,opacity:`0.2`}),B.createElement(`path`,{d:`M32,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H40A8,8,0,0,1,32,64Zm8,72h72a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16Zm88,48H40a8,8,0,0,0,0,16h88a8,8,0,0,0,0-16Zm109.66,13.66a8,8,0,0,1-11.32,0L206,177.36A40,40,0,1,1,217.36,166l20.3,20.3A8,8,0,0,1,237.66,197.66ZM184,168a24,24,0,1,0-24-24A24,24,0,0,0,184,168Z`}))],[`fill`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M32,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H40A8,8,0,0,1,32,64Zm8,72h72a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16Zm88,48H40a8,8,0,0,0,0,16h88a8,8,0,0,0,0-16Zm109.66,2.34L217.36,166A40,40,0,1,0,206,177.36l20.3,20.3a8,8,0,0,0,11.32-11.32Z`}))],[`light`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M34,64a6,6,0,0,1,6-6H216a6,6,0,0,1,0,12H40A6,6,0,0,1,34,64Zm6,70h72a6,6,0,0,0,0-12H40a6,6,0,0,0,0,12Zm88,52H40a6,6,0,0,0,0,12h88a6,6,0,0,0,0-12Zm108.24,10.24a6,6,0,0,1-8.48,0l-21.49-21.48a38.06,38.06,0,1,1,8.49-8.49l21.48,21.49A6,6,0,0,1,236.24,196.24ZM184,170a26,26,0,1,0-26-26A26,26,0,0,0,184,170Z`}))],[`regular`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M32,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H40A8,8,0,0,1,32,64Zm8,72h72a8,8,0,0,0,0-16H40a8,8,0,0,0,0,16Zm88,48H40a8,8,0,0,0,0,16h88a8,8,0,0,0,0-16Zm109.66,13.66a8,8,0,0,1-11.32,0L206,177.36A40,40,0,1,1,217.36,166l20.3,20.3A8,8,0,0,1,237.66,197.66ZM184,168a24,24,0,1,0-24-24A24,24,0,0,0,184,168Z`}))],[`thin`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M36,64a4,4,0,0,1,4-4H216a4,4,0,0,1,0,8H40A4,4,0,0,1,36,64Zm4,68h72a4,4,0,0,0,0-8H40a4,4,0,0,0,0,8Zm88,56H40a4,4,0,0,0,0,8h88a4,4,0,0,0,0-8Zm106.83,6.83a4,4,0,0,1-5.66,0l-22.72-22.72a36.06,36.06,0,1,1,5.66-5.66l22.72,22.72A4,4,0,0,1,234.83,194.83ZM184,172a28,28,0,1,0-28-28A28,28,0,0,0,184,172Z`}))]]),Gr=new Map([[`bold`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M156,112a12,12,0,0,1-12,12H80a12,12,0,0,1,0-24h64A12,12,0,0,1,156,112Zm76.49,120.49a12,12,0,0,1-17,0L168,185a92.12,92.12,0,1,1,17-17l47.54,47.53A12,12,0,0,1,232.49,232.49ZM112,180a68,68,0,1,0-68-68A68.08,68.08,0,0,0,112,180Z`}))],[`duotone`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M192,112a80,80,0,1,1-80-80A80,80,0,0,1,192,112Z`,opacity:`0.2`}),B.createElement(`path`,{d:`M229.66,218.34,179.6,168.28a88.21,88.21,0,1,0-11.32,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Zm112,0a8,8,0,0,1-8,8H80a8,8,0,0,1,0-16h64A8,8,0,0,1,152,112Z`}))],[`fill`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M229.66,218.34,179.6,168.28a88.21,88.21,0,1,0-11.32,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM144,120H80a8,8,0,0,1,0-16h64a8,8,0,0,1,0,16Z`}))],[`light`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M150,112a6,6,0,0,1-6,6H80a6,6,0,0,1,0-12h64A6,6,0,0,1,150,112Zm78.24,116.24a6,6,0,0,1-8.48,0l-51.38-51.38a86.15,86.15,0,1,1,8.48-8.48l51.38,51.38A6,6,0,0,1,228.24,228.24ZM112,186a74,74,0,1,0-74-74A74.09,74.09,0,0,0,112,186Z`}))],[`regular`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M152,112a8,8,0,0,1-8,8H80a8,8,0,0,1,0-16h64A8,8,0,0,1,152,112Zm77.66,117.66a8,8,0,0,1-11.32,0l-50.06-50.07a88.11,88.11,0,1,1,11.31-11.31l50.07,50.06A8,8,0,0,1,229.66,229.66ZM112,184a72,72,0,1,0-72-72A72.08,72.08,0,0,0,112,184Z`}))],[`thin`,B.createElement(B.Fragment,null,B.createElement(`path`,{d:`M148,112a4,4,0,0,1-4,4H80a4,4,0,0,1,0-8h64A4,4,0,0,1,148,112Zm78.83,114.83a4,4,0,0,1-5.66,0l-52.7-52.7a84.1,84.1,0,1,1,5.66-5.66l52.7,52.7A4,4,0,0,1,226.83,226.83ZM112,188a76,76,0,1,0-76-76A76.08,76.08,0,0,0,112,188Z`}))]]),Kr=B.forwardRef((e,t)=>B.createElement(_,{ref:t,...e,weights:Fr}));Kr.displayName=`ArrowClockwiseIcon`;var qr=Kr,Jr=B.forwardRef((e,t)=>B.createElement(_,{ref:t,...e,weights:Ir}));Jr.displayName=`ArrowCounterClockwiseIcon`;var Yr=Jr,Xr=B.forwardRef((e,t)=>B.createElement(_,{ref:t,...e,weights:Lr}));Xr.displayName=`ArrowsOutIcon`;var Zr=Xr,Qr=B.forwardRef((e,t)=>B.createElement(_,{ref:t,...e,weights:Rr}));Qr.displayName=`CaretDownIcon`;var $r=Qr,ei=B.forwardRef((e,t)=>B.createElement(_,{ref:t,...e,weights:zr}));ei.displayName=`CaretUpIcon`;var ti=ei,ni=B.forwardRef((e,t)=>B.createElement(_,{ref:t,...e,weights:Br}));ni.displayName=`ChatCircleTextIcon`;var ri=ni,ii=B.forwardRef((e,t)=>B.createElement(_,{ref:t,...e,weights:Vr}));ii.displayName=`ClockIcon`;var ai=ii,oi=B.forwardRef((e,t)=>B.createElement(_,{ref:t,...e,weights:Hr}));oi.displayName=`InfoIcon`;var si=oi,ci=B.forwardRef((e,t)=>B.createElement(_,{ref:t,...e,weights:Ur}));ci.displayName=`ListBulletsIcon`;var li=ci,ui=B.forwardRef((e,t)=>B.createElement(_,{ref:t,...e,weights:Wr}));ui.displayName=`ListMagnifyingGlassIcon`;var di=ui,fi=B.forwardRef((e,t)=>B.createElement(_,{ref:t,...e,weights:Gr}));fi.displayName=`MagnifyingGlassMinusIcon`;var pi=fi,mi=`$__all`;function hi(e){let{margin:t,containerPadding:n,containerWidth:r,cols:i}=e;return(r-t[0]*(i-1)-n[0]*2)/i}function gi(e,t,n){return Number.isFinite(e)?Math.round(t*e+Math.max(0,e-1)*n):e}function _i(e,t,n,r,i,a,o){let{margin:s,containerPadding:c,rowHeight:l}=e,u=hi(e),d,f,p,m;if(o?(d=Math.round(o.width),f=Math.round(o.height)):(d=gi(r,u,s[0]),f=gi(i,l,s[1])),a?(p=Math.round(a.top),m=Math.round(a.left)):o?(p=Math.round(o.top),m=Math.round(o.left)):(p=Math.round((l+s[1])*n+c[1]),m=Math.round((u+s[0])*t+c[0])),!a&&!o){if(Number.isFinite(r)){let e=Math.round((u+s[0])*(t+r)+c[0])-m-d;e!==s[0]&&(d+=e-s[0])}if(Number.isFinite(i)){let e=Math.round((l+s[1])*(n+i)+c[1])-p-f;e!==s[1]&&(f+=e-s[1])}}return{top:p,left:m,width:d,height:f}}function vi(e,t,n,r,i){let{margin:a,containerPadding:o,cols:s,rowHeight:c,maxRows:l}=e,u=hi(e),d=Math.round((n-o[0])/(u+a[0])),f=Math.round((t-o[1])/(c+a[1]));return d=xi(d,0,s-r),f=xi(f,0,l-i),{x:d,y:f}}function yi(e,t,n){let{margin:r,containerPadding:i,rowHeight:a}=e,o=hi(e);return{x:Math.round((n-i[0])/(o+r[0])),y:Math.round((t-i[1])/(a+r[1]))}}function bi(e,t,n){let{margin:r,rowHeight:i}=e,a=hi(e);return{w:Math.max(1,Math.round((t+r[0])/(a+r[0]))),h:Math.max(1,Math.round((n+r[1])/(i+r[1])))}}function xi(e,t,n){return Math.max(Math.min(e,n),t)}function Si(e,t){return!(e.i===t.i||e.x+e.w<=t.x||e.x>=t.x+t.w||e.y+e.h<=t.y||e.y>=t.y+t.h)}function Ci(e,t){for(let n=0;nSi(e,t))}function Ti(e,t){return t===`horizontal`?Di(e):t===`vertical`||t===`wrap`?Ei(e):[...e]}function Ei(e){return[...e].sort((e,t)=>e.y===t.y?e.x-t.x:e.y-t.y)}function Di(e){return[...e].sort((e,t)=>e.x===t.x?e.y-t.y:e.x-t.x)}function Oi(e){let t=0;for(let n=0;nt&&(t=e)}}return t}function ki(e,t){for(let n=0;ne.static===!0)}function ji(e){return{i:e.i,x:e.x,y:e.y,w:e.w,h:e.h,minW:e.minW,maxW:e.maxW,minH:e.minH,maxH:e.maxH,moved:!!e.moved,static:!!e.static,isDraggable:e.isDraggable,isResizable:e.isResizable,resizeHandles:e.resizeHandles,constraints:e.constraints,isBounded:e.isBounded}}function Mi(e){let t=Array(e.length);for(let n=0;nt.cols&&(i.x=t.cols-i.w),i.x<0&&(i.x=0,i.w=t.cols),!i.static)n.push(i);else for(;Ci(n,i);)i.y++}}return e}function Ii(e,t,n,r,i,a,o,s,c){if(t.static&&t.isDraggable!==!0||t.y===r&&t.x===n)return[...e];let l=t.x,u=t.y;typeof n==`number`&&(t.x=n),typeof r==`number`&&(t.y=r),t.moved=!0;let d=Ti(e,o);(o===`vertical`&&typeof r==`number`?u>=r:o===`horizontal`&&typeof n==`number`&&l>=n)&&(d=d.reverse());let f=wi(d,t),p=f.length>0;if(p&&c)return Mi(e);if(p&&a)return t.x=l,t.y=u,t.moved=!1,e;let m=[...e];for(let e=0;et.y,d=l!==void 0&&t.x+t.w>l.x;if(!l)return Ii(e,n,o?a.x:void 0,s?a.y:void 0,r,c,i);if(u&&s)return Ii(e,n,void 0,n.y+1,r,c,i);if(u&&i===null)return t.y=n.y,n.y+=n.h,[...e];if(d&&o)return Ii(e,t,n.x,void 0,r,c,i)}let l=o?n.x+1:void 0,u=s?n.y+1:void 0;return l===void 0&&u===void 0?[...e]:Ii(e,n,l,u,r,c,i)}function Ri(e,t,n){return Math.max(t,Math.min(n,e))}var zi=[{name:`gridBounds`,constrainPosition(e,t,n,{cols:r,maxRows:i}){return{x:Ri(t,0,Math.max(0,r-e.w)),y:Ri(n,0,Math.max(0,i-e.h))}},constrainSize(e,t,n,r,{cols:i,maxRows:a}){let o=r===`w`||r===`nw`||r===`sw`?e.x+e.w:i-e.x,s=r===`n`||r===`nw`||r===`ne`?e.y+e.h:a-e.y;return{w:Ri(t,1,Math.max(1,o)),h:Ri(n,1,Math.max(1,s))}}},{name:`minMaxSize`,constrainSize(e,t,n){return{w:Ri(t,e.minW??1,e.maxW??1/0),h:Ri(n,e.minH??1,e.maxH??1/0)}}}];function Bi(e,t,n,r,i){let a={x:n,y:r};for(let n of e)n.constrainPosition&&(a=n.constrainPosition(t,a.x,a.y,i));if(t.constraints)for(let e of t.constraints)e.constrainPosition&&(a=e.constrainPosition(t,a.x,a.y,i));return a}function Vi(e,t,n,r,i,a){let o={w:n,h:r};for(let n of e)n.constrainSize&&(o=n.constrainSize(t,o.w,o.h,i,a));if(t.constraints)for(let e of t.constraints)e.constrainSize&&(o=e.constrainSize(t,o.w,o.h,i,a));return o}function Hi({top:e,left:t,width:n,height:r}){let i=`translate(${t}px,${e}px)`;return{transform:i,WebkitTransform:i,MozTransform:i,msTransform:i,OTransform:i,width:`${n}px`,height:`${r}px`,position:`absolute`}}function Ui({top:e,left:t,width:n,height:r}){return{top:`${e}px`,left:`${t}px`,width:`${n}px`,height:`${r}px`,position:`absolute`}}function Wi(e){return e*100+`%`}function Gi(e,t,n,r){return e+n>r?t:n}function Ki(e,t,n){return e<0?t:n}function qi(e){return Math.max(0,e)}function Ji(e){return Math.max(0,e)}var Yi=(e,t,n)=>{let{left:r,height:i,width:a}=t,o=e.top-(i-e.height);return{left:r,width:a,height:Ki(o,e.height,i),top:Ji(o)}},Xi=(e,t,n)=>{let{top:r,left:i,height:a,width:o}=t;return{top:r,height:a,width:Gi(e.left,e.width,o,n),left:qi(i)}},Zi=(e,t,n)=>{let{top:r,height:i,width:a}=t,o=e.left+e.width-a;return o<0?{height:i,width:e.left+e.width,top:Ji(r),left:0}:{height:i,width:a,top:Ji(r),left:o}},Qi=(e,t,n)=>{let{top:r,left:i,height:a,width:o}=t;return{width:o,left:i,height:Ki(r,e.height,a),top:Ji(r)}},$i={n:Yi,ne:(e,t,n)=>Yi(e,Xi(e,t,n)),e:Xi,se:(e,t,n)=>Qi(e,Xi(e,t,n)),s:Qi,sw:(e,t,n)=>Qi(e,Zi(e,t)),w:Zi,nw:(e,t,n)=>Yi(e,Zi(e,t))};function ea(e,t,n,r){let i=$i[e];return i?i(t,{...t,...n},r):n}var ta={type:`transform`,scale:1,calcStyle(e){return Hi(e)}},na={type:`absolute`,scale:1,calcStyle(e){return Ui(e)}};function ra(e){return{type:`transform`,scale:e,calcStyle(e){return Hi(e)},calcDragPosition(t,n,r,i){return{left:(t-r)/e,top:(n-i)/e}}}}var ia=ta,aa={cols:12,rowHeight:150,margin:[10,10],containerPadding:null,maxRows:1/0},oa={enabled:!0,bounded:!1,threshold:3},sa={enabled:!0,handles:[`se`]},ca={enabled:!1,defaultItem:{w:1,h:1}};function la(e,t,n,r,i){let a=r===`x`?`w`:`h`;t[r]+=1;let o=e.findIndex(e=>e.i===t.i),s=i??Ai(e).length>0;for(let i=o+1;it.y+t.h)break;Si(t,o)&&la(e,o,n+t[a],r,s)}}t[r]=n}function ua(e,t,n,r){for(t.x=Math.max(t.x,0),t.y=Math.max(t.y,0),t.y=Math.min(r,t.y);t.y>0&&!Ci(e,t);)t.y--;let i;for(;(i=Ci(e,t))!==void 0;)la(n,t,i.y+i.h,`y`);return t.y=Math.max(t.y,0),t}function da(e,t,n,r){for(t.x=Math.max(t.x,0),t.y=Math.max(t.y,0);t.x>0&&!Ci(e,t);)t.x--;let i;for(;(i=Ci(e,t))!==void 0;)if(la(r,t,i.x+i.w,`x`),t.x+t.w>n)for(t.x=n-t.w,t.y++;t.x>0&&!Ci(e,t);)t.x--;return t.x=Math.max(t.x,0),t}var fa={type:`vertical`,allowOverlap:!1,compact(e,t){let n=Ai(e),r=Oi(n),i=Ei(e),a=Array(e.length);for(let t=0;te[t]-e[n])}function ba(e,t){let n=ya(e),r=n[0];if(r===void 0)throw Error(`No breakpoints defined`);for(let i=1;ie[a]&&(r=a)}return r}function xa(e,t){let n=t[e];if(n===void 0)throw Error(`ResponsiveReactGridLayout: \`cols\` entry for breakpoint ${String(e)} is missing!`);return n}function Sa(e,t,n,r,i,a){let o=e[n];if(o)return Mi(o);let s=e[r],c=ya(t),l=c.slice(c.indexOf(n));for(let t=0;t{t.exports=`SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED`})),Ta=y(((e,t)=>{var n=wa();function r(){}function i(){}i.resetWarningCache=r,t.exports=function(){function e(e,t,r,i,a,o){if(o!==n){var s=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name=`Invariant Violation`,s}}e.isRequired=e;function t(){return e}var a={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return a.PropTypes=a,a}})),Ea=y(((e,t)=>{t.exports=Ta()()})),Da=u(Ea(),1),Oa=u(re(),1);function ka(e,t){for(let n=0,r=e.length;n`u`)return``;let t=window.document?.documentElement?.style;if(!t||e in t)return``;for(let n=0;nt===e.identifier)||e.changedTouches&&ka(e.changedTouches,e=>t===e.identifier)}function $a(e){if(e.targetTouches&&e.targetTouches[0])return e.targetTouches[0].identifier;if(e.changedTouches&&e.changedTouches[0])return e.changedTouches[0].identifier}function eo(){return typeof __webpack_nonce__<`u`?__webpack_nonce__:void 0}function to(e,t){if(!e)return;let n=e.getElementById(`react-draggable-style-el`);if(!n){n=e.createElement(`style`),n.type=`text/css`,n.id=`react-draggable-style-el`;let r=t??eo();r&&n.setAttribute(`nonce`,r),n.innerHTML=`.react-draggable-transparent-selection *::-moz-selection {all: inherit;} +`,n.innerHTML+=`.react-draggable-transparent-selection *::selection {all: inherit;} +`,e.getElementsByTagName(`head`)[0].appendChild(n)}e.body&&io(e.body,`react-draggable-transparent-selection`)}function no(e){window.requestAnimationFrame?window.requestAnimationFrame(()=>{ro(e)}):ro(e)}function ro(e){if(e)try{e.body&&ao(e.body,`react-draggable-transparent-selection`);let t=e.selection;if(t)t.empty();else{let t=(e.defaultView||window).getSelection();t&&t.type!==`Caret`&&t.removeAllRanges()}}catch{}}function io(e,t){e.classList?e.classList.add(t):e.className.match(RegExp(`(?:^|\\s)${t}(?!\\S)`))||(e.className+=` ${t}`)}function ao(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(RegExp(`(?:^|\\s)${t}(?!\\S)`,`g`),``)}function oo(e,t,n){if(!e.props.bounds)return[t,n];let{bounds:r}=e.props;r=typeof r==`string`?r:mo(r);let i=ho(e);if(typeof r==`string`){let{ownerDocument:e}=i,t=e.defaultView;if(!t)throw Error(`Cannot resolve the owner window of the draggable node.`);let n;if(n=r===`parent`?i.parentNode:i.getRootNode().querySelector(r),!(n instanceof t.HTMLElement))throw Error(`Bounds selector "`+r+`" could not find an element.`);let a=n,o=t.getComputedStyle(i),s=t.getComputedStyle(a);r={left:-i.offsetLeft+Ma(s.paddingLeft)+Ma(o.marginLeft),top:-i.offsetTop+Ma(s.paddingTop)+Ma(o.marginTop),right:qa(a)-Ga(i)-i.offsetLeft+Ma(s.paddingRight)-Ma(o.marginRight),bottom:Ka(a)-Wa(i)-i.offsetTop+Ma(s.paddingBottom)-Ma(o.marginBottom)}}return ja(r.right)&&(t=Math.min(t,r.right)),ja(r.bottom)&&(n=Math.min(n,r.bottom)),ja(r.left)&&(t=Math.max(t,r.left)),ja(r.top)&&(n=Math.max(n,r.top)),[t,n]}function so(e,t,n){return[Math.round(t/e[0])*e[0],Math.round(n/e[1])*e[1]]}function co(e){return e.props.axis===`both`||e.props.axis===`x`}function lo(e){return e.props.axis===`both`||e.props.axis===`y`}function uo(e,t,n){let r=typeof t==`number`?Qa(e,t):null;if(typeof t==`number`&&!r)return null;let i=ho(n),a=n.props.offsetParent||i.offsetParent||i.ownerDocument.body;return Ja(r||e,a,n.props.scale)}function fo(e,t,n){let r=!ja(e.lastX),i=ho(e);return r?{node:i,deltaX:0,deltaY:0,lastX:t,lastY:n,x:t,y:n}:{node:i,deltaX:t-e.lastX,deltaY:n-e.lastY,lastX:e.lastX,lastY:e.lastY,x:t,y:n}}function po(e,t){let n=e.props.scale;return{node:t.node,x:e.state.x+t.deltaX/n,y:e.state.y+t.deltaY/n,deltaX:t.deltaX/n,deltaY:t.deltaY/n,lastX:e.state.x,lastY:e.state.y}}function mo(e){return{left:e.left,top:e.top,right:e.right,bottom:e.bottom}}function ho(e){let t=e.findDOMNode();if(!t)throw Error(`: Unmounted during event!`);return t}var go=typeof process<`u`&&{}.DRAGGABLE_DEBUG?console.log.bind(console):function(){},_o={touch:{start:`touchstart`,move:`touchmove`,stop:`touchend`},mouse:{start:`mousedown`,move:`mousemove`,stop:`mouseup`}},vo=_o.mouse,yo=class extends B.Component{constructor(){super(...arguments),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,this.touchIdentifier=null,this.mounted=!1,this.handleDragStart=e=>{if(this.props.onMouseDown(e),!this.props.allowAnyClick&&(typeof e.button==`number`&&e.button!==0||e.ctrlKey))return!1;let t=this.findDOMNode();if(!t||!t.ownerDocument||!t.ownerDocument.body)throw Error(` not mounted on DragStart!`);let{ownerDocument:n}=t;if(this.props.disabled||!(e.target instanceof n.defaultView.Node)||this.props.handle&&!Va(e.target,this.props.handle,t)||this.props.cancel&&Va(e.target,this.props.cancel,t))return;e.type===`touchstart`&&!this.props.allowMobileScroll&&e.preventDefault();let r=$a(e);this.touchIdentifier=r;let i=uo(e,r,this);if(i==null)return;let{x:a,y:o}=i,s=fo(this,a,o);go(`DraggableCore: handleDragStart: %j`,s),go(`calling`,this.props.onStart),this.props.onStart(e,s)!==!1&&this.mounted!==!1&&(this.props.enableUserSelectHack&&to(n,this.props.nonce),this.dragging=!0,this.lastX=a,this.lastY=o,Ha(n,vo.move,this.handleDrag),Ha(n,vo.stop,this.handleDragStop))},this.handleDrag=e=>{let t=uo(e,this.touchIdentifier,this);if(t==null)return;let{x:n,y:r}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX,t=r-this.lastY;if([e,t]=so(this.props.grid,e,t),!e&&!t)return;n=this.lastX+e,r=this.lastY+t}let i=fo(this,n,r);if(go(`DraggableCore: handleDrag: %j`,i),this.props.onDrag(e,i)===!1||this.mounted===!1){try{this.handleDragStop(new MouseEvent(`mouseup`))}catch{let e=document.createEvent(`MouseEvents`);e.initMouseEvent(`mouseup`,!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(e)}return}this.lastX=n,this.lastY=r},this.handleDragStop=e=>{if(!this.dragging)return;let t=uo(e,this.touchIdentifier,this);if(t==null)return;let{x:n,y:r}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX||0,t=r-this.lastY||0;[e,t]=so(this.props.grid,e,t),n=this.lastX+e,r=this.lastY+t}let i=fo(this,n,r);if(this.props.onStop(e,i)===!1||this.mounted===!1)return!1;let a=this.findDOMNode();a&&this.props.enableUserSelectHack&&no(a.ownerDocument),go(`DraggableCore: handleDragStop: %j`,i),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,a&&(go(`DraggableCore: Removing handlers`),Ua(a.ownerDocument,vo.move,this.handleDrag),Ua(a.ownerDocument,vo.stop,this.handleDragStop))},this.onMouseDown=e=>(vo=_o.mouse,this.handleDragStart(e)),this.onMouseUp=e=>(vo=_o.mouse,this.handleDragStop(e)),this.onTouchStart=e=>(vo=_o.touch,this.handleDragStart(e)),this.onTouchEnd=e=>(vo=_o.touch,this.handleDragStop(e))}componentDidMount(){this.mounted=!0;let e=this.findDOMNode();e&&Ha(e,_o.touch.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;let e=this.findDOMNode();if(e){let{ownerDocument:t}=e;Ua(t,_o.mouse.move,this.handleDrag),Ua(t,_o.touch.move,this.handleDrag),Ua(t,_o.mouse.stop,this.handleDragStop),Ua(t,_o.touch.stop,this.handleDragStop),Ua(e,_o.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&no(t)}}findDOMNode(){if(this.props?.nodeRef)return this.props.nodeRef.current;let e=Oa.default;return typeof e.findDOMNode==`function`?e.findDOMNode(this):(go(`react-draggable: ReactDOM.findDOMNode is not available in React 19+. You must provide a nodeRef prop. See: https://github.com/react-grid-layout/react-draggable#noderef`),null)}render(){return B.cloneElement(B.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};yo.displayName=`DraggableCore`,yo.propTypes={allowAnyClick:Da.default.bool,allowMobileScroll:Da.default.bool,children:Da.default.node.isRequired,disabled:Da.default.bool,enableUserSelectHack:Da.default.bool,offsetParent:function(e,t){if(e[t]&&e[t].nodeType!==1)throw Error(`Draggable's offsetParent must be a DOM Node.`)},grid:Da.default.arrayOf(Da.default.number),handle:Da.default.string,cancel:Da.default.string,nodeRef:Da.default.object,nonce:Da.default.string,onStart:Da.default.func,onDrag:Da.default.func,onStop:Da.default.func,onMouseDown:Da.default.func,scale:Da.default.number,className:Na,style:Na,transform:Na},yo.defaultProps={allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1};var bo=class extends B.Component{constructor(e){super(e),this.onDragStart=(e,t)=>{if(go(`Draggable: onDragStart: %j`,t),this.props.onStart(e,po(this,t))===!1)return!1;this.setState({dragging:!0,dragged:!0})},this.onDrag=(e,t)=>{if(!this.state.dragging)return!1;go(`Draggable: onDrag: %j`,t);let n=po(this,t),r={x:n.x,y:n.y,slackX:0,slackY:0};if(this.props.bounds){let{x:e,y:t}=r;r.x+=this.state.slackX,r.y+=this.state.slackY;let[i,a]=oo(this,r.x,r.y);r.x=i,r.y=a,r.slackX=this.state.slackX+(e-r.x),r.slackY=this.state.slackY+(t-r.y),n.x=r.x,n.y=r.y,n.deltaX=r.x-this.state.x,n.deltaY=r.y-this.state.y}if(this.props.onDrag(e,n)===!1)return!1;this.setState(r)},this.onDragStop=(e,t)=>{if(!this.state.dragging||this.props.onStop(e,po(this,t))===!1)return!1;go(`Draggable: onDragStop: %j`,t);let n={dragging:!1,slackX:0,slackY:0};if(this.props.position){let{x:e,y:t}=this.props.position;n.x=e,n.y=t}this.setState(n)},this.state={dragging:!1,dragged:!1,x:e.position?e.position.x:e.defaultPosition.x,y:e.position?e.position.y:e.defaultPosition.y,prevPropsPosition:{...e.position},slackX:0,slackY:0,isElementSVG:!1},e.position&&!(e.onDrag||e.onStop)&&console.warn("A `position` was applied to this , without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}static getDerivedStateFromProps({position:e},{prevPropsPosition:t}){return e&&(!t||e.x!==t.x||e.y!==t.y)?(go(`Draggable: getDerivedStateFromProps %j`,{position:e,prevPropsPosition:t}),{x:e.x,y:e.y,prevPropsPosition:{...e}}):null}componentDidMount(){window.SVGElement!==void 0&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.state.dragging&&this.setState({dragging:!1})}findDOMNode(){if(this.props?.nodeRef)return this.props.nodeRef.current;let e=Oa.default;return typeof e.findDOMNode==`function`?e.findDOMNode(this):null}render(){let{axis:e,bounds:t,children:n,defaultPosition:r,defaultClassName:i,defaultClassNameDragging:a,defaultClassNameDragged:o,position:s,positionOffset:c,scale:l,...u}=this.props,d={},f=null,m=!s||this.state.dragging,h=s||r,g={x:co(this)&&m?this.state.x:h.x,y:lo(this)&&m?this.state.y:h.y};this.state.isElementSVG?f=Xa(g,c):d=Ya(g,c);let _=B.Children.only(n),v=p(_.props.className||``,i,{[a]:this.state.dragging,[o]:this.state.dragged});return B.createElement(yo,{...u,onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop},B.cloneElement(_,{className:v,style:{..._.props.style,...d},transform:f}))}};bo.displayName=`Draggable`,bo.propTypes={...yo.propTypes,axis:Da.default.oneOf([`both`,`x`,`y`,`none`]),bounds:Da.default.oneOfType([Da.default.shape({left:Da.default.number,right:Da.default.number,top:Da.default.number,bottom:Da.default.number}),Da.default.string,Da.default.oneOf([!1])]),defaultClassName:Da.default.string,defaultClassNameDragging:Da.default.string,defaultClassNameDragged:Da.default.string,defaultPosition:Da.default.shape({x:Da.default.number,y:Da.default.number}),positionOffset:Da.default.shape({x:Da.default.oneOfType([Da.default.number,Da.default.string]),y:Da.default.oneOfType([Da.default.number,Da.default.string])}),position:Da.default.shape({x:Da.default.number,y:Da.default.number}),className:Na,style:Na,transform:Na},bo.defaultProps={...yo.defaultProps,axis:`both`,bounds:!1,defaultClassName:`react-draggable`,defaultClassNameDragging:`react-draggable-dragging`,defaultClassNameDragged:`react-draggable-dragged`,defaultPosition:{x:0,y:0},scale:1};var xo=y(((e,t)=>{function n(e){var t,r,i=``;if(typeof e==`string`||typeof e==`number`)i+=e;else if(typeof e==`object`){if(Array.isArray(e)){var a=e.length;for(t=0;t{var n=Object.create,r=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,c=(e,t)=>{for(var n in t)r(e,n,{get:t[n],enumerable:!0})},l=(e,t,n,o)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let c of a(t))!s.call(e,c)&&c!==n&&r(e,c,{get:()=>t[c],enumerable:!(o=i(t,c))||o.enumerable});return e},u=(e,t,i)=>(i=e==null?{}:n(o(e)),l(t||!e||!e.__esModule?r(i,`default`,{value:e,enumerable:!0}):i,e)),d=e=>l(r({},`__esModule`,{value:!0}),e),f={};c(f,{DraggableCore:()=>Te,default:()=>Ee}),t.exports=d(f);var p=u(z()),m=u(Ea()),h=u(re()),g=xo();function _(e,t){for(let n=0,r=e.length;n`u`)return``;let t=window.document?.documentElement?.style;if(!t||e in t)return``;for(let n=0;nt===e.identifier)||e.changedTouches&&_(e.changedTouches,e=>t===e.identifier)}function ne(e){if(e.targetTouches&&e.targetTouches[0])return e.targetTouches[0].identifier;if(e.changedTouches&&e.changedTouches[0])return e.changedTouches[0].identifier}function ie(){return typeof __webpack_nonce__<`u`?__webpack_nonce__:void 0}function ae(e,t){if(!e)return;let n=e.getElementById(`react-draggable-style-el`);if(!n){n=e.createElement(`style`),n.type=`text/css`,n.id=`react-draggable-style-el`;let r=t??ie();r&&n.setAttribute(`nonce`,r),n.innerHTML=`.react-draggable-transparent-selection *::-moz-selection {all: inherit;} +`,n.innerHTML+=`.react-draggable-transparent-selection *::selection {all: inherit;} +`,e.getElementsByTagName(`head`)[0].appendChild(n)}e.body&&ce(e.body,`react-draggable-transparent-selection`)}function oe(e){window.requestAnimationFrame?window.requestAnimationFrame(()=>{se(e)}):se(e)}function se(e){if(e)try{e.body&&le(e.body,`react-draggable-transparent-selection`);let t=e.selection;if(t)t.empty();else{let t=(e.defaultView||window).getSelection();t&&t.type!==`Caret`&&t.removeAllRanges()}}catch{}}function ce(e,t){e.classList?e.classList.add(t):e.className.match(RegExp(`(?:^|\\s)${t}(?!\\S)`))||(e.className+=` ${t}`)}function le(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(RegExp(`(?:^|\\s)${t}(?!\\S)`,`g`),``)}function ue(e,t,n){if(!e.props.bounds)return[t,n];let{bounds:r}=e.props;r=typeof r==`string`?r:_e(r);let i=ve(e);if(typeof r==`string`){let{ownerDocument:e}=i,t=e.defaultView;if(!t)throw Error(`Cannot resolve the owner window of the draggable node.`);let n;if(n=r===`parent`?i.parentNode:i.getRootNode().querySelector(r),!(n instanceof t.HTMLElement))throw Error(`Bounds selector "`+r+`" could not find an element.`);let a=n,o=t.getComputedStyle(i),s=t.getComputedStyle(a);r={left:-i.offsetLeft+b(s.paddingLeft)+b(o.marginLeft),top:-i.offsetTop+b(s.paddingTop)+b(o.marginTop),right:F(a)-N(i)-i.offsetLeft+b(s.paddingRight)-b(o.marginRight),bottom:P(a)-M(i)-i.offsetTop+b(s.paddingBottom)-b(o.marginBottom)}}return y(r.right)&&(t=Math.min(t,r.right)),y(r.bottom)&&(n=Math.min(n,r.bottom)),y(r.left)&&(t=Math.max(t,r.left)),y(r.top)&&(n=Math.max(n,r.top)),[t,n]}function de(e,t,n){return[Math.round(t/e[0])*e[0],Math.round(n/e[1])*e[1]]}function fe(e){return e.props.axis===`both`||e.props.axis===`x`}function pe(e){return e.props.axis===`both`||e.props.axis===`y`}function me(e,t,n){let r=typeof t==`number`?te(e,t):null;if(typeof t==`number`&&!r)return null;let i=ve(n),a=n.props.offsetParent||i.offsetParent||i.ownerDocument.body;return I(r||e,a,n.props.scale)}function he(e,t,n){let r=!y(e.lastX),i=ve(e);return r?{node:i,deltaX:0,deltaY:0,lastX:t,lastY:n,x:t,y:n}:{node:i,deltaX:t-e.lastX,deltaY:n-e.lastY,lastX:e.lastX,lastY:e.lastY,x:t,y:n}}function ge(e,t){let n=e.props.scale;return{node:t.node,x:e.state.x+t.deltaX/n,y:e.state.y+t.deltaY/n,deltaX:t.deltaX/n,deltaY:t.deltaY/n,lastX:e.state.x,lastY:e.state.y}}function _e(e){return{left:e.left,top:e.top,right:e.right,bottom:e.bottom}}function ve(e){let t=e.findDOMNode();if(!t)throw Error(`: Unmounted during event!`);return t}var ye=u(z()),be=u(Ea()),xe=u(re()),Se=typeof process<`u`&&{}.DRAGGABLE_DEBUG?console.log.bind(console):function(){},Ce={touch:{start:`touchstart`,move:`touchmove`,stop:`touchend`},mouse:{start:`mousedown`,move:`mousemove`,stop:`mouseup`}},we=Ce.mouse,Te=class extends ye.Component{constructor(){super(...arguments),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,this.touchIdentifier=null,this.mounted=!1,this.handleDragStart=e=>{if(this.props.onMouseDown(e),!this.props.allowAnyClick&&(typeof e.button==`number`&&e.button!==0||e.ctrlKey))return!1;let t=this.findDOMNode();if(!t||!t.ownerDocument||!t.ownerDocument.body)throw Error(` not mounted on DragStart!`);let{ownerDocument:n}=t;if(this.props.disabled||!(e.target instanceof n.defaultView.Node)||this.props.handle&&!k(e.target,this.props.handle,t)||this.props.cancel&&k(e.target,this.props.cancel,t))return;e.type===`touchstart`&&!this.props.allowMobileScroll&&e.preventDefault();let r=ne(e);this.touchIdentifier=r;let i=me(e,r,this);if(i==null)return;let{x:a,y:o}=i,s=he(this,a,o);Se(`DraggableCore: handleDragStart: %j`,s),Se(`calling`,this.props.onStart),this.props.onStart(e,s)!==!1&&this.mounted!==!1&&(this.props.enableUserSelectHack&&ae(n,this.props.nonce),this.dragging=!0,this.lastX=a,this.lastY=o,A(n,we.move,this.handleDrag),A(n,we.stop,this.handleDragStop))},this.handleDrag=e=>{let t=me(e,this.touchIdentifier,this);if(t==null)return;let{x:n,y:r}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX,t=r-this.lastY;if([e,t]=de(this.props.grid,e,t),!e&&!t)return;n=this.lastX+e,r=this.lastY+t}let i=he(this,n,r);if(Se(`DraggableCore: handleDrag: %j`,i),this.props.onDrag(e,i)===!1||this.mounted===!1){try{this.handleDragStop(new MouseEvent(`mouseup`))}catch{let e=document.createEvent(`MouseEvents`);e.initMouseEvent(`mouseup`,!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(e)}return}this.lastX=n,this.lastY=r},this.handleDragStop=e=>{if(!this.dragging)return;let t=me(e,this.touchIdentifier,this);if(t==null)return;let{x:n,y:r}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX||0,t=r-this.lastY||0;[e,t]=de(this.props.grid,e,t),n=this.lastX+e,r=this.lastY+t}let i=he(this,n,r);if(this.props.onStop(e,i)===!1||this.mounted===!1)return!1;let a=this.findDOMNode();a&&this.props.enableUserSelectHack&&oe(a.ownerDocument),Se(`DraggableCore: handleDragStop: %j`,i),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,a&&(Se(`DraggableCore: Removing handlers`),j(a.ownerDocument,we.move,this.handleDrag),j(a.ownerDocument,we.stop,this.handleDragStop))},this.onMouseDown=e=>(we=Ce.mouse,this.handleDragStart(e)),this.onMouseUp=e=>(we=Ce.mouse,this.handleDragStop(e)),this.onTouchStart=e=>(we=Ce.touch,this.handleDragStart(e)),this.onTouchEnd=e=>(we=Ce.touch,this.handleDragStop(e))}componentDidMount(){this.mounted=!0;let e=this.findDOMNode();e&&A(e,Ce.touch.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;let e=this.findDOMNode();if(e){let{ownerDocument:t}=e;j(t,Ce.mouse.move,this.handleDrag),j(t,Ce.touch.move,this.handleDrag),j(t,Ce.mouse.stop,this.handleDragStop),j(t,Ce.touch.stop,this.handleDragStop),j(e,Ce.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&oe(t)}}findDOMNode(){if(this.props?.nodeRef)return this.props.nodeRef.current;let e=xe.default;return typeof e.findDOMNode==`function`?e.findDOMNode(this):(Se(`react-draggable: ReactDOM.findDOMNode is not available in React 19+. You must provide a nodeRef prop. See: https://github.com/react-grid-layout/react-draggable#noderef`),null)}render(){return ye.cloneElement(ye.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};Te.displayName=`DraggableCore`,Te.propTypes={allowAnyClick:be.default.bool,allowMobileScroll:be.default.bool,children:be.default.node.isRequired,disabled:be.default.bool,enableUserSelectHack:be.default.bool,offsetParent:function(e,t){if(e[t]&&e[t].nodeType!==1)throw Error(`Draggable's offsetParent must be a DOM Node.`)},grid:be.default.arrayOf(be.default.number),handle:be.default.string,cancel:be.default.string,nodeRef:be.default.object,nonce:be.default.string,onStart:be.default.func,onDrag:be.default.func,onStop:be.default.func,onMouseDown:be.default.func,scale:be.default.number,className:x,style:x,transform:x},Te.defaultProps={allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1};var Ee=class extends p.Component{constructor(e){super(e),this.onDragStart=(e,t)=>{if(Se(`Draggable: onDragStart: %j`,t),this.props.onStart(e,ge(this,t))===!1)return!1;this.setState({dragging:!0,dragged:!0})},this.onDrag=(e,t)=>{if(!this.state.dragging)return!1;Se(`Draggable: onDrag: %j`,t);let n=ge(this,t),r={x:n.x,y:n.y,slackX:0,slackY:0};if(this.props.bounds){let{x:e,y:t}=r;r.x+=this.state.slackX,r.y+=this.state.slackY;let[i,a]=ue(this,r.x,r.y);r.x=i,r.y=a,r.slackX=this.state.slackX+(e-r.x),r.slackY=this.state.slackY+(t-r.y),n.x=r.x,n.y=r.y,n.deltaX=r.x-this.state.x,n.deltaY=r.y-this.state.y}if(this.props.onDrag(e,n)===!1)return!1;this.setState(r)},this.onDragStop=(e,t)=>{if(!this.state.dragging||this.props.onStop(e,ge(this,t))===!1)return!1;Se(`Draggable: onDragStop: %j`,t);let n={dragging:!1,slackX:0,slackY:0};if(this.props.position){let{x:e,y:t}=this.props.position;n.x=e,n.y=t}this.setState(n)},this.state={dragging:!1,dragged:!1,x:e.position?e.position.x:e.defaultPosition.x,y:e.position?e.position.y:e.defaultPosition.y,prevPropsPosition:{...e.position},slackX:0,slackY:0,isElementSVG:!1},e.position&&!(e.onDrag||e.onStop)&&console.warn("A `position` was applied to this , without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}static getDerivedStateFromProps({position:e},{prevPropsPosition:t}){return e&&(!t||e.x!==t.x||e.y!==t.y)?(Se(`Draggable: getDerivedStateFromProps %j`,{position:e,prevPropsPosition:t}),{x:e.x,y:e.y,prevPropsPosition:{...e}}):null}componentDidMount(){window.SVGElement!==void 0&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.state.dragging&&this.setState({dragging:!1})}findDOMNode(){if(this.props?.nodeRef)return this.props.nodeRef.current;let e=h.default;return typeof e.findDOMNode==`function`?e.findDOMNode(this):null}render(){let{axis:e,bounds:t,children:n,defaultPosition:r,defaultClassName:i,defaultClassNameDragging:a,defaultClassNameDragged:o,position:s,positionOffset:c,scale:l,...u}=this.props,d={},f=null,m=!s||this.state.dragging,h=s||r,_={x:fe(this)&&m?this.state.x:h.x,y:pe(this)&&m?this.state.y:h.y};this.state.isElementSVG?f=ee(_,c):d=L(_,c);let v=p.Children.only(n),y=(0,g.clsx)(v.props.className||``,i,{[a]:this.state.dragging,[o]:this.state.dragged});return p.createElement(Te,{...u,onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop},p.cloneElement(v,{className:y,style:{...v.props.style,...d},transform:f}))}};Ee.displayName=`Draggable`,Ee.propTypes={...Te.propTypes,axis:m.default.oneOf([`both`,`x`,`y`,`none`]),bounds:m.default.oneOfType([m.default.shape({left:m.default.number,right:m.default.number,top:m.default.number,bottom:m.default.number}),m.default.string,m.default.oneOf([!1])]),defaultClassName:m.default.string,defaultClassNameDragging:m.default.string,defaultClassNameDragged:m.default.string,defaultPosition:m.default.shape({x:m.default.number,y:m.default.number}),positionOffset:m.default.shape({x:m.default.oneOfType([m.default.number,m.default.string]),y:m.default.oneOfType([m.default.number,m.default.string])}),position:m.default.shape({x:m.default.number,y:m.default.number}),className:x,style:x,transform:x},Ee.defaultProps={...Te.defaultProps,axis:`both`,bounds:!1,defaultClassName:`react-draggable`,defaultClassNameDragging:`react-draggable-dragging`,defaultClassNameDragged:`react-draggable-dragged`,defaultPosition:{x:0,y:0},scale:1},0&&(t.exports={DraggableCore:Te})})),Co=y(((e,t)=>{var n=So(),r=n.DraggableCore,i=n.default||n;t.exports=i,t.exports.default=i,t.exports.DraggableCore=r})),wo=y((e=>{e.__esModule=!0,e.cloneElement=c;var t=n(z());function n(e){return e&&e.__esModule?e:{default:e}}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function i(e){for(var t=1;t{e.__esModule=!0,e.resizableProps=void 0;var t=n(Ea());Co();function n(e){return e&&e.__esModule?e:{default:e}}e.resizableProps={axis:t.default.oneOf([`both`,`x`,`y`,`none`]),className:t.default.string,children:t.default.element.isRequired,draggableOpts:t.default.shape({allowAnyClick:t.default.bool,cancel:t.default.string,children:t.default.node,disabled:t.default.bool,enableUserSelectHack:t.default.bool,offsetParent:typeof Element<`u`?t.default.instanceOf(Element):t.default.any,grid:t.default.arrayOf(t.default.number),handle:t.default.string,nodeRef:t.default.object,onStart:t.default.func,onDrag:t.default.func,onStop:t.default.func,onMouseDown:t.default.func,scale:t.default.number}),height:function(){var e=[...arguments];let n=e[0];return n.axis===`both`||n.axis===`y`?t.default.number.isRequired(...e):t.default.number(...e)},handle:t.default.oneOfType([t.default.node,t.default.func]),handleSize:t.default.arrayOf(t.default.number),lockAspectRatio:t.default.bool,maxConstraints:t.default.arrayOf(t.default.number),minConstraints:t.default.arrayOf(t.default.number),onResizeStop:t.default.func,onResizeStart:t.default.func,onResize:t.default.func,resizeHandles:t.default.arrayOf(t.default.oneOf([`s`,`w`,`e`,`n`,`sw`,`nw`,`se`,`ne`])),transformScale:t.default.number,width:function(){var e=[...arguments];let n=e[0];return n.axis===`both`||n.axis===`x`?t.default.number.isRequired(...e):t.default.number(...e)}}})),Eo=y((e=>{e.__esModule=!0,e.default=void 0;var t=o(z()),n=Co(),r=wo(),i=To(),a=[`children`,`className`,`draggableOpts`,`width`,`height`,`handle`,`handleSize`,`lockAspectRatio`,`axis`,`minConstraints`,`maxConstraints`,`onResize`,`onResizeStop`,`onResizeStart`,`resizeHandles`,`transformScale`];function o(e,t){if(typeof WeakMap==`function`)var n=new WeakMap,r=new WeakMap;return(o=function(e,t){if(!t&&e&&e.__esModule)return e;var i,a,o={__proto__:null,default:e};if(e===null||typeof e!=`object`&&typeof e!=`function`)return o;if(i=t?r:n){if(i.has(e))return i.get(e);i.set(e,o)}for(let t in e)t!=="default"&&{}.hasOwnProperty.call(e,t)&&((a=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?i(o,t,a):o[t]=e[t]);return o})(e,t)}function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;tMath.abs(i*n)?t=e/n:e=t*n}let o=e,s=t,c=this.slack||[0,0],l=c[0],u=c[1];return e+=l,t+=u,r&&(e=Math.max(r[0],e),t=Math.max(r[1],t)),i&&(e=Math.min(i[0],e),t=Math.min(i[1],t)),this.slack=[l+(o-e),u+(s-t)],[e,t]}resizeHandler(e,t){return(n,r)=>{let i=r.node,a=r.deltaX,o=r.deltaY;e===`onResizeStart`&&this.resetData();let s=(this.props.axis===`both`||this.props.axis===`x`)&&t!==`n`&&t!==`s`,c=(this.props.axis===`both`||this.props.axis===`y`)&&t!==`e`&&t!==`w`;if(!s&&!c)return;let l=t[0],u=t[t.length-1],d=i.getBoundingClientRect();if(this.lastHandleRect!=null){if(u===`w`){let e=d.left-this.lastHandleRect.left;a+=e}if(l===`n`){let e=d.top-this.lastHandleRect.top;o+=e}}this.lastHandleRect=d,u===`w`&&(a=-a),l===`n`&&(o=-o);let f=this.lastSize?.width??this.props.width,p=this.lastSize?.height??this.props.height,m=f+(s?a/this.props.transformScale:0),h=p+(c?o/this.props.transformScale:0);var g=this.runConstraints(m,h);if(m=g[0],h=g[1],e===`onResizeStop`&&this.lastSize){var _=this.lastSize;m=_.width,h=_.height}let v=m!==f||h!==p;e!==`onResizeStop`&&(this.lastSize={width:m,height:h});let y=typeof this.props[e]==`function`?this.props[e]:null;y&&(e!==`onResize`||v)&&(n.persist==null||n.persist(),y(n,{node:i,size:{width:m,height:h},handle:t})),e===`onResizeStop`&&this.resetData()}}renderResizeHandle(e,n){let r=this.props.handle;if(!r)return t.createElement(`span`,{className:`react-resizable-handle react-resizable-handle-`+e,ref:n});if(typeof r==`function`)return r(e,n);let i=typeof r.type==`string`,a=u({ref:n},i?{}:{handleAxis:e});return t.cloneElement(r,a)}render(){let e=this.props,i=e.children,o=e.className,l=e.draggableOpts;e.width,e.height,e.handle,e.handleSize,e.lockAspectRatio,e.axis,e.minConstraints,e.maxConstraints,e.onResize,e.onResizeStop,e.onResizeStart;let d=e.resizeHandles;e.transformScale;let f=c(e,a);return(0,r.cloneElement)(i,u(u({},f),{},{className:(o?o+` `:``)+`react-resizable`,children:[...t.Children.toArray(i.props.children),...d.map(e=>{let r=this.handleRefs[e]??(this.handleRefs[e]=t.createRef());return t.createElement(n.DraggableCore,s({},l,{nodeRef:r,key:`resizableHandle-`+e,onStop:this.resizeHandler(`onResizeStop`,e),onStart:this.resizeHandler(`onResizeStart`,e),onDrag:this.resizeHandler(`onResize`,e)}),this.renderResizeHandle(e,r))})]}))}};e.default=m,m.propTypes=i.resizableProps,m.defaultProps={axis:`both`,handleSize:[20,20],lockAspectRatio:!1,minConstraints:[20,20],maxConstraints:[1/0,1/0],resizeHandles:[`se`],transformScale:1}})),Do=y((e=>{e.__esModule=!0,e.default=void 0;var t=s(z()),n=o(Ea()),r=o(Eo()),i=To(),a=[`handle`,`handleSize`,`onResize`,`onResizeStart`,`onResizeStop`,`draggableOpts`,`minConstraints`,`maxConstraints`,`lockAspectRatio`,`axis`,`width`,`height`,`resizeHandles`,`style`,`transformScale`];function o(e){return e&&e.__esModule?e:{default:e}}function s(e,t){if(typeof WeakMap==`function`)var n=new WeakMap,r=new WeakMap;return(s=function(e,t){if(!t&&e&&e.__esModule)return e;var i,a,o={__proto__:null,default:e};if(e===null||typeof e!=`object`&&typeof e!=`function`)return o;if(i=t?r:n){if(i.has(e))return i.get(e);i.set(e,o)}for(let t in e)t!=="default"&&{}.hasOwnProperty.call(e,t)&&((a=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?i(o,t,a):o[t]=e[t]);return o})(e,t)}function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let n=t.size;this.props.onResize?(e.persist==null||e.persist(),this.setState(n,()=>this.props.onResize&&this.props.onResize(e,t))):this.setState(n)}}static getDerivedStateFromProps(e,t){return t.propsWidth!==e.width||t.propsHeight!==e.height?{width:e.width,height:e.height,propsWidth:e.width,propsHeight:e.height}:null}render(){let e=this.props,n=e.handle,i=e.handleSize;e.onResize;let o=e.onResizeStart,s=e.onResizeStop,l=e.draggableOpts,d=e.minConstraints,f=e.maxConstraints,p=e.lockAspectRatio,h=e.axis;e.width,e.height;let g=e.resizeHandles,_=e.style,v=e.transformScale,y=m(e,a);return t.createElement(r.default,{axis:h,draggableOpts:l,handle:n,handleSize:i,height:this.state.height,lockAspectRatio:p,maxConstraints:f,minConstraints:d,onResizeStart:o,onResize:this.onResize,onResizeStop:s,resizeHandles:g,transformScale:v,width:this.state.width},t.createElement(`div`,c({},y,{style:u(u({},_),{},{width:this.state.width+`px`,height:this.state.height+`px`})})))}};e.default=h,h.propTypes=u(u({},i.resizableProps),{},{children:n.default.element})})),Oo=y(((e,t)=>{t.exports=function(){throw Error(`Don't instantiate Resizable directly! Use require('react-resizable').Resizable`)},t.exports.Resizable=Eo().default,t.exports.ResizableBox=Do().default})),ko=y(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?r(e):typeof define==`function`&&define.amd?define([`exports`],r):(n=typeof globalThis<`u`?globalThis:n||self,r(n[`fast-equals`]={}))})(e,(function(e){function t(e){return function(t,n,r,i,a,o,s){return e(t,n,s)}}function n(e){return function(t,n,r,i){if(!t||!n||typeof t!=`object`||typeof n!=`object`)return e(t,n,r,i);var a=i.get(t),o=i.get(n);if(a&&o)return a===n&&o===t;i.set(t,n),i.set(n,t);var s=e(t,n,r,i);return i.delete(t),i.delete(n),s}}function r(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n}function i(e){return e.constructor===Object||e.constructor==null}function a(e){return typeof e.then==`function`}function o(e,t){return e===t||e!==e&&t!==t}var s=Object.prototype.toString;function c(e){var t=e.areArraysEqual,n=e.areDatesEqual,r=e.areMapsEqual,c=e.areObjectsEqual,l=e.areRegExpsEqual,u=e.areSetsEqual,d=e.createIsNestedEqual,f=d(p);function p(e,d,p){if(e===d)return!0;if(!e||!d||typeof e!=`object`||typeof d!=`object`)return e!==e&&d!==d;if(i(e)&&i(d))return c(e,d,f,p);var m=Array.isArray(e),h=Array.isArray(d);if(m||h)return m===h&&t(e,d,f,p);var g=s.call(e);return g===s.call(d)?g===`[object Date]`?n(e,d,f,p):g===`[object RegExp]`?l(e,d,f,p):g===`[object Map]`?r(e,d,f,p):g===`[object Set]`?u(e,d,f,p):g===`[object Object]`||g===`[object Arguments]`?a(e)||a(d)?!1:c(e,d,f,p):g===`[object Boolean]`||g===`[object Number]`||g===`[object String]`?o(e.valueOf(),d.valueOf()):!1:!1}return p}function l(e,t,n,r){var i=e.length;if(t.length!==i)return!1;for(;i-->0;)if(!n(e[i],t[i],i,i,e,t,r))return!1;return!0}var u=n(l);function d(e,t){return o(e.valueOf(),t.valueOf())}function f(e,t,n,r){var i=e.size===t.size;if(!i)return!1;if(!e.size)return!0;var a={},o=0;return e.forEach(function(s,c){if(i){var l=!1,u=0;t.forEach(function(i,d){!l&&!a[u]&&(l=n(c,d,o,u,e,t,r)&&n(s,i,c,d,e,t,r))&&(a[u]=!0),u++}),o++,i=l}}),i}var p=n(f),m=`_owner`,h=Object.prototype.hasOwnProperty;function g(e,t,n,r){var i=Object.keys(e),a=i.length;if(Object.keys(t).length!==a)return!1;for(var o;a-->0;){if(o=i[a],o===m){var s=!!e.$$typeof,c=!!t.$$typeof;if((s||c)&&s!==c)return!1}if(!h.call(t,o)||!n(e[o],t[o],o,o,e,t,r))return!1}return!0}var _=n(g);function v(e,t){return e.source===t.source&&e.flags===t.flags}function y(e,t,n,r){var i=e.size===t.size;if(!i)return!1;if(!e.size)return!0;var a={};return e.forEach(function(o,s){if(i){var c=!1,l=0;t.forEach(function(i,u){!c&&!a[l]&&(c=n(o,i,s,u,e,t,r))&&(a[l]=!0),l++}),i=c}}),i}var b=n(y),x=Object.freeze({areArraysEqual:l,areDatesEqual:d,areMapsEqual:f,areObjectsEqual:g,areRegExpsEqual:v,areSetsEqual:y,createIsNestedEqual:t}),S=Object.freeze({areArraysEqual:u,areDatesEqual:d,areMapsEqual:p,areObjectsEqual:_,areRegExpsEqual:v,areSetsEqual:b,createIsNestedEqual:t}),C=c(x);function w(e,t){return C(e,t,void 0)}var T=c(r(x,{createIsNestedEqual:function(){return o}}));function E(e,t){return T(e,t,void 0)}var D=c(S);function O(e,t){return D(e,t,new WeakMap)}var k=c(r(S,{createIsNestedEqual:function(){return o}}));function A(e,t){return k(e,t,new WeakMap)}function j(e){return c(r(x,e(x)))}function M(e){var t=c(r(S,e(S)));return(function(e,n,r){return r===void 0&&(r=new WeakMap),t(e,n,r)})}e.circularDeepEqual=O,e.circularShallowEqual=A,e.createCustomCircularEqual=M,e.createCustomEqual=j,e.deepEqual=w,e.sameValueZeroEqual=o,e.shallowEqual=E,Object.defineProperty(e,"__esModule",{value:!0})}))})),Ao=Oo(),jo=ko();function Mo(e){let{children:t,cols:n,containerWidth:r,margin:i,containerPadding:a,rowHeight:o,maxRows:s,isDraggable:c,isResizable:l,isBounded:u,static:d,useCSSTransforms:f=!0,usePercentages:m=!1,transformScale:h=1,positionStrategy:g,dragThreshold:_=0,droppingPosition:v,className:y=``,style:b,handle:x=``,cancel:S=``,x:C,y:w,w:T,h:E,minW:D=1,maxW:O=1/0,minH:k=1,maxH:A=1/0,i:j,resizeHandles:M,resizeHandle:N,constraints:P=zi,layoutItem:F,layout:I=[],onDragStart:L,onDrag:ee,onDragStop:R,onResizeStart:te,onResize:ne,onResizeStop:re}=e,[ie,ae]=(0,B.useState)(!1),[oe,z]=(0,B.useState)(!1),se=(0,B.useRef)(null),ce=(0,B.useRef)({left:0,top:0}),le=(0,B.useRef)({top:0,left:0,width:0,height:0}),ue=(0,B.useRef)(void 0),de=(0,B.useRef)(I);de.current=I;let fe=(0,B.useRef)(null),pe=(0,B.useRef)(null),me=(0,B.useRef)(!1),he=(0,B.useRef)({x:0,y:0}),ge=(0,B.useRef)(!1),_e=(0,B.useMemo)(()=>({cols:n,containerPadding:a,containerWidth:r,margin:i,maxRows:s,rowHeight:o}),[n,a,r,i,s,o]),ve=(0,B.useMemo)(()=>({cols:n,maxRows:s,containerWidth:r,containerHeight:0,rowHeight:o,margin:i,layout:[]}),[n,s,r,o,i]),ye=(0,B.useCallback)(()=>({...ve,layout:de.current}),[ve]),be=(0,B.useMemo)(()=>F??{i:j,x:C,y:w,w:T,h:E,minW:D,maxW:O,minH:k,maxH:A},[F,j,C,w,T,E,D,O,k,A]),xe=(0,B.useCallback)(e=>{if(g?.calcStyle)return g.calcStyle(e);if(f)return Hi(e);let t=Ui(e);return m?{...t,left:Wi(e.left/r),width:Wi(e.width/r)}:t},[g,f,m,r]),Se=(0,B.useCallback)((e,{node:t})=>{if(!L)return;let{offsetParent:n}=t;if(!n)return;let r=n.getBoundingClientRect(),i=t.getBoundingClientRect(),a=i.left/h,o=r.left/h,s=i.top/h,c=r.top/h,l;if(g?.calcDragPosition){let t=e;l=g.calcDragPosition(t.clientX,t.clientY,t.clientX-i.left,t.clientY-i.top)}else l={left:a-o+n.scrollLeft,top:s-c+n.scrollTop};if(ce.current=l,_>0){let t=e;he.current={x:t.clientX,y:t.clientY},me.current=!0,ge.current=!1,ae(!0);return}ae(!0);let u=yi(_e,l.top,l.left),{x:d,y:f}=Bi(P,be,u.x,u.y,ye());L(j,d,f,{e,node:t,newPosition:l})},[L,h,_e,g,_,P,be,ye,j]),Ce=(0,B.useCallback)((e,{node:t,deltaX:n,deltaY:a})=>{if(!ee||!ie)return;let s=e;if(me.current&&!ge.current){let n=s.clientX-he.current.x,r=s.clientY-he.current.y;if(Math.hypot(n,r)<_)return;if(ge.current=!0,me.current=!1,L){let n=yi(_e,ce.current.top,ce.current.left),{x:r,y:i}=Bi(P,be,n.x,n.y,ye());L(j,r,i,{e,node:t,newPosition:ce.current})}}let c=ce.current.top+a,l=ce.current.left+n;if(u){let{offsetParent:e}=t;if(e){let t=e.clientHeight-gi(E,o,i[1]);c=xi(c,0,t);let n=hi(_e),a=r-gi(T,n,i[0]);l=xi(l,0,a)}}let d={top:c,left:l};ce.current=d;let f=yi(_e,c,l),{x:p,y:m}=Bi(P,be,f.x,f.y,ye());ee(j,p,m,{e,node:t,newPosition:d})},[ee,L,ie,_,u,E,o,i,_e,r,T,j,P,be,ye]),we=(0,B.useCallback)((e,{node:t})=>{if(!R||!ie)return;let n=me.current;if(me.current=!1,ge.current=!1,he.current={x:0,y:0},n){ae(!1),ce.current={left:0,top:0};return}let{left:r,top:i}=ce.current,a={top:i,left:r};ae(!1),ce.current={left:0,top:0};let o=yi(_e,i,r),{x:s,y:c}=Bi(P,be,o.x,o.y,ye());R(j,s,c,{e,node:t,newPosition:a})},[R,ie,_e,P,be,ye,j]);fe.current=Se,pe.current=Ce;let Te=(0,B.useCallback)((e,{node:t,size:n,handle:i},a,o)=>{let s=o===`onResizeStart`?te:o===`onResize`?ne:re;if(!s)return;let c;c=t?ea(i,a,n,r):{...n,top:a.top,left:a.left},le.current=c;let l=bi(_e,c.width,c.height),{w:u,h:d}=Vi(P,be,l.w,l.h,i,ye());s(j,u,d,{e:e.nativeEvent??e,node:t,size:c,handle:i})},[te,ne,re,r,_e,j,P,be,ye]),Ee=(0,B.useCallback)((e,t)=>{z(!0);let n=_i(_e,C,w,T,E),r={...t,handle:t.handle};Te(e,r,n,`onResizeStart`)},[Te,_e,C,w,T,E]),De=(0,B.useCallback)((e,t)=>{let n=_i(_e,C,w,T,E),r={...t,handle:t.handle};Te(e,r,n,`onResize`)},[Te,_e,C,w,T,E]),Oe=(0,B.useCallback)((e,t)=>{z(!1),le.current={top:0,left:0,width:0,height:0};let n=_i(_e,C,w,T,E),r={...t,handle:t.handle};Te(e,r,n,`onResizeStop`)},[Te,_e,C,w,T,E]);(0,B.useEffect)(()=>{if(!v)return;let e=se.current;if(!e)return;let t=ue.current||{left:0,top:0},n=ie&&(v.left!==t.left||v.top!==t.top);if(!ie){let t={node:e,deltaX:v.left,deltaY:v.top,lastX:0,lastY:0,x:v.left,y:v.top};fe.current?.(v.e,t)}else if(n){let t={node:e,deltaX:v.left-ce.current.left,deltaY:v.top-ce.current.top,lastX:ce.current.left,lastY:ce.current.top,x:v.left,y:v.top};pe.current?.(v.e,t)}ue.current=v},[v,ie,j]);let ke=_i(_e,C,w,T,E,ie?ce.current:null,oe?le.current:null),Ae=B.Children.only(t),je=hi(_e),Me=[gi(D,je,i[0]),gi(k,o,i[1])],Ne=[gi(O,je,i[0]),gi(A,o,i[1])],Pe=Ae.props,Fe=Pe.className,Ie=Pe.style,Le=B.cloneElement(Ae,{ref:se,className:p(`react-grid-item`,Fe,y,{static:d,resizing:oe,"react-draggable":c,"react-draggable-dragging":ie,dropping:!!v,cssTransforms:f}),style:{...b,...Ie,...xe(ke)}}),Re=N;return Le=(0,V.jsx)(Ao.Resizable,{draggableOpts:{disabled:!l},className:l?void 0:`react-resizable-hide`,width:ke.width,height:ke.height,minConstraints:Me,maxConstraints:Ne,onResizeStart:Ee,onResize:De,onResizeStop:Oe,transformScale:h,resizeHandles:M,handle:Re,children:Le}),Le=(0,V.jsx)(yo,{disabled:!c,onStart:Se,onDrag:Ce,onStop:we,handle:x,cancel:`.react-resizable-handle`+(S?`,`+S:``),scale:h,nodeRef:se,children:Le}),Le}var No=()=>{},Po=`react-grid-layout`,Fo=!1;try{Fo=/firefox/i.test(navigator.userAgent)}catch{}function Io(e,t){let n=B.Children.toArray(e),r=B.Children.toArray(t);if(n.length!==r.length)return!1;for(let e=0;e{if(!B.isValidElement(t)||t.key===null)return;let n=String(t.key);a.add(n);let r=e.find(e=>e.i===n);if(r)i.push(ji(r));else{let e=t.props[`data-grid`];e?i.push({i:n,x:e.x??0,y:e.y??0,w:e.w??1,h:e.h??1,minW:e.minW,maxW:e.maxW,minH:e.minH,maxH:e.maxH,static:e.static,isDraggable:e.isDraggable,isResizable:e.isResizable,resizeHandles:e.resizeHandles,isBounded:e.isBounded}):i.push({i:n,x:0,y:Oi(i),w:1,h:1})}});let o=Fi(i,{cols:n});return r.compact(o,n)}function Ro(e){let{children:t,width:n,gridConfig:r,dragConfig:i,resizeConfig:a,dropConfig:o,positionStrategy:s=ia,compactor:c,constraints:l=zi,layout:u=[],droppingItem:d,autoSize:f=!0,className:m=``,style:h={},innerRef:g,onLayoutChange:_=No,onDragStart:v=No,onDrag:y=No,onDragStop:b=No,onResizeStart:x=No,onResize:S=No,onResizeStop:C=No,onDrop:w=No,onDropDragOver:T=No}=e,E=(0,B.useMemo)(()=>({...aa,...r}),[r]),D=(0,B.useMemo)(()=>({...oa,...i}),[i]),O=(0,B.useMemo)(()=>({...sa,...a}),[a]),k=(0,B.useMemo)(()=>({...ca,...o}),[o]),{cols:A,rowHeight:j,maxRows:M,margin:N,containerPadding:P}=E,{enabled:F,bounded:I,handle:L,cancel:ee,threshold:R}=D,{enabled:te,handles:ne,handleComponent:re}=O,{enabled:ie,defaultItem:ae,onDragOver:oe}=k,z=c??va(`vertical`),se=z.type,ce=z.allowOverlap,le=z.preventCollision??!1,ue=(0,B.useMemo)(()=>d??{i:`__dropping-elem__`,...ae},[d,ae]),de=s.type===`transform`,fe=s.scale,pe=P??N,[me,he]=(0,B.useState)(!1),[ge,_e]=(0,B.useState)(()=>Lo(u,t,A,z)),[ve,ye]=(0,B.useState)(null),[be,xe]=(0,B.useState)(!1),[Se,Ce]=(0,B.useState)(null),[we,Te]=(0,B.useState)(),Ee=(0,B.useRef)(null),De=(0,B.useRef)(null),Oe=(0,B.useRef)(null),ke=(0,B.useRef)(0),Ae=(0,B.useRef)(ge),je=(0,B.useRef)(u),Me=(0,B.useRef)(t),Ne=(0,B.useRef)(se),Pe=(0,B.useRef)(ge);Pe.current=ge,(0,B.useEffect)(()=>{he(!0),(0,jo.deepEqual)(ge,u)||_(ge)},[]),(0,B.useEffect)(()=>{if(ve||Se)return;let e=!(0,jo.deepEqual)(u,je.current),n=!Io(t,Me.current),r=se!==Ne.current;if(e||n||r){let n=Lo(e?u:ge,t,A,z);(0,jo.deepEqual)(n,ge)||_e(n)}je.current=u,Me.current=t,Ne.current=se},[u,t,A,se,z,ve,Se,ge]),(0,B.useEffect)(()=>{if(!ve&&!(0,jo.deepEqual)(ge,Ae.current)){Ae.current=ge;let e=ge.filter(e=>e.i!==ue.i);_(e)}},[ge,ve,_,ue.i]);let Fe=(0,B.useMemo)(()=>{if(!f)return;let e=Oi(ge),t=pe[1];return e*j+(e-1)*N[1]+t*2+`px`},[f,ge,j,N,pe]),Ie=(0,B.useCallback)((e,t,n,r)=>{let i=Pe.current,a=ki(i,e);if(!a)return;let o={w:a.w,h:a.h,x:a.x,y:a.y,i:e};Ee.current=ji(a),Oe.current=i,ye(o),v(i,a,a,null,r.e,r.node)},[v]),Le=(0,B.useCallback)((e,t,n,r)=>{let i=Pe.current,a=Ee.current,o=ki(i,e);if(!o)return;let s={w:o.w,h:o.h,x:o.x,y:o.y,i:e},c=Ii(i,o,t,n,!0,le,se,A,ce);y(c,a,o,s,r.e,r.node),_e(z.compact(c,A)),ye(s)},[le,se,A,ce,z,y]),Re=(0,B.useCallback)((e,t,n,r)=>{if(!ve)return;let i=Pe.current,a=Ee.current,o=ki(i,e);if(!o)return;let s=Ii(i,o,t,n,!0,le,se,A,ce),c=z.compact(s,A);b(c,a,o,null,r.e,r.node);let l=Oe.current;Ee.current=null,Oe.current=null,ye(null),_e(c),l&&!(0,jo.deepEqual)(l,c)&&_(c)},[ve,le,se,A,ce,z,b,_]),ze=(0,B.useCallback)((e,t,n,r)=>{let i=Pe.current,a=ki(i,e);a&&(De.current=ji(a),Oe.current=i,xe(!0),x(i,a,a,null,r.e,r.node))},[x]),Be=(0,B.useCallback)((e,t,n,r)=>{let i=Pe.current,a=De.current,{handle:o}=r,s=!1,c,l,[u,d]=Pi(i,e,e=>(c=e.x,l=e.y,[`sw`,`w`,`nw`,`n`,`ne`].includes(o)&&([`sw`,`nw`,`w`].includes(o)&&(c=e.x+(e.w-t),t=e.x!==c&&c<0?e.w:t,c=c<0?0:c),[`ne`,`n`,`nw`].includes(o)&&(l=e.y+(e.h-n),n=e.y!==l&&l<0?e.h:n,l=l<0?0:l),s=!0),le&&!ce&&wi(i,{...e,w:t,h:n,x:c??e.x,y:l??e.y}).filter(t=>t.i!==e.i).length>0&&(l=e.y,n=e.h,c=e.x,t=e.w,s=!1),e.w=t,e.h=n,e));if(!d)return;let f=u;s&&c!==void 0&&l!==void 0&&(f=Ii(u,d,c,l,!0,le,se,A,ce));let p={w:d.w,h:d.h,x:d.x,y:d.y,i:e,static:!0};S(f,a,d,p,r.e,r.node),_e(z.compact(f,A)),ye(p)},[le,se,A,ce,z,S]),Ve=(0,B.useCallback)((e,t,n,r)=>{let i=Pe.current,a=De.current,o=ki(i,e),s=z.compact(i,A);C(s,a,o??null,null,r.e,r.node);let c=Oe.current;De.current=null,Oe.current=null,ye(null),xe(!1),_e(s),c&&!(0,jo.deepEqual)(c,s)&&_(s)},[A,z,C,_]),He=(0,B.useCallback)(()=>{let e=Pe.current;if(!e.some(e=>e.i===ue.i)){Ce(null),ye(null),Te(void 0);return}let t=z.compact(e.filter(e=>e.i!==ue.i),A);_e(t),Ce(null),ye(null),Te(void 0)},[ue.i,A,z]),Ue=(0,B.useCallback)(e=>{if(e.preventDefault(),e.stopPropagation(),Fo&&!e.nativeEvent.target?.classList.contains(Po))return!1;let t=oe?oe(e.nativeEvent):T(e);if(t===!1)return Se&&He(),!1;let{dragOffsetX:r=0,dragOffsetY:i=0,...a}=t??{},o={...ue,...a},s=e.currentTarget.getBoundingClientRect(),c={cols:A,margin:N,maxRows:M,rowHeight:j,containerWidth:n,containerPadding:pe},l=hi(c),u=gi(o.w,l,N[0]),d=gi(o.h,j,N[1]),f=u/2,p=d/2,m=e.clientX-s.left+r-f,h=e.clientY-s.top+i-p,g=Math.max(0,m),_=Math.max(0,h),v={left:g/fe,top:_/fe,e:e.nativeEvent};if(Se)we&&(we.left!==v.left||we.top!==v.top)&&Te(v);else{let e=vi(c,_,g,o.w,o.h);Ce((0,V.jsx)(`div`,{},o.i)),Te(v);let t=Pe.current.filter(e=>e.i!==o.i);_e([...t,{...o,x:e.x,y:e.y,static:!1,isDraggable:!0}])}},[Se,we,ue,oe,T,He,fe,A,N,M,j,n,pe]),We=(0,B.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),ke.current--,ke.current<0&&(ke.current=0),ke.current===0&&He()},[He]),Ge=(0,B.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),ke.current++},[]),Ke=(0,B.useCallback)(e=>{e.preventDefault(),e.stopPropagation();let t=Pe.current,n=t.find(e=>e.i===ue.i);ke.current=0,He(),w(t,n,e.nativeEvent)},[ue.i,He,w]),qe=(0,B.useCallback)((e,t)=>{if(!e||!e.key)return null;let r=ki(ge,String(e.key));if(!r)return null;let i=typeof r.isDraggable==`boolean`?r.isDraggable:!r.static&&F,a=typeof r.isResizable==`boolean`?r.isResizable:!r.static&&te,o=r.resizeHandles||[...ne],c=i&&I&&r.isBounded!==!1,u=re;return(0,V.jsx)(Mo,{containerWidth:n,cols:A,margin:N,containerPadding:pe,maxRows:M,rowHeight:j,cancel:ee,handle:L,onDragStart:Ie,onDrag:Le,onDragStop:Re,onResizeStart:ze,onResize:Be,onResizeStop:Ve,isDraggable:i,isResizable:a,isBounded:c,useCSSTransforms:de&&me,usePercentages:!me,transformScale:fe,positionStrategy:s,dragThreshold:R,w:r.w,h:r.h,x:r.x,y:r.y,i:r.i,minH:r.minH,minW:r.minW,maxH:r.maxH,maxW:r.maxW,static:r.static,droppingPosition:t?we:void 0,resizeHandles:o,resizeHandle:u,constraints:l,layoutItem:r,layout:ge,children:e},r.i)},[ge,n,A,N,pe,M,j,ee,L,Ie,Le,Re,ze,Be,Ve,F,te,I,de,me,fe,s,R,we,ne,re,l]),Je=()=>ve?(0,V.jsx)(Mo,{w:ve.w,h:ve.h,x:ve.x,y:ve.y,i:ve.i,className:`react-grid-placeholder ${be?`placeholder-resizing`:``}`,containerWidth:n,cols:A,margin:N,containerPadding:pe,maxRows:M,rowHeight:j,isDraggable:!1,isResizable:!1,isBounded:!1,useCSSTransforms:de,transformScale:fe,constraints:l,layout:ge,children:(0,V.jsx)(`div`,{})}):null,Ye=p(Po,m),Xe={height:Fe,...h};return(0,V.jsxs)(`div`,{ref:g,className:Ye,style:Xe,onDrop:ie?Ke:void 0,onDragLeave:ie?We:void 0,onDragEnter:ie?Ge:void 0,onDragOver:ie?Ue:void 0,children:[B.Children.map(t,e=>B.isValidElement(e)?qe(e):null),ie&&Se&&qe(Se,!0),Je()]})}var zo={lg:1200,md:996,sm:768,xs:480,xxs:0},Bo={lg:12,md:10,sm:6,xs:4,xxs:2},Vo=()=>{};function Ho(e,t,n,r){let i=[];B.Children.forEach(t,t=>{if(!B.isValidElement(t)||t.key===null)return;let n=String(t.key),r=e.find(e=>e.i===n);if(r)i.push({...r,i:n});else{let e=t.props[`data-grid`];e?i.push({i:n,x:e.x??0,y:e.y??0,w:e.w??1,h:e.h??1,minW:e.minW,maxW:e.maxW,minH:e.minH,maxH:e.maxH,static:e.static,isDraggable:e.isDraggable,isResizable:e.isResizable,resizeHandles:e.resizeHandles,isBounded:e.isBounded}):i.push({i:n,x:0,y:Oi(i),w:1,h:1})}});let a=Fi(i,{cols:n});return r.compact(a,n)}function Uo(e){let{children:t,width:n,breakpoint:r,breakpoints:i=zo,cols:a=Bo,layouts:o={},rowHeight:s=150,maxRows:c=1/0,margin:l=[10,10],containerPadding:u=null,compactor:d,onBreakpointChange:f=Vo,onLayoutChange:p=Vo,onWidthChange:m=Vo,...h}=e,g=d??va(`vertical`),_=g.type,v=g.allowOverlap,y=(0,B.useMemo)(()=>r??ba(i,n),[]),b=(0,B.useMemo)(()=>xa(y,a),[y,a]),x=(0,B.useMemo)(()=>Sa(o,i,y,y,b,_),[]),[S,C]=(0,B.useState)(y),[w,T]=(0,B.useState)(b),[E,D]=(0,B.useState)(x),[O,k]=(0,B.useState)(o),A=(0,B.useRef)(n),j=(0,B.useRef)(r),M=(0,B.useRef)(i),N=(0,B.useRef)(a),P=(0,B.useRef)(o),F=(0,B.useRef)(_),I=(0,B.useRef)(O);(0,B.useEffect)(()=>{I.current=O},[O]);let L=(0,B.useMemo)(()=>(0,jo.deepEqual)(o,P.current)?null:Sa(o,i,S,S,w,g),[o,i,S,w,g]),ee=L??E;(0,B.useEffect)(()=>{L!==null&&(D(L),k(o),I.current=o,P.current=o)},[L,o]),(0,B.useEffect)(()=>{if(_!==F.current){let e=g.compact(Mi(ee),w),t={...I.current,[S]:e};D(e),k(t),I.current=t,p(e,t),F.current=_}},[_,g,ee,w,v,S,p]),(0,B.useEffect)(()=>{let e=n!==A.current,o=r!==j.current,s=!(0,jo.deepEqual)(i,M.current),c=!(0,jo.deepEqual)(a,N.current);if(e||o||s||c){let e=r??ba(i,n),o=xa(e,a),d=S;if(d!==e||s||c){let n={...I.current};n[d]||(n[d]=Mi(E));let r=Sa(n,i,e,d,o,g);r=Ho(r,t,o,g),n[e]=r,C(e),T(o),D(r),k(n),I.current=n,f(e,o),p(r,n)}let h=Ca(l,e),_=u?Ca(u,e):null;m(n,h,o,_),A.current=n,j.current=r,M.current=i,N.current=a}},[n,r,i,a,S,w,E,t,g,_,v,l,u,f,p,m]);let R=(0,B.useCallback)(e=>{let t={...I.current,[S]:e};D(e),k(t),I.current=t,p(e,t)},[S,p]),te=(0,B.useMemo)(()=>Ca(l,S),[l,S]),ne=(0,B.useMemo)(()=>u===null?null:Ca(u,S),[u,S]),re=(0,B.useMemo)(()=>({cols:w,rowHeight:s,maxRows:c,margin:te,containerPadding:ne}),[w,s,c,te,ne]);return(0,V.jsx)(Ro,{...h,width:n,gridConfig:re,compactor:g,onLayoutChange:R,layout:ee,children:t})}function Wo(e){let{children:t,width:n,breakpoint:r,breakpoints:i,cols:a,layouts:o,onBreakpointChange:s,onLayoutChange:c,onWidthChange:l,rowHeight:u,maxRows:d,margin:f,containerPadding:p,droppingItem:m,compactType:h,preventCollision:g=!1,allowOverlap:_=!1,verticalCompact:v,isDraggable:y=!0,isBounded:b=!1,draggableHandle:x,draggableCancel:S,isResizable:C=!0,resizeHandles:w=[`se`],resizeHandle:T,isDroppable:E=!1,useCSSTransforms:D=!0,transformScale:O=1,autoSize:k,className:A,style:j,innerRef:M,onDragStart:N,onDrag:P,onDragStop:F,onResizeStart:I,onResize:L,onResizeStop:ee,onDrop:R,onDropDragOver:te}=e,ne=h===void 0?`vertical`:h;v===!1&&(ne=null);let re={enabled:y,bounded:b,handle:x,cancel:S},ie={enabled:C,handles:w,handleComponent:T},ae={enabled:E},oe;oe=D?O===1?ta:ra(O):na;let z=va(ne,_,g);return(0,V.jsx)(Uo,{width:n,breakpoint:r,breakpoints:i,cols:a,layouts:o,rowHeight:u,maxRows:d,margin:f,containerPadding:p,compactor:z,dragConfig:re,resizeConfig:ie,dropConfig:ae,positionStrategy:oe,droppingItem:m,autoSize:k,className:A,style:j,innerRef:M,onBreakpointChange:s,onLayoutChange:c,onWidthChange:l,onDragStart:N,onDrag:P,onDragStop:F,onResizeStart:I,onResize:L,onResizeStop:ee,onDrop:R,onDropDragOver:te,children:t})}Wo.displayName=`ResponsiveReactGridLayout`;var Go=Wo;function Ko(e){return e.replace(/[&<>"']/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`})[e])}var qo=e=>e.map(Ko).join(`
`);function Jo(e,t=!1){return n=>{let r=Array.isArray(n)?n:[n];return qo([...r[0]?.axisValueLabel?[r[0].axisValueLabel]:[],...r.map(n=>{let r=n.value,i=Array.isArray(r)?t?r.slice(1):r:[r];return`${n.seriesName??``}${n.name?` · ${n.name}`:``}: ${i.map(t=>typeof t==`number`?e(t,n.seriesName):String(t??`—`)).join(` · `)}`})])}}var Yo=e=>/^Other(?: \(\d+\))?$/.test(e??``);function Xo(e,t){let n=Math.min(6,Math.max(1,Math.floor(t.options?.top||6))),r=e.filter(e=>!Yo(e.name)),i=r.slice(0,n).map(e=>({name:e.name,items:[e]})),a=[...e.filter(e=>Yo(e.name)),...r.slice(n)];return a.length&&i.push({name:a.length===1&&Yo(a[0].name)?a[0].name:`Other (${a.reduce((e,t)=>e+(Yo(t.name)?Number(t.name.match(/\d+/)?.[0]??1):1),0)})`,items:a}),i}function Zo(e){let t=e.filter(e=>e!==null);return t.length?t.reduce((e,t)=>e+t,0):null}function Qo(e,t){let n=Math.min(6,Math.max(1,Math.floor(t.options?.top||6))),r=e.filter(e=>!Yo(e.name));return{shown:[...r.slice(0,n),...e.filter(e=>Yo(e.name))],hidden:Math.max(0,r.length-n)}}function $o(e,t){return e>0?[{type:`text`,right:8,bottom:2,silent:!0,style:{text:`${e} more series not shown`,fill:t,fontSize:11}}]:[]}function es(e,t,n,r,i=`sans-serif`,a){let o=e=>Array.from(e).length>24?`${Array.from(e).slice(0,23).join(``)}…`:e,s=Math.max(1,t-16),c=1,l=0;for(let t of e){let e=15+(a?.(o(t),`12px ${i}`)??Array.from(o(t)).length*7.2);l&&l+10+e>s&&(c++,l=0),l+=(l?10:0)+e}let u=c>2;return{top:n?u?30:c*20+2:12,option:{type:u?`scroll`:`plain`,show:n,top:0,left:0,right:0,padding:0,itemGap:6,icon:`roundRect`,itemWidth:10,itemHeight:10,itemStyle:{borderColor:r,borderWidth:1},textStyle:{color:r,fontSize:12,lineHeight:14},data:e,formatter:o,tooltip:{show:!0,renderMode:`html`,formatter:e=>Ko(e.name)}}}}function ts(e,t){if(!(!Number.isFinite(e)||!Number.isFinite(t)||e>=t||Math.abs(e)>864e13||Math.abs(t)>864e13))return{from:new Date(Math.floor(e)).toISOString(),to:new Date(Math.ceil(t)).toISOString()}}function ns(e){let t=[e.time?.range?`Range ${e.time.range}`:void 0,e.time?.shift?`Shifted ${e.time.shift}`:void 0].filter(Boolean);return t.length?t.join(` · `):void 0}function rs(e,t,n){if(n.seriesName?.endsWith(` · previous`)||Yo(n.seriesName)||Yo(n.name))return;let r=n.data?.selection;if(r)return r;let i=e.query?.by?.[0]??t.frame?.columns.find(e=>e.role===`dimension`)?.name,a=e.viz===`timeseries`?n.seriesName:n.name,o=Array.isArray(n.value)?n.value:[];return{time:e.viz===`timeseries`&&typeof o[0]==`number`?o[0]:void 0,dimensions:i&&a?{[i]:a}:{}}}function is(e){return Array.from({length:e.rows},(t,n)=>Object.fromEntries(e.columns.map((t,r)=>{let i=e.values[r]?.[n]??null;return[t.name,typeof i==`number`&&!Number.isFinite(i)?null:i]})))}function as(e,t){return e.viz!==`logs`||!t||t.rows===0?[]:t.columns.flatMap((e,n)=>{if(e.role!==`dimension`||e.type!==`string`||[`body`,`body_template`,`severity`,`status`].includes(e.name)||/(^id$|_id$)/.test(e.name))return[];let r=t.values[n][0];return typeof r==`string`&&r!==``&&t.values[n].slice(0,t.rows).every(e=>e===r)?[{name:e.name,value:r}]:[]})}function os(e,t){let n=t.frame??{columns:[],values:[],rows:0};return{columns:n.columns.map(e=>e.name),rows:is(n),selection:t=>{let n={};for(let r of e.query?.by??[]){let e=r.startsWith(`attributes[`)||r.startsWith(`resource[`)?r.slice(r.indexOf(`'`)+1,r.lastIndexOf(`'`)):r;t[e]!==void 0&&t[e]!==null&&(n[r]=String(t[e]))}return{time:typeof t.time==`number`?t.time:typeof t.start==`number`?t.start:void 0,dimensions:n,trace_id:typeof t.trace_id==`string`?t.trace_id:void 0,namespace:typeof t.namespace==`string`?t.namespace:void 0}}}}var ss=new Intl.NumberFormat(`en`,{notation:`compact`,maximumFractionDigits:1}),cs=new Intl.NumberFormat(`en`,{maximumFractionDigits:2});function ls(e){return Math.abs(e)<1e-4?e.toExponential(2).replace(/\.?(0+)(?=e)/,``):String(Number(e.toPrecision(3)))}function us(e,t=cs){return e!==0&&Math.abs(e)<1?ls(e):t.format(e)}function ds(e,t){let n=t===`s`?e*1e3:t===`ns`?e/1e6:e;return e!==0&&n===0?`${ls(e)}${t}`:n!==0&&Math.abs(n)<1?`${ls(n)}ms`:_t(n)}function fs(e){let t=[`B`,`KiB`,`MiB`,`GiB`,`TiB`],n=e,r=0;for(;Math.abs(n)>=1024&&r=1e4?ss:cs);default:return us(t,Math.abs(t)>=1e4?ss:cs)}}function ms(e){return t=>e===`ms`||e===`s`||e===`ns`?ps(e,t).replace(/(\.\d*?)0+([a-z]*)$/,`$1$2`).replace(/\.([a-z]*)$/,`$1`):ps(e,t)}function hs(e,t){return ms(e)(t??NaN).replace(/(?<=\d)(ms|ns|s|m|h)\b/g,` $1`)}function gs(e,t,n){let r=n===`ms`?1:n===`s`?1e3:n===`ns`?1e-6:void 0;if(r===void 0||!Number.isFinite(e)||!Number.isFinite(t))return;let i=Math.max((t-e)*r/6,2**-52);return([1,10,100,1e3,1e4,6e4,6e5,36e5,36e6].flatMap(e=>[1,2,5].map(t=>e*t)).sort((e,t)=>e-t).find(e=>e>=i)??[1,2,5,10].map(e=>e*10**Math.floor(Math.log10(i/36e5))*36e5).find(e=>e>=i))/r}function _s(e,t,n){let r=e=>ps(n,e),i=``;if(n===`ms`||n===`s`||n===`ns`){let a=n===`s`?1e3:n===`ns`?1e-6:1,o=Math.abs((e??t??0)*a),s=o>=6e4?6e4:o>=1e3?1e3:1;i=s===6e4?` min`:s===1e3?` s`:` ms`;let c=s===6e4?1:s===1e3?+(o<1e4):2,l=new Intl.NumberFormat(void 0,{maximumFractionDigits:c});r=e=>l.format(e*a/s)}return t===null&&e!==null?`≥${r(e)}${i}`:(e===null||e===0)&&t!==null?`<${r(t)}${i}`:`${e===null?`−∞`:r(e)}–${t===null?`∞`:r(t)}${i}`}function vs(e){let t=new Date(e);return t.getHours()===0&&t.getMinutes()===0&&t.getSeconds()===0?t.toLocaleDateString(void 0,{month:`short`,day:`numeric`}):t.toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,hourCycle:`h23`})}function ys(e,t=new Date,n){let r=new Date(e);if(!Number.isFinite(r.getTime()))return`—`;let i=new Intl.DateTimeFormat(n,{month:`short`,day:`numeric`,...r.getFullYear()===t.getFullYear()?{}:{year:`numeric`},hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`}).formatToParts(r),a=i.filter(e=>[`month`,`day`,`year`].includes(e.type)).map(e=>e.value),o=i.filter(e=>[`hour`,`minute`,`second`].includes(e.type)).map(e=>e.value);return`${a.join(` `)} ${o.join(`:`)}`}function bs({panel:e,result:t}){let n=t?.frame;return(0,V.jsxs)(`div`,{"data-panel-data":!0,children:[n?(0,V.jsxs)(ut,{fz:12,striped:!0,children:[(0,V.jsx)(ut.Thead,{children:(0,V.jsx)(ut.Tr,{children:n.columns.map(e=>(0,V.jsx)(ut.Th,{ff:Ne.display,children:e.name},e.name))})}),(0,V.jsx)(ut.Tbody,{children:Array.from({length:Math.min(n.rows,500)},(t,r)=>(0,V.jsx)(ut.Tr,{children:n.columns.map((t,i)=>{let a=n.values[i][r];return(0,V.jsx)(ut.Td,{ff:Ne.display,children:a===null?`—`:t.type===`time`?new Date(Number(a)).toISOString():t.role===`measure`?ps(t.unit??e.unit,Number(a)):String(a)},t.name)})},r))})]}):(0,V.jsx)(w,{c:`dimmed`,size:`sm`,children:`No data.`}),(0,V.jsxs)(w,{c:`dimmed`,fz:12,mt:8,children:[`Ran in `,t?.elapsed_ms??0,` ms`,t?.interval?`, one point per ${t.interval}`:``,n?`, ${n.rows} rows${n.truncated?` (truncated)`:``}`:``,`.`]}),(t?.sql??e.sql)&&(0,V.jsx)(le,{block:!0,mt:8,children:t?.sql??e.sql})]})}function xs({panel:e,dark:t}){let n=JSON.stringify(e,null,2).split(/("(?:[^"\\]|\\.)*"(?=\s*:)|"(?:[^"\\]|\\.)*"|\b(?:true|false|null)\b|-?\d+(?:\.\d+)?)/g);return(0,V.jsx)(`pre`,{"data-panel-spec":!0,style:{margin:0,fontFamily:Ne.display,fontSize:12,color:We[t?`dark`:`light`].text},children:n.map((e,r)=>{let i=e.startsWith(`"`)&&/^\s*:/.test(n[r+1]??``)?`key`:e.startsWith(`"`)?`string`:/^(true|false|null)$/.test(e)?`literal`:/^-?\d/.test(e)?`number`:`punctuation`,a=i===`key`?Ve[t?4:7]:i===`string`?Ge[t?4:8]:i===`number`||i===`literal`?Be[t?4:8]:void 0;return(0,V.jsx)(`span`,{"data-json-token":i,style:{color:a},children:e},r)})})}function Ss(e){return e===`healthy`?`ok`:e===`degraded`?`warn`:e===`unknown`?`gray`:`bad`}function Cs(e){return We[e?`dark`:`light`]}function ws(e){let t=e?5:7;return{ok:Ge[t],warn:Fe[t],bad:je[t],info:Be[t]}}function Ts(e,t){return Pe[t?`dark`:`light`][e]??Cs(t).muted}function Es(e){return e===`unhealthy`?`diamond`:e===`degraded`?`roundRect`:`circle`}function Ds(e){return e===`unknown`?`dashed`:`solid`}function Os(e){let t=String(e).toUpperCase();return t===`ERROR`||t===`FATAL`?`bad`:t===`WARN`||t===`WARNING`?`warn`:t===`INFO`?`info`:`gray`}var ks=e=>typeof e==`number`&&Number.isFinite(e)?e:null;function As(e){return e.columns.flatMap((e,t)=>e.role===`measure`?[t]:[])}function js(e){let t=e.columns.findIndex(e=>e.role===`time`);if(t<0)return[];let n=e.columns.findIndex(e=>e.role===`dimension`),r=As(e);if(n>=0&&r.length>0){let i=r[0],a=new Map;for(let r=0;r({name:e.columns[n].name,unit:e.columns[n].unit,points:e.values[t].map((t,r)=>[Number(t),ks(e.values[n][r])])}))}function Ms(e){let t=e.columns.flatMap((e,t)=>e.role===`dimension`?[t]:[]),n=As(e);if(t.length===0||n.length===0)return{categories:[],series:[]};let r=t[0],i=[];for(let t=0;t1){let a=t[1],o=n[0],s=new Map;for(let t=0;tnull)),s.get(n)[i.indexOf(String(e.values[r][t]??``))]=ks(e.values[o][t])}return{categories:i,series:[...s.entries()].map(([t,n])=>({name:t,unit:e.columns[o].unit,values:n}))}}return{categories:i,series:n.map(t=>({name:e.columns[t].name,unit:e.columns[t].unit,values:e.values[t].map(ks)}))}}function Ns(e,t){let n=e.filter(e=>e!==null);if(n.length===0)return null;switch(t){case`last`:return n[n.length-1];case`min`:return Math.min(...n);case`max`:return Math.max(...n);case`sum`:return n.reduce((e,t)=>e+t,0);default:return n.reduce((e,t)=>e+t,0)/n.length}}function Ps(e,t){let n=As(t)[0];return n===void 0?null:(e.reduce??`window`)===`window`?t.totals?ks(t.totals[n]):Ns(t.values[n].map(ks),`mean`):Ns(t.values[n].map(ks),e.reduce??`mean`)}function Fs(e){let t=As(e)[0];return t===void 0?[]:e.values[t].map(ks)}var Is={ok:0,warn:1,bad:2};function Ls(e){if(!e?.length)return;let t=[...e].sort((e,t)=>Is[e.status]-Is[t.status]),n=t[0],r=t[t.length-1];return Is[r.status]>Is[n.status]&&r.value!==n.value?r.value>n.value?`lower`:`higher`:`lower`}function Rs(e,t,n){if(e===null||!t||t.length===0)return null;n??=Ls(t);let r=`ok`;for(let i of t)(n===`lower`?e>=i.value:e<=i.value)&&Is[i.status]>Is[r]&&(r=i.status);return r}function zs(e,t){let n=Ue(e),r=Ue(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function Bs(e,t){return`rgba(${[1,3,5].map(t=>parseInt(e.slice(t,t+2),16)).join(`, `)}, ${t})`}function Vs(e,t){return{color:e,...zs(e,t.surface)<3?{borderColor:t.text,borderWidth:1}:{}}}function Hs(e,t){return{color:e,...zs(e,t.surface)<3?{shadowColor:t.text,shadowBlur:2}:{}}}function Us(e,t){return{ok:Ge,warn:Fe,bad:je}[e][t?5:8]}function Ws(e){let t=Cs(e),n=ws(e);return{dark:e,text:t.text,muted:t.muted,grid:t.grid,surface:t.surface,border:t.border,status:{ok:n.ok,warn:n.warn,bad:n.bad},font:Ne.display}}var Gs=(e,t,n)=>Yo(e)?n.muted:Ts(t,n.dark);function Ks(e,t){return Qo(js(e),t)}function qs(e,t){return{animationDuration:200,textStyle:{fontFamily:e.font,color:e.muted,fontSize:11},grid:{left:8,right:16,top:28,bottom:8,containLabel:!0},tooltip:{trigger:`axis`,formatter:Jo(e=>ps(t,e)),confine:!0,backgroundColor:e.surface,borderColor:e.border,textStyle:{color:e.text,fontSize:12},valueFormatter:e=>ps(t,e),axisPointer:{type:`line`,lineStyle:{color:e.border}}},aria:{enabled:!0}}}function Js(e){let t=(e.thresholds??[]).map(e=>e.value);if(t.length===0)return;let n=Math.max(...t);return e=>Math.max(e.max,n)}function Ys(e,t,n){return(e.thresholds??[]).map(r=>({yAxis:r.value,label:{formatter:`${r.label??r.status} ${ms(n??e.unit)(r.value).replace(/(?<=\d)(ms|s|m|h)$/,` $1`)}`,position:`insideStartTop`,color:t.muted,textBorderColor:t.surface,textBorderWidth:3,fontSize:12},lineStyle:{color:t.status[r.status],type:[4,3],width:1}}))}function Xs(e,t,n,r={width:500,height:248}){let i=t.frame?Ks(t.frame,e):{shown:[],hidden:0},a=i.shown,o=a[0]?.unit??e.unit,s=new Set(a.map(e=>e.name)),c=a.find(e=>Yo(e.name)),l=t.previous&&t.shift_ms!==void 0?Ks(t.previous,e).shown.flatMap(e=>Yo(e.name)?c?[e]:[]:s.has(e.name)?[e]:[]):[],u=[...new Set([...a,...l].map(t=>t.unit??e.unit))];u.length===0&&u.push(e.unit);let d=e.options?.style??`line`,f=a.length<=6&&i.hidden===0&&d!==`bars`&&d!==`stacked`,p=f?Math.min(r.width*.3,180,Math.max(40,...a.map(e=>(r.measureText?.(e.name,`12px ${n.font}`)??Array.from(e.name).length*7.2)+8))):0,m=t.shift_ms,h=a.map((t,r)=>{let i=Gs(t.name,r,n);return{name:t.name,yAxisIndex:u.indexOf(t.unit??e.unit),tooltip:{valueFormatter:n=>ps(t.unit??e.unit,n)},type:d===`bars`||d===`stacked`?`bar`:`line`,data:t.points,endLabel:f?{show:!0,formatter:`{a}`,color:n.muted,fontFamily:n.font,fontSize:12,distance:6,width:p-8,overflow:`truncate`,ellipsis:`…`}:void 0,labelLayout:{moveOverlap:`shiftY`},showSymbol:!1,connectNulls:!1,sampling:d===`bars`||d===`stacked`?void 0:`lttb`,stack:d===`stacked`?`total`:void 0,areaStyle:d===`area`?{opacity:.12}:void 0,lineStyle:{width:2,...Hs(i,n)},itemStyle:{...Vs(i,n),borderRadius:d===`bars`||d===`stacked`?[2,2,0,0]:void 0},barMaxWidth:12,emphasis:{focus:`series`},markLine:r===0&&(e.thresholds?.length??0)>0?{symbol:[`none`,`none`],silent:!0,data:Ys(e,n,o)}:void 0}}),g=m===void 0?[]:l.map(t=>({name:`${t.name} · previous`,yAxisIndex:u.indexOf(t.unit??e.unit),tooltip:{valueFormatter:n=>ps(t.unit??e.unit,n)},type:`line`,data:t.points.map(([e,t])=>[e+m,t]),showSymbol:!1,silent:!0,z:1,lineStyle:{width:1,type:`dashed`,color:n.muted},itemStyle:{color:n.muted}})),_=(e.options?.legend??`auto`)!==`hidden`&&a.length>1,v=es(a.map(e=>e.name),r.width,_,n.text,n.font,r.measureText),y=r.height-v.top-(i.hidden?24:8)-22,b=u.map((t,r)=>({splitNumber:Math.max(2,Math.floor(y/32)),type:e.options?.scale===`log`?`log`:`value`,position:r===0?`left`:`right`,offset:Math.max(0,r-1)*56,max:r===0?Js(e):void 0,axisLine:{show:!1},splitLine:{show:r===0,lineStyle:{color:n.grid}},axisLabel:{color:n.muted,fontFamily:n.font,fontSize:11,hideOverlap:!0,formatter:ms(t)}}));return{...qs(n,o),tooltip:{...qs(n,o).tooltip,formatter:Jo((t,n)=>ps([...a,...l].find(e=>e.name===n||`${e.name} · previous`===n)?.unit??e.unit,t),!0)},legend:v.option,grid:{left:8,right:16+(f?p:0)+Math.max(0,u.length-2)*56,top:v.top,bottom:i.hidden?24:8,containLabel:!0},xAxis:{type:`time`,axisLine:{lineStyle:{color:n.grid}},axisTick:{show:!1},splitLine:{show:!1},axisLabel:{color:n.muted,fontFamily:n.font,fontSize:11,hideOverlap:!0,formatter:vs}},yAxis:b.length===1?b[0]:b,series:[...h,...g],graphic:$o(i.hidden,n.muted)}}function Zs(e,t,n){if(n(e)<=t)return e;let r=Array.from(e);for(let e=r.length-1;e>0;e--){let i=Math.floor(e*.45),a=e-i,o=r.slice(0,i).join(``)+`…`+r.slice(-a).join(``);if(n(o)<=t)return o}return`…`}function Qs(e,t,n,r={width:500,height:248}){let i=Ms(t),a=i.categories,{shown:o,hidden:s}=Qo(i.series,e),c=t.columns.flatMap((e,t)=>e.role===`dimension`?[t]:[]),l=new Map;for(let n=0;nString(t.values[e][n]??``))),{dimensions:r,...i})}let u=o[0]?.unit??e.unit,d=[...new Set(o.map(t=>t.unit??e.unit))];d.length===0&&d.push(e.unit);let f=o.length>1,p=!!(t.periods?.[`Before deploy`]||t.periods?.[`Since deploy`]),m=e=>r.measureText?.(e,`11px ${n.font}`)??Array.from(e).length*6.6,h=Math.min(r.width*.4,Math.max(40,...a.map(m))),g=es(o.map(e=>e.name),r.width,f&&e.options?.legend!==`hidden`,n.text,n.font,r.measureText),_=d.map((e,t)=>({type:`value`,position:t===0?`bottom`:`top`,offset:Math.max(0,t-1)*36,splitLine:{show:t===0,lineStyle:{color:n.grid}},axisLabel:{color:n.muted,fontFamily:n.font,fontSize:11,formatter:t=>hs(e,t),hideOverlap:!0}}));return{...qs(n,u),tooltip:{...qs(n,u).tooltip,formatter:Jo((t,n)=>ps(o.find(e=>e.name===n)?.unit??e.unit,t)),axisPointer:{type:`shadow`}},legend:g.option,grid:{left:8,right:56,top:(f?g.top:8)+Math.max(0,d.length-1)*36,bottom:s?24:8,containLabel:!0},yAxis:{type:`category`,inverse:!0,data:a,splitLine:{show:!1},axisLine:{lineStyle:{color:n.grid}},axisTick:{show:!1},axisLabel:{color:n.muted,fontFamily:n.font,fontSize:11,width:h,overflow:`truncate`,formatter:e=>Zs(e,h,m)}},xAxis:_.length===1?_[0]:_,series:o.map((t,r)=>({name:t.name,xAxisIndex:d.indexOf(t.unit??e.unit),tooltip:{valueFormatter:n=>ps(t.unit??e.unit,n)},type:`bar`,data:t.values.map((e,n)=>({value:e,selection:l.get(JSON.stringify(c.length>1?[a[n],t.name]:[a[n]]))})),barMaxWidth:p&&t.name===`Before deploy`?7:14,barGap:`20%`,itemStyle:{...Vs(p?t.name===`Before deploy`?n.muted:Ts(0,n.dark):Gs(t.name,r,n),n),borderRadius:[0,4,4,0]},label:{show:p?t.name===`Since deploy`:!f||r===0,position:`right`,color:n.text,fontFamily:n.font,fontSize:11,formatter:({value:n})=>hs(t.unit??e.unit,n)}})),graphic:$o(s,n.muted)}}function $s(e,t,n,r=e.unit,i={width:270,height:140}){let a=e.min??0,o=e.max??100,s=ec(e,a,o,n),c=ps(r,t),l=Rs(t,e.thresholds,e.better),u=l===`bad`?`◆ Bad`:l===`warn`?`■ Warn`:l===`ok`?`● OK`:t===null?`○ Unknown`:void 0,d=e=>`${e}40`,f=i.measureText?.(c,`600 28px ${n.font}`)??c.length*28*.6,p=i.measureText?.(u??``,`11px ${n.font}`)??(u?.length??0)*11*.6,m=i.width{let r=y;return y=e,{type:`rect`,shape:{x:4+r*_,y:g,width:(e-r)*_,height:10,r:[n===0?5:0,n===s.length-1?5:0,n===s.length-1?5:0,n===0?5:0]},style:{fill:d(t)}}}),{id:`gauge-fill`,type:`rect`,shape:{x:4,y:g,width:v*_,height:10,r:5},style:{fill:l?n.status[l]:Ts(0,n.dark)}},{id:`gauge-marker`,type:`rect`,shape:{x:3+v*_,y:g-2,width:2,height:14,r:1},style:{fill:n.text}},{type:`text`,left:4,top:g+12,style:{text:ps(r,a),fill:n.muted,fontSize:11,fontFamily:n.font}},{type:`text`,right:4,top:g+12,style:{text:ps(r,o),fill:n.muted,fontSize:11,fontFamily:n.font}}]}}function ec(e,t,n,r){let i=n-t||1,a=[t,...(e.thresholds??[]).map(e=>Math.min(n,Math.max(t,e.value))),n].sort((e,t)=>e-t),o=[];for(let t=0;t[(e.end-t)/i,r.status[e.status]])}var tc=function(e,t){return tc=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},tc(e,t)};function H(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Class extends value `+String(t)+` is not a constructor or null`);tc(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var nc=`12px sans-serif`,rc=20,ic=100,ac=`007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N`;function oc(e){var t={};if(typeof JSON>`u`)return t;for(var n=0;n=0)s=o*n.length;else for(var c=0;c=xc&&(bc=0),bc++}function Cc(){var e=[...arguments];typeof console<`u`&&console.error.apply(console,e)}function wc(e){if(typeof e!=`object`||!e)return e;var t=e,n=dc.call(e);if(n===`[object Array]`){if(!rl(e)){t=[];for(var r=0,i=e.length;r`u`&&typeof self<`u`?ml.worker=!0:!ml.hasGlobalWindow||`Deno`in window||typeof navigator<`u`&&typeof navigator.userAgent==`string`&&navigator.userAgent.indexOf(`Node.js`)>-1?(ml.node=!0,ml.svgSupported=!0):hl(navigator.userAgent,ml);function hl(e,t){var n=t.browser,r=e.match(/Firefox\/([\d.]+)/),i=e.match(/MSIE\s([\d.]+)/)||e.match(/Trident\/.+?rv:(([\d.]+))/),a=e.match(/Edge?\/([\d.]+)/),o=/micromessenger/i.test(e);if(r&&(n.firefox=!0,n.version=r[1]),i&&(n.ie=!0,n.version=i[1]),a&&(n.edge=!0,n.version=a[1],n.newEdge=+a[1].split(`.`)[0]>18),o&&(n.weChat=!0),t.svgSupported=typeof SVGRect<`u`,t.touchEventsSupported=`ontouchstart`in window&&!n.ie&&!n.edge,t.pointerEventsSupported=`onpointerdown`in window&&(n.edge||n.ie&&+n.version>=11),t.domSupported=typeof document<`u`){var s=document.documentElement.style;t.transform3dSupported=(n.ie&&`transition`in s||n.edge||`WebKitCSSMatrix`in window&&`m11`in new WebKitCSSMatrix||`MozPerspective`in s)&&!(`OTransition`in s),t.transformSupported=t.transform3dSupported||n.ie&&+n.version>=9}}var gl=`.`,_l=`___EC__COMPONENT__CONTAINER___`,vl=`___EC__EXTENDED_CLASS___`;function yl(e){var t={main:``,sub:``};if(e){var n=e.split(gl);t.main=n[0]||``,t.sub=n[1]||``}return t}function bl(e){$c(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(e),`componentType "`+e+`" illegal`)}function xl(e){return!!(e&&e[vl])}function Sl(e,t){e.$constructor=e,e.extend=function(e){var t=this,n;return Cl(t)?n=function(e){H(t,e);function t(){return e.apply(this,arguments)||this}return t}(t):(n=function(){(e.$constructor||t).apply(this,arguments)},Ac(n,this)),U(n.prototype,e),n[vl]=!0,n.extend=this.extend,n.superCall=Dl,n.superApply=Ol,n.superClass=t,n}}function Cl(e){return zc(e)&&/^class\s/.test(Function.prototype.toString.call(e))}function wl(e,t){e.extend=t.extend}var Tl=Math.round(Math.random()*10);function El(e){var t=[`__\0is_clz`,Tl++].join(`_`);e.prototype[t]=!0,e.isInstance=function(e){return!!(e&&e[t])}}function Dl(e,t){var n=[...arguments].slice(2);return this.superClass.prototype[t].apply(e,n)}function Ol(e,t,n){return this.superClass.prototype[t].apply(e,n)}function kl(e){var t={};e.registerClass=function(e){var r=e.type||e.prototype.type;if(r){bl(r),e.prototype.type=r;var i=yl(r);if(!i.sub)t[i.main]=e;else if(i.sub!==_l){var a=n(i);a[i.sub]=e}}return e},e.getClass=function(e,n,r){var i=t[e];if(i&&i[_l]&&(i=n?i[n]:null),r&&!i)throw Error(n?`Component `+e+`.`+(n||``)+` is used but not imported.`:e+`.type should be specified.`);return i},e.getClassesByMainType=function(e){var n=yl(e),r=[],i=t[n.main];return i&&i[_l]?W(i,function(e,t){t!==_l&&r.push(e)}):r.push(i),r},e.hasClass=function(e){return!!t[yl(e).main]},e.getAllClassMainTypes=function(){var e=[];return W(t,function(t,n){e.push(n)}),e},e.hasSubTypes=function(e){var n=t[yl(e).main];return n&&n[_l]};function n(e){var n=t[e.main];return(!n||!n[_l])&&(n=t[e.main]={},n[_l]=!0),n}}function Al(e,t){for(var n=0;n=0||i&&kc(i,s)<0)){var c=n.getShallow(s,t);c!=null&&(a[e[o][0]]=c)}}return a}}var jl=Al([[`fill`,`color`],[`shadowBlur`],[`shadowOffsetX`],[`shadowOffsetY`],[`opacity`],[`shadowColor`]]),Ml=function(){function e(){}return e.prototype.getAreaStyle=function(e,t){return jl(this,e,t)},e}(),Nl=function(){function e(e){this.value=e}return e}(),Pl=function(){function e(){this._len=0}return e.prototype.insert=function(e){var t=new Nl(e);return this.insertEntry(t),t},e.prototype.insertEntry=function(e){this.head?(this.tail.next=e,e.prev=this.tail,e.next=null,this.tail=e):this.head=this.tail=e,this._len++},e.prototype.remove=function(e){var t=e.prev,n=e.next;t?t.next=n:this.head=n,n?n.prev=t:this.tail=t,e.next=e.prev=null,this._len--},e.prototype.len=function(){return this._len},e.prototype.clear=function(){this.head=this.tail=null,this._len=0},e}(),Fl=function(){function e(e){this._list=new Pl,this._maxSize=10,this._map={},this._maxSize=e}return e.prototype.put=function(e,t){var n=this._list,r=this._map,i=null;if(r[e]==null){var a=n.len(),o=this._lastRemovedEntry;if(a>=this._maxSize&&a>0){var s=n.head;n.remove(s),delete r[s.key],i=s.value,this._lastRemovedEntry=s}o?o.value=t:o=new Nl(t),o.key=e,n.insertEntry(o),r[e]=o}return i},e.prototype.get=function(e){var t=this._map[e],n=this._list;if(t!=null)return t!==n.tail&&(n.remove(t),n.insertEntry(t)),t.value},e.prototype.clear=function(){this._list.clear(),this._map={}},e.prototype.len=function(){return this._list.len()},e}(),Il=new Fl(50);function Ll(e){if(typeof e==`string`){var t=Il.get(e);return t&&t.image}return e}function Rl(e,t,n,r,i){if(!e)return t;if(typeof e==`string`){if(t&&t.__zrImageSrc===e||!n)return t;var a=Il.get(e),o={hostEl:n,cb:r,cbPayload:i};return a?(t=a.image,!Bl(t)&&a.pending.push(o)):(t=cc.loadImage(e,zl,zl),t.__zrImageSrc=e,Il.put(e,t.__cachedImgObj={image:t,pending:[o]})),t}return e}function zl(){var e=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var t=0;tu||d>f||p>m||h>g)return!1;var _=!(u=e.x&&t<=e.x+e.width&&n>=e.y&&n<=e.y+e.height},e.prototype.contain=function(t,n){return e.contain(this,t,n)},e.prototype.clone=function(){return new e(this.x,this.y,this.width,this.height)},e.prototype.copy=function(e){ku(this,e)},e.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},e.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},e.prototype.isZero=function(){return this.width===0||this.height===0},e.create=function(t){return new e(t?t.x:0,t?t.y:0,t?t.width:0,t?t.height:0)},e.copy=function(e,t){return e.x=t.x,e.y=t.y,e.width=t.width,e.height=t.height,e},e.applyTransform=function(e,t,n){if(!n){e!==t&&ku(e,t);return}if(n[1]<1e-5&&n[1]>-1e-5&&n[2]<1e-5&&n[2]>-1e-5){var r=n[0],i=n[3],a=n[4],o=n[5];e.x=t.x*r+a,e.y=t.y*i+o,e.width=t.width*r,e.height=t.height*i,e.width<0&&(e.x+=e.width,e.width=-e.width),e.height<0&&(e.y+=e.height,e.height=-e.height);return}vu.x=bu.x=t.x,vu.y=xu.y=t.y,yu.x=xu.x=t.x+t.width,yu.y=bu.y=t.y+t.height,vu.transform(n),xu.transform(n),yu.transform(n),bu.transform(n),e.x=pu(vu.x,yu.x,bu.x,xu.x),e.y=pu(vu.y,yu.y,bu.y,xu.y);var s=mu(vu.x,yu.x,bu.x,xu.x),c=mu(vu.y,yu.y,bu.y,xu.y);e.width=s-e.x,e.height=c-e.y},e.calculateTransform=function(e,t,n){var r=n.width/t.width,i=n.height/t.height;return e=Hl(e||[]),Gl(e,e,Ql(Fu,-t.x,-t.y)),ql(e,e,Ql(Fu,r,i)),Gl(e,e,Ql(Fu,n.x,n.y)),e},e}(),Du=Eu.create,Ou=Eu.set,ku=Eu.copy,Au=Eu.calculateTransform,ju=Eu.applyTransform,Mu=Eu.contain,Nu=new Eu(0,0,0,0),Pu=new Eu(0,0,0,0),Fu=[];function Iu(e,t,n,r,i,a,o,s){var c=hu(t-n),l=hu(r-e),u=pu(c,l),d=gu[i],f=gu[1-i],p=_u[i];t=l||!Su.bidirectional)&&(Cu[d]=-l,Cu[f]=0,Su.useDir&&Su.calcDirMTV())))}function Lu(){var e=0,t=new fu,n=new fu,r={minTv:new fu,maxTv:new fu,useDir:!1,dirMinTv:new fu,touchThreshold:0,bidirectional:!0,negativeSize:!1,reset:function(i,a){r.touchThreshold=0,i&&i.touchThreshold!=null&&(r.touchThreshold=mu(0,i.touchThreshold)),r.negativeSize=!1,a&&(r.minTv.set(1/0,1/0),r.maxTv.set(0,0),r.useDir=!1,i&&i.direction!=null&&(r.useDir=!0,r.dirMinTv.copy(r.minTv),n.copy(r.minTv),e=i.direction,r.bidirectional=i.bidirectional==null||!!i.bidirectional,r.bidirectional||t.set(Math.cos(e),Math.sin(e))))},calcDirMTV:function(){var a=r.minTv,o=r.dirMinTv,s=a.y*a.y+a.x*a.x,c=Math.sin(e),l=Math.cos(e),u=c*a.y+l*a.x;if(i(u)){i(a.x)&&i(a.y)&&o.set(0,0);return}if(n.x=s*l/u,n.y=s*c/u,i(n.x)&&i(n.y)){o.set(0,0);return}(r.bidirectional||t.dot(n)>0)&&n.len()=Hu)){e||=`12px sans-serif`;for(var t=[],n=+new Date,r=0;r<=127;r++)t[r]=cc.measureText(String.fromCharCode(r),e).width;var i=+new Date-n;return i>16?Vu=Hu:i>2&&Vu++,t}}var Vu=0,Hu=5;function Uu(e,t){return e.asciiWidthMapTried||=(e.asciiWidthMap=Bu(e.font),!0),0<=t&&t<=127?e.asciiWidthMap==null?e.asciiCharWidth:e.asciiWidthMap[t]:e.stWideCharWidth}function Wu(e,t){var n=e.strWidthCache,r=n.get(t);return r??(r=cc.measureText(t,e.font).width,n.put(t,r)),r}function Gu(e,t,n,r){var i=Wu(Ru(t),e),a=Yu(t);return new Eu(qu(0,i,n),Ju(0,a,r),i,a)}function Ku(e,t,n,r){var i=((e||``)+``).split(` +`);if(i.length===1)return Gu(i[0],t,n,r);for(var a=new Eu(0,0,0,0),o=0;o=0?parseFloat(e)/100*t:parseFloat(e):e}function Zu(e,t,n){var r=t.position||`inside`,i=t.distance==null?5:t.distance,a=n.height,o=n.width,s=a/2,c=n.x,l=n.y,u=`left`,d=`top`;if(r instanceof Array)c+=Xu(r[0],n.width),l+=Xu(r[1],n.height),u=null,d=null;else switch(r){case`left`:c-=i,l+=s,u=`right`,d=`middle`;break;case`right`:c+=i+o,l+=s,d=`middle`;break;case`top`:c+=o/2,l-=i,u=`center`,d=`bottom`;break;case`bottom`:c+=o/2,l+=a+i,u=`center`;break;case`inside`:c+=o/2,l+=s,u=`center`,d=`middle`;break;case`insideLeft`:c+=i,l+=s,d=`middle`;break;case`insideRight`:c+=o-i,l+=s,u=`right`,d=`middle`;break;case`insideTop`:c+=o/2,l+=i,u=`center`;break;case`insideBottom`:c+=o/2,l+=a-i,u=`center`,d=`bottom`;break;case`insideTopLeft`:c+=i,l+=i;break;case`insideTopRight`:c+=o-i,l+=i,u=`right`;break;case`insideBottomLeft`:c+=i,l+=a-i,d=`bottom`;break;case`insideBottomRight`:c+=o-i,l+=a-i,u=`right`,d=`bottom`}return e||={},e.x=c,e.y=l,e.align=u,e.verticalAlign=d,e}var Qu=/\{([a-zA-Z0-9_]+)\|([^}]*)\}/g;function $u(e,t,n,r,i,a){if(!n){e.text=``,e.isTruncated=!1;return}var o=(t+``).split(` +`);a=ed(n,r,i,a);for(var s=!1,c={},l=0,u=o.length;l=s;l++)c-=s;var u=Wu(o,n);return u>c&&(n=``,u=0),c=e-u,i.ellipsis=n,i.ellipsisWidth=u,i.contentWidth=c,i.containerWidth=e,i}function td(e,t,n){var r=n.containerWidth,i=n.contentWidth,a=n.fontMeasureInfo;if(!r){e.textLine=``,e.isTruncated=!1;return}var o=Wu(a,t);if(o<=r){e.textLine=t,e.isTruncated=!1;return}for(var s=0;;s++){if(o<=i||s>=n.maxIterations){t+=n.ellipsis;break}var c=s===0?nd(t,i,a):o>0?Math.floor(t.length*i/o):0;t=t.substr(0,c),o=Wu(a,t)}t===``&&(t=n.placeholder),e.textLine=t,e.isTruncated=!0}function nd(e,t,n){for(var r=0,i=0,a=e.length;ig&&p){var y=Math.floor(g/f);m||=_.length>y,_=_.slice(0,y),v=_.length*f}if(i&&u&&h!=null)for(var b=ed(h,l,t.ellipsis,{minChar:t.truncateMinChar,placeholder:t.placeholder}),x={},S=0;S<_.length;S++)td(x,_[S],b),_[S]=x.textLine,m||=x.isTruncated;for(var C=g,w=0,T=Ru(l),S=0;S<_.length;S++)w=Math.max(Wu(T,_[S]),w);h??=w;var E=h;return C+=c,E+=s,{lines:_,height:g,outerWidth:E,outerHeight:C,lineHeight:f,calculatedLineHeight:d,contentWidth:w,contentHeight:v,width:h,isTruncated:m}}var id=function(){function e(){}return e}(),ad=function(){function e(e){this.tokens=[],e&&(this.tokens=e)}return e}(),od=function(){function e(){this.width=0,this.height=0,this.contentWidth=0,this.contentHeight=0,this.outerWidth=0,this.outerHeight=0,this.lines=[],this.isTruncated=!1}return e}();function sd(e,t,n,r,i){var a=new od,o=gd(e);if(!o)return a;var s=t.padding,c=s?s[1]+s[3]:0,l=s?s[0]+s[2]:0,u=t.width;u==null&&n!=null&&(u=n-c);var d=t.height;d==null&&r!=null&&(d=r-l);for(var f=t.overflow,p=(f===`break`||f===`breakAll`)&&u!=null?{width:u,accumWidth:0,breakAll:f===`breakAll`}:null,m=Qu.lastIndex=0,h;(h=Qu.exec(o))!=null;){var g=h.index;g>m&&cd(a,o.substring(m,g),t,p),cd(a,h[2],t,p,h[1]),m=Qu.lastIndex}md){var F=a.lines.length;O>0?(T.tokens=T.tokens.slice(0,O),C(T,D,E),a.lines=a.lines.slice(0,w+1)):a.lines=a.lines.slice(0,w),a.isTruncated=a.isTruncated||a.lines.length0&&m+r.accumWidth>r.width&&(u=t.split(` +`),l=!0),r.accumWidth=m}else{var h=fd(t,c,r.width,r.breakAll,r.accumWidth);r.accumWidth=h.accumWidth+p,d=h.linesWidths,u=h.lines}}u||=t.split(` +`);for(var g=Ru(c),_=0;_=32&&t<=591||t>=880&&t<=4351||t>=4608&&t<=5119||t>=7680&&t<=8303}var ud=Nc(`,&?/;] `.split(``),function(e,t){return e[t]=!0,e},{});function dd(e){return!ld(e)||!!ud[e]}function fd(e,t,n,r,i){for(var a=[],o=[],s=``,c=``,l=0,u=0,d=Ru(t),f=0;fn:i+u+m>n){u?(s||c)&&(h?(s||(s=c,c=``,l=0,u=l),a.push(s),o.push(u-l),c+=p,l+=m,s=``,u=l):(c&&(s+=c,c=``,l=0),a.push(s),o.push(u),s=p,u=m)):h?(a.push(c),o.push(l),c=p,l=m):(a.push(p),o.push(m));continue}u+=m,h?(c+=p,l+=m):(c&&(s+=c,c=``,l=0),s+=p)}return c&&(s+=c),s&&(a.push(s),o.push(u)),a.length===1&&(u+=i),{accumWidth:u,lines:a,linesWidths:o}}function pd(e,t,n,r,i,a){if(e.baseX=n,e.baseY=r,e.outerWidth=e.outerHeight=null,t){var o=t.width*2,s=t.height*2;Eu.set(md,qu(n,o,i),Ju(r,s,a),o,s),Eu.intersect(t,md,null,hd);var c=hd.outIntersectRect;e.outerWidth=c.width,e.outerHeight=c.height,e.baseX=qu(c.x,c.width,i,!0),e.baseY=Ju(c.y,c.height,a,!0)}}var md=new Eu(0,0,0,0),hd={outIntersectRect:{},clamp:!0};function gd(e){return e==null?e=``:e+=``}function _d(e){var t=gd(e.text),n=e.font;return vd(e,Wu(Ru(n),t),Yu(n),null)}function vd(e,t,n,r){var i=new Eu(qu(e.x||0,t,e.textAlign),Ju(e.y||0,n,e.textBaseline),t,n),a=r??(yd(e)?e.lineWidth:0);return a>0&&(i.x-=a/2,i.y-=a/2,i.width+=a,i.height+=a),i}function yd(e){var t=e.stroke;return t!=null&&t!==`none`&&e.lineWidth>0}var bd=Hl,xd=5e-5;function Sd(e){return e>xd||e<-xd}var Cd=[],wd=[],Td=Vl(),Ed=Math.abs,Dd=function(){function e(){}return e.prototype.getLocalTransform=function(e){return Od(this,e)},e.prototype.setPosition=function(e){this.x=e[0],this.y=e[1]},e.prototype.setScale=function(e){this.scaleX=e[0],this.scaleY=e[1]},e.prototype.setSkew=function(e){this.skewX=e[0],this.skewY=e[1]},e.prototype.setOrigin=function(e){this.originX=e[0],this.originY=e[1]},e.prototype.needLocalTransform=function(){return Sd(this.rotation)||Sd(this.x)||Sd(this.y)||Sd(this.scaleX-1)||Sd(this.scaleY-1)||Sd(this.skewX)||Sd(this.skewY)},e.prototype.updateTransform=function(){var e=this.parent&&this.parent.transform,t=this.needLocalTransform(),n=this.transform;if(!(t||e)){n&&(bd(n),this.invTransform=null);return}n||=Vl(),t?this.getLocalTransform(n):bd(n),e&&(t?Wl(n,e,n):Ul(n,e)),this.transform=n,this._resolveGlobalScaleRatio(n),this.invTransform=this.invTransform||Vl(),Jl(this.invTransform,n)},e.prototype._resolveGlobalScaleRatio=function(e){var t=this.globalScaleRatio;if(t!=null&&t!==1){this.getGlobalScale(Cd);var n=Cd[0]<0?-1:1,r=Cd[1]<0?-1:1,i=((Cd[0]-n)*t+n)/Cd[0]||0,a=((Cd[1]-r)*t+r)/Cd[1]||0;e[0]*=i,e[1]*=i,e[2]*=a,e[3]*=a}},e.prototype.getComputedTransform=function(){for(var e=this,t=[];e;)t.push(e),e=e.parent;for(;e=t.pop();)e.updateTransform();return this.transform},e.prototype.setLocalTransform=function(e){if(e){var t=e[0]*e[0]+e[1]*e[1],n=e[2]*e[2]+e[3]*e[3],r=Math.atan2(e[1],e[0]),i=Math.PI/2+r-Math.atan2(e[3],e[2]);n=Math.sqrt(n)*Math.cos(i),t=Math.sqrt(t),this.skewX=i,this.skewY=0,this.rotation=-r,this.x=+e[4],this.y=+e[5],this.scaleX=t,this.scaleY=n,this.originX=0,this.originY=0}},e.prototype.decomposeTransform=function(){if(this.transform){var e=this.parent,t=this.transform;e&&e.transform&&(e.invTransform=e.invTransform||Vl(),Wl(wd,e.invTransform,t),t=wd);var n=this.originX,r=this.originY;(n||r)&&(Td[4]=n,Td[5]=r,Wl(wd,t,Td),wd[4]-=n,wd[5]-=r,t=wd),this.setLocalTransform(t)}},e.prototype.getGlobalScale=function(e){var t=this.transform;return e||=[],t?(e[0]=Math.sqrt(t[0]*t[0]+t[1]*t[1]),e[1]=Math.sqrt(t[2]*t[2]+t[3]*t[3]),t[0]<0&&(e[0]=-e[0]),t[3]<0&&(e[1]=-e[1]),e):(e[0]=1,e[1]=1,e)},e.prototype.transformCoordToLocal=function(e,t){var n=[e,t],r=this.invTransform;return r&&lu(n,n,r),n},e.prototype.transformCoordToGlobal=function(e,t){var n=[e,t],r=this.transform;return r&&lu(n,n,r),n},e.prototype.getLineScale=function(){var e=this.transform;return e&&Ed(e[0]-1)>1e-10&&Ed(e[3]-1)>1e-10?Math.sqrt(Ed(e[0]*e[3]-e[2]*e[1])):1},e.prototype.copyTransform=function(e){jd(this,e)},e.getLocalTransform=function(e,t){t||=[];var n=e.originX||0,r=e.originY||0,i=e.scaleX,a=e.scaleY,o=e.anchorX,s=e.anchorY,c=e.rotation||0,l=e.x,u=e.y,d=e.skewX?Math.tan(e.skewX):0,f=e.skewY?Math.tan(-e.skewY):0;if(n||r||o||s){var p=n+o,m=r+s;t[4]=-p*i-d*m*a,t[5]=-m*a-f*p*i}else t[4]=t[5]=0;return t[0]=i,t[3]=a,t[1]=f*i,t[2]=d*a,c&&Kl(t,t,c),t[4]+=n+l,t[5]+=r+u,t},e.initDefaultProps=(function(){var t=e.prototype;t.scaleX=t.scaleY=t.globalScaleRatio=1,t.x=t.y=t.originX=t.originY=t.skewX=t.skewY=t.rotation=t.anchorX=t.anchorY=0})(),e}(),Od=Dd.getLocalTransform;function kd(){return new Dd}var Ad=[`x`,`y`,`originX`,`originY`,`anchorX`,`anchorY`,`rotation`,`scaleX`,`scaleY`,`skewX`,`skewY`];function jd(e,t){return Dc(e,t,Ad)}var Md={linear:function(e){return e},quadraticIn:function(e){return e*e},quadraticOut:function(e){return e*(2-e)},quadraticInOut:function(e){return(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1)},cubicIn:function(e){return e*e*e},cubicOut:function(e){return--e*e*e+1},cubicInOut:function(e){return(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2)},quarticIn:function(e){return e*e*e*e},quarticOut:function(e){return 1- --e*e*e*e},quarticInOut:function(e){return(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2)},quinticIn:function(e){return e*e*e*e*e},quinticOut:function(e){return--e*e*e*e*e+1},quinticInOut:function(e){return(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2)},sinusoidalIn:function(e){return 1-Math.cos(e*Math.PI/2)},sinusoidalOut:function(e){return Math.sin(e*Math.PI/2)},sinusoidalInOut:function(e){return .5*(1-Math.cos(Math.PI*e))},exponentialIn:function(e){return e===0?0:1024**(e-1)},exponentialOut:function(e){return e===1?1:1-2**(-10*e)},exponentialInOut:function(e){return e===0?0:e===1?1:(e*=2)<1?.5*1024**(e-1):.5*(-(2**(-10*(e-1)))+2)},circularIn:function(e){return 1-Math.sqrt(1-e*e)},circularOut:function(e){return Math.sqrt(1- --e*e)},circularInOut:function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)},elasticIn:function(e){var t,n=.1,r=.4;return e===0?0:e===1?1:(!n||n<1?(n=1,t=r/4):t=r*Math.asin(1/n)/(2*Math.PI),-(n*2**(10*--e)*Math.sin((e-t)*(2*Math.PI)/r)))},elasticOut:function(e){var t,n=.1,r=.4;return e===0?0:e===1?1:(!n||n<1?(n=1,t=r/4):t=r*Math.asin(1/n)/(2*Math.PI),n*2**(-10*e)*Math.sin((e-t)*(2*Math.PI)/r)+1)},elasticInOut:function(e){var t,n=.1,r=.4;return e===0?0:e===1?1:(!n||n<1?(n=1,t=r/4):t=r*Math.asin(1/n)/(2*Math.PI),(e*=2)<1?-.5*(n*2**(10*--e)*Math.sin((e-t)*(2*Math.PI)/r)):n*2**(-10*--e)*Math.sin((e-t)*(2*Math.PI)/r)*.5+1)},backIn:function(e){var t=1.70158;return e*e*((t+1)*e-t)},backOut:function(e){var t=1.70158;return--e*e*((t+1)*e+t)+1},backInOut:function(e){var t=2.5949095;return(e*=2)<1?.5*(e*e*((t+1)*e-t)):.5*((e-=2)*e*((t+1)*e+t)+2)},bounceIn:function(e){return 1-Md.bounceOut(1-e)},bounceOut:function(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375},bounceInOut:function(e){return e<.5?Md.bounceIn(e*2)*.5:Md.bounceOut(e*2-1)*.5+.5}},Nd=Math.pow,Pd=Math.sqrt,Fd=1e-8,Id=1e-4,Ld=Pd(3),Rd=1/3,zd=Yl(),Bd=Yl(),Vd=Yl();function Hd(e){return e>-Fd&&eFd||e<-Fd}function Wd(e,t,n,r,i){var a=1-i;return a*a*(a*e+3*i*t)+i*i*(i*r+3*a*n)}function Gd(e,t,n,r,i){var a=1-i;return 3*(((t-e)*a+2*(n-t)*i)*a+(r-n)*i*i)}function Kd(e,t,n,r,i,a){var o=r+3*(t-n)-e,s=3*(n-t*2+e),c=3*(t-e),l=e-i,u=s*s-3*o*c,d=s*c-9*o*l,f=c*c-3*s*l,p=0;if(Hd(u)&&Hd(d)){if(Hd(s))a[0]=0;else{var m=-c/s;m>=0&&m<=1&&(a[p++]=m)}}else{var h=d*d-4*u*f;if(Hd(h)){var g=d/u,m=-s/o+g,_=-g/2;m>=0&&m<=1&&(a[p++]=m),_>=0&&_<=1&&(a[p++]=_)}else if(h>0){var v=Pd(h),y=u*s+1.5*o*(-d+v),b=u*s+1.5*o*(-d-v);y=y<0?-Nd(-y,Rd):Nd(y,Rd),b=b<0?-Nd(-b,Rd):Nd(b,Rd);var m=(-s-(y+b))/(3*o);m>=0&&m<=1&&(a[p++]=m)}else{var x=(2*u*s-3*o*d)/(2*Pd(u*u*u)),S=Math.acos(x)/3,C=Pd(u),w=Math.cos(S),m=(-s-2*C*w)/(3*o),_=(-s+C*(w+Ld*Math.sin(S)))/(3*o),T=(-s+C*(w-Ld*Math.sin(S)))/(3*o);m>=0&&m<=1&&(a[p++]=m),_>=0&&_<=1&&(a[p++]=_),T>=0&&T<=1&&(a[p++]=T)}}return p}function qd(e,t,n,r,i){var a=6*n-12*t+6*e,o=9*t+3*r-3*e-9*n,s=3*t-3*e,c=0;if(Hd(o)){if(Ud(a)){var l=-s/a;l>=0&&l<=1&&(i[c++]=l)}}else{var u=a*a-4*o*s;if(Hd(u))i[0]=-a/(2*o);else if(u>0){var d=Pd(u),l=(-a+d)/(2*o),f=(-a-d)/(2*o);l>=0&&l<=1&&(i[c++]=l),f>=0&&f<=1&&(i[c++]=f)}}return c}function Jd(e,t,n,r,i,a){var o=(t-e)*i+e,s=(n-t)*i+t,c=(r-n)*i+n,l=(s-o)*i+o,u=(c-s)*i+s,d=(u-l)*i+l;a[0]=e,a[1]=o,a[2]=l,a[3]=d,a[4]=d,a[5]=u,a[6]=c,a[7]=r}function Yd(e,t,n,r,i,a,o,s,c,l,u){var d,f=.005,p=1/0,m,h,g,_;zd[0]=c,zd[1]=l;for(var v=0;v<1;v+=.05)Bd[0]=Wd(e,n,i,o,v),Bd[1]=Wd(t,r,a,s,v),g=cu(zd,Bd),g=0&&g=0&&l<=1&&(i[c++]=l)}}else{var u=o*o-4*a*s;if(Hd(u)){var l=-o/(2*a);l>=0&&l<=1&&(i[c++]=l)}else if(u>0){var d=Pd(u),l=(-o+d)/(2*a),f=(-o-d)/(2*a);l>=0&&l<=1&&(i[c++]=l),f>=0&&f<=1&&(i[c++]=f)}}return c}function ef(e,t,n){var r=e+n-2*t;return r===0?.5:(e-t)/r}function tf(e,t,n,r,i){var a=(t-e)*r+e,o=(n-t)*r+t,s=(o-a)*r+a;i[0]=e,i[1]=a,i[2]=s,i[3]=s,i[4]=o,i[5]=n}function nf(e,t,n,r,i,a,o,s,c){var l,u=.005,d=1/0;zd[0]=o,zd[1]=s;for(var f=0;f<1;f+=.05){Bd[0]=Zd(e,n,i,f),Bd[1]=Zd(t,r,a,f);var p=cu(zd,Bd);p=0&&p=1?1:Kd(0,r,a,1,e,s)&&Wd(0,i,o,1,s[0])}}}var sf=function(){function e(e){this._inited=!1,this._startTime=0,this._pausedTime=0,this._paused=!1,this._life=e.life||1e3,this._delay=e.delay||0,this.loop=e.loop||!1,this.onframe=e.onframe||dl,this.ondestroy=e.ondestroy||dl,this.onrestart=e.onrestart||dl,e.easing&&this.setEasing(e.easing)}return e.prototype.step=function(e,t){if(this._inited||=(this._startTime=e+this._delay,!0),this._paused){this._pausedTime+=t;return}var n=this._life,r=e-this._startTime-this._pausedTime,i=r/n;i<0&&(i=0),i=Math.min(i,1);var a=this.easingFunc,o=a?a(i):i;if(this.onframe(o),i===1){if(this.loop){var s=r%n;this._startTime=e-s,this._pausedTime=0,this.onrestart()}else return!0}return!1},e.prototype.pause=function(){this._paused=!0},e.prototype.resume=function(){this._paused=!1},e.prototype.setEasing=function(e){this.easing=e,this.easingFunc=zc(e)?e:Md[e]||of(e)},e}(),cf={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function lf(e){return e=Math.round(e),e<0?0:e>255?255:e}function uf(e){return e=Math.round(e),e<0?0:e>360?360:e}function df(e){return e<0?0:e>1?1:e}function ff(e){var t=e;return t.length&&t.charAt(t.length-1)===`%`?lf(parseFloat(t)/100*255):lf(parseInt(t,10))}function pf(e){var t=e;return t.length&&t.charAt(t.length-1)===`%`?df(parseFloat(t)/100):df(parseFloat(t))}function mf(e,t,n){return n<0?n+=1:n>1&&--n,n*6<1?e+(t-e)*n*6:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}function hf(e,t,n){return e+(t-e)*n}function gf(e,t,n,r,i){return e[0]=t,e[1]=n,e[2]=r,e[3]=i,e}function _f(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}var vf=new Fl(20),yf=null;function bf(e,t){yf&&_f(yf,t),yf=vf.put(e,yf||t.slice())}function xf(e,t){if(e){t||=[];var n=vf.get(e);if(n)return _f(t,n);e+=``;var r=e.replace(/ /g,``).toLowerCase();if(r in cf)return _f(t,cf[r]),bf(e,t),t;var i=r.length;if(r.charAt(0)===`#`){if(i===4||i===5){var a=parseInt(r.slice(1,4),16);if(!(a>=0&&a<=4095)){gf(t,0,0,0,1);return}return gf(t,(a&3840)>>4|(a&3840)>>8,a&240|(a&240)>>4,a&15|(a&15)<<4,i===5?parseInt(r.slice(4),16)/15:1),bf(e,t),t}if(i===7||i===9){var a=parseInt(r.slice(1,7),16);if(!(a>=0&&a<=16777215)){gf(t,0,0,0,1);return}return gf(t,(a&16711680)>>16,(a&65280)>>8,a&255,i===9?parseInt(r.slice(7),16)/255:1),bf(e,t),t}return}var o=r.indexOf(`(`),s=r.indexOf(`)`);if(o!==-1&&s+1===i){var c=r.substr(0,o),l=r.substr(o+1,s-(o+1)).split(`,`),u=1;switch(c){case`rgba`:if(l.length!==4)return l.length===3?gf(t,+l[0],+l[1],+l[2],1):gf(t,0,0,0,1);u=pf(l.pop());case`rgb`:if(l.length>=3)return gf(t,ff(l[0]),ff(l[1]),ff(l[2]),l.length===3?u:pf(l[3])),bf(e,t),t;gf(t,0,0,0,1);return;case`hsla`:if(l.length!==4){gf(t,0,0,0,1);return}return l[3]=pf(l[3]),Sf(l,t),bf(e,t),t;case`hsl`:if(l.length!==3){gf(t,0,0,0,1);return}return Sf(l,t),bf(e,t),t;default:return}}gf(t,0,0,0,1)}}function Sf(e,t){var n=(parseFloat(e[0])%360+360)%360/360,r=pf(e[1]),i=pf(e[2]),a=i<=.5?i*(r+1):i+r-i*r,o=i*2-a;return t||=[],gf(t,lf(mf(o,a,n+1/3)*255),lf(mf(o,a,n)*255),lf(mf(o,a,n-1/3)*255),1),e.length===4&&(t[3]=e[3]),t}function Cf(e){if(e){var t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=a-i,s=(a+i)/2,c,l;if(o===0)c=0,l=0;else{l=s<.5?o/(a+i):o/(2-a-i);var u=((a-t)/6+o/2)/o,d=((a-n)/6+o/2)/o,f=((a-r)/6+o/2)/o;t===a?c=f-d:n===a?c=1/3+u-f:r===a&&(c=2/3+d-u),c<0&&(c+=1),c>1&&--c}var p=[c*360,l,s];return e[3]!=null&&p.push(e[3]),p}}function wf(e,t){var n=xf(e);if(n){for(var r=0;r<3;r++)t<0?n[r]=n[r]*(1-t)|0:n[r]=(255-n[r])*t+n[r]|0,n[r]>255?n[r]=255:n[r]<0&&(n[r]=0);return kf(n,n.length===4?`rgba`:`rgb`)}}function Tf(e,t,n){if(t&&t.length&&e>=0&&e<=1){n||=[];var r=e*(t.length-1),i=Math.floor(r),a=Math.ceil(r),o=t[i],s=t[a],c=r-i;return n[0]=lf(hf(o[0],s[0],c)),n[1]=lf(hf(o[1],s[1],c)),n[2]=lf(hf(o[2],s[2],c)),n[3]=df(hf(o[3],s[3],c)),n}}function Ef(e,t,n){if(t&&t.length&&e>=0&&e<=1){var r=e*(t.length-1),i=Math.floor(r),a=Math.ceil(r),o=xf(t[i]),s=xf(t[a]),c=r-i,l=kf([lf(hf(o[0],s[0],c)),lf(hf(o[1],s[1],c)),lf(hf(o[2],s[2],c)),df(hf(o[3],s[3],c))],`rgba`);return n?{color:l,leftIndex:i,rightIndex:a,value:r}:l}}function Df(e,t,n,r){var i=xf(e);if(e)return i=Cf(i),t!=null&&(i[0]=uf(zc(t)?t(i[0]):t)),n!=null&&(i[1]=pf(zc(n)?n(i[1]):n)),r!=null&&(i[2]=pf(zc(r)?r(i[2]):r)),kf(Sf(i),`rgba`)}function Of(e,t){var n=xf(e);if(n&&t!=null)return n[3]=df(t),kf(n,`rgba`)}function kf(e,t){if(e&&e.length){var n=e[0]+`,`+e[1]+`,`+e[2];return(t===`rgba`||t===`hsva`||t===`hsla`)&&(n+=`,`+e[3]),t+`(`+n+`)`}}function Af(e,t){var n=xf(e);return n?(.299*n[0]+.587*n[1]+.114*n[2])*n[3]/255+(1-n[3])*t:0}var jf=new Fl(100);function Mf(e){if(J(e)){var t=jf.get(e);return t||(t=wf(e,-.1),jf.put(e,t)),t}if(Kc(e)){var n=U({},e);return n.colorStops=G(e.colorStops,function(e){return{offset:e.offset,color:wf(e.color,-.1)}}),n}return e}function Nf(e){return e.type===`linear`}function Pf(e){return e.type===`radial`}(function(){return typeof Buffer<`u`&&typeof Buffer.from==`function`?function(e){return Buffer.from(e).toString(`base64`)}:typeof btoa==`function`&&typeof unescape==`function`&&typeof encodeURIComponent==`function`?function(e){return btoa(unescape(encodeURIComponent(e)))}:function(e){return null}})();var Ff=Array.prototype.slice;function If(e,t,n){return(t-e)*n+e}function Lf(e,t,n,r){for(var i=t.length,a=0;ar?t:e,a=Math.min(n,r),o=i[a-1]||{color:[0,0,0,0],offset:0},s=a;so)r.length=o;else for(var s=a;s=1},e.prototype.getAdditiveTrack=function(){return this._additiveTrack},e.prototype.addKeyframe=function(e,t,n){this._needsSort=!0;var r=this.keyframes,i=r.length,a=!1,o=Qf,s=t;if(Mc(t)){var c=Gf(t);o=c,(c===1&&!Vc(t[0])||c===2&&!Vc(t[0][0]))&&(a=!0)}else if(Vc(t)&&!Jc(t))o=Kf;else if(J(t)){if(!isNaN(+t))o=Kf;else{var l=xf(t);l&&(s=l,o=Yf)}}else if(Kc(t)){var u=U({},s);u.colorStops=G(t.colorStops,function(e){return{offset:e.offset,color:xf(e.color)}}),Nf(t)?o=Xf:Pf(t)&&(o=Zf),s=u}i===0?this.valType=o:(o!==this.valType||o===Qf)&&(a=!0),this.discrete=this.discrete||a;var d={time:e,value:s,rawValue:t,percent:0};return n&&(d.easing=n,d.easingFunc=zc(n)?n:Md[n]||of(n)),r.push(d),d},e.prototype.prepare=function(e,t){var n=this.keyframes;this._needsSort&&n.sort(function(e,t){return e.time-t.time});for(var r=this.valType,i=n.length,a=n[i-1],o=this.discrete,s=ep(r),c=$f(r),l=0;l=0&&!(a[l].percent<=t);l--);l=d(l,o-2)}else{for(l=u;lt);l++);l=d(l-1,o-2)}p=a[l+1],f=a[l]}if(f&&p){this._lastFr=l,this._lastFrP=t;var m=p.percent-f.percent,h=m===0?1:d((t-f.percent)/m,1);p.easingFunc&&(h=p.easingFunc(h));var g=n?this._additiveValue:c?tp:e[s];if((ep(i)||c)&&!g&&(g=this._additiveValue=[]),this.discrete)e[s]=h<1?f.rawValue:p.rawValue;else if(ep(i))i===qf?Lf(g,f[r],p[r],h):Rf(g,f[r],p[r],h);else if($f(i)){var _=f[r],v=p[r],y=i===Xf;e[s]={type:y?`linear`:`radial`,x:If(_.x,v.x,h),y:If(_.y,v.y,h),colorStops:G(_.colorStops,function(e,t){var n=v.colorStops[t];return{offset:If(e.offset,n.offset,h),color:Wf(Lf([],e.color,n.color,h))}}),global:v.global},y?(e[s].x2=If(_.x2,v.x2,h),e[s].y2=If(_.y2,v.y2,h)):e[s].r=If(_.r,v.r,h)}else if(c)Lf(g,f[r],p[r],h),n||(e[s]=Wf(g));else{var b=If(f[r],p[r],h);n?this._additiveValue=b:e[s]=b}n&&this._addToTarget(e)}}},e.prototype._addToTarget=function(e){var t=this.valType,n=this.propName,r=this._additiveValue;t===Kf?e[n]=e[n]+r:t===Yf?(xf(e[n],tp),zf(tp,tp,r,1),e[n]=Wf(tp)):t===qf?zf(e[n],e[n],r,1):t===Jf&&Bf(e[n],e[n],r,1)},e}(),rp=function(){function e(e,t,n,r){if(this._tracks={},this._trackKeys=[],this._maxTime=0,this._started=0,this._clip=null,this._target=e,this._loop=t,t&&r){Cc(`Can' use additive animation on looped animation.`);return}this._additiveAnimators=r,this._allowDiscrete=n}return e.prototype.getMaxTime=function(){return this._maxTime},e.prototype.getDelay=function(){return this._delay},e.prototype.getLoop=function(){return this._loop},e.prototype.getTarget=function(){return this._target},e.prototype.changeTarget=function(e){this._target=e},e.prototype.when=function(e,t,n){return this.whenWithKeys(e,t,Ic(t),n)},e.prototype.whenWithKeys=function(e,t,n,r){for(var i=this._tracks,a=0;a0&&s.addKeyframe(0,Uf(c),r),this._trackKeys.push(o)}s.addKeyframe(e,Uf(t[o]),r)}return this._maxTime=Math.max(this._maxTime,e),this},e.prototype.pause=function(){this._clip.pause(),this._paused=!0},e.prototype.resume=function(){this._clip.resume(),this._paused=!1},e.prototype.isPaused=function(){return!!this._paused},e.prototype.duration=function(e){return this._maxTime=e,this._force=!0,this},e.prototype._doneCallback=function(){this._setTracksFinished(),this._clip=null;var e=this._doneCbs;if(e)for(var t=e.length,n=0;n0)){this._started=1;for(var t=this,n=[],r=this._maxTime||0,i=0;i1){var o=a.pop();i.addKeyframe(o.time,e[r]),i.prepare(this._maxTime,i.getAdditiveTrack())}}}},e}(),ip=function(){function e(e){e&&(this._$eventProcessor=e)}return e.prototype.on=function(e,t,n,r){this._$handlers||={};var i=this._$handlers;if(typeof t==`function`&&(r=n,n=t,t=null),!n||!e)return this;var a=this._$eventProcessor;t!=null&&a&&a.normalizeQuery&&(t=a.normalizeQuery(t)),i[e]||(i[e]=[]);for(var o=0;o=0:n.inside,y=void 0,b=void 0,x=void 0;v&&this.canBeInsideText()?(y=n.insideFill,b=n.insideStroke,(y==null||y===`auto`)&&(y=this.getInsideTextFill()),(b==null||b===`auto`)&&(b=this.getInsideTextStroke(y),x=!0)):(y=n.outsideFill,b=n.outsideStroke,(y==null||y===`auto`)&&(y=this.getOutsideFill()),(b==null||b===`auto`)&&(b=this.getOutsideStroke(y),x=!0)),y||=`#000`,(y!==g.fill||b!==g.stroke||x!==g.autoStroke||a!==g.align||o!==g.verticalAlign)&&(s=!0,g.fill=y,g.stroke=b,g.autoStroke=x,g.align=a,g.verticalAlign=o,t.setDefaultTextStyle(g)),t.__dirty|=1,s&&t.dirtyStyle(!0)}},e.prototype.canBeInsideText=function(){return!0},e.prototype.getInsideTextFill=function(){return`#fff`},e.prototype.getInsideTextStroke=function(e){return`#000`},e.prototype.getOutsideFill=function(){return this.__zr&&this.__zr.isDarkMode()?lp:cp},e.prototype.getOutsideStroke=function(e){var t=this.__zr&&this.__zr.getBackgroundColor(),n=typeof t==`string`&&xf(t);n||=[255,255,255,1];for(var r=n[3],i=this.__zr.isDarkMode(),a=0;a<3;a++)n[a]=n[a]*r+(i?0:255)*(1-r);return n[3]=1,kf(n,`rgba`)},e.prototype.traverse=function(e,t){},e.prototype.attrKV=function(e,t){e===`textConfig`?this.setTextConfig(t):e===`textContent`?this.setTextContent(t):e===`clipPath`?this.setClipPath(t):e===`extra`?(this.extra=this.extra||{},U(this.extra,t)):this[e]=t},e.prototype.hide=function(){this.ignore=!0,this.markRedraw()},e.prototype.show=function(){this.ignore=!1,this.markRedraw()},e.prototype.attr=function(e,t){if(typeof e==`string`)this.attrKV(e,t);else if(Hc(e))for(var n=Ic(e),r=0;r0},e.prototype.getState=function(e){return this.states[e]},e.prototype.ensureState=function(e){var t=this.states;return t[e]||(t[e]={}),t[e]},e.prototype.clearStates=function(e){this.useState(dp,!1,e)},e.prototype.useState=function(e,t,n,r){var i=e===dp;if(this.hasState()||!i){var a=this.currentStates,o=this.stateTransition;if(!(kc(a,e)>=0&&(t||a.length===1))){var s;if(this.stateProxy&&!i&&(s=this.stateProxy(e)),s||=this.states&&this.states[e],!s&&!i){Cc(`State `+e+` not exists.`);return}i||this.saveCurrentToNormalState(s);var c=this._textContent,l=Tp(this,c,s,r);l&&!this.__inHover&&(this.__inHover=l),this._applyStateObj(e,s,this._normalState,t,Dp(this,n,o),o);var u=this._textGuide;return c&&c.useState(e,t,n,!!l),u&&u.useState(e,t,n,!!l),i?(this.currentStates=[],this._normalState={}):t?this.currentStates.push(e):this.currentStates=[e],this._updateAnimationTargets(),this.markRedraw(),!l&&this.__inHover&&(this.__inHover=0,this.__dirty&=-2),s}}},e.prototype.useStates=function(e,t,n){if(!e.length)this.clearStates();else{var r=[],i=this.currentStates,a=e.length,o=a===i.length;if(o){for(var s=0;s=0){var n=this.currentStates.slice();n.splice(t,1),this.useStates(n)}},e.prototype.replaceState=function(e,t,n){var r=this.currentStates.slice(),i=kc(r,e),a=kc(r,t)>=0;i>=0?a?r.splice(i,1):r[i]=t:n&&!a&&r.push(t),this.useStates(r)},e.prototype.toggleState=function(e,t){t?this.useState(e,!0):this.removeState(e)},e.prototype._mergeStates=function(e){for(var t={},n,r=0;r=0&&t.splice(n,1)}),this.animators.push(e),n&&n.animation.addAnimator(e),n&&n.wakeUp()},e.prototype.updateDuringAnimation=function(e){this.markRedraw()},e.prototype.stopAnimation=function(e,t){for(var n=this.animators,r=n.length,i=[],a=0;a0&&n.during&&a[0].during(function(e,t){n.during(t)});for(var f=0;f0||i.force&&!o.length){var C=void 0,w=void 0,T=void 0;if(s){w={},f&&(C={});for(var b=0;b0}var Op=`__zr_style_`+Math.round(Math.random()*10),kp={shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowColor:`#000`,opacity:1,blend:`source-over`},Ap={style:{shadowBlur:!0,shadowOffsetX:!0,shadowOffsetY:!0,shadowColor:!0,opacity:!0}};kp[Op]=!0;var jp=[`z`,`z2`,`invisible`],Mp=[`invisible`],Np=function(e){H(t,e);function t(t){return e.call(this,t)||this}return t.prototype._init=function(t){for(var n=Ic(t),r=0;r1e-4){s[0]=e-n,s[1]=t-r,c[0]=e+n,c[1]=t+r;return}if(Hp[0]=Bp(i)*n+e,Hp[1]=zp(i)*r+t,Up[0]=Bp(a)*n+e,Up[1]=zp(a)*r+t,l(s,Hp,Up),u(c,Hp,Up),i%=Vp,i<0&&(i+=Vp),a%=Vp,a<0&&(a+=Vp),i>a&&!o?a+=Vp:ii&&(Wp[0]=Bp(p)*n+e,Wp[1]=zp(p)*r+t,l(s,Wp,s),u(c,Wp,c))}var Zp={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},Qp=[],$p=[],em=[],tm=[],nm=[],rm=[],im=Math.min,am=Math.max,om=Math.cos,sm=Math.sin,cm=Math.abs,lm=Math.PI,um=lm*2,dm=typeof Float32Array<`u`,fm=[];function pm(e){return Math.round(e/lm*1e8)/1e8%2*lm}function mm(e,t){var n=pm(e[0]);n<0&&(n+=um);var r=n-e[0],i=e[1];i+=r,!t&&i-n>=um?i=n+um:t&&n-i>=um?i=n-um:!t&&n>i?i=n+(um-pm(n-i)):t&&n0&&(this._ux=cm(n/op/e)||0,this._uy=cm(n/op/t)||0)},e.prototype.setDPR=function(e){this.dpr=e},e.prototype.setContext=function(e){this._ctx=e},e.prototype.getContext=function(){return this._ctx},e.prototype.beginPath=function(){return this._ctx&&this._ctx.beginPath(),this.reset(),this},e.prototype.reset=function(){this._saveData&&(this._len=0),this._pathSegLen&&(this._pathSegLen=null,this._pathLen=0),this._version++},e.prototype.moveTo=function(e,t){return this._drawPendingPt(),this.addData(Zp.M,e,t),this._ctx&&this._ctx.moveTo(e,t),this._x0=e,this._y0=t,this._xi=e,this._yi=t,this},e.prototype.lineTo=function(e,t){var n=cm(e-this._xi),r=cm(t-this._yi),i=n>this._ux||r>this._uy;if(this.addData(Zp.L,e,t),this._ctx&&i&&this._ctx.lineTo(e,t),i)this._xi=e,this._yi=t,this._pendingPtDist=0;else{var a=n*n+r*r;a>this._pendingPtDist&&(this._pendingPtX=e,this._pendingPtY=t,this._pendingPtDist=a)}return this},e.prototype.bezierCurveTo=function(e,t,n,r,i,a){return this._drawPendingPt(),this.addData(Zp.C,e,t,n,r,i,a),this._ctx&&this._ctx.bezierCurveTo(e,t,n,r,i,a),this._xi=i,this._yi=a,this},e.prototype.quadraticCurveTo=function(e,t,n,r){return this._drawPendingPt(),this.addData(Zp.Q,e,t,n,r),this._ctx&&this._ctx.quadraticCurveTo(e,t,n,r),this._xi=n,this._yi=r,this},e.prototype.arc=function(e,t,n,r,i,a){this._drawPendingPt(),fm[0]=r,fm[1]=i,mm(fm,a),r=fm[0],i=fm[1];var o=i-r;return this.addData(Zp.A,e,t,n,n,r,o,0,+!a),this._ctx&&this._ctx.arc(e,t,n,r,i,a),this._xi=om(i)*n+e,this._yi=sm(i)*n+t,this},e.prototype.arcTo=function(e,t,n,r,i){return this._drawPendingPt(),this._ctx&&this._ctx.arcTo(e,t,n,r,i),this},e.prototype.rect=function(e,t,n,r){return this._drawPendingPt(),this._ctx&&this._ctx.rect(e,t,n,r),this.addData(Zp.R,e,t,n,r),this},e.prototype.closePath=function(){this._drawPendingPt(),this.addData(Zp.Z);var e=this._ctx,t=this._x0,n=this._y0;return e&&e.closePath(),this._xi=t,this._yi=n,this},e.prototype.fill=function(e){e&&e.fill(),this.toStatic()},e.prototype.stroke=function(e){e&&e.stroke(),this.toStatic()},e.prototype.len=function(){return this._len},e.prototype.setData=function(e){if(this._saveData){var t=e.length;!(this.data&&this.data.length===t)&&dm&&(this.data=new Float32Array(t));for(var n=0;n0&&a))for(var o=0;ol.length&&(this._expandData(),l=this.data);for(var u=0;u0&&(this._ctx&&this._ctx.lineTo(this._pendingPtX,this._pendingPtY),this._pendingPtDist=0)},e.prototype._expandData=function(){if(!(this.data instanceof Array)){for(var e=[],t=0;t11&&(this.data=new Float32Array(e)))}},e.prototype.getBoundingRect=function(){em[0]=em[1]=nm[0]=nm[1]=Number.MAX_VALUE,tm[0]=tm[1]=rm[0]=rm[1]=-Number.MAX_VALUE;for(var e=this.data,t=0,n=0,r=0,i=0,a=0;an||cm(v)>r||d===t-1)&&(m=Math.sqrt(_*_+v*v),i=h,a=g);break;case Zp.C:var y=e[d++],b=e[d++],h=e[d++],g=e[d++],x=e[d++],S=e[d++];m=Xd(i,a,y,b,h,g,x,S,10),i=x,a=S;break;case Zp.Q:var y=e[d++],b=e[d++],h=e[d++],g=e[d++];m=rf(i,a,y,b,h,g,10),i=h,a=g;break;case Zp.A:var C=e[d++],w=e[d++],T=e[d++],E=e[d++],D=e[d++],O=e[d++],k=O+D;d+=1,p&&(o=om(D)*T+C,s=sm(D)*E+w),m=am(T,E)*im(um,Math.abs(O)),i=om(k)*T+C,a=sm(k)*E+w;break;case Zp.R:o=i=e[d++],s=a=e[d++];var A=e[d++],j=e[d++];m=A*2+j*2;break;case Zp.Z:var _=o-i,v=s-a;m=Math.sqrt(_*_+v*v),i=o,a=s}m>=0&&(c[u++]=m,l+=m)}return this._pathLen=l,l},e.prototype.rebuildPath=function(e,t){var n=this.data,r=this._ux,i=this._uy,a=this._len,o,s,c,l,u,d,f=t<1,p,m,h=0,g=0,_,v=0,y,b;if(!(f&&(this._pathSegLen||this._calculateLength(),p=this._pathSegLen,m=this._pathLen,_=t*m,!_)))lo:for(var x=0;x0&&(e.lineTo(y,b),v=0),S){case Zp.M:o=c=n[x++],s=l=n[x++],e.moveTo(c,l);break;case Zp.L:u=n[x++],d=n[x++];var w=cm(u-c),T=cm(d-l);if(w>r||T>i){if(f){var E=p[g++];if(h+E>_){var D=(_-h)/E;e.lineTo(c*(1-D)+u*D,l*(1-D)+d*D);break lo}h+=E}e.lineTo(u,d),c=u,l=d,v=0}else{var O=w*w+T*T;O>v&&(y=u,b=d,v=O)}break;case Zp.C:var k=n[x++],A=n[x++],j=n[x++],M=n[x++],N=n[x++],P=n[x++];if(f){var E=p[g++];if(h+E>_){var D=(_-h)/E;Jd(c,k,j,N,D,Qp),Jd(l,A,M,P,D,$p),e.bezierCurveTo(Qp[1],$p[1],Qp[2],$p[2],Qp[3],$p[3]);break lo}h+=E}e.bezierCurveTo(k,A,j,M,N,P),c=N,l=P;break;case Zp.Q:var k=n[x++],A=n[x++],j=n[x++],M=n[x++];if(f){var E=p[g++];if(h+E>_){var D=(_-h)/E;tf(c,k,j,D,Qp),tf(l,A,M,D,$p),e.quadraticCurveTo(Qp[1],$p[1],Qp[2],$p[2]);break lo}h+=E}e.quadraticCurveTo(k,A,j,M),c=j,l=M;break;case Zp.A:var F=n[x++],I=n[x++],L=n[x++],ee=n[x++],R=n[x++],te=n[x++],ne=n[x++],re=!n[x++],ie=L>ee?L:ee,ae=cm(L-ee)>.001,oe=R+te,z=!1;if(f){var E=p[g++];h+E>_&&(oe=R+te*(_-h)/E,z=!0),h+=E}if(ae&&e.ellipse?e.ellipse(F,I,L,ee,ne,R,oe,re):e.arc(F,I,ie,R,oe,re),z)break lo;C&&(o=om(R)*L+F,s=sm(R)*ee+I),c=om(oe)*L+F,l=sm(oe)*ee+I;break;case Zp.R:o=c=n[x],s=l=n[x+1],u=n[x++],d=n[x++];var se=n[x++],ce=n[x++];if(f){var E=p[g++];if(h+E>_){var le=_-h;e.moveTo(u,d),e.lineTo(u+im(le,se),d),le-=se,le>0&&e.lineTo(u+se,d+im(le,ce)),le-=ce,le>0&&e.lineTo(u+am(se-le,0),d+ce),le-=se,le>0&&e.lineTo(u,d+am(ce-le,0));break lo}h+=E}e.rect(u,d,se,ce);break;case Zp.Z:if(f){var E=p[g++];if(h+E>_){var D=(_-h)/E;e.lineTo(c*(1-D)+o*D,l*(1-D)+s*D);break lo}h+=E}e.closePath(),c=o,l=s}}},e.prototype.clone=function(){var t=new e,n=this.data;return t.data=n.slice?n.slice():Array.prototype.slice.call(n),t._len=this._len,t},e.prototype.canSave=function(){return!!this._saveData},e.CMD=Zp,e.initDefaultProps=(function(){var t=e.prototype;t._saveData=!0,t._ux=0,t._uy=0,t._pendingPtDist=0,t._version=0})(),e}();function gm(e,t,n,r,i,a,o){if(i===0)return!1;var s=i,c=0,l=e;if(o>t+s&&o>r+s||oe+s&&a>n+s||at+d&&u>r+d&&u>a+d&&u>s+d||ue+d&&l>n+d&&l>i+d&&l>o+d||lt+l&&c>r+l&&c>a+l||ce+l&&s>n+l&&s>i+l||sn||u+li&&(i+=xm);var f=Math.atan2(c,s);return f<0&&(f+=xm),f>=r&&f<=i||f+xm>=r&&f+xm<=i}function Cm(e,t,n,r,i,a){if(a>t&&a>r||ai?s:0}var wm=hm.CMD,Tm=Math.PI*2,Em=1e-4;function Dm(e,t){return Math.abs(e-t)t&&l>r&&l>a&&l>s||l1&&Am(),p=Wd(t,r,a,s,km[0]),f>1&&(m=Wd(t,r,a,s,km[1]))),f===2?gt&&s>r&&s>a||s=0&&l<=1){for(var u=0,d=Zd(t,r,a,l),f=0;fn||s<-n)return 0;var c=Math.sqrt(n*n-s*s);Om[0]=-c,Om[1]=c;var l=Math.abs(r-i);if(l<1e-4)return 0;if(l>=Tm-1e-4){r=0,i=Tm;var u=a?1:-1;return o>=Om[0]+e&&o<=Om[1]+e?u:0}if(r>i){var d=r;r=i,i=d}r<0&&(r+=Tm,i+=Tm);for(var f=0,p=0;p<2;p++){var m=Om[p];if(m+e>o){var h=Math.atan2(s,m),u=a?1:-1;h<0&&(h=Tm+h),(h>=r&&h<=i||h+Tm>=r&&h+Tm<=i)&&(h>Math.PI/2&&h1&&(n||(s+=Cm(c,l,u,d,r,i))),g&&(c=a[m],l=a[m+1],u=c,d=l),h){case wm.M:u=a[m++],d=a[m++],c=u,l=d;break;case wm.L:if(n){if(gm(c,l,a[m],a[m+1],t,r,i))return!0}else s+=Cm(c,l,a[m],a[m+1],r,i)||0;c=a[m++],l=a[m++];break;case wm.C:if(n){if(_m(c,l,a[m++],a[m++],a[m++],a[m++],a[m],a[m+1],t,r,i))return!0}else s+=jm(c,l,a[m++],a[m++],a[m++],a[m++],a[m],a[m+1],r,i)||0;c=a[m++],l=a[m++];break;case wm.Q:if(n){if(vm(c,l,a[m++],a[m++],a[m],a[m+1],t,r,i))return!0}else s+=Mm(c,l,a[m++],a[m++],a[m],a[m+1],r,i)||0;c=a[m++],l=a[m++];break;case wm.A:var _=a[m++],v=a[m++],y=a[m++],b=a[m++],x=a[m++],S=a[m++];m+=1;var C=!!(1-a[m++]);f=Math.cos(x)*y+_,p=Math.sin(x)*b+v,g?(u=f,d=p):s+=Cm(c,l,f,p,r,i);var w=(r-_)*b/y+_;if(n){if(Sm(_,v,b,x,x+S,C,t,w,i))return!0}else s+=Nm(_,v,b,x,x+S,C,w,i);c=Math.cos(x+S)*y+_,l=Math.sin(x+S)*b+v;break;case wm.R:u=c=a[m++],d=l=a[m++];var T=a[m++],E=a[m++];if(f=u+T,p=d+E,n){if(gm(u,d,f,d,t,r,i)||gm(f,d,f,p,t,r,i)||gm(f,p,u,p,t,r,i)||gm(u,p,u,d,t,r,i))return!0}else s+=Cm(f,d,f,p,r,i),s+=Cm(u,p,u,d,r,i);break;case wm.Z:if(n){if(gm(c,l,u,d,t,r,i))return!0}else s+=Cm(c,l,u,d,r,i);c=u,l=d}}return!n&&!Dm(l,d)&&(s+=Cm(c,l,u,d,r,i)||0),s!==0}function Fm(e,t,n){return Pm(e,0,!1,t,n)}function Im(e,t,n,r){return Pm(e,t,!0,n,r)}var Lm=Oc({fill:`#000`,stroke:null,strokePercent:1,fillOpacity:1,strokeOpacity:1,lineDashOffset:0,lineWidth:1,lineCap:`butt`,miterLimit:10,strokeNoScale:!1,strokeFirst:!1},kp),Rm={style:Oc({fill:!0,stroke:!0,strokePercent:!0,fillOpacity:!0,strokeOpacity:!0,lineDashOffset:!0,lineWidth:!0,miterLimit:!0},Ap.style)},zm=Ad.concat([`invisible`,`culling`,`z`,`z2`,`zlevel`,`parent`]),Bm=function(e){H(t,e);function t(t){return e.call(this,t)||this}return t.prototype.update=function(){var n=this;e.prototype.update.call(this);var r=this.style;if(r.decal){var i=this._decalEl=this._decalEl||new t;i.buildPath===t.prototype.buildPath&&(i.buildPath=function(e){n.buildPath(e,n.shape)}),i.silent=!0;var a=i.style;for(var o in r)a[o]!==r[o]&&(a[o]=r[o]);a.fill=r.fill?r.decal:null,a.decal=null,a.shadowColor=null,r.strokeFirst&&(a.stroke=null);for(var s=0;s.5?cp:t>.2?up:lp}if(e)return lp}return cp},t.prototype.getInsideTextStroke=function(e){var t=this.style.fill;if(J(t)){var n=this.__zr;if(!!(n&&n.isDarkMode())==Af(e,0)<.4)return t}},t.prototype.buildPath=function(e,t,n){},t.prototype.pathUpdated=function(){this.__dirty&=-5},t.prototype.getUpdatedPathProxy=function(e){return!this.path&&this.createPathProxy(),this.path.beginPath(),this.buildPath(this.path,this.shape,e),this.path},t.prototype.createPathProxy=function(){this.path=new hm(!1)},t.prototype.hasStroke=function(){var e=this.style,t=e.stroke;return!(t==null||t===`none`||!(e.lineWidth>0))},t.prototype.hasFill=function(){var e=this.style.fill;return e!=null&&e!==`none`},t.prototype.getBoundingRect=function(){var e=this._rect,t=this.style,n=!e;if(n){var r=!1;this.path||(r=!0,this.createPathProxy());var i=this.path;(r||this.__dirty&4)&&(i.beginPath(),this.buildPath(i,this.shape,!1),this.pathUpdated()),e=i.getBoundingRect()}if(this._rect=e,this.hasStroke()&&this.path&&this.path.len()>0){var a=this._rectStroke||=e.clone();if(this.__dirty||n){a.copy(e);var o=t.strokeNoScale?this.getLineScale():1,s=t.lineWidth;if(!this.hasFill()){var c=this.strokeContainThreshold;s=Math.max(s,c??4)}o>1e-10&&(a.width+=s/o,a.height+=s/o,a.x-=s/o/2,a.y-=s/o/2)}return a}return e},t.prototype.contain=function(e,t){var n=this.transformCoordToLocal(e,t),r=this.getBoundingRect(),i=this.style;if(e=n[0],t=n[1],r.contain(e,t)){var a=this.path;if(this.hasStroke()){var o=i.lineWidth,s=i.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(this.hasFill()||(o=Math.max(o,this.strokeContainThreshold)),Im(a,o/s,e,t)))return!0}if(this.hasFill())return Fm(a,e,t)}return!1},t.prototype.dirtyShape=function(){this.__dirty|=4,this._rect&&=null,this._decalEl&&this._decalEl.dirtyShape(),this.markRedraw()},t.prototype.dirty=function(){this.dirtyStyle(),this.dirtyShape()},t.prototype.animateShape=function(e){return this.animate(`shape`,e)},t.prototype.updateDuringAnimation=function(e){e===`style`?this.dirtyStyle():e===`shape`?this.dirtyShape():this.markRedraw()},t.prototype.attrKV=function(t,n){t===`shape`?this.setShape(n):e.prototype.attrKV.call(this,t,n)},t.prototype.setShape=function(e,t){var n=this.shape;return n||=this.shape={},typeof e==`string`?n[e]=t:U(n,e),this.dirtyShape(),this},t.prototype.shapeChanged=function(){return!!(this.__dirty&4)},t.prototype.createStyle=function(e){return ll(Lm,e)},t.prototype._innerSaveToNormal=function(t){e.prototype._innerSaveToNormal.call(this,t);var n=this._normalState;t.shape&&!n.shape&&(n.shape=U({},this.shape))},t.prototype._applyStateObj=function(t,n,r,i,a,o){if(e.prototype._applyStateObj.call(this,t,n,r,i,a,o),this.__inHover!==1){var s=!(n&&i),c;if(n&&n.shape?a?i?c=n.shape:(c=U({},r.shape),U(c,n.shape)):(c=U({},i?this.shape:r.shape),U(c,n.shape)):s&&(c=r.shape),c){if(a){this.shape=U({},this.shape);for(var l={},u=Ic(c),d=0;di&&(d=s+c,s*=i/d,c*=i/d),l+u>i&&(d=l+u,l*=i/d,u*=i/d),c+l>a&&(d=c+l,c*=a/d,l*=a/d),s+u>a&&(d=s+u,s*=a/d,u*=a/d),e.moveTo(n+s,r),e.lineTo(n+i-c,r),c!==0&&e.arc(n+i-c,r+c,c,-Math.PI/2,0),e.lineTo(n+i,r+a-l),l!==0&&e.arc(n+i-l,r+a-l,l,0,Math.PI/2),e.lineTo(n+u,r+a),u!==0&&e.arc(n+u,r+a-u,u,Math.PI/2,Math.PI),e.lineTo(n,r+s),s!==0&&e.arc(n+s,r+s,s,Math.PI,Math.PI*1.5),e.closePath()}var Jm=Math.round;function Ym(e,t,n){if(t){var r=t.x1,i=t.x2,a=t.y1,o=t.y2;e.x1=r,e.x2=i,e.y1=a,e.y2=o;var s=n&&n.lineWidth;return s?(Jm(r*2)===Jm(i*2)&&(e.x1=e.x2=Zm(r,s,!0)),Jm(a*2)===Jm(o*2)&&(e.y1=e.y2=Zm(a,s,!0)),e):e}}function Xm(e,t,n){if(t){var r=t.x,i=t.y,a=t.width,o=t.height;e.x=r,e.y=i,e.width=a,e.height=o;var s=n&&n.lineWidth;return s?(e.x=Zm(r,s,!0),e.y=Zm(i,s,!0),e.width=Math.max(Zm(r+a,s,!1)-e.x,a===0?0:1),e.height=Math.max(Zm(i+o,s,!1)-e.y,o===0?0:1),e):e}}function Zm(e,t,n){if(!t)return e;var r=Jm(e*2);return(r+Jm(t))%2==0?r/2:(r+(n?1:-1))/2}var Qm=function(){function e(){this.x=0,this.y=0,this.width=0,this.height=0}return e}(),$m={},eh=function(e){H(t,e);function t(t){return e.call(this,t)||this}return t.prototype.getDefaultShape=function(){return new Qm},t.prototype.buildPath=function(e,t){var n,r,i,a;if(this.subPixelOptimize){var o=Xm($m,t,this.style);n=o.x,r=o.y,i=o.width,a=o.height,o.r=t.r,t=o}else n=t.x,r=t.y,i=t.width,a=t.height;t.r?qm(e,t):e.rect(n,r,i,a)},t.prototype.isZeroArea=function(){return!this.shape.width||!this.shape.height},t}(Bm);eh.prototype.type=`rect`;var th={fill:`#000`},nh=2,rh={},ih={style:Oc({fill:!0,stroke:!0,fillOpacity:!0,strokeOpacity:!0,lineWidth:!0,fontSize:!0,lineHeight:!0,width:!0,height:!0,textShadowColor:!0,textShadowBlur:!0,textShadowOffsetX:!0,textShadowOffsetY:!0,backgroundColor:!0,padding:!0,borderColor:!0,borderWidth:!0,borderRadius:!0},Ap.style)},ah=function(e){H(t,e);function t(t){var n=e.call(this)||this;return n.type=`text`,n._children=[],n._defaultStyle=th,n.attr(t),n}return t.prototype.childrenRef=function(){return this._children},t.prototype.update=function(){e.prototype.update.call(this),this.styleChanged()&&this._updateSubTexts();for(var t=0;t0,T=0;T=0&&(D=y[E],D.align===`right`);)this._placeToken(D,e,x,m,T,`right`,g),S-=D.width,T-=D.width,E--;for(w+=(s-(w-p)-(h-T)-S)/2;C<=E;)D=y[C],this._placeToken(D,e,x,m,w+D.width/2,`center`,g),w+=D.width,C++;m+=x}},t.prototype._placeToken=function(e,t,n,r,i,a,o){var s=t.rich[e.styleName]||{};s.text=e.text;var c=e.verticalAlign,l=r+n/2;c===`top`?l=r+e.height/2:c===`bottom`&&(l=r+n-e.height/2),!e.isLineHolder&&vh(s)&&this._renderBackground(s,t,a===`right`?i-e.width:a===`center`?i-e.width/2:i,l-e.height/2,e.width,e.height);var u=!!s.backgroundColor,d=e.textPadding;d&&(i=gh(i,a,d),l-=e.height/2-d[0]-e.innerHeight/2);var f=this._getOrCreateChild(Hm),p=f.createStyle();f.useStyle(p);var m=this._defaultStyle,h=!1,g=0,_=!1,v=hh(`fill`in s?s.fill:`fill`in t?t.fill:(h=!0,m.fill)),y=mh(`stroke`in s?s.stroke:`stroke`in t?t.stroke:!u&&!o&&(!m.autoStroke||h)?(g=nh,_=!0,m.stroke):null),b=s.textShadowBlur>0||t.textShadowBlur>0;p.text=e.text,p.x=i,p.y=l,b&&(p.shadowBlur=s.textShadowBlur||t.textShadowBlur||0,p.shadowColor=s.textShadowColor||t.textShadowColor||`transparent`,p.shadowOffsetX=s.textShadowOffsetX||t.textShadowOffsetX||0,p.shadowOffsetY=s.textShadowOffsetY||t.textShadowOffsetY||0),p.textAlign=a,p.textBaseline=`middle`,p.font=e.font||`12px sans-serif`,p.opacity=Xc(s.opacity,t.opacity,1),uh(p,s),y&&(p.lineWidth=Xc(s.lineWidth,t.lineWidth,g),p.lineDash=Y(s.lineDash,t.lineDash),p.lineDashOffset=t.lineDashOffset||0,p.stroke=y),v&&(p.fill=v),f.setBoundingRect(vd(p,e.contentWidth,e.contentHeight,_?0:null))},t.prototype._renderBackground=function(e,t,n,r,i,a){var o=e.backgroundColor,s=e.borderWidth,c=e.borderColor,l=o&&o.image,u=o&&!l,d=e.borderRadius,f=this,p,m;if(u||e.lineHeight||s&&c){p=this._getOrCreateChild(eh),p.useStyle(p.createStyle()),p.style.fill=null;var h=p.shape;h.x=n,h.y=r,h.width=i,h.height=a,h.r=d,p.dirtyShape()}if(u){var g=p.style;g.fill=o||null,g.fillOpacity=Y(e.fillOpacity,1)}else if(l){m=this._getOrCreateChild(Km),m.onload=function(){f.dirtyStyle()};var _=m.style;_.image=o.image,_.x=n,_.y=r,_.width=i,_.height=a}if(s&&c){var g=p.style;g.lineWidth=s,g.stroke=c,g.strokeOpacity=Y(e.strokeOpacity,1),g.lineDash=e.borderDash,g.lineDashOffset=e.borderDashOffset||0,p.strokeContainThreshold=0,p.hasFill()&&p.hasStroke()&&(g.strokeFirst=!0,g.lineWidth*=2)}var v=(p||m).style;v.shadowBlur=e.shadowBlur||0,v.shadowColor=e.shadowColor||`transparent`,v.shadowOffsetX=e.shadowOffsetX||0,v.shadowOffsetY=e.shadowOffsetY||0,v.opacity=Xc(e.opacity,t.opacity,1)},t.makeFont=function(e){var t=``;return dh(e)&&(t=[e.fontStyle,e.fontWeight,lh(e.fontSize),e.fontFamily||`sans-serif`].join(` `)),t&&el(t)||e.textFont||e.font},t}(Np),oh={left:!0,right:1,center:1},sh={top:1,bottom:1,middle:1},ch=[`fontStyle`,`fontWeight`,`fontSize`,`fontFamily`];function lh(e){return typeof e==`string`&&(e.indexOf(`px`)!==-1||e.indexOf(`rem`)!==-1||e.indexOf(`em`)!==-1)?e:isNaN(+e)?`12px`:e+`px`}function uh(e,t){for(var n=0;n0){if(e<=i)return o;if(e>=a)return s}else if(e>=i)return o;else if(e<=a)return s}else{if(e===i)return o;if(e===a)return s}return(e-i)/c*l+o}var Ph=Fh;function Fh(e,t,n){switch(e){case`center`:case`middle`:e=`50%`;break;case`left`:case`top`:e=`0%`;break;case`right`:case`bottom`:e=`100%`}return Ih(e,t,n)}function Ih(e,t,n){return J(e)?Lh(e)?parseFloat(e)/100*t+(n||0):parseFloat(e):e==null?NaN:+e}function Lh(e){return!!xh(e).match(/%$/)}function Rh(e,t,n){return isNaN(t)?n?``+e:+e:(t=Sh(Ch(0,t),bh),e=(+e).toFixed(t),n?e:+e)}function zh(e){return e.sort(function(e,t){return e-t}),e}function Bh(e){if(e=+e,isNaN(e))return 0;if(e>1e-14){for(var t=1,n=0;n<15;n++,t*=10)if(Th(e*t)/t===e)return n}return Vh(e)}function Vh(e){var t=e.toString().toLowerCase(),n=t.indexOf(`e`),r=n>0?+t.slice(n+1):0,i=n>0?n:t.length,a=t.indexOf(`.`);return Ch(0,(a<0?0:i-1-a)-r)}function Hh(e,t,n){var r=wh(e[1]-e[0]);if(!isFinite(r)||r===0)return NaN;var i=kh(2*wh(n||1)*wh(r))/Ah,a=kh(wh(t))/Ah,o=Ch(0,Dh(-i+a));return isFinite(o)||(o=NaN),o}function Uh(e,t){var n=Ch(Bh(e),Bh(t)),r=e+t;return n>bh?r:Rh(r,n)}var Wh=Oh(2,53)-1;function Gh(e){var t=jh*2;return(e%t+t)%t}function Kh(e){return e>-yh&&e=10&&t++,t}function Zh(e,t){var n=Xh(e),r=Oh(10,n),i=e/r;return e=(t===2?1:t?i<1.5?1:i<2.5?2:i<4?3:i<7?5:10:i<1?1:i<2?2:i<3?3:i<5?5:10)*r,Rh(e,-n)}function Qh(e){e.sort(function(e,t){return s(e,t,0)?-1:1});for(var t=-1/0,n=1,r=0;r0?e.length:0),this.item=null,this.key=NaN,this},e.prototype.next=function(){return(this._step>0?this._idx=this._end)&&(this.item=this._list[this._idx],this.key=this._idx+=this._step,!0)},e})();function Jg(){return[1/0,-1/0]}function Yg(e,t){$g(t)&&(te[1]&&(e[1]=t))}function Xg(e,t){$g(t)&&te[1]&&(e[1]=t)}function Qg(e,t){e_(t[0],t[1])&&(t[0]e[1]&&(e[1]=t[1]))}function $g(e){return e!=null&&isFinite(e)}function e_(e,t){return $g(e)&&$g(t)&&e<=t}function t_(e){var t=e[1]-e[0];return isFinite(t)&&t>=0}function n_(e){e_(e[0],e[1])&&e[0]>e[1]&&(e[0]=e[1])}function r_(){var e=`__ec_once_`+i_++;return function(t,n){Z(t,e)||(t[e]=1,n())}}var i_=tg();function a_(e,t,n){var r=X(),i=0;W(e,function(a){var o=t(a),s=r.get(o)||0;n&&n(a,s),!s&&!n&&(e[i++]=a),r.set(o,s+1)}),n||(e.length=i)}function o_(e){return e.value+``}function s_(e){return e+``}function c_(e,t){return Y(t,!0)?e.seriesIndex+2:0}function l_(e,t,n){var r=e.getData().count();return{progressiveRender:n.progressiveEnabled&&t.incrementalPrepareRender&&r>=n.threshold,large:e.get(`large`)&&r>=e.get(`largeThreshold`),modDataCount:e.get(`progressiveChunkMode`)===`mod`?e.getData().count():null}}function u_(e){return{overallReset:e}}var d_=Ig(),f_=function(e,t,n,r){if(r){var i=d_(r);i.dataIndex=n,i.dataType=t,i.seriesIndex=e,i.ssrType=`chart`,r.type===`group`&&r.traverse(function(r){var i=d_(r);i.seriesIndex=e,i.dataIndex=n,i.dataType=t,i.ssrType=`chart`})}},p_=X([`tooltip`,`label`,`itemName`,`itemId`,`itemGroupId`,`itemChildGroupId`,`seriesName`]),m_=`original`,h_=`arrayRows`,g_=`objectRows`,__=`keyedColumns`,v_=`typedArray`,y_=`unknown`,b_=`column`,x_=[`getDom`,`getZr`,`getWidth`,`getHeight`,`getDevicePixelRatio`,`dispatchAction`,`isSSR`,`isDisposed`,`on`,`off`,`getDataURL`,`getConnectedDataURL`,`getOption`,`getId`,`updateLabelLayout`],S_=function(){function e(e){W(x_,function(t){this[t]=K(e[t],e)},this)}return e}();function C_(e,t){return t.mainType===`series`?e.getViewOfSeriesModel(t):e.getViewOfComponentModel(t)}var w_=1,T_={},E_=Ig(),D_=Ig(),O_=[`emphasis`,`blur`,`select`],k_=[`normal`,`emphasis`,`blur`,`select`],A_=`highlight`,j_=`downplay`,M_=`select`,N_=`unselect`,P_=`toggleSelect`,F_=`selectchanged`;function I_(e){return e!=null&&e!==`none`}function L_(e,t,n){e.onHoverStateChange&&(e.hoverState||0)!==n&&e.onHoverStateChange(t),e.hoverState=n}function R_(e){L_(e,`emphasis`,2)}function z_(e){e.hoverState===2&&L_(e,`normal`,0)}function B_(e){L_(e,`blur`,1)}function V_(e){e.hoverState===1&&L_(e,`normal`,0)}function H_(e){e.selected=!0}function U_(e){e.selected=!1}function W_(e,t,n){t(e,n)}function G_(e,t,n){W_(e,t,n),e.isGroup&&e.traverse(function(e){W_(e,t,n)})}function K_(e,t){switch(t){case`emphasis`:e.hoverState=2;break;case`normal`:e.hoverState=0;break;case`blur`:e.hoverState=1;break;case`select`:e.selected=!0}}function q_(e,t,n,r){for(var i=e.style,a={},o=0;o=0,a=!1;if(e instanceof Bm){var o=E_(e),s=i&&o.selectFill||o.normalFill,c=i&&o.selectStroke||o.normalStroke;if(I_(s)||I_(c)){r||={};var l=r.style||{};l.fill===`inherit`?(a=!0,r=U({},r),l=U({},l),l.fill=s):!I_(l.fill)&&I_(s)?(a=!0,r=U({},r),l=U({},l),l.fill=Mf(s)):!I_(l.stroke)&&I_(c)&&(a||(r=U({},r),l=U({},l)),l.stroke=Mf(c)),r.style=l}}if(r&&r.z2==null){a||(r=U({},r));var u=e.z2EmphasisLift;r.z2=e.z2+(u??10)}return r}function Y_(e,t,n){if(n&&n.z2==null){n=U({},n);var r=e.z2SelectLift;n.z2=e.z2+(r??9)}return n}function X_(e,t,n){var r=kc(e.currentStates,t)>=0,i=e.style.opacity,a=r?null:q_(e,[`opacity`],t,{opacity:1});n||={};var o=n.style||{};return o.opacity??(n=U({},n),o=U({opacity:r?i:a.opacity*.1},o),n.style=o),n}function Z_(e,t){var n=this.states[e];if(this.style){if(e===`emphasis`)return J_(this,e,t,n);if(e===`blur`)return X_(this,e,n);if(e===`select`)return Y_(this,e,n)}return n}function Q_(e){e.stateProxy=Z_;var t=e.getTextContent(),n=e.getTextGuideLine();t&&(t.stateProxy=Z_),n&&(n.stateProxy=Z_)}function $_(e,t){!sv(e,t)&&!e.__highByOuter&&G_(e,R_)}function ev(e,t){!sv(e,t)&&!e.__highByOuter&&G_(e,z_)}function tv(e,t){e.__highByOuter|=1<<(t||0),G_(e,R_)}function nv(e,t){!(e.__highByOuter&=~(1<<(t||0)))&&G_(e,z_)}function rv(e){G_(e,B_)}function iv(e){G_(e,V_)}function av(e){G_(e,H_)}function ov(e){G_(e,U_)}function sv(e,t){return e.__highDownSilentOnTouch&&t.zrByTouch}function cv(e){var t=e.getModel(),n=[],r=[];t.eachComponent(function(t,i){var a=D_(i),o=C_(e,i),s=t===`series`;!s&&r.push(o),a.isBlured&&(o.group.traverse(function(e){V_(e)}),s&&n.push(i)),a.isBlured=!1}),W(r,function(e){e&&e.toggleBlurSeries&&e.toggleBlurSeries(n,!1,t)})}function lv(e,t,n,r){var i=r.getModel();n||=`coordinateSystem`;function a(e,t){for(var n=0;n0){var a={dataIndex:i,seriesIndex:e.seriesIndex};r!=null&&(a.dataType=r),t.push(a)}})}),t}function vv(e,t,n){Tv(e,!0),G_(e,Q_),xv(e,t,n)}function yv(e){Tv(e,!1)}function bv(e,t,n,r){r?yv(e):vv(e,t,n)}function xv(e,t,n){var r=d_(e);t==null?r.focus&&=null:(r.focus=t,r.blurScope=n)}var Sv=[`emphasis`,`blur`,`select`],Cv={itemStyle:`getItemStyle`,lineStyle:`getLineStyle`,areaStyle:`getAreaStyle`};function wv(e,t,n,r){n||=`itemStyle`;for(var i=0;i1&&(o*=Iv(m),s*=Iv(m));var h=(i===a?-1:1)*Iv((o*o*(s*s)-o*o*(p*p)-s*s*(f*f))/(o*o*(p*p)+s*s*(f*f)))||0,g=h*o*p/s,_=h*-s*f/o,v=(e+n)/2+Rv(d)*g-Lv(d)*_,y=(t+r)/2+Lv(d)*g+Rv(d)*_,b=Hv([1,0],[(f-g)/o,(p-_)/s]),x=[(f-g)/o,(p-_)/s],S=[(-1*f-g)/o,(-1*p-_)/s],C=Hv(x,S);if(Vv(x,S)<=-1&&(C=zv),Vv(x,S)>=1&&(C=0),C<0){var w=Math.round(C/zv*1e6)/1e6;C=zv*2+w%2*zv}u.addData(l,v,y,o,s,b,C,d,a)}var Wv=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,Gv=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;function Kv(e){var t=new hm;if(!e)return t;var n=0,r=0,i=n,a=r,o,s=hm.CMD,c=e.match(Wv);if(!c)return t;for(var l=0;l=0&&(n.splice(r,0,e),this._doAdd(e))}return this},t.prototype.replace=function(e,t){var n=kc(this._children,e);return n>=0&&this.replaceAt(t,n),this},t.prototype.replaceAt=function(e,t){var n=this._children,r=n[t];if(e&&e!==this&&e.parent!==this&&e!==r){n[t]=e,r.parent=null;var i=this.__zr;i&&r.removeSelfFromZr(i),this._doAdd(e)}return this},t.prototype._doAdd=function(e){e.parent&&e.parent.remove(e),e.parent=this;var t=this.__zr;t&&t!==e.__zr&&e.addSelfToZr(t),t&&t.refresh()},t.prototype.remove=function(e){var t=this.__zr,n=this._children,r=kc(n,e);return r<0?this:(n.splice(r,1),e.parent=null,t&&e.removeSelfFromZr(t),t&&t.refresh(),this)},t.prototype.removeAll=function(){for(var e=this._children,t=this.__zr,n=0;nA*A+j*j&&(w=E,T=D),{cx:w,cy:T,x0:-u,y0:-d,x1:w*(i/x-1),y1:T*(i/x-1)}}function _y(e){var t;if(q(e)){var n=e.length;if(!n)return e;t=n===1?[e[0],e[0],0,0]:n===2?[e[0],e[0],e[1],e[1]]:n===3?e.concat(e[2]):e}else t=[e,e,e,e];return t}function vy(e,t){var n,r=fy(t.r,0),i=fy(t.r0||0,0),a=r>0;if(a||i>0){if(a||(r=i,i=0),i>r){var o=r;r=i,i=o}var s=t.startAngle,c=t.endAngle;if(!(isNaN(s)||isNaN(c))){var l=t.cx,u=t.cy,d=!!t.clockwise,f=uy(c-s),p=f>ay&&f%ay;if(p>my&&(f=p),!(r>my))e.moveTo(l,u);else if(f>ay-my)e.moveTo(l+r*sy(s),u+r*oy(s)),e.arc(l,u,r,s,c,!d),i>my&&(e.moveTo(l+i*sy(c),u+i*oy(c)),e.arc(l,u,i,c,s,d));else{var m=void 0,h=void 0,g=void 0,_=void 0,v=void 0,y=void 0,b=void 0,x=void 0,S=void 0,C=void 0,w=void 0,T=void 0,E=void 0,D=void 0,O=void 0,k=void 0,A=r*sy(s),j=r*oy(s),M=i*sy(c),N=i*oy(c),P=f>my;if(P){var F=t.cornerRadius;F&&(n=_y(F),m=n[0],h=n[1],g=n[2],_=n[3]);var I=uy(r-i)/2;if(v=py(I,g),y=py(I,_),b=py(I,m),x=py(I,h),w=S=fy(v,y),T=C=fy(b,x),(S>my||C>my)&&(E=r*sy(c),D=r*oy(c),O=i*sy(s),k=i*oy(s),fmy){var ae=py(g,w),oe=py(_,w),z=gy(O,k,A,j,r,ae,d),se=gy(E,D,M,N,r,oe,d);e.moveTo(l+z.cx+z.x0,u+z.cy+z.y0),w0&&e.arc(l+z.cx,u+z.cy,ae,ly(z.y0,z.x0),ly(z.y1,z.x1),!d),e.arc(l,u,r,ly(z.cy+z.y1,z.cx+z.x1),ly(se.cy+se.y1,se.cx+se.x1),!d),oe>0&&e.arc(l+se.cx,u+se.cy,oe,ly(se.y1,se.x1),ly(se.y0,se.x0),!d))}else e.moveTo(l+A,u+j),e.arc(l,u,r,s,c,!d);if(!(i>my)||!P)e.lineTo(l+M,u+N);else if(T>my){var ae=py(m,T),oe=py(h,T),z=gy(M,N,E,D,i,-oe,d),se=gy(A,j,O,k,i,-ae,d);e.lineTo(l+z.cx+z.x0,u+z.cy+z.y0),T0&&e.arc(l+z.cx,u+z.cy,oe,ly(z.y0,z.x0),ly(z.y1,z.x1),!d),e.arc(l,u,i,ly(z.cy+z.y1,z.cx+z.x1),ly(se.cy+se.y1,se.cx+se.x1),d),ae>0&&e.arc(l+se.cx,u+se.cy,ae,ly(se.y1,se.x1),ly(se.y0,se.x0),!d))}else e.lineTo(l+M,u+N),e.arc(l,u,i,c,s,d)}e.closePath()}}}var yy=function(){function e(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=Math.PI*2,this.clockwise=!0,this.cornerRadius=0}return e}(),by=function(e){H(t,e);function t(t){return e.call(this,t)||this}return t.prototype.getDefaultShape=function(){return new yy},t.prototype.buildPath=function(e,t){vy(e,t)},t.prototype.isZeroArea=function(){return this.shape.startAngle===this.shape.endAngle||this.shape.r===this.shape.r0},t}(Bm);by.prototype.type=`sector`;var xy=function(){function e(){this.cx=0,this.cy=0,this.r=0,this.r0=0}return e}(),Sy=function(e){H(t,e);function t(t){return e.call(this,t)||this}return t.prototype.getDefaultShape=function(){return new xy},t.prototype.buildPath=function(e,t){var n=t.cx,r=t.cy,i=Math.PI*2;e.moveTo(n+t.r,r),e.arc(n,r,t.r,0,i,!1),e.moveTo(n+t.r0,r),e.arc(n,r,t.r0,0,i,!0)},t}(Bm);Sy.prototype.type=`ring`;function Cy(e,t,n,r){var i=[],a=[],o=[],s=[],c,l,u,d;if(r){u=[1/0,1/0],d=[-1/0,-1/0];for(var f=0,p=e.length;f=2){if(r){var a=Cy(i,r,n,t.smoothConstraint);e.moveTo(i[0][0],i[0][1]);for(var o=i.length,s=0;s<(n?o:o-1);s++){var c=a[s*2],l=a[s*2+1],u=i[(s+1)%o];e.bezierCurveTo(c[0],c[1],l[0],l[1],u[0],u[1])}}else{e.moveTo(i[0][0],i[0][1]);for(var s=1,d=i.length;sKy[1]){if(i=!1,qy.negativeSize||n)return i;var s=Wy(Ky[0]-Gy[1]),c=Wy(Gy[0]-Ky[1]);Hy(s,c)>Yy.len()&&(s=c||!qy.bidirectional)&&(fu.scale(Jy,o,-c*r),qy.useDir&&qy.calcDirMTV()))}}return i},e.prototype._getProjMinMaxOnAxis=function(e,t,n){for(var r=this._axes[e],i=this._origin,a=t[0].dot(r)+i[e],o=a,s=a,c=1;c0){var d=u.duration,f=u.delay,p=u.easing,m={duration:d,delay:f||0,easing:p,done:a,force:!!a||!!o,setToFinal:!l,scope:e,during:o};s?t.animateFrom(n,m):t.animateTo(n,m)}else t.stopAnimation(),!s&&t.attr(n),o&&o(1),a&&a()}function nb(e,t,n,r,i,a){tb(`update`,e,t,n,r,i,a)}function rb(e,t,n,r,i,a){tb(`enter`,e,t,n,r,i,a)}function ib(e){if(!e.__zr)return!0;for(var t=0;tLy,BezierCurve:()=>Fy,BoundingRect:()=>Eu,Circle:()=>ty,CompoundPath:()=>Ry,Ellipse:()=>ry,Group:()=>$v,HOVER_LAYER_FOR_INCREMENTAL:()=>2,HOVER_LAYER_FROM_THRESHOLD:()=>1,HOVER_LAYER_NO:()=>0,Image:()=>Km,IncrementalDisplayable:()=>Qy,Line:()=>jy,LinearGradient:()=>By,OrientedBoundingRect:()=>Xy,Path:()=>Bm,Point:()=>fu,Polygon:()=>Ey,Polyline:()=>Oy,RadialGradient:()=>Vy,Rect:()=>eh,Ring:()=>Sy,Sector:()=>by,Text:()=>ah,WH:()=>fb,XY:()=>db,applyTransform:()=>Db,calcZ2Range:()=>Xb,clipPointsByRect:()=>Mb,clipRectByRect:()=>Nb,createIcon:()=>Pb,decomposeTransform:()=>ex,ensureCopyRect:()=>qb,ensureCopyTransform:()=>Jb,expandOrShrinkRect:()=>zb,extendPath:()=>hb,extendShape:()=>pb,getCurrentCanvasPainter:()=>nx,getShapeClass:()=>_b,getTransform:()=>Eb,groupTransition:()=>jb,initProps:()=>rb,isBoundingRectAxisAligned:()=>Gb,isElementRemoved:()=>ib,lineLineIntersect:()=>Ib,linePolygonIntersect:()=>Fb,makeImage:()=>yb,makePath:()=>vb,mergePath:()=>xb,payloadDisableAnimation:()=>$b,registerShape:()=>gb,removeElement:()=>ab,removeElementWithFadeOut:()=>sb,resizePath:()=>Sb,retrieveZInfo:()=>Yb,setTooltipConfig:()=>Hb,subPixelOptimize:()=>Tb,subPixelOptimizeLine:()=>Cb,subPixelOptimizeRect:()=>wb,transformDirection:()=>Ob,traverseElements:()=>Wb,traverseUpdateZ:()=>Zb,updateProps:()=>nb}),ub={},db=[`x`,`y`],fb=[`width`,`height`];function pb(e){return Bm.extend(e)}var mb=Zv;function hb(e,t){return mb(e,t)}function gb(e,t){ub[e]=t}function _b(e){if(ub.hasOwnProperty(e))return ub[e]}function vb(e,t,n,r){var i=Xv(e,t);return n&&(r===`center`&&(n=bb(n,i.getBoundingRect())),Sb(i,n)),i}function yb(e,t,n){var r=new Km({style:{image:e,x:t.x,y:t.y,width:t.width,height:t.height},onload:function(e){if(n===`center`){var i={width:e.width,height:e.height};r.setStyle(bb(t,i))}}});return r}function bb(e,t){var n=t.width/t.height,r=e.height*n,i;r<=e.width?i=e.height:(r=e.width,i=r/n);var a=e.x+e.width/2,o=e.y+e.height/2;return{x:a-r/2,y:o-i/2,width:r,height:i}}var xb=Qv;function Sb(e,t){if(e.applyTransform){var n=e.getBoundingRect().calculateTransform(t);e.applyTransform(n)}}function Cb(e,t){return Ym(e,e,{lineWidth:t}),e}function wb(e,t){return Xm(e,e,t),e}var Tb=Zm;function Eb(e,t){for(var n=Hl([]);e&&e!==t;)Wl(n,e.getLocalTransform(),n),e=e.parent;return n}function Db(e,t,n){return t&&!Mc(t)&&(t=Dd.getLocalTransform(t)),n&&(t=Jl([],t)),lu([],e,t)}function Ob(e,t,n){var r=t[4]===0||t[5]===0||t[0]===0?1:wh(2*t[4]/t[0]),i=t[4]===0||t[5]===0||t[2]===0?1:wh(2*t[4]/t[2]),a=[e===`left`?-r:e===`right`?r:0,e===`top`?-i:e===`bottom`?i:0];return a=Db(a,t,n),wh(a[0])>wh(a[1])?a[0]>0?`right`:`left`:a[1]>0?`bottom`:`top`}function kb(e){return!e.isGroup}function Ab(e){return e.shape!=null}function jb(e,t,n){if(!e||!t)return;function r(e){var t={};return e.traverse(function(e){kb(e)&&e.anid&&(t[e.anid]=e)}),t}function i(e){var t={x:e.x,y:e.y,rotation:e.rotation};return Ab(e)&&(t.shape=wc(e.shape)),t}var a=r(e);t.traverse(function(e){if(kb(e)&&e.anid){var t=a[e.anid];if(t){var r=i(e);e.attr(i(t)),nb(e,r,n,d_(e).dataIndex)}}})}function Mb(e,t){return G(e,function(e){var n=e[0];n=Ch(n,t.x),n=Sh(n,t.x+t.width);var r=e[1];return r=Ch(r,t.y),r=Sh(r,t.y+t.height),[n,r]})}function Nb(e,t){var n=Ch(e.x,t.x),r=Sh(e.x+e.width,t.x+t.width),i=Ch(e.y,t.y),a=Sh(e.y+e.height,t.y+t.height);if(r>=n&&a>=i)return{x:n,y:i,width:r-n,height:a-i}}function Pb(e,t,n){var r=U({rectHover:!0},t),i=r.style={strokeNoScale:!0};if(n||={x:-1,y:-1,width:2,height:2},e)return e.indexOf(`image://`)===0?(i.image=e.slice(8),Oc(i,n),new Km(r)):vb(e.replace(`path://`,``),r,n,`center`)}function Fb(e,t,n,r,i){for(var a=0,o=i[i.length-1];a1)return!1;var g=Lb(p,m,u,d)/f;return!(g<0||g>1)}function Lb(e,t,n,r){return e*r-n*t}function Rb(e){return e<=1e-6&&e>=-1e-6}function zb(e,t,n,r,i){return t==null?e:(Vc(t)?Bb[0]=Bb[1]=Bb[2]=Bb[3]=t:(Bb[0]=t[0],Bb[1]=t[1],Bb[2]=t[2],Bb[3]=t[3]),r&&(Bb[0]=Ch(0,Bb[0]),Bb[1]=Ch(0,Bb[1]),Bb[2]=Ch(0,Bb[2]),Bb[3]=Ch(0,Bb[3])),n&&(Bb[0]=-Bb[0],Bb[1]=-Bb[1],Bb[2]=-Bb[2],Bb[3]=-Bb[3]),Vb(e,Bb,`x`,`width`,3,1,i&&i[0]||0),Vb(e,Bb,`y`,`height`,0,2,i&&i[1]||0),e)}var Bb=[0,0,0,0];function Vb(e,t,n,r,i,a,o){var s=t[a]+t[i],c=e[r];e[r]+=s,o=Ch(0,Sh(o,c)),e[r]=0?-t[i]:t[a]>=0?c+t[a]:wh(s)>1e-8?(c-o)*t[i]/s:0):e[n]-=t[i]}function Hb(e){var t=e.itemTooltipOption,n=e.componentModel,r=e.itemName,i=J(t)?{formatter:t}:t,a=n.mainType,o=n.componentIndex,s={componentType:a,name:r,$vars:[`name`]};s[a+`Index`]=o;var c=e.formatterParamsExtra;c&&W(Ic(c),function(e){Z(s,e)||(s[e]=c[e],s.$vars.push(e))});var l=d_(e.el);l.componentMainType=a,l.componentIndex=o,l.tooltipConfig={name:r,option:Oc({content:r,encodeHTMLContent:!0,formatterParams:s},i)}}function Ub(e,t){var n;e.isGroup&&(n=t(e)),n||e.traverse(t)}function Wb(e,t){if(e){if(q(e))for(var n=0;nt&&(t=r),rt&&(n=t=0),{min:n,max:t}}function Zb(e,t,n){Qb(e,t,n,-1/0)}function Qb(e,t,n,r){if(e.ignoreModelZ)return r;var i=e.getTextContent(),a=e.getTextGuideLine();if(e.isGroup)for(var o=e.childrenRef(),s=0;s1){var l=s.shift();s.length===1&&(n[o]=s[0]),this._update&&this._update(l,a)}else c===1?(n[o]=null,this._update&&this._update(s,a)):this._remove&&this._remove(a)}this._performRestAdd(i,n)},e.prototype._executeMultiple=function(){var e=this._old,t=this._new,n={},r={},i=[],a=[];this._initIndexMap(e,n,i,`_oldKeyGetter`),this._initIndexMap(t,r,a,`_newKeyGetter`);for(var o=0;o1&&d===1)this._updateManyToOne&&this._updateManyToOne(l,c),r[s]=null;else if(u===1&&d>1)this._updateOneToMany&&this._updateOneToMany(l,c),r[s]=null;else if(u===1&&d===1)this._update&&this._update(l,c),r[s]=null;else if(u>1&&d>1)this._updateManyToMany&&this._updateManyToMany(l,c),r[s]=null;else if(u>1)for(var f=0;f1)for(var o=0;ol&&(l=p)}s[0]=c,s[1]=l}},r=function(){return this._data?this._data.length/this._dimSize:0};iS=(e={},e[h_+`_`+b_]={pure:!0,appendData:i},e[h_+`_row`]={pure:!0,appendData:function(){throw Error(`Do not support appendData when set seriesLayoutBy: "row".`)}},e[g_]={pure:!0,appendData:i},e[__]={pure:!0,appendData:function(e){var t=this._data;W(e,function(e,n){for(var r=t[n]||(t[n]=[]),i=0;i<(e||[]).length;i++)r.push(e[i])})}},e[m_]={appendData:i},e[v_]={persistent:!1,pure:!0,appendData:function(e){this._data=e},clean:function(){this._offset+=this.count(),this._data=null}},e);function i(e){for(var t=0;tt},gte:function(e,t){return e>=t}};(function(){function e(e,t){Vc(t)||ug(``),this._opFn=ES[e],this._rvalFloat=$h(t)}return e.prototype.evaluate=function(e){return Vc(e)?this._opFn(e,this._rvalFloat):this._opFn($h(e),this._rvalFloat)},e})();var DS=function(){function e(e,t){var n=e===`desc`;this._resultLT=n?1:-1,t??=n?`min`:`max`,this._incomparable=t===`min`?-1/0:1/0}return e.prototype.evaluate=function(e,t){var n=Vc(e)?e:$h(e),r=Vc(t)?t:$h(t),i=isNaN(n),a=isNaN(r);if(i&&(n=this._incomparable),a&&(r=this._incomparable),i&&a){var o=J(e),s=J(t);o&&(n=s?e:0),s&&(r=o?t:0)}return nr?-this._resultLT:0},e}();(function(){function e(e,t){this._rval=t,this._isEQ=e,this._rvalTypeof=typeof t,this._rvalFloat=$h(t)}return e.prototype.evaluate=function(e){var t=e===this._rval;if(!t){var n=typeof e;n!==this._rvalTypeof&&(n===`number`||this._rvalTypeof===`number`)&&(t=$h(e)===this._rvalFloat)}return this._isEQ?t:!t},e})();function OS(e){var t=``,n=-1/0,r=-1/0,i=1/0,a=1/0;return e&&(e.g!=null&&(t+=`G`+e.g,n=e.g),e.ge!=null&&(t+=`GE`+e.ge,r=e.ge),e.l!=null&&(t+=`L`+e.l,i=e.l),e.le!=null&&(t+=`LE`+e.le,a=e.le)),{key:t,g:n,ge:r,l:i,le:a}}function kS(e,t){return t>e.g&&t>=e.ge&&t`u`?Array:Uint32Array,jS=typeof Uint16Array>`u`?Array:Uint16Array,MS=typeof Int32Array>`u`?Array:Int32Array,NS=typeof Float64Array>`u`?Array:Float64Array,PS={float:NS,int:MS,ordinal:Array,number:Array,time:NS},FS;function IS(e){return e>65535?AS:jS}function LS(e){var t=e.constructor;return t===Array?e.slice():new t(e)}function RS(e,t,n,r,i){var a=PS[n||`float`];if(i){var o=e[t],s=o&&o.length;if(s!==r){for(var c=new a(r),l=0;lh[1]&&(h[1]=m)}return this._rawCount=this._count=s,{start:o,end:s}},e.prototype._initDataFromProvider=function(e,t,n){for(var r=this._provider,i=this._chunks,a=this._dimensions,o=a.length,s=this._rawExtent,c=G(a,function(e){return e.property}),l=0;lg[1]&&(g[1]=h)}}!r.persistent&&r.clean&&r.clean(),this._rawCount=this._count=t,this._extent=[]},e.prototype.count=function(){return this._count},e.prototype.get=function(e,t){if(!(t>=0&&t=0&&t=this._rawCount||e<0)return-1;if(!this._indices)return e;var t=this._indices,n=t[e];if(n!=null&&ne)i=a-1;else return a}return-1},e.prototype.getIndices=function(){var e,t=this._indices;if(t){var n=t.constructor,r=this._count;if(n===Array){e=new n(r);for(var i=0;i=l&&g<=u||isNaN(g))&&(o[s++]=p),p++}f=!0}else if(i===2){for(var m=d[r[0]],_=d[r[1]],v=e[r[1]][0],y=e[r[1]][1],h=0;h=l&&g<=u||isNaN(g))&&(b>=v&&b<=y||isNaN(b))&&(o[s++]=p),p++}f=!0}}if(!f){if(i===1)for(var h=0;h=l&&g<=u||isNaN(g))&&(o[s++]=x)}else for(var h=0;he[w][1])&&(S=!1)}S&&(o[s++]=t.getRawIndex(h))}}return sg[1]&&(g[1]=h)}}}},e.prototype.lttbDownSample=function(e,t){var n=this.clone([e],!0),r=n._chunks[e],i=this.count(),a=0,o=Math.floor(1/t),s=this.getRawIndex(0),c,l,u,d=new(IS(this._rawCount))(Math.min((Math.ceil(i/o)+2)*2,i));d[a++]=s;for(var f=1;fc&&(c=l,u=v)}T>0&&To&&(m=o-l);for(var h=0;hp&&(p=g,f=l+h)}var _=this.getRawIndex(u),v=this.getRawIndex(f);ul-p&&(s=l-p,o.length=s);for(var m=0;mu[1]&&(u[1]=g),d[f++]=_}return i._count=f,i._indices=d,i._updateGetRawIdx(),i},e.prototype.each=function(e,t){if(this._count)for(var n=e.length,r=this._chunks,i=0,a=this.count();id&&(d=p))}return o[c]=[u,d]},e.prototype.getRawDataItem=function(e){var t=this.getRawIndex(e);if(this._provider.persistent)return this._provider.getItem(t);for(var n=[],r=this._chunks,i=0;i=0?this._indices[e]:-1},e.prototype._updateGetRawIdx=function(){this.getRawIndex=this._indices?this._getRawIdx:this._getRawIdxIdentity},e.internalField=function(){function e(e,t,n,r){return TS(e[r],this._dimensions[r])}FS={arrayRows:e,objectRows:function(e,t,n,r){return TS(e[t],this._dimensions[r])},keyedColumns:e,original:function(e,t,n,r){var i=e&&(e.value==null?e:e.value);return TS(i instanceof Array?i[r]:i,this._dimensions[r])},typedArray:function(e,t,n,r){return e[r]}}}(),e}(),BS=Ig(),VS={float:`f`,int:`i`,ordinal:`o`,number:`n`,time:`t`},HS=function(){function e(e){this.dimensions=e.dimensions,this._dimOmitted=e.dimensionOmitted,this.source=e.source,this._fullDimCount=e.fullDimensionCount,this._updateDimOmitted(e.dimensionOmitted)}return e.prototype.isDimensionOmitted=function(){return this._dimOmitted},e.prototype._updateDimOmitted=function(e){this._dimOmitted=e,e&&(this._dimNameMap||=GS(this.source))},e.prototype.getSourceDimensionIndex=function(e){return Y(this._dimNameMap.get(e),-1)},e.prototype.getSourceDimension=function(e){var t=this.source.dimensionsDefine;if(t)return t[e]},e.prototype.makeStoreSchema=function(){for(var e=this._fullDimCount,t=$x(this.source),n=!KS(e),r=``,i=[],a=0,o=0;a30}var qS=Hc,JS=G,YS=typeof Int32Array>`u`?Array:Int32Array,XS=`e\0\0`,ZS=-1,QS=[`hasItemOption`,`_nameList`,`_idList`,`_invertedIndicesMap`,`_dimSummary`,`userOutput`,`_rawData`,`_dimValueGetter`,`_nameDimIdx`,`_idDimIdx`,`_nameRepeatCount`],$S=[`_approximateExtent`],eC,tC,nC,rC,iC,aC,oC,sC=function(){function e(e,t){this.type=`list`,this._dimOmitted=!1,this._nameList=[],this._idList=[],this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._approximateExtent={},this._calculationInfo={},this.hasItemOption=!1,this.TRANSFERABLE_METHODS=[`cloneShallow`,`downSample`,`minmaxDownSample`,`lttbDownSample`,`map`],this.CHANGABLE_METHODS=[`filterSelf`,`selectRange`],this.DOWNSAMPLE_METHODS=[`downSample`,`minmaxDownSample`,`lttbDownSample`];var n,r=!1;US(e)?(n=e.dimensions,this._dimOmitted=e.isDimensionOmitted(),this._schema=e):(r=!0,n=e),n||=[`x`,`y`];for(var i={},a=[],o={},s=!1,c={},l=0;l=t)){var n=this._store.getProvider();this._updateOrdinalMeta();var r=this._nameList,i=this._idList;if(n.getSource().sourceFormat===`original`&&!n.pure)for(var a=[],o=e;o0},e.prototype.ensureUniqueItemVisual=function(e,t){var n=this._itemVisuals,r=n[e];r||=n[e]={};var i=r[t];return i??(i=this.getVisual(t),q(i)?i=i.slice():qS(i)&&(i=U({},i)),r[t]=i),i},e.prototype.setItemVisual=function(e,t,n){var r=this._itemVisuals[e]||{};this._itemVisuals[e]=r,qS(t)?U(r,t):r[t]=n},e.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},e.prototype.setLayout=function(e,t){qS(e)?U(this._layout,e):this._layout[e]=t},e.prototype.getLayout=function(e){return this._layout[e]},e.prototype.getItemLayout=function(e){return this._itemLayouts[e]},e.prototype.setItemLayout=function(e,t,n){this._itemLayouts[e]=n?U(this._itemLayouts[e]||{},t):t},e.prototype.clearItemLayouts=function(){this._itemLayouts.length=0},e.prototype.setItemGraphicEl=function(e,t){f_(this.hostModel&&this.hostModel.seriesIndex,this.dataType,e,t),this._graphicEls[e]=t},e.prototype.getItemGraphicEl=function(e){return this._graphicEls[e]},e.prototype.eachItemGraphicEl=function(e,t){W(this._graphicEls,function(n,r){n&&e&&e.call(t,n,r)})},e.prototype.cloneShallow=function(t){return t||=new e(this._schema?this._schema:JS(this.dimensions,this._getDimInfo,this),this.hostModel),iC(t,this),t._store=this._store,t},e.prototype.wrapMethod=function(e,t){var n=this[e];zc(n)&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(e),this[e]=function(){var e=n.apply(this,arguments);return t.apply(this,[e].concat(Zc(arguments)))})},e.internalField=function(){eC=function(e){var t=e._invertedIndicesMap;W(t,function(n,r){var i=e._dimInfos[r],a=i.ordinalMeta,o=e._store;if(a){n=t[r]=new YS(a.categories.length);for(var s=0;s1&&(s+=`__ec__`+l),r[t]=s}}}(),e}();function cC(e,t){Wx(e)||(e=Kx(e)),t||={};var n=t.coordDimensions||[],r=t.dimensionsDefine||e.dimensionsDefine||[],i=X(),a=[],o=lC(e,n,r,t.dimensionsCount),s=t.canOmitUnusedDimensions&&KS(o),c=r===e.dimensionsDefine,l=c?GS(e):WS(r),u=t.encodeDefine;!u&&t.encodeDefaulter&&(u=t.encodeDefaulter(e,o));for(var d=X(u),f=new MS(o),p=0;p0&&(e.name+=t-1)}),new HS({source:e,dimensions:a,fullDimensionCount:o,dimensionOmitted:s})}function lC(e,t,n,r){var i=Math.max(e.dimensionsDetectedCount||1,t.length,n.length,r||0);return W(t,function(e){var t;Hc(e)&&(t=e.dimsDef)&&(i=Math.max(i,t.length))}),i}function uC(e,t,n){if(n||t.hasKey(e)){for(var r=0;t.hasKey(e+r);)r++;e+=r}return t.set(e,!0),e}var dC={},fC={},pC=function(){function e(){this._normalMasterList=[],this._nonSeriesBoxMasterList=[]}return e.prototype.create=function(e,t){this._nonSeriesBoxMasterList=n(dC,!0),this._normalMasterList=n(fC,!1);function n(n,r){var i=[];return W(n,function(n,r){var a=n.create(e,t);i=i.concat(a||[])}),i}},e.prototype.update=function(e,t){W(this._normalMasterList,function(n){n.update&&n.update(e,t)})},e.prototype.getCoordinateSystems=function(){return this._normalMasterList.concat(this._nonSeriesBoxMasterList)},e.register=function(e,t){if(e===`matrix`||e===`calendar`){dC[e]=t;return}fC[e]=t},e.get=function(e){return fC[e]||dC[e]},e}();function mC(e){return!!dC[e]}var hC=X();function gC(e){var t=e.getShallow(`coord`,!0),n=1;if(t==null){var r=hC.get(e.type);r&&r.getCoord2&&(n=2,t=r.getCoord2(e))}return{coord:t,from:n}}function _C(e,t){var n=e.getShallow(`coordinateSystem`),r=e.getShallow(`coordinateSystemUsage`,!0),i=0;if(n){var a=e.mainType===`series`;r??=a?`data`:`box`,r===`data`?(i=1,a||(i=0)):r===`box`&&(i=2,!a&&!mC(n)&&(i=0))}return{coordSysType:n,kind:i}}function vC(e){var t=e.targetModel,n=e.coordSysType,r=e.coordSysProvider,i=e.isDefaultDataCoordSys;e.allowNotFound;var a=_C(t,!0),o=a.kind,s=a.coordSysType;if(i&&o!==1&&(o=1,s=n),o===0||s!==n)return 0;var c=r(n,t);return c?(o===1?t.coordinateSystem=c:t.boxCoordinateSystem=c,o):0}var yC=function(){function e(e){this.coordSysDims=[],this.axisMap=X(),this.categoryAxisMap=X(),this.coordSysName=e}return e}();function bC(e){var t=e.get(`coordinateSystem`),n=new yC(t),r=xC[t];if(r)return r(e,n,n.axisMap,n.categoryAxisMap),n}var xC={cartesian2d:function(e,t,n,r){var i=e.getReferringComponents(`xAxis`,Bg).models[0],a=e.getReferringComponents(`yAxis`,Bg).models[0];t.coordSysDims=[`x`,`y`],n.set(`x`,i),n.set(`y`,a),SC(i)&&(r.set(`x`,i),t.firstCategoryDimIndex=0),SC(a)&&(r.set(`y`,a),t.firstCategoryDimIndex??=1)},singleAxis:function(e,t,n,r){var i=e.getReferringComponents(`singleAxis`,Bg).models[0];t.coordSysDims=[`single`],n.set(`single`,i),SC(i)&&(r.set(`single`,i),t.firstCategoryDimIndex=0)},polar:function(e,t,n,r){var i=e.getReferringComponents(`polar`,Bg).models[0],a=i.findAxisModel(`radiusAxis`),o=i.findAxisModel(`angleAxis`);t.coordSysDims=[`radius`,`angle`],n.set(`radius`,a),n.set(`angle`,o),SC(a)&&(r.set(`radius`,a),t.firstCategoryDimIndex=0),SC(o)&&(r.set(`angle`,o),t.firstCategoryDimIndex??=1)},geo:function(e,t,n,r){t.coordSysDims=[`lng`,`lat`]},parallel:function(e,t,n,r){var i=e.ecModel,a=i.getComponent(`parallel`,e.get(`parallelIndex`)),o=t.coordSysDims=a.dimensions.slice();W(a.parallelAxisIndex,function(e,a){var s=i.getComponent(`parallelAxis`,e),c=o[a];n.set(c,s),SC(s)&&(r.set(c,s),t.firstCategoryDimIndex??=a)})},matrix:function(e,t,n,r){var i=e.getReferringComponents(`matrix`,Bg).models[0];t.coordSysDims=[`x`,`y`];var a=i.getDimensionModel(`x`),o=i.getDimensionModel(`y`);n.set(`x`,a),n.set(`y`,o),r.set(`x`,a),r.set(`y`,o)}};function SC(e){return e.get(`type`)===`category`}function CC(e,t,n){n||={};var r=n.byIndex,i=n.stackedCoordDimension,a,o,s;wC(t)?a=t:(o=t.schema,a=o.dimensions,s=t.store);var c=!!(e&&e.get(`stack`)),l,u,d,f,p=!0;function m(e){return e.type!==`ordinal`&&e.type!==`time`}if(W(a,function(e,t){J(e)&&(a[t]=e={name:e}),m(e)||(p=!1)}),W(a,function(e,t){c&&!e.isExtraCoord&&(!r&&!l&&e.ordinalMeta&&(l=e),!u&&m(e)&&(!p||e.coordDim!==`x`&&e.coordDim!==`angle`)&&(!i||i===e.coordDim)&&(u=e))}),u&&!r&&!l&&(r=!0),u){d=`__\0ecstackresult_`+e.id,f=`__\0ecstackedover_`+e.id,l&&(l.createInvertedIndices=!0);var h=u.coordDim,g=u.type,_=0;W(a,function(e){e.coordDim===h&&_++});var v={name:d,coordDim:h,coordDimIndex:_,type:g,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:a.length},y={name:f,coordDim:f,coordDimIndex:_+1,type:g,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:a.length+1};o?(s&&(v.storeDimIndex=s.ensureCalculationDimension(f,g),y.storeDimIndex=s.ensureCalculationDimension(d,g)),o.appendCalculationDimension(v),o.appendCalculationDimension(y)):(a.push(v),a.push(y))}return{stackedDimension:u&&u.name,stackedByDimension:l&&l.name,isStackedByIndex:r,stackedOverDimension:f,stackResultDimension:d}}function wC(e){return!US(e.schema)}function TC(e,t){return!!t&&t===e.getCalculationInfo(`stackedDimension`)}function EC(e,t){return TC(e,t)?e.getCalculationInfo(`stackResultDimension`):t}function DC(e,t){var n=e.get(`coordinateSystem`),r=pC.get(n),i;return t&&t.coordSysDims&&(i=G(t.coordSysDims,function(e){var n={name:e},r=t.axisMap.get(e);return r&&(n.type=SS(r.get(`type`))),n})),i||=r&&(r.getDimensionsInfo?r.getDimensionsInfo():r.dimensions.slice())||[`x`,`y`],i}function OC(e,t,n){var r,i;return n&&W(e,function(e,a){var o=e.coordDim,s=n.categoryAxisMap.get(o);s&&(r??=a,e.ordinalMeta=s.getOrdinalMeta(),t&&(e.createInvertedIndices=!0)),e.otherDims.itemName!=null&&(i=!0)}),!i&&r!=null&&(e[r].otherDims.itemName=0),r}function kC(e,t,n){n||={};var r=t.getSourceManager(),i,a=!1;e?(a=!0,i=Kx(e)):(i=r.getSource(),a=i.sourceFormat===m_);var o=bC(t),s=DC(t,o),c=n.useEncodeDefaulter,l=zc(c)?c:c?Rc(Rx,s,t):null,u={coordDimensions:s,generateCoord:n.generateCoord,encodeDefine:t.getEncode(),encodeDefaulter:l,canOmitUnusedDimensions:!a},d=cC(i,u),f=OC(d.dimensions,n.createInvertedIndices,o),p=a?null:r.getSharedDataStore(d),m=CC(t,{schema:d,store:p}),h=new sC(d,t);h.setCalculationInfo(m);var g=f!=null&&AC(i)?function(e,t,n,r){return r===f?n:this.defaultDimValueGetter(e,t,n,r)}:null;return h.hasItemOption=!1,h.initData(a?i:p,null,g),h}function AC(e){if(e.sourceFormat===`original`)return!q(_g(jC(e.data||[])))}function jC(e){for(var t=0;t=0&&n.push(e)}),n}}function IC(e,t){return Tc(Tc({},e,!0),t,!0)}var LC=Math.log(2);function RC(e,t,n,r,i,a){var o=r+`-`+i,s=e.length;if(a.hasOwnProperty(o))return a[o];if(t===1){var c=Math.round(Math.log((1<>1)%2;s.cssText=[`position: absolute`,`visibility: hidden`,`padding: 0`,`margin: 0`,`border-width: 0`,`user-select: none`,`width:0`,`height:0`,r[c]+`:0`,i[l]+`:0`,r[1-c]+`:auto`,i[1-l]+`:auto`,``].join(`!important;`),e.appendChild(o),n.push(o)}return t.clearMarkers=function(){W(n,function(e){e.parentNode&&e.parentNode.removeChild(e)})},n}function KC(e,t,n){for(var r=n?`invTrans`:`trans`,i=t[r],a=t.srcCoords,o=[],s=[],c=!0,l=0;l<4;l++){var u=e[l].getBoundingClientRect(),d=2*l,f=u.left,p=u.top;o.push(f,p),c=c&&a&&f===a[d]&&p===a[d+1],s.push(e[l].offsetLeft,e[l].offsetTop)}return c&&i?i:(t.srcCoords=o,t[r]=n?zC(s,o):zC(o,s))}function qC(e){return e.nodeName.toUpperCase()===`CANVAS`}var JC=/([&<>"'])/g,YC={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`};function XC(e){return e==null?``:(e+``).replace(JC,function(e,t){return YC[t]})}var ZC={time:{month:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],monthAbbr:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],dayOfWeek:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],dayOfWeekAbbr:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`]},legend:{selector:{all:`All`,inverse:`Inv`}},toolbox:{brush:{title:{rect:`Box Select`,polygon:`Lasso Select`,lineX:`Horizontally Select`,lineY:`Vertically Select`,keep:`Keep Selections`,clear:`Clear Selections`}},dataView:{title:`Data View`,lang:[`Data View`,`Close`,`Refresh`]},dataZoom:{title:{zoom:`Zoom`,back:`Zoom Reset`}},magicType:{title:{line:`Switch to Line Chart`,bar:`Switch to Bar Chart`,stack:`Stack`,tiled:`Tile`}},restore:{title:`Restore`},saveAsImage:{title:`Save as Image`,lang:[`Right Click to Save Image`]}},series:{typeNames:{pie:`Pie chart`,bar:`Bar chart`,line:`Line chart`,scatter:`Scatter plot`,effectScatter:`Ripple scatter plot`,radar:`Radar chart`,tree:`Tree`,treemap:`Treemap`,boxplot:`Boxplot`,candlestick:`Candlestick`,k:`K line chart`,heatmap:`Heat map`,map:`Map`,parallel:`Parallel coordinate map`,lines:`Line graph`,graph:`Relationship graph`,sankey:`Sankey diagram`,funnel:`Funnel chart`,gauge:`Gauge`,pictorialBar:`Pictorial bar`,themeRiver:`Theme River Map`,sunburst:`Sunburst`,custom:`Custom chart`,chart:`Chart`}},aria:{general:{withTitle:`This is a chart about "{title}"`,withoutTitle:`This is a chart`},series:{single:{prefix:``,withName:` with type {seriesType} named {seriesName}.`,withoutName:` with type {seriesType}.`},multiple:{prefix:`. It consists of {seriesCount} series count.`,withName:` The {seriesId} series is a {seriesType} representing {seriesName}.`,withoutName:` The {seriesId} series is a {seriesType}.`,separator:{middle:``,end:``}}},data:{allData:`The data is as follows: `,partialData:`The first {displayCnt} items are: `,withName:`the data for {name} is {value}`,withoutName:`{value}`,separator:{middle:`, `,end:`. `}}}},QC={time:{month:[`一月`,`二月`,`三月`,`四月`,`五月`,`六月`,`七月`,`八月`,`九月`,`十月`,`十一月`,`十二月`],monthAbbr:[`1月`,`2月`,`3月`,`4月`,`5月`,`6月`,`7月`,`8月`,`9月`,`10月`,`11月`,`12月`],dayOfWeek:[`星期日`,`星期一`,`星期二`,`星期三`,`星期四`,`星期五`,`星期六`],dayOfWeekAbbr:[`日`,`一`,`二`,`三`,`四`,`五`,`六`]},legend:{selector:{all:`全选`,inverse:`反选`}},toolbox:{brush:{title:{rect:`矩形选择`,polygon:`圈选`,lineX:`横向选择`,lineY:`纵向选择`,keep:`保持选择`,clear:`清除选择`}},dataView:{title:`数据视图`,lang:[`数据视图`,`关闭`,`刷新`]},dataZoom:{title:{zoom:`区域缩放`,back:`区域缩放还原`}},magicType:{title:{line:`切换为折线图`,bar:`切换为柱状图`,stack:`切换为堆叠`,tiled:`切换为平铺`}},restore:{title:`还原`},saveAsImage:{title:`保存为图片`,lang:[`右键另存为图片`]}},series:{typeNames:{pie:`饼图`,bar:`柱状图`,line:`折线图`,scatter:`散点图`,effectScatter:`涟漪散点图`,radar:`雷达图`,tree:`树图`,treemap:`矩形树图`,boxplot:`箱型图`,candlestick:`K线图`,k:`K线图`,heatmap:`热力图`,map:`地图`,parallel:`平行坐标图`,lines:`线图`,graph:`关系图`,sankey:`桑基图`,funnel:`漏斗图`,gauge:`仪表盘图`,pictorialBar:`象形柱图`,themeRiver:`主题河流图`,sunburst:`旭日图`,custom:`自定义图表`,chart:`图表`}},aria:{general:{withTitle:`这是一个关于“{title}”的图表。`,withoutTitle:`这是一个图表,`},series:{single:{prefix:``,withName:`图表类型是{seriesType},表示{seriesName}。`,withoutName:`图表类型是{seriesType}。`},multiple:{prefix:`它由{seriesCount}个图表系列组成。`,withName:`第{seriesId}个系列是一个表示{seriesName}的{seriesType},`,withoutName:`第{seriesId}个系列是一个{seriesType},`,separator:{middle:`;`,end:`。`}}},data:{allData:`其数据是——`,partialData:`其中,前{displayCnt}项是——`,withName:`{name}的数据是{value}`,withoutName:`{value}`,separator:{middle:`,`,end:``}}}},$C=`ZH`,ew=`EN`,tw=ew,nw={},rw={},iw=ml.domSupported?function(){return(document.documentElement.lang||navigator.language||navigator.browserLanguage||tw).toUpperCase().indexOf($C)>-1?$C:tw}():tw;function aw(e,t){e=e.toUpperCase(),rw[e]=new jx(t),nw[e]=t}function ow(e){if(J(e)){var t=nw[e.toUpperCase()]||{};return e===$C||e===ew?wc(t):Tc(wc(t),wc(nw[tw]),!1)}return Tc(wc(e),wc(nw[tw]),!1)}function sw(e){return rw[e]}function cw(){return rw[tw]}aw(ew,ZC),aw($C,QC);var lw=null;function uw(){return lw}function dw(e,t){var n=uw(),r=t.breakOption,i=t.breakParsed;return!i&&n&&(i=n.parseAxisBreakOption(r,e)),i}function fw(e){var t=e.brk;return t?t.breaks:[]}function pw(e){var t=e.brk;return t?t.hasBreaks():!1}var mw=1e3,hw=mw*60,gw=hw*60,_w=gw*24,vw=_w*365,yw={year:/({yyyy}|{yy})/,month:/({MMMM}|{MMM}|{MM}|{M})/,day:/({dd}|{d})/,hour:/({HH}|{H}|{hh}|{h})/,minute:/({mm}|{m})/,second:/({ss}|{s})/,millisecond:/({SSS}|{S})/},bw={year:`{yyyy}`,month:`{MMM}`,day:`{d}`,hour:`{HH}:{mm}`,minute:`{HH}:{mm}`,second:`{HH}:{mm}:{ss}`,millisecond:`{HH}:{mm}:{ss} {SSS}`},xw=`{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}`,Sw=`{yyyy}-{MM}-{dd}`,Cw={year:`{yyyy}`,month:`{yyyy}-{MM}`,day:Sw,hour:Sw+` `+bw.hour,minute:Sw+` `+bw.minute,second:Sw+` `+bw.second,millisecond:xw},ww=[`year`,`month`,`day`,`hour`,`minute`,`second`,`millisecond`],Tw=[`year`,`half-year`,`quarter`,`month`,`week`,`half-week`,`day`,`half-day`,`quarter-day`,`hour`,`minute`,`second`,`millisecond`];function Ew(e){return!J(e)&&!zc(e)?Dw(e):e}function Dw(e){e||={};var t={},n=!0;return W(ww,function(t){n&&=e[t]==null}),W(ww,function(r,i){var a=e[r];t[r]={};for(var o=null,s=i;s>=0;s--){var c=ww[s],l=Hc(a)&&!q(a)?a[c]:a,u=void 0;q(l)?(u=l.slice(),o=u[0]||``):J(l)?(o=l,u=[o]):(o==null?o=bw[r]:yw[c].test(o)||(o=t[c][c][0]+` `+o),u=[o],n&&(u[1]=`{primary|`+o+`}`)),t[r][c]=u}}),t}function Ow(e,t){return e+=``,`0000`.substr(0,t-e.length)+e}function kw(e){switch(e){case`half-year`:case`quarter`:return`month`;case`week`:case`half-week`:return`day`;case`half-day`:case`quarter-day`:return`hour`;default:return e}}function Aw(e){return e===kw(e)}function jw(e){switch(e){case`year`:case`month`:return`day`;case`millisecond`:return`millisecond`;default:return`second`}}function Mw(e,t,n,r){var i=Jh(e),a=i[Iw(n)](),o=i[Lw(n)]()+1,s=Math.floor((o-1)/3)+1,c=i[Rw(n)](),l=i[`get`+(n?`UTC`:``)+`Day`](),u=i[zw(n)](),d=(u-1)%12+1,f=i[Bw(n)](),p=i[Vw(n)](),m=i[Hw(n)](),h=u>=12?`pm`:`am`,g=h.toUpperCase(),_=(r instanceof jx?r:sw(r||iw)||cw()).getModel(`time`),v=_.get(`month`),y=_.get(`monthAbbr`),b=_.get(`dayOfWeek`),x=_.get(`dayOfWeekAbbr`);return(t||``).replace(/{a}/g,h+``).replace(/{A}/g,g+``).replace(/{yyyy}/g,a+``).replace(/{yy}/g,Ow(a%100+``,2)).replace(/{Q}/g,s+``).replace(/{MMMM}/g,v[o-1]).replace(/{MMM}/g,y[o-1]).replace(/{MM}/g,Ow(o,2)).replace(/{M}/g,o+``).replace(/{dd}/g,Ow(c,2)).replace(/{d}/g,c+``).replace(/{eeee}/g,b[l]).replace(/{ee}/g,x[l]).replace(/{e}/g,l+``).replace(/{HH}/g,Ow(u,2)).replace(/{H}/g,u+``).replace(/{hh}/g,Ow(d+``,2)).replace(/{h}/g,d+``).replace(/{mm}/g,Ow(f,2)).replace(/{m}/g,f+``).replace(/{ss}/g,Ow(p,2)).replace(/{s}/g,p+``).replace(/{SSS}/g,Ow(m,3)).replace(/{S}/g,m+``)}function Nw(e,t,n,r,i){var a=null;if(J(n))a=n;else if(zc(n)){var o={time:e.time,level:e.time?e.time.level:0},s=uw();s&&s.makeAxisLabelFormatterParamBreak(o,e.break),a=n(e.value,t,o)}else{var c=e.time;if(c){var l=n[c.lowerTimeUnit][c.upperTimeUnit];a=l[Math.min(c.level,l.length-1)]||``}else{var u=Pw(e.value,i);a=n[u][u][0]}}return Mw(new Date(e.value),a,i,r)}function Pw(e,t){var n=Jh(e),r=n[Lw(t)]()+1,i=n[Rw(t)](),a=n[zw(t)](),o=n[Bw(t)](),s=n[Vw(t)](),c=n[Hw(t)]()===0,l=c&&s===0,u=l&&o===0,d=u&&a===0,f=d&&i===1;return f&&r===1?`year`:f?`month`:d?`day`:u?`hour`:l?`minute`:c?`second`:`millisecond`}function Fw(e,t,n){switch(t){case`year`:e[Ww(n)](0);case`month`:e[Gw(n)](1);case`day`:e[Kw(n)](0);case`hour`:e[qw(n)](0);case`minute`:e[Jw(n)](0);case`second`:e[Yw(n)](0)}return e}function Iw(e){return e?`getUTCFullYear`:`getFullYear`}function Lw(e){return e?`getUTCMonth`:`getMonth`}function Rw(e){return e?`getUTCDate`:`getDate`}function zw(e){return e?`getUTCHours`:`getHours`}function Bw(e){return e?`getUTCMinutes`:`getMinutes`}function Vw(e){return e?`getUTCSeconds`:`getSeconds`}function Hw(e){return e?`getUTCMilliseconds`:`getMilliseconds`}function Uw(e){return e?`setUTCFullYear`:`setFullYear`}function Ww(e){return e?`setUTCMonth`:`setMonth`}function Gw(e){return e?`setUTCDate`:`setDate`}function Kw(e){return e?`setUTCHours`:`setHours`}function qw(e){return e?`setUTCMinutes`:`setMinutes`}function Jw(e){return e?`setUTCSeconds`:`setSeconds`}function Yw(e){return e?`setUTCMilliseconds`:`setMilliseconds`}function Xw(e){if(!eg(e))return J(e)?e:`-`;var t=(e+``).split(`.`);return t[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,`$1,`)+(t.length>1?`.`+t[1]:``)}function Zw(e,t){return e=(e||``).toLowerCase().replace(/-(.)/g,function(e,t){return t.toUpperCase()}),t&&e&&(e=e.charAt(0).toUpperCase()+e.slice(1)),e}var Qw=Qc;function $w(e,t,n){var r=`{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}`;function i(e){return e&&el(e)?e:`-`}function a(e){return ig(e)}var o=t===`time`,s=e instanceof Date;if(o||s){var c=o?Jh(e):e;if(!isNaN(+c))return Mw(c,r,n);if(s)return`-`}if(t===`ordinal`)return Bc(e)?i(e):Vc(e)&&a(e)?e+``:`-`;var l=$h(e);return a(l)?Xw(l):Bc(e)?i(e):typeof e==`boolean`?e+``:`-`}var eT=[`a`,`b`,`c`,`d`,`e`,`f`,`g`],tT=function(e,t){return`{`+e+(t??``)+`}`};function nT(e,t,n){q(t)||(t=[t]);var r=t.length;if(!r)return``;for(var i=t[0].$vars||[],a=0;a`:``:{renderMode:a,content:`{`+(n.markerId||`markerX`)+`|} `,style:i===`subItem`?{width:4,height:4,borderRadius:2,backgroundColor:r}:{width:10,height:10,borderRadius:5,backgroundColor:r}}:``}function iT(e,t){return t||=`transparent`,J(e)?e:Hc(e)&&e.colorStops&&(e.colorStops[0]||{}).color||t}var aT=W,oT=[`left`,`right`,`top`,`bottom`,`width`,`height`],sT=[[`width`,`left`,`right`],[`height`,`top`,`bottom`]];function cT(e,t,n,r,i){var a=0,o=0;r??=1/0,i??=1/0;var s=0;t.eachChild(function(c,l){var u=c.getBoundingRect(),d=t.childAt(l+1),f=d&&d.getBoundingRect(),p,m;if(e===`horizontal`){var h=u.width+(f?-f.x+u.x:0);p=a+h,p>r||c.newline?(a=0,p=h,o+=s+n,s=u.height):s=Math.max(s,u.height)}else{var g=u.height+(f?-f.y+u.y:0);m=o+g,m>i||c.newline?(a+=s+n,o=0,m=g,s=u.width):s=Math.max(s,u.width)}c.newline||(c.x=a,c.y=o,c.markRedraw(),e===`horizontal`?a=p+n:o=m+n)})}var lT=cT;Rc(cT,`vertical`),Rc(cT,`horizontal`);function uT(e,t){return{left:e.getShallow(`left`,t),top:e.getShallow(`top`,t),right:e.getShallow(`right`,t),bottom:e.getShallow(`bottom`,t),width:e.getShallow(`width`,t),height:e.getShallow(`height`,t)}}function dT(e,t,n){n=Qw(n||0);var r=t.width,i=t.height,a=Ph(e.left,r),o=Ph(e.top,i),s=Ph(e.right,r),c=Ph(e.bottom,i),l=Ph(e.width,r),u=Ph(e.height,i),d=n[2]+n[0],f=n[1]+n[3],p=e.aspect;switch(isNaN(l)&&(l=r-s-f-a),isNaN(u)&&(u=i-c-d-o),p!=null&&(isNaN(l)&&isNaN(u)&&(p>r/i?l=r*.8:u=i*.8),isNaN(l)&&(l=p*u),isNaN(u)&&(u=l/p)),isNaN(a)&&(a=r-s-l-f),isNaN(o)&&(o=i-c-u-d),e.left||e.right){case`center`:a=r/2-l/2-n[3];break;case`right`:a=r-l-f}switch(e.top||e.bottom){case`middle`:case`center`:o=i/2-u/2-n[0];break;case`bottom`:o=i-u-d}a||=0,o||=0,isNaN(l)&&(l=r-f-a-(s||0)),isNaN(u)&&(u=i-d-o-(c||0));var m=new Eu((t.x||0)+a+n[3],(t.y||0)+o+n[0],l,u);return m.margin=n,m}var fT={rect:1,point:2};function pT(e,t,n){var r,i,a,o=e.boxCoordinateSystem,s;if(o){var c=gC(e),l=c.coord,u=c.from;if(o.dataToLayout){a=fT.rect,s=u;var d=o.dataToLayout(l);r=d.contentRect||d.rect}else n&&n.enableLayoutOnlyByCenter&&o.dataToPoint&&(a=fT.point,s=u,i=o.dataToPoint(l))}return a??=fT.rect,a===fT.rect&&(r||={x:0,y:0,width:t.getWidth(),height:t.getHeight()},i=[r.x+r.width/2,r.y+r.height/2]),{type:a,refContainer:r,refPoint:i,boxCoordFrom:s}}function mT(e,t,n,r,i,a){var o=!i||!i.hv||i.hv[0],s=!i||!i.hv||i.hv[1],c=i&&i.boundingMode||`all`;if(a||=e,a.x=e.x,a.y=e.y,!o&&!s)return!1;var l;if(c===`raw`)l=e.type===`group`?new Eu(0,0,+t.width||0,+t.height||0):e.getBoundingRect();else if(l=e.getBoundingRect(),e.needLocalTransform()){var u=e.getLocalTransform();l=l.clone(),l.applyTransform(u)}var d=dT(Oc({width:l.width,height:l.height},t),n,r),f=o?d.x-l.x:0,p=s?d.y-l.y:0;return c===`raw`?(a.x=f,a.y=p):(a.x+=f,a.y+=p),a===e&&e.markRedraw(),!0}function hT(e){var t=e.layoutMode||e.constructor.layoutMode;return Hc(t)?t:t?{type:t}:null}function gT(e,t,n){var r=n&&n.ignoreSize;!q(r)&&(r=[r,r]);var i=o(sT[0],0),a=o(sT[1],1);c(sT[0],e,i),c(sT[1],e,a);function o(n,i){var a={},o=0,c={},l=0,u=2;if(aT(n,function(t){c[t]=e[t]}),aT(n,function(e){Z(t,e)&&(a[e]=c[e]=t[e]),s(a,e)&&o++,s(c,e)&&l++}),r[i])return s(t,n[1])?c[n[2]]=null:s(t,n[2])&&(c[n[1]]=null),c;if(l===u||!o)return c;if(o>=u)return a;for(var d=0;d=0;o--)a=Tc(a,n[o],!0);t.defaultOption=a}return t.defaultOption},t.prototype.getReferringComponents=function(e,t){var n=e+`Index`,r=e+`Id`;return Hg(this.ecModel,e,{index:this.get(n,!0),id:this.get(r,!0)},t)},t.prototype.getBoxLayoutParams=function(){return uT(this,!1)},t.prototype.getZLevelKey=function(){return``},t.prototype.setZLevel=function(e){this.option.zlevel=e},t.protoInitialize=function(){var e=t.prototype;e.type=`component`,e.id=``,e.name=``,e.mainType=``,e.subType=``,e.componentIndex=0}(),t}(jx);wl(bT,jx),kl(bT),PC(bT),FC(bT,xT);function xT(e){var t=[];return W(bT.getClassesByMainType(e),function(e){t=t.concat(e.dependencies||e.prototype.dependencies||[])}),t=G(t,function(e){return yl(e).main}),e!==`dataset`&&kc(t,`dataset`)<=0&&t.unshift(`dataset`),t}var ST=Ig(),CT=Ig(),wT=function(){function e(){}return e.prototype.getColorFromPalette=function(e,t,n){var r=mg(this.get(`color`,!0)),i=this.get(`colorLayer`,!0);return DT(this,ST,r,i,e,t,n)},e.prototype.clearColorPalette=function(){OT(this,ST)},e}();function TT(e,t,n,r){return DT(e,CT,mg(e.get([`aria`,`decal`,`decals`])),null,t,n,r)}function ET(e,t){for(var n=e.length,r=0;rt)return e[r];return e[n-1]}function DT(e,t,n,r,i,a,o){a||=e;var s=t(a),c=s.paletteIdx||0,l=s.paletteNameMap=s.paletteNameMap||{};if(l.hasOwnProperty(i))return l[i];var u=o==null||!r?n:ET(r,o);if(u||=n,u&&u.length){var d=u[c];return i&&(l[i]=d),s.paletteIdx=(c+1)%u.length,d}}function OT(e,t){t(e).paletteIdx=0,t(e).paletteNameMap={}}var kT=/\{@(.+?)\}/g,AT=function(){function e(){}return e.prototype.getDataParams=function(e,t){var n=this.getData(t),r=this.getRawValue(e,t),i=n.getRawIndex(e),a=n.getName(e),o=n.getRawDataItem(e),s=n.getItemVisual(e,`style`),c=s&&s[n.getItemVisual(e,`drawType`)||`fill`],l=s&&s.stroke,u=this.mainType,d=u===`series`,f=n.userOutput&&n.userOutput.get();return{componentType:u,componentSubType:this.subType,componentIndex:this.componentIndex,seriesType:d?this.subType:null,seriesIndex:this.seriesIndex,seriesId:d?this.id:null,seriesName:d?this.name:null,name:a,dataIndex:i,data:o,dataType:t,value:r,color:c,borderColor:l,dimensionNames:f?f.fullDimensions:null,encode:f?f.encode:null,$vars:[`seriesName`,`name`,`value`]}},e.prototype.getFormattedLabel=function(e,t,n,r,i,a){t||=`normal`;var o=this.getData(n),s=this.getDataParams(e,n);if(a&&(s.value=a.interpolatedValue),r!=null&&q(s.value)&&(s.value=s.value[r]),i||=o.getItemModel(e).get(t===`normal`?[`label`,`formatter`]:[t,`label`,`formatter`]),zc(i))return s.status=t,s.dimensionIndex=r,i(s);if(J(i))return nT(i,s).replace(kT,function(t,n){var r=n.length,i=n;i.charAt(0)===`[`&&i.charAt(r-1)===`]`&&(i=+i.slice(1,r-1));var s=vS(o,e,i);if(a&&q(a.interpolatedValue)){var c=o.getDimensionIndex(i);c>=0&&(s=a.interpolatedValue[c])}return s==null?``:s+``})},e.prototype.getRawValue=function(e,t){return vS(this.getData(t),e)},e.prototype.formatTooltip=function(e,t,n){},e}();function jT(e){var t,n;return Hc(e)?e.type&&(n=e):t=e,{text:t,frag:n}}function MT(e){return new NT(e)}var NT=function(){function e(e){e||={},this._reset=e.reset,this._plan=e.plan,this._count=e.count,this._onDirty=e.onDirty,this._dirty=!0}return e.prototype.perform=function(e){var t=this._upstream,n=e&&e.skip;if(this._dirty&&t){var r=this.context;r.data=r.outputData=t.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var i;this._plan&&!n&&(i=this._plan(this.context));var a=l(this._modBy),o=this._modDataCount||0,s=l(e&&e.modBy),c=e&&e.modDataCount||0;(a!==s||o!==c)&&(i=`reset`);function l(e){return!(e>=1)&&(e=1),e}var u;(this._dirty||i===`reset`)&&(this._dirty=!1,u=this._doReset(n)),this._modBy=s,this._modDataCount=c;var d=e&&e.step;if(this._dueEnd=t?t._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var f=this._dueIndex,p=Math.min(d==null?1/0:this._dueIndex+d,this._dueEnd);if(!n&&(u||f1&&r>0?s:o}};return a;function o(){return t=e?null:a9e10&&(this._versionSignBase=0)},e.prototype._getVersionSign=function(){return this._sourceHost.uid+`_`+this._versionSignBase},e.prototype.prepareSource=function(){this._isDirty()&&(this._createSource(),this._dirty=!1)},e.prototype._createSource=function(){this._setLocalSource([],[]);var e=this._sourceHost,t=this._getUpstreamSourceManagers(),n=!!t.length,r,i;if(qT(e)){var a=e,o=void 0,s=void 0,c=void 0;if(n){var l=t[0];l.prepareSource(),c=l.getSource(),o=c.data,s=c.sourceFormat,i=[l._getVersionSign()]}else o=a.get(`data`,!0),s=Wc(o)?v_:m_,i=[];var u=this._getSourceMetaRawOption()||{},d=c&&c.metaRawOption||{},f=Y(u.seriesLayoutBy,d.seriesLayoutBy)||null,p=Y(u.sourceHeader,d.sourceHeader),m=Y(u.dimensions,d.dimensions);r=f!==d.seriesLayoutBy||!!p!=!!d.sourceHeader||m?[Gx(o,{seriesLayoutBy:f,sourceHeader:p,dimensions:m},s)]:[]}else{var h=e;if(n){var g=this._applyTransform(t);r=g.sourceList,i=g.upstreamSignList}else r=[Gx(h.get(`source`,!0),this._getSourceMetaRawOption(),null)],i=[]}this._setLocalSource(r,i)},e.prototype._applyTransform=function(e){var t=this._sourceHost,n=t.get(`transform`,!0),r=t.get(`fromTransformResult`,!0);r!=null&&e.length!==1&&JT(``);var i,a=[],o=[];return W(e,function(e){e.prepareSource();var t=e.getSource(r||0);r!=null&&!t&&JT(``),a.push(t),o.push(e._getVersionSign())}),n?i=UT(n,a,{datasetIndex:t.componentIndex}):r!=null&&(i=[qx(a[0])]),{sourceList:i,upstreamSignList:o}},e.prototype._isDirty=function(){if(this._dirty)return!0;for(var e=this._getUpstreamSourceManagers(),t=0;t1||n>0&&!e.noHeader;return W(e.blocks,function(e){var n=oE(e);n>=t&&(t=n+ +(r&&(!n||iE(e)&&!e.noHeader)))}),t}return 0}function sE(e,t,n,r){var i=t.noHeader,a=uE(oE(t)),o=[],s=t.blocks||[];$c(!s||q(s)),s||=[];var c=e.orderMode;if(t.sortBlocks&&c){s=s.slice();var l={valueAsc:`asc`,valueDesc:`desc`};if(Z(l,c)){var u=new DS(l[c],null);s.sort(function(e,t){return u.evaluate(e.sortParam,t.sortParam)})}else c===`seriesDesc`&&s.reverse()}W(s,function(n,i){var s=t.valueFormatter,c=aE(n)(s?U(U({},e),{valueFormatter:s}):e,n,i>0?a.html:0,r);c!=null&&o.push(c)});var d=e.renderMode===`richText`?o.join(a.richText):dE(r,o.join(``),i?n:a.html);if(i)return d;var f=$w(t.header,`ordinal`,e.useUTC),p=eE(r,e.renderMode).nameStyle,m=$T(r);return e.renderMode===`richText`?mE(e,f,p)+a.richText+d:dE(r,`
`+XC(f)+`
`+d,n)}function cE(e,t,n,r){var i=e.renderMode,a=t.noName,o=t.noValue,s=!t.markerType,c=t.name,l=e.useUTC,u=t.valueFormatter||e.valueFormatter||function(e){return e=q(e)?e:[e],G(e,function(e,t){return $w(e,q(p)?p[t]:p,l)})};if(!(a&&o)){var d=s?``:e.markupStyleCreator.makeTooltipMarker(t.markerType,t.markerColor||Q.color.secondary,i),f=a?``:$w(c,`ordinal`,l),p=t.valueType,m=o?[]:u(t.value,t.rawDataIndex),h=!s||!a,g=!s&&a,_=eE(r,i),v=_.nameStyle,y=_.valueStyle;return i===`richText`?(s?``:d)+(a?``:mE(e,f,v))+(o?``:hE(e,m,h,g,y)):dE(r,(s?``:d)+(a?``:fE(f,!s,v))+(o?``:pE(m,h,g,y)),n)}}function lE(e,t,n,r,i,a){if(e)return aE(e)({useUTC:i,renderMode:n,orderMode:r,markupStyleCreator:t,valueFormatter:e.valueFormatter},e,0,a)}function uE(e){return{html:tE[e],richText:nE[e]}}function dE(e,t,n){var r=`
`,i=`margin: `+n+`px 0 0`,a=$T(e);return`
`+t+r+`
`}function fE(e,t,n){var r=t?`margin-left:2px`:``;return``+XC(e)+``}function pE(e,t,n,r){var i=t?`float:right;margin-left:`+(n?`10px`:`20px`):``;return e=q(e)?e:[e],``+G(e,function(e){return XC(e)}).join(`  `)+``}function mE(e,t,n){return e.markupStyleCreator.wrapRichTextStyle(t,n)}function hE(e,t,n,r,i){var a=[i],o=r?10:20;return n&&a.push({padding:[0,0,0,o],align:`right`}),e.markupStyleCreator.wrapRichTextStyle(q(t)?t.join(` `):t,a)}function gE(e,t){var n=e.getData().getItemVisual(t,`style`)[e.visualDrawType];return iT(n)}function _E(e,t){return e.get(`padding`)??(t===`richText`?[8,10]:10)}var vE=function(){function e(){this.richTextStyles={},this._nextStyleNameId=tg()}return e.prototype._generateStyleName=function(){return`__EC_aUTo_`+this._nextStyleNameId++},e.prototype.makeTooltipMarker=function(e,t,n){var r=n===`richText`?this._generateStyleName():null,i=rT({color:t,type:e,renderMode:n,markerId:r});return J(i)?i:(this.richTextStyles[r]=i.style,i.content)},e.prototype.wrapRichTextStyle=function(e,t){var n={};q(t)?W(t,function(e){return U(n,e)}):U(n,t);var r=this._generateStyleName();return this.richTextStyles[r]=n,`{`+r+`|`+e+`}`},e}();function yE(e){var t=e.series,n=e.dataIndex,r=e.multipleSeries,i=t.getData(),a=i.mapDimensionsAll(`defaultedTooltip`),o=a.length,s=t.getRawValue(n),c=q(s),l=gE(t,n),u,d,f,p;if(o>1||c&&!o){var m=bE(s,t,n,a,l);u=m.inlineValues,d=m.inlineValueTypes,f=m.blocks,p=m.inlineValues[0]}else if(o){var h=i.getDimensionInfo(a[0]);p=u=vS(i,n,a[0]),d=h.type}else p=u=c?s[0]:s;var g=kg(t),_=g&&t.name||``,v=i.getName(n),y=r?_:v;return rE(`section`,{header:_,noHeader:r||!g,sortParam:p,blocks:[rE(`nameValue`,{markerType:`item`,markerColor:l,name:y,noName:!el(y),value:u,valueType:d,rawDataIndex:i.getRawIndex(n)})].concat(f||[])})}function bE(e,t,n,r,i){var a=t.getData(),o=Nc(e,function(e,t,n){var r=a.getDimensionInfo(n);return e||=r&&r.tooltip!==!1&&r.displayName!=null},!1),s=[],c=[],l=[];r.length?W(r,function(e){u(vS(a,n,e),e)}):W(e,u);function u(e,t){var n=a.getDimensionInfo(t);n&&n.otherDims.tooltip!==!1&&(o?l.push(rE(`nameValue`,{markerType:`subItem`,markerColor:i,name:n.displayName,value:e,valueType:n.type})):(s.push(e),c.push(n.type)))}return{inlineValues:s,inlineValueTypes:c,blocks:l}}var xE=Ig();function SE(e,t){return e.getName(t)||e.getId(t)}var CE=function(e){H(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t._selectedDataIndicesMap={},t}return t.prototype.init=function(e,t,n){this.seriesIndex=this.componentIndex,this.dataTask=MT({count:EE,reset:DE}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(e,n),(xE(this).sourceManager=new KT(this)).prepareSource();var r=this.getInitialData(e,n);kE(r,this),this.dataTask.context.data=r,xE(this).dataBeforeProcessed=r,wE(this),this._initSelectedMapFromData(r)},t.prototype.mergeDefaultAndTheme=function(e,t){var n=hT(this),r=n?_T(e):{},i=this.subType;bT.hasClass(i)&&(i+=`Series`),Tc(e,t.getTheme().get(this.subType)),Tc(e,this.getDefaultOption()),hg(e,`label`,[`show`]),this.fillDataTextStyle(e.data),n&&gT(e,r,n)},t.prototype.mergeOption=function(e,t){e=Tc(this.option,e,!0),this.fillDataTextStyle(e.data);var n=hT(this);n&&gT(this.option,e,n);var r=xE(this).sourceManager;r.dirty(),r.prepareSource();var i=this.getInitialData(e,t);kE(i,this),this.dataTask.dirty(),this.dataTask.context.data=i,xE(this).dataBeforeProcessed=i,wE(this),this._initSelectedMapFromData(i)},t.prototype.fillDataTextStyle=function(e){if(e&&!Wc(e))for(var t=[`show`],n=0;n=0&&u<0)&&(l=v,u=_,d=0),_===u&&(c[d++]=m))}return c.length=d,c},t.prototype.formatTooltip=function(e,t,n){return yE({series:this,dataIndex:e,multipleSeries:t})},t.prototype.isAnimationEnabled=function(){var e=this.ecModel;if(ml.node&&!(e&&e.ssr))return!1;var t=this.getShallow(`animation`);return t&&this.getData().count()>this.getShallow(`animationThreshold`)&&(t=!1),!!t},t.prototype.restoreData=function(){this.dataTask.dirty()},t.prototype.getColorFromPalette=function(e,t,n){var r=this.ecModel,i=wT.prototype.getColorFromPalette.call(this,e,t,n);return i||=r.getColorFromPalette(e,t,n),i},t.prototype.coordDimToDataDim=function(e){return this.getRawData().mapDimensionsAll(e)},t.prototype.getProgressive=function(){return this.get(`progressive`)},t.prototype.getProgressiveThreshold=function(){return this.get(`progressiveThreshold`)},t.prototype.select=function(e,t){this._innerSelect(this.getData(t),e)},t.prototype.unselect=function(e,t){var n=this.option.selectedMap;if(n){var r=this.option.selectedMode,i=this.getData(t);if(r===`series`||n===`all`){this.option.selectedMap={},this._selectedDataIndicesMap={};return}for(var a=0;a=0&&n.push(i)}return n},t.prototype.isSelected=function(e,t){var n=this.option.selectedMap;if(!n)return!1;var r=this.getData(t);return(n===`all`||n[SE(r,e)])&&!r.getItemModel(e).get([`select`,`disabled`])},t.prototype.isUniversalTransitionEnabled=function(){if(this.__universalTransitionEnabled)return!0;var e=this.option.universalTransition;return e?e===!0||e&&e.enabled:!1},t.prototype._innerSelect=function(e,t){var n,r,i=this.option,a=i.selectedMode,o=t.length;if(a&&o){if(a===`series`)i.selectedMap=`all`;else if(a===`multiple`){Hc(i.selectedMap)||(i.selectedMap={});for(var s=i.selectedMap,c=0;c0&&this._innerSelect(e,t)}},t.registerClass=function(e){return bT.registerClass(e)},t.protoInitialize=function(){var e=t.prototype;e.type=`series.__base__`,e.seriesIndex=0,e.ignoreStyleOnData=!1,e.hasSymbolVisual=!1,e.defaultSymbol=`circle`,e.visualStyleAccessPath=`itemStyle`,e.visualDrawType=`fill`}(),t}(bT);jc(CE,AT),jc(CE,wT),wl(CE,bT);function wE(e){var t=e.name;kg(e)||(e.name=TE(e)||t)}function TE(e){var t=e.getRawData(),n=t.mapDimensionsAll(`seriesName`),r=[];return W(n,function(e){var n=t.getDimensionInfo(e);n.displayName&&r.push(n.displayName)}),r.join(` `)}function EE(e){return e.model.getRawData().count()}function DE(e){var t=e.model;return t.setData(t.getRawData().cloneShallow()),OE}function OE(e,t){t.outputData&&e.end>t.outputData.count()&&t.model.getRawData().cloneShallow(t.outputData)}function kE(e,t){W(cl(e.CHANGABLE_METHODS,e.DOWNSAMPLE_METHODS),function(n){e.wrapMethod(n,Rc(AE,t))})}function AE(e,t){var n=jE(e);return n&&n.setOutputEnd((t||this).count()),t}function jE(e){var t=(e.ecModel||{}).scheduler,n=t&&t.getPipeline(e.uid);if(n){var r=n.currentTask;if(r){var i=r.agentStubMap;i&&(r=i.get(e.uid))}return r}}var ME=Bm.extend({type:`triangle`,shape:{cx:0,cy:0,width:0,height:0},buildPath:function(e,t){var n=t.cx,r=t.cy,i=t.width/2,a=t.height/2;e.moveTo(n,r-a),e.lineTo(n+i,r+a),e.lineTo(n-i,r+a),e.closePath()}}),NE={line:jy,rect:eh,roundRect:eh,square:eh,circle:ty,diamond:Bm.extend({type:`diamond`,shape:{cx:0,cy:0,width:0,height:0},buildPath:function(e,t){var n=t.cx,r=t.cy,i=t.width/2,a=t.height/2;e.moveTo(n,r-a),e.lineTo(n+i,r),e.lineTo(n,r+a),e.lineTo(n-i,r),e.closePath()}}),pin:Bm.extend({type:`pin`,shape:{x:0,y:0,width:0,height:0},buildPath:function(e,t){var n=t.x,r=t.y,i=t.width/5*3,a=Math.max(i,t.height),o=i/2,s=o*o/(a-o),c=r-a+o+s,l=Math.asin(s/o),u=Math.cos(l)*o,d=Math.sin(l),f=Math.cos(l),p=o*.6,m=o*.7;e.moveTo(n-u,c+s),e.arc(n,c,o,Math.PI-l,Math.PI*2+l),e.bezierCurveTo(n+u-d*p,c+s+f*p,n,r-m,n,r),e.bezierCurveTo(n,r-m,n-u+d*p,c+s+f*p,n-u,c+s),e.closePath()}}),arrow:Bm.extend({type:`arrow`,shape:{x:0,y:0,width:0,height:0},buildPath:function(e,t){var n=t.height,r=t.width,i=t.x,a=t.y,o=r/3*2;e.moveTo(i,a),e.lineTo(i+o,a+n),e.lineTo(i,a+n/4*3),e.lineTo(i-o,a+n),e.lineTo(i,a),e.closePath()}}),triangle:ME},PE={line:function(e,t,n,r,i){i.x1=e,i.y1=t+r/2,i.x2=e+n,i.y2=t+r/2},rect:function(e,t,n,r,i){i.x=e,i.y=t,i.width=n,i.height=r},roundRect:function(e,t,n,r,i){i.x=e,i.y=t,i.width=n,i.height=r,i.r=Math.min(n,r)/4},square:function(e,t,n,r,i){var a=Math.min(n,r);i.x=e,i.y=t,i.width=a,i.height=a},circle:function(e,t,n,r,i){i.cx=e+n/2,i.cy=t+r/2,i.r=Math.min(n,r)/2},diamond:function(e,t,n,r,i){i.cx=e+n/2,i.cy=t+r/2,i.width=n,i.height=r},pin:function(e,t,n,r,i){i.x=e+n/2,i.y=t+r/2,i.width=n,i.height=r},arrow:function(e,t,n,r,i){i.x=e+n/2,i.y=t+r/2,i.width=n,i.height=r},triangle:function(e,t,n,r,i){i.cx=e+n/2,i.cy=t+r/2,i.width=n,i.height=r}},FE={};W(NE,function(e,t){FE[t]=new e});var IE=Bm.extend({type:`symbol`,shape:{symbolType:``,x:0,y:0,width:0,height:0},calculateTextPosition:function(e,t,n){var r=Zu(e,t,n),i=this.shape;return i&&i.symbolType===`pin`&&t.position===`inside`&&(r.y=n.y+n.height*.4),r},buildPath:function(e,t,n){var r=t.symbolType;if(r!==`none`){var i=FE[r];i||=(r=`rect`,FE[r]),PE[r](t.x,t.y,t.width,t.height,i.shape),i.buildPath(e,i.shape,n)}}});function LE(e,t){if(this.type!==`image`){var n=this.style;this.__isEmptyBrush?(n.stroke=e,n.fill=t||Q.color.neutral00,n.lineWidth=2):this.shape.symbolType===`line`?n.stroke=e:n.fill=e,this.markRedraw()}}function RE(e,t,n,r,i,a,o){var s=e.indexOf(`empty`)===0;s&&(e=e.substr(5,1).toLowerCase()+e.substr(6));var c=e.indexOf(`image://`)===0?yb(e.slice(8),new Eu(t,n,r,i),o?`center`:`cover`):e.indexOf(`path://`)===0?vb(e.slice(7),{},new Eu(t,n,r,i),o?`center`:`cover`):new IE({shape:{symbolType:e,x:t,y:n,width:r,height:i}});return c.__isEmptyBrush=s,c.setColor=LE,a&&c.setColor(a),c}function zE(e){return q(e)||(e=[+e,+e]),[e[0]||0,e[1]||0]}function BE(e,t){if(e!=null)return q(e)||(e=[e,e]),[Ph(e[0],t[0])||0,Ph(Y(e[1],e[0]),t[1])||0]}var VE=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n.hasSymbolVisual=!0,n}return t.prototype.getInitialData=function(e){return kC(null,this,{useEncodeDefaulter:!0})},t.prototype.getLegendIcon=function(e){var t=new $v,n=RE(`line`,0,e.itemHeight/2,e.itemWidth,0,e.lineStyle.stroke,!1);t.add(n),n.setStyle(e.lineStyle);var r=this.getData().getVisual(`symbol`),i=this.getData().getVisual(`symbolRotate`),a=r===`none`?`circle`:r,o=e.itemHeight*.8,s=RE(a,(e.itemWidth-o)/2,(e.itemHeight-o)/2,o,o,e.itemStyle.fill);return t.add(s),s.setStyle(e.itemStyle),s.rotation=(e.iconRotate===`inherit`?i:e.iconRotate||0)*Math.PI/180,s.setOrigin([e.itemWidth/2,e.itemHeight/2]),a.indexOf(`empty`)>-1&&(s.style.stroke=s.style.fill,s.style.fill=Q.color.neutral00,s.style.lineWidth=2),t},t.type=`series.line`,t.dependencies=[`grid`,`polar`],t.defaultOption={z:3,coordinateSystem:`cartesian2d`,legendHoverLink:!0,clip:!0,label:{position:`top`},endLabel:{show:!1,valueAnimation:!0,distance:8},lineStyle:{width:2,type:`solid`},emphasis:{scale:!0},step:!1,smooth:!1,smoothMonotone:null,symbol:`emptyCircle`,symbolSize:6,symbolRotate:null,showSymbol:!0,showAllSymbol:`auto`,connectNulls:!1,sampling:`none`,animationEasing:`linear`,progressive:0,hoverLayerThreshold:1/0,universalTransition:{divideShape:`clone`},triggerLineEvent:!1,triggerEvent:!1},t}(CE);function HE(e,t){var n=e.mapDimensionsAll(`defaultedLabel`),r=n.length;if(r===1){var i=vS(e,t,n[0]);return i==null?null:i+``}if(r){for(var a=[],o=0;o=0&&r.push(t[a])}return r.join(` `)}var WE=function(e){H(t,e);function t(t,n,r,i){var a=e.call(this)||this;return a.updateData(t,n,r,i),a}return t.prototype._createSymbol=function(e,t,n,r,i,a){this.removeAll();var o=RE(e,-1,-1,2,2,null,a);o.attr({z2:Y(i,100),culling:!0,scaleX:r[0]/2,scaleY:r[1]/2}),o.drift=GE,this._symbolType=e,this.add(o)},t.prototype.stopSymbolAnimation=function(e){this.childAt(0).stopAnimation(null,e)},t.prototype.getSymbolType=function(){return this._symbolType},t.prototype.getSymbolPath=function(){return this.childAt(0)},t.prototype.highlight=function(){tv(this.childAt(0))},t.prototype.downplay=function(){nv(this.childAt(0))},t.prototype.setZ=function(e,t){var n=this.childAt(0);n.zlevel=e,n.z=t},t.prototype.setDraggable=function(e,t){var n=this.childAt(0);n.draggable=e,n.cursor=!t&&e?`move`:n.cursor},t.prototype.updateData=function(e,n,r,i){this.silent=!1;var a=e.getItemVisual(n,`symbol`)||`circle`,o=e.hostModel,s=t.getSymbolSize(e,n),c=t.getSymbolZ2(e,n),l=a!==this._symbolType,u=i&&i.disableAnimation;if(l){var d=e.getItemVisual(n,`symbolKeepAspect`);this._createSymbol(a,e,n,s,c,d)}else{var f=this.childAt(0);f.silent=!1;var p={scaleX:s[0]/2,scaleY:s[1]/2};u?f.attr(p):nb(f,p,o,n),cb(f)}if(this._updateCommon(e,n,s,r,i),l){var f=this.childAt(0);if(!u){var p={scaleX:this._sizeX,scaleY:this._sizeY,style:{opacity:f.style.opacity}};f.scaleX=f.scaleY=0,f.style.opacity=0,rb(f,p,o,n)}}u&&this.childAt(0).stopAnimation(`leave`)},t.prototype._updateCommon=function(e,t,n,r,i){var a=this.childAt(0),o=e.hostModel,s,c,l,u,d,f,p,m,h;if(r&&(s=r.emphasisItemStyle,c=r.blurItemStyle,l=r.selectItemStyle,u=r.focus,d=r.blurScope,p=r.labelStatesModels,m=r.hoverScale,h=r.cursorStyle,f=r.emphasisDisabled),!r||e.hasItemOption){var g=r&&r.itemModel?r.itemModel:e.getItemModel(t),_=g.getModel(`emphasis`);s=_.getModel(`itemStyle`).getItemStyle(),l=g.getModel([`select`,`itemStyle`]).getItemStyle(),c=g.getModel([`blur`,`itemStyle`]).getItemStyle(),u=_.get(`focus`),d=_.get(`blurScope`),f=_.get(`disabled`),p=sx(g),m=_.getShallow(`scale`),h=g.getShallow(`cursor`)}var v=e.getItemVisual(t,`symbolRotate`);a.attr(`rotation`,(v||0)*Math.PI/180||0);var y=BE(e.getItemVisual(t,`symbolOffset`),n);y&&(a.x=y[0],a.y=y[1]),h&&a.attr(`cursor`,h);var b=e.getItemVisual(t,`style`),x=b.fill;if(a instanceof Km){var S=a.style;a.useStyle(U({image:S.image,x:S.x,y:S.y,width:S.width,height:S.height},b))}else a.__isEmptyBrush?a.useStyle(U({},b)):a.useStyle(b),a.style.decal=null,a.setColor(x,i&&i.symbolInnerColor),a.style.strokeNoScale=!0;var C=e.getItemVisual(t,`liftZ`),w=this._z2;C==null?w!=null&&(a.z2=w,this._z2=null):w??(this._z2=a.z2,a.z2+=C);var T=i&&i.useNameLabel;ox(a,p,{labelFetcher:o,labelDataIndex:t,defaultText:E,inheritColor:x,defaultOpacity:b.opacity});function E(t){return T?e.getName(t):HE(e,t)}this._sizeX=n[0]/2,this._sizeY=n[1]/2;var D=a.ensureState(`emphasis`);D.style=s,a.ensureState(`select`).style=l,a.ensureState(`blur`).style=c;var O=m==null||m===!0?Math.max(1.1,3/this._sizeY):isFinite(m)&&m>0?+m:1;D.scaleX=this._sizeX*O,D.scaleY=this._sizeY*O,this.setSymbolScale(1),bv(this,u,d,f)},t.prototype.setSymbolScale=function(e){this.scaleX=this.scaleY=e},t.prototype.fadeOut=function(e,t,n){var r=this.childAt(0),i=d_(this).dataIndex,a=n&&n.animation;if(this.silent=r.silent=!0,n&&n.fadeLabel){var o=r.getTextContent();o&&ab(o,{style:{opacity:0}},t,{dataIndex:i,removeOpt:a,cb:function(){r.removeTextContent()}})}else r.removeTextContent();ab(r,{style:{opacity:0},scaleX:0,scaleY:0},t,{dataIndex:i,cb:e,removeOpt:a})},t.getSymbolSize=function(e,t){return zE(e.getItemVisual(t,`symbolSize`))},t.getSymbolZ2=function(e,t){return e.getItemVisual(t,`z2`)},t}($v);function GE(e,t){this.parent.drift(e,t)}function KE(e,t,n,r){return t&&!isNaN(t[0])&&!isNaN(t[1])&&!(r&&r.isIgnore&&r.isIgnore(n))&&!(r&&r.clipShape&&!r.clipShape.contain(t[0],t[1]))&&e.getItemVisual(n,`symbol`)!==`none`}function qE(e){return e!=null&&!Hc(e)&&(e={isIgnore:e}),e||{}}function JE(e){var t=e.hostModel,n=t.getModel(`emphasis`);return{emphasisItemStyle:n.getModel(`itemStyle`).getItemStyle(),blurItemStyle:t.getModel([`blur`,`itemStyle`]).getItemStyle(),selectItemStyle:t.getModel([`select`,`itemStyle`]).getItemStyle(),focus:n.get(`focus`),blurScope:n.get(`blurScope`),emphasisDisabled:n.get(`disabled`),hoverScale:n.get(`scale`),labelStatesModels:sx(t),cursorStyle:t.get(`cursor`)}}function YE(e,t,n,r,i,a,o){var s=new e(t,n,r,i);return s.setPosition(a),t.setItemGraphicEl(n,s),o.add(s),s}var XE=function(){function e(e){this.group=new $v,this._SymbolCtor=e||WE}return e.prototype.updateData=function(e,t){this._progressiveEls=null,t=qE(t);var n=this.group,r=e.hostModel,i=this._data,a=this._SymbolCtor,o=t.disableAnimation,s=this._seriesScope=JE(e),c={disableAnimation:o},l=t.getSymbolPoint||function(t){return e.getItemLayout(t)};i||n.removeAll(),e.diff(i).add(function(r){var i=l(r);KE(e,i,r,t)&&YE(a,e,r,s,c,i,n)}).update(function(u,d){var f=i.getItemGraphicEl(d),p=l(u);if(!KE(e,p,u,t)){n.remove(f);return}var m=e.getItemVisual(u,`symbol`)||`circle`,h=f&&f.getSymbolType&&f.getSymbolType();if(!f||h&&h!==m)n.remove(f),f=new a(e,u,s,c),f.setPosition(p);else{f.updateData(e,u,s,c);var g={x:p[0],y:p[1]};o?f.attr(g):nb(f,g,r)}n.add(f),e.setItemGraphicEl(u,f)}).remove(function(e){var t=i.getItemGraphicEl(e);t&&t.fadeOut(function(){n.remove(t)},r)}).execute(),this._getSymbolPoint=l,this._data=e},e.prototype.updateLayout=function(e){var t=this._data;if(t)for(var n=this,r=t.getStore(),i=0,a=r.count();i0?n=r[0]:r[1]<0&&(n=r[1]),n}function $E(e,t,n,r){var i=NaN;e.stacked&&(i=n.get(n.getCalculationInfo(`stackedOverDimension`),r)),isNaN(i)&&(i=e.valueStart);var a=e.baseDataOffset,o=[];return o[a]=n.get(e.baseDim,r),o[1-a]=i,t.dataToPoint(o)}function eD(e,t){return!isFinite(e)||!isFinite(t)}var tD=typeof Float32Array<`u`?Float32Array:void 0,nD=typeof Float64Array<`u`?Float64Array:void 0;function rD(e){return iD({ctor:tD},e).arr}function iD(e,t){var n=e.arr,r=e.ctor;if(t>Wh&&(t=Wh),!n||e.typed&&n.length=i||h<0)break;if(eD(_,v)){if(c){h+=a;continue}break}if(h===n)e[a>0?`moveTo`:`lineTo`](_,v),d=_,f=v;else{var y=_-l,b=v-u;if(y*y+b*b<.5){h+=a;continue}if(o>0){for(var x=h+a,S=t[x*2],C=t[x*2+1];S===_&&C===v&&g=r||eD(S,C))p=_,m=v;else{E=S-l,D=C-u;var A=_-l,j=S-_,M=v-u,N=C-v,P=void 0,F=void 0;if(s===`x`){P=Math.abs(A),F=Math.abs(j);var I=E>0?1:-1;p=_-I*P*o,m=v,O=_+I*F*o,k=v}else if(s===`y`){P=Math.abs(M),F=Math.abs(N);var L=D>0?1:-1;p=_,m=v-L*P*o,O=_,k=v+L*F*o}else P=Math.sqrt(A*A+M*M),F=Math.sqrt(j*j+N*N),T=F/(F+P),p=_-E*o*(1-T),m=v-D*o*(1-T),O=_+E*o*T,k=v+D*o*T,O=sD(O,cD(S,_)),k=sD(k,cD(C,v)),O=cD(O,sD(S,_)),k=cD(k,sD(C,v)),E=O-_,D=k-v,p=_-E*P/F,m=v-D*P/F,p=sD(p,cD(l,_)),m=sD(m,cD(u,v)),p=cD(p,sD(l,_)),m=cD(m,sD(u,v)),E=_-p,D=v-m,O=_+E*F/P,k=v+D*F/P}e.bezierCurveTo(d,f,p,m,_,v),d=O,f=k}else e.lineTo(_,v)}l=_,u=v,h+=a}return g}var uD=function(){function e(){this.smooth=0,this.smoothConstraint=!0}return e}(),dD=function(e){H(t,e);function t(t){var n=e.call(this,t)||this;return n.type=`ec-polyline`,n}return t.prototype.getDefaultStyle=function(){return{stroke:Q.color.neutral99,fill:null}},t.prototype.getDefaultShape=function(){return new uD},t.prototype.buildPath=function(e,t){var n=t.points,r=0,i=n.length/2;if(t.connectNulls){for(;i>0&&eD(n[i*2-2],n[i*2-1]);i--);for(;r=0){var _=o?(d-a)*g+a:(u-i)*g+i;return o?[e,_]:[_,e]}i=u,a=d;break;case r.C:u=n[c++],d=n[c++],f=n[c++],p=n[c++],m=n[c++],h=n[c++];var v=o?Kd(i,u,f,m,e,s):Kd(a,d,p,h,e,s);if(v>0)for(var y=0;y=0){var _=o?Wd(a,d,p,h,b):Wd(i,u,f,m,b);return o?[e,_]:[_,e]}}i=m,a=h}}},t}(Bm),fD=function(e){H(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(uD),pD=function(e){H(t,e);function t(t){var n=e.call(this,t)||this;return n.type=`ec-polygon`,n}return t.prototype.getDefaultShape=function(){return new fD},t.prototype.buildPath=function(e,t){var n=t.points,r=t.stackedOnPoints,i=0,a=n.length/2,o=t.smoothMonotone;if(t.connectNulls){for(;a>0&&eD(n[a*2-2],n[a*2-1]);a--);for(;i=0,a=e.fill||Q.color.neutral99;ND(r,t);var o=r.textFill==null;return i?o&&(r.textFill=n.insideFill||Q.color.neutral00,!r.textStroke&&n.insideStroke&&(r.textStroke=n.insideStroke),!r.textStroke&&(r.textStroke=a),r.textStrokeWidth??=2):(o&&(r.textFill=e.fill||n.outsideFill||Q.color.neutral00),!r.textStroke&&n.outsideStroke&&(r.textStroke=n.outsideStroke)),r.text=t.text,r.rich=t.rich,W(t.rich,function(e){ND(e,e)}),r}function ND(e,t){t&&(Z(t,`fill`)&&(e.textFill=t.fill),Z(t,`stroke`)&&(e.textStroke=t.fill),Z(t,`lineWidth`)&&(e.textStrokeWidth=t.lineWidth),Z(t,`font`)&&(e.font=t.font),Z(t,`fontStyle`)&&(e.fontStyle=t.fontStyle),Z(t,`fontWeight`)&&(e.fontWeight=t.fontWeight),Z(t,`fontSize`)&&(e.fontSize=t.fontSize),Z(t,`fontFamily`)&&(e.fontFamily=t.fontFamily),Z(t,`align`)&&(e.textAlign=t.align),Z(t,`verticalAlign`)&&(e.textVerticalAlign=t.verticalAlign),Z(t,`lineHeight`)&&(e.textLineHeight=t.lineHeight),Z(t,`width`)&&(e.textWidth=t.width),Z(t,`height`)&&(e.textHeight=t.height),Z(t,`backgroundColor`)&&(e.textBackgroundColor=t.backgroundColor),Z(t,`padding`)&&(e.textPadding=t.padding),Z(t,`borderColor`)&&(e.textBorderColor=t.borderColor),Z(t,`borderWidth`)&&(e.textBorderWidth=t.borderWidth),Z(t,`borderRadius`)&&(e.textBorderRadius=t.borderRadius),Z(t,`shadowColor`)&&(e.textBoxShadowColor=t.shadowColor),Z(t,`shadowBlur`)&&(e.textBoxShadowBlur=t.shadowBlur),Z(t,`shadowOffsetX`)&&(e.textBoxShadowOffsetX=t.shadowOffsetX),Z(t,`shadowOffsetY`)&&(e.textBoxShadowOffsetY=t.shadowOffsetY),Z(t,`textShadowColor`)&&(e.textShadowColor=t.textShadowColor),Z(t,`textShadowBlur`)&&(e.textShadowBlur=t.textShadowBlur),Z(t,`textShadowOffsetX`)&&(e.textShadowOffsetX=t.textShadowOffsetX),Z(t,`textShadowOffsetY`)&&(e.textShadowOffsetY=t.textShadowOffsetY))}var PD=function(){function e(){}return e.prototype.isBlank=function(){return this._isBlank},e.prototype.setBlank=function(e){this._isBlank=e},e}();kl(PD);var FD=0,ID=function(){function e(e){this.categories=e.categories||[],this._needCollect=e.needCollect,this._deduplication=e.deduplication,this.uid=++FD,this._onCollect=e.onCollect}return e.createByAxisModel=function(t){var n=t.option,r=n.data,i=r&&G(r,LD);return new e({categories:i,needCollect:!i,deduplication:n.dedplication!==!1})},e.prototype.getOrdinal=function(e){return this._getOrCreateMap().get(e)},e.prototype.parseAndCollect=function(e){var t,n=this._needCollect;if(!J(e)&&!n)return e;if(n&&!this._deduplication)return t=this.categories.length,this.categories[t]=e,this._onCollect&&this._onCollect(e,t),t;var r=this._getOrCreateMap();return t=r.get(e),t??(n?(t=this.categories.length,this.categories[t]=e,r.set(e,t),this._onCollect&&this._onCollect(e,t)):t=NaN),t},e.prototype._getOrCreateMap=function(){return this._map||=X(this.categories)},e}();function LD(e){return Hc(e)&&e.value!=null?e.value:e+``}var RD=Ic({needTransform:1,normalize:1,scale:1,transformIn:1,transformOut:1,contain:1,getExtent:1,getExtentUnsafe:1,setExtent:1,setExtent2:1,getFilter:1,sanitize:1,getDefaultStartValue:1,freeze:1});function zD(e,t,n){var r;e||={};var i=uw();if(i){var a=i.createBreakScaleMapper(t,n);a.hasBreaks()&&(W(RD,function(t){a[t]&&(e[t]=K(a[t],a))}),r=a)}return r??KD(e,n),{brk:r,mapper:e}}function BD(e,t){W(RD,function(n){e[n]=t[n]})}function VD(e,t){e.freeze=dl}function HD(e){return e.getExtentUnsafe(0,2)}function UD(e,t){return e.getExtentUnsafe(1,t)||e.getExtentUnsafe(0,t)}function WD(e){var t=UD(e,3);return t[1]-t[0]}function GD(e){var t=e.getExtentUnsafe(0,3);return t[1]-t[0]}function KD(e,t){var n=e||{},r=[];return n._extents=r,r[0]=t?t.slice():Jg(),U(n,qD),n}var qD={needTransform:function(){return!1},normalize:function(e){var t=this._extents[1]||this._extents[0];return t[1]===t[0]?.5:(e-t[0])/(t[1]-t[0])},scale:function(e){var t=this._extents[1]||this._extents[0];return e*(t[1]-t[0])+t[0]},transformIn:function(e){return e},transformOut:function(e){return e},contain:function(e){var t=UD(this,null);return e>=t[0]&&e<=t[1]},getExtent:function(){return this._extents[0].slice()},getExtentUnsafe:function(e){return this._extents[e]},setExtent:function(e,t){JD(this._extents,0,e,t)},setExtent2:function(e,t,n){var r=this._extents;r[e]||(r[e]=r[0].slice()),JD(r,e,t,n)},freeze:function(){}};function JD(e,t,n,r){e_(n,r)&&(e[t][0]=n,e[t][1]=r)}function YD(e){return XD(e)||QD(e)}function XD(e){return e.type===`interval`}function ZD(e){return e.type===`time`}function QD(e){return e.type===`log`}function $D(e){return e.type===`ordinal`}function eO(e){var t=Xh(e),n=Oh(10,t),r=Th(e/n);return r?r===2?r=3:r===3?r=5:r*=2:r=1,Rh(r*n,-t)}function tO(e){return Bh(e)+2}function nO(e,t){return kh(e)/kh(t)}function rO(e,t,n){var r=n&&n.lookup;if(r){for(var i=0;i1&&a/o>2&&(i=Math.round(Math.ceil(i/o)*o)),i!==r[0]&&c(r[0],!0,!0);for(var s=i;s<=r[1];s+=o)c(s,!1,s===r[0]||s===r[1]);s-o!==r[1]&&c(r[1],!0,!0);function c(e,t,r){n({value:e,offInterval:t},r)}}var cO=function(e){H(t,e);function t(n){var r=e.call(this)||this;r.type=`ordinal`,r.parse=t.parse,BD(r,t.decoratedMethods);var i=n.ordinalMeta;i||=new ID({}),q(i)&&(i=new ID({categories:G(i,function(e){return Hc(e)?e.value:e})})),r._ordinalMeta=i;var a=zD(null,null,n.extent||[0,i.categories.length-1]);return r._mapper=a.mapper,VD(r,a.mapper),r}return t.parse=function(e){return e==null?e=NaN:J(e)?(e=this._ordinalMeta.getOrdinal(e),e??=NaN):e=Th(e),e},t.prototype.getTicks=function(){var e=[];return sO(this,0,function(t){e.push(t)}),e},t.prototype.getMinorTicks=function(e){},t.prototype.setSortInfo=function(e){if(e==null){this._ordinalNumbersByTick=this._ticksByOrdinalNumber=null;return}for(var t=e.ordinalNumbers,n=this._ordinalNumbersByTick=[],r=this._ticksByOrdinalNumber=[],i=0,a=this._ordinalMeta.categories.length,o=Sh(a,t.length);i=0&&e=0&&e=0&&eo[0]&&mi[1]||!isFinite(p)||!isFinite(i[1]))break}else{if(m>f)break;p=Sh(p,i[1]),m===f&&(p=i[1])}if(l.push({value:p}),p=Rh(p+n,a),s){var h=s.calcNiceTickMultiple(p,d);h>=0&&(p=Rh(p+h*n,a))}if(l.length>0&&p===l[l.length-1].value)break;if(l.length>u)return[]}var g=l.length?l[l.length-1].value:i[1];return r[1]>g&&l.push({value:e.expandToNicedExtent?Rh(g+n,a):r[1]}),c&&o.pruneTicksByBreak(e.pruneByBreak,l,s.breaks,function(e){return e.value},t.interval,r),c&&e.breakTicks!==`none`&&o.addBreaksToTicks(l,s.breaks,r),l},t.prototype.getMinorTicks=function(e){return lO(this,e,fw(this),this._cfg.interval)},t.prototype.getLabel=function(e,t){if(e==null)return``;var n=t&&t.precision;return n==null?n=Bh(e.value)||0:n===`auto`&&(n=this._cfg.intervalPrecision),Xw(Rh(e.value,n,!0))},t.type=`interval`,t}(PD);PD.registerClass(uO);var dO=function(e,t,n,r){for(;n>>1;e[i][1]16?16:e>7.5?7:e>3.5?4:e>1.5?2:1}function gO(e){var t=30*_w;return e/=t,e>6?6:e>3?3:e>2?2:1}function _O(e){return e/=gw,e>12?12:e>6?6:e>3.5?4:e>2?2:1}function vO(e,t){return e/=t?hw:mw,e>30?30:e>20?20:e>15?15:e>10?10:e>5?5:e>2?2:1}function yO(e){return Ch(Zh(e,!0),1)}function bO(e,t,n){var r=Math.max(0,kc(ww,t)-1);return Fw(new Date(e),ww[r],n).getTime()}function xO(e,t){var n=new Date(0);n[e](1);var r=n.getTime();n[e](1+t);var i=n.getTime()-r;return function(e,t){return Math.max(0,Math.round((t-e)/i))}}function SO(e,t,n,r,i,a){var o=Tw,s=0;function c(e,t,n,i,o,c,l){for(var u=xO(o,e),d=t,f=new Date(d);d3e3));)if(f[o](f[i]()+e),d=f.getTime(),a){var p=a.calcNiceTickMultiple(d,u);p>0&&(f[o](f[i]()+p*e),d=f.getTime())}l.push({value:d,notAdd:d>r[1]})}function l(e,i,a){var o=[],s=!i.length;if(!mO(kw(e),r[0],r[1],n)){s&&(i=[{value:bO(r[0],e,n)},{value:r[1]}]);for(var l=0;l=r[0]&&u<=r[1]&&c(f,u,d,p,m,h,o),e===`year`&&a.length>1&&l===0&&a.unshift({value:a[0].value-f})}}for(var l=0;l=r[0]&&v<=r[1]&&f++)}var y=i/t;if(f>y*1.5&&p>y/1.5||(u.push(g),f>y||e===o[m]))break}d=[]}}for(var b=Pc(G(u,function(e){return Pc(e,function(e){return e.value>=r[0]&&e.value<=r[1]&&!e.notAdd})}),function(e){return e.length>0}),x=b.length-1,S=[],m=0;mr[0])&&S.unshift({value:r[0],time:{level:0,upperTimeUnit:O,lowerTimeUnit:O},notNice:!0}),(!D||D.values&&(a=s);var c=pO.length,l=Math.min(dO(pO,a,0,c),c-1),u=pO[l][1],d=pO[Math.max(l-1,0)][0];e.setTimeInterval({approxInterval:a,interval:u,minLevelUnit:d})};PD.registerClass(fO);var wO=0,TO=1,EO=2,DO=function(e){H(t,e);function t(n){var r=e.call(this)||this;r.type=`log`,r.parse=uO.parse,r.base=n.logBase||10;var i=[],a=[],o=r._lookup={from:i,to:a};i[wO]=i[TO]=a[wO]=a[TO]=NaN,BD(r,t.mapperMethods);var s=uw(),c=n.breakOption,l={lookup:o};return s&&s.parseAxisBreakOptionInwardTransform(c,r,{noNegative:!0},EO,l),r.powStub=new uO({breakParsed:l.original}),r.intervalStub=new uO({breakParsed:l.transformed}),VD(r,r.intervalStub),r}return t.prototype.getTicks=function(e){var t=this.base,n=this.powStub,r=uw(),i=this.intervalStub,a={lookup:{from:i.getExtent(),to:n.getExtent()}};return G(i.getTicks(e||{}),function(e){var i=e.value,o=rO(i,t,a),s;if(r){var c=r.getTicksBreakOutwardTransform(this,e,fw(n),this._lookup);c&&(s=c.vBreak,o=c.tickVal)}return{value:o,break:s}},this)},t.prototype.getMinorTicks=function(e){return lO(this,e,fw(this.powStub),this.intervalStub.getConfig().interval)},t.prototype.getLabel=function(e,t){return this.intervalStub.getLabel(e,t)},t.type=`log`,t.mapperMethods={needTransform:function(){return!0},normalize:function(e){return this.intervalStub.normalize(nO(e,this.base))},scale:function(e){return rO(this.intervalStub.scale(e),this.base,null)},transformIn:function(e,t){return e=nO(e,this.base),t&&t.depth===2?e:this.intervalStub.transformIn(e,t)},transformOut:function(e,t){var n=t?t.depth:null;return OO.depth=n,kO.lookup=this._lookup,rO(n===2?e:this.intervalStub.transformOut(e,OO),this.base,kO)},contain:function(e){return this.powStub.contain(e)},setExtent:function(e,t){this.setExtent2(0,e,t)},setExtent2:function(e,t,n){if(!(!e_(t,n)||t<=0||n<=0)){var r=AO,i=AO;if(e===0){var a=this._lookup;r=a.to,i=a.from}this.powStub.setExtent2(e,r[wO]=t,r[TO]=n);var o=this.base;this.intervalStub.setExtent2(e,i[wO]=nO(t,o),i[TO]=nO(n,o))}},getFilter:function(){return{g:0}},sanitize:function(e,t){return e_(t[0],t[1])&&ig(e)&&e<=0&&(e=t[0]),e},getDefaultStartValue:function(){return 1},getExtent:function(){return this.powStub.getExtent()},getExtentUnsafe:function(e,t){return t===null?this.powStub.getExtentUnsafe(e,null):this.intervalStub.getExtentUnsafe(e,t)}},t}(PD);PD.registerClass(DO);var OO={},kO={},AO=[],jO={value:1,category:1,time:1,log:1},MO=Ig();function NO(e){var t=e.get(`type`);return(t==null||!Z(jO,t)&&!PD.getClass(t))&&(t=`value`),t}function PO(e,t,n){var r=uw(),i;switch(r&&(i=GO(e,t,n)),t){case`category`:return new cO({ordinalMeta:e.getOrdinalMeta?e.getOrdinalMeta():e.getCategories(),extent:Jg()});case`time`:return new fO({locale:e.ecModel.getLocaleModel(),useUTC:e.ecModel.get(`useUTC`),breakOption:i});case`log`:return new DO({logBase:e.get(`logBase`),breakOption:i});case`value`:return new uO({breakOption:i});default:return new((PD.getClass(t))||uO)({})}}function FO(e,t,n){var r=n?UD(e,null):e.getExtentUnsafe(0,null),i=r[0],a=r[1];return e_(i,a)?i===t||a===t?2:it?1:3:3}function IO(e){MO(e).noOnMyZero=!0}function LO(e){return MO(e).noOnMyZero}function RO(e){var t=e.getLabelModel().get(`formatter`);if(e.type===`time`){var n=Ew(t);return function(t,r){return e.scale.getFormattedLabel(t,r,n)}}if(J(t))return function(n){var r=e.scale.getLabel(n);return t.replace(`{value}`,r??``)};if(zc(t)){if(e.type===`category`)return function(n,r){return t(zO(e,n),n.value-e.scale.getExtent()[0],null)};var r=uw();return function(n,i){var a=null;return r&&(a=r.makeAxisLabelFormatterParamBreak(a,n.break)),t(zO(e,n),i,a)}}return function(t){return e.scale.getLabel(t)}}function zO(e,t){var n=e.scale;return $D(n)?n.getLabel(t):t.value}function BO(e){return e.get(`interval`)??`auto`}function VO(e){return e.type===`category`&&BO(e.getLabelModel())===0}function HO(e,t){var n={};return W(e.mapDimensionsAll(t),function(t){n[EC(e,t)]=!0}),Ic(n)}function UO(e){return e===`middle`||e===`center`}function WO(e){return e.getShallow(`show`)}function GO(e,t,n){var r=e.get(`breaks`,!0);if(r!=null)return!uw()||!n||!KO(t)?void 0:r}function KO(e){return e!==`category`}function qO(e,t,n,r,i,a){var o=QD(e),s=o?e.intervalStub:e;if(s.setExtent(r[0],r[1]),o){var c=e.powStub,l={depth:2},u=e.transformOut(r[0],l),d=e.transformOut(r[1],l),f=aO(n,r);t[0]&&!f[0]&&(u=i[0]),t[1]&&!f[1]&&(d=i[1]),c.setExtent(u,d)}s.setConfig(a)}function JO(e,t){return $D(e)?e.getRawOrdinalNumber(t.value):t.value}function YO(e,t){return $D(e)&&!!t.get(`boundaryGap`)}function XO(e,t){if(e.length===t.length){for(var n=0;nt){a?n.push(o(a,c,t)):i&&n.push(o(i,c,0),o(i,c,t));break}else i&&=(n.push(o(i,c,0)),null),n.push(c),a=c}return n}function rk(e,t,n){var r=e.getVisual(`visualMeta`);if(r&&r.length&&e.count()&&t.type===`cartesian2d`){for(var i,a,o=r.length-1;o>=0;o--){var s=e.getDimensionInfo(r[o].dimension);if(i=s&&s.coordDim,i===`x`||i===`y`){a=r[o];break}}if(a){var c=t.getAxis(i),l=G(a.stops,function(e){return{coord:c.toGlobalCoord(c.dataToCoord(e.value)),color:e.color}}),u=l.length,d=a.outerColors.slice();u&&l[0].coord>l[u-1].coord&&(l.reverse(),d.reverse());var f=nk(l,i===`x`?n.getWidth():n.getHeight()),p=f.length;if(!p&&u)return l[0].coord<0?d[1]?d[1]:l[u-1].color:d[0]?d[0]:l[0].color;var m=10,h=f[0].coord-m,g=f[p-1].coord+m,_=g-h;if(_<.001)return`transparent`;W(f,function(e){e.offset=(e.coord-h)/_}),f.push({offset:p?f[p-1].offset:.5,color:d[1]||`transparent`}),f.unshift({offset:p?f[0].offset:.5,color:d[0]||`transparent`});var v=new By(0,0,0,0,f,!0);return v[i]=h,v[i+`2`]=g,v}}}function ik(e,t,n){var r=e.get(`showAllSymbol`),i=r===`auto`;if(!r||i){var a=n.getAxesByScale(`ordinal`)[0];if(a&&!(i&&ak(a,t))){var o=t.mapDimension(a.dim),s={};return W(a.getViewLabels(),function(e){e.tick.offInterval||(s[JO(a.scale,e.tick)]=1)}),function(e){return!s.hasOwnProperty(t.get(o,e))}}}}function ak(e,t){var n=e.getExtent(),r=Math.abs(n[1]-n[0])/e.scale.count();isNaN(r)&&(r=0);for(var i=t.count(),a=Math.max(1,Math.round(i/5)),o=0;or)return!1;return!0}function ok(e){for(var t=e.length/2;t>0&&eD(e[t*2-2],e[t*2-1]);t--);return t-1}function sk(e,t){return[e[t*2],e[t*2+1]]}function ck(e,t,n){for(var r=e.length/2,i=n===`x`?0:1,a,o,s=0,c=-1,l=0;l=t||a>=t&&o<=t){c=l;break}s=l,a=o}return{range:[s,c],t:(t-a)/(o-a)}}function lk(e){if(e.get([`endLabel`,`show`]))return!0;for(var t=0;t0&&e.get([`emphasis`,`lineStyle`,`width`])===`bolder`){var M=f.getState(`emphasis`).style;M.lineWidth=+f.style.lineWidth+1}d_(f).seriesIndex=e.seriesIndex,bv(f,k,A,j);var N=$O(e.get(`smooth`)),P=e.get(`smoothMonotone`);if(f.setShape({smooth:N,smoothMonotone:P,connectNulls:x}),p){var F=a.getCalculationInfo(`stackedOnSeries`),I=0;p.useStyle(Oc(s.getAreaStyle(),{fill:E,opacity:.7,lineJoin:`bevel`,decal:a.getVisual(`style`).decal})),F&&(I=$O(F.get(`smooth`))),p.setShape({smooth:N,stackedOnSmooth:I,smoothMonotone:P,connectNulls:x}),wv(p,e,`areaStyle`),d_(p).seriesIndex=e.seriesIndex,bv(p,k,A,j)}var L=this._changePolyState;a.eachItemGraphicEl(function(e){e&&(e.onHoverStateChange=L)}),this._polyline.onHoverStateChange=L,this._data=a,this._coordSys=r,this._stackedOnPoints=y,this._points=c,this._step=w,this._valueOrigin=_;var ee=e.get(`triggerEvent`),R=e.get(`triggerLineEvent`),te=R===!0||ee===!0||ee===`line`,ne=R===!0||ee===!0||ee===`area`;this.packEventData(e,f,te),p&&this.packEventData(e,p,ne)},t.prototype.packEventData=function(e,t,n){d_(t).eventData=n?{componentType:`series`,componentSubType:`line`,componentIndex:e.componentIndex,seriesIndex:e.seriesIndex,seriesName:e.name,seriesType:`line`,selfType:t===this._polygon?`area`:`line`}:null},t.prototype.highlight=function(e,t,n,r){var i=e.getData(),a=Fg(i,r);if(this._changePolyState(`emphasis`),!(a instanceof Array)&&a!=null&&a>=0){var o=i.getLayout(`points`),s=i.getItemGraphicEl(a);if(!s){var c=o[a*2],l=o[a*2+1];if(eD(c,l)||this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(c,l))return;var u=e.get(`zlevel`)||0,d=e.get(`z`)||0;s=new WE(i,a),s.x=c,s.y=l,s.setZ(u,d);var f=s.getSymbolPath().getTextContent();f&&(f.zlevel=u,f.z=d,f.z2=this._polyline.z2+1),s.__temp=!0,i.setItemGraphicEl(a,s),s.stopSymbolAnimation(!0),this.group.add(s)}s.highlight()}else _D.prototype.highlight.call(this,e,t,n,r)},t.prototype.downplay=function(e,t,n,r){var i=e.getData(),a=Fg(i,r);if(this._changePolyState(`normal`),a!=null&&a>=0){var o=i.getItemGraphicEl(a);o&&(o.__temp?(i.setItemGraphicEl(a,null),this.group.remove(o)):o.downplay())}else _D.prototype.downplay.call(this,e,t,n,r)},t.prototype._changePolyState=function(e){var t=this._polygon;K_(this._polyline,e),t&&K_(t,e)},t.prototype._newPolyline=function(e){var t=this._polyline;return t&&this._lineGroup.remove(t),t=new dD({shape:{points:e},segmentIgnoreThreshold:2,z2:10}),this._lineGroup.add(t),this._polyline=t,t},t.prototype._newPolygon=function(e,t){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new pD({shape:{points:e,stackedOnPoints:t},segmentIgnoreThreshold:2}),this._lineGroup.add(n),this._polygon=n,n},t.prototype._initSymbolLabelAnimation=function(e,t,n){var r,i,a=t.getBaseAxis(),o=a.inverse;t.type===`cartesian2d`?(r=a.isHorizontal(),i=!1):t.type===`polar`&&(r=a.dim===`angle`,i=!0);var s=e.hostModel,c=s.get(`animationDuration`);zc(c)&&(c=c(null));var l=s.get(`animationDelay`)||0,u=zc(l)?l(null):l;e.eachItemGraphicEl(function(e,a){var s=e;if(s){var d=[e.x,e.y],f=void 0,p=void 0,m=void 0;if(n){if(i){var h=n,g=t.pointToCoord(d);r?(f=h.startAngle,p=h.endAngle,m=-g[1]/180*Math.PI):(f=h.r0,p=h.r,m=g[0])}else{var _=n;r?(f=_.x,p=_.x+_.width,m=e.x):(f=_.y+_.height,p=_.y,m=e.y)}}var v=p===f?0:(m-f)/(p-f);o&&(v=1-v);var y=zc(l)?l(a):c*v+u,b=s.getSymbolPath(),x=b.getTextContent();s.attr({scaleX:0,scaleY:0}),s.animateTo({scaleX:1,scaleY:1},{duration:200,setToFinal:!0,delay:y}),x&&x.animateFrom({style:{opacity:0}},{duration:300,delay:y}),b.disableLabelAnimation=!0}})},t.prototype._initOrUpdateEndLabel=function(e,t,n){var r=e.getModel(`endLabel`);if(lk(e)){var i=e.getData(),a=this._polyline,o=i.getLayout(`points`);if(!o){a.removeTextContent(),this._endLabel=null;return}var s=this._endLabel;s||(s=this._endLabel=new ah({z2:200}),s.ignoreClip=!0,a.setTextContent(this._endLabel),a.disableLabelAnimation=!0);var c=ok(o);c>=0&&(ox(a,sx(e,`endLabel`),{inheritColor:n,labelFetcher:e,labelDataIndex:c,defaultText:function(e,t,n){return n==null?HE(i,e):UE(i,n)},enableTextSetter:!0},dk(r,t)),a.textConfig.position=null)}else this._endLabel&&=(this._polyline.removeTextContent(),null)},t.prototype._endLabelOnDuring=function(e,t,n,r,i,a,o){var s=this._endLabel,c=this._polyline;if(s){e<1&&r.originalX==null&&(r.originalX=s.x,r.originalY=s.y);var l=n.getLayout(`points`),u=n.hostModel,d=u.get(`connectNulls`),f=a.get(`precision`),p=a.get(`distance`)||0,m=o.getBaseAxis(),h=m.isHorizontal(),g=m.inverse,_=t.shape,v=g?h?_.x:_.y+_.height:h?_.x+_.width:_.y,y=(h?p:0)*(g?-1:1),b=(h?0:-p)*(g?-1:1),x=h?`x`:`y`,S=ck(l,v,x),C=S.range,w=C[1]-C[0],T=void 0;if(w>=1){if(w>1&&!d){var E=sk(l,C[0]);s.attr({x:E[0]+y,y:E[1]+b}),i&&(T=u.getRawValue(C[0]))}else{var E=c.getPointOn(v,x);E&&s.attr({x:E[0]+y,y:E[1]+b});var D=u.getRawValue(C[0]),O=u.getRawValue(C[1]);i&&(T=qg(n,f,D,O,S.t))}r.lastFrameIndex=C[0]}else{var k=e===1||r.lastFrameIndex>0?C[0]:0,E=sk(l,k);i&&(T=u.getRawValue(k)),s.attr({x:E[0]+y,y:E[1]+b})}if(i){var A=_x(s);typeof A.setLabelText==`function`&&A.setLabelText(T)}}},t.prototype._doUpdateAnimation=function(e,t,n,r,i,a,o){var s=this._polyline,c=this._polygon,l=e.hostModel,u=oD(this._data,e,this._stackedOnPoints,t,this._coordSys,n,this._valueOrigin,a),d=u.current,f=u.stackedOnCurrent,p=u.next,m=u.stackedOnNext;if(i&&(f=tk(u.stackedOnCurrent,u.current,n,i,o),d=tk(u.current,null,n,i,o),m=tk(u.stackedOnNext,u.next,n,i,o),p=tk(u.next,null,n,i,o)),QO(d,p)>3e3||c&&QO(f,m)>3e3){s.stopAnimation(),s.setShape({points:p}),c&&(c.stopAnimation(),c.setShape({points:p,stackedOnPoints:m}));return}s.shape.__points=u.current,s.shape.points=d;var h={shape:{points:p}};u.current!==d&&(h.shape.__points=u.next),s.stopAnimation(),nb(s,h,l),c&&(c.setShape({points:d,stackedOnPoints:f}),c.stopAnimation(),nb(c,{shape:{stackedOnPoints:m}},l),s.shape.points!==c.shape.points&&(c.shape.points=s.shape.points));for(var g=[],_=u.status,v=0;v<_.length;v++)if(_[v].cmd===`=`){var y=e.getItemGraphicEl(_[v].idx1);y&&g.push({el:y,ptIdx:v})}s.animators&&s.animators.length&&s.animators[0].during(function(){c&&c.dirtyShape();for(var e=s.shape.__points,t=0;tt&&(t=e[n]);return isFinite(t)?t:NaN},min:function(e){for(var t=1/0,n=0;n10&&a.type===`cartesian2d`&&i){var s=a.getBaseAxis(),c=a.getOtherAxis(s),l=s.getExtent(),u=n.getDevicePixelRatio(),d=Math.abs(l[1]-l[0])*(u||1),f=Math.round(o/d);if(isFinite(f)&&f>1){i===`lttb`?e.setData(r.lttbDownSample(r.mapDimension(c.dim),1/f)):i===`minmax`&&e.setData(r.minmaxDownSample(r.mapDimension(c.dim),1/f));var p=void 0;J(i)?p=mk[i]:zc(i)&&(p=i),p&&e.setData(r.downSample(r.mapDimension(c.dim),1/f,p,hk))}}}}}function _k(e){e.registerChartView(fk),e.registerSeriesModel(VE),e.registerLayout(pk(`line`,!0)),e.registerVisual({seriesType:`line`,reset:function(e){var t=e.getData(),n=e.getModel(`lineStyle`).getLineStyle();n&&!n.stroke&&(n.stroke=t.getVisual(`style`).fill),t.setVisual(`legendLineStyle`,n)}}),e.registerProcessor(e.PRIORITY.PROCESSOR.STATISTIC,gk(`line`))}var vk=Ig(),yk=Ig(),bk={estimate:1,determine:2};function xk(e){return{out:{noPxChangeTryDetermine:[]},kind:e}}function Sk(e,t){var n=e.getLabelModel().get(`customValues`);if(n){var r=e.scale;return{labels:G(wk(n,r),function(t,n){return{formattedLabel:RO(e)(t,n),rawLabel:r.getLabel(t),tick:t}})}}return e.type===`category`?Tk(e,t):Ok(e)}function Ck(e,t,n){var r=e.scale,i=e.getTickModel().get(`customValues`);return i?{ticks:wk(i,r)}:e.type===`category`?Dk(e,t):{ticks:r.getTicks(n)}}function wk(e,t){var n=t.getExtent(),r=[];return W(e,function(e){e=t.parse(e),e>=n[0]&&e<=n[1]&&r.push(e)}),a_(r,s_,null),zh(r),G(r,function(e){return{value:e}})}function Tk(e,t){var n=e.getLabelModel(),r=Ek(e,n,t);return!n.get(`show`)||e.scale.isBlank()?{labels:[]}:r}function Ek(e,t,n){var r=Ak(e),i=BO(t),a=n.kind===bk.estimate;if(!a){var o=Mk(r,i);if(o)return o}var s,c;zc(i)?s=zk(e,i,!1):(c=i===`auto`?Pk(e,n):i,s=zk(e,c,!1));var l={labels:s,labelCategoryInterval:c};return a?n.out.noPxChangeTryDetermine.push(function(){return Nk(r,i,l),!0}):Nk(r,i,l),l}function Dk(e,t){var n=kk(e),r=BO(t),i=Mk(n,r);if(i)return i;var a,o;if((!t.get(`show`)||e.scale.isBlank())&&(a=[]),zc(r))a=zk(e,r,!0);else if(r===`auto`){var s=Ek(e,e.getLabelModel(),xk(bk.determine));o=s.labelCategoryInterval,a=G(s.labels,function(e){return e.tick})}else o=r,a=zk(e,o,!0);return Nk(n,r,{ticks:a,tickCategoryInterval:o})}function Ok(e){var t=e.scale.getTicks(),n=RO(e);return{labels:G(t,function(t,r){return{formattedLabel:n(t,r),rawLabel:e.scale.getLabel(t),tick:t}})}}var kk=jk(`axisTick`),Ak=jk(`axisLabel`);function jk(e){return function(t){return yk(t)[e]||(yk(t)[e]={list:[]})}}function Mk(e,t){for(var n=0;nu&&(l=Math.max(1,Math.floor(c/u)));for(var d=s[0],f=e.dataToCoord(d+1)-e.dataToCoord(d),p=Math.abs(f*Math.cos(a)),m=Math.abs(f*Math.sin(a)),h=0,g=0;d<=s[1];d+=l){var _=0,v=0,y=Ku(i({value:d}),r.font,`center`,`top`);_=y.width*1.3,v=y.height*1.3,h=Math.max(h,_,7),g=Math.max(g,v,7)}var b=h/p,x=g/m;isNaN(b)&&(b=1/0),isNaN(x)&&(x=1/0);var S=Math.max(0,Math.floor(Math.min(b,x)));return n===bk.estimate?(t.out.noPxChangeTryDetermine.push(K(Ik,null,e,S,c)),S):Lk(e,S,c)??S}function Ik(e,t,n){return Lk(e,t,n)==null}function Lk(e,t,n){var r=vk(e.model),i=e.getExtent(),a=r.lastAutoInterval,o=r.lastTickCount;if(a!=null&&o!=null&&Math.abs(a-t)<=1&&Math.abs(o-n)<=1&&a>t&&r.axisExtent0===i[0]&&r.axisExtent1===i[1])return a;r.lastTickCount=n,r.lastAutoInterval=t,r.axisExtent0=i[0],r.axisExtent1=i[1]}function Rk(e){var t=e.getLabelModel();return{axisRotate:e.getRotate?e.getRotate():e.isHorizontal&&!e.isHorizontal()?90:0,labelRotate:t.get(`rotate`)||0,font:t.getFont()}}function zk(e,t,n){var r=RO(e),i=e.scale,a=[],o=zc(t);return sO(i,o?0:t,function(e,s){var c=i.getLabel(e);if(o){var l=!!t(e.value,c);if(e.offInterval=!l,!l&&!s)return}a.push(n?e:{formattedLabel:r(e),rawLabel:c,tick:e})}),a}var Bk=Ig();function Vk(e){Bk(e).prepare={}}function Hk(e){Bk(e).fullUpdate={}}function Uk(e){return Bk(e).prepare}function Wk(e){return Bk(e).fullUpdate}var Gk=r_(),Kk=Ig(),qk=Ig();function Jk(e,t){var n=e.model,r=Kk(Wk(n.ecModel)).keyed,i=r&&r.get(t);return i&&i.get(n.uid)}function Yk(e,t){return Qk(Jk(e,t))}function Xk(e,t){var n=[];return Zk(e.model.ecModel,function(e){for(var r=0;r0?(t>o&&(o=t),a=!1):t===-2&&(a=!0))}),ig(n)&&n>0&&ig(o)?(e.w=r/n*o,e.w2=o):a&&(e.w=r*dA,e.w2=e.w*n/r)}var hA=[0,1],gA=function(){function e(e,t,n){this.onBand=!1,this.inverse=!1,this.dim=e,this.scale=t,this._extent=n||[0,0]}return e.prototype.contain=function(e){var t=this._extent,n=Math.min(t[0],t[1]),r=Math.max(t[0],t[1]);return e>=n&&e<=r},e.prototype.containData=function(e){return this.scale.contain(this.scale.parse(e))},e.prototype.getExtent=function(){return this._extent.slice()},e.prototype.setExtent=function(e,t){var n=this._extent;n[0]=e,n[1]=t},e.prototype.dataToCoord=function(e,t){var n=this.scale;return e=n.normalize(n.parse(e)),Nh(e,hA,_A(this),t)},e.prototype.coordToData=function(e,t){var n=Nh(e,_A(this),hA,t);return this.scale.scale(n)},e.prototype.pointToData=function(e,t){},e.prototype.getTicksCoords=function(e){e||={};var t=e.tickModel||this.getTickModel(),n=G(Ck(this,t,{breakTicks:e.breakTicks,pruneByBreak:e.pruneByBreak}).ticks,function(e){return{coord:this.dataToCoord(JO(this.scale,e)),tick:e}},this),r=t.get(`alignWithLabel`),i=vA(this,n,r);return G(n,function(e){return{coord:e.coord,tickValue:e.tick.value,onBand:i}})},e.prototype.getMinorTicksCoords=function(){if($D(this.scale))return[];var e=this.model.getModel(`minorTick`).get(`splitNumber`);return e>0&&e<100||(e=5),G(this.scale.getMinorTicks(e),function(e){return G(e,function(e){return{coord:this.dataToCoord(e),tickValue:e}},this)},this)},e.prototype.getViewLabels=function(e){return e||=xk(bk.determine),Sk(this,e).labels},e.prototype.getLabelModel=function(){return this.model.getModel(`axisLabel`)},e.prototype.getTickModel=function(){return this.model.getModel(`axisTick`)},e.prototype.getBandWidth=function(){return fA(this,{min:1}).w},e.prototype.calculateCategoryInterval=function(e){return e||=xk(bk.determine),Fk(this,e)},e}();function _A(e){var t=e.getExtent();if(e.onBand){var n=(t[1]-t[0])/e.scale.count()/2;t[0]+=n,t[1]-=n}return t}function vA(e,t,n){var r=t.length;if(!e.onBand||n||!r)return!1;var i=fA(e).w;if(!i)return!1;W(t,function(e){e.coord-=i/2});var a=e.scale.getExtent(),o=t[r-1];return o.tick.offInterval&&t.pop(),t.push({coord:o.coord+i,tick:{value:a[1]+1}}),!0}var yA=function(e){H(t,e);function t(t,n,r,i,a){var o=e.call(this,t,n,r)||this;return o.index=0,o.type=i||`value`,o.position=a||`bottom`,o}return t.prototype.isHorizontal=function(){var e=this.position;return e===`top`||e===`bottom`},t.prototype.getGlobalExtent=function(e){var t=this.getExtent();return t[0]=this.toGlobalCoord(t[0]),t[1]=this.toGlobalCoord(t[1]),e&&t[0]>t[1]&&t.reverse(),t},t.prototype.pointToData=function(e,t){return this.coordToData(this.toLocalCoord(e[this.dim===`x`?0:1]),t)},t.prototype.setCategorySortInfo=function(e){if(this.type!==`category`)return!1;this.model.option.categorySortInfo=e,this.scale.setSortInfo(e)},t}(gA),bA=[`label`,`labelLine`,`layoutOption`,`priority`,`defaultAttr`,`marginForce`,`minMarginForce`,`marginDefault`,`suggestIgnore`],xA=1,SA=2,CA=xA|SA;function wA(e,t,n){n||=CA,t?e.dirty|=n:e.dirty&=~n}function TA(e,t){return t||=CA,e.dirty==null||!!(e.dirty&t)}function EA(e){if(e)return TA(e)&&DA(e,e.label,e),e}function DA(e,t,n){var r=t.getComputedTransform();e.transform=Jb(e.transform,r);var i=e.localRect=qb(e.localRect,t.getBoundingRect()),a=t.style,o=a.margin,s=n&&n.marginForce,c=n&&n.minMarginForce,l=n&&n.marginDefault,u=a.__marginType;u==null&&l&&(o=l,u=yx.textMargin);for(var d=0;d<4;d++)OA[d]=u===yx.minMargin&&c&&c[d]!=null?c[d]:s&&s[d]!=null?s[d]:o?o[d]:0;u===yx.textMargin&&zb(i,OA,!1,!1);var f=e.rect=qb(e.rect,i);return r&&f.applyTransform(r),u===yx.minMargin&&zb(f,OA,!1,!1),e.axisAligned=Gb(r),(e.label=e.label||{}).ignore=t.ignore,wA(e,!1),wA(e,!0,SA),e}var OA=[0,0,0,0];function kA(e,t,n){return e.transform=Jb(e.transform,n),e.localRect=qb(e.localRect,t),e.rect=qb(e.rect,t),n&&e.rect.applyTransform(n),e.axisAligned=Gb(n),e.obb=void 0,(e.label=e.label||{}).ignore=!1,e}function AA(e,t){if(e){e.label.x+=t.x,e.label.y+=t.y,e.label.markRedraw();var n=e.transform;n&&(n[4]+=t.x,n[5]+=t.y);var r=e.rect;r&&(r.x+=t.x,r.y+=t.y);var i=e.obb;i&&i.fromBoundingRect(e.localRect,n)}}function jA(e,t){for(var n=0;n.1?`x`:`y`,u=a.transGroup[l];if(o.sort(function(e,t){return Math.abs(e.label[l]-u)-Math.abs(t.label[l]-u)}),c&&s){var d=i.getExtent(),f=Math.min(d[0],d[1]),p=Math.max(d[0],d[1])-f;s.union(new Eu(f,0,p,1))}a.stOccupiedRect=s,a.labelInfoList=o}var GA=Vl(),KA=new Eu(0,0,0,0),qA=function(e,t,n,r,i,a){if(UO(e.nameLocation)){var o=a.stOccupiedRect;o&&JA(kA({},o,a.transGroup.transform),r,i)}else YA(a.labelInfoList,a.dirVec,r,i)};function JA(e,t,n){var r=new fu;PA(e,t,r,{direction:Math.atan2(n.y,n.x),bidirectional:!1,touchThreshold:.05})&&AA(t,r)}function YA(e,t,n,r){for(var i=fu.dot(r,t)>=0,a=0,o=e.length;a0?`top`:`bottom`,i=`center`):Kh(r-RA)?(a=n>0?`bottom`:`top`,i=`center`):(a=`middle`,i=r>0&&r0?`right`:`left`:n>0?`left`:`right`),{rotation:r,textAlign:i,textVerticalAlign:a}},e.makeAxisEventDataBase=function(e){var t={componentType:e.mainType,componentIndex:e.componentIndex};return t[e.mainType+`Index`]=e.componentIndex,t},e.isLabelSilent=function(e){var t=e.get(`tooltip`);return e.get(`silent`)||!(e.get(`triggerEvent`)||t&&t.show)},e}(),ZA=[`axisLine`,`axisTickLabelEstimate`,`axisTickLabelDetermine`,`axisName`],QA={axisLine:function(e,t,n,r,i,a,o){var s=r.get([`axisLine`,`show`]);if(s===`auto`&&(s=!0,e.raw.axisLineAutoShow!=null&&(s=!!e.raw.axisLineAutoShow)),s){var c=r.axis.getExtent(),l=a.transform,u=[c[0],0],d=[c[1],0],f=u[0]>d[0];l&&(lu(u,u,l),lu(d,d,l));var p=U({lineCap:`round`},r.getModel([`axisLine`,`lineStyle`]).getLineStyle()),m={strokeContainThreshold:e.raw.strokeContainThreshold||5,silent:!0,z2:1,style:p};if(r.get([`axisLine`,`breakLine`])&&pw(r.axis.scale))IA().buildAxisBreakLine(r,i,a,m);else{var h=new jy(U({shape:{x1:u[0],y1:u[1],x2:d[0],y2:d[1]}},m));Cb(h.shape,h.style.lineWidth),h.anid=`line`,i.add(h)}var g=r.get([`axisLine`,`symbol`]);if(g!=null){var _=r.get([`axisLine`,`symbolSize`]);J(g)&&(g=[g,g]),(J(_)||Vc(_))&&(_=[_,_]);var v=BE(r.get([`axisLine`,`symbolOffset`])||0,_),y=_[0],b=_[1];W([{rotate:e.rotation+Math.PI/2,offset:v[0],r:0},{rotate:e.rotation-Math.PI/2,offset:v[1],r:Math.sqrt((u[0]-d[0])*(u[0]-d[0])+(u[1]-d[1])*(u[1]-d[1]))}],function(t,n){if(g[n]!==`none`&&g[n]!=null){var r=RE(g[n],-y/2,-b/2,y,b,p.stroke,!0),a=t.r+t.offset,o=f?d:u;r.attr({rotation:t.rotate,x:o[0]+a*Math.cos(e.rotation),y:o[1]-a*Math.sin(e.rotation),silent:!0,z2:11}),i.add(r)}})}}},axisTickLabelEstimate:function(e,t,n,r,i,a,o,s){sj(t,i,s)&&$A(e,t,n,r,i,a,o,bk.estimate)},axisTickLabelDetermine:function(e,t,n,r,i,a,o,s){sj(t,i,s)&&$A(e,t,n,r,i,a,o,bk.determine);var c=aj(e,i,a,r);nj(e,t.labelLayoutList,c),oj(e,i,a,r,e.tickDirection)},axisName:function(e,t,n,r,i,a,o,s){var c=n.ensureRecord(r);t.nameEl&&=(i.remove(t.nameEl),c.nameLayout=c.nameLocation=null);var l=e.axisName;if(mj(l)){var u=e.nameLocation,d=e.nameDirection,f=r.getModel(`nameTextStyle`),p=r.get(`nameGap`)||0,m=r.axis.getExtent(),h=r.axis.inverse?-1:1,g=new fu(0,0),_=new fu(0,0);u===`start`?(g.x=m[0]-h*p,_.x=-h):u===`end`?(g.x=m[1]+h*p,_.x=h):(g.x=(m[0]+m[1])/2,g.y=e.labelOffset+d*p,_.y=d);var v=Vl();_.transform(Kl(v,v,e.rotation));var y=r.get(`nameRotate`);y!=null&&(y=y*RA/180);var b,x;UO(u)?b=XA.innerTextLayout(e.rotation,y??e.rotation,d):(b=ej(e.rotation,u,y||0,m),x=e.raw.axisNameAvailableWidth,x!=null&&(x=Math.abs(x/Math.sin(b.rotation)),!isFinite(x)&&(x=null)));var S=f.getFont(),C=r.get(`nameTruncate`,!0)||{},w=C.ellipsis,T=Yc(e.raw.nameTruncateMaxWidth,C.maxWidth,x),E=s.nameMarginLevel||0,D=new ah({x:g.x,y:g.y,rotation:b.rotation,silent:XA.isLabelSilent(r),style:cx(f,{text:l,font:S,overflow:`truncate`,width:T,ellipsis:w,fill:f.getTextColor()||r.get([`axisLine`,`lineStyle`,`color`]),align:f.get(`align`)||b.textAlign,verticalAlign:f.get(`verticalAlign`)||b.textVerticalAlign}),z2:1});if(Hb({el:D,componentModel:r,itemName:l}),D.__fullText=l,D.anid=`name`,r.get(`triggerEvent`)){var O=XA.makeAxisEventDataBase(r);O.targetType=`axisName`,O.name=l,d_(D).eventData=O}a.add(D),D.updateTransform(),t.nameEl=D;var k=c.nameLayout=EA({label:D,priority:D.z2,defaultAttr:{ignore:D.ignore},marginDefault:UO(u)?zA[E]:BA[E]});if(c.nameLocation=u,i.add(D),D.decomposeTransform(),e.shouldNameMoveOverlap&&k){var A=n.ensureRecord(r);n.resolveAxisNameOverlap(e,n,r,k,_,A)}}}};function $A(e,t,n,r,i,a,o,s){lj(t)||cj(e,t,i,s,r,o);var c=t.labelLayoutList;dj(e,r,c,a),gj(r,e.rotation,c);var l=e.optionHideOverlap;tj(r,c,l),l&&NA(Pc(c,function(e){return e&&!e.label.ignore})),WA(e,n,r,c)}function ej(e,t,n,r){var i=Gh(n-e),a,o,s=r[0]>r[1],c=t===`start`&&!s||t!==`start`&&s;return Kh(i-RA/2)?(o=c?`bottom`:`top`,a=`center`):Kh(i-RA*1.5)?(o=c?`top`:`bottom`,a=`center`):(o=`middle`,a=iRA/2?c?`left`:`right`:c?`right`:`left`),{rotation:i,textAlign:a,textVerticalAlign:o}}function tj(e,t,n){var r=e.axis,i=e.get([`axisLabel`,`customValues`]);if(VO(r))return;function a(e,a,o){var s=EA(t[a]),c=EA(t[o]),l=r.scale;if(s&&c){if(e==null){if(!n&&i)return;var u=VA(s.label).labelInfo.tick;if(ZD(l)&&u.notNice||$D(l)&&u.offInterval){rj(s.label);return}}if(e===!1||s.suggestIgnore){rj(s.label);return}if(c.suggestIgnore){rj(c.label);return}var d=.1;if(!n){var f=[0,0,0,0];s=jA({marginForce:f},s),c=jA({marginForce:f},c)}PA(s,c,null,{touchThreshold:d})&&rj(e?c.label:s.label)}}var o=e.get([`axisLabel`,`showMinLabel`]),s=e.get([`axisLabel`,`showMaxLabel`]),c=t.length;a(o,0,1),a(s,c-1,c-2)}function nj(e,t,n){e.showMinorTicks||W(t,function(e){if(e&&e.label.ignore)for(var t=0;t0&&u[1]>0&&!d[0]&&(u[0]=0),u[0]<0&&u[1]<0&&!d[1]&&(u[1]=0));var y=!1;u[0]>u[1]&&(u.reverse(),y=!0);var b=Dj(e,t.get(`startValue`,!0)),x=b!=null;!ig(b)&&r&&(b=e.getDefaultStartValue?e.getDefaultStartValue():0),ig(b)&&(x||!_||v)&&(bu[1]&&!d[1]&&(u[1]=b,d[1]=!0)),Ej(this._i={scale:e,dataMM:l,noZoomEffMM:u,zoomMM:[],fixMM:d,zoomFixMM:[!1,!1],startValue:b,isBlank:g,incl0:v,tggAxInv:y,ctnShp:i},u)}return e.prototype.makeNoZoom=function(){return this._i.noZoomEffMM.slice()},e.prototype.makeFinal=function(){var e=this._i,t=e.zoomMM,n=e.noZoomEffMM,r=e.zoomFixMM,i=e.fixMM,a={fixMM:i,zoomFixMM:r,isBlank:e.isBlank,incl0:e.incl0,tggAxInv:e.tggAxInv,ctnShp:e.ctnShp,effMM:n.slice()},o=a.effMM;return t[0]!=null&&(o[0]=t[0],i[0]=r[0]=!0),t[1]!=null&&(o[1]=t[1],i[1]=r[1]=!0),Ej(e,o),a},e.prototype.makeRenderInfo=function(){return{startValue:this._i.startValue}},e.prototype.setZoomMM=function(e,t){this._i.zoomMM[e]=t},e}();function Ej(e,t){var n=e.scale,r=e.dataMM;n.sanitize&&(t[0]=n.sanitize(t[0],r),t[1]=n.sanitize(t[1],r),n_(t))}function Dj(e,t){return t==null?null:Jc(t)?NaN:e.parse(t)}function Oj(e,t){var n;if($D(e))n=[0,0];else{var r=t.get(`boundaryGap`);typeof r==`boolean`&&(r=null),n=q(r)?r:[r,r]}return[kj(n[0]),kj(n[1])]}function kj(e){return Xu(typeof e==`boolean`?0:e,1)||0}function Aj(e){var t=Cj(e.scale);return t.extent||=Jg(),t}function jj(e,t){Aj(e).dimIdxInCoord=t.get(e.dim)}function Mj(e,t){var n=e.scale,r=e.model,i=e.dim;n.rawExtentInfo||Nj(n,e,i,r,t)}function Nj(e,t,n,r,i){var a=Aj(t),o=a.extent,s=!1;$k(t,function(r){if(r.boxCoordinateSystem){var i=gC(r).coord,c=a.dimIdxInCoord;if(c>=0&&q(i)){var l=i[c];l!=null&&!q(l)&&Yg(o,e.parse(l))}}else if(r.coordinateSystem){var u=r.getData();if(u){var d=e.getFilter?e.getFilter():null;W(HO(u,n),function(e){Qg(o,u.getApproximateExtent(e,d))})}r.__requireStartValue&&r.__requireStartValue(t)&&(s=!0)}});var c=zj(e,t,r);Fj(e,new Tj(e,r,o,s,c),i),a.extent=null}function Pj(e,t){var n=e.scale;Fj(n,new Tj(n,e.model,t,!1,!1),wj)}function Fj(e,t,n){e.rawExtentInfo=t,t.from=n}function Ij(e,t){Lj.set(e,t)}var Lj=X();function Rj(e,t,n,r,i){e.rawExtentInfo||Pj({scale:e,model:t},i||Jg());var a=e.rawExtentInfo.makeFinal(),o=a.effMM;return e.setExtent(o[0],o[1]),e.setBlank(a.isBlank),r&&a.tggAxInv&&n&&!n.get(`legacyMinMaxDontInverseAxis`)&&(r.inverse=!r.inverse),a}function zj(e,t,n){var r=YO(e,n),i=n.get(`containShape`,!0);if(i==null&&!r&&(i=!0),!i)return!1;var a=!1;return rA(t,function(e){a=!!Lj.get(e)||a}),a}function Bj(e,t,n,r){if(n.ctnShp){var i;if(rA(e,function(t){var n=Lj.get(t);if(n){var a=n(e,r);a&&(i||=[0,0],Xg(i,a[0]),Zg(i,a[1]),IO(e))}}),i){var a=t.getExtent();if($D(t))e.onBand||t.setExtent2(1,Sh(a[0],a[0]+i[0]),Ch(a[1],a[1]+i[1]));else{var o=a.slice();n.zoomFixMM[0]||(o[0]=Sh(o[0],t.transformOut(t.transformIn(o[0],null)+i[0],null))),n.zoomFixMM[1]||(o[1]=Ch(o[1],t.transformOut(t.transformIn(o[1],null)+i[1],null))),(o[0]a[1])&&t.setExtent2(1,o[0],o[1])}}}}function Vj(){aA(`liPosMinGap`,Hj)}function Hj(e,t,n){var r=X(),i=n.serUids,a=n.liPosMinGap,o,s=t.axis,c=s.scale,l=c.needTransform(),u=c.getFilter?c.getFilter():null,d=OS(u);function f(n){tA(e,t.sers,function(e){var t=e.getRawData(),r=t.getDimensionIndex(t.mapDimension(s.dim));r>=0&&n(r,e,t.getStore())})}var p=0;if(f(function(e,t,n){r.set(t.uid,1),(!i||!i.hasKey(t.uid))&&(o=!0),p+=n.count()}),(!i||i.keys().length!==r.keys().length)&&(o=!0),!o&&a!=null){t.liPosMinGap=a;return}iD(Uj,p);var m=0;f(function(e,t,n){for(var r=0,i=n.count();r0&&v0?-2:-1,n.serUids=r}var Uj=iD({ctor:nD},50);function Wj(e){return function(t,n){var r=fA(t,{fromStat:{key:e}});if(ig(r.w2))return[-r.w2/2,r.w2/2]}}function Gj(e,t){return e+`|&`+t}function Kj(e){return Vj(),{liPosMinGap:!$D(e.scale)}}function qj(e,t,n,r){lA(e,{key:t,seriesType:n,coordSysType:r,getMetrics:Kj})}function Jj(e){return e.scale.rawExtentInfo.makeRenderInfo().startValue}var Yj={left:0,right:0,top:0,bottom:0},Xj=[`25%`,`25%`],Zj=`cartesian2d`,Qj=function(e){H(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.mergeDefaultAndTheme=function(t,n){var r=_T(t.outerBounds);e.prototype.mergeDefaultAndTheme.apply(this,arguments),r&&t.outerBounds&&gT(t.outerBounds,r)},t.prototype.mergeOption=function(t,n){e.prototype.mergeOption.apply(this,arguments),this.option.outerBounds&&t.outerBounds&&gT(this.option.outerBounds,t.outerBounds)},t.type=`grid`,t.dependencies=[`xAxis`,`yAxis`],t.layoutMode=`box`,t.defaultOption={show:!1,z:0,left:`15%`,top:65,right:`10%`,bottom:80,containLabel:!1,outerBoundsMode:`auto`,outerBounds:Yj,outerBoundsContain:`all`,outerBoundsClampWidth:Xj[0],outerBoundsClampHeight:Xj[1],backgroundColor:Q.color.transparent,borderWidth:1,borderColor:Q.color.neutral30},t}(bT),$j=r_(),eM=`__ec_stack_`;function tM(e){return e.get(`stack`)||eM+e.seriesIndex}function nM(e){if($D(e.axis.scale)){for(var t=fA(e.axis),n=[],r=0;ro&&(o=a),o!==u&&(t.width=o,n-=o+l*o,r--)}}),u=(n-c)/(r+(r-1)*l),u=Ch(u,0);var d=0,f;W(o,function(e){var t=s[e];t.width||=u,f=t,d+=t.width*(1+l)}),f&&(d-=f.width*l);var p={},m=-d/2;return W(o,function(e){var n=s[e];p[e]=p[e]||{bandWidth:t,offset:m,width:n.width},m+=n.width*(1+l)}),p}function oM(e){return{seriesType:e,overallReset:function(t){var n=Gj(e,Zj);nA(t,n,function(t){var r=rM(t,e);eA(t,n,function(e){var t=r.columnMap[tM(e)];e.getData().setLayout({bandWidth:t.bandWidth,offset:t.offset,size:t.width})})})}}}function sM(e){return{seriesType:e,plan:mD(),reset:function(e){if(vj(e)){var t=e.getData(),n=e.coordinateSystem,r=n.getBaseAxis(),i=n.getOtherAxis(r),a=t.getDimensionIndex(t.mapDimension(i.dim)),o=t.getDimensionIndex(t.mapDimension(r.dim)),s=e.get(`showBackground`,!0),c=t.mapDimension(i.dim),l=t.getCalculationInfo(`stackResultDimension`),u=TC(t,c)&&!!t.getCalculationInfo(`stackedOnSeries`),d=i.isHorizontal(),f=i.toGlobalCoord(i.dataToCoord(Jj(i))),p=cM(e),m=e.get(`barMinHeight`)||0,h=l&&t.getDimensionIndex(l),g=t.getLayout(`size`),_=t.getLayout(`offset`);return{progress:function(e,t){for(var r=e.count,i=p&&rD(r*3),c=p&&s&&rD(r*3),l=p&&rD(r),v=n.master.getRect(),y=d?v.width:v.height,b,x=t.getStore(),S=0;(b=e.next())!=null;){var C=x.get(u?h:a,b),w=x.get(o,b),T=f,E=void 0;u&&(E=+C-x.get(a,b));var D=void 0,O=void 0,k=void 0,A=void 0;if(d){var j=n.dataToPoint([C,w]);u&&(T=n.dataToPoint([E,w])[0]),D=T,O=j[1]+_,k=j[0]-T,A=g,wh(k)s){u=(p+l)/2;break}f===1&&(d=m-r[0].tickValue)}u??(l?l&&(u=r[r.length-1].coord):u=r[0].coord),a[n]=e.toGlobalCoord(u)}});else{var o=this.getData(),s=o.getLayout(`offset`),c=o.getLayout(`size`),l=+!r.getBaseAxis().isHorizontal();a[l]+=s+c/2}return a}return[NaN,NaN]},t.prototype.__requireStartValue=function(e){return this.getBaseAxis()!==e},t.type=`series.__base_bar__`,t.defaultOption={z:2,coordinateSystem:`cartesian2d`,legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:`mod`,defaultBarGap:`10%`},t}(CE);CE.registerClass(dM);var fM=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.getInitialData=function(){return kC(null,this,{useEncodeDefaulter:!0,createInvertedIndices:!!this.get(`realtimeSort`,!0)||null})},t.prototype.getProgressive=function(){return this.get(`large`)?this.get(`progressive`):!1},t.prototype.__preparePipelineContext=function(e,t){var n=l_(this,e,t);return n.progressiveRender&&(n.large=!0),n},t.prototype.brushSelector=function(e,t,n){return n.rect(t.getItemLayout(e))},t.type=`series.bar`,t.dependencies=[`grid`,`polar`],t.defaultOption=IC(dM.defaultOption,{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:`rgba(180, 180, 180, 0.2)`,borderColor:null,borderWidth:0,borderType:`solid`,borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1},select:{itemStyle:{borderColor:Q.color.primary,borderWidth:2}},realtimeSort:!1}),t}(dM),pM=`\0__throttleOriginMethod`,mM=`\0__throttleRate`,hM=`\0__throttleType`;function gM(e,t,n){var r,i=0,a=0,o=null,s,c,l,u;t||=0;function d(){a=new Date().getTime(),o=null,e.apply(c,l||[])}var f=function(){var e=[...arguments];r=new Date().getTime(),c=this,l=e;var f=u||t,p=u||n;u=null,s=r-(p?i:a)-f,clearTimeout(o),p?o=setTimeout(d,f):s>=0?d():o=setTimeout(d,-s),i=r};return f.clear=function(){o&&=(clearTimeout(o),null)},f.debounceNextCall=function(e){u=e},f}function _M(e,t,n,r){var i=e[t];if(i){var a=i[pM]||i,o=i[hM];if(i[mM]!==n||o!==r){if(n==null||!r)return e[t]=a;i=e[t]=gM(a,n,r===`debounce`),i[pM]=a,i[hM]=r,i[mM]=n}return i}}function vM(e,t){var n=e[t];n&&n[pM]&&(n.clear&&n.clear(),e[t]=n[pM])}var yM=function(){function e(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=Math.PI*2,this.clockwise=!0}return e}(),bM=function(e){H(t,e);function t(t){var n=e.call(this,t)||this;return n.type=`sausage`,n}return t.prototype.getDefaultShape=function(){return new yM},t.prototype.buildPath=function(e,t){var n=t.cx,r=t.cy,i=Math.max(t.r0||0,0),a=Math.max(t.r,0),o=(a-i)*.5,s=i+o,c=t.startAngle,l=t.endAngle,u=t.clockwise,d=Math.PI*2,f=u?l-cMath.PI/2&&ua)return!0;a=l}return!1},t.prototype._isOrderDifferentInView=function(e,t){for(var n=t.scale,r=n.getExtent(),i=Math.max(0,r[0]),a=Math.min(r[1],n.getOrdinalMeta().categories.length-1);i<=a;++i)if(e.ordinalNumbers[i]!==n.getRawOrdinalNumber(i))return!0},t.prototype._updateSortWithinSameData=function(e,t,n,r){if(this._isOrderChangedWithinSameData(e,t,n)){var i=this._dataSort(e,n,t);this._isOrderDifferentInView(i,n)&&(this._removeOnRenderedListener(r),r.dispatchAction({type:`changeAxisOrder`,componentType:n.dim+`Axis`,axisId:n.index,sortInfo:i}))}},t.prototype._dispatchInitSort=function(e,t,n){var r=t.baseAxis,i=this._dataSort(e,r,function(n){return e.get(e.mapDimension(t.otherAxis.dim),n)});n.dispatchAction({type:`changeAxisOrder`,componentType:r.dim+`Axis`,isInitSort:!0,axisId:r.index,sortInfo:i})},t.prototype.remove=function(e,t){this._clear(this._model),this._removeOnRenderedListener(t)},t.prototype.dispose=function(e,t){this._removeOnRenderedListener(t)},t.prototype._removeOnRenderedListener=function(e){this._onRendered&&=(e.getZr().off(`rendered`,this._onRendered),null)},t.prototype._clear=function(e){var t=this.group,n=this._data;e&&e.isAnimationEnabled()&&n&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],n.eachItemGraphicEl(function(t){sb(t,e,d_(t).dataIndex)})):t.removeAll(),this._data=null,this._isFirstFrame=!0},t.prototype._removeBackground=function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null},t.type=`bar`,t}(_D),kM={cartesian2d:function(e,t){var n=t.width<0?-1:1,r=t.height<0?-1:1;n<0&&(t.x+=t.width,t.width=-t.width),r<0&&(t.y+=t.height,t.height=-t.height);var i=e.x+e.width,a=e.y+e.height,o=EM(t.x,e.x),s=DM(t.x+t.width,i),c=EM(t.y,e.y),l=DM(t.y+t.height,a),u=si?s:o,t.y=d&&c>a?l:c,t.width=u?0:s-o,t.height=d?0:l-c,n<0&&(t.x+=t.width,t.width=-t.width),r<0&&(t.y+=t.height,t.height=-t.height),u||d},polar:function(e,t){var n=t.r0<=t.r?1:-1;if(n<0){var r=t.r;t.r=t.r0,t.r0=r}var i=DM(t.r,e.r),a=EM(t.r0,e.r0);t.r=i,t.r0=a;var o=i-a<0;if(n<0){var r=t.r;t.r=t.r0,t.r0=r}return o}},AM={cartesian2d:function(e,t,n,r,i,a,o,s,c){var l=new eh({shape:U({},r),z2:1});if(l.__dataIndex=n,l.name=`item`,a){var u=l.shape,d=i?`height`:`width`;u[d]=0}return l},polar:function(e,t,n,r,i,a,o,s,c){var l=!i&&c?bM:by,u=new l({shape:r,z2:1});if(u.name=`item`,u.calculateTextPosition=xM(zM(i),{isRoundCap:l===bM}),a){var d=u.shape,f=i?`r`:`endAngle`,p={};d[f]=i?r.r0:r.startAngle,p[f]=r[f],(s?nb:rb)(u,{shape:p},a)}return u}};function jM(e,t){var n=e.get(`realtimeSort`,!0),r=t.getBaseAxis();if(n&&r.type===`category`&&t.type===`cartesian2d`)return{baseAxis:r,otherAxis:t.getOtherAxis(r)}}function MM(e,t,n,r,i,a,o,s){var c,l;a?(l={x:r.x,width:r.width},c={y:r.y,height:r.height}):(l={y:r.y,height:r.height},c={x:r.x,width:r.width}),s||(o?nb:rb)(n,{shape:c},t,i,null);var u=t?e.baseAxis.model:null;(o?nb:rb)(n,{shape:l},u,i)}function NM(e,t){for(var n=0;n0?1:-1,o=r.height>0?1:-1;return{x:r.x+a*i/2,y:r.y+o*i/2,width:r.width-a*i,height:r.height-o*i}},polar:function(e,t,n){var r=e.getItemLayout(t);return{cx:r.cx,cy:r.cy,r0:r.r0,r:r.r,startAngle:r.startAngle,endAngle:r.endAngle,clockwise:r.clockwise}}};function RM(e){return e.startAngle!=null&&e.endAngle!=null&&e.startAngle===e.endAngle}function zM(e){return function(e){var t=e?`Arc`:`Angle`;return function(e){switch(e){case`start`:case`insideStart`:case`end`:case`insideEnd`:return e+t;default:return e}}}(e)}function BM(e,t,n,r,i,a,o,s){var c=t.getItemVisual(n,`style`);if(!s){var l=r.get([`itemStyle`,`borderRadius`])||0;e.setShape(`r`,l)}else if(!a.get(`roundCap`)){var u=e.shape;U(u,TM(r.getModel(`itemStyle`),u,!0)),e.setShape(u)}e.useStyle(c);var d=r.getShallow(`cursor`);d&&e.attr(`cursor`,d);var f=s?o?i.r>=i.r0?`endArc`:`startArc`:i.endAngle>=i.startAngle?`endAngle`:`startAngle`:o?YM(i,a.coordinateSystem):XM(i,a.coordinateSystem),p=sx(r);ox(e,p,{labelFetcher:a,labelDataIndex:n,defaultText:HE(a.getData(),n),inheritColor:c.fill,defaultOpacity:c.opacity,defaultOutsidePosition:f});var m=e.getTextContent();if(s&&m){var h=r.get([`label`,`position`]);e.textConfig.inside=h===`middle`||null,SM(e,h===`outside`?f:h,zM(o),r.get([`label`,`rotate`]))}vx(m,p,a.getRawValue(n),function(e){return UE(t,e)});var g=r.getModel([`emphasis`]);bv(e,g.get(`focus`),g.get(`blurScope`),g.get(`disabled`)),wv(e,r),RM(i)&&(e.style.fill=`none`,e.style.stroke=`none`,W(e.states,function(e){e.style&&(e.style.fill=e.style.stroke=`none`)}))}function VM(e,t){var n=e.get([`itemStyle`,`borderColor`]);if(!n||n===`none`)return 0;var r=e.get([`itemStyle`,`borderWidth`])||0,i=isNaN(t.width)?Number.MAX_VALUE:Math.abs(t.width),a=isNaN(t.height)?Number.MAX_VALUE:Math.abs(t.height);return Math.min(r,i,a)}var HM=function(){function e(){}return e}(),UM=function(e){H(t,e);function t(t){var n=e.call(this,t)||this;return n.type=`largeBar`,n}return t.prototype.getDefaultShape=function(){return new HM},t.prototype.buildPath=function(e,t){for(var n=t.points,r=this.baseDimIdx,i=1-this.baseDimIdx,a=[],o=[],s=this.barWidth,c=0;c=0?n:null},30,!1);function KM(e,t,n){for(var r=e.baseDimIdx,i=1-r,a=e.shape.points,o=e.largeDataIndices,s=[],c=[],l=e.barWidth,u=0,d=a.length/3;u=s[0]&&t<=s[0]+c[0]&&n>=s[1]&&n<=s[1]+c[1])return o[u]}return-1}function qM(e,t,n){if(DD(n,`cartesian2d`)){var r=t,i=n.getArea();return{x:e?r.x:i.x,y:e?i.y:r.y,width:e?r.width:i.width,height:e?i.height:r.height}}var i=n.getArea(),a=t;return{cx:i.cx,cy:i.cy,r0:e?i.r0:a.r0,r:e?i.r:a.r,startAngle:e?a.startAngle:0,endAngle:e?a.endAngle:Math.PI*2}}function JM(e,t,n){return new(e.type===`polar`?by:eh)({shape:qM(t,n,e),silent:!0,z2:0})}function YM(e,t){return e.height===0?t.getOtherAxis(t.getBaseAxis()).inverse?`bottom`:`top`:e.height>0?`bottom`:`top`}function XM(e,t){return e.width===0?t.getOtherAxis(t.getBaseAxis()).inverse?`left`:`right`:e.width>=0?`right`:`left`}function ZM(e){e.registerChartView(OM),e.registerSeriesModel(fM),e.registerLayout(e.PRIORITY.VISUAL.LAYOUT,oM(`bar`)),e.registerLayout(e.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,sM(`bar`)),e.registerProcessor(e.PRIORITY.PROCESSOR.STATISTIC,gk(`bar`)),e.registerAction({type:`changeAxisOrder`,event:`changeAxisOrder`,update:`update`},function(e,t){var n=e.componentType||`series`;t.eachComponent({mainType:n,query:e},function(t){e.sortInfo&&t.axis.setCategorySortInfo(e.sortInfo)})}),uM(e)}function QM(e,t,n,r,i){var a=e+t;n.isSilent(a)||r.eachComponent({mainType:`series`,subType:`pie`},function(e){for(var t=e.seriesIndex,r=e.option.selectedMap,o=i.selected,s=0;s=0){var i=r===`touchend`?t.changedTouches[0]:t.targetTouches[0];i&&aN(e,i,t,n)}else{aN(e,t,t,n);var a=lN(t);t.zrDelta=a?a/120:-(t.detail||0)/3}var o=t.button;return t.which==null&&o!==void 0&&nN.test(t.type)&&(t.which=o&1?1:o&2?3:o&4?2:0),t}function lN(e){var t=e.wheelDelta;if(t)return t;var n=e.deltaX,r=e.deltaY;if(n==null||r==null)return t;var i=Math.abs(r===0?n:r),a=r>0?-1:r<0?1:n>0?-1:1;return 3*i*a}function uN(e,t,n,r){e.addEventListener(t,n,r)}function dN(e,t,n,r){e.removeEventListener(t,n,r)}var fN=function(e){e.preventDefault(),e.stopPropagation(),e.cancelBubble=!0};function pN(e){return e.which===2||e.which===3}var mN=function(){function e(){this._track=[]}return e.prototype.recognize=function(e,t,n){return this._doTrack(e,t,n),this._recognize(e)},e.prototype.clear=function(){return this._track.length=0,this},e.prototype._doTrack=function(e,t,n){var r=e.touches;if(r){for(var i={points:[],touches:[],target:t,event:e},a=0,o=r.length;a1&&r&&r.length>1){var a=hN(r)/hN(i);!isFinite(a)&&(a=1),t.pinchScale=a;var o=gN(r);return t.pinchX=o[0],t.pinchY=o[1],{type:`pinch`,target:e[0].target,event:t}}}}},vN=`silent`;function yN(e,t,n){return{type:e,event:n,target:t.target,topTarget:t.topTarget,cancelBubble:!1,offsetX:n.zrX,offsetY:n.zrY,gestureEvent:n.gestureEvent,pinchX:n.pinchX,pinchY:n.pinchY,pinchScale:n.pinchScale,wheelDelta:n.zrDelta,zrByTouch:n.zrByTouch,which:n.which,stop:bN}}function bN(){fN(this.event)}var xN=function(e){H(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.handler=null,t}return t.prototype.dispose=function(){},t.prototype.setCursor=function(){},t}(ip),SN=function(){function e(e,t){this.x=e,this.y=t}return e}(),CN=[`click`,`dblclick`,`mousewheel`,`mouseout`,`mouseup`,`mousedown`,`mousemove`,`contextmenu`],wN=new Eu(0,0,0,0),TN=function(e){H(t,e);function t(t,n,r,i,a){var o=e.call(this)||this;return o._hovered=new SN(0,0),o.storage=t,o.painter=n,o.painterRoot=i,o._pointerSize=a,r||=new xN,o.proxy=null,o.setHandlerProxy(r),o._draggingMgr=new tN(o),o}return t.prototype.setHandlerProxy=function(e){this.proxy&&this.proxy.dispose(),e&&(W(CN,function(t){e.on&&e.on(t,this[t],this)},this),e.handler=this),this.proxy=e},t.prototype.mousemove=function(e){var t=e.zrX,n=e.zrY,r=ON(this,t,n),i=this._hovered,a=i.target;a&&!a.__zr&&(i=this.findHover(i.x,i.y),a=i.target);var o=this._hovered=r?new SN(t,n):this.findHover(t,n),s=o.target,c=this.proxy;c.setCursor&&c.setCursor(s?s.cursor:`default`),a&&s!==a&&this.dispatchToElement(i,`mouseout`,e),this.dispatchToElement(o,`mousemove`,e),s&&s!==a&&this.dispatchToElement(o,`mouseover`,e)},t.prototype.mouseout=function(e){var t=e.zrEventControl;t!==`only_globalout`&&this.dispatchToElement(this._hovered,`mouseout`,e),t!==`no_globalout`&&this.trigger(`globalout`,{type:`globalout`,event:e})},t.prototype.resize=function(){this._hovered=new SN(0,0)},t.prototype.dispatch=function(e,t){var n=this[e];n&&n.call(this,t)},t.prototype.dispose=function(){this.proxy.dispose(),this.storage=null,this.proxy=null,this.painter=null},t.prototype.setCursorStyle=function(e){var t=this.proxy;t.setCursor&&t.setCursor(e)},t.prototype.dispatchToElement=function(e,t,n){e||={};var r=e.target;if(!(r&&r.silent)){for(var i=`on`+t,a=yN(t,e,n);r&&(r[i]&&(a.cancelBubble=!!r[i].call(r,a)),r.trigger(t,a),r=r.__hostTarget?r.__hostTarget:r.parent,!a.cancelBubble););a.cancelBubble||(this.trigger(t,a),this.painter&&this.painter.eachOtherLayer&&this.painter.eachOtherLayer(function(e){typeof e[i]==`function`&&e[i].call(e,a),e.trigger&&e.trigger(t,a)}))}},t.prototype.findHover=function(e,t,n){var r=this.storage.getDisplayList(),i=new SN(e,t);if(DN(r,i,e,t,n),this._pointerSize&&!i.target){for(var a=[],o=this._pointerSize,s=o/2,c=new Eu(e-s,t-s,o,o),l=r.length-1;l>=0;l--){var u=r[l];u!==n&&!u.ignore&&!u.ignoreCoarsePointer&&(!u.parent||!u.parent.ignoreCoarsePointer)&&(wN.copy(u.getBoundingRect()),u.transform&&wN.applyTransform(u.transform),wN.intersect(c)&&a.push(u))}if(a.length){for(var d=4,f=Math.PI/12,p=Math.PI*2,m=0;m4)return;this._downPoint=null}this.dispatchToElement(a,e,t)}});function EN(e,t,n){if(e[e.rectHover?`rectContain`:`contain`](t,n)){for(var r=e,i=void 0,a=!1;r;){if(r.ignoreClip&&(a=!0),!a){var o=r.getClipPath();if(o&&!o.contain(t,n))return!1}r.silent&&(i=!0);var s=r.__hostTarget;r=s?r.ignoreHostSilent?null:s:r.parent}return!i||vN}return!1}function DN(e,t,n,r,i){for(var a=e.length-1;a>=0;a--){var o=e[a],s=void 0;if(o!==i&&!o.ignore&&(s=EN(o,n,r))&&(!t.topTarget&&(t.topTarget=o),s!==vN)){t.target=o;break}}}function ON(e,t,n){var r=e.painter;return t<0||t>r.getWidth()||n<0||n>r.getHeight()}var kN=32,AN=7;function jN(e){for(var t=0;e>=kN;)t|=e&1,e>>=1;return e+t}function MN(e,t,n,r){var i=t+1;if(i===n)return 1;if(r(e[i++],e[t])<0){for(;i=0;)i++;return i-t}function NN(e,t,n){for(n--;t>>1,i(a,e[c])<0?s=c:o=c+1;var l=r-o;switch(l){case 3:e[o+3]=e[o+2];case 2:e[o+2]=e[o+1];case 1:e[o+1]=e[o];break;default:for(;l>0;)e[o+l]=e[o+l-1],l--}e[o]=a}}function FN(e,t,n,r,i,a){var o=0,s=0,c=1;if(a(e,t[n+i])>0){for(s=r-i;c0;)o=c,c=(c<<1)+1,c<=0&&(c=s);c>s&&(c=s),o+=i,c+=i}else{for(s=i+1;cs&&(c=s);var l=o;o=i-c,c=i-l}for(o++;o>>1);a(e,t[n+u])>0?o=u+1:c=u}return c}function IN(e,t,n,r,i,a){var o=0,s=0,c=1;if(a(e,t[n+i])<0){for(s=i+1;cs&&(c=s);var l=o;o=i-c,c=i-l}else{for(s=r-i;c=0;)o=c,c=(c<<1)+1,c<=0&&(c=s);c>s&&(c=s),o+=i,c+=i}for(o++;o>>1);a(e,t[n+u])<0?c=u:o=u+1}return c}function LN(e,t){var n=AN,r,i,a=0,o=[];r=[],i=[];function s(e,t){r[a]=e,i[a]=t,a+=1}function c(){for(;a>1;){var e=a-2;if(e>=1&&i[e-1]<=i[e]+i[e+1]||e>=2&&i[e-2]<=i[e]+i[e-1])i[e-1]i[e+1])break;u(e)}}function l(){for(;a>1;){var e=a-2;e>0&&i[e-1]=AN||m>=AN);if(h)break;f<0&&(f=0),f+=2}if(n=f,n<1&&(n=1),i===1){for(c=0;c=0;c--)e[p+c]=e[f+c];e[d]=o[u];return}for(var m=n;;){var h=0,g=0,_=!1;do if(t(o[u],e[l])<0){if(e[d--]=e[l--],h++,g=0,--i===0){_=!0;break}}else if(e[d--]=o[u--],g++,h=0,--s===1){_=!0;break}while((h|g)=0;c--)e[p+c]=e[f+c];if(i===0){_=!0;break}}if(e[d--]=o[u--],--s===1){_=!0;break}if(g=s-FN(e[l],o,0,s,s-1,t),g!==0){for(d-=g,u-=g,s-=g,p=d+1,f=u+1,c=0;c=AN||g>=AN);if(_)break;m<0&&(m=0),m+=2}if(n=m,n<1&&(n=1),s===1){for(d-=i,l-=i,p=d+1,f=l+1,c=i-1;c>=0;c--)e[p+c]=e[f+c];e[d]=o[u]}else if(s===0)throw Error();else for(f=d-(s-1),c=0;cs&&(c=s),PN(e,n,n+c,n+a,t),a=c}o.pushRun(n,a),o.mergeRuns(),i-=a,n+=a}while(i!==0);o.forceMergeRuns()}}var zN=!1;function BN(){zN||(zN=!0,console.warn(`z / z2 / zlevel of displayable is invalid, which may cause unexpected errors`))}function VN(e,t){return e.zlevel===t.zlevel?e.z===t.z?e.z2-t.z2:e.z-t.z:e.zlevel-t.zlevel}var HN=function(){function e(){this._roots=[],this._displayList=[],this._displayListLen=0,this.displayableSortFunc=VN}return e.prototype.traverse=function(e,t){for(var n=0;n=0&&this._roots.splice(r,1)},e.prototype.delAllRoots=function(){this._roots=[],this._displayList=[],this._displayListLen=0},e.prototype.getRoots=function(){return this._roots},e.prototype.dispose=function(){this._displayList=null,this._roots=null},e}(),UN=ml.hasGlobalWindow&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(e){return setTimeout(e,16)};function WN(){return new Date().getTime()}var GN=function(e){H(t,e);function t(t){var n=e.call(this)||this;return n._running=!1,n._time=0,n._pausedTime=0,n._pauseStart=0,n._paused=!1,t||={},n.stage=t.stage||{},n}return t.prototype.addClip=function(e){e.animation&&this.removeClip(e),this._head?(this._tail.next=e,e.prev=this._tail,e.next=null,this._tail=e):this._head=this._tail=e,e.animation=this},t.prototype.addAnimator=function(e){e.animation=this;var t=e.getClip();t&&this.addClip(t)},t.prototype.removeClip=function(e){if(e.animation){var t=e.prev,n=e.next;t?t.next=n:this._head=n,n?n.prev=t:this._tail=t,e.next=e.prev=e.animation=null}},t.prototype.removeAnimator=function(e){var t=e.getClip();t&&this.removeClip(t),e.animation=null},t.prototype.update=function(e){for(var t=WN()-this._pausedTime,n=t-this._time,r=this._head;r;){var i=r.next;r.step(t,n)?(r.ondestroy(),this.removeClip(r),r=i):r=i}this._time=t,e||(this.trigger(`frame`,n),this.stage.update&&this.stage.update())},t.prototype._startLoop=function(){var e=this;this._running=!0;function t(){e._running&&(UN(t),!e._paused&&e.update())}UN(t)},t.prototype.start=function(){this._running||(this._time=WN(),this._pausedTime=0,this._startLoop())},t.prototype.stop=function(){this._running=!1},t.prototype.pause=function(){this._paused||=(this._pauseStart=WN(),!0)},t.prototype.resume=function(){this._paused&&=(this._pausedTime+=WN()-this._pauseStart,!1)},t.prototype.clear=function(){for(var e=this._head;e;){var t=e.next;e.prev=e.next=e.animation=null,e=t}this._head=this._tail=null},t.prototype.isFinished=function(){return this._head==null},t.prototype.animate=function(e,t){t||={},this.start();var n=new rp(e,t.loop);return this.addAnimator(n),n},t}(ip),KN=300,qN=ml.domSupported,JN=(function(){var e=[`click`,`dblclick`,`mousewheel`,`wheel`,`mouseout`,`mouseup`,`mousedown`,`mousemove`,`contextmenu`],t=[`touchstart`,`touchend`,`touchmove`],n={pointerdown:1,pointerup:1,pointermove:1,pointerout:1};return{mouse:e,touch:t,pointer:G(e,function(e){var t=e.replace(`mouse`,`pointer`);return n.hasOwnProperty(t)?t:e})}})(),YN={mouse:[`mousemove`,`mouseup`],pointer:[`pointermove`,`pointerup`]},XN=!1;function ZN(e){var t=e.pointerType;return t===`pen`||t===`touch`}function QN(e){e.touching=!0,e.touchTimer!=null&&(clearTimeout(e.touchTimer),e.touchTimer=null),e.touchTimer=setTimeout(function(){e.touching=!1,e.touchTimer=null},700)}function $N(e){e&&(e.zrByTouch=!0)}function eP(e,t){return cN(e.dom,new nP(e,t),!0)}function tP(e,t){for(var n=t,r=!1;n&&n.nodeType!==9&&!(r=n.domBelongToZr||n!==t&&n===e.painterRoot);)n=n.parentNode;return r}var nP=function(){function e(e,t){this.stopPropagation=dl,this.stopImmediatePropagation=dl,this.preventDefault=dl,this.type=t.type,this.target=this.currentTarget=e.dom,this.pointerType=t.pointerType,this.clientX=t.clientX,this.clientY=t.clientY}return e}(),rP={mousedown:function(e){e=cN(this.dom,e),this.__mayPointerCapture=[e.zrX,e.zrY],this.trigger(`mousedown`,e)},mousemove:function(e){e=cN(this.dom,e);var t=this.__mayPointerCapture;t&&(e.zrX!==t[0]||e.zrY!==t[1])&&this.__togglePointerCapture(!0),this.trigger(`mousemove`,e)},mouseup:function(e){e=cN(this.dom,e),this.__togglePointerCapture(!1),this.trigger(`mouseup`,e)},mouseout:function(e){e=cN(this.dom,e);var t=e.toElement||e.relatedTarget;tP(this,t)||(this.__pointerCapturing&&(e.zrEventControl=`no_globalout`),this.trigger(`mouseout`,e))},wheel:function(e){XN=!0,e=cN(this.dom,e),this.trigger(`mousewheel`,e)},mousewheel:function(e){XN||(e=cN(this.dom,e),this.trigger(`mousewheel`,e))},touchstart:function(e){e=cN(this.dom,e),$N(e),this.__lastTouchMoment=new Date,this.handler.processGesture(e,`start`),rP.mousemove.call(this,e),rP.mousedown.call(this,e)},touchmove:function(e){e=cN(this.dom,e),$N(e),this.handler.processGesture(e,`change`),rP.mousemove.call(this,e)},touchend:function(e){e=cN(this.dom,e),$N(e),this.handler.processGesture(e,`end`),rP.mouseup.call(this,e),+new Date-this.__lastTouchMoment0&&(this._stillFrameAccum++,this._stillFrameAccum>this._sleepAfterStill&&this.animation.stop())},e.prototype.setSleepAfterStill=function(e){this._sleepAfterStill=e},e.prototype.wakeUp=function(){this._disposed||(this.animation.start(),this._stillFrameAccum=0)},e.prototype.refreshHover=function(){this._needsRefreshHover=!0},e.prototype.refreshHoverImmediately=function(){this._disposed||this._refresh({animUpdate:!1,refresh:!1,refreshHover:!0})},e.prototype.resize=function(e){this._disposed||(e||={},this.painter.resize(e.width,e.height),this.handler.resize())},e.prototype.clearAnimation=function(){this._disposed||this.animation.clear()},e.prototype.getWidth=function(){if(!this._disposed)return this.painter.getWidth()},e.prototype.getHeight=function(){if(!this._disposed)return this.painter.getHeight()},e.prototype.setCursorStyle=function(e){this._disposed||this.handler.setCursorStyle(e)},e.prototype.findHover=function(e,t){if(!this._disposed)return this.handler.findHover(e,t)},e.prototype.on=function(e,t,n){return this._disposed||this.handler.on(e,t,n),this},e.prototype.off=function(e,t){this._disposed||this.handler.off(e,t)},e.prototype.trigger=function(e,t){this._disposed||this.handler.trigger(e,t)},e.prototype.clear=function(){if(!this._disposed){for(var e=this.storage.getRoots(),t=0;t=0;o--)r[o]&&!Ag(r[o])?a=!0:(r[o]=null,!a&&i--);r.length=i,e[n]=r}}),delete e[kP],e},t.prototype.setTheme=function(e){this._theme=new jx(e),this._resetOption(`recreate`,null)},t.prototype.getTheme=function(){return this._theme},t.prototype.getLocaleModel=function(){return this._locale},t.prototype.setUpdatePayload=function(e){this._payload=e},t.prototype.getUpdatePayload=function(){return this._payload},t.prototype.getComponent=function(e,t){var n=this._componentsMap.get(e);if(n){var r=n[t||0];if(r)return r;if(t==null){for(var i=0;i=t:n===`max`?e<=t:e===t}function HP(e,t){return e.join(`,`)===t.join(`,`)}var UP=W,WP=Hc,GP=[`areaStyle`,`lineStyle`,`nodeStyle`,`linkStyle`,`chordStyle`,`label`,`labelLine`];function KP(e){var t=e&&e.itemStyle;if(t)for(var n=0,r=GP.length;n0?e[n-1].seriesModel:null)}),hF(e))})}function hF(e){W(e,function(t,n){var r=[],i=[NaN,NaN],a=[t.stackResultDimension,t.stackedOverDimension],o=t.data,s=t.isStackedByIndex,c=t.seriesModel.get(`stackStrategy`)||`samesign`;o.modify(a,function(a,l,u){var d=o.get(t.stackedDimension,u);if(isNaN(d))return i;var f,p;s?p=o.getRawIndex(u):f=o.get(t.stackedByDimension,u);for(var m=NaN,h=n-1;h>=0;h--){var g=e[h];if(s||(p=g.data.rawIndexOf(g.stackedByDimension,f)),p>=0){var _=g.data.getByRawIndex(g.stackResultDimension,p);if(c===`all`||c===`positive`&&_>0||c===`negative`&&_<0||c===`samesign`&&d>=0&&_>0||c===`samesign`&&d<=0&&_<0){d=Uh(d,_),m=_;break}}}return r[0]=d,r[1]=m,r})})}var gF=function(){function e(){this.group=new $v,this.uid=NC(`viewComponent`)}return e.prototype.init=function(e,t){},e.prototype.render=function(e,t,n,r){},e.prototype.dispose=function(e,t){},e.prototype.updateView=function(e,t,n,r){},e.prototype.updateLayout=function(e,t,n,r){},e.prototype.updateVisual=function(e,t,n,r){},e.prototype.toggleBlurSeries=function(e,t,n){},e.prototype.eachRendered=function(e){var t=this.group;t&&t.traverse(e)},e}();Sl(gF),kl(gF);var _F=Ig(),vF={itemStyle:Al(Ox,!0),lineStyle:Al(Tx,!0)},yF={lineStyle:`stroke`,itemStyle:`fill`};function bF(e,t){return e.visualStyleMapper||vF[t]||(console.warn(`Unknown style type '`+t+`'.`),vF.itemStyle)}function xF(e,t){return e.visualDrawType||yF[t]||(console.warn(`Unknown style type '`+t+`'.`),`fill`)}var SF={createOnAllSeries:!0,performRawSeries:!0,reset:function(e,t){var n=e.getData(),r=e.visualStyleAccessPath||`itemStyle`,i=e.getModel(r),a=bF(e,r)(i),o=i.getShallow(`decal`);o&&(n.setVisual(`decal`,o),o.dirty=!0);var s=xF(e,r),c=a[s],l=zc(c)?c:null,u=a.fill===`auto`||a.stroke===`auto`;if(!a[s]||l||u){var d=e.getColorFromPalette(e.name,null,t.getSeriesCount());a[s]||(a[s]=d,n.setVisual(`colorFromPalette`,!0)),a.fill=a.fill===`auto`||zc(a.fill)?d:a.fill,a.stroke=a.stroke===`auto`||zc(a.stroke)?d:a.stroke}if(n.setVisual(`style`,a),n.setVisual(`drawType`,s),!t.isSeriesFiltered(e)&&l)return n.setVisual(`colorFromPalette`,!1),{dataEach:function(t,n){var r=e.getDataParams(n),i=U({},a);i[s]=l(r),t.setItemVisual(n,`style`,i)}}}},CF=new jx,wF={createOnAllSeries:!0,reset:function(e,t){if(!e.ignoreStyleOnData){var n=e.getData(),r=e.visualStyleAccessPath||`itemStyle`,i=bF(e,r),a=n.getVisual(`drawType`);return{dataEach:n.hasItemOption?function(e,t){var n=e.getRawDataItem(t);if(n&&n[r]){CF.option=n[r];var o=i(CF);U(e.ensureUniqueItemVisual(t,`style`),o),CF.option.decal&&(e.setItemVisual(t,`decal`,CF.option.decal),CF.option.decal.dirty=!0),a in o&&e.setItemVisual(t,`colorFromPalette`,!1)}}:null}}}},TF={performRawSeries:!0,overallReset:function(e){var t=X();e.eachSeries(function(e){if(!e.isColorBySeries()){var n=e.type+`-`+e.getColorBy();_F(e).scope=t.get(n)||t.set(n,{})}}),e.eachSeries(function(e){if(!e.isColorBySeries()){var t=e.getRawData(),n={},r=e.getData(),i=_F(e).scope,a=xF(e,e.visualStyleAccessPath||`itemStyle`);r.each(function(e){var t=r.getRawIndex(e);n[t]=e}),t.each(function(o){var s=n[o];if(r.getItemVisual(s,`colorFromPalette`)){var c=r.ensureUniqueItemVisual(s,`style`),l=t.getName(o)||o+``,u=t.count();c[a]=e.getColorFromPalette(l,i,u)}})}})}},EF=Math.PI;function DF(e,t){t||={},Oc(t,{text:`loading`,textColor:Q.color.primary,fontSize:12,fontWeight:`normal`,fontStyle:`normal`,fontFamily:`sans-serif`,maskColor:`rgba(255,255,255,0.8)`,showSpinner:!0,color:Q.color.theme[0],spinnerRadius:10,lineWidth:5,zlevel:0});var n=new $v,r=new eh({style:{fill:t.maskColor},zlevel:t.zlevel,z:1e4});n.add(r);var i=new ah({style:{text:t.text,fill:t.textColor,fontSize:t.fontSize,fontWeight:t.fontWeight,fontStyle:t.fontStyle,fontFamily:t.fontFamily},zlevel:t.zlevel,z:10001}),a=new eh({style:{fill:`none`},textContent:i,textConfig:{position:`right`,distance:10},zlevel:t.zlevel,z:10001});n.add(a);var o;return t.showSpinner&&(o=new Ly({shape:{startAngle:-EF/2,endAngle:-EF/2+.1,r:t.spinnerRadius},style:{stroke:t.color,lineCap:`round`,lineWidth:t.lineWidth},zlevel:t.zlevel,z:10001}),o.animateShape(!0).when(1e3,{endAngle:EF*3/2}).start(`circularInOut`),o.animateShape(!0).when(1e3,{startAngle:EF*3/2}).delay(300).start(`circularInOut`),n.add(o)),n.resize=function(){var n=i.getBoundingRect().width,s=t.showSpinner?t.spinnerRadius:0,c=(e.getWidth()-s*2-(t.showSpinner&&n?10:0)-n)/2-(t.showSpinner&&n?0:5+n/2)+(t.showSpinner?0:n/2)+(n?0:s),l=e.getHeight()/2;t.showSpinner&&o.setShape({cx:c,cy:l}),a.setShape({x:c-s,y:l-s,width:s*2,height:s*2}),r.setShape({x:0,y:0,width:e.getWidth(),height:e.getHeight()})},n.resize(),n}var OF=function(){function e(e,t,n,r){this._stageTaskMap=X(),this.ecInstance=e,this.api=t,n=this._dataProcessorHandlers=n.slice(),r=this._visualHandlers=r.slice(),this._allHandlers=n.concat(r)}return e.prototype.restoreData=function(e,t){e.restoreData(t),this._stageTaskMap.each(function(e){var t=e.overallTask;t&&t.dirty()})},e.prototype.getPerformArgs=function(e,t){if(e.__pipeline){var n=this._pipelineMap.get(e.__pipeline.id),r=n.context,i=!t&&n.progressiveEnabled&&(!r||r.progressiveRender)&&e.__idxInPipeline>n.blockIndex?n.step:null,a=r&&r.modDataCount;return{step:i,modBy:a==null?null:Math.ceil(a/i),modDataCount:a}}},e.prototype.getPipeline=function(e){return this._pipelineMap.get(e)},e.prototype.updateStreamModes=function(e,t){var n=this._pipelineMap.get(e.uid);e.pipelineContext=n.context=e.__preparePipelineContext?e.__preparePipelineContext(t,n):l_(e,t,n)},e.prototype.restorePipelines=function(e,t){var n=this,r=n._pipelineMap=X();t.eachSeries(function(t){var i=e.painter.type===`canvas`&&t.getProgressive(),a=t.uid;r.set(a,{id:a,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:i&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(i||700),count:0}),n._pipe(t,t.dataTask)})},e.prototype.prepareStageTasks=function(){var e=this._stageTaskMap,t=this.api.getModel(),n=this.api;W(this._allHandlers,function(r){var i=e.get(r.uid)||e.set(r.uid,{});$c(!(r.reset&&r.overallReset),``),r.reset&&this._createSeriesStageTask(r,i,t,n),r.overallReset&&this._createOverallStageTask(r,i,t,n)},this)},e.prototype.prepareView=function(e,t,n,r){var i=e.renderTask,a=i.context;a.model=t,a.ecModel=n,a.api=r,i.__block=!e.incrementalPrepareRender,this._pipe(t,i)},e.prototype.performDataProcessorTasks=function(e,t){this._performStageTasks(this._dataProcessorHandlers,e,t,{block:!0})},e.prototype.performVisualTasks=function(e,t,n){this._performStageTasks(this._visualHandlers,e,t,n)},e.prototype._performStageTasks=function(e,t,n,r){r||={};var i=!1,a=this;W(e,function(e,s){if(!(r.visualType&&r.visualType!==e.visualType)){var c=a._stageTaskMap.get(e.uid),l=c.seriesTaskMap,u=c.overallTask;if(u){var d,f=u.agentStubMap;f.each(function(e){o(r,e)&&(e.dirty(),d=!0)}),d&&u.dirty(),a.updatePayload(u,n);var p=a.getPerformArgs(u,r.block);f.each(function(e){e.perform(p)}),u.perform(p)&&(i=!0)}else l&&l.each(function(s,c){o(r,s)&&s.dirty();var l=a.getPerformArgs(s,r.block);l.skip=!e.performRawSeries&&t.isSeriesFiltered(s.context.model),a.updatePayload(s,n),s.perform(l)&&(i=!0)})}});function o(e,t){return e.setDirty&&(!e.dirtyMap||e.dirtyMap.get(t.__pipeline.id))}this.unfinished=i||this.unfinished},e.prototype.performSeriesTasks=function(e){var t;e.eachSeries(function(e){t=e.dataTask.perform()||t}),this.unfinished=t||this.unfinished},e.prototype.plan=function(){this._pipelineMap.each(function(e){var t=e.tail;do{if(t.__block){e.blockIndex=t.__idxInPipeline;break}t=t.getUpstream()}while(t)})},e.prototype.updatePayload=function(e,t){t!==`remain`&&(e.context.payload=t)},e.prototype._createSeriesStageTask=function(e,t,n,r){var i=this,a=t.seriesTaskMap,o=t.seriesTaskMap=X(),s=e.seriesType,c=e.getTargetSeries;e.createOnAllSeries?n.eachRawSeries(l):s?n.eachRawSeriesByType(s,l):c&&c(n,r).each(l);function l(t){var s=t.uid,c=o.set(s,a&&a.get(s)||MT({plan:NF,reset:PF,count:LF}));c.context={model:t,ecModel:n,api:r,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:i},i._pipe(t,c)}},e.prototype._createOverallStageTask=function(e,t,n,r){var i=this,a=t.overallTask=t.overallTask||MT({reset:kF});a.context={ecModel:n,api:r,overallReset:e.overallReset,scheduler:i};var o=a.agentStubMap,s=a.agentStubMap=X(),c=e.seriesType,l=e.getTargetSeries,u=e.dirtyOnOverallProgress,d=!1;$c(!e.createOnAllSeries,``),c?n.eachRawSeriesByType(c,f):l?l(n,r).each(f):W(n.getSeries(),f);function f(e){var t=e.uid,n=s.set(t,o&&o.get(t)||(d=!0,MT({reset:AF,onDirty:MF})));n.context={model:e,dirtyOnOverallProgress:u},n.agent=a,n.__block=u,i._pipe(e,n)}d&&a.dirty()},e.prototype._pipe=function(e,t){var n=e.uid,r=this._pipelineMap.get(n);!r.head&&(r.head=t),r.tail&&r.tail.pipe(t),r.tail=t,t.__idxInPipeline=r.count++,t.__pipeline=r},e.wrapStageHandler=function(e,t){return zc(e)&&(e={overallReset:e,seriesType:RF(e)}),e.uid=NC(`stageHandler`),t&&(e.visualType=t),e},e}();function kF(e){e.overallReset(e.ecModel,e.api,e.payload)}function AF(e){return e.dirtyOnOverallProgress&&jF}function jF(){this.agent.dirty(),this.getDownstream().dirty()}function MF(){this.agent&&this.agent.dirty()}function NF(e){return e.plan?e.plan(e.model,e.ecModel,e.api,e.payload):null}function PF(e){e.useClearVisual&&e.data.clearAllVisual();var t=e.resetDefines=mg(e.reset(e.model,e.ecModel,e.api,e.payload));return t.length>1?G(t,function(e,t){return IF(t)}):FF}var FF=IF(0);function IF(e){return function(t,n){var r=n.data,i=n.resetDefines[e];if(i&&i.dataEach)for(var a=t.start;a0&&u===i.length-l.length){var d=i.slice(0,u);d!==`data`&&(t.mainType=d,t[l.toLowerCase()]=e,s=!0)}}o.hasOwnProperty(i)&&(n[i]=e,s=!0),s||(r[i]=e)})}return{cptQuery:t,dataQuery:n,otherQuery:r}},e.prototype.filter=function(e,t){var n=this.eventInfo;if(!n)return!0;var r=n.targetEl,i=n.packedEvent,a=n.model,o=n.view;if(!a||!o)return!0;var s=t.cptQuery,c=t.dataQuery;return l(s,a,`mainType`)&&l(s,a,`subType`)&&l(s,a,`index`,`componentIndex`)&&l(s,a,`name`)&&l(s,a,`id`)&&l(c,i,`name`)&&l(c,i,`dataIndex`)&&l(c,i,`dataType`)&&(!o.filterForExposedEvent||o.filterForExposedEvent(e,t.otherQuery,r,i));function l(e,t,n,r){return e[n]==null||t[r||n]===e[n]}},e.prototype.afterTrigger=function(){this.eventInfo=null},e}(),JF=[`symbol`,`symbolSize`,`symbolRotate`,`symbolOffset`],YF=JF.concat([`symbolKeepAspect`]),XF={createOnAllSeries:!0,performRawSeries:!0,reset:function(e,t){var n=e.getData();if(e.legendIcon&&n.setVisual(`legendIcon`,e.legendIcon),!e.hasSymbolVisual)return;for(var r={},i={},a=!1,o=0;o=0&&fI(c)?c:.5,e.createRadialGradient(o,s,0,o,s,c)}function hI(e,t,n){for(var r=t.type===`radial`?mI(e,t,n):pI(e,t,n),i=t.colorStops,a=0;a0)?null:e===`dashed`?[4*t,2*t]:e===`dotted`?[t]:Vc(e)?[e]:q(e)?e:null}function bI(e){var t=e.style,n=t.lineDash&&t.lineWidth>0&&yI(t.lineDash,t.lineWidth),r=t.lineDashOffset;if(n){var i=t.strokeNoScale&&e.getLineScale?e.getLineScale():1;i&&i!==1&&(n=G(n,function(e){return e/i}),r/=i)}return[n,r]}var xI=new hm(!0);function SI(e){var t=e.stroke;return!(t==null||t===`none`||!(e.lineWidth>0))}function CI(e){return typeof e==`string`&&e!==`none`}function wI(e){var t=e.fill;return t!=null&&t!==`none`}function TI(e,t){if(t.fillOpacity!=null&&t.fillOpacity!==1){var n=e.globalAlpha;e.globalAlpha=t.fillOpacity*t.opacity,e.fill(),e.globalAlpha=n}else e.fill()}function EI(e,t){if(t.strokeOpacity!=null&&t.strokeOpacity!==1){var n=e.globalAlpha;e.globalAlpha=t.strokeOpacity*t.opacity,e.stroke(),e.globalAlpha=n}else e.stroke()}function DI(e,t,n){var r=Rl(t.image,t.__image,n);if(Bl(r)){var i=e.createPattern(r,t.repeat||`repeat`);if(typeof DOMMatrix==`function`&&i&&i.setTransform){var a=new DOMMatrix;a.translateSelf(t.x||0,t.y||0),a.rotateSelf(0,0,(t.rotation||0)*fl),a.scaleSelf(t.scaleX||1,t.scaleY||1),i.setTransform(a)}return i}}function OI(e,t,n,r,i){var a,o=SI(n),s=wI(n),c=n.strokePercent,l=c<1,u=!t.path;(!t.silent||l)&&u&&t.createPathProxy();var d=t.path||xI,f=t.__dirty;if(!r){var p=n.fill,m=n.stroke,h=s&&!!p.colorStops,g=o&&!!m.colorStops,_=s&&!!p.image,v=o&&!!m.image,y=void 0,b=void 0,x=void 0,S=void 0,C=void 0;(h||g)&&(C=t.getBoundingRect()),h&&(y=f?hI(e,p,C):t.__canvasFillGradient,t.__canvasFillGradient=y),g&&(b=f?hI(e,m,C):t.__canvasStrokeGradient,t.__canvasStrokeGradient=b),_&&(x=f||!t.__canvasFillPattern?DI(e,p,t):t.__canvasFillPattern,t.__canvasFillPattern=x),v&&(S=f||!t.__canvasStrokePattern?DI(e,m,t):t.__canvasStrokePattern,t.__canvasStrokePattern=S),h?e.fillStyle=y:_&&(x?e.fillStyle=x:s=!1),g?e.strokeStyle=b:v&&(S?e.strokeStyle=S:o=!1)}var w=t.getGlobalScale();d.setScale(w[0],w[1],t.segmentIgnoreThreshold);var T,E;e.setLineDash&&n.lineDash&&(a=bI(t),T=a[0],E=a[1]);var D=!0;(u||f&4)&&(d.setDPR(e.dpr),l?d.setContext(null):(d.setContext(e),D=!1),d.reset(),t.buildPath(d,t.shape,r),d.toStatic(),t.pathUpdated()),D&&d.rebuildPath(e,l?c:1),T&&(e.setLineDash(T),e.lineDashOffset=E),r?(i.batchFill=s,i.batchStroke=o):n.strokeFirst?(o&&EI(e,n),s&&TI(e,n)):(s&&TI(e,n),o&&EI(e,n)),T&&e.setLineDash([])}function kI(e,t,n){var r=t.__image=Rl(n.image,t.__image,t,t.onload);if(r&&Bl(r)){var i=n.x||0,a=n.y||0,o=t.getWidth(),s=t.getHeight(),c=r.width/r.height;if(o==null&&s!=null?o=s*c:s==null&&o!=null?s=o/c:o==null&&s==null&&(o=r.width,s=r.height),n.sWidth&&n.sHeight){var l=n.sx||0,u=n.sy||0;e.drawImage(r,l,u,n.sWidth,n.sHeight,i,a,o,s)}else if(n.sx&&n.sy){var l=n.sx,u=n.sy,d=o-l,f=s-u;e.drawImage(r,l,u,d,f,i,a,o,s)}else e.drawImage(r,i,a,o,s)}}function AI(e,t,n){var r,i=n.text;if(i!=null&&(i+=``),i){e.font=n.font||`12px sans-serif`,e.textAlign=n.textAlign,e.textBaseline=n.textBaseline;var a=void 0,o=void 0;e.setLineDash&&n.lineDash&&(r=bI(t),a=r[0],o=r[1]),a&&(e.setLineDash(a),e.lineDashOffset=o),n.strokeFirst?(SI(n)&&e.strokeText(i,n.x,n.y),wI(n)&&e.fillText(i,n.x,n.y)):(wI(n)&&e.fillText(i,n.x,n.y),SI(n)&&e.strokeText(i,n.x,n.y)),a&&e.setLineDash([])}}var jI=[`shadowBlur`,`shadowOffsetX`,`shadowOffsetY`],MI=[[`lineCap`,`butt`],[`lineJoin`,`miter`],[`miterLimit`,10]];function NI(e,t,n,r,i){var a=!1;if(!r&&(n||={},t===n))return!1;if(r||t.opacity!==n.opacity){WI(e,i),a=!0;var o=Math.max(Math.min(t.opacity,1),0);e.globalAlpha=isNaN(o)?kp.opacity:o}(r||t.blend!==n.blend)&&(a||=(WI(e,i),!0),e.globalCompositeOperation=t.blend||kp.blend);for(var s=0;s0&&e.unfinished);e.unfinished||this._zr.flush()}}},t.prototype.getDom=function(){return this._dom},t.prototype.getId=function(){return this.id},t.prototype.getZr=function(){return this._zr},t.prototype.isSSR=function(){return this._ssr},t.prototype.setOption=function(e,t,n){if(!this[wL]){if(this._disposed){this.id;return}var r,i,a;if(Hc(t)&&(n=t.lazyUpdate,r=t.silent,i=t.replaceMerge,a=t.transition,t=t.notMerge),this[wL]=!0,nR(this),!this._model||t){var o=new RP(this._api),s=this._theme,c=this._model=new jP;c.scheduler=this._scheduler,c.ssr=this._ssr,c.init(null,null,null,s,this._locale,o)}this._model.setOption(e,{replaceMerge:i},uR);var l={seriesTransition:a,optionChanged:!0};if(n)this[EL]={silent:r,updateParams:l},this[wL]=!1,this.getZr().wakeUp();else{try{RL(this),VL.update.call(this,null,l)}catch(e){throw this[EL]=null,this[wL]=!1,e}this._ssr||this._zr.flush(),this[EL]=null,this[wL]=!1,GL.call(this,r),KL.call(this,r)}}},t.prototype.setTheme=function(e,t){if(!this[wL]){if(this._disposed){this.id;return}var n=this._model;if(n){var r=t&&t.silent,i=null;this[EL]&&(r??=this[EL].silent,i=this[EL].updateParams,this[EL]=null),this[wL]=!0,nR(this);try{this._updateTheme(e),n.setTheme(this._theme),RL(this),VL.update.call(this,{type:`setTheme`},i)}catch(e){throw this[wL]=!1,e}this[wL]=!1,GL.call(this,r),KL.call(this,r)}}},t.prototype._updateTheme=function(e){J(e)&&(e=fR[e]),e&&(e=wc(e),e&&fF(e,!0),this._theme=e)},t.prototype.getModel=function(){return this._model},t.prototype.getOption=function(){return this._model&&this._model.getOption()},t.prototype.getWidth=function(){return this._zr.getWidth()},t.prototype.getHeight=function(){return this._zr.getHeight()},t.prototype.getDevicePixelRatio=function(){return this._zr.painter.dpr||ml.hasGlobalWindow&&window.devicePixelRatio||1},t.prototype.getRenderedCanvas=function(e){return this.renderToCanvas(e)},t.prototype.renderToCanvas=function(e){return e||={},this._zr.painter.getRenderedCanvas({backgroundColor:e.backgroundColor||this._model.get(`backgroundColor`),pixelRatio:e.pixelRatio||this.getDevicePixelRatio()})},t.prototype.renderToSVGString=function(e){return e||={},this._zr.painter.renderToString({useViewBox:e.useViewBox})},t.prototype.getSvgDataURL=function(){var e=this._zr;return W(e.storage.getDisplayList(),function(e){e.stopAnimation(null,!0)}),e.painter.toDataURL()},t.prototype.getDataURL=function(e){if(this._disposed){this.id;return}e||={};var t=e.excludeComponents,n=this._model,r=[],i=this;W(t,function(e){n.eachComponent({mainType:e},function(e){var t=i._componentsMap[e.__viewId];t.group.ignore||(r.push(t),t.group.ignore=!0)})});var a=this._zr.painter.getType()===`svg`?this.getSvgDataURL():this.renderToCanvas(e).toDataURL(`image/`+(e&&e.type||`png`));return W(r,function(e){e.group.ignore=!1}),a},t.prototype.getConnectedDataURL=function(e){if(this._disposed){this.id;return}var t=e.type===`svg`,n=this.group,r=Math.min,i=Math.max,a=1/0;if(hR[n]){var o=a,s=a,c=-a,l=-a,u=[],d=e&&e.pixelRatio||this.getDevicePixelRatio();W(mR,function(a,d){if(a.group===n){var f=t?a.getZr().painter.getSvgDom().innerHTML:a.renderToCanvas(wc(e)),p=a.getDom().getBoundingClientRect();o=r(p.left,o),s=r(p.top,s),c=i(p.right,c),l=i(p.bottom,l),u.push({dom:f,left:p.left,top:p.top})}}),o*=d,s*=d,c*=d,l*=d;var f=c-o,p=l-s,m=cc.createCanvas(),h=gP(m,{renderer:t?`svg`:`canvas`});if(h.resize({width:f,height:p}),t){var g=``;return W(u,function(e){var t=e.left-o,n=e.top-s;g+=``+e.dom+``}),h.painter.getSvgRoot().innerHTML=g,e.connectedBackgroundColor&&h.painter.setBackgroundColor(e.connectedBackgroundColor),h.refreshImmediately(),h.painter.toDataURL()}return e.connectedBackgroundColor&&h.add(new eh({shape:{x:0,y:0,width:f,height:p},style:{fill:e.connectedBackgroundColor}})),W(u,function(e){var t=new Km({style:{x:e.left*d-o,y:e.top*d-s,image:e.dom}});h.add(t)}),h.refreshImmediately(),m.toDataURL(`image/`+(e&&e.type||`png`))}return this.getDataURL(e)},t.prototype.convertToPixel=function(e,t,n){return HL(this,`convertToPixel`,e,t,n)},t.prototype.convertToLayout=function(e,t,n){return HL(this,`convertToLayout`,e,t,n)},t.prototype.convertFromPixel=function(e,t,n){return HL(this,`convertFromPixel`,e,t,n)},t.prototype.containPixel=function(e,t){if(this._disposed){this.id;return}var n=this._model,r;return W(Rg(n,e),function(e,n){n.indexOf(`Models`)>=0&&W(e,function(e){var i=e.coordinateSystem;if(i&&i.containPoint)r||=!!i.containPoint(t);else if(n===`seriesModels`){var a=this._chartsMap[e.__viewId];a&&a.containPoint&&(r||=a.containPoint(t,e))}},this)},this),!!r},t.prototype.getVisual=function(e,t){var n=this._model,r=Rg(n,e,{defaultMainType:`series`}),i=r.seriesModel.getData(),a=r.hasOwnProperty(`dataIndexInside`)?r.dataIndexInside:r.hasOwnProperty(`dataIndex`)?i.indexOfRawIndex(r.dataIndex):null;return a==null?$F(i,t):QF(i,a,t)},t.prototype.getViewOfComponentModel=function(e){return this._componentsMap[e.__viewId]},t.prototype.getViewOfSeriesModel=function(e){return this._chartsMap[e.__viewId]},t.prototype._initEvents=function(){var e=this;W(aR,function(t){var n=function(n){var r=e.getModel(),i=n.target,a;if(t===`globalout`?a={}:i&&tI(i,function(e){var t=d_(e);if(t&&t.dataIndex!=null){var n=t.dataModel||r.getSeriesByIndex(t.seriesIndex);return a=n&&n.getDataParams(t.dataIndex,t.dataType,i)||{},!0}if(t.eventData)return a=U({},t.eventData),!0},!0),a){var o=a.componentType,s=a.componentIndex;(o===`markLine`||o===`markPoint`||o===`markArea`)&&(o=`series`,s=a.seriesIndex);var c=o&&s!=null&&r.getComponent(o,s),l=c&&e[c.mainType===`series`?`_chartsMap`:`_componentsMap`][c.__viewId];a.event=n,a.type=t,e._$eventProcessor.eventInfo={targetEl:i,packedEvent:a,model:c,view:l},e.trigger(t,a)}};n.zrEventfulCallAtLast=!0,e._zr.on(t,n,e)});var t=this._messageCenter;W(cR,function(n,r){t.on(r,function(t){e.trigger(r,t)})}),$M(t,this,this._api)},t.prototype.isDisposed=function(){return this._disposed},t.prototype.clear=function(){if(this._disposed){this.id;return}this.setOption({series:[]},!0)},t.prototype.dispose=function(){if(this._disposed){this.id;return}this._disposed=!0,this.getDom()&&Wg(this.getDom(),vR,``);var e=this,t=e._api,n=e._model;W(e._componentsViews,function(e){e.dispose(n,t)}),W(e._chartsViews,function(e){e.dispose(n,t)}),e._zr.dispose(),e._dom=e._model=e._chartsMap=e._componentsMap=e._chartsViews=e._componentsViews=e._scheduler=e._api=e._zr=e._throttledZrFlush=e._theme=e._coordSysMgr=e._messageCenter=null,delete mR[e.id]},t.prototype.resize=function(e){if(!this[wL]){if(this._disposed){this.id;return}this._zr.resize(e);var t=this._model;if(this._loadingFX&&this._loadingFX.resize(),t){var n=t.resetOption(`media`),r=e&&e.silent;this[EL]&&(r??=this[EL].silent,n=!0,this[EL]=null),this[wL]=!0,nR(this);try{n&&RL(this),VL.update.call(this,{type:`resize`,animation:U({duration:0},e&&e.animation)})}catch(e){throw this[wL]=!1,e}this[wL]=!1,GL.call(this,r),KL.call(this,r)}}},t.prototype.showLoading=function(e,t){if(this._disposed){this.id;return}if(Hc(e)&&(t=e,e=``),e||=`default`,this.hideLoading(),pR[e]){var n=pR[e](this._api,t),r=this._zr;this._loadingFX=n,r.add(n)}},t.prototype.hideLoading=function(){if(this._disposed){this.id;return}this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},t.prototype.makeActionFromEvent=function(e){var t=U({},e);return t.type=sR[e.type],t},t.prototype.dispatchAction=function(e,t){if(this._disposed){this.id;return}if(Hc(t)||(t={silent:!!t}),oR[e.type]&&this._model){if(this[wL]){this._pendingActions.push(e);return}var n=t.silent;WL.call(this,e,n);var r=t.flush;r?this._zr.flush():r!==!1&&ml.browser.weChat&&this._throttledZrFlush(),GL.call(this,n),KL.call(this,n)}},t.prototype.updateLabelLayout=function(){nI.trigger(`series:layoutlabels`,this._model,this._api,{updatedSeries:[]})},t.prototype.appendData=function(e){if(this._disposed){this.id;return}var t=e.seriesIndex;this.getModel().getSeriesByIndex(t).appendData(e),this._scheduler.unfinished=!0,this.getZr().wakeUp()},t.internalField=function(){RL=function(e){Vk(e._model);var t=e._scheduler;t.restorePipelines(e._zr,e._model),t.prepareStageTasks(),zL(e,!0),zL(e,!1),t.plan()},zL=function(e,t){for(var n=e._model,r=e._scheduler,i=t?e._componentsViews:e._chartsViews,a=t?e._componentsMap:e._chartsMap,o=e._zr,s=e._api,c=0;cY(t.get(`hoverLayerThreshold`),SP.hoverLayerThreshold)&&!ml.node&&!ml.worker;(e._usingTHL||a)&&(t.eachSeries(function(t){if(!t.preventUsingHoverLayer){var n=e._chartsMap[t.__viewId];n.__alive&&n.eachRendered(function(e){var t=e.states.emphasis;t&&t.hoverLayer!==2&&(t.hoverLayer=+!!a)})}}),e._usingTHL=a)}}function a(e,t){var n=e.get(`blendMode`)||null;t.eachRendered(function(e){e.isGroup||(e.style.blend=n)})}function o(e,t){if(!e.preventAutoZ){var n=Yb(e);t.eachRendered(function(e){return Zb(e,n.z,n.zlevel),!0})}}function s(e,t){t.eachRendered(function(e){if(!ib(e)){var t=e.getTextContent(),n=e.getTextGuideLine();e.stateTransition&&=null,t&&t.stateTransition&&(t.stateTransition=null),n&&n.stateTransition&&(n.stateTransition=null),e.hasState()?(e.prevStates=e.currentStates,e.clearStates()):e.prevStates&&=null}})}function c(e,t){var n=e.getModel(`stateAnimation`),i=e.isAnimationEnabled(),a=n.get(`duration`),o=a>0?{duration:a,delay:n.get(`delay`),easing:n.get(`easing`)}:null;t.eachRendered(function(e){if(e.states&&e.states.emphasis){if(ib(e))return;if(e instanceof Bm&&Av(e),e.__dirty){var t=e.prevStates;t&&e.useStates(t)}if(i){e.stateTransition=o;var n=e.getTextContent(),a=e.getTextGuideLine();n&&(n.stateTransition=o),a&&(a.stateTransition=o)}e.__dirty&&r(e)}})}QL=function(e){return new(function(t){H(n,t);function n(){return t!==null&&t.apply(this,arguments)||this}return n.prototype.getCoordinateSystems=function(){return e._coordSysMgr.getCoordinateSystems()},n.prototype.getComponentByElement=function(t){for(;t;){var n=t.__ecComponentInfo;if(n!=null)return e._model.getComponent(n.mainType,n.index);t=t.parent}},n.prototype.enterEmphasis=function(t,n){tv(t,n),eR(e)},n.prototype.leaveEmphasis=function(t,n){nv(t,n),eR(e)},n.prototype.enterBlur=function(t){rv(t),eR(e)},n.prototype.leaveBlur=function(t){iv(t),eR(e)},n.prototype.enterSelect=function(t){av(t),eR(e)},n.prototype.leaveSelect=function(t){ov(t),eR(e)},n.prototype.getModel=function(){return e.getModel()},n.prototype.getViewOfComponentModel=function(t){return e.getViewOfComponentModel(t)},n.prototype.getViewOfSeriesModel=function(t){return e.getViewOfSeriesModel(t)},n.prototype.getECUpdateCycleVersion=function(){return e[TL]},n.prototype.usingTHL=function(){return e._usingTHL},n}(S_))(e)},$L=function(e){function t(e,t){for(var n=0;n=0)){NR.push(n);var o=OF.wrapStageHandler(n,i);o.__prio=t,o.__raw=n,e.push(o)}}function FR(e,t){pR[e]=t}function IR(e,t,n){var r=aI(`registerMap`);r&&r(e,t,n)}var LR=HT;MR(hL,SF),MR(vL,wF),MR(vL,TF),MR(hL,XF),MR(vL,ZF),MR(SL,iL),wR(fF),TR(cL,pF),FR(`default`,DF),kR({type:A_,event:A_,update:A_},dl),kR({type:j_,event:j_,update:j_},dl),kR({type:M_,event:F_,update:M_,action:dl,refineEvent:RR,publishNonRefinedEvent:!0}),kR({type:N_,event:F_,update:N_,action:dl,refineEvent:RR,publishNonRefinedEvent:!0}),kR({type:P_,event:F_,update:P_,action:dl,refineEvent:RR,publishNonRefinedEvent:!0});function RR(e,t,n,r){return{eventContent:{selected:_v(n),isFromClick:t.isFromClick||!1}}}CR(`default`,{}),CR(`dark`,KF);var zR=[],BR={registerPreprocessor:wR,registerProcessor:TR,registerPostInit:ER,registerPostUpdate:DR,registerUpdateLifecycle:OR,registerAction:kR,registerCoordinateSystem:AR,registerLayout:jR,registerVisual:MR,registerTransform:LR,registerLoading:FR,registerMap:IR,registerImpl:iI,PRIORITY:CL,ComponentModel:bT,ComponentView:gF,SeriesModel:CE,ChartView:_D,registerComponentModel:function(e){bT.registerClass(e)},registerComponentView:function(e){gF.registerClass(e)},registerSeriesModel:function(e){CE.registerClass(e)},registerChartView:function(e){_D.registerClass(e)},registerCustomSeries:function(e,t){sI(e,t)},registerSubTypeDefaulter:function(e,t){bT.registerSubTypeDefaulter(e,t)},registerPainter:function(e,t){_P(e,t)}};function VR(e){if(q(e)){W(e,function(e){VR(e)});return}kc(zR,e)>=0||(zR.push(e),zc(e)&&(e={install:e}),e.install(BR))}var HR=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n.hasSymbolVisual=!0,n}return t.prototype.getInitialData=function(e,t){return kC(null,this,{useEncodeDefaulter:!0})},t.prototype.getProgressive=function(){return this.option.progressive??(this.option.large?5e3:this.get(`progressive`))},t.prototype.getProgressiveThreshold=function(){return this.option.progressiveThreshold??(this.option.large?1e4:this.get(`progressiveThreshold`))},t.prototype.brushSelector=function(e,t,n){return n.point(t.getItemLayout(e))},t.prototype.getZLevelKey=function(){return this.getData().count()>this.getProgressiveThreshold()?this.id:``},t.type=`series.scatter`,t.dependencies=[`grid`,`polar`,`geo`,`singleAxis`,`calendar`,`matrix`],t.defaultOption={coordinateSystem:`cartesian2d`,z:2,legendHoverLink:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{opacity:.8},emphasis:{scale:!0},clip:!0,select:{itemStyle:{borderColor:Q.color.primary}},universalTransition:{divideShape:`clone`}},t}(CE),UR=4,WR=function(){function e(){}return e}(),GR=function(e){H(t,e);function t(t){var n=e.call(this,t)||this;return n._off=0,n.hoverDataIdx=-1,n}return t.prototype.getDefaultShape=function(){return new WR},t.prototype.reset=function(){this.notClear=!1,this._off=0},t.prototype.beforeBrush=function(e){e&&!e.contentRetained&&this.reset()},t.prototype.buildPath=function(e,t){var n=t.points,r=t.size,i=this.symbolProxy,a=i.shape,o=e.getContext?e.getContext():e,s=o&&r[0]=0;s--){var c=s*2,l=r[c]-a/2,u=r[c+1]-o/2;if(e>=l&&t>=u&&e<=l+a&&t<=u+o)return s}return-1},t.prototype.contain=function(e,t){var n=this.transformCoordToLocal(e,t),r=this.getBoundingRect();return e=n[0],t=n[1],r.contain(e,t)?(this.hoverDataIdx=this.findDataIndex(e,t))>=0:(this.hoverDataIdx=-1,!1)},t.prototype.getBoundingRect=function(){var e=this._rect;if(!e){for(var t=this.shape,n=t.points,r=t.size,i=r[0],a=r[1],o=1/0,s=1/0,c=-1/0,l=-1/0,u=0;u=0&&(c.dataIndex=n+(e.startIndex||0))})},e.prototype.remove=function(){this._clear()},e.prototype._clear=function(){this._newAdded=[],this.group.removeAll()},e}(),qR=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.render=function(e,t,n){var r=e.getData();this._updateSymbolDraw(r,e).updateData(r,JR(e)),this._finished=!0},t.prototype.incrementalPrepareRender=function(e,t,n){var r=e.getData();this._updateSymbolDraw(r,e).incrementalPrepareUpdate(r),this._finished=!1},t.prototype.incrementalRender=function(e,t,n){this._symbolDraw.incrementalUpdate(e,t.getData(),c_(t),JR(t)),this._finished=e.end===t.getData().count()},t.prototype.updateTransform=function(e,t,n){var r=e.getData();if(this.group.dirty(),this._finished){var i=pk(``).reset(e,t,n);i.progress&&i.progress({start:0,end:r.count(),count:r.count()},r),this._symbolDraw.updateLayout(JR(e))}else return{update:!0}},t.prototype.eachRendered=function(e){this._symbolDraw&&this._symbolDraw.eachRendered(e)},t.prototype._updateSymbolDraw=function(e,t){var n=this._symbolDraw,r=t.pipelineContext.large;return(!n||r!==this._isLargeDraw)&&(n&&n.remove(),n=this._symbolDraw=r?new KR:new XE,this._isLargeDraw=r,this.group.removeAll()),this.group.add(n.group),n},t.prototype.remove=function(e,t){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},t.prototype.dispose=function(){},t.type=`scatter`,t}(_D);function JR(e){return{clipShape:ED(e)}}var YR=function(){function e(){}return e.prototype.needIncludeZero=function(){return!this.option.scale},e.prototype.getCoordSysModel=function(){},e}(),XR=function(e){H(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.getCoordSysModel=function(){return this.getReferringComponents(`grid`,Bg).models[0]},t.type=`cartesian2dAxis`,t}(bT);jc(XR,YR);var ZR={show:!0,z:0,inverse:!1,name:``,nameLocation:`end`,nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:`...`,placeholder:`.`},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:`auto`,onZeroAxisIndex:null,lineStyle:{color:Q.color.axisLine,width:1,type:`solid`},symbol:[`none`,`none`],symbolSize:[10,15],breakLine:!0},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12,color:Q.color.axisLabel,textMargin:[0,3]},splitLine:{show:!0,showMinLine:!0,showMaxLine:!0,lineStyle:{color:Q.color.axisSplitLine,width:1,type:`solid`}},splitArea:{show:!1,areaStyle:{color:[Q.color.backgroundTint,Q.color.backgroundTransparent]}},breakArea:{show:!0,itemStyle:{color:Q.color.neutral00,borderColor:Q.color.border,borderWidth:1,borderType:[3,3],opacity:.6},zigzagAmplitude:4,zigzagMinSpan:4,zigzagMaxSpan:20,zigzagZ:100,expandOnClick:!0},breakLabelLayout:{moveOverlap:`auto`}},QR=Tc({boundaryGap:!0,deduplication:null,jitter:0,jitterOverlap:!0,jitterMargin:2,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:`auto`,show:`auto`},axisLabel:{interval:`auto`}},ZR),$R=Tc({boundaryGap:[0,0],axisLine:{show:`auto`},axisTick:{show:`auto`},splitNumber:5,minorTick:{show:!1,splitNumber:5,length:3,lineStyle:{}},minorSplitLine:{show:!1,lineStyle:{color:Q.color.axisMinorSplitLine,width:1}}},ZR),ez={category:QR,value:$R,time:Tc({splitNumber:6,axisLabel:{rich:{primary:{fontWeight:`bold`}}},splitLine:{show:!1}},$R),log:Oc({logBase:10},$R)};function tz(e,t,n,r){W(jO,function(i,a){var o=Tc(Tc({},ez[a],!0),r,!0),s=function(e){H(n,e);function n(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t+`Axis.`+a,n}return n.prototype.mergeDefaultAndTheme=function(e,t){var n=hT(this),r=n?_T(e):{};Tc(e,t.getTheme().get(a+`Axis`)),Tc(e,this.getDefaultOption()),e.type=nz(e),n&&gT(e,r,n)},n.prototype.optionUpdated=function(){this.option.type===`category`&&(this.__ordinalMeta=ID.createByAxisModel(this))},n.prototype.getCategories=function(e){var t=this.option;if(t.type===`category`)return e?t.data:this.__ordinalMeta.categories},n.prototype.getOrdinalMeta=function(){return this.__ordinalMeta},n.prototype.updateAxisBreaks=function(e){var t=IA();return t?t.updateModelAxisBreak(this,e):{breaks:[]}},n.type=t+`Axis.`+a,n.defaultOption=o,n}(n);e.registerComponentModel(s)}),e.registerSubTypeDefaulter(t+`Axis`,nz)}function nz(e){return e.type||(e.data?`category`:`value`)}var rz=function(){function e(e){this.type=`cartesian`,this._dimList=[],this._axes={},this.name=e||``}return e.prototype.getAxis=function(e){return this._axes[e]},e.prototype.getAxes=function(){return G(this._dimList,function(e){return this._axes[e]},this)},e.prototype.getAxesByScale=function(e){return e=e.toLowerCase(),Pc(this.getAxes(),function(t){return t.scale.type===e})},e.prototype.addAxis=function(e){var t=e.dim;this._axes[t]=e,this._dimList.push(t)},e}(),iz=[`x`,`y`];function az(e){return(e.type===`interval`||e.type===`time`)&&!pw(e)}var oz=function(e){H(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.type=Zj,t.dimensions=iz,t}return t.prototype.calcAffineTransform=function(){this._transform=this._invTransform=null;var e=this.getAxis(`x`).scale,t=this.getAxis(`y`).scale;if(az(e)&&az(t)){var n=UD(e,null),r=UD(t,null),i=this.dataToPoint([n[0],r[0]]),a=this.dataToPoint([n[1],r[1]]),o=n[1]-n[0],s=r[1]-r[0];if(o&&s){var c=(a[0]-i[0])/o,l=(a[1]-i[1])/s,u=i[0]-n[0]*c,d=i[1]-r[0]*l,f=this._transform=[c,0,0,l,u,d];this._invTransform=Jl([],f)}}},t.prototype.getBaseAxis=function(){return this.getAxesByScale(`ordinal`)[0]||this.getAxesByScale(`time`)[0]||this.getAxis(`x`)},t.prototype.containPoint=function(e){var t=this.getAxis(`x`),n=this.getAxis(`y`);return t.contain(t.toLocalCoord(e[0]))&&n.contain(n.toLocalCoord(e[1]))},t.prototype.containData=function(e){return this.getAxis(`x`).containData(e[0])&&this.getAxis(`y`).containData(e[1])},t.prototype.containZone=function(e,t){var n=this.dataToPoint(e),r=this.dataToPoint(t),i=this.getArea(),a=new Eu(n[0],n[1],r[0]-n[0],r[1]-n[1]);return i.intersect(a)},t.prototype.dataToPoint=function(e,t,n){n||=[];var r=e[0],i=e[1];if(this._transform&&r!=null&&isFinite(r)&&i!=null&&isFinite(i))return lu(n,e,this._transform);var a=this.getAxis(`x`),o=this.getAxis(`y`);return n[0]=a.toGlobalCoord(a.dataToCoord(r,t)),n[1]=o.toGlobalCoord(o.dataToCoord(i,t)),n},t.prototype.clampData=function(e,t){var n=this.getAxis(`x`).scale,r=this.getAxis(`y`).scale,i=n.getExtent(),a=r.getExtent(),o=n.parse(e[0]),s=r.parse(e[1]);return t||=[],t[0]=Math.min(Math.max(Math.min(i[0],i[1]),o),Math.max(i[0],i[1])),t[1]=Math.min(Math.max(Math.min(a[0],a[1]),s),Math.max(a[0],a[1])),t},t.prototype.pointToData=function(e,t,n){if(n||=[],this._invTransform)return lu(n,e,this._invTransform);var r=this.getAxis(`x`),i=this.getAxis(`y`);return n[0]=r.coordToData(r.toLocalCoord(e[0]),t),n[1]=i.coordToData(i.toLocalCoord(e[1]),t),n},t.prototype.getOtherAxis=function(e){return this.getAxis(e.dim===`x`?`y`:`x`)},t.prototype.getArea=function(e){e||=0;var t=this.getAxis(`x`).getGlobalExtent(),n=this.getAxis(`y`).getGlobalExtent(),r=Math.min(t[0],t[1])-e,i=Math.min(n[0],n[1])-e;return new Eu(r,i,Math.max(t[0],t[1])-r+e,Math.max(n[0],n[1])-i+e)},t}(rz);function sz(e,t){var n=e.scale,r=e.model,i=Rj(n,r,r.ecModel,e,null),a=QD(n),o=QD(t)?t.intervalStub:t,s=a?n.intervalStub:n,c=n.base,l=o.getTicks(),u=o.getTicks({expandToNicedExtent:!0}),d=l.length-1,f,p,m;if(d===1)f=p=0,m=1;else if(d===2){var h=wh(l[0].value-l[1].value),g=wh(l[1].value-l[2].value);f=p=0,h===g?m=2:(m=1,h=C[1])return!0})):b[1]?(T=C[1],A(function(){if(P(),k=Rh(O-E*m,D),j(),w<=C[0])return!0})):A(function(){k=Rh(Dh(C[0]/E)*E,D),O=Rh(Eh(C[1]/E)*E,D);var e=Th((O-k)/E);if(e<=m){var t=m-e,n=void 0,r=i.incl0||a;if(r&&C[0]===0)n=[0,t];else if(r&&C[1]===0)n=[t,0];else{var o=Eh(t/2);n=t%2==0?[o,o]:w+T=C[1])return!0}})}qO(n,b,S,[w,T],x,{interval:E,intervalCount:m,intervalPrecision:D,niceExtent:[k,O]})}function cz(e,t){var n=QD(e),r=n?e.intervalStub:e,i=t.fixMinMax||[],a=n?e.getExtent():null,o=r.getExtent(),s=iO(o,i,t.rawExtentResult);r.setExtent(s[0],s[1]),s=r.getExtent();var c=n?uz(r,t):lz(r,t),l=c.intervalPrecision,u=c.interval,d=t.userInterval;d!=null&&(c.interval=d,c.intervalPrecision=tO(d)),i[0]||(s[0]=Rh(Eh(s[0]/u)*u,l)),i[1]||(s[1]=Rh(Dh(s[1]/u)*u,l)),d!=null&&(c.niceExtent=s.slice()),qO(e,i,o,s,a,c)}function lz(e,t){var n=oO(t.splitNumber,5),r=GD(e),i=t.minInterval,a=t.maxInterval,o=Zh(r/n,!0);i!=null&&oa&&(o=a);var s=tO(o),c=e.getExtent(),l=[Rh(Dh(c[0]/o)*o,s),Rh(Eh(c[1]/o)*o,s)];return{interval:o,intervalPrecision:s,niceExtent:l}}function uz(e,t){var n=oO(t.splitNumber,10),r=e.getExtent(),i=GD(e),a=Ch(Yh(i),1);n/i*a<=.5&&(a*=10);var o=tO(a),s=[Rh(Dh(r[0]/a)*a,o),Rh(Eh(r[1]/a)*a,o)];return{intervalPrecision:o,interval:a,niceExtent:s}}function dz(e){var t=e.scale,n=e.model,r=n.axis,i=n.ecModel;fz(t,n,r,i,null)}function fz(e,t,n,r,i){var a=Rj(e,t,r,n,i),o=XD(e)||ZD(e);pz(e,{splitNumber:t.get(`splitNumber`),fixMinMax:a.fixMM,userInterval:t.get(`interval`),minInterval:o?t.get(`minInterval`):null,maxInterval:o?t.get(`maxInterval`):null,rawExtentResult:a}),n&&r&&Bj(n,e,a,r)}function pz(e,t){mz[e.type](e,t)}var mz={interval:cz,log:cz,time:CO,ordinal:dl},hz=[[3,1],[0,2]],gz=function(){function e(e,t,n){this.type=`grid`,this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this.axisPointerEnabled=!0,this.dimensions=iz,this._initCartesian(e,t,n),this.model=e}return e.prototype.getRect=function(){return this._rect},e.prototype.update=function(e,t){var n=this._axesMap;W(this._axesList,function(e){Mj(e,1);var t=e.scale;$D(t)&&t.setSortInfo(e.model.get(`categorySortInfo`))});function r(e){for(var t=Ic(e),n=[],r=t.length-1;r>=0;r--){var i=e[+t[r]];i.__alignTo?n.push(i):dz(i)}W(n,function(e){xz(e,e.__alignTo)?dz(e):sz(e,e.__alignTo.scale)})}r(n.x),r(n.y);var i={};W(n.x,function(e){vz(n,`y`,e,i)}),W(n.y,function(e){vz(n,`x`,e,i)}),this.resize(this.model,t)},e.prototype.resize=function(e,t,n){var r=pT(e,t),i=this._rect=dT(e.getBoxLayoutParams(),r.refContainer),a=this._axesMap,o=this._coordsList,s=e.get(`containLabel`);if(Cz(a,i),!n){var c=Dz(i,o,a,s,t),l=void 0;if(s)Tz?(Tz(this._axesList,i),Cz(a,i)):l=Ez(i.clone(),`axisLabel`,null,i,a,c,r);else{var u=kz(e,i,r),d=u.outerBoundsRect,f=u.parsedOuterBoundsContain,p=u.outerBoundsClamp;d&&(l=Ez(d,f,p,i,a,c,r))}Oz(i,a,bk.determine,null,l,r),W(this._coordsList,function(e){e.calcAffineTransform()})}},e.prototype.getAxis=function(e,t){var n=this._axesMap[e];if(n!=null)return n[t||0]},e.prototype.getAxes=function(){return this._axesList.slice()},e.prototype.getCartesian=function(e,t){if(e!=null&&t!=null){var n=`x`+e+`y`+t;return this._coordsMap[n]}Hc(e)&&(t=e.yAxisIndex,e=e.xAxisIndex);for(var r=0,i=this._coordsList;r=0;i--){var a=e[+t[i]];YD(a.scale)&&GO(a.model,a.type,!0)==null&&(a.model.get(`alignTicks`)&&a.model.get(`interval`)==null?r.push(a):n=a)}n||=r.pop(),n&&W(r,function(e){e.__alignTo=n})}function xz(e,t){return pw(e.scale)||pw(t.scale)||t.scale.getTicks().length<2}function Sz(e,t){var n=e.getExtent(),r=n[0]+n[1];e.toGlobalCoord=e.dim===`x`?function(e){return e+t}:function(e){return r-e+t},e.toLocalCoord=e.dim===`x`?function(e){return e-t}:function(e){return r-e+t}}function Cz(e,t){W(e.x,function(e){return wz(e,t.x,t.width)}),W(e.y,function(e){return wz(e,t.y,t.height)})}function wz(e,t,n){var r=[0,n],i=+!!e.inverse;e.setExtent(r[i],r[1-i]),Sz(e,t)}var Tz;function Ez(e,t,n,r,i,a,o){Oz(r,i,bk.estimate,t,!1,o);var s=[0,0,0,0];l(0),l(1),u(r,0,NaN),u(r,1,NaN);var c=Fc(s,function(e){return e>0})==null;return zb(r,s,!0,!0,n),Cz(i,r),c;function l(e){W(i[db[e]],function(t){if(WO(t.model)){var n=a.ensureRecord(t.model),r=n.labelInfoList;if(r)for(var i=0;i0&&!Jc(t)&&t>1e-4&&(e/=t),e}}function Dz(e,t,n,r,i){var a=new UA(Az);return W(n,function(n){return W(n,function(n){if(WO(n.model)){var o=!r;n.axisBuilder=bj(e,t,n.model,i,a,o)}})}),a}function Oz(e,t,n,r,i,a){var o=n===bk.determine;W(t,function(t){return W(t,function(t){WO(t.model)&&(xj(t.axisBuilder,e,t.model),t.axisBuilder.build(o?{axisTickLabelDetermine:!0}:{axisTickLabelEstimate:!0},{noPxChange:i}))})});var s={x:0,y:0};c(0),c(1);function c(t){s[db[1-t]]=e[fb[t]]<=a.refContainer[fb[t]]*.5?0:1-t==1?2:1}W(t,function(e,t){return W(e,function(e){WO(e.model)&&((r===`all`||o)&&e.axisBuilder.build({axisName:!0},{nameMarginLevel:s[t]}),o&&e.axisBuilder.build({axisLine:!0}))})})}function kz(e,t,n){var r,i=e.get(`outerBoundsMode`,!0);i===`same`?r=t.clone():(i==null||i===`auto`)&&(r=dT(e.get(`outerBounds`,!0)||Yj,n.refContainer));var a=e.get(`outerBoundsContain`,!0),o=a==null||a===`auto`||kc([`all`,`axisLabel`],a)<0?`all`:a,s=[Ih(Y(e.get(`outerBoundsClampWidth`,!0),Xj[0]),t.width),Ih(Y(e.get(`outerBoundsClampHeight`,!0),Xj[1]),t.height)];return{outerBoundsRect:r,parsedOuterBoundsContain:o,outerBoundsClamp:s}}var Az=function(e,t,n,r,i,a){var o=n.axis.dim===`x`?`y`:`x`;qA(e,t,n,r,i,a),UO(e.nameLocation)||W(t.recordMap[o],function(e){e&&e.labelInfoList&&e.dirVec&&YA(e.labelInfoList,e.dirVec,r,i)})};function jz(e,t){var n={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return Mz(n,e,t),n.seriesInvolved&&Pz(n,e),n}function Mz(e,t,n){var r=t.getComponent(`tooltip`),i=t.getComponent(`axisPointer`),a=i.get(`link`,!0)||[],o=[];W(n.getCoordinateSystems(),function(n){if(!n.axisPointerEnabled)return;var s=Vz(n.model),c=e.coordSysAxesInfo[s]={};e.coordSysMap[s]=n;var l=n.model.getModel(`tooltip`,r);if(W(n.getAxes(),Rc(p,!1,null)),n.getTooltipAxes&&r&&l.get(`show`)){var u=l.get(`trigger`)===`axis`,d=l.get([`axisPointer`,`type`])===`cross`,f=n.getTooltipAxes(l.get([`axisPointer`,`axis`]));(u||d)&&W(f.baseAxes,Rc(p,!d||`cross`,u)),d&&W(f.otherAxes,Rc(p,`cross`,!1))}function p(r,s,u){var d=u.model.getModel(`axisPointer`,i),f=d.get(`show`);if(f&&(f!==`auto`||r||Bz(d))){s??=d.get(`triggerTooltip`),d=r?Nz(u,l,i,t,r,s):d;var p=d.get(`snap`),m=d.get(`triggerEmphasis`),h=Vz(u.model),g=s||p||u.type===`category`,_=e.axesInfo[h]={key:h,axis:u,coordSys:n,axisPointerModel:d,triggerTooltip:s,triggerEmphasis:m,involveSeries:g,snap:p,useHandle:Bz(d),seriesModels:[],linkGroup:null};c[h]=_,e.seriesInvolved=e.seriesInvolved||g;var v=Fz(a,u);if(v!=null){var y=o[v]||(o[v]={axesInfo:{}});y.axesInfo[h]=_,y.mapper=a[v].mapper,_.linkGroup=y}}}})}function Nz(e,t,n,r,i,a){var o=t.getModel(`axisPointer`),s=[`type`,`snap`,`lineStyle`,`shadowStyle`,`label`,`animation`,`animationDurationUpdate`,`animationEasingUpdate`,`z`],c={};W(s,function(e){c[e]=wc(o.get(e))}),c.snap=e.type!==`category`&&!!a,o.get(`type`)===`cross`&&(c.type=`line`);var l=c.label||={};if(l.show??=!1,i===`cross`&&(l.show=o.get([`label`,`show`])??!0,!a)){var u=c.lineStyle=o.get(`crossStyle`);u&&Oc(l,u.textStyle)}return e.model.getModel(`axisPointer`,new jx(c,n,r))}function Pz(e,t){t.eachSeries(function(t){var n=t.coordinateSystem,r=t.get([`tooltip`,`trigger`],!0),i=t.get([`tooltip`,`show`],!0);n&&n.model&&r!==`none`&&r!==!1&&r!==`item`&&i!==!1&&t.get([`axisPointer`,`show`],!0)!==!1&&W(e.coordSysAxesInfo[Vz(n.model)],function(e){var r=e.axis;n.getAxis(r.dim)===r&&(e.seriesModels.push(t),e.seriesDataCount??=0,e.seriesDataCount+=t.getData().count())})})}function Fz(e,t){for(var n=t.model,r=t.dim,i=0;i=0||e===t}function Lz(e){var t=Rz(e);if(t){var n=t.axisPointerModel,r=t.axis.scale,i=n.option,a=n.get(`status`),o=n.get(`value`);o!=null&&(o=r.parse(o));var s=Bz(n);a??(i.status=s?`show`:`hide`);var c=r.getExtent();(o==null||o>c[1])&&(o=c[1]),o3?1.4:i>1?1.2:1.1,c=r>0?s:1/s;this._checkTriggerMoveZoom(this,`zoom`,`zoomOnMouseWheel`,e,{scale:c,originX:a,originY:o,isAvailableBehavior:null})}if(n){var l=Math.abs(r),u=(r>0?1:-1)*(l>3?.4:l>1?.15:.05);this._checkTriggerMoveZoom(this,`scrollMove`,`moveOnMouseWheel`,e,{scrollDelta:u,originX:a,originY:o,isAvailableBehavior:null})}}}},t.prototype._pinchHandler=function(e){if(!(aB(this._zr,`globalPan`)||lB(e))){var t=e.pinchScale>1?1.1:1/1.1;this._checkTriggerMoveZoom(this,`zoom`,null,e,{scale:t,originX:e.pinchX,originY:e.pinchY,isAvailableBehavior:null})}},t.prototype._checkTriggerMoveZoom=function(e,t,n,r,i){e._checkPointer(r,i.originX,i.originY)&&(fN(r.event),r.__ecRoamConsumed=!0,gB(e,t,n,r,i))},t}(ip);function lB(e){return e.__ecRoamConsumed}var uB=Ig();function dB(e){var t=uB(e);return t.roam=t.roam||{},t.uniform=t.uniform||{},t}function fB(e,t,n,r){for(var i=dB(e).roam,a=i[t]=i[t]||[],o=0;o=0;a--)r[a]??(delete n[t[a]],t.pop())}function FB(e,t){var n=e.visual,r=[];Hc(n)?kB(n,function(e){r.push(e)}):n!=null&&r.push(n),!t&&r.length===1&&!{color:1,symbol:1}.hasOwnProperty(e.type)&&(r[1]=r[0]),UB(e,r)}function IB(e){return{applyVisual:function(t,n,r){var i=this.mapValueToVisual(t);r(`color`,e(n(`color`),i))},_normalizedToVisual:VB([0,1])}}function LB(e){var t=this.option.visual;return t[Math.round(Nh(e,[0,1],[0,t.length-1],!0))]||{}}function RB(e){return function(t,n,r){r(e,this.mapValueToVisual(t))}}function zB(e){var t=this.option.visual;return t[this.option.loop&&e!==jB?e%t.length:e]}function BB(){return this.option.visual[0]}function VB(e){return{linear:function(t){return Nh(t,e,this.option.visual,!0)},category:zB,piecewise:function(t,n){var r=HB.call(this,n);return r??=Nh(t,e,this.option.visual,!0),r},fixed:BB}}function HB(e){var t=this.option,n=t.pieceList;if(t.hasSpecialVisual){var r=n[MB.findPieceIndex(e,n)];if(r&&r.visual)return r.visual[this.type]}}function UB(e,t){return e.visual=t,e.type===`color`&&(e.parsedVisual=G(t,function(e){return xf(e)||[0,0,0,1]})),t}var WB={linear:function(e){return Nh(e,this.option.dataExtent,[0,1],!0)},piecewise:function(e){var t=this.option.pieceList,n=MB.findPieceIndex(e,t,!0);if(n!=null)return Nh(n,[0,t.length-1],[0,1],!0)},category:function(e){return(this.option.categories?this.option.categoryMap[e]:e)??jB},fixed:dl};function GB(e,t,n){return e?t<=n:t0&&(y[0]=-y[0],y[1]=-y[1]);var x=v[0]<0?-1:1;if(r.__position!==`start`&&r.__position!==`end`){var S=-Math.atan2(v[1],v[0]);l[0].8?`left`:u[0]<-.8?`right`:`center`,p=u[1]>.8?`top`:u[1]<-.8?`bottom`:`middle`;break;case`start`:r.x=-u[0]*h+c[0],r.y=-u[1]*g+c[1],f=u[0]>.8?`right`:u[0]<-.8?`left`:`center`,p=u[1]>.8?`bottom`:u[1]<-.8?`top`:`middle`;break;case`insideStartTop`:case`insideStart`:case`insideStartBottom`:r.x=h*x+c[0],r.y=c[1]+C,f=v[0]<0?`right`:`left`,r.originX=-h*x,r.originY=-C;break;case`insideMiddleTop`:case`insideMiddle`:case`insideMiddleBottom`:case`middle`:r.x=b[0],r.y=b[1]+C,f=`center`,r.originY=-C;break;case`insideEndTop`:case`insideEnd`:case`insideEndBottom`:r.x=-h*x+l[0],r.y=l[1]+C,f=v[0]>=0?`right`:`left`,r.originX=h*x,r.originY=-C}r.scaleX=r.scaleY=i,r.setStyle({verticalAlign:r.__verticalAlign||p,align:r.__align||f})}},t}($v),iV=function(){function e(e){this.group=new $v,this._LineCtor=e||rV}return e.prototype.updateData=function(e){var t=this;this._progressiveEls=null;var n=this,r=n.group,i=n._lineData;n._lineData=e,i||r.removeAll();var a=oV(e);e.diff(i).add(function(n){t._doAdd(e,n,a)}).update(function(n,r){t._doUpdate(i,e,r,n,a)}).remove(function(e){r.remove(i.getItemGraphicEl(e))}).execute()},e.prototype.updateLayout=function(){var e=this._lineData;e&&e.eachItemGraphicEl(function(t,n){t.updateLayout(e,n)},this)},e.prototype.incrementalPrepareUpdate=function(e){this._seriesScope=oV(e),this._lineData=null,this.group.removeAll()},e.prototype.incrementalUpdate=function(e,t,n){this._progressiveEls=[];function r(e){!e.isGroup&&!aV(e)&&(e.incremental=n,e.ensureState(`emphasis`).hoverLayer=2)}for(var i=e.start;i0}function oV(e){var t=e.hostModel,n=t.getModel(`emphasis`);return{lineStyle:t.getModel(`lineStyle`).getLineStyle(),emphasisLineStyle:n.getModel([`lineStyle`]).getLineStyle(),blurLineStyle:t.getModel([`blur`,`lineStyle`]).getLineStyle(),selectLineStyle:t.getModel([`select`,`lineStyle`]).getLineStyle(),emphasisDisabled:n.get(`disabled`),blurScope:n.get(`blurScope`),focus:n.get(`focus`),labelStatesModels:sx(t)}}function sV(e){return isNaN(e[0])||isNaN(e[1])}function cV(e){return e&&!sV(e[0])&&!sV(e[1])}function lV(e,t,n,r,i,a){e||=0;var o=Uh(n[1],-n[0]);if(i!=null&&(i=dV(i,[0,o])),a!=null&&(a=Math.max(a,i??0)),r===`all`){var s=Math.abs(Uh(t[1],-t[0]));s=dV(s,[0,o]),i=a=dV(s,[i,a]),r=0}t[0]=dV(t[0],n),t[1]=dV(t[1],n);var c=uV(t,r);t[r]+=e;var l=i||0,u=n.slice();c.sign<0?u[0]=Uh(u[0],l):u[1]=Uh(u[1],-l),t[r]=dV(t[r],u);var d=uV(t,r);return i!=null&&(d.sign!==c.sign||d.spana&&(t[1-r]=Uh(t[r],d.sign*a)),t}function uV(e,t){var n=e[t]-e[1-t];return{span:Math.abs(n),sign:n>0?-1:n<0?1:t?-1:1}}function dV(e,t){return Math.min(t[1]==null?1/0:t[1],Math.max(t[0]==null?-1/0:t[0],e))}var fV=!0,pV=Math.min,mV=Math.max,hV=Math.pow,gV=1e4,_V=6,vV=6,yV=`globalPan`,bV={w:[0,0],e:[0,1],n:[1,0],s:[1,1]},xV={w:`ew`,e:`ew`,n:`ns`,s:`ns`,ne:`nesw`,sw:`nesw`,nw:`nwse`,se:`nwse`},SV={brushStyle:{lineWidth:2,stroke:Q.color.backgroundTint,fill:Q.color.borderTint},transformable:!0,brushMode:`single`,removeOnClick:!1},CV=0,wV=function(e){H(t,e);function t(t){var n=e.call(this)||this;return n._track=[],n._covers=[],n._handlers={},n._zr=t,n.group=new $v,n._uid=`brushController_`+CV++,W(nH,function(e,t){this._handlers[t]=K(e,this)},n),n}return t.prototype.enableBrush=function(e){return this._brushType&&this._doDisableBrush(),e.brushType&&this._doEnableBrush(e),this},t.prototype._doEnableBrush=function(e){var t=this._zr;this._enableGlobalPan||rB(t,yV,this._uid),W(this._handlers,function(e,n){t.on(n,e)}),this._brushType=e.brushType,this._brushOption=Tc(wc(SV),e,!0)},t.prototype._doDisableBrush=function(){var e=this._zr;iB(e,yV,this._uid),W(this._handlers,function(t,n){e.off(n,t)}),this._brushType=this._brushOption=null},t.prototype.setPanels=function(e){if(e&&e.length){var t=this._panels={};W(e,function(e){t[e.panelId]=wc(e)})}else this._panels=null;return this},t.prototype.mount=function(e){e||={},this._enableGlobalPan=e.enableGlobalPan;var t=this.group;return this._zr.add(t),t.attr({x:e.x||0,y:e.y||0,rotation:e.rotation||0,scaleX:e.scaleX||1,scaleY:e.scaleY||1}),this._transform=t.getLocalTransform(),this},t.prototype.updateCovers=function(e){e=G(e,function(e){return Tc(wc(SV),e,!0)});var t=`\0-brush-index-`,n=this._covers,r=this._covers=[],i=this,a=this._creatingCover;return new Px(n,e,s,o).add(c).update(c).remove(l).execute(),this;function o(e,n){return(e.id==null?t+n:e.id)+`-`+e.brushType}function s(e,t){return o(e.__brushOption,t)}function c(t,o){var s=e[t];o!=null&&n[o]===a?r[t]=n[o]:kV(i,r[t]=o==null?EV(i,TV(i,s)):(n[o].__brushOption=s,n[o]))}function l(e){n[e]!==a&&i.group.remove(n[e])}},t.prototype.unmount=function(){return this.enableBrush(!1),NV(this),this._zr.remove(this.group),this},t.prototype.dispose=function(){this.unmount(),this.off()},t}(ip);function TV(e,t){var n=aH[t.brushType].createCover(e,t);return n.__brushOption=t,OV(n,t),e.group.add(n),n}function EV(e,t){var n=AV(t);return n.endCreating&&(n.endCreating(e,t),OV(t,t.__brushOption)),t}function DV(e,t){var n=t.__brushOption;AV(t).updateCoverShape(e,t,n.range,n)}function OV(e,t){var n=t.z;n??=gV,e.traverse(function(e){e.z=n,e.z2=n})}function kV(e,t){AV(t).updateCommon(e,t),DV(e,t)}function AV(e){return aH[e.__brushOption.brushType]}function jV(e,t,n){var r=e._panels;if(!r)return fV;var i,a=e._transform;return W(r,function(e){e.isTargetByCursor(t,n,a)&&(i=e)}),i}function MV(e,t){var n=e._panels;if(!n)return fV;var r=t.__brushOption.panelId;return r==null?fV:n[r]}function NV(e){var t=e._covers,n=t.length;return W(t,function(t){e.group.remove(t)},e),t.length=0,!!n}function PV(e,t){var n=G(e._covers,function(e){var t=e.__brushOption,n=wc(t.range);return{brushType:t.brushType,panelId:t.panelId,range:n}});e.trigger(`brush`,{areas:n,isEnd:!!t.isEnd,removeOnClick:!!t.removeOnClick})}function FV(e){var t=e._track;if(!t.length)return!1;var n=t[t.length-1],r=t[0],i=n[0]-r[0],a=n[1]-r[1];return hV(i*i+a*a,.5)>_V}function IV(e){var t=e.length-1;return t<0&&(t=0),[e[0],e[t]]}function LV(e,t,n,r){var i=new $v;return i.add(new eh({name:`main`,style:VV(n),silent:!0,draggable:!0,cursor:`move`,drift:Rc(KV,e,t,i,[`n`,`s`,`w`,`e`]),ondragend:Rc(PV,t,{isEnd:!0})})),W(r,function(n){i.add(new eh({name:n.join(``),style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:Rc(KV,e,t,i,n),ondragend:Rc(PV,t,{isEnd:!0})}))}),i}function RV(e,t,n,r){var i=r.brushStyle.lineWidth||0,a=mV(i,vV),o=n[0][0],s=n[1][0],c=o-i/2,l=s-i/2,u=n[0][1],d=n[1][1],f=u-a+i/2,p=d-a+i/2,m=u-o,h=d-s,g=m+i,_=h+i;BV(e,t,`main`,o,s,m,h),r.transformable&&(BV(e,t,`w`,c,l,a,_),BV(e,t,`e`,f,l,a,_),BV(e,t,`n`,c,l,g,a),BV(e,t,`s`,c,p,g,a),BV(e,t,`nw`,c,l,a,a),BV(e,t,`ne`,f,l,a,a),BV(e,t,`sw`,c,p,a,a),BV(e,t,`se`,f,p,a,a))}function zV(e,t){var n=t.__brushOption,r=n.transformable,i=t.childAt(0);i.useStyle(VV(n)),i.attr({silent:!r,cursor:r?`move`:`default`}),W([[`w`],[`e`],[`n`],[`s`],[`s`,`e`],[`s`,`w`],[`n`,`e`],[`n`,`w`]],function(n){var i=t.childOfName(n.join(``)),a=n.length===1?WV(e,n[0]):GV(e,n);i&&i.attr({silent:!r,invisible:!r,cursor:r?xV[a]+`-resize`:null})})}function BV(e,t,n,r,i,a,o){var s=t.childOfName(n);s&&s.setShape(XV(YV(e,t,[[r,i],[r+a,i+o]])))}function VV(e){return Oc({strokeNoScale:!0},e.brushStyle)}function HV(e,t,n,r){var i=[pV(e,n),pV(t,r)],a=[mV(e,n),mV(t,r)];return[[i[0],a[0]],[i[1],a[1]]]}function UV(e){return Eb(e.group)}function WV(e,t){return{left:`w`,right:`e`,top:`n`,bottom:`s`}[Ob({w:`left`,e:`right`,n:`top`,s:`bottom`}[t],UV(e))]}function GV(e,t){var n=[WV(e,t[0]),WV(e,t[1])];return(n[0]===`e`||n[0]===`w`)&&n.reverse(),n.join(``)}function KV(e,t,n,r,i,a){var o=n.__brushOption,s=e.toRectRange(o.range),c=JV(t,i,a);W(r,function(e){var t=bV[e];s[t[0]][t[1]]+=c[t[0]]}),o.range=e.fromRectRange(HV(s[0][0],s[1][0],s[0][1],s[1][1])),kV(t,n),PV(t,{isEnd:!1})}function qV(e,t,n,r){var i=t.__brushOption.range,a=JV(e,n,r);W(i,function(e){e[0]+=a[0],e[1]+=a[1]}),kV(e,t),PV(e,{isEnd:!1})}function JV(e,t,n){var r=e.group,i=r.transformCoordToLocal(t,n),a=r.transformCoordToLocal(0,0);return[i[0]-a[0],i[1]-a[1]]}function YV(e,t,n){var r=MV(e,t);return r&&r!==fV?r.clipPath(n,e._transform):wc(n)}function XV(e){var t=pV(e[0][0],e[1][0]),n=pV(e[0][1],e[1][1]),r=mV(e[0][0],e[1][0]),i=mV(e[0][1],e[1][1]);return{x:t,y:n,width:r-t,height:i-n}}function ZV(e,t,n){if(e._brushType&&!iH(e,t.offsetX,t.offsetY)){var r=e._zr,i=e._covers,a=jV(e,t,n);if(!e._dragging)for(var o=0;or.getWidth()||n<0||n>r.getHeight()}var aH={lineX:oH(0),lineY:oH(1),rect:{createCover:function(e,t){function n(e){return e}return LV({toRectRange:n,fromRectRange:n},e,t,[[`w`],[`e`],[`n`],[`s`],[`s`,`e`],[`s`,`w`],[`n`,`e`],[`n`,`w`]])},getCreatingRange:function(e){var t=IV(e);return HV(t[1][0],t[1][1],t[0][0],t[0][1])},updateCoverShape:function(e,t,n,r){RV(e,t,n,r)},updateCommon:zV,contain:$V},polygon:{createCover:function(e,t){var n=new $v;return n.add(new Oy({name:`main`,style:VV(t),silent:!0})),n},getCreatingRange:function(e){return e},endCreating:function(e,t){t.remove(t.childAt(0)),t.add(new Ey({name:`main`,draggable:!0,drift:Rc(qV,e,t),ondragend:Rc(PV,e,{isEnd:!0})}))},updateCoverShape:function(e,t,n,r){t.childAt(0).setShape({points:YV(e,t,n)})},updateCommon:zV,contain:$V}};function oH(e){return{createCover:function(t,n){return LV({toRectRange:function(t){var n=[t,[0,100]];return e&&n.reverse(),n},fromRectRange:function(t){return t[e]}},t,n,[[[`w`],[`e`]],[[`n`],[`s`]]][e])},getCreatingRange:function(t){var n=IV(t);return[pV(n[0][e],n[1][e]),mV(n[0][e],n[1][e])]},updateCoverShape:function(t,n,r,i){var a,o=MV(t,n);if(o!==fV&&o.getLinearBrushOtherExtent)a=o.getLinearBrushOtherExtent(e);else{var s=t._zr;a=[0,[s.getWidth(),s.getHeight()][1-e]]}var c=[r,a];e&&c.reverse(),RV(t,n,c,i)},updateCommon:zV,contain:$V}}function sH(e){return e=uH(e),function(t){return Mb(t,e)}}function cH(e,t){return e=uH(e),function(n){var r=t??n,i=r?e.width:e.height,a=r?e.x:e.y;return[a,a+(i||0)]}}function lH(e,t,n){var r=uH(e);return function(e,i){return r.contain(i[0],i[1])&&!sB(e,t,n)}}function uH(e){return Eu.create(e)}var dH=256,fH=function(){function e(){this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={inRange:null,outOfRange:null};var e=cc.createCanvas();this.canvas=e}return e.prototype.update=function(e,t,n,r,i,a){var o=this._getBrush(),s=this._getGradient(i,`inRange`),c=this._getGradient(i,`outOfRange`),l=this.pointSize+this.blurSize,u=this.canvas,d=u.getContext(`2d`),f=e.length;u.width=t,u.height=n;for(var p=0;p0){var E=a(v)?s:c;v>0&&(v=v*w+C),b[x++]=E[T],b[x++]=E[T+1],b[x++]=E[T+2],b[x++]=E[T+3]*v*256}else x+=4}return d.putImageData(y,0,0),u},e.prototype._getBrush=function(){var e=this._brushCanvas||=cc.createCanvas(),t=this.pointSize+this.blurSize,n=t*2;e.width=n,e.height=n;var r=e.getContext(`2d`);return r.clearRect(0,0,n,n),r.shadowOffsetX=n,r.shadowBlur=this.blurSize,r.shadowColor=Q.color.neutral99,r.beginPath(),r.arc(-t,t,this.pointSize,0,Math.PI*2,!0),r.closePath(),r.fill(),e},e.prototype._getGradient=function(e,t){for(var n=this._gradientPixels,r=n[t]||(n[t]=new Uint8ClampedArray(1024)),i=[0,0,0,0],a=0,o=0;o<256;o++)e[t](o/255,!0,i),r[a++]=i[0],r[a++]=i[1],r[a++]=i[2],r[a++]=i[3];return r},e}();function pH(e,t,n){var r=e[1]-e[0];t=G(t,function(t){return{interval:[(t.interval[0]-e[0])/r,(t.interval[1]-e[0])/r]}});var i=t.length,a=0;return function(e){for(var r=a;r=0;r--){var o=t[r].interval;if(o[0]<=e&&e<=o[1]){a=r;break}}return r>=0&&r=t[0]&&e<=t[1]}}var hH=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.render=function(e,t,n){var r;t.eachComponent(`visualMap`,function(t){t.eachTargetSeries(function(n){n===e&&(r=t)})}),this._progressiveEls=null,this.group.removeAll();var i=e.coordinateSystem;i.type===`cartesian2d`||i.type===`calendar`||i.type===`matrix`?this._renderOnGridLike(e,n,0,e.getData().count()):OD(i)&&this._renderOnGeo(i,e,r,n)},t.prototype.incrementalPrepareRender=function(e,t,n){this.group.removeAll()},t.prototype.incrementalRender=function(e,t,n,r){var i=t.coordinateSystem;i&&(OD(i)?this.render(t,n,r):(this._progressiveEls=[],this._renderOnGridLike(t,r,e.start,e.end,!0)))},t.prototype.eachRendered=function(e){Wb(this._progressiveEls||this.group,e)},t.prototype._renderOnGridLike=function(e,t,n,r,i){var a=e.coordinateSystem,o=DD(a,`cartesian2d`),s=DD(a,`matrix`),c,l,u,d;if(o){var f=a.getAxis(`x`),p=a.getAxis(`y`);c=fA(f).w+.5,l=fA(p).w+.5,u=f.scale.getExtent(),d=p.scale.getExtent()}for(var m=this.group,h=e.getData(),g=e.getModel([`emphasis`,`itemStyle`]).getItemStyle(),_=e.getModel([`blur`,`itemStyle`]).getItemStyle(),v=e.getModel([`select`,`itemStyle`]).getItemStyle(),y=e.get([`itemStyle`,`borderRadius`]),b=sx(e),x=e.getModel(`emphasis`),S=x.get(`focus`),C=x.get(`blurScope`),w=x.get(`disabled`),T=o||s?[h.mapDimension(`x`),h.mapDimension(`y`),h.mapDimension(`value`)]:[h.mapDimension(`time`),h.mapDimension(`value`)],E=n;Eu[1]||Ad[1])continue;var j=a.dataToPoint([k,A]);D=new eh({shape:{x:j[0]-c/2,y:j[1]-l/2,width:c,height:l},style:O})}else if(s){var M=a.dataToLayout([h.get(T[0],E),h.get(T[1],E)]).rect;if(Jc(M.x))continue;D=new eh({z2:1,shape:M,style:O})}else{if(isNaN(h.get(T[1],E)))continue;var N=a.dataToLayout([h.get(T[0],E)]),M=N.contentRect||N.rect;if(Jc(M.x)||Jc(M.y))continue;D=new eh({z2:1,shape:M,style:O})}if(h.hasItemOption){var P=h.getItemModel(E),F=P.getModel(`emphasis`);g=F.getModel(`itemStyle`).getItemStyle(),_=P.getModel([`blur`,`itemStyle`]).getItemStyle(),v=P.getModel([`select`,`itemStyle`]).getItemStyle(),y=P.get([`itemStyle`,`borderRadius`]),S=F.get(`focus`),C=F.get(`blurScope`),w=F.get(`disabled`),b=sx(P)}D.shape.r=y;var I=e.getRawValue(E),L=`-`;I&&I[2]!=null&&(L=I[2]+``),ox(D,b,{labelFetcher:e,labelDataIndex:E,defaultOpacity:O.opacity,defaultText:L}),D.ensureState(`emphasis`).style=g,D.ensureState(`blur`).style=_,D.ensureState(`select`).style=v,bv(D,S,C,w),D.incremental=c_(e,i),i&&(D.states.emphasis.hoverLayer=2),m.add(D),h.setItemGraphicEl(E,D),this._progressiveEls&&this._progressiveEls.push(D)}},t.prototype._renderOnGeo=function(e,t,n,r){var i=n.targetVisuals.inRange,a=n.targetVisuals.outOfRange,o=t.getData(),s=this._hmLayer||this._hmLayer||new fH;s.blurSize=t.get(`blurSize`),s.pointSize=t.get(`pointSize`),s.minOpacity=t.get(`minOpacity`),s.maxOpacity=t.get(`maxOpacity`);var c=e.getViewRect().clone(),l=e.getRoamTransform();c.applyTransform(l);var u=Math.max(c.x,0),d=Math.max(c.y,0),f=Math.min(c.width+c.x,r.getWidth()),p=Math.min(c.height+c.y,r.getHeight()),m=f-u,h=p-d,g=[o.mapDimension(`lng`),o.mapDimension(`lat`),o.mapDimension(`value`)],_=o.mapArray(g,function(t,n,r){var i=e.dataToPoint([t,n]);return i[0]-=u,i[1]-=d,i.push(r),i}),v=n.getExtent(),y=n.type===`visualMap.continuous`?mH(v,n.option.range):pH(v,n.getPieceList(),n.option.selected);s.update(_,m,h,i.color.getNormalizer(),{inRange:i.color.getColorMapper(),outOfRange:a.color.getColorMapper()},y);var b=new Km({style:{width:m,height:h,x:u,y:d,image:s.canvas},silent:!0});this.group.add(b)},t.type=`heatmap`,t}(_D),gH=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.getInitialData=function(e,t){return kC(null,this,{generateCoord:`value`})},t.prototype.preventIncremental=function(){var e=pC.get(this.get(`coordinateSystem`));if(e&&e.dimensions)return e.dimensions[0]===`lng`&&e.dimensions[1]===`lat`},t.type=`series.heatmap`,t.dependencies=[`grid`,`geo`,`calendar`,`matrix`],t.defaultOption={coordinateSystem:`cartesian2d`,z:2,geoIndex:0,blurSize:30,pointSize:20,maxOpacity:1,minOpacity:0,select:{itemStyle:{borderColor:Q.color.primary}}},t}(CE);function _H(e){e.registerChartView(hH),e.registerSeriesModel(gH)}var vH={color:`fill`,borderColor:`stroke`},yH={symbol:1,symbolSize:1,symbolKeepAspect:1,legendIcon:1,visualMeta:1,liftZ:1,decal:1},bH=Ig(),xH=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.optionUpdated=function(){this.currentZLevel=this.get(`zlevel`,!0),this.currentZ=this.get(`z`,!0)},t.prototype.getInitialData=function(e,t){return kC(null,this)},t.prototype.getDataParams=function(t,n,r){var i=e.prototype.getDataParams.call(this,t,n);return r&&(i.info=bH(r).info),i},t.type=`series.custom`,t.dependencies=[`grid`,`polar`,`geo`,`singleAxis`,`calendar`,`matrix`],t.defaultOption={coordinateSystem:`cartesian2d`,z:2,legendHoverLink:!0,clip:!1},t}(CE);function SH(e,t){return t||=[0,0],G([`x`,`y`],function(n,r){var i=this.getAxis(n),a=t[r],o=e[r]/2;return i.type===`category`?fA(i).w:Math.abs(i.dataToCoord(a-o)-i.dataToCoord(a+o))},this)}function CH(e){var t=e.master.getRect();return{coordSys:{type:`cartesian2d`,x:t.x,y:t.y,width:t.width,height:t.height},api:{coord:function(t){return e.dataToPoint(t)},size:K(SH,e)}}}function wH(e,t){return t||=[0,0],G([0,1],function(n){var r=t[n],i=e[n]/2,a=[],o=[];return a[n]=r-i,o[n]=r+i,a[1-n]=o[1-n]=t[1-n],Math.abs(this.dataToPoint(a)[n]-this.dataToPoint(o)[n])},this)}function TH(e){var t=e.view,n=t.getBoundingRect();return{coordSys:{type:`geo`,x:n.x,y:n.y,width:n.width,height:n.height,zoom:TB(t)},api:{coord:function(t){return e.dataToPoint(t)},size:K(wH,e)}}}function EH(e,t){var n=this.getAxis(),r=t instanceof Array?t[0]:t,i=(e instanceof Array?e[0]:e)/2;return n.type===`category`?fA(n).w:Math.abs(n.dataToCoord(r-i)-n.dataToCoord(r+i))}function DH(e){var t=e.getRect();return{coordSys:{type:`singleAxis`,x:t.x,y:t.y,width:t.width,height:t.height},api:{coord:function(t){return e.dataToPoint(t)},size:K(EH,e)}}}function OH(e,t){return t||=[0,0],G([`Radius`,`Angle`],function(n,r){var i=`get`+n+`Axis`,a=this[i](),o=t[r],s=e[r]/2,c=a.type===`category`?fA(a).w:Math.abs(a.dataToCoord(o-s)-a.dataToCoord(o+s));return n===`Angle`&&(c=c*Math.PI/180),c},this)}function kH(e){var t=e.getRadiusAxis(),n=e.getAngleAxis(),r=t.getExtent();return r[0]>r[1]&&r.reverse(),{coordSys:{type:`polar`,cx:e.cx,cy:e.cy,r:r[1],r0:r[0]},api:{coord:function(r){var i=t.dataToRadius(r[0]),a=n.dataToAngle(r[1]),o=e.coordToPoint([i,a]);return o.push(i,a*Math.PI/180),o},size:K(OH,e)}}}function AH(e){var t=e.getRect(),n=e.getRangeInfo();return{coordSys:{type:`calendar`,x:t.x,y:t.y,width:t.width,height:t.height,cellWidth:e.getCellWidth(),cellHeight:e.getCellHeight(),rangeInfo:{start:n.start,end:n.end,weeks:n.weeks,dayCount:n.allDay}},api:{coord:function(t,n){return e.dataToPoint(t,n)},layout:function(t,n){return e.dataToLayout(t,n)}}}}function jH(e){var t=e.getRect();return{coordSys:{type:`matrix`,x:t.x,y:t.y,width:t.width,height:t.height},api:{coord:function(t,n){return e.dataToPoint(t,n)},layout:function(t,n){return e.dataToLayout(t,n)}}}}var MH={position:[`x`,`y`],scale:[`scaleX`,`scaleY`],origin:[`originX`,`originY`]},NH=Ic(MH);Nc(Ad,function(e,t){return e[t]=1,e},{}),Ad.join(`, `);var PH=[``,`style`,`shape`,`extra`],FH=Ig();function IH(e,t,n,r,i){var a=e+`Animation`,o=eb(e,r,i)||{},s=FH(t).userDuring;return o.duration>0&&(o.during=s?K(KH,{el:t,userDuring:s}):null,o.setToFinal=!0,o.scope=e),U(o,n[a]),o}function LH(e,t,n,r){r||={};var i=r.dataIndex,a=r.isInit,o=r.clearStyle,s=n.isAnimationEnabled(),c=FH(e),l=t.style;c.userDuring=t.during;var u={},d={};if(XH(e,t,d),e.type===`compound`)for(var f=e.shape.paths,p=t.shape.paths,m=0;m0&&e.animateFrom(g,_)}else HH(e,t,i||0,n,u)}RH(e,t),l?e.dirty():e.markRedraw()}function RH(e,t){for(var n=FH(e).leaveToProps,r=0;r0&&e.animateFrom(i,a)}}function UH(e,t){Z(t,`silent`)&&(e.silent=t.silent),Z(t,`ignore`)&&(e.ignore=t.ignore),e instanceof Np&&Z(t,`invisible`)&&(e.invisible=t.invisible),e instanceof Bm&&Z(t,`autoBatch`)&&(e.autoBatch=t.autoBatch)}var WH={},GH={setTransform:function(e,t){return WH.el[e]=t,this},getTransform:function(e){return WH.el[e]},setShape:function(e,t){var n=WH.el,r=n.shape||={};return r[e]=t,n.dirtyShape&&n.dirtyShape(),this},getShape:function(e){var t=WH.el.shape;if(t)return t[e]},setStyle:function(e,t){var n=WH.el,r=n.style;return r&&(r[e]=t,n.dirtyStyle&&n.dirtyStyle()),this},getStyle:function(e){var t=WH.el.style;if(t)return t[e]},setExtra:function(e,t){var n=WH.el.extra||(WH.el.extra={});return n[e]=t,this},getExtra:function(e){var t=WH.el.extra;if(t)return t[e]}};function KH(){var e=this,t=e.el;if(t){var n=FH(t).userDuring,r=e.userDuring;if(n!==r){e.el=e.userDuring=null;return}WH.el=t,r(GH)}}function qH(e,t,n,r){var i=n[e];if(i){var a=t[e],o;if(a){var s=n.transition,c=i.transition;if(c){if(!o&&(o=r[e]={}),BH(c))U(o,a);else for(var l=mg(c),u=0;u=0){!o&&(o=r[e]={});for(var p=Ic(a),u=0;u=0)){var f=e.getAnimationStyleProps(),p=f?f.style:null;if(p){!a&&(a=r.style={});for(var m=Ic(n),l=0;l=0?t.getStore().get(i,n):void 0}var a=t.get(r.name,n),o=r&&r.ordinalMeta;return o?o.categories[a]:a}function C(n,r){r??=u;var i=t.getItemVisual(r,`style`),a=i&&i.fill,o=i&&i.opacity,s=y(r,iU).getItemStyle();a!=null&&(s.fill=a),o!=null&&(s.opacity=o);var c={inheritColor:J(a)?a:Q.color.neutral99},l=b(r,iU),d=cx(l,null,c,!1,!0);d.text=l.getShallow(`show`)?Y(e.getFormattedLabel(r,iU),HE(t,r)):null;var f=lx(l,c,!1);return E(n,s),s=MD(s,d,f),n&&T(s,n),s.legacy=!0,s}function w(n,r){r??=u;var i=y(r,rU).getItemStyle(),a=b(r,rU),o=cx(a,null,null,!0,!0);o.text=a.getShallow(`show`)?Xc(e.getFormattedLabel(r,rU),e.getFormattedLabel(r,iU),HE(t,r)):null;var s=lx(a,null,!0);return E(n,i),i=MD(i,o,s),n&&T(i,n),i.legacy=!0,i}function T(e,t){for(var n in t)Z(t,n)&&(e[n]=t[n])}function E(e,t){e&&(e.textFill&&(t.textFill=e.textFill),e.textPosition&&(t.textPosition=e.textPosition))}function D(e,n){if(n??=u,Z(vH,e)){var r=t.getItemVisual(n,`style`);return r?r[vH[e]]:null}if(Z(yH,e))return t.getItemVisual(n,e)}function O(e){if(o.type===`cartesian2d`)return nM(Oc({axis:o.getBaseAxis()},e))}function k(){return n.getCurrentSeriesIndices()}function A(e){return gx(e,n)}}function wU(e){var t={};return W(e.dimensions,function(n){var r=e.getDimensionInfo(n);if(!r.isExtraCoord){var i=r.coordDim,a=t[i]=t[i]||[];a[r.coordDimIndex]=e.getDimensionIndex(n)}}),t}function TU(e,t,n,r,i,a,o){if(!r){a.remove(t);return}var s=EU(e,t,n,r,i,a);return s&&o.setItemGraphicEl(n,s),s&&bv(s,r.focus,r.blurScope,r.emphasisDisabled),s}function EU(e,t,n,r,i,a){var o=-1,s=t;t&&DU(t,r,i)&&(o=kc(a.childrenRef(),t),t=null);var c=!t,l=t;l?l.clearStates():(l=vU(r),s&&gU(s,l)),r.morph===!1?l.disableMorphing=!0:l.disableMorphing&&(l.disableMorphing=!1),r.tooltipDisabled&&(l.tooltipDisabled=!0),fU.normal.cfg=fU.normal.conOpt=fU.emphasis.cfg=fU.emphasis.conOpt=fU.blur.cfg=fU.blur.conOpt=fU.select.cfg=fU.select.conOpt=null,fU.isLegacy=!1,kU(l,n,r,i,c,fU),OU(l,n,r,i,c),yU(e,l,n,r,fU,i,c),Z(r,`info`)&&(bH(l).info=r.info);for(var u=0;u=0?a.replaceAt(l,o):a.add(l),l}function DU(e,t,n){var r=bH(e),i=t.type,a=t.shape,o=t.style;return n.isUniversalTransitionEnabled()||i!=null&&i!==r.customGraphicType||i===`path`&&BU(a)&&zU(a)!==r.customPathData||i===`image`&&Z(o,`image`)&&o.image!==r.customImagePath}function OU(e,t,n,r,i){var a=n.clipPath;if(a===!1)e&&e.getClipPath()&&e.removeClipPath();else if(a){var o=e.getClipPath();o&&DU(o,a,r)&&(o=null),o||(o=vU(a),e.setClipPath(o)),yU(null,o,t,a,null,r,i)}}function kU(e,t,n,r,i,a){if(!(e.isGroup||e.type===`compoundPath`)){AU(n,null,a),AU(n,rU,a);var o=a.normal.conOpt,s=a.emphasis.conOpt,c=a.blur.conOpt,l=a.select.conOpt;if(o!=null||s!=null||l!=null||c!=null){var u=e.getTextContent();if(o===!1)u&&e.removeTextContent();else{o=a.normal.conOpt=o||{type:`text`},u?u.clearStates():(u=vU(o),e.setTextContent(u)),yU(null,u,t,o,null,r,i);for(var d=o&&o.style,f=0;f=u;p--)PU(t,t.childAt(p),i)}}function PU(e,t,n){t&&zH(t,bH(e).option,n)}function FU(e){new Px(e.oldChildren,e.newChildren,IU,IU,e).add(LU).update(LU).remove(RU).execute()}function IU(e,t){return(e&&e.name)??dU+t}function LU(e,t){var n=this.context,r=e==null?null:n.newChildren[e],i=t==null?null:n.oldChildren[t];EU(n.api,i,n.dataIndex,r,n.seriesModel,n.group)}function RU(e){var t=this.context,n=t.oldChildren[e];n&&zH(n,bH(n).option,t.seriesModel)}function zU(e){return e&&(e.pathData||e.d)}function BU(e){return e&&(Z(e,`pathData`)||Z(e,`d`))}function VU(e){e.registerChartView(_U),e.registerSeriesModel(xH)}var HU=Ig(),UU=wc,WU=K,GU=function(){function e(){this._dragging=!1,this.animationThreshold=15}return e.prototype.render=function(e,t,n,r){var i=t.get(`value`),a=t.get(`status`);if(this._axisModel=e,this._axisPointerModel=t,this._api=n,r||this._lastValue!==i||this._lastStatus!==a){this._lastValue=i,this._lastStatus=a;var o=this._group,s=this._handle;if(!a||a===`hide`){o&&o.hide(),s&&s.hide();return}o&&o.show(),s&&s.show();var c={};this.makeElOption(c,i,e,t,n);var l=c.graphicKey;l!==this._lastGraphicKey&&this.clear(n),this._lastGraphicKey=l;var u=this._moveAnimation=this.determineAnimation(e,t);if(!o)o=this._group=new $v,this.createPointerEl(o,c,e,t),this.createLabelEl(o,c,e,t),n.getZr().add(o);else{var d=Rc(KU,t,u);this.updatePointerEl(o,c,d),this.updateLabelEl(o,c,d,t)}XU(o,t,!0),this._renderHandle(i)}},e.prototype.remove=function(e){this.clear(e)},e.prototype.dispose=function(e){this.clear(e)},e.prototype.determineAnimation=function(e,t){var n=t.get(`animation`),r=e.axis,i=r.type===`category`,a=t.get(`snap`);if(!a&&!i)return!1;if(n===`auto`||n==null){var o=this.animationThreshold;if(i&&fA(r).w>o)return!0;if(a){var s=Rz(e).seriesDataCount,c=r.getExtent();return Math.abs(c[0]-c[1])/s>o}return!1}return n===!0},e.prototype.makeElOption=function(e,t,n,r,i){},e.prototype.createPointerEl=function(e,t,n,r){var i=t.pointer;if(i){var a=HU(e).pointerEl=new lb[i.type](UU(t.pointer));e.add(a)}},e.prototype.createLabelEl=function(e,t,n,r){if(t.label){var i=HU(e).labelEl=new ah(UU(t.label));e.add(i),JU(i,r)}},e.prototype.updatePointerEl=function(e,t,n){var r=HU(e).pointerEl;r&&t.pointer&&(r.setStyle(t.pointer.style),n(r,{shape:t.pointer.shape}))},e.prototype.updateLabelEl=function(e,t,n,r){var i=HU(e).labelEl;i&&(i.setStyle(t.label.style),n(i,{x:t.label.x,y:t.label.y}),JU(i,r))},e.prototype._renderHandle=function(e){if(!this._dragging&&this.updateHandleTransform){var t=this._axisPointerModel,n=this._api.getZr(),r=this._handle,i=t.getModel(`handle`),a=t.get(`status`);if(!i.get(`show`)||!a||a===`hide`){r&&n.remove(r),this._handle=null;return}var o;this._handle||(o=!0,r=this._handle=Pb(i.get(`icon`),{cursor:`move`,draggable:!0,onmousemove:function(e){fN(e.event)},onmousedown:WU(this._onHandleDragMove,this,0,0),drift:WU(this._onHandleDragMove,this),ondragend:WU(this._onHandleDragEnd,this)}),n.add(r)),XU(r,t,!1),r.setStyle(i.getItemStyle(null,[`color`,`borderColor`,`borderWidth`,`opacity`,`shadowColor`,`shadowBlur`,`shadowOffsetX`,`shadowOffsetY`]));var s=i.get(`size`);q(s)||(s=[s,s]),r.scaleX=s[0]/2,r.scaleY=s[1]/2,_M(this,`_doDispatchAxisPointer`,i.get(`throttle`)||0,`fixRate`),this._moveHandleToValue(e,o)}},e.prototype._moveHandleToValue=function(e,t){KU(this._axisPointerModel,!t&&this._moveAnimation,this._handle,YU(this.getHandleTransform(e,this._axisModel,this._axisPointerModel)))},e.prototype._onHandleDragMove=function(e,t){var n=this._handle;if(n){this._dragging=!0;var r=this.updateHandleTransform(YU(n),[e,t],this._axisModel,this._axisPointerModel);this._payloadInfo=r,n.stopAnimation(),n.attr(YU(r)),HU(n).lastProp=null,this._doDispatchAxisPointer()}},e.prototype._doDispatchAxisPointer=function(){if(this._handle){var e=this._payloadInfo,t=this._axisModel;this._api.dispatchAction({type:`updateAxisPointer`,x:e.cursorPoint[0],y:e.cursorPoint[1],tooltipOption:e.tooltipOption,axesInfo:[{axisDim:t.axis.dim,axisIndex:t.componentIndex}]})}},e.prototype._onHandleDragEnd=function(){if(this._dragging=!1,this._handle){var e=this._axisPointerModel.get(`value`);this._moveHandleToValue(e),this._api.dispatchAction({type:`hideTip`})}},e.prototype.clear=function(e){this._lastValue=null,this._lastStatus=null;var t=e.getZr(),n=this._group,r=this._handle;t&&n&&(this._lastGraphicKey=null,n&&t.remove(n),r&&t.remove(r),this._group=null,this._handle=null,this._payloadInfo=null),vM(this,`_doDispatchAxisPointer`)},e.prototype.doClear=function(){},e.prototype.buildLabel=function(e,t,n){return n||=0,{x:e[n],y:e[1-n],width:t[n],height:t[1-n]}},e}();function KU(e,t,n,r){qU(HU(n).lastProp,r)||(HU(n).lastProp=r,t?nb(n,r,e):(n.stopAnimation(),n.attr(r)))}function qU(e,t){if(Hc(e)&&Hc(t)){var n=!0;return W(t,function(t,r){n&&=qU(e[r],t)}),!!n}return e===t}function JU(e,t){e[t.get([`label`,`show`])?`show`:`hide`]()}function YU(e){return{x:e.x||0,y:e.y||0,rotation:e.rotation||0}}function XU(e,t,n){var r=t.get(`z`),i=t.get(`zlevel`);e&&e.traverse(function(e){e.type!==`group`&&(r!=null&&(e.z=r),i!=null&&(e.zlevel=i),e.silent=n)})}function ZU(e){var t=e.get(`type`),n=e.getModel(t+`Style`),r;return t===`line`?(r=n.getLineStyle(),r.fill=null):t===`shadow`&&(r=n.getAreaStyle(),r.stroke=null),r}function QU(e,t,n,r,i){var a=eW(n.get(`value`),t.axis,t.ecModel,n.get(`seriesDataIndices`),{precision:n.get([`label`,`precision`]),formatter:n.get([`label`,`formatter`])}),o=n.getModel(`label`),s=Qw(o.get(`padding`)||0),c=o.getFont(),l=Ku(a,c),u=i.position,d=l.width+s[1]+s[3],f=l.height+s[0]+s[2],p=i.align;p===`right`&&(u[0]-=d),p===`center`&&(u[0]-=d/2);var m=i.verticalAlign;m===`bottom`&&(u[1]-=f),m===`middle`&&(u[1]-=f/2),$U(u,d,f,r);var h=o.get(`backgroundColor`);(!h||h===`auto`)&&(h=t.get([`axisLine`,`lineStyle`,`color`])),e.label={x:u[0],y:u[1],style:cx(o,{text:a,font:c,fill:o.getTextColor(),padding:s,backgroundColor:h}),z2:10}}function $U(e,t,n,r){var i=r.getWidth(),a=r.getHeight();e[0]=Math.min(e[0]+t,i)-t,e[1]=Math.min(e[1]+n,a)-n,e[0]=Math.max(e[0],0),e[1]=Math.max(e[1],0)}function eW(e,t,n,r,i){e=t.scale.parse(e);var a=t.scale.getLabel({value:e},{precision:i.precision}),o=i.formatter;if(o){var s={value:zO(t,{value:e}),axisDimension:t.dim,axisIndex:t.index,seriesData:[]};W(r,function(e){var t=n.getSeriesByIndex(e.seriesIndex),r=e.dataIndexInside,i=t&&t.getDataParams(r);i&&s.seriesData.push(i)}),J(o)?a=o.replace(`{value}`,a):zc(o)&&(a=o(s))}return a}function tW(e,t,n){var r=Vl();return Kl(r,r,n.rotation),Gl(r,r,n.position),Db([e.dataToCoord(t),(n.labelOffset||0)+(n.labelDirection||1)*(n.labelMargin||0)],r)}function nW(e,t,n,r,i,a){var o=XA.innerTextLayout(n.rotation,0,n.labelDirection);n.labelMargin=i.get([`label`,`margin`]),QU(t,r,i,a,{position:tW(r.axis,e,n),align:o.textAlign,verticalAlign:o.textVerticalAlign})}function rW(e,t,n){return n||=0,{x1:e[n],y1:e[1-n],x2:t[n],y2:t[1-n]}}function iW(e,t,n){return n||=0,{x:e[n],y:e[1-n],width:t[n],height:t[1-n]}}function aW(e,t,n){return fA(e,{fromStat:{sers:G(t,function(e){return n.getSeriesByIndex(e.seriesIndex)})},min:1}).w}function oW(e,t,n){return[Ch(Sh(t[0],t[1]),e-n/2),Sh(e+n/2,Ch(t[0],t[1]))]}var sW=function(e){H(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.makeElOption=function(e,t,n,r,i){var a=n.axis,o=a.grid,s=r.get(`type`),c=a.getGlobalExtent(),l=cW(o,a).getOtherAxis(a).getGlobalExtent(),u=a.toGlobalCoord(a.dataToCoord(t,!0));if(s&&s!==`none`){var d=ZU(r),f=lW[s](a,u,c,l,r.get(`seriesDataIndices`),r.ecModel);f.style=d,e.graphicKey=f.type,e.pointer=f}nW(t,e,_j(o.getRect(),n),n,r,i)},t.prototype.getHandleTransform=function(e,t,n){var r=_j(t.axis.grid.getRect(),t,{labelInside:!1});r.labelMargin=n.get([`handle`,`margin`]);var i=tW(t.axis,e,r);return{x:i[0],y:i[1],rotation:r.rotation+(r.labelDirection<0?Math.PI:0)}},t.prototype.updateHandleTransform=function(e,t,n,r){var i=n.axis,a=i.grid,o=i.getGlobalExtent(!0),s=cW(a,i).getOtherAxis(i).getGlobalExtent(),c=i.dim===`x`?0:1,l=[e.x,e.y];l[c]+=t[c],l[c]=Sh(o[1],l[c]),l[c]=Ch(o[0],l[c]);var u=(s[1]+s[0])/2,d=[u,u];return d[c]=l[c],{x:l[0],y:l[1],rotation:e.rotation,cursorPoint:d,tooltipOption:[{verticalAlign:`middle`},{align:`center`}][c]}},t}(GU);function cW(e,t){var n={};return n[t.dim+`AxisIndex`]=t.index,e.getCartesian(n)}var lW={line:function(e,t,n,r){return{type:`Line`,subPixelOptimize:!0,shape:rW([t,r[0]],[t,r[1]],uW(e))}},shadow:function(e,t,n,r,i,a){var o=aW(e,i,a),s=r[1]-r[0],c=oW(t,n,o),l=c[0],u=c[1];return{type:`Rect`,shape:iW([l,r[0]],[u-l,s],uW(e))}}};function uW(e){return e.dim===`x`?0:1}var dW=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.type=`axisPointer`,t.defaultOption={show:`auto`,z:50,type:`line`,snap:!1,triggerTooltip:!0,triggerEmphasis:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:Q.color.border,width:1,type:`dashed`},shadowStyle:{color:Q.color.shadowTint},label:{show:!0,formatter:null,precision:`auto`,margin:3,color:Q.color.neutral00,padding:[5,7,5,7],backgroundColor:Q.color.accent60,borderColor:null,borderWidth:0,borderRadius:3},handle:{show:!1,icon:`M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z`,size:45,margin:50,color:Q.color.accent40,throttle:40}},t}(bT),fW=Ig(),pW=W;function mW(e,t,n){if(!ml.node){var r=t.getZr();fW(r).records||(fW(r).records={}),hW(r,t);var i=fW(r).records[e]||(fW(r).records[e]={});i.handler=n}}function hW(e,t){if(fW(e).initialized)return;fW(e).initialized=!0,n(`click`,Rc(vW,`click`)),n(`mousemove`,Rc(vW,`mousemove`)),n(`mousewheel`,Rc(vW,`mousewheel`)),n(`globalout`,_W);function n(n,r){e.on(n,function(n){var i=yW(t);pW(fW(e).records,function(e){e&&r(e,n,i.dispatchAction)}),gW(i.pendings,t)})}}function gW(e,t){var n=e.showTip.length,r=e.hideTip.length,i;n?i=e.showTip[n-1]:r&&(i=e.hideTip[r-1]),i&&(i.dispatchAction=null,t.dispatchAction(i))}function _W(e,t,n){e.handler(`leave`,null,n)}function vW(e,t,n,r){t.handler(e,n,r)}function yW(e){var t={showTip:[],hideTip:[]},n=function(r){var i=t[r.type];i?i.push(r):(r.dispatchAction=n,e.dispatchAction(r))};return{dispatchAction:n,pendings:t}}function bW(e,t){if(!ml.node){var n=t.getZr();(fW(n).records||{})[e]&&(fW(n).records[e]=null)}}var xW=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.render=function(e,t,n){var r=t.getComponent(`tooltip`),i=e.get(`triggerOn`)||r&&r.get(`triggerOn`)||`mousemove|click|mousewheel`;mW(`axisPointer`,n,function(e,t,n){i!==`none`&&(e===`leave`||i.indexOf(e)>=0)&&n({type:`updateAxisPointer`,currTrigger:e,x:t&&t.offsetX,y:t&&t.offsetY})})},t.prototype.remove=function(e,t){bW(`axisPointer`,t)},t.prototype.dispose=function(e,t){bW(`axisPointer`,t)},t.type=`axisPointer`,t}(gF);function SW(e,t){var n=[],r=e.seriesIndex,i;if(r==null||!(i=t.getSeriesByIndex(r)))return{point:[]};var a=i.getData(),o=Fg(a,e);if(o==null||o<0||q(o))return{point:[]};var s=a.getItemGraphicEl(o),c=i.coordinateSystem;if(i.getTooltipPosition)n=i.getTooltipPosition(o)||[];else if(c&&c.dataToPoint){if(e.isStacked){var l=c.getBaseAxis(),u=c.getOtherAxis(l).dim,d=l.dim,f=+(u===`x`||u===`radius`),p=a.mapDimension(d),m=[];m[f]=a.get(p,o),m[1-f]=a.get(a.getCalculationInfo(`stackResultDimension`),o),n=c.dataToPoint(m)||[]}else n=c.dataToPoint(a.getValues(G(c.dimensions,function(e){return a.mapDimension(e)}),o))||[]}else if(s){var h=s.getBoundingRect().clone();h.applyTransform(s.transform),n=[h.x+h.width/2,h.y+h.height/2]}return{point:n,el:s}}var CW=Ig();function wW(e,t,n){var r=e.currTrigger,i=[e.x,e.y],a=e,o=e.dispatchAction||K(n.dispatchAction,n),s=t.getComponent(`axisPointer`).coordSysAxesInfo;if(s){PW(i)&&(i=SW({seriesIndex:a.seriesIndex,dataIndex:a.dataIndex},t).point);var c=PW(i),l=a.axesInfo,u=s.axesInfo,d=r===`leave`||PW(i),f={},p={},m={list:[],map:{}},h={showPointer:Rc(DW,p),showTooltip:Rc(OW,m)};W(s.coordSysMap,function(e,t){var n=c||e.containPoint(i);W(s.coordSysAxesInfo[t],function(e,t){var r=e.axis,a=MW(l,e);if(!d&&n&&(!l||a)){var o=a&&a.value;o==null&&!c&&(o=r.pointToData(i)),o!=null&&TW(e,o,h,!1,f)}})});var g={};return W(u,function(e,t){var n=e.linkGroup;n&&!p[t]&&W(n.axesInfo,function(t,r){var i=p[r];if(t!==e&&i){var a=i.value;n.mapper&&(a=e.axis.scale.parse(n.mapper(a,NW(t),NW(e)))),g[e.key]=a}})}),W(g,function(e,t){TW(u[t],e,h,!0,f)}),kW(p,u,f),AW(m,i,e,o),jW(u,o,n),f}}function TW(e,t,n,r,i){var a=e.axis;if(!a.scale.isBlank()&&a.containData(t)){if(!e.involveSeries){n.showPointer(e,t);return}var o=EW(t,e),s=o.payloadBatch,c=o.snapToValue;s[0]&&i.seriesIndex==null&&U(i,s[0]),!r&&e.snap&&a.containData(c)&&c!=null&&(t=c),n.showPointer(e,t,s),n.showTooltip(e,o,c)}}function EW(e,t){var n=t.axis,r=n.dim,i=e,a=[],o=Number.MAX_VALUE,s=-1;return W(t.seriesModels,function(t,c){var l=t.getData().mapDimensionsAll(r),u,d;if(t.getAxisTooltipData){var f=t.getAxisTooltipData(l,e,n);d=f.dataIndices,u=f.nestestValue}else{if(d=t.indicesOfNearest(r,l[0],e,n.type===`category`?.5:null),!d.length)return;u=t.getData().get(l[0],d[0])}if(ig(u)){var p=e-u,m=Math.abs(p);m<=o&&((m=0&&s<0)&&(o=m,s=p,i=u,a.length=0),W(d,function(e){a.push({seriesIndex:t.seriesIndex,dataIndexInside:e,dataIndex:t.getData().getRawIndex(e)})}))}}),{payloadBatch:a,snapToValue:i}}function DW(e,t,n,r){e[t.key]={value:n,payloadBatch:r}}function OW(e,t,n,r){var i=n.payloadBatch,a=t.axis,o=a.model,s=t.axisPointerModel;if(t.triggerTooltip&&i.length){var c=t.coordSys.model,l=Vz(c),u=e.map[l];u||(u=e.map[l]={coordSysId:c.id,coordSysIndex:c.componentIndex,coordSysType:c.type,coordSysMainType:c.mainType,dataByAxis:[]},e.list.push(u)),u.dataByAxis.push({axisDim:a.dim,axisIndex:o.componentIndex,axisType:o.type,axisId:o.id,value:r,valueLabelOpt:{precision:s.get([`label`,`precision`]),formatter:s.get([`label`,`formatter`])},seriesDataIndices:i.slice()})}}function kW(e,t,n){var r=n.axesInfo=[];W(t,function(t,n){var i=t.axisPointerModel.option,a=e[n];a?(!t.useHandle&&(i.status=`show`),i.value=a.value,i.seriesDataIndices=(a.payloadBatch||[]).slice()):!t.useHandle&&(i.status=`hide`),i.status===`show`&&r.push({axisDim:t.axis.dim,axisIndex:t.axis.model.componentIndex,value:i.value})})}function AW(e,t,n,r){if(PW(t)||!e.list.length){r({type:`hideTip`});return}var i=((e.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};r({type:`showTip`,escapeConnect:!0,x:t[0],y:t[1],tooltipOption:n.tooltipOption,position:n.position,dataIndexInside:i.dataIndexInside,dataIndex:i.dataIndex,seriesIndex:i.seriesIndex,dataByCoordSys:e.list})}function jW(e,t,n){var r=n.getZr(),i=`axisPointerLastHighlights`,a=CW(r)[i]||{},o=CW(r)[i]={};W(e,function(e,t){var n=e.axisPointerModel.option;n.status===`show`&&e.triggerEmphasis&&W(n.seriesDataIndices,function(e){o[e.seriesIndex+`|`+e.dataIndex]=e})});var s=[],c=[];function l(e){return{seriesIndex:e.seriesIndex,dataIndex:e.dataIndex}}W(a,function(e,t){!o[t]&&c.push(l(e))}),W(o,function(e,t){!a[t]&&s.push(l(e))}),c.length&&n.dispatchAction({type:`downplay`,escapeConnect:!0,notBlur:!0,batch:c}),s.length&&n.dispatchAction({type:`highlight`,escapeConnect:!0,notBlur:!0,batch:s})}function MW(e,t){for(var n=0;n<(e||[]).length;n++){var r=e[n];if(t.axis.dim===r.axisDim&&t.axis.model.componentIndex===r.axisIndex)return r}}function NW(e){var t=e.axis.model,n={},r=n.axisDim=e.axis.dim;return n.axisIndex=n[r+`AxisIndex`]=t.componentIndex,n.axisName=n[r+`AxisName`]=t.name,n.axisId=n[r+`AxisId`]=t.id,n}function PW(e){return!e||e[0]==null||isNaN(e[0])||e[1]==null||isNaN(e[1])}function FW(e){Uz.registerAxisPointerClass(`CartesianAxisPointer`,sW),e.registerComponentModel(dW),e.registerComponentView(xW),e.registerPreprocessor(function(e){if(e){(!e.axisPointer||e.axisPointer.length===0)&&(e.axisPointer={});var t=e.axisPointer.link;t&&!q(t)&&(e.axisPointer.link=[t])}}),e.registerProcessor(e.PRIORITY.PROCESSOR.STATISTIC,{overallReset:function(e,t){e.getComponent(`axisPointer`).coordSysAxesInfo=jz(e,t)}}),e.registerAction({type:`updateAxisPointer`,event:`updateAxisPointer`,update:`:updateAxisPointer`},wW)}function IW(e){VR(eB),VR(FW)}function LW(e,t){var n=e.existing;if(t.id=e.keyInfo.id,!t.type&&n&&(t.type=n.type),t.parentId==null){var r=t.parentOption;r?t.parentId=r.id:n&&(t.parentId=n.parentId)}t.parentOption=null}function RW(e,t){var n;return W(t,function(t){e[t]!=null&&e[t]!==`auto`&&(n=!0)}),n}function zW(e,t,n){var r=U({},n),i=e[t],a=n.$action||`merge`;a===`merge`?i?(Tc(i,r,!0),gT(i,r,{ignoreSize:!0}),vT(n,i),HW(n,i),HW(n,i,`shape`),HW(n,i,`style`),HW(n,i,`extra`),n.clipPath=i.clipPath):e[t]=r:a===`replace`?e[t]=r:a===`remove`&&i&&(e[t]=null)}var BW=[`transition`,`enterFrom`,`leaveTo`],VW=BW.concat([`enterAnimation`,`updateAnimation`,`leaveAnimation`]);function HW(e,t,n){if(n&&(!e[n]&&t[n]&&(e[n]={}),e=e[n],t=t[n]),e&&t)for(var r=n?BW:VW,i=0;i=0;c--){var l=n[c],u=Og(l.id,null),d=u==null?null:i.get(u);if(d){var f=d.parent,h=KW(f),g=f===r?{width:a,height:o}:{width:h.width,height:h.height},_={},v=mT(d,l,g,null,{hv:l.hv,boundingMode:l.bounding},_);if(!KW(d).isNew&&v){for(var y=l.transition,b={},x=0;x=0)?b[S]=C:d[S]=C}nb(d,b,e,0)}else d.attr(_)}}},t.prototype._clear=function(){var e=this,t=this._elMap;t.each(function(n){XW(n,KW(n).option,t,e._lastGraphicModel)}),this._elMap=X()},t.prototype.dispose=function(){this._clear()},t.type=`graphic`,t}(gF);function JW(e){var t=new(Z(GW,e)?GW[e]:_b(e))({});return KW(t).type=e,t}function YW(e,t,n,r){var i=JW(n);return t.add(i),r.set(e,i),KW(i).id=e,KW(i).isNew=!0,i}function XW(e,t,n,r){e&&e.parent&&(e.type===`group`&&e.traverse(function(e){XW(e,t,n,r)}),zH(e,t,r),n.removeKey(KW(e).id))}function ZW(e,t,n,r){e.isGroup||W([[`cursor`,Np.prototype.cursor],[`zlevel`,r||0],[`z`,n||0],[`z2`,0]],function(n){var r=n[0];Z(t,r)?e[r]=Y(t[r],n[1]):e[r]??(e[r]=n[1])}),W(Ic(t),function(n){if(n.indexOf(`on`)===0){var r=t[n];e[n]=zc(r)?r:null}}),Z(t,`draggable`)&&(e.draggable=t.draggable),t.name!=null&&(e.name=t.name),t.id!=null&&(e.id=t.id)}function QW(e){return e=U({},e),W([`id`,`parentId`,`$action`,`hv`,`bounding`,`textContent`,`clipPath`].concat(oT),function(t){delete e[t]}),e}function $W(e,t,n){var r=d_(e).eventData;!e.silent&&!e.ignore&&!r&&(r=d_(e).eventData={componentType:`graphic`,componentIndex:t.componentIndex,name:e.name}),r&&(r.info=n.info)}function eG(e){e.registerComponentModel(WW),e.registerComponentView(qW),e.registerPreprocessor(function(e){var t=e.graphic;q(t)?e.graphic=!t[0]||!t[0].elements?[{elements:t}]:[e.graphic[0]]:t&&!t.elements&&(e.graphic=[{elements:[t]}])})}var tG=[`x`,`y`,`radius`,`angle`,`single`],nG=Ig(),rG=[`cartesian2d`,`polar`,`singleAxis`];function iG(e){return kc(rG,e.get(`coordinateSystem`))>=0}function aG(e){return e+`Axis`}function oG(e,t){var n=X(),r=[],i=X();e.eachComponent({mainType:`dataZoom`,query:t},function(e){i.get(e.uid)||s(e)});var a;do a=!1,e.eachComponent(`dataZoom`,o);while(a);function o(e){!i.get(e.uid)&&c(e)&&(s(e),a=!0)}function s(e){i.set(e.uid,!0),r.push(e),l(e)}function c(e){var t=!1;return e.eachTargetAxis(function(e,r){var i=n.get(e);i&&i[r]&&(t=!0)}),t}function l(e){e.eachTargetAxis(function(e,t){(n.get(e)||n.set(e,[]))[t]=!0})}return r}function sG(e){var t=e.ecModel,n={infoList:[],infoMap:X()};return e.eachTargetAxis(function(e,r){var i=t.getComponent(aG(e),r);if(i){var a=i.getCoordSysModel();if(a){var o=a.uid,s=n.infoMap.get(o);s||(s={model:a,axisModels:[]},n.infoList.push(s),n.infoMap.set(o,s)),s.axisModels.push(i)}}}),n}function cG(e){var t=nG(Uk(e));return t.axisProxyMap||=X()}function lG(e){if(e)return cG(e.ecModel).get(e.uid)}function uG(e,t){cG(e.ecModel).set(e.uid,t)}function dG(e,t){var n=t.getAxisModel().axis.__alignTo;return n&&e.getAxisProxy(n.dim,n.model.componentIndex)?lG(n.model):null}var fG=function(){function e(){this.indexList=[],this.indexMap=[]}return e.prototype.add=function(e){this.indexMap[e]||(this.indexList.push(e),this.indexMap[e]=!0)},e}(),pG=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n._autoThrottle=!0,n._noTarget=!0,n._rangePropMode=[`percent`,`percent`],n}return t.prototype.init=function(e,t,n){var r=mG(e);this.settledOption=r,this.mergeDefaultAndTheme(e,n),this._doInit(r)},t.prototype.mergeOption=function(e){var t=mG(e);Tc(this.option,e,!0),Tc(this.settledOption,t,!0),this._doInit(t)},t.prototype._doInit=function(e){var t=this.option;this._setDefaultThrottle(e),this._updateRangeUse(e);var n=this.settledOption;W([[`start`,`startValue`],[`end`,`endValue`]],function(e,r){this._rangePropMode[r]===`value`&&(t[e[0]]=n[e[0]]=null)},this),this._resetTarget()},t.prototype._resetTarget=function(){var e=this.get(`orient`,!0),t=this._targetAxisInfoMap=X();this._fillSpecifiedTargetAxis(t)?this._orient=e||this._makeAutoOrientByTargetAxis():(this._orient=e||`horizontal`,this._fillAutoTargetAxisByOrient(t,this._orient)),this._noTarget=!0,t.each(function(e){e.indexList.length&&(this._noTarget=!1)},this)},t.prototype._fillSpecifiedTargetAxis=function(e){var t=!1;return W(tG,function(n){var r=this.getReferringComponents(aG(n),Vg);if(r.specified){t=!0;var i=new fG;W(r.models,function(e){i.add(e.componentIndex)}),e.set(n,i)}},this),t},t.prototype._fillAutoTargetAxisByOrient=function(e,t){var n=this.ecModel,r=!0;if(r){var i=t===`vertical`?`y`:`x`,a=n.findComponents({mainType:i+`Axis`});o(a,i)}if(r){var a=n.findComponents({mainType:`singleAxis`,filter:function(e){return e.get(`orient`,!0)===t}});o(a,`single`)}function o(t,n){var i=t[0];if(i){var a=new fG;if(a.add(i.componentIndex),e.set(n,a),r=!1,n===`x`||n===`y`){var o=i.getReferringComponents(`grid`,Bg).models[0];o&&W(t,function(e){i.componentIndex!==e.componentIndex&&o===e.getReferringComponents(`grid`,Bg).models[0]&&a.add(e.componentIndex)})}}}r&&W(tG,function(t){if(r){var i=n.findComponents({mainType:aG(t),filter:function(e){return e.get(`type`,!0)===`category`}});if(i[0]){var a=new fG;a.add(i[0].componentIndex),e.set(t,a),r=!1}}},this)},t.prototype._makeAutoOrientByTargetAxis=function(){var e;return this.eachTargetAxis(function(t){!e&&(e=t)},this),e===`y`?`vertical`:`horizontal`},t.prototype._setDefaultThrottle=function(e){if(e.hasOwnProperty(`throttle`)&&(this._autoThrottle=!1),this._autoThrottle){var t=this.ecModel.option;this.option.throttle=t.animation&&t.animationDurationUpdate>0?100:20}},t.prototype._updateRangeUse=function(e){var t=this._rangePropMode,n=this.get(`rangeMode`);W([[`start`,`startValue`],[`end`,`endValue`]],function(r,i){var a=e[r[0]]!=null,o=e[r[1]]!=null;a&&!o?t[i]=`percent`:!a&&o?t[i]=`value`:n?t[i]=n[i]:a&&(t[i]=`percent`)})},t.prototype.noTarget=function(){return this._noTarget},t.prototype.getFirstTargetAxisModel=function(){var e;return this.eachTargetAxis(function(t,n){e??=this.ecModel.getComponent(aG(t),n)},this),e},t.prototype.eachTargetAxis=function(e,t){this._targetAxisInfoMap.each(function(n,r){W(n.indexList,function(n){e.call(t,r,n)})})},t.prototype.getAxisProxy=function(e,t){return lG(this.getAxisModel(e,t))},t.prototype.getAxisModel=function(e,t){var n=this._targetAxisInfoMap.get(e);if(n&&n.indexMap[t])return this.ecModel.getComponent(aG(e),t)},t.prototype.setRawRange=function(e){var t=this.option,n=this.settledOption;W([[`start`,`startValue`],[`end`,`endValue`]],function(r){(e[r[0]]!=null||e[r[1]]!=null)&&(t[r[0]]=n[r[0]]=e[r[0]],t[r[1]]=n[r[1]]=e[r[1]])},this),this._updateRangeUse(e)},t.prototype.setCalculatedRange=function(e){var t=this.option;W([`start`,`startValue`,`end`,`endValue`],function(n){t[n]=e[n]})},t.prototype.getPercentRange=function(){var e=this.findRepresentativeAxisProxy();if(e)return e.getWindow().percent},t.prototype.getValueRange=function(e,t){if(e==null&&t==null){var n=this.findRepresentativeAxisProxy();if(n)return n.getWindow().value}else return this.getAxisProxy(e,t).getWindow().value},t.prototype.findRepresentativeAxisProxy=function(e){if(e)return lG(e);for(var t,n=this._targetAxisInfoMap.keys(),r=0;ra[1];if(u&&!d&&!f)return!0;u&&(i=!0),d&&(t=!0),f&&(n=!0)}return i&&t&&n})}else W(r,function(n){if(i===`empty`)e.setData(t=t.map(n,function(e){return o(e)?e:NaN}));else{var r={};r[n]=a,t.selectRange(r)}});W(r,function(e){t.setApproximateExtent(a,e)})}});function o(e){return e>=a[0]&&e<=a[1]}},e.prototype._updateMinMaxSpan=function(){var e=this._minMaxSpan={},t=this._dataZoomModel,n=this._extent;W([`min`,`max`],function(r){var i=t.get(r+`Span`),a=t.get(r+`ValueSpan`);a!=null&&(a=this.getAxisModel().axis.scale.parse(a)),a==null?i!=null&&(a=Nh(i,[0,100],n,!0)-n[0]):i=Nh(n[0]+a,n,[0,100],!0),e[r+`Span`]=i,e[r+`ValueSpan`]=a},this)},e}(),yG={dirtyOnOverallProgress:!0,getTargetSeries:function(e){function t(t){e.eachComponent(`dataZoom`,function(n){n.eachTargetAxis(function(r,i){t(r,i,e.getComponent(aG(r),i),n)})})}var n=[];t(function(t,r,i,a){if(!lG(i)){var o=new vG(t,r,a,e);n.push(o),uG(i,o)}});var r=X();return W(n,function(e){W(e.getTargetSeriesModels(),function(e){r.set(e.uid,e)})}),r},overallReset:function(e,t){e.eachComponent(`dataZoom`,function(e){var n=[];e.eachTargetAxis(function(t,r){var i=e.getAxisProxy(t,r),a=dG(e,i);a?n.push([i,a]):i.reset(e,null)}),W(n,function(t){t[0].reset(e,t[1].getWindow().percentInverted)}),e.eachTargetAxis(function(n,r){e.getAxisProxy(n,r).filterData(e,t)})}),e.eachComponent(`dataZoom`,function(e){var t=e.findRepresentativeAxisProxy();if(t){var n=t.getWindow(),r=n.percent,i=n.value;e.setCalculatedRange({start:r[0],end:r[1],startValue:i[0],endValue:i[1]})}})}};function bG(e){e.registerAction(`dataZoom`,function(e,t){W(oG(t,e),function(t){t.setRawRange({start:e.start,end:e.end,startValue:e.startValue,endValue:e.endValue})})})}var xG=r_();function SG(e){xG(e,function(){e.registerProcessor(e.PRIORITY.PROCESSOR.FILTER,yG),bG(e),e.registerSubTypeDefaulter(`dataZoom`,function(){return`slider`})})}function CG(e){e.registerComponentModel(hG),e.registerComponentView(_G),SG(e)}var wG=function(){function e(){}return e}(),TG={};function EG(e,t){TG[e]=t}function DG(e){return TG[e]}var OG=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.init=function(t,n,r){var i=r.getTheme().get(`toolbox`),a=i?i.feature:null;a&&(this._themeFeatureOption=U({},a),i.feature={}),e.prototype.init.call(this,t,n,r),a&&(i.feature=a)},t.prototype.optionUpdated=function(){W(this.option.feature,function(e,t){var n=this._themeFeatureOption,r=DG(t);r&&(r.getDefaultOption&&(r.defaultOption=r.getDefaultOption(this.ecModel)),n&&n[t]&&(Tc(e,n[t]),n[t]=null),Tc(e,r.defaultOption))},this)},t.type=`toolbox`,t.layoutMode={type:`box`,ignoreSize:!0},t.defaultOption={show:!0,z:6,orient:`horizontal`,left:`right`,top:`top`,backgroundColor:`transparent`,borderColor:Q.color.border,borderRadius:0,borderWidth:0,padding:Q.size.m,itemSize:15,itemGap:Q.size.s,showTitle:!0,iconStyle:{borderColor:Q.color.accent50,color:`none`},emphasis:{iconStyle:{borderColor:Q.color.accent70}},tooltip:{show:!1,position:`bottom`}},t}(bT);function kG(e,t){var n=Qw(t.get(`padding`)),r=t.getItemStyle([`color`,`opacity`]);return r.fill=t.get(`backgroundColor`),new eh({shape:{x:e.x-n[3],y:e.y-n[0],width:e.width+n[1]+n[3],height:e.height+n[0]+n[2],r:t.get(`borderRadius`)},style:r,silent:!0,z2:-1})}var AG=function(e){H(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.render=function(e,t,n,r){var i=this.group;if(i.removeAll(),!e.get(`show`))return;var a=+e.get(`itemSize`),o=e.get(`orient`)===`vertical`,s=e.get(`feature`)||{},c=this._features||=X(),l=[];W(s,function(e,t){l.push(t)}),new Px(this._featureNames||[],l).add(u).update(u).remove(Rc(u,null)).execute(),this._featureNames=Pc(l,function(e){return c.hasKey(e)});function u(i,a){var o=i!=null&&a==null,u=i!=null&&a!=null,f=i==null,p=o||u?l[i]:l[a],m=s[p],h=o||u?new jx(m,e,t):null,g=h&&h.get(`show`),_;if(o){if(!g)return;if(jG(p))_={onclick:h.option.onclick,featureName:p};else{var v=DG(p);if(!v)return;_=new v}c.set(p,_)}else _=c.get(p);if(f||!g){MG(_)&&_.dispose&&_.dispose(t,n),c.removeKey(p);return}r&&r.newTitle!=null&&r.featureName===p&&(m.title=r.newTitle),o&&(_.uid=NC(`toolbox-feature`)),_.model=h,_.ecModel=t,_.api=n,d(h,_,p),h.setIconStatus=function(e,t){var n=this.option,r=this.iconPaths;n.iconStatus=n.iconStatus||{},n.iconStatus[e]=t,r[e]&&(t===`emphasis`?tv:nv)(r[e])},MG(_)&&_.render&&_.render(h,t,n,r)}function d(r,s,c){var l=r.getModel(`iconStyle`),u=r.getModel([`emphasis`,`iconStyle`]),d=s instanceof wG&&s.getIcons?s.getIcons():r.get(`icon`),f=r.get(`title`)||{},p,m;J(d)?(p={},p[c]=d):p=d,J(f)?(m={},m[c]=f):m=f;var h=r.iconPaths={};W(p,function(c,d){var f=Pb(c,{},{x:-a/2,y:-a/2,width:a,height:a});f.setStyle(l.getItemStyle());var p=f.ensureState(`emphasis`);p.style=u.getItemStyle();var g=new ah({style:{text:m[d],align:u.get(`textAlign`),borderRadius:u.get(`textBorderRadius`),padding:u.get(`textPadding`),fill:null,font:gx({fontStyle:u.get(`textFontStyle`),fontFamily:u.get(`textFontFamily`),fontSize:u.get(`textFontSize`),fontWeight:u.get(`textFontWeight`)},t)},ignore:!0});f.setTextContent(g),Hb({el:f,componentModel:e,itemName:d,formatterParamsExtra:{title:m[d]}}),f.__title=m[d],f.on(`mouseover`,function(){var t=u.getItemStyle(),r=o?e.get(`right`)==null&&e.get(`left`)!==`right`?`right`:`left`:e.get(`bottom`)==null&&e.get(`top`)!==`bottom`?`bottom`:`top`;g.setStyle({fill:u.get(`textFill`)||t.fill||t.stroke||Q.color.neutral99,backgroundColor:u.get(`textBackgroundColor`)}),f.setTextConfig({position:u.get(`textPosition`)||r}),g.ignore=!e.get(`showTitle`),n.enterEmphasis(this)}).on(`mouseout`,function(){r.get([`iconStatus`,d])!==`emphasis`&&n.leaveEmphasis(this),g.hide()}),(r.get([`iconStatus`,d])===`emphasis`?tv:nv)(f),i.add(f),f.on(`click`,K(s.onclick,s,t,n,d)),h[d]=f})}var f=pT(e,n).refContainer,p=e.getBoxLayoutParams(),m=e.get(`padding`),h=dT(p,f,m);lT(e.get(`orient`),i,e.get(`itemGap`),h.width,h.height),mT(i,p,f,m),i.add(kG(i.getBoundingRect(),e)),o||i.eachChild(function(e){var t=e.__title,r=e.ensureState(`emphasis`),o=r.textConfig||={},s=e.getTextContent(),c=s&&s.ensureState(`emphasis`);if(c&&!zc(c)&&t){var l=c.style||={},u=Ku(t,ah.makeFont(l)),d=e.x+i.x,f=e.y+i.y+a,p=!1;f+u.height>n.getHeight()&&(o.position=`top`,p=!0);var m=p?-5-u.height:a+10;d+u.width/2>n.getWidth()?(o.position=[`100%`,m],l.align=`right`):d-u.width/2<0&&(o.position=[0,m],l.align=`left`)}})},t.prototype.updateView=function(e,t,n,r){W(this._features,function(e){e&&e instanceof wG&&e.updateView&&e.updateView(e.model,t,n,r)})},t.prototype.dispose=function(e,t){W(this._features,function(n){n&&n instanceof wG&&n.dispose&&n.dispose(e,t)})},t.type=`toolbox`,t}(gF);function jG(e){return e.indexOf(`my`)===0}function MG(e){return e instanceof wG}var NG=function(e){H(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.onclick=function(e,t){var n=this.model,r=n.get(`name`)||e.get(`title.0.text`)||`echarts`,i=t.getZr().painter.getType()===`svg`,a=i?`svg`:n.get(`type`,!0)||`png`,o=t.getConnectedDataURL({type:a,backgroundColor:n.get(`backgroundColor`,!0)||e.get(`backgroundColor`)||Q.color.neutral00,connectedBackgroundColor:n.get(`connectedBackgroundColor`),excludeComponents:n.get(`excludeComponents`),pixelRatio:n.get(`pixelRatio`)}),s=ml.browser;if(typeof MouseEvent==`function`&&(s.newEdge||!s.ie&&!s.edge)){var c=document.createElement(`a`);c.download=r+`.`+a,c.target=`_blank`,c.href=o;var l=new MouseEvent(`click`,{view:document.defaultView,bubbles:!0,cancelable:!1});c.dispatchEvent(l)}else if(window.navigator.msSaveOrOpenBlob||i){var u=o.split(`,`),d=u[0].indexOf(`base64`)>-1,f=i?decodeURIComponent(u[1]):u[1];d&&(f=window.atob(f));var p=r+`.`+a;if(window.navigator.msSaveOrOpenBlob){for(var m=f.length,h=new Uint8Array(m);m--;)h[m]=f.charCodeAt(m);var g=new Blob([h]);window.navigator.msSaveOrOpenBlob(g,p)}else{var _=document.createElement(`iframe`);document.body.appendChild(_);var v=_.contentWindow,y=v.document;y.open(`image/svg+xml`,`replace`),y.write(f),y.close(),v.focus(),y.execCommand(`SaveAs`,!0,p),document.body.removeChild(_)}}else{var b=n.get(`lang`),x=``,S=window.open();S.document.write(x),S.document.title=r}},t.getDefaultOption=function(e){return{show:!0,icon:`M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0`,title:e.getLocaleModel().get([`toolbox`,`saveAsImage`,`title`]),type:`png`,connectedBackgroundColor:Q.color.neutral00,name:``,excludeComponents:[`toolbox`],lang:e.getLocaleModel().get([`toolbox`,`saveAsImage`,`lang`])}},t}(wG),PG=`__ec_magicType_stack__`,FG=[[`line`,`bar`],[`stack`]],IG=function(e){H(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.getIcons=function(){var e=this.model,t=e.get(`icon`),n={};return W(e.get(`type`),function(e){t[e]&&(n[e]=t[e])}),n},t.getDefaultOption=function(e){return{show:!0,type:[],icon:{line:`M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4`,bar:`M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7`,stack:`M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z`},title:e.getLocaleModel().get([`toolbox`,`magicType`,`title`]),option:{},seriesIndex:{}}},t.prototype.onclick=function(e,t,n){var r=this.model,i=r.get([`seriesIndex`,n]);if(LG[n]){var a={series:[]};W(FG,function(e){kc(e,n)>=0&&W(e,function(e){r.setIconStatus(e,`normal`)})}),r.setIconStatus(n,`emphasis`),e.eachComponent({mainType:`series`,query:i==null?null:{seriesIndex:i}},function(e){var t=e.subType,i=e.id,o=LG[n](t,i,e,r);o&&(Oc(o,e.option),a.series.push(o));var s=e.coordinateSystem;if(s&&s.type===`cartesian2d`&&(n===`line`||n===`bar`)){var c=s.getAxesByScale(`ordinal`)[0];if(c){var l=c.dim+`Axis`,u=e.getReferringComponents(l,Bg).models[0].componentIndex;a[l]=a[l]||[];for(var d=0;d<=u;d++)a[l][u]=a[l][u]||{};a[l][u].boundaryGap=n===`bar`}}});var o,s=n;n===`stack`&&(o=Tc({stack:r.option.title.tiled,tiled:r.option.title.stack},r.option.title),r.get([`iconStatus`,n])!==`emphasis`&&(s=`tiled`)),t.dispatchAction({type:`changeMagicType`,currentType:s,newOption:a,newTitle:o,featureName:`magicType`})}},t}(wG),LG={line:function(e,t,n,r){if(e===`bar`)return Tc({id:t,type:`line`,data:n.get(`data`),stack:n.get(`stack`),markPoint:n.get(`markPoint`),markLine:n.get(`markLine`)},r.get([`option`,`line`])||{},!0)},bar:function(e,t,n,r){if(e===`line`)return Tc({id:t,type:`bar`,data:n.get(`data`),stack:n.get(`stack`),markPoint:n.get(`markPoint`),markLine:n.get(`markLine`)},r.get([`option`,`bar`])||{},!0)},stack:function(e,t,n,r){var i=n.get(`stack`)===PG;if(e===`line`||e===`bar`)return r.setIconStatus(`stack`,i?`normal`:`emphasis`),Tc({id:t,stack:i?``:PG},r.get([`option`,`stack`])||{},!0)}};kR({type:`changeMagicType`,event:`magicTypeChanged`,update:`prepareAndUpdate`},function(e,t){t.mergeOption(e.newOption)});var RG=Array(60).join(`-`),zG=` `;function BG(e){var t={},n=[],r=[];return e.eachRawSeries(function(e){var i=e.coordinateSystem;if(i&&(i.type===`cartesian2d`||i.type===`polar`)){var a=i.getBaseAxis();if(a.type===`category`){var o=Sj(a);t[o]||(t[o]={categoryAxis:a,valueAxis:i.getOtherAxis(a),series:[]},r.push({axisDim:a.dim,axisIndex:a.index})),t[o].series.push(e)}else n.push(e)}else n.push(e)}),{seriesGroupByCategoryAxis:t,other:n,meta:r}}function VG(e){var t=[];return W(e,function(e,n){var r=e.categoryAxis,i=e.valueAxis.dim,a=[` `].concat(G(e.series,function(e){return e.name})),o=[r.model.getCategories()];W(e.series,function(e){var t=e.getRawData();o.push(e.getRawData().mapArray(t.mapDimension(i),function(e){return e}))});for(var s=[a.join(zG)],c=0;c=0)return!0}var KG=RegExp(`[`+zG+`]+`,`g`);function qG(e){for(var t=e.split(/\n+/g),n=WG(t.shift()).split(KG),r=[],i=G(n,function(e){return{name:e,data:[]}}),a=0;a=0&&!n[i][r];i--);if(i<0){var a=e.queryComponents({mainType:`dataZoom`,subType:`select`,id:r})[0];if(a){var o=a.getPercentRange();n[0][r]={dataZoomId:r,start:o[0],end:o[1]}}}}),n.push(t)}function tK(e){var t=iK(e),n=t[t.length-1];t.length>1&&t.pop();var r={};return QG(n,function(e,n){for(var i=t.length-1;i>=0;i--)if(e=t[i][n],e){r[n]=e;break}}),r}function nK(e){$G(e).snapshots=null}function rK(e){return iK(e).length}function iK(e){var t=$G(e);return t.snapshots||=[{}],t.snapshots}var aK=function(e){H(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.onclick=function(e,t){nK(e),t.dispatchAction({type:`restore`,from:this.uid})},t.getDefaultOption=function(e){return{show:!0,icon:`M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5`,title:e.getLocaleModel().get([`toolbox`,`restore`,`title`])}},t}(wG);kR({type:`restore`,event:`restore`,update:`prepareAndUpdate`},function(e,t){t.resetOption(`recreate`)});var oK=[`grid`,`xAxis`,`yAxis`,`geo`,`graph`,`polar`,`radiusAxis`,`angleAxis`,`bmap`],sK=function(){function e(e,t,n){var r=this;this._targetInfoList=[];var i=lK(t,e);W(uK,function(e,t){(!n||!n.include||kc(n.include,t)>=0)&&e(i,r._targetInfoList)})}return e.prototype.setOutputRanges=function(e,t){return this.matchOutputRanges(e,t,function(e,t,n){if((e.coordRanges||=[]).push(t),!e.coordRange){e.coordRange=t;var r=pK[e.brushType](0,n,t);e.__rangeOffset={offset:hK[e.brushType](r.values,e.range,[1,1]),xyMinMax:r.xyMinMax}}}),e},e.prototype.matchOutputRanges=function(e,t,n){W(e,function(e){var r=this.findTargetInfo(e,t);r&&r!==!0&&W(r.coordSyses,function(r){n(e,pK[e.brushType](1,r,e.range,!0).values,r,t)})},this)},e.prototype.setInputRanges=function(e,t){W(e,function(e){var n=this.findTargetInfo(e,t);if(e.range=e.range||[],n&&n!==!0){e.panelId=n.panelId;var r=pK[e.brushType](0,n.coordSys,e.coordRange),i=e.__rangeOffset;e.range=i?hK[e.brushType](r.values,i.offset,_K(r.xyMinMax,i.xyMinMax)):r.values}},this)},e.prototype.makePanelOpts=function(e,t){return G(this._targetInfoList,function(n){var r=n.getPanelRect();return{panelId:n.panelId,defaultBrushType:t?t(n):null,clipPath:sH(r),isTargetByCursor:lH(r,e,n.coordSysModel),getLinearBrushOtherExtent:cH(r)}})},e.prototype.controlSeries=function(e,t,n){var r=this.findTargetInfo(e,n);return r===!0||r&&kc(r.coordSyses,t.coordinateSystem)>=0},e.prototype.findTargetInfo=function(e,t){for(var n=this._targetInfoList,r=lK(t,e),i=0;ie[1]&&e.reverse(),e}function lK(e,t){return Rg(e,t,{includeMainTypes:oK})}var uK={grid:function(e,t){var n=e.xAxisModels,r=e.yAxisModels,i=e.gridModels,a=X(),o={},s={};(n||r||i)&&(W(n,function(e){var t=e.axis.grid.model;a.set(t.id,t),o[t.id]=!0}),W(r,function(e){var t=e.axis.grid.model;a.set(t.id,t),s[t.id]=!0}),W(i,function(e){a.set(e.id,e),o[e.id]=!0,s[e.id]=!0}),a.each(function(e){var i=e.coordinateSystem,a=[];W(i.getCartesians(),function(e,t){(kc(n,e.getAxis(`x`).model)>=0||kc(r,e.getAxis(`y`).model)>=0)&&a.push(e)}),t.push({panelId:`grid--`+e.id,gridModel:e,coordSysModel:e,coordSys:a[0],coordSyses:a,getPanelRect:fK.grid,xAxisDeclared:o[e.id],yAxisDeclared:s[e.id]})}))},geo:function(e,t){W(e.geoModels,function(e){var n=e.coordinateSystem;t.push({panelId:`geo--`+e.id,geoModel:e,coordSysModel:e,coordSys:n,coordSyses:[n],getPanelRect:fK.geo})})}},dK=[function(e,t){var n=e.xAxisModel,r=e.yAxisModel,i=e.gridModel;return!i&&n&&(i=n.axis.grid.model),!i&&r&&(i=r.axis.grid.model),i&&i===t.gridModel},function(e,t){var n=e.geoModel;return n&&n===t.geoModel}],fK={grid:function(){return this.coordSys.master.getRect().clone()},geo:function(){var e=this.coordSys.view,t=EB(null,e);return ju(t,t,wB(null,e)),t}},pK={lineX:Rc(mK,0),lineY:Rc(mK,1),rect:function(e,t,n,r){var i=e?t.pointToData([n[0][0],n[1][0]],r):t.dataToPoint([n[0][0],n[1][0]],r),a=e?t.pointToData([n[0][1],n[1][1]],r):t.dataToPoint([n[0][1],n[1][1]],r),o=[cK([i[0],a[0]]),cK([i[1],a[1]])];return{values:o,xyMinMax:o}},polygon:function(e,t,n,r){var i=[Jg(),Jg()];return{values:G(n,function(n){var a=e?t.pointToData(n,r):t.dataToPoint(n,r);return i[0][0]=Math.min(i[0][0],a[0]),i[1][0]=Math.min(i[1][0],a[1]),i[0][1]=Math.max(i[0][1],a[0]),i[1][1]=Math.max(i[1][1],a[1]),a}),xyMinMax:i}}};function mK(e,t,n,r){var i=n.getAxis([`x`,`y`][e]),a=cK(G([0,1],function(e){return t?i.coordToData(i.toLocalCoord(r[e]),!0):i.toGlobalCoord(i.dataToCoord(r[e]))})),o=[];return o[e]=a,o[1-e]=[NaN,NaN],{values:a,xyMinMax:o}}var hK={lineX:Rc(gK,0),lineY:Rc(gK,1),rect:function(e,t,n){return[[e[0][0]-n[0]*t[0][0],e[0][1]-n[0]*t[0][1]],[e[1][0]-n[1]*t[1][0],e[1][1]-n[1]*t[1][1]]]},polygon:function(e,t,n){return G(e,function(e,r){return[e[0]-n[0]*t[r][0],e[1]-n[1]*t[r][1]]})}};function gK(e,t,n,r){return[t[0]-r[e]*n[0],t[1]-r[e]*n[1]]}function _K(e,t){var n=vK(e),r=vK(t),i=[n[0]/r[0],n[1]/r[1]];return isNaN(i[0])&&(i[0]=1),isNaN(i[1])&&(i[1]=1),i}function vK(e){return e?[e[0][1]-e[0][0],e[1][1]-e[1][0]]:[NaN,NaN]}var yK=W,bK=jg(`toolbox-dataZoom_`),xK={x:`width`,y:`height`},SK=function(e){H(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.render=function(e,t,n,r){this._brushController||(this._brushController=new wV(n.getZr()),this._brushController.on(`brush`,K(this._onBrush,this)).mount()),EK(e,t,this,r,n),TK(e,t)},t.prototype.onclick=function(e,t,n){CK[n].call(this)},t.prototype.dispose=function(e,t){this._brushController&&this._brushController.dispose()},t.prototype._onBrush=function(e){var t=e.areas;if(!e.isEnd||!t.length)return;var n={},r=this.ecModel;this._brushController.updateCovers([]),new sK(wK(this.model),r,{include:[`grid`]}).matchOutputRanges(t,r,function(e,t,n){if(n.type===`cartesian2d`){var r=n.master.getRect().clone(),a=e.brushType;a===`rect`?(i(`x`,n,r,t[0]),i(`y`,n,r,t[1])):i({lineX:`x`,lineY:`y`}[a],n,r,t)}}),eK(r,n),this._dispatchZoomAction(n);function i(e,t,i,o){var s=t.getAxis(e),c=s.model,l=a(e,c,r),u=l.findRepresentativeAxisProxy(c).getMinMaxSpan(),d=s.scale.getExtent();(u.minValueSpan!=null||u.maxValueSpan!=null)&&(o=lV(0,o.slice(),d,0,u.minValueSpan,u.maxValueSpan));var f=Hh(d,i[xK[e]],.5);l&&(n[l.id]={dataZoomId:l.id,startValue:isFinite(f)?Rh(o[0],f):o[0],endValue:isFinite(f)?Rh(o[1],f):o[1]})}function a(e,t,n){var r;return n.eachComponent({mainType:`dataZoom`,subType:`select`},function(n){n.getAxisModel(e,t.componentIndex)&&(r=n)}),r}},t.prototype._dispatchZoomAction=function(e){var t=[];yK(e,function(e,n){t.push(wc(e))}),t.length&&this.api.dispatchAction({type:`dataZoom`,from:this.uid,batch:t})},t.getDefaultOption=function(e){return{show:!0,filterMode:`filter`,icon:{zoom:`M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1`,back:`M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26`},title:e.getLocaleModel().get([`toolbox`,`dataZoom`,`title`]),brushStyle:{borderWidth:0,color:Q.color.backgroundTint}}},t}(wG),CK={zoom:function(){var e=!this._isZoomActive;this.api.dispatchAction({type:`takeGlobalCursor`,key:`dataZoomSelect`,dataZoomSelectActive:e})},back:function(){this._dispatchZoomAction(tK(this.ecModel))}};function wK(e){var t={xAxisIndex:e.get(`xAxisIndex`,!0),yAxisIndex:e.get(`yAxisIndex`,!0),xAxisId:e.get(`xAxisId`,!0),yAxisId:e.get(`yAxisId`,!0)};return t.xAxisIndex==null&&t.xAxisId==null&&(t.xAxisIndex=`all`),t.yAxisIndex==null&&t.yAxisId==null&&(t.yAxisIndex=`all`),t}function TK(e,t){e.setIconStatus(`back`,rK(t)>1?`emphasis`:`normal`)}function EK(e,t,n,r,i){var a=n._isZoomActive;r&&r.type===`takeGlobalCursor`&&(a=r.key===`dataZoomSelect`&&r.dataZoomSelectActive),n._isZoomActive=a,e.setIconStatus(`zoom`,a?`emphasis`:`normal`);var o=new sK(wK(e),t,{include:[`grid`]}).makePanelOpts(i,function(e){return e.xAxisDeclared&&!e.yAxisDeclared?`lineX`:!e.xAxisDeclared&&e.yAxisDeclared?`lineY`:`rect`});n._brushController.setPanels(o).enableBrush(a&&o.length?{brushType:`auto`,brushStyle:e.getModel(`brushStyle`).getItemStyle()}:!1)}wP(`dataZoom`,function(e){var t=e.getComponent(`toolbox`,0),n=[`feature`,`dataZoom`];if(!t||t.get(n)==null)return;var r=t.getModel(n),i=[],a=Rg(e,wK(r));yK(a.xAxisModels,function(e){return o(e,`xAxis`,`xAxisIndex`)}),yK(a.yAxisModels,function(e){return o(e,`yAxis`,`yAxisIndex`)});function o(e,t,n){var a=e.componentIndex,o={type:`select`,$fromToolbox:!0,filterMode:r.get(`filterMode`,!0)||`filter`,id:bK+t+a};o[n]=a,i.push(o)}return i});function DK(e){e.registerComponentModel(OG),e.registerComponentView(AG),EG(`saveAsImage`,NG),EG(`magicType`,IG),EG(`dataView`,XG),EG(`dataZoom`,SK),EG(`restore`,aK),VR(CG)}var OK=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.type=`tooltip`,t.dependencies=[`axisPointer`],t.defaultOption={z:60,show:!0,showContent:!0,trigger:`item`,triggerOn:`mousemove|click|mousewheel`,alwaysShowContent:!1,renderMode:`auto`,confine:null,showDelay:0,hideDelay:100,transitionDuration:.4,displayTransition:!0,enterable:!1,backgroundColor:Q.color.neutral00,shadowBlur:10,shadowColor:`rgba(0, 0, 0, .2)`,shadowOffsetX:1,shadowOffsetY:2,borderRadius:4,borderWidth:1,defaultBorderColor:Q.color.border,padding:null,extraCssText:``,axisPointer:{type:`line`,axis:`auto`,animation:`auto`,animationDurationUpdate:200,animationEasingUpdate:`exponentialOut`,crossStyle:{color:Q.color.borderShade,width:1,type:`dashed`,textStyle:{}}},textStyle:{color:Q.color.tertiary,fontSize:14}},t}(bT);function kK(e){var t=e.get(`confine`);return t==null?e.get(`renderMode`)===`richText`:!!t}function AK(e){if(ml.domSupported){for(var t=document.documentElement.style,n=0,r=e.length;n-1?(s+=`top:50%`,c+=`translateY(-50%) rotate(`+(l=a===`left`?-225:-45)+`deg)`):(s+=`left:50%`,c+=`translateX(-50%) rotate(`+(l=a===`top`?225:45)+`deg)`);var u=l*Math.PI/180,d=o+i,f=d*Math.abs(Math.cos(u))+d*Math.abs(Math.sin(u)),p=Math.round(((f-Math.SQRT2*i)/2+Math.SQRT2*i-(f-d)/2)*100)/100;s+=`;`+a+`:-`+p+`px`;var m=t+` solid `+i+`px;`;return`
`}function BK(e,t,n){var r=`cubic-bezier(0.23,1,0.32,1)`,i=``,a=``;return n&&(i=` `+e/2+`s `+r,a=`opacity`+i+`,visibility`+i),t||(i=` `+e+`s `+r,a+=(a.length?`,`:``)+(ml.transformSupported?``+IK+i:`,left`+i+`,top`+i)),FK+`:`+a}function VK(e,t,n){var r=e.toFixed(0)+`px`,i=t.toFixed(0)+`px`;if(!ml.transformSupported)return n?`top:`+i+`;left:`+r+`;`:[[`top`,i],[`left`,r]];var a=ml.transform3dSupported,o=`translate`+(a?`3d`:``)+`(`+r+`,`+i+(a?`,0`:``)+`)`;return n?`top:0;left:0;`+IK+`:`+o+`;`:[[`top`,0],[`left`,0],[jK,o]]}function HK(e){var t=[],n=e.get(`fontSize`),r=e.getTextColor();r&&t.push(`color:`+r),t.push(`font:`+e.getFont());var i=Y(e.get(`lineHeight`),Math.round(n*3/2));n&&t.push(`line-height:`+i+`px`);var a=e.get(`textShadowColor`),o=e.get(`textShadowBlur`)||0,s=e.get(`textShadowOffsetX`)||0,c=e.get(`textShadowOffsetY`)||0;return a&&o&&t.push(`text-shadow:`+s+`px `+c+`px `+o+`px `+a),W([`decoration`,`align`],function(n){var r=e.get(n);r&&t.push(`text-`+n+`:`+r)}),t.join(`;`)}function UK(e,t,n,r){var i=[],a=e.get(`transitionDuration`),o=e.get(`backgroundColor`),s=e.get(`shadowBlur`),c=e.get(`shadowColor`),l=e.get(`shadowOffsetX`),u=e.get(`shadowOffsetY`),d=e.getModel(`textStyle`),f=_E(e,`html`),p=l+`px `+u+`px `+s+`px `+c;return i.push(`box-shadow:`+p),t&&a>0&&i.push(BK(a,n,r)),o&&i.push(`background-color:`+o),W([`width`,`color`,`radius`],function(t){var n=`border-`+t,r=Zw(n),a=e.get(r);a!=null&&i.push(n+`:`+a+(t===`color`?``:`px`))}),i.push(HK(d)),f!=null&&i.push(`padding:`+Qw(f).join(`px `)+`px`),i.join(`;`)+`;`}function WK(e,t,n,r,i){var a=t&&t.painter;if(n){var o=a&&a.getViewportRoot();o&&HC(e,o,n,r,i)}else{e[0]=r,e[1]=i;var s=a&&a.getViewportRootOffset();s&&(e[0]+=s.offsetLeft,e[1]+=s.offsetTop)}e[2]=e[0]/t.getWidth(),e[3]=e[1]/t.getHeight()}var GK=function(){function e(e,t){if(this._show=!1,this._styleCoord=[0,0,0,0],this._enterable=!0,this._alwaysShowContent=!1,this._firstShow=!0,this._longHide=!0,ml.wxa)return null;var n=document.createElement(`div`);n.domBelongToZr=!0,this.el=n;var r=this._zr=e.getZr(),i=t.appendTo,a=i&&(J(i)?document.querySelector(i):Gc(i)?i:zc(i)&&i(e.getDom()));WK(this._styleCoord,r,a,e.getWidth()/2,e.getHeight()/2),(a||e.getDom()).appendChild(n),this._api=e,this._container=a;var o=this;n.onmouseenter=function(){o._enterable&&(clearTimeout(o._hideTimeout),o._show=!0),o._inContent=!0},n.onmousemove=function(e){if(e||=window.event,!o._enterable){var t=r.handler;cN(r.painter.getViewportRoot(),e,!0),t.dispatch(`mousemove`,e)}},n.onmouseleave=function(){o._inContent=!1,o._enterable&&o._show&&o.hideLater(o._hideDelay)}}return e.prototype.update=function(e){if(!this._container){var t=this._api.getDom(),n=PK(t,`position`),r=t.style;r.position!==`absolute`&&n!==`absolute`&&(r.position=`relative`)}var i=e.get(`alwaysShowContent`);i&&this._moveIfResized(),this._alwaysShowContent=i,this._enableDisplayTransition=e.get(`displayTransition`)&&e.get(`transitionDuration`)>0,this.el.className=e.get(`className`)||``},e.prototype.show=function(e,t){clearTimeout(this._hideTimeout),clearTimeout(this._longHideTimeout);var n=this.el,r=n.style,i=this._styleCoord;n.innerHTML?r.cssText=LK+UK(e,!this._firstShow,this._longHide,this._enableDisplayTransition)+VK(i[0],i[1],!0)+(`border-color:`+iT(t)+`;`)+(e.get(`extraCssText`)||``)+(`;pointer-events:`+(this._enterable?`auto`:`none`)):r.display=`none`,this._show=!0,this._firstShow=!1,this._longHide=!1},e.prototype.setContent=function(e,t,n,r,i){var a=this.el;if(e==null){a.innerHTML=``;return}var o=``;if(J(i)&&n.get(`trigger`)===`item`&&!kK(n)&&(o=zK(n,r,i)),J(e))a.innerHTML=e+o;else if(e){a.innerHTML=``,q(e)||(e=[e]);for(var s=0;s=0?this._tryShow(n,r):t===`leave`&&this._hide(r))},this))},t.prototype._keepShow=function(){var e=this._tooltipModel,t=this._ecModel,n=this._api,r=e.get(`triggerOn`);if(e.get(`trigger`)!==`axis`&&(this._lastDataByCoordSys=null,this._cbParamsList=null),this._lastX!=null&&this._lastY!=null&&r!==`none`&&r!==`click`){var i=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){!n.isDisposed()&&i.manuallyShowTip(e,t,n,{x:i._lastX,y:i._lastY,dataByCoordSys:i._lastDataByCoordSys})})}},t.prototype.manuallyShowTip=function(e,t,n,r){if(r.from!==this.uid&&!ml.node&&n.getDom()){var i=$K(r,n);this._ticket=``;var a=r.dataByCoordSys,o=iq(r,t,n);if(o){var s=o.el.getBoundingRect().clone();s.applyTransform(o.el.transform),this._tryShow({offsetX:s.x+s.width/2,offsetY:s.y+s.height/2,target:o.el,position:r.position,positionDefault:`bottom`},i)}else if(r.tooltip&&r.x!=null&&r.y!=null){var c=XK;c.x=r.x,c.y=r.y,c.update(),d_(c).tooltipConfig={name:null,option:r.tooltip},this._tryShow({offsetX:r.x,offsetY:r.y,target:c},i)}else if(a)this._tryShow({offsetX:r.x,offsetY:r.y,position:r.position,dataByCoordSys:a,tooltipOption:r.tooltipOption},i);else if(r.seriesIndex!=null){if(this._manuallyAxisShowTip(e,t,n,r))return;var l=SW(r,t),u=l.point[0],d=l.point[1];u!=null&&d!=null&&this._tryShow({offsetX:u,offsetY:d,target:l.el,position:r.position,positionDefault:`bottom`},i)}else r.x!=null&&r.y!=null&&(n.dispatchAction({type:`updateAxisPointer`,x:r.x,y:r.y}),this._tryShow({offsetX:r.x,offsetY:r.y,position:r.position,target:n.getZr().findHover(r.x,r.y).target},i))}},t.prototype.manuallyHideTip=function(e,t,n,r){var i=this._tooltipContent;this._tooltipModel&&i.hideLater(this._tooltipModel.get(`hideDelay`)),this._lastX=this._lastY=this._lastDataByCoordSys=null,this._cbParamsList=null,r.from!==this.uid&&this._hide($K(r,n))},t.prototype._manuallyAxisShowTip=function(e,t,n,r){var i=r.seriesIndex,a=r.dataIndex,o=t.getComponent(`axisPointer`).coordSysAxesInfo;if(i!=null&&a!=null&&o!=null){var s=t.getSeriesByIndex(i);if(s&&QK([s.getData().getItemModel(a),s,(s.coordinateSystem||{}).model],this._tooltipModel).get(`trigger`)===`axis`)return n.dispatchAction({type:`updateAxisPointer`,seriesIndex:i,dataIndex:a,position:r.position}),!0}},t.prototype._tryShow=function(e,t){var n=e.target;if(this._tooltipModel){this._lastX=e.offsetX,this._lastY=e.offsetY;var r=e.dataByCoordSys;if(r&&r.length)this._showAxisTooltip(r,e);else if(n){if(d_(n).ssrType===`legend`)return;this._lastDataByCoordSys=null,this._cbParamsList=null;var i,a;tI(n,function(e){if(e.tooltipDisabled)return i=a=null,!0;i||a||(d_(e).dataIndex==null?d_(e).tooltipConfig!=null&&(a=e):i=e)},!0),i?this._showSeriesItemTooltip(e,i,t):a?this._showComponentItemTooltip(e,a,t):this._hide(t)}else this._lastDataByCoordSys=null,this._cbParamsList=null,this._hide(t)}},t.prototype._showOrMove=function(e,t){var n=e.get(`showDelay`);t=K(t,this),clearTimeout(this._showTimout),n>0?this._showTimout=setTimeout(t,n):t()},t.prototype._showAxisTooltip=function(e,t){var n=this._ecModel,r=this._tooltipModel,i=[t.offsetX,t.offsetY],a=QK([t.tooltipOption],r),o=this._renderMode,s=[],c=rE(`section`,{blocks:[],noHeader:!0}),l=[],u=new vE;W(e,function(e){W(e.dataByAxis,function(e){var t=n.getComponent(e.axisDim+`Axis`,e.axisIndex),i=e.value,a=t.axis,d=a.scale.parse(i);if(t&&i!=null){var f=eW(i,a,n,e.seriesDataIndices,e.valueLabelOpt),p=rE(`section`,{header:f,noHeader:!el(f),sortBlocks:!0,blocks:[]});c.blocks.push(p),W(e.seriesDataIndices,function(i){var a=n.getSeriesByIndex(i.seriesIndex),c=i.dataIndexInside,m=a.getDataParams(c);if(!(m.dataIndex<0)){m.axisDim=e.axisDim,m.axisIndex=e.axisIndex,m.axisType=e.axisType,m.axisId=e.axisId,m.axisValue=zO(t.axis,{value:d}),m.axisValueLabel=f,m.marker=u.makeTooltipMarker(`item`,iT(m.color),o);var h=jT(a.formatTooltip(c,!0,null)),g=h.frag;if(g){var _=QK([a],r).get(`valueFormatter`);p.blocks.push(_?U({valueFormatter:_},g):g)}h.text&&l.push(h.text),s.push(m)}})}})}),c.blocks.reverse(),l.reverse();var d=t.position,f=lE(c,u,o,a.get(`order`),n.get(`useUTC`),a.get(`textStyle`));f&&l.unshift(f);var p=o===`richText`?` + +`:`
`,m=l.join(p);this._showOrMove(a,function(){this._updateContentNotChangedOnAxis(e,s)?this._updatePosition(a,d,i[0],i[1],this._tooltipContent,s):this._showTooltipContent(a,m,s,Math.random()+``,i[0],i[1],d,null,u)})},t.prototype._showSeriesItemTooltip=function(e,t,n){var r=this._ecModel,i=d_(t),a=i.seriesIndex,o=r.getSeriesByIndex(a),s=i.dataModel||o,c=i.dataIndex,l=i.dataType,u=s.getData(l),d=this._renderMode,f=e.positionDefault,p=QK([u.getItemModel(c),s,o&&(o.coordinateSystem||{}).model],this._tooltipModel,f?{position:f}:null),m=p.get(`trigger`);if(m==null||m===`item`){var h=s.getDataParams(c,l),g=new vE;h.marker=g.makeTooltipMarker(`item`,iT(h.color),d);var _=jT(s.formatTooltip(c,!1,l)),v=p.get(`order`),y=p.get(`valueFormatter`),b=_.frag,x=b?lE(y?U({valueFormatter:y},b):b,g,d,v,r.get(`useUTC`),p.get(`textStyle`)):_.text,S=`item_`+s.name+`_`+c;this._showOrMove(p,function(){this._showTooltipContent(p,x,h,S,e.offsetX,e.offsetY,e.position,e.target,g)}),n({type:`showTip`,dataIndexInside:c,dataIndex:u.getRawIndex(c),seriesIndex:a,from:this.uid})}},t.prototype._showComponentItemTooltip=function(e,t,n){var r=this._renderMode===`html`,i=d_(t),a=i.tooltipConfig.option||{},o=a.encodeHTMLContent;if(J(a)){var s=a;a={content:s,formatter:s},o=!0}o&&r&&a.content&&(a=wc(a),a.content=XC(a.content));var c=[a],l=this._ecModel.getComponent(i.componentMainType,i.componentIndex);l&&c.push(l),c.push({formatter:a.content});var u=e.positionDefault,d=QK(c,this._tooltipModel,u?{position:u}:null),f=d.get(`content`),p=Math.random()+``,m=new vE;this._showOrMove(d,function(){var n=wc(d.get(`formatterParams`)||{});this._showTooltipContent(d,f,n,p,e.offsetX,e.offsetY,e.position,t,m)}),n({type:`showTip`,from:this.uid})},t.prototype._showTooltipContent=function(e,t,n,r,i,a,o,s,c){if(this._ticket=``,e.get(`showContent`)&&e.get(`show`)){var l=this._tooltipContent;l.setEnterable(e.get(`enterable`));var u=e.get(`formatter`);o||=e.get(`position`);var d=t,f=this._getNearestPoint([i,a],n,e.get(`trigger`),e.get(`borderColor`),e.get(`defaultBorderColor`,!0)).color;if(u){if(J(u)){var p=e.ecModel.get(`useUTC`),m=q(n)?n[0]:n,h=m&&m.axisType&&m.axisType.indexOf(`time`)>=0;d=u,h&&(d=Mw(m.axisValue,d,p)),d=nT(d,n,!0)}else if(zc(u)){var g=K(function(t,r){t===this._ticket&&(l.setContent(r,c,e,f,o),this._updatePosition(e,o,i,a,l,n,s))},this);this._ticket=r,d=u(n,r,g)}else d=u}l.setContent(d,c,e,f,o),l.show(e,f),this._updatePosition(e,o,i,a,l,n,s)}},t.prototype._getNearestPoint=function(e,t,n,r,i){if(n===`axis`||q(t))return{color:r||i};if(!q(t))return{color:r||t.color||t.borderColor}},t.prototype._updatePosition=function(e,t,n,r,i,a,o){var s=this._api.getWidth(),c=this._api.getHeight();t||=e.get(`position`);var l=i.getSize(),u=e.get(`align`),d=e.get(`verticalAlign`),f=o&&o.getBoundingRect().clone();if(o&&f.applyTransform(o.transform),zc(t)&&(t=t([n,r],a,i.el,f,{viewSize:[s,c],contentSize:l.slice()})),q(t))n=Ph(t[0],s),r=Ph(t[1],c);else if(Hc(t)){var p=t;p.width=l[0],p.height=l[1];var m=dT(p,{width:s,height:c});n=m.x,r=m.y,u=null,d=null}else if(J(t)&&o){var h=nq(t,f,l,e.get(`borderWidth`));n=h[0],r=h[1]}else{var h=eq(n,r,i,s,c,u?null:20,d?null:20);n=h[0],r=h[1]}if(u&&(n-=rq(u)?l[0]/2:u===`right`?l[0]:0),d&&(r-=rq(d)?l[1]/2:d===`bottom`?l[1]:0),kK(e)){var h=tq(n,r,i,s,c);n=h[0],r=h[1]}i.moveTo(n,r)},t.prototype._updateContentNotChangedOnAxis=function(e,t){var n=this._lastDataByCoordSys,r=this._cbParamsList,i=!!n&&n.length===e.length;return i&&W(n,function(n,a){var o=n.dataByAxis||[],s=(e[a]||{}).dataByAxis||[];i&&=o.length===s.length,i&&W(o,function(e,n){var a=s[n]||{},o=e.seriesDataIndices||[],c=a.seriesDataIndices||[];i=i&&e.value===a.value&&e.axisType===a.axisType&&e.axisId===a.axisId&&o.length===c.length,i&&W(o,function(e,t){var n=c[t];i=i&&e.seriesIndex===n.seriesIndex&&e.dataIndex===n.dataIndex}),r&&W(e.seriesDataIndices,function(e){var n=e.seriesIndex,a=t[n],o=r[n];a&&o&&o.data!==a.data&&(i=!1)})})}),this._lastDataByCoordSys=e,this._cbParamsList=t,!!i},t.prototype._hide=function(e){this._lastDataByCoordSys=null,this._cbParamsList=null,e({type:`hideTip`,from:this.uid})},t.prototype.dispose=function(e,t){!ml.node&&t.getDom()&&(vM(this,`_updatePosition`),this._tooltipContent.dispose(),bW(`itemTooltip`,t),this._tooltipContent=null,this._tooltipModel=null,this._lastDataByCoordSys=null,this._cbParamsList=null)},t.type=`tooltip`,t}(gF);function QK(e,t,n){var r=t.ecModel,i;n?(i=new jx(n,r,r),i=new jx(t.option,i,r)):i=t;for(var a=e.length-1;a>=0;a--){var o=e[a];o&&(o instanceof jx&&(o=o.get(`tooltip`,!0)),J(o)&&(o={formatter:o}),o&&(i=new jx(o,i,r)))}return i}function $K(e,t){return e.dispatchAction||K(t.dispatchAction,t)}function eq(e,t,n,r,i,a,o){var s=n.getSize(),c=s[0],l=s[1];return a!=null&&(e+c+a+2>r?e-=c+a:e+=a),o!=null&&(t+l+o>i?t-=l+o:t+=o),[e,t]}function tq(e,t,n,r,i){var a=n.getSize(),o=a[0],s=a[1];return e=Math.min(e+o,r)-o,t=Math.min(t+s,i)-s,e=Math.max(e,0),t=Math.max(t,0),[e,t]}function nq(e,t,n,r){var i=n[0],a=n[1],o=Math.ceil(Math.SQRT2*r)+8,s=0,c=0,l=t.width,u=t.height;switch(e){case`inside`:s=t.x+l/2-i/2,c=t.y+u/2-a/2;break;case`top`:s=t.x+l/2-i/2,c=t.y-a-o;break;case`bottom`:s=t.x+l/2-i/2,c=t.y+u+o;break;case`left`:s=t.x-i-o,c=t.y+u/2-a/2;break;case`right`:s=t.x+l+o,c=t.y+u/2-a/2}return[s,c]}function rq(e){return e===`center`||e===`middle`}function iq(e,t,n){var r=zg(e).queryOptionMap,i=r.keys()[0];if(i&&i!==`series`){var a=Hg(t,i,r.get(i),{useDefault:!1,enableAll:!1,enableNone:!1}).models[0];if(a){var o=n.getViewOfComponentModel(a),s;if(o.group.traverse(function(t){var n=d_(t).tooltipConfig;if(n&&n.name===e.name)return s=t,!0}),s)return{componentMainType:i,componentIndex:a.componentIndex,el:s}}}}function aq(e){VR(FW),e.registerComponentModel(OK),e.registerComponentView(ZK),e.registerAction({type:`showTip`,event:`showTip`,update:`tooltip:manuallyShowTip`},dl),e.registerAction({type:`hideTip`,event:`hideTip`,update:`tooltip:manuallyHideTip`},dl)}var oq=[`rect`,`polygon`,`keep`,`clear`];function sq(e,t){var n=mg(e?e.brush:[]);if(n.length){var r=[];W(n,function(e){var t=e.hasOwnProperty(`toolbox`)?e.toolbox:[];t instanceof Array&&(r=r.concat(t))});var i=e&&e.toolbox;q(i)&&(i=i[0]),i||(i={feature:{}},e.toolbox=[i]);var a=i.feature||(i.feature={}),o=a.brush||={},s=o.type||=[];s.push.apply(s,r),a_(s,function(e){return e+``},null),t&&!s.length&&s.push.apply(s,oq)}}var cq=W;function lq(e){if(e){for(var t in e)if(e.hasOwnProperty(t))return!0}}function uq(e,t,n){var r={};return cq(t,function(t){var a=r[t]=i();cq(e[t],function(e,r){if(MB.isValidType(r)){var i={type:r,visual:e};n&&n(i,t),a[r]=new MB(i),r===`opacity`&&(i=wc(i),i.type=`colorAlpha`,a.__hidden.__alphaForOpacity=new MB(i))}})}),r;function i(){var e=function(){};return e.prototype.__hidden=e.prototype,new e}}function dq(e,t,n){var r;W(n,function(e){t.hasOwnProperty(e)&&lq(t[e])&&(r=!0)}),r&&W(n,function(n){t.hasOwnProperty(n)&&lq(t[n])?e[n]=wc(t[n]):delete e[n]})}function fq(e,t,n,r,i,a){var o={};W(e,function(e){o[e]=MB.prepareVisualTypes(t[e])});var s;function c(e){return QF(n,s,e)}function l(e,t){eI(n,s,e,t)}a==null?n.each(u):n.each([a],u);function u(e,u){s=a==null?e:u;var d=n.getRawDataItem(s);if(!(d&&d.visualMap===!1))for(var f=r.call(i,e),p=t[f],m=o[f],h=0,g=m.length;ht[0][1]&&(t[0][1]=a[0]),a[1]t[1][1]&&(t[1][1]=a[1])}return t&&kq(t)}};function kq(e){return new Eu(e[0][0],e[1][0],e[0][1]-e[0][0],e[1][1]-e[1][0])}var Aq=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.init=function(e,t){this.ecModel=e,this.api=t,this.model,(this._brushController=new wV(t.getZr())).on(`brush`,K(this._onBrush,this)).mount()},t.prototype.render=function(e,t,n,r){this.model=e,this._updateController(e,t,n,r)},t.prototype.updateTransform=function(e,t,n,r){xq(t),this._updateController(e,t,n,r)},t.prototype.updateVisual=function(e,t,n,r){this.updateTransform(e,t,n,r)},t.prototype.updateView=function(e,t,n,r){this._updateController(e,t,n,r)},t.prototype._updateController=function(e,t,n,r){(!r||r.$from!==e.id)&&this._brushController.setPanels(e.brushTargetManager.makePanelOpts(n)).enableBrush(e.brushOption).updateCovers(e.areas.slice())},t.prototype.dispose=function(){this._brushController.dispose()},t.prototype._onBrush=function(e){var t=this.model.id,n=this.model.brushTargetManager.setOutputRanges(e.areas,this.ecModel);(!e.isEnd||e.removeOnClick)&&this.api.dispatchAction({type:`brush`,brushId:t,areas:wc(n),$from:t}),e.isEnd&&this.api.dispatchAction({type:`brushEnd`,brushId:t,areas:wc(n),$from:t})},t.type=`brush`,t}(gF),jq=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n.areas=[],n.brushOption={},n}return t.prototype.optionUpdated=function(e,t){var n=this.option;!t&&dq(n,e,[`inBrush`,`outOfBrush`]);var r=n.inBrush=n.inBrush||{};n.outOfBrush=n.outOfBrush||{color:this.option.defaultOutOfBrushColor},r.hasOwnProperty(`liftZ`)||(r.liftZ=5)},t.prototype.setAreas=function(e){e&&(this.areas=G(e,function(e){return Mq(this.option,e)},this))},t.prototype.setBrushOption=function(e){this.brushOption=Mq(this.option,e),this.brushType=this.brushOption.brushType},t.type=`brush`,t.dependencies=[`geo`,`grid`,`xAxis`,`yAxis`,`parallel`,`series`],t.defaultOption={seriesIndex:`all`,brushType:`rect`,brushMode:`single`,transformable:!0,brushStyle:{borderWidth:1,color:Q.color.backgroundTint,borderColor:Q.color.borderTint},throttleType:`fixRate`,throttleDelay:0,removeOnClick:!0,z:1e4,defaultOutOfBrushColor:Q.color.disabled},t}(bT);function Mq(e,t){return Tc({brushType:e.brushType,brushMode:e.brushMode,transformable:e.transformable,brushStyle:new jx(e.brushStyle).getItemStyle(),removeOnClick:e.removeOnClick,z:e.z},t,!0)}var Nq=[`rect`,`polygon`,`lineX`,`lineY`,`keep`,`clear`],Pq=function(e){H(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.render=function(e,t,n){var r,i,a;t.eachComponent({mainType:`brush`},function(e){r=e.brushType,i=e.brushOption.brushMode||`single`,a||=!!e.areas.length}),this._brushType=r,this._brushMode=i,W(e.get(`type`,!0),function(t){e.setIconStatus(t,(t===`keep`?i===`multiple`:t===`clear`?a:t===r)?`emphasis`:`normal`)})},t.prototype.updateView=function(e,t,n){this.render(e,t,n)},t.prototype.getIcons=function(){var e=this.model,t=e.get(`icon`,!0),n={};return W(e.get(`type`,!0),function(e){t[e]&&(n[e]=t[e])}),n},t.prototype.onclick=function(e,t,n){var r=this._brushType,i=this._brushMode;n===`clear`?(t.dispatchAction({type:`axisAreaSelect`,intervals:[]}),t.dispatchAction({type:`brush`,command:`clear`,areas:[]})):t.dispatchAction({type:`takeGlobalCursor`,key:`brush`,brushOption:{brushType:n===`keep`?r:r!==n&&n,brushMode:n===`keep`?i===`multiple`?`single`:`multiple`:i}})},t.getDefaultOption=function(e){return{show:!0,type:Nq.slice(),icon:{rect:`M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13`,polygon:`M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2`,lineX:`M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4`,lineY:`M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4`,keep:`M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z`,clear:`M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2`},title:e.getLocaleModel().get([`toolbox`,`brush`,`title`])}},t}(wG);function Fq(e){e.registerComponentView(Aq),e.registerComponentModel(jq),e.registerPreprocessor(sq),e.registerVisual(e.PRIORITY.VISUAL.BRUSH,Sq),e.registerAction({type:`brush`,event:`brush`,update:`updateVisual`},function(e,t){t.eachComponent({mainType:`brush`,query:e},function(t){t.setAreas(e.areas)})}),e.registerAction({type:`brushSelect`,event:`brushSelected`,update:`none`},dl),e.registerAction({type:`brushEnd`,event:`brushEnd`,update:`none`},dl),EG(`brush`,Pq)}function Iq(e,t){if(!e)return!1;for(var n=q(e)?e:[e],r=0;r=0&&(s[o]=+s[o].toFixed(f)),[s,d]}var Uq={min:Rc(Hq,`min`),max:Rc(Hq,`max`),average:Rc(Hq,`average`),median:Rc(Hq,`median`)};function Wq(e,t){if(t){var n=e.getData(),r=e.coordinateSystem,i=r&&r.dimensions;if(!Vq(t)&&!q(t.coord)&&q(i)){var a=Gq(t,n,r,e);if(t=wc(t),t.type&&Uq[t.type]&&a.baseAxis&&a.valueAxis){var o=kc(i,a.baseAxis.dim),s=kc(i,a.valueAxis.dim),c=Uq[t.type](n,a.valueAxis.dim,a.baseDataDim,a.valueDataDim,o,s);t.coord=c[0],t.value=c[1]}else t.coord=[t.xAxis==null?t.radiusAxis:t.xAxis,t.yAxis==null?t.angleAxis:t.yAxis]}if(t.coord==null||!q(i)){t.coord=[];var l=e.getBaseAxis();if(l&&t.type&&Uq[t.type]){var u=r.getOtherAxis(l);u&&(t.value=Xq(n,n.mapDimension(u.dim),t.type))}}else for(var d=t.coord,f=0;f<2;f++)Uq[d[f]]&&(d[f]=Xq(n,n.mapDimension(i[f]),d[f]));return t}}function Gq(e,t,n,r){var i={};return e.valueIndex!=null||e.valueDim!=null?(i.valueDataDim=e.valueIndex==null?e.valueDim:t.getDimension(e.valueIndex),i.valueAxis=n.getAxis(Kq(r,i.valueDataDim)),i.baseAxis=n.getOtherAxis(i.valueAxis),i.baseDataDim=t.mapDimension(i.baseAxis.dim)):(i.baseAxis=r.getBaseAxis(),i.valueAxis=n.getOtherAxis(i.baseAxis),i.baseDataDim=t.mapDimension(i.baseAxis.dim),i.valueDataDim=t.mapDimension(i.valueAxis.dim)),i}function Kq(e,t){var n=e.getData().getDimensionInfo(t);return n&&n.coordDim}function qq(e,t){return e&&e.containData&&t.coord&&!Bq(t)?e.containData(t.coord):!0}function Jq(e,t,n){return e&&e.containZone&&t.coord&&n.coord&&!Bq(t)&&!Bq(n)?e.containZone(t.coord,n.coord):!0}function Yq(e,t){return e?function(e,n,r,i){return TS(i<2?e.coord&&e.coord[i]:e.value,t[i])}:function(e,n,r,i){return TS(e.value,t[i])}}function Xq(e,t,n){if(n===`average`){var r=0,i=0;return e.each(t,function(e,t){isNaN(e)||(r+=e,i++)}),r/i}return n===`median`?e.getMedian(t):e.getDataExtent(t)[+(n===`max`)]}var Zq=Ig(),Qq=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.init=function(){this.markerGroupMap=X()},t.prototype.render=function(e,t,n){var r=this,i=this.markerGroupMap;i.each(function(e){Zq(e).keep=!1}),t.eachSeries(function(e){var i=zq.getMarkerModelFromSeries(e,r.type);i&&r.renderSeries(e,i,t,n)}),i.each(function(e){!Zq(e).keep&&r.group.remove(e.group)}),$q(t,i,this.type)},t.prototype.markKeep=function(e){Zq(e).keep=!0},t.prototype.toggleBlurSeries=function(e,t){var n=this;W(e,function(e){var r=zq.getMarkerModelFromSeries(e,n.type);r&&r.getData().eachItemGraphicEl(function(e){e&&(t?rv(e):iv(e))})})},t.type=`marker`,t}(gF);function $q(e,t,n){e.eachSeries(function(e){var r=zq.getMarkerModelFromSeries(e,n),i=t.get(e.id);if(r&&i&&i.group){var a=Yb(r),o=a.z,s=a.zlevel;Zb(i.group,o,s)}})}var eJ=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.createMarkerModelFromSeries=function(e,n,r){return new t(e,n,r)},t.type=`markLine`,t.defaultOption={z:5,symbol:[`circle`,`arrow`],symbolSize:[8,16],symbolOffset:0,precision:2,tooltip:{trigger:`item`},label:{show:!0,position:`end`,distance:5},lineStyle:{type:`dashed`},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:`linear`},t}(zq),tJ=Ig(),nJ=function(e,t,n,r){var i=e.getData(),a;if(q(r))a=r;else{var o=r.type;if(o===`min`||o===`max`||o===`average`||o===`median`||r.xAxis!=null||r.yAxis!=null){var s=void 0,c=void 0;if(r.yAxis!=null||r.xAxis!=null)s=t.getAxis(r.yAxis==null?`x`:`y`),c=Yc(r.yAxis,r.xAxis);else{var l=Gq(r,i,t,e);s=l.valueAxis,c=Xq(i,EC(i,l.valueDataDim),o)}var u=s.dim===`x`?0:1,d=1-u,f=wc(r),p={coord:[]};f.type=null,f.coord=[],f.coord[d]=-1/0,p.coord[d]=1/0;var m=n.get(`precision`);m>=0&&Vc(c)&&(c=+c.toFixed(Math.min(m,20))),f.coord[u]=p.coord[u]=c,a=[f,p,{type:o,valueIndex:r.valueIndex,value:c}]}else a=[]}var h=[Wq(e,a[0]),Wq(e,a[1]),U({},a[2])];return h[2].type=h[2].type||null,Tc(h[2],h[0]),Tc(h[2],h[1]),h};function rJ(e){return!isNaN(e)&&!isFinite(e)}function iJ(e,t,n,r){var i=1-e,a=r.dimensions[e];return rJ(t[i])&&rJ(n[i])&&t[e]===n[e]&&r.getAxis(a).containData(t[e])}function aJ(e,t){if(e.type===`cartesian2d`){var n=t[0].coord,r=t[1].coord;if(n&&r&&(iJ(1,n,r,e)||iJ(0,n,r,e)))return!0}return qq(e,t[0])&&qq(e,t[1])}function oJ(e,t,n,r,i){var a=r.coordinateSystem,o=e.getItemModel(t),s,c=Ph(o.get(`x`),i.getWidth()),l=Ph(o.get(`y`),i.getHeight());if(!isNaN(c)&&!isNaN(l))s=[c,l];else{if(r.getMarkerPosition)s=r.getMarkerPosition(e.getValues(e.dimensions,t));else{var u=a.dimensions,d=e.get(u[0],t),f=e.get(u[1],t);s=a.dataToPoint([d,f])}if(DD(a,`cartesian2d`)){var p=a.getAxis(`x`),m=a.getAxis(`y`),u=a.dimensions;rJ(e.get(u[0],t))?s[0]=p.toGlobalCoord(p.getExtent()[+!n]):rJ(e.get(u[1],t))&&(s[1]=m.toGlobalCoord(m.getExtent()[+!n]))}isNaN(c)||(s[0]=c),isNaN(l)||(s[1]=l)}e.setItemLayout(t,s)}var sJ=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.updateTransform=function(e,t,n){t.eachSeries(function(e){var t=zq.getMarkerModelFromSeries(e,`markLine`);if(t){var r=t.getData(),i=tJ(t).from,a=tJ(t).to;i.each(function(t){oJ(i,t,!0,e,n),oJ(a,t,!1,e,n)}),r.each(function(e){r.setItemLayout(e,[i.getItemLayout(e),a.getItemLayout(e)])}),this.markerGroupMap.get(e.id).updateLayout()}},this)},t.prototype.renderSeries=function(e,t,n,r){var i=e.coordinateSystem,a=e.id,o=e.getData(),s=this.markerGroupMap,c=s.get(a)||s.set(a,new iV);this.group.add(c.group);var l=cJ(i,e,t),u=l.from,d=l.to,f=l.line;tJ(t).from=u,tJ(t).to=d,t.setData(f);var p=t.get(`symbol`),m=t.get(`symbolSize`),h=t.get(`symbolRotate`),g=t.get(`symbolOffset`);q(p)||(p=[p,p]),q(m)||(m=[m,m]),q(h)||(h=[h,h]),q(g)||(g=[g,g]),l.from.each(function(e){_(u,e,!0),_(d,e,!1)}),f.each(function(e){var t=f.getItemModel(e),n=t.getModel(`lineStyle`).getLineStyle();f.setItemLayout(e,[u.getItemLayout(e),d.getItemLayout(e)]);var r=t.get(`z2`);n.stroke??=u.getItemVisual(e,`style`).fill,f.setItemVisual(e,{z2:Y(r,0),fromSymbolKeepAspect:u.getItemVisual(e,`symbolKeepAspect`),fromSymbolOffset:u.getItemVisual(e,`symbolOffset`),fromSymbolRotate:u.getItemVisual(e,`symbolRotate`),fromSymbolSize:u.getItemVisual(e,`symbolSize`),fromSymbol:u.getItemVisual(e,`symbol`),toSymbolKeepAspect:d.getItemVisual(e,`symbolKeepAspect`),toSymbolOffset:d.getItemVisual(e,`symbolOffset`),toSymbolRotate:d.getItemVisual(e,`symbolRotate`),toSymbolSize:d.getItemVisual(e,`symbolSize`),toSymbol:d.getItemVisual(e,`symbol`),style:n})}),c.updateData(f),l.line.eachItemGraphicEl(function(e){d_(e).dataModel=t,e.traverse(function(e){d_(e).dataModel=t})});function _(t,n,i){var a=t.getItemModel(n);oJ(t,n,i,e,r);var s=a.getModel(`itemStyle`).getItemStyle();s.fill??=$F(o,`color`),t.setItemVisual(n,{symbolKeepAspect:a.get(`symbolKeepAspect`),symbolOffset:Y(a.get(`symbolOffset`,!0),g[+!i]),symbolRotate:Y(a.get(`symbolRotate`,!0),h[+!i]),symbolSize:Y(a.get(`symbolSize`),m[+!i]),symbol:Y(a.get(`symbol`,!0),p[+!i]),style:s})}this.markKeep(c),c.group.silent=t.get(`silent`)||e.get(`silent`)},t.type=`markLine`,t}(Qq);function cJ(e,t,n){var r=e?G(e&&e.dimensions,function(e){var n=t.getData();return U(U({},n.getDimensionInfo(n.mapDimension(e))||{}),{name:e,ordinalMeta:null})}):[{name:`value`,type:`float`}],i=new sC(r,n),a=new sC(r,n),o=new sC([],n),s=G(n.get(`data`),Rc(nJ,t,e,n));e&&(s=Pc(s,Rc(aJ,e)));var c=Yq(!!e,r);return i.initData(G(s,function(e){return e[0]}),null,c),a.initData(G(s,function(e){return e[1]}),null,c),o.initData(G(s,function(e){return e[2]})),o.hasItemOption=!0,{from:i,to:a,line:o}}function lJ(e){e.registerComponentModel(eJ),e.registerComponentView(sJ),e.registerPreprocessor(function(e){Iq(e.series,`markLine`)&&(e.markLine=e.markLine||{})})}var uJ=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.createMarkerModelFromSeries=function(e,n,r){return new t(e,n,r)},t.type=`markArea`,t.defaultOption={z:1,tooltip:{trigger:`item`},animation:!1,label:{show:!0,position:`top`},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:`top`}}},t}(zq),dJ=Ig(),fJ=function(e,t,n,r){var i=r[0],a=r[1];if(i&&a){var o=Wq(e,i),s=Wq(e,a),c=o.coord,l=s.coord;c[0]=Yc(c[0],-1/0),c[1]=Yc(c[1],-1/0),l[0]=Yc(l[0],1/0),l[1]=Yc(l[1],1/0);var u=Ec([{},o,s]);return u.coord=[o.coord,s.coord],u.x0=o.x,u.y0=o.y,u.x1=s.x,u.y1=s.y,u}};function pJ(e){return!isNaN(e)&&!isFinite(e)}function mJ(e,t,n,r){var i=1-e;return pJ(t[i])&&pJ(n[i])}function hJ(e,t){var n=t.coord[0],r=t.coord[1],i={coord:n,x:t.x0,y:t.y0},a={coord:r,x:t.x1,y:t.y1};return DD(e,`cartesian2d`)?n&&r&&(mJ(1,n,r,e)||mJ(0,n,r,e))?!0:Jq(e,i,a):qq(e,i)||qq(e,a)}function gJ(e,t,n,r,i){var a=r.coordinateSystem,o=e.getItemModel(t),s,c=Ph(o.get(n[0]),i.getWidth()),l=Ph(o.get(n[1]),i.getHeight());if(!isNaN(c)&&!isNaN(l))s=[c,l];else{if(r.getMarkerPosition){var u=e.getValues([`x0`,`y0`],t),d=e.getValues([`x1`,`y1`],t),f=a.clampData(u),p=a.clampData(d),m=[];m[0]=n[0]===`x0`?f[0]>p[0]?d[0]:u[0]:f[0]>p[0]?u[0]:d[0],m[1]=n[1]===`y0`?f[1]>p[1]?d[1]:u[1]:f[1]>p[1]?u[1]:d[1],s=r.getMarkerPosition(m,n,!0)}else{var h=e.get(n[0],t),g=e.get(n[1],t),_=[h,g];a.clampData&&a.clampData(_,_),s=a.dataToPoint(_,!0)}if(DD(a,`cartesian2d`)){var v=a.getAxis(`x`),y=a.getAxis(`y`),h=e.get(n[0],t),g=e.get(n[1],t);pJ(h)?s[0]=v.toGlobalCoord(v.getExtent()[n[0]===`x0`?0:1]):pJ(g)&&(s[1]=y.toGlobalCoord(y.getExtent()[n[1]===`y0`?0:1]))}isNaN(c)||(s[0]=c),isNaN(l)||(s[1]=l)}return s}var _J=[[`x0`,`y0`],[`x1`,`y0`],[`x1`,`y1`],[`x0`,`y1`]],vJ=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.updateTransform=function(e,t,n){t.eachSeries(function(e){var t=zq.getMarkerModelFromSeries(e,`markArea`);if(t){var r=t.getData();r.each(function(t){var i=G(_J,function(i){return gJ(r,t,i,e,n)});r.setItemLayout(t,i),r.getItemGraphicEl(t).setShape(`points`,i)})}},this)},t.prototype.renderSeries=function(e,t,n,r){var i=e.coordinateSystem,a=e.id,o=e.getData(),s=this.markerGroupMap,c=s.get(a)||s.set(a,{group:new $v});this.group.add(c.group),this.markKeep(c);var l=yJ(i,e,t);t.setData(l),l.each(function(t){var n=G(_J,function(n){return gJ(l,t,n,e,r)}),a=i.getAxis(`x`).scale,s=i.getAxis(`y`).scale,c=a.getExtent(),u=s.getExtent(),d=[a.parse(l.get(`x0`,t)),a.parse(l.get(`x1`,t))],f=[s.parse(l.get(`y0`,t)),s.parse(l.get(`y1`,t))];zh(d),zh(f);var p=c[0]>d[1]||c[1]f[1]||u[1]=0},t.prototype.getOrient=function(){return this.get(`orient`)===`vertical`?{index:1,name:`vertical`}:{index:0,name:`horizontal`}},t.type=`legend.plain`,t.dependencies=[`series`],t.defaultOption={z:4,show:!0,orient:`horizontal`,left:`center`,bottom:Q.size.m,align:`auto`,backgroundColor:Q.color.transparent,borderColor:Q.color.border,borderRadius:0,borderWidth:0,padding:5,itemGap:8,itemWidth:25,itemHeight:14,symbolRotate:`inherit`,symbolKeepAspect:!0,inactiveColor:Q.color.disabled,inactiveBorderColor:Q.color.disabled,inactiveBorderWidth:`auto`,itemStyle:{color:`inherit`,opacity:`inherit`,borderColor:`inherit`,borderWidth:`auto`,borderCap:`inherit`,borderJoin:`inherit`,borderDashOffset:`inherit`,borderMiterLimit:`inherit`},lineStyle:{width:`auto`,color:`inherit`,inactiveColor:Q.color.disabled,inactiveWidth:2,opacity:`inherit`,type:`inherit`,cap:`inherit`,join:`inherit`,dashOffset:`inherit`,miterLimit:`inherit`},textStyle:{color:Q.color.secondary},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:`sans-serif`,color:Q.color.tertiary,borderWidth:1,borderColor:Q.color.border},emphasis:{selectorLabel:{show:!0,color:Q.color.quaternary}},selectorPosition:`auto`,selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1},triggerEvent:!1},t}(bT),CJ=Rc,wJ=W,TJ=$v,EJ=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n.newlineDisabled=!1,n}return t.prototype.init=function(){this.group.add(this._contentGroup=new TJ),this.group.add(this._selectorGroup=new TJ),this._isFirstRender=!0},t.prototype.getContentGroup=function(){return this._contentGroup},t.prototype.getSelectorGroup=function(){return this._selectorGroup},t.prototype.render=function(e,t,n){var r=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),e.get(`show`,!0)){var i=e.get(`align`),a=e.get(`orient`);(!i||i===`auto`)&&(i=e.get(`left`)===`right`&&a===`vertical`?`right`:`left`);var o=e.get(`selector`,!0),s=e.get(`selectorPosition`,!0);o&&(!s||s===`auto`)&&(s=a===`horizontal`?`end`:`start`),this.renderInner(i,e,t,n,o,a,s);var c=pT(e,n).refContainer,l=e.getBoxLayoutParams(),u=e.get(`padding`),d=dT(l,c,u),f=this.layoutInner(e,i,d,r,o,s),p=dT(Oc({width:f.width,height:f.height},l),c,u);this.group.x=p.x-f.x,this.group.y=p.y-f.y,this.group.markRedraw(),this.group.add(this._backgroundEl=kG(f,e))}},t.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},t.prototype.renderInner=function(e,t,n,r,i,a,o){var s=this.getContentGroup(),c=X(),l=t.get(`selectedMode`),u=t.get(`triggerEvent`),d=[];n.eachRawSeries(function(e){!e.get(`legendHoverLink`)&&d.push(e.id)}),wJ(t.getData(),function(i,a){var o=this,f=i.get(`name`);if(!this.newlineDisabled&&(f===``||f===` +`)){var p=new TJ;p.newline=!0,s.add(p);return}var m=n.getSeriesByName(f)[0];if(!c.get(f)){if(m){var h=m.getData(),g=h.getVisual(`legendLineStyle`)||{},_=h.getVisual(`legendIcon`),v=h.getVisual(`style`),y=this._createItem(m,f,a,i,t,e,g,v,_,l,r);y.on(`click`,CJ(kJ,f,null,r,d)).on(`mouseover`,CJ(AJ,m.name,null,r,d)).on(`mouseout`,CJ(jJ,m.name,null,r,d)),n.ssr&&y.eachChild(function(e){var t=d_(e);t.seriesIndex=m.seriesIndex,t.dataIndex=a,t.ssrType=`legend`}),u&&y.eachChild(function(e){o.packEventData(e,t,m,a,f)}),c.set(f,!0)}else n.eachRawSeries(function(o){var s=this;if(!c.get(f)&&o.legendVisualProvider){var p=o.legendVisualProvider;if(!p.containName(f))return;var m=p.indexOfName(f),h=p.getItemVisual(m,`style`),g=p.getItemVisual(m,`legendIcon`),_=xf(h.fill);_&&_[3]===0&&(_[3]=.2,h=U(U({},h),{fill:kf(_,`rgba`)}));var v=this._createItem(o,f,a,i,t,e,{},h,g,l,r);v.on(`click`,CJ(kJ,null,f,r,d)).on(`mouseover`,CJ(AJ,null,f,r,d)).on(`mouseout`,CJ(jJ,null,f,r,d)),n.ssr&&v.eachChild(function(e){var t=d_(e);t.seriesIndex=o.seriesIndex,t.dataIndex=a,t.ssrType=`legend`}),u&&v.eachChild(function(e){s.packEventData(e,t,o,a,f)}),c.set(f,!0)}},this)}},this),i&&this._createSelector(i,t,r,a,o)},t.prototype.packEventData=function(e,t,n,r,i){var a={componentType:`legend`,componentIndex:t.componentIndex,dataIndex:r,value:i,seriesIndex:n.seriesIndex};d_(e).eventData=a},t.prototype._createSelector=function(e,t,n,r,i){var a=this.getSelectorGroup();wJ(e,function(e){var r=e.type,i=new ah({style:{x:0,y:0,align:`center`,verticalAlign:`middle`},onclick:function(){n.dispatchAction({type:r===`all`?`legendAllSelect`:`legendInverseSelect`,legendId:t.id})}});a.add(i),ox(i,{normal:t.getModel(`selectorLabel`),emphasis:t.getModel([`emphasis`,`selectorLabel`])},{defaultText:e.title}),vv(i)})},t.prototype._createItem=function(e,t,n,r,i,a,o,s,c,l,u){var d=e.visualDrawType,f=i.get(`itemWidth`),p=i.get(`itemHeight`),m=i.isSelected(t),h=r.get(`symbolRotate`),g=r.get(`symbolKeepAspect`),_=r.get(`icon`);c=_||c||`roundRect`;var v=DJ(c,r,o,s,d,m,u),y=new TJ,b=r.getModel(`textStyle`);if(zc(e.getLegendIcon)&&(!_||_===`inherit`))y.add(e.getLegendIcon({itemWidth:f,itemHeight:p,icon:c,iconRotate:h,itemStyle:v.itemStyle,lineStyle:v.lineStyle,symbolKeepAspect:g}));else{var x=_===`inherit`&&e.getData().getVisual(`symbol`)?h===`inherit`?e.getData().getVisual(`symbolRotate`):h:0;y.add(OJ({itemWidth:f,itemHeight:p,icon:c,iconRotate:x,itemStyle:v.itemStyle,lineStyle:v.lineStyle,symbolKeepAspect:g}))}var S=a===`left`?f+5:-5,C=a,w=i.get(`formatter`),T=t;J(w)&&w?T=w.replace(`{name}`,t??``):zc(w)&&(T=w(t));var E=m?b.getTextColor():r.get(`inactiveColor`);y.add(new ah({style:cx(b,{text:T,x:S,y:p/2,fill:E,align:C,verticalAlign:`middle`},{inheritColor:E})}));var D=new eh({shape:y.getBoundingRect(),style:{fill:`transparent`}}),O=r.getModel(`tooltip`);return O.get(`show`)&&Hb({el:D,componentModel:i,itemName:t,itemTooltipOption:O.option}),y.add(D),y.eachChild(function(e){e.silent=!0}),D.silent=!l,this.getContentGroup().add(y),vv(y),y.__legendDataIndex=n,y},t.prototype.layoutInner=function(e,t,n,r,i,a){var o=this.getContentGroup(),s=this.getSelectorGroup();lT(e.get(`orient`),o,e.get(`itemGap`),n.width,n.height);var c=o.getBoundingRect(),l=[-c.x,-c.y];if(s.markRedraw(),o.markRedraw(),i){lT(`horizontal`,s,e.get(`selectorItemGap`,!0));var u=s.getBoundingRect(),d=[-u.x,-u.y],f=e.get(`selectorButtonGap`,!0),p=e.getOrient().index,m=p===0?`width`:`height`,h=p===0?`height`:`width`,g=p===0?`y`:`x`;a===`end`?d[p]+=c[m]+f:l[p]+=u[m]+f,d[1-p]+=c[h]/2-u[h]/2,s.x=d[0],s.y=d[1],o.x=l[0],o.y=l[1];var _={x:0,y:0};return _[m]=c[m]+f+u[m],_[h]=Math.max(c[h],u[h]),_[g]=Math.min(0,u[g]+d[1-p]),_}return o.x=l[0],o.y=l[1],this.group.getBoundingRect()},t.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},t.type=`legend.plain`,t}(gF);function DJ(e,t,n,r,i,a,o){function s(e,t){e.lineWidth===`auto`&&(e.lineWidth=t.lineWidth>0?2:0),wJ(e,function(n,r){e[r]===`inherit`&&(e[r]=t[r])})}var c=t.getModel(`itemStyle`),l=c.getItemStyle(),u=e.lastIndexOf(`empty`,0)===0?`fill`:`stroke`,d=c.getShallow(`decal`);l.decal=!d||d===`inherit`?r.decal:QI(d,o),l.fill===`inherit`&&(l.fill=r[i]),l.stroke===`inherit`&&(l.stroke=r[u]),l.opacity===`inherit`&&(l.opacity=(i===`fill`?r:n).opacity),s(l,r);var f=t.getModel(`lineStyle`),p=f.getLineStyle();if(s(p,n),l.fill===`auto`&&(l.fill=r.fill),l.stroke===`auto`&&(l.stroke=r.fill),p.stroke===`auto`&&(p.stroke=r.fill),!a){var m=t.get(`inactiveBorderWidth`),h=l[u];l.lineWidth=m===`auto`?r.lineWidth>0&&h?2:0:l.lineWidth,l.fill=t.get(`inactiveColor`),l.stroke=t.get(`inactiveBorderColor`),p.stroke=f.get(`inactiveColor`),p.lineWidth=f.get(`inactiveWidth`)}return{itemStyle:l,lineStyle:p}}function OJ(e){var t=e.icon||`roundRect`,n=RE(t,0,0,e.itemWidth,e.itemHeight,e.itemStyle.fill,e.symbolKeepAspect);return n.setStyle(e.itemStyle),n.rotation=(e.iconRotate||0)*Math.PI/180,n.setOrigin([e.itemWidth/2,e.itemHeight/2]),t.indexOf(`empty`)>-1&&(n.style.stroke=n.style.fill,n.style.fill=Q.color.neutral00,n.style.lineWidth=2),n}function kJ(e,t,n,r){jJ(e,t,n,r),n.dispatchAction({type:`legendToggleSelect`,name:e??t}),AJ(e,t,n,r)}function AJ(e,t,n,r){n.usingTHL()||n.dispatchAction({type:`highlight`,seriesName:e,name:t,excludeSeriesId:r})}function jJ(e,t,n,r){n.usingTHL()||n.dispatchAction({type:`downplay`,seriesName:e,name:t,excludeSeriesId:r})}function MJ(e,t,n){var r=e===`allSelect`||e===`inverseSelect`,i={},a=[];n.eachComponent({mainType:`legend`,query:t},function(n){r?n[e]():n[e](t.name),NJ(n,i),a.push(n.componentIndex)});var o={};return n.eachComponent(`legend`,function(e){W(i,function(t,n){e[t?`select`:`unSelect`](n)}),NJ(e,o)}),r?{selected:o,legendIndex:a}:{name:t.name,selected:o}}function NJ(e,t){var n=t||{};return W(e.getData(),function(t){var r=t.get(`name`);if(r!==` +`&&r!==``){var i=e.isSelected(r);n[r]=Z(n,r)?n[r]&&i:i}}),n}function PJ(e){e.registerAction(`legendToggleSelect`,`legendselectchanged`,Rc(MJ,`toggleSelected`)),e.registerAction(`legendAllSelect`,`legendselectall`,Rc(MJ,`allSelect`)),e.registerAction(`legendInverseSelect`,`legendinverseselect`,Rc(MJ,`inverseSelect`)),e.registerAction(`legendSelect`,`legendselected`,Rc(MJ,`select`)),e.registerAction(`legendUnSelect`,`legendunselected`,Rc(MJ,`unSelect`))}var FJ=u_(IJ);function IJ(e){var t=e.findComponents({mainType:`legend`});t&&t.length&&e.filterSeries(function(e){for(var n=0;nn[i],m=[-d.x,-d.y];t||(m[r]=c[s]);var h=[0,0],g=[-f.x,-f.y],_=Y(e.get(`pageButtonGap`,!0),e.get(`itemGap`,!0));p&&(e.get(`pageButtonPosition`,!0)===`end`?g[r]+=n[i]-f[i]:h[r]+=f[i]+_),g[1-r]+=d[a]/2-f[a]/2,c.setPosition(m),l.setPosition(h),u.setPosition(g);var v={x:0,y:0};if(v[i]=p?n[i]:d[i],v[a]=Math.max(d[a],f[a]),v[o]=Math.min(0,f[o]+g[1-r]),l.__rectSize=n[i],p){var y={x:0,y:0};y[i]=Math.max(n[i]-f[i]-_,0),y[a]=v[a],l.setClipPath(new eh({shape:y})),l.__rectSize=y[i]}else u.eachChild(function(e){e.attr({invisible:!0,silent:!0})});var b=this._getPageInfo(e);return b.pageIndex!=null&&nb(c,{x:b.contentPosition[0],y:b.contentPosition[1]},p?e:null),this._updatePageInfoView(e,b),v},t.prototype._pageGo=function(e,t,n){var r=this._getPageInfo(t)[e];r!=null&&n.dispatchAction({type:`legendScroll`,scrollDataIndex:r,legendId:t.id})},t.prototype._updatePageInfoView=function(e,t){var n=this._controllerGroup;W([`pagePrev`,`pageNext`],function(r){var i=t[r+`DataIndex`]!=null,a=n.childOfName(r);a&&(a.setStyle(`fill`,i?e.get(`pageIconColor`,!0):e.get(`pageIconInactiveColor`,!0)),a.cursor=i?`pointer`:`default`)});var r=n.childOfName(`pageText`),i=e.get(`pageFormatter`),a=t.pageIndex,o=a==null?0:a+1,s=t.pageCount;r&&i&&r.setStyle(`text`,J(i)?i.replace(`{current}`,o==null?``:o+``).replace(`{total}`,s==null?``:s+``):i({current:o,total:s}))},t.prototype._getPageInfo=function(e){var t=e.get(`scrollDataIndex`,!0),n=this.getContentGroup(),r=this._containerGroup.__rectSize,i=e.getOrient().index,a=VJ[i],o=HJ[i],s=this._findTargetItemIndex(t),c=n.children(),l=c[s],u=c.length,d=+!!u,f={contentPosition:[n.x,n.y],pageCount:d,pageIndex:d-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!l)return f;var p=v(l);f.contentPosition[i]=-p.s;for(var m=s+1,h=p,g=p,_=null;m<=u;++m)_=v(c[m]),(!_&&g.e>h.s+r||_&&!y(_,h.s))&&(h=g.i>h.i?g:_,h&&(f.pageNextDataIndex??=h.i,++f.pageCount)),g=_;for(var m=s-1,h=p,g=p,_=null;m>=-1;--m)_=v(c[m]),(!_||!y(g,_.s))&&h.i=t&&e.s<=t+r}},t.prototype._findTargetItemIndex=function(e){if(!this._showController)return 0;var t,n=this.getContentGroup(),r;return n.eachChild(function(n,i){var a=n.__legendDataIndex;r==null&&a!=null&&(r=i),a===e&&(t=i)}),t??r},t.type=`legend.scroll`,t}(EJ);function WJ(e){e.registerAction(`legendScroll`,`legendscroll`,function(e,t){var n=e.scrollDataIndex;n!=null&&t.eachComponent({mainType:`legend`,subType:`scroll`,query:e},function(e){e.setScrollDataIndex(n)})})}function GJ(e){VR(LJ),e.registerComponentModel(RJ),e.registerComponentView(UJ),WJ(e)}function KJ(e){VR(LJ),VR(GJ)}var qJ=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.type=`dataZoom.inside`,t.defaultOption=IC(pG.defaultOption,{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),t}(pG),JJ=Ig();function YJ(e,t,n){JJ(e).coordSysRecordMap.each(function(e){var r=e.dataZoomInfoMap.get(t.uid);r&&(r.getRange=n)})}function XJ(e,t){for(var n=JJ(e).coordSysRecordMap,r=n.keys(),i=0;ia[i+r]&&(r=n),o&&=t.get(`preventDefaultMouseMove`,!0),s=Y(t.get(`cursorGrab`,!0),s),c=Y(t.get(`cursorGrabbing`,!0),c)}),{controlType:r,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!o,api:n,zInfo:{component:t.model},triggerInfo:{roamTrigger:null,isInSelf:t.containsPoint},cursorGrab:s,cursorGrabbing:c}}}function nY(e){e.registerUpdateLifecycle(`coordsys:aftercreate`,function(e,t){var n=JJ(t),r=n.coordSysRecordMap||=X();r.each(function(e){e.dataZoomInfoMap=null}),e.eachComponent({mainType:`dataZoom`,subType:`inside`},function(e){W(sG(e).infoList,function(n){var i=n.model.uid,a=r.get(i)||r.set(i,QJ(t,n.model));(a.dataZoomInfoMap||=X()).set(e.uid,{dzReferCoordSysInfo:n,model:e,getRange:null})})}),r.each(function(e){var n=e.controller,i,a=e.dataZoomInfoMap;if(a){var o=a.keys()[0];o!=null&&(i=a.get(o))}if(!i){ZJ(r,e);return}var s=tY(a,e,t);n.enable(s.controlType,s.opt),_M(e,`dispatchAction`,i.model.get(`throttle`,!0),`fixRate`)})})}var rY=function(e){H(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.type=`dataZoom.inside`,t}return t.prototype.render=function(t,n,r){if(e.prototype.render.apply(this,arguments),t.noTarget()){this._clear();return}this.range=t.getPercentRange(),YJ(r,t,{pan:K(iY.pan,this),zoom:K(iY.zoom,this),scrollMove:K(iY.scrollMove,this)})},t.prototype.dispose=function(){this._clear(),e.prototype.dispose.apply(this,arguments)},t.prototype._clear=function(){XJ(this.api,this.dataZoomModel),this.range=null},t.type=`dataZoom.inside`,t}(gG),iY={zoom:function(e,t,n,r){var i=this.range,a=i.slice(),o=e.axisModels[0];if(o){var s=oY[t](null,[r.originX,r.originY],o,n,e),c=(s.signal>0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(a[1]-a[0])+a[0],l=Math.max(1/r.scale,0);a[0]=(a[0]-c)*l+c,a[1]=(a[1]-c)*l+c;var u=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();if(lV(0,a,[0,100],0,u.minSpan,u.maxSpan),this.range=a,i[0]!==a[0]||i[1]!==a[1])return a}},pan:aY(function(e,t,n,r,i,a){var o=oY[r]([a.oldX,a.oldY],[a.newX,a.newY],t,i,n);return o.signal*(e[1]-e[0])*o.pixel/o.pixelLength}),scrollMove:aY(function(e,t,n,r,i,a){return oY[r]([0,0],[a.scrollDelta,a.scrollDelta],t,i,n).signal*(e[1]-e[0])*a.scrollDelta})};function aY(e){return function(t,n,r,i){var a=this.range,o=a.slice(),s=t.axisModels[0];if(s&&(lV(e(o,s,t,n,r,i),o,[0,100],`all`),this.range=o,a[0]!==o[0]||a[1]!==o[1]))return o}}var oY={grid:function(e,t,n,r,i){var a=n.axis,o={},s=i.model.coordinateSystem.getRect();return e||=[0,0],a.dim===`x`?(o.pixel=t[0]-e[0],o.pixelLength=s.width,o.pixelStart=s.x,o.signal=a.inverse?1:-1):(o.pixel=t[1]-e[1],o.pixelLength=s.height,o.pixelStart=s.y,o.signal=a.inverse?-1:1),o},polar:function(e,t,n,r,i){var a=n.axis,o={},s=i.model.coordinateSystem,c=s.getRadiusAxis().getExtent(),l=s.getAngleAxis().getExtent();return e=e?s.pointToCoord(e):[0,0],t=s.pointToCoord(t),n.mainType===`radiusAxis`?(o.pixel=t[0]-e[0],o.pixelLength=c[1]-c[0],o.pixelStart=c[0],o.signal=a.inverse?1:-1):(o.pixel=t[1]-e[1],o.pixelLength=l[1]-l[0],o.pixelStart=l[0],o.signal=a.inverse?-1:1),o},singleAxis:function(e,t,n,r,i){var a=n.axis,o=i.model.coordinateSystem.getRect(),s={};return e||=[0,0],a.orient===`horizontal`?(s.pixel=t[0]-e[0],s.pixelLength=o.width,s.pixelStart=o.x,s.signal=a.inverse?1:-1):(s.pixel=t[1]-e[1],s.pixelLength=o.height,s.pixelStart=o.y,s.signal=a.inverse?-1:1),s}};function sY(e){SG(e),e.registerComponentModel(qJ),e.registerComponentView(rY),nY(e)}var cY=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.type=`dataZoom.slider`,t.layoutMode=`box`,t.defaultOption=IC(pG.defaultOption,{show:!0,right:`ph`,top:`ph`,width:`ph`,height:`ph`,left:null,bottom:null,borderColor:Q.color.accent10,borderRadius:0,backgroundColor:Q.color.transparent,dataBackground:{lineStyle:{color:Q.color.accent30,width:.5},areaStyle:{color:Q.color.accent20,opacity:.2}},selectedDataBackground:{lineStyle:{color:Q.color.accent40,width:.5},areaStyle:{color:Q.color.accent20,opacity:.3}},fillerColor:`rgba(135,175,274,0.2)`,handleIcon:`path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z`,handleSize:`100%`,handleStyle:{color:Q.color.neutral00,borderColor:Q.color.accent20},moveHandleSize:7,moveHandleIcon:`path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z`,moveHandleStyle:{color:Q.color.accent40,opacity:.5},showDetail:!0,showDataShadow:`auto`,realtime:!0,zoomLock:!1,textStyle:{color:Q.color.tertiary},brushSelect:!0,brushStyle:{color:Q.color.accent30,opacity:.3},emphasis:{handleLabel:{show:!0},handleStyle:{borderColor:Q.color.accent40},moveHandleStyle:{opacity:.8}},defaultLocationEdgeGap:15}),t}(pG),lY=eh,uY=1,dY=30,fY=7,pY=`horizontal`,mY=`vertical`,hY=5,gY=[`line`,`bar`,`candlestick`,`scatter`],_Y={easing:`cubicOut`,duration:100,delay:0},vY=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n._displayables={},n}return t.prototype.init=function(e,t){this.api=t,this._onBrush=K(this._onBrush,this),this._onBrushEnd=K(this._onBrushEnd,this)},t.prototype.render=function(t,n,r,i){if(e.prototype.render.apply(this,arguments),_M(this,`_dispatchZoomAction`,t.get(`throttle`),`fixRate`),this._orient=t.getOrient(),t.get(`show`)===!1){this.group.removeAll();return}if(t.noTarget()){this._clear(),this.group.removeAll();return}(!i||i.type!==`dataZoom`||i.from!==this.uid)&&this._buildView(),this._updateView()},t.prototype.dispose=function(){this._clear(),e.prototype.dispose.apply(this,arguments)},t.prototype._clear=function(){vM(this,`_dispatchZoomAction`);var e=this.api.getZr();e.off(`mousemove`,this._onBrush),e.off(`mouseup`,this._onBrushEnd)},t.prototype._buildView=function(){var e=this.group;e.removeAll(),this._brushing=!1,this._displayables.brushRect=null,this._resetLocation(),this._resetInterval();var t=this._displayables.sliderGroup=new $v;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),e.add(t),this._positionGroup()},t.prototype._resetLocation=function(){var e=this.dataZoomModel,t=this.api,n=e.get(`brushSelect`)?fY:0,r=pT(e,t).refContainer,i=this._findCoordRect(),a=e.get(`defaultLocationEdgeGap`,!0)||0,o=this._orient===pY?{right:r.width-i.x-i.width,top:r.height-dY-a-n,width:i.width,height:dY}:{right:a,top:i.y,width:dY,height:i.height},s=_T(e.option);W([`right`,`top`,`width`,`height`],function(e){s[e]===`ph`&&(s[e]=o[e])});var c=dT(s,r);this._location={x:c.x,y:c.y},this._size=[c.width,c.height],this._orient===mY&&this._size.reverse()},t.prototype._positionGroup=function(){var e=this.group,t=this._location,n=this._orient,r=this.dataZoomModel.getFirstTargetAxisModel(),i=r&&r.get(`inverse`),a=this._displayables.sliderGroup,o=(this._dataShadowInfo||{}).otherAxisInverse;a.attr(n===pY&&!i?{scaleY:o?1:-1,scaleX:1}:n===pY&&i?{scaleY:o?1:-1,scaleX:-1}:n===mY&&!i?{scaleY:o?-1:1,scaleX:1,rotation:Math.PI/2}:{scaleY:o?-1:1,scaleX:-1,rotation:Math.PI/2});var s=e.getBoundingRect([a]),c=isNaN(s.x)?0:s.x,l=isNaN(s.y)?0:s.y;e.x=t.x-c,e.y=t.y-l,e.markRedraw()},t.prototype._getViewExtent=function(){return[0,this._size[0]]},t.prototype._renderBackground=function(){var e=this.dataZoomModel,t=this._size,n=this._displayables.sliderGroup,r=e.get(`brushSelect`);n.add(new lY({silent:!0,shape:{x:0,y:0,width:t[0],height:t[1]},style:{fill:e.get(`backgroundColor`)},z2:-40}));var i=new lY({shape:{x:0,y:0,width:t[0],height:t[1]},style:{fill:`transparent`},z2:0,onclick:K(this._onClickPanel,this)}),a=this.api.getZr();r?(i.on(`mousedown`,this._onBrushStart,this),i.cursor=`crosshair`,a.on(`mousemove`,this._onBrush),a.on(`mouseup`,this._onBrushEnd)):(a.off(`mousemove`,this._onBrush),a.off(`mouseup`,this._onBrushEnd)),n.add(i)},t.prototype._renderDataShadow=function(){var e=this._dataShadowInfo=this._prepareDataShadowInfo();if(this._displayables.dataShadowSegs=[],!e)return;var t=this._size,n=this._shadowSize||[],r=e.series,i=r.getRawData(),a=r.getShadowDim&&r.getShadowDim(),o=a&&i.getDimensionInfo(a)?r.getShadowDim():e.otherDim;if(o==null)return;var s=this._shadowPolygonPts,c=this._shadowPolylinePts;if(i!==this._shadowData||o!==this._shadowDim||t[0]!==n[0]||t[1]!==n[1]){var l=i.getDataExtent(e.thisDim),u=i.getDataExtent(o),d=(u[1]-u[0])*.3;u=[u[0]-d,u[1]+d];var f=[0,t[1]],p=[0,t[0]],m=[[t[0],0],[0,0]],h=[],g=p[1]/Math.max(1,i.count()-1),_=t[0]/(l[1]-l[0]),v=e.thisAxis.type===`time`,y=-g,b=Math.round(i.count()/t[0]),x;i.each([e.thisDim,o],function(e,t,n){if(b>0&&n%b){v||(y+=g);return}y=v?(+e-l[0])*_:y+g;var r=t==null||isNaN(t)||t===``,i=r?0:Nh(t,u,f,!0);r&&!x&&n?(m.push([m[m.length-1][0],0]),h.push([h[h.length-1][0],0])):!r&&x&&(m.push([y,0]),h.push([y,0])),r||(m.push([y,i]),h.push([y,i])),x=r}),s=this._shadowPolygonPts=m,c=this._shadowPolylinePts=h}this._shadowData=i,this._shadowDim=o,this._shadowSize=[t[0],t[1]];var S=this.dataZoomModel;function C(e){var t=S.getModel(e?`selectedDataBackground`:`dataBackground`),n=new $v,r=new Ey({shape:{points:s},segmentIgnoreThreshold:1,style:t.getModel(`areaStyle`).getAreaStyle(),silent:!0,z2:-20}),i=new Oy({shape:{points:c},segmentIgnoreThreshold:1,style:t.getModel(`lineStyle`).getLineStyle(),silent:!0,z2:-19});return n.add(r),n.add(i),n}for(var w=0;w<3;w++){var T=C(w===1);this._displayables.sliderGroup.add(T),this._displayables.dataShadowSegs.push(T)}},t.prototype._prepareDataShadowInfo=function(){var e=this.dataZoomModel,t=e.get(`showDataShadow`);if(t!==!1){var n,r=this.ecModel;return e.eachTargetAxis(function(i,a){W(e.getAxisProxy(i,a).getTargetSeriesModels(),function(e){if(!n&&!(t!==!0&&kc(gY,e.get(`type`))<0)){var o=r.getComponent(aG(i),a).axis,s=bY(i),c,l=e.coordinateSystem;s!=null&&l.getOtherAxis&&(c=l.getOtherAxis(o).inverse),s=e.getData().mapDimension(s),n={thisAxis:o,series:e,thisDim:e.getData().mapDimension(i),otherDim:s,otherAxisInverse:c}}},this)},this),n}},t.prototype._renderHandle=function(){var e=this.group,t=this._displayables,n=t.handles=[null,null],r=t.handleLabels=[null,null],i=this._displayables.sliderGroup,a=this._size,o=this.dataZoomModel,s=this.api,c=o.get(`borderRadius`)||0,l=o.get(`brushSelect`),u=t.filler=new lY({silent:l,style:{fill:o.get(`fillerColor`)},textConfig:{position:`inside`}});i.add(u),i.add(new lY({silent:!0,subPixelOptimize:!0,shape:{x:0,y:0,width:a[0],height:a[1],r:c},style:{stroke:o.get(`dataBackgroundColor`)||o.get(`borderColor`),lineWidth:uY,fill:Q.color.transparent}})),W([0,1],function(t){var a=o.get(`handleIcon`);!FE[a]&&a.indexOf(`path://`)<0&&a.indexOf(`image://`)<0&&(a=`path://`+a);var s=RE(a,-1,0,2,2,null,!0);s.attr({cursor:xY(this._orient),draggable:!0,drift:K(this._onDragMove,this,t),ondragend:K(this._onDragEnd,this),onmouseover:K(this._onOverDataInfoTriggerArea,this,!0),onmouseout:K(this._onOverDataInfoTriggerArea,this,!1),z2:5});var c=s.getBoundingRect(),l=o.get(`handleSize`);this._handleHeight=Ph(l,this._size[1]),this._handleWidth=c.width/c.height*this._handleHeight,s.setStyle(o.getModel(`handleStyle`).getItemStyle()),s.style.strokeNoScale=!0,s.rectHover=!0,s.ensureState(`emphasis`).style=o.getModel([`emphasis`,`handleStyle`]).getItemStyle(),vv(s);var u=o.get(`handleColor`);u!=null&&(s.style.fill=u),i.add(n[t]=s);var d=o.getModel(`textStyle`),f=(o.get(`handleLabel`)||{}).show||!1;e.add(r[t]=new ah({silent:!0,invisible:!f,style:cx(d,{x:0,y:0,text:``,verticalAlign:`middle`,align:`center`,fill:d.getTextColor(),font:d.getFont()}),z2:10}))},this);var d=u;if(l){var f=Ph(o.get(`moveHandleSize`),a[1]),p=t.moveHandle=new eh({style:o.getModel(`moveHandleStyle`).getItemStyle(),silent:!0,shape:{r:[0,0,2,2],y:a[1]-.5,height:f}}),m=f*.8,h=t.moveHandleIcon=RE(o.get(`moveHandleIcon`),-m/2,-m/2,m,m,Q.color.neutral00,!0);h.silent=!0,h.y=a[1]+f/2-.5,p.ensureState(`emphasis`).style=o.getModel([`emphasis`,`moveHandleStyle`]).getItemStyle();var g=Math.min(a[1]/2,Math.max(f,10));d=t.moveZone=new eh({invisible:!0,shape:{y:a[1]-g,height:f+g}}),d.on(`mouseover`,function(){s.enterEmphasis(p)}).on(`mouseout`,function(){s.leaveEmphasis(p)}),i.add(p),i.add(h),i.add(d)}d.attr({draggable:!0,cursor:`grab`,drift:K(this._onActualMoveZoneDrift,this),ondragstart:K(this._onActualMoveZoneDragStart,this),ondragend:K(this._onActualMoveZoneDragEnd,this),onmouseover:K(this._onOverDataInfoTriggerArea,this,!0),onmouseout:K(this._onOverDataInfoTriggerArea,this,!1)})},t.prototype._resetInterval=function(){var e=this._range=this.dataZoomModel.getPercentRange(),t=this._getViewExtent();this._handleEnds=[Nh(e[0],[0,100],t,!0),Nh(e[1],[0,100],t,!0)]},t.prototype._updateInterval=function(e,t){var n=this.dataZoomModel,r=this._handleEnds,i=this._getViewExtent(),a=n.findRepresentativeAxisProxy().getMinMaxSpan(),o=[0,100];lV(t,r,i,n.get(`zoomLock`)?`all`:e,a.minSpan==null?null:Nh(a.minSpan,o,i,!0),a.maxSpan==null?null:Nh(a.maxSpan,o,i,!0));var s=this._range,c=this._range=zh([Nh(r[0],i,o,!0),Nh(r[1],i,o,!0)]);return!s||s[0]!==c[0]||s[1]!==c[1]},t.prototype._updateView=function(e){var t=this._displayables,n=this._handleEnds,r=zh(n.slice()),i=this._size;W([0,1],function(e){var r=t.handles[e],a=this._handleHeight;r.attr({scaleX:a/2,scaleY:a/2,x:n[e]+(e?-1:1),y:i[1]/2-a/2})},this),t.filler.setShape({x:r[0],y:0,width:r[1]-r[0],height:i[1]});var a={x:r[0],width:r[1]-r[0]};t.moveHandle&&(t.moveHandle.setShape(a),t.moveZone.setShape(a),t.moveZone.getBoundingRect(),t.moveHandleIcon&&t.moveHandleIcon.attr(`x`,a.x+a.width/2));for(var o=t.dataShadowSegs,s=[0,r[0],r[1],i[0]],c=0;ct[0]||n[1]<0||n[1]>t[1])){var r=this._handleEnds,i=(r[0]+r[1])/2,a=this._updateInterval(`all`,n[0]-i);this._updateView(),a&&this._dispatchZoomAction(!1)}},t.prototype._onBrushStart=function(e){var t=e.offsetX,n=e.offsetY;this._brushStart=new fu(t,n),this._brushing=!0,this._brushStartTime=+new Date},t.prototype._onBrushEnd=function(e){if(this._brushing){var t=this._displayables.brushRect;if(this._brushing=!1,t){t.attr(`ignore`,!0);var n=t.shape;if(!(+new Date-this._brushStartTime<200&&Math.abs(n.width)<5)){var r=this._getViewExtent(),i=[0,100],a=this._handleEnds=[n.x,n.x+n.width],o=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();lV(0,a,r,0,o.minSpan==null?null:Nh(o.minSpan,i,r,!0),o.maxSpan==null?null:Nh(o.maxSpan,i,r,!0)),this._range=zh([Nh(a[0],r,i,!0),Nh(a[1],r,i,!0)]),this._updateView(),this._dispatchZoomAction(!1)}}}},t.prototype._onBrush=function(e){this._brushing&&(fN(e.event),this._updateBrushRect(e.offsetX,e.offsetY))},t.prototype._updateBrushRect=function(e,t){var n=this._displayables,r=this.dataZoomModel,i=n.brushRect;i||(i=n.brushRect=new lY({silent:!0,style:r.getModel(`brushStyle`).getItemStyle()}),n.sliderGroup.add(i)),i.attr(`ignore`,!1);var a=this._brushStart,o=this._displayables.sliderGroup,s=o.transformCoordToLocal(e,t),c=o.transformCoordToLocal(a.x,a.y),l=this._size;s[0]=Math.max(Math.min(l[0],s[0]),0),i.setShape({x:c[0],y:0,width:s[0]-c[0],height:l[1]})},t.prototype._dispatchZoomAction=function(e){var t=this._range;this.api.dispatchAction({type:`dataZoom`,from:this.uid,dataZoomId:this.dataZoomModel.id,animation:e?_Y:null,start:t[0],end:t[1]})},t.prototype._findCoordRect=function(){var e,t=sG(this.dataZoomModel).infoList;if(!e&&t.length){var n=t[0].model.coordinateSystem;e=n.getRect&&n.getRect()}if(!e){var r=this.api.getWidth(),i=this.api.getHeight();e={x:r*.2,y:i*.2,width:r*.6,height:i*.6}}return e},t.type=`dataZoom.slider`,t}(gG);function yY(e,t,n,r){var i=e.get(`labelFormatter`),a=e.get(`labelPrecision`);(a==null||a===`auto`)&&(a=n.valuePrecision);var o=n.value[t],s=o==null||isNaN(o)?``:$D(r)||ZD(r)?r.getLabel({value:Math.round(o)}):isFinite(a)?Rh(o,a,!0):o+``;return zc(i)?i(o,s):J(i)?i.replace(`{value}`,s):s}function bY(e){return{x:`y`,y:`x`,radius:`angle`,angle:`radius`}[e]}function xY(e){return e===`vertical`?`ns-resize`:`ew-resize`}function SY(e){e.registerComponentModel(cY),e.registerComponentView(vY),SG(e)}function CY(e){VR(sY),VR(SY)}var wY={get:function(e,t,n){var r=wc((TY[e]||{})[t]);return n&&q(r)?r[r.length-1]:r}},TY={color:{active:[`#006edd`,`#e0ffff`],inactive:[Q.color.transparent]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:[`circle`,`roundRect`,`diamond`],inactive:[`none`]},symbolSize:{active:[10,50],inactive:[0,0]}},EY=MB.mapVisual,DY=MB.eachVisual,OY=q,kY=W,AY=zh,jY=Nh,MY=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n.stateList=[`inRange`,`outOfRange`],n.replacableOptionKeys=[`inRange`,`outOfRange`,`target`,`controller`,`color`],n.layoutMode={type:`box`,ignoreSize:!0},n.dataBound=[-1/0,1/0],n.targetVisuals={},n.controllerVisuals={},n}return t.prototype.init=function(e,t,n){this.mergeDefaultAndTheme(e,n)},t.prototype.optionUpdated=function(e,t){var n=this.option;!t&&dq(n,e,this.replacableOptionKeys),this.textStyleModel=this.getModel(`textStyle`),this.resetItemSize(),this.completeVisualOption()},t.prototype.resetVisual=function(e){var t=this.stateList;e=K(e,this),this.controllerVisuals=uq(this.option.controller,t,e),this.targetVisuals=uq(this.option.target,t,e)},t.prototype.getItemSymbol=function(){return null},t.prototype.getTargetSeriesIndices=function(){var e=this,t=this.option.seriesTargets;if(t){var n=[];return kY(t,function(t){if(t.seriesIndex!=null)n.push(t.seriesIndex);else if(t.seriesId!=null){var r;e.ecModel.eachSeries(function(e){e.id===t.seriesId&&(r=e)}),r&&n.push(r.componentIndex)}}),n}var r=this.option.seriesId,i=this.option.seriesIndex;i==null&&r==null&&(i=`all`);var a=Hg(this.ecModel,`series`,{index:i,id:r},{useDefault:!1,enableAll:!0,enableNone:!1}).models;return G(a,function(e){return e.componentIndex})},t.prototype.eachTargetSeries=function(e,t){W(this.getTargetSeriesIndices(),function(n){var r=this.ecModel.getSeriesByIndex(n);r&&e.call(t,r)},this)},t.prototype.isTargetSeries=function(e){var t=!1;return this.eachTargetSeries(function(n){n===e&&(t=!0)}),t},t.prototype.formatValueText=function(e,t,n){var r=this.option,i=r.precision,a=this.dataBound,o=r.formatter,s;n||=[`<`,`>`],q(e)&&(e=e.slice(),s=!0);var c=t?e:s?[l(e[0]),l(e[1])]:l(e);return J(o)?o.replace(`{value}`,s?c[0]:c).replace(`{value2}`,s?c[1]:c):zc(o)?s?o(e[0],e[1]):o(e):s?e[0]===a[0]?n[0]+` `+c[1]:e[1]===a[1]?n[1]+` `+c[0]:c[0]+` - `+c[1]:c;function l(e){return e===a[0]?`min`:e===a[1]?`max`:(+e).toFixed(Math.min(i,20))}},t.prototype.resetExtent=function(){var e=this.option,t=AY([e.min,e.max]);this._dataExtent=t},t.prototype.getDimension=function(e){var t=this,n=this.option.seriesTargets;if(n){var r=Fc(n,function(n){return n.seriesIndex!=null&&n.seriesIndex===e||n.seriesId!=null&&n.seriesId===t.ecModel.getSeriesByIndex(e).id});if(r)return r.dimension}return this.option.dimension},t.prototype.getDataDimensionIndex=function(e){var t=e.hostModel.seriesIndex,n=this.getDimension(t);if(n!=null)return e.getDimensionIndex(n);for(var r=e.dimensions,i=r.length-1;i>=0;i--){var a=r[i],o=e.getDimensionInfo(a);if(!o.isCalculationCoord)return o.storeDimIndex}},t.prototype.getExtent=function(){return this._dataExtent.slice()},t.prototype.completeVisualOption=function(){var e=this.ecModel,t=this.option,n={inRange:t.inRange,outOfRange:t.outOfRange},r=t.target||={},i=t.controller||={};Tc(r,n),Tc(i,n);var a=this.isCategory();o.call(this,r),o.call(this,i),s.call(this,r,`inRange`,`outOfRange`),c.call(this,i);function o(n){OY(t.color)&&!n.inRange&&(n.inRange={color:t.color.slice().reverse()}),n.inRange=n.inRange||{color:e.get(`gradientColor`)}}function s(e,t,n){var r=e[t],i=e[n];r&&!i&&(i=e[n]={},kY(r,function(e,t){if(MB.isValidType(t)){var n=wY.get(t,`inactive`,a);n!=null&&(i[t]=n,t===`color`&&!i.hasOwnProperty(`opacity`)&&!i.hasOwnProperty(`colorAlpha`)&&(i.opacity=[0,0]))}}))}function c(e){var t=(e.inRange||{}).symbol||(e.outOfRange||{}).symbol,n=(e.inRange||{}).symbolSize||(e.outOfRange||{}).symbolSize,r=this.get(`inactiveColor`),i=this.getItemSymbol()||`roundRect`;kY(this.stateList,function(o){var s=this.itemSize,c=e[o];c||=e[o]={color:a?r:[r]},c.symbol??(c.symbol=t&&wc(t)||(a?i:[i])),c.symbolSize??(c.symbolSize=n&&wc(n)||(a?s[0]:[s[0],s[0]])),c.symbol=EY(c.symbol,function(e){return e===`none`?i:e});var l=c.symbolSize;if(l!=null){var u=-1/0;DY(l,function(e){e>u&&(u=e)}),c.symbolSize=EY(l,function(e){return jY(e,[0,u],[0,s[0]],!0)})}},this)}},t.prototype.resetItemSize=function(){this.itemSize=[parseFloat(this.get(`itemWidth`)),parseFloat(this.get(`itemHeight`))]},t.prototype.isCategory=function(){return!!this.option.categories},t.prototype.setSelected=function(e){},t.prototype.getSelected=function(){return null},t.prototype.getValueState=function(e){return null},t.prototype.getVisualMeta=function(e){return null},t.type=`visualMap`,t.dependencies=[`series`],t.defaultOption={show:!0,z:4,min:0,max:200,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:`vertical`,backgroundColor:Q.color.transparent,borderColor:Q.color.borderTint,contentColor:Q.color.theme[0],inactiveColor:Q.color.disabled,borderWidth:0,padding:Q.size.m,textGap:10,precision:0,textStyle:{color:Q.color.secondary}},t}(bT),NY=[20,140],PY=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.optionUpdated=function(t,n){e.prototype.optionUpdated.apply(this,arguments),this.resetExtent(),this.resetVisual(function(e){e.mappingMethod=`linear`,e.dataExtent=this.getExtent()}),this._resetRange()},t.prototype.resetItemSize=function(){e.prototype.resetItemSize.apply(this,arguments);var t=this.itemSize;(t[0]==null||isNaN(t[0]))&&(t[0]=NY[0]),(t[1]==null||isNaN(t[1]))&&(t[1]=NY[1])},t.prototype._resetRange=function(){var e=this.getExtent(),t=this.option.range;!t||t.auto?(e.auto=1,this.option.range=e):q(t)&&(t[0]>t[1]&&t.reverse(),t[0]=Math.max(t[0],e[0]),t[1]=Math.min(t[1],e[1]))},t.prototype.completeVisualOption=function(){e.prototype.completeVisualOption.apply(this,arguments),W(this.stateList,function(e){var t=this.option.controller[e].symbolSize;t&&t[0]!==t[1]&&(t[0]=t[1]/3)},this)},t.prototype.setSelected=function(e){this.option.range=e.slice(),this._resetRange()},t.prototype.getSelected=function(){var e=this.getExtent(),t=zh((this.get(`range`)||[]).slice());return t[0]>e[1]&&(t[0]=e[1]),t[1]>e[1]&&(t[1]=e[1]),t[0]=n[1]||e<=t[1])?`inRange`:`outOfRange`},t.prototype.findTargetDataIndices=function(e){var t=[];return this.eachTargetSeries(function(n){var r=[],i=n.getData();i.each(this.getDataDimensionIndex(i),function(t,n){e[0]<=t&&t<=e[1]&&r.push(n)},this),t.push({seriesId:n.id,dataIndex:r})},this),t},t.prototype.getVisualMeta=function(e){var t=FY(this,`outOfRange`,this.getExtent()),n=FY(this,`inRange`,this.option.range.slice()),r=[];function i(t,n){r.push({value:t,color:e(t,n)})}for(var a=0,o=0,s=n.length,c=t.length;oe[1])break;r.push({color:this.getControllerVisual(o,`color`,t),offset:a/n})}return r.push({color:this.getControllerVisual(e[1],`color`,t),offset:1}),r},t.prototype._createBarPoints=function(e,t){var n=this.visualMapModel.itemSize;return[[n[0]-t[0],e[0]],[n[0],e[0]],[n[0],e[1]],[n[0]-t[1],e[1]]]},t.prototype._createBarGroup=function(e){var t=this._orient,n=this.visualMapModel.get(`inverse`);return new $v(t===`horizontal`&&!n?{scaleX:e===`bottom`?1:-1,rotation:Math.PI/2}:t===`horizontal`&&n?{scaleX:e===`bottom`?-1:1,rotation:-Math.PI/2}:t===`vertical`&&!n?{scaleX:e===`left`?1:-1,scaleY:-1}:{scaleX:e===`left`?1:-1})},t.prototype._updateHandle=function(e,t){if(this._useHandle){var n=this._shapes,r=this.visualMapModel,i=n.handleThumbs,a=n.handleLabels,o=r.itemSize,s=r.getExtent(),c=this._applyTransform(`left`,n.mainGroup);VY([0,1],function(l){var u=i[l];u.setStyle(`fill`,t.handlesColor[l]),u.y=e[l];var d=BY(e[l],[0,o[1]],s,!0),f=this.getControllerVisual(d,`symbolSize`);u.scaleX=u.scaleY=f/o[0],u.x=o[0]-f/2;var p=Db(n.handleLabelPoints[l],Eb(u,this.group));if(this._orient===`horizontal`){var m=c===`left`||c===`top`?(o[0]-f)/2:(o[0]-f)/-2;p[1]+=m}a[l].setStyle({x:p[0],y:p[1],text:r.formatValueText(this._dataInterval[l]),verticalAlign:`middle`,align:this._orient===`vertical`?this._applyTransform(`left`,n.mainGroup):`center`})},this)}},t.prototype._showIndicator=function(e,t,n,r){var i=this.visualMapModel,a=i.getExtent(),o=i.itemSize,s=[0,o[1]],c=this._shapes,l=c.indicator;if(l){l.attr(`invisible`,!1);var u=this.getControllerVisual(e,`color`,{convertOpacityToAlpha:!0}),d=this.getControllerVisual(e,`symbolSize`),f=BY(e,a,s,!0),p=o[0]-d/2,m={x:l.x,y:l.y};l.y=f,l.x=p;var h=Db(c.indicatorLabelPoint,Eb(l,this.group)),g=c.indicatorLabel;g.attr(`invisible`,!1);var _=this._applyTransform(`left`,c.mainGroup),v=this._orient===`horizontal`;g.setStyle({text:(n||``)+i.formatValueText(t),verticalAlign:v?_:`middle`,align:v?`center`:_});var y={x:p,y:f,style:{fill:u}},b={style:{x:h[0],y:h[1]}};if(i.ecModel.isAnimationEnabled()&&!this._firstShowIndicator){var x={duration:100,easing:`cubicInOut`,additive:!0};l.x=m.x,l.y=m.y,l.animateTo(y,x),g.animateTo(b,x)}else l.attr(y),g.attr(b);this._firstShowIndicator=!1;var S=this._shapes.handleLabels;if(S)for(var C=0;Ci[1]&&(l[1]=1/0),t&&(l[0]===-1/0?this._showIndicator(c,l[1],`< `,o):l[1]===1/0?this._showIndicator(c,l[0],`> `,o):this._showIndicator(c,c,`≈ `,o));var u=this._hoverLinkDataIndices,d=[];(t||YY(n))&&(d=this._hoverLinkDataIndices=n.findTargetDataIndices(l));var f=Pg(u,d);this._dispatchHighDown(`downplay`,zY(f[0],n)),this._dispatchHighDown(`highlight`,zY(f[1],n))}},t.prototype._hoverLinkFromSeriesMouseOver=function(e){var t;if(tI(e.target,function(e){var n=d_(e);if(n.dataIndex!=null)return t=n,!0},!0),t){var n=this.ecModel.getSeriesByIndex(t.seriesIndex),r=this.visualMapModel;if(r.isTargetSeries(n)){var i=n.getData(t.dataType),a=i.getStore().get(r.getDataDimensionIndex(i),t.dataIndex);isNaN(a)||this._showIndicator(a,a)}}},t.prototype._hideIndicator=function(){var e=this._shapes;e.indicator&&e.indicator.attr(`invisible`,!0),e.indicatorLabel&&e.indicatorLabel.attr(`invisible`,!0);var t=this._shapes.handleLabels;if(t)for(var n=0;n=0&&(i.dimension=a,r.push(i))}}),e.getData().setVisual(`visualMeta`,r)}}];function eX(e,t,n,r){for(var i=t.targetVisuals[r],a=MB.prepareVisualTypes(i),o={color:$F(e.getData(),`color`)},s=0,c=a.length;s0:e.splitNumber>0)||e.calculable)?`continuous`:`piecewise`}),e.registerAction(ZY,QY),W($Y,function(t){e.registerVisual(e.PRIORITY.VISUAL.COMPONENT,t)}),e.registerPreprocessor(nX))}function oX(e){e.registerComponentModel(PY),e.registerComponentView(KY),aX(e)}var sX=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n._pieceList=[],n}return t.prototype.optionUpdated=function(t,n){e.prototype.optionUpdated.apply(this,arguments),this.resetExtent();var r=this._mode=this._determineMode();this._pieceList=[],cX[this._mode].call(this,this._pieceList),this._resetSelected(t,n);var i=this.option.categories;this.resetVisual(function(e,t){r===`categories`?(e.mappingMethod=`category`,e.categories=wc(i)):(e.dataExtent=this.getExtent(),e.mappingMethod=`piecewise`,e.pieceList=G(this._pieceList,function(e){return e=wc(e),t!==`inRange`&&(e.visual=null),e}))})},t.prototype.completeVisualOption=function(){var t=this.option,n={},r=MB.listVisualTypes(),i=this.isCategory();W(t.pieces,function(e){W(r,function(t){e.hasOwnProperty(t)&&(n[t]=1)})}),W(n,function(e,n){var r=!1;W(this.stateList,function(e){r=r||a(t,e,n)||a(t.target,e,n)},this),!r&&W(this.stateList,function(e){(t[e]||(t[e]={}))[n]=wY.get(n,e===`inRange`?`active`:`inactive`,i)})},this);function a(e,t,n){return e&&e[t]&&e[t].hasOwnProperty(n)}e.prototype.completeVisualOption.apply(this,arguments)},t.prototype._resetSelected=function(e,t){var n=this.option,r=this._pieceList,i=(t?n:e).selected||{};if(n.selected=i,W(r,function(e,t){var n=this.getSelectedMapKey(e);i.hasOwnProperty(n)||(i[n]=!0)},this),n.selectedMode===`single`){var a=!1;W(r,function(e,t){var n=this.getSelectedMapKey(e);i[n]&&(a?i[n]=!1:a=!0)},this)}},t.prototype.getItemSymbol=function(){return this.get(`itemSymbol`)},t.prototype.getSelectedMapKey=function(e){return this._mode===`categories`?e.value+``:e.index+``},t.prototype.getPieceList=function(){return this._pieceList},t.prototype._determineMode=function(){var e=this.option;return e.pieces&&e.pieces.length>0?`pieces`:this.option.categories?`categories`:`splitNumber`},t.prototype.setSelected=function(e){this.option.selected=wc(e)},t.prototype.getValueState=function(e){var t=MB.findPieceIndex(e,this._pieceList);return t==null?`outOfRange`:this.option.selected[this.getSelectedMapKey(this._pieceList[t])]?`inRange`:`outOfRange`},t.prototype.findTargetDataIndices=function(e){var t=[],n=this._pieceList;return this.eachTargetSeries(function(r){var i=[],a=r.getData();a.each(this.getDataDimensionIndex(a),function(t,r){MB.findPieceIndex(t,n)===e&&i.push(r)},this),t.push({seriesId:r.id,dataIndex:i})},this),t},t.prototype.getRepresentValue=function(e){var t;if(this.isCategory())t=e.value;else if(e.value!=null)t=e.value;else{var n=e.interval||[];t=n[0]===-1/0&&n[1]===1/0?0:(n[0]+n[1])/2}return t},t.prototype.getVisualMeta=function(e){if(this.isCategory())return;var t=[],n=[``,``],r=this;function i(i,a){var o=r.getRepresentValue({interval:i});a||=r.getValueState(o);var s=e(o,a);i[0]===-1/0?n[0]=s:i[1]===1/0?n[1]=s:t.push({value:i[0],color:s},{value:i[1],color:s})}var a=this._pieceList.slice();if(!a.length)a.push({interval:[-1/0,1/0]});else{var o=a[0].interval[0];o!==-1/0&&a.unshift({interval:[-1/0,o]}),o=a[a.length-1].interval[1],o!==1/0&&a.push({interval:[o,1/0]})}var s=-1/0;return W(a,function(e){var t=e.interval;t&&(t[0]>s&&i([s,t[0]],`outOfRange`),i(t.slice()),s=t[1])},this),{stops:t,outerColors:n}},t.type=`visualMap.piecewise`,t.defaultOption=IC(MY.defaultOption,{selected:null,minOpen:!1,maxOpen:!1,align:`auto`,itemWidth:20,itemHeight:14,itemSymbol:`roundRect`,pieces:null,categories:null,splitNumber:5,selectedMode:`multiple`,itemGap:10,hoverLink:!0}),t}(MY),cX={splitNumber:function(e){var t=this.option,n=Math.min(t.precision,20),r=this.getExtent(),i=t.splitNumber;i=Math.max(parseInt(i,10),1),t.splitNumber=i;for(var a=(r[1]-r[0])/i;+a.toFixed(n)!==a&&n<5;)n++;t.precision=n,a=+a.toFixed(n),t.minOpen&&e.push({interval:[-1/0,r[0]],close:[0,0]});for(var o=0,s=r[0];o`,`≥`][t[0]]];e.text=e.text||this.formatValueText(e.value==null?e.interval:e.value,!1,n)},this)}};function lX(e,t){var n=e.inverse;(e.orient===`vertical`?!n:n)&&t.reverse()}var uX=function(e){H(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.type=t.type,n}return t.prototype.doRender=function(){var e=this.group;e.removeAll();var t=this.visualMapModel,n=t.get(`textGap`),r=t.textStyleModel,i=this._getItemAlign(),a=t.itemSize,o=this._getViewData(),s=o.endsText,c=Yc(t.get(`showLabel`,!0),!s),l=!t.get(`selectedMode`);s&&this._renderEndsText(e,s[0],a,c,i),W(o.viewPieceList,function(o){var s=o.piece,u=new $v;u.onclick=K(this._onItemClick,this,s),this._enableHoverLink(u,o.indexInModelPieceList);var d=t.getRepresentValue(s);if(this._createItemSymbol(u,d,[0,0,a[0],a[1]],l),c){var f=this.visualMapModel.getValueState(d),p=r.get(`align`)||i;u.add(new ah({style:cx(r,{x:p===`right`?-n:a[0]+n,y:a[1]/2,text:s.text,verticalAlign:r.get(`verticalAlign`)||`middle`,align:p,opacity:Y(r.get(`opacity`),f===`outOfRange`?.5:1)}),silent:l}))}e.add(u)},this),s&&this._renderEndsText(e,s[1],a,c,i),lT(t.get(`orient`),e,t.get(`itemGap`)),this.renderBackground(e),this.positionGroup(e)},t.prototype._enableHoverLink=function(e,t){var n=this;e.on(`mouseover`,function(){return r(`highlight`)}).on(`mouseout`,function(){return r(`downplay`)});var r=function(e){var r=n.visualMapModel;r.option.hoverLink&&n.api.dispatchAction({type:e,batch:zY(r.findTargetDataIndices(t),r)})}},t.prototype._getItemAlign=function(){var e=this.visualMapModel,t=e.option;if(t.orient===`vertical`)return RY(e,this.api,e.itemSize);var n=t.align;return(!n||n===`auto`)&&(n=`left`),n},t.prototype._renderEndsText=function(e,t,n,r,i){if(t){var a=new $v,o=this.visualMapModel.textStyleModel;a.add(new ah({style:cx(o,{x:r?i===`right`?n[0]:0:n[0]/2,y:n[1]/2,verticalAlign:`middle`,align:r?i:`center`,text:t})})),e.add(a)}},t.prototype._getViewData=function(){var e=this.visualMapModel,t=G(e.getPieceList(),function(e,t){return{piece:e,indexInModelPieceList:t}}),n=e.get(`text`),r=e.get(`orient`),i=e.get(`inverse`);return(r===`horizontal`?i:!i)?t.reverse():n&&=n.slice().reverse(),{viewPieceList:t,endsText:n}},t.prototype._createItemSymbol=function(e,t,n,r){var i=RE(this.getControllerVisual(t,`symbol`),n[0],n[1],n[2],n[3],this.getControllerVisual(t,`color`));i.silent=r,e.add(i)},t.prototype._onItemClick=function(e){var t=this.visualMapModel,n=t.option,r=n.selectedMode;if(r){var i=wc(n.selected),a=t.getSelectedMapKey(e);r===`single`||r===!0?(i[a]=!0,W(i,function(e,t){i[t]=t===a})):i[a]=!i[a],this.api.dispatchAction({type:`selectDataRange`,from:this.uid,visualMapId:this.visualMapModel.id,selected:i})}},t.type=`visualMap.piecewise`,t}(IY);function dX(e){e.registerComponentModel(sX),e.registerComponentView(uX),aX(e)}function fX(e){VR(oX),VR(dX)}var pX={label:{enabled:!0},decal:{show:!1}},mX=Ig(),hX=Ig(),gX=u_(_X);function _X(e,t){var n=e.getModel(`aria`);if(!n.get(`enabled`))return;var r=hX(e).scope||(hX(e).scope={}),i=wc(pX);Tc(i.label,e.getLocaleModel().get(`aria`),!1),Tc(n.option,i,!1),a(),o();function a(){if(n.getModel(`decal`).get(`show`)){var t=X();e.eachSeries(function(e){e.isColorBySeries()||(mX(e).scope=t.get(e.type)||t.set(e.type,{}))}),e.eachSeries(function(t){if(zc(t.enableAriaDecal)){t.enableAriaDecal();return}var n=t.getData();if(t.isColorBySeries()){var i=TT(t.ecModel,t.name,r,e.getSeriesCount()),a=n.getVisual(`decal`);n.setVisual(`decal`,u(a,i))}else{var o=t.getRawData(),s={},c=mX(t).scope;n.each(function(e){var t=n.getRawIndex(e);s[t]=e});var l=o.count();o.each(function(e){var r=s[e],i=o.getName(e)||e+``,a=TT(t.ecModel,i,c,l),d=n.getItemVisual(r,`decal`);n.setItemVisual(r,`decal`,u(d,a))})}function u(e,t){var n=e?U(U({},t),e):t;return n.dirty=!0,n}})}}function o(){var r=t.getZr().dom;if(r){var i=e.getLocaleModel().get(`aria`),a=n.getModel(`label`);if(a.option=Oc(a.option,i),a.get(`enabled`)){if(r.setAttribute(`role`,`img`),a.get(`description`)){r.setAttribute(`aria-label`,a.get(`description`));return}var o=e.getSeriesCount(),u=a.get([`data`,`maxCount`])||10,d=a.get([`series`,`maxCount`])||10,f=Math.min(o,d),p;if(!(o<1)){var m=c();p=m?s(a.get([`general`,`withTitle`]),{title:m}):a.get([`general`,`withoutTitle`]);var h=[],g=o>1?a.get([`series`,`multiple`,`prefix`]):a.get([`series`,`single`,`prefix`]);p+=s(g,{seriesCount:o}),e.eachSeries(function(e,t){if(t1?a.get([`series`,`multiple`,r]):a.get([`series`,`single`,r]),n=s(n,{seriesId:e.seriesIndex,seriesName:e.get(`name`),seriesType:l(e.subType)});var i=e.getData();if(i.count()>u){var c=a.get([`data`,`partialData`]);n+=s(c,{displayCnt:u})}else n+=a.get([`data`,`allData`]);for(var d=a.get([`data`,`separator`,`middle`]),p=a.get([`data`,`separator`,`end`]),m=a.get([`data`,`excludeDimensionId`]),g=[],_=0;_=a}}}for(var l=SX(this),u=l.startIdx;u=0)&&(a=!0)}),a||i.__dirty){var o=n._opts.useDirtyRect&&!xX(i)?i.createRepaintRects(e,t,n._width,n._height):null,s=n._i.layerStack[0],c=!0;if(i.__dirty){c=!1,i.__dirty=!1;var l=i.zlevel===s.zl&&i.zlevel2===s.zl2?n._backgroundColor:null;i.clear(!1,l,o)}FX(i,function(t){var a=n._paintPerCursor(i,t,e,o,c);r&&=a})}},VX),ml.wxa&&LX(this._i,function(e){e&&e.ctx&&e.ctx.draw&&e.ctx.draw()}),r},e.prototype._paintPerCursor=function(e,t,n,r,i){var a=e.ctx;if(r){if(!r.length)t.drawIdx=t.endIdx;else for(var o=this.dpr,s=0;s=t.endIdx},e.prototype._paintPerCursorInRect=function(e,t,n,r,i){for(var a={inHover:!1,allClipped:!1,prevEl:null,viewWidth:this._width,viewHeight:this._height,beforeBrushParam:{contentRetained:i}},o=e.ctx,s=xX(e),c=s&&cc.getTime(),l=t.drawIdx,u=t.notClearIdx,d=u>=0?Math.min(u,l):l;d15){d++;break}}}qI(o,a),t.drawIdx=Math.max(d,l)},e.prototype.getLayer=function(e,t){return this._ensureLayer(e,0,t)},e.prototype._ensureLayer=function(e,t,n){t||=0;var r=this._singleCanvas;r&&!this._needsManuallyCompositing&&(e=TX,t=0);var i=IX(this._i,e)[t];return i||(i=jX(`zr_`+e+`.`+t,this,e,t),this._layerConfig[e]&&Tc(i,this._layerConfig[e],!0),(n||r&&e!==TX)&&(i.virtual=!0),this._insertLayer(i,e,t,!1),i.initContext()),i},e.prototype.insertLayer=function(e,t){this._insertLayer(t,e,0,!1)},e.prototype._insertLayer=function(e,t,n,r){var i=this._i,a=i.layers,o=i.layerStack,s=this._domRoot,c=null;if(!(a[t]&&a[t][n])&&kX(e)){for(var l=o.length,u=0;u0&&(c=IX(i,o[u-1].zl)[o[u-1].zl2]),o.splice(u,0,{zl:t,zl2:n}),IX(i,t)[n]=e,!r&&!e.virtual){if(c){var d=c.dom;d.nextSibling?s.insertBefore(e.dom,d.nextSibling):s.appendChild(e.dom)}else s.firstChild?s.insertBefore(e.dom,s.firstChild):s.appendChild(e.dom)}e.painter||=this}},e.prototype.eachLayer=function(e,t){return LX(this._i,function(n,r){e.call(t,n,r)})},e.prototype.eachBuiltinLayer=function(e,t){return LX(this._i,function(n,r){e.call(t,n,r)},RX)},e.prototype.eachOtherLayer=function(e,t){return LX(this._i,function(n,r){e.call(t,n,r)},zX)},e.prototype.getLayers=function(){var e={};return LX(this._i,function(t,n,r){e[t.id]=t}),e},e.prototype._updateLayerStatus=function(e,t){var n=this;if(n._singleCanvas)for(var r=1;r=0;a--){var o=i.get(r[a]);if(!o.used)t.__dirty=!0,i.removeKey(r[a]),r.splice(a,1);else{var s=o.endIdxNew;(xX(t)?s=0;r--){var i=t[r];if(i.zl===e){var a=n[e][i.zl2];if(a.__builtin__)continue;if(t.splice(r,1),n[e][i.zl2]=void 0,!a.virtual){var o=a.dom.parentNode;o&&o.removeChild(a.dom)}}}},e.prototype.resize=function(e,t){if(this._domRoot.style){var n=this._domRoot;n.style.display=`none`;var r=this._opts,i=this.root;e!=null&&(r.width=e),t!=null&&(r.height=t),e=vI(i,0,r),t=vI(i,1,r),n.style.display=``,(this._width!==e||t!==this._height)&&(n.style.width=e+`px`,n.style.height=t+`px`,LX(this._i,function(n){n.resize(e,t)}),this.refresh({paintAll:!0})),this._width=e,this._height=t}else{if(e==null||t==null)return;this._width=e,this._height=t,this._ensureLayer(TX).resize(e,t)}return this},e.prototype.clearLayer=function(e){W(this._i.layers[e],function(e){e&&!e.__builtin__&&e.clear()})},e.prototype.dispose=function(){this.root.innerHTML=``,this.root=this.storage=this._domRoot=this._i=null},e.prototype.getRenderedCanvas=function(e){if(e||={},this._singleCanvas&&!this._compositeManually)return this._i.layers[TX][0].dom;var t=new CX(`image`,this,e.pixelRatio||this.dpr);t.initContext(),t.clear(!1,e.backgroundColor||this._backgroundColor);var n=t.ctx;if(e.pixelRatio<=this.dpr){this.refresh();var r=t.dom.width,i=t.dom.height;LX(this._i,function(e){e.__builtin__?n.drawImage(e.dom,0,0,r,i):e.renderToCanvas&&(n.save(),e.renderToCanvas(n),n.restore())})}else{for(var a={inHover:!1,viewWidth:this._width,viewHeight:this._height,beforeBrushParam:{}},o=this.storage.getDisplayList(!0),s=0,c=o.length;svoid 0);(0,B.useRef)(null);let h=(0,B.useRef)(void 0),g=(0,B.useRef)(!1);return g.current=!!t,m.current=()=>{h.current===void 0&&(h.current=document.createElement(`canvas`).getContext(`2d`));let n=h.current,r={measureText:n?(e,t)=>(n.font=t,n.measureText(e).width):void 0,width:s.current?.clientWidth??0,height:s.current?.clientHeight??0},i=t&&r.width>0&&r.height>0?t(r):e,a=i.series??[],o=new Set(a.map(e=>e.name)),u=Object.fromEntries(Object.entries(l.current).filter(([e])=>o.has(e)));l.current=u;let f=i.legend;c.current?.setOption({...i,...f?{legend:{...f,selected:{...f.selected,...u}}}:{},...d.current?{toolbox:{show:!1},brush:{xAxisIndex:0,brushMode:`single`,removeOnClick:!0}}:{},aria:{...i.aria,enabled:!0,description:p}},{notMerge:!0});let m=c.current?.getModel?.().getComponent(`grid`)?.coordinateSystem?.getRect().height;if(m&&i.yAxis){let e=Math.max(2,Math.floor(m/32)),t=Array.isArray(i.yAxis)?i.yAxis:[i.yAxis];if(t.some(t=>(t.type===`value`||t.type===`log`)&&t.splitNumber!==e)){let n=t.map(t=>t.type===`value`||t.type===`log`?{...t,splitNumber:e}:t);i={...i,yAxis:Array.isArray(i.yAxis)?n:n[0]},c.current?.setOption({yAxis:i.yAxis})}}d.current&&c.current?.dispatchAction({type:`takeGlobalCursor`,key:`brush`,brushOption:{brushType:`lineX`,brushMode:`single`}})},(0,B.useEffect)(()=>{if(!s.current)return;let e=yR(s.current,void 0,{renderer:`canvas`});c.current=e,e.on(`click`,e=>u.current?.(e)),e.on(`brushEnd`,t=>{let n=t.areas?.[0]?.coordRange;n?.length===2&&Number.isFinite(n[0])&&Number.isFinite(n[1])&&n[0]{l.current={...e.selected}});let t=new ResizeObserver(()=>{e.resize(),g.current&&m.current()});return t.observe(s.current),()=>{t.disconnect(),e.dispose(),c.current=null}},[]),(0,B.useEffect)(()=>{m.current()},[e,t,p,f]),(0,B.useEffect)(()=>{let e=c.current;if(e&&o)return e.group=o,WX.set(o,(WX.get(o)??0)+1),bR(o),()=>{e.group=``;let t=(WX.get(o)??1)-1;if(t>0){WX.set(o,t);return}WX.delete(o),xR(o)}},[o]),(0,V.jsx)(`div`,{ref:s,role:`img`,"aria-label":p,style:{height:n,flex:`1 1 auto`,minHeight:0,width:`100%`,minWidth:0,cursor:i?`pointer`:void 0}})}function KX({panel:e,title:t=e.title,result:n,dark:r,height:i,onSelect:a,onPoint:o}){let s=(0,B.useMemo)(()=>t=>Qs(e,n.frame,Ws(r),t),[e,n.frame,r]),c=(0,B.useMemo)(()=>s({width:500,height:i}),[s,i]);return(0,V.jsx)(GX,{option:c,optionForSize:s,height:i,label:`${t}: bar chart`,onClick:o||a?t=>{let r=rs(e,n,t);if(!r)return;o?.(r);let i=Object.values(r.dimensions)[0];i!==void 0&&a?.(i)}:void 0})}function qX({panel:e,title:t=e.title,result:n,dark:r,height:i}){let a=Ps(e,n.frame),o=n.frame.columns.find(e=>e.role===`measure`)?.unit??e.unit,s=e.better??n.better,c=(0,B.useMemo)(()=>t=>$s({...e,better:s},a,Ws(r),o,t),[e,s,a,r,o]),l=(0,B.useMemo)(()=>c({width:270,height:i}),[c,i]);return(0,V.jsx)(GX,{option:l,optionForSize:c,height:i,label:`${t}: gauge`})}function JX(e,t){return!t.previous||(e.reduce??`window`)===`window`&&!t.previous.totals?null:Ps(e,t.previous)}function YX({panel:e,result:t,dark:r=!1,compare:i=!0,range:a}){let o=t.frame,s=Ps(e,o),c=o.columns.find(e=>e.role===`measure`)?.unit??e.unit,l=e.better??t.better??Ls(e.thresholds),u=Rs(s,e.thresholds,l)??(o.health?.health===`healthy`?`ok`:o.health?.health===`degraded`?`warn`:o.health?.health===`unhealthy`?`bad`:null),d=JX(e,t),f=Fs(o),p=e.thresholds?.find(e=>e.status===u&&s!==null&&(l===`higher`?s<=e.value:s>=e.value))?.label,m=Ws(r);return(0,V.jsxs)(n,{h:`100%`,style:{display:`flex`,flexDirection:`column`,justifyContent:`space-between`,gap:4},children:[(0,V.jsxs)(h,{justify:`space-between`,align:`flex-start`,wrap:`nowrap`,gap:`xs`,children:[(0,V.jsx)(w,{"data-stat-value":!0,fz:32,fw:700,lh:1.1,lts:`-0.02em`,ff:`var(--mantine-font-family-monospace)`,children:ps(c,s)}),u&&(0,V.jsxs)(w,{"data-stat-status":!0,fz:12,fw:500,style:{borderRadius:999,padding:`1px 8px`,whiteSpace:`nowrap`,background:`${m.status[u]}22`,color:m.text},children:[(0,V.jsx)(`span`,{style:{color:m.status[u]},children:u===`bad`?`◆`:u===`warn`?`■`:`●`}),` `,p??(u===`bad`?`Unhealthy`:u===`warn`?`Degraded`:`Healthy`)]})]}),i&&d!==null&&s!==null&&(0,V.jsx)(XX,{dark:r,value:s,previous:d,better:l,unit:c,period:ZX(a,t)}),(0,V.jsx)(QX,{points:f,area:!0,dark:r,height:40})]})}function XX({value:e,previous:t,better:n,unit:r,period:i,dark:a}){let o=r===`percent`,s=o?e-t:t===0?e===0?0:1/0:(e-t)/Math.abs(t)*100,c=s>=0,l=s===0||!n?null:c?n===`higher`:n===`lower`,u=Number.isFinite(s)?o?`${c?`+`:`−`}${Math.abs(s).toFixed(1)} pts`:`${c?`+`:`−`}${Math.abs(s).toFixed(0)}%`:`new`;return(0,V.jsxs)(h,{gap:6,children:[(0,V.jsxs)(w,{"data-stat-delta":!0,fz:12,fw:600,style:{color:l===null?`var(--mantine-color-dimmed)`:Us(l?`ok`:`bad`,a)},children:[c?`▲`:`▼`,` `,u]}),(0,V.jsxs)(w,{fz:12,c:`dimmed`,children:[`vs previous `,i]})]})}function ZX(e,t){let n=t.from_ms!==void 0&&t.to_ms!==void 0?t.to_ms-t.from_ms:t.shift_ms,r=/^(\d+)(s|m|h|d|w)$/.exec(e??``),i=r?Number(r[1])*{s:1e3,m:6e4,h:36e5,d:864e5,w:6048e5}[r[2]]:n;if(!i)return`period`;let a=i>=6048e5?`week`:i>=864e5?`day`:i>=36e5?`hour`:i>=6e4?`minute`:`second`,o=i/{week:6048e5,day:864e5,hour:36e5,minute:6e4,second:1e3}[a];return o===1?a:`${Number(o.toFixed(2))} ${a}s`}function QX({points:e,area:t=!1,dark:n=!1,height:r=32}){let i=e.filter(e=>e!==null&&Number.isFinite(e));if(i.length<2)return null;let a=Math.min(...i),o=Math.max(...i),s=r,c=t=>t/(e.length-1)*200,l=e=>s-2-(e-a)/(o-a||1)*(s-4),u=e.map((t,n)=>t===null||!Number.isFinite(t)?``:`${n===0||e[n-1]===null||!Number.isFinite(e[n-1])?`M`:`L`}${c(n).toFixed(1)},${l(t).toFixed(1)}`).join(``),d=[];return e.forEach((t,n)=>{if(t!==null&&Number.isFinite(t)){if(!n||e[n-1]===null||!Number.isFinite(e[n-1]))d.push({start:n,end:n,path:`M${c(n).toFixed(1)},${l(t).toFixed(1)}`});else{let e=d.at(-1);e.end=n,e.path+=`L${c(n).toFixed(1)},${l(t).toFixed(1)}`}}}),(0,V.jsxs)(`svg`,{viewBox:`0 0 200 ${s}`,preserveAspectRatio:`none`,width:`100%`,height:s,role:`img`,"aria-label":`Value over this panel's time range`,children:[t&&d.filter(e=>e.end>e.start).map(e=>(0,V.jsx)(`path`,{"data-sparkline-area":!0,d:`${e.path}L${c(e.end)},${s}L${c(e.start)},${s}Z`,fill:Ts(0,n),opacity:.18},e.start)),(0,V.jsx)(`path`,{"data-sparkline-line":!0,d:u,fill:`none`,stroke:t?Ts(0,n):`var(--mantine-primary-color-filled)`,strokeWidth:1.5,vectorEffect:`non-scaling-stroke`})]})}function $X(e){return eZ(e)||typeof e==`function`||tZ(e)}function eZ(e){return typeof e==`function`&&(()=>{let t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function tZ(e){return typeof e==`object`&&typeof e.$$typeof==`symbol`&&[`react.memo`,`react.forward_ref`].includes(e.$$typeof.description)}function nZ(e,t){return e==null?null:$X(e)?B.createElement(e,t):e}function rZ(e){if(`cell`in e&&e.cell){let t=e.cell,n=t.column.columnDef,r=t,i=n;return r.getIsAggregated?.()?nZ(i.aggregatedCell??n.cell,t.getContext()):r.getIsPlaceholder?.()?null:nZ(n.cell,t.getContext())}return`header`in e&&e.header?nZ(e.header.column.columnDef.header,e.header.getContext()):`footer`in e&&e.footer?nZ(e.footer.column.columnDef.footer,e.footer.getContext()):null}function iZ(e){let t=ue(e.source,e.selector,{compare:xt});return typeof e.children==`function`?e.children(t):e.children}function aZ(e){let t=e;return Object.defineProperty(e,"state",{get(){return e.get()}}),`set`in e&&(t.setState=e.set.bind(e)),t}function oZ(e){let{createAtom:t,batch:n}=e,r=t(0);return{createOptionsStore:!1,wrapExternalAtoms:!1,addSubscription:()=>{throw Error(`Feature not supported in current reactivity implementation`)},unmount:()=>{throw Error(`Feature not supported in current reactivity implementation`)},schedule:e.schedule??(e=>queueMicrotask(e)),batch:n,untrack:e=>e(),createReadonlyAtom:(e,n)=>{let i=n?.compare??Object.is,a=!1,o,s=()=>{let t=e();return(!a||!i(o,t))&&(o=t,a=!0),o},c=t(()=>(r.get(),s()),{compare:i});return{get:s,subscribe:c.subscribe.bind(c)}},createWritableAtom:(e,n)=>t(e,{compare:n?.compare}),commit:()=>{r.set(e=>e+1)}}}function sZ(e,t=Object.is){let n=!1,r;return{get:e.get,markCommitted:e=>{r=e,n=!0},subscribe:i=>e.subscribe(e=>{(!n||!t(r,e))&&i(e)})}}function cZ(){return oZ({createAtom:Ae,batch:ke})}function lZ(e,t){return typeof e==`function`?e(t):e}function uZ(e){if(Array.isArray(e))return e.map(uZ);if(e&&typeof e==`object`){let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)return e;let n=t===null?fZ():{},r=Object.keys(e);for(let t=0;t{(t.options.atoms?.[e]??t.baseAtoms[e]).set(e=>lZ(n,e))}}function hZ(e){if(typeof e!=`object`||!e)return!1;if(Array.isArray(e))return!0;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function gZ(e){return Reflect.ownKeys(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}var _Z=3;function vZ(e,t){return yZ(e,t,_Z)}function yZ(e,t,n){if(Object.is(e,t))return!0;if(n<=0||!hZ(e)||!hZ(t)||(Array.isArray(e)||Array.isArray(t))&&(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length))return!1;let r=gZ(e),i=gZ(t);if(r.length!==i.length)return!1;let a=e,o=t;for(let e=0;e{let t=lZ(n,e);return r(e,t)?e:t})}function xZ(e){return e instanceof Function}function SZ(e,t){let n=[],r=e=>{e.forEach(e=>{n.push(e);let i=t(e);i.length&&r(i)})};return r(e),n}var CZ=({fn:e,memoDeps:t,onAfterCompare:n,onAfterUpdate:r,onBeforeCompare:i,onBeforeUpdate:a})=>{let o=[],s;return c=>{i?.();let l=t?.(c),u=!l||l.length!==o?.length;if(!u&&l){for(let e=0;e{if(!t){t=!0;return}e()}}function TZ({feature:e,fnName:t,objectId:n,onAfterUpdate:r,table:i,...a}){let o=()=>{if(!r)return;let{schedule:e,untrack:t}=i._reactivity;e(()=>t(()=>r()))},s={onAfterUpdate:()=>{o()}};return CZ({...a,...s})}function EZ(e,t=`_`){let[n,r]=e.split(t);return{fnKey:r,fnName:`${n}.${r}`,parentName:n}}function DZ(e,t,n){for(let[r,{fn:i,memoDeps:a}]of Object.entries(n)){let{fnKey:n,fnName:o}=EZ(r);t[n]=a?TZ({memoDeps:a,fn:i,fnName:o,table:t,feature:e}):i}}function OZ(e,t,n,r){for(let[i,{fn:a,memoDeps:o}]of Object.entries(r)){let{fnKey:r,fnName:s}=EZ(i);if(o){let i=`_memo_${r}`;t[r]=function(...t){if(!this[i]){let t=this;this[i]=TZ({memoDeps:e=>o(t,e),fn:(...e)=>a(t,...e),fnName:s,objectId:t.id,table:n,feature:e})}return this[i](...t)}}else t[r]=function(...e){return a(this,...e)}}}function kZ(e,t,n,...r){return e[t]?.(...r)??n(e,...r)}function AZ(e){return e.row.getValue(e.column.id)}function jZ(e){return e.getValue()??e.table.options.renderFallbackValue}function MZ(e){return{table:e.table,column:e.column,row:e.row,cell:e,getValue:()=>e.getValue(),renderValue:()=>e.renderValue()}}var NZ={assignCellPrototype:(e,t)=>{OZ(`coreCellsFeature`,e,t,{cell_getValue:{fn:e=>AZ(e)},cell_renderValue:{fn:e=>jZ(e)},cell_getContext:{fn:e=>MZ(e),memoDeps:e=>[e]}})}};function PZ(e){if(!e._headerPrototype){e._headerPrototype={table:e};let t=Object.values(e._features);for(let n=0;nkZ(e,`getIsVisible`,LZ)):(pZ(t,e.id)?t[e.id]:void 0)??!0}function RZ(e){return e.getAllLeafColumns().filter(e=>kZ(e,`getIsVisible`,LZ))}function zZ(e,t=1){let n=t;for(let r=0;r0&&UZ(s,t-1,n,r,i,a)}function WZ(e){for(let t=0;t{let n=t;for(let t=0;te[i.accessorKey]}if(!s)throw Error();let l=KZ(e),u=Object.create(l);u.accessorFn=c,u.columnDef=i,u.columns=[],u.depth=n,u.id=`${String(s)}`,u.parent=r;let d=e._columnInstanceInitFns;for(let e=0;e{let r=[];if(!t?.length)r=n;else{let e=new Map;for(let t=0;t!n.includes(e.id));if(r===`remove`)return i;let a=new Map;for(let e=0;ee.getFlatColumns())]}function ZZ(e){if(e.columns.length){let t=e.columns.flatMap(e=>e.getLeafColumns());return kZ(e.table,`getOrderColumns`,JZ)(t)}return[e]}function QZ(e){return{header:e=>{let t=e.header.column.columnDef;return t.accessorKey?t.accessorKey:t.accessorFn?t.id:null},cell:e=>e.renderValue()?.toString?.()??null,...Object.values(e._features).reduce((e,t)=>Object.assign(e,t.getDefaultColumnDef?.()),{}),...e.options.defaultColumn}}function $Z(e,t,n,r=0){let i=Array(t.length);for(let a=0;ae.getFlatColumns())}function nQ(e){let t=fZ(),n=e.getAllFlatColumns();for(let e=0;ee.getLeafColumns());return kZ(e,`getOrderColumns`,JZ)(t)}function iQ(e){let t=fZ(),n=e.getAllLeafColumns();for(let e=0;e{OZ(`coreColumnsFeature`,e,t,{column_getFlatColumns:{fn:e=>XZ(e),memoDeps:e=>[e.table.options.columns]},column_getLeafColumns:{fn:e=>ZZ(e),memoDeps:e=>[e.table.atoms.columnOrder?.get(),e.table.atoms.grouping?.get(),e.table.options.columns,e.table.options.groupedColumnMode]}})},constructTableAPIs:e=>{DZ(`coreColumnsFeature`,e,{table_getDefaultColumnDef:{fn:()=>QZ(e),memoDeps:()=>[e.options.defaultColumn]},table_getAllColumns:{fn:()=>eQ(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumns:{fn:()=>tQ(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumnsById:{fn:()=>nQ(e),memoDeps:()=>[e.options.columns]},table_getAllLeafColumns:{fn:()=>rQ(e),memoDeps:()=>[e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode]},table_getAllLeafColumnsById:{fn:()=>iQ(e),memoDeps:()=>[e.getAllLeafColumns()]},table_getColumn:{fn:t=>aQ(e,t)}})}};function sQ(e,t){for(let n=0;n!t.includes(e.id)&&!n.includes(e.id));return GZ(r,[...o,...c,...s],e)}function dQ(e){return[...e.getHeaderGroups()].reverse()}function fQ(e){let t=e.getHeaderGroups(),n=[];for(let e=0;e{OZ(`coreHeadersFeature`,e,t,{header_getLeafHeaders:{fn:e=>cQ(e),memoDeps:e=>[e.column.table.options.columns]},header_getContext:{fn:e=>lQ(e),memoDeps:e=>[e.column.table.options.columns]}})},constructTableAPIs:e=>{DZ(`coreHeadersFeature`,e,{table_getHeaderGroups:{fn:()=>uQ(e),memoDeps:()=>[e.options.columns,e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.atoms.columnPinning?.get(),e.atoms.columnVisibility?.get(),e.options.groupedColumnMode]},table_getFooterGroups:{fn:()=>dQ(e),memoDeps:()=>[e.getHeaderGroups()]},table_getFlatHeaders:{fn:()=>fQ(e),memoDeps:()=>[e.getHeaderGroups()]},table_getLeafHeaders:{fn:()=>pQ(e),memoDeps:()=>[e.getHeaderGroups()]}})}};function hQ(e){if(!e._rowPrototype){e._rowPrototype={table:e};let t=Object.values(e._features);for(let n=0;n{let s=hQ(e),c=Object.create(s);c._displayIndexCache=-1,c._uniqueValuesCache=fZ(),c._valuesCache=fZ(),c.depth=i,c.id=t,c.index=r,c.original=n,c.parentId=o,c.subRows=a??[];let l=e._rowInstanceInitFns;for(let e=0;e{let i=e.getValue(r),a=n.getValue(r),o=t.resolveDataValue;return o&&(i=o(i),a=o(a)),t.sort(i,a,e,n,r)},e);return t}var yQ=vQ({resolveDataValue:e=>CQ(e).toLowerCase(),sort:(e,t)=>wQ(e,t)});vQ({resolveDataValue:e=>CQ(e),sort:(e,t)=>wQ(e,t)}),vQ({resolveDataValue:e=>CQ(e).toLowerCase(),sort:(e,t)=>xQ(e,t)}),vQ({resolveDataValue:e=>CQ(e),sort:(e,t)=>xQ(e,t)}),vQ({resolveDataValue:e=>SQ(e),sort:(e,t)=>e>t?1:exQ(e,t)});function xQ(e,t){return e===t?0:e>t?1:-1}function SQ(e){return e instanceof Date?e.getTime():e}function CQ(e){return typeof e==`number`?isNaN(e)||e===1/0||e===-1/0?``:String(e):typeof e==`string`?e:``}function wQ(e,t){let n=0,r=0,i=e.length,a=t.length;for(;n=48&&e<=57}function EQ(e,t,n){let r=t+1;for(;ro)return 1;if(o>a)return-1}return o>s?1:s>o?-1:0}function OQ(e,t,n,r,i,a){let o=t;for(;oi?1:i>t?-1:0}let u=parseInt(e.slice(t,n),10),d=parseInt(r.slice(i,a),10);return u>d?1:d>u?-1:0}function kQ(e,t,n){let r=0;for(let i=t;iMQ(e))}function PQ(e){e.atoms.expanded&&(e.options.autoResetAll??e.options.autoResetExpanded??!e.options.manualExpanding)&&e._reactivity.schedule(()=>FQ(e))}function FQ(e,t){let n=e.initialState.expanded;bZ(e,`expanded`,t?fZ():n===!0||Object.assign(fZ(),uZ(n??{})))}var IQ=0;function LQ(e){if(e.options.autoResetAll??e.options.autoResetPageIndex??!e.options.manualPagination){if((e.atoms.pagination?.get()?.pageIndex??IQ)===IQ)return;BQ(e,!0)}}function RQ(e,t){bZ(e,`pagination`,t)}function zQ(e,t){RQ(e,n=>{let r=lZ(t,n.pageIndex),i=e.options.pageCount===void 0||e.options.pageCount===-1?2**53-1:e.options.pageCount-1;return r=Math.max(0,Math.min(r,i)),{...n,pageIndex:r}})}function BQ(e,t){zQ(e,t?IQ:e.initialState.pagination?.pageIndex??IQ)}function VQ(){return[]}function HQ(e,t){bZ(e,`sorting`,t)}function UQ(e,t){HQ(e,t?[]:uZ(e.initialState.sorting??[]))}function WQ(e){e.atoms.sorting&&(e.options.autoResetAll??e.options.autoResetSorting??!1)&&UQ(e)}function GQ(e){let t=e.table._rowModelFns.sortFns,n=e.table.getFilteredRowModel().flatRows.slice(0,10),r,i=!1;for(let t=0;t1)){r=`alphanumeric`;break}}if(!r&&i&&(r=`text`),r){let e=t?.[r];if(e||r===`alphanumeric`&&(e=t?.text),e)return e}return bQ}function KQ(e){let t=e.table.getFilteredRowModel().flatRows.slice(0,10);for(let n=0;n{let o=a.findIndex(t=>t.id===e.id),s=o===-1?void 0:a[o],c=[],l,u=i?t:r===`desc`,d=!!(a.length&&QQ(e)&&n);return l=d?s?`toggle`:`add`:s?`toggle`:`replace`,l===`toggle`&&(i||r||(l=`remove`)),l===`add`?(c=[...a,{id:e.id,desc:u}],c.splice(0,c.length-(e.table.options.maxMultiSortColCount??2**53-1))):c=l===`toggle`?d?a.map(t=>t.id===e.id?{...t,desc:u}:t):[{id:e.id,desc:u}]:l===`remove`?d?a.filter(t=>t.id!==e.id):[]:[{id:e.id,desc:u}],c})}function YQ(e){return e.columnDef.sortDescFirst??e.table.options.sortDescFirst??KQ(e)===`desc`?`desc`:`asc`}function XQ(e,t){let n=YQ(e),r=$Q(e);return r?r!==n&&(e.table.options.enableSortingRemoval??!0)&&(!t||(e.table.options.enableMultiRemove??!0))?!1:r===`desc`?`asc`:`desc`:n}function ZQ(e){return(e.columnDef.enableSorting??!0)&&(e.table.options.enableSorting??!0)&&!!e.accessorFn}function QQ(e){return e.columnDef.enableMultiSort??e.table.options.enableMultiSort??!!e.accessorFn}function $Q(e){let t=e.table.atoms.sorting?.get()?.find(t=>t.id===e.id);return t?t.desc?`desc`:`asc`:!1}function e$(e){return e.table.atoms.sorting?.get()?.findIndex(t=>t.id===e.id)??-1}function t$(e){HQ(e.table,t=>t.length?t.filter(t=>t.id!==e.id):[])}function n$(e){let t=ZQ(e);return n=>{t&&JQ(e,void 0,QQ(e)?e.table.options.isMultiSortEvent?.(n):!1)}}function r$(){return e=>TZ({feature:`coreRowModelsFeature`,table:e,fnName:`table.getCoreRowModel`,memoDeps:()=>[e.options.data],fn:()=>a$(e,e.options.data),onAfterUpdate:wZ(()=>{PQ(e),LQ(e),WQ(e),NQ(e)})})}function i$(e,t,n,r=0,i){let a=[];for(let o=0;o{DZ(`coreRowModelsFeature`,e,{table_getCoreRowModel:{fn:()=>o$(e)},table_getPreFilteredRowModel:{fn:()=>s$(e)},table_getFilteredRowModel:{fn:()=>c$(e)},table_getPreGroupedRowModel:{fn:()=>l$(e)},table_getGroupedRowModel:{fn:()=>u$(e)},table_getPreSortedRowModel:{fn:()=>d$(e)},table_getSortedRowModel:{fn:()=>f$(e)},table_getPreExpandedRowModel:{fn:()=>p$(e)},table_getExpandedRowModel:{fn:()=>m$(e)},table_getPrePaginatedRowModel:{fn:()=>h$(e)},table_getPaginatedRowModel:{fn:()=>g$(e)},table_getRowModel:{fn:()=>_$(e)}})}};function y$(e){if(!e._cellPrototype){e._cellPrototype={table:e};let t=Object.values(e._features);for(let n=0;n{t._displayIndexCache=e.length,e.push(t),t.subRows.length&&t.getIsExpanded?.()&&t.subRows.forEach(n)};return t.forEach(n),e}for(let e=0;ee.subRows)}function D$(e){let t=e.getCoreRowModel().flatRows,n=0;for(let e=0;e{OZ(`coreRowsFeature`,e,t,{row_getDisplayIndex:{fn:e=>x$(e)},row_getAllCellsByColumnId:{fn:e=>j$(e),memoDeps:e=>[e.getAllCells()]},row_getAllCells:{fn:e=>A$(e),memoDeps:e=>[e.table.getAllLeafColumns()]},row_getLeafRows:{fn:e=>E$(e),memoDeps:e=>[e.subRows]},row_getParentRow:{fn:e=>O$(e)},row_getParentRows:{fn:e=>k$(e)},row_getUniqueValues:{fn:(e,t)=>w$(e,t)},row_getValue:{fn:(e,t)=>C$(e,t)},row_renderValue:{fn:(e,t)=>T$(e,t)}})},constructTableAPIs:e=>{DZ(`coreRowsFeature`,e,{table_getRowsInDisplayOrder:{fn:()=>S$(e),memoDeps:()=>[e.getPrePaginatedRowModel().rows,e.options.paginateExpandedRows,e.options.paginateExpandedRows===!1?e.atoms.expanded?.get():void 0]},table_getRowId:{fn:(t,n,r)=>M$(t,e,n,r)},table_getRow:{fn:(t,n)=>N$(e,t,n)},table_getMaxSubRowDepth:{fn:()=>D$(e),memoDeps:()=>[e.getCoreRowModel()]}})}};function F$(e,t,n=(e,t)=>e===t){let r=t===void 0?e.options.state:t;e._reactivity.batch(()=>{if(r)for(let t in r){let i=e.baseAtoms[t];if(!i)continue;let a=r[t],o=a===void 0?e.initialState[t]:a;n(e._reactivity.untrack(()=>i.get()),o)||i.set(()=>o)}})}function I$(e,t,n=(e,t)=>e===t){e._reactivity.batch(()=>{F$(e,t,n),e._reactivity.commit?.()})}function L$(e){let t=uZ(e.initialState);e._reactivity.batch(()=>{let n=Object.keys(t);for(let r=0;rr):e.options=r,n?.syncExternalState!==!1&&I$(e,r.state??null)}var B$={coreCellsFeature:NZ,coreColumnsFeature:oQ,coreHeadersFeature:mQ,coreRowModelsFeature:v$,coreRowsFeature:P$,coreTablesFeature:{constructTableAPIs:e=>{DZ(`coreTablesFeature`,e,{table_reset:{fn:()=>L$(e)},table_setOptions:{fn:t=>z$(e,t)}})}}};function V$(e){return e}function H$(e,t={}){return Object.values(e).forEach(e=>{t=e.getInitialState?.(t)??t}),uZ(t)}function U$(e){let t=e.features.coreReactivityFeature,{aggregationFns:n,columnMeta:r,coreRowModel:i,expandedRowModel:a,facetedMinMaxValues:o,facetedRowModel:s,facetedUniqueValues:c,filterFns:l,filterMeta:u,filteredRowModel:d,groupedRowModel:f,paginatedRowModel:p,sortFns:m,sortedRowModel:h,tableMeta:g,..._}=e.features,v={_cellInstanceInitFns:[],_columnInstanceInitFns:[],_features:{...B$,..._},_headerGroupInstanceInitFns:[],_headerInstanceInitFns:[],_reactivity:t,_rowInstanceInitFns:[],_rowModelFns:{aggregationFns:n,filterFns:l,sortFns:m},_rowModels:{},atoms:{},baseAtoms:{}},y=Object.values(v._features),b={...y.reduce((e,t)=>Object.assign(e,t.getDefaultTableOptions?.(v)),{}),...e};if(t.wrapExternalAtoms&&b.atoms)for(let[e,n]of Object.entries(b.atoms)){let r=n,i=t.createWritableAtom(r.get(),{debugName:`externalAtom/${e}`});b.atoms[e]=i;let a=!1,o=r.subscribe(e=>{a||i.set(e)}),s=i.subscribe(e=>{a=!0,r.set(e),a=!1});t.addSubscription(o),t.addSubscription(s)}t.createOptionsStore?(v.optionsStore=t.createWritableAtom(b,{debugName:`table/optionsStore`}),Object.defineProperty(v,"options",{configurable:!0,enumerable:!0,get(){return v.optionsStore.get()},set(e){v.optionsStore.set(()=>e)}})):v.options=b,v.initialState=H$(v._features,v.options.initialState);let x=Object.keys(v.initialState);for(let e=0;e{let e=v.options,t=e.atoms?.[n],r=t?t.get():v.baseAtoms[n].get();if(t)return r;let i=e.state;if(i&&pZ(i,n)){let e=i[n];return e===void 0?v.initialState[n]:e}return r},{debugName:`table/atoms/${n}`})}F$(v),v.store=aZ(t.createReadonlyAtom(()=>{let e={};for(let t=0;te.shiftKey}},assignColumnPrototype(e,t){OZ(`rowSortingFeature`,e,t,{column_getAutoSortFn:{fn:e=>GQ(e)},column_getAutoSortDir:{fn:e=>KQ(e)},column_getSortFn:{fn:e=>qQ(e)},column_toggleSorting:{fn:(e,t,n)=>JQ(e,t,n)},column_getFirstSortDir:{fn:e=>YQ(e)},column_getNextSortingOrder:{fn:(e,t)=>XQ(e,t)},column_getCanSort:{fn:e=>ZQ(e)},column_getCanMultiSort:{fn:e=>QQ(e)},column_getIsSorted:{fn:e=>$Q(e)},column_getSortIndex:{fn:e=>e$(e)},column_clearSorting:{fn:e=>t$(e)},column_getToggleSortingHandler:{fn:e=>n$(e)}})},constructTableAPIs(e){DZ(`rowSortingFeature`,e,{table_setSorting:{fn:t=>HQ(e,t)},table_resetSorting:{fn:t=>UQ(e,t)}})}};function G$(){return e=>{let t=e;return TZ({feature:`rowSortingFeature`,table:t,fnName:`table.getSortedRowModel`,memoDeps:()=>[t.atoms.sorting?.get(),t.getPreSortedRowModel()],fn:()=>K$(t),onAfterUpdate:wZ(()=>LQ(t))})}}function K$(e){let t=e.getPreSortedRowModel(),n=e.atoms.sorting?.get();if(!t.rows.length||!n?.length)return t;let r=[],i=n.filter(t=>{let n=e.getColumn(t.id);return n?ZQ(n):!1});if(!i.length)return t;let a=[];for(let t=0;t{for(let n=0;n{let t=e.slice();t.sort(o);let n=!1;for(let i=0;i`u`?B.useEffect:B.useLayoutEffect;function J$(e,t){let[{table:n,rootSource:r}]=(0,B.useState)(()=>{let t=U$({...e,features:{coreReactivityFeature:cZ(),...e.features}});return t.Subscribe=(e=>iZ({...e,source:e.source??t.store})),t.FlexRender=rZ,{table:t,rootSource:sZ(t.store,xt)}}),i=n;z$(i,t=>({...t,...e}),{syncExternalState:!1});let a=i.options.state,o=r.get(),s=ue(r,t,{compare:xt});return q$(()=>{r.markCommitted(o),I$(i,a??null,xt)}),(0,B.useMemo)(()=>({...n,options:e,state:s}),[n,e,s])}function Y$(e,t,n,r,i,a){e.format===`status`&&e.unit&&typeof t==`string`&&t.trim()!==``&&Number.isFinite(Number(t))&&(t=Number(t));let o=t===null?`—`:String(t),s={kind:e.format,text:o};if([`unit`,`bar`,`status`,`sparkline`].includes(e.format)&&(s.text=typeof t==`number`?ps(e.unit,t):o),e.format===`bar`&&(s.fraction=typeof t==`number`&&n>0?Math.max(0,Math.min(1,t/n)):0),e.format===`status`&&typeof t==`number`&&(s.status=Rs(Number.isFinite(t)?t:null,r?.thresholds,r?.better??i)),e.format===`service_link`&&(s.variable=e.variable),e.format===`sparkline`&&a)return s.points=a.slice(0,240),s;if(e.format===`sparkline`)try{let e=JSON.parse(o);Array.isArray(e)?s.points=e.slice(0,240).map(e=>typeof e==`number`&&Number.isFinite(e)?e:null):s.unsupported=`Sparkline requires an array column`}catch{s.unsupported=`Sparkline requires an array column`}return s}function X$({text:e,template:t=!1,highlight:n=``}){let r=at(`light`)===`dark`,i=Ve[r?5:7],a=[1,3,5].map(e=>parseInt(i.slice(e,e+2),16)).join(`, `),o=[];if(n){let t=e.toLowerCase(),r=n.toLowerCase();for(let e=t.indexOf(r);e!==-1;e=t.indexOf(r,e+r.length))o.push(e)}let s=(t,i)=>{let s=[],c=t;for(let l of o){let o=Math.max(t,l),u=Math.min(i,l+n.length);o>=u||(s.push(e.slice(c,o),(0,V.jsx)(`mark`,{"data-highlight-match":!0,style:{background:`rgba(${a}, ${r?.22:.3})`,color:`inherit`,borderRadius:3,padding:`0 2px`},children:e.slice(o,u)},o)),c=u)}return s.push(e.slice(c,i)),s},c=[],l=0;if(t)for(let t of e.matchAll(/<\*>||||