{
  "version": 3,
  "sources": ["charts.js"],
  "sourcesContent": ["// ─────────────────────────────────────────────────────────────────────────\n// Dependency-free inline-SVG charts for the account dashboard.\n//\n// WHY hand-rolled, not a library: this repo has no build step (CLAUDE.md →\n// Stylesheets) and these pages live behind login (not GEO-crawled), so a tiny\n// SVG helper with full control of the brand palette beats a CDN dependency.\n// Every function returns an SVG STRING the page drops into innerHTML. SVGs use a\n// viewBox + width:100% so they scale responsively with no JS resize handler.\n//\n// Brand palette (CLAUDE.md → Brand Tokens): accent #c8ff00, bg #09090b,\n// border #27272a, muted #a1a1aa.\n// ─────────────────────────────────────────────────────────────────────────\n\n// Read from the live theme so charts stay legible in light/terminal mode;\n// fallbacks are the original dark values. Charts render at load, so a theme\n// toggle mid-session recolors on the next reload.\nconst cssTok = (name, fb) => {\n  try { return getComputedStyle(document.documentElement).getPropertyValue(name).trim() || fb; }\n  catch { return fb; }\n};\nconst ACCENT = cssTok(\"--accent\", \"#c8ff00\");\nconst MUTED = cssTok(\"--text-muted\", \"#a1a1aa\");\nconst AXIS = cssTok(\"--text-light\", \"#d4d4d8\");   // axis/date labels — brighter than MUTED for legibility\nconst BORDER = cssTok(\"--border\", \"#27272a\");\nconst GRID = cssTok(\"--chart-grid\", \"#1d1d20\");\n\nconst esc = (s) => String(s ?? \"\").replace(/[&<>\"']/g, (c) => ({ \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\", \"'\": \"&#39;\" }[c]));\nconst numFmt = (n) => (Math.abs(n) >= 1000 ? (n / 1000).toFixed(n % 1000 === 0 ? 0 : 1) + \"k\" : String(Math.round(n)));\n\nfunction emptyChart(w, h, msg) {\n  return `<svg viewBox=\"0 0 ${w} ${h}\" width=\"100%\" role=\"img\" aria-label=\"${esc(msg)}\" class=\"dash-svg\">\n    <text x=\"${w / 2}\" y=\"${h / 2}\" fill=\"${MUTED}\" font-size=\"13\" text-anchor=\"middle\" font-family=\"inherit\">${esc(msg)}</text></svg>`;\n}\n\n// Single- or multi-series line chart on a SHARED y-scale (use only for\n// comparable series, e.g. indexed vs not-indexed counts). `series` is\n// [{ values:number[], color, label }]. `labels` are x-axis ticks (sparse-rendered).\n// `titles[i]` is the hover readout for point i — a transparent full-height column\n// per point carries a native <title> tooltip (\"when + value\"), so a broad trend\n// still answers \"what happened on this exact day\" on hover.\n// `xs` (numbers, one per point) positions points PROPORTIONALLY in time/value\n// instead of evenly by index — pass audit/snapshot timestamps so irregular gaps\n// read truthfully. `yMin`/`yMax` pin the scale (e.g. 0–100 for a % score).\n// Split a numeric series into its most-recent half vs the prior half and\n// summarise the change — the \"is it climbing?\" momentum signal behind the delta\n// badges. `mode` is 'sum' (impressions, clicks — totals) or 'avg' (position, ctr\n// — rates). Returns null when there isn't enough history to compare honestly, so\n// callers render no badge rather than a misleading one.\nexport function momentum(values = [], { mode = \"sum\" } = {}) {\n  const v = (values || []).filter((x) => x != null);\n  if (v.length < 4) return null;\n  const mid = Math.floor(v.length / 2);\n  const prior = v.slice(0, mid), recent = v.slice(mid);\n  const agg = (a) => mode === \"avg\" ? a.reduce((t, x) => t + x, 0) / a.length : a.reduce((t, x) => t + x, 0);\n  const p = agg(prior), r = agg(recent);\n  const pct = p === 0 ? (r === 0 ? 0 : 100) : ((r - p) / Math.abs(p)) * 100;\n  return { prior: p, recent: r, pct, dir: Math.sign(r - p), n: v.length };\n}\n\n// `markers` overlays vertical event lines on a line chart — pass [{ i, label }]\n// where `i` is a (fractional) index position into the series, so e.g. an audit\n// date can be dropped onto the daily search trend. Used to mark when each audit\n// cycle / batch of work landed, so momentum reads against shipped work.\n// `labelAll` labels every x point (use for sparse discrete series like audit\n// cycles, so each point shows its date — not just first/middle/last). `valueLabels`\n// prints the formatted value above each point, making the climb readable at a glance.\n// `invert` flips the y-axis so the SMALLEST value sits at the TOP — use it for\n// \"lower is better\" metrics (avg search position) so an improvement reads as the\n// line going UP, consistent with every other chart.\nexport function lineChart({ series = [], labels = [], titles = [], xs = null, yMin = null, yMax = null, width = 640, height = 200, area = false, format = numFmt, emptyMsg = \"No data yet\", title, markers = [], labelAll = false, valueLabels = false, invert = false, lastLabel = false } = {}) {\n  const valid = series.filter((s) => (s.values || []).some((v) => v != null));\n  const maxLen = Math.max(0, ...series.map((s) => (s.values || []).length));\n  if (!valid.length || maxLen < 1) return emptyChart(width, height, emptyMsg);\n\n  const w = width, h = height, padX = 14, padTop = 16, padBot = 28;\n  const all = valid.flatMap((s) => s.values.filter((v) => v != null));\n  let min = Math.min(...all), max = Math.max(...all);\n  if (min === max) { min = min - 1; max = max + 1; } // flat line → give it room\n  if (min > 0) min = 0; // anchor at 0 when non-negative\n  if (yMin != null) min = yMin;\n  if (yMax != null) max = yMax;\n\n  // Time/value-proportional x when `xs` is supplied; else even spacing by index.\n  const useXs = Array.isArray(xs) && xs.length === maxLen && maxLen > 0;\n  let xMin = 0, xMax = 1;\n  if (useXs) { xMin = Math.min(...xs); xMax = Math.max(...xs); if (xMin === xMax) { xMin -= 1; xMax += 1; } }\n  const yFor = (v) => {\n    const frac = (v - min) / ((max - min) || 1);\n    return invert ? padTop + frac * ((h - padBot) - padTop) : (h - padBot) - frac * ((h - padBot) - padTop);\n  };\n  const xFor = (i) => useXs ? padX + ((xs[i] - xMin) / (xMax - xMin)) * (w - padX * 2) : (maxLen > 1 ? padX + i * ((w - padX * 2) / (maxLen - 1)) : w / 2);\n  const stepX = maxLen > 1 ? (w - padX * 2) / (maxLen - 1) : (w - padX * 2);\n\n  // Reference lines: solid axis at the bottom of the plot, dashed guide + value\n  // label at the top. With `invert`, the top of the plot is the SMALLEST value.\n  const topV = invert ? min : max, botV = invert ? max : min;\n  const parts = [];\n  parts.push(`<line x1=\"${padX}\" y1=\"${yFor(botV)}\" x2=\"${w - padX}\" y2=\"${yFor(botV)}\" stroke=\"${BORDER}\" stroke-width=\"1\"/>`);\n  parts.push(`<line x1=\"${padX}\" y1=\"${yFor(topV)}\" x2=\"${w - padX}\" y2=\"${yFor(topV)}\" stroke=\"${GRID}\" stroke-width=\"1\" stroke-dasharray=\"3 4\"/>`);\n  parts.push(`<text x=\"${padX}\" y=\"${yFor(topV) - 4}\" fill=\"${MUTED}\" font-size=\"12\" font-family=\"inherit\">${esc(format(topV))}</text>`);\n  // For a flipped axis, also label the bottom (worst) value so the scale + the flip\n  // are unmistakable: best at top, worst at bottom.\n  if (invert) parts.push(`<text x=\"${padX}\" y=\"${(yFor(botV) - 4).toFixed(1)}\" fill=\"${MUTED}\" font-size=\"12\" font-family=\"inherit\">${esc(format(botV))}</text>`);\n\n  const showDots = maxLen <= 45; // discrete points get a dot; dense daily series stay clean\n  valid.forEach((s, si) => {\n    const color = s.color || (si === 0 ? ACCENT : MUTED);\n    const d = s.values.map((v, i) => `${i ? \"L\" : \"M\"}${xFor(i).toFixed(1)} ${yFor(v == null ? min : v).toFixed(1)}`).join(\" \");\n    if (area && si === 0) {\n      const gid = `g${Math.round(min)}_${maxLen}_${si}`;\n      parts.push(`<defs><linearGradient id=\"${gid}\" x1=\"0\" x2=\"0\" y1=\"0\" y2=\"1\"><stop offset=\"0%\" stop-color=\"${color}\" stop-opacity=\"0.28\"/><stop offset=\"100%\" stop-color=\"${color}\" stop-opacity=\"0\"/></linearGradient></defs>`);\n      parts.push(`<path d=\"${d} L${xFor(maxLen - 1).toFixed(1)} ${(h - padBot).toFixed(1)} L${xFor(0).toFixed(1)} ${(h - padBot).toFixed(1)} Z\" fill=\"url(#${gid})\"/>`);\n    }\n    parts.push(`<path d=\"${d}\" fill=\"none\" stroke=\"${color}\" stroke-width=\"2\" stroke-linejoin=\"round\" stroke-linecap=\"round\"/>`);\n    if (showDots) s.values.forEach((v, i) => { if (v != null) parts.push(`<circle cx=\"${xFor(i).toFixed(1)}\" cy=\"${yFor(v).toFixed(1)}\" r=\"2.4\" fill=\"${color}\"/>`); });\n    else { const li = maxLen - 1, lv = s.values[li]; parts.push(`<circle cx=\"${xFor(li).toFixed(1)}\" cy=\"${yFor(lv == null ? min : lv).toFixed(1)}\" r=\"3.2\" fill=\"${color}\"/>`); }\n  });\n\n  // Value labels above each point (discrete series, e.g. audit cycles) — the climb\n  // reads at a glance without hovering. Primary series only, to avoid clutter.\n  if (valueLabels && valid.length) {\n    valid[0].values.forEach((v, i) => {\n      if (v == null) return;\n      parts.push(`<text x=\"${xFor(i).toFixed(1)}\" y=\"${(yFor(v) - 8).toFixed(1)}\" fill=\"#fafafa\" font-size=\"13\" font-weight=\"700\" text-anchor=\"middle\" font-family=\"inherit\">${esc(format(v))}</text>`);\n    });\n  }\n\n  // Label just the latest point — \"where you are now\" — for dense series where\n  // labelling every point would be noise (e.g. the daily position trend).\n  if (lastLabel && valid.length) {\n    const s0 = valid[0]; let li = s0.values.length - 1;\n    while (li >= 0 && s0.values[li] == null) li--;\n    if (li >= 0) parts.push(`<text x=\"${xFor(li).toFixed(1)}\" y=\"${(yFor(s0.values[li]) - 9).toFixed(1)}\" fill=\"#fafafa\" font-size=\"12\" font-weight=\"700\" text-anchor=\"end\" font-family=\"inherit\">${esc(format(s0.values[li]))}</text>`);\n  }\n\n  // x labels — every point when `labelAll` (dated discrete series), else sparse\n  // (first + middle + last) so dense daily series don't collide.\n  if (labels.length) {\n    const idxs = labelAll ? labels.map((_, i) => i)\n      : labels.length > 2 ? [0, Math.floor(labels.length / 2), labels.length - 1] : labels.map((_, i) => i);\n    idxs.forEach((i) => {\n      const x = xFor(i), anchor = labels.length === 1 ? \"middle\" : i === 0 ? \"start\" : i === labels.length - 1 ? \"end\" : \"middle\";\n      parts.push(`<text x=\"${x.toFixed(1)}\" y=\"${h - 7}\" fill=\"${AXIS}\" font-size=\"12.5\" font-weight=\"500\" text-anchor=\"${anchor}\" font-family=\"inherit\">${esc(labels[i])}</text>`);\n    });\n  }\n\n  // Event markers — vertical dashed accent lines (e.g. \"audit ran here\"), so the\n  // trend reads against when work shipped. Drawn under the hover columns so the\n  // per-day date readout still wins the pointer.\n  (markers || []).forEach((m) => {\n    if (m == null || m.i == null) return;\n    const x = xFor(m.i);\n    parts.push(`<line x1=\"${x.toFixed(1)}\" y1=\"${padTop}\" x2=\"${x.toFixed(1)}\" y2=\"${(h - padBot).toFixed(1)}\" stroke=\"${ACCENT}\" stroke-width=\"1\" stroke-dasharray=\"2 3\" opacity=\"0.45\"/>`);\n    parts.push(`<circle cx=\"${x.toFixed(1)}\" cy=\"${padTop}\" r=\"2.6\" fill=\"${ACCENT}\"><title>${esc(m.label || \"\")}</title></circle>`);\n  });\n\n  // Hover columns — a transparent full-height slice per point. Each carries the\n  // readout (`data-label`) plus the primary point's coords (`data-cx`/`data-cy`)\n  // so the page can pop a cursor-following tooltip AND park an indicator dot on the\n  // line. Native <title> kept as a no-JS fallback. With `xs`, each column spans to\n  // the midpoint of its neighbours so irregular gaps stay hoverable.\n  const primary = valid[0];\n  const pcolor = primary.color || ACCENT;\n  for (let i = 0; i < titles.length; i++) {\n    const xc = xFor(i);\n    const left = useXs ? (i > 0 ? (xFor(i - 1) + xc) / 2 : padX) : xc - stepX / 2;\n    const right = useXs ? (i < titles.length - 1 ? (xFor(i + 1) + xc) / 2 : w - padX) : xc + stepX / 2;\n    const pv = primary.values[i];\n    const pos = pv == null ? \"\" : ` data-cx=\"${xc.toFixed(1)}\" data-cy=\"${yFor(pv).toFixed(1)}\" data-color=\"${pcolor}\"`;\n    parts.push(`<rect class=\"dash-hovcol\" data-label=\"${esc(titles[i])}\"${pos} x=\"${Math.max(0, left).toFixed(1)}\" y=\"${padTop}\" width=\"${Math.max(1, right - left).toFixed(1)}\" height=\"${(h - padBot - padTop).toFixed(1)}\"><title>${esc(titles[i])}</title></rect>`);\n  }\n  // Indicator dot, moved onto the hovered point by the page (hidden until then).\n  if (titles.length) parts.push(`<circle class=\"dash-hovdot\" r=\"4\" fill=\"#09090b\" stroke=\"${pcolor}\" stroke-width=\"2\" style=\"display:none\" pointer-events=\"none\"/>`);\n\n  return `<svg viewBox=\"0 0 ${w} ${h}\" width=\"100%\" role=\"img\" aria-label=\"${esc(title || \"line chart\")}\" class=\"dash-svg\">${parts.join(\"\")}</svg>`;\n}\n\n// Vertical bars (use for discrete cycles, e.g. audit visibility per re-run).\n// `values` parallel to `labels`. `subLabels[i]` prints a second line under each\n// bar (use it for the DATE so \"Cycle 2\" also says when it ran). `titles[i]` is the\n// hover readout. Highlights the last bar in accent.\nexport function barChart({ values = [], labels = [], subLabels = [], titles = [], width = 640, height = 210, color = ACCENT, format = numFmt, max: forcedMax, emptyMsg = \"No data yet\", title } = {}) {\n  const vals = values.filter((v) => v != null);\n  if (!vals.length) return emptyChart(width, height, emptyMsg);\n  const w = width, h = height, padX = 14, padTop = 16, padBot = subLabels.length ? 36 : 22;\n  const max = forcedMax != null ? forcedMax : Math.max(...vals) * 1.12 || 1;\n  const n = values.length, slot = (w - padX * 2) / n, bw = Math.min(slot * 0.6, 46);\n  const yFor = (v) => (h - padBot) - (v / (max || 1)) * ((h - padBot) - padTop);\n  const parts = [`<line x1=\"${padX}\" y1=\"${h - padBot}\" x2=\"${w - padX}\" y2=\"${h - padBot}\" stroke=\"${BORDER}\" stroke-width=\"1\"/>`];\n  values.forEach((v, i) => {\n    const cx = padX + slot * i + slot / 2, isLast = i === n - 1, fill = isLast ? color : \"#3a4a16\";\n    if (v != null) {\n      const y = yFor(v), titleEl = titles[i] ? `<title>${esc(titles[i])}</title>` : \"\";\n      parts.push(`<rect class=\"dash-bar\" x=\"${(cx - bw / 2).toFixed(1)}\" y=\"${y.toFixed(1)}\" width=\"${bw.toFixed(1)}\" height=\"${(h - padBot - y).toFixed(1)}\" rx=\"3\" fill=\"${fill}\">${titleEl}</rect>`);\n      parts.push(`<text x=\"${cx.toFixed(1)}\" y=\"${(y - 5).toFixed(1)}\" fill=\"${isLast ? \"#fafafa\" : MUTED}\" font-size=\"11\" text-anchor=\"middle\" font-family=\"inherit\">${esc(format(v))}</text>`);\n    }\n    if (labels[i]) parts.push(`<text x=\"${cx.toFixed(1)}\" y=\"${h - (subLabels.length ? 20 : 6)}\" fill=\"${MUTED}\" font-size=\"10\" text-anchor=\"middle\" font-family=\"inherit\">${esc(labels[i])}</text>`);\n    if (subLabels[i]) parts.push(`<text x=\"${cx.toFixed(1)}\" y=\"${h - 6}\" fill=\"${MUTED}\" font-size=\"9\" text-anchor=\"middle\" font-family=\"inherit\">${esc(subLabels[i])}</text>`);\n  });\n  return `<svg viewBox=\"0 0 ${w} ${h}\" width=\"100%\" role=\"img\" aria-label=\"${esc(title || \"bar chart\")}\" class=\"dash-svg\">${parts.join(\"\")}</svg>`;\n}\n\n// A compact sparkline for the metric scorecards (no axes, no labels).\nexport function sparkline({ values = [], width = 120, height = 34, color = ACCENT } = {}) {\n  const vals = (values || []).filter((v) => v != null);\n  if (vals.length < 2) return `<svg viewBox=\"0 0 ${width} ${height}\" width=\"${width}\" height=\"${height}\" class=\"dash-spark\"></svg>`;\n  let min = Math.min(...vals), max = Math.max(...vals);\n  if (min === max) { min -= 1; max += 1; }\n  const stepX = width / (values.length - 1);\n  const yFor = (v) => height - 3 - ((v - min) / (max - min)) * (height - 6);\n  const d = values.map((v, i) => `${i ? \"L\" : \"M\"}${(i * stepX).toFixed(1)} ${yFor(v == null ? min : v).toFixed(1)}`).join(\" \");\n  const last = { x: (values.length - 1) * stepX, y: yFor(values[values.length - 1]) };\n  return `<svg viewBox=\"0 0 ${width} ${height}\" width=\"${width}\" height=\"${height}\" class=\"dash-spark\" aria-hidden=\"true\">\n    <path d=\"${d}\" fill=\"none\" stroke=\"${color}\" stroke-width=\"1.6\" stroke-linejoin=\"round\" stroke-linecap=\"round\"/>\n    <circle cx=\"${last.x.toFixed(1)}\" cy=\"${last.y.toFixed(1)}\" r=\"2.2\" fill=\"${color}\"/></svg>`;\n}\n"],
  "mappings": "AAgBA,MAAMA,EAAS,CAACC,EAAMC,IAAO,CAC3B,GAAI,CAAE,OAAO,iBAAiB,SAAS,eAAe,EAAE,iBAAiBD,CAAI,EAAE,KAAK,GAAKC,CAAI,MACvF,CAAE,OAAOA,CAAI,CACrB,EACMC,EAASH,EAAO,WAAY,SAAS,EACrCI,EAAQJ,EAAO,eAAgB,SAAS,EACxCK,EAAOL,EAAO,eAAgB,SAAS,EACvCM,EAASN,EAAO,WAAY,SAAS,EACrCO,EAAOP,EAAO,eAAgB,SAAS,EAEvCQ,EAAOC,GAAM,OAAOA,GAAK,EAAE,EAAE,QAAQ,WAAaC,IAAO,CAAE,IAAK,QAAS,IAAK,OAAQ,IAAK,OAAQ,IAAK,SAAU,IAAK,OAAQ,GAAEA,CAAC,CAAE,EACpIC,EAAU,GAAO,KAAK,IAAI,CAAC,GAAK,KAAQ,EAAI,KAAM,QAAQ,EAAI,MAAS,EAAI,EAAI,CAAC,EAAI,IAAM,OAAO,KAAK,MAAM,CAAC,CAAC,EAEpH,SAASC,EAAWC,EAAGC,EAAGC,EAAK,CAC7B,MAAO,qBAAqBF,CAAC,IAAIC,CAAC,yCAAyCN,EAAIO,CAAG,CAAC;AAAA,eACtEF,EAAI,CAAC,QAAQC,EAAI,CAAC,WAAWV,CAAK,+DAA+DI,EAAIO,CAAG,CAAC,eACxH,CAgBO,gBAAS,SAASC,EAAS,CAAC,EAAG,CAAE,KAAAC,EAAO,KAAM,EAAI,CAAC,EAAG,CAC3D,MAAMC,GAAKF,GAAU,CAAC,GAAG,OAAQG,GAAMA,GAAK,IAAI,EAChD,GAAID,EAAE,OAAS,EAAG,OAAO,KACzB,MAAME,EAAM,KAAK,MAAMF,EAAE,OAAS,CAAC,EAC7BG,EAAQH,EAAE,MAAM,EAAGE,CAAG,EAAGE,EAASJ,EAAE,MAAME,CAAG,EAC7CG,EAAOC,GAAMP,IAAS,MAAQO,EAAE,OAAO,CAACC,EAAGN,IAAMM,EAAIN,EAAG,CAAC,EAAIK,EAAE,OAASA,EAAE,OAAO,CAACC,EAAGN,IAAMM,EAAIN,EAAG,CAAC,EACnG,EAAII,EAAIF,CAAK,EAAGK,EAAIH,EAAID,CAAM,EAC9BK,EAAM,IAAM,EAAKD,IAAM,EAAI,EAAI,KAASA,EAAI,GAAK,KAAK,IAAI,CAAC,EAAK,IACtE,MAAO,CAAE,MAAO,EAAG,OAAQA,EAAG,IAAAC,EAAK,IAAK,KAAK,KAAKD,EAAI,CAAC,EAAG,EAAGR,EAAE,MAAO,CACxE,CAYO,gBAAS,UAAU,CAAE,OAAAU,EAAS,CAAC,EAAG,OAAAC,EAAS,CAAC,EAAG,OAAAC,EAAS,CAAC,EAAG,GAAAC,EAAK,KAAM,KAAAC,EAAO,KAAM,KAAAC,EAAO,KAAM,MAAAC,EAAQ,IAAK,OAAAC,EAAS,IAAK,KAAAC,EAAO,GAAO,OAAAC,EAAS1B,EAAQ,SAAA2B,EAAW,cAAe,MAAAC,EAAO,QAAAC,EAAU,CAAC,EAAG,SAAAC,EAAW,GAAO,YAAAC,EAAc,GAAO,OAAAC,EAAS,GAAO,UAAAC,EAAY,EAAM,EAAI,CAAC,EAAG,CAChS,MAAMC,EAAQjB,EAAO,OAAQnB,IAAOA,EAAE,QAAU,CAAC,GAAG,KAAMS,GAAMA,GAAK,IAAI,CAAC,EACpE4B,EAAS,KAAK,IAAI,EAAG,GAAGlB,EAAO,IAAKnB,IAAOA,EAAE,QAAU,CAAC,GAAG,MAAM,CAAC,EACxE,GAAI,CAACoC,EAAM,QAAUC,EAAS,EAAG,OAAOlC,EAAWsB,EAAOC,EAAQG,CAAQ,EAE1E,MAAMzB,EAAIqB,EAAOpB,EAAIqB,EAAQY,EAAO,GAAIC,EAAS,GAAIC,EAAS,GACxDC,EAAML,EAAM,QAASpC,GAAMA,EAAE,OAAO,OAAQS,GAAMA,GAAK,IAAI,CAAC,EAClE,IAAIiC,EAAM,KAAK,IAAI,GAAGD,CAAG,EAAGE,EAAM,KAAK,IAAI,GAAGF,CAAG,EAC7CC,IAAQC,IAAOD,EAAMA,EAAM,EAAGC,EAAMA,EAAM,GAC1CD,EAAM,IAAGA,EAAM,GACfnB,GAAQ,OAAMmB,EAAMnB,GACpBC,GAAQ,OAAMmB,EAAMnB,GAGxB,MAAMoB,EAAQ,MAAM,QAAQtB,CAAE,GAAKA,EAAG,SAAWe,GAAUA,EAAS,EACpE,IAAIQ,EAAO,EAAGC,EAAO,EACjBF,IAASC,EAAO,KAAK,IAAI,GAAGvB,CAAE,EAAGwB,EAAO,KAAK,IAAI,GAAGxB,CAAE,EAAOuB,IAASC,IAAQD,GAAQ,EAAGC,GAAQ,IACrG,MAAMC,EAAQtC,GAAM,CAClB,MAAMuC,GAAQvC,EAAIiC,IAASC,EAAMD,GAAQ,GACzC,OAAOR,EAASK,EAASS,GAAS3C,EAAImC,EAAUD,GAAWlC,EAAImC,EAAUQ,GAAS3C,EAAImC,EAAUD,EAClG,EACMU,EAAQC,GAAMN,EAAQN,GAAShB,EAAG4B,CAAC,EAAIL,IAASC,EAAOD,IAAUzC,EAAIkC,EAAO,GAAMD,EAAS,EAAIC,EAAOY,IAAM9C,EAAIkC,EAAO,IAAMD,EAAS,IAAMjC,EAAI,EAChJ+C,EAAQd,EAAS,GAAKjC,EAAIkC,EAAO,IAAMD,EAAS,GAAMjC,EAAIkC,EAAO,EAIjEc,EAAOlB,EAASQ,EAAMC,EAAKU,EAAOnB,EAASS,EAAMD,EACjDY,EAAQ,CAAC,EACfA,EAAM,KAAK,aAAahB,CAAI,SAASS,EAAKM,CAAI,CAAC,SAASjD,EAAIkC,CAAI,SAASS,EAAKM,CAAI,CAAC,aAAaxD,CAAM,sBAAsB,EAC5HyD,EAAM,KAAK,aAAahB,CAAI,SAASS,EAAKK,CAAI,CAAC,SAAShD,EAAIkC,CAAI,SAASS,EAAKK,CAAI,CAAC,aAAatD,CAAI,6CAA6C,EACjJwD,EAAM,KAAK,YAAYhB,CAAI,QAAQS,EAAKK,CAAI,EAAI,CAAC,WAAWzD,CAAK,0CAA0CI,EAAI6B,EAAOwB,CAAI,CAAC,CAAC,SAAS,EAGjIlB,GAAQoB,EAAM,KAAK,YAAYhB,CAAI,SAASS,EAAKM,CAAI,EAAI,GAAG,QAAQ,CAAC,CAAC,WAAW1D,CAAK,0CAA0CI,EAAI6B,EAAOyB,CAAI,CAAC,CAAC,SAAS,EAE9J,MAAME,EAAWlB,GAAU,GAyB3B,GAxBAD,EAAM,QAAQ,CAACpC,EAAGwD,IAAO,CACvB,MAAMC,EAAQzD,EAAE,QAAUwD,IAAO,EAAI9D,EAASC,GACxC+D,EAAI1D,EAAE,OAAO,IAAI,CAACS,EAAGyC,IAAM,GAAGA,EAAI,IAAM,GAAG,GAAGD,EAAKC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAIH,EAAKtC,GAAYiC,CAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,KAAK,GAAG,EAC1H,GAAIf,GAAQ6B,IAAO,EAAG,CACpB,MAAMG,EAAM,IAAI,KAAK,MAAMjB,CAAG,CAAC,IAAIL,CAAM,IAAImB,CAAE,GAC/CF,EAAM,KAAK,6BAA6BK,CAAG,+DAA+DF,CAAK,0DAA0DA,CAAK,8CAA8C,EAC5NH,EAAM,KAAK,YAAYI,CAAC,KAAKT,EAAKZ,EAAS,CAAC,EAAE,QAAQ,CAAC,CAAC,KAAKhC,EAAImC,GAAQ,QAAQ,CAAC,CAAC,KAAKS,EAAK,CAAC,EAAE,QAAQ,CAAC,CAAC,KAAK5C,EAAImC,GAAQ,QAAQ,CAAC,CAAC,kBAAkBmB,CAAG,MAAM,CAClK,CAEA,GADAL,EAAM,KAAK,YAAYI,CAAC,yBAAyBD,CAAK,qEAAqE,EACvHF,EAAUvD,EAAE,OAAO,QAAQ,CAACS,EAAGyC,IAAM,CAAMzC,GAAK,MAAM6C,EAAM,KAAK,eAAeL,EAAKC,CAAC,EAAE,QAAQ,CAAC,CAAC,SAASH,EAAKtC,CAAC,EAAE,QAAQ,CAAC,CAAC,mBAAmBgD,CAAK,KAAK,CAAG,CAAC,MAC7J,CAAE,MAAMG,EAAKvB,EAAS,EAAGwB,EAAK7D,EAAE,OAAO4D,CAAE,EAAGN,EAAM,KAAK,eAAeL,EAAKW,CAAE,EAAE,QAAQ,CAAC,CAAC,SAASb,EAAKc,GAAanB,CAAQ,EAAE,QAAQ,CAAC,CAAC,mBAAmBe,CAAK,KAAK,CAAG,CAC/K,CAAC,EAIGxB,GAAeG,EAAM,QACvBA,EAAM,CAAC,EAAE,OAAO,QAAQ,CAAC3B,EAAGyC,IAAM,CAC5BzC,GAAK,MACT6C,EAAM,KAAK,YAAYL,EAAKC,CAAC,EAAE,QAAQ,CAAC,CAAC,SAASH,EAAKtC,CAAC,EAAI,GAAG,QAAQ,CAAC,CAAC,gGAAgGV,EAAI6B,EAAOnB,CAAC,CAAC,CAAC,SAAS,CAClM,CAAC,EAKC0B,GAAaC,EAAM,OAAQ,CAC7B,MAAM0B,EAAK1B,EAAM,CAAC,EAAG,IAAIwB,EAAKE,EAAG,OAAO,OAAS,EACjD,KAAOF,GAAM,GAAKE,EAAG,OAAOF,CAAE,GAAK,MAAMA,IACrCA,GAAM,GAAGN,EAAM,KAAK,YAAYL,EAAKW,CAAE,EAAE,QAAQ,CAAC,CAAC,SAASb,EAAKe,EAAG,OAAOF,CAAE,CAAC,EAAI,GAAG,QAAQ,CAAC,CAAC,6FAA6F7D,EAAI6B,EAAOkC,EAAG,OAAOF,CAAE,CAAC,CAAC,CAAC,SAAS,CACrO,CAIIxC,EAAO,SACIY,EAAWZ,EAAO,IAAI,CAAC2C,EAAGb,IAAMA,CAAC,EAC1C9B,EAAO,OAAS,EAAI,CAAC,EAAG,KAAK,MAAMA,EAAO,OAAS,CAAC,EAAGA,EAAO,OAAS,CAAC,EAAIA,EAAO,IAAI,CAAC2C,EAAGb,IAAMA,CAAC,GACjG,QAASA,GAAM,CAClB,MAAM,EAAID,EAAKC,CAAC,EAAGc,EAAS5C,EAAO,SAAW,EAAI,SAAW8B,IAAM,EAAI,QAAUA,IAAM9B,EAAO,OAAS,EAAI,MAAQ,SACnHkC,EAAM,KAAK,YAAY,EAAE,QAAQ,CAAC,CAAC,QAAQjD,EAAI,CAAC,WAAWT,CAAI,qDAAqDoE,CAAM,2BAA2BjE,EAAIqB,EAAO8B,CAAC,CAAC,CAAC,SAAS,CAC9K,CAAC,GAMFnB,GAAW,CAAC,GAAG,QAASkC,GAAM,CAC7B,GAAIA,GAAK,MAAQA,EAAE,GAAK,KAAM,OAC9B,MAAMvD,EAAIuC,EAAKgB,EAAE,CAAC,EAClBX,EAAM,KAAK,aAAa5C,EAAE,QAAQ,CAAC,CAAC,SAAS6B,CAAM,SAAS7B,EAAE,QAAQ,CAAC,CAAC,UAAUL,EAAImC,GAAQ,QAAQ,CAAC,CAAC,aAAa9C,CAAM,4DAA4D,EACvL4D,EAAM,KAAK,eAAe5C,EAAE,QAAQ,CAAC,CAAC,SAAS6B,CAAM,mBAAmB7C,CAAM,YAAYK,EAAIkE,EAAE,OAAS,EAAE,CAAC,mBAAmB,CACjI,CAAC,EAOD,MAAMC,EAAU9B,EAAM,CAAC,EACjB+B,EAASD,EAAQ,OAASxE,EAChC,QAASwD,EAAI,EAAGA,EAAI7B,EAAO,OAAQ6B,IAAK,CACtC,MAAMkB,EAAKnB,EAAKC,CAAC,EACXmB,EAAOzB,EAASM,EAAI,GAAKD,EAAKC,EAAI,CAAC,EAAIkB,GAAM,EAAI9B,EAAQ8B,EAAKjB,EAAQ,EACtEmB,EAAQ1B,EAASM,EAAI7B,EAAO,OAAS,GAAK4B,EAAKC,EAAI,CAAC,EAAIkB,GAAM,EAAIhE,EAAIkC,EAAQ8B,EAAKjB,EAAQ,EAC3FoB,EAAKL,EAAQ,OAAOhB,CAAC,EACrBsB,EAAMD,GAAM,KAAO,GAAK,aAAaH,EAAG,QAAQ,CAAC,CAAC,cAAcrB,EAAKwB,CAAE,EAAE,QAAQ,CAAC,CAAC,iBAAiBJ,CAAM,IAChHb,EAAM,KAAK,yCAAyCvD,EAAIsB,EAAO6B,CAAC,CAAC,CAAC,IAAIsB,CAAG,OAAO,KAAK,IAAI,EAAGH,CAAI,EAAE,QAAQ,CAAC,CAAC,QAAQ9B,CAAM,YAAY,KAAK,IAAI,EAAG+B,EAAQD,CAAI,EAAE,QAAQ,CAAC,CAAC,cAAchE,EAAImC,EAASD,GAAQ,QAAQ,CAAC,CAAC,YAAYxC,EAAIsB,EAAO6B,CAAC,CAAC,CAAC,iBAAiB,CACpQ,CAEA,OAAI7B,EAAO,QAAQiC,EAAM,KAAK,4DAA4Da,CAAM,iEAAiE,EAE1J,qBAAqB/D,CAAC,IAAIC,CAAC,yCAAyCN,EAAI+B,GAAS,YAAY,CAAC,sBAAsBwB,EAAM,KAAK,EAAE,CAAC,QAC3I,CAMO,gBAAS,SAAS,CAAE,OAAA/C,EAAS,CAAC,EAAG,OAAAa,EAAS,CAAC,EAAG,UAAAqD,EAAY,CAAC,EAAG,OAAApD,EAAS,CAAC,EAAG,MAAAI,EAAQ,IAAK,OAAAC,EAAS,IAAK,MAAA+B,EAAQ/D,EAAQ,OAAAkC,EAAS1B,EAAQ,IAAKwE,EAAW,SAAA7C,EAAW,cAAe,MAAAC,CAAM,EAAI,CAAC,EAAG,CACpM,MAAM6C,EAAOpE,EAAO,OAAQE,GAAMA,GAAK,IAAI,EAC3C,GAAI,CAACkE,EAAK,OAAQ,OAAOxE,EAAWsB,EAAOC,EAAQG,CAAQ,EAC3D,MAAMzB,EAAIqB,EAAOpB,EAAIqB,EAAQY,EAAO,GAAIC,EAAS,GAAIC,EAASiC,EAAU,OAAS,GAAK,GAChF9B,EAAM+B,IAAgC,KAAK,IAAI,GAAGC,CAAI,EAAI,MAAQ,GAClEC,EAAIrE,EAAO,OAAQsE,GAAQzE,EAAIkC,EAAO,GAAKsC,EAAGE,EAAK,KAAK,IAAID,EAAO,GAAK,EAAE,EAC1E9B,EAAQtC,GAAOJ,EAAImC,EAAW/B,GAAKkC,GAAO,IAAQtC,EAAImC,EAAUD,GAChEe,EAAQ,CAAC,aAAahB,CAAI,SAASjC,EAAImC,CAAM,SAASpC,EAAIkC,CAAI,SAASjC,EAAImC,CAAM,aAAa3C,CAAM,sBAAsB,EAChI,OAAAU,EAAO,QAAQ,CAACE,EAAGyC,IAAM,CACvB,MAAM6B,EAAKzC,EAAOuC,EAAO3B,EAAI2B,EAAO,EAAGG,EAAS9B,IAAM0B,EAAI,EAAGK,EAAOD,EAASvB,EAAQ,UACrF,GAAIhD,GAAK,KAAM,CACb,MAAMyE,EAAInC,EAAKtC,CAAC,EAAG0E,EAAU9D,EAAO6B,CAAC,EAAI,UAAUnD,EAAIsB,EAAO6B,CAAC,CAAC,CAAC,WAAa,GAC9EI,EAAM,KAAK,8BAA8ByB,EAAKD,EAAK,GAAG,QAAQ,CAAC,CAAC,QAAQI,EAAE,QAAQ,CAAC,CAAC,YAAYJ,EAAG,QAAQ,CAAC,CAAC,cAAczE,EAAImC,EAAS0C,GAAG,QAAQ,CAAC,CAAC,kBAAkBD,CAAI,KAAKE,CAAO,SAAS,EAChM7B,EAAM,KAAK,YAAYyB,EAAG,QAAQ,CAAC,CAAC,SAASG,EAAI,GAAG,QAAQ,CAAC,CAAC,WAAWF,EAAS,UAAYrF,CAAK,+DAA+DI,EAAI6B,EAAOnB,CAAC,CAAC,CAAC,SAAS,CAC3L,CACIW,EAAO8B,CAAC,GAAGI,EAAM,KAAK,YAAYyB,EAAG,QAAQ,CAAC,CAAC,QAAQ1E,GAAKoE,EAAU,OAAS,GAAK,EAAE,WAAW9E,CAAK,+DAA+DI,EAAIqB,EAAO8B,CAAC,CAAC,CAAC,SAAS,EAC5LuB,EAAUvB,CAAC,GAAGI,EAAM,KAAK,YAAYyB,EAAG,QAAQ,CAAC,CAAC,QAAQ1E,EAAI,CAAC,WAAWV,CAAK,8DAA8DI,EAAI0E,EAAUvB,CAAC,CAAC,CAAC,SAAS,CAC7K,CAAC,EACM,qBAAqB9C,CAAC,IAAIC,CAAC,yCAAyCN,EAAI+B,GAAS,WAAW,CAAC,sBAAsBwB,EAAM,KAAK,EAAE,CAAC,QAC1I,CAGO,gBAAS,UAAU,CAAE,OAAA/C,EAAS,CAAC,EAAG,MAAAkB,EAAQ,IAAK,OAAAC,EAAS,GAAI,MAAA+B,EAAQ/D,CAAO,EAAI,CAAC,EAAG,CACxF,MAAMiF,GAAQpE,GAAU,CAAC,GAAG,OAAQE,GAAMA,GAAK,IAAI,EACnD,GAAIkE,EAAK,OAAS,EAAG,MAAO,qBAAqBlD,CAAK,IAAIC,CAAM,YAAYD,CAAK,aAAaC,CAAM,8BACpG,IAAIgB,EAAM,KAAK,IAAI,GAAGiC,CAAI,EAAGhC,EAAM,KAAK,IAAI,GAAGgC,CAAI,EAC/CjC,IAAQC,IAAOD,GAAO,EAAGC,GAAO,GACpC,MAAMQ,EAAQ1B,GAASlB,EAAO,OAAS,GACjCwC,EAAQtC,GAAMiB,EAAS,GAAMjB,EAAIiC,IAAQC,EAAMD,IAAShB,EAAS,GACjEgC,EAAInD,EAAO,IAAI,CAACE,EAAGyC,IAAM,GAAGA,EAAI,IAAM,GAAG,IAAIA,EAAIC,GAAO,QAAQ,CAAC,CAAC,IAAIJ,EAAKtC,GAAYiC,CAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,KAAK,GAAG,EACtH0C,EAAO,CAAE,GAAI7E,EAAO,OAAS,GAAK4C,EAAO,EAAGJ,EAAKxC,EAAOA,EAAO,OAAS,CAAC,CAAC,CAAE,EAClF,MAAO,qBAAqBkB,CAAK,IAAIC,CAAM,YAAYD,CAAK,aAAaC,CAAM;AAAA,eAClEgC,CAAC,yBAAyBD,CAAK;AAAA,kBAC5B2B,EAAK,EAAE,QAAQ,CAAC,CAAC,SAASA,EAAK,EAAE,QAAQ,CAAC,CAAC,mBAAmB3B,CAAK,WACrF",
  "names": ["cssTok", "name", "fb", "ACCENT", "MUTED", "AXIS", "BORDER", "GRID", "esc", "s", "c", "numFmt", "emptyChart", "w", "h", "msg", "values", "mode", "v", "x", "mid", "prior", "recent", "agg", "a", "t", "r", "pct", "series", "labels", "titles", "xs", "yMin", "yMax", "width", "height", "area", "format", "emptyMsg", "title", "markers", "labelAll", "valueLabels", "invert", "lastLabel", "valid", "maxLen", "padX", "padTop", "padBot", "all", "min", "max", "useXs", "xMin", "xMax", "yFor", "frac", "xFor", "i", "stepX", "topV", "botV", "parts", "showDots", "si", "color", "d", "gid", "li", "lv", "s0", "_", "anchor", "m", "primary", "pcolor", "xc", "left", "right", "pv", "pos", "subLabels", "forcedMax", "vals", "n", "slot", "bw", "cx", "isLast", "fill", "y", "titleEl", "last"]
}
