@duckcodeailabs/dql-cli 1.12.2 → 1.12.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/dist/assets/dql-notebook/assets/AgentAnswerCard-BJAnjaLA.js +5 -0
  2. package/dist/assets/dql-notebook/assets/AgentLogPage-J72WR6hk.js +1 -0
  3. package/dist/assets/dql-notebook/assets/AiBuildDialog-CHJZfDmp.js +1 -0
  4. package/dist/assets/dql-notebook/assets/AiBuildResult-Da7_Cn12.js +33 -0
  5. package/dist/assets/dql-notebook/assets/AiSidePanel-BY6W_5aC.js +6 -0
  6. package/dist/assets/dql-notebook/assets/AnalyticsHome-u-buXgdv.js +6 -0
  7. package/dist/assets/dql-notebook/assets/AppsView-3k7ftDpd.js +4471 -0
  8. package/dist/assets/dql-notebook/assets/BlockStudio-CLX4EUyO.js +60 -0
  9. package/dist/assets/dql-notebook/assets/BusinessArtifactView-3THMNeyO.js +1 -0
  10. package/dist/assets/dql-notebook/assets/DbtFirstModelingPage-BwBPwtdA.js +22 -0
  11. package/dist/assets/dql-notebook/assets/GitPage-CvEki0pe.js +7 -0
  12. package/dist/assets/dql-notebook/assets/GlobalAiRail-NXdk9kNy.js +1 -0
  13. package/dist/assets/dql-notebook/assets/GovernedContextPage-DILbw-Vr.js +7 -0
  14. package/dist/assets/dql-notebook/assets/HelpDocsPage-DgCu4bvY.js +22 -0
  15. package/dist/assets/dql-notebook/assets/HomePage-CK3fXTQo.js +117 -0
  16. package/dist/assets/dql-notebook/assets/LineageDAG-DW_NO3P2.js +1 -0
  17. package/dist/assets/dql-notebook/assets/LineageDetailView-VT7DLJOB.js +1 -0
  18. package/dist/assets/dql-notebook/assets/LineageDrawer-DSTm8aXw.js +1 -0
  19. package/dist/assets/dql-notebook/assets/LineagePathBreadcrumb-DRlAYasJ.js +14 -0
  20. package/dist/assets/dql-notebook/assets/MiniLineageGraph-CR_nhwhZ.js +1 -0
  21. package/dist/assets/dql-notebook/assets/NewBlockModal-CJvjYiBF.js +1 -0
  22. package/dist/assets/dql-notebook/assets/NewNotebookModal-BEpPH93n.js +46 -0
  23. package/dist/assets/dql-notebook/assets/NotebookEditor-C7GDFwhF.js +202 -0
  24. package/dist/assets/dql-notebook/assets/ReadinessPage-rZiOp2xr.js +1 -0
  25. package/dist/assets/dql-notebook/assets/SetupOnboarding-BWjhTjPB.js +6 -0
  26. package/dist/assets/dql-notebook/assets/TrustBadge-RvZ9s6OQ.js +1 -0
  27. package/dist/assets/dql-notebook/assets/UnifiedAgentRunPanel-CGPcpY1B.js +83 -0
  28. package/dist/assets/dql-notebook/assets/ai-build-bus-1BR770pY.js +1 -0
  29. package/dist/assets/dql-notebook/assets/answer-to-notebook-Di227Cd4.js +2 -0
  30. package/dist/assets/dql-notebook/assets/arrow-left-BZHDcWHR.js +6 -0
  31. package/dist/assets/dql-notebook/assets/arrow-right-DlM1pC3_.js +6 -0
  32. package/dist/assets/dql-notebook/assets/book-open-text-DBcXFQAu.js +6 -0
  33. package/dist/assets/dql-notebook/assets/bot-BAywbvPm.js +6 -0
  34. package/dist/assets/dql-notebook/assets/chevron-up-B_GfKE_F.js +6 -0
  35. package/dist/assets/dql-notebook/assets/circle-x-BcxtZ-ym.js +6 -0
  36. package/dist/assets/dql-notebook/assets/{codemirror-Co0dCEDr.js → codemirror-1_I9gm6Z.js} +1 -1
  37. package/dist/assets/dql-notebook/assets/dagre-BZV40eAE.css +1 -0
  38. package/dist/assets/dql-notebook/assets/dagre.esm-Bqs0lsEz.js +23 -0
  39. package/dist/assets/dql-notebook/assets/external-link-B24Dk9_t.js +6 -0
  40. package/dist/assets/dql-notebook/assets/grip-vertical-D9g31N3j.js +6 -0
  41. package/dist/assets/dql-notebook/assets/{index-DvLT6Kls.css → index-DKu4CZt3.css} +1 -1
  42. package/dist/assets/dql-notebook/assets/index-DU7j3Sqk.js +644 -0
  43. package/dist/assets/dql-notebook/assets/link-2-B36oR5Bj.js +6 -0
  44. package/dist/assets/dql-notebook/assets/list-tree-B9ZzGc4U.js +6 -0
  45. package/dist/assets/dql-notebook/assets/maximize-2-BrvQLPoj.js +6 -0
  46. package/dist/assets/dql-notebook/assets/minimize-2-BrpFmsxS.js +6 -0
  47. package/dist/assets/dql-notebook/assets/panel-right-open-B1g1qhh5.js +6 -0
  48. package/dist/assets/dql-notebook/assets/pencil-DwywbTqQ.js +6 -0
  49. package/dist/assets/dql-notebook/assets/{react-BRY8hXab.js → react-CRB3T2We.js} +2 -2
  50. package/dist/assets/dql-notebook/assets/rotate-ccw-Db_KVs3J.js +6 -0
  51. package/dist/assets/dql-notebook/assets/semantic-fields-BIVuvP2l.js +3 -0
  52. package/dist/assets/dql-notebook/assets/triangle-alert-Cne6C2aG.js +6 -0
  53. package/dist/assets/dql-notebook/assets/usePersistedAgentThreadId-D6mtrJ-_.js +18 -0
  54. package/dist/assets/dql-notebook/assets/user-round-DkzxN1xD.js +11 -0
  55. package/dist/assets/dql-notebook/assets/wand-sparkles-CJUvFtur.js +6 -0
  56. package/dist/assets/dql-notebook/assets/workflow-BOvVTg7R.js +6 -0
  57. package/dist/assets/dql-notebook/assets/wrench-YeSpzZRt.js +6 -0
  58. package/dist/assets/dql-notebook/assets/x-C6tsHUR7.js +6 -0
  59. package/dist/assets/dql-notebook/index.html +3 -4
  60. package/dist/block-invocation.js +4 -0
  61. package/dist/block-invocation.js.map +1 -1
  62. package/dist/llm/answer-loop-tools.d.ts +8 -2
  63. package/dist/llm/answer-loop-tools.d.ts.map +1 -1
  64. package/dist/llm/answer-loop-tools.js +29 -2
  65. package/dist/llm/answer-loop-tools.js.map +1 -1
  66. package/dist/llm/providers/dql-agent-provider.d.ts +27 -1
  67. package/dist/llm/providers/dql-agent-provider.d.ts.map +1 -1
  68. package/dist/llm/providers/dql-agent-provider.js +79 -15
  69. package/dist/llm/providers/dql-agent-provider.js.map +1 -1
  70. package/dist/llm/types.d.ts +8 -1
  71. package/dist/llm/types.d.ts.map +1 -1
  72. package/dist/local-runtime.d.ts +56 -2
  73. package/dist/local-runtime.d.ts.map +1 -1
  74. package/dist/local-runtime.js +735 -104
  75. package/dist/local-runtime.js.map +1 -1
  76. package/dist/package.json +10 -10
  77. package/dist/sql-result-filter.d.ts +39 -0
  78. package/dist/sql-result-filter.d.ts.map +1 -0
  79. package/dist/sql-result-filter.js +256 -0
  80. package/dist/sql-result-filter.js.map +1 -0
  81. package/dist/warehouse-metadata.d.ts +1 -1
  82. package/dist/warehouse-metadata.d.ts.map +1 -1
  83. package/dist/warehouse-metadata.js +2 -2
  84. package/dist/warehouse-metadata.js.map +1 -1
  85. package/package.json +10 -10
  86. package/dist/assets/dql-notebook/assets/index-BRCtmVPa.js +0 -5952
@@ -0,0 +1,202 @@
1
+ import{j as E,g as $e,i as PE,r as l,a as q,u as le,t as ne,B as ss,k as In,l as On,m as ie,n as Fe,o as Ts,s as os,p as is,D as xt,q as as,v as kE,w as Rs,x as KE,y as qE,z as JE,A as QE,E as zE,H as Nn,I as As,h as cn,S as je,c as ce,J as Ss,f as ls,R as ME,K as Is,M as Os,O as ZE,Q as Ns,U as cs,V as ds,W as er,X as Cs,Y as Ls,T as _s,P as us}from"./index-DU7j3Sqk.js";import{B as tr}from"./book-open-text-DBcXFQAu.js";import{A as ps}from"./arrow-right-DlM1pC3_.js";import{W as Ds}from"./workflow-BOvVTg7R.js";import{L as Er,S as Ps}from"./LineagePathBreadcrumb-DRlAYasJ.js";import{f as tt,a as Et,b as rr,c as gt,M as Ms}from"./semantic-fields-BIVuvP2l.js";import{c as ms,i as fs,C as yt,r as mE,T as fE,a as NE,u as hs}from"./usePersistedAgentThreadId-D6mtrJ-_.js";import{U as dn,S as Us,B as Cn,a as xs}from"./UnifiedAgentRunPanel-CGPcpY1B.js";import{c as Ze,N as nr,u as gs,f as it}from"./answer-to-notebook-Di227Cd4.js";import{M as ys}from"./MiniLineageGraph-CR_nhwhZ.js";import{L as Ln}from"./link-2-B36oR5Bj.js";import{X as _n}from"./x-C6tsHUR7.js";import{T as sr}from"./triangle-alert-Cne6C2aG.js";import{g as Gs}from"./react-CRB3T2We.js";import{M as Bs,A as Hs,c as bs}from"./AiSidePanel-BY6W_5aC.js";import{u as Fs}from"./AiBuildResult-Da7_Cn12.js";import"./codemirror-1_I9gm6Z.js";import"./AgentAnswerCard-BJAnjaLA.js";import"./TrustBadge-RvZ9s6OQ.js";import"./user-round-DkzxN1xD.js";import"./pencil-DwywbTqQ.js";import"./list-tree-B9ZzGc4U.js";import"./wrench-YeSpzZRt.js";import"./chevron-up-B_GfKE_F.js";import"./dagre.esm-Bqs0lsEz.js";import"./minimize-2-BrpFmsxS.js";import"./maximize-2-BrvQLPoj.js";import"./rotate-ccw-Db_KVs3J.js";function un({typeLabel:e,typeColor:t,accent:r,idleBorder:s,background:n,headerBackground:T,active:o=!1,title:i,status:S,actions:a,toolbar:A,subheader:R,footer:N,children:I,onMouseEnter:c,onMouseLeave:_,onClick:O,gutter:C,className:L,style:f}){const x=t??"var(--color-accent-blue, #388bfd)",M=r??s??"var(--color-border-subtle, rgba(148,163,184,0.18))",b=s??"var(--color-border-subtle, rgba(148,163,184,0.18))",m=n??"var(--color-bg-1, rgba(22,27,34,0.5))",h=T??"transparent";return E.jsxs("div",{onMouseEnter:c,onMouseLeave:_,onClick:O,className:L,style:{display:"flex",gap:0,marginBottom:2,...f},children:[C!==void 0&&C,E.jsxs("div",{style:{flex:1,minWidth:0,borderRadius:8,border:`1px solid ${o?M:b}`,background:m,overflow:"hidden",transition:"border-color 0.2s, box-shadow 0.2s",boxShadow:o?`0 0 0 3px ${x}14, 0 1px 2px rgba(0,0,0,0.04)`:"0 1px 2px rgba(0,0,0,0.02)"},children:[E.jsxs("div",{style:{minHeight:32,display:"flex",alignItems:"center",padding:"8px 14px",gap:8,background:h},children:[E.jsx("span",{"aria-hidden":!0,style:{width:6,height:6,borderRadius:999,background:x,flexShrink:0}}),E.jsx("span",{style:{fontSize:11,fontWeight:500,letterSpacing:"0.2px",color:"var(--color-text-secondary, #4a4a52)",flexShrink:0,whiteSpace:"nowrap"},children:e}),i!==void 0&&E.jsxs(E.Fragment,{children:[E.jsx("span",{style:{color:"var(--color-text-tertiary, #8a8d96)",fontSize:11},children:"·"}),i]}),A!==void 0&&A,E.jsx("span",{style:{flex:1}}),S!==void 0&&S,a!==void 0&&a]}),R!==void 0&&R,I,N!==void 0&&N]})]})}/**
2
+ * @license lucide-react v0.563.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const Ys=[["path",{d:"M12 6v6h4",key:"135r8i"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],vs=$e("clock-3",Ys);/**
7
+ * @license lucide-react v0.563.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */const Vs=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M12 12v6",key:"3ahymv"}],["path",{d:"m15 15-3-3-3 3",key:"15xj92"}]],Tr=$e("file-up",Vs);/**
12
+ * @license lucide-react v0.563.0 - ISC
13
+ *
14
+ * This source code is licensed under the ISC license.
15
+ * See the LICENSE file in the root directory of this source tree.
16
+ */const Ws=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]],pn=$e("history",Ws);/**
17
+ * @license lucide-react v0.563.0 - ISC
18
+ *
19
+ * This source code is licensed under the ISC license.
20
+ * See the LICENSE file in the root directory of this source tree.
21
+ */const ws=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],Xs=$e("house",ws);/**
22
+ * @license lucide-react v0.563.0 - ISC
23
+ *
24
+ * This source code is licensed under the ISC license.
25
+ * See the LICENSE file in the root directory of this source tree.
26
+ */const js=[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}]],$s=$e("list-checks",js);/**
27
+ * @license lucide-react v0.563.0 - ISC
28
+ *
29
+ * This source code is licensed under the ISC license.
30
+ * See the LICENSE file in the root directory of this source tree.
31
+ */const ks=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],Ks=$e("upload",ks),rt="dql:notebook-research-changed";function or(e={}){typeof window>"u"||window.dispatchEvent(new CustomEvent(rt,{detail:e}))}function qs(e){var r;if(e.type!=="sql"&&e.type!=="dql")return null;const t=e.type==="sql"?e.content.trim():((r=PE(e.content))==null?void 0:r.trim())??"";return t?{id:e.id,name:e.name||`${e.type.toUpperCase()} ${e.id.slice(-4)}`,type:e.type,sql:t,fingerprint:Js(t)}:null}function Js(e){const t=e.replace(/\s+/g," ").trim();let r=2166136261;for(let s=0;s<t.length;s+=1)r^=t.charCodeAt(s),r=Math.imul(r,16777619);return`fnv1a:${(r>>>0).toString(16).padStart(8,"0")}`}function Qs(e,t){if(!(e!=null&&e.sourceCellId))return null;const r=t.get(e.sourceCellId);return r?e.sourceCellFingerprint?e.sourceCellFingerprint===r.fingerprint?"synced":"changed":"unknown":"missing"}function zs(e,t,r){var i,S,a,A,R,N,I,c,_;if(!e)return null;if(!t)return{kind:"new",label:"AI: New",title:"Ask AI from this source cell.",syncStatus:null};if(r==="changed")return{kind:"changed",label:"AI history changed",title:"This source cell changed after the saved AI history. Ask AI again before promotion.",run:t,syncStatus:r};if(r==="missing")return{kind:"missing",label:"AI history missing",title:"The linked source cell is missing. Keep the reviewed SQL as standalone evidence or resolve the source.",run:t,syncStatus:r};if(t.status==="running")return{kind:"run_preview",label:"AI running",title:"AI preview is running.",run:t,syncStatus:r};if(t.reviewStatus==="completed"||t.reviewStatus==="certified")return{kind:"done",label:t.reviewStatus==="certified"?"AI certified":"AI done",title:"This AI history item is closed.",run:t,syncStatus:r};if(t.status==="error"||(i=t.reviewChecklist)!=null&&i.blockers.length)return{kind:"blocked",label:"AI blocked",title:t.error||((S=t.reviewChecklist)==null?void 0:S.blockers[0])||"Resolve this AI history blocker before DQL promotion.",run:t,syncStatus:r};if(t.reviewStatus==="rejected")return{kind:"done",label:"AI rejected",title:"This AI history item was rejected and is closed.",run:t,syncStatus:r};const s=!!((a=t.reviewedSql)!=null&&a.trim()),n=!!((A=t.generatedSql)!=null&&A.trim()),T=!!(t.contextPackId||Array.isArray(t.evidence)&&t.evidence.length>0||t.evidence&&typeof t.evidence=="object"&&Object.keys(t.evidence).length>0),o=!!((R=t.resultPreview)!=null&&R.columns.length||(((N=t.resultPreview)==null?void 0:N.rowCount)??((I=t.resultPreview)==null?void 0:I.rows.length)??0)>0);return!s&&n?{kind:"review_sql",label:"AI: Review SQL",title:"Review generated SQL before promoting this work into a reusable block.",run:t,syncStatus:r}:!s&&!n?{kind:"review_sql",label:"AI: Add SQL",title:"Add, paste, or generate SQL for this research item.",run:t,syncStatus:r}:T?o?t.dqlPromotionAction==="reuse_existing"?{kind:"reuse",label:"AI: Reuse",title:"A similar certified block was found. Review whether this should reuse existing logic.",run:t,syncStatus:r}:t.draftBlockPath&&((c=t.reviewChecklist)!=null&&c.readyForCertificationReview)?{kind:"cert_ready",label:"AI: Certify",title:"The DQL draft is ready for certification review.",run:t,syncStatus:r}:!t.draftBlockPath&&((_=t.reviewChecklist)!=null&&_.readyForDqlDraft)?{kind:"draft_ready",label:"AI: Draft ready",title:"Reviewed SQL and evidence are ready for DQL draft creation.",run:t,syncStatus:r}:t.draftBlockPath?{kind:"complete",label:"AI: Draft saved",title:"Open the DQL draft and complete metadata, tests, lineage, and certification review.",run:t,syncStatus:r}:{kind:"unknown",label:"AI: Review",title:"Continue the AI history review workflow.",run:t,syncStatus:r}:{kind:"run_preview",label:"AI: Preview",title:"Run a bounded preview before DQL promotion.",run:t,syncStatus:r}:{kind:"review_context",label:"AI: Context",title:"Save metadata evidence before DQL draft creation.",run:t,syncStatus:r}}const Zs=2e3,cE={notebooks:[],owners:[]};let Ft=cE,Yt=0,ir=!0,qe=null,ar=!0;function eT(e={}){const{refreshKey:t="",pollMs:r=3e4,activeOnly:s=!0}=e,[n,T]=l.useState(cE),[o,i]=l.useState(!1),S=l.useRef(0);l.useEffect(()=>{let A=!1,R;const N=(c=!1)=>{const _=S.current+1;S.current=_,i(!0),tT(c,s).then(O=>{!A&&S.current===_&&T(O)}).catch(()=>{!A&&S.current===_&&T(cE)}).finally(()=>{!A&&S.current===_&&i(!1)})},I=()=>N(!0);return N(),window.addEventListener(rt,I),r>0&&(R=window.setInterval(N,r)),()=>{A=!0,window.removeEventListener(rt,I),R&&window.clearInterval(R)}},[s,r,t]);const a=l.useMemo(()=>{const A=new Map;for(const R of n.notebooks)A.set(R.path,R);return A},[n.notebooks]);return{summaries:n.notebooks,ownerSummaries:n.owners,byPath:a,loading:o}}function tT(e=!1,t=!0){const r=Date.now();return!e&&qe&&ar===t?qe:!e&&ir===t&&Yt>0&&r-Yt<Zs?Promise.resolve(Ft):(ar=t,qe=q.listNotebookResearch({activeOnly:t,limit:1}).then(s=>(Ft={notebooks:s.notebooks,owners:s.owners},ir=t,Yt=Date.now(),Ft)).finally(()=>{qe=null}),qe)}function ET(e,t={}){if(e.blocked>0)return`${ge(e.blocked)} blocked`;if(e.expiredOpen>0)return`${ge(e.expiredOpen)} 30d+`;if(e.staleOpen>0)return`${ge(e.staleOpen)} stale`;const r=Dn(e.nextAction);if(r){const s=typeof e.nextActionCount=="number"&&e.nextActionCount>0?e.nextActionCount:void 0;return t.includeCount&&s?`${r} · ${ge(s)}`:r}return e.certificationReady>0?`${ge(e.certificationReady)} cert`:e.draftReady>0?`${ge(e.draftReady)} draft`:`${ge(e.total)} AI`}function rT(e){const t=Dn(e.nextAction);return[`${e.total.toLocaleString()} AI histor${e.total===1?"y item":"y items"}`,t&&e.nextActionCount?`Next: ${t} (${e.nextActionCount.toLocaleString()})`:void 0,`${e.draftReady.toLocaleString()} draft ready`,`${e.certificationReady.toLocaleString()} certification ready`,`${e.blocked.toLocaleString()} blocked`,`${e.staleOpen.toLocaleString()} stale open`,`${e.expiredOpen.toLocaleString()} open 30d+`].filter(Boolean).join(" · ")}function Dn(e){switch(e){case"fix_blockers":return"Fix blockers";case"review_sql":return"Review SQL";case"review_context":return"Review context";case"run_preview":return"Run preview";case"reuse_existing":return"Reuse";case"create_dql_draft":return"Create draft";case"open_certification":return"Certify";case"complete_review":return"Complete";case"continue_review":return"Continue";default:return}}function nT(e){if(e.blocked>0||e.expiredOpen>0)return"error";if(e.staleOpen>0)return"warning";switch(e.nextAction){case"fix_blockers":return"error";case"review_sql":case"review_context":case"run_preview":case"reuse_existing":return"warning";case"open_certification":return"success";case"create_dql_draft":case"complete_review":return"accent";case"continue_review":return"neutral"}return e.certificationReady>0?"success":e.draftReady>0?"accent":"neutral"}function Pn(e,t){return Rr(e.nextAction)-Rr(t.nextAction)||t.blocked-e.blocked||t.expiredOpen-e.expiredOpen||t.staleOpen-e.staleOpen||t.certificationReady-e.certificationReady||t.draftReady-e.draftReady||t.total-e.total||e.title.localeCompare(t.title)}function Rr(e){switch(e){case"fix_blockers":return 0;case"review_sql":return 1;case"review_context":return 2;case"run_preview":return 3;case"reuse_existing":return 4;case"create_dql_draft":return 5;case"open_certification":return 6;case"complete_review":return 7;case"continue_review":return 8;default:return 9}}function ge(e){return e>99?"99+":e.toLocaleString()}function sT({onOpenFile:e,onOpenResearchFile:t}){const{state:r,dispatch:s}=le(),n=ne[r.themeMode],T=r.files.map(c=>c.path).join("|"),{byPath:o,summaries:i,ownerSummaries:S}=eT({refreshKey:T}),a=l.useMemo(()=>{const c=new Map;for(const _ of r.files)(_.type==="notebook"||_.type==="workbook")&&c.set(_.path,_);return c},[r.files]),A=l.useMemo(()=>i.reduce((c,_)=>(_.total<=0||(c.totalResearch+=_.total,a.has(_.path)?(c.openResearch+=_.total,c.openNotebooks+=1):(c.missingResearch+=_.total,c.missingNotebooks+=1)),c),{totalResearch:0,openResearch:0,openNotebooks:0,missingResearch:0,missingNotebooks:0}),[a,i]);A.totalResearch,[`${A.openResearch.toLocaleString()} AI history`,`${A.openNotebooks.toLocaleString()} notebook${A.openNotebooks===1?"":"s"}`,S.length>0?`${S.length.toLocaleString()} owner${S.length===1?"":"s"}`:void 0,A.missingNotebooks>0?`${A.missingNotebooks.toLocaleString()} missing`:void 0].filter(Boolean).join(" · "),l.useMemo(()=>i.filter(c=>c.total>0).map(c=>({summary:c,file:a.get(c.path)})).sort(TT),[a,i]);const R=l.useMemo(()=>r.files.filter(c=>c.type==="notebook"||c.type==="workbook").map(c=>({file:c,researchSummary:o.get(c.path)})).sort(oT).slice(0,5),[o,r.files]);l.useMemo(()=>i.reduce((c,_)=>a.has(_.path)?{total:c.total+_.total,draftReady:c.draftReady+_.draftReady,certificationReady:c.certificationReady+_.certificationReady,blocked:c.blocked+_.blocked,staleOpen:c.staleOpen+_.staleOpen,expiredOpen:c.expiredOpen+_.expiredOpen,missingNotebooks:A.missingNotebooks}:c,{total:0,draftReady:0,certificationReady:0,blocked:0,staleOpen:0,expiredOpen:0,missingNotebooks:A.missingNotebooks}),[a,A.missingNotebooks,i]);const N=l.useMemo(()=>{for(const c of i){if(c.total<=0)continue;const _=a.get(c.path);if(_)return _}},[i,a]),I=()=>{N&&(t?t(N):e(N))};return E.jsx("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",background:n.appBg,padding:28,overflow:"auto"},children:E.jsxs("div",{style:{width:"min(720px, 100%)",border:`1px solid ${n.cellBorder}`,borderRadius:8,background:n.cellBg,padding:24,display:"flex",flexDirection:"column",gap:18},children:[E.jsxs("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:20},children:[E.jsxs("div",{children:[E.jsx("h1",{style:{margin:0,color:n.textPrimary,fontSize:24,lineHeight:1.2,fontWeight:800},children:"Notebook workspace"}),E.jsx("p",{style:{margin:"8px 0 0",color:n.textSecondary,fontSize:13,lineHeight:1.55,maxWidth:520},children:"Open a notebook to explore data — write SQL/DQL, chart the results, and promote governed blocks. Create a new one to start a focused analysis."})]}),E.jsx("span",{style:{width:38,height:38,borderRadius:8,background:"var(--color-accent-purple-soft)",color:"var(--color-accent-purple)",display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:E.jsx(tr,{size:20,strokeWidth:2,"aria-hidden":"true"})})]}),E.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:10},children:[E.jsx(vt,{label:"New Notebook",Icon:tr,primary:!0,onClick:()=>s({type:"OPEN_NEW_NOTEBOOK_MODAL"}),t:n}),E.jsx(vt,{label:"New Block",Icon:ss,onClick:()=>s({type:"OPEN_NEW_BLOCK_MODAL"}),t:n}),E.jsx(vt,{label:"Home",Icon:Xs,onClick:()=>s({type:"SET_MAIN_VIEW",view:"apps"}),t:n})]}),E.jsxs("div",{style:{borderTop:`1px solid ${n.cellBorder}`,paddingTop:16},children:[E.jsx("div",{style:{color:n.textMuted,fontSize:11,fontWeight:800,textTransform:"uppercase",marginBottom:10},children:"Recent notebooks"}),R.length===0?E.jsx("div",{style:{color:n.textMuted,fontSize:13},children:"No notebooks yet — create one to get started."}):E.jsx("div",{style:{display:"grid",gap:8},children:R.map(({file:c,researchSummary:_})=>E.jsx(RT,{file:c,researchSummary:_,onOpen:()=>e(c),t:n},c.path))})]}),A.openResearch>0&&N&&E.jsxs("button",{type:"button",onClick:I,style:{display:"flex",alignItems:"center",gap:10,textAlign:"left",border:`1px solid ${n.cellBorder}`,borderRadius:8,background:n.inputBg,color:n.textSecondary,padding:"10px 12px",cursor:"pointer",fontFamily:n.font},children:[E.jsx($s,{size:16,strokeWidth:2,color:n.accent,"aria-hidden":"true"}),E.jsxs("span",{style:{flex:1,minWidth:0},children:[E.jsx("span",{style:{display:"block",fontSize:12.5,fontWeight:750,color:n.textPrimary},children:"Saved AI history"}),E.jsxs("span",{style:{display:"block",fontSize:11,color:n.textMuted,marginTop:1,lineHeight:1.4},children:[A.openResearch.toLocaleString()," saved run",A.openResearch===1?"":"s"," across"," ",A.openNotebooks.toLocaleString()," notebook",A.openNotebooks===1?"":"s"," — reopen for audit, review, or DQL promotion."]})]}),E.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:5,color:n.accent,fontSize:12,fontWeight:850,flexShrink:0},children:["Open history",E.jsx(ps,{size:14,strokeWidth:2.1,"aria-hidden":"true"})]})]})]})})}function vt({label:e,Icon:t,onClick:r,primary:s=!1,t:n}){const[T,o]=l.useState(!1);return E.jsxs("button",{onClick:r,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),style:{height:34,borderRadius:6,border:`1px solid ${s||T?n.accent:n.cellBorder}`,background:s?T?n.accentHover:n.accent:T?n.sidebarItemHover:n.inputBg,color:s?"var(--accent-on, #fff)":T?n.textPrimary:n.textSecondary,display:"inline-flex",alignItems:"center",gap:8,padding:"0 12px",fontSize:12,fontWeight:800,fontFamily:n.font,cursor:"pointer"},children:[E.jsx(t,{size:15,strokeWidth:2,"aria-hidden":"true"}),e]})}function TT(e,t){return e.file&&!t.file?-1:!e.file&&t.file?1:Pn(e.summary,t.summary)}function oT(e,t){if(e.researchSummary&&t.researchSummary){const r=Pn(e.researchSummary,t.researchSummary);if(r!==0)return r}return e.researchSummary?-1:t.researchSummary?1:e.file.name.localeCompare(t.file.name)}function iT(e,t){return aT(nT(e),t)}function aT(e,t){switch(e){case"error":return t.error;case"warning":return t.warning;case"success":return t.success;case"accent":return t.accent;case"neutral":default:return t.textMuted}}function RT({file:e,researchSummary:t,onOpen:r,t:s}){const[n,T]=l.useState(!1),o=e.type==="workbook"?Ds:In,i=t?iT(t,s):s.textMuted;return E.jsxs("button",{onClick:r,onMouseEnter:()=>T(!0),onMouseLeave:()=>T(!1),style:{height:36,border:`1px solid ${n?s.accent:s.cellBorder}`,borderRadius:6,background:n?s.sidebarItemHover:s.inputBg,color:n?s.textPrimary:s.textSecondary,display:"flex",alignItems:"center",gap:9,padding:"0 10px",cursor:"pointer",fontFamily:s.font},children:[E.jsx(o,{size:15,strokeWidth:2,color:n?s.accent:s.textMuted,"aria-hidden":"true"}),E.jsx("span",{style:{flex:1,minWidth:0,textAlign:"left",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name.replace(/\.(dqlnb|dql)$/i,"")}),t&&t.total>0&&E.jsx("span",{title:rT(t),style:{border:`1px solid ${i}44`,background:`${i}12`,color:i,borderRadius:999,padding:"2px 7px",fontSize:10,fontWeight:800,flexShrink:0},children:ET(t,{includeCount:!0})}),E.jsx("span",{style:{color:s.textMuted,fontSize:11},children:e.type})]})}function AT({cell:e,themeMode:t,onApplyParam:r}){const{dispatch:s}=le(),n=ne[t],[T,o]=l.useState(!1),i=e.paramConfig??{paramType:"text",label:"Parameter",defaultValue:"",options:[]},S=e.paramValue??i.defaultValue,a=I=>{s({type:"UPDATE_CELL",id:e.id,updates:{paramConfig:{...i,...I}}})},A=I=>{s({type:"SET_PARAM_VALUE",id:e.id,value:I})},R=(i.options??[]).map(I=>I.trim()).filter(Boolean),N=e.name?`{{${e.name}}}`:null;return E.jsxs("div",{style:{background:n.cellBg,border:`1px solid ${n.cellBorder}`,borderLeft:`3px solid ${n.warning}`,borderRadius:8,overflow:"hidden"},children:[T&&E.jsxs("div",{style:{background:n.tableHeaderBg,borderBottom:`1px solid ${n.cellBorder}`,padding:"12px 14px",display:"flex",flexDirection:"column",gap:10},children:[E.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:2},children:[E.jsx("span",{style:{fontSize:11,fontWeight:600,letterSpacing:"0.06em",color:n.warning,fontFamily:n.fontMono,textTransform:"uppercase"},children:"Configure Parameter"}),E.jsx("button",{onClick:()=>o(!1),title:"Done",style:{background:n.warning,border:"none",borderRadius:5,cursor:"pointer",color:"#000",fontSize:11,fontWeight:700,fontFamily:n.font,padding:"3px 10px",display:"flex",alignItems:"center",gap:4},children:"✓ Done"})]}),E.jsxs("div",{style:{display:"flex",gap:10,flexWrap:"wrap"},children:[E.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:3,flex:"1 1 120px"},children:[E.jsx("span",{style:{fontSize:10,color:n.textMuted,fontFamily:n.font},children:"Variable name"}),E.jsx("input",{value:e.name??"",onChange:I=>s({type:"UPDATE_CELL",id:e.id,updates:{name:I.target.value||void 0}}),placeholder:"e.g. start_date",style:{background:n.inputBg,border:`1px solid ${n.inputBorder}`,borderRadius:4,color:n.textPrimary,fontSize:12,fontFamily:n.fontMono,padding:"4px 7px",outline:"none"}})]}),E.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:3,flex:"1 1 120px"},children:[E.jsx("span",{style:{fontSize:10,color:n.textMuted,fontFamily:n.font},children:"Display label"}),E.jsx("input",{value:i.label,onChange:I=>a({label:I.target.value}),placeholder:"e.g. Start Date",style:{background:n.inputBg,border:`1px solid ${n.inputBorder}`,borderRadius:4,color:n.textPrimary,fontSize:12,fontFamily:n.font,padding:"4px 7px",outline:"none"}})]}),E.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:3,flex:"1 1 100px"},children:[E.jsx("span",{style:{fontSize:10,color:n.textMuted,fontFamily:n.font},children:"Type"}),E.jsxs("select",{value:i.paramType,onChange:I=>a({paramType:I.target.value}),style:{background:n.inputBg,border:`1px solid ${n.inputBorder}`,borderRadius:4,color:n.textPrimary,fontSize:12,fontFamily:n.font,padding:"4px 7px",outline:"none"},children:[E.jsx("option",{value:"text",children:"Text"}),E.jsx("option",{value:"number",children:"Number"}),E.jsx("option",{value:"date",children:"Date"}),E.jsx("option",{value:"select",children:"Select"})]})]}),E.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:3,flex:"1 1 120px"},children:[E.jsx("span",{style:{fontSize:10,color:n.textMuted,fontFamily:n.font},children:"Default value"}),E.jsx("input",{type:i.paramType==="number"?"number":i.paramType==="date"?"date":"text",value:i.defaultValue,onChange:I=>a({defaultValue:I.target.value}),style:{background:n.inputBg,border:`1px solid ${n.inputBorder}`,borderRadius:4,color:n.textPrimary,fontSize:12,fontFamily:n.font,padding:"4px 7px",outline:"none"}})]})]}),i.paramType==="select"&&E.jsxs("label",{style:{display:"flex",flexDirection:"column",gap:3},children:[E.jsx("span",{style:{fontSize:10,color:n.textMuted,fontFamily:n.font},children:"Options (one per line)"}),E.jsx("textarea",{value:(i.options??[]).join(`
32
+ `),onChange:I=>a({options:I.target.value.split(`
33
+ `)}),rows:4,placeholder:`Option A
34
+ Option B
35
+ Option C`,style:{background:n.inputBg,border:`1px solid ${n.inputBorder}`,borderRadius:4,color:n.textPrimary,fontSize:12,fontFamily:n.fontMono,padding:"5px 7px",outline:"none",resize:"vertical"}})]})]}),E.jsxs("div",{style:{padding:"12px 14px",display:"flex",alignItems:"center",gap:12,flexWrap:"wrap"},children:[E.jsx("button",{onClick:()=>o(I=>!I),title:T?"Close config":"Configure parameter",style:{background:T?`${n.warning}18`:"transparent",border:`1px solid ${T?n.warning:n.cellBorder}`,borderRadius:5,cursor:"pointer",color:T?n.warning:n.textMuted,width:26,height:26,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,transition:"all 0.15s"},children:T?E.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:E.jsx("path",{d:"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.749.749 0 1 1 1.06-1.06L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"})}):E.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:E.jsx("path",{d:"M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM8 5.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5ZM8 7a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z"})})}),E.jsx("span",{style:{fontSize:13,fontWeight:500,fontFamily:n.font,color:n.textSecondary,flexShrink:0},children:i.label}),E.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:3},children:[i.paramType==="select"?E.jsx("select",{value:S,onChange:I=>A(I.target.value),style:{background:n.inputBg,border:`1px solid ${n.inputBorder}`,borderRadius:5,color:n.textPrimary,fontSize:13,fontFamily:n.font,padding:"5px 10px",outline:"none",minWidth:160},children:R.length===0?E.jsx("option",{value:"",children:"— no options configured —"}):R.map(I=>E.jsx("option",{value:I,children:I},I))}):E.jsx("input",{type:i.paramType,value:S,onChange:I=>A(I.target.value),style:{background:n.inputBg,border:`1px solid ${n.inputBorder}`,borderRadius:5,color:n.textPrimary,fontSize:13,fontFamily:i.paramType==="number"?n.fontMono:n.font,padding:"5px 10px",outline:"none",minWidth:160}}),N&&E.jsx("span",{style:{fontSize:10,fontFamily:n.fontMono,color:n.warning,opacity:.8},children:N})]}),S&&E.jsx("span",{style:{fontSize:12,fontFamily:n.fontMono,color:n.textPrimary,background:`${n.warning}18`,border:`1px solid ${n.warning}40`,borderRadius:4,padding:"2px 8px",flexShrink:0},children:S}),e.name&&r&&E.jsx("button",{onClick:()=>r(e.name),title:`Re-run cells that use {{${e.name}}}`,style:{background:n.warning,border:"none",borderRadius:5,cursor:"pointer",color:"#000",fontSize:11,fontWeight:600,fontFamily:n.font,padding:"4px 12px",flexShrink:0,transition:"opacity 0.15s"},children:"Apply"})]})]})}function ST({cell:e,themeMode:t,title:r,subtitle:s,color:n,badge:T}){const o=ne[t];return E.jsx(un,{typeLabel:r,typeColor:n,idleBorder:o.cellBorder,background:o.cellBg,headerBackground:`${o.tableHeaderBg}80`,title:e.name?E.jsx("span",{style:{fontSize:12,fontFamily:o.fontMono,color:o.textSecondary},children:e.name}):void 0,actions:T?E.jsx("span",{style:{fontSize:9,fontFamily:o.fontMono,fontWeight:600,letterSpacing:"0.1em",color:o.textMuted,textTransform:"uppercase",padding:"2px 6px",border:`1px solid ${o.cellBorder}`,borderRadius:3},children:T}):void 0,children:E.jsx("div",{style:{padding:"12px 14px",fontSize:12,color:o.textSecondary,lineHeight:1.5,fontFamily:o.font},children:s})})}function lT(e){return e.type==="param"?"param":e.type.toUpperCase()}function IT({cells:e,index:t,content:r,themeMode:s,onInsertHandle:n}){const T=ne[s],[o,i]=l.useState(!1),S=l.useRef(null),a=l.useMemo(()=>e.slice(0,t).filter(N=>N.name&&N.name.trim().length>0),[e,t]),A=l.useMemo(()=>On(r),[r]);l.useEffect(()=>{if(!o)return;const N=I=>{var c;(c=S.current)!=null&&c.contains(I.target)||i(!1)};return document.addEventListener("mousedown",N),()=>document.removeEventListener("mousedown",N)},[o]);const R=A.length===0?"df":A.length===1?`df: ${A[0]}`:`df: ${A[0]} +${A.length-1}`;return E.jsxs("div",{ref:S,style:{position:"relative",flexShrink:0},children:[E.jsxs("button",{onClick:()=>i(N=>!N),title:"Insert an upstream dataframe handle ({{name}})",style:{display:"inline-flex",alignItems:"center",gap:4,fontSize:10,fontFamily:T.fontMono,fontWeight:600,letterSpacing:"0.04em",color:A.length>0?T.accent:T.textMuted,background:A.length>0?`${T.accent}14`:"transparent",border:`1px solid ${A.length>0?`${T.accent}55`:T.btnBorder}`,borderRadius:4,padding:"1px 6px",cursor:"pointer",textTransform:"lowercase",transition:"border-color 0.15s, color 0.15s"},children:[R,E.jsx("span",{style:{fontSize:8,opacity:.7},children:"▾"})]}),o&&E.jsxs("div",{style:{position:"absolute",top:"calc(100% + 4px)",left:0,zIndex:20,minWidth:220,maxWidth:280,background:T.cellBg,border:`1px solid ${T.cellBorder}`,borderRadius:6,boxShadow:"0 6px 16px rgba(0,0,0,0.25)",padding:4,display:"flex",flexDirection:"column",gap:2},children:[E.jsx("div",{style:{fontSize:9,fontFamily:T.font,fontWeight:700,letterSpacing:"0.1em",color:T.textMuted,textTransform:"uppercase",padding:"4px 8px 2px"},children:"Upstream dataframes"}),a.length===0&&E.jsx("div",{style:{fontSize:11,fontFamily:T.font,color:T.textMuted,padding:"6px 8px 8px",lineHeight:1.4},children:"No named upstream cells yet. Name a cell (click its header) to expose it here."}),a.map(N=>{const I=N.name?A.includes(N.name):!1;return E.jsxs("button",{onClick:()=>{N.name&&n(N.name),i(!1)},style:{display:"flex",alignItems:"center",gap:8,padding:"5px 8px",background:I?`${T.accent}14`:"transparent",border:"none",borderRadius:4,cursor:"pointer",textAlign:"left",color:T.textPrimary,fontFamily:T.fontMono,fontSize:11},onMouseEnter:c=>{I||(c.currentTarget.style.background=T.tableRowHover)},onMouseLeave:c=>{I||(c.currentTarget.style.background="transparent")},children:[E.jsx("span",{style:{fontSize:9,fontFamily:T.fontMono,fontWeight:700,color:T.textMuted,minWidth:36},children:lT(N)}),E.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:N.name}),I&&E.jsx("span",{style:{fontSize:9,color:T.accent,fontWeight:700,letterSpacing:"0.08em"},children:"IN USE"})]},N.id)})]})]})}function Mn({theme:e,value:t,fields:r,allowKinds:s,placeholder:n="Select field",minWidth:T=180,onChange:o}){const[i,S]=l.useState(!1),[a,A]=l.useState(""),R=l.useRef(null),N=l.useRef(null);l.useEffect(()=>{if(!i)return;const O=C=>{var L;(L=R.current)!=null&&L.contains(C.target)||S(!1)};return document.addEventListener("mousedown",O),()=>document.removeEventListener("mousedown",O)},[i]),l.useEffect(()=>{if(i){const O=setTimeout(()=>{var C;return(C=N.current)==null?void 0:C.focus()},20);return()=>clearTimeout(O)}A("")},[i]);const I=l.useMemo(()=>r.find(O=>O.name===t),[r,t]),c=l.useMemo(()=>{if(!a)return r;const O=a.toLowerCase();return r.filter(C=>C.name.toLowerCase().includes(O))},[r,a]),_=O=>s?s.includes(O):!0;return E.jsxs("div",{ref:R,style:{position:"relative",minWidth:T},children:[E.jsxs("button",{onClick:()=>S(O=>!O),style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"4px 8px",background:e.editorBg,border:`1px solid ${e.cellBorder}`,borderRadius:3,cursor:"pointer",color:I?e.textPrimary:e.textMuted,fontFamily:e.fontMono,fontSize:11,textAlign:"left"},children:[I?E.jsxs(E.Fragment,{children:[E.jsx("span",{style:{color:Et(I.kind,e.accent),fontWeight:700,width:12},children:tt(I.kind)}),E.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:I.name})]}):E.jsx("span",{style:{flex:1},children:n}),E.jsx("span",{style:{color:e.textMuted,fontSize:9},children:"▾"})]}),i&&E.jsxs("div",{style:{position:"absolute",top:"calc(100% + 2px)",left:0,right:0,zIndex:20,background:e.cellBg,border:`1px solid ${e.cellBorder}`,borderRadius:6,boxShadow:"0 6px 16px rgba(0,0,0,0.28)",padding:4,maxHeight:260,overflow:"auto",minWidth:Math.max(T,200)},children:[E.jsx("input",{ref:N,value:a,onChange:O=>A(O.target.value),placeholder:"Search fields...",style:{width:"100%",padding:"4px 6px",marginBottom:4,background:e.editorBg,border:`1px solid ${e.cellBorder}`,borderRadius:3,color:e.textPrimary,fontFamily:e.font,fontSize:11,outline:"none"}}),t&&E.jsx("button",{onClick:()=>{o(void 0),S(!1)},style:{width:"100%",textAlign:"left",padding:"3px 6px",background:"transparent",border:"none",borderRadius:3,color:e.textMuted,fontSize:10,fontFamily:e.font,cursor:"pointer",fontStyle:"italic"},children:"Clear selection"}),c.length===0&&E.jsx("div",{style:{padding:"6px 8px",fontSize:11,color:e.textMuted,fontFamily:e.font},children:"No matches"}),c.map(O=>{const C=_(O.kind);return E.jsxs("button",{onClick:()=>{C&&(o(O.name),S(!1))},disabled:!C,title:C?O.name:`${rr(O.kind)} — not selectable here`,style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"4px 6px",background:"transparent",border:"none",borderRadius:3,cursor:C?"pointer":"not-allowed",textAlign:"left",color:C?e.textPrimary:e.textMuted,fontFamily:e.fontMono,fontSize:11,opacity:C?1:.55},onMouseEnter:L=>{C&&(L.currentTarget.style.background=e.tableRowHover)},onMouseLeave:L=>{L.currentTarget.style.background="transparent"},children:[E.jsx("span",{style:{color:Et(O.kind,e.accent),fontWeight:700,width:12,textAlign:"center"},children:tt(O.kind)}),E.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:O.name}),E.jsx("span",{style:{fontSize:9,color:e.textMuted,fontFamily:e.font,textTransform:"uppercase",letterSpacing:"0.06em"},children:rr(O.kind)})]},O.name)})]})]})}function Gt({theme:e}){return E.jsxs("div",{style:{fontSize:10,fontFamily:e.font,color:e.textMuted,background:`${e.cellBorder}60`,borderRadius:3,padding:"3px 8px",letterSpacing:"0.02em"},children:["No semantic binding — metrics and dimensions unavailable. Use ",E.jsx("code",{children:"@metric(...)"})," or ",E.jsx("code",{children:"@dim(...)"})," upstream to populate typed pickers."]})}function nt({theme:e,accentColor:t,cellLabel:r,cellName:s,description:n,upstreamOptions:T,onPick:o}){return E.jsxs("div",{style:{background:e.cellBg,border:`1px solid ${e.cellBorder}`,borderLeft:`3px solid ${t}`,borderRadius:6,padding:"18px 20px",fontFamily:e.font},children:[E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:10},children:[E.jsx("span",{style:{fontSize:10,fontFamily:e.fontMono,fontWeight:700,letterSpacing:"0.08em",color:t,background:`${t}18`,padding:"2px 6px",borderRadius:3,textTransform:"uppercase"},children:r}),s&&E.jsx("span",{style:{fontSize:12,fontFamily:e.fontMono,color:e.textSecondary},children:s})]}),E.jsx("div",{style:{fontSize:12,color:e.textSecondary,marginBottom:8,lineHeight:1.5},children:n}),T.length===0?E.jsxs("div",{style:{fontSize:11,color:e.textMuted,background:`${t}0A`,border:`1px dashed ${e.cellBorder}`,borderRadius:4,padding:"10px 12px",lineHeight:1.6},children:[E.jsx("div",{style:{fontWeight:600,color:e.textSecondary,marginBottom:4},children:"No dataframe available yet"}),E.jsxs("div",{children:["1. Add a ",E.jsx("span",{style:{fontFamily:e.fontMono,color:e.textSecondary},children:"SQL"})," or"," ",E.jsx("span",{style:{fontFamily:e.fontMono,color:e.textSecondary},children:"Block"})," cell above this one.",E.jsx("br",{}),"2. Run it ",E.jsx("span",{style:{fontFamily:e.fontMono},children:"(⌘↵)"})," and give the cell a name.",E.jsx("br",{}),"3. Come back here — named upstream cells show up as chips you can pick."]}),E.jsxs("div",{style:{marginTop:8,fontSize:10,color:e.textMuted,fontStyle:"italic"},children:["Tip: use ",E.jsx("span",{style:{fontFamily:e.fontMono},children:"@metric(...)"})," and"," ",E.jsx("span",{style:{fontFamily:e.fontMono},children:"@dim(...)"})," in the upstream SQL and metrics / dimensions appear with typed icons in the pickers here."]})]}):E.jsxs(E.Fragment,{children:[E.jsx("div",{style:{fontSize:10,color:e.textMuted,marginBottom:6,letterSpacing:"0.06em",textTransform:"uppercase",fontWeight:700},children:"Pick an upstream dataframe"}),E.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:T.map(i=>E.jsx("button",{onClick:()=>i.name&&o(i.name),style:{fontSize:11,fontFamily:e.fontMono,color:t,background:`${t}14`,border:`1px solid ${t}55`,borderRadius:4,padding:"3px 10px",cursor:"pointer"},children:i.name},i.id))})]})]})}function dE(e){return e==="measure"?"#":e==="temporal"?"📅":"A"}function CE(e,t){return e==="measure"?t.accent:e==="temporal"?t.warning:t.success}const OT=[{key:"x",label:"X-axis"},{key:"y",label:"Y-axis"},{key:"color",label:"Color"},{key:"facet",label:"Faceting"}],NT={chart:"bar"},hE="application/x-dql-chart-column";function mn(e,t){e.effectAllowed="move",e.setData(hE,JSON.stringify(t)),e.setData("text/plain",t.column)}function cT(e){const t=e.getData(hE);if(!t)return null;try{return JSON.parse(t)}catch{return null}}function dT({cell:e,cells:t,index:r,themeMode:s,onUpdate:n}){const T=ne[s],o=e.chartConfig??NT,i=o.chart??"bar",S=l.useMemo(()=>{const O=e.upstream;if(O)return t.find(C=>C.name===O)},[e.upstream,t]),a=l.useMemo(()=>t.slice(0,r).filter(O=>O.name&&O.result),[t,r]),A=S==null?void 0:S.result,R=l.useMemo(()=>gt(A),[A]),N=l.useMemo(()=>{if(!A)return new Map;const O=new Map,C=new Set(R.metrics),L=new Set(R.dimensions);for(const f of A.columns)C.has(f)?O.set(f,"measure"):L.has(f)?O.set(f,"dimension"):O.set(f,ms(fs(f,A.rows)));return O},[A,R]),I=l.useMemo(()=>A?A.columns.filter(O=>N.get(O)==="measure"):[],[A,N]),c=l.useMemo(()=>A?A.columns.filter(O=>N.get(O)!=="measure"):[],[A,N]),_=O=>{n({chartConfig:{...o,...O}})};return!e.upstream||!A?E.jsx(nt,{theme:T,accentColor:"#a371f7",cellLabel:"Chart",cellName:e.name,description:"Charts render from an upstream dataframe — the rows of a named SQL, DQL, or Block cell above. Drag measures to Y, dimensions to X.",upstreamOptions:a,onPick:O=>n({upstream:O})}):E.jsxs("div",{style:{display:"flex",flexDirection:"column",background:T.cellBg,borderTop:`1px solid ${T.cellBorder}`,borderRight:`1px solid ${T.cellBorder}`,borderBottom:`1px solid ${T.cellBorder}`,borderLeft:"3px solid #a371f7",borderRadius:6,overflow:"hidden",fontFamily:T.font},children:[E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",borderBottom:`1px solid ${T.cellBorder}`,background:`${T.tableHeaderBg}60`},children:[E.jsx("span",{style:{fontSize:10,fontFamily:T.fontMono,fontWeight:700,letterSpacing:"0.08em",color:"#a371f7",background:"#a371f718",padding:"2px 6px",borderRadius:3,textTransform:"uppercase"},children:"Chart"}),e.name&&E.jsx("span",{style:{fontSize:12,fontFamily:T.fontMono,color:T.textSecondary},children:e.name}),E.jsxs("span",{style:{fontSize:11,color:T.textMuted,fontFamily:T.fontMono},children:["· df: ",e.upstream]}),E.jsx("button",{onClick:()=>n({upstream:void 0}),title:"Change upstream dataframe",style:{fontSize:10,background:"transparent",border:`1px solid ${T.btnBorder}`,borderRadius:3,color:T.textMuted,padding:"1px 6px",cursor:"pointer",fontFamily:T.fontMono},children:"change"}),E.jsx("div",{style:{flex:1}}),E.jsx("select",{value:i,onChange:O=>_({chart:O.target.value}),style:{fontSize:11,fontFamily:T.font,background:T.editorBg,color:T.textSecondary,border:`1px solid ${T.cellBorder}`,borderRadius:3,padding:"2px 6px",outline:"none"},children:yt.map(O=>E.jsx("option",{value:O.value,children:O.label},O.value))})]}),E.jsxs("div",{style:{display:"grid",gridTemplateColumns:"200px 240px 1fr",minHeight:320},children:[E.jsxs("div",{style:{borderRight:`1px solid ${T.cellBorder}`,padding:10,display:"flex",flexDirection:"column",gap:12,overflow:"auto"},children:[!R.hasSemanticBinding&&E.jsx(Gt,{theme:T}),E.jsx(Ar,{label:"Measures",columns:I,kinds:N,theme:T,onPick:O=>_({y:O}),pickHint:"Y-axis"}),E.jsx(Ar,{label:"Dimensions",columns:c,kinds:N,theme:T,onPick:O=>_({x:O}),pickHint:"X-axis"})]}),E.jsxs("div",{style:{borderRight:`1px solid ${T.cellBorder}`,padding:10,display:"flex",flexDirection:"column",gap:8},children:[E.jsxs("div",{style:{display:"flex",gap:4,borderBottom:`1px solid ${T.cellBorder}`,paddingBottom:4},children:[E.jsx(Sr,{label:"Data",active:!0,theme:T}),E.jsx(Sr,{label:"Style",theme:T})]}),OT.map(O=>E.jsx(CT,{slotKey:O.key,label:O.label,value:o[O.key],columns:A.columns,kinds:N,theme:T,onAssign:(C,L)=>{const f={[O.key]:C};L&&L!==O.key&&(f[L]=void 0),_(f)},onClear:()=>_({[O.key]:void 0})},O.key))]}),E.jsx("div",{style:{padding:10,minWidth:0,overflow:"hidden"},children:mE(i,A,s,o)})]})]})}function Ar({label:e,columns:t,kinds:r,theme:s,onPick:n,pickHint:T}){return E.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[E.jsx("div",{style:{fontSize:9,fontWeight:700,letterSpacing:"0.1em",color:s.textMuted,textTransform:"uppercase",fontFamily:s.font,padding:"0 2px"},children:e}),t.length===0&&E.jsx("span",{style:{fontSize:11,color:s.textMuted,fontFamily:s.font,padding:"2px 2px"},children:"None"}),t.map(o=>{const i=r.get(o)??"dimension";return E.jsxs("button",{onClick:()=>n(o),draggable:!0,onDragStart:S=>mn(S.dataTransfer,{column:o}),title:`Drag to an axis slot, or click to set as ${T}`,style:{display:"flex",alignItems:"center",gap:6,padding:"4px 6px",background:"transparent",border:"1px solid transparent",borderRadius:4,cursor:"grab",textAlign:"left",color:s.textPrimary,fontFamily:s.fontMono,fontSize:11,transition:"border-color 0.1s, background 0.1s"},onMouseEnter:S=>{S.currentTarget.style.borderColor=s.cellBorder,S.currentTarget.style.background=s.tableRowHover},onMouseLeave:S=>{S.currentTarget.style.borderColor="transparent",S.currentTarget.style.background="transparent"},children:[E.jsx("span",{style:{fontSize:9,fontFamily:s.fontMono,fontWeight:700,color:CE(i,s),width:14,textAlign:"center"},children:dE(i)}),E.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:o})]},o)})]})}function Sr({label:e,active:t,theme:r}){return E.jsx("span",{style:{fontSize:11,fontFamily:r.font,fontWeight:600,color:t?r.textPrimary:r.textMuted,padding:"3px 10px",borderRadius:3,background:t?r.tableHeaderBg:"transparent",cursor:t?"default":"not-allowed"},children:e})}function CT({slotKey:e,label:t,value:r,columns:s,kinds:n,theme:T,onAssign:o,onClear:i}){const[S,a]=l.useState(!1),[A,R]=l.useState(!1),N=l.useRef(null);l.useEffect(()=>{if(!S)return;const L=f=>{var x;(x=N.current)!=null&&x.contains(f.target)||a(!1)};return document.addEventListener("mousedown",L),()=>document.removeEventListener("mousedown",L)},[S]);const I=L=>{L.dataTransfer.types.includes(hE)&&(L.preventDefault(),L.dataTransfer.dropEffect="move",A||R(!0))},c=()=>R(!1),_=L=>{R(!1);const f=cT(L.dataTransfer);f&&(L.preventDefault(),o(f.column,f.fromSlot),a(!1))},O=A?T.accent:r?`${T.accent}77`:T.cellBorder,C=A?`${T.accent}22`:r?`${T.accent}10`:T.editorBg;return E.jsxs("div",{ref:N,style:{position:"relative"},children:[E.jsx("div",{style:{fontSize:9,fontWeight:700,letterSpacing:"0.1em",color:T.textMuted,textTransform:"uppercase",fontFamily:T.font,marginBottom:3},children:t}),E.jsx("button",{onClick:()=>a(L=>!L),onDragOver:I,onDragEnter:I,onDragLeave:c,onDrop:_,style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"5px 8px",background:C,border:`1px dashed ${O}`,borderRadius:4,cursor:"pointer",color:r?T.textPrimary:T.textMuted,fontFamily:T.fontMono,fontSize:11,textAlign:"left",transition:"background 0.1s, border-color 0.1s"},children:r?E.jsxs(E.Fragment,{children:[E.jsxs("span",{draggable:!0,onDragStart:L=>{L.stopPropagation(),mn(L.dataTransfer,{column:r,fromSlot:e})},style:{display:"inline-flex",alignItems:"center",gap:6,flex:1,cursor:"grab",minWidth:0},children:[E.jsx("span",{style:{color:CE(n.get(r)??"dimension",T),fontWeight:700,width:14},children:dE(n.get(r)??"dimension")}),E.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r})]}),E.jsx("span",{onClick:L=>{L.stopPropagation(),i(),a(!1)},title:"Clear",style:{color:T.textMuted,fontSize:10,padding:"0 4px"},children:"✕"})]}):E.jsx("span",{children:A?"drop to set":"+ drop column"})}),S&&E.jsx("div",{style:{position:"absolute",top:"calc(100% + 2px)",left:0,right:0,zIndex:10,background:T.cellBg,border:`1px solid ${T.cellBorder}`,borderRadius:6,boxShadow:"0 6px 16px rgba(0,0,0,0.25)",padding:4,maxHeight:220,overflow:"auto"},children:s.map(L=>E.jsxs("button",{onClick:()=>{o(L),a(!1)},style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"4px 6px",background:"transparent",border:"none",borderRadius:3,cursor:"pointer",textAlign:"left",color:T.textPrimary,fontFamily:T.fontMono,fontSize:11},onMouseEnter:f=>{f.currentTarget.style.background=T.tableRowHover},onMouseLeave:f=>{f.currentTarget.style.background="transparent"},children:[E.jsx("span",{style:{color:CE(n.get(L)??"dimension",T),fontWeight:700,width:14},children:dE(n.get(L)??"dimension")}),E.jsx("span",{children:L})]},L))})]})}const pt=[{value:"eq",label:"=",needsValue:!0},{value:"neq",label:"!=",needsValue:!0},{value:"gt",label:">",needsValue:!0},{value:"gte",label:">=",needsValue:!0},{value:"lt",label:"<",needsValue:!0},{value:"lte",label:"<=",needsValue:!0},{value:"contains",label:"contains",needsValue:!0},{value:"not_contains",label:"does not contain",needsValue:!0},{value:"starts_with",label:"starts with",needsValue:!0},{value:"ends_with",label:"ends with",needsValue:!0},{value:"in",label:"in (list)",needsValue:!0},{value:"not_in",label:"not in (list)",needsValue:!0},{value:"between",label:"between (a, b)",needsValue:!0},{value:"is_null",label:"is empty",needsValue:!1},{value:"is_not_null",label:"is not empty",needsValue:!1}];function LE(e){return`${e}_${Math.random().toString(36).slice(2,10)}`}function LT(){return{mode:"keep",groups:[{id:LE("g"),combinator:"and",rules:[]}]}}function _T(e){const t=pt.find(r=>r.value===e.operation);return t?e.column?t.needsValue?`${e.column} ${t.label} ${e.value||"…"}`:`${e.column} ${t.label}`:"…":""}function uT({cell:e,cells:t,index:r,themeMode:s,onUpdate:n}){const T=ne[s],o=l.useMemo(LT,[e.id]),i=e.filterConfig??o,S=l.useMemo(()=>{const M=e.upstream??i.upstream;if(M)return t.find(b=>b.name===M)},[e.upstream,i.upstream,t]),a=l.useMemo(()=>t.slice(0,r).filter(M=>M.name&&M.result),[t,r]),A=S==null?void 0:S.result,R=(A==null?void 0:A.columns)??[],N=l.useMemo(()=>gt(A),[A]),I=M=>{n({filterConfig:M})},c=(M,b)=>{I({...i,groups:i.groups.map(m=>m.id===M?{...m,...b}:m)})},_=(M,b,m)=>{I({...i,groups:i.groups.map(h=>h.id===M?{...h,rules:h.rules.map(G=>G.id===b?{...G,...m}:G)}:h)})},O=M=>{I({...i,groups:i.groups.map(b=>b.id===M?{...b,rules:[...b.rules,{id:LE("r"),column:R[0]??"",operation:"eq",value:""}]}:b)})},C=(M,b)=>{I({...i,groups:i.groups.map(m=>m.id===M?{...m,rules:m.rules.filter(h=>h.id!==b)}:m)})},L=()=>{I({...i,groups:[...i.groups,{id:LE("g"),combinator:"and",rules:[]}]})},f=M=>{I({...i,groups:i.groups.filter(b=>b.id!==M)})};if(!S||!A)return E.jsx(nt,{theme:T,accentColor:"#ff7b72",cellLabel:"Filter",cellName:e.name,description:"Filter cells keep or drop rows from an upstream dataframe using column-by-column rules — no SQL needed.",upstreamOptions:a,onPick:M=>n({upstream:M})});const x={background:T.editorBg,border:`1px solid ${T.cellBorder}`,borderRadius:3,color:T.textPrimary,fontSize:11,fontFamily:T.fontMono,padding:"3px 6px",outline:"none"};return E.jsxs("div",{style:{background:T.cellBg,border:`1px solid ${T.cellBorder}`,borderLeft:"3px solid #ff7b72",borderRadius:6,fontFamily:T.font,overflow:"hidden"},children:[E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",borderBottom:`1px solid ${T.cellBorder}`,background:`${T.tableHeaderBg}60`},children:[E.jsx("span",{style:{fontSize:10,fontFamily:T.fontMono,fontWeight:700,letterSpacing:"0.08em",color:"#ff7b72",background:"#ff7b7218",padding:"2px 6px",borderRadius:3,textTransform:"uppercase"},children:"Filter"}),e.name&&E.jsx("span",{style:{fontSize:12,fontFamily:T.fontMono,color:T.textSecondary},children:e.name}),E.jsxs("span",{style:{fontSize:11,color:T.textMuted,fontFamily:T.fontMono},children:["· df: ",S.name]}),E.jsx("button",{onClick:()=>n({upstream:void 0}),style:{fontSize:10,background:"transparent",border:`1px solid ${T.btnBorder}`,borderRadius:3,color:T.textMuted,padding:"1px 6px",cursor:"pointer",fontFamily:T.fontMono},children:"change"}),E.jsx("div",{style:{flex:1}}),E.jsx("div",{style:{display:"inline-flex",border:`1px solid ${T.cellBorder}`,borderRadius:3,overflow:"hidden"},children:["keep","drop"].map(M=>E.jsx("button",{onClick:()=>I({...i,mode:M}),style:{fontSize:10,fontFamily:T.font,fontWeight:600,letterSpacing:"0.04em",padding:"3px 10px",background:i.mode===M?`${T.accent}20`:"transparent",color:i.mode===M?T.accent:T.textMuted,border:"none",cursor:"pointer",textTransform:"uppercase"},children:M==="keep"?"Keep rows":"Drop rows"},M))})]}),E.jsxs("div",{style:{padding:12,display:"flex",flexDirection:"column",gap:10},children:[!N.hasSemanticBinding&&E.jsx(Gt,{theme:T}),i.groups.map((M,b)=>E.jsxs("div",{style:{border:`1px solid ${T.cellBorder}`,borderRadius:6,padding:10,background:`${T.tableHeaderBg}30`,display:"flex",flexDirection:"column",gap:8},children:[E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[E.jsxs("span",{style:{fontSize:9,fontWeight:700,letterSpacing:"0.1em",color:T.textMuted,textTransform:"uppercase",fontFamily:T.font},children:["Group ",b+1]}),E.jsx("div",{style:{display:"inline-flex",border:`1px solid ${T.cellBorder}`,borderRadius:3,overflow:"hidden"},children:["and","or"].map(m=>E.jsx("button",{onClick:()=>c(M.id,{combinator:m}),style:{fontSize:10,fontFamily:T.fontMono,padding:"2px 8px",background:M.combinator===m?`${T.accent}20`:"transparent",color:M.combinator===m?T.accent:T.textMuted,border:"none",cursor:"pointer",textTransform:"uppercase",fontWeight:700},children:m},m))}),E.jsx("div",{style:{flex:1}}),i.groups.length>1&&E.jsx("button",{onClick:()=>f(M.id),style:{fontSize:10,background:"transparent",border:`1px solid ${T.btnBorder}`,borderRadius:3,color:T.textMuted,padding:"1px 6px",cursor:"pointer",fontFamily:T.font},children:"Remove group"})]}),M.rules.length===0&&E.jsx("div",{style:{fontSize:11,color:T.textMuted,fontFamily:T.font,padding:"4px 2px"},children:"No rules yet — add one below."}),M.rules.map(m=>{const h=pt.find(G=>G.value===m.operation)??pt[0];return E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[E.jsx(Mn,{theme:T,value:m.column||void 0,fields:N.fields,placeholder:"Select field",minWidth:180,onChange:G=>_(M.id,m.id,{column:G??""})}),E.jsx("select",{value:m.operation,onChange:G=>_(M.id,m.id,{operation:G.target.value}),style:{...x,minWidth:120},children:pt.map(G=>E.jsx("option",{value:G.value,children:G.label},G.value))}),h.needsValue&&E.jsx("input",{value:m.value,onChange:G=>_(M.id,m.id,{value:G.target.value}),placeholder:"Value",style:{...x,flex:1,minWidth:100}}),E.jsx("button",{onClick:()=>C(M.id,m.id),title:"Remove rule",style:{background:"transparent",border:`1px solid ${T.btnBorder}`,borderRadius:3,color:T.textMuted,fontSize:10,padding:"2px 6px",cursor:"pointer"},children:"✕"})]},m.id)}),E.jsx("div",{children:E.jsx("button",{onClick:()=>O(M.id),style:{fontSize:10,fontFamily:T.font,color:T.accent,background:"transparent",border:`1px dashed ${T.accent}55`,borderRadius:3,padding:"3px 10px",cursor:"pointer",letterSpacing:"0.04em"},children:"+ Add filter"})})]},M.id)),E.jsx("div",{children:E.jsx("button",{onClick:L,style:{fontSize:10,fontFamily:T.font,color:T.textMuted,background:"transparent",border:`1px dashed ${T.btnBorder}`,borderRadius:3,padding:"3px 10px",cursor:"pointer",letterSpacing:"0.04em"},children:"+ Add filter group"})})]}),E.jsxs("div",{style:{padding:"6px 12px",borderTop:`1px solid ${T.cellBorder}`,background:`${T.tableHeaderBg}40`,fontSize:10,fontFamily:T.fontMono,color:T.textMuted,letterSpacing:"0.04em",overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"},children:[i.mode==="keep"?"KEEP WHERE ":"DROP WHERE ",i.groups.map(M=>M.rules.map(_T).join(` ${M.combinator.toUpperCase()} `)).filter(Boolean).map(M=>`(${M})`).join(" AND ")||"—"]})]})}function lr(e){return typeof e=="number"?e:typeof e=="string"&&e.trim()!==""&&!isNaN(Number(e))?Number(e):null}function _E(e,t){if(t==="count")return e.length;if(t==="count_distinct")return new Set(e.map(s=>String(s))).size;if(t==="last"){const s=e[e.length-1];return lr(s)}const r=e.map(lr).filter(s=>s!==null);if(r.length===0)return null;switch(t){case"sum":return r.reduce((s,n)=>s+n,0);case"avg":return r.reduce((s,n)=>s+n,0)/r.length;case"min":return r.reduce((s,n)=>n<s?n:s,r[0]);case"max":return r.reduce((s,n)=>n>s?n:s,r[0])}}const pT=[{value:"sum",label:"Sum"},{value:"avg",label:"Average"},{value:"count",label:"Count"},{value:"min",label:"Min"},{value:"max",label:"Max"},{value:"last",label:"Last"}],DT=[{value:"number",label:"Number"},{value:"currency",label:"Currency"},{value:"percent",label:"Percent"},{value:"duration",label:"Duration"}],PT={aggregation:"count",format:"number"};function MT(e,t,r){return r==="count"?_E(e.rows,"count"):!t||!e.columns.includes(t)?null:_E(e.rows.map(s=>s[t]),r)}function mT(e,t){if(e===null)return"—";switch(t){case"currency":return e.toLocaleString(void 0,{style:"currency",currency:"USD",maximumFractionDigits:2});case"percent":return`${(e*100).toFixed(1)}%`;case"duration":return e<60?`${e.toFixed(1)}s`:e<3600?`${(e/60).toFixed(1)}m`:`${(e/3600).toFixed(1)}h`;case"number":default:return Math.abs(e)>=1e3?e.toLocaleString(void 0,{maximumFractionDigits:2}):e.toFixed(Number.isInteger(e)?0:2)}}function fT({cell:e,cells:t,index:r,themeMode:s,onUpdate:n}){const T=ne[s],o=e.singleValueConfig??PT,i=o.aggregation??"count",S=o.format??"number",a=l.useMemo(()=>{const C=e.upstream??o.upstream;if(C)return t.find(L=>L.name===C)},[e.upstream,o.upstream,t]),A=l.useMemo(()=>t.slice(0,r).filter(C=>C.name&&C.result),[t,r]),R=a==null?void 0:a.result,N=l.useMemo(()=>gt(R),[R]),I=l.useMemo(()=>R?MT(R,o.metric,i):null,[R,o.metric,i]),c=C=>{n({singleValueConfig:{...o,...C}})};if(!a||!R)return E.jsx(nt,{theme:T,accentColor:"#a371f7",cellLabel:"Single value",cellName:e.name,description:"Single-value cards render one KPI from an upstream dataframe — sum, avg, count, min, max, or last — with a format of your choice.",upstreamOptions:A,onPick:C=>n({upstream:C})});const _=mT(I,S),O={background:T.editorBg,border:`1px solid ${T.cellBorder}`,borderRadius:3,color:T.textPrimary,fontSize:11,fontFamily:T.fontMono,padding:"3px 6px",outline:"none"};return E.jsxs("div",{style:{background:T.cellBg,border:`1px solid ${T.cellBorder}`,borderLeft:"3px solid #a371f7",borderRadius:6,fontFamily:T.font,overflow:"hidden"},children:[E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",borderBottom:`1px solid ${T.cellBorder}`,background:`${T.tableHeaderBg}60`},children:[E.jsx("span",{style:{fontSize:10,fontFamily:T.fontMono,fontWeight:700,letterSpacing:"0.08em",color:"#a371f7",background:"#a371f718",padding:"2px 6px",borderRadius:3,textTransform:"uppercase"},children:"Single value"}),e.name&&E.jsx("span",{style:{fontSize:12,fontFamily:T.fontMono,color:T.textSecondary},children:e.name}),E.jsxs("span",{style:{fontSize:11,color:T.textMuted,fontFamily:T.fontMono},children:["· df: ",a.name]}),E.jsx("button",{onClick:()=>n({upstream:void 0}),style:{fontSize:10,background:"transparent",border:`1px solid ${T.btnBorder}`,borderRadius:3,color:T.textMuted,padding:"1px 6px",cursor:"pointer",fontFamily:T.fontMono},children:"change"})]}),E.jsxs("div",{style:{display:"grid",gridTemplateColumns:"280px 1fr"},children:[E.jsxs("div",{style:{padding:12,display:"flex",flexDirection:"column",gap:8,borderRight:`1px solid ${T.cellBorder}`},children:[E.jsx(at,{label:"Aggregation",theme:T,children:E.jsx("select",{value:i,onChange:C=>c({aggregation:C.target.value}),style:{...O,width:"100%"},children:pT.map(C=>E.jsx("option",{value:C.value,children:C.label},C.value))})}),i!=="count"&&E.jsxs(at,{label:"Metric field",theme:T,children:[E.jsx(Mn,{theme:T,value:o.metric,fields:N.fields,placeholder:"Select metric or column",minWidth:240,onChange:C=>c({metric:C})}),!N.hasSemanticBinding&&E.jsx(Gt,{theme:T})]}),E.jsx(at,{label:"Format",theme:T,children:E.jsx("select",{value:S,onChange:C=>c({format:C.target.value}),style:{...O,width:"100%"},children:DT.map(C=>E.jsx("option",{value:C.value,children:C.label},C.value))})}),E.jsx(at,{label:"Label",theme:T,children:E.jsx("input",{value:o.label??"",onChange:C=>c({label:C.target.value||void 0}),placeholder:"e.g. Total revenue",style:{...O,width:"100%"}})})]}),E.jsxs("div",{style:{padding:"24px 20px",display:"flex",flexDirection:"column",justifyContent:"center",gap:6},children:[E.jsx("div",{style:{fontSize:11,fontFamily:T.font,color:T.textMuted,letterSpacing:"0.06em",textTransform:"uppercase",fontWeight:600},children:o.label??`${i.toUpperCase()}${o.metric?` · ${o.metric}`:""}`}),E.jsx("div",{style:{fontSize:42,fontWeight:700,fontFamily:T.font,color:T.textPrimary,lineHeight:1.1,letterSpacing:"-0.02em"},children:_}),E.jsxs("div",{style:{fontSize:10,color:T.textMuted,fontFamily:T.fontMono},children:["from ",R.rows.length.toLocaleString()," rows"]})]})]})]})}function at({label:e,theme:t,children:r}){return E.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:3},children:[E.jsx("span",{style:{fontSize:9,fontWeight:700,letterSpacing:"0.1em",color:t.textMuted,textTransform:"uppercase",fontFamily:t.font},children:e}),r]})}const hT=["sum","avg","count","min","max","count_distinct"],UT={rows:[],columns:[],values:[]};function Ir(e,t){return t.map(r=>String(e[r]??"")).join("|")}function Vt(e,t){return e.metrics.includes(t)?"metric":e.dimensions.includes(t)?"dimension":"column"}function Or(e,t){const r=e.fields.filter(n=>n.kind===t),s=e.fields.filter(n=>n.kind!==t);return[...r,...s].map(n=>({name:n.name,kind:n.kind}))}function xT({cell:e,cells:t,index:r,themeMode:s,onUpdate:n}){const T=ne[s],o=e.pivotConfig??UT,i={upstream:o.upstream,rows:o.rows??[],columns:o.columns??[],values:o.values??[]},S=l.useMemo(()=>{const O=e.upstream??i.upstream;if(O)return t.find(C=>C.name===O)},[e.upstream,i.upstream,t]),a=l.useMemo(()=>t.slice(0,r).filter(O=>O.name&&O.result),[t,r]),A=S==null?void 0:S.result;A==null||A.columns;const R=l.useMemo(()=>gt(A),[A]),N=l.useMemo(()=>Or(R,"dimension"),[R]),I=l.useMemo(()=>Or(R,"metric"),[R]),c=O=>n({pivotConfig:O}),_=l.useMemo(()=>{if(!A||i.rows.length===0&&i.columns.length===0||i.values.length===0)return null;const O=new Set,C=new Map;for(const M of A.rows){const b=Ir(M,i.rows),m=Ir(M,i.columns);O.add(m);let h=C.get(b);if(!h){const y={};for(const V of i.rows)y[V]=M[V];h={row:y,groups:new Map},C.set(b,h)}const G=h.groups.get(m)??[];G.push(M),h.groups.set(m,G)}const L=[...O].sort(),f=L.map(M=>M===""?"value":M),x=[];for(const[,M]of C){const b=M,m=L.map(h=>{const G=b.groups.get(h)??[],y={};for(const V of i.values){const j=G.map(W=>W[V.column]);y[`${V.aggregation}(${V.column})`]=_E(j,V.aggregation)}return y});x.push({rowDims:b.row,values:m})}return{columnKeys:L,columnHeaders:f,body:x}},[i,A]);return!S||!A?E.jsx(nt,{theme:T,accentColor:"#a371f7",cellLabel:"Pivot",cellName:e.name,description:"Pivots reshape an upstream dataframe into a rows × columns grid. Pick dimensions for rows/columns and a metric for values.",upstreamOptions:a,onPick:O=>n({upstream:O})}):E.jsxs("div",{style:{background:T.cellBg,border:`1px solid ${T.cellBorder}`,borderLeft:"3px solid #a371f7",borderRadius:6,fontFamily:T.font,overflow:"hidden"},children:[E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",borderBottom:`1px solid ${T.cellBorder}`,background:`${T.tableHeaderBg}60`},children:[E.jsx("span",{style:{fontSize:10,fontFamily:T.fontMono,fontWeight:700,letterSpacing:"0.08em",color:"#a371f7",background:"#a371f718",padding:"2px 6px",borderRadius:3,textTransform:"uppercase"},children:"Pivot"}),e.name&&E.jsx("span",{style:{fontSize:12,fontFamily:T.fontMono,color:T.textSecondary},children:e.name}),E.jsxs("span",{style:{fontSize:11,color:T.textMuted,fontFamily:T.fontMono},children:["· df: ",S.name]}),E.jsx("button",{onClick:()=>n({upstream:void 0}),style:{fontSize:10,background:"transparent",border:`1px solid ${T.btnBorder}`,borderRadius:3,color:T.textMuted,padding:"1px 6px",cursor:"pointer",fontFamily:T.fontMono},children:"change"})]}),!R.hasSemanticBinding&&E.jsx("div",{style:{padding:"8px 12px 0"},children:E.jsx(Gt,{theme:T})}),E.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",padding:12,gap:10,borderBottom:`1px solid ${T.cellBorder}`},children:[E.jsx(Nr,{label:"Rows",selected:i.rows,availableFields:N.filter(O=>!i.rows.includes(O.name)),kindFor:O=>Vt(R,O),theme:T,onAdd:O=>c({...i,rows:[...i.rows,O]}),onRemove:O=>c({...i,rows:i.rows.filter(C=>C!==O)})}),E.jsx(Nr,{label:"Columns",selected:i.columns,availableFields:N.filter(O=>!i.columns.includes(O.name)),kindFor:O=>Vt(R,O),theme:T,onAdd:O=>c({...i,columns:[...i.columns,O]}),onRemove:O=>c({...i,columns:i.columns.filter(C=>C!==O)})}),E.jsx(gT,{values:i.values,availableFields:I,kindFor:O=>Vt(R,O),theme:T,onAdd:O=>c({...i,values:[...i.values,{column:O,aggregation:"sum"}]}),onUpdate:(O,C)=>c({...i,values:i.values.map((L,f)=>f===O?{...L,...C}:L)}),onRemove:O=>c({...i,values:i.values.filter((C,L)=>L!==O)})})]}),E.jsx("div",{style:{padding:12,overflowX:"auto"},children:!_||_.body.length===0?E.jsx("div",{style:{fontSize:11,color:T.textMuted,fontFamily:T.font},children:"Pick at least one row/column dimension and one value to see a preview."}):E.jsxs("table",{style:{width:"100%",borderCollapse:"collapse",fontFamily:T.fontMono,fontSize:11},children:[E.jsx("thead",{children:E.jsxs("tr",{children:[i.rows.map(O=>E.jsx("th",{style:{textAlign:"left",padding:"4px 8px",borderBottom:`1px solid ${T.cellBorder}`,color:T.textSecondary,fontWeight:600},children:O},O)),_.columnHeaders.map((O,C)=>E.jsx("th",{style:{textAlign:"right",padding:"4px 8px",borderBottom:`1px solid ${T.cellBorder}`,color:T.textSecondary,fontWeight:600},children:O},C))]})}),E.jsx("tbody",{children:_.body.slice(0,50).map((O,C)=>E.jsxs("tr",{children:[i.rows.map(L=>E.jsx("td",{style:{padding:"3px 8px",color:T.textPrimary,borderBottom:`1px solid ${T.cellBorder}30`},children:String(O.rowDims[L]??"")},L)),O.values.map((L,f)=>E.jsx("td",{style:{padding:"3px 8px",color:T.textPrimary,textAlign:"right",borderBottom:`1px solid ${T.cellBorder}30`},children:Object.values(L).map((x,M)=>E.jsx("div",{children:x===null?"—":typeof x=="number"?x.toLocaleString(void 0,{maximumFractionDigits:2}):String(x)},M))},f))]},C))})]})})]})}function Nr({label:e,selected:t,availableFields:r,kindFor:s,theme:n,onAdd:T,onRemove:o}){return E.jsx(fn,{label:e,theme:n,availableFields:r,onAdd:T,children:t.length===0?E.jsx("span",{style:{fontSize:11,color:n.textMuted,fontFamily:n.font},children:"+ add field"}):t.map(i=>{const S=s(i);return E.jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:4,padding:"2px 6px",background:`${n.accent}14`,border:`1px solid ${n.accent}55`,borderRadius:3,fontSize:11,fontFamily:n.fontMono,color:n.textPrimary,margin:2},children:[E.jsx("span",{style:{color:Et(S,n.accent),fontWeight:700},children:tt(S)}),i,E.jsx("span",{onClick:()=>o(i),style:{cursor:"pointer",color:n.textMuted,fontSize:10},title:"Remove",children:"✕"})]},i)})})}function gT({values:e,availableFields:t,kindFor:r,theme:s,onAdd:n,onUpdate:T,onRemove:o}){return E.jsx(fn,{label:"Values",theme:s,availableFields:t,onAdd:n,children:e.length===0?E.jsx("span",{style:{fontSize:11,color:s.textMuted,fontFamily:s.font},children:"+ add value"}):e.map((i,S)=>{const a=r(i.column);return E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,margin:2},children:[E.jsx("select",{value:i.aggregation,onChange:A=>T(S,{aggregation:A.target.value}),style:{background:s.editorBg,border:`1px solid ${s.cellBorder}`,borderRadius:3,color:s.textSecondary,fontSize:10,fontFamily:s.fontMono,padding:"1px 4px"},children:hT.map(A=>E.jsx("option",{value:A,children:A},A))}),E.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:4,padding:"2px 6px",background:`${s.accent}14`,border:`1px solid ${s.accent}55`,borderRadius:3,fontSize:11,fontFamily:s.fontMono,color:s.textPrimary},children:[E.jsx("span",{style:{color:Et(a,s.accent),fontWeight:700},children:tt(a)}),i.column,E.jsx("span",{onClick:()=>o(S),style:{cursor:"pointer",color:s.textMuted,fontSize:10},children:"✕"})]})]},S)})})}function fn({label:e,theme:t,availableFields:r,onAdd:s,children:n}){const[T,o]=l.useState(!1),i=l.useRef(null);return l.useEffect(()=>{if(!T)return;const S=a=>{var A;(A=i.current)!=null&&A.contains(a.target)||o(!1)};return document.addEventListener("mousedown",S),()=>document.removeEventListener("mousedown",S)},[T]),E.jsxs("div",{ref:i,style:{position:"relative",display:"flex",flexDirection:"column",gap:4},children:[E.jsx("div",{style:{fontSize:9,fontWeight:700,letterSpacing:"0.1em",color:t.textMuted,textTransform:"uppercase",fontFamily:t.font},children:e}),E.jsx("div",{onClick:()=>o(S=>!S),style:{minHeight:42,border:`1px dashed ${t.cellBorder}`,borderRadius:4,padding:4,cursor:"pointer",display:"flex",flexWrap:"wrap",alignItems:"center"},children:n}),T&&r.length>0&&E.jsx("div",{style:{position:"absolute",top:"calc(100% + 2px)",left:0,right:0,zIndex:10,background:t.cellBg,border:`1px solid ${t.cellBorder}`,borderRadius:6,boxShadow:"0 6px 16px rgba(0,0,0,0.25)",padding:4,maxHeight:200,overflow:"auto"},children:r.map(S=>E.jsxs("button",{onClick:()=>{s(S.name),o(!1)},style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"4px 8px",background:"transparent",border:"none",borderRadius:3,cursor:"pointer",textAlign:"left",color:t.textPrimary,fontFamily:t.fontMono,fontSize:11},onMouseEnter:a=>{a.currentTarget.style.background=t.tableRowHover},onMouseLeave:a=>{a.currentTarget.style.background="transparent"},children:[E.jsx("span",{style:{color:Et(S.kind,t.accent),fontWeight:700,width:12},children:tt(S.kind)}),E.jsx("span",{children:S.name})]},S.name))})]})}const Rt="#79c0ff";function yT({cell:e,cells:t,index:r,themeMode:s,onUpdate:n}){const T=ne[s],o=e.tableConfig??{},i=l.useMemo(()=>{const N=e.upstream??o.upstream;if(N)return t.find(I=>I.name===N)},[e.upstream,o.upstream,t]),S=l.useMemo(()=>t.slice(0,r).filter(N=>N.name&&N.result),[t,r]),a=i==null?void 0:i.result,A=o.visibleColumns,R=l.useMemo(()=>{if(!a)return;if(!A||A.length===0)return a;const N=new Set(a.columns),I=A.filter(c=>N.has(c));return I.length===0?a:{...a,columns:I}},[a,A]);return!i||!R?E.jsx(nt,{theme:T,accentColor:Rt,cellLabel:"Table",cellName:e.name,description:"Renders an upstream dataframe — the rows of a named SQL, DQL, or Block cell above — as a sortable, exportable table. Use visibleColumns in tableConfig to pin a subset.",upstreamOptions:S,onPick:N=>n({upstream:N})}):E.jsxs("div",{style:{display:"flex",flexDirection:"column",background:T.cellBg,border:`1px solid ${T.cellBorder}`,borderLeft:`3px solid ${Rt}`,borderRadius:6,overflow:"hidden",fontFamily:T.font},children:[E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",borderBottom:`1px solid ${T.cellBorder}`,background:`${T.tableHeaderBg}60`},children:[E.jsx("span",{style:{fontSize:10,fontFamily:T.fontMono,fontWeight:700,letterSpacing:"0.08em",color:Rt,background:`${Rt}18`,padding:"2px 6px",borderRadius:3,textTransform:"uppercase"},children:"Table"}),e.name&&E.jsx("span",{style:{fontSize:12,fontFamily:T.fontMono,color:T.textSecondary},children:e.name}),E.jsxs("span",{style:{fontSize:11,color:T.textMuted,fontFamily:T.fontMono},children:["· df: ",e.upstream??o.upstream]}),E.jsx("button",{onClick:()=>n({upstream:void 0}),title:"Change upstream dataframe",style:{fontSize:10,background:"transparent",border:`1px solid ${T.btnBorder}`,borderRadius:3,color:T.textMuted,padding:"1px 6px",cursor:"pointer",fontFamily:T.fontMono},children:"change"}),E.jsx("div",{style:{flex:1}}),E.jsxs("span",{style:{fontSize:11,color:T.textMuted,fontFamily:T.fontMono},children:[R.rows.length.toLocaleString()," rows · ",R.columns.length," cols"]})]}),E.jsx(fE,{result:R,themeMode:s})]})}function GT(e,t,r){if(r){const s=e.find(n=>n.name===r);if(s!=null&&s.content)return s.content}for(let s=t-1;s>=0;s--){const n=e[s];if((n.type==="sql"||n.type==="dql")&&n.content)return n.content}}function cr(e,t){const r="ai_sql_draft",s=(e||r).toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"").slice(0,48)||r,n=new Set(t.map(i=>i.name).filter(Boolean));let T=s,o=2;for(;n.has(T);)T=`${s}_${o}`,o+=1;return T}function BT({cell:e,cells:t,index:r,themeMode:s,onUpdate:n}){const{dispatch:T}=le(),o=ne[s],i={history:[],...e.chatConfig},S=(R,N,I)=>{const c=R.trim();if(!c)return;const _=ie("sql",c);_.name=cr(N,t),_.correctionProvenance=Ze({question:I==null?void 0:I.question,generatedSql:c,sourceRunId:I==null?void 0:I.sourceRunId}),T({type:"ADD_CELL",cell:_,afterId:e.id})},a=R=>{var _,O,C,L,f;const N=(R.sql??((_=R.dqlArtifact)==null?void 0:_.source)??"").trim();if(!N)return;const I=(C=(O=R.dqlArtifact)==null?void 0:O.source)==null?void 0:C.trim(),c=ie(I?"dql":"sql",I||N);c.name=cr(R.title??((L=R.dqlArtifact)==null?void 0:L.name),t),R.result&&(c.result=R.result,c.status="success",c.executionCount=1),R.chartConfig&&(c.chartConfig=R.chartConfig),c.correctionProvenance=Ze({question:R.question,generatedSql:R.sql??((f=R.dqlArtifact)==null?void 0:f.compiledSql),generatedDql:I,sourceRunId:R.sourceRunId}),R.dqlArtifact&&(c.dqlArtifact={source:R.dqlArtifact.source,sql:R.sql,name:R.dqlArtifact.name,sourcePath:R.dqlArtifact.sourcePath,kind:R.dqlArtifact.kind,metrics:R.dqlArtifact.metrics,dimensions:R.dqlArtifact.dimensions,parameters:R.dqlArtifact.parameters,parameterValues:R.dqlArtifact.parameterValues,persistence:R.dqlArtifact.persistence,trustState:R.dqlArtifact.trustState,compiledSql:R.dqlArtifact.compiledSql??R.sql,...R.question?{question:R.question}:{}},c.dqlParameterValues=R.dqlArtifact.parameterValues),T({type:"ADD_CELL",cell:c,afterId:e.id})},A=GT(t,r,i.upstream);return E.jsx("div",{style:{height:"min(560px, 68vh)",display:"flex",minHeight:0,background:o.cellBg,borderRadius:6,overflow:"hidden"},children:E.jsx(dn,{themeMode:s,title:"Chat",scopeHint:"Ask a metric, SQL draft, comparison, or dashboard — grounded in your blocks and semantic layer",audience:"analyst",initialMode:"auto",workspaceContext:A?{upstreamSql:A}:void 0,initialItems:i.thread??void 0,onItemsChange:R=>n({chatConfig:{...i,thread:R}}),threadId:i.threadId,onThreadIdChange:R=>n({chatConfig:{...i,threadId:R}}),onInsertSql:S,onInsertDql:a})})}const HT=[{id:"select-all",label:"Select all rows",description:"Read all rows from a CSV file with a row limit",category:"SQL",code:"SELECT * FROM read_csv_auto('data/filename.csv') LIMIT 100"},{id:"group-by",label:"Group and aggregate",description:"Group rows and compute count + sum",category:"SQL",code:`SELECT
36
+ category,
37
+ COUNT(*) AS count,
38
+ SUM(amount) AS total
39
+ FROM read_csv_auto('data/filename.csv')
40
+ GROUP BY category
41
+ ORDER BY total DESC`},{id:"filter-date",label:"Filter by date range",description:"Filter rows between two dates",category:"SQL",code:`SELECT *
42
+ FROM read_csv_auto('data/filename.csv')
43
+ WHERE date_column >= '2024-01-01'
44
+ AND date_column < '2025-01-01'`},{id:"window-rank",label:"Window function: rank",description:"Rank rows within groups using ROW_NUMBER()",category:"SQL",code:`SELECT
45
+ *,
46
+ ROW_NUMBER() OVER (PARTITION BY category ORDER BY amount DESC) AS rank
47
+ FROM read_csv_auto('data/filename.csv')`},{id:"cte",label:"CTE (WITH clause)",description:"Define a named subquery with WITH",category:"SQL",code:`WITH base AS (
48
+ SELECT *
49
+ FROM read_csv_auto('data/filename.csv')
50
+ WHERE amount > 0
51
+ )
52
+ SELECT
53
+ category,
54
+ SUM(amount) AS total
55
+ FROM base
56
+ GROUP BY category`},{id:"join",label:"Join two tables",description:"Join two CSV files on a shared key",category:"SQL",code:`SELECT a.*, b.name
57
+ FROM read_csv_auto('data/table_a.csv') AS a
58
+ JOIN read_csv_auto('data/table_b.csv') AS b
59
+ ON a.id = b.id`},{id:"pivot",label:"Pivot / unpivot",description:"Pivot a column into multiple columns",category:"SQL",code:`SELECT *
60
+ FROM (
61
+ SELECT category, quarter, amount
62
+ FROM read_csv_auto('data/filename.csv')
63
+ ) PIVOT (SUM(amount) FOR quarter IN ('Q1', 'Q2', 'Q3', 'Q4'))`},{id:"dql-block",label:"DQL block (basic)",description:"Minimal DQL block with a table visualization",category:"DQL",code:`block "My Block" {
64
+ domain = "analytics"
65
+ type = "custom"
66
+ description = "Describe what this block does"
67
+ owner = "data-team"
68
+ tags = ["analytics"]
69
+
70
+ query = """
71
+ SELECT *
72
+ FROM read_csv_auto('data/filename.csv')
73
+ LIMIT 100
74
+ """
75
+
76
+ visualization {
77
+ chart = "table"
78
+ }
79
+ }`},{id:"dql-block-bar",label:"DQL block with bar chart",description:"DQL block with params, bar chart, and a test assertion",category:"DQL",code:`block "Revenue by Segment" {
80
+ domain = "revenue"
81
+ type = "custom"
82
+ description = "Revenue grouped by segment"
83
+ owner = "data-team"
84
+ tags = ["revenue"]
85
+
86
+ params {
87
+ period = "current_quarter"
88
+ }
89
+
90
+ query = """
91
+ SELECT
92
+ segment_tier AS segment,
93
+ SUM(amount) AS revenue
94
+ FROM read_csv_auto('data/revenue.csv')
95
+ WHERE fiscal_period = \${period}
96
+ GROUP BY segment_tier
97
+ ORDER BY revenue DESC
98
+ """
99
+
100
+ visualization {
101
+ chart = "bar"
102
+ x = segment
103
+ y = revenue
104
+ }
105
+
106
+ tests {
107
+ assert row_count > 0
108
+ }
109
+ }`},{id:"dql-semantic-metric",label:"Semantic metric reference",description:"Reference a metric and dimension from the semantic layer in a SQL cell",category:"DQL",code:`SELECT @dim(segment), @metric(total_revenue)
110
+ FROM fct_revenue
111
+ GROUP BY @dim(segment)
112
+ ORDER BY @metric(total_revenue) DESC`},{id:"dql-semantic-block",label:"Semantic block (inline)",description:"DQL block that references a named metric from the semantic layer — no SQL duplication",category:"DQL",code:`block "ARR by Plan Tier" {
113
+ domain = "revenue"
114
+ type = "semantic"
115
+ owner = "data-team"
116
+ description = "Annual Recurring Revenue by subscription plan tier"
117
+ tags = ["arr", "revenue", "saas"]
118
+
119
+ metrics = ["arr"]
120
+ dimensions = ["plan_tier"]
121
+
122
+ visualization {
123
+ chart = "bar"
124
+ x = plan_tier
125
+ y = arr
126
+ }
127
+
128
+ tests {
129
+ assert row_count > 0
130
+ }
131
+ }`},{id:"revenue-by-segment",label:"Revenue by segment",description:"Aggregate revenue totals, deal count, and average deal size per segment",category:"Analysis",code:`SELECT
132
+ segment_tier,
133
+ SUM(amount) AS total_revenue,
134
+ COUNT(*) AS deals,
135
+ ROUND(AVG(amount), 0) AS avg_deal
136
+ FROM read_csv_auto('data/revenue.csv')
137
+ GROUP BY segment_tier
138
+ ORDER BY total_revenue DESC`},{id:"quarterly-trend",label:"Quarterly trend",description:"Revenue totals grouped by fiscal year and quarter",category:"Analysis",code:`SELECT
139
+ fiscal_year || ' ' || fiscal_quarter AS period,
140
+ SUM(amount) AS revenue
141
+ FROM read_csv_auto('data/revenue.csv')
142
+ GROUP BY fiscal_year, fiscal_quarter
143
+ ORDER BY fiscal_year, fiscal_quarter`}];function bT({onInsert:e,themeMode:t,cellType:r}){const s=ne[t],[n,T]=l.useState(!1),[o,i]=l.useState(null),S=l.useRef(null),a=HT.filter(N=>r==="dql"?N.category==="DQL":N.category==="SQL"||N.category==="Analysis"),A=Array.from(new Set(a.map(N=>N.category)));l.useEffect(()=>{if(!n)return;function N(I){S.current&&!S.current.contains(I.target)&&T(!1)}return document.addEventListener("mousedown",N),()=>document.removeEventListener("mousedown",N)},[n]);function R(N){e(N),T(!1)}return E.jsxs("div",{ref:S,style:{position:"relative",display:"inline-block"},children:[E.jsxs("button",{title:"Insert template snippet",onClick:()=>T(N=>!N),style:{height:22,padding:"0 8px",fontSize:10,fontFamily:s.font,fontWeight:600,letterSpacing:"0.04em",color:n?s.accent:s.textMuted,background:n?`${s.accent}15`:"transparent",border:`1px solid ${n?s.accent+"50":s.btnBorder}`,borderRadius:4,cursor:"pointer",display:"flex",alignItems:"center",gap:4,transition:"all 0.15s",whiteSpace:"nowrap"},children:[E.jsx("svg",{width:"10",height:"10",viewBox:"0 0 16 16",fill:"currentColor",children:E.jsx("path",{d:"M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"})}),"Templates"]}),n&&E.jsx("div",{style:{position:"absolute",top:"calc(100% + 4px)",left:0,zIndex:300,width:300,maxHeight:360,overflowY:"auto",background:s.modalBg,border:`1px solid ${s.cellBorder}`,borderRadius:8,boxShadow:"0 8px 24px rgba(0,0,0,0.3)",padding:"6px 0"},children:A.map(N=>E.jsxs("div",{children:[E.jsx("div",{style:{padding:"6px 12px 4px",fontSize:10,fontWeight:700,fontFamily:s.font,letterSpacing:"0.08em",textTransform:"uppercase",color:s.textMuted},children:N}),a.filter(I=>I.category===N).map(I=>E.jsxs("button",{onMouseEnter:()=>i(I.id),onMouseLeave:()=>i(null),onClick:()=>R(I.code),style:{width:"100%",padding:"7px 12px",textAlign:"left",background:o===I.id?s.sidebarItemHover:"transparent",border:"none",cursor:"pointer",display:"flex",flexDirection:"column",gap:2,transition:"background 0.1s"},children:[E.jsx("span",{style:{fontSize:12,fontWeight:600,fontFamily:s.font,color:s.textPrimary,lineHeight:1.4},children:I.label}),E.jsx("span",{style:{fontSize:11,fontFamily:s.font,color:s.textMuted,lineHeight:1.4},children:I.description})]},I.id))]},N))})]})}function At(e){return(e??"").trim().replace(/;+\s*$/,"").replace(/\s+/g," ")}function Xe(e){var R,N,I,c,_,O,C,L,f,x,M,b,m,h;const t=e.correctionProvenance,r=((t==null?void 0:t.generatedSql)??((R=e.dqlArtifact)==null?void 0:R.sql)??((N=e.dqlArtifact)==null?void 0:N.compiledSql)??"").trim(),s=((t==null?void 0:t.generatedDql)??((I=e.dqlArtifact)==null?void 0:I.source)??"").trim(),n=(_=(t==null?void 0:t.question)??((c=e.dqlArtifact)==null?void 0:c.question))==null?void 0:_.trim(),T=!!((O=e.dqlArtifact)!=null&&O.sourcePath||((C=e.dqlArtifact)==null?void 0:C.persistence)==="saved"||((L=e.dqlArtifact)==null?void 0:L.trustState)==="certified"||((f=e.dqlArtifact)==null?void 0:f.reviewState)==="certified"),o=e.type==="dql"?(((x=e.execution)==null?void 0:x.executedSql)??((M=e.execution)==null?void 0:M.compiledSql)??"").trim():e.content.trim(),i=e.type==="dql"?!!s&&s!==e.content.trim():!!r&&At(r)!==At(e.content),S=e.type==="dql"?!!o:!!o&&At((b=e.execution)==null?void 0:b.executedSql)===At(o),a=((m=e.execution)==null?void 0:m.status)==="success"&&e.stale!==!0&&e.fromSnapshot!==!0&&!!e.result&&S,A=T?"saved_or_certified":n?r?i?((h=e.execution)==null?void 0:h.status)!=="success"||e.stale===!0||e.fromSnapshot===!0||!e.result?"run_required":S?"ready":"execution_mismatch":"not_edited":"missing_generated_sql":"missing_question";return{eligible:(e.type==="sql"||e.type==="dql")&&A==="ready"&&a,reason:A,generatedSql:r,correctedSql:o,question:n}}const FT=new Set(["all","and","as","asc","avg","between","by","case","cast","coalesce","count","cross","date","day","desc","distinct","else","end","false","from","full","group","having","in","inner","interval","is","join","left","like","limit","max","min","month","not","null","on","or","order","outer","over","partition","qualify","right","round","row","rows","select","sum","then","true","union","when","where","with","year"]);function YT(e){return e.replace(/^["`\[]|["`\]]$/g,"").toLowerCase()}function dr(e){const r=e.replace(/--.*$/gm," ").replace(/\/\*[\s\S]*?\*\//g," ").replace(/'(?:''|[^'])*'/g," ").match(/[A-Za-z_][A-Za-z0-9_$]*/g)??[];return new Set(r.map(YT).filter(s=>s.length>1&&!FT.has(s)))}function vT(e,t){const r=dr(e),s=dr(t);return{added:[...s].filter(n=>!r.has(n)).slice(0,4),removed:[...r].filter(n=>!s.has(n)).slice(0,4)}}function St(e){return/\b(?:where|having|qualify)\b/i.test(e)}function VT(e){return Object.fromEntries(Object.entries(e).map(([t,r])=>[t,r==null?void 0:r.trim()]).filter(t=>!!t[1]))}function Ye(e){return[e.metric,e.dbtModel,e.domain,e.term,e.block].some(t=>!!(t!=null&&t.trim()))}function Cr(e){var t,r,s,n,T,o;return[(t=e.domain)!=null&&t.trim()?`domain ${e.domain.trim()}`:void 0,(r=e.metric)!=null&&r.trim()?`metric ${e.metric.trim()}`:void 0,(s=e.dbtModel)!=null&&s.trim()?`model ${e.dbtModel.trim()}`:void 0,(n=e.term)!=null&&n.trim()?`term ${e.term.trim()}`:void 0,(T=e.block)!=null&&T.trim()?`block ${e.block.trim()}`:void 0,(o=e.dialect)!=null&&o.trim()?`dialect ${e.dialect.trim()}`:void 0].filter(i=>!!i)}function Lr(e){const t=new Set;return e.split(/\r?\n/).map(r=>r.trim()).filter(r=>{const s=r.toLowerCase();return!r||t.has(s)?!1:(t.add(s),!0)}).slice(0,8)}function WT(e,t){var A,R,N,I;const r=VT({metric:(R=(A=e.dqlArtifact)==null?void 0:A.metrics)==null?void 0:R[0],domain:t.domain}),s=vT(t.previousSql,t.correctedSql),n=St(t.previousSql)!==St(t.correctedSql)||St(t.previousSql)&&St(t.correctedSql)&&((N=t.previousSql.match(/\b(?:where|having|qualify)\b[\s\S]*/i))==null?void 0:N[0])!==((I=t.correctedSql.match(/\b(?:where|having|qualify)\b[\s\S]*/i))==null?void 0:I[0]),T=r.metric?`${r.metric} questions`:r.domain?`${r.domain} questions`:"matching questions",o=[];s.added.length>0&&s.removed.length>0?o.push(`use ${s.added.join(", ")} instead of ${s.removed.join(", ")}`):s.added.length>0&&o.push(`use ${s.added.join(", ")}`),n&&o.push("apply the corrected filter conditions"),o.length===0&&o.push("follow the reviewed SQL pattern");const i=t.question.trim().replace(/\s+/g," ").slice(0,70),S=n?"filter_rule":s.added.length>0||s.removed.length>0?"relation_rule":"semantic_rule",a=`For ${T}, ${o.join(" and ")}. Confirm this lesson against the reviewed SQL and current governed context.`;return{title:r.metric?`Correct ${r.metric} logic`:`Correction for: ${i}`,guidance:a,rationale:"",lesson:{version:1,category:S,rule:a,intentExamples:[t.question.trim()].filter(Boolean),avoid:[],expectedOutcome:void 0},scope:r,changedIdentifiers:s,filtersChanged:n}}function wT(e,t){var n,T,o,i;const r=e.upstream??((n=e.singleValueConfig)==null?void 0:n.upstream)??((T=e.filterConfig)==null?void 0:T.upstream)??((o=e.pivotConfig)==null?void 0:o.upstream)??((i=e.tableConfig)==null?void 0:i.upstream);if(!r)return null;const s=t.find(S=>S.name===r&&(S.type==="sql"||S.type==="dql"));return!s||!s.content.trim()?null:{name:s.name,sql:s.content.trim()}}function XT(e){if(!e||!e.chart)return"";const t=[`chart = "${e.chart}"`];return e.x&&t.push(`x = ${e.x}`),e.y&&t.push(`y = ${e.y}`),e.color&&t.push(`color = ${e.color}`),e.facet&&t.push(`facet = ${e.facet}`),`
144
+ visualization {
145
+ ${t.join(`
146
+ `)}
147
+ }`}function jT(e){if(!e)return"";const t=['chart = "kpi"'];return e.metric&&t.push(`y = ${e.metric}`),e.format&&t.push(`format = "${e.format}"`),e.label&&t.push(`label = "${e.label.replace(/"/g,'\\"')}"`),`
148
+ visualization {
149
+ ${t.join(`
150
+ `)}
151
+ }`}function $T(e,t){return` query = """
152
+ ${e.replace(/^/gm," ")}
153
+ """${t}`}function kT(e,t){var o,i,S,a;if(e.type==="sql"||e.type==="dql")return{content:e.content,suggestedName:e.name,derivedFromUpstream:!1,blocker:e.content.trim()?void 0:"Cell is empty — add a SQL query first."};if(e.type==="markdown"||e.type==="param"||e.type==="map"||e.type==="writeback"||e.type==="python")return{content:"",derivedFromUpstream:!1,blocker:`${e.type} cells cannot be promoted to blocks yet.`};const r=wT(e,t);if(!r)return{content:"",derivedFromUpstream:!0,blocker:"No upstream SQL cell is wired — pick an upstream dataframe before saving as a block."};let s="",n,T;switch(e.type){case"chart":s=XT(e.chartConfig),n=e.name??(r.name?`${r.name}_chart`:"chart_block"),T=((o=e.chartConfig)==null?void 0:o.title)??((i=e.chartConfig)!=null&&i.chart?`${e.chartConfig.chart} of ${r.name??"upstream"}`:void 0);break;case"single_value":s=jT(e.singleValueConfig),n=e.name??((S=e.singleValueConfig)!=null&&S.label?e.singleValueConfig.label:`${r.name??"metric"}_kpi`),T=(a=e.singleValueConfig)==null?void 0:a.label;break;case"filter":case"pivot":case"table":n=e.name??(r.name?`${r.name}_${e.type}`:`${e.type}_block`);break}return{content:$T(r.sql,s),suggestedName:n,suggestedDescription:T,derivedFromUpstream:!0}}function KT(e){let t=e;try{const a=JSON.parse(e);a&&typeof a.error=="string"&&(t=a.error)}catch{}t=t.replace(/^DuckDB query failed:\s*/i,"").trim();let r="Error";/Parser Error/i.test(t)?r="Syntax Error":/Binder Error/i.test(t)?r="Reference Error":/Conversion Error/i.test(t)?r="Type Error":/Invalid Input Error/i.test(t)?r="Input Error":/IO Error/i.test(t)?r="File Error":/Constraint Error/i.test(t)&&(r="Constraint Error");let s;const n=t.match(/LINE\s+(\d+):/i)??t.match(/\bline\s+(\d+)\b/i);n&&(s=parseInt(n[1],10));let T;const o=t.match(/at or near "([^"]+)"/i);o?T=o[1]:/at end of input/i.test(t)&&(T="end of input");let i;r==="Syntax Error"?T==='"""'||t.includes('"""')?i="Triple-quoted strings are DQL block syntax. Use a DQL cell for block syntax, or plain SQL in a SQL cell.":T==="end of input"||/at end of input/i.test(t)?i="Query is incomplete — check for unclosed parentheses, missing keywords, or a dangling comma.":(T===")"||T==="(")&&(i="Mismatched parentheses — check that every opening ( has a closing )."):r==="Reference Error"?/column.*not found|Referenced column/i.test(t)?i="Column not found — check the column name in the Schema panel (left sidebar).":/table.*not found|Table.*does not exist/i.test(t)&&(i="Table not found — make sure the file path is correct and the file exists in your data/ folder."):r==="Input Error"?/No files found/i.test(t)&&(i="File not found — use read_csv_auto('./data/filename.csv'). Open the Schema panel (left sidebar) to see all files available in your data/ folder."):r==="File Error"?i="File could not be read — use read_csv_auto('./data/filename.csv'). Open the Schema panel to browse available data files.":r==="Type Error"&&(i="Type mismatch — you may be comparing or casting incompatible types (e.g. text vs number).");const S=t.replace(/^(Parser Error|Binder Error|Conversion Error|Invalid Input Error|IO Error|Constraint Error):\s*/i,"").trim();return{type:r,message:S,line:s,near:T,hint:i}}function qT(e,t){const r=e.length,s=t.length,n=Array.from({length:r+1},(T,o)=>Array.from({length:s+1},(i,S)=>o===0?S:S===0?o:0));for(let T=1;T<=r;T++)for(let o=1;o<=s;o++)n[T][o]=e[T-1]===t[o-1]?n[T-1][o-1]:1+Math.min(n[T-1][o],n[T][o-1],n[T-1][o-1]);return n[r][s]}function _r(e,t){const r=e.toLowerCase();let s=null,n=4;for(const T of t){const o=qT(r,T.toLowerCase());o<n&&(n=o,s=T)}return s}function JT({message:e,themeMode:t,onFix:r,onFixWithAi:s,editableArtifactLabel:n="SQL",schemaTables:T}){const o=ne[t],i=KT(e);let S=null;if(T&&T.length>0&&i.type==="Reference Error"){const A=/column.*not found|Referenced column/i.test(i.message),R=/table.*not found|Table.*does not exist/i.test(i.message);if(A&&i.near){const N=T.flatMap(c=>c.columns.map(_=>_.name)),I=_r(i.near,N);I&&(S=`Did you mean column "${I}"?`)}else if(R&&i.near){const N=_r(i.near,T.map(I=>I.name));N&&(S=`Did you mean table "${N}"?`)}}const a=r&&(i.type==="Syntax Error"||i.near===")"||i.near==="("||i.near==="end of input");return E.jsxs("div",{style:{padding:"12px 14px",background:`${o.error}10`,borderLeft:`3px solid ${o.error}`,display:"flex",flexDirection:"column",gap:8},children:[E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"},children:[E.jsx("div",{style:{flexShrink:0,color:o.error,display:"flex",alignItems:"center"},children:E.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"currentColor",children:E.jsx("path",{d:"M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"})})}),E.jsx("span",{style:{fontSize:10,fontWeight:700,fontFamily:o.fontMono,letterSpacing:"0.06em",textTransform:"uppercase",color:o.error,background:`${o.error}18`,border:`1px solid ${o.error}40`,borderRadius:4,padding:"1px 7px",flexShrink:0},children:i.type}),i.line!==void 0&&E.jsxs("span",{style:{fontSize:10,fontWeight:600,fontFamily:o.fontMono,color:o.textSecondary,background:`${o.textMuted}18`,border:`1px solid ${o.textMuted}30`,borderRadius:4,padding:"1px 7px",flexShrink:0},children:["Line ",i.line]}),i.near&&E.jsxs("span",{style:{fontSize:11,fontFamily:o.fontMono,color:o.textSecondary,flexShrink:0},children:["near ",E.jsxs("span",{style:{color:o.error},children:["“",i.near,"”"]})]})]}),E.jsx("pre",{style:{margin:0,fontFamily:o.fontMono,fontSize:12,color:o.error,lineHeight:1.6,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:i.message}),S&&E.jsxs("div",{style:{fontSize:12,fontFamily:o.font,color:o.textSecondary,display:"flex",alignItems:"center",gap:6},children:[E.jsx("span",{style:{color:o.accent},children:"→"}),S]}),i.hint&&E.jsxs("div",{style:{marginTop:2,padding:"8px 12px",background:`${o.warning}12`,border:`1px solid ${o.warning}40`,borderRadius:6,display:"flex",alignItems:"flex-start",gap:8},children:[E.jsx("span",{style:{flexShrink:0,fontSize:13,lineHeight:1.5},children:"💡"}),E.jsx("span",{style:{fontSize:12,fontFamily:o.font,color:o.warning,lineHeight:1.6},children:i.hint})]}),(a||s)&&E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap",marginTop:2},children:[a&&E.jsxs(ur,{t:o,onClick:r,children:[E.jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"currentColor",children:E.jsx("path",{d:"M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"})}),"Format & Run"]}),s&&E.jsxs(ur,{t:o,onClick:s,children:[E.jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16",fill:"currentColor",children:E.jsx("path",{d:"M8 0a.75.75 0 0 1 .704.49l1.08 2.927 2.927 1.08a.75.75 0 0 1 0 1.406l-2.927 1.08-1.08 2.927a.75.75 0 0 1-1.408 0l-1.08-2.927-2.927-1.08a.75.75 0 0 1 0-1.406l2.927-1.08L7.296.49A.75.75 0 0 1 8 0Zm4.75 9.5a.75.75 0 0 1 .704.49l.41 1.11 1.11.41a.75.75 0 0 1 0 1.408l-1.11.41-.41 1.11a.75.75 0 0 1-1.408 0l-.41-1.11-1.11-.41a.75.75 0 0 1 0-1.408l1.11-.41.41-1.11a.75.75 0 0 1 .704-.49Z"})}),"Ask AI to fix"]}),E.jsxs("span",{style:{fontSize:11,color:o.textMuted,fontFamily:o.font},children:["Review the proposed fix before replacing the cell. You can also edit the ",n," directly and run again."]})]})]})}function ur({children:e,onClick:t,t:r}){return E.jsx("button",{onClick:t,style:{padding:"5px 12px",background:`${r.accent}15`,border:`1px solid ${r.accent}50`,borderRadius:6,color:r.accent,fontSize:12,fontFamily:r.font,fontWeight:500,cursor:"pointer",display:"flex",alignItems:"center",gap:6,transition:"all 0.15s"},onMouseEnter:s=>{s.currentTarget.style.background=`${r.accent}25`},onMouseLeave:s=>{s.currentTarget.style.background=`${r.accent}15`},children:e})}const hn=new Set(["where","on","join","inner","left","right","full","cross","group","order","having","limit","qualify","union","as"]),QT=new Set(["term","business_view","block","metric","dimension","domain","dbt_model","source_table","dbt_source"]);function zT(e){const t=e.match(/^\s*block\s+"([^"]+)"/i);return t?t[1]:null}function ZT(){return{sources:[],ctes:[],joins:[],filters:[],groupBy:[],orderBy:[],outputs:[],semanticRefs:{metrics:[],dimensions:[]},warnings:[]}}function eo(e){return e.replace(/--.*$/gm," ").replace(/\/\*[\s\S]*?\*\//g," ")}function Dt(e){return e.replace(/^["'`]+|["'`]+$/g,"").trim()}function uE(e){return`${e.kind}:${e.name.toLowerCase()}:${e.alias??""}`}function to(e){const t=new Set;return e.filter(r=>{const s=uE(r);return t.has(s)?!1:(t.add(s),!0)})}function Wt(e){const t=[];let r=0,s=null,n="";for(let o=0;o<e.length;o+=1){const i=e[o],S=e[o-1];if(s){n+=i,i===s&&S!=="\\"&&(s=null);continue}if(i==="'"||i==='"'||i==="`"){s=i,n+=i;continue}if(i==="("&&(r+=1),i===")"&&(r=Math.max(0,r-1)),i===","&&r===0){const a=n.trim();a&&t.push(a),n="";continue}n+=i}const T=n.trim();return T&&t.push(T),t}function Eo(e,t,r){const s=t.replace(/\s+/g," "),n=r===0?"":e[r-1];if(n&&/[a-zA-Z0-9_]/.test(n))return!1;let T=r;for(const i of s.split(" ")){for(;/\s/.test(e[T]??"");)T+=1;if(e.slice(T,T+i.length).toLowerCase()!==i.toLowerCase())return!1;T+=i.length}const o=e[T]??"";return!o||!/[a-zA-Z0-9_]/.test(o)}function pr(e,t,r=0){let s=0,n=null;for(let T=r;T<e.length;T+=1){const o=e[T],i=e[T-1];if(n){o===n&&i!=="\\"&&(n=null);continue}if(o==="'"||o==='"'||o==="`"){n=o;continue}if(o==="("){s+=1;continue}if(o===")"){s=Math.max(0,s-1);continue}if(s===0&&Eo(e,t,T))return T}return-1}function lt(e,t,r){const s=pr(e,t);if(s<0)return"";let n=s+t.length;for(;/\s/.test(e[n]??"");)n+=1;const T=r.map(i=>pr(e,i,n)).filter(i=>i>=0),o=T.length>0?Math.min(...T):e.length;return e.slice(n,o).trim()}function Dr(e){if(!e)return;const t=Dt(e);return hn.has(t.toLowerCase())?void 0:t}function ro(e,t){const r=[];let s=null;for(let T=0;T<t;T+=1){const o=e[T],i=e[T-1];if(s){o===s&&i!=="\\"&&(s=null);continue}if(o==="'"||o==='"'||o==="`"){s=o;continue}o==="("?r.push(T):o===")"&&r.pop()}const n=r[r.length-1];return{depth:r.length,segment:n===void 0?"":e.slice(n+1,t)}}function Pr(e,t){const r=ro(e,t);return r.depth===0?!0:/\bSELECT\b/i.test(r.segment)}function wt(e){var C;const t=eo(e);if(!t.trim())return ZT();const r=[],s=[...t.matchAll(/\b(?:WITH|,)\s+([a-zA-Z_][\w]*)\s+AS\s*\(/gi)].map(L=>L[1]).filter(Boolean),n=new Set(s.map(L=>L.toLowerCase())),T=[],o=/\b(FROM|JOIN)\s+([a-zA-Z_][\w.]*)\s*(?:AS\s+)?([a-zA-Z_][\w]*)?/gi;for(const L of t.matchAll(o)){if(!Pr(t,L.index??0))continue;const f=Dt(L[2]);!f||hn.has(f.toLowerCase())||T.push({name:f,alias:Dr(L[3]),kind:n.has(f.toLowerCase())?"cte":"table"})}for(const L of t.matchAll(/\bref\s*\(\s*["']([^"']+)["']\s*\)/gi))T.push({name:Dt(L[1]),kind:"ref"});const i=[],S=/\b((?:LEFT|RIGHT|FULL|INNER|CROSS)?\s*JOIN)\s+([a-zA-Z_][\w.]*)\s*(?:AS\s+)?([a-zA-Z_][\w]*)?([\s\S]*?)(?=\b(?:LEFT|RIGHT|FULL|INNER|CROSS)?\s*JOIN\b|\bWHERE\b|\bGROUP\s+BY\b|\bORDER\s+BY\b|\bHAVING\b|\bQUALIFY\b|\bLIMIT\b|$)/gi;for(const L of t.matchAll(S)){if(!Pr(t,L.index??0))continue;const f=(C=L[4])==null?void 0:C.match(/\bON\b\s+([\s\S]*)/i);i.push({type:L[1].replace(/\s+/g," ").trim().toUpperCase(),table:Dt(L[2]),alias:Dr(L[3]),condition:f?f[1].trim().replace(/\s+/g," "):void 0})}const a=lt(t,"SELECT",["FROM"]),A=lt(t,"WHERE",["GROUP BY","HAVING","QUALIFY","ORDER BY","LIMIT"]),R=lt(t,"GROUP BY",["HAVING","QUALIFY","ORDER BY","LIMIT"]),N=lt(t,"ORDER BY",["LIMIT"]),I=a?Wt(a).slice(0,20):[],c=A?[A.replace(/\s+/g," ")]:[],_=R?Wt(R).slice(0,12):[],O=N?Wt(N).slice(0,12):[];return s.length>0&&r.push("CTEs are included. Review CTE-to-final-query dependencies before certifying."),/\bSELECT\s+\*/i.test(t)&&r.push("SELECT * detected. Outputs may drift when upstream schema changes."),T.length===0&&/\bSELECT\b/i.test(t)&&r.push("No source tables detected. This may be a literal query, parameter query, or unsupported SQL shape."),{sources:to(T),ctes:s,joins:i,filters:c,groupBy:_,orderBy:O,outputs:I,semanticRefs:no(t),warnings:r}}function no(e){const t=[],r=[];for(const s of e.matchAll(/@metric\s*\(\s*([^)]+)\s*\)/gi))t.push(s[1].replace(/['"]/g,"").trim());for(const s of e.matchAll(/@dim\s*\(\s*([^)]+)\s*\)/gi))r.push(s[1].replace(/['"]/g,"").trim());return{metrics:t,dimensions:r}}function so(e){return Ts[e.type]??e.type.slice(0,4).toUpperCase()}function To(e,t,r){if(!(e!=null&&e.length))return[];const s=new Set;if(r!=null&&r.trim()&&s.add(r.trim()),t!=null&&t.trim()&&s.add(t.trim()),s.size===0)return[];const n=[];return e.forEach((T,o)=>{if(T.id===t)return;const i=On(T.content).filter(A=>s.has(A)),S=T.upstream&&s.has(T.upstream)?[T.upstream]:[],a=[...new Set([...i,...S])][0];a&&n.push({id:T.id,label:T.name||`Cell ${o+1}`,type:T.type,handle:a})}),n}function ye({title:e,t,children:r}){return E.jsxs("section",{style:{border:`1px solid ${t.cellBorder}`,borderRadius:6,background:t.cellBg,padding:8,minWidth:0},children:[E.jsx("div",{style:{fontSize:9,fontWeight:700,textTransform:"uppercase",letterSpacing:0,color:t.textMuted,marginBottom:6},children:e}),E.jsx("div",{style:{color:t.textPrimary,lineHeight:1.45},children:r})]})}function It({t:e,children:t}){return E.jsx("div",{style:{color:e.textMuted,fontSize:11},children:t})}function Ot({label:e,value:t,t:r}){return E.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,padding:"2px 0"},children:[E.jsx("span",{style:{color:r.textMuted},children:e}),E.jsx("strong",{style:{color:r.textPrimary,fontVariantNumeric:"tabular-nums"},children:t})]})}function ve({title:e,t,children:r}){return E.jsxs("div",{style:{display:"grid",gap:3,marginTop:6},children:[E.jsx("div",{style:{color:t.textMuted,fontSize:10,fontWeight:600},children:e}),E.jsx("div",{style:{display:"grid",gap:3,minWidth:0},children:r})]})}function oo({cellContent:e,cellType:t,compiledSql:r,cellId:s,cellName:n,cells:T,themeMode:o,t:i,onFocusNode:S}){const[a,A]=l.useState(!1),[R,N]=l.useState(380),I=l.useRef(R);I.current=R;const[c,_]=l.useState(!1),[O,C]=l.useState(!1),[L,f]=l.useState([]),[x,M]=l.useState([]),[b,m]=l.useState(),[h,G]=l.useState(null),[y,V]=l.useState([]),[j,W]=l.useState(null),g=l.useMemo(()=>{const P=t==="dql",k=r==null?void 0:r.trim();if(!P||!k)return wt(e);const K=wt(k),$=wt(e),z=(ee,Ee)=>[...new Set([...ee,...Ee])];return{...K,semanticRefs:{metrics:z($.semanticRefs.metrics,K.semanticRefs.metrics),dimensions:z($.semanticRefs.dimensions,K.semanticRefs.dimensions)},outputs:K.outputs.length>0?K.outputs:$.outputs}},[t,e,r]),Z=l.useMemo(()=>To(T,s,n),[T,s,n]),Y=(t==="dql"?zT(e):null)||n,J=t==="sql",ae=l.useCallback(async()=>{const P=g.sources.filter($=>$.kind!=="cte").slice(0,6),k=await Promise.all(P.map(async $=>{const z=$.name.split(".").pop()||$.name;return((await q.searchLineage(z)).matches??[]).filter(({node:Ee})=>Ee&&QT.has(String(Ee.type))).slice(0,3).map(({node:Ee,score:he})=>({source:$.name,node:Ee,score:he}))})),K=new Set;V(k.flat().filter($=>{const z=`${$.source}:${$.node.id}`;return K.has(z)?!1:(K.add(z),!0)}).slice(0,8))},[g.sources]),Ie=l.useCallback(async()=>{var P,k,K,$;if(!(!Y&&t!=="sql")){C(!0),W(null);try{if(J){f([]),M([]),m(void 0),G(null),await ae();return}if(Y){const z=`block:${Y}`;m(z);const[ee,Ee]=await Promise.all([q.queryLineage({focus:z,upstreamDepth:2,downstreamDepth:2}),q.fetchLineagePaths(z).catch(()=>null)]);!!(ee!=null&&ee.focalNode)&&(((k=(P=ee==null?void 0:ee.graph)==null?void 0:P.nodes)==null?void 0:k.length)??0)>0?(f(((K=ee.graph)==null?void 0:K.nodes)??[]),M((($=ee.graph)==null?void 0:$.edges)??[]),Ee&&G(Ee)):(m(void 0),f([]),M([]),G(null),await ae())}else m(void 0),f([]),M([])}catch{W("Failed to load lineage")}finally{C(!1)}}},[Y,t,J,ae]);l.useEffect(()=>{a&&Ie()},[a,Ie]);const d=g.sources.length>0||g.outputs.length>0||g.joins.length>0||g.filters.length>0||g.groupBy.length>0||g.orderBy.length>0||g.semanticRefs.metrics.length>0||g.semanticRefs.dimensions.length>0||Z.length>0||y.length>0,B=L.length>0||!!h,F=()=>E.jsxs("div",{style:{padding:"8px 12px 10px",display:"grid",gap:8},children:[E.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:8},children:[E.jsxs(ye,{title:"Technical source trace",t:i,children:[g.sources.length>0?E.jsx("div",{style:{display:"grid",gap:4},children:g.sources.map(P=>E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0},children:[E.jsx("span",{style:{color:P.kind==="cte"?i.textMuted:Fe.source_table,fontSize:9,fontWeight:700,width:28,flexShrink:0},children:P.kind==="cte"?"CTE":P.kind==="ref"?"REF":"TBL"}),E.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:P.name}),P.alias&&E.jsxs("span",{style:{color:i.textMuted,fontSize:10,flexShrink:0},children:["as ",P.alias]})]},uE(P)))}):E.jsx(It,{t:i,children:"No table references detected."}),g.ctes.length>0&&E.jsxs("div",{style:{marginTop:6,color:i.textMuted},children:["CTEs: ",g.ctes.slice(0,6).join(", ")]})]}),E.jsxs(ye,{title:"SQL shape",t:i,children:[E.jsx(Ot,{label:"Outputs",value:g.outputs.length,t:i}),E.jsx(Ot,{label:"Joins",value:g.joins.length,t:i}),E.jsx(Ot,{label:"Filters",value:g.filters.length,t:i}),E.jsx(Ot,{label:"Groups",value:g.groupBy.length,t:i})]}),E.jsx(ye,{title:"Reverse notebook impact",t:i,children:Z.length>0?E.jsx("div",{style:{display:"grid",gap:4},children:Z.slice(0,6).map(P=>E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0},children:[E.jsx("span",{style:{color:Fe.notebook,fontSize:9,fontWeight:700,width:28,flexShrink:0},children:P.type.toUpperCase().slice(0,4)}),E.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:P.label}),P.handle&&E.jsxs("span",{style:{color:i.textMuted,fontSize:10},children:["via ",`{{${P.handle}}}`]})]},P.id))}):E.jsx(It,{t:i,children:"No downstream notebook cells reference this cell yet."})})]}),(g.joins.length>0||g.filters.length>0||g.groupBy.length>0||g.orderBy.length>0)&&E.jsxs(ye,{title:"Query logic",t:i,children:[g.joins.length>0&&E.jsx(ve,{title:"Joins",t:i,children:g.joins.slice(0,6).map((P,k)=>E.jsxs("div",{style:{color:i.textPrimary},children:[E.jsx("strong",{children:P.type})," ",P.table,P.alias?` as ${P.alias}`:"",P.condition?E.jsxs("span",{style:{color:i.textMuted},children:[" on ",P.condition]}):null]},`${P.table}-${k}`))}),g.filters.length>0&&E.jsx(ve,{title:"Filters",t:i,children:g.filters.map((P,k)=>E.jsx("code",{style:{color:i.textPrimary,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:P},k))}),g.groupBy.length>0&&E.jsx(ve,{title:"Group by",t:i,children:E.jsx("span",{children:g.groupBy.join(", ")})}),g.orderBy.length>0&&E.jsx(ve,{title:"Order by",t:i,children:E.jsx("span",{children:g.orderBy.join(", ")})})]}),g.outputs.length>0&&E.jsx(ye,{title:"Output fields",t:i,children:E.jsx("div",{style:{display:"flex",gap:4,flexWrap:"wrap"},children:g.outputs.slice(0,16).map((P,k)=>E.jsx("span",{style:{maxWidth:260,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",padding:"2px 6px",borderRadius:4,border:`1px solid ${i.cellBorder}`,color:i.textPrimary,background:i.inputBg},title:P,children:P},`${P}-${k}`))})}),(g.semanticRefs.metrics.length>0||g.semanticRefs.dimensions.length>0||y.length>0)&&E.jsxs(ye,{title:"Business context from detected sources",t:i,children:[g.semanticRefs.metrics.length>0&&E.jsx(ve,{title:"Metrics",t:i,children:E.jsx("span",{children:g.semanticRefs.metrics.join(", ")})}),g.semanticRefs.dimensions.length>0&&E.jsx(ve,{title:"Dimensions",t:i,children:E.jsx("span",{children:g.semanticRefs.dimensions.join(", ")})}),y.length>0?E.jsx("div",{style:{display:"grid",gap:4},children:y.map(P=>E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0},children:[E.jsx("span",{style:{color:Fe[P.node.type]??i.accent,fontSize:9,fontWeight:700,width:34,flexShrink:0},children:so(P.node)}),E.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:P.node.name}),P.node.domain&&E.jsx("span",{style:{color:i.textMuted,fontSize:10},children:P.node.domain}),E.jsxs("span",{style:{marginLeft:"auto",color:i.textMuted,fontSize:10,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["from ",P.source]})]},`${P.source}-${P.node.id}`))}):O?E.jsx(It,{t:i,children:"Looking up scoped business context..."}):E.jsx(It,{t:i,children:"No matching business terms, metrics, or blocks found for these sources."})]}),g.warnings.length>0&&E.jsx(ye,{title:"Review notes",t:i,children:E.jsx("div",{style:{display:"grid",gap:3},children:g.warnings.map(P=>E.jsx("div",{style:{color:i.warning},children:P},P))})}),!d&&E.jsx("div",{style:{color:i.textMuted,padding:"2px 0"},children:"No SQL lineage dependencies detected for this cell."})]});return e.trim()?E.jsxs("div",{style:{borderTop:`1px solid ${i.cellBorder}`},children:[E.jsxs("button",{onClick:()=>A(P=>!P),style:{width:"100%",display:"flex",alignItems:"center",gap:6,padding:"4px 12px",background:a?`${i.tableHeaderBg}60`:"transparent",border:"none",cursor:"pointer",color:i.textMuted,fontSize:10,fontFamily:i.font,transition:"background 0.15s"},children:[E.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",style:{flexShrink:0},children:[E.jsx("circle",{cx:"4",cy:"4",r:"2"}),E.jsx("circle",{cx:"12",cy:"8",r:"2"}),E.jsx("circle",{cx:"4",cy:"12",r:"2"}),E.jsx("line",{x1:"6",y1:"4",x2:"10",y2:"8"}),E.jsx("line",{x1:"6",y1:"12",x2:"10",y2:"8"})]}),E.jsx("span",{children:J?"Cell SQL lineage":"Project block lineage"}),a&&E.jsx("span",{style:{marginLeft:2,padding:"1px 5px",borderRadius:999,border:`1px solid ${i.cellBorder}`,color:i.textMuted,background:i.inputBg,fontSize:9},children:J?"cell scoped":"project graph"}),E.jsx("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"currentColor",style:{transform:a?"rotate(0deg)":"rotate(-90deg)",transition:"transform 0.15s"},children:E.jsx("path",{d:"M1 3l4 4 4-4",stroke:"currentColor",fill:"none",strokeWidth:"1.5"})}),a&&!J&&Y&&S&&E.jsx("span",{onClick:P=>{P.stopPropagation(),S(`block:${Y}`)},style:{marginLeft:"auto",fontSize:9,color:i.accent,cursor:"pointer",textDecoration:"underline"},children:"View in DAG"})]}),a&&E.jsx("div",{style:{fontSize:11},children:J?E.jsxs(E.Fragment,{children:[j&&E.jsx("div",{style:{color:i.error,padding:"8px 12px 0"},children:j}),F()]}):O?E.jsx("div",{style:{color:i.textMuted,padding:"8px 12px"},children:"Loading lineage..."}):j?E.jsx("div",{style:{color:i.error,padding:"8px 12px"},children:j}):E.jsxs(E.Fragment,{children:[L.length>0&&b&&E.jsxs("div",{style:{borderBottom:`1px solid ${i.cellBorder}`,position:"relative"},children:[E.jsx(ys,{nodes:L,edges:x,focalNodeId:b,height:R,onNodeClick:S,interactive:!0,layoutMode:"flow"}),E.jsx("div",{onMouseDown:P=>{P.preventDefault();const k=P.clientY,K=I.current;_(!0);const $=ee=>{const Ee=Math.min(800,Math.max(160,K+(ee.clientY-k)));I.current=Ee,N(Ee)},z=()=>{_(!1),window.removeEventListener("mousemove",$),window.removeEventListener("mouseup",z)};window.addEventListener("mousemove",$),window.addEventListener("mouseup",z)},title:"Drag to resize lineage view",style:{position:"absolute",left:0,right:0,bottom:-3,height:6,cursor:"row-resize",background:c?i.accent:"transparent",transition:c?"none":"background 0.15s",zIndex:5},onMouseEnter:P=>{c||(P.currentTarget.style.background=`${i.accent}40`)},onMouseLeave:P=>{c||(P.currentTarget.style.background="transparent")}})]}),E.jsxs("div",{style:{padding:"6px 12px 8px"},children:[h&&(h.upstreamPaths.length>0||h.downstreamPaths.length>0)&&E.jsxs("div",{style:{marginBottom:8},children:[E.jsx("div",{style:{fontSize:9,fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",color:i.textMuted,marginBottom:4},children:"Complete Paths"}),E.jsxs("div",{style:{display:"grid",gap:6},children:[h.upstreamPaths.slice(0,3).map((P,k)=>E.jsx(Er,{path:P,onNodeClick:S,focalNodeId:b,t:i},`up-${k}`)),h.downstreamPaths.slice(0,2).map((P,k)=>E.jsx(Er,{path:P,onNodeClick:S,focalNodeId:b,t:i},`down-${k}`))]})]}),g.sources.length>0&&E.jsxs("div",{style:{marginBottom:6},children:[E.jsxs("div",{style:{fontSize:9,fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",color:i.textMuted,marginBottom:3},children:["Reads From (",g.sources.length,")"]}),g.sources.map(P=>E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"1px 0",fontSize:11,color:i.textPrimary},children:[E.jsx("span",{style:{color:P.kind==="cte"?i.textMuted:Fe.source_table,fontSize:9,fontWeight:700,width:26},children:P.kind==="cte"?"CTE":P.kind==="ref"?"REF":"TBL"}),E.jsx("span",{children:P.name}),P.alias&&E.jsxs("span",{style:{color:i.textMuted},children:["as ",P.alias]})]},uE(P)))]}),g.semanticRefs.metrics.length>0&&E.jsxs("div",{style:{marginBottom:6},children:[E.jsxs("div",{style:{fontSize:9,fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",color:i.textMuted,marginBottom:3},children:["Metrics (",g.semanticRefs.metrics.length,")"]}),g.semanticRefs.metrics.map(P=>E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"1px 0",fontSize:11,color:i.textPrimary},children:[E.jsx("span",{style:{color:Fe.metric,fontSize:9,fontWeight:700,width:26},children:"MET"}),E.jsx("span",{children:P})]},P))]}),g.semanticRefs.dimensions.length>0&&E.jsxs("div",{style:{marginBottom:6},children:[E.jsxs("div",{style:{fontSize:9,fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",color:i.textMuted,marginBottom:3},children:["Dimensions (",g.semanticRefs.dimensions.length,")"]}),g.semanticRefs.dimensions.map(P=>E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,padding:"1px 0",fontSize:11,color:i.textPrimary},children:[E.jsx("span",{style:{color:Fe.dimension,fontSize:9,fontWeight:700,width:26},children:"DIM"}),E.jsx("span",{children:P})]},P))]}),!B&&g.sources.length===0&&g.semanticRefs.metrics.length===0&&g.semanticRefs.dimensions.length===0&&E.jsx("div",{style:{color:i.textMuted,padding:"2px 0"},children:"No lineage dependencies detected for this cell."})]})]})})]}):null}const u=e=>e.flatMap(io),io=e=>Pt(Ro(e)).map(ao),ao=e=>e.replace(/ +/g," ").trim(),Ro=e=>({type:"mandatory_block",items:UE(e,0)[0]}),UE=(e,t,r)=>{const s=[];for(;e[t];){const[n,T]=Ao(e,t);if(s.push(n),t=T,e[t]==="|")t++;else if(e[t]==="}"||e[t]==="]"){if(r!==e[t])throw new Error(`Unbalanced parenthesis in: ${e}`);return t++,[s,t]}else if(t===e.length){if(r)throw new Error(`Unbalanced parenthesis in: ${e}`);return[s,t]}else throw new Error(`Unexpected "${e[t]}"`)}return[s,t]},Ao=(e,t)=>{const r=[];for(;;){const[s,n]=So(e,t);if(s)r.push(s),t=n;else break}return r.length===1?[r[0],t]:[{type:"concatenation",items:r},t]},So=(e,t)=>{if(e[t]==="{")return lo(e,t+1);if(e[t]==="[")return Io(e,t+1);{let r="";for(;e[t]&&/[A-Za-z0-9_ ]/.test(e[t]);)r+=e[t],t++;return[r,t]}},lo=(e,t)=>{const[r,s]=UE(e,t,"}");return[{type:"mandatory_block",items:r},s]},Io=(e,t)=>{const[r,s]=UE(e,t,"]");return[{type:"optional_block",items:r},s]},Pt=e=>{if(typeof e=="string")return[e];if(e.type==="concatenation")return e.items.map(Pt).reduce(Oo,[""]);if(e.type==="mandatory_block")return e.items.flatMap(Pt);if(e.type==="optional_block")return["",...e.items.flatMap(Pt)];throw new Error(`Unknown node type: ${e}`)},Oo=(e,t)=>{const r=[];for(const s of e)for(const n of t)r.push(s+n);return r};var D;(function(e){e.QUOTED_IDENTIFIER="QUOTED_IDENTIFIER",e.IDENTIFIER="IDENTIFIER",e.STRING="STRING",e.VARIABLE="VARIABLE",e.RESERVED_DATA_TYPE="RESERVED_DATA_TYPE",e.RESERVED_PARAMETERIZED_DATA_TYPE="RESERVED_PARAMETERIZED_DATA_TYPE",e.RESERVED_KEYWORD="RESERVED_KEYWORD",e.RESERVED_FUNCTION_NAME="RESERVED_FUNCTION_NAME",e.RESERVED_KEYWORD_PHRASE="RESERVED_KEYWORD_PHRASE",e.RESERVED_DATA_TYPE_PHRASE="RESERVED_DATA_TYPE_PHRASE",e.RESERVED_SET_OPERATION="RESERVED_SET_OPERATION",e.RESERVED_CLAUSE="RESERVED_CLAUSE",e.RESERVED_SELECT="RESERVED_SELECT",e.RESERVED_JOIN="RESERVED_JOIN",e.ARRAY_IDENTIFIER="ARRAY_IDENTIFIER",e.ARRAY_KEYWORD="ARRAY_KEYWORD",e.CASE="CASE",e.END="END",e.WHEN="WHEN",e.ELSE="ELSE",e.THEN="THEN",e.LIMIT="LIMIT",e.BETWEEN="BETWEEN",e.AND="AND",e.OR="OR",e.XOR="XOR",e.OPERATOR="OPERATOR",e.COMMA="COMMA",e.ASTERISK="ASTERISK",e.PROPERTY_ACCESS_OPERATOR="PROPERTY_ACCESS_OPERATOR",e.OPEN_PAREN="OPEN_PAREN",e.CLOSE_PAREN="CLOSE_PAREN",e.LINE_COMMENT="LINE_COMMENT",e.BLOCK_COMMENT="BLOCK_COMMENT",e.DISABLE_COMMENT="DISABLE_COMMENT",e.NUMBER="NUMBER",e.NAMED_PARAMETER="NAMED_PARAMETER",e.QUOTED_PARAMETER="QUOTED_PARAMETER",e.NUMBERED_PARAMETER="NUMBERED_PARAMETER",e.POSITIONAL_PARAMETER="POSITIONAL_PARAMETER",e.CUSTOM_PARAMETER="CUSTOM_PARAMETER",e.DELIMITER="DELIMITER",e.EOF="EOF"})(D=D||(D={}));const Un=e=>({type:D.EOF,raw:"«EOF»",text:"«EOF»",start:e}),me=Un(1/0),Ve=e=>t=>t.type===e.type&&t.text===e.text,fe={ARRAY:Ve({text:"ARRAY",type:D.RESERVED_DATA_TYPE}),BY:Ve({text:"BY",type:D.RESERVED_KEYWORD}),SET:Ve({text:"SET",type:D.RESERVED_CLAUSE}),STRUCT:Ve({text:"STRUCT",type:D.RESERVED_DATA_TYPE}),WINDOW:Ve({text:"WINDOW",type:D.RESERVED_CLAUSE}),VALUES:Ve({text:"VALUES",type:D.RESERVED_CLAUSE})},xn=e=>e===D.RESERVED_DATA_TYPE||e===D.RESERVED_KEYWORD||e===D.RESERVED_FUNCTION_NAME||e===D.RESERVED_KEYWORD_PHRASE||e===D.RESERVED_DATA_TYPE_PHRASE||e===D.RESERVED_CLAUSE||e===D.RESERVED_SELECT||e===D.RESERVED_SET_OPERATION||e===D.RESERVED_JOIN||e===D.ARRAY_KEYWORD||e===D.CASE||e===D.END||e===D.WHEN||e===D.ELSE||e===D.THEN||e===D.LIMIT||e===D.BETWEEN||e===D.AND||e===D.OR||e===D.XOR,No=e=>e===D.AND||e===D.OR||e===D.XOR,co=["KEYS.NEW_KEYSET","KEYS.ADD_KEY_FROM_RAW_BYTES","AEAD.DECRYPT_BYTES","AEAD.DECRYPT_STRING","AEAD.ENCRYPT","KEYS.KEYSET_CHAIN","KEYS.KEYSET_FROM_JSON","KEYS.KEYSET_TO_JSON","KEYS.ROTATE_KEYSET","KEYS.KEYSET_LENGTH","ANY_VALUE","ARRAY_AGG","AVG","CORR","COUNT","COUNTIF","COVAR_POP","COVAR_SAMP","MAX","MIN","ST_CLUSTERDBSCAN","STDDEV_POP","STDDEV_SAMP","STRING_AGG","SUM","VAR_POP","VAR_SAMP","ANY_VALUE","ARRAY_AGG","ARRAY_CONCAT_AGG","AVG","BIT_AND","BIT_OR","BIT_XOR","COUNT","COUNTIF","LOGICAL_AND","LOGICAL_OR","MAX","MIN","STRING_AGG","SUM","APPROX_COUNT_DISTINCT","APPROX_QUANTILES","APPROX_TOP_COUNT","APPROX_TOP_SUM","ARRAY_CONCAT","ARRAY_LENGTH","ARRAY_TO_STRING","GENERATE_ARRAY","GENERATE_DATE_ARRAY","GENERATE_TIMESTAMP_ARRAY","ARRAY_REVERSE","OFFSET","SAFE_OFFSET","ORDINAL","SAFE_ORDINAL","BIT_COUNT","PARSE_BIGNUMERIC","PARSE_NUMERIC","SAFE_CAST","CURRENT_DATE","EXTRACT","DATE","DATE_ADD","DATE_SUB","DATE_DIFF","DATE_TRUNC","DATE_FROM_UNIX_DATE","FORMAT_DATE","LAST_DAY","PARSE_DATE","UNIX_DATE","CURRENT_DATETIME","DATETIME","EXTRACT","DATETIME_ADD","DATETIME_SUB","DATETIME_DIFF","DATETIME_TRUNC","FORMAT_DATETIME","LAST_DAY","PARSE_DATETIME","ERROR","EXTERNAL_QUERY","S2_CELLIDFROMPOINT","S2_COVERINGCELLIDS","ST_ANGLE","ST_AREA","ST_ASBINARY","ST_ASGEOJSON","ST_ASTEXT","ST_AZIMUTH","ST_BOUNDARY","ST_BOUNDINGBOX","ST_BUFFER","ST_BUFFERWITHTOLERANCE","ST_CENTROID","ST_CENTROID_AGG","ST_CLOSESTPOINT","ST_CLUSTERDBSCAN","ST_CONTAINS","ST_CONVEXHULL","ST_COVEREDBY","ST_COVERS","ST_DIFFERENCE","ST_DIMENSION","ST_DISJOINT","ST_DISTANCE","ST_DUMP","ST_DWITHIN","ST_ENDPOINT","ST_EQUALS","ST_EXTENT","ST_EXTERIORRING","ST_GEOGFROM","ST_GEOGFROMGEOJSON","ST_GEOGFROMTEXT","ST_GEOGFROMWKB","ST_GEOGPOINT","ST_GEOGPOINTFROMGEOHASH","ST_GEOHASH","ST_GEOMETRYTYPE","ST_INTERIORRINGS","ST_INTERSECTION","ST_INTERSECTS","ST_INTERSECTSBOX","ST_ISCOLLECTION","ST_ISEMPTY","ST_LENGTH","ST_MAKELINE","ST_MAKEPOLYGON","ST_MAKEPOLYGONORIENTED","ST_MAXDISTANCE","ST_NPOINTS","ST_NUMGEOMETRIES","ST_NUMPOINTS","ST_PERIMETER","ST_POINTN","ST_SIMPLIFY","ST_SNAPTOGRID","ST_STARTPOINT","ST_TOUCHES","ST_UNION","ST_UNION_AGG","ST_WITHIN","ST_X","ST_Y","FARM_FINGERPRINT","MD5","SHA1","SHA256","SHA512","HLL_COUNT.INIT","HLL_COUNT.MERGE","HLL_COUNT.MERGE_PARTIAL","HLL_COUNT.EXTRACT","MAKE_INTERVAL","EXTRACT","JUSTIFY_DAYS","JUSTIFY_HOURS","JUSTIFY_INTERVAL","JSON_EXTRACT","JSON_QUERY","JSON_EXTRACT_SCALAR","JSON_VALUE","JSON_EXTRACT_ARRAY","JSON_QUERY_ARRAY","JSON_EXTRACT_STRING_ARRAY","JSON_VALUE_ARRAY","TO_JSON_STRING","ABS","SIGN","IS_INF","IS_NAN","IEEE_DIVIDE","RAND","SQRT","POW","POWER","EXP","LN","LOG","LOG10","GREATEST","LEAST","DIV","SAFE_DIVIDE","SAFE_MULTIPLY","SAFE_NEGATE","SAFE_ADD","SAFE_SUBTRACT","MOD","ROUND","TRUNC","CEIL","CEILING","FLOOR","COS","COSH","ACOS","ACOSH","SIN","SINH","ASIN","ASINH","TAN","TANH","ATAN","ATANH","ATAN2","RANGE_BUCKET","FIRST_VALUE","LAST_VALUE","NTH_VALUE","LEAD","LAG","PERCENTILE_CONT","PERCENTILE_DISC","NET.IP_FROM_STRING","NET.SAFE_IP_FROM_STRING","NET.IP_TO_STRING","NET.IP_NET_MASK","NET.IP_TRUNC","NET.IPV4_FROM_INT64","NET.IPV4_TO_INT64","NET.HOST","NET.PUBLIC_SUFFIX","NET.REG_DOMAIN","RANK","DENSE_RANK","PERCENT_RANK","CUME_DIST","NTILE","ROW_NUMBER","SESSION_USER","CORR","COVAR_POP","COVAR_SAMP","STDDEV_POP","STDDEV_SAMP","STDDEV","VAR_POP","VAR_SAMP","VARIANCE","ASCII","BYTE_LENGTH","CHAR_LENGTH","CHARACTER_LENGTH","CHR","CODE_POINTS_TO_BYTES","CODE_POINTS_TO_STRING","CONCAT","CONTAINS_SUBSTR","ENDS_WITH","FORMAT","FROM_BASE32","FROM_BASE64","FROM_HEX","INITCAP","INSTR","LEFT","LENGTH","LPAD","LOWER","LTRIM","NORMALIZE","NORMALIZE_AND_CASEFOLD","OCTET_LENGTH","REGEXP_CONTAINS","REGEXP_EXTRACT","REGEXP_EXTRACT_ALL","REGEXP_INSTR","REGEXP_REPLACE","REGEXP_SUBSTR","REPLACE","REPEAT","REVERSE","RIGHT","RPAD","RTRIM","SAFE_CONVERT_BYTES_TO_STRING","SOUNDEX","SPLIT","STARTS_WITH","STRPOS","SUBSTR","SUBSTRING","TO_BASE32","TO_BASE64","TO_CODE_POINTS","TO_HEX","TRANSLATE","TRIM","UNICODE","UPPER","CURRENT_TIME","TIME","EXTRACT","TIME_ADD","TIME_SUB","TIME_DIFF","TIME_TRUNC","FORMAT_TIME","PARSE_TIME","CURRENT_TIMESTAMP","EXTRACT","STRING","TIMESTAMP","TIMESTAMP_ADD","TIMESTAMP_SUB","TIMESTAMP_DIFF","TIMESTAMP_TRUNC","FORMAT_TIMESTAMP","PARSE_TIMESTAMP","TIMESTAMP_SECONDS","TIMESTAMP_MILLIS","TIMESTAMP_MICROS","UNIX_SECONDS","UNIX_MILLIS","UNIX_MICROS","GENERATE_UUID","COALESCE","IF","IFNULL","NULLIF","AVG","BIT_AND","BIT_OR","BIT_XOR","CORR","COUNT","COVAR_POP","COVAR_SAMP","EXACT_COUNT_DISTINCT","FIRST","GROUP_CONCAT","GROUP_CONCAT_UNQUOTED","LAST","MAX","MIN","NEST","NTH","QUANTILES","STDDEV","STDDEV_POP","STDDEV_SAMP","SUM","TOP","UNIQUE","VARIANCE","VAR_POP","VAR_SAMP","BIT_COUNT","BOOLEAN","BYTES","CAST","FLOAT","HEX_STRING","INTEGER","STRING","COALESCE","GREATEST","IFNULL","IS_INF","IS_NAN","IS_EXPLICITLY_DEFINED","LEAST","NVL","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATE","DATE_ADD","DATEDIFF","DAY","DAYOFWEEK","DAYOFYEAR","FORMAT_UTC_USEC","HOUR","MINUTE","MONTH","MSEC_TO_TIMESTAMP","NOW","PARSE_UTC_USEC","QUARTER","SEC_TO_TIMESTAMP","SECOND","STRFTIME_UTC_USEC","TIME","TIMESTAMP","TIMESTAMP_TO_MSEC","TIMESTAMP_TO_SEC","TIMESTAMP_TO_USEC","USEC_TO_TIMESTAMP","UTC_USEC_TO_DAY","UTC_USEC_TO_HOUR","UTC_USEC_TO_MONTH","UTC_USEC_TO_WEEK","UTC_USEC_TO_YEAR","WEEK","YEAR","FORMAT_IP","PARSE_IP","FORMAT_PACKED_IP","PARSE_PACKED_IP","JSON_EXTRACT","JSON_EXTRACT_SCALAR","ABS","ACOS","ACOSH","ASIN","ASINH","ATAN","ATANH","ATAN2","CEIL","COS","COSH","DEGREES","EXP","FLOOR","LN","LOG","LOG2","LOG10","PI","POW","RADIANS","RAND","ROUND","SIN","SINH","SQRT","TAN","TANH","REGEXP_MATCH","REGEXP_EXTRACT","REGEXP_REPLACE","CONCAT","INSTR","LEFT","LENGTH","LOWER","LPAD","LTRIM","REPLACE","RIGHT","RPAD","RTRIM","SPLIT","SUBSTR","UPPER","TABLE_DATE_RANGE","TABLE_DATE_RANGE_STRICT","TABLE_QUERY","HOST","DOMAIN","TLD","AVG","COUNT","MAX","MIN","STDDEV","SUM","CUME_DIST","DENSE_RANK","FIRST_VALUE","LAG","LAST_VALUE","LEAD","NTH_VALUE","NTILE","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","RANK","RATIO_TO_REPORT","ROW_NUMBER","CURRENT_USER","EVERY","FROM_BASE64","HASH","FARM_FINGERPRINT","IF","POSITION","SHA1","SOME","TO_BASE64","BQ.JOBS.CANCEL","BQ.REFRESH_MATERIALIZED_VIEW","OPTIONS","PIVOT","UNPIVOT"],Co=["ALL","AND","ANY","AS","ASC","ASSERT_ROWS_MODIFIED","AT","BETWEEN","BY","CASE","CAST","COLLATE","CONTAINS","CREATE","CROSS","CUBE","CURRENT","DEFAULT","DEFINE","DESC","DISTINCT","ELSE","END","ENUM","ESCAPE","EXCEPT","EXCLUDE","EXISTS","EXTRACT","FALSE","FETCH","FOLLOWING","FOR","FROM","FULL","GROUP","GROUPING","GROUPS","HASH","HAVING","IF","IGNORE","IN","INNER","INTERSECT","INTO","IS","JOIN","LATERAL","LEFT","LIMIT","LOOKUP","MERGE","NATURAL","NEW","NO","NOT","NULL","NULLS","OF","ON","OR","ORDER","OUTER","OVER","PARTITION","PRECEDING","PROTO","RANGE","RECURSIVE","RESPECT","RIGHT","ROLLUP","ROWS","SELECT","SET","SOME","TABLE","TABLESAMPLE","THEN","TO","TREAT","TRUE","UNBOUNDED","UNION","UNNEST","USING","WHEN","WHERE","WINDOW","WITH","WITHIN","SAFE","LIKE","COPY","CLONE","IN","OUT","INOUT","RETURNS","LANGUAGE","CASCADE","RESTRICT","DETERMINISTIC"],Lo=["ARRAY","BOOL","BYTES","DATE","DATETIME","GEOGRAPHY","INTERVAL","INT64","INT","SMALLINT","INTEGER","BIGINT","TINYINT","BYTEINT","NUMERIC","DECIMAL","BIGNUMERIC","BIGDECIMAL","FLOAT64","STRING","STRUCT","TIME","TIMEZONE"],_o=u(["SELECT [ALL | DISTINCT] [AS STRUCT | AS VALUE]"]),uo=u(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","QUALIFY","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","OMIT RECORD IF","INSERT [INTO]","VALUES","SET","MERGE [INTO]","WHEN [NOT] MATCHED [BY SOURCE | BY TARGET] [THEN]","UPDATE SET","CLUSTER BY","FOR SYSTEM_TIME AS OF","WITH CONNECTION","WITH PARTITION COLUMNS","REMOTE WITH CONNECTION"]),Mr=u(["CREATE [OR REPLACE] [TEMP|TEMPORARY|SNAPSHOT|EXTERNAL] TABLE [IF NOT EXISTS]"]),Xt=u(["CREATE [OR REPLACE] [MATERIALIZED] VIEW [IF NOT EXISTS]","UPDATE","DELETE [FROM]","DROP [SNAPSHOT | EXTERNAL] TABLE [IF EXISTS]","ALTER TABLE [IF EXISTS]","ADD COLUMN [IF NOT EXISTS]","DROP COLUMN [IF EXISTS]","RENAME TO","ALTER COLUMN [IF EXISTS]","SET DEFAULT COLLATE","SET OPTIONS","DROP NOT NULL","SET DATA TYPE","ALTER SCHEMA [IF EXISTS]","ALTER [MATERIALIZED] VIEW [IF EXISTS]","ALTER BI_CAPACITY","TRUNCATE TABLE","CREATE SCHEMA [IF NOT EXISTS]","DEFAULT COLLATE","CREATE [OR REPLACE] [TEMP|TEMPORARY|TABLE] FUNCTION [IF NOT EXISTS]","CREATE [OR REPLACE] PROCEDURE [IF NOT EXISTS]","CREATE [OR REPLACE] ROW ACCESS POLICY [IF NOT EXISTS]","GRANT TO","FILTER USING","CREATE CAPACITY","AS JSON","CREATE RESERVATION","CREATE ASSIGNMENT","CREATE SEARCH INDEX [IF NOT EXISTS]","DROP SCHEMA [IF EXISTS]","DROP [MATERIALIZED] VIEW [IF EXISTS]","DROP [TABLE] FUNCTION [IF EXISTS]","DROP PROCEDURE [IF EXISTS]","DROP ROW ACCESS POLICY","DROP ALL ROW ACCESS POLICIES","DROP CAPACITY [IF EXISTS]","DROP RESERVATION [IF EXISTS]","DROP ASSIGNMENT [IF EXISTS]","DROP SEARCH INDEX [IF EXISTS]","DROP [IF EXISTS]","GRANT","REVOKE","DECLARE","EXECUTE IMMEDIATE","LOOP","END LOOP","REPEAT","END REPEAT","WHILE","END WHILE","BREAK","LEAVE","CONTINUE","ITERATE","FOR","END FOR","BEGIN","BEGIN TRANSACTION","COMMIT TRANSACTION","ROLLBACK TRANSACTION","RAISE","RETURN","CALL","ASSERT","EXPORT DATA"]),po=u(["UNION {ALL | DISTINCT}","EXCEPT DISTINCT","INTERSECT DISTINCT"]),Do=u(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN"]),Po=u(["TABLESAMPLE SYSTEM","ANY TYPE","ALL COLUMNS","NOT DETERMINISTIC","{ROWS | RANGE} BETWEEN","IS [NOT] DISTINCT FROM"]),Mo=u([]),mo={name:"bigquery",tokenizerOptions:{reservedSelect:_o,reservedClauses:[...uo,...Xt,...Mr],reservedSetOperations:po,reservedJoins:Do,reservedKeywordPhrases:Po,reservedDataTypePhrases:Mo,reservedKeywords:Co,reservedDataTypes:Lo,reservedFunctionNames:co,extraParens:["[]"],stringTypes:[{quote:'""".."""',prefixes:["R","B","RB","BR"]},{quote:"'''..'''",prefixes:["R","B","RB","BR"]},'""-bs',"''-bs",{quote:'""-raw',prefixes:["R","B","RB","BR"],requirePrefix:!0},{quote:"''-raw",prefixes:["R","B","RB","BR"],requirePrefix:!0}],identTypes:["``"],identChars:{dashes:!0},paramTypes:{positional:!0,named:["@"],quoted:["@"]},variableTypes:[{regex:String.raw`@@\w+`}],lineCommentTypes:["--","#"],operators:["&","|","^","~",">>","<<","||","=>"],postProcess:fo},formatOptions:{onelineClauses:[...Mr,...Xt],tabularOnelineClauses:Xt}};function fo(e){return ho(Uo(e))}function ho(e){let t=me;return e.map(r=>r.text==="OFFSET"&&t.text==="["?(t=r,Object.assign(Object.assign({},r),{type:D.RESERVED_FUNCTION_NAME})):(t=r,r))}function Uo(e){var t;const r=[];for(let s=0;s<e.length;s++){const n=e[s];if((fe.ARRAY(n)||fe.STRUCT(n))&&((t=e[s+1])===null||t===void 0?void 0:t.text)==="<"){const T=xo(e,s+1),o=e.slice(s,T+1);r.push({type:D.IDENTIFIER,raw:o.map(mr("raw")).join(""),text:o.map(mr("text")).join(""),start:n.start}),s=T}else r.push(n)}return r}const mr=e=>t=>t.type===D.IDENTIFIER||t.type===D.COMMA?t[e]+" ":t[e];function xo(e,t){let r=0;for(let s=t;s<e.length;s++){const n=e[s];if(n.text==="<"?r++:n.text===">"?r--:n.text===">>"&&(r-=2),r===0)return s}return e.length-1}const go=["BIT_AND","BIT_OR","BIT_XOR","BLAKE3","CAST","CHARACTER_LENGTH","CHAR_LENGTH","COVAR_POP","COVAR_SAMP","CRC32","CRC32IEEE","CRC64","DATE","DATE_DIFF","DATE_FORMAT","DATE_TRUNC","DAY","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","FORMAT_BYTES","FQDN","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","HOUR","INET6_ATON","INET6_NTOA","INET_ATON","INET_NTOA","IPv4CIDRToRange","IPv4NumToString","IPv4NumToStringClassC","IPv4StringToNum","IPv4StringToNumOrDefault","IPv4StringToNumOrNull","IPv4ToIPv6","IPv6CIDRToRange","IPv6NumToString","IPv6StringToNum","IPv6StringToNumOrDefault","IPv6StringToNumOrNull","JSONAllPaths","JSONAllPathsWithTypes","JSONArrayLength","JSONDynamicPaths","JSONDynamicPathsWithTypes","JSONExtract","JSONExtractArrayRaw","JSONExtractArrayRawCaseInsensitive","JSONExtractBool","JSONExtractBoolCaseInsensitive","JSONExtractCaseInsensitive","JSONExtractFloat","JSONExtractFloatCaseInsensitive","JSONExtractInt","JSONExtractIntCaseInsensitive","JSONExtractKeys","JSONExtractKeysAndValues","JSONExtractKeysAndValuesCaseInsensitive","JSONExtractKeysAndValuesRaw","JSONExtractKeysAndValuesRawCaseInsensitive","JSONExtractKeysCaseInsensitive","JSONExtractRaw","JSONExtractRawCaseInsensitive","JSONExtractString","JSONExtractStringCaseInsensitive","JSONExtractUInt","JSONExtractUIntCaseInsensitive","JSONHas","JSONKey","JSONLength","JSONMergePatch","JSONSharedDataPaths","JSONSharedDataPathsWithTypes","JSONType","JSON_ARRAY_LENGTH","JSON_EXISTS","JSON_QUERY","JSON_VALUE","L1Distance","L1Norm","L1Normalize","L2Distance","L2Norm","L2Normalize","L2SquaredDistance","L2SquaredNorm","LAST_DAY","LinfDistance","LinfNorm","LinfNormalize","LpDistance","LpNorm","LpNormalize","MACNumToString","MACStringToNum","MACStringToOUI","MAP_FROM_ARRAYS","MD4","MD5","MILLISECOND","MINUTE","MONTH","OCTET_LENGTH","QUARTER","REGEXP_EXTRACT","REGEXP_MATCHES","REGEXP_REPLACE","RIPEMD160","SCHEMA","SECOND","SHA1","SHA224","SHA256","SHA384","SHA512","SHA512_256","STD","STDDEV_POP","STDDEV_SAMP","ST_LineFromWKB","ST_MLineFromWKB","ST_MPolyFromWKB","ST_PointFromWKB","ST_PolyFromWKB","SUBSTRING_INDEX","SVG","TIMESTAMP_DIFF","TO_BASE64","TO_DAYS","TO_UNIXTIME","ULIDStringToDateTime","URLHash","URLHierarchy","URLPathHierarchy","UTCTimestamp","UTC_timestamp","UUIDNumToString","UUIDStringToNum","UUIDToNum","UUIDv7ToDateTime","VAR_POP","VAR_SAMP","YEAR","YYYYMMDDToDate","YYYYMMDDToDate32","YYYYMMDDhhmmssToDateTime","YYYYMMDDhhmmssToDateTime64","_CAST","__actionName","__bitBoolMaskAnd","__bitBoolMaskOr","__bitSwapLastTwo","__bitWrapperFunc","__getScalar","__patchPartitionID","__scalarSubqueryResult","abs","accurateCast","accurateCastOrDefault","accurateCastOrNull","acos","acosh","addDate","addDays","addHours","addInterval","addMicroseconds","addMilliseconds","addMinutes","addMonths","addNanoseconds","addQuarters","addSeconds","addTupleOfIntervals","addWeeks","addYears","addressToLine","addressToLineWithInlines","addressToSymbol","aes_decrypt_mysql","aes_encrypt_mysql","age","aggThrow","alphaTokens","analysisOfVariance","anova","any","anyHeavy","anyLast","anyLastRespectNulls","anyLast_respect_nulls","anyRespectNulls","anyValueRespectNulls","any_respect_nulls","any_value","any_value_respect_nulls","appendTrailingCharIfAbsent","approx_top_count","approx_top_k","approx_top_sum","argMax","argMin","array","arrayAUC","arrayAUCPR","arrayAll","arrayAvg","arrayCompact","arrayConcat","arrayCount","arrayCumSum","arrayCumSumNonNegative","arrayDifference","arrayDistinct","arrayDotProduct","arrayElement","arrayElementOrNull","arrayEnumerate","arrayEnumerateDense","arrayEnumerateDenseRanked","arrayEnumerateUniq","arrayEnumerateUniqRanked","arrayExists","arrayFill","arrayFilter","arrayFirst","arrayFirstIndex","arrayFirstOrNull","arrayFlatten","arrayFold","arrayIntersect","arrayJaccardIndex","arrayJoin","arrayLast","arrayLastIndex","arrayLastOrNull","arrayLevenshteinDistance","arrayLevenshteinDistanceWeighted","arrayMap","arrayMax","arrayMin","arrayNormalizedGini","arrayPRAUC","arrayPartialReverseSort","arrayPartialShuffle","arrayPartialSort","arrayPopBack","arrayPopFront","arrayProduct","arrayPushBack","arrayPushFront","arrayROCAUC","arrayRandomSample","arrayReduce","arrayReduceInRanges","arrayResize","arrayReverse","arrayReverseFill","arrayReverseSort","arrayReverseSplit","arrayRotateLeft","arrayRotateRight","arrayShiftLeft","arrayShiftRight","arrayShingles","arrayShuffle","arraySimilarity","arraySlice","arraySort","arraySplit","arrayStringConcat","arraySum","arraySymmetricDifference","arrayUnion","arrayUniq","arrayWithConstant","arrayZip","arrayZipUnaligned","array_agg","array_concat_agg","ascii","asin","asinh","assumeNotNull","atan","atan2","atanh","authenticatedUser","avg","avgWeighted","bar","base32Decode","base32Encode","base58Decode","base58Encode","base64Decode","base64Encode","base64URLDecode","base64URLEncode","basename","bech32Decode","bech32Encode","bin","bitAnd","bitCount","bitHammingDistance","bitNot","bitOr","bitPositionsToArray","bitRotateLeft","bitRotateRight","bitShiftLeft","bitShiftRight","bitSlice","bitTest","bitTestAll","bitTestAny","bitXor","bitmapAnd","bitmapAndCardinality","bitmapAndnot","bitmapAndnotCardinality","bitmapBuild","bitmapCardinality","bitmapContains","bitmapHasAll","bitmapHasAny","bitmapMax","bitmapMin","bitmapOr","bitmapOrCardinality","bitmapSubsetInRange","bitmapSubsetLimit","bitmapToArray","bitmapTransform","bitmapXor","bitmapXorCardinality","bitmaskToArray","bitmaskToList","blockNumber","blockSerializedSize","blockSize","boundingRatio","buildId","byteHammingDistance","byteSize","byteSlice","byteSwap","caseWithExpr","caseWithExpression","caseWithoutExpr","caseWithoutExpression","catboostEvaluate","categoricalInformationValue","cbrt","ceil","ceiling","changeDay","changeHour","changeMinute","changeMonth","changeSecond","changeYear","char","cityHash64","clamp","coalesce","colorOKLCHToSRGB","colorSRGBToOKLCH","compareSubstrings","concat","concatAssumeInjective","concatWithSeparator","concatWithSeparatorAssumeInjective","concat_ws","connectionId","connection_id","contingency","convertCharset","corr","corrMatrix","corrStable","cos","cosh","cosineDistance","count","countDigits","countEqual","countMatches","countMatchesCaseInsensitive","countSubstrings","countSubstringsCaseInsensitive","countSubstringsCaseInsensitiveUTF8","covarPop","covarPopMatrix","covarPopStable","covarSamp","covarSampMatrix","covarSampStable","cramersV","cramersVBiasCorrected","curdate","currentDatabase","currentProfiles","currentQueryID","currentRoles","currentSchemas","currentUser","current_database","current_date","current_query_id","current_schemas","current_timestamp","current_user","cutFragment","cutIPv6","cutQueryString","cutQueryStringAndFragment","cutToFirstSignificantSubdomain","cutToFirstSignificantSubdomainCustom","cutToFirstSignificantSubdomainCustomRFC","cutToFirstSignificantSubdomainCustomWithWWW","cutToFirstSignificantSubdomainCustomWithWWWRFC","cutToFirstSignificantSubdomainRFC","cutToFirstSignificantSubdomainWithWWW","cutToFirstSignificantSubdomainWithWWWRFC","cutURLParameter","cutWWW","damerauLevenshteinDistance","dateDiff","dateName","dateTime64ToSnowflake","dateTime64ToSnowflakeID","dateTimeToSnowflake","dateTimeToSnowflakeID","dateTimeToUUIDv7","dateTrunc","date_bin","date_diff","decodeHTMLComponent","decodeURLComponent","decodeURLFormComponent","decodeXMLComponent","decrypt","defaultProfiles","defaultRoles","defaultValueOfArgumentType","defaultValueOfTypeName","degrees","deltaSum","deltaSumTimestamp","demangle","denseRank","dense_rank","detectCharset","detectLanguage","detectLanguageMixed","detectLanguageUnknown","detectProgrammingLanguage","detectTonality","dictGet","dictGetAll","dictGetChildren","dictGetDate","dictGetDateOrDefault","dictGetDateTime","dictGetDateTimeOrDefault","dictGetDescendants","dictGetFloat32","dictGetFloat32OrDefault","dictGetFloat64","dictGetFloat64OrDefault","dictGetHierarchy","dictGetIPv4","dictGetIPv4OrDefault","dictGetIPv6","dictGetIPv6OrDefault","dictGetInt16","dictGetInt16OrDefault","dictGetInt32","dictGetInt32OrDefault","dictGetInt64","dictGetInt64OrDefault","dictGetInt8","dictGetInt8OrDefault","dictGetOrDefault","dictGetOrNull","dictGetString","dictGetStringOrDefault","dictGetUInt16","dictGetUInt16OrDefault","dictGetUInt32","dictGetUInt32OrDefault","dictGetUInt64","dictGetUInt64OrDefault","dictGetUInt8","dictGetUInt8OrDefault","dictGetUUID","dictGetUUIDOrDefault","dictHas","dictIsIn","displayName","distanceL1","distanceL2","distanceL2Squared","distanceLinf","distanceLp","distinctDynamicTypes","distinctJSONPaths","distinctJSONPathsAndTypes","divide","divideDecimal","divideOrNull","domain","domainRFC","domainWithoutWWW","domainWithoutWWWRFC","dotProduct","dumpColumnStructure","dynamicElement","dynamicType","e","editDistance","editDistanceUTF8","empty","emptyArrayDate","emptyArrayDateTime","emptyArrayFloat32","emptyArrayFloat64","emptyArrayInt16","emptyArrayInt32","emptyArrayInt64","emptyArrayInt8","emptyArrayString","emptyArrayToSingle","emptyArrayUInt16","emptyArrayUInt32","emptyArrayUInt64","emptyArrayUInt8","enabledProfiles","enabledRoles","encodeURLComponent","encodeURLFormComponent","encodeXMLComponent","encrypt","endsWith","endsWithUTF8","entropy","equals","erf","erfc","errorCodeToName","estimateCompressionRatio","evalMLMethod","exp","exp10","exp2","exponentialMovingAverage","exponentialTimeDecayedAvg","exponentialTimeDecayedCount","exponentialTimeDecayedMax","exponentialTimeDecayedSum","extract","extractAll","extractAllGroups","extractAllGroupsHorizontal","extractAllGroupsVertical","extractGroups","extractKeyValuePairs","extractKeyValuePairsWithEscaping","extractTextFromHTML","extractURLParameter","extractURLParameterNames","extractURLParameters","factorial","farmFingerprint64","farmHash64","file","filesystemAvailable","filesystemCapacity","filesystemUnreserved","finalizeAggregation","financialInternalRateOfReturn","financialInternalRateOfReturnExtended","financialNetPresentValue","financialNetPresentValueExtended","firstLine","firstSignificantSubdomain","firstSignificantSubdomainCustom","firstSignificantSubdomainCustomRFC","firstSignificantSubdomainRFC","firstValueRespectNulls","first_value","first_value_respect_nulls","flameGraph","flatten","flattenTuple","floor","formatDateTime","formatDateTimeInJodaSyntax","formatQuery","formatQueryOrNull","formatQuerySingleLine","formatQuerySingleLineOrNull","formatReadableDecimalSize","formatReadableQuantity","formatReadableSize","formatReadableTimeDelta","formatRow","formatRowNoNewline","fragment","fromDaysSinceYearZero","fromDaysSinceYearZero32","fromModifiedJulianDay","fromModifiedJulianDayOrNull","fromUTCTimestamp","fromUnixTimestamp","fromUnixTimestamp64Micro","fromUnixTimestamp64Milli","fromUnixTimestamp64Nano","fromUnixTimestamp64Second","fromUnixTimestampInJodaSyntax","from_utc_timestamp","fullHostName","fuzzBits","gccMurmurHash","gcd","generateRandomStructure","generateSerialID","generateSnowflakeID","generateULID","generateUUIDv4","generateUUIDv7","geoDistance","geoToH3","geoToS2","geohashDecode","geohashEncode","geohashesInBox","getClientHTTPHeader","getMacro","getMaxTableNameLengthForDatabase","getMergeTreeSetting","getOSKernelVersion","getServerPort","getServerSetting","getSetting","getSettingOrDefault","getSizeOfEnumType","getSubcolumn","getTypeSerializationStreams","globalIn","globalInIgnoreSet","globalNotIn","globalNotInIgnoreSet","globalNotNullIn","globalNotNullInIgnoreSet","globalNullIn","globalNullInIgnoreSet","globalVariable","greatCircleAngle","greatCircleDistance","greater","greaterOrEquals","greatest","groupArray","groupArrayInsertAt","groupArrayIntersect","groupArrayLast","groupArrayMovingAvg","groupArrayMovingSum","groupArraySample","groupArraySorted","groupBitAnd","groupBitOr","groupBitXor","groupBitmap","groupBitmapAnd","groupBitmapOr","groupBitmapXor","groupConcat","groupNumericIndexedVector","groupUniqArray","group_concat","h3CellAreaM2","h3CellAreaRads2","h3Distance","h3EdgeAngle","h3EdgeLengthKm","h3EdgeLengthM","h3ExactEdgeLengthKm","h3ExactEdgeLengthM","h3ExactEdgeLengthRads","h3GetBaseCell","h3GetDestinationIndexFromUnidirectionalEdge","h3GetFaces","h3GetIndexesFromUnidirectionalEdge","h3GetOriginIndexFromUnidirectionalEdge","h3GetPentagonIndexes","h3GetRes0Indexes","h3GetResolution","h3GetUnidirectionalEdge","h3GetUnidirectionalEdgeBoundary","h3GetUnidirectionalEdgesFromHexagon","h3HexAreaKm2","h3HexAreaM2","h3HexRing","h3IndexesAreNeighbors","h3IsPentagon","h3IsResClassIII","h3IsValid","h3Line","h3NumHexagons","h3PointDistKm","h3PointDistM","h3PointDistRads","h3ToCenterChild","h3ToChildren","h3ToGeo","h3ToGeoBoundary","h3ToParent","h3ToString","h3UnidirectionalEdgeIsValid","h3kRing","halfMD5","has","hasAll","hasAny","hasColumnInTable","hasSubsequence","hasSubsequenceCaseInsensitive","hasSubsequenceCaseInsensitiveUTF8","hasSubsequenceUTF8","hasSubstr","hasThreadFuzzer","hasToken","hasTokenCaseInsensitive","hasTokenCaseInsensitiveOrNull","hasTokenOrNull","hex","hilbertDecode","hilbertEncode","histogram","hiveHash","hop","hopEnd","hopStart","hostName","hostname","hypot","icebergBucket","icebergHash","icebergTruncate","identity","idnaDecode","idnaEncode","if","ifNotFinite","ifNull","ignore","inIgnoreSet","indexHint","indexOf","indexOfAssumeSorted","initcap","initcapUTF8","initialQueryID","initialQueryStartTime","initial_query_id","initial_query_start_time","initializeAggregation","instr","intDiv","intDivOrNull","intDivOrZero","intExp10","intExp2","intHash32","intHash64","intervalLengthSum","isConstant","isDecimalOverflow","isDynamicElementInSharedData","isFinite","isIPAddressInRange","isIPv4String","isIPv6String","isInfinite","isMergeTreePartCoveredBy","isNaN","isNotDistinctFrom","isNotNull","isNull","isNullable","isValidJSON","isValidUTF8","isZeroOrNull","jaroSimilarity","jaroWinklerSimilarity","javaHash","javaHashUTF16LE","joinGet","joinGetOrNull","jsonMergePatch","jumpConsistentHash","kafkaMurmurHash","keccak256","kolmogorovSmirnovTest","kostikConsistentHash","kql_array_sort_asc","kql_array_sort_desc","kurtPop","kurtSamp","lag","lagInFrame","largestTriangleThreeBuckets","lastValueRespectNulls","last_value","last_value_respect_nulls","lcase","lcm","lead","leadInFrame","least","left","leftPad","leftPadUTF8","leftUTF8","lemmatize","length","lengthUTF8","less","lessOrEquals","levenshteinDistance","levenshteinDistanceUTF8","lgamma","ln","locate","log","log10","log1p","log2","logTrace","lowCardinalityIndices","lowCardinalityKeys","lower","lowerUTF8","lpad","ltrim","lttb","makeDate","makeDate32","makeDateTime","makeDateTime64","mannWhitneyUTest","map","mapAdd","mapAll","mapApply","mapConcat","mapContains","mapContainsKey","mapContainsKeyLike","mapContainsValue","mapContainsValueLike","mapExists","mapExtractKeyLike","mapExtractValueLike","mapFilter","mapFromArrays","mapFromString","mapKeys","mapPartialReverseSort","mapPartialSort","mapPopulateSeries","mapReverseSort","mapSort","mapSubtract","mapUpdate","mapValues","match","materialize","max","max2","maxIntersections","maxIntersectionsPosition","maxMappedArrays","meanZTest","median","medianBFloat16","medianBFloat16Weighted","medianDD","medianDeterministic","medianExact","medianExactHigh","medianExactLow","medianExactWeighted","medianExactWeightedInterpolated","medianGK","medianInterpolatedWeighted","medianTDigest","medianTDigestWeighted","medianTiming","medianTimingWeighted","mergeTreePartInfo","metroHash64","mid","min","min2","minMappedArrays","minSampleSizeContinous","minSampleSizeContinuous","minSampleSizeConversion","minus","mismatches","mod","modOrNull","modulo","moduloLegacy","moduloOrNull","moduloOrZero","monthName","mortonDecode","mortonEncode","multiFuzzyMatchAllIndices","multiFuzzyMatchAny","multiFuzzyMatchAnyIndex","multiIf","multiMatchAllIndices","multiMatchAny","multiMatchAnyIndex","multiSearchAllPositions","multiSearchAllPositionsCaseInsensitive","multiSearchAllPositionsCaseInsensitiveUTF8","multiSearchAllPositionsUTF8","multiSearchAny","multiSearchAnyCaseInsensitive","multiSearchAnyCaseInsensitiveUTF8","multiSearchAnyUTF8","multiSearchFirstIndex","multiSearchFirstIndexCaseInsensitive","multiSearchFirstIndexCaseInsensitiveUTF8","multiSearchFirstIndexUTF8","multiSearchFirstPosition","multiSearchFirstPositionCaseInsensitive","multiSearchFirstPositionCaseInsensitiveUTF8","multiSearchFirstPositionUTF8","multiply","multiplyDecimal","murmurHash2_32","murmurHash2_64","murmurHash3_128","murmurHash3_32","murmurHash3_64","negate","neighbor","nested","netloc","ngramDistance","ngramDistanceCaseInsensitive","ngramDistanceCaseInsensitiveUTF8","ngramDistanceUTF8","ngramMinHash","ngramMinHashArg","ngramMinHashArgCaseInsensitive","ngramMinHashArgCaseInsensitiveUTF8","ngramMinHashArgUTF8","ngramMinHashCaseInsensitive","ngramMinHashCaseInsensitiveUTF8","ngramMinHashUTF8","ngramSearch","ngramSearchCaseInsensitive","ngramSearchCaseInsensitiveUTF8","ngramSearchUTF8","ngramSimHash","ngramSimHashCaseInsensitive","ngramSimHashCaseInsensitiveUTF8","ngramSimHashUTF8","ngrams","nonNegativeDerivative","normL1","normL2","normL2Squared","normLinf","normLp","normalizeL1","normalizeL2","normalizeLinf","normalizeLp","normalizeQuery","normalizeQueryKeepNames","normalizeUTF8NFC","normalizeUTF8NFD","normalizeUTF8NFKC","normalizeUTF8NFKD","normalizedQueryHash","normalizedQueryHashKeepNames","notEmpty","notEquals","notILike","notIn","notInIgnoreSet","notLike","notNullIn","notNullInIgnoreSet","nothing","nothingNull","nothingUInt64","now","now64","nowInBlock","nowInBlock64","nth_value","ntile","nullIf","nullIn","nullInIgnoreSet","numbers","numericIndexedVectorAllValueSum","numericIndexedVectorBuild","numericIndexedVectorCardinality","numericIndexedVectorGetValue","numericIndexedVectorPointwiseAdd","numericIndexedVectorPointwiseDivide","numericIndexedVectorPointwiseEqual","numericIndexedVectorPointwiseGreater","numericIndexedVectorPointwiseGreaterEqual","numericIndexedVectorPointwiseLess","numericIndexedVectorPointwiseLessEqual","numericIndexedVectorPointwiseMultiply","numericIndexedVectorPointwiseNotEqual","numericIndexedVectorPointwiseSubtract","numericIndexedVectorShortDebugString","numericIndexedVectorToMap","overlay","overlayUTF8","parseDateTime","parseDateTime32BestEffort","parseDateTime32BestEffortOrNull","parseDateTime32BestEffortOrZero","parseDateTime64","parseDateTime64BestEffort","parseDateTime64BestEffortOrNull","parseDateTime64BestEffortOrZero","parseDateTime64BestEffortUS","parseDateTime64BestEffortUSOrNull","parseDateTime64BestEffortUSOrZero","parseDateTime64InJodaSyntax","parseDateTime64InJodaSyntaxOrNull","parseDateTime64InJodaSyntaxOrZero","parseDateTime64OrNull","parseDateTime64OrZero","parseDateTimeBestEffort","parseDateTimeBestEffortOrNull","parseDateTimeBestEffortOrZero","parseDateTimeBestEffortUS","parseDateTimeBestEffortUSOrNull","parseDateTimeBestEffortUSOrZero","parseDateTimeInJodaSyntax","parseDateTimeInJodaSyntaxOrNull","parseDateTimeInJodaSyntaxOrZero","parseDateTimeOrNull","parseDateTimeOrZero","parseReadableSize","parseReadableSizeOrNull","parseReadableSizeOrZero","parseTimeDelta","partitionID","partitionId","path","pathFull","percentRank","percent_rank","pi","plus","pmod","pmodOrNull","pointInEllipses","pointInPolygon","polygonAreaCartesian","polygonAreaSpherical","polygonConvexHullCartesian","polygonPerimeterCartesian","polygonPerimeterSpherical","polygonsDistanceCartesian","polygonsDistanceSpherical","polygonsEqualsCartesian","polygonsIntersectCartesian","polygonsIntersectSpherical","polygonsIntersectionCartesian","polygonsIntersectionSpherical","polygonsSymDifferenceCartesian","polygonsSymDifferenceSpherical","polygonsUnionCartesian","polygonsUnionSpherical","polygonsWithinCartesian","polygonsWithinSpherical","port","portRFC","position","positionCaseInsensitive","positionCaseInsensitiveUTF8","positionUTF8","positiveModulo","positiveModuloOrNull","positive_modulo","positive_modulo_or_null","pow","power","printf","proportionsZTest","protocol","punycodeDecode","punycodeEncode","quantile","quantileBFloat16","quantileBFloat16Weighted","quantileDD","quantileDeterministic","quantileExact","quantileExactExclusive","quantileExactHigh","quantileExactInclusive","quantileExactLow","quantileExactWeighted","quantileExactWeightedInterpolated","quantileGK","quantileInterpolatedWeighted","quantileTDigest","quantileTDigestWeighted","quantileTiming","quantileTimingWeighted","quantiles","quantilesBFloat16","quantilesBFloat16Weighted","quantilesDD","quantilesDeterministic","quantilesExact","quantilesExactExclusive","quantilesExactHigh","quantilesExactInclusive","quantilesExactLow","quantilesExactWeighted","quantilesExactWeightedInterpolated","quantilesGK","quantilesInterpolatedWeighted","quantilesTDigest","quantilesTDigestWeighted","quantilesTiming","quantilesTimingWeighted","queryID","queryString","queryStringAndFragment","query_id","radians","rand","rand32","rand64","randBernoulli","randBinomial","randCanonical","randChiSquared","randConstant","randExponential","randFisherF","randLogNormal","randNegativeBinomial","randNormal","randPoisson","randStudentT","randUniform","randomFixedString","randomPrintableASCII","randomString","randomStringUTF8","rank","rankCorr","readWKBLineString","readWKBMultiLineString","readWKBMultiPolygon","readWKBPoint","readWKBPolygon","readWKTLineString","readWKTMultiLineString","readWKTMultiPolygon","readWKTPoint","readWKTPolygon","readWKTRing","regexpExtract","regexpQuoteMeta","regionHierarchy","regionIn","regionToArea","regionToCity","regionToContinent","regionToCountry","regionToDistrict","regionToName","regionToPopulation","regionToTopContinent","reinterpret","reinterpretAsDate","reinterpretAsDateTime","reinterpretAsFixedString","reinterpretAsFloat32","reinterpretAsFloat64","reinterpretAsInt128","reinterpretAsInt16","reinterpretAsInt256","reinterpretAsInt32","reinterpretAsInt64","reinterpretAsInt8","reinterpretAsString","reinterpretAsUInt128","reinterpretAsUInt16","reinterpretAsUInt256","reinterpretAsUInt32","reinterpretAsUInt64","reinterpretAsUInt8","reinterpretAsUUID","repeat","replace","replaceAll","replaceOne","replaceRegexpAll","replaceRegexpOne","replicate","retention","reverse","reverseUTF8","revision","right","rightPad","rightPadUTF8","rightUTF8","round","roundAge","roundBankers","roundDown","roundDuration","roundToExp2","rowNumberInAllBlocks","rowNumberInBlock","row_number","rpad","rtrim","runningAccumulate","runningConcurrency","runningDifference","runningDifferenceStartingWithFirstValue","s2CapContains","s2CapUnion","s2CellsIntersect","s2GetNeighbors","s2RectAdd","s2RectContains","s2RectIntersection","s2RectUnion","s2ToGeo","scalarProduct","searchAll","searchAny","sequenceCount","sequenceMatch","sequenceMatchEvents","sequenceNextNode","seriesDecomposeSTL","seriesOutliersDetectTukey","seriesPeriodDetectFFT","serverTimeZone","serverTimezone","serverUUID","shardCount","shardNum","showCertificate","sigmoid","sign","simpleJSONExtractBool","simpleJSONExtractFloat","simpleJSONExtractInt","simpleJSONExtractRaw","simpleJSONExtractString","simpleJSONExtractUInt","simpleJSONHas","simpleLinearRegression","sin","singleValueOrNull","sinh","sipHash128","sipHash128Keyed","sipHash128Reference","sipHash128ReferenceKeyed","sipHash64","sipHash64Keyed","skewPop","skewSamp","sleep","sleepEachRow","snowflakeIDToDateTime","snowflakeIDToDateTime64","snowflakeToDateTime","snowflakeToDateTime64","soundex","space","sparkBar","sparkbar","sparseGrams","sparseGramsHashes","sparseGramsHashesUTF8","sparseGramsUTF8","splitByAlpha","splitByChar","splitByNonAlpha","splitByRegexp","splitByString","splitByWhitespace","sqid","sqidDecode","sqidEncode","sqrt","startsWith","startsWithUTF8","stddevPop","stddevPopStable","stddevSamp","stddevSampStable","stem","stochasticLinearRegression","stochasticLogisticRegression","str_to_date","str_to_map","stringBytesEntropy","stringBytesUniq","stringJaccardIndex","stringJaccardIndexUTF8","stringToH3","structureToCapnProtoSchema","structureToProtobufSchema","studentTTest","subBitmap","subDate","substr","substring","substringIndex","substringIndexUTF8","substringUTF8","subtractDays","subtractHours","subtractInterval","subtractMicroseconds","subtractMilliseconds","subtractMinutes","subtractMonths","subtractNanoseconds","subtractQuarters","subtractSeconds","subtractTupleOfIntervals","subtractWeeks","subtractYears","sum","sumCount","sumKahan","sumMapFiltered","sumMapFilteredWithOverflow","sumMapWithOverflow","sumMappedArrays","sumWithOverflow","svg","synonyms","tan","tanh","tcpPort","tgamma","theilsU","throwIf","tid","timeDiff","timeSeriesDeltaToGrid","timeSeriesDerivToGrid","timeSeriesFromGrid","timeSeriesGroupArray","timeSeriesIdToTags","timeSeriesIdToTagsGroup","timeSeriesIdeltaToGrid","timeSeriesInstantDeltaToGrid","timeSeriesInstantRateToGrid","timeSeriesIrateToGrid","timeSeriesLastToGrid","timeSeriesLastTwoSamples","timeSeriesPredictLinearToGrid","timeSeriesRange","timeSeriesRateToGrid","timeSeriesResampleToGridWithStaleness","timeSeriesStoreTags","timeSeriesTagsGroupToTags","timeSlot","timeSlots","timeZone","timeZoneOf","timeZoneOffset","time_bucket","timestamp","timestampDiff","timestamp_diff","timezone","timezoneOf","timezoneOffset","toBFloat16","toBFloat16OrNull","toBFloat16OrZero","toBool","toColumnTypeName","toDate","toDate32","toDate32OrDefault","toDate32OrNull","toDate32OrZero","toDateOrDefault","toDateOrNull","toDateOrZero","toDateTime","toDateTime32","toDateTime64","toDateTime64OrDefault","toDateTime64OrNull","toDateTime64OrZero","toDateTimeOrDefault","toDateTimeOrNull","toDateTimeOrZero","toDayOfMonth","toDayOfWeek","toDayOfYear","toDaysSinceYearZero","toDecimal128","toDecimal128OrDefault","toDecimal128OrNull","toDecimal128OrZero","toDecimal256","toDecimal256OrDefault","toDecimal256OrNull","toDecimal256OrZero","toDecimal32","toDecimal32OrDefault","toDecimal32OrNull","toDecimal32OrZero","toDecimal64","toDecimal64OrDefault","toDecimal64OrNull","toDecimal64OrZero","toDecimalString","toFixedString","toFloat32","toFloat32OrDefault","toFloat32OrNull","toFloat32OrZero","toFloat64","toFloat64OrDefault","toFloat64OrNull","toFloat64OrZero","toHour","toIPv4","toIPv4OrDefault","toIPv4OrNull","toIPv4OrZero","toIPv6","toIPv6OrDefault","toIPv6OrNull","toIPv6OrZero","toISOWeek","toISOYear","toInt128","toInt128OrDefault","toInt128OrNull","toInt128OrZero","toInt16","toInt16OrDefault","toInt16OrNull","toInt16OrZero","toInt256","toInt256OrDefault","toInt256OrNull","toInt256OrZero","toInt32","toInt32OrDefault","toInt32OrNull","toInt32OrZero","toInt64","toInt64OrDefault","toInt64OrNull","toInt64OrZero","toInt8","toInt8OrDefault","toInt8OrNull","toInt8OrZero","toInterval","toIntervalDay","toIntervalHour","toIntervalMicrosecond","toIntervalMillisecond","toIntervalMinute","toIntervalMonth","toIntervalNanosecond","toIntervalQuarter","toIntervalSecond","toIntervalWeek","toIntervalYear","toJSONString","toLastDayOfMonth","toLastDayOfWeek","toLowCardinality","toMillisecond","toMinute","toModifiedJulianDay","toModifiedJulianDayOrNull","toMonday","toMonth","toMonthNumSinceEpoch","toNullable","toQuarter","toRelativeDayNum","toRelativeHourNum","toRelativeMinuteNum","toRelativeMonthNum","toRelativeQuarterNum","toRelativeSecondNum","toRelativeWeekNum","toRelativeYearNum","toSecond","toStartOfDay","toStartOfFifteenMinutes","toStartOfFiveMinute","toStartOfFiveMinutes","toStartOfHour","toStartOfISOYear","toStartOfInterval","toStartOfMicrosecond","toStartOfMillisecond","toStartOfMinute","toStartOfMonth","toStartOfNanosecond","toStartOfQuarter","toStartOfSecond","toStartOfTenMinutes","toStartOfWeek","toStartOfYear","toString","toStringCutToZero","toTime","toTime64","toTime64OrNull","toTime64OrZero","toTimeOrNull","toTimeOrZero","toTimeWithFixedDate","toTimeZone","toTimezone","toTypeName","toUInt128","toUInt128OrDefault","toUInt128OrNull","toUInt128OrZero","toUInt16","toUInt16OrDefault","toUInt16OrNull","toUInt16OrZero","toUInt256","toUInt256OrDefault","toUInt256OrNull","toUInt256OrZero","toUInt32","toUInt32OrDefault","toUInt32OrNull","toUInt32OrZero","toUInt64","toUInt64OrDefault","toUInt64OrNull","toUInt64OrZero","toUInt8","toUInt8OrDefault","toUInt8OrNull","toUInt8OrZero","toUTCTimestamp","toUUID","toUUIDOrDefault","toUUIDOrNull","toUUIDOrZero","toUnixTimestamp","toUnixTimestamp64Micro","toUnixTimestamp64Milli","toUnixTimestamp64Nano","toUnixTimestamp64Second","toValidUTF8","toWeek","toYYYYMM","toYYYYMMDD","toYYYYMMDDhhmmss","toYear","toYearNumSinceEpoch","toYearWeek","to_utc_timestamp","today","tokens","topK","topKWeighted","topLevelDomain","topLevelDomainRFC","transactionID","transactionLatestSnapshot","transactionOldestSnapshot","transform","translate","translateUTF8","trim","trimBoth","trimLeft","trimRight","trunc","tryBase32Decode","tryBase58Decode","tryBase64Decode","tryBase64URLDecode","tryDecrypt","tryIdnaEncode","tryPunycodeDecode","tumble","tumbleEnd","tumbleStart","tuple","tupleConcat","tupleDivide","tupleDivideByNumber","tupleElement","tupleHammingDistance","tupleIntDiv","tupleIntDivByNumber","tupleIntDivOrZero","tupleIntDivOrZeroByNumber","tupleMinus","tupleModulo","tupleModuloByNumber","tupleMultiply","tupleMultiplyByNumber","tupleNames","tupleNegate","tuplePlus","tupleToNameValuePairs","ucase","unbin","unhex","uniq","uniqCombined","uniqCombined64","uniqExact","uniqHLL12","uniqTheta","uniqThetaIntersect","uniqThetaNot","uniqThetaUnion","uniqUpTo","upper","upperUTF8","uptime","user","validateNestedArraySizes","varPop","varPopStable","varSamp","varSampStable","variantElement","variantType","vectorDifference","vectorSum","version","visibleWidth","visitParamExtractBool","visitParamExtractFloat","visitParamExtractInt","visitParamExtractRaw","visitParamExtractString","visitParamExtractUInt","visitParamHas","week","welchTTest","widthBucket","width_bucket","windowFunnel","windowID","wkb","wkt","wordShingleMinHash","wordShingleMinHashArg","wordShingleMinHashArgCaseInsensitive","wordShingleMinHashArgCaseInsensitiveUTF8","wordShingleMinHashArgUTF8","wordShingleMinHashCaseInsensitive","wordShingleMinHashCaseInsensitiveUTF8","wordShingleMinHashUTF8","wordShingleSimHash","wordShingleSimHashCaseInsensitive","wordShingleSimHashCaseInsensitiveUTF8","wordShingleSimHashUTF8","wyHash64","xor","xxHash32","xxHash64","xxh3","yandexConsistentHash","yearweek","yesterday","zookeeperSessionUptime","MergeTree","ReplacingMergeTree","SummingMergeTree","AggregatingMergeTree","CollapsingMergeTree","VersionedCollapsingMergeTree","GraphiteMergeTree","CoalescingMergeTree","Atomic","Shared","Lazy","Replicated","PostgreSQL","MySQL","SQLite","MaterializedPostgreSQL","DataLakeCatalog"],yo=["ACCESS","ACTION","ADD","ADMIN","AFTER","ALGORITHM","ALIAS","ALL","ALLOWED_LATENESS","ALTER","AND","ANTI","APPEND","APPLY","AS","ASC","ASCENDING","ASOF","ASSUME","AST","ASYNC","ATTACH","AUTO_INCREMENT","AZURE","BACKUP","BAGEXPANSION","BASE_BACKUP","BCRYPT_HASH","BCRYPT_PASSWORD","BEGIN","BETWEEN","BIDIRECTIONAL","BOTH","BY","CACHE","CACHES","CASCADE","CASE","CHANGE","CHANGEABLE_IN_READONLY","CHANGED","CHARACTER","CHECK","CLEANUP","CLEAR","CLUSTER","CLUSTERS","CLUSTER_HOST_IDS","CN","CODEC","COLLATE","COLLECTION","COLUMN","COLUMNS","COMMENT","COMMIT","COMPRESSION","CONST","CONSTRAINT","CREATE","CROSS","CUBE","CURRENT","D","DATA","DATABASE","DATABASES","DAYS","DD","DDL","DEDUPLICATE","DEFAULT","DEFINER","DELAY","DELETE","DELETED","DEPENDS","DESC","DESCENDING","DESCRIBE","DETACH","DETACHED","DICTIONARIES","DICTIONARY","DISK","DISTINCT","DIV","DOUBLE_SHA1_HASH","DOUBLE_SHA1_PASSWORD","DROP","ELSE","ENABLED","END","ENFORCED","ENGINE","ENGINES","EPHEMERAL","ESTIMATE","EVENT","EVENTS","EVERY","EXCEPT","EXCHANGE","EXISTS","EXPLAIN","EXPRESSION","EXTENDED","EXTERNAL","FAKE","FALSE","FETCH","FIELDS","FILESYSTEM","FILL","FILTER","FINAL","FIRST","FOLLOWING","FOR","FOREIGN","FORMAT","FREEZE","FROM","FULL","FULLTEXT","FUNCTION","FUNCTIONS","GLOBAL","GRANT","GRANTEES","GRANTS","GRANULARITY","GROUP","GROUPING","GROUPS","H","HASH","HAVING","HDFS","HH","HIERARCHICAL","HOST","HOURS","HTTP","IDENTIFIED","ILIKE","IN","INDEX","INDEXES","INDICES","INFILE","INHERIT","INJECTIVE","INNER","INSERT","INTERPOLATE","INTERSECT","INTERVAL","INTO","INVISIBLE","INVOKER","IP","IS","IS_OBJECT_ID","JOIN","JWT","KERBEROS","KEY","KEYED","KEYS","KILL","KIND","LARGE","LAST","LAYOUT","LDAP","LEADING","LEVEL","LIFETIME","LIGHTWEIGHT","LIKE","LIMIT","LIMITS","LINEAR","LIST","LIVE","LOCAL","M","MASK","MATERIALIZED","MCS","MEMORY","MERGES","METRICS","MI","MICROSECOND","MICROSECONDS","MILLISECONDS","MINUTES","MM","MODIFY","MONTHS","MOVE","MS","MUTATION","N","NAME","NAMED","NANOSECOND","NANOSECONDS","NEXT","NO","NONE","NOT","NO_PASSWORD","NS","NULL","NULLS","OBJECT","OFFSET","ON","ONLY","OPTIMIZE","OPTION","OR","ORDER","OUTER","OUTFILE","OVER","OVERRIDABLE","OVERRIDE","PART","PARTIAL","PARTITION","PARTITIONS","PART_MOVE_TO_SHARD","PASTE","PERIODIC","PERMANENTLY","PERMISSIVE","PERSISTENT","PIPELINE","PLAINTEXT_PASSWORD","PLAN","POLICY","POPULATE","PRECEDING","PRECISION","PREWHERE","PRIMARY","PRIVILEGES","PROCESSLIST","PROFILE","PROJECTION","PROTOBUF","PULL","Q","QQ","QUALIFY","QUARTERS","QUERY","QUOTA","RANDOMIZE","RANDOMIZED","RANGE","READONLY","REALM","RECOMPRESS","RECURSIVE","REFERENCES","REFRESH","REGEXP","REMOVE","RENAME","RESET","RESPECT","RESTORE","RESTRICT","RESTRICTIVE","RESUME","REVOKE","ROLE","ROLES","ROLLBACK","ROLLUP","ROW","ROWS","S","S3","SALT","SAMPLE","SAN","SCHEME","SECONDS","SECURITY","SELECT","SEMI","SEQUENTIAL","SERVER","SET","SETS","SETTING","SETTINGS","SHA256_HASH","SHA256_PASSWORD","SHARD","SHOW","SIGNED","SIMPLE","SNAPSHOT","SOURCE","SPATIAL","SQL","SQL_TSI_DAY","SQL_TSI_HOUR","SQL_TSI_MICROSECOND","SQL_TSI_MILLISECOND","SQL_TSI_MINUTE","SQL_TSI_MONTH","SQL_TSI_NANOSECOND","SQL_TSI_QUARTER","SQL_TSI_SECOND","SQL_TSI_WEEK","SQL_TSI_YEAR","SS","SSH_KEY","SSL_CERTIFICATE","STALENESS","START","STATISTICS","STDOUT","STEP","STORAGE","STRICT","STRICTLY_ASCENDING","SUBPARTITION","SUBPARTITIONS","SUSPEND","SYNC","SYNTAX","SYSTEM","TABLE","TABLES","TAGS","TEMPORARY","TEST","THAN","THEN","TIES","TIME","TO","TOP","TOTALS","TRACKING","TRAILING","TRANSACTION","TREE","TRIGGER","TRUE","TRUNCATE","TTL","TYPE","TYPEOF","UNBOUNDED","UNDROP","UNFREEZE","UNION","UNIQUE","UNSET","UNSIGNED","UNTIL","UPDATE","URL","USE","USING","UUID","VALID","VALUES","VARYING","VIEW","VISIBLE","VOLUME","WATCH","WATERMARK","WEEKS","WHEN","WHERE","WINDOW","WITH","WITH_ITEMINDEX","WK","WRITABLE","WW","YEARS","YY","YYYY","ZKPATH"],Go=["AGGREGATEFUNCTION","ARRAY","BFLOAT16","BIGINT","BIGINT SIGNED","BIGINT UNSIGNED","BINARY","BINARY LARGE OBJECT","BINARY VARYING","BIT","BLOB","BYTE","BYTEA","BOOL","CHAR","CHAR LARGE OBJECT","CHAR VARYING","CHARACTER","CHARACTER LARGE OBJECT","CHARACTER VARYING","CLOB","DEC","DOUBLE","DOUBLE PRECISION","DATE","DATE32","DATETIME","DATETIME32","DATETIME64","DECIMAL","DECIMAL128","DECIMAL256","DECIMAL32","DECIMAL64","DYNAMIC","ENUM","ENUM","ENUM16","ENUM8","FIXED","FLOAT","FIXEDSTRING","FLOAT32","FLOAT64","GEOMETRY","INET4","INET6","INT","INT SIGNED","INT UNSIGNED","INT1","INT1 SIGNED","INT1 UNSIGNED","INTEGER","INTEGER SIGNED","INTEGER UNSIGNED","IPV4","IPV6","INT128","INT16","INT256","INT32","INT64","INT8","INTERVALDAY","INTERVALHOUR","INTERVALMICROSECOND","INTERVALMILLISECOND","INTERVALMINUTE","INTERVALMONTH","INTERVALNANOSECOND","INTERVALQUARTER","INTERVALSECOND","INTERVALWEEK","INTERVALYEAR","JSON","LONGBLOB","LONGTEXT","LINESTRING","LOWCARDINALITY","MEDIUMBLOB","MEDIUMINT","MEDIUMINT SIGNED","MEDIUMINT UNSIGNED","MEDIUMTEXT","MAP","MULTILINESTRING","MULTIPOLYGON","NATIONAL CHAR","NATIONAL CHAR VARYING","NATIONAL CHARACTER","NATIONAL CHARACTER LARGE OBJECT","NATIONAL CHARACTER VARYING","NCHAR","NCHAR LARGE OBJECT","NCHAR VARYING","NUMERIC","NVARCHAR","NESTED","NOTHING","NULLABLE","OBJECT","POINT","POLYGON","REAL","RING","SET","SIGNED","SINGLE","SMALLINT","SMALLINT SIGNED","SMALLINT UNSIGNED","SIMPLEAGGREGATEFUNCTION","STRING","TEXT","TIMESTAMP","TINYBLOB","TINYINT","TINYINT SIGNED","TINYINT UNSIGNED","TINYTEXT","TIME","TIME64","TUPLE","UINT128","UINT16","UINT256","UINT32","UINT64","UINT8","UNSIGNED","UUID","VARBINARY","VARCHAR","VARCHAR2","VARIANT","YEAR","BOOL","BOOLEAN"],Bo=u(["SELECT [DISTINCT]","MODIFY QUERY SELECT [DISTINCT]"]),Ho=u(["SET","WITH","FROM","SAMPLE","PREWHERE","WHERE","GROUP BY","HAVING","QUALIFY","ORDER BY","LIMIT","SETTINGS","INTO OUTFILE","FORMAT","WINDOW","PARTITION BY","INSERT INTO","VALUES","DEPENDS ON","MOVE {USER | ROLE | QUOTA | SETTINGS PROFILE | ROW POLICY}","GRANT","REVOKE","CHECK GRANT","SET [DEFAULT] ROLE [NONE | ALL | ALL EXCEPT]","DEDUPLICATE BY","MODIFY STATISTICS","TYPE","ALTER USER [IF EXISTS]","ALTER [ROW] POLICY [IF EXISTS]","DROP {USER | ROLE | QUOTA | PROFILE | SETTINGS PROFILE | ROW POLICY | POLICY} [IF EXISTS]"]),fr=u(["CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS]"]),jt=u(["ALL EXCEPT","ON CLUSTER","UPDATE","SYSTEM RELOAD {DICTIONARIES | DICTIONARY | FUNCTIONS | FUNCTION | ASYNCHRONOUS METRICS}","SYSTEM DROP {DNS CACHE | MARK CACHE | ICEBERG METADATA CACHE | TEXT INDEX DICTIONARY CACHE | TEXT INDEX HEADER CACHE | TEXT INDEX POSTINGS CACHE | REPLICA | DATABASE REPLICA | UNCOMPRESSED CACHE | COMPILED EXPRESSION CACHE | QUERY CONDITION CACHE | QUERY CACHE | FORMAT SCHEMA CACHE | FILESYSTEM CACHE}","SYSTEM FLUSH LOGS","SYSTEM RELOAD {CONFIG | USERS}","SYSTEM SHUTDOWN","SYSTEM KILL","SYSTEM FLUSH DISTRIBUTED","SYSTEM START DISTRIBUTED SENDS","SYSTEM {STOP | START} {LISTEN | MERGES | TTL MERGES | MOVES | FETCHES | REPLICATED SENDS | REPLICATION QUEUES | PULLING REPLICATION LOG}","SYSTEM {SYNC | RESTART | RESTORE} REPLICA","SYSTEM {SYNC | RESTORE} DATABASE REPLICA","SYSTEM RESTART REPLICAS","SYSTEM UNFREEZE","SYSTEM WAIT LOADING PARTS","SYSTEM {LOAD | UNLOAD} PRIMARY KEY","SYSTEM {STOP | START} [REPLICATED] VIEW","SYSTEM {STOP | START} VIEWS","SYSTEM {REFRESH | CANCEL | WAIT} VIEW","WITH NAME","SHOW [CREATE] {TABLE | TEMPORARY TABLE | DICTIONARY | VIEW | DATABASE}","SHOW DATABASES [[NOT] {LIKE | ILIKE}]","SHOW [FULL] [TEMPORARY] TABLES [FROM | IN]","SHOW [EXTENDED] [FULL] COLUMNS {FROM | IN}","ATTACH {TABLE | DICTIONARY | DATABASE} [IF NOT EXISTS]","DETACH {TABLE | DICTIONARY | DATABASE} [IF EXISTS]","PERMANENTLY","SYNC","DROP {DICTIONARY | DATABASE | PROFILE | VIEW | FUNCTION | NAMED COLLECTION} [IF EXISTS]","DROP [TEMPORARY] TABLE [IF EXISTS] [IF EMPTY]","RENAME TO","EXISTS [TEMPORARY] {TABLE | DICTIONARY | DATABASE}","KILL QUERY","OPTIMIZE TABLE","RENAME {TABLE | DICTIONARY | DATABASE}","EXCHANGE {TABLES | DICTIONARIES}","TRUNCATE TABLE [IF EXISTS]","EXECUTE AS","USE","TO","UNDROP TABLE","CREATE {DATABASE | NAMED COLLECTION} [IF NOT EXISTS]","CREATE [OR REPLACE] {VIEW | DICTIONARY} [IF NOT EXISTS]","CREATE MATERIALIZED VIEW [IF NOT EXISTS]","CREATE FUNCTION","CREATE {USER | ROLE | QUOTA | SETTINGS PROFILE} [IF NOT EXISTS | OR REPLACE]","CREATE [ROW] POLICY [IF NOT EXISTS | OR REPLACE]","REPLACE [TEMPORARY] TABLE [IF NOT EXISTS]","ALTER {ROLE | QUOTA | SETTINGS PROFILE} [IF EXISTS]","ALTER [TEMPORARY] TABLE","ALTER NAMED COLLECTION [IF EXISTS]","GRANTEES","NOT IDENTIFIED","RESET AUTHENTICATION METHODS TO NEW","{IDENTIFIED | ADD IDENTIFIED} [WITH | BY]","[ADD | DROP] HOST {LOCAL | NAME | REGEXP | IP | LIKE}","VALID UNTIL","DROP [ALL] {PROFILES | SETTINGS}","{ADD | MODIFY} SETTINGS","ADD PROFILES","APPLY DELETED MASK","IN PARTITION","{ADD | DROP | RENAME | CLEAR | COMMENT | MODIFY | ALTER | MATERIALIZE} COLUMN","{DETACH | DROP | ATTACH | FETCH | MOVE} {PART | PARTITION}","DROP DETACHED {PART | PARTITION}","{FORGET | REPLACE} PARTITION","CLEAR COLUMN","{FREEZE | UNFREEZE} [PARTITION]","CLEAR INDEX","TO {DISK | VOLUME}","[DELETE | REWRITE PARTS] IN PARTITION","{MODIFY | RESET} SETTING","DELETE WHERE","MODIFY ORDER BY","{MODIFY | REMOVE} SAMPLE BY","{ADD | MATERIALIZE | CLEAR} INDEX [IF NOT EXISTS]","DROP INDEX [IF EXISTS]","GRANULARITY","AFTER","FIRST","ADD CONSTRAINT [IF NOT EXISTS]","DROP CONSTRAINT [IF EXISTS]","MODIFY TTL","REMOVE TTL","ADD STATISTICS [IF NOT EXISTS]","{DROP | CLEAR} STATISTICS [IF EXISTS]","MATERIALIZE STATISTICS [ALL | IF EXISTS]","KEYED BY","NOT KEYED","FOR [RANDOMIZED] INTERVAL","AS {PERMISSIVE | RESTRICTIVE}","FOR SELECT","ADD PROJECTION [IF NOT EXISTS]","{DROP | MATERIALIZE | CLEAR} PROJECTION [IF EXISTS]","REFRESH {EVERY | AFTER}","RANDOMIZE FOR","APPEND","APPEND TO","DELETE FROM","EXPLAIN [AST | SYNTAX | QUERY TREE | PLAN | PIPELINE | ESTIMATE | TABLE OVERRIDE]","GRANT ON CLUSTER","GRANT CURRENT GRANTS","WITH GRANT OPTION","REVOKE ON CLUSTER","ADMIN OPTION FOR","CHECK TABLE","PARTITION ID","{DESC | DESCRIBE} TABLE"]),bo=u(["UNION [ALL | DISTINCT]","PARALLEL WITH"]),Fo=u(["[GLOBAL] [INNER|LEFT|RIGHT|FULL|CROSS] [OUTER|SEMI|ANTI|ANY|ALL|ASOF] JOIN","[LEFT] ARRAY JOIN"]),Yo=u(["{ROWS | RANGE} BETWEEN","ALTER MATERIALIZE STATISTICS"]),vo={name:"clickhouse",tokenizerOptions:{reservedSelect:Bo,reservedClauses:[...Ho,...fr,...jt],reservedSetOperations:bo,reservedJoins:Fo,reservedKeywordPhrases:Yo,reservedKeywords:yo,reservedDataTypes:Go,reservedFunctionNames:go,extraParens:["[]","{}"],lineCommentTypes:["#","--"],nestedBlockComments:!1,underscoresInNumbers:!0,stringTypes:["$$","''-qq-bs"],identTypes:['""-qq-bs',"``"],paramTypes:{custom:[{regex:String.raw`\{[^:']+:[^}]+\}`,key:e=>{const t=/\{([^:]+):/.exec(e);return t?t[1].trim():e}}]},operators:["%","||","?",":","==","<=>","->"],postProcess:Vo},formatOptions:{onelineClauses:[...fr,...jt],tabularOnelineClauses:jt}};function Vo(e){return e.map((t,r)=>{const s=e[r+1]||me,n=e[r-1]||me;return t.type===D.RESERVED_SELECT&&(s.type===D.COMMA||n.type===D.RESERVED_CLAUSE||n.type===D.COMMA)?Object.assign(Object.assign({},t),{type:D.RESERVED_KEYWORD}):fe.SET(t)&&s.type===D.OPEN_PAREN?Object.assign(Object.assign({},t),{type:D.RESERVED_FUNCTION_NAME}):t})}const Wo=["ARRAY_AGG","AVG","CORRELATION","COUNT","COUNT_BIG","COVARIANCE","COVARIANCE_SAMP","CUME_DIST","GROUPING","LISTAGG","MAX","MEDIAN","MIN","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_ICPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","STDDEV","STDDEV_SAMP","SUM","VARIANCE","VARIANCE_SAMP","XMLAGG","XMLGROUP","ABS","ABSVAL","ACOS","ADD_DAYS","ADD_HOURS","ADD_MINUTES","ADD_MONTHS","ADD_SECONDS","ADD_YEARS","AGE","ARRAY_DELETE","ARRAY_FIRST","ARRAY_LAST","ARRAY_NEXT","ARRAY_PRIOR","ASCII","ASCII_STR","ASIN","ATAN","ATAN2","ATANH","BITAND","BITANDNOT","BITOR","BITXOR","BITNOT","BPCHAR","BSON_TO_JSON","BTRIM","CARDINALITY","CEILING","CEIL","CHARACTER_LENGTH","CHR","COALESCE","COLLATION_KEY","COLLATION_KEY_BIT","COMPARE_DECFLOAT","CONCAT","COS","COSH","COT","CURSOR_ROWCOUNT","DATAPARTITIONNUM","DATE_PART","DATE_TRUNC","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFWEEK_ISO","DAYOFYEAR","DAYS","DAYS_BETWEEN","DAYS_TO_END_OF_MONTH","DBPARTITIONNUM","DECFLOAT","DECFLOAT_FORMAT","DECODE","DECRYPT_BIN","DECRYPT_CHAR","DEGREES","DEREF","DIFFERENCE","DIGITS","DOUBLE_PRECISION","EMPTY_BLOB","EMPTY_CLOB","EMPTY_DBCLOB","EMPTY_NCLOB","ENCRYPT","EVENT_MON_STATE","EXP","EXTRACT","FIRST_DAY","FLOOR","FROM_UTC_TIMESTAMP","GENERATE_UNIQUE","GETHINT","GREATEST","HASH","HASH4","HASH8","HASHEDVALUE","HEX","HEXTORAW","HOUR","HOURS_BETWEEN","IDENTITY_VAL_LOCAL","IFNULL","INITCAP","INSERT","INSTR","INSTR2","INSTR4","INSTRB","INTNAND","INTNOR","INTNXOR","INTNNOT","ISNULL","JSON_ARRAY","JSON_OBJECT","JSON_QUERY","JSON_TO_BSON","JSON_VALUE","JULIAN_DAY","LAST_DAY","LCASE","LEAST","LEFT","LENGTH","LENGTH2","LENGTH4","LENGTHB","LN","LOCATE","LOCATE_IN_STRING","LOG10","LONG_VARCHAR","LONG_VARGRAPHIC","LOWER","LPAD","LTRIM","MAX","MAX_CARDINALITY","MICROSECOND","MIDNIGHT_SECONDS","MIN","MINUTE","MINUTES_BETWEEN","MOD","MONTH","MONTHNAME","MONTHS_BETWEEN","MULTIPLY_ALT","NEXT_DAY","NEXT_MONTH","NEXT_QUARTER","NEXT_WEEK","NEXT_YEAR","NORMALIZE_DECFLOAT","NOW","NULLIF","NVL","NVL2","OCTET_LENGTH","OVERLAY","PARAMETER","POSITION","POSSTR","POW","POWER","QUANTIZE","QUARTER","QUOTE_IDENT","QUOTE_LITERAL","RADIANS","RAISE_ERROR","RAND","RANDOM","RAWTOHEX","REC2XML","REGEXP_COUNT","REGEXP_EXTRACT","REGEXP_INSTR","REGEXP_LIKE","REGEXP_MATCH_COUNT","REGEXP_REPLACE","REGEXP_SUBSTR","REPEAT","REPLACE","RID","RID_BIT","RIGHT","ROUND","ROUND_TIMESTAMP","RPAD","RTRIM","SECLABEL","SECLABEL_BY_NAME","SECLABEL_TO_CHAR","SECOND","SECONDS_BETWEEN","SIGN","SIN","SINH","SOUNDEX","SPACE","SQRT","STRIP","STRLEFT","STRPOS","STRRIGHT","SUBSTR","SUBSTR2","SUBSTR4","SUBSTRB","SUBSTRING","TABLE_NAME","TABLE_SCHEMA","TAN","TANH","THIS_MONTH","THIS_QUARTER","THIS_WEEK","THIS_YEAR","TIMESTAMP_FORMAT","TIMESTAMP_ISO","TIMESTAMPDIFF","TIMEZONE","TO_CHAR","TO_CLOB","TO_DATE","TO_HEX","TO_MULTI_BYTE","TO_NCHAR","TO_NCLOB","TO_NUMBER","TO_SINGLE_BYTE","TO_TIMESTAMP","TO_UTC_TIMESTAMP","TOTALORDER","TRANSLATE","TRIM","TRIM_ARRAY","TRUNC_TIMESTAMP","TRUNCATE","TRUNC","TYPE_ID","TYPE_NAME","TYPE_SCHEMA","UCASE","UNICODE_STR","UPPER","VALUE","VARCHAR_BIT_FORMAT","VARCHAR_FORMAT","VARCHAR_FORMAT_BIT","VERIFY_GROUP_FOR_USER","VERIFY_ROLE_FOR_USER","VERIFY_TRUSTED_CONTEXT_ROLE_FOR_USER","WEEK","WEEK_ISO","WEEKS_BETWEEN","WIDTH_BUCKET","XMLATTRIBUTES","XMLCOMMENT","XMLCONCAT","XMLDOCUMENT","XMLELEMENT","XMLFOREST","XMLNAMESPACES","XMLPARSE","XMLPI","XMLQUERY","XMLROW","XMLSERIALIZE","XMLTEXT","XMLVALIDATE","XMLXSROBJECTID","XSLTRANSFORM","YEAR","YEARS_BETWEEN","YMD_BETWEEN","BASE_TABLE","JSON_TABLE","UNNEST","XMLTABLE","RANK","DENSE_RANK","NTILE","LAG","LEAD","ROW_NUMBER","FIRST_VALUE","LAST_VALUE","NTH_VALUE","RATIO_TO_REPORT","CAST"],wo=["ACTIVATE","ADD","AFTER","ALIAS","ALL","ALLOCATE","ALLOW","ALTER","AND","ANY","AS","ASENSITIVE","ASSOCIATE","ASUTIME","AT","ATTRIBUTES","AUDIT","AUTHORIZATION","AUX","AUXILIARY","BEFORE","BEGIN","BETWEEN","BINARY","BUFFERPOOL","BY","CACHE","CALL","CALLED","CAPTURE","CARDINALITY","CASCADED","CASE","CAST","CHECK","CLONE","CLOSE","CLUSTER","COLLECTION","COLLID","COLUMN","COMMENT","COMMIT","CONCAT","CONDITION","CONNECT","CONNECTION","CONSTRAINT","CONTAINS","CONTINUE","COUNT","COUNT_BIG","CREATE","CROSS","CURRENT","CURRENT_DATE","CURRENT_LC_CTYPE","CURRENT_PATH","CURRENT_SCHEMA","CURRENT_SERVER","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","CURRENT_USER","CURSOR","CYCLE","DATA","DATABASE","DATAPARTITIONNAME","DATAPARTITIONNUM","DAY","DAYS","DB2GENERAL","DB2GENRL","DB2SQL","DBINFO","DBPARTITIONNAME","DBPARTITIONNUM","DEALLOCATE","DECLARE","DEFAULT","DEFAULTS","DEFINITION","DELETE","DENSERANK","DENSE_RANK","DESCRIBE","DESCRIPTOR","DETERMINISTIC","DIAGNOSTICS","DISABLE","DISALLOW","DISCONNECT","DISTINCT","DO","DOCUMENT","DROP","DSSIZE","DYNAMIC","EACH","EDITPROC","ELSE","ELSEIF","ENABLE","ENCODING","ENCRYPTION","END","END-EXEC","ENDING","ERASE","ESCAPE","EVERY","EXCEPT","EXCEPTION","EXCLUDING","EXCLUSIVE","EXECUTE","EXISTS","EXIT","EXPLAIN","EXTENDED","EXTERNAL","EXTRACT","FENCED","FETCH","FIELDPROC","FILE","FINAL","FIRST1","FOR","FOREIGN","FREE","FROM","FULL","FUNCTION","GENERAL","GENERATED","GET","GLOBAL","GO","GOTO","GRANT","GRAPHIC","GROUP","HANDLER","HASH","HASHED_VALUE","HAVING","HINT","HOLD","HOUR","HOURS","IDENTITY","IF","IMMEDIATE","IMPORT","IN","INCLUDING","INCLUSIVE","INCREMENT","INDEX","INDICATOR","INDICATORS","INF","INFINITY","INHERIT","INNER","INOUT","INSENSITIVE","INSERT","INTEGRITY","INTERSECT","INTO","IS","ISNULL","ISOBID","ISOLATION","ITERATE","JAR","JAVA","JOIN","KEEP","KEY","LABEL","LANGUAGE","LAST3","LATERAL","LC_CTYPE","LEAVE","LEFT","LIKE","LIMIT","LINKTYPE","LOCAL","LOCALDATE","LOCALE","LOCALTIME","LOCALTIMESTAMP","LOCATOR","LOCATORS","LOCK","LOCKMAX","LOCKSIZE","LOOP","MAINTAINED","MATERIALIZED","MAXVALUE","MICROSECOND","MICROSECONDS","MINUTE","MINUTES","MINVALUE","MODE","MODIFIES","MONTH","MONTHS","NAN","NEW","NEW_TABLE","NEXTVAL","NO","NOCACHE","NOCYCLE","NODENAME","NODENUMBER","NOMAXVALUE","NOMINVALUE","NONE","NOORDER","NORMALIZED","NOT2","NOTNULL","NULL","NULLS","NUMPARTS","OBID","OF","OFF","OFFSET","OLD","OLD_TABLE","ON","OPEN","OPTIMIZATION","OPTIMIZE","OPTION","OR","ORDER","OUT","OUTER","OVER","OVERRIDING","PACKAGE","PADDED","PAGESIZE","PARAMETER","PART","PARTITION","PARTITIONED","PARTITIONING","PARTITIONS","PASSWORD","PATH","PERCENT","PIECESIZE","PLAN","POSITION","PRECISION","PREPARE","PREVVAL","PRIMARY","PRIQTY","PRIVILEGES","PROCEDURE","PROGRAM","PSID","PUBLIC","QUERY","QUERYNO","RANGE","RANK","READ","READS","RECOVERY","REFERENCES","REFERENCING","REFRESH","RELEASE","RENAME","REPEAT","RESET","RESIGNAL","RESTART","RESTRICT","RESULT","RESULT_SET_LOCATOR","RETURN","RETURNS","REVOKE","RIGHT","ROLE","ROLLBACK","ROUND_CEILING","ROUND_DOWN","ROUND_FLOOR","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_UP","ROUND_UP","ROUTINE","ROW","ROWNUMBER","ROWS","ROWSET","ROW_NUMBER","RRN","RUN","SAVEPOINT","SCHEMA","SCRATCHPAD","SCROLL","SEARCH","SECOND","SECONDS","SECQTY","SECURITY","SELECT","SENSITIVE","SEQUENCE","SESSION","SESSION_USER","SET","SIGNAL","SIMPLE","SNAN","SOME","SOURCE","SPECIFIC","SQL","SQLID","STACKED","STANDARD","START","STARTING","STATEMENT","STATIC","STATMENT","STAY","STOGROUP","STORES","STYLE","SUBSTRING","SUMMARY","SYNONYM","SYSFUN","SYSIBM","SYSPROC","SYSTEM","SYSTEM_USER","TABLE","TABLESPACE","THEN","TO","TRANSACTION","TRIGGER","TRIM","TRUNCATE","TYPE","UNDO","UNION","UNIQUE","UNTIL","UPDATE","USAGE","USER","USING","VALIDPROC","VALUE","VALUES","VARIABLE","VARIANT","VCAT","VERSION","VIEW","VOLATILE","VOLUMES","WHEN","WHENEVER","WHERE","WHILE","WITH","WITHOUT","WLM","WRITE","XMLELEMENT","XMLEXISTS","XMLNAMESPACES","YEAR","YEARS"],Xo=["ARRAY","BIGINT","BINARY","BLOB","BOOLEAN","CCSID","CHAR","CHARACTER","CLOB","DATE","DATETIME","DBCLOB","DEC","DECIMAL","DOUBLE","DOUBLE PRECISION","FLOAT","FLOAT4","FLOAT8","GRAPHIC","INT","INT2","INT4","INT8","INTEGER","INTERVAL","LONG VARCHAR","LONG VARGRAPHIC","NCHAR","NCHR","NCLOB","NVARCHAR","NUMERIC","SMALLINT","REAL","TIME","TIMESTAMP","VARBINARY","VARCHAR","VARGRAPHIC"],jo=u(["SELECT [ALL | DISTINCT]"]),$o=u(["WITH","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER BY [INPUT SEQUENCE]","LIMIT","OFFSET","FETCH NEXT","FOR UPDATE [OF]","FOR {READ | FETCH} ONLY","FOR {RR | CS | UR | RS} [USE AND KEEP {SHARE | UPDATE | EXCLUSIVE} LOCKS]","WAIT FOR OUTCOME","SKIP LOCKED DATA","INTO","INSERT INTO","VALUES","SET","MERGE INTO","WHEN [NOT] MATCHED [THEN]","UPDATE SET","INSERT"]),hr=u(["CREATE [GLOBAL TEMPORARY | EXTERNAL] TABLE [IF NOT EXISTS]"]),$t=u(["CREATE [OR REPLACE] VIEW","UPDATE","WHERE CURRENT OF","WITH {RR | RS | CS | UR}","DELETE FROM","DROP TABLE [IF EXISTS]","ALTER TABLE","ADD [COLUMN]","DROP [COLUMN]","RENAME COLUMN","ALTER [COLUMN]","SET DATA TYPE","SET NOT NULL","DROP {DEFAULT | GENERATED | NOT NULL}","TRUNCATE [TABLE]","ALLOCATE","ALTER AUDIT POLICY","ALTER BUFFERPOOL","ALTER DATABASE PARTITION GROUP","ALTER DATABASE","ALTER EVENT MONITOR","ALTER FUNCTION","ALTER HISTOGRAM TEMPLATE","ALTER INDEX","ALTER MASK","ALTER METHOD","ALTER MODULE","ALTER NICKNAME","ALTER PACKAGE","ALTER PERMISSION","ALTER PROCEDURE","ALTER SCHEMA","ALTER SECURITY LABEL COMPONENT","ALTER SECURITY POLICY","ALTER SEQUENCE","ALTER SERVER","ALTER SERVICE CLASS","ALTER STOGROUP","ALTER TABLESPACE","ALTER THRESHOLD","ALTER TRIGGER","ALTER TRUSTED CONTEXT","ALTER TYPE","ALTER USAGE LIST","ALTER USER MAPPING","ALTER VIEW","ALTER WORK ACTION SET","ALTER WORK CLASS SET","ALTER WORKLOAD","ALTER WRAPPER","ALTER XSROBJECT","ALTER STOGROUP","ALTER TABLESPACE","ALTER TRIGGER","ALTER TRUSTED CONTEXT","ALTER VIEW","ASSOCIATE [RESULT SET] {LOCATOR | LOCATORS}","AUDIT","BEGIN DECLARE SECTION","CALL","CLOSE","COMMENT ON","COMMIT [WORK]","CONNECT","CREATE [OR REPLACE] [PUBLIC] ALIAS","CREATE AUDIT POLICY","CREATE BUFFERPOOL","CREATE DATABASE PARTITION GROUP","CREATE EVENT MONITOR","CREATE [OR REPLACE] FUNCTION","CREATE FUNCTION MAPPING","CREATE HISTOGRAM TEMPLATE","CREATE [UNIQUE] INDEX","CREATE INDEX EXTENSION","CREATE [OR REPLACE] MASK","CREATE [SPECIFIC] METHOD","CREATE [OR REPLACE] MODULE","CREATE [OR REPLACE] NICKNAME","CREATE [OR REPLACE] PERMISSION","CREATE [OR REPLACE] PROCEDURE","CREATE ROLE","CREATE SCHEMA","CREATE SECURITY LABEL [COMPONENT]","CREATE SECURITY POLICY","CREATE [OR REPLACE] SEQUENCE","CREATE SERVICE CLASS","CREATE SERVER","CREATE STOGROUP","CREATE SYNONYM","CREATE [LARGE | REGULAR | {SYSTEM | USER} TEMPORARY] TABLESPACE","CREATE THRESHOLD","CREATE {TRANSFORM | TRANSFORMS} FOR","CREATE [OR REPLACE] TRIGGER","CREATE TRUSTED CONTEXT","CREATE [OR REPLACE] TYPE","CREATE TYPE MAPPING","CREATE USAGE LIST","CREATE USER MAPPING FOR","CREATE [OR REPLACE] VARIABLE","CREATE WORK ACTION SET","CREATE WORK CLASS SET","CREATE WORKLOAD","CREATE WRAPPER","DECLARE","DECLARE GLOBAL TEMPORARY TABLE","DESCRIBE [INPUT | OUTPUT]","DISCONNECT","DROP [PUBLIC] ALIAS","DROP AUDIT POLICY","DROP BUFFERPOOL","DROP DATABASE PARTITION GROUP","DROP EVENT MONITOR","DROP [SPECIFIC] FUNCTION","DROP FUNCTION MAPPING","DROP HISTOGRAM TEMPLATE","DROP INDEX [EXTENSION]","DROP MASK","DROP [SPECIFIC] METHOD","DROP MODULE","DROP NICKNAME","DROP PACKAGE","DROP PERMISSION","DROP [SPECIFIC] PROCEDURE","DROP ROLE","DROP SCHEMA","DROP SECURITY LABEL [COMPONENT]","DROP SECURITY POLICY","DROP SEQUENCE","DROP SERVER","DROP SERVICE CLASS","DROP STOGROUP","DROP TABLE HIERARCHY","DROP {TABLESPACE | TABLESPACES}","DROP {TRANSFORM | TRANSFORMS}","DROP THRESHOLD","DROP TRIGGER","DROP TRUSTED CONTEXT","DROP TYPE [MAPPING]","DROP USAGE LIST","DROP USER MAPPING FOR","DROP VARIABLE","DROP VIEW [HIERARCHY]","DROP WORK {ACTION | CLASS} SET","DROP WORKLOAD","DROP WRAPPER","DROP XSROBJECT","END DECLARE SECTION","EXECUTE [IMMEDIATE]","EXPLAIN {PLAN [SECTION] | ALL}","FETCH [FROM]","FLUSH {BUFFERPOOL | BUFFERPOOLS} ALL","FLUSH EVENT MONITOR","FLUSH FEDERATED CACHE","FLUSH OPTIMIZATION PROFILE CACHE","FLUSH PACKAGE CACHE [DYNAMIC]","FLUSH AUTHENTICATION CACHE [FOR ALL]","FREE LOCATOR","GET DIAGNOSTICS","GOTO","GRANT","INCLUDE","ITERATE","LEAVE","LOCK TABLE","LOOP","OPEN","PIPE","PREPARE","REFRESH TABLE","RELEASE","RELEASE [TO] SAVEPOINT","RENAME [TABLE | INDEX | STOGROUP | TABLESPACE]","REPEAT","RESIGNAL","RETURN","REVOKE","ROLLBACK [WORK] [TO SAVEPOINT]","SAVEPOINT","SET COMPILATION ENVIRONMENT","SET CONNECTION","SET CURRENT","SET ENCRYPTION PASSWORD","SET EVENT MONITOR STATE","SET INTEGRITY","SET PASSTHRU","SET PATH","SET ROLE","SET SCHEMA","SET SERVER OPTION","SET {SESSION AUTHORIZATION | SESSION_USER}","SET USAGE LIST","SIGNAL","TRANSFER OWNERSHIP OF","WHENEVER {NOT FOUND | SQLERROR | SQLWARNING}","WHILE"]),ko=u(["UNION [ALL]","EXCEPT [ALL]","INTERSECT [ALL]"]),Ko=u(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN"]),qo=u(["ON DELETE","ON UPDATE","SET NULL","{ROWS | RANGE} BETWEEN"]),Jo=u([]),Qo={name:"db2",tokenizerOptions:{reservedSelect:jo,reservedClauses:[...$o,...hr,...$t],reservedSetOperations:ko,reservedJoins:Ko,reservedKeywordPhrases:qo,reservedDataTypePhrases:Jo,reservedKeywords:wo,reservedDataTypes:Xo,reservedFunctionNames:Wo,extraParens:["[]"],stringTypes:[{quote:"''-qq",prefixes:["G","N","U&"]},{quote:"''-raw",prefixes:["X","BX","GX","UX"],requirePrefix:!0}],identTypes:['""-qq'],identChars:{first:"@#$",rest:"@#$"},paramTypes:{positional:!0,named:[":"]},paramChars:{first:"@#$",rest:"@#$"},operators:["**","%","|","&","^","~","¬=","¬>","¬<","!>","!<","^=","^>","^<","||","->","=>"]},formatOptions:{onelineClauses:[...hr,...$t],tabularOnelineClauses:$t}},zo=["ARRAY_AGG","AVG","CORR","CORRELATION","COUNT","COUNT_BIG","COVAR_POP","COVARIANCE","COVAR","COVAR_SAMP","COVARIANCE_SAMP","EVERY","GROUPING","JSON_ARRAYAGG","JSON_OBJECTAGG","LISTAGG","MAX","MEDIAN","MIN","PERCENTILE_CONT","PERCENTILE_DISC","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","SOME","STDDEV_POP","STDDEV","STDDEV_SAMP","SUM","VAR_POP","VARIANCE","VAR","VAR_SAMP","VARIANCE_SAMP","XMLAGG","XMLGROUP","ABS","ABSVAL","ACOS","ADD_DAYS","ADD_HOURS","ADD_MINUTES","ADD_MONTHS","ADD_SECONDS","ADD_YEARS","ANTILOG","ARRAY_MAX_CARDINALITY","ARRAY_TRIM","ASCII","ASIN","ATAN","ATAN2","ATANH","BASE64_DECODE","BASE64_ENCODE","BIT_LENGTH","BITAND","BITANDNOT","BITNOT","BITOR","BITXOR","BSON_TO_JSON","CARDINALITY","CEIL","CEILING","CHAR_LENGTH","CHARACTER_LENGTH","CHR","COALESCE","COMPARE_DECFLOAT","CONCAT","CONTAINS","COS","COSH","COT","CURDATE","CURTIME","DATABASE","DATAPARTITIONNAME","DATAPARTITIONNUM","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK_ISO","DAYOFWEEK","DAYOFYEAR","DAYS","DBPARTITIONNAME","DBPARTITIONNUM","DECFLOAT_FORMAT","DECFLOAT_SORTKEY","DECRYPT_BINARY","DECRYPT_BIT","DECRYPT_CHAR","DECRYPT_DB","DEGREES","DIFFERENCE","DIGITS","DLCOMMENT","DLLINKTYPE","DLURLCOMPLETE","DLURLPATH","DLURLPATHONLY","DLURLSCHEME","DLURLSERVER","DLVALUE","DOUBLE_PRECISION","DOUBLE","ENCRPYT","ENCRYPT_AES","ENCRYPT_AES256","ENCRYPT_RC2","ENCRYPT_TDES","EXP","EXTRACT","FIRST_DAY","FLOOR","GENERATE_UNIQUE","GET_BLOB_FROM_FILE","GET_CLOB_FROM_FILE","GET_DBCLOB_FROM_FILE","GET_XML_FILE","GETHINT","GREATEST","HASH_MD5","HASH_ROW","HASH_SHA1","HASH_SHA256","HASH_SHA512","HASH_VALUES","HASHED_VALUE","HEX","HEXTORAW","HOUR","HTML_ENTITY_DECODE","HTML_ENTITY_ENCODE","HTTP_DELETE_BLOB","HTTP_DELETE","HTTP_GET_BLOB","HTTP_GET","HTTP_PATCH_BLOB","HTTP_PATCH","HTTP_POST_BLOB","HTTP_POST","HTTP_PUT_BLOB","HTTP_PUT","IDENTITY_VAL_LOCAL","IFNULL","INSERT","INSTR","INTERPRET","ISFALSE","ISNOTFALSE","ISNOTTRUE","ISTRUE","JSON_ARRAY","JSON_OBJECT","JSON_QUERY","JSON_TO_BSON","JSON_UPDATE","JSON_VALUE","JULIAN_DAY","LAND","LAST_DAY","LCASE","LEAST","LEFT","LENGTH","LN","LNOT","LOCATE_IN_STRING","LOCATE","LOG10","LOR","LOWER","LPAD","LTRIM","MAX_CARDINALITY","MAX","MICROSECOND","MIDNIGHT_SECONDS","MIN","MINUTE","MOD","MONTH","MONTHNAME","MONTHS_BETWEEN","MQREAD","MQREADCLOB","MQRECEIVE","MQRECEIVECLOB","MQSEND","MULTIPLY_ALT","NEXT_DAY","NORMALIZE_DECFLOAT","NOW","NULLIF","NVL","OCTET_LENGTH","OVERLAY","PI","POSITION","POSSTR","POW","POWER","QUANTIZE","QUARTER","RADIANS","RAISE_ERROR","RANDOM","RAND","REGEXP_COUNT","REGEXP_INSTR","REGEXP_REPLACE","REGEXP_SUBSTR","REPEAT","REPLACE","RID","RIGHT","ROUND_TIMESTAMP","ROUND","RPAD","RRN","RTRIM","SCORE","SECOND","SIGN","SIN","SINH","SOUNDEX","SPACE","SQRT","STRIP","STRLEFT","STRPOS","STRRIGHT","SUBSTR","SUBSTRING","TABLE_NAME","TABLE_SCHEMA","TAN","TANH","TIMESTAMP_FORMAT","TIMESTAMP_ISO","TIMESTAMPDIFF_BIG","TIMESTAMPDIFF","TO_CHAR","TO_CLOB","TO_DATE","TO_NUMBER","TO_TIMESTAMP","TOTALORDER","TRANSLATE","TRIM_ARRAY","TRIM","TRUNC_TIMESTAMP","TRUNC","TRUNCATE","UCASE","UPPER","URL_DECODE","URL_ENCODE","VALUE","VARBINARY_FORMAT","VARCHAR_BIT_FORMAT","VARCHAR_FORMAT_BINARY","VARCHAR_FORMAT","VERIFY_GROUP_FOR_USER","WEEK_ISO","WEEK","WRAP","XMLATTRIBUTES","XMLCOMMENT","XMLCONCAT","XMLDOCUMENT","XMLELEMENT","XMLFOREST","XMLNAMESPACES","XMLPARSE","XMLPI","XMLROW","XMLSERIALIZE","XMLTEXT","XMLVALIDATE","XOR","XSLTRANSFORM","YEAR","ZONED","BASE_TABLE","HTTP_DELETE_BLOB_VERBOSE","HTTP_DELETE_VERBOSE","HTTP_GET_BLOB_VERBOSE","HTTP_GET_VERBOSE","HTTP_PATCH_BLOB_VERBOSE","HTTP_PATCH_VERBOSE","HTTP_POST_BLOB_VERBOSE","HTTP_POST_VERBOSE","HTTP_PUT_BLOB_VERBOSE","HTTP_PUT_VERBOSE","JSON_TABLE","MQREADALL","MQREADALLCLOB","MQRECEIVEALL","MQRECEIVEALLCLOB","XMLTABLE","UNPACK","CUME_DIST","DENSE_RANK","FIRST_VALUE","LAG","LAST_VALUE","LEAD","NTH_VALUE","NTILE","PERCENT_RANK","RANK","RATIO_TO_REPORT","ROW_NUMBER","CAST"],Zo=["ABSENT","ACCORDING","ACCTNG","ACTION","ACTIVATE","ADD","ALIAS","ALL","ALLOCATE","ALLOW","ALTER","AND","ANY","APPEND","APPLNAME","ARRAY","ARRAY_AGG","ARRAY_TRIM","AS","ASC","ASENSITIVE","ASSOCIATE","ATOMIC","ATTACH","ATTRIBUTES","AUTHORIZATION","AUTONOMOUS","BEFORE","BEGIN","BETWEEN","BIND","BSON","BUFFERPOOL","BY","CACHE","CALL","CALLED","CARDINALITY","CASE","CAST","CHECK","CL","CLOSE","CLUSTER","COLLECT","COLLECTION","COLUMN","COMMENT","COMMIT","COMPACT","COMPARISONS","COMPRESS","CONCAT","CONCURRENT","CONDITION","CONNECT","CONNECT_BY_ROOT","CONNECTION","CONSTANT","CONSTRAINT","CONTAINS","CONTENT","CONTINUE","COPY","COUNT","COUNT_BIG","CREATE","CREATEIN","CROSS","CUBE","CUME_DIST","CURRENT","CURRENT_DATE","CURRENT_PATH","CURRENT_SCHEMA","CURRENT_SERVER","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","CURRENT_USER","CURSOR","CYCLE","DATABASE","DATAPARTITIONNAME","DATAPARTITIONNUM","DAY","DAYS","DB2GENERAL","DB2GENRL","DB2SQL","DBINFO","DBPARTITIONNAME","DBPARTITIONNUM","DEACTIVATE","DEALLOCATE","DECLARE","DEFAULT","DEFAULTS","DEFER","DEFINE","DEFINITION","DELETE","DELETING","DENSE_RANK","DENSERANK","DESC","DESCRIBE","DESCRIPTOR","DETACH","DETERMINISTIC","DIAGNOSTICS","DISABLE","DISALLOW","DISCONNECT","DISTINCT","DO","DOCUMENT","DROP","DYNAMIC","EACH","ELSE","ELSEIF","EMPTY","ENABLE","ENCODING","ENCRYPTION","END","END-EXEC","ENDING","ENFORCED","ERROR","ESCAPE","EVERY","EXCEPT","EXCEPTION","EXCLUDING","EXCLUSIVE","EXECUTE","EXISTS","EXIT","EXTEND","EXTERNAL","EXTRACT","FALSE","FENCED","FETCH","FIELDPROC","FILE","FINAL","FIRST_VALUE","FOR","FOREIGN","FORMAT","FREE","FREEPAGE","FROM","FULL","FUNCTION","GBPCACHE","GENERAL","GENERATED","GET","GLOBAL","GO","GOTO","GRANT","GROUP","HANDLER","HASH","HASH_ROW","HASHED_VALUE","HAVING","HINT","HOLD","HOUR","HOURS","IDENTITY","IF","IGNORE","IMMEDIATE","IMPLICITLY","IN","INCLUDE","INCLUDING","INCLUSIVE","INCREMENT","INDEX","INDEXBP","INDICATOR","INF","INFINITY","INHERIT","INLINE","INNER","INOUT","INSENSITIVE","INSERT","INSERTING","INTEGRITY","INTERPRET","INTERSECT","INTO","IS","ISNULL","ISOLATION","ITERATE","JAVA","JOIN","JSON","JSON_ARRAY","JSON_ARRAYAGG","JSON_EXISTS","JSON_OBJECT","JSON_OBJECTAGG","JSON_QUERY","JSON_TABLE","JSON_VALUE","KEEP","KEY","KEYS","LABEL","LAG","LANGUAGE","LAST_VALUE","LATERAL","LEAD","LEAVE","LEFT","LEVEL2","LIKE","LIMIT","LINKTYPE","LISTAGG","LOCAL","LOCALDATE","LOCALTIME","LOCALTIMESTAMP","LOCATION","LOCATOR","LOCK","LOCKSIZE","LOG","LOGGED","LOOP","MAINTAINED","MASK","MATCHED","MATERIALIZED","MAXVALUE","MERGE","MICROSECOND","MICROSECONDS","MINPCTUSED","MINUTE","MINUTES","MINVALUE","MIRROR","MIXED","MODE","MODIFIES","MONTH","MONTHS","NAMESPACE","NAN","NATIONAL","NCHAR","NCLOB","NESTED","NEW","NEW_TABLE","NEXTVAL","NO","NOCACHE","NOCYCLE","NODENAME","NODENUMBER","NOMAXVALUE","NOMINVALUE","NONE","NOORDER","NORMALIZED","NOT","NOTNULL","NTH_VALUE","NTILE","NULL","NULLS","NVARCHAR","OBID","OBJECT","OF","OFF","OFFSET","OLD","OLD_TABLE","OMIT","ON","ONLY","OPEN","OPTIMIZE","OPTION","OR","ORDER","ORDINALITY","ORGANIZE","OUT","OUTER","OVER","OVERLAY","OVERRIDING","PACKAGE","PADDED","PAGE","PAGESIZE","PARAMETER","PART","PARTITION","PARTITIONED","PARTITIONING","PARTITIONS","PASSING","PASSWORD","PATH","PCTFREE","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","PERIOD","PERMISSION","PIECESIZE","PIPE","PLAN","POSITION","PREPARE","PREVVAL","PRIMARY","PRIOR","PRIQTY","PRIVILEGES","PROCEDURE","PROGRAM","PROGRAMID","QUERY","RANGE","RANK","RATIO_TO_REPORT","RCDFMT","READ","READS","RECOVERY","REFERENCES","REFERENCING","REFRESH","REGEXP_LIKE","RELEASE","RENAME","REPEAT","RESET","RESIGNAL","RESTART","RESULT","RESULT_SET_LOCATOR","RETURN","RETURNING","RETURNS","REVOKE","RID","RIGHT","ROLLBACK","ROLLUP","ROUTINE","ROW","ROW_NUMBER","ROWNUMBER","ROWS","RRN","RUN","SAVEPOINT","SBCS","SCALAR","SCHEMA","SCRATCHPAD","SCROLL","SEARCH","SECOND","SECONDS","SECQTY","SECURED","SELECT","SENSITIVE","SEQUENCE","SESSION","SESSION_USER","SET","SIGNAL","SIMPLE","SKIP","SNAN","SOME","SOURCE","SPECIFIC","SQL","SQLID","SQLIND_DEFAULT","SQLIND_UNASSIGNED","STACKED","START","STARTING","STATEMENT","STATIC","STOGROUP","SUBSTRING","SUMMARY","SYNONYM","SYSTEM_TIME","SYSTEM_USER","TABLE","TABLESPACE","TABLESPACES","TAG","THEN","THREADSAFE","TO","TRANSACTION","TRANSFER","TRIGGER","TRIM","TRIM_ARRAY","TRUE","TRUNCATE","TRY_CAST","TYPE","UNDO","UNION","UNIQUE","UNIT","UNKNOWN","UNNEST","UNTIL","UPDATE","UPDATING","URI","USAGE","USE","USER","USERID","USING","VALUE","VALUES","VARIABLE","VARIANT","VCAT","VERSION","VERSIONING","VIEW","VOLATILE","WAIT","WHEN","WHENEVER","WHERE","WHILE","WITH","WITHIN","WITHOUT","WRAPPED","WRAPPER","WRITE","WRKSTNNAME","XMLAGG","XMLATTRIBUTES","XMLCAST","XMLCOMMENT","XMLCONCAT","XMLDOCUMENT","XMLELEMENT","XMLFOREST","XMLGROUP","XMLNAMESPACES","XMLPARSE","XMLPI","XMLROW","XMLSERIALIZE","XMLTABLE","XMLTEXT","XMLVALIDATE","XSLTRANSFORM","XSROBJECT","YEAR","YEARS","YES","ZONE"],ei=["ARRAY","BIGINT","BINARY","BIT","BLOB","BOOLEAN","CCSID","CHAR","CHARACTER","CLOB","DATA","DATALINK","DATE","DBCLOB","DECFLOAT","DECIMAL","DEC","DOUBLE","DOUBLE PRECISION","FLOAT","GRAPHIC","INT","INTEGER","LONG","NUMERIC","REAL","ROWID","SMALLINT","TIME","TIMESTAMP","VARBINARY","VARCHAR","VARGRAPHIC","XML"],ti=u(["SELECT [ALL | DISTINCT]"]),Ei=u(["WITH [RECURSIVE]","INTO","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER [SIBLINGS] BY [INPUT SEQUENCE]","LIMIT","OFFSET","FETCH {FIRST | NEXT}","FOR UPDATE [OF]","FOR READ ONLY","OPTIMIZE FOR","INSERT INTO","VALUES","SET","MERGE INTO","WHEN [NOT] MATCHED [THEN]","UPDATE SET","DELETE","INSERT","FOR SYSTEM NAME"]),Ur=u(["CREATE [OR REPLACE] TABLE"]),kt=u(["CREATE [OR REPLACE] [RECURSIVE] VIEW","UPDATE","WHERE CURRENT OF","WITH {NC | RR | RS | CS | UR}","DELETE FROM","DROP TABLE","ALTER TABLE","ADD [COLUMN]","ALTER [COLUMN]","DROP [COLUMN]","SET DATA TYPE","SET {GENERATED ALWAYS | GENERATED BY DEFAULT}","SET NOT NULL","SET {NOT HIDDEN | IMPLICITLY HIDDEN}","SET FIELDPROC","DROP {DEFAULT | NOT NULL | GENERATED | IDENTITY | ROW CHANGE TIMESTAMP | FIELDPROC}","TRUNCATE [TABLE]","SET [CURRENT] SCHEMA","SET CURRENT_SCHEMA","ALLOCATE CURSOR","ALLOCATE [SQL] DESCRIPTOR [LOCAL | GLOBAL] SQL","ALTER [SPECIFIC] {FUNCTION | PROCEDURE}","ALTER {MASK | PERMISSION | SEQUENCE | TRIGGER}","ASSOCIATE [RESULT SET] {LOCATOR | LOCATORS}","BEGIN DECLARE SECTION","CALL","CLOSE","COMMENT ON {ALIAS | COLUMN | CONSTRAINT | INDEX | MASK | PACKAGE | PARAMETER | PERMISSION | SEQUENCE | TABLE | TRIGGER | VARIABLE | XSROBJECT}","COMMENT ON [SPECIFIC] {FUNCTION | PROCEDURE | ROUTINE}","COMMENT ON PARAMETER SPECIFIC {FUNCTION | PROCEDURE | ROUTINE}","COMMENT ON [TABLE FUNCTION] RETURN COLUMN","COMMENT ON [TABLE FUNCTION] RETURN COLUMN SPECIFIC [PROCEDURE | ROUTINE]","COMMIT [WORK] [HOLD]","CONNECT [TO | RESET] USER","CREATE [OR REPLACE] {ALIAS | FUNCTION | MASK | PERMISSION | PROCEDURE | SEQUENCE | TRIGGER | VARIABLE}","CREATE [ENCODED VECTOR] INDEX","CREATE UNIQUE [WHERE NOT NULL] INDEX","CREATE SCHEMA","CREATE TYPE","DEALLOCATE [SQL] DESCRIPTOR [LOCAL | GLOBAL]","DECLARE CURSOR","DECLARE GLOBAL TEMPORARY TABLE","DECLARE","DESCRIBE CURSOR","DESCRIBE INPUT","DESCRIBE [OUTPUT]","DESCRIBE {PROCEDURE | ROUTINE}","DESCRIBE TABLE","DISCONNECT ALL [SQL]","DISCONNECT [CURRENT]","DROP {ALIAS | INDEX | MASK | PACKAGE | PERMISSION | SCHEMA | SEQUENCE | TABLE | TYPE | VARIABLE | XSROBJECT} [IF EXISTS]","DROP [SPECIFIC] {FUNCTION | PROCEDURE | ROUTINE} [IF EXISTS]","END DECLARE SECTION","EXECUTE [IMMEDIATE]","FREE LOCATOR","GET [SQL] DESCRIPTOR [LOCAL | GLOBAL]","GET [CURRENT | STACKED] DIAGNOSTICS","GRANT {ALL [PRIVILEGES] | ALTER | EXECUTE} ON {FUNCTION | PROCEDURE | ROUTINE | PACKAGE | SCHEMA | SEQUENCE | TABLE | TYPE | VARIABLE | XSROBJECT}","HOLD LOCATOR","INCLUDE","LABEL ON {ALIAS | COLUMN | CONSTRAINT | INDEX | MASK | PACKAGE | PERMISSION | SEQUENCE | TABLE | TRIGGER | VARIABLE | XSROBJECT}","LABEL ON [SPECIFIC] {FUNCTION | PROCEDURE | ROUTINE}","LOCK TABLE","OPEN","PREPARE","REFRESH TABLE","RELEASE","RELEASE [TO] SAVEPOINT","RENAME [TABLE | INDEX] TO","REVOKE {ALL [PRIVILEGES] | ALTER | EXECUTE} ON {FUNCTION | PROCEDURE | ROUTINE | PACKAGE | SCHEMA | SEQUENCE | TABLE | TYPE | VARIABLE | XSROBJECT}","ROLLBACK [WORK] [HOLD | TO SAVEPOINT]","SAVEPOINT","SET CONNECTION","SET CURRENT {DEBUG MODE | DECFLOAT ROUNDING MODE | DEGREE | IMPLICIT XMLPARSE OPTION | TEMPORAL SYSTEM_TIME}","SET [SQL] DESCRIPTOR [LOCAL | GLOBAL]","SET ENCRYPTION PASSWORD","SET OPTION","SET {[CURRENT [FUNCTION]] PATH | CURRENT_PATH}","SET RESULT SETS [WITH RETURN [TO CALLER | TO CLIENT]]","SET SESSION AUTHORIZATION","SET SESSION_USER","SET TRANSACTION","SIGNAL SQLSTATE [VALUE]","TAG","TRANSFER OWNERSHIP OF","WHENEVER {NOT FOUND | SQLERROR | SQLWARNING}"]),ri=u(["UNION [ALL]","EXCEPT [ALL]","INTERSECT [ALL]"]),ni=u(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","[LEFT | RIGHT] EXCEPTION JOIN","{INNER | CROSS} JOIN"]),si=u(["ON DELETE","ON UPDATE","SET NULL","{ROWS | RANGE} BETWEEN"]),Ti=u([]),oi={name:"db2i",tokenizerOptions:{reservedSelect:ti,reservedClauses:[...Ei,...Ur,...kt],reservedSetOperations:ri,reservedJoins:ni,reservedKeywordPhrases:si,reservedDataTypePhrases:Ti,reservedKeywords:Zo,reservedDataTypes:ei,reservedFunctionNames:zo,nestedBlockComments:!0,extraParens:["[]"],stringTypes:[{quote:"''-qq",prefixes:["G","N"]},{quote:"''-raw",prefixes:["X","BX","GX","UX"],requirePrefix:!0}],identTypes:['""-qq'],identChars:{first:"@#$",rest:"@#$"},paramTypes:{positional:!0,named:[":"]},paramChars:{first:"@#$",rest:"@#$"},operators:["**","¬=","¬>","¬<","!>","!<","||","=>"]},formatOptions:{onelineClauses:[...Ur,...kt],tabularOnelineClauses:kt}},ii=["ABS","ACOS","ADD","ADD_PARQUET_KEY","AGE","AGGREGATE","ALIAS","ALL_PROFILING_OUTPUT","ANY_VALUE","APPLY","APPROX_COUNT_DISTINCT","APPROX_QUANTILE","ARBITRARY","ARGMAX","ARGMIN","ARG_MAX","ARG_MAX_NULL","ARG_MIN","ARG_MIN_NULL","ARRAY_AGG","ARRAY_AGGR","ARRAY_AGGREGATE","ARRAY_APPEND","ARRAY_APPLY","ARRAY_CAT","ARRAY_CONCAT","ARRAY_CONTAINS","ARRAY_COSINE_SIMILARITY","ARRAY_CROSS_PRODUCT","ARRAY_DISTANCE","ARRAY_DISTINCT","ARRAY_DOT_PRODUCT","ARRAY_EXTRACT","ARRAY_FILTER","ARRAY_GRADE_UP","ARRAY_HAS","ARRAY_HAS_ALL","ARRAY_HAS_ANY","ARRAY_INDEXOF","ARRAY_INNER_PRODUCT","ARRAY_INTERSECT","ARRAY_LENGTH","ARRAY_POP_BACK","ARRAY_POP_FRONT","ARRAY_POSITION","ARRAY_PREPEND","ARRAY_PUSH_BACK","ARRAY_PUSH_FRONT","ARRAY_REDUCE","ARRAY_RESIZE","ARRAY_REVERSE","ARRAY_REVERSE_SORT","ARRAY_SELECT","ARRAY_SLICE","ARRAY_SORT","ARRAY_TO_JSON","ARRAY_TO_STRING","ARRAY_TRANSFORM","ARRAY_UNIQUE","ARRAY_VALUE","ARRAY_WHERE","ARRAY_ZIP","ARROW_SCAN","ARROW_SCAN_DUMB","ASCII","ASIN","ATAN","ATAN2","AVG","BASE64","BIN","BITSTRING","BITSTRING_AGG","BIT_AND","BIT_COUNT","BIT_LENGTH","BIT_OR","BIT_POSITION","BIT_XOR","BOOL_AND","BOOL_OR","CARDINALITY","CBRT","CEIL","CEILING","CENTURY","CHECKPOINT","CHR","COLLATIONS","COL_DESCRIPTION","COMBINE","CONCAT","CONCAT_WS","CONSTANT_OR_NULL","CONTAINS","COPY_DATABASE","CORR","COS","COT","COUNT","COUNT_IF","COUNT_STAR","COVAR_POP","COVAR_SAMP","CREATE_SORT_KEY","CURRENT_CATALOG","CURRENT_DATABASE","CURRENT_DATE","CURRENT_LOCALTIME","CURRENT_LOCALTIMESTAMP","CURRENT_QUERY","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_SCHEMAS","CURRENT_SETTING","CURRENT_USER","CURRVAL","DAMERAU_LEVENSHTEIN","DATABASE_LIST","DATABASE_SIZE","DATEDIFF","DATEPART","DATESUB","DATETRUNC","DATE_ADD","DATE_DIFF","DATE_PART","DATE_SUB","DATE_TRUNC","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DECADE","DECODE","DEGREES","DISABLE_CHECKPOINT_ON_SHUTDOWN","DISABLE_OBJECT_CACHE","DISABLE_OPTIMIZER","DISABLE_PRINT_PROGRESS_BAR","DISABLE_PROFILE","DISABLE_PROFILING","DISABLE_PROGRESS_BAR","DISABLE_VERIFICATION","DISABLE_VERIFY_EXTERNAL","DISABLE_VERIFY_FETCH_ROW","DISABLE_VERIFY_PARALLELISM","DISABLE_VERIFY_SERIALIZER","DIVIDE","DUCKDB_COLUMNS","DUCKDB_CONSTRAINTS","DUCKDB_DATABASES","DUCKDB_DEPENDENCIES","DUCKDB_EXTENSIONS","DUCKDB_FUNCTIONS","DUCKDB_INDEXES","DUCKDB_KEYWORDS","DUCKDB_MEMORY","DUCKDB_OPTIMIZERS","DUCKDB_SCHEMAS","DUCKDB_SECRETS","DUCKDB_SEQUENCES","DUCKDB_SETTINGS","DUCKDB_TABLES","DUCKDB_TEMPORARY_FILES","DUCKDB_TYPES","DUCKDB_VIEWS","EDIT","EDITDIST3","ELEMENT_AT","ENABLE_CHECKPOINT_ON_SHUTDOWN","ENABLE_OBJECT_CACHE","ENABLE_OPTIMIZER","ENABLE_PRINT_PROGRESS_BAR","ENABLE_PROFILE","ENABLE_PROFILING","ENABLE_PROGRESS_BAR","ENABLE_VERIFICATION","ENCODE","ENDS_WITH","ENTROPY","ENUM_CODE","ENUM_FIRST","ENUM_LAST","ENUM_RANGE","ENUM_RANGE_BOUNDARY","EPOCH","EPOCH_MS","EPOCH_NS","EPOCH_US","ERA","ERROR","EVEN","EXP","FACTORIAL","FAVG","FDIV","FILTER","FINALIZE","FIRST","FLATTEN","FLOOR","FMOD","FORCE_CHECKPOINT","FORMAT","FORMATREADABLEDECIMALSIZE","FORMATREADABLESIZE","FORMAT_BYTES","FORMAT_PG_TYPE","FORMAT_TYPE","FROM_BASE64","FROM_BINARY","FROM_HEX","FROM_JSON","FROM_JSON_STRICT","FSUM","FUNCTIONS","GAMMA","GCD","GENERATE_SERIES","GENERATE_SUBSCRIPTS","GEN_RANDOM_UUID","GEOMEAN","GEOMETRIC_MEAN","GETENV","GET_BIT","GET_BLOCK_SIZE","GET_CURRENT_TIME","GET_CURRENT_TIMESTAMP","GLOB","GRADE_UP","GREATEST","GREATEST_COMMON_DIVISOR","GROUP_CONCAT","HAMMING","HASH","HAS_ANY_COLUMN_PRIVILEGE","HAS_COLUMN_PRIVILEGE","HAS_DATABASE_PRIVILEGE","HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE","HAS_FUNCTION_PRIVILEGE","HAS_LANGUAGE_PRIVILEGE","HAS_SCHEMA_PRIVILEGE","HAS_SEQUENCE_PRIVILEGE","HAS_SERVER_PRIVILEGE","HAS_TABLESPACE_PRIVILEGE","HAS_TABLE_PRIVILEGE","HEX","HISTOGRAM","HOUR","ICU_CALENDAR_NAMES","ICU_SORT_KEY","ILIKE_ESCAPE","IMPORT_DATABASE","INDEX_SCAN","INET_CLIENT_ADDR","INET_CLIENT_PORT","INET_SERVER_ADDR","INET_SERVER_PORT","INSTR","IN_SEARCH_PATH","ISFINITE","ISINF","ISNAN","ISODOW","ISOYEAR","JACCARD","JARO_SIMILARITY","JARO_WINKLER_SIMILARITY","JSON_ARRAY","JSON_ARRAY_LENGTH","JSON_CONTAINS","JSON_DESERIALIZE_SQL","JSON_EXECUTE_SERIALIZED_SQL","JSON_EXTRACT","JSON_EXTRACT_PATH","JSON_EXTRACT_PATH_TEXT","JSON_EXTRACT_STRING","JSON_GROUP_ARRAY","JSON_GROUP_OBJECT","JSON_GROUP_STRUCTURE","JSON_KEYS","JSON_MERGE_PATCH","JSON_OBJECT","JSON_QUOTE","JSON_SERIALIZE_PLAN","JSON_SERIALIZE_SQL","JSON_STRUCTURE","JSON_TRANSFORM","JSON_TRANSFORM_STRICT","JSON_TYPE","JSON_VALID","JULIAN","KAHAN_SUM","KURTOSIS","KURTOSIS_POP","LAST","LAST_DAY","LCASE","LCM","LEAST","LEAST_COMMON_MULTIPLE","LEFT","LEFT_GRAPHEME","LEN","LENGTH","LENGTH_GRAPHEME","LEVENSHTEIN","LGAMMA","LIKE_ESCAPE","LIST","LISTAGG","LIST_AGGR","LIST_AGGREGATE","LIST_ANY_VALUE","LIST_APPEND","LIST_APPLY","LIST_APPROX_COUNT_DISTINCT","LIST_AVG","LIST_BIT_AND","LIST_BIT_OR","LIST_BIT_XOR","LIST_BOOL_AND","LIST_BOOL_OR","LIST_CAT","LIST_CONCAT","LIST_CONTAINS","LIST_COSINE_SIMILARITY","LIST_COUNT","LIST_DISTANCE","LIST_DISTINCT","LIST_DOT_PRODUCT","LIST_ELEMENT","LIST_ENTROPY","LIST_EXTRACT","LIST_FILTER","LIST_FIRST","LIST_GRADE_UP","LIST_HAS","LIST_HAS_ALL","LIST_HAS_ANY","LIST_HISTOGRAM","LIST_INDEXOF","LIST_INNER_PRODUCT","LIST_INTERSECT","LIST_KURTOSIS","LIST_KURTOSIS_POP","LIST_LAST","LIST_MAD","LIST_MAX","LIST_MEDIAN","LIST_MIN","LIST_MODE","LIST_PACK","LIST_POSITION","LIST_PREPEND","LIST_PRODUCT","LIST_REDUCE","LIST_RESIZE","LIST_REVERSE","LIST_REVERSE_SORT","LIST_SELECT","LIST_SEM","LIST_SKEWNESS","LIST_SLICE","LIST_SORT","LIST_STDDEV_POP","LIST_STDDEV_SAMP","LIST_STRING_AGG","LIST_SUM","LIST_TRANSFORM","LIST_UNIQUE","LIST_VALUE","LIST_VAR_POP","LIST_VAR_SAMP","LIST_WHERE","LIST_ZIP","LN","LOG","LOG10","LOG2","LOWER","LPAD","LSMODE","LTRIM","MAD","MAKE_DATE","MAKE_TIME","MAKE_TIMESTAMP","MAKE_TIMESTAMPTZ","MAP","MAP_CONCAT","MAP_ENTRIES","MAP_EXTRACT","MAP_FROM_ENTRIES","MAP_KEYS","MAP_VALUES","MAX","MAX_BY","MD5","MD5_NUMBER","MD5_NUMBER_LOWER","MD5_NUMBER_UPPER","MEAN","MEDIAN","METADATA_INFO","MICROSECOND","MILLENNIUM","MILLISECOND","MIN","MINUTE","MIN_BY","MISMATCHES","MOD","MODE","MONTH","MONTHNAME","MULTIPLY","NEXTAFTER","NEXTVAL","NFC_NORMALIZE","NOT_ILIKE_ESCAPE","NOT_LIKE_ESCAPE","NOW","NULLIF","OBJ_DESCRIPTION","OCTET_LENGTH","ORD","PARQUET_FILE_METADATA","PARQUET_KV_METADATA","PARQUET_METADATA","PARQUET_SCAN","PARQUET_SCHEMA","PARSE_DIRNAME","PARSE_DIRPATH","PARSE_FILENAME","PARSE_PATH","PG_COLLATION_IS_VISIBLE","PG_CONF_LOAD_TIME","PG_CONVERSION_IS_VISIBLE","PG_FUNCTION_IS_VISIBLE","PG_GET_CONSTRAINTDEF","PG_GET_EXPR","PG_GET_VIEWDEF","PG_HAS_ROLE","PG_IS_OTHER_TEMP_SCHEMA","PG_MY_TEMP_SCHEMA","PG_OPCLASS_IS_VISIBLE","PG_OPERATOR_IS_VISIBLE","PG_OPFAMILY_IS_VISIBLE","PG_POSTMASTER_START_TIME","PG_SIZE_PRETTY","PG_TABLE_IS_VISIBLE","PG_TIMEZONE_NAMES","PG_TS_CONFIG_IS_VISIBLE","PG_TS_DICT_IS_VISIBLE","PG_TS_PARSER_IS_VISIBLE","PG_TS_TEMPLATE_IS_VISIBLE","PG_TYPEOF","PG_TYPE_IS_VISIBLE","PI","PLATFORM","POSITION","POW","POWER","PRAGMA_COLLATIONS","PRAGMA_DATABASE_SIZE","PRAGMA_METADATA_INFO","PRAGMA_PLATFORM","PRAGMA_SHOW","PRAGMA_STORAGE_INFO","PRAGMA_TABLE_INFO","PRAGMA_USER_AGENT","PRAGMA_VERSION","PREFIX","PRINTF","PRODUCT","QUANTILE","QUANTILE_CONT","QUANTILE_DISC","QUARTER","RADIANS","RANDOM","RANGE","READFILE","READ_BLOB","READ_CSV","READ_CSV_AUTO","READ_JSON","READ_JSON_AUTO","READ_JSON_OBJECTS","READ_JSON_OBJECTS_AUTO","READ_NDJSON","READ_NDJSON_AUTO","READ_NDJSON_OBJECTS","READ_PARQUET","READ_TEXT","REDUCE","REGEXP_ESCAPE","REGEXP_EXTRACT","REGEXP_EXTRACT_ALL","REGEXP_FULL_MATCH","REGEXP_MATCHES","REGEXP_REPLACE","REGEXP_SPLIT_TO_ARRAY","REGEXP_SPLIT_TO_TABLE","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","REPEAT","REPEAT_ROW","REPLACE","RESERVOIR_QUANTILE","REVERSE","RIGHT","RIGHT_GRAPHEME","ROUND","ROUNDBANKERS","ROUND_EVEN","ROW","ROW_TO_JSON","RPAD","RTRIM","SECOND","SEM","SEQ_SCAN","SESSION_USER","SETSEED","SET_BIT","SHA256","SHA3","SHELL_ADD_SCHEMA","SHELL_ESCAPE_CRNL","SHELL_IDQUOTE","SHELL_MODULE_SCHEMA","SHELL_PUTSNL","SHOBJ_DESCRIPTION","SHOW","SHOW_DATABASES","SHOW_TABLES","SHOW_TABLES_EXPANDED","SIGN","SIGNBIT","SIN","SKEWNESS","SNIFF_CSV","SPLIT","SPLIT_PART","SQL_AUTO_COMPLETE","SQRT","STARTS_WITH","STATS","STDDEV","STDDEV_POP","STDDEV_SAMP","STORAGE_INFO","STRFTIME","STRING_AGG","STRING_SPLIT","STRING_SPLIT_REGEX","STRING_TO_ARRAY","STRIP_ACCENTS","STRLEN","STRPOS","STRPTIME","STRUCT_EXTRACT","STRUCT_INSERT","STRUCT_PACK","STR_SPLIT","STR_SPLIT_REGEX","SUBSTR","SUBSTRING","SUBSTRING_GRAPHEME","SUBTRACT","SUFFIX","SUM","SUMKAHAN","SUMMARY","SUM_NO_OVERFLOW","TABLE_INFO","TAN","TEST_ALL_TYPES","TEST_VECTOR_TYPES","TIMEZONE","TIMEZONE_HOUR","TIMEZONE_MINUTE","TIME_BUCKET","TODAY","TO_BASE","TO_BASE64","TO_BINARY","TO_CENTURIES","TO_DAYS","TO_DECADES","TO_HEX","TO_HOURS","TO_JSON","TO_MICROSECONDS","TO_MILLENNIA","TO_MILLISECONDS","TO_MINUTES","TO_MONTHS","TO_SECONDS","TO_TIMESTAMP","TO_WEEKS","TO_YEARS","TRANSACTION_TIMESTAMP","TRANSLATE","TRIM","TRUNC","TRY_STRPTIME","TXID_CURRENT","TYPEOF","UCASE","UNBIN","UNHEX","UNICODE","UNION_EXTRACT","UNION_TAG","UNION_VALUE","UNNEST","UNPIVOT_LIST","UPPER","USER","USER_AGENT","UUID","VARIANCE","VAR_POP","VAR_SAMP","VECTOR_TYPE","VERIFY_EXTERNAL","VERIFY_FETCH_ROW","VERIFY_PARALLELISM","VERIFY_SERIALIZER","VERSION","WEEK","WEEKDAY","WEEKOFYEAR","WHICH_SECRET","WRITEFILE","XOR","YEAR","YEARWEEK","CAST","COALESCE","RANK","ROW_NUMBER"],ai=["ALL","ANALYSE","ANALYZE","AND","ANY","AS","ASC","ATTACH","ASYMMETRIC","BOTH","CASE","CAST","CHECK","COLLATE","COLUMN","CONSTRAINT","CREATE","DEFAULT","DEFERRABLE","DESC","DESCRIBE","DETACH","DISTINCT","DO","ELSE","END","EXCEPT","FALSE","FETCH","FOR","FOREIGN","FROM","GRANT","GROUP","HAVING","IN","INITIALLY","INTERSECT","INTO","IS","LATERAL","LEADING","LIMIT","NOT","NULL","OFFSET","ON","ONLY","OR","ORDER","PIVOT","PIVOT_LONGER","PIVOT_WIDER","PLACING","PRIMARY","REFERENCES","RETURNING","SELECT","SHOW","SOME","SUMMARIZE","SYMMETRIC","TABLE","THEN","TO","TRAILING","TRUE","UNION","UNIQUE","UNPIVOT","USING","VARIADIC","WHEN","WHERE","WINDOW","WITH"],Ri=["ARRAY","BIGINT","BINARY","BIT","BITSTRING","BLOB","BOOL","BOOLEAN","BPCHAR","BYTEA","CHAR","DATE","DATETIME","DEC","DECIMAL","DOUBLE","ENUM","FLOAT","FLOAT4","FLOAT8","GUID","HUGEINT","INET","INT","INT1","INT128","INT16","INT2","INT32","INT4","INT64","INT8","INTEGER","INTEGRAL","INTERVAL","JSON","LIST","LOGICAL","LONG","MAP","NUMERIC","NVARCHAR","OID","REAL","ROW","SHORT","SIGNED","SMALLINT","STRING","STRUCT","TEXT","TIME","TIMESTAMP_MS","TIMESTAMP_NS","TIMESTAMP_S","TIMESTAMP_US","TIMESTAMP","TIMESTAMPTZ","TIMETZ","TINYINT","UBIGINT","UHUGEINT","UINT128","UINT16","UINT32","UINT64","UINT8","UINTEGER","UNION","USMALLINT","UTINYINT","UUID","VARBINARY","VARCHAR"],Ai=u(["SELECT [ALL | DISTINCT]"]),Si=u(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY [ALL]","HAVING","WINDOW","PARTITION BY","ORDER BY [ALL]","LIMIT","OFFSET","USING SAMPLE","QUALIFY","INSERT [OR REPLACE] INTO","VALUES","DEFAULT VALUES","SET","RETURNING"]),xr=u(["CREATE [OR REPLACE] [TEMPORARY | TEMP] TABLE [IF NOT EXISTS]"]),Kt=u(["UPDATE","ON CONFLICT","DELETE FROM","DROP TABLE [IF EXISTS]","TRUNCATE","ALTER TABLE","ADD [COLUMN] [IF NOT EXISTS]","ADD PRIMARY KEY","DROP [COLUMN] [IF EXISTS]","ALTER [COLUMN]","RENAME [COLUMN]","RENAME TO","SET [DATA] TYPE","{SET | DROP} DEFAULT","{SET | DROP} NOT NULL","CREATE [OR REPLACE] [TEMPORARY | TEMP] {MACRO | FUNCTION}","DROP MACRO [TABLE] [IF EXISTS]","DROP FUNCTION [IF EXISTS]","CREATE [UNIQUE] INDEX [IF NOT EXISTS]","DROP INDEX [IF EXISTS]","CREATE [OR REPLACE] SCHEMA [IF NOT EXISTS]","DROP SCHEMA [IF EXISTS]","CREATE [OR REPLACE] [PERSISTENT | TEMPORARY] SECRET [IF NOT EXISTS]","DROP [PERSISTENT | TEMPORARY] SECRET [IF EXISTS]","CREATE [OR REPLACE] [TEMPORARY | TEMP] SEQUENCE","DROP SEQUENCE [IF EXISTS]","CREATE [OR REPLACE] [TEMPORARY | TEMP] VIEW [IF NOT EXISTS]","DROP VIEW [IF EXISTS]","ALTER VIEW","CREATE TYPE","DROP TYPE [IF EXISTS]","ANALYZE","ATTACH [DATABASE] [IF NOT EXISTS]","DETACH [DATABASE] [IF EXISTS]","CALL","[FORCE] CHECKPOINT","COMMENT ON [TABLE | COLUMN | VIEW | INDEX | SEQUENCE | TYPE | MACRO | MACRO TABLE]","COPY [FROM DATABASE]","DESCRIBE","EXPORT DATABASE","IMPORT DATABASE","INSTALL","LOAD","PIVOT","PIVOT_WIDER","UNPIVOT","EXPLAIN [ANALYZE]","SET {LOCAL | SESSION | GLOBAL}","RESET [LOCAL | SESSION | GLOBAL]","{SET | RESET} VARIABLE","SUMMARIZE","BEGIN TRANSACTION","ROLLBACK","COMMIT","ABORT","USE","VACUUM [ANALYZE]","PREPARE","EXECUTE","DEALLOCATE [PREPARE]"]),li=u(["UNION [ALL | BY NAME]","EXCEPT [ALL]","INTERSECT [ALL]"]),Ii=u(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","{NATURAL | ASOF} [INNER] JOIN","{NATURAL | ASOF} {LEFT | RIGHT | FULL} [OUTER] JOIN","POSITIONAL JOIN","ANTI JOIN","SEMI JOIN"]),Oi=u(["{ROWS | RANGE | GROUPS} BETWEEN","SIMILAR TO","IS [NOT] DISTINCT FROM"]),Ni=u(["TIMESTAMP WITH TIME ZONE"]),ci={name:"duckdb",tokenizerOptions:{reservedSelect:Ai,reservedClauses:[...Si,...xr,...Kt],reservedSetOperations:li,reservedJoins:Ii,reservedKeywordPhrases:Oi,reservedDataTypePhrases:Ni,supportsXor:!0,reservedKeywords:ai,reservedDataTypes:Ri,reservedFunctionNames:ii,nestedBlockComments:!0,extraParens:["[]","{}"],underscoresInNumbers:!0,stringTypes:["$$","''-qq",{quote:"''-qq-bs",prefixes:["E"],requirePrefix:!0},{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:['""-qq'],identChars:{rest:"$"},paramTypes:{positional:!0,numbered:["$"],quoted:["$"]},operators:["//","%","**","^","!","&","|","~","<<",">>","::","==","->","->>",":",":=","=>","~~","!~~","~~*","!~~*","~~~","~","!~","~*","!~*","^@","||",">>=","<<="]},formatOptions:{alwaysDenseOperators:["::"],onelineClauses:[...xr,...Kt],tabularOnelineClauses:Kt}},di=["ABS","ACOS","ASIN","ATAN","BIN","BROUND","CBRT","CEIL","CEILING","CONV","COS","DEGREES","EXP","FACTORIAL","FLOOR","GREATEST","HEX","LEAST","LN","LOG","LOG10","LOG2","NEGATIVE","PI","PMOD","POSITIVE","POW","POWER","RADIANS","RAND","ROUND","SHIFTLEFT","SHIFTRIGHT","SHIFTRIGHTUNSIGNED","SIGN","SIN","SQRT","TAN","UNHEX","WIDTH_BUCKET","ARRAY_CONTAINS","MAP_KEYS","MAP_VALUES","SIZE","SORT_ARRAY","BINARY","CAST","ADD_MONTHS","DATE","DATE_ADD","DATE_FORMAT","DATE_SUB","DATEDIFF","DAY","DAYNAME","DAYOFMONTH","DAYOFYEAR","EXTRACT","FROM_UNIXTIME","FROM_UTC_TIMESTAMP","HOUR","LAST_DAY","MINUTE","MONTH","MONTHS_BETWEEN","NEXT_DAY","QUARTER","SECOND","TIMESTAMP","TO_DATE","TO_UTC_TIMESTAMP","TRUNC","UNIX_TIMESTAMP","WEEKOFYEAR","YEAR","ASSERT_TRUE","COALESCE","IF","ISNOTNULL","ISNULL","NULLIF","NVL","ASCII","BASE64","CHARACTER_LENGTH","CHR","CONCAT","CONCAT_WS","CONTEXT_NGRAMS","DECODE","ELT","ENCODE","FIELD","FIND_IN_SET","FORMAT_NUMBER","GET_JSON_OBJECT","IN_FILE","INITCAP","INSTR","LCASE","LENGTH","LEVENSHTEIN","LOCATE","LOWER","LPAD","LTRIM","NGRAMS","OCTET_LENGTH","PARSE_URL","PRINTF","QUOTE","REGEXP_EXTRACT","REGEXP_REPLACE","REPEAT","REVERSE","RPAD","RTRIM","SENTENCES","SOUNDEX","SPACE","SPLIT","STR_TO_MAP","SUBSTR","SUBSTRING","TRANSLATE","TRIM","UCASE","UNBASE64","UPPER","MASK","MASK_FIRST_N","MASK_HASH","MASK_LAST_N","MASK_SHOW_FIRST_N","MASK_SHOW_LAST_N","AES_DECRYPT","AES_ENCRYPT","CRC32","CURRENT_DATABASE","CURRENT_USER","HASH","JAVA_METHOD","LOGGED_IN_USER","MD5","REFLECT","SHA","SHA1","SHA2","SURROGATE_KEY","VERSION","AVG","COLLECT_LIST","COLLECT_SET","CORR","COUNT","COVAR_POP","COVAR_SAMP","HISTOGRAM_NUMERIC","MAX","MIN","NTILE","PERCENTILE","PERCENTILE_APPROX","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","STDDEV_POP","STDDEV_SAMP","SUM","VAR_POP","VAR_SAMP","VARIANCE","EXPLODE","INLINE","JSON_TUPLE","PARSE_URL_TUPLE","POSEXPLODE","STACK","LEAD","LAG","FIRST_VALUE","LAST_VALUE","RANK","ROW_NUMBER","DENSE_RANK","CUME_DIST","PERCENT_RANK","NTILE"],Ci=["ADD","ADMIN","AFTER","ANALYZE","ARCHIVE","ASC","BEFORE","BUCKET","BUCKETS","CASCADE","CHANGE","CLUSTER","CLUSTERED","CLUSTERSTATUS","COLLECTION","COLUMNS","COMMENT","COMPACT","COMPACTIONS","COMPUTE","CONCATENATE","CONTINUE","DATA","DATABASES","DATETIME","DAY","DBPROPERTIES","DEFERRED","DEFINED","DELIMITED","DEPENDENCY","DESC","DIRECTORIES","DIRECTORY","DISABLE","DISTRIBUTE","ELEM_TYPE","ENABLE","ESCAPED","EXCLUSIVE","EXPLAIN","EXPORT","FIELDS","FILE","FILEFORMAT","FIRST","FORMAT","FORMATTED","FUNCTIONS","HOLD_DDLTIME","HOUR","IDXPROPERTIES","IGNORE","INDEX","INDEXES","INPATH","INPUTDRIVER","INPUTFORMAT","ITEMS","JAR","KEYS","KEY_TYPE","LIMIT","LINES","LOAD","LOCATION","LOCK","LOCKS","LOGICAL","LONG","MAPJOIN","MATERIALIZED","METADATA","MINUS","MINUTE","MONTH","MSCK","NOSCAN","NO_DROP","OFFLINE","OPTION","OUTPUTDRIVER","OUTPUTFORMAT","OVERWRITE","OWNER","PARTITIONED","PARTITIONS","PLUS","PRETTY","PRINCIPALS","PROTECTION","PURGE","READ","READONLY","REBUILD","RECORDREADER","RECORDWRITER","RELOAD","RENAME","REPAIR","REPLACE","REPLICATION","RESTRICT","REWRITE","ROLE","ROLES","SCHEMA","SCHEMAS","SECOND","SEMI","SERDE","SERDEPROPERTIES","SERVER","SETS","SHARED","SHOW","SHOW_DATABASE","SKEWED","SORT","SORTED","SSL","STATISTICS","STORED","STREAMTABLE","STRING","TABLES","TBLPROPERTIES","TEMPORARY","TERMINATED","TINYINT","TOUCH","TRANSACTIONS","UNARCHIVE","UNDO","UNIONTYPE","UNLOCK","UNSET","UNSIGNED","URI","USE","UTC","UTCTIMESTAMP","VALUE_TYPE","VIEW","WHILE","YEAR","AUTOCOMMIT","ISOLATION","LEVEL","OFFSET","SNAPSHOT","TRANSACTION","WORK","WRITE","ABORT","KEY","LAST","NORELY","NOVALIDATE","NULLS","RELY","VALIDATE","DETAIL","DOW","EXPRESSION","OPERATOR","QUARTER","SUMMARY","VECTORIZATION","WEEK","YEARS","MONTHS","WEEKS","DAYS","HOURS","MINUTES","SECONDS","TIMESTAMPTZ","ZONE","ALL","ALTER","AND","AS","AUTHORIZATION","BETWEEN","BOTH","BY","CASE","CAST","COLUMN","CONF","CREATE","CROSS","CUBE","CURRENT","CURRENT_DATE","CURRENT_TIMESTAMP","CURSOR","DATABASE","DELETE","DESCRIBE","DISTINCT","DROP","ELSE","END","EXCHANGE","EXISTS","EXTENDED","EXTERNAL","FALSE","FETCH","FOLLOWING","FOR","FROM","FULL","FUNCTION","GRANT","GROUP","GROUPING","HAVING","IF","IMPORT","IN","INNER","INSERT","INTERSECT","INTO","IS","JOIN","LATERAL","LEFT","LESS","LIKE","LOCAL","MACRO","MORE","NONE","NOT","NULL","OF","ON","OR","ORDER","OUT","OUTER","OVER","PARTIALSCAN","PARTITION","PERCENT","PRECEDING","PRESERVE","PROCEDURE","RANGE","READS","REDUCE","REVOKE","RIGHT","ROLLUP","ROW","ROWS","SELECT","SET","TABLE","TABLESAMPLE","THEN","TO","TRANSFORM","TRIGGER","TRUE","TRUNCATE","UNBOUNDED","UNION","UNIQUEJOIN","UPDATE","USER","USING","UTC_TMESTAMP","VALUES","WHEN","WHERE","WINDOW","WITH","COMMIT","ONLY","REGEXP","RLIKE","ROLLBACK","START","CACHE","CONSTRAINT","FOREIGN","PRIMARY","REFERENCES","DAYOFWEEK","EXTRACT","FLOOR","VIEWS","TIME","SYNC","TEXTFILE","SEQUENCEFILE","ORC","CSV","TSV","PARQUET","AVRO","RCFILE","JSONFILE","INPUTFORMAT","OUTPUTFORMAT"],Li=["ARRAY","BIGINT","BINARY","BOOLEAN","CHAR","DATE","DECIMAL","DOUBLE","FLOAT","INT","INTEGER","INTERVAL","MAP","NUMERIC","PRECISION","SMALLINT","STRUCT","TIMESTAMP","VARCHAR"],_i=u(["SELECT [ALL | DISTINCT]"]),ui=u(["WITH","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","SORT BY","CLUSTER BY","DISTRIBUTE BY","LIMIT","INSERT INTO [TABLE]","VALUES","SET","MERGE INTO","WHEN [NOT] MATCHED [THEN]","UPDATE SET","INSERT [VALUES]","INSERT OVERWRITE [LOCAL] DIRECTORY","LOAD DATA [LOCAL] INPATH","[OVERWRITE] INTO TABLE"]),gr=u(["CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS]"]),qt=u(["CREATE [MATERIALIZED] VIEW [IF NOT EXISTS]","UPDATE","DELETE FROM","DROP TABLE [IF EXISTS]","ALTER TABLE","RENAME TO","TRUNCATE [TABLE]","ALTER","CREATE","USE","DESCRIBE","DROP","FETCH","SHOW","STORED AS","STORED BY","ROW FORMAT"]),pi=u(["UNION [ALL | DISTINCT]"]),Di=u(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","LEFT SEMI JOIN"]),Pi=u(["{ROWS | RANGE} BETWEEN"]),Mi=u([]),mi={name:"hive",tokenizerOptions:{reservedSelect:_i,reservedClauses:[...ui,...gr,...qt],reservedSetOperations:pi,reservedJoins:Di,reservedKeywordPhrases:Pi,reservedDataTypePhrases:Mi,reservedKeywords:Ci,reservedDataTypes:Li,reservedFunctionNames:di,extraParens:["[]"],stringTypes:['""-bs',"''-bs"],identTypes:["``"],variableTypes:[{quote:"{}",prefixes:["$"],requirePrefix:!0}],operators:["%","~","^","|","&","<=>","==","!","||"]},formatOptions:{onelineClauses:[...gr,...qt],tabularOnelineClauses:qt}};function Bt(e){return e.map((t,r)=>{const s=e[r+1]||me;if(fe.SET(t)&&s.text==="(")return Object.assign(Object.assign({},t),{type:D.RESERVED_FUNCTION_NAME});const n=e[r-1]||me;return fe.VALUES(t)&&n.text==="="?Object.assign(Object.assign({},t),{type:D.RESERVED_FUNCTION_NAME}):t})}const fi=["ACCESSIBLE","ADD","ALL","ALTER","ANALYZE","AND","AS","ASC","ASENSITIVE","BEFORE","BETWEEN","BOTH","BY","CALL","CASCADE","CASE","CHANGE","CHECK","COLLATE","COLUMN","CONDITION","CONSTRAINT","CONTINUE","CONVERT","CREATE","CROSS","CURRENT_DATE","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DATABASES","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DECLARE","DEFAULT","DELAYED","DELETE","DELETE_DOMAIN_ID","DESC","DESCRIBE","DETERMINISTIC","DISTINCT","DISTINCTROW","DIV","DO_DOMAIN_IDS","DROP","DUAL","EACH","ELSE","ELSEIF","ENCLOSED","ESCAPED","EXCEPT","EXISTS","EXIT","EXPLAIN","FALSE","FETCH","FOR","FORCE","FOREIGN","FROM","FULLTEXT","GENERAL","GRANT","GROUP","HAVING","HIGH_PRIORITY","HOUR_MICROSECOND","HOUR_MINUTE","HOUR_SECOND","IF","IGNORE","IGNORE_DOMAIN_IDS","IGNORE_SERVER_IDS","IN","INDEX","INFILE","INNER","INOUT","INSENSITIVE","INSERT","INTERSECT","INTERVAL","INTO","IS","ITERATE","JOIN","KEY","KEYS","KILL","LEADING","LEAVE","LEFT","LIKE","LIMIT","LINEAR","LINES","LOAD","LOCALTIME","LOCALTIMESTAMP","LOCK","LOOP","LOW_PRIORITY","MASTER_HEARTBEAT_PERIOD","MASTER_SSL_VERIFY_SERVER_CERT","MATCH","MAXVALUE","MINUTE_MICROSECOND","MINUTE_SECOND","MOD","MODIFIES","NATURAL","NOT","NO_WRITE_TO_BINLOG","NULL","OFFSET","ON","OPTIMIZE","OPTION","OPTIONALLY","OR","ORDER","OUT","OUTER","OUTFILE","OVER","PAGE_CHECKSUM","PARSE_VCOL_EXPR","PARTITION","POSITION","PRIMARY","PROCEDURE","PURGE","RANGE","READ","READS","READ_WRITE","RECURSIVE","REF_SYSTEM_ID","REFERENCES","REGEXP","RELEASE","RENAME","REPEAT","REPLACE","REQUIRE","RESIGNAL","RESTRICT","RETURN","RETURNING","REVOKE","RIGHT","RLIKE","ROW_NUMBER","ROWS","SCHEMA","SCHEMAS","SECOND_MICROSECOND","SELECT","SENSITIVE","SEPARATOR","SET","SHOW","SIGNAL","SLOW","SPATIAL","SPECIFIC","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQL_BIG_RESULT","SQL_CALC_FOUND_ROWS","SQL_SMALL_RESULT","SSL","STARTING","STATS_AUTO_RECALC","STATS_PERSISTENT","STATS_SAMPLE_PAGES","STRAIGHT_JOIN","TABLE","TERMINATED","THEN","TO","TRAILING","TRIGGER","TRUE","UNDO","UNION","UNIQUE","UNLOCK","UNSIGNED","UPDATE","USAGE","USE","USING","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","VALUES","WHEN","WHERE","WHILE","WINDOW","WITH","WRITE","XOR","YEAR_MONTH","ZEROFILL"],hi=["BIGINT","BINARY","BIT","BLOB","CHAR BYTE","CHAR","CHARACTER","DATETIME","DEC","DECIMAL","DOUBLE PRECISION","DOUBLE","ENUM","FIXED","FLOAT","FLOAT4","FLOAT8","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","LONG","LONGBLOB","LONGTEXT","MEDIUMBLOB","MEDIUMINT","MEDIUMTEXT","MIDDLEINT","NATIONAL CHAR","NATIONAL VARCHAR","NUMERIC","PRECISION","REAL","SMALLINT","TEXT","TIMESTAMP","TINYBLOB","TINYINT","TINYTEXT","VARBINARY","VARCHAR","VARCHARACTER","VARYING","YEAR"],Ui=["ADDDATE","ADD_MONTHS","BIT_AND","BIT_OR","BIT_XOR","CAST","COUNT","CUME_DIST","CURDATE","CURTIME","DATE_ADD","DATE_SUB","DATE_FORMAT","DECODE","DENSE_RANK","EXTRACT","FIRST_VALUE","GROUP_CONCAT","JSON_ARRAYAGG","JSON_OBJECTAGG","LAG","LEAD","MAX","MEDIAN","MID","MIN","NOW","NTH_VALUE","NTILE","POSITION","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","RANK","ROW_NUMBER","SESSION_USER","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","SUBDATE","SUBSTR","SUBSTRING","SUM","SYSTEM_USER","TRIM","TRIM_ORACLE","VARIANCE","VAR_POP","VAR_SAMP","ABS","ACOS","ADDTIME","AES_DECRYPT","AES_ENCRYPT","ASIN","ATAN","ATAN2","BENCHMARK","BIN","BINLOG_GTID_POS","BIT_COUNT","BIT_LENGTH","CEIL","CEILING","CHARACTER_LENGTH","CHAR_LENGTH","CHR","COERCIBILITY","COLUMN_CHECK","COLUMN_EXISTS","COLUMN_LIST","COLUMN_JSON","COMPRESS","CONCAT","CONCAT_OPERATOR_ORACLE","CONCAT_WS","CONNECTION_ID","CONV","CONVERT_TZ","COS","COT","CRC32","DATEDIFF","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DEGREES","DECODE_HISTOGRAM","DECODE_ORACLE","DES_DECRYPT","DES_ENCRYPT","ELT","ENCODE","ENCRYPT","EXP","EXPORT_SET","EXTRACTVALUE","FIELD","FIND_IN_SET","FLOOR","FORMAT","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GET_LOCK","GREATEST","HEX","IFNULL","INSTR","ISNULL","IS_FREE_LOCK","IS_USED_LOCK","JSON_ARRAY","JSON_ARRAY_APPEND","JSON_ARRAY_INSERT","JSON_COMPACT","JSON_CONTAINS","JSON_CONTAINS_PATH","JSON_DEPTH","JSON_DETAILED","JSON_EXISTS","JSON_EXTRACT","JSON_INSERT","JSON_KEYS","JSON_LENGTH","JSON_LOOSE","JSON_MERGE","JSON_MERGE_PATCH","JSON_MERGE_PRESERVE","JSON_QUERY","JSON_QUOTE","JSON_OBJECT","JSON_REMOVE","JSON_REPLACE","JSON_SET","JSON_SEARCH","JSON_TYPE","JSON_UNQUOTE","JSON_VALID","JSON_VALUE","LAST_DAY","LAST_INSERT_ID","LCASE","LEAST","LENGTH","LENGTHB","LN","LOAD_FILE","LOCATE","LOG","LOG10","LOG2","LOWER","LPAD","LPAD_ORACLE","LTRIM","LTRIM_ORACLE","MAKEDATE","MAKETIME","MAKE_SET","MASTER_GTID_WAIT","MASTER_POS_WAIT","MD5","MONTHNAME","NAME_CONST","NVL","NVL2","OCT","OCTET_LENGTH","ORD","PERIOD_ADD","PERIOD_DIFF","PI","POW","POWER","QUOTE","REGEXP_INSTR","REGEXP_REPLACE","REGEXP_SUBSTR","RADIANS","RAND","RELEASE_ALL_LOCKS","RELEASE_LOCK","REPLACE_ORACLE","REVERSE","ROUND","RPAD","RPAD_ORACLE","RTRIM","RTRIM_ORACLE","SEC_TO_TIME","SHA","SHA1","SHA2","SIGN","SIN","SLEEP","SOUNDEX","SPACE","SQRT","STRCMP","STR_TO_DATE","SUBSTR_ORACLE","SUBSTRING_INDEX","SUBTIME","SYS_GUID","TAN","TIMEDIFF","TIME_FORMAT","TIME_TO_SEC","TO_BASE64","TO_CHAR","TO_DAYS","TO_SECONDS","UCASE","UNCOMPRESS","UNCOMPRESSED_LENGTH","UNHEX","UNIX_TIMESTAMP","UPDATEXML","UPPER","UUID","UUID_SHORT","VERSION","WEEKDAY","WEEKOFYEAR","WSREP_LAST_WRITTEN_GTID","WSREP_LAST_SEEN_GTID","WSREP_SYNC_WAIT_UPTO_GTID","YEARWEEK","COALESCE","NULLIF"],xi=u(["SELECT [ALL | DISTINCT | DISTINCTROW]"]),gi=u(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER BY","LIMIT","OFFSET","FETCH {FIRST | NEXT}","INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO]","REPLACE [LOW_PRIORITY | DELAYED] [INTO]","VALUES","ON DUPLICATE KEY UPDATE","SET","RETURNING"]),yr=u(["CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS]"]),Jt=u(["CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS]","UPDATE [LOW_PRIORITY] [IGNORE]","DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM","DROP [TEMPORARY] TABLE [IF EXISTS]","ALTER [ONLINE] [IGNORE] TABLE [IF EXISTS]","ADD [COLUMN] [IF NOT EXISTS]","{CHANGE | MODIFY} [COLUMN] [IF EXISTS]","DROP [COLUMN] [IF EXISTS]","RENAME [TO]","RENAME COLUMN","ALTER [COLUMN]","{SET | DROP} DEFAULT","SET {VISIBLE | INVISIBLE}","TRUNCATE [TABLE]","ALTER DATABASE","ALTER DATABASE COMMENT","ALTER EVENT","ALTER FUNCTION","ALTER PROCEDURE","ALTER SCHEMA","ALTER SCHEMA COMMENT","ALTER SEQUENCE","ALTER SERVER","ALTER USER","ALTER VIEW","ANALYZE","ANALYZE TABLE","BACKUP LOCK","BACKUP STAGE","BACKUP UNLOCK","BEGIN","BINLOG","CACHE INDEX","CALL","CHANGE MASTER TO","CHECK TABLE","CHECK VIEW","CHECKSUM TABLE","COMMIT","CREATE AGGREGATE FUNCTION","CREATE DATABASE","CREATE EVENT","CREATE FUNCTION","CREATE INDEX","CREATE PROCEDURE","CREATE ROLE","CREATE SEQUENCE","CREATE SERVER","CREATE SPATIAL INDEX","CREATE TRIGGER","CREATE UNIQUE INDEX","CREATE USER","DEALLOCATE PREPARE","DESCRIBE","DROP DATABASE","DROP EVENT","DROP FUNCTION","DROP INDEX","DROP PREPARE","DROP PROCEDURE","DROP ROLE","DROP SEQUENCE","DROP SERVER","DROP TRIGGER","DROP USER","DROP VIEW","EXECUTE","EXPLAIN","FLUSH","GET DIAGNOSTICS","GET DIAGNOSTICS CONDITION","GRANT","HANDLER","HELP","INSTALL PLUGIN","INSTALL SONAME","KILL","LOAD DATA INFILE","LOAD INDEX INTO CACHE","LOAD XML INFILE","LOCK TABLE","OPTIMIZE TABLE","PREPARE","PURGE BINARY LOGS","PURGE MASTER LOGS","RELEASE SAVEPOINT","RENAME TABLE","RENAME USER","REPAIR TABLE","REPAIR VIEW","RESET MASTER","RESET QUERY CACHE","RESET REPLICA","RESET SLAVE","RESIGNAL","REVOKE","ROLLBACK","SAVEPOINT","SET CHARACTER SET","SET DEFAULT ROLE","SET GLOBAL TRANSACTION","SET NAMES","SET PASSWORD","SET ROLE","SET STATEMENT","SET TRANSACTION","SHOW","SHOW ALL REPLICAS STATUS","SHOW ALL SLAVES STATUS","SHOW AUTHORS","SHOW BINARY LOGS","SHOW BINLOG EVENTS","SHOW BINLOG STATUS","SHOW CHARACTER SET","SHOW CLIENT_STATISTICS","SHOW COLLATION","SHOW COLUMNS","SHOW CONTRIBUTORS","SHOW CREATE DATABASE","SHOW CREATE EVENT","SHOW CREATE FUNCTION","SHOW CREATE PACKAGE","SHOW CREATE PACKAGE BODY","SHOW CREATE PROCEDURE","SHOW CREATE SEQUENCE","SHOW CREATE TABLE","SHOW CREATE TRIGGER","SHOW CREATE USER","SHOW CREATE VIEW","SHOW DATABASES","SHOW ENGINE","SHOW ENGINE INNODB STATUS","SHOW ENGINES","SHOW ERRORS","SHOW EVENTS","SHOW EXPLAIN","SHOW FUNCTION CODE","SHOW FUNCTION STATUS","SHOW GRANTS","SHOW INDEX","SHOW INDEXES","SHOW INDEX_STATISTICS","SHOW KEYS","SHOW LOCALES","SHOW MASTER LOGS","SHOW MASTER STATUS","SHOW OPEN TABLES","SHOW PACKAGE BODY CODE","SHOW PACKAGE BODY STATUS","SHOW PACKAGE STATUS","SHOW PLUGINS","SHOW PLUGINS SONAME","SHOW PRIVILEGES","SHOW PROCEDURE CODE","SHOW PROCEDURE STATUS","SHOW PROCESSLIST","SHOW PROFILE","SHOW PROFILES","SHOW QUERY_RESPONSE_TIME","SHOW RELAYLOG EVENTS","SHOW REPLICA","SHOW REPLICA HOSTS","SHOW REPLICA STATUS","SHOW SCHEMAS","SHOW SLAVE","SHOW SLAVE HOSTS","SHOW SLAVE STATUS","SHOW STATUS","SHOW STORAGE ENGINES","SHOW TABLE STATUS","SHOW TABLES","SHOW TRIGGERS","SHOW USER_STATISTICS","SHOW VARIABLES","SHOW WARNINGS","SHOW WSREP_MEMBERSHIP","SHOW WSREP_STATUS","SHUTDOWN","SIGNAL","START ALL REPLICAS","START ALL SLAVES","START REPLICA","START SLAVE","START TRANSACTION","STOP ALL REPLICAS","STOP ALL SLAVES","STOP REPLICA","STOP SLAVE","UNINSTALL PLUGIN","UNINSTALL SONAME","UNLOCK TABLE","USE","XA BEGIN","XA COMMIT","XA END","XA PREPARE","XA RECOVER","XA ROLLBACK","XA START"]),yi=u(["UNION [ALL | DISTINCT]","EXCEPT [ALL | DISTINCT]","INTERSECT [ALL | DISTINCT]","MINUS [ALL | DISTINCT]"]),Gi=u(["JOIN","{LEFT | RIGHT} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL JOIN","NATURAL {LEFT | RIGHT} [OUTER] JOIN","STRAIGHT_JOIN"]),Bi=u(["ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]","CHARACTER SET","{ROWS | RANGE} BETWEEN","IDENTIFIED BY"]),Hi=u([]),bi={name:"mariadb",tokenizerOptions:{reservedSelect:xi,reservedClauses:[...gi,...yr,...Jt],reservedSetOperations:yi,reservedJoins:Gi,reservedKeywordPhrases:Bi,reservedDataTypePhrases:Hi,supportsXor:!0,reservedKeywords:fi,reservedDataTypes:hi,reservedFunctionNames:Ui,stringTypes:['""-qq-bs',"''-qq-bs",{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:["``"],identChars:{first:"$",rest:"$",allowFirstCharNumber:!0},variableTypes:[{regex:"@@?[A-Za-z0-9_.$]+"},{quote:'""-qq-bs',prefixes:["@"],requirePrefix:!0},{quote:"''-qq-bs",prefixes:["@"],requirePrefix:!0},{quote:"``",prefixes:["@"],requirePrefix:!0}],paramTypes:{positional:!0},lineCommentTypes:["--","#"],operators:["%",":=","&","|","^","~","<<",">>","<=>","&&","||","!","*.*"],postProcess:Bt},formatOptions:{onelineClauses:[...yr,...Jt],tabularOnelineClauses:Jt}},Fi=["ACCESSIBLE","ADD","ALL","ALTER","ANALYZE","AND","AS","ASC","ASENSITIVE","BEFORE","BETWEEN","BOTH","BY","CALL","CASCADE","CASE","CHANGE","CHECK","COLLATE","COLUMN","CONDITION","CONSTRAINT","CONTINUE","CONVERT","CREATE","CROSS","CUBE","CUME_DIST","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DATABASES","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DECLARE","DEFAULT","DELAYED","DELETE","DENSE_RANK","DESC","DESCRIBE","DETERMINISTIC","DISTINCT","DISTINCTROW","DIV","DROP","DUAL","EACH","ELSE","ELSEIF","EMPTY","ENCLOSED","ESCAPED","EXCEPT","EXISTS","EXIT","EXPLAIN","FALSE","FETCH","FIRST_VALUE","FOR","FORCE","FOREIGN","FROM","FULLTEXT","FUNCTION","GENERATED","GET","GRANT","GROUP","GROUPING","GROUPS","HAVING","HIGH_PRIORITY","HOUR_MICROSECOND","HOUR_MINUTE","HOUR_SECOND","IF","IGNORE","IN","INDEX","INFILE","INNER","INOUT","INSENSITIVE","INSERT","IN","INTERSECT","INTERVAL","INTO","IO_AFTER_GTIDS","IO_BEFORE_GTIDS","IS","ITERATE","JOIN","JSON_TABLE","KEY","KEYS","KILL","LAG","LAST_VALUE","LATERAL","LEAD","LEADING","LEAVE","LEFT","LIKE","LIMIT","LINEAR","LINES","LOAD","LOCALTIME","LOCALTIMESTAMP","LOCK","LONG","LOOP","LOW_PRIORITY","MASTER_BIND","MASTER_SSL_VERIFY_SERVER_CERT","MATCH","MAXVALUE","MINUTE_MICROSECOND","MINUTE_SECOND","MOD","MODIFIES","NATURAL","NOT","NO_WRITE_TO_BINLOG","NTH_VALUE","NTILE","NULL","OF","ON","OPTIMIZE","OPTIMIZER_COSTS","OPTION","OPTIONALLY","OR","ORDER","OUT","OUTER","OUTFILE","OVER","PARTITION","PERCENT_RANK","PRIMARY","PROCEDURE","PURGE","RANGE","RANK","READ","READS","READ_WRITE","RECURSIVE","REFERENCES","REGEXP","RELEASE","RENAME","REPEAT","REPLACE","REQUIRE","RESIGNAL","RESTRICT","RETURN","REVOKE","RIGHT","RLIKE","ROW","ROWS","ROW_NUMBER","SCHEMA","SCHEMAS","SECOND_MICROSECOND","SELECT","SENSITIVE","SEPARATOR","SET","SHOW","SIGNAL","SPATIAL","SPECIFIC","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQL_BIG_RESULT","SQL_CALC_FOUND_ROWS","SQL_SMALL_RESULT","SSL","STARTING","STORED","STRAIGHT_JOIN","SYSTEM","TABLE","TERMINATED","THEN","TO","TRAILING","TRIGGER","TRUE","UNDO","UNION","UNIQUE","UNLOCK","UNSIGNED","UPDATE","USAGE","USE","USING","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","VALUES","VIRTUAL","WHEN","WHERE","WHILE","WINDOW","WITH","WRITE","XOR","YEAR_MONTH","ZEROFILL"],Yi=["BIGINT","BINARY","BIT","BLOB","BOOL","BOOLEAN","CHAR","CHARACTER","DATE","DATETIME","DEC","DECIMAL","DOUBLE PRECISION","DOUBLE","ENUM","FIXED","FLOAT","FLOAT4","FLOAT8","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","LONGBLOB","LONGTEXT","MEDIUMBLOB","MEDIUMINT","MEDIUMTEXT","MIDDLEINT","NATIONAL CHAR","NATIONAL VARCHAR","NUMERIC","PRECISION","REAL","SMALLINT","TEXT","TIME","TIMESTAMP","TINYBLOB","TINYINT","TINYTEXT","VARBINARY","VARCHAR","VARCHARACTER","VARYING","YEAR"],vi=["ABS","ACOS","ADDDATE","ADDTIME","AES_DECRYPT","AES_ENCRYPT","ANY_VALUE","ASCII","ASIN","ATAN","ATAN2","AVG","BENCHMARK","BIN","BIN_TO_UUID","BINARY","BIT_AND","BIT_COUNT","BIT_LENGTH","BIT_OR","BIT_XOR","CAN_ACCESS_COLUMN","CAN_ACCESS_DATABASE","CAN_ACCESS_TABLE","CAN_ACCESS_USER","CAN_ACCESS_VIEW","CAST","CEIL","CEILING","CHAR","CHAR_LENGTH","CHARACTER_LENGTH","CHARSET","COALESCE","COERCIBILITY","COLLATION","COMPRESS","CONCAT","CONCAT_WS","CONNECTION_ID","CONV","CONVERT","CONVERT_TZ","COS","COT","COUNT","CRC32","CUME_DIST","CURDATE","CURRENT_DATE","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURTIME","DATABASE","DATE","DATE_ADD","DATE_FORMAT","DATE_SUB","DATEDIFF","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DEFAULT","DEGREES","DENSE_RANK","DIV","ELT","EXP","EXPORT_SET","EXTRACT","EXTRACTVALUE","FIELD","FIND_IN_SET","FIRST_VALUE","FLOOR","FORMAT","FORMAT_BYTES","FORMAT_PICO_TIME","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GEOMCOLLECTION","GEOMETRYCOLLECTION","GET_DD_COLUMN_PRIVILEGES","GET_DD_CREATE_OPTIONS","GET_DD_INDEX_SUB_PART_LENGTH","GET_FORMAT","GET_LOCK","GREATEST","GROUP_CONCAT","GROUPING","GTID_SUBSET","GTID_SUBTRACT","HEX","HOUR","ICU_VERSION","IF","IFNULL","INET_ATON","INET_NTOA","INET6_ATON","INET6_NTOA","INSERT","INSTR","INTERNAL_AUTO_INCREMENT","INTERNAL_AVG_ROW_LENGTH","INTERNAL_CHECK_TIME","INTERNAL_CHECKSUM","INTERNAL_DATA_FREE","INTERNAL_DATA_LENGTH","INTERNAL_DD_CHAR_LENGTH","INTERNAL_GET_COMMENT_OR_ERROR","INTERNAL_GET_ENABLED_ROLE_JSON","INTERNAL_GET_HOSTNAME","INTERNAL_GET_USERNAME","INTERNAL_GET_VIEW_WARNING_OR_ERROR","INTERNAL_INDEX_COLUMN_CARDINALITY","INTERNAL_INDEX_LENGTH","INTERNAL_IS_ENABLED_ROLE","INTERNAL_IS_MANDATORY_ROLE","INTERNAL_KEYS_DISABLED","INTERNAL_MAX_DATA_LENGTH","INTERNAL_TABLE_ROWS","INTERNAL_UPDATE_TIME","INTERVAL","IS","IS_FREE_LOCK","IS_IPV4","IS_IPV4_COMPAT","IS_IPV4_MAPPED","IS_IPV6","IS NOT","IS NOT NULL","IS NULL","IS_USED_LOCK","IS_UUID","ISNULL","JSON_ARRAY","JSON_ARRAY_APPEND","JSON_ARRAY_INSERT","JSON_ARRAYAGG","JSON_CONTAINS","JSON_CONTAINS_PATH","JSON_DEPTH","JSON_EXTRACT","JSON_INSERT","JSON_KEYS","JSON_LENGTH","JSON_MERGE","JSON_MERGE_PATCH","JSON_MERGE_PRESERVE","JSON_OBJECT","JSON_OBJECTAGG","JSON_OVERLAPS","JSON_PRETTY","JSON_QUOTE","JSON_REMOVE","JSON_REPLACE","JSON_SCHEMA_VALID","JSON_SCHEMA_VALIDATION_REPORT","JSON_SEARCH","JSON_SET","JSON_STORAGE_FREE","JSON_STORAGE_SIZE","JSON_TABLE","JSON_TYPE","JSON_UNQUOTE","JSON_VALID","JSON_VALUE","LAG","LAST_DAY","LAST_INSERT_ID","LAST_VALUE","LCASE","LEAD","LEAST","LEFT","LENGTH","LIKE","LINESTRING","LN","LOAD_FILE","LOCALTIME","LOCALTIMESTAMP","LOCATE","LOG","LOG10","LOG2","LOWER","LPAD","LTRIM","MAKE_SET","MAKEDATE","MAKETIME","MASTER_POS_WAIT","MATCH","MAX","MBRCONTAINS","MBRCOVEREDBY","MBRCOVERS","MBRDISJOINT","MBREQUALS","MBRINTERSECTS","MBROVERLAPS","MBRTOUCHES","MBRWITHIN","MD5","MICROSECOND","MID","MIN","MINUTE","MOD","MONTH","MONTHNAME","MULTILINESTRING","MULTIPOINT","MULTIPOLYGON","NAME_CONST","NOW","NTH_VALUE","NTILE","NULLIF","OCT","OCTET_LENGTH","ORD","PERCENT_RANK","PERIOD_ADD","PERIOD_DIFF","PI","POINT","POLYGON","POSITION","POW","POWER","PS_CURRENT_THREAD_ID","PS_THREAD_ID","QUARTER","QUOTE","RADIANS","RAND","RANDOM_BYTES","RANK","REGEXP","REGEXP_INSTR","REGEXP_LIKE","REGEXP_REPLACE","REGEXP_SUBSTR","RELEASE_ALL_LOCKS","RELEASE_LOCK","REPEAT","REPLACE","REVERSE","RIGHT","RLIKE","ROLES_GRAPHML","ROUND","ROW_COUNT","ROW_NUMBER","RPAD","RTRIM","SCHEMA","SEC_TO_TIME","SECOND","SESSION_USER","SHA1","SHA2","SIGN","SIN","SLEEP","SOUNDEX","SOUNDS LIKE","SOURCE_POS_WAIT","SPACE","SQRT","ST_AREA","ST_ASBINARY","ST_ASGEOJSON","ST_ASTEXT","ST_BUFFER","ST_BUFFER_STRATEGY","ST_CENTROID","ST_COLLECT","ST_CONTAINS","ST_CONVEXHULL","ST_CROSSES","ST_DIFFERENCE","ST_DIMENSION","ST_DISJOINT","ST_DISTANCE","ST_DISTANCE_SPHERE","ST_ENDPOINT","ST_ENVELOPE","ST_EQUALS","ST_EXTERIORRING","ST_FRECHETDISTANCE","ST_GEOHASH","ST_GEOMCOLLFROMTEXT","ST_GEOMCOLLFROMWKB","ST_GEOMETRYN","ST_GEOMETRYTYPE","ST_GEOMFROMGEOJSON","ST_GEOMFROMTEXT","ST_GEOMFROMWKB","ST_HAUSDORFFDISTANCE","ST_INTERIORRINGN","ST_INTERSECTION","ST_INTERSECTS","ST_ISCLOSED","ST_ISEMPTY","ST_ISSIMPLE","ST_ISVALID","ST_LATFROMGEOHASH","ST_LATITUDE","ST_LENGTH","ST_LINEFROMTEXT","ST_LINEFROMWKB","ST_LINEINTERPOLATEPOINT","ST_LINEINTERPOLATEPOINTS","ST_LONGFROMGEOHASH","ST_LONGITUDE","ST_MAKEENVELOPE","ST_MLINEFROMTEXT","ST_MLINEFROMWKB","ST_MPOINTFROMTEXT","ST_MPOINTFROMWKB","ST_MPOLYFROMTEXT","ST_MPOLYFROMWKB","ST_NUMGEOMETRIES","ST_NUMINTERIORRING","ST_NUMPOINTS","ST_OVERLAPS","ST_POINTATDISTANCE","ST_POINTFROMGEOHASH","ST_POINTFROMTEXT","ST_POINTFROMWKB","ST_POINTN","ST_POLYFROMTEXT","ST_POLYFROMWKB","ST_SIMPLIFY","ST_SRID","ST_STARTPOINT","ST_SWAPXY","ST_SYMDIFFERENCE","ST_TOUCHES","ST_TRANSFORM","ST_UNION","ST_VALIDATE","ST_WITHIN","ST_X","ST_Y","STATEMENT_DIGEST","STATEMENT_DIGEST_TEXT","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","STR_TO_DATE","STRCMP","SUBDATE","SUBSTR","SUBSTRING","SUBSTRING_INDEX","SUBTIME","SUM","SYSDATE","SYSTEM_USER","TAN","TIME","TIME_FORMAT","TIME_TO_SEC","TIMEDIFF","TIMESTAMP","TIMESTAMPADD","TIMESTAMPDIFF","TO_BASE64","TO_DAYS","TO_SECONDS","TRIM","TRUNCATE","UCASE","UNCOMPRESS","UNCOMPRESSED_LENGTH","UNHEX","UNIX_TIMESTAMP","UPDATEXML","UPPER","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","UUID","UUID_SHORT","UUID_TO_BIN","VALIDATE_PASSWORD_STRENGTH","VALUES","VAR_POP","VAR_SAMP","VARIANCE","VERSION","WAIT_FOR_EXECUTED_GTID_SET","WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS","WEEK","WEEKDAY","WEEKOFYEAR","WEIGHT_STRING","YEAR","YEARWEEK"],Vi=u(["SELECT [ALL | DISTINCT | DISTINCTROW]"]),Wi=u(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO]","REPLACE [LOW_PRIORITY | DELAYED] [INTO]","VALUES","ON DUPLICATE KEY UPDATE","SET"]),Gr=u(["CREATE [TEMPORARY] TABLE [IF NOT EXISTS]"]),Qt=u(["CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS]","UPDATE [LOW_PRIORITY] [IGNORE]","DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM","DROP [TEMPORARY] TABLE [IF EXISTS]","ALTER TABLE","ADD [COLUMN]","{CHANGE | MODIFY} [COLUMN]","DROP [COLUMN]","RENAME [TO | AS]","RENAME COLUMN","ALTER [COLUMN]","{SET | DROP} DEFAULT","TRUNCATE [TABLE]","ALTER DATABASE","ALTER EVENT","ALTER FUNCTION","ALTER INSTANCE","ALTER LOGFILE GROUP","ALTER PROCEDURE","ALTER RESOURCE GROUP","ALTER SERVER","ALTER TABLESPACE","ALTER USER","ALTER VIEW","ANALYZE TABLE","BINLOG","CACHE INDEX","CALL","CHANGE MASTER TO","CHANGE REPLICATION FILTER","CHANGE REPLICATION SOURCE TO","CHECK TABLE","CHECKSUM TABLE","CLONE","COMMIT","CREATE DATABASE","CREATE EVENT","CREATE FUNCTION","CREATE FUNCTION","CREATE INDEX","CREATE LOGFILE GROUP","CREATE PROCEDURE","CREATE RESOURCE GROUP","CREATE ROLE","CREATE SERVER","CREATE SPATIAL REFERENCE SYSTEM","CREATE TABLESPACE","CREATE TRIGGER","CREATE USER","DEALLOCATE PREPARE","DESCRIBE","DROP DATABASE","DROP EVENT","DROP FUNCTION","DROP FUNCTION","DROP INDEX","DROP LOGFILE GROUP","DROP PROCEDURE","DROP RESOURCE GROUP","DROP ROLE","DROP SERVER","DROP SPATIAL REFERENCE SYSTEM","DROP TABLESPACE","DROP TRIGGER","DROP USER","DROP VIEW","EXECUTE","EXPLAIN","FLUSH","GRANT","HANDLER","HELP","IMPORT TABLE","INSTALL COMPONENT","INSTALL PLUGIN","KILL","LOAD DATA","LOAD INDEX INTO CACHE","LOAD XML","LOCK INSTANCE FOR BACKUP","LOCK TABLES","MASTER_POS_WAIT","OPTIMIZE TABLE","PREPARE","PURGE BINARY LOGS","RELEASE SAVEPOINT","RENAME TABLE","RENAME USER","REPAIR TABLE","RESET","RESET MASTER","RESET PERSIST","RESET REPLICA","RESET SLAVE","RESTART","REVOKE","ROLLBACK","ROLLBACK TO SAVEPOINT","SAVEPOINT","SET CHARACTER SET","SET DEFAULT ROLE","SET NAMES","SET PASSWORD","SET RESOURCE GROUP","SET ROLE","SET TRANSACTION","SHOW","SHOW BINARY LOGS","SHOW BINLOG EVENTS","SHOW CHARACTER SET","SHOW COLLATION","SHOW COLUMNS","SHOW CREATE DATABASE","SHOW CREATE EVENT","SHOW CREATE FUNCTION","SHOW CREATE PROCEDURE","SHOW CREATE TABLE","SHOW CREATE TRIGGER","SHOW CREATE USER","SHOW CREATE VIEW","SHOW DATABASES","SHOW ENGINE","SHOW ENGINES","SHOW ERRORS","SHOW EVENTS","SHOW FUNCTION CODE","SHOW FUNCTION STATUS","SHOW GRANTS","SHOW INDEX","SHOW MASTER STATUS","SHOW OPEN TABLES","SHOW PLUGINS","SHOW PRIVILEGES","SHOW PROCEDURE CODE","SHOW PROCEDURE STATUS","SHOW PROCESSLIST","SHOW PROFILE","SHOW PROFILES","SHOW RELAYLOG EVENTS","SHOW REPLICA STATUS","SHOW REPLICAS","SHOW SLAVE","SHOW SLAVE HOSTS","SHOW STATUS","SHOW TABLE STATUS","SHOW TABLES","SHOW TRIGGERS","SHOW VARIABLES","SHOW WARNINGS","SHUTDOWN","SOURCE_POS_WAIT","START GROUP_REPLICATION","START REPLICA","START SLAVE","START TRANSACTION","STOP GROUP_REPLICATION","STOP REPLICA","STOP SLAVE","TABLE","UNINSTALL COMPONENT","UNINSTALL PLUGIN","UNLOCK INSTANCE","UNLOCK TABLES","USE","XA","ITERATE","LEAVE","LOOP","REPEAT","RETURN","WHILE"]),wi=u(["UNION [ALL | DISTINCT]"]),Xi=u(["JOIN","{LEFT | RIGHT} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT} [OUTER] JOIN","STRAIGHT_JOIN"]),ji=u(["ON {UPDATE | DELETE} [SET NULL]","CHARACTER SET","{ROWS | RANGE} BETWEEN","IDENTIFIED BY"]),$i=u([]),ki={name:"mysql",tokenizerOptions:{reservedSelect:Vi,reservedClauses:[...Wi,...Gr,...Qt],reservedSetOperations:wi,reservedJoins:Xi,reservedKeywordPhrases:ji,reservedDataTypePhrases:$i,supportsXor:!0,reservedKeywords:Fi,reservedDataTypes:Yi,reservedFunctionNames:vi,stringTypes:['""-qq-bs',{quote:"''-qq-bs",prefixes:["N"]},{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:["``"],identChars:{first:"$",rest:"$",allowFirstCharNumber:!0},variableTypes:[{regex:"@@?[A-Za-z0-9_.$]+"},{quote:'""-qq-bs',prefixes:["@"],requirePrefix:!0},{quote:"''-qq-bs",prefixes:["@"],requirePrefix:!0},{quote:"``",prefixes:["@"],requirePrefix:!0}],paramTypes:{positional:!0},lineCommentTypes:["--","#"],operators:["%",":=","&","|","^","~","<<",">>","<=>","->","->>","&&","||","!","*.*"],postProcess:Bt},formatOptions:{onelineClauses:[...Gr,...Qt],tabularOnelineClauses:Qt}},Ki=["ADD","ALL","ALTER","ANALYZE","AND","ARRAY","AS","ASC","BETWEEN","BOTH","BY","CALL","CASCADE","CASE","CHANGE","CHECK","COLLATE","COLUMN","CONSTRAINT","CONTINUE","CONVERT","CREATE","CROSS","CURRENT_DATE","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DATABASES","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DEFAULT","DELAYED","DELETE","DESC","DESCRIBE","DISTINCT","DISTINCTROW","DIV","DOUBLE","DROP","DUAL","ELSE","ELSEIF","ENCLOSED","ESCAPED","EXCEPT","EXISTS","EXIT","EXPLAIN","FALSE","FETCH","FOR","FORCE","FOREIGN","FROM","FULLTEXT","GENERATED","GRANT","GROUP","GROUPS","HAVING","HIGH_PRIORITY","HOUR_MICROSECOND","HOUR_MINUTE","HOUR_SECOND","IF","IGNORE","ILIKE","IN","INDEX","INFILE","INNER","INOUT","INSERT","INTERSECT","INTERVAL","INTO","IS","ITERATE","JOIN","KEY","KEYS","KILL","LEADING","LEAVE","LEFT","LIKE","LIMIT","LINEAR","LINES","LOAD","LOCALTIME","LOCALTIMESTAMP","LOCK","LONG","LOW_PRIORITY","MATCH","MAXVALUE","MINUTE_MICROSECOND","MINUTE_SECOND","MOD","NATURAL","NOT","NO_WRITE_TO_BINLOG","NULL","OF","ON","OPTIMIZE","OPTION","OPTIONALLY","OR","ORDER","OUT","OUTER","OUTFILE","OVER","PARTITION","PRIMARY","PROCEDURE","RANGE","READ","RECURSIVE","REFERENCES","REGEXP","RELEASE","RENAME","REPEAT","REPLACE","REQUIRE","RESTRICT","REVOKE","RIGHT","RLIKE","ROW","ROWS","SECOND_MICROSECOND","SELECT","SET","SHOW","SPATIAL","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQL_BIG_RESULT","SQL_CALC_FOUND_ROWS","SQL_SMALL_RESULT","SSL","STARTING","STATS_EXTENDED","STORED","STRAIGHT_JOIN","TABLE","TABLESAMPLE","TERMINATED","THEN","TO","TRAILING","TRIGGER","TRUE","TiDB_CURRENT_TSO","UNION","UNIQUE","UNLOCK","UNSIGNED","UNTIL","UPDATE","USAGE","USE","USING","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","VALUES","VIRTUAL","WHEN","WHERE","WHILE","WINDOW","WITH","WRITE","XOR","YEAR_MONTH","ZEROFILL"],qi=["BIGINT","BINARY","BIT","BLOB","BOOL","BOOLEAN","CHAR","CHARACTER","DATE","DATETIME","DEC","DECIMAL","DOUBLE PRECISION","DOUBLE","ENUM","FIXED","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","LONGBLOB","LONGTEXT","MEDIUMBLOB","MEDIUMINT","MIDDLEINT","NATIONAL CHAR","NATIONAL VARCHAR","NUMERIC","PRECISION","SMALLINT","TEXT","TIME","TIMESTAMP","TINYBLOB","TINYINT","TINYTEXT","VARBINARY","VARCHAR","VARCHARACTER","VARYING","YEAR"],Ji=["ABS","ACOS","ADDDATE","ADDTIME","AES_DECRYPT","AES_ENCRYPT","ANY_VALUE","ASCII","ASIN","ATAN","ATAN2","AVG","BENCHMARK","BIN","BIN_TO_UUID","BIT_AND","BIT_COUNT","BIT_LENGTH","BIT_OR","BIT_XOR","BITAND","BITNEG","BITOR","BITXOR","CASE","CAST","CEIL","CEILING","CHAR_FUNC","CHAR_LENGTH","CHARACTER_LENGTH","CHARSET","COALESCE","COERCIBILITY","COLLATION","COMPRESS","CONCAT","CONCAT_WS","CONNECTION_ID","CONV","CONVERT","CONVERT_TZ","COS","COT","COUNT","CRC32","CUME_DIST","CURDATE","CURRENT_DATE","CURRENT_RESOURCE_GROUP","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURTIME","DATABASE","DATE","DATE_ADD","DATE_FORMAT","DATE_SUB","DATEDIFF","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DECODE","DEFAULT_FUNC","DEGREES","DENSE_RANK","DES_DECRYPT","DES_ENCRYPT","DIV","ELT","ENCODE","ENCRYPT","EQ","EXP","EXPORT_SET","EXTRACT","FIELD","FIND_IN_SET","FIRST_VALUE","FLOOR","FORMAT","FORMAT_BYTES","FORMAT_NANO_TIME","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GE","GET_FORMAT","GET_LOCK","GETPARAM","GREATEST","GROUP_CONCAT","GROUPING","GT","HEX","HOUR","IF","IFNULL","ILIKE","INET6_ATON","INET6_NTOA","INET_ATON","INET_NTOA","INSERT_FUNC","INSTR","INTDIV","INTERVAL","IS_FREE_LOCK","IS_IPV4","IS_IPV4_COMPAT","IS_IPV4_MAPPED","IS_IPV6","IS_USED_LOCK","IS_UUID","ISFALSE","ISNULL","ISTRUE","JSON_ARRAY","JSON_ARRAYAGG","JSON_ARRAY_APPEND","JSON_ARRAY_INSERT","JSON_CONTAINS","JSON_CONTAINS_PATH","JSON_DEPTH","JSON_EXTRACT","JSON_INSERT","JSON_KEYS","JSON_LENGTH","JSON_MEMBEROF","JSON_MERGE","JSON_MERGE_PATCH","JSON_MERGE_PRESERVE","JSON_OBJECT","JSON_OBJECTAGG","JSON_OVERLAPS","JSON_PRETTY","JSON_QUOTE","JSON_REMOVE","JSON_REPLACE","JSON_SEARCH","JSON_SET","JSON_STORAGE_FREE","JSON_STORAGE_SIZE","JSON_TYPE","JSON_UNQUOTE","JSON_VALID","LAG","LAST_DAY","LAST_INSERT_ID","LAST_VALUE","LASTVAL","LCASE","LE","LEAD","LEAST","LEFT","LEFTSHIFT","LENGTH","LIKE","LN","LOAD_FILE","LOCALTIME","LOCALTIMESTAMP","LOCATE","LOG","LOG10","LOG2","LOWER","LPAD","LT","LTRIM","MAKE_SET","MAKEDATE","MAKETIME","MASTER_POS_WAIT","MAX","MD5","MICROSECOND","MID","MIN","MINUS","MINUTE","MOD","MONTH","MONTHNAME","MUL","NAME_CONST","NE","NEXTVAL","NOT","NOW","NTH_VALUE","NTILE","NULLEQ","OCT","OCTET_LENGTH","OLD_PASSWORD","ORD","PASSWORD_FUNC","PERCENT_RANK","PERIOD_ADD","PERIOD_DIFF","PI","PLUS","POSITION","POW","POWER","QUARTER","QUOTE","RADIANS","RAND","RANDOM_BYTES","RANK","REGEXP","REGEXP_INSTR","REGEXP_LIKE","REGEXP_REPLACE","REGEXP_SUBSTR","RELEASE_ALL_LOCKS","RELEASE_LOCK","REPEAT","REPLACE","REVERSE","RIGHT","RIGHTSHIFT","ROUND","ROW_COUNT","ROW_NUMBER","RPAD","RTRIM","SCHEMA","SEC_TO_TIME","SECOND","SESSION_USER","SETVAL","SETVAR","SHA","SHA1","SHA2","SIGN","SIN","SLEEP","SM3","SPACE","SQRT","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","STR_TO_DATE","STRCMP","SUBDATE","SUBSTR","SUBSTRING","SUBSTRING_INDEX","SUBTIME","SUM","SYSDATE","SYSTEM_USER","TAN","TIDB_BOUNDED_STALENESS","TIDB_CURRENT_TSO","TIDB_DECODE_BINARY_PLAN","TIDB_DECODE_KEY","TIDB_DECODE_PLAN","TIDB_DECODE_SQL_DIGESTS","TIDB_ENCODE_SQL_DIGEST","TIDB_IS_DDL_OWNER","TIDB_PARSE_TSO","TIDB_PARSE_TSO_LOGICAL","TIDB_ROW_CHECKSUM","TIDB_SHARD","TIDB_VERSION","TIME","TIME_FORMAT","TIME_TO_SEC","TIMEDIFF","TIMESTAMP","TIMESTAMPADD","TIMESTAMPDIFF","TO_BASE64","TO_DAYS","TO_SECONDS","TRANSLATE","TRIM","TRUNCATE","UCASE","UNARYMINUS","UNCOMPRESS","UNCOMPRESSED_LENGTH","UNHEX","UNIX_TIMESTAMP","UPPER","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","UUID","UUID_SHORT","UUID_TO_BIN","VALIDATE_PASSWORD_STRENGTH","VAR_POP","VAR_SAMP","VARIANCE","VERSION","VITESS_HASH","WEEK","WEEKDAY","WEEKOFYEAR","WEIGHT_STRING","YEAR","YEARWEEK"],Qi=u(["SELECT [ALL | DISTINCT | DISTINCTROW]"]),zi=u(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO]","REPLACE [LOW_PRIORITY | DELAYED] [INTO]","VALUES","ON DUPLICATE KEY UPDATE","SET"]),Br=u(["CREATE [TEMPORARY] TABLE [IF NOT EXISTS]"]),zt=u(["CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS]","UPDATE [LOW_PRIORITY] [IGNORE]","DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM","DROP [TEMPORARY] TABLE [IF EXISTS]","ALTER TABLE","ADD [COLUMN]","{CHANGE | MODIFY} [COLUMN]","DROP [COLUMN]","RENAME [TO | AS]","RENAME COLUMN","ALTER [COLUMN]","{SET | DROP} DEFAULT","TRUNCATE [TABLE]","ALTER DATABASE","ALTER INSTANCE","ALTER RESOURCE GROUP","ALTER SEQUENCE","ALTER USER","ALTER VIEW","ANALYZE TABLE","CHECK TABLE","CHECKSUM TABLE","COMMIT","CREATE DATABASE","CREATE INDEX","CREATE RESOURCE GROUP","CREATE ROLE","CREATE SEQUENCE","CREATE USER","DEALLOCATE PREPARE","DESCRIBE","DROP DATABASE","DROP INDEX","DROP RESOURCE GROUP","DROP ROLE","DROP TABLESPACE","DROP USER","DROP VIEW","EXPLAIN","FLUSH","GRANT","IMPORT TABLE","INSTALL COMPONENT","INSTALL PLUGIN","KILL","LOAD DATA","LOCK INSTANCE FOR BACKUP","LOCK TABLES","OPTIMIZE TABLE","PREPARE","RELEASE SAVEPOINT","RENAME TABLE","RENAME USER","REPAIR TABLE","RESET","REVOKE","ROLLBACK","ROLLBACK TO SAVEPOINT","SAVEPOINT","SET CHARACTER SET","SET DEFAULT ROLE","SET NAMES","SET PASSWORD","SET RESOURCE GROUP","SET ROLE","SET TRANSACTION","SHOW","SHOW BINARY LOGS","SHOW BINLOG EVENTS","SHOW CHARACTER SET","SHOW COLLATION","SHOW COLUMNS","SHOW CREATE DATABASE","SHOW CREATE TABLE","SHOW CREATE USER","SHOW CREATE VIEW","SHOW DATABASES","SHOW ENGINE","SHOW ENGINES","SHOW ERRORS","SHOW EVENTS","SHOW GRANTS","SHOW INDEX","SHOW MASTER STATUS","SHOW OPEN TABLES","SHOW PLUGINS","SHOW PRIVILEGES","SHOW PROCESSLIST","SHOW PROFILE","SHOW PROFILES","SHOW STATUS","SHOW TABLE STATUS","SHOW TABLES","SHOW TRIGGERS","SHOW VARIABLES","SHOW WARNINGS","TABLE","UNINSTALL COMPONENT","UNINSTALL PLUGIN","UNLOCK INSTANCE","UNLOCK TABLES","USE"]),Zi=u(["UNION [ALL | DISTINCT]"]),ea=u(["JOIN","{LEFT | RIGHT} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT} [OUTER] JOIN","STRAIGHT_JOIN"]),ta=u(["ON {UPDATE | DELETE} [SET NULL]","CHARACTER SET","{ROWS | RANGE} BETWEEN","IDENTIFIED BY"]),Ea=u([]),ra={name:"tidb",tokenizerOptions:{reservedSelect:Qi,reservedClauses:[...zi,...Br,...zt],reservedSetOperations:Zi,reservedJoins:ea,reservedKeywordPhrases:ta,reservedDataTypePhrases:Ea,supportsXor:!0,reservedKeywords:Ki,reservedDataTypes:qi,reservedFunctionNames:Ji,stringTypes:['""-qq-bs',{quote:"''-qq-bs",prefixes:["N"]},{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:["``"],identChars:{first:"$",rest:"$",allowFirstCharNumber:!0},variableTypes:[{regex:"@@?[A-Za-z0-9_.$]+"},{quote:'""-qq-bs',prefixes:["@"],requirePrefix:!0},{quote:"''-qq-bs",prefixes:["@"],requirePrefix:!0},{quote:"``",prefixes:["@"],requirePrefix:!0}],paramTypes:{positional:!0},lineCommentTypes:["--","#"],operators:["%",":=","&","|","^","~","<<",">>","<=>","->","->>","&&","||","!","*.*"],postProcess:Bt},formatOptions:{onelineClauses:[...Br,...zt],tabularOnelineClauses:zt}},na=["ABORT","ABS","ACOS","ADVISOR","ARRAY_AGG","ARRAY_AGG","ARRAY_APPEND","ARRAY_AVG","ARRAY_BINARY_SEARCH","ARRAY_CONCAT","ARRAY_CONTAINS","ARRAY_COUNT","ARRAY_DISTINCT","ARRAY_EXCEPT","ARRAY_FLATTEN","ARRAY_IFNULL","ARRAY_INSERT","ARRAY_INTERSECT","ARRAY_LENGTH","ARRAY_MAX","ARRAY_MIN","ARRAY_MOVE","ARRAY_POSITION","ARRAY_PREPEND","ARRAY_PUT","ARRAY_RANGE","ARRAY_REMOVE","ARRAY_REPEAT","ARRAY_REPLACE","ARRAY_REVERSE","ARRAY_SORT","ARRAY_STAR","ARRAY_SUM","ARRAY_SYMDIFF","ARRAY_SYMDIFF1","ARRAY_SYMDIFFN","ARRAY_UNION","ASIN","ATAN","ATAN2","AVG","BASE64","BASE64_DECODE","BASE64_ENCODE","BITAND ","BITCLEAR ","BITNOT ","BITOR ","BITSET ","BITSHIFT ","BITTEST ","BITXOR ","CEIL","CLOCK_LOCAL","CLOCK_MILLIS","CLOCK_STR","CLOCK_TZ","CLOCK_UTC","COALESCE","CONCAT","CONCAT2","CONTAINS","CONTAINS_TOKEN","CONTAINS_TOKEN_LIKE","CONTAINS_TOKEN_REGEXP","COS","COUNT","COUNT","COUNTN","CUME_DIST","CURL","DATE_ADD_MILLIS","DATE_ADD_STR","DATE_DIFF_MILLIS","DATE_DIFF_STR","DATE_FORMAT_STR","DATE_PART_MILLIS","DATE_PART_STR","DATE_RANGE_MILLIS","DATE_RANGE_STR","DATE_TRUNC_MILLIS","DATE_TRUNC_STR","DECODE","DECODE_JSON","DEGREES","DENSE_RANK","DURATION_TO_STR","ENCODED_SIZE","ENCODE_JSON","EXP","FIRST_VALUE","FLOOR","GREATEST","HAS_TOKEN","IFINF","IFMISSING","IFMISSINGORNULL","IFNAN","IFNANORINF","IFNULL","INITCAP","ISARRAY","ISATOM","ISBITSET","ISBOOLEAN","ISNUMBER","ISOBJECT","ISSTRING","LAG","LAST_VALUE","LEAD","LEAST","LENGTH","LN","LOG","LOWER","LTRIM","MAX","MEAN","MEDIAN","META","MILLIS","MILLIS_TO_LOCAL","MILLIS_TO_STR","MILLIS_TO_TZ","MILLIS_TO_UTC","MILLIS_TO_ZONE_NAME","MIN","MISSINGIF","NANIF","NEGINFIF","NOW_LOCAL","NOW_MILLIS","NOW_STR","NOW_TZ","NOW_UTC","NTH_VALUE","NTILE","NULLIF","NVL","NVL2","OBJECT_ADD","OBJECT_CONCAT","OBJECT_INNER_PAIRS","OBJECT_INNER_VALUES","OBJECT_LENGTH","OBJECT_NAMES","OBJECT_PAIRS","OBJECT_PUT","OBJECT_REMOVE","OBJECT_RENAME","OBJECT_REPLACE","OBJECT_UNWRAP","OBJECT_VALUES","PAIRS","PERCENT_RANK","PI","POLY_LENGTH","POSINFIF","POSITION","POWER","RADIANS","RANDOM","RANK","RATIO_TO_REPORT","REGEXP_CONTAINS","REGEXP_LIKE","REGEXP_MATCHES","REGEXP_POSITION","REGEXP_REPLACE","REGEXP_SPLIT","REGEX_CONTAINS","REGEX_LIKE","REGEX_MATCHES","REGEX_POSITION","REGEX_REPLACE","REGEX_SPLIT","REPEAT","REPLACE","REVERSE","ROUND","ROW_NUMBER","RTRIM","SEARCH","SEARCH_META","SEARCH_SCORE","SIGN","SIN","SPLIT","SQRT","STDDEV","STDDEV_POP","STDDEV_SAMP","STR_TO_DURATION","STR_TO_MILLIS","STR_TO_TZ","STR_TO_UTC","STR_TO_ZONE_NAME","SUBSTR","SUFFIXES","SUM","TAN","TITLE","TOARRAY","TOATOM","TOBOOLEAN","TOKENS","TOKENS","TONUMBER","TOOBJECT","TOSTRING","TRIM","TRUNC","UPPER","UUID","VARIANCE","VARIANCE_POP","VARIANCE_SAMP","VAR_POP","VAR_SAMP","WEEKDAY_MILLIS","WEEKDAY_STR","CAST"],sa=["ADVISE","ALL","ALTER","ANALYZE","AND","ANY","ARRAY","AS","ASC","AT","BEGIN","BETWEEN","BINARY","BOOLEAN","BREAK","BUCKET","BUILD","BY","CALL","CASE","CAST","CLUSTER","COLLATE","COLLECTION","COMMIT","COMMITTED","CONNECT","CONTINUE","CORRELATED","COVER","CREATE","CURRENT","DATABASE","DATASET","DATASTORE","DECLARE","DECREMENT","DELETE","DERIVED","DESC","DESCRIBE","DISTINCT","DO","DROP","EACH","ELEMENT","ELSE","END","EVERY","EXCEPT","EXCLUDE","EXECUTE","EXISTS","EXPLAIN","FALSE","FETCH","FILTER","FIRST","FLATTEN","FLUSH","FOLLOWING","FOR","FORCE","FROM","FTS","FUNCTION","GOLANG","GRANT","GROUP","GROUPS","GSI","HASH","HAVING","IF","IGNORE","ILIKE","IN","INCLUDE","INCREMENT","INDEX","INFER","INLINE","INNER","INSERT","INTERSECT","INTO","IS","ISOLATION","JAVASCRIPT","JOIN","KEY","KEYS","KEYSPACE","KNOWN","LANGUAGE","LAST","LEFT","LET","LETTING","LEVEL","LIKE","LIMIT","LSM","MAP","MAPPING","MATCHED","MATERIALIZED","MERGE","MINUS","MISSING","NAMESPACE","NEST","NL","NO","NOT","NTH_VALUE","NULL","NULLS","NUMBER","OBJECT","OFFSET","ON","OPTION","OPTIONS","OR","ORDER","OTHERS","OUTER","OVER","PARSE","PARTITION","PASSWORD","PATH","POOL","PRECEDING","PREPARE","PRIMARY","PRIVATE","PRIVILEGE","PROBE","PROCEDURE","PUBLIC","RANGE","RAW","REALM","REDUCE","RENAME","RESPECT","RETURN","RETURNING","REVOKE","RIGHT","ROLE","ROLLBACK","ROW","ROWS","SATISFIES","SAVEPOINT","SCHEMA","SCOPE","SELECT","SELF","SEMI","SET","SHOW","SOME","START","STATISTICS","STRING","SYSTEM","THEN","TIES","TO","TRAN","TRANSACTION","TRIGGER","TRUE","TRUNCATE","UNBOUNDED","UNDER","UNION","UNIQUE","UNKNOWN","UNNEST","UNSET","UPDATE","UPSERT","USE","USER","USING","VALIDATE","VALUE","VALUED","VALUES","VIA","VIEW","WHEN","WHERE","WHILE","WINDOW","WITH","WITHIN","WORK","XOR"],Ta=[],oa=u(["SELECT [ALL | DISTINCT]"]),ia=u(["WITH","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT INTO","VALUES","SET","MERGE INTO","WHEN [NOT] MATCHED THEN","UPDATE SET","INSERT","NEST","UNNEST","RETURNING"]),Hr=u(["UPDATE","DELETE FROM","SET SCHEMA","ADVISE","ALTER INDEX","BEGIN TRANSACTION","BUILD INDEX","COMMIT TRANSACTION","CREATE COLLECTION","CREATE FUNCTION","CREATE INDEX","CREATE PRIMARY INDEX","CREATE SCOPE","DROP COLLECTION","DROP FUNCTION","DROP INDEX","DROP PRIMARY INDEX","DROP SCOPE","EXECUTE","EXECUTE FUNCTION","EXPLAIN","GRANT","INFER","PREPARE","REVOKE","ROLLBACK TRANSACTION","SAVEPOINT","SET TRANSACTION","UPDATE STATISTICS","UPSERT","LET","SET CURRENT SCHEMA","SHOW","USE [PRIMARY] KEYS"]),aa=u(["UNION [ALL]","EXCEPT [ALL]","INTERSECT [ALL]"]),Ra=u(["JOIN","{LEFT | RIGHT} [OUTER] JOIN","INNER JOIN"]),Aa=u(["{ROWS | RANGE | GROUPS} BETWEEN"]),Sa=u([]),la={name:"n1ql",tokenizerOptions:{reservedSelect:oa,reservedClauses:[...ia,...Hr],reservedSetOperations:aa,reservedJoins:Ra,reservedKeywordPhrases:Aa,reservedDataTypePhrases:Sa,supportsXor:!0,reservedKeywords:sa,reservedDataTypes:Ta,reservedFunctionNames:na,stringTypes:['""-bs',"''-bs"],identTypes:["``"],extraParens:["[]","{}"],paramTypes:{positional:!0,numbered:["$"],named:["$"]},lineCommentTypes:["#","--"],operators:["%","==",":","||"]},formatOptions:{onelineClauses:Hr}},Ia=["ADD","AGENT","AGGREGATE","ALL","ALTER","AND","ANY","ARROW","AS","ASC","AT","ATTRIBUTE","AUTHID","AVG","BEGIN","BETWEEN","BLOCK","BODY","BOTH","BOUND","BULK","BY","BYTE","CALL","CALLING","CASCADE","CASE","CHARSET","CHARSETFORM","CHARSETID","CHECK","CLOSE","CLUSTER","CLUSTERS","COLAUTH","COLLECT","COLUMNS","COMMENT","COMMIT","COMMITTED","COMPILED","COMPRESS","CONNECT","CONSTANT","CONSTRUCTOR","CONTEXT","CONVERT","COUNT","CRASH","CREATE","CURRENT","CURSOR","CUSTOMDATUM","DANGLING","DATA","DAY","DECLARE","DEFAULT","DEFINE","DELETE","DESC","DETERMINISTIC","DISTINCT","DROP","DURATION","ELEMENT","ELSE","ELSIF","EMPTY","END","ESCAPE","EXCEPT","EXCEPTION","EXCEPTIONS","EXCLUSIVE","EXECUTE","EXISTS","EXIT","EXTERNAL","FETCH","FINAL","FIXED","FOR","FORALL","FORCE","FORM","FROM","FUNCTION","GENERAL","GOTO","GRANT","GROUP","HASH","HAVING","HEAP","HIDDEN","HOUR","IDENTIFIED","IF","IMMEDIATE","IN","INCLUDING","INDEX","INDEXES","INDICATOR","INDICES","INFINITE","INSERT","INSTANTIABLE","INTERFACE","INTERSECT","INTERVAL","INTO","INVALIDATE","IS","ISOLATION","JAVA","LANGUAGE","LARGE","LEADING","LENGTH","LEVEL","LIBRARY","LIKE","LIKE2","LIKE4","LIKEC","LIMIT","LIMITED","LOCAL","LOCK","LOOP","MAP","MAX","MAXLEN","MEMBER","MERGE","MIN","MINUS","MINUTE","MOD","MODE","MODIFY","MONTH","MULTISET","NAME","NAN","NATIONAL","NATIVE","NEW","NOCOMPRESS","NOCOPY","NOT","NOWAIT","NULL","OBJECT","OCICOLL","OCIDATE","OCIDATETIME","OCIDURATION","OCIINTERVAL","OCILOBLOCATOR","OCINUMBER","OCIRAW","OCIREF","OCIREFCURSOR","OCIROWID","OCISTRING","OCITYPE","OF","ON","ONLY","OPAQUE","OPEN","OPERATOR","OPTION","OR","ORACLE","ORADATA","ORDER","OVERLAPS","ORGANIZATION","ORLANY","ORLVARY","OTHERS","OUT","OVERRIDING","PACKAGE","PARALLEL_ENABLE","PARAMETER","PARAMETERS","PARTITION","PASCAL","PIPE","PIPELINED","PRAGMA","PRIOR","PRIVATE","PROCEDURE","PUBLIC","RAISE","RANGE","READ","RECORD","REF","REFERENCE","REM","REMAINDER","RENAME","RESOURCE","RESULT","RETURN","RETURNING","REVERSE","REVOKE","ROLLBACK","ROW","SAMPLE","SAVE","SAVEPOINT","SB1","SB2","SB4","SECOND","SEGMENT","SELECT","SELF","SEPARATE","SEQUENCE","SERIALIZABLE","SET","SHARE","SHORT","SIZE","SIZE_T","SOME","SPARSE","SQL","SQLCODE","SQLDATA","SQLNAME","SQLSTATE","STANDARD","START","STATIC","STDDEV","STORED","STRING","STRUCT","STYLE","SUBMULTISET","SUBPARTITION","SUBSTITUTABLE","SUBTYPE","SUM","SYNONYM","TABAUTH","TABLE","TDO","THE","THEN","TIME","TIMEZONE_ABBR","TIMEZONE_HOUR","TIMEZONE_MINUTE","TIMEZONE_REGION","TO","TRAILING","TRANSAC","TRANSACTIONAL","TRUSTED","TYPE","UB1","UB2","UB4","UNDER","UNION","UNIQUE","UNSIGNED","UNTRUSTED","UPDATE","USE","USING","VALIST","VALUE","VALUES","VARIABLE","VARIANCE","VARRAY","VIEW","VIEWS","VOID","WHEN","WHERE","WHILE","WITH","WORK","WRAPPED","WRITE","YEAR","ZONE"],Oa=["ARRAY","BFILE_BASE","BINARY","BLOB_BASE","CHAR VARYING","CHAR_BASE","CHAR","CHARACTER VARYING","CHARACTER","CLOB_BASE","DATE_BASE","DATE","DECIMAL","DOUBLE","FLOAT","INT","INTERVAL DAY","INTERVAL YEAR","LONG","NATIONAL CHAR VARYING","NATIONAL CHAR","NATIONAL CHARACTER VARYING","NATIONAL CHARACTER","NCHAR VARYING","NCHAR","NCHAR","NUMBER_BASE","NUMBER","NUMBERIC","NVARCHAR","PRECISION","RAW","TIMESTAMP","UROWID","VARCHAR","VARCHAR2"],Na=["ABS","ACOS","ASIN","ATAN","ATAN2","BITAND","CEIL","COS","COSH","EXP","FLOOR","LN","LOG","MOD","NANVL","POWER","REMAINDER","ROUND","SIGN","SIN","SINH","SQRT","TAN","TANH","TRUNC","WIDTH_BUCKET","CHR","CONCAT","INITCAP","LOWER","LPAD","LTRIM","NLS_INITCAP","NLS_LOWER","NLSSORT","NLS_UPPER","REGEXP_REPLACE","REGEXP_SUBSTR","REPLACE","RPAD","RTRIM","SOUNDEX","SUBSTR","TRANSLATE","TREAT","TRIM","UPPER","NLS_CHARSET_DECL_LEN","NLS_CHARSET_ID","NLS_CHARSET_NAME","ASCII","INSTR","LENGTH","REGEXP_INSTR","ADD_MONTHS","CURRENT_DATE","CURRENT_TIMESTAMP","DBTIMEZONE","EXTRACT","FROM_TZ","LAST_DAY","LOCALTIMESTAMP","MONTHS_BETWEEN","NEW_TIME","NEXT_DAY","NUMTODSINTERVAL","NUMTOYMINTERVAL","ROUND","SESSIONTIMEZONE","SYS_EXTRACT_UTC","SYSDATE","SYSTIMESTAMP","TO_CHAR","TO_TIMESTAMP","TO_TIMESTAMP_TZ","TO_DSINTERVAL","TO_YMINTERVAL","TRUNC","TZ_OFFSET","GREATEST","LEAST","ASCIISTR","BIN_TO_NUM","CAST","CHARTOROWID","COMPOSE","CONVERT","DECOMPOSE","HEXTORAW","NUMTODSINTERVAL","NUMTOYMINTERVAL","RAWTOHEX","RAWTONHEX","ROWIDTOCHAR","ROWIDTONCHAR","SCN_TO_TIMESTAMP","TIMESTAMP_TO_SCN","TO_BINARY_DOUBLE","TO_BINARY_FLOAT","TO_CHAR","TO_CLOB","TO_DATE","TO_DSINTERVAL","TO_LOB","TO_MULTI_BYTE","TO_NCHAR","TO_NCLOB","TO_NUMBER","TO_DSINTERVAL","TO_SINGLE_BYTE","TO_TIMESTAMP","TO_TIMESTAMP_TZ","TO_YMINTERVAL","TO_YMINTERVAL","TRANSLATE","UNISTR","BFILENAME","EMPTY_BLOB,","EMPTY_CLOB","CARDINALITY","COLLECT","POWERMULTISET","POWERMULTISET_BY_CARDINALITY","SET","SYS_CONNECT_BY_PATH","CLUSTER_ID","CLUSTER_PROBABILITY","CLUSTER_SET","FEATURE_ID","FEATURE_SET","FEATURE_VALUE","PREDICTION","PREDICTION_COST","PREDICTION_DETAILS","PREDICTION_PROBABILITY","PREDICTION_SET","APPENDCHILDXML","DELETEXML","DEPTH","EXTRACT","EXISTSNODE","EXTRACTVALUE","INSERTCHILDXML","INSERTXMLBEFORE","PATH","SYS_DBURIGEN","SYS_XMLAGG","SYS_XMLGEN","UPDATEXML","XMLAGG","XMLCDATA","XMLCOLATTVAL","XMLCOMMENT","XMLCONCAT","XMLFOREST","XMLPARSE","XMLPI","XMLQUERY","XMLROOT","XMLSEQUENCE","XMLSERIALIZE","XMLTABLE","XMLTRANSFORM","DECODE","DUMP","ORA_HASH","VSIZE","COALESCE","LNNVL","NULLIF","NVL","NVL2","SYS_CONTEXT","SYS_GUID","SYS_TYPEID","UID","USER","USERENV","AVG","COLLECT","CORR","CORR_S","CORR_K","COUNT","COVAR_POP","COVAR_SAMP","CUME_DIST","DENSE_RANK","FIRST","GROUP_ID","GROUPING","GROUPING_ID","LAST","MAX","MEDIAN","MIN","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","RANK","REGR_SLOPE","REGR_INTERCEPT","REGR_COUNT","REGR_R2","REGR_AVGX","REGR_AVGY","REGR_SXX","REGR_SYY","REGR_SXY","STATS_BINOMIAL_TEST","STATS_CROSSTAB","STATS_F_TEST","STATS_KS_TEST","STATS_MODE","STATS_MW_TEST","STATS_ONE_WAY_ANOVA","STATS_T_TEST_ONE","STATS_T_TEST_PAIRED","STATS_T_TEST_INDEP","STATS_T_TEST_INDEPU","STATS_WSR_TEST","STDDEV","STDDEV_POP","STDDEV_SAMP","SUM","VAR_POP","VAR_SAMP","VARIANCE","FIRST_VALUE","LAG","LAST_VALUE","LEAD","NTILE","RATIO_TO_REPORT","ROW_NUMBER","DEREF","MAKE_REF","REF","REFTOHEX","VALUE","CV","ITERATION_NUMBER","PRESENTNNV","PRESENTV","PREVIOUS"],ca=u(["SELECT [ALL | DISTINCT | UNIQUE]"]),da=u(["WITH","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER [SIBLINGS] BY","OFFSET","FETCH {FIRST | NEXT}","FOR UPDATE [OF]","INSERT [INTO | ALL INTO]","VALUES","SET","MERGE [INTO]","WHEN [NOT] MATCHED [THEN]","UPDATE SET","RETURNING"]),br=u(["CREATE [GLOBAL TEMPORARY | PRIVATE TEMPORARY | SHARDED | DUPLICATED | IMMUTABLE BLOCKCHAIN | BLOCKCHAIN | IMMUTABLE] TABLE"]),Zt=u(["CREATE [OR REPLACE] [NO FORCE | FORCE] [EDITIONING | EDITIONABLE | EDITIONABLE EDITIONING | NONEDITIONABLE] VIEW","CREATE MATERIALIZED VIEW","UPDATE [ONLY]","DELETE FROM [ONLY]","DROP TABLE","ALTER TABLE","ADD","DROP {COLUMN | UNUSED COLUMNS | COLUMNS CONTINUE}","MODIFY","RENAME TO","RENAME COLUMN","TRUNCATE TABLE","SET SCHEMA","BEGIN","CONNECT BY","DECLARE","EXCEPT","EXCEPTION","LOOP","START WITH"]),Ca=u(["UNION [ALL]","MINUS","INTERSECT"]),La=u(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN","{CROSS | OUTER} APPLY"]),_a=u(["ON {UPDATE | DELETE} [SET NULL]","ON COMMIT","{ROWS | RANGE} BETWEEN"]),ua=u([]),pa={name:"plsql",tokenizerOptions:{reservedSelect:ca,reservedClauses:[...da,...br,...Zt],reservedSetOperations:Ca,reservedJoins:La,reservedKeywordPhrases:_a,reservedDataTypePhrases:ua,supportsXor:!0,reservedKeywords:Ia,reservedDataTypes:Oa,reservedFunctionNames:Na,stringTypes:[{quote:"''-qq",prefixes:["N"]},{quote:"q''",prefixes:["N"]}],identTypes:['""-qq'],identChars:{rest:"$#"},variableTypes:[{regex:"&{1,2}[A-Za-z][A-Za-z0-9_$#]*"}],paramTypes:{numbered:[":"],named:[":"]},operators:["**",":=","%","~=","^=",">>","<<","=>","@","||"],postProcess:Da},formatOptions:{alwaysDenseOperators:["@"],onelineClauses:[...br,...Zt],tabularOnelineClauses:Zt}};function Da(e){let t=me;return e.map(r=>fe.SET(r)&&fe.BY(t)?Object.assign(Object.assign({},r),{type:D.RESERVED_KEYWORD}):(xn(r.type)&&(t=r),r))}const Pa=["ABS","ACOS","ACOSD","ACOSH","ASIN","ASIND","ASINH","ATAN","ATAN2","ATAN2D","ATAND","ATANH","CBRT","CEIL","CEILING","COS","COSD","COSH","COT","COTD","DEGREES","DIV","EXP","FACTORIAL","FLOOR","GCD","LCM","LN","LOG","LOG10","MIN_SCALE","MOD","PI","POWER","RADIANS","RANDOM","ROUND","SCALE","SETSEED","SIGN","SIN","SIND","SINH","SQRT","TAN","TAND","TANH","TRIM_SCALE","TRUNC","WIDTH_BUCKET","ABS","ASCII","BIT_LENGTH","BTRIM","CHARACTER_LENGTH","CHAR_LENGTH","CHR","CONCAT","CONCAT_WS","FORMAT","INITCAP","LEFT","LENGTH","LOWER","LPAD","LTRIM","MD5","NORMALIZE","OCTET_LENGTH","OVERLAY","PARSE_IDENT","PG_CLIENT_ENCODING","POSITION","QUOTE_IDENT","QUOTE_LITERAL","QUOTE_NULLABLE","REGEXP_MATCH","REGEXP_MATCHES","REGEXP_REPLACE","REGEXP_SPLIT_TO_ARRAY","REGEXP_SPLIT_TO_TABLE","REPEAT","REPLACE","REVERSE","RIGHT","RPAD","RTRIM","SPLIT_PART","SPRINTF","STARTS_WITH","STRING_AGG","STRING_TO_ARRAY","STRING_TO_TABLE","STRPOS","SUBSTR","SUBSTRING","TO_ASCII","TO_HEX","TRANSLATE","TRIM","UNISTR","UPPER","BIT_COUNT","BIT_LENGTH","BTRIM","CONVERT","CONVERT_FROM","CONVERT_TO","DECODE","ENCODE","GET_BIT","GET_BYTE","LENGTH","LTRIM","MD5","OCTET_LENGTH","OVERLAY","POSITION","RTRIM","SET_BIT","SET_BYTE","SHA224","SHA256","SHA384","SHA512","STRING_AGG","SUBSTR","SUBSTRING","TRIM","BIT_COUNT","BIT_LENGTH","GET_BIT","LENGTH","OCTET_LENGTH","OVERLAY","POSITION","SET_BIT","SUBSTRING","REGEXP_MATCH","REGEXP_MATCHES","REGEXP_REPLACE","REGEXP_SPLIT_TO_ARRAY","REGEXP_SPLIT_TO_TABLE","TO_CHAR","TO_DATE","TO_NUMBER","TO_TIMESTAMP","CLOCK_TIMESTAMP","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATE_BIN","DATE_PART","DATE_TRUNC","EXTRACT","ISFINITE","JUSTIFY_DAYS","JUSTIFY_HOURS","JUSTIFY_INTERVAL","LOCALTIME","LOCALTIMESTAMP","MAKE_DATE","MAKE_INTERVAL","MAKE_TIME","MAKE_TIMESTAMP","MAKE_TIMESTAMPTZ","NOW","PG_SLEEP","PG_SLEEP_FOR","PG_SLEEP_UNTIL","STATEMENT_TIMESTAMP","TIMEOFDAY","TO_TIMESTAMP","TRANSACTION_TIMESTAMP","ENUM_FIRST","ENUM_LAST","ENUM_RANGE","AREA","BOUND_BOX","BOX","CENTER","CIRCLE","DIAGONAL","DIAMETER","HEIGHT","ISCLOSED","ISOPEN","LENGTH","LINE","LSEG","NPOINTS","PATH","PCLOSE","POINT","POLYGON","POPEN","RADIUS","SLOPE","WIDTH","ABBREV","BROADCAST","FAMILY","HOST","HOSTMASK","INET_MERGE","INET_SAME_FAMILY","MACADDR8_SET7BIT","MASKLEN","NETMASK","NETWORK","SET_MASKLEN","TRUNC","ARRAY_TO_TSVECTOR","GET_CURRENT_TS_CONFIG","JSONB_TO_TSVECTOR","JSON_TO_TSVECTOR","LENGTH","NUMNODE","PHRASETO_TSQUERY","PLAINTO_TSQUERY","QUERYTREE","SETWEIGHT","STRIP","TO_TSQUERY","TO_TSVECTOR","TSQUERY_PHRASE","TSVECTOR_TO_ARRAY","TS_DEBUG","TS_DELETE","TS_FILTER","TS_HEADLINE","TS_LEXIZE","TS_PARSE","TS_RANK","TS_RANK_CD","TS_REWRITE","TS_STAT","TS_TOKEN_TYPE","WEBSEARCH_TO_TSQUERY","GEN_RANDOM_UUID","UUIDV4","UUIDV7","UUID_EXTRACT_TIMESTAMP","UUID_EXTRACT_VERSION","CURSOR_TO_XML","CURSOR_TO_XMLSCHEMA","DATABASE_TO_XML","DATABASE_TO_XMLSCHEMA","DATABASE_TO_XML_AND_XMLSCHEMA","NEXTVAL","QUERY_TO_XML","QUERY_TO_XMLSCHEMA","QUERY_TO_XML_AND_XMLSCHEMA","SCHEMA_TO_XML","SCHEMA_TO_XMLSCHEMA","SCHEMA_TO_XML_AND_XMLSCHEMA","STRING","TABLE_TO_XML","TABLE_TO_XMLSCHEMA","TABLE_TO_XML_AND_XMLSCHEMA","XMLAGG","XMLCOMMENT","XMLCONCAT","XMLELEMENT","XMLEXISTS","XMLFOREST","XMLPARSE","XMLPI","XMLROOT","XMLSERIALIZE","XMLTABLE","XML_IS_WELL_FORMED","XML_IS_WELL_FORMED_CONTENT","XML_IS_WELL_FORMED_DOCUMENT","XPATH","XPATH_EXISTS","ARRAY_TO_JSON","JSONB_AGG","JSONB_ARRAY_ELEMENTS","JSONB_ARRAY_ELEMENTS_TEXT","JSONB_ARRAY_LENGTH","JSONB_BUILD_ARRAY","JSONB_BUILD_OBJECT","JSONB_EACH","JSONB_EACH_TEXT","JSONB_EXTRACT_PATH","JSONB_EXTRACT_PATH_TEXT","JSONB_INSERT","JSONB_OBJECT","JSONB_OBJECT_AGG","JSONB_OBJECT_KEYS","JSONB_PATH_EXISTS","JSONB_PATH_EXISTS_TZ","JSONB_PATH_MATCH","JSONB_PATH_MATCH_TZ","JSONB_PATH_QUERY","JSONB_PATH_QUERY_ARRAY","JSONB_PATH_QUERY_ARRAY_TZ","JSONB_PATH_QUERY_FIRST","JSONB_PATH_QUERY_FIRST_TZ","JSONB_PATH_QUERY_TZ","JSONB_POPULATE_RECORD","JSONB_POPULATE_RECORDSET","JSONB_PRETTY","JSONB_SET","JSONB_SET_LAX","JSONB_STRIP_NULLS","JSONB_TO_RECORD","JSONB_TO_RECORDSET","JSONB_TYPEOF","JSON_AGG","JSON_ARRAY_ELEMENTS","JSON_ARRAY_ELEMENTS_TEXT","JSON_ARRAY_LENGTH","JSON_BUILD_ARRAY","JSON_BUILD_OBJECT","JSON_EACH","JSON_EACH_TEXT","JSON_EXTRACT_PATH","JSON_EXTRACT_PATH_TEXT","JSON_OBJECT","JSON_OBJECT_AGG","JSON_OBJECT_KEYS","JSON_POPULATE_RECORD","JSON_POPULATE_RECORDSET","JSON_STRIP_NULLS","JSON_TO_RECORD","JSON_TO_RECORDSET","JSON_TYPEOF","ROW_TO_JSON","TO_JSON","TO_JSONB","TO_TIMESTAMP","CURRVAL","LASTVAL","NEXTVAL","SETVAL","COALESCE","GREATEST","LEAST","NULLIF","ARRAY_AGG","ARRAY_APPEND","ARRAY_CAT","ARRAY_DIMS","ARRAY_FILL","ARRAY_LENGTH","ARRAY_LOWER","ARRAY_NDIMS","ARRAY_POSITION","ARRAY_POSITIONS","ARRAY_PREPEND","ARRAY_REMOVE","ARRAY_REPLACE","ARRAY_TO_STRING","ARRAY_UPPER","CARDINALITY","STRING_TO_ARRAY","TRIM_ARRAY","UNNEST","ISEMPTY","LOWER","LOWER_INC","LOWER_INF","MULTIRANGE","RANGE_MERGE","UPPER","UPPER_INC","UPPER_INF","ARRAY_AGG","AVG","BIT_AND","BIT_OR","BIT_XOR","BOOL_AND","BOOL_OR","COALESCE","CORR","COUNT","COVAR_POP","COVAR_SAMP","CUME_DIST","DENSE_RANK","EVERY","GROUPING","JSONB_AGG","JSONB_OBJECT_AGG","JSON_AGG","JSON_OBJECT_AGG","MAX","MIN","MODE","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","RANGE_AGG","RANGE_INTERSECT_AGG","RANK","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","STDDEV","STDDEV_POP","STDDEV_SAMP","STRING_AGG","SUM","TO_JSON","TO_JSONB","VARIANCE","VAR_POP","VAR_SAMP","XMLAGG","CUME_DIST","DENSE_RANK","FIRST_VALUE","LAG","LAST_VALUE","LEAD","NTH_VALUE","NTILE","PERCENT_RANK","RANK","ROW_NUMBER","GENERATE_SERIES","GENERATE_SUBSCRIPTS","ACLDEFAULT","ACLEXPLODE","COL_DESCRIPTION","CURRENT_CATALOG","CURRENT_DATABASE","CURRENT_QUERY","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_SCHEMAS","CURRENT_USER","FORMAT_TYPE","HAS_ANY_COLUMN_PRIVILEGE","HAS_COLUMN_PRIVILEGE","HAS_DATABASE_PRIVILEGE","HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE","HAS_FUNCTION_PRIVILEGE","HAS_LANGUAGE_PRIVILEGE","HAS_SCHEMA_PRIVILEGE","HAS_SEQUENCE_PRIVILEGE","HAS_SERVER_PRIVILEGE","HAS_TABLESPACE_PRIVILEGE","HAS_TABLE_PRIVILEGE","HAS_TYPE_PRIVILEGE","INET_CLIENT_ADDR","INET_CLIENT_PORT","INET_SERVER_ADDR","INET_SERVER_PORT","MAKEACLITEM","OBJ_DESCRIPTION","PG_BACKEND_PID","PG_BLOCKING_PIDS","PG_COLLATION_IS_VISIBLE","PG_CONF_LOAD_TIME","PG_CONTROL_CHECKPOINT","PG_CONTROL_INIT","PG_CONTROL_SYSTEM","PG_CONVERSION_IS_VISIBLE","PG_CURRENT_LOGFILE","PG_CURRENT_SNAPSHOT","PG_CURRENT_XACT_ID","PG_CURRENT_XACT_ID_IF_ASSIGNED","PG_DESCRIBE_OBJECT","PG_FUNCTION_IS_VISIBLE","PG_GET_CATALOG_FOREIGN_KEYS","PG_GET_CONSTRAINTDEF","PG_GET_EXPR","PG_GET_FUNCTIONDEF","PG_GET_FUNCTION_ARGUMENTS","PG_GET_FUNCTION_IDENTITY_ARGUMENTS","PG_GET_FUNCTION_RESULT","PG_GET_INDEXDEF","PG_GET_KEYWORDS","PG_GET_OBJECT_ADDRESS","PG_GET_OWNED_SEQUENCE","PG_GET_RULEDEF","PG_GET_SERIAL_SEQUENCE","PG_GET_STATISTICSOBJDEF","PG_GET_TRIGGERDEF","PG_GET_USERBYID","PG_GET_VIEWDEF","PG_HAS_ROLE","PG_IDENTIFY_OBJECT","PG_IDENTIFY_OBJECT_AS_ADDRESS","PG_INDEXAM_HAS_PROPERTY","PG_INDEX_COLUMN_HAS_PROPERTY","PG_INDEX_HAS_PROPERTY","PG_IS_OTHER_TEMP_SCHEMA","PG_JIT_AVAILABLE","PG_LAST_COMMITTED_XACT","PG_LISTENING_CHANNELS","PG_MY_TEMP_SCHEMA","PG_NOTIFICATION_QUEUE_USAGE","PG_OPCLASS_IS_VISIBLE","PG_OPERATOR_IS_VISIBLE","PG_OPFAMILY_IS_VISIBLE","PG_OPTIONS_TO_TABLE","PG_POSTMASTER_START_TIME","PG_SAFE_SNAPSHOT_BLOCKING_PIDS","PG_SNAPSHOT_XIP","PG_SNAPSHOT_XMAX","PG_SNAPSHOT_XMIN","PG_STATISTICS_OBJ_IS_VISIBLE","PG_TABLESPACE_DATABASES","PG_TABLESPACE_LOCATION","PG_TABLE_IS_VISIBLE","PG_TRIGGER_DEPTH","PG_TS_CONFIG_IS_VISIBLE","PG_TS_DICT_IS_VISIBLE","PG_TS_PARSER_IS_VISIBLE","PG_TS_TEMPLATE_IS_VISIBLE","PG_TYPEOF","PG_TYPE_IS_VISIBLE","PG_VISIBLE_IN_SNAPSHOT","PG_XACT_COMMIT_TIMESTAMP","PG_XACT_COMMIT_TIMESTAMP_ORIGIN","PG_XACT_STATUS","PQSERVERVERSION","ROW_SECURITY_ACTIVE","SESSION_USER","SHOBJ_DESCRIPTION","TO_REGCLASS","TO_REGCOLLATION","TO_REGNAMESPACE","TO_REGOPER","TO_REGOPERATOR","TO_REGPROC","TO_REGPROCEDURE","TO_REGROLE","TO_REGTYPE","TXID_CURRENT","TXID_CURRENT_IF_ASSIGNED","TXID_CURRENT_SNAPSHOT","TXID_SNAPSHOT_XIP","TXID_SNAPSHOT_XMAX","TXID_SNAPSHOT_XMIN","TXID_STATUS","TXID_VISIBLE_IN_SNAPSHOT","USER","VERSION","BRIN_DESUMMARIZE_RANGE","BRIN_SUMMARIZE_NEW_VALUES","BRIN_SUMMARIZE_RANGE","CONVERT_FROM","CURRENT_SETTING","GIN_CLEAN_PENDING_LIST","PG_ADVISORY_LOCK","PG_ADVISORY_LOCK_SHARED","PG_ADVISORY_UNLOCK","PG_ADVISORY_UNLOCK_ALL","PG_ADVISORY_UNLOCK_SHARED","PG_ADVISORY_XACT_LOCK","PG_ADVISORY_XACT_LOCK_SHARED","PG_BACKUP_START_TIME","PG_CANCEL_BACKEND","PG_COLLATION_ACTUAL_VERSION","PG_COLUMN_COMPRESSION","PG_COLUMN_SIZE","PG_COPY_LOGICAL_REPLICATION_SLOT","PG_COPY_PHYSICAL_REPLICATION_SLOT","PG_CREATE_LOGICAL_REPLICATION_SLOT","PG_CREATE_PHYSICAL_REPLICATION_SLOT","PG_CREATE_RESTORE_POINT","PG_CURRENT_WAL_FLUSH_LSN","PG_CURRENT_WAL_INSERT_LSN","PG_CURRENT_WAL_LSN","PG_DATABASE_SIZE","PG_DROP_REPLICATION_SLOT","PG_EXPORT_SNAPSHOT","PG_FILENODE_RELATION","PG_GET_WAL_REPLAY_PAUSE_STATE","PG_IMPORT_SYSTEM_COLLATIONS","PG_INDEXES_SIZE","PG_IS_IN_BACKUP","PG_IS_IN_RECOVERY","PG_IS_WAL_REPLAY_PAUSED","PG_LAST_WAL_RECEIVE_LSN","PG_LAST_WAL_REPLAY_LSN","PG_LAST_XACT_REPLAY_TIMESTAMP","PG_LOGICAL_EMIT_MESSAGE","PG_LOGICAL_SLOT_GET_BINARY_CHANGES","PG_LOGICAL_SLOT_GET_CHANGES","PG_LOGICAL_SLOT_PEEK_BINARY_CHANGES","PG_LOGICAL_SLOT_PEEK_CHANGES","PG_LOG_BACKEND_MEMORY_CONTEXTS","PG_LS_ARCHIVE_STATUSDIR","PG_LS_DIR","PG_LS_LOGDIR","PG_LS_TMPDIR","PG_LS_WALDIR","PG_PARTITION_ANCESTORS","PG_PARTITION_ROOT","PG_PARTITION_TREE","PG_PROMOTE","PG_READ_BINARY_FILE","PG_READ_FILE","PG_RELATION_FILENODE","PG_RELATION_FILEPATH","PG_RELATION_SIZE","PG_RELOAD_CONF","PG_REPLICATION_ORIGIN_ADVANCE","PG_REPLICATION_ORIGIN_CREATE","PG_REPLICATION_ORIGIN_DROP","PG_REPLICATION_ORIGIN_OID","PG_REPLICATION_ORIGIN_PROGRESS","PG_REPLICATION_ORIGIN_SESSION_IS_SETUP","PG_REPLICATION_ORIGIN_SESSION_PROGRESS","PG_REPLICATION_ORIGIN_SESSION_RESET","PG_REPLICATION_ORIGIN_SESSION_SETUP","PG_REPLICATION_ORIGIN_XACT_RESET","PG_REPLICATION_ORIGIN_XACT_SETUP","PG_REPLICATION_SLOT_ADVANCE","PG_ROTATE_LOGFILE","PG_SIZE_BYTES","PG_SIZE_PRETTY","PG_START_BACKUP","PG_STAT_FILE","PG_STOP_BACKUP","PG_SWITCH_WAL","PG_TABLESPACE_SIZE","PG_TABLE_SIZE","PG_TERMINATE_BACKEND","PG_TOTAL_RELATION_SIZE","PG_TRY_ADVISORY_LOCK","PG_TRY_ADVISORY_LOCK_SHARED","PG_TRY_ADVISORY_XACT_LOCK","PG_TRY_ADVISORY_XACT_LOCK_SHARED","PG_WALFILE_NAME","PG_WALFILE_NAME_OFFSET","PG_WAL_LSN_DIFF","PG_WAL_REPLAY_PAUSE","PG_WAL_REPLAY_RESUME","SET_CONFIG","SUPPRESS_REDUNDANT_UPDATES_TRIGGER","TSVECTOR_UPDATE_TRIGGER","TSVECTOR_UPDATE_TRIGGER_COLUMN","PG_EVENT_TRIGGER_DDL_COMMANDS","PG_EVENT_TRIGGER_DROPPED_OBJECTS","PG_EVENT_TRIGGER_TABLE_REWRITE_OID","PG_EVENT_TRIGGER_TABLE_REWRITE_REASON","PG_GET_OBJECT_ADDRESS","PG_MCV_LIST_ITEMS","CAST"],Ma=["ALL","ANALYSE","ANALYZE","AND","ANY","AS","ASC","ASYMMETRIC","AUTHORIZATION","BETWEEN","BINARY","BOTH","CASE","CAST","CHECK","COLLATE","COLLATION","COLUMN","CONCURRENTLY","CONSTRAINT","CREATE","CROSS","CURRENT_CATALOG","CURRENT_DATE","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","DAY","DEFAULT","DEFERRABLE","DESC","DISTINCT","DO","ELSE","END","EXCEPT","EXISTS","FALSE","FETCH","FILTER","FOR","FOREIGN","FREEZE","FROM","FULL","GRANT","GROUP","HAVING","HOUR","ILIKE","IN","INITIALLY","INNER","INOUT","INTERSECT","INTO","IS","ISNULL","JOIN","LATERAL","LEADING","LEFT","LIKE","LIMIT","LOCALTIME","LOCALTIMESTAMP","MINUTE","MONTH","NATURAL","NOT","NOTNULL","NULL","NULLIF","OFFSET","ON","ONLY","OR","ORDER","OUT","OUTER","OVER","OVERLAPS","PLACING","PRIMARY","REFERENCES","RETURNING","RIGHT","ROW","SECOND","SELECT","SESSION_USER","SIMILAR","SOME","SYMMETRIC","TABLE","TABLESAMPLE","THEN","TO","TRAILING","TRUE","UNION","UNIQUE","USER","USING","VALUES","VARIADIC","VERBOSE","WHEN","WHERE","WINDOW","WITH","WITHIN","WITHOUT","YEAR"],ma=["ARRAY","BIGINT","BIT","BIT VARYING","BOOL","BOOLEAN","CHAR","CHARACTER","CHARACTER VARYING","DECIMAL","DEC","DOUBLE","ENUM","FLOAT","INT","INTEGER","INTERVAL","NCHAR","NUMERIC","JSON","JSONB","PRECISION","REAL","SMALLINT","TEXT","TIME","TIMESTAMP","TIMESTAMPTZ","UUID","VARCHAR","XML","ZONE"],fa=u(["SELECT [ALL | DISTINCT]"]),ha=u(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY [ALL | DISTINCT]","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","FETCH {FIRST | NEXT}","FOR {UPDATE | NO KEY UPDATE | SHARE | KEY SHARE} [OF]","INSERT INTO","VALUES","DEFAULT VALUES","SET","RETURNING"]),Fr=u(["CREATE [GLOBAL | LOCAL] [TEMPORARY | TEMP | UNLOGGED] TABLE [IF NOT EXISTS]"]),eE=u(["CREATE [OR REPLACE] [TEMP | TEMPORARY] [RECURSIVE] VIEW","CREATE [MATERIALIZED] VIEW [IF NOT EXISTS]","UPDATE [ONLY]","WHERE CURRENT OF","ON CONFLICT","DELETE FROM [ONLY]","DROP TABLE [IF EXISTS]","ALTER TABLE [IF EXISTS] [ONLY]","ALTER TABLE ALL IN TABLESPACE","RENAME [COLUMN]","RENAME TO","ADD [COLUMN] [IF NOT EXISTS]","DROP [COLUMN] [IF EXISTS]","ALTER [COLUMN]","SET DATA TYPE","{SET | DROP} DEFAULT","{SET | DROP} NOT NULL","TRUNCATE [TABLE] [ONLY]","SET SCHEMA","AFTER","ABORT","ALTER AGGREGATE","ALTER COLLATION","ALTER CONVERSION","ALTER DATABASE","ALTER DEFAULT PRIVILEGES","ALTER DOMAIN","ALTER EVENT TRIGGER","ALTER EXTENSION","ALTER FOREIGN DATA WRAPPER","ALTER FOREIGN TABLE","ALTER FUNCTION","ALTER GROUP","ALTER INDEX","ALTER LANGUAGE","ALTER LARGE OBJECT","ALTER MATERIALIZED VIEW","ALTER OPERATOR","ALTER OPERATOR CLASS","ALTER OPERATOR FAMILY","ALTER POLICY","ALTER PROCEDURE","ALTER PUBLICATION","ALTER ROLE","ALTER ROUTINE","ALTER RULE","ALTER SCHEMA","ALTER SEQUENCE","ALTER SERVER","ALTER STATISTICS","ALTER SUBSCRIPTION","ALTER SYSTEM","ALTER TABLESPACE","ALTER TEXT SEARCH CONFIGURATION","ALTER TEXT SEARCH DICTIONARY","ALTER TEXT SEARCH PARSER","ALTER TEXT SEARCH TEMPLATE","ALTER TRIGGER","ALTER TYPE","ALTER USER","ALTER USER MAPPING","ALTER VIEW","ANALYZE","BEGIN","CALL","CHECKPOINT","CLOSE","CLUSTER","COMMENT ON","COMMIT","COMMIT PREPARED","COPY","CREATE ACCESS METHOD","CREATE [OR REPLACE] AGGREGATE","CREATE CAST","CREATE COLLATION","CREATE [DEFAULT] CONVERSION","CREATE DATABASE","CREATE DOMAIN","CREATE EVENT TRIGGER","CREATE EXTENSION","CREATE FOREIGN DATA WRAPPER","CREATE FOREIGN TABLE","CREATE [OR REPLACE] FUNCTION","CREATE GROUP","CREATE [UNIQUE] INDEX","CREATE [OR REPLACE] [TRUSTED] [PROCEDURAL] LANGUAGE","CREATE OPERATOR","CREATE OPERATOR CLASS","CREATE OPERATOR FAMILY","CREATE POLICY","CREATE [OR REPLACE] PROCEDURE","CREATE PUBLICATION","CREATE ROLE","CREATE [OR REPLACE] RULE","CREATE SCHEMA [AUTHORIZATION]","CREATE [TEMPORARY | TEMP | UNLOGGED] SEQUENCE","CREATE SERVER","CREATE STATISTICS","CREATE SUBSCRIPTION","CREATE TABLESPACE","CREATE TEXT SEARCH CONFIGURATION","CREATE TEXT SEARCH DICTIONARY","CREATE TEXT SEARCH PARSER","CREATE TEXT SEARCH TEMPLATE","CREATE [OR REPLACE] TRANSFORM","CREATE [OR REPLACE] [CONSTRAINT] TRIGGER","CREATE TYPE","CREATE USER","CREATE USER MAPPING","DEALLOCATE","DECLARE","DISCARD","DROP ACCESS METHOD","DROP AGGREGATE","DROP CAST","DROP COLLATION","DROP CONVERSION","DROP DATABASE","DROP DOMAIN","DROP EVENT TRIGGER","DROP EXTENSION","DROP FOREIGN DATA WRAPPER","DROP FOREIGN TABLE","DROP FUNCTION","DROP GROUP","DROP IDENTITY","DROP INDEX","DROP LANGUAGE","DROP MATERIALIZED VIEW [IF EXISTS]","DROP OPERATOR","DROP OPERATOR CLASS","DROP OPERATOR FAMILY","DROP OWNED","DROP POLICY","DROP PROCEDURE","DROP PUBLICATION","DROP ROLE","DROP ROUTINE","DROP RULE","DROP SCHEMA","DROP SEQUENCE","DROP SERVER","DROP STATISTICS","DROP SUBSCRIPTION","DROP TABLESPACE","DROP TEXT SEARCH CONFIGURATION","DROP TEXT SEARCH DICTIONARY","DROP TEXT SEARCH PARSER","DROP TEXT SEARCH TEMPLATE","DROP TRANSFORM","DROP TRIGGER","DROP TYPE","DROP USER","DROP USER MAPPING","DROP VIEW","EXECUTE","EXPLAIN","FETCH","GRANT","IMPORT FOREIGN SCHEMA","LISTEN","LOAD","LOCK","MOVE","NOTIFY","OVERRIDING SYSTEM VALUE","PREPARE","PREPARE TRANSACTION","REASSIGN OWNED","REFRESH MATERIALIZED VIEW","REINDEX","RELEASE SAVEPOINT","RESET [ALL|ROLE|SESSION AUTHORIZATION]","REVOKE","ROLLBACK","ROLLBACK PREPARED","ROLLBACK TO SAVEPOINT","SAVEPOINT","SECURITY LABEL","SELECT INTO","SET CONSTRAINTS","SET ROLE","SET SESSION AUTHORIZATION","SET TRANSACTION","SHOW","START TRANSACTION","UNLISTEN","VACUUM"]),Ua=u(["UNION [ALL | DISTINCT]","EXCEPT [ALL | DISTINCT]","INTERSECT [ALL | DISTINCT]"]),xa=u(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN"]),ga=u(["PRIMARY KEY","GENERATED {ALWAYS | BY DEFAULT} AS IDENTITY","ON {UPDATE | DELETE} [NO ACTION | RESTRICT | CASCADE | SET NULL | SET DEFAULT]","DO {NOTHING | UPDATE}","AS MATERIALIZED","{ROWS | RANGE | GROUPS} BETWEEN","IS [NOT] DISTINCT FROM","NULLS {FIRST | LAST}","WITH ORDINALITY"]),ya=u(["[TIMESTAMP | TIME] {WITH | WITHOUT} TIME ZONE"]),Ga={name:"postgresql",tokenizerOptions:{reservedSelect:fa,reservedClauses:[...ha,...Fr,...eE],reservedSetOperations:Ua,reservedJoins:xa,reservedKeywordPhrases:ga,reservedDataTypePhrases:ya,reservedKeywords:Ma,reservedDataTypes:ma,reservedFunctionNames:Pa,nestedBlockComments:!0,extraParens:["[]"],underscoresInNumbers:!0,stringTypes:["$$",{quote:"''-qq",prefixes:["U&"]},{quote:"''-qq-bs",prefixes:["E"],requirePrefix:!0},{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:[{quote:'""-qq',prefixes:["U&"]}],identChars:{rest:"$"},paramTypes:{numbered:["$"]},operators:["%","^","|/","||/","@",":=","&","|","#","~","<<",">>","~>~","~<~","~>=~","~<=~","@-@","@@","##","<->","&&","&<","&>","<<|","&<|","|>>","|&>","<^","^>","?#","?-","?|","?-|","?||","@>","<@","~=","?","@?","?&","->","->>","#>","#>>","#-","=>",">>=","<<=","~~","~~*","!~~","!~~*","~","~*","!~","!~*","-|-","||","@@@","!!","^@","<%","%>","<<%","%>>","<<->","<->>","<<<->","<->>>","::",":","<#>","<=>","<+>","<~>","<%>"],operatorKeyword:!0},formatOptions:{alwaysDenseOperators:["::",":"],onelineClauses:[...Fr,...eE],tabularOnelineClauses:eE}},Ba=["ANY_VALUE","APPROXIMATE PERCENTILE_DISC","AVG","COUNT","LISTAGG","MAX","MEDIAN","MIN","PERCENTILE_CONT","STDDEV_SAMP","STDDEV_POP","SUM","VAR_SAMP","VAR_POP","array_concat","array_flatten","get_array_length","split_to_array","subarray","BIT_AND","BIT_OR","BOOL_AND","BOOL_OR","COALESCE","DECODE","GREATEST","LEAST","NVL","NVL2","NULLIF","ADD_MONTHS","AT TIME ZONE","CONVERT_TIMEZONE","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATE_CMP","DATE_CMP_TIMESTAMP","DATE_CMP_TIMESTAMPTZ","DATE_PART_YEAR","DATEADD","DATEDIFF","DATE_PART","DATE_TRUNC","EXTRACT","GETDATE","INTERVAL_CMP","LAST_DAY","MONTHS_BETWEEN","NEXT_DAY","SYSDATE","TIMEOFDAY","TIMESTAMP_CMP","TIMESTAMP_CMP_DATE","TIMESTAMP_CMP_TIMESTAMPTZ","TIMESTAMPTZ_CMP","TIMESTAMPTZ_CMP_DATE","TIMESTAMPTZ_CMP_TIMESTAMP","TIMEZONE","TO_TIMESTAMP","TRUNC","AddBBox","DropBBox","GeometryType","ST_AddPoint","ST_Angle","ST_Area","ST_AsBinary","ST_AsEWKB","ST_AsEWKT","ST_AsGeoJSON","ST_AsText","ST_Azimuth","ST_Boundary","ST_Collect","ST_Contains","ST_ContainsProperly","ST_ConvexHull","ST_CoveredBy","ST_Covers","ST_Crosses","ST_Dimension","ST_Disjoint","ST_Distance","ST_DistanceSphere","ST_DWithin","ST_EndPoint","ST_Envelope","ST_Equals","ST_ExteriorRing","ST_Force2D","ST_Force3D","ST_Force3DM","ST_Force3DZ","ST_Force4D","ST_GeometryN","ST_GeometryType","ST_GeomFromEWKB","ST_GeomFromEWKT","ST_GeomFromText","ST_GeomFromWKB","ST_InteriorRingN","ST_Intersects","ST_IsPolygonCCW","ST_IsPolygonCW","ST_IsClosed","ST_IsCollection","ST_IsEmpty","ST_IsSimple","ST_IsValid","ST_Length","ST_LengthSphere","ST_Length2D","ST_LineFromMultiPoint","ST_LineInterpolatePoint","ST_M","ST_MakeEnvelope","ST_MakeLine","ST_MakePoint","ST_MakePolygon","ST_MemSize","ST_MMax","ST_MMin","ST_Multi","ST_NDims","ST_NPoints","ST_NRings","ST_NumGeometries","ST_NumInteriorRings","ST_NumPoints","ST_Perimeter","ST_Perimeter2D","ST_Point","ST_PointN","ST_Points","ST_Polygon","ST_RemovePoint","ST_Reverse","ST_SetPoint","ST_SetSRID","ST_Simplify","ST_SRID","ST_StartPoint","ST_Touches","ST_Within","ST_X","ST_XMax","ST_XMin","ST_Y","ST_YMax","ST_YMin","ST_Z","ST_ZMax","ST_ZMin","SupportsBBox","CHECKSUM","FUNC_SHA1","FNV_HASH","MD5","SHA","SHA1","SHA2","HLL","HLL_CREATE_SKETCH","HLL_CARDINALITY","HLL_COMBINE","IS_VALID_JSON","IS_VALID_JSON_ARRAY","JSON_ARRAY_LENGTH","JSON_EXTRACT_ARRAY_ELEMENT_TEXT","JSON_EXTRACT_PATH_TEXT","JSON_PARSE","JSON_SERIALIZE","ABS","ACOS","ASIN","ATAN","ATAN2","CBRT","CEILING","CEIL","COS","COT","DEGREES","DEXP","DLOG1","DLOG10","EXP","FLOOR","LN","LOG","MOD","PI","POWER","RADIANS","RANDOM","ROUND","SIN","SIGN","SQRT","TAN","TO_HEX","TRUNC","EXPLAIN_MODEL","ASCII","BPCHARCMP","BTRIM","BTTEXT_PATTERN_CMP","CHAR_LENGTH","CHARACTER_LENGTH","CHARINDEX","CHR","COLLATE","CONCAT","CRC32","DIFFERENCE","INITCAP","LEFT","RIGHT","LEN","LENGTH","LOWER","LPAD","RPAD","LTRIM","OCTETINDEX","OCTET_LENGTH","POSITION","QUOTE_IDENT","QUOTE_LITERAL","REGEXP_COUNT","REGEXP_INSTR","REGEXP_REPLACE","REGEXP_SUBSTR","REPEAT","REPLACE","REPLICATE","REVERSE","RTRIM","SOUNDEX","SPLIT_PART","STRPOS","STRTOL","SUBSTRING","TEXTLEN","TRANSLATE","TRIM","UPPER","decimal_precision","decimal_scale","is_array","is_bigint","is_boolean","is_char","is_decimal","is_float","is_integer","is_object","is_scalar","is_smallint","is_varchar","json_typeof","AVG","COUNT","CUME_DIST","DENSE_RANK","FIRST_VALUE","LAST_VALUE","LAG","LEAD","LISTAGG","MAX","MEDIAN","MIN","NTH_VALUE","NTILE","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","RANK","RATIO_TO_REPORT","ROW_NUMBER","STDDEV_SAMP","STDDEV_POP","SUM","VAR_SAMP","VAR_POP","CAST","CONVERT","TO_CHAR","TO_DATE","TO_NUMBER","TEXT_TO_INT_ALT","TEXT_TO_NUMERIC_ALT","CHANGE_QUERY_PRIORITY","CHANGE_SESSION_PRIORITY","CHANGE_USER_PRIORITY","CURRENT_SETTING","PG_CANCEL_BACKEND","PG_TERMINATE_BACKEND","REBOOT_CLUSTER","SET_CONFIG","CURRENT_AWS_ACCOUNT","CURRENT_DATABASE","CURRENT_NAMESPACE","CURRENT_SCHEMA","CURRENT_SCHEMAS","CURRENT_USER","CURRENT_USER_ID","HAS_ASSUMEROLE_PRIVILEGE","HAS_DATABASE_PRIVILEGE","HAS_SCHEMA_PRIVILEGE","HAS_TABLE_PRIVILEGE","PG_BACKEND_PID","PG_GET_COLS","PG_GET_GRANTEE_BY_IAM_ROLE","PG_GET_IAM_ROLE_BY_USER","PG_GET_LATE_BINDING_VIEW_COLS","PG_LAST_COPY_COUNT","PG_LAST_COPY_ID","PG_LAST_UNLOAD_ID","PG_LAST_QUERY_ID","PG_LAST_UNLOAD_COUNT","SESSION_USER","SLICE_NUM","USER","VERSION"],Ha=["AES128","AES256","ALL","ALLOWOVERWRITE","ANY","AS","ASC","AUTHORIZATION","BACKUP","BETWEEN","BINARY","BOTH","CHECK","COLUMN","CONSTRAINT","CREATE","CROSS","DEFAULT","DEFERRABLE","DEFLATE","DEFRAG","DESC","DISABLE","DISTINCT","DO","ENABLE","ENCODE","ENCRYPT","ENCRYPTION","EXPLICIT","FALSE","FOR","FOREIGN","FREEZE","FROM","FULL","GLOBALDICT256","GLOBALDICT64K","GROUP","IDENTITY","IGNORE","ILIKE","IN","INITIALLY","INNER","INTO","IS","ISNULL","LANGUAGE","LEADING","LIKE","LIMIT","LOCALTIME","LOCALTIMESTAMP","LUN","LUNS","MINUS","NATURAL","NEW","NOT","NOTNULL","NULL","NULLS","OFF","OFFLINE","OFFSET","OID","OLD","ON","ONLY","OPEN","ORDER","OUTER","OVERLAPS","PARALLEL","PARTITION","PERCENT","PERMISSIONS","PLACING","PRIMARY","RECOVER","REFERENCES","REJECTLOG","RESORT","RESPECT","RESTORE","SIMILAR","SNAPSHOT","SOME","SYSTEM","TABLE","TAG","TDES","THEN","TIMESTAMP","TO","TOP","TRAILING","TRUE","UNIQUE","USING","VERBOSE","WALLET","WITHOUT","ACCEPTANYDATE","ACCEPTINVCHARS","BLANKSASNULL","DATEFORMAT","EMPTYASNULL","ENCODING","ESCAPE","EXPLICIT_IDS","FILLRECORD","IGNOREBLANKLINES","IGNOREHEADER","REMOVEQUOTES","ROUNDEC","TIMEFORMAT","TRIMBLANKS","TRUNCATECOLUMNS","COMPROWS","COMPUPDATE","MAXERROR","NOLOAD","STATUPDATE","FORMAT","CSV","DELIMITER","FIXEDWIDTH","SHAPEFILE","AVRO","JSON","PARQUET","ORC","ACCESS_KEY_ID","CREDENTIALS","ENCRYPTED","IAM_ROLE","MASTER_SYMMETRIC_KEY","SECRET_ACCESS_KEY","SESSION_TOKEN","BZIP2","GZIP","LZOP","ZSTD","MANIFEST","READRATIO","REGION","SSH","RAW","AZ64","BYTEDICT","DELTA","DELTA32K","LZO","MOSTLY8","MOSTLY16","MOSTLY32","RUNLENGTH","TEXT255","TEXT32K","CATALOG_ROLE","SECRET_ARN","EXTERNAL","AUTO","EVEN","KEY","PREDICATE","COMPRESSION"],ba=["ARRAY","BIGINT","BPCHAR","CHAR","CHARACTER VARYING","CHARACTER","DECIMAL","INT","INT2","INT4","INT8","INTEGER","NCHAR","NUMERIC","NVARCHAR","SMALLINT","TEXT","VARBYTE","VARCHAR"],Fa=u(["SELECT [ALL | DISTINCT]"]),Ya=u(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","QUALIFY","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT INTO","VALUES","SET"]),Yr=u(["CREATE [TEMPORARY | TEMP | LOCAL TEMPORARY | LOCAL TEMP] TABLE [IF NOT EXISTS]"]),tE=u(["CREATE [OR REPLACE | MATERIALIZED] VIEW","UPDATE","DELETE [FROM]","DROP TABLE [IF EXISTS]","ALTER TABLE","ALTER TABLE APPEND","ADD [COLUMN]","DROP [COLUMN]","RENAME TO","RENAME COLUMN","ALTER COLUMN","TYPE","ENCODE","TRUNCATE [TABLE]","ABORT","ALTER DATABASE","ALTER DATASHARE","ALTER DEFAULT PRIVILEGES","ALTER GROUP","ALTER MATERIALIZED VIEW","ALTER PROCEDURE","ALTER SCHEMA","ALTER USER","ANALYSE","ANALYZE","ANALYSE COMPRESSION","ANALYZE COMPRESSION","BEGIN","CALL","CANCEL","CLOSE","COMMIT","COPY","CREATE DATABASE","CREATE DATASHARE","CREATE EXTERNAL FUNCTION","CREATE EXTERNAL SCHEMA","CREATE EXTERNAL TABLE","CREATE FUNCTION","CREATE GROUP","CREATE LIBRARY","CREATE MODEL","CREATE PROCEDURE","CREATE SCHEMA","CREATE USER","DEALLOCATE","DECLARE","DESC DATASHARE","DROP DATABASE","DROP DATASHARE","DROP FUNCTION","DROP GROUP","DROP LIBRARY","DROP MODEL","DROP MATERIALIZED VIEW","DROP PROCEDURE","DROP SCHEMA","DROP USER","DROP VIEW","DROP","EXECUTE","EXPLAIN","FETCH","GRANT","LOCK","PREPARE","REFRESH MATERIALIZED VIEW","RESET","REVOKE","ROLLBACK","SELECT INTO","SET SESSION AUTHORIZATION","SET SESSION CHARACTERISTICS","SHOW","SHOW EXTERNAL TABLE","SHOW MODEL","SHOW DATASHARES","SHOW PROCEDURE","SHOW TABLE","SHOW VIEW","START TRANSACTION","UNLOAD","VACUUM"]),va=u(["UNION [ALL]","EXCEPT","INTERSECT","MINUS"]),Va=u(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN"]),Wa=u(["NULL AS","DATA CATALOG","HIVE METASTORE","{ROWS | RANGE} BETWEEN"]),wa=u([]),Xa={name:"redshift",tokenizerOptions:{reservedSelect:Fa,reservedClauses:[...Ya,...Yr,...tE],reservedSetOperations:va,reservedJoins:Va,reservedKeywordPhrases:Wa,reservedDataTypePhrases:wa,reservedKeywords:Ha,reservedDataTypes:ba,reservedFunctionNames:Ba,extraParens:["[]"],stringTypes:["''-qq"],identTypes:['""-qq'],identChars:{first:"#"},paramTypes:{numbered:["$"]},operators:["^","%","@","|/","||/","&","|","~","<<",">>","||","::"]},formatOptions:{alwaysDenseOperators:["::"],onelineClauses:[...Yr,...tE],tabularOnelineClauses:tE}},ja=["ADD","AFTER","ALL","ALTER","ANALYZE","AND","ANTI","ANY","ARCHIVE","AS","ASC","AT","AUTHORIZATION","BETWEEN","BOTH","BUCKET","BUCKETS","BY","CACHE","CASCADE","CAST","CHANGE","CHECK","CLEAR","CLUSTER","CLUSTERED","CODEGEN","COLLATE","COLLECTION","COLUMN","COLUMNS","COMMENT","COMMIT","COMPACT","COMPACTIONS","COMPUTE","CONCATENATE","CONSTRAINT","COST","CREATE","CROSS","CUBE","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","DATA","DATABASE","DATABASES","DAY","DBPROPERTIES","DEFINED","DELETE","DELIMITED","DESC","DESCRIBE","DFS","DIRECTORIES","DIRECTORY","DISTINCT","DISTRIBUTE","DIV","DROP","ESCAPE","ESCAPED","EXCEPT","EXCHANGE","EXISTS","EXPORT","EXTENDED","EXTERNAL","EXTRACT","FALSE","FETCH","FIELDS","FILTER","FILEFORMAT","FIRST","FIRST_VALUE","FOLLOWING","FOR","FOREIGN","FORMAT","FORMATTED","FULL","FUNCTION","FUNCTIONS","GLOBAL","GRANT","GROUP","GROUPING","HOUR","IF","IGNORE","IMPORT","IN","INDEX","INDEXES","INNER","INPATH","INPUTFORMAT","INTERSECT","INTO","IS","ITEMS","KEYS","LAST","LAST_VALUE","LATERAL","LAZY","LEADING","LEFT","LIKE","LINES","LIST","LOCAL","LOCATION","LOCK","LOCKS","LOGICAL","MACRO","MATCHED","MERGE","MINUTE","MONTH","MSCK","NAMESPACE","NAMESPACES","NATURAL","NO","NOT","NULL","NULLS","OF","ONLY","OPTION","OPTIONS","OR","ORDER","OUT","OUTER","OUTPUTFORMAT","OVER","OVERLAPS","OVERLAY","OVERWRITE","OWNER","PARTITION","PARTITIONED","PARTITIONS","PERCENT","PLACING","POSITION","PRECEDING","PRIMARY","PRINCIPALS","PROPERTIES","PURGE","QUERY","RANGE","RECORDREADER","RECORDWRITER","RECOVER","REDUCE","REFERENCES","RENAME","REPAIR","REPLACE","RESPECT","RESTRICT","REVOKE","RIGHT","RLIKE","ROLE","ROLES","ROLLBACK","ROLLUP","ROW","ROWS","SCHEMA","SECOND","SELECT","SEMI","SEPARATED","SERDE","SERDEPROPERTIES","SESSION_USER","SETS","SHOW","SKEWED","SOME","SORT","SORTED","START","STATISTICS","STORED","STRATIFY","SUBSTR","SUBSTRING","TABLE","TABLES","TBLPROPERTIES","TEMPORARY","TERMINATED","THEN","TO","TOUCH","TRAILING","TRANSACTION","TRANSACTIONS","TRIM","TRUE","TRUNCATE","UNARCHIVE","UNBOUNDED","UNCACHE","UNIQUE","UNKNOWN","UNLOCK","UNSET","USE","USER","USING","VIEW","WINDOW","YEAR","ANALYSE","ARRAY_ZIP","COALESCE","CONTAINS","CONVERT","DAYS","DAY_HOUR","DAY_MINUTE","DAY_SECOND","DECODE","DEFAULT","DISTINCTROW","ENCODE","EXPLODE","EXPLODE_OUTER","FIXED","GREATEST","GROUP_CONCAT","HOURS","HOUR_MINUTE","HOUR_SECOND","IFNULL","LEAST","LEVEL","MINUTE_SECOND","NULLIF","OFFSET","ON","OPTIMIZE","REGEXP","SEPARATOR","SIZE","TYPE","TYPES","UNSIGNED","VARIABLES","YEAR_MONTH"],$a=["ARRAY","BIGINT","BINARY","BOOLEAN","BYTE","CHAR","DATE","DEC","DECIMAL","DOUBLE","FLOAT","INT","INTEGER","INTERVAL","LONG","MAP","NUMERIC","REAL","SHORT","SMALLINT","STRING","STRUCT","TIMESTAMP_LTZ","TIMESTAMP_NTZ","TIMESTAMP","TINYINT","VARCHAR"],ka=["APPROX_COUNT_DISTINCT","APPROX_PERCENTILE","AVG","BIT_AND","BIT_OR","BIT_XOR","BOOL_AND","BOOL_OR","COLLECT_LIST","COLLECT_SET","CORR","COUNT","COUNT","COUNT","COUNT_IF","COUNT_MIN_SKETCH","COVAR_POP","COVAR_SAMP","EVERY","FIRST","FIRST_VALUE","GROUPING","GROUPING_ID","KURTOSIS","LAST","LAST_VALUE","MAX","MAX_BY","MEAN","MIN","MIN_BY","PERCENTILE","PERCENTILE","PERCENTILE_APPROX","SKEWNESS","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","SUM","VAR_POP","VAR_SAMP","VARIANCE","CUME_DIST","DENSE_RANK","LAG","LEAD","NTH_VALUE","NTILE","PERCENT_RANK","RANK","ROW_NUMBER","ARRAY","ARRAY_CONTAINS","ARRAY_DISTINCT","ARRAY_EXCEPT","ARRAY_INTERSECT","ARRAY_JOIN","ARRAY_MAX","ARRAY_MIN","ARRAY_POSITION","ARRAY_REMOVE","ARRAY_REPEAT","ARRAY_UNION","ARRAYS_OVERLAP","ARRAYS_ZIP","FLATTEN","SEQUENCE","SHUFFLE","SLICE","SORT_ARRAY","ELEMENT_AT","ELEMENT_AT","MAP_CONCAT","MAP_ENTRIES","MAP_FROM_ARRAYS","MAP_FROM_ENTRIES","MAP_KEYS","MAP_VALUES","STR_TO_MAP","ADD_MONTHS","CURRENT_DATE","CURRENT_DATE","CURRENT_TIMESTAMP","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","DATE_ADD","DATE_FORMAT","DATE_FROM_UNIX_DATE","DATE_PART","DATE_SUB","DATE_TRUNC","DATEDIFF","DAY","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","EXTRACT","FROM_UNIXTIME","FROM_UTC_TIMESTAMP","HOUR","LAST_DAY","MAKE_DATE","MAKE_DT_INTERVAL","MAKE_INTERVAL","MAKE_TIMESTAMP","MAKE_YM_INTERVAL","MINUTE","MONTH","MONTHS_BETWEEN","NEXT_DAY","NOW","QUARTER","SECOND","SESSION_WINDOW","TIMESTAMP_MICROS","TIMESTAMP_MILLIS","TIMESTAMP_SECONDS","TO_DATE","TO_TIMESTAMP","TO_UNIX_TIMESTAMP","TO_UTC_TIMESTAMP","TRUNC","UNIX_DATE","UNIX_MICROS","UNIX_MILLIS","UNIX_SECONDS","UNIX_TIMESTAMP","WEEKDAY","WEEKOFYEAR","WINDOW","YEAR","FROM_JSON","GET_JSON_OBJECT","JSON_ARRAY_LENGTH","JSON_OBJECT_KEYS","JSON_TUPLE","SCHEMA_OF_JSON","TO_JSON","ABS","ACOS","ACOSH","AGGREGATE","ARRAY_SORT","ASCII","ASIN","ASINH","ASSERT_TRUE","ATAN","ATAN2","ATANH","BASE64","BIN","BIT_COUNT","BIT_GET","BIT_LENGTH","BROUND","BTRIM","CARDINALITY","CBRT","CEIL","CEILING","CHAR_LENGTH","CHARACTER_LENGTH","CHR","CONCAT","CONCAT_WS","CONV","COS","COSH","COT","CRC32","CURRENT_CATALOG","CURRENT_DATABASE","CURRENT_USER","DEGREES","ELT","EXP","EXPM1","FACTORIAL","FIND_IN_SET","FLOOR","FORALL","FORMAT_NUMBER","FORMAT_STRING","FROM_CSV","GETBIT","HASH","HEX","HYPOT","INITCAP","INLINE","INLINE_OUTER","INPUT_FILE_BLOCK_LENGTH","INPUT_FILE_BLOCK_START","INPUT_FILE_NAME","INSTR","ISNAN","ISNOTNULL","ISNULL","JAVA_METHOD","LCASE","LEFT","LENGTH","LEVENSHTEIN","LN","LOCATE","LOG","LOG10","LOG1P","LOG2","LOWER","LPAD","LTRIM","MAP_FILTER","MAP_ZIP_WITH","MD5","MOD","MONOTONICALLY_INCREASING_ID","NAMED_STRUCT","NANVL","NEGATIVE","NVL","NVL2","OCTET_LENGTH","OVERLAY","PARSE_URL","PI","PMOD","POSEXPLODE","POSEXPLODE_OUTER","POSITION","POSITIVE","POW","POWER","PRINTF","RADIANS","RAISE_ERROR","RAND","RANDN","RANDOM","REFLECT","REGEXP_EXTRACT","REGEXP_EXTRACT_ALL","REGEXP_LIKE","REGEXP_REPLACE","REPEAT","REPLACE","REVERSE","RIGHT","RINT","ROUND","RPAD","RTRIM","SCHEMA_OF_CSV","SENTENCES","SHA","SHA1","SHA2","SHIFTLEFT","SHIFTRIGHT","SHIFTRIGHTUNSIGNED","SIGN","SIGNUM","SIN","SINH","SOUNDEX","SPACE","SPARK_PARTITION_ID","SPLIT","SQRT","STACK","SUBSTR","SUBSTRING","SUBSTRING_INDEX","TAN","TANH","TO_CSV","TRANSFORM_KEYS","TRANSFORM_VALUES","TRANSLATE","TRIM","TRY_ADD","TRY_DIVIDE","TYPEOF","UCASE","UNBASE64","UNHEX","UPPER","UUID","VERSION","WIDTH_BUCKET","XPATH","XPATH_BOOLEAN","XPATH_DOUBLE","XPATH_FLOAT","XPATH_INT","XPATH_LONG","XPATH_NUMBER","XPATH_SHORT","XPATH_STRING","XXHASH64","ZIP_WITH","CAST","COALESCE","NULLIF"],Ka=u(["SELECT [ALL | DISTINCT]"]),qa=u(["WITH","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","SORT BY","CLUSTER BY","DISTRIBUTE BY","LIMIT","INSERT [INTO | OVERWRITE] [TABLE]","VALUES","INSERT OVERWRITE [LOCAL] DIRECTORY","LOAD DATA [LOCAL] INPATH","[OVERWRITE] INTO TABLE"]),vr=u(["CREATE [EXTERNAL] TABLE [IF NOT EXISTS]"]),EE=u(["CREATE [OR REPLACE] [GLOBAL TEMPORARY | TEMPORARY] VIEW [IF NOT EXISTS]","DROP TABLE [IF EXISTS]","ALTER TABLE","ADD COLUMNS","DROP {COLUMN | COLUMNS}","RENAME TO","RENAME COLUMN","ALTER COLUMN","TRUNCATE TABLE","LATERAL VIEW","ALTER DATABASE","ALTER VIEW","CREATE DATABASE","CREATE FUNCTION","DROP DATABASE","DROP FUNCTION","DROP VIEW","REPAIR TABLE","USE DATABASE","TABLESAMPLE","PIVOT","TRANSFORM","EXPLAIN","ADD FILE","ADD JAR","ANALYZE TABLE","CACHE TABLE","CLEAR CACHE","DESCRIBE DATABASE","DESCRIBE FUNCTION","DESCRIBE QUERY","DESCRIBE TABLE","LIST FILE","LIST JAR","REFRESH","REFRESH TABLE","REFRESH FUNCTION","RESET","SHOW COLUMNS","SHOW CREATE TABLE","SHOW DATABASES","SHOW FUNCTIONS","SHOW PARTITIONS","SHOW TABLE EXTENDED","SHOW TABLES","SHOW TBLPROPERTIES","SHOW VIEWS","UNCACHE TABLE"]),Ja=u(["UNION [ALL | DISTINCT]","EXCEPT [ALL | DISTINCT]","INTERSECT [ALL | DISTINCT]"]),Qa=u(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN","[LEFT] {ANTI | SEMI} JOIN","NATURAL [LEFT] {ANTI | SEMI} JOIN"]),za=u(["ON DELETE","ON UPDATE","CURRENT ROW","{ROWS | RANGE} BETWEEN"]),Za=u([]),eR={name:"spark",tokenizerOptions:{reservedSelect:Ka,reservedClauses:[...qa,...vr,...EE],reservedSetOperations:Ja,reservedJoins:Qa,reservedKeywordPhrases:za,reservedDataTypePhrases:Za,supportsXor:!0,reservedKeywords:ja,reservedDataTypes:$a,reservedFunctionNames:ka,extraParens:["[]"],stringTypes:["''-bs",'""-bs',{quote:"''-raw",prefixes:["R","X"],requirePrefix:!0},{quote:'""-raw',prefixes:["R","X"],requirePrefix:!0}],identTypes:["``"],identChars:{allowFirstCharNumber:!0},variableTypes:[{quote:"{}",prefixes:["$"],requirePrefix:!0}],operators:["%","~","^","|","&","<=>","==","!","||","->"],postProcess:tR},formatOptions:{onelineClauses:[...vr,...EE],tabularOnelineClauses:EE}};function tR(e){return e.map((t,r)=>{const s=e[r-1]||me,n=e[r+1]||me;return fe.WINDOW(t)&&n.type===D.OPEN_PAREN?Object.assign(Object.assign({},t),{type:D.RESERVED_FUNCTION_NAME}):t.text==="ITEMS"&&t.type===D.RESERVED_KEYWORD&&!(s.text==="COLLECTION"&&n.text==="TERMINATED")?Object.assign(Object.assign({},t),{type:D.IDENTIFIER,text:t.raw}):t})}const ER=["ABS","CHANGES","CHAR","COALESCE","FORMAT","GLOB","HEX","IFNULL","IIF","INSTR","LAST_INSERT_ROWID","LENGTH","LIKE","LIKELIHOOD","LIKELY","LOAD_EXTENSION","LOWER","LTRIM","NULLIF","PRINTF","QUOTE","RANDOM","RANDOMBLOB","REPLACE","ROUND","RTRIM","SIGN","SOUNDEX","SQLITE_COMPILEOPTION_GET","SQLITE_COMPILEOPTION_USED","SQLITE_OFFSET","SQLITE_SOURCE_ID","SQLITE_VERSION","SUBSTR","SUBSTRING","TOTAL_CHANGES","TRIM","TYPEOF","UNICODE","UNLIKELY","UPPER","ZEROBLOB","AVG","COUNT","GROUP_CONCAT","MAX","MIN","SUM","TOTAL","DATE","TIME","DATETIME","JULIANDAY","UNIXEPOCH","STRFTIME","row_number","rank","dense_rank","percent_rank","cume_dist","ntile","lag","lead","first_value","last_value","nth_value","ACOS","ACOSH","ASIN","ASINH","ATAN","ATAN2","ATANH","CEIL","CEILING","COS","COSH","DEGREES","EXP","FLOOR","LN","LOG","LOG","LOG10","LOG2","MOD","PI","POW","POWER","RADIANS","SIN","SINH","SQRT","TAN","TANH","TRUNC","JSON","JSON_ARRAY","JSON_ARRAY_LENGTH","JSON_ARRAY_LENGTH","JSON_EXTRACT","JSON_INSERT","JSON_OBJECT","JSON_PATCH","JSON_REMOVE","JSON_REPLACE","JSON_SET","JSON_TYPE","JSON_TYPE","JSON_VALID","JSON_QUOTE","JSON_GROUP_ARRAY","JSON_GROUP_OBJECT","JSON_EACH","JSON_TREE","CAST"],rR=["ABORT","ACTION","ADD","AFTER","ALL","ALTER","AND","ARE","ALWAYS","ANALYZE","AS","ASC","ATTACH","AUTOINCREMENT","BEFORE","BEGIN","BETWEEN","BY","CASCADE","CASE","CAST","CHECK","COLLATE","COLUMN","COMMIT","CONFLICT","CONSTRAINT","CREATE","CROSS","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATABASE","DEFAULT","DEFERRABLE","DEFERRED","DELETE","DESC","DETACH","DISTINCT","DO","DROP","EACH","ELSE","END","ESCAPE","EXCEPT","EXCLUDE","EXCLUSIVE","EXISTS","EXPLAIN","FAIL","FILTER","FIRST","FOLLOWING","FOR","FOREIGN","FROM","FULL","GENERATED","GLOB","GROUP","HAVING","IF","IGNORE","IMMEDIATE","IN","INDEX","INDEXED","INITIALLY","INNER","INSERT","INSTEAD","INTERSECT","INTO","IS","ISNULL","JOIN","KEY","LAST","LEFT","LIKE","LIMIT","MATCH","MATERIALIZED","NATURAL","NO","NOT","NOTHING","NOTNULL","NULL","NULLS","OF","OFFSET","ON","ONLY","OPEN","OR","ORDER","OTHERS","OUTER","OVER","PARTITION","PLAN","PRAGMA","PRECEDING","PRIMARY","QUERY","RAISE","RANGE","RECURSIVE","REFERENCES","REGEXP","REINDEX","RELEASE","RENAME","REPLACE","RESTRICT","RETURNING","RIGHT","ROLLBACK","ROW","ROWS","SAVEPOINT","SELECT","SET","TABLE","TEMP","TEMPORARY","THEN","TIES","TO","TRANSACTION","TRIGGER","UNBOUNDED","UNION","UNIQUE","UPDATE","USING","VACUUM","VALUES","VIEW","VIRTUAL","WHEN","WHERE","WINDOW","WITH","WITHOUT"],nR=["ANY","ARRAY","BLOB","CHARACTER","DECIMAL","INT","INTEGER","NATIVE CHARACTER","NCHAR","NUMERIC","NVARCHAR","REAL","TEXT","VARCHAR","VARYING CHARACTER"],sR=u(["SELECT [ALL | DISTINCT]"]),TR=u(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT [OR ABORT | OR FAIL | OR IGNORE | OR REPLACE | OR ROLLBACK] INTO","REPLACE INTO","VALUES","SET","RETURNING"]),Vr=u(["CREATE [TEMPORARY | TEMP] TABLE [IF NOT EXISTS]"]),rE=u(["CREATE [TEMPORARY | TEMP] VIEW [IF NOT EXISTS]","UPDATE [OR ABORT | OR FAIL | OR IGNORE | OR REPLACE | OR ROLLBACK]","ON CONFLICT","DELETE FROM","DROP TABLE [IF EXISTS]","ALTER TABLE","ADD [COLUMN]","DROP [COLUMN]","RENAME [COLUMN]","RENAME TO","SET SCHEMA"]),oR=u(["UNION [ALL]","EXCEPT","INTERSECT"]),iR=u(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN"]),aR=u(["ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]","{ROWS | RANGE | GROUPS} BETWEEN","DO UPDATE"]),RR=u([]),AR={name:"sqlite",tokenizerOptions:{reservedSelect:sR,reservedClauses:[...TR,...Vr,...rE],reservedSetOperations:oR,reservedJoins:iR,reservedKeywordPhrases:aR,reservedDataTypePhrases:RR,reservedKeywords:rR,reservedDataTypes:nR,reservedFunctionNames:ER,stringTypes:["''-qq",{quote:"''-raw",prefixes:["X"],requirePrefix:!0}],identTypes:['""-qq',"``","[]"],paramTypes:{positional:!0,numbered:["?"],named:[":","@","$"]},operators:["%","~","&","|","<<",">>","==","->","->>","||"]},formatOptions:{onelineClauses:[...Vr,...rE],tabularOnelineClauses:rE}},SR=["GROUPING","RANK","DENSE_RANK","PERCENT_RANK","CUME_DIST","ROW_NUMBER","POSITION","OCCURRENCES_REGEX","POSITION_REGEX","EXTRACT","CHAR_LENGTH","CHARACTER_LENGTH","OCTET_LENGTH","CARDINALITY","ABS","MOD","LN","EXP","POWER","SQRT","FLOOR","CEIL","CEILING","WIDTH_BUCKET","SUBSTRING","SUBSTRING_REGEX","UPPER","LOWER","CONVERT","TRANSLATE","TRANSLATE_REGEX","TRIM","OVERLAY","NORMALIZE","SPECIFICTYPE","CURRENT_DATE","CURRENT_TIME","LOCALTIME","CURRENT_TIMESTAMP","LOCALTIMESTAMP","COUNT","AVG","MAX","MIN","SUM","STDDEV_POP","STDDEV_SAMP","VAR_SAMP","VAR_POP","COLLECT","FUSION","INTERSECTION","COVAR_POP","COVAR_SAMP","CORR","REGR_SLOPE","REGR_INTERCEPT","REGR_COUNT","REGR_R2","REGR_AVGX","REGR_AVGY","REGR_SXX","REGR_SYY","REGR_SXY","PERCENTILE_CONT","PERCENTILE_DISC","CAST","COALESCE","NULLIF","ROUND","SIN","COS","TAN","ASIN","ACOS","ATAN"],lR=["ALL","ALLOCATE","ALTER","ANY","ARE","AS","ASC","ASENSITIVE","ASYMMETRIC","AT","ATOMIC","AUTHORIZATION","BEGIN","BETWEEN","BOTH","BY","CALL","CALLED","CASCADED","CAST","CHECK","CLOSE","COALESCE","COLLATE","COLUMN","COMMIT","CONDITION","CONNECT","CONSTRAINT","CORRESPONDING","CREATE","CROSS","CUBE","CURRENT","CURRENT_CATALOG","CURRENT_DEFAULT_TRANSFORM_GROUP","CURRENT_PATH","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_TRANSFORM_GROUP_FOR_TYPE","CURRENT_USER","CURSOR","CYCLE","DEALLOCATE","DAY","DECLARE","DEFAULT","DELETE","DEREF","DESC","DESCRIBE","DETERMINISTIC","DISCONNECT","DISTINCT","DROP","DYNAMIC","EACH","ELEMENT","END-EXEC","ESCAPE","EVERY","EXCEPT","EXEC","EXECUTE","EXISTS","EXTERNAL","FALSE","FETCH","FILTER","FOR","FOREIGN","FREE","FROM","FULL","FUNCTION","GET","GLOBAL","GRANT","GROUP","HAVING","HOLD","HOUR","IDENTITY","IN","INDICATOR","INNER","INOUT","INSENSITIVE","INSERT","INTERSECT","INTO","IS","LANGUAGE","LARGE","LATERAL","LEADING","LEFT","LIKE","LIKE_REGEX","LOCAL","MATCH","MEMBER","MERGE","METHOD","MINUTE","MODIFIES","MODULE","MONTH","NATURAL","NEW","NO","NONE","NOT","NULL","NULLIF","OF","OLD","ON","ONLY","OPEN","ORDER","OUT","OUTER","OVER","OVERLAPS","PARAMETER","PARTITION","PRECISION","PREPARE","PRIMARY","PROCEDURE","RANGE","READS","REAL","RECURSIVE","REF","REFERENCES","REFERENCING","RELEASE","RESULT","RETURN","RETURNS","REVOKE","RIGHT","ROLLBACK","ROLLUP","ROW","ROWS","SAVEPOINT","SCOPE","SCROLL","SEARCH","SECOND","SELECT","SENSITIVE","SESSION_USER","SET","SIMILAR","SOME","SPECIFIC","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","START","STATIC","SUBMULTISET","SYMMETRIC","SYSTEM","SYSTEM_USER","TABLE","TABLESAMPLE","THEN","TIMEZONE_HOUR","TIMEZONE_MINUTE","TO","TRAILING","TRANSLATION","TREAT","TRIGGER","TRUE","UESCAPE","UNION","UNIQUE","UNKNOWN","UNNEST","UPDATE","USER","USING","VALUE","VALUES","WHENEVER","WINDOW","WITHIN","WITHOUT","YEAR"],IR=["ARRAY","BIGINT","BINARY LARGE OBJECT","BINARY VARYING","BINARY","BLOB","BOOLEAN","CHAR LARGE OBJECT","CHAR VARYING","CHAR","CHARACTER LARGE OBJECT","CHARACTER VARYING","CHARACTER","CLOB","DATE","DEC","DECIMAL","DOUBLE","FLOAT","INT","INTEGER","INTERVAL","MULTISET","NATIONAL CHAR VARYING","NATIONAL CHAR","NATIONAL CHARACTER LARGE OBJECT","NATIONAL CHARACTER VARYING","NATIONAL CHARACTER","NCHAR LARGE OBJECT","NCHAR VARYING","NCHAR","NCLOB","NUMERIC","SMALLINT","TIME","TIMESTAMP","VARBINARY","VARCHAR"],NR=u(["SELECT [ALL | DISTINCT]"]),cR=u(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY [ALL | DISTINCT]","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","FETCH {FIRST | NEXT}","INSERT INTO","VALUES","SET"]),Wr=u(["CREATE [GLOBAL TEMPORARY | LOCAL TEMPORARY] TABLE"]),nE=u(["CREATE [RECURSIVE] VIEW","UPDATE","WHERE CURRENT OF","DELETE FROM","DROP TABLE","ALTER TABLE","ADD COLUMN","DROP [COLUMN]","RENAME COLUMN","RENAME TO","ALTER [COLUMN]","{SET | DROP} DEFAULT","ADD SCOPE","DROP SCOPE {CASCADE | RESTRICT}","RESTART WITH","TRUNCATE TABLE","SET SCHEMA"]),dR=u(["UNION [ALL | DISTINCT]","EXCEPT [ALL | DISTINCT]","INTERSECT [ALL | DISTINCT]"]),CR=u(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN"]),LR=u(["ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]","{ROWS | RANGE} BETWEEN"]),_R=u([]),uR={name:"sql",tokenizerOptions:{reservedSelect:NR,reservedClauses:[...cR,...Wr,...nE],reservedSetOperations:dR,reservedJoins:CR,reservedKeywordPhrases:LR,reservedDataTypePhrases:_R,reservedKeywords:lR,reservedDataTypes:IR,reservedFunctionNames:SR,stringTypes:[{quote:"''-qq-bs",prefixes:["N","U&"]},{quote:"''-raw",prefixes:["X"],requirePrefix:!0}],identTypes:['""-qq',"``"],paramTypes:{positional:!0},operators:["||"]},formatOptions:{onelineClauses:[...Wr,...nE],tabularOnelineClauses:nE}},pR=["ABS","ACOS","ALL_MATCH","ANY_MATCH","APPROX_DISTINCT","APPROX_MOST_FREQUENT","APPROX_PERCENTILE","APPROX_SET","ARBITRARY","ARRAYS_OVERLAP","ARRAY_AGG","ARRAY_DISTINCT","ARRAY_EXCEPT","ARRAY_INTERSECT","ARRAY_JOIN","ARRAY_MAX","ARRAY_MIN","ARRAY_POSITION","ARRAY_REMOVE","ARRAY_SORT","ARRAY_UNION","ASIN","ATAN","ATAN2","AT_TIMEZONE","AVG","BAR","BETA_CDF","BING_TILE","BING_TILES_AROUND","BING_TILE_AT","BING_TILE_COORDINATES","BING_TILE_POLYGON","BING_TILE_QUADKEY","BING_TILE_ZOOM_LEVEL","BITWISE_AND","BITWISE_AND_AGG","BITWISE_LEFT_SHIFT","BITWISE_NOT","BITWISE_OR","BITWISE_OR_AGG","BITWISE_RIGHT_SHIFT","BITWISE_RIGHT_SHIFT_ARITHMETIC","BITWISE_XOR","BIT_COUNT","BOOL_AND","BOOL_OR","CARDINALITY","CAST","CBRT","CEIL","CEILING","CHAR2HEXINT","CHECKSUM","CHR","CLASSIFY","COALESCE","CODEPOINT","COLOR","COMBINATIONS","CONCAT","CONCAT_WS","CONTAINS","CONTAINS_SEQUENCE","CONVEX_HULL_AGG","CORR","COS","COSH","COSINE_SIMILARITY","COUNT","COUNT_IF","COVAR_POP","COVAR_SAMP","CRC32","CUME_DIST","CURRENT_CATALOG","CURRENT_DATE","CURRENT_GROUPS","CURRENT_SCHEMA","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","CURRENT_USER","DATE","DATE_ADD","DATE_DIFF","DATE_FORMAT","DATE_PARSE","DATE_TRUNC","DAY","DAY_OF_MONTH","DAY_OF_WEEK","DAY_OF_YEAR","DEGREES","DENSE_RANK","DOW","DOY","E","ELEMENT_AT","EMPTY_APPROX_SET","EVALUATE_CLASSIFIER_PREDICTIONS","EVERY","EXP","EXTRACT","FEATURES","FILTER","FIRST_VALUE","FLATTEN","FLOOR","FORMAT","FORMAT_DATETIME","FORMAT_NUMBER","FROM_BASE","FROM_BASE32","FROM_BASE64","FROM_BASE64URL","FROM_BIG_ENDIAN_32","FROM_BIG_ENDIAN_64","FROM_ENCODED_POLYLINE","FROM_GEOJSON_GEOMETRY","FROM_HEX","FROM_IEEE754_32","FROM_IEEE754_64","FROM_ISO8601_DATE","FROM_ISO8601_TIMESTAMP","FROM_ISO8601_TIMESTAMP_NANOS","FROM_UNIXTIME","FROM_UNIXTIME_NANOS","FROM_UTF8","GEOMETRIC_MEAN","GEOMETRY_FROM_HADOOP_SHAPE","GEOMETRY_INVALID_REASON","GEOMETRY_NEAREST_POINTS","GEOMETRY_TO_BING_TILES","GEOMETRY_UNION","GEOMETRY_UNION_AGG","GREATEST","GREAT_CIRCLE_DISTANCE","HAMMING_DISTANCE","HASH_COUNTS","HISTOGRAM","HMAC_MD5","HMAC_SHA1","HMAC_SHA256","HMAC_SHA512","HOUR","HUMAN_READABLE_SECONDS","IF","INDEX","INFINITY","INTERSECTION_CARDINALITY","INVERSE_BETA_CDF","INVERSE_NORMAL_CDF","IS_FINITE","IS_INFINITE","IS_JSON_SCALAR","IS_NAN","JACCARD_INDEX","JSON_ARRAY_CONTAINS","JSON_ARRAY_GET","JSON_ARRAY_LENGTH","JSON_EXISTS","JSON_EXTRACT","JSON_EXTRACT_SCALAR","JSON_FORMAT","JSON_PARSE","JSON_QUERY","JSON_SIZE","JSON_VALUE","KURTOSIS","LAG","LAST_DAY_OF_MONTH","LAST_VALUE","LEAD","LEARN_CLASSIFIER","LEARN_LIBSVM_CLASSIFIER","LEARN_LIBSVM_REGRESSOR","LEARN_REGRESSOR","LEAST","LENGTH","LEVENSHTEIN_DISTANCE","LINE_INTERPOLATE_POINT","LINE_INTERPOLATE_POINTS","LINE_LOCATE_POINT","LISTAGG","LN","LOCALTIME","LOCALTIMESTAMP","LOG","LOG10","LOG2","LOWER","LPAD","LTRIM","LUHN_CHECK","MAKE_SET_DIGEST","MAP","MAP_AGG","MAP_CONCAT","MAP_ENTRIES","MAP_FILTER","MAP_FROM_ENTRIES","MAP_KEYS","MAP_UNION","MAP_VALUES","MAP_ZIP_WITH","MAX","MAX_BY","MD5","MERGE","MERGE_SET_DIGEST","MILLISECOND","MIN","MINUTE","MIN_BY","MOD","MONTH","MULTIMAP_AGG","MULTIMAP_FROM_ENTRIES","MURMUR3","NAN","NGRAMS","NONE_MATCH","NORMALIZE","NORMAL_CDF","NOW","NTH_VALUE","NTILE","NULLIF","NUMERIC_HISTOGRAM","OBJECTID","OBJECTID_TIMESTAMP","PARSE_DATA_SIZE","PARSE_DATETIME","PARSE_DURATION","PERCENT_RANK","PI","POSITION","POW","POWER","QDIGEST_AGG","QUARTER","RADIANS","RAND","RANDOM","RANK","REDUCE","REDUCE_AGG","REGEXP_COUNT","REGEXP_EXTRACT","REGEXP_EXTRACT_ALL","REGEXP_LIKE","REGEXP_POSITION","REGEXP_REPLACE","REGEXP_SPLIT","REGRESS","REGR_INTERCEPT","REGR_SLOPE","RENDER","REPEAT","REPLACE","REVERSE","RGB","ROUND","ROW_NUMBER","RPAD","RTRIM","SECOND","SEQUENCE","SHA1","SHA256","SHA512","SHUFFLE","SIGN","SIMPLIFY_GEOMETRY","SIN","SKEWNESS","SLICE","SOUNDEX","SPATIAL_PARTITIONING","SPATIAL_PARTITIONS","SPLIT","SPLIT_PART","SPLIT_TO_MAP","SPLIT_TO_MULTIMAP","SPOOKY_HASH_V2_32","SPOOKY_HASH_V2_64","SQRT","STARTS_WITH","STDDEV","STDDEV_POP","STDDEV_SAMP","STRPOS","ST_AREA","ST_ASBINARY","ST_ASTEXT","ST_BOUNDARY","ST_BUFFER","ST_CENTROID","ST_CONTAINS","ST_CONVEXHULL","ST_COORDDIM","ST_CROSSES","ST_DIFFERENCE","ST_DIMENSION","ST_DISJOINT","ST_DISTANCE","ST_ENDPOINT","ST_ENVELOPE","ST_ENVELOPEASPTS","ST_EQUALS","ST_EXTERIORRING","ST_GEOMETRIES","ST_GEOMETRYFROMTEXT","ST_GEOMETRYN","ST_GEOMETRYTYPE","ST_GEOMFROMBINARY","ST_INTERIORRINGN","ST_INTERIORRINGS","ST_INTERSECTION","ST_INTERSECTS","ST_ISCLOSED","ST_ISEMPTY","ST_ISRING","ST_ISSIMPLE","ST_ISVALID","ST_LENGTH","ST_LINEFROMTEXT","ST_LINESTRING","ST_MULTIPOINT","ST_NUMGEOMETRIES","ST_NUMINTERIORRING","ST_NUMPOINTS","ST_OVERLAPS","ST_POINT","ST_POINTN","ST_POINTS","ST_POLYGON","ST_RELATE","ST_STARTPOINT","ST_SYMDIFFERENCE","ST_TOUCHES","ST_UNION","ST_WITHIN","ST_X","ST_XMAX","ST_XMIN","ST_Y","ST_YMAX","ST_YMIN","SUBSTR","SUBSTRING","SUM","TAN","TANH","TDIGEST_AGG","TIMESTAMP_OBJECTID","TIMEZONE_HOUR","TIMEZONE_MINUTE","TO_BASE","TO_BASE32","TO_BASE64","TO_BASE64URL","TO_BIG_ENDIAN_32","TO_BIG_ENDIAN_64","TO_CHAR","TO_DATE","TO_ENCODED_POLYLINE","TO_GEOJSON_GEOMETRY","TO_GEOMETRY","TO_HEX","TO_IEEE754_32","TO_IEEE754_64","TO_ISO8601","TO_MILLISECONDS","TO_SPHERICAL_GEOGRAPHY","TO_TIMESTAMP","TO_UNIXTIME","TO_UTF8","TRANSFORM","TRANSFORM_KEYS","TRANSFORM_VALUES","TRANSLATE","TRIM","TRIM_ARRAY","TRUNCATE","TRY","TRY_CAST","TYPEOF","UPPER","URL_DECODE","URL_ENCODE","URL_EXTRACT_FRAGMENT","URL_EXTRACT_HOST","URL_EXTRACT_PARAMETER","URL_EXTRACT_PATH","URL_EXTRACT_PORT","URL_EXTRACT_PROTOCOL","URL_EXTRACT_QUERY","UUID","VALUES_AT_QUANTILES","VALUE_AT_QUANTILE","VARIANCE","VAR_POP","VAR_SAMP","VERSION","WEEK","WEEK_OF_YEAR","WIDTH_BUCKET","WILSON_INTERVAL_LOWER","WILSON_INTERVAL_UPPER","WITH_TIMEZONE","WORD_STEM","XXHASH64","YEAR","YEAR_OF_WEEK","YOW","ZIP","ZIP_WITH","CLASSIFIER","FIRST","LAST","MATCH_NUMBER","NEXT","PERMUTE","PREV"],DR=["ABSENT","ADD","ADMIN","AFTER","ALL","ALTER","ANALYZE","AND","ANY","AS","ASC","AT","AUTHORIZATION","BERNOULLI","BETWEEN","BOTH","BY","CALL","CASCADE","CASE","CATALOGS","COLUMN","COLUMNS","COMMENT","COMMIT","COMMITTED","CONDITIONAL","CONSTRAINT","COPARTITION","CREATE","CROSS","CUBE","CURRENT","CURRENT_PATH","CURRENT_ROLE","DATA","DEALLOCATE","DEFAULT","DEFINE","DEFINER","DELETE","DENY","DESC","DESCRIBE","DESCRIPTOR","DISTINCT","DISTRIBUTED","DOUBLE","DROP","ELSE","EMPTY","ENCODING","END","ERROR","ESCAPE","EXCEPT","EXCLUDING","EXECUTE","EXISTS","EXPLAIN","FALSE","FETCH","FINAL","FIRST","FOLLOWING","FOR","FROM","FULL","FUNCTIONS","GRANT","GRANTED","GRANTS","GRAPHVIZ","GROUP","GROUPING","GROUPS","HAVING","IGNORE","IN","INCLUDING","INITIAL","INNER","INPUT","INSERT","INTERSECT","INTERVAL","INTO","INVOKER","IO","IS","ISOLATION","JOIN","JSON","JSON_ARRAY","JSON_OBJECT","KEEP","KEY","KEYS","LAST","LATERAL","LEADING","LEFT","LEVEL","LIKE","LIMIT","LOCAL","LOGICAL","MATCH","MATCHED","MATCHES","MATCH_RECOGNIZE","MATERIALIZED","MEASURES","NATURAL","NEXT","NFC","NFD","NFKC","NFKD","NO","NONE","NOT","NULL","NULLS","OBJECT","OF","OFFSET","OMIT","ON","ONE","ONLY","OPTION","OR","ORDER","ORDINALITY","OUTER","OUTPUT","OVER","OVERFLOW","PARTITION","PARTITIONS","PASSING","PAST","PATH","PATTERN","PER","PERMUTE","PRECEDING","PRECISION","PREPARE","PRIVILEGES","PROPERTIES","PRUNE","QUOTES","RANGE","READ","RECURSIVE","REFRESH","RENAME","REPEATABLE","RESET","RESPECT","RESTRICT","RETURNING","REVOKE","RIGHT","ROLE","ROLES","ROLLBACK","ROLLUP","ROW","ROWS","RUNNING","SCALAR","SCHEMA","SCHEMAS","SECURITY","SEEK","SELECT","SERIALIZABLE","SESSION","SET","SETS","SHOW","SKIP","SOME","START","STATS","STRING","SUBSET","SYSTEM","TABLE","TABLES","TABLESAMPLE","TEXT","THEN","TIES","TIME","TIMESTAMP","TO","TRAILING","TRANSACTION","TRUE","TYPE","UESCAPE","UNBOUNDED","UNCOMMITTED","UNCONDITIONAL","UNION","UNIQUE","UNKNOWN","UNMATCHED","UNNEST","UPDATE","USE","USER","USING","UTF16","UTF32","UTF8","VALIDATE","VALUE","VALUES","VERBOSE","VIEW","WHEN","WHERE","WINDOW","WITH","WITHIN","WITHOUT","WORK","WRAPPER","WRITE","ZONE"],PR=["BIGINT","INT","INTEGER","SMALLINT","TINYINT","BOOLEAN","DATE","DECIMAL","REAL","DOUBLE","HYPERLOGLOG","QDIGEST","TDIGEST","P4HYPERLOGLOG","INTERVAL","TIMESTAMP","TIME","VARBINARY","VARCHAR","CHAR","ROW","ARRAY","MAP","JSON","JSON2016","IPADDRESS","GEOMETRY","UUID","SETDIGEST","JONIREGEXP","RE2JREGEXP","LIKEPATTERN","COLOR","CODEPOINTS","FUNCTION","JSONPATH"],MR=u(["SELECT [ALL | DISTINCT]"]),mR=u(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY [ALL | DISTINCT]","HAVING","WINDOW","PARTITION BY","ORDER BY","LIMIT","OFFSET","FETCH {FIRST | NEXT}","INSERT INTO","VALUES","SET","MATCH_RECOGNIZE","MEASURES","ONE ROW PER MATCH","ALL ROWS PER MATCH","AFTER MATCH","PATTERN","SUBSET","DEFINE"]),wr=u(["CREATE TABLE [IF NOT EXISTS]"]),sE=u(["CREATE [OR REPLACE] [MATERIALIZED] VIEW","UPDATE","DELETE FROM","DROP TABLE [IF EXISTS]","ALTER TABLE [IF EXISTS]","ADD COLUMN [IF NOT EXISTS]","DROP COLUMN [IF EXISTS]","RENAME COLUMN [IF EXISTS]","RENAME TO","SET AUTHORIZATION [USER | ROLE]","SET PROPERTIES","EXECUTE","TRUNCATE TABLE","ALTER SCHEMA","ALTER MATERIALIZED VIEW","ALTER VIEW","CREATE SCHEMA","CREATE ROLE","DROP SCHEMA","DROP MATERIALIZED VIEW","DROP VIEW","DROP ROLE","EXPLAIN","ANALYZE","EXPLAIN ANALYZE","EXPLAIN ANALYZE VERBOSE","USE","DESCRIBE INPUT","DESCRIBE OUTPUT","REFRESH MATERIALIZED VIEW","RESET SESSION","SET SESSION","SET PATH","SET TIME ZONE","SHOW GRANTS","SHOW CREATE TABLE","SHOW CREATE SCHEMA","SHOW CREATE VIEW","SHOW CREATE MATERIALIZED VIEW","SHOW TABLES","SHOW SCHEMAS","SHOW CATALOGS","SHOW COLUMNS","SHOW STATS FOR","SHOW ROLES","SHOW CURRENT ROLES","SHOW ROLE GRANTS","SHOW FUNCTIONS","SHOW SESSION"]),fR=u(["UNION [ALL | DISTINCT] [CORRESPONDING]","EXCEPT [ALL | DISTINCT] [CORRESPONDING]","INTERSECT [ALL | DISTINCT] [CORRESPONDING]"]),hR=u(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL [INNER] JOIN","NATURAL {LEFT | RIGHT | FULL} [OUTER] JOIN"]),UR=u(["{ROWS | RANGE | GROUPS} BETWEEN","IS [NOT] DISTINCT FROM"]),xR=u([]),gR={name:"trino",tokenizerOptions:{reservedSelect:MR,reservedClauses:[...mR,...wr,...sE],reservedSetOperations:fR,reservedJoins:hR,reservedKeywordPhrases:UR,reservedDataTypePhrases:xR,reservedKeywords:DR,reservedDataTypes:PR,reservedFunctionNames:pR,extraParens:["[]","{}"],stringTypes:[{quote:"''-qq",prefixes:["U&"]},{quote:"''-raw",prefixes:["X"],requirePrefix:!0}],identTypes:['""-qq'],paramTypes:{positional:!0},operators:["%","->","=>",":","||","|","^","$"]},formatOptions:{onelineClauses:[...wr,...sE],tabularOnelineClauses:sE}},yR=["APPROX_COUNT_DISTINCT","AVG","CHECKSUM_AGG","COUNT","COUNT_BIG","GROUPING","GROUPING_ID","MAX","MIN","STDEV","STDEVP","SUM","VAR","VARP","CUME_DIST","FIRST_VALUE","LAG","LAST_VALUE","LEAD","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","Collation - COLLATIONPROPERTY","Collation - TERTIARY_WEIGHTS","@@DBTS","@@LANGID","@@LANGUAGE","@@LOCK_TIMEOUT","@@MAX_CONNECTIONS","@@MAX_PRECISION","@@NESTLEVEL","@@OPTIONS","@@REMSERVER","@@SERVERNAME","@@SERVICENAME","@@SPID","@@TEXTSIZE","@@VERSION","CAST","CONVERT","PARSE","TRY_CAST","TRY_CONVERT","TRY_PARSE","ASYMKEY_ID","ASYMKEYPROPERTY","CERTPROPERTY","CERT_ID","CRYPT_GEN_RANDOM","DECRYPTBYASYMKEY","DECRYPTBYCERT","DECRYPTBYKEY","DECRYPTBYKEYAUTOASYMKEY","DECRYPTBYKEYAUTOCERT","DECRYPTBYPASSPHRASE","ENCRYPTBYASYMKEY","ENCRYPTBYCERT","ENCRYPTBYKEY","ENCRYPTBYPASSPHRASE","HASHBYTES","IS_OBJECTSIGNED","KEY_GUID","KEY_ID","KEY_NAME","SIGNBYASYMKEY","SIGNBYCERT","SYMKEYPROPERTY","VERIFYSIGNEDBYCERT","VERIFYSIGNEDBYASYMKEY","@@CURSOR_ROWS","@@FETCH_STATUS","CURSOR_STATUS","DATALENGTH","IDENT_CURRENT","IDENT_INCR","IDENT_SEED","IDENTITY","SQL_VARIANT_PROPERTY","@@DATEFIRST","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","CURRENT_TIMEZONE_ID","DATEADD","DATEDIFF","DATEDIFF_BIG","DATEFROMPARTS","DATENAME","DATEPART","DATETIME2FROMPARTS","DATETIMEFROMPARTS","DATETIMEOFFSETFROMPARTS","DAY","EOMONTH","GETDATE","GETUTCDATE","ISDATE","MONTH","SMALLDATETIMEFROMPARTS","SWITCHOFFSET","SYSDATETIME","SYSDATETIMEOFFSET","SYSUTCDATETIME","TIMEFROMPARTS","TODATETIMEOFFSET","YEAR","JSON","ISJSON","JSON_VALUE","JSON_QUERY","JSON_MODIFY","ABS","ACOS","ASIN","ATAN","ATN2","CEILING","COS","COT","DEGREES","EXP","FLOOR","LOG","LOG10","PI","POWER","RADIANS","RAND","ROUND","SIGN","SIN","SQRT","SQUARE","TAN","CHOOSE","GREATEST","IIF","LEAST","@@PROCID","APP_NAME","APPLOCK_MODE","APPLOCK_TEST","ASSEMBLYPROPERTY","COL_LENGTH","COL_NAME","COLUMNPROPERTY","DATABASEPROPERTYEX","DB_ID","DB_NAME","FILE_ID","FILE_IDEX","FILE_NAME","FILEGROUP_ID","FILEGROUP_NAME","FILEGROUPPROPERTY","FILEPROPERTY","FILEPROPERTYEX","FULLTEXTCATALOGPROPERTY","FULLTEXTSERVICEPROPERTY","INDEX_COL","INDEXKEY_PROPERTY","INDEXPROPERTY","NEXT VALUE FOR","OBJECT_DEFINITION","OBJECT_ID","OBJECT_NAME","OBJECT_SCHEMA_NAME","OBJECTPROPERTY","OBJECTPROPERTYEX","ORIGINAL_DB_NAME","PARSENAME","SCHEMA_ID","SCHEMA_NAME","SCOPE_IDENTITY","SERVERPROPERTY","STATS_DATE","TYPE_ID","TYPE_NAME","TYPEPROPERTY","DENSE_RANK","NTILE","RANK","ROW_NUMBER","PUBLISHINGSERVERNAME","CERTENCODED","CERTPRIVATEKEY","CURRENT_USER","DATABASE_PRINCIPAL_ID","HAS_DBACCESS","HAS_PERMS_BY_NAME","IS_MEMBER","IS_ROLEMEMBER","IS_SRVROLEMEMBER","LOGINPROPERTY","ORIGINAL_LOGIN","PERMISSIONS","PWDENCRYPT","PWDCOMPARE","SESSION_USER","SESSIONPROPERTY","SUSER_ID","SUSER_NAME","SUSER_SID","SUSER_SNAME","SYSTEM_USER","USER","USER_ID","USER_NAME","ASCII","CHARINDEX","CONCAT","CONCAT_WS","DIFFERENCE","FORMAT","LEFT","LEN","LOWER","LTRIM","PATINDEX","QUOTENAME","REPLACE","REPLICATE","REVERSE","RIGHT","RTRIM","SOUNDEX","SPACE","STR","STRING_AGG","STRING_ESCAPE","STUFF","SUBSTRING","TRANSLATE","TRIM","UNICODE","UPPER","$PARTITION","@@ERROR","@@IDENTITY","@@PACK_RECEIVED","@@ROWCOUNT","@@TRANCOUNT","BINARY_CHECKSUM","CHECKSUM","COMPRESS","CONNECTIONPROPERTY","CONTEXT_INFO","CURRENT_REQUEST_ID","CURRENT_TRANSACTION_ID","DECOMPRESS","ERROR_LINE","ERROR_MESSAGE","ERROR_NUMBER","ERROR_PROCEDURE","ERROR_SEVERITY","ERROR_STATE","FORMATMESSAGE","GET_FILESTREAM_TRANSACTION_CONTEXT","GETANSINULL","HOST_ID","HOST_NAME","ISNULL","ISNUMERIC","MIN_ACTIVE_ROWVERSION","NEWID","NEWSEQUENTIALID","ROWCOUNT_BIG","SESSION_CONTEXT","XACT_STATE","@@CONNECTIONS","@@CPU_BUSY","@@IDLE","@@IO_BUSY","@@PACK_SENT","@@PACKET_ERRORS","@@TIMETICKS","@@TOTAL_ERRORS","@@TOTAL_READ","@@TOTAL_WRITE","TEXTPTR","TEXTVALID","COLUMNS_UPDATED","EVENTDATA","TRIGGER_NESTLEVEL","UPDATE","COALESCE","NULLIF"],GR=["ADD","ALL","ALTER","AND","ANY","AS","ASC","AUTHORIZATION","BACKUP","BEGIN","BETWEEN","BREAK","BROWSE","BULK","BY","CASCADE","CHECK","CHECKPOINT","CLOSE","CLUSTERED","COALESCE","COLLATE","COLUMN","COMMIT","COMPUTE","CONSTRAINT","CONTAINS","CONTAINSTABLE","CONTINUE","CONVERT","CREATE","CROSS","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DBCC","DEALLOCATE","DECLARE","DEFAULT","DELETE","DENY","DESC","DISK","DISTINCT","DISTRIBUTED","DROP","DUMP","ERRLVL","ESCAPE","EXEC","EXECUTE","EXISTS","EXIT","EXTERNAL","FETCH","FILE","FILLFACTOR","FOR","FOREIGN","FREETEXT","FREETEXTTABLE","FROM","FULL","FUNCTION","GOTO","GRANT","GROUP","HAVING","HOLDLOCK","IDENTITY","IDENTITYCOL","IDENTITY_INSERT","IF","IN","INDEX","INNER","INSERT","INTERSECT","INTO","IS","JOIN","KEY","KILL","LEFT","LIKE","LINENO","LOAD","MERGE","NOCHECK","NONCLUSTERED","NOT","NULL","NULLIF","OF","OFF","OFFSETS","ON","OPEN","OPENDATASOURCE","OPENQUERY","OPENROWSET","OPENXML","OPTION","OR","ORDER","OUTER","OVER","PERCENT","PIVOT","PLAN","PRIMARY","PRINT","PROC","PROCEDURE","PUBLIC","RAISERROR","READ","READTEXT","RECONFIGURE","REFERENCES","REPLICATION","RESTORE","RESTRICT","RETURN","REVERT","REVOKE","RIGHT","ROLLBACK","ROWCOUNT","ROWGUIDCOL","RULE","SAVE","SCHEMA","SECURITYAUDIT","SELECT","SEMANTICKEYPHRASETABLE","SEMANTICSIMILARITYDETAILSTABLE","SEMANTICSIMILARITYTABLE","SESSION_USER","SET","SETUSER","SHUTDOWN","SOME","STATISTICS","SYSTEM_USER","TABLE","TABLESAMPLE","TEXTSIZE","THEN","TO","TOP","TRAN","TRANSACTION","TRIGGER","TRUNCATE","TRY_CONVERT","TSEQUAL","UNION","UNIQUE","UNPIVOT","UPDATE","UPDATETEXT","USE","USER","VALUES","VIEW","WAITFOR","WHERE","WHILE","WITH","WITHIN GROUP","WRITETEXT","$ACTION"],BR=["BINARY","BIT","CHAR","CHAR","CHARACTER","DATE","DATETIME2","DATETIMEOFFSET","DEC","DECIMAL","DOUBLE","FLOAT","INT","INTEGER","NATIONAL","NCHAR","NUMERIC","NVARCHAR","PRECISION","REAL","SMALLINT","TIME","TIMESTAMP","VARBINARY","VARCHAR"],HR=u(["SELECT [ALL | DISTINCT]"]),bR=u(["WITH","INTO","FROM","WHERE","GROUP BY","HAVING","WINDOW","PARTITION BY","ORDER BY","OFFSET","FETCH {FIRST | NEXT}","FOR {BROWSE | XML | JSON}","OPTION","INSERT [INTO]","VALUES","SET","MERGE [INTO]","WHEN [NOT] MATCHED [BY TARGET | BY SOURCE] [THEN]","UPDATE SET"]),Xr=u(["CREATE TABLE"]),TE=u(["CREATE [OR ALTER] [MATERIALIZED] VIEW","UPDATE","WHERE CURRENT OF","DELETE [FROM]","DROP TABLE [IF EXISTS]","ALTER TABLE","ADD","DROP COLUMN [IF EXISTS]","ALTER COLUMN","TRUNCATE TABLE","CREATE [UNIQUE] [CLUSTERED] INDEX","CREATE DATABASE","ALTER DATABASE","DROP DATABASE [IF EXISTS]","CREATE [OR ALTER] [PARTITION] {FUNCTION | PROCEDURE | PROC}","ALTER [PARTITION] {FUNCTION | PROCEDURE | PROC}","DROP [PARTITION] {FUNCTION | PROCEDURE | PROC} [IF EXISTS]","GO","USE","ADD SENSITIVITY CLASSIFICATION","ADD SIGNATURE","AGGREGATE","ANSI_DEFAULTS","ANSI_NULLS","ANSI_NULL_DFLT_OFF","ANSI_NULL_DFLT_ON","ANSI_PADDING","ANSI_WARNINGS","APPLICATION ROLE","ARITHABORT","ARITHIGNORE","ASSEMBLY","ASYMMETRIC KEY","AUTHORIZATION","AVAILABILITY GROUP","BACKUP","BACKUP CERTIFICATE","BACKUP MASTER KEY","BACKUP SERVICE MASTER KEY","BEGIN CONVERSATION TIMER","BEGIN DIALOG CONVERSATION","BROKER PRIORITY","BULK INSERT","CERTIFICATE","CLOSE MASTER KEY","CLOSE SYMMETRIC KEY","COLUMN ENCRYPTION KEY","COLUMN MASTER KEY","COLUMNSTORE INDEX","CONCAT_NULL_YIELDS_NULL","CONTEXT_INFO","CONTRACT","CREDENTIAL","CRYPTOGRAPHIC PROVIDER","CURSOR_CLOSE_ON_COMMIT","DATABASE","DATABASE AUDIT SPECIFICATION","DATABASE ENCRYPTION KEY","DATABASE HADR","DATABASE SCOPED CONFIGURATION","DATABASE SCOPED CREDENTIAL","DATABASE SET","DATEFIRST","DATEFORMAT","DEADLOCK_PRIORITY","DENY","DENY XML","DISABLE TRIGGER","ENABLE TRIGGER","END CONVERSATION","ENDPOINT","EVENT NOTIFICATION","EVENT SESSION","EXECUTE AS","EXTERNAL DATA SOURCE","EXTERNAL FILE FORMAT","EXTERNAL LANGUAGE","EXTERNAL LIBRARY","EXTERNAL RESOURCE POOL","EXTERNAL TABLE","FIPS_FLAGGER","FMTONLY","FORCEPLAN","FULLTEXT CATALOG","FULLTEXT INDEX","FULLTEXT STOPLIST","GET CONVERSATION GROUP","GET_TRANSMISSION_STATUS","GRANT","GRANT XML","IDENTITY_INSERT","IMPLICIT_TRANSACTIONS","INDEX","LANGUAGE","LOCK_TIMEOUT","LOGIN","MASTER KEY","MESSAGE TYPE","MOVE CONVERSATION","NOCOUNT","NOEXEC","NUMERIC_ROUNDABORT","OFFSETS","OPEN MASTER KEY","OPEN SYMMETRIC KEY","PARSEONLY","PARTITION SCHEME","QUERY_GOVERNOR_COST_LIMIT","QUEUE","QUOTED_IDENTIFIER","RECEIVE","REMOTE SERVICE BINDING","REMOTE_PROC_TRANSACTIONS","RESOURCE GOVERNOR","RESOURCE POOL","RESTORE","RESTORE FILELISTONLY","RESTORE HEADERONLY","RESTORE LABELONLY","RESTORE MASTER KEY","RESTORE REWINDONLY","RESTORE SERVICE MASTER KEY","RESTORE VERIFYONLY","REVERT","REVOKE","REVOKE XML","ROLE","ROUTE","ROWCOUNT","RULE","SCHEMA","SEARCH PROPERTY LIST","SECURITY POLICY","SELECTIVE XML INDEX","SEND","SENSITIVITY CLASSIFICATION","SEQUENCE","SERVER AUDIT","SERVER AUDIT SPECIFICATION","SERVER CONFIGURATION","SERVER ROLE","SERVICE","SERVICE MASTER KEY","SETUSER","SHOWPLAN_ALL","SHOWPLAN_TEXT","SHOWPLAN_XML","SIGNATURE","SPATIAL INDEX","STATISTICS","STATISTICS IO","STATISTICS PROFILE","STATISTICS TIME","STATISTICS XML","SYMMETRIC KEY","SYNONYM","TABLE","TABLE IDENTITY","TEXTSIZE","TRANSACTION ISOLATION LEVEL","TRIGGER","TYPE","UPDATE STATISTICS","USER","WORKLOAD GROUP","XACT_ABORT","XML INDEX","XML SCHEMA COLLECTION"]),FR=u(["UNION [ALL]","EXCEPT","INTERSECT"]),YR=u(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","{CROSS | OUTER} APPLY"]),vR=u(["ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]","{ROWS | RANGE} BETWEEN"]),VR=u([]),WR={name:"transactsql",tokenizerOptions:{reservedSelect:HR,reservedClauses:[...bR,...Xr,...TE],reservedSetOperations:FR,reservedJoins:YR,reservedKeywordPhrases:vR,reservedDataTypePhrases:VR,reservedKeywords:GR,reservedDataTypes:BR,reservedFunctionNames:yR,nestedBlockComments:!0,stringTypes:[{quote:"''-qq",prefixes:["N"]},"{}"],identTypes:['""-qq',"[]"],identChars:{first:"#@",rest:"#@$"},paramTypes:{named:["@"],quoted:["@"]},operators:["%","&","|","^","~","!<","!>","+=","-=","*=","/=","%=","|=","&=","^=","::",":"],propertyAccessOperators:[".."]},formatOptions:{alwaysDenseOperators:["::"],onelineClauses:[...Xr,...TE],tabularOnelineClauses:TE}},wR=["ADD","ALL","ALTER","ANALYZE","AND","AS","ASC","ASENSITIVE","BEFORE","BETWEEN","_BINARY","BOTH","BY","CALL","CASCADE","CASE","CHANGE","CHECK","COLLATE","COLUMN","CONDITION","CONSTRAINT","CONTINUE","CONVERT","CREATE","CROSS","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","DATABASE","DATABASES","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DECLARE","DEFAULT","DELAYED","DELETE","DESC","DESCRIBE","DETERMINISTIC","DISTINCT","DISTINCTROW","DIV","DROP","DUAL","EACH","ELSE","ELSEIF","ENCLOSED","ESCAPED","EXCEPT","EXISTS","EXIT","EXPLAIN","EXTRA_JOIN","FALSE","FETCH","FOR","FORCE","FORCE_COMPILED_MODE","FORCE_INTERPRETER_MODE","FOREIGN","FROM","FULL","FULLTEXT","GRANT","GROUP","HAVING","HEARTBEAT_NO_LOGGING","HIGH_PRIORITY","HOUR_MICROSECOND","HOUR_MINUTE","HOUR_SECOND","IF","IGNORE","IN","INDEX","INFILE","INNER","INOUT","INSENSITIVE","INSERT","IN","_INTERNAL_DYNAMIC_TYPECAST","INTERSECT","INTERVAL","INTO","ITERATE","JOIN","KEY","KEYS","KILL","LEADING","LEAVE","LEFT","LIKE","LIMIT","LINES","LOAD","LOCALTIME","LOCALTIMESTAMP","LOCK","LOOP","LOW_PRIORITY","MATCH","MAXVALUE","MINUS","MINUTE_MICROSECOND","MINUTE_SECOND","MOD","MODIFIES","NATURAL","NO_QUERY_REWRITE","NOT","NO_WRITE_TO_BINLOG","NO_QUERY_REWRITE","NULL","ON","OPTIMIZE","OPTION","OPTIONALLY","OR","ORDER","OUT","OUTER","OUTFILE","OVER","PRIMARY","PROCEDURE","PURGE","RANGE","READ","READS","REFERENCES","REGEXP","RELEASE","RENAME","REPEAT","REPLACE","REQUIRE","RESTRICT","RETURN","REVOKE","RIGHT","RIGHT_ANTI_JOIN","RIGHT_SEMI_JOIN","RIGHT_STRAIGHT_JOIN","RLIKE","SCHEMA","SCHEMAS","SECOND_MICROSECOND","SELECT","SEMI_JOIN","SENSITIVE","SEPARATOR","SET","SHOW","SIGNAL","SPATIAL","SPECIFIC","SQL","SQL_BIG_RESULT","SQL_BUFFER_RESULT","SQL_CACHE","SQL_CALC_FOUND_ROWS","SQLEXCEPTION","SQL_NO_CACHE","SQL_NO_LOGGING","SQL_SMALL_RESULT","SQLSTATE","SQLWARNING","STRAIGHT_JOIN","TABLE","TERMINATED","THEN","TO","TRAILING","TRIGGER","TRUE","UNBOUNDED","UNDO","UNION","UNIQUE","UNLOCK","UPDATE","USAGE","USE","USING","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","_UTF8","VALUES","WHEN","WHERE","WHILE","WINDOW","WITH","WITHIN","WRITE","XOR","YEAR_MONTH","ZEROFILL"],XR=["BIGINT","BINARY","BIT","BLOB","CHAR","CHARACTER","DATETIME","DEC","DECIMAL","DOUBLE PRECISION","DOUBLE","ENUM","FIXED","FLOAT","FLOAT4","FLOAT8","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","LONG","LONGBLOB","LONGTEXT","MEDIUMBLOB","MEDIUMINT","MEDIUMTEXT","MIDDLEINT","NATIONAL CHAR","NATIONAL VARCHAR","NUMERIC","PRECISION","REAL","SMALLINT","TEXT","TIME","TIMESTAMP","TINYBLOB","TINYINT","TINYTEXT","UNSIGNED","VARBINARY","VARCHAR","VARCHARACTER","YEAR"],jR=["ABS","ACOS","ADDDATE","ADDTIME","AES_DECRYPT","AES_ENCRYPT","ANY_VALUE","APPROX_COUNT_DISTINCT","APPROX_COUNT_DISTINCT_ACCUMULATE","APPROX_COUNT_DISTINCT_COMBINE","APPROX_COUNT_DISTINCT_ESTIMATE","APPROX_GEOGRAPHY_INTERSECTS","APPROX_PERCENTILE","ASCII","ASIN","ATAN","ATAN2","AVG","BIN","BINARY","BIT_AND","BIT_COUNT","BIT_OR","BIT_XOR","CAST","CEIL","CEILING","CHAR","CHARACTER_LENGTH","CHAR_LENGTH","CHARSET","COALESCE","COERCIBILITY","COLLATION","COLLECT","CONCAT","CONCAT_WS","CONNECTION_ID","CONV","CONVERT","CONVERT_TZ","COS","COT","COUNT","CUME_DIST","CURDATE","CURRENT_DATE","CURRENT_ROLE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURTIME","DATABASE","DATE","DATE_ADD","DATEDIFF","DATE_FORMAT","DATE_SUB","DATE_TRUNC","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DECODE","DEFAULT","DEGREES","DENSE_RANK","DIV","DOT_PRODUCT","ELT","EUCLIDEAN_DISTANCE","EXP","EXTRACT","FIELD","FIRST","FIRST_VALUE","FLOOR","FORMAT","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GEOGRAPHY_AREA","GEOGRAPHY_CONTAINS","GEOGRAPHY_DISTANCE","GEOGRAPHY_INTERSECTS","GEOGRAPHY_LATITUDE","GEOGRAPHY_LENGTH","GEOGRAPHY_LONGITUDE","GEOGRAPHY_POINT","GEOGRAPHY_WITHIN_DISTANCE","GEOMETRY_AREA","GEOMETRY_CONTAINS","GEOMETRY_DISTANCE","GEOMETRY_FILTER","GEOMETRY_INTERSECTS","GEOMETRY_LENGTH","GEOMETRY_POINT","GEOMETRY_WITHIN_DISTANCE","GEOMETRY_X","GEOMETRY_Y","GREATEST","GROUPING","GROUP_CONCAT","HEX","HIGHLIGHT","HOUR","ICU_VERSION","IF","IFNULL","INET_ATON","INET_NTOA","INET6_ATON","INET6_NTOA","INITCAP","INSERT","INSTR","INTERVAL","IS","IS NULL","JSON_AGG","JSON_ARRAY_CONTAINS_DOUBLE","JSON_ARRAY_CONTAINS_JSON","JSON_ARRAY_CONTAINS_STRING","JSON_ARRAY_PUSH_DOUBLE","JSON_ARRAY_PUSH_JSON","JSON_ARRAY_PUSH_STRING","JSON_DELETE_KEY","JSON_EXTRACT_DOUBLE","JSON_EXTRACT_JSON","JSON_EXTRACT_STRING","JSON_EXTRACT_BIGINT","JSON_GET_TYPE","JSON_LENGTH","JSON_SET_DOUBLE","JSON_SET_JSON","JSON_SET_STRING","JSON_SPLICE_DOUBLE","JSON_SPLICE_JSON","JSON_SPLICE_STRING","LAG","LAST_DAY","LAST_VALUE","LCASE","LEAD","LEAST","LEFT","LENGTH","LIKE","LN","LOCALTIME","LOCALTIMESTAMP","LOCATE","LOG","LOG10","LOG2","LPAD","LTRIM","MATCH","MAX","MD5","MEDIAN","MICROSECOND","MIN","MINUTE","MOD","MONTH","MONTHNAME","MONTHS_BETWEEN","NOT","NOW","NTH_VALUE","NTILE","NULLIF","OCTET_LENGTH","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","PI","PIVOT","POSITION","POW","POWER","QUARTER","QUOTE","RADIANS","RAND","RANK","REGEXP","REPEAT","REPLACE","REVERSE","RIGHT","RLIKE","ROUND","ROW_COUNT","ROW_NUMBER","RPAD","RTRIM","SCALAR","SCHEMA","SEC_TO_TIME","SHA1","SHA2","SIGMOID","SIGN","SIN","SLEEP","SPLIT","SOUNDEX","SOUNDS LIKE","SOURCE_POS_WAIT","SPACE","SQRT","STDDEV","STDDEV_POP","STDDEV_SAMP","STR_TO_DATE","SUBDATE","SUBSTR","SUBSTRING","SUBSTRING_INDEX","SUM","SYS_GUID","TAN","TIME","TIMEDIFF","TIME_BUCKET","TIME_FORMAT","TIMESTAMP","TIMESTAMPADD","TIMESTAMPDIFF","TIME_TO_SEC","TO_BASE64","TO_CHAR","TO_DAYS","TO_JSON","TO_NUMBER","TO_SECONDS","TO_TIMESTAMP","TRIM","TRUNC","TRUNCATE","UCASE","UNHEX","UNIX_TIMESTAMP","UPDATEXML","UPPER","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","UUID","VALUES","VARIANCE","VAR_POP","VAR_SAMP","VECTOR_SUB","VERSION","WEEK","WEEKDAY","WEEKOFYEAR","YEAR"],$R=u(["SELECT [ALL | DISTINCT | DISTINCTROW]"]),kR=u(["WITH","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER BY","LIMIT","OFFSET","INSERT [IGNORE] [INTO]","VALUES","REPLACE [INTO]","ON DUPLICATE KEY UPDATE","SET","CREATE [OR REPLACE] [TEMPORARY] PROCEDURE [IF NOT EXISTS]","CREATE [OR REPLACE] [EXTERNAL] FUNCTION"]),jr=u(["CREATE [ROWSTORE] [REFERENCE | TEMPORARY | GLOBAL TEMPORARY] TABLE [IF NOT EXISTS]"]),oE=u(["CREATE VIEW","UPDATE","DELETE [FROM]","DROP [TEMPORARY] TABLE [IF EXISTS]","ALTER [ONLINE] TABLE","ADD [COLUMN]","ADD [UNIQUE] {INDEX | KEY}","DROP [COLUMN]","MODIFY [COLUMN]","CHANGE","RENAME [TO | AS]","TRUNCATE [TABLE]","ADD AGGREGATOR","ADD LEAF","AGGREGATOR SET AS MASTER","ALTER DATABASE","ALTER PIPELINE","ALTER RESOURCE POOL","ALTER USER","ALTER VIEW","ANALYZE TABLE","ATTACH DATABASE","ATTACH LEAF","ATTACH LEAF ALL","BACKUP DATABASE","BINLOG","BOOTSTRAP AGGREGATOR","CACHE INDEX","CALL","CHANGE","CHANGE MASTER TO","CHANGE REPLICATION FILTER","CHANGE REPLICATION SOURCE TO","CHECK BLOB CHECKSUM","CHECK TABLE","CHECKSUM TABLE","CLEAR ORPHAN DATABASES","CLONE","COMMIT","CREATE DATABASE","CREATE GROUP","CREATE INDEX","CREATE LINK","CREATE MILESTONE","CREATE PIPELINE","CREATE RESOURCE POOL","CREATE ROLE","CREATE USER","DEALLOCATE PREPARE","DESCRIBE","DETACH DATABASE","DETACH PIPELINE","DROP DATABASE","DROP FUNCTION","DROP INDEX","DROP LINK","DROP PIPELINE","DROP PROCEDURE","DROP RESOURCE POOL","DROP ROLE","DROP USER","DROP VIEW","EXECUTE","EXPLAIN","FLUSH","FORCE","GRANT","HANDLER","HELP","KILL CONNECTION","KILLALL QUERIES","LOAD DATA","LOAD INDEX INTO CACHE","LOAD XML","LOCK INSTANCE FOR BACKUP","LOCK TABLES","MASTER_POS_WAIT","OPTIMIZE TABLE","PREPARE","PURGE BINARY LOGS","REBALANCE PARTITIONS","RELEASE SAVEPOINT","REMOVE AGGREGATOR","REMOVE LEAF","REPAIR TABLE","REPLACE","REPLICATE DATABASE","RESET","RESET MASTER","RESET PERSIST","RESET REPLICA","RESET SLAVE","RESTART","RESTORE DATABASE","RESTORE REDUNDANCY","REVOKE","ROLLBACK","ROLLBACK TO SAVEPOINT","SAVEPOINT","SET CHARACTER SET","SET DEFAULT ROLE","SET NAMES","SET PASSWORD","SET RESOURCE GROUP","SET ROLE","SET TRANSACTION","SHOW","SHOW CHARACTER SET","SHOW COLLATION","SHOW COLUMNS","SHOW CREATE DATABASE","SHOW CREATE FUNCTION","SHOW CREATE PIPELINE","SHOW CREATE PROCEDURE","SHOW CREATE TABLE","SHOW CREATE USER","SHOW CREATE VIEW","SHOW DATABASES","SHOW ENGINE","SHOW ENGINES","SHOW ERRORS","SHOW FUNCTION CODE","SHOW FUNCTION STATUS","SHOW GRANTS","SHOW INDEX","SHOW MASTER STATUS","SHOW OPEN TABLES","SHOW PLUGINS","SHOW PRIVILEGES","SHOW PROCEDURE CODE","SHOW PROCEDURE STATUS","SHOW PROCESSLIST","SHOW PROFILE","SHOW PROFILES","SHOW RELAYLOG EVENTS","SHOW REPLICA STATUS","SHOW REPLICAS","SHOW SLAVE","SHOW SLAVE HOSTS","SHOW STATUS","SHOW TABLE STATUS","SHOW TABLES","SHOW VARIABLES","SHOW WARNINGS","SHUTDOWN","SNAPSHOT DATABASE","SOURCE_POS_WAIT","START GROUP_REPLICATION","START PIPELINE","START REPLICA","START SLAVE","START TRANSACTION","STOP GROUP_REPLICATION","STOP PIPELINE","STOP REPLICA","STOP REPLICATING","STOP SLAVE","TEST PIPELINE","UNLOCK INSTANCE","UNLOCK TABLES","USE","XA","ITERATE","LEAVE","LOOP","REPEAT","RETURN","WHILE"]),KR=u(["UNION [ALL | DISTINCT]","EXCEPT","INTERSECT","MINUS"]),qR=u(["JOIN","{LEFT | RIGHT | FULL} [OUTER] JOIN","{INNER | CROSS} JOIN","NATURAL {LEFT | RIGHT} [OUTER] JOIN","STRAIGHT_JOIN"]),JR=u(["ON DELETE","ON UPDATE","CHARACTER SET","{ROWS | RANGE} BETWEEN","IDENTIFIED BY"]),QR=u([]),zR={name:"singlestoredb",tokenizerOptions:{reservedSelect:$R,reservedClauses:[...kR,...jr,...oE],reservedSetOperations:KR,reservedJoins:qR,reservedKeywordPhrases:JR,reservedDataTypePhrases:QR,reservedKeywords:wR,reservedDataTypes:XR,reservedFunctionNames:jR,stringTypes:['""-qq-bs',"''-qq-bs",{quote:"''-raw",prefixes:["B","X"],requirePrefix:!0}],identTypes:["``"],identChars:{first:"$",rest:"$",allowFirstCharNumber:!0},variableTypes:[{regex:"@@?[A-Za-z0-9_$]+"},{quote:"``",prefixes:["@"],requirePrefix:!0}],lineCommentTypes:["--","#"],operators:[":=","&","|","^","~","<<",">>","<=>","&&","||","::","::$","::%",":>","!:>","*.*"],postProcess:Bt},formatOptions:{alwaysDenseOperators:["::","::$","::%"],onelineClauses:[...jr,...oE],tabularOnelineClauses:oE}},ZR=["ABS","ACOS","ACOSH","ADD_MONTHS","ALL_USER_NAMES","ANY_VALUE","APPROX_COUNT_DISTINCT","APPROX_PERCENTILE","APPROX_PERCENTILE_ACCUMULATE","APPROX_PERCENTILE_COMBINE","APPROX_PERCENTILE_ESTIMATE","APPROX_TOP_K","APPROX_TOP_K_ACCUMULATE","APPROX_TOP_K_COMBINE","APPROX_TOP_K_ESTIMATE","APPROXIMATE_JACCARD_INDEX","APPROXIMATE_SIMILARITY","ARRAY_AGG","ARRAY_APPEND","ARRAY_CAT","ARRAY_COMPACT","ARRAY_CONSTRUCT","ARRAY_CONSTRUCT_COMPACT","ARRAY_CONTAINS","ARRAY_INSERT","ARRAY_INTERSECTION","ARRAY_POSITION","ARRAY_PREPEND","ARRAY_SIZE","ARRAY_SLICE","ARRAY_TO_STRING","ARRAY_UNION_AGG","ARRAY_UNIQUE_AGG","ARRAYS_OVERLAP","AS_ARRAY","AS_BINARY","AS_BOOLEAN","AS_CHAR","AS_VARCHAR","AS_DATE","AS_DECIMAL","AS_NUMBER","AS_DOUBLE","AS_REAL","AS_INTEGER","AS_OBJECT","AS_TIME","AS_TIMESTAMP_LTZ","AS_TIMESTAMP_NTZ","AS_TIMESTAMP_TZ","ASCII","ASIN","ASINH","ATAN","ATAN2","ATANH","AUTO_REFRESH_REGISTRATION_HISTORY","AUTOMATIC_CLUSTERING_HISTORY","AVG","BASE64_DECODE_BINARY","BASE64_DECODE_STRING","BASE64_ENCODE","BIT_LENGTH","BITAND","BITAND_AGG","BITMAP_BIT_POSITION","BITMAP_BUCKET_NUMBER","BITMAP_CONSTRUCT_AGG","BITMAP_COUNT","BITMAP_OR_AGG","BITNOT","BITOR","BITOR_AGG","BITSHIFTLEFT","BITSHIFTRIGHT","BITXOR","BITXOR_AGG","BOOLAND","BOOLAND_AGG","BOOLNOT","BOOLOR","BOOLOR_AGG","BOOLXOR","BOOLXOR_AGG","BUILD_SCOPED_FILE_URL","BUILD_STAGE_FILE_URL","CASE","CAST","CBRT","CEIL","CHARINDEX","CHECK_JSON","CHECK_XML","CHR","CHAR","COALESCE","COLLATE","COLLATION","COMPLETE_TASK_GRAPHS","COMPRESS","CONCAT","CONCAT_WS","CONDITIONAL_CHANGE_EVENT","CONDITIONAL_TRUE_EVENT","CONTAINS","CONVERT_TIMEZONE","COPY_HISTORY","CORR","COS","COSH","COT","COUNT","COUNT_IF","COVAR_POP","COVAR_SAMP","CUME_DIST","CURRENT_ACCOUNT","CURRENT_AVAILABLE_ROLES","CURRENT_CLIENT","CURRENT_DATABASE","CURRENT_DATE","CURRENT_IP_ADDRESS","CURRENT_REGION","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_SCHEMAS","CURRENT_SECONDARY_ROLES","CURRENT_SESSION","CURRENT_STATEMENT","CURRENT_TASK_GRAPHS","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TRANSACTION","CURRENT_USER","CURRENT_VERSION","CURRENT_WAREHOUSE","DATA_TRANSFER_HISTORY","DATABASE_REFRESH_HISTORY","DATABASE_REFRESH_PROGRESS","DATABASE_REFRESH_PROGRESS_BY_JOB","DATABASE_STORAGE_USAGE_HISTORY","DATE_FROM_PARTS","DATE_PART","DATE_TRUNC","DATEADD","DATEDIFF","DAYNAME","DECODE","DECOMPRESS_BINARY","DECOMPRESS_STRING","DECRYPT","DECRYPT_RAW","DEGREES","DENSE_RANK","DIV0","EDITDISTANCE","ENCRYPT","ENCRYPT_RAW","ENDSWITH","EQUAL_NULL","EXP","EXPLAIN_JSON","EXTERNAL_FUNCTIONS_HISTORY","EXTERNAL_TABLE_FILES","EXTERNAL_TABLE_FILE_REGISTRATION_HISTORY","EXTRACT","EXTRACT_SEMANTIC_CATEGORIES","FACTORIAL","FILTER","FIRST_VALUE","FLATTEN","FLOOR","GENERATE_COLUMN_DESCRIPTION","GENERATOR","GET","GET_ABSOLUTE_PATH","GET_DDL","GET_IGNORE_CASE","GET_OBJECT_REFERENCES","GET_PATH","GET_PRESIGNED_URL","GET_RELATIVE_PATH","GET_STAGE_LOCATION","GETBIT","GREATEST","GREATEST_IGNORE_NULLS","GROUPING","GROUPING_ID","HASH","HASH_AGG","HAVERSINE","HEX_DECODE_BINARY","HEX_DECODE_STRING","HEX_ENCODE","HLL","HLL_ACCUMULATE","HLL_COMBINE","HLL_ESTIMATE","HLL_EXPORT","HLL_IMPORT","HOUR","MINUTE","SECOND","IDENTIFIER","IFF","IFNULL","ILIKE","ILIKE ANY","INFER_SCHEMA","INITCAP","INSERT","INVOKER_ROLE","INVOKER_SHARE","IS_ARRAY","IS_BINARY","IS_BOOLEAN","IS_CHAR","IS_VARCHAR","IS_DATE","IS_DATE_VALUE","IS_DECIMAL","IS_DOUBLE","IS_REAL","IS_GRANTED_TO_INVOKER_ROLE","IS_INTEGER","IS_NULL_VALUE","IS_OBJECT","IS_ROLE_IN_SESSION","IS_TIME","IS_TIMESTAMP_LTZ","IS_TIMESTAMP_NTZ","IS_TIMESTAMP_TZ","JAROWINKLER_SIMILARITY","JSON_EXTRACT_PATH_TEXT","KURTOSIS","LAG","LAST_DAY","LAST_QUERY_ID","LAST_TRANSACTION","LAST_VALUE","LEAD","LEAST","LEFT","LENGTH","LEN","LIKE","LIKE ALL","LIKE ANY","LISTAGG","LN","LOCALTIME","LOCALTIMESTAMP","LOG","LOGIN_HISTORY","LOGIN_HISTORY_BY_USER","LOWER","LPAD","LTRIM","MATERIALIZED_VIEW_REFRESH_HISTORY","MD5","MD5_HEX","MD5_BINARY","MD5_NUMBER — Obsoleted","MD5_NUMBER_LOWER64","MD5_NUMBER_UPPER64","MEDIAN","MIN","MAX","MINHASH","MINHASH_COMBINE","MOD","MODE","MONTHNAME","MONTHS_BETWEEN","NEXT_DAY","NORMAL","NTH_VALUE","NTILE","NULLIF","NULLIFZERO","NVL","NVL2","OBJECT_AGG","OBJECT_CONSTRUCT","OBJECT_CONSTRUCT_KEEP_NULL","OBJECT_DELETE","OBJECT_INSERT","OBJECT_KEYS","OBJECT_PICK","OCTET_LENGTH","PARSE_IP","PARSE_JSON","PARSE_URL","PARSE_XML","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","PI","PIPE_USAGE_HISTORY","POLICY_CONTEXT","POLICY_REFERENCES","POSITION","POW","POWER","PREVIOUS_DAY","QUERY_ACCELERATION_HISTORY","QUERY_HISTORY","QUERY_HISTORY_BY_SESSION","QUERY_HISTORY_BY_USER","QUERY_HISTORY_BY_WAREHOUSE","RADIANS","RANDOM","RANDSTR","RANK","RATIO_TO_REPORT","REGEXP","REGEXP_COUNT","REGEXP_INSTR","REGEXP_LIKE","REGEXP_REPLACE","REGEXP_SUBSTR","REGEXP_SUBSTR_ALL","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","REGR_VALX","REGR_VALY","REPEAT","REPLACE","REPLICATION_GROUP_REFRESH_HISTORY","REPLICATION_GROUP_REFRESH_PROGRESS","REPLICATION_GROUP_REFRESH_PROGRESS_BY_JOB","REPLICATION_GROUP_USAGE_HISTORY","REPLICATION_USAGE_HISTORY","REST_EVENT_HISTORY","RESULT_SCAN","REVERSE","RIGHT","RLIKE","ROUND","ROW_NUMBER","RPAD","RTRIM","RTRIMMED_LENGTH","SEARCH_OPTIMIZATION_HISTORY","SEQ1","SEQ2","SEQ4","SEQ8","SERVERLESS_TASK_HISTORY","SHA1","SHA1_HEX","SHA1_BINARY","SHA2","SHA2_HEX","SHA2_BINARY","SIGN","SIN","SINH","SKEW","SOUNDEX","SPACE","SPLIT","SPLIT_PART","SPLIT_TO_TABLE","SQRT","SQUARE","ST_AREA","ST_ASEWKB","ST_ASEWKT","ST_ASGEOJSON","ST_ASWKB","ST_ASBINARY","ST_ASWKT","ST_ASTEXT","ST_AZIMUTH","ST_CENTROID","ST_COLLECT","ST_CONTAINS","ST_COVEREDBY","ST_COVERS","ST_DIFFERENCE","ST_DIMENSION","ST_DISJOINT","ST_DISTANCE","ST_DWITHIN","ST_ENDPOINT","ST_ENVELOPE","ST_GEOGFROMGEOHASH","ST_GEOGPOINTFROMGEOHASH","ST_GEOGRAPHYFROMWKB","ST_GEOGRAPHYFROMWKT","ST_GEOHASH","ST_GEOMETRYFROMWKB","ST_GEOMETRYFROMWKT","ST_HAUSDORFFDISTANCE","ST_INTERSECTION","ST_INTERSECTS","ST_LENGTH","ST_MAKEGEOMPOINT","ST_GEOM_POINT","ST_MAKELINE","ST_MAKEPOINT","ST_POINT","ST_MAKEPOLYGON","ST_POLYGON","ST_NPOINTS","ST_NUMPOINTS","ST_PERIMETER","ST_POINTN","ST_SETSRID","ST_SIMPLIFY","ST_SRID","ST_STARTPOINT","ST_SYMDIFFERENCE","ST_UNION","ST_WITHIN","ST_X","ST_XMAX","ST_XMIN","ST_Y","ST_YMAX","ST_YMIN","STAGE_DIRECTORY_FILE_REGISTRATION_HISTORY","STAGE_STORAGE_USAGE_HISTORY","STARTSWITH","STDDEV","STDDEV_POP","STDDEV_SAMP","STRIP_NULL_VALUE","STRTOK","STRTOK_SPLIT_TO_TABLE","STRTOK_TO_ARRAY","SUBSTR","SUBSTRING","SUM","SYSDATE","SYSTEM$ABORT_SESSION","SYSTEM$ABORT_TRANSACTION","SYSTEM$AUTHORIZE_PRIVATELINK","SYSTEM$AUTHORIZE_STAGE_PRIVATELINK_ACCESS","SYSTEM$BEHAVIOR_CHANGE_BUNDLE_STATUS","SYSTEM$CANCEL_ALL_QUERIES","SYSTEM$CANCEL_QUERY","SYSTEM$CLUSTERING_DEPTH","SYSTEM$CLUSTERING_INFORMATION","SYSTEM$CLUSTERING_RATIO ","SYSTEM$CURRENT_USER_TASK_NAME","SYSTEM$DATABASE_REFRESH_HISTORY ","SYSTEM$DATABASE_REFRESH_PROGRESS","SYSTEM$DATABASE_REFRESH_PROGRESS_BY_JOB ","SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE","SYSTEM$DISABLE_DATABASE_REPLICATION","SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE","SYSTEM$ESTIMATE_QUERY_ACCELERATION","SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS","SYSTEM$EXPLAIN_JSON_TO_TEXT","SYSTEM$EXPLAIN_PLAN_JSON","SYSTEM$EXTERNAL_TABLE_PIPE_STATUS","SYSTEM$GENERATE_SAML_CSR","SYSTEM$GENERATE_SCIM_ACCESS_TOKEN","SYSTEM$GET_AWS_SNS_IAM_POLICY","SYSTEM$GET_PREDECESSOR_RETURN_VALUE","SYSTEM$GET_PRIVATELINK","SYSTEM$GET_PRIVATELINK_AUTHORIZED_ENDPOINTS","SYSTEM$GET_PRIVATELINK_CONFIG","SYSTEM$GET_SNOWFLAKE_PLATFORM_INFO","SYSTEM$GET_TAG","SYSTEM$GET_TAG_ALLOWED_VALUES","SYSTEM$GET_TAG_ON_CURRENT_COLUMN","SYSTEM$GET_TAG_ON_CURRENT_TABLE","SYSTEM$GLOBAL_ACCOUNT_SET_PARAMETER","SYSTEM$LAST_CHANGE_COMMIT_TIME","SYSTEM$LINK_ACCOUNT_OBJECTS_BY_NAME","SYSTEM$MIGRATE_SAML_IDP_REGISTRATION","SYSTEM$PIPE_FORCE_RESUME","SYSTEM$PIPE_STATUS","SYSTEM$REVOKE_PRIVATELINK","SYSTEM$REVOKE_STAGE_PRIVATELINK_ACCESS","SYSTEM$SET_RETURN_VALUE","SYSTEM$SHOW_OAUTH_CLIENT_SECRETS","SYSTEM$STREAM_GET_TABLE_TIMESTAMP","SYSTEM$STREAM_HAS_DATA","SYSTEM$TASK_DEPENDENTS_ENABLE","SYSTEM$TYPEOF","SYSTEM$USER_TASK_CANCEL_ONGOING_EXECUTIONS","SYSTEM$VERIFY_EXTERNAL_OAUTH_TOKEN","SYSTEM$WAIT","SYSTEM$WHITELIST","SYSTEM$WHITELIST_PRIVATELINK","TAG_REFERENCES","TAG_REFERENCES_ALL_COLUMNS","TAG_REFERENCES_WITH_LINEAGE","TAN","TANH","TASK_DEPENDENTS","TASK_HISTORY","TIME_FROM_PARTS","TIME_SLICE","TIMEADD","TIMEDIFF","TIMESTAMP_FROM_PARTS","TIMESTAMPADD","TIMESTAMPDIFF","TO_ARRAY","TO_BINARY","TO_BOOLEAN","TO_CHAR","TO_VARCHAR","TO_DATE","DATE","TO_DECIMAL","TO_NUMBER","TO_NUMERIC","TO_DOUBLE","TO_GEOGRAPHY","TO_GEOMETRY","TO_JSON","TO_OBJECT","TO_TIME","TIME","TO_TIMESTAMP","TO_TIMESTAMP_LTZ","TO_TIMESTAMP_NTZ","TO_TIMESTAMP_TZ","TO_VARIANT","TO_XML","TRANSLATE","TRIM","TRUNCATE","TRUNC","TRUNC","TRY_BASE64_DECODE_BINARY","TRY_BASE64_DECODE_STRING","TRY_CAST","TRY_HEX_DECODE_BINARY","TRY_HEX_DECODE_STRING","TRY_PARSE_JSON","TRY_TO_BINARY","TRY_TO_BOOLEAN","TRY_TO_DATE","TRY_TO_DECIMAL","TRY_TO_NUMBER","TRY_TO_NUMERIC","TRY_TO_DOUBLE","TRY_TO_GEOGRAPHY","TRY_TO_GEOMETRY","TRY_TO_TIME","TRY_TO_TIMESTAMP","TRY_TO_TIMESTAMP_LTZ","TRY_TO_TIMESTAMP_NTZ","TRY_TO_TIMESTAMP_TZ","TYPEOF","UNICODE","UNIFORM","UPPER","UUID_STRING","VALIDATE","VALIDATE_PIPE_LOAD","VAR_POP","VAR_SAMP","VARIANCE","VARIANCE_SAMP","VARIANCE_POP","WAREHOUSE_LOAD_HISTORY","WAREHOUSE_METERING_HISTORY","WIDTH_BUCKET","XMLGET","YEAR","YEAROFWEEK","YEAROFWEEKISO","DAY","DAYOFMONTH","DAYOFWEEK","DAYOFWEEKISO","DAYOFYEAR","WEEK","WEEK","WEEKOFYEAR","WEEKISO","MONTH","QUARTER","ZEROIFNULL","ZIPF"],eA=["ACCOUNT","ALL","ALTER","AND","ANY","AS","BETWEEN","BY","CASE","CAST","CHECK","COLUMN","CONNECT","CONNECTION","CONSTRAINT","CREATE","CROSS","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","DATABASE","DELETE","DISTINCT","DROP","ELSE","EXISTS","FALSE","FOLLOWING","FOR","FROM","FULL","GRANT","GROUP","GSCLUSTER","HAVING","ILIKE","IN","INCREMENT","INNER","INSERT","INTERSECT","INTO","IS","ISSUE","JOIN","LATERAL","LEFT","LIKE","LOCALTIME","LOCALTIMESTAMP","MINUS","NATURAL","NOT","NULL","OF","ON","OR","ORDER","ORGANIZATION","QUALIFY","REGEXP","REVOKE","RIGHT","RLIKE","ROW","ROWS","SAMPLE","SCHEMA","SELECT","SET","SOME","START","TABLE","TABLESAMPLE","THEN","TO","TRIGGER","TRUE","TRY_CAST","UNION","UNIQUE","UPDATE","USING","VALUES","VIEW","WHEN","WHENEVER","WHERE","WITH","COMMENT"],tA=["NUMBER","DECIMAL","NUMERIC","INT","INTEGER","BIGINT","SMALLINT","TINYINT","BYTEINT","FLOAT","FLOAT4","FLOAT8","DOUBLE","DOUBLE PRECISION","REAL","VARCHAR","CHAR","CHARACTER","STRING","TEXT","BINARY","VARBINARY","BOOLEAN","DATE","DATETIME","TIME","TIMESTAMP","TIMESTAMP_LTZ","TIMESTAMP_NTZ","TIMESTAMP","TIMESTAMP_TZ","VARIANT","OBJECT","ARRAY","GEOGRAPHY","GEOMETRY"],EA=u(["SELECT [ALL | DISTINCT]"]),rA=u(["WITH [RECURSIVE]","FROM","WHERE","GROUP BY","HAVING","PARTITION BY","ORDER BY","QUALIFY","LIMIT","OFFSET","FETCH [FIRST | NEXT]","INSERT [OVERWRITE] [ALL INTO | INTO | ALL | FIRST]","{THEN | ELSE} INTO","VALUES","SET","CLUSTER BY","[WITH] {MASKING POLICY | TAG | ROW ACCESS POLICY}","COPY GRANTS","USING TEMPLATE","MERGE INTO","WHEN MATCHED [AND]","THEN {UPDATE SET | DELETE}","WHEN NOT MATCHED THEN INSERT"]),$r=u(["CREATE [OR REPLACE] [VOLATILE] TABLE [IF NOT EXISTS]","CREATE [OR REPLACE] [LOCAL | GLOBAL] {TEMP|TEMPORARY} TABLE [IF NOT EXISTS]"]),iE=u(["CREATE [OR REPLACE] [SECURE] [RECURSIVE] VIEW [IF NOT EXISTS]","UPDATE","DELETE FROM","DROP TABLE [IF EXISTS]","ALTER TABLE [IF EXISTS]","RENAME TO","SWAP WITH","[SUSPEND | RESUME] RECLUSTER","DROP CLUSTERING KEY","ADD [COLUMN]","RENAME COLUMN","{ALTER | MODIFY} [COLUMN]","DROP [COLUMN]","{ADD | ALTER | MODIFY | DROP} [CONSTRAINT]","RENAME CONSTRAINT","{ADD | DROP} SEARCH OPTIMIZATION","{SET | UNSET} TAG","{ADD | DROP} ROW ACCESS POLICY","DROP ALL ROW ACCESS POLICIES","{SET | DROP} DEFAULT","{SET | DROP} NOT NULL","SET DATA TYPE","UNSET COMMENT","{SET | UNSET} MASKING POLICY","TRUNCATE [TABLE] [IF EXISTS]","ALTER ACCOUNT","ALTER API INTEGRATION","ALTER CONNECTION","ALTER DATABASE","ALTER EXTERNAL TABLE","ALTER FAILOVER GROUP","ALTER FILE FORMAT","ALTER FUNCTION","ALTER INTEGRATION","ALTER MASKING POLICY","ALTER MATERIALIZED VIEW","ALTER NETWORK POLICY","ALTER NOTIFICATION INTEGRATION","ALTER PIPE","ALTER PROCEDURE","ALTER REPLICATION GROUP","ALTER RESOURCE MONITOR","ALTER ROLE","ALTER ROW ACCESS POLICY","ALTER SCHEMA","ALTER SECURITY INTEGRATION","ALTER SEQUENCE","ALTER SESSION","ALTER SESSION POLICY","ALTER SHARE","ALTER STAGE","ALTER STORAGE INTEGRATION","ALTER STREAM","ALTER TAG","ALTER TASK","ALTER USER","ALTER VIEW","ALTER WAREHOUSE","BEGIN","CALL","COMMIT","COPY INTO","CREATE ACCOUNT","CREATE API INTEGRATION","CREATE CONNECTION","CREATE DATABASE","CREATE EXTERNAL FUNCTION","CREATE EXTERNAL TABLE","CREATE FAILOVER GROUP","CREATE FILE FORMAT","CREATE FUNCTION","CREATE INTEGRATION","CREATE MANAGED ACCOUNT","CREATE MASKING POLICY","CREATE MATERIALIZED VIEW","CREATE NETWORK POLICY","CREATE NOTIFICATION INTEGRATION","CREATE PIPE","CREATE PROCEDURE","CREATE REPLICATION GROUP","CREATE RESOURCE MONITOR","CREATE ROLE","CREATE ROW ACCESS POLICY","CREATE SCHEMA","CREATE SECURITY INTEGRATION","CREATE SEQUENCE","CREATE SESSION POLICY","CREATE SHARE","CREATE STAGE","CREATE STORAGE INTEGRATION","CREATE STREAM","CREATE TAG","CREATE TASK","CREATE USER","CREATE WAREHOUSE","DELETE","DESCRIBE DATABASE","DESCRIBE EXTERNAL TABLE","DESCRIBE FILE FORMAT","DESCRIBE FUNCTION","DESCRIBE INTEGRATION","DESCRIBE MASKING POLICY","DESCRIBE MATERIALIZED VIEW","DESCRIBE NETWORK POLICY","DESCRIBE PIPE","DESCRIBE PROCEDURE","DESCRIBE RESULT","DESCRIBE ROW ACCESS POLICY","DESCRIBE SCHEMA","DESCRIBE SEQUENCE","DESCRIBE SESSION POLICY","DESCRIBE SHARE","DESCRIBE STAGE","DESCRIBE STREAM","DESCRIBE TABLE","DESCRIBE TASK","DESCRIBE TRANSACTION","DESCRIBE USER","DESCRIBE VIEW","DESCRIBE WAREHOUSE","DROP CONNECTION","DROP DATABASE","DROP EXTERNAL TABLE","DROP FAILOVER GROUP","DROP FILE FORMAT","DROP FUNCTION","DROP INTEGRATION","DROP MANAGED ACCOUNT","DROP MASKING POLICY","DROP MATERIALIZED VIEW","DROP NETWORK POLICY","DROP PIPE","DROP PROCEDURE","DROP REPLICATION GROUP","DROP RESOURCE MONITOR","DROP ROLE","DROP ROW ACCESS POLICY","DROP SCHEMA","DROP SEQUENCE","DROP SESSION POLICY","DROP SHARE","DROP STAGE","DROP STREAM","DROP TAG","DROP TASK","DROP USER","DROP VIEW","DROP WAREHOUSE","EXECUTE IMMEDIATE","EXECUTE TASK","EXPLAIN","GET","GRANT OWNERSHIP","GRANT ROLE","INSERT","LIST","MERGE","PUT","REMOVE","REVOKE ROLE","ROLLBACK","SHOW COLUMNS","SHOW CONNECTIONS","SHOW DATABASES","SHOW DATABASES IN FAILOVER GROUP","SHOW DATABASES IN REPLICATION GROUP","SHOW DELEGATED AUTHORIZATIONS","SHOW EXTERNAL FUNCTIONS","SHOW EXTERNAL TABLES","SHOW FAILOVER GROUPS","SHOW FILE FORMATS","SHOW FUNCTIONS","SHOW GLOBAL ACCOUNTS","SHOW GRANTS","SHOW INTEGRATIONS","SHOW LOCKS","SHOW MANAGED ACCOUNTS","SHOW MASKING POLICIES","SHOW MATERIALIZED VIEWS","SHOW NETWORK POLICIES","SHOW OBJECTS","SHOW ORGANIZATION ACCOUNTS","SHOW PARAMETERS","SHOW PIPES","SHOW PRIMARY KEYS","SHOW PROCEDURES","SHOW REGIONS","SHOW REPLICATION ACCOUNTS","SHOW REPLICATION DATABASES","SHOW REPLICATION GROUPS","SHOW RESOURCE MONITORS","SHOW ROLES","SHOW ROW ACCESS POLICIES","SHOW SCHEMAS","SHOW SEQUENCES","SHOW SESSION POLICIES","SHOW SHARES","SHOW SHARES IN FAILOVER GROUP","SHOW SHARES IN REPLICATION GROUP","SHOW STAGES","SHOW STREAMS","SHOW TABLES","SHOW TAGS","SHOW TASKS","SHOW TRANSACTIONS","SHOW USER FUNCTIONS","SHOW USERS","SHOW VARIABLES","SHOW VIEWS","SHOW WAREHOUSES","TRUNCATE MATERIALIZED VIEW","UNDROP DATABASE","UNDROP SCHEMA","UNDROP TABLE","UNDROP TAG","UNSET","USE DATABASE","USE ROLE","USE SCHEMA","USE SECONDARY ROLES","USE WAREHOUSE"]),nA=u(["UNION [ALL]","MINUS","EXCEPT","INTERSECT"]),sA=u(["[INNER] JOIN","[NATURAL] {LEFT | RIGHT | FULL} [OUTER] JOIN","{CROSS | NATURAL} JOIN"]),TA=u(["{ROWS | RANGE} BETWEEN","ON {UPDATE | DELETE} [SET NULL | SET DEFAULT]"]),oA=u([]),iA={name:"snowflake",tokenizerOptions:{reservedSelect:EA,reservedClauses:[...rA,...$r,...iE],reservedSetOperations:nA,reservedJoins:sA,reservedKeywordPhrases:TA,reservedDataTypePhrases:oA,reservedKeywords:eA,reservedDataTypes:tA,reservedFunctionNames:ZR,stringTypes:["$$","''-qq-bs"],identTypes:['""-qq'],variableTypes:[{regex:"[$][1-9]\\d*"},{regex:"[$][_a-zA-Z][_a-zA-Z0-9$]*"}],extraParens:["[]"],identChars:{rest:"$"},lineCommentTypes:["--","//"],operators:["%","::","||","=>",":=","->"],propertyAccessOperators:[":"]},formatOptions:{alwaysDenseOperators:["::"],onelineClauses:[...$r,...iE],tabularOnelineClauses:iE}},aA=Object.freeze(Object.defineProperty({__proto__:null,bigquery:mo,clickhouse:vo,db2:Qo,db2i:oi,duckdb:ci,hive:mi,mariadb:bi,mysql:ki,n1ql:la,plsql:pa,postgresql:Ga,redshift:Xa,singlestoredb:zR,snowflake:iA,spark:eR,sql:uR,sqlite:AR,tidb:ra,transactsql:WR,trino:gR},Symbol.toStringTag,{value:"Module"})),et=e=>e[e.length-1],gn=e=>e.sort((t,r)=>r.length-t.length||t.localeCompare(r)),Mt=e=>e.replace(/\s+/gu," "),aE=e=>/\n/.test(e),Ce=e=>e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),kr=/\s+/uy,He=e=>new RegExp(`(?:${e})`,"uy"),RA=e=>e.split("").map(t=>/ /gu.test(t)?"\\s+":`[${t.toUpperCase()}${t.toLowerCase()}]`).join(""),AA=e=>e+"(?:-"+e+")*",SA=({prefixes:e,requirePrefix:t})=>`(?:${e.map(RA).join("|")}${t?"":"|"})`,lA=e=>new RegExp(`(?:${e.map(Ce).join("|")}).*?(?=\r
154
+ |\r|
155
+ |$)`,"uy"),Kr=(e,t=[])=>{const r=e==="open"?0:1,s=["()",...t].map(n=>n[r]);return He(s.map(Ce).join("|"))},qr=e=>He(`${gn(e).map(Ce).join("|")}`),IA=({rest:e,dashes:t})=>e||t?`(?![${e||""}${t?"-":""}])`:"",pe=(e,t={})=>{if(e.length===0)return/^\b$/u;const r=IA(t),s=gn(e).map(Ce).join("|").replace(/ /gu,"\\s+");return new RegExp(`(?:${s})${r}\\b`,"iuy")},RE=(e,t)=>{if(!e.length)return;const r=e.map(Ce).join("|");return He(`(?:${r})(?:${t})`)},OA=()=>{const e={"<":">","[":"]","(":")","{":"}"},t="{left}(?:(?!{right}').)*?{right}",r=Object.entries(e).map(([o,i])=>t.replace(/{left}/g,Ce(o)).replace(/{right}/g,Ce(i))),s=Ce(Object.keys(e).join(""));return`[Qq]'(?:${String.raw`(?<tag>[^\s${s}])(?:(?!\k<tag>').)*?\k<tag>`}|${r.join("|")})'`},Jr={"``":"(?:`[^`]*`)+","[]":String.raw`(?:\[[^\]]*\])(?:\][^\]]*\])*`,'""-qq':String.raw`(?:"[^"]*")+`,'""-bs':String.raw`(?:"[^"\\]*(?:\\.[^"\\]*)*")`,'""-qq-bs':String.raw`(?:"[^"\\]*(?:\\.[^"\\]*)*")+`,'""-raw':String.raw`(?:"[^"]*")`,"''-qq":String.raw`(?:'[^']*')+`,"''-bs":String.raw`(?:'[^'\\]*(?:\\.[^'\\]*)*')`,"''-qq-bs":String.raw`(?:'[^'\\]*(?:\\.[^'\\]*)*')+`,"''-raw":String.raw`(?:'[^']*')`,$$:String.raw`(?<tag>\$\w*\$)[\s\S]*?\k<tag>`,"'''..'''":String.raw`'''[^\\]*?(?:\\.[^\\]*?)*?'''`,'""".."""':String.raw`"""[^\\]*?(?:\\.[^\\]*?)*?"""`,"{}":String.raw`(?:\{[^\}]*\})`,"q''":OA()},yn=e=>typeof e=="string"?Jr[e]:"regex"in e?e.regex:SA(e)+Jr[e.quote],NA=e=>He(e.map(t=>"regex"in t?t.regex:yn(t)).join("|")),Gn=e=>e.map(yn).join("|"),Qr=e=>He(Gn(e)),cA=(e={})=>He(Bn(e)),Bn=({first:e,rest:t,dashes:r,allowFirstCharNumber:s}={})=>{const n="\\p{Alphabetic}\\p{Mark}_",T="\\p{Decimal_Number}",o=Ce(e??""),i=Ce(t??""),S=s?`[${n}${T}${o}][${n}${T}${i}]*`:`[${n}${o}][${n}${T}${i}]*`;return r?AA(S):S};function Hn(e,t){const r=e.slice(0,t).split(/\n/);return{line:r.length,col:r[r.length-1].length+1}}class dA{constructor(t,r){this.rules=t,this.dialectName=r,this.input="",this.index=0}tokenize(t){this.input=t,this.index=0;const r=[];let s;for(;this.index<this.input.length;){const n=this.getWhitespace();if(this.index<this.input.length){if(s=this.getNextToken(),!s)throw this.createParseError();r.push(Object.assign(Object.assign({},s),{precedingWhitespace:n}))}}return r}createParseError(){const t=this.input.slice(this.index,this.index+10),{line:r,col:s}=Hn(this.input,this.index);return new Error(`Parse error: Unexpected "${t}" at line ${r} column ${s}.
156
+ ${this.dialectInfo()}`)}dialectInfo(){return this.dialectName==="sql"?`This likely happens because you're using the default "sql" dialect.
157
+ If possible, please select a more specific dialect (like sqlite, postgresql, etc).`:`SQL dialect used: "${this.dialectName}".`}getWhitespace(){kr.lastIndex=this.index;const t=kr.exec(this.input);if(t)return this.index+=t[0].length,t[0]}getNextToken(){for(const t of this.rules){const r=this.match(t);if(r)return r}}match(t){t.regex.lastIndex=this.index;const r=t.regex.exec(this.input);if(r){const s=r[0],n={type:t.type,raw:s,text:t.text?t.text(s):s,start:this.index};return t.key&&(n.key=t.key(s)),this.index+=s.length,n}}}const zr=/\/\*/uy,CA=/[\s\S]/uy,LA=/\*\//uy;class _A{constructor(){this.lastIndex=0}exec(t){let r="",s,n=0;if(s=this.matchSection(zr,t))r+=s,n++;else return null;for(;n>0;)if(s=this.matchSection(zr,t))r+=s,n++;else if(s=this.matchSection(LA,t))r+=s,n--;else if(s=this.matchSection(CA,t))r+=s;else return null;return[r]}matchSection(t,r){t.lastIndex=this.lastIndex;const s=t.exec(r);return s&&(this.lastIndex+=s[0].length),s?s[0]:null}}class uA{constructor(t,r){this.cfg=t,this.dialectName=r,this.rulesBeforeParams=this.buildRulesBeforeParams(t),this.rulesAfterParams=this.buildRulesAfterParams(t)}tokenize(t,r){const s=[...this.rulesBeforeParams,...this.buildParamRules(this.cfg,r),...this.rulesAfterParams],n=new dA(s,this.dialectName).tokenize(t);return this.cfg.postProcess?this.cfg.postProcess(n):n}buildRulesBeforeParams(t){var r,s,n;return this.validRules([{type:D.DISABLE_COMMENT,regex:/(\/\* *sql-formatter-disable *\*\/[\s\S]*?(?:\/\* *sql-formatter-enable *\*\/|$))/uy},{type:D.BLOCK_COMMENT,regex:t.nestedBlockComments?new _A:/(\/\*[^]*?\*\/)/uy},{type:D.LINE_COMMENT,regex:lA((r=t.lineCommentTypes)!==null&&r!==void 0?r:["--"])},{type:D.QUOTED_IDENTIFIER,regex:Qr(t.identTypes)},{type:D.NUMBER,regex:t.underscoresInNumbers?/(?:0x[0-9a-fA-F_]+|0b[01_]+|(?:-\s*)?(?:[0-9_]*\.[0-9_]+|[0-9_]+(?:\.[0-9_]*)?)(?:[eE][-+]?[0-9_]+(?:\.[0-9_]+)?)?)(?![\w\p{Alphabetic}])/uy:/(?:0x[0-9a-fA-F]+|0b[01]+|(?:-\s*)?(?:[0-9]*\.[0-9]+|[0-9]+(?:\.[0-9]*)?)(?:[eE][-+]?[0-9]+(?:\.[0-9]+)?)?)(?![\w\p{Alphabetic}])/uy},{type:D.RESERVED_KEYWORD_PHRASE,regex:pe((s=t.reservedKeywordPhrases)!==null&&s!==void 0?s:[],t.identChars),text:se},{type:D.RESERVED_DATA_TYPE_PHRASE,regex:pe((n=t.reservedDataTypePhrases)!==null&&n!==void 0?n:[],t.identChars),text:se},{type:D.CASE,regex:/CASE\b/iuy,text:se},{type:D.END,regex:/END\b/iuy,text:se},{type:D.BETWEEN,regex:/BETWEEN\b/iuy,text:se},{type:D.LIMIT,regex:t.reservedClauses.includes("LIMIT")?/LIMIT\b/iuy:void 0,text:se},{type:D.RESERVED_CLAUSE,regex:pe(t.reservedClauses,t.identChars),text:se},{type:D.RESERVED_SELECT,regex:pe(t.reservedSelect,t.identChars),text:se},{type:D.RESERVED_SET_OPERATION,regex:pe(t.reservedSetOperations,t.identChars),text:se},{type:D.WHEN,regex:/WHEN\b/iuy,text:se},{type:D.ELSE,regex:/ELSE\b/iuy,text:se},{type:D.THEN,regex:/THEN\b/iuy,text:se},{type:D.RESERVED_JOIN,regex:pe(t.reservedJoins,t.identChars),text:se},{type:D.AND,regex:/AND\b/iuy,text:se},{type:D.OR,regex:/OR\b/iuy,text:se},{type:D.XOR,regex:t.supportsXor?/XOR\b/iuy:void 0,text:se},...t.operatorKeyword?[{type:D.OPERATOR,regex:/OPERATOR *\([^)]+\)/iuy}]:[],{type:D.RESERVED_FUNCTION_NAME,regex:pe(t.reservedFunctionNames,t.identChars),text:se},{type:D.RESERVED_DATA_TYPE,regex:pe(t.reservedDataTypes,t.identChars),text:se},{type:D.RESERVED_KEYWORD,regex:pe(t.reservedKeywords,t.identChars),text:se}])}buildRulesAfterParams(t){var r,s;return this.validRules([{type:D.VARIABLE,regex:t.variableTypes?NA(t.variableTypes):void 0},{type:D.STRING,regex:Qr(t.stringTypes)},{type:D.IDENTIFIER,regex:cA(t.identChars)},{type:D.DELIMITER,regex:/[;]/uy},{type:D.COMMA,regex:/[,]/y},{type:D.OPEN_PAREN,regex:Kr("open",t.extraParens)},{type:D.CLOSE_PAREN,regex:Kr("close",t.extraParens)},{type:D.OPERATOR,regex:qr(["+","-","/",">","<","=","<>","<=",">=","!=",...(r=t.operators)!==null&&r!==void 0?r:[]])},{type:D.ASTERISK,regex:/[*]/uy},{type:D.PROPERTY_ACCESS_OPERATOR,regex:qr([".",...(s=t.propertyAccessOperators)!==null&&s!==void 0?s:[]])}])}buildParamRules(t,r){var s,n,T,o,i;const S={named:(r==null?void 0:r.named)||((s=t.paramTypes)===null||s===void 0?void 0:s.named)||[],quoted:(r==null?void 0:r.quoted)||((n=t.paramTypes)===null||n===void 0?void 0:n.quoted)||[],numbered:(r==null?void 0:r.numbered)||((T=t.paramTypes)===null||T===void 0?void 0:T.numbered)||[],positional:typeof(r==null?void 0:r.positional)=="boolean"?r.positional:(o=t.paramTypes)===null||o===void 0?void 0:o.positional,custom:(r==null?void 0:r.custom)||((i=t.paramTypes)===null||i===void 0?void 0:i.custom)||[]};return this.validRules([{type:D.NAMED_PARAMETER,regex:RE(S.named,Bn(t.paramChars||t.identChars)),key:a=>a.slice(1)},{type:D.QUOTED_PARAMETER,regex:RE(S.quoted,Gn(t.identTypes)),key:a=>(({tokenKey:A,quoteChar:R})=>A.replace(new RegExp(Ce("\\"+R),"gu"),R))({tokenKey:a.slice(2,-1),quoteChar:a.slice(-1)})},{type:D.NUMBERED_PARAMETER,regex:RE(S.numbered,"[0-9]+"),key:a=>a.slice(1)},{type:D.POSITIONAL_PARAMETER,regex:S.positional?/[?]/y:void 0},...S.custom.map(a=>{var A;return{type:D.CUSTOM_PARAMETER,regex:He(a.regex),key:(A=a.key)!==null&&A!==void 0?A:(R=>R)}})])}validRules(t){return t.filter(r=>!!r.regex)}}const se=e=>Mt(e.toUpperCase()),Zr=new Map,pA=e=>{let t=Zr.get(e);return t||(t=DA(e),Zr.set(e,t)),t},DA=e=>({tokenizer:new uA(e.tokenizerOptions,e.name),formatOptions:PA(e.formatOptions)}),PA=e=>{var t;return{alwaysDenseOperators:e.alwaysDenseOperators||[],onelineClauses:Object.fromEntries(e.onelineClauses.map(r=>[r,!0])),tabularOnelineClauses:Object.fromEntries(((t=e.tabularOnelineClauses)!==null&&t!==void 0?t:e.onelineClauses).map(r=>[r,!0]))}};function MA(e){return e.indentStyle==="tabularLeft"||e.indentStyle==="tabularRight"?" ".repeat(10):e.useTabs?" ":" ".repeat(e.tabWidth)}function We(e){return e.indentStyle==="tabularLeft"||e.indentStyle==="tabularRight"}class mA{constructor(t){this.params=t,this.index=0}get({key:t,text:r}){return this.params?t?this.params[t]:this.params[this.index++]:r}getPositionalParameterIndex(){return this.index}setPositionalParameterIndex(t){this.index=t}}var mt={exports:{}},fA=mt.exports,en;function hA(){return en||(en=1,(function(e){(function(t,r){e.exports?e.exports=r():t.nearley=r()})(fA,function(){function t(a,A,R){return this.id=++t.highestId,this.name=a,this.symbols=A,this.postprocess=R,this}t.highestId=0,t.prototype.toString=function(a){var A=typeof a>"u"?this.symbols.map(S).join(" "):this.symbols.slice(0,a).map(S).join(" ")+" ● "+this.symbols.slice(a).map(S).join(" ");return this.name+" → "+A};function r(a,A,R,N){this.rule=a,this.dot=A,this.reference=R,this.data=[],this.wantedBy=N,this.isComplete=this.dot===a.symbols.length}r.prototype.toString=function(){return"{"+this.rule.toString(this.dot)+"}, from: "+(this.reference||0)},r.prototype.nextState=function(a){var A=new r(this.rule,this.dot+1,this.reference,this.wantedBy);return A.left=this,A.right=a,A.isComplete&&(A.data=A.build(),A.right=void 0),A},r.prototype.build=function(){var a=[],A=this;do a.push(A.right.data),A=A.left;while(A.left);return a.reverse(),a},r.prototype.finish=function(){this.rule.postprocess&&(this.data=this.rule.postprocess(this.data,this.reference,o.fail))};function s(a,A){this.grammar=a,this.index=A,this.states=[],this.wants={},this.scannable=[],this.completed={}}s.prototype.process=function(a){for(var A=this.states,R=this.wants,N=this.completed,I=0;I<A.length;I++){var c=A[I];if(c.isComplete){if(c.finish(),c.data!==o.fail){for(var _=c.wantedBy,O=_.length;O--;){var C=_[O];this.complete(C,c)}if(c.reference===this.index){var L=c.rule.name;(this.completed[L]=this.completed[L]||[]).push(c)}}}else{var L=c.rule.symbols[c.dot];if(typeof L!="string"){this.scannable.push(c);continue}if(R[L]){if(R[L].push(c),N.hasOwnProperty(L))for(var f=N[L],O=0;O<f.length;O++){var x=f[O];this.complete(c,x)}}else R[L]=[c],this.predict(L)}}},s.prototype.predict=function(a){for(var A=this.grammar.byName[a]||[],R=0;R<A.length;R++){var N=A[R],I=this.wants[a],c=new r(N,0,this.index,I);this.states.push(c)}},s.prototype.complete=function(a,A){var R=a.nextState(A);this.states.push(R)};function n(a,A){this.rules=a,this.start=A||this.rules[0].name;var R=this.byName={};this.rules.forEach(function(N){R.hasOwnProperty(N.name)||(R[N.name]=[]),R[N.name].push(N)})}n.fromCompiled=function(N,A){var R=N.Lexer;N.ParserStart&&(A=N.ParserStart,N=N.ParserRules);var N=N.map(function(c){return new t(c.name,c.symbols,c.postprocess)}),I=new n(N,A);return I.lexer=R,I};function T(){this.reset("")}T.prototype.reset=function(a,A){this.buffer=a,this.index=0,this.line=A?A.line:1,this.lastLineBreak=A?-A.col:0},T.prototype.next=function(){if(this.index<this.buffer.length){var a=this.buffer[this.index++];return a===`
158
+ `&&(this.line+=1,this.lastLineBreak=this.index),{value:a}}},T.prototype.save=function(){return{line:this.line,col:this.index-this.lastLineBreak}},T.prototype.formatError=function(a,A){var R=this.buffer;if(typeof R=="string"){var N=R.split(`
159
+ `).slice(Math.max(0,this.line-5),this.line),I=R.indexOf(`
160
+ `,this.index);I===-1&&(I=R.length);var c=this.index-this.lastLineBreak,_=String(this.line).length;return A+=" at line "+this.line+" col "+c+`:
161
+
162
+ `,A+=N.map(function(C,L){return O(this.line-N.length+L+1,_)+" "+C},this).join(`
163
+ `),A+=`
164
+ `+O("",_+c)+`^
165
+ `,A}else return A+" at index "+(this.index-1);function O(C,L){var f=String(C);return Array(L-f.length+1).join(" ")+f}};function o(a,A,R){if(a instanceof n)var N=a,R=A;else var N=n.fromCompiled(a,A);this.grammar=N,this.options={keepHistory:!1,lexer:N.lexer||new T};for(var I in R||{})this.options[I]=R[I];this.lexer=this.options.lexer,this.lexerState=void 0;var c=new s(N,0);this.table=[c],c.wants[N.start]=[],c.predict(N.start),c.process(),this.current=0}o.fail={},o.prototype.feed=function(a){var A=this.lexer;A.reset(a,this.lexerState);for(var R;;){try{if(R=A.next(),!R)break}catch(m){var _=new s(this.grammar,this.current+1);this.table.push(_);var N=new Error(this.reportLexerError(m));throw N.offset=this.current,N.token=m.token,N}var I=this.table[this.current];this.options.keepHistory||delete this.table[this.current-1];var c=this.current+1,_=new s(this.grammar,c);this.table.push(_);for(var O=R.text!==void 0?R.text:R.value,C=A.constructor===T?R.value:R,L=I.scannable,f=L.length;f--;){var x=L[f],M=x.rule.symbols[x.dot];if(M.test?M.test(C):M.type?M.type===R.type:M.literal===O){var b=x.nextState({data:C,token:R,isToken:!0,reference:c-1});_.states.push(b)}}if(_.process(),_.states.length===0){var N=new Error(this.reportError(R));throw N.offset=this.current,N.token=R,N}this.options.keepHistory&&(I.lexerState=A.save()),this.current++}return I&&(this.lexerState=A.save()),this.results=this.finish(),this},o.prototype.reportLexerError=function(a){var A,R,N=a.token;return N?(A="input "+JSON.stringify(N.text[0])+" (lexer error)",R=this.lexer.formatError(N,"Syntax error")):(A="input (lexer error)",R=a.message),this.reportErrorCommon(R,A)},o.prototype.reportError=function(a){var A=(a.type?a.type+" token: ":"")+JSON.stringify(a.value!==void 0?a.value:a),R=this.lexer.formatError(a,"Syntax error");return this.reportErrorCommon(R,A)},o.prototype.reportErrorCommon=function(a,A){var R=[];R.push(a);var N=this.table.length-2,I=this.table[N],c=I.states.filter(function(O){var C=O.rule.symbols[O.dot];return C&&typeof C!="string"});if(c.length===0)R.push("Unexpected "+A+`. I did not expect any more input. Here is the state of my parse table:
166
+ `),this.displayStateStack(I.states,R);else{R.push("Unexpected "+A+`. Instead, I was expecting to see one of the following:
167
+ `);var _=c.map(function(O){return this.buildFirstStateStack(O,[])||[O]},this);_.forEach(function(O){var C=O[0],L=C.rule.symbols[C.dot],f=this.getSymbolDisplay(L);R.push("A "+f+" based on:"),this.displayStateStack(O,R)},this)}return R.push(""),R.join(`
168
+ `)},o.prototype.displayStateStack=function(a,A){for(var R,N=0,I=0;I<a.length;I++){var c=a[I],_=c.rule.toString(c.dot);_===R?N++:(N>0&&A.push(" ^ "+N+" more lines identical to this"),N=0,A.push(" "+_)),R=_}},o.prototype.getSymbolDisplay=function(a){return i(a)},o.prototype.buildFirstStateStack=function(a,A){if(A.indexOf(a)!==-1)return null;if(a.wantedBy.length===0)return[a];var R=a.wantedBy[0],N=[a].concat(A),I=this.buildFirstStateStack(R,N);return I===null?null:[a].concat(I)},o.prototype.save=function(){var a=this.table[this.current];return a.lexerState=this.lexerState,a},o.prototype.restore=function(a){var A=a.index;this.current=A,this.table[A]=a,this.table.splice(A+1),this.lexerState=a.lexerState,this.results=this.finish()},o.prototype.rewind=function(a){if(!this.options.keepHistory)throw new Error("set option `keepHistory` to enable rewinding");this.restore(this.table[a])},o.prototype.finish=function(){var a=[],A=this.grammar.start,R=this.table[this.table.length-1];return R.states.forEach(function(N){N.rule.name===A&&N.dot===N.rule.symbols.length&&N.reference===0&&N.data!==o.fail&&a.push(N)}),a.map(function(N){return N.data})};function i(a){var A=typeof a;if(A==="string")return a;if(A==="object"){if(a.literal)return JSON.stringify(a.literal);if(a instanceof RegExp)return"character matching "+a;if(a.type)return a.type+" token";if(a.test)return"token matching "+String(a.test);throw new Error("Unknown symbol type: "+a)}}function S(a){var A=typeof a;if(A==="string")return a;if(A==="object"){if(a.literal)return JSON.stringify(a.literal);if(a instanceof RegExp)return a.toString();if(a.type)return"%"+a.type;if(a.test)return"<"+String(a.test)+">";throw new Error("Unknown symbol type: "+a)}}return{Parser:o,Grammar:n,Rule:t}})})(mt)),mt.exports}var UA=hA();const xA=Gs(UA);function gA(e){return e.map(yA).map(GA).map(BA).map(HA).map(bA)}const yA=(e,t,r)=>{if(xn(e.type)){const s=FA(r,t);if(s&&s.type===D.PROPERTY_ACCESS_OPERATOR)return Object.assign(Object.assign({},e),{type:D.IDENTIFIER,text:e.raw});const n=ke(r,t);if(n&&n.type===D.PROPERTY_ACCESS_OPERATOR)return Object.assign(Object.assign({},e),{type:D.IDENTIFIER,text:e.raw})}return e},GA=(e,t,r)=>{if(e.type===D.RESERVED_FUNCTION_NAME){const s=ke(r,t);if(!s||!bn(s))return Object.assign(Object.assign({},e),{type:D.IDENTIFIER,text:e.raw})}return e},BA=(e,t,r)=>{if(e.type===D.RESERVED_DATA_TYPE){const s=ke(r,t);if(s&&bn(s))return Object.assign(Object.assign({},e),{type:D.RESERVED_PARAMETERIZED_DATA_TYPE})}return e},HA=(e,t,r)=>{if(e.type===D.IDENTIFIER){const s=ke(r,t);if(s&&Fn(s))return Object.assign(Object.assign({},e),{type:D.ARRAY_IDENTIFIER})}return e},bA=(e,t,r)=>{if(e.type===D.RESERVED_DATA_TYPE){const s=ke(r,t);if(s&&Fn(s))return Object.assign(Object.assign({},e),{type:D.ARRAY_KEYWORD})}return e},FA=(e,t)=>ke(e,t,-1),ke=(e,t,r=1)=>{let s=1;for(;e[t+s*r]&&YA(e[t+s*r]);)s++;return e[t+s*r]},bn=e=>e.type===D.OPEN_PAREN&&e.text==="(",Fn=e=>e.type===D.OPEN_PAREN&&e.text==="[",YA=e=>e.type===D.BLOCK_COMMENT||e.type===D.LINE_COMMENT;class Yn{constructor(t){this.tokenize=t,this.index=0,this.tokens=[],this.input=""}reset(t,r){this.input=t,this.index=0,this.tokens=this.tokenize(t)}next(){return this.tokens[this.index++]}save(){}formatError(t){const{line:r,col:s}=Hn(this.input,t.start);return`Parse error at token: ${t.text} at line ${r} column ${s}`}has(t){return t in D}}var H;(function(e){e.statement="statement",e.clause="clause",e.set_operation="set_operation",e.function_call="function_call",e.parameterized_data_type="parameterized_data_type",e.array_subscript="array_subscript",e.property_access="property_access",e.parenthesis="parenthesis",e.between_predicate="between_predicate",e.case_expression="case_expression",e.case_when="case_when",e.case_else="case_else",e.limit_clause="limit_clause",e.all_columns_asterisk="all_columns_asterisk",e.literal="literal",e.identifier="identifier",e.keyword="keyword",e.data_type="data_type",e.parameter="parameter",e.operator="operator",e.comma="comma",e.line_comment="line_comment",e.block_comment="block_comment",e.disable_comment="disable_comment"})(H=H||(H={}));function AE(e){return e[0]}const v=new Yn(e=>[]),Ge=([[e]])=>e,Te=e=>({type:H.keyword,tokenType:e.type,text:e.text,raw:e.raw}),tn=e=>({type:H.data_type,text:e.text,raw:e.raw}),oe=(e,{leading:t,trailing:r})=>(t!=null&&t.length&&(e=Object.assign(Object.assign({},e),{leadingComments:t})),r!=null&&r.length&&(e=Object.assign(Object.assign({},e),{trailingComments:r})),e),vA=(e,{leading:t,trailing:r})=>{if(t!=null&&t.length){const[s,...n]=e;e=[oe(s,{leading:t}),...n]}if(r!=null&&r.length){const s=e.slice(0,-1),n=e[e.length-1];e=[...s,oe(n,{trailing:r})]}return e},VA={Lexer:v,ParserRules:[{name:"main$ebnf$1",symbols:[]},{name:"main$ebnf$1",symbols:["main$ebnf$1","statement"],postprocess:e=>e[0].concat([e[1]])},{name:"main",symbols:["main$ebnf$1"],postprocess:([e])=>{const t=e[e.length-1];return t&&!t.hasSemicolon?t.children.length>0?e:e.slice(0,-1):e}},{name:"statement$subexpression$1",symbols:[v.has("DELIMITER")?{type:"DELIMITER"}:DELIMITER]},{name:"statement$subexpression$1",symbols:[v.has("EOF")?{type:"EOF"}:EOF]},{name:"statement",symbols:["expressions_or_clauses","statement$subexpression$1"],postprocess:([e,[t]])=>({type:H.statement,children:e,hasSemicolon:t.type===D.DELIMITER})},{name:"expressions_or_clauses$ebnf$1",symbols:[]},{name:"expressions_or_clauses$ebnf$1",symbols:["expressions_or_clauses$ebnf$1","free_form_sql"],postprocess:e=>e[0].concat([e[1]])},{name:"expressions_or_clauses$ebnf$2",symbols:[]},{name:"expressions_or_clauses$ebnf$2",symbols:["expressions_or_clauses$ebnf$2","clause"],postprocess:e=>e[0].concat([e[1]])},{name:"expressions_or_clauses",symbols:["expressions_or_clauses$ebnf$1","expressions_or_clauses$ebnf$2"],postprocess:([e,t])=>[...e,...t]},{name:"clause$subexpression$1",symbols:["limit_clause"]},{name:"clause$subexpression$1",symbols:["select_clause"]},{name:"clause$subexpression$1",symbols:["other_clause"]},{name:"clause$subexpression$1",symbols:["set_operation"]},{name:"clause",symbols:["clause$subexpression$1"],postprocess:Ge},{name:"limit_clause$ebnf$1$subexpression$1$ebnf$1",symbols:["free_form_sql"]},{name:"limit_clause$ebnf$1$subexpression$1$ebnf$1",symbols:["limit_clause$ebnf$1$subexpression$1$ebnf$1","free_form_sql"],postprocess:e=>e[0].concat([e[1]])},{name:"limit_clause$ebnf$1$subexpression$1",symbols:[v.has("COMMA")?{type:"COMMA"}:COMMA,"limit_clause$ebnf$1$subexpression$1$ebnf$1"]},{name:"limit_clause$ebnf$1",symbols:["limit_clause$ebnf$1$subexpression$1"],postprocess:AE},{name:"limit_clause$ebnf$1",symbols:[],postprocess:()=>null},{name:"limit_clause",symbols:[v.has("LIMIT")?{type:"LIMIT"}:LIMIT,"_","expression_chain_","limit_clause$ebnf$1"],postprocess:([e,t,r,s])=>{if(s){const[n,T]=s;return{type:H.limit_clause,limitKw:oe(Te(e),{trailing:t}),offset:r,count:T}}else return{type:H.limit_clause,limitKw:oe(Te(e),{trailing:t}),count:r}}},{name:"select_clause$subexpression$1$ebnf$1",symbols:[]},{name:"select_clause$subexpression$1$ebnf$1",symbols:["select_clause$subexpression$1$ebnf$1","free_form_sql"],postprocess:e=>e[0].concat([e[1]])},{name:"select_clause$subexpression$1",symbols:["all_columns_asterisk","select_clause$subexpression$1$ebnf$1"]},{name:"select_clause$subexpression$1$ebnf$2",symbols:[]},{name:"select_clause$subexpression$1$ebnf$2",symbols:["select_clause$subexpression$1$ebnf$2","free_form_sql"],postprocess:e=>e[0].concat([e[1]])},{name:"select_clause$subexpression$1",symbols:["asteriskless_free_form_sql","select_clause$subexpression$1$ebnf$2"]},{name:"select_clause",symbols:[v.has("RESERVED_SELECT")?{type:"RESERVED_SELECT"}:RESERVED_SELECT,"select_clause$subexpression$1"],postprocess:([e,[t,r]])=>({type:H.clause,nameKw:Te(e),children:[t,...r]})},{name:"select_clause",symbols:[v.has("RESERVED_SELECT")?{type:"RESERVED_SELECT"}:RESERVED_SELECT],postprocess:([e])=>({type:H.clause,nameKw:Te(e),children:[]})},{name:"all_columns_asterisk",symbols:[v.has("ASTERISK")?{type:"ASTERISK"}:ASTERISK],postprocess:()=>({type:H.all_columns_asterisk})},{name:"other_clause$ebnf$1",symbols:[]},{name:"other_clause$ebnf$1",symbols:["other_clause$ebnf$1","free_form_sql"],postprocess:e=>e[0].concat([e[1]])},{name:"other_clause",symbols:[v.has("RESERVED_CLAUSE")?{type:"RESERVED_CLAUSE"}:RESERVED_CLAUSE,"other_clause$ebnf$1"],postprocess:([e,t])=>({type:H.clause,nameKw:Te(e),children:t})},{name:"set_operation$ebnf$1",symbols:[]},{name:"set_operation$ebnf$1",symbols:["set_operation$ebnf$1","free_form_sql"],postprocess:e=>e[0].concat([e[1]])},{name:"set_operation",symbols:[v.has("RESERVED_SET_OPERATION")?{type:"RESERVED_SET_OPERATION"}:RESERVED_SET_OPERATION,"set_operation$ebnf$1"],postprocess:([e,t])=>({type:H.set_operation,nameKw:Te(e),children:t})},{name:"expression_chain_$ebnf$1",symbols:["expression_with_comments_"]},{name:"expression_chain_$ebnf$1",symbols:["expression_chain_$ebnf$1","expression_with_comments_"],postprocess:e=>e[0].concat([e[1]])},{name:"expression_chain_",symbols:["expression_chain_$ebnf$1"],postprocess:AE},{name:"expression_chain$ebnf$1",symbols:[]},{name:"expression_chain$ebnf$1",symbols:["expression_chain$ebnf$1","_expression_with_comments"],postprocess:e=>e[0].concat([e[1]])},{name:"expression_chain",symbols:["expression","expression_chain$ebnf$1"],postprocess:([e,t])=>[e,...t]},{name:"andless_expression_chain$ebnf$1",symbols:[]},{name:"andless_expression_chain$ebnf$1",symbols:["andless_expression_chain$ebnf$1","_andless_expression_with_comments"],postprocess:e=>e[0].concat([e[1]])},{name:"andless_expression_chain",symbols:["andless_expression","andless_expression_chain$ebnf$1"],postprocess:([e,t])=>[e,...t]},{name:"expression_with_comments_",symbols:["expression","_"],postprocess:([e,t])=>oe(e,{trailing:t})},{name:"_expression_with_comments",symbols:["_","expression"],postprocess:([e,t])=>oe(t,{leading:e})},{name:"_andless_expression_with_comments",symbols:["_","andless_expression"],postprocess:([e,t])=>oe(t,{leading:e})},{name:"free_form_sql$subexpression$1",symbols:["asteriskless_free_form_sql"]},{name:"free_form_sql$subexpression$1",symbols:["asterisk"]},{name:"free_form_sql",symbols:["free_form_sql$subexpression$1"],postprocess:Ge},{name:"asteriskless_free_form_sql$subexpression$1",symbols:["asteriskless_andless_expression"]},{name:"asteriskless_free_form_sql$subexpression$1",symbols:["logic_operator"]},{name:"asteriskless_free_form_sql$subexpression$1",symbols:["comma"]},{name:"asteriskless_free_form_sql$subexpression$1",symbols:["comment"]},{name:"asteriskless_free_form_sql$subexpression$1",symbols:["other_keyword"]},{name:"asteriskless_free_form_sql",symbols:["asteriskless_free_form_sql$subexpression$1"],postprocess:Ge},{name:"expression$subexpression$1",symbols:["andless_expression"]},{name:"expression$subexpression$1",symbols:["logic_operator"]},{name:"expression",symbols:["expression$subexpression$1"],postprocess:Ge},{name:"andless_expression$subexpression$1",symbols:["asteriskless_andless_expression"]},{name:"andless_expression$subexpression$1",symbols:["asterisk"]},{name:"andless_expression",symbols:["andless_expression$subexpression$1"],postprocess:Ge},{name:"asteriskless_andless_expression$subexpression$1",symbols:["atomic_expression"]},{name:"asteriskless_andless_expression$subexpression$1",symbols:["between_predicate"]},{name:"asteriskless_andless_expression$subexpression$1",symbols:["case_expression"]},{name:"asteriskless_andless_expression",symbols:["asteriskless_andless_expression$subexpression$1"],postprocess:Ge},{name:"atomic_expression$subexpression$1",symbols:["array_subscript"]},{name:"atomic_expression$subexpression$1",symbols:["function_call"]},{name:"atomic_expression$subexpression$1",symbols:["property_access"]},{name:"atomic_expression$subexpression$1",symbols:["parenthesis"]},{name:"atomic_expression$subexpression$1",symbols:["curly_braces"]},{name:"atomic_expression$subexpression$1",symbols:["square_brackets"]},{name:"atomic_expression$subexpression$1",symbols:["operator"]},{name:"atomic_expression$subexpression$1",symbols:["identifier"]},{name:"atomic_expression$subexpression$1",symbols:["parameter"]},{name:"atomic_expression$subexpression$1",symbols:["literal"]},{name:"atomic_expression$subexpression$1",symbols:["data_type"]},{name:"atomic_expression$subexpression$1",symbols:["keyword"]},{name:"atomic_expression",symbols:["atomic_expression$subexpression$1"],postprocess:Ge},{name:"array_subscript",symbols:[v.has("ARRAY_IDENTIFIER")?{type:"ARRAY_IDENTIFIER"}:ARRAY_IDENTIFIER,"_","square_brackets"],postprocess:([e,t,r])=>({type:H.array_subscript,array:oe({type:H.identifier,quoted:!1,text:e.text},{trailing:t}),parenthesis:r})},{name:"array_subscript",symbols:[v.has("ARRAY_KEYWORD")?{type:"ARRAY_KEYWORD"}:ARRAY_KEYWORD,"_","square_brackets"],postprocess:([e,t,r])=>({type:H.array_subscript,array:oe(Te(e),{trailing:t}),parenthesis:r})},{name:"function_call",symbols:[v.has("RESERVED_FUNCTION_NAME")?{type:"RESERVED_FUNCTION_NAME"}:RESERVED_FUNCTION_NAME,"_","parenthesis"],postprocess:([e,t,r])=>({type:H.function_call,nameKw:oe(Te(e),{trailing:t}),parenthesis:r})},{name:"parenthesis",symbols:[{literal:"("},"expressions_or_clauses",{literal:")"}],postprocess:([e,t,r])=>({type:H.parenthesis,children:t,openParen:"(",closeParen:")"})},{name:"curly_braces$ebnf$1",symbols:[]},{name:"curly_braces$ebnf$1",symbols:["curly_braces$ebnf$1","free_form_sql"],postprocess:e=>e[0].concat([e[1]])},{name:"curly_braces",symbols:[{literal:"{"},"curly_braces$ebnf$1",{literal:"}"}],postprocess:([e,t,r])=>({type:H.parenthesis,children:t,openParen:"{",closeParen:"}"})},{name:"square_brackets$ebnf$1",symbols:[]},{name:"square_brackets$ebnf$1",symbols:["square_brackets$ebnf$1","free_form_sql"],postprocess:e=>e[0].concat([e[1]])},{name:"square_brackets",symbols:[{literal:"["},"square_brackets$ebnf$1",{literal:"]"}],postprocess:([e,t,r])=>({type:H.parenthesis,children:t,openParen:"[",closeParen:"]"})},{name:"property_access$subexpression$1",symbols:["identifier"]},{name:"property_access$subexpression$1",symbols:["array_subscript"]},{name:"property_access$subexpression$1",symbols:["all_columns_asterisk"]},{name:"property_access$subexpression$1",symbols:["parameter"]},{name:"property_access",symbols:["atomic_expression","_",v.has("PROPERTY_ACCESS_OPERATOR")?{type:"PROPERTY_ACCESS_OPERATOR"}:PROPERTY_ACCESS_OPERATOR,"_","property_access$subexpression$1"],postprocess:([e,t,r,s,[n]])=>({type:H.property_access,object:oe(e,{trailing:t}),operator:r.text,property:oe(n,{leading:s})})},{name:"between_predicate",symbols:[v.has("BETWEEN")?{type:"BETWEEN"}:BETWEEN,"_","andless_expression_chain","_",v.has("AND")?{type:"AND"}:AND,"_","andless_expression"],postprocess:([e,t,r,s,n,T,o])=>({type:H.between_predicate,betweenKw:Te(e),expr1:vA(r,{leading:t,trailing:s}),andKw:Te(n),expr2:[oe(o,{leading:T})]})},{name:"case_expression$ebnf$1",symbols:["expression_chain_"],postprocess:AE},{name:"case_expression$ebnf$1",symbols:[],postprocess:()=>null},{name:"case_expression$ebnf$2",symbols:[]},{name:"case_expression$ebnf$2",symbols:["case_expression$ebnf$2","case_clause"],postprocess:e=>e[0].concat([e[1]])},{name:"case_expression",symbols:[v.has("CASE")?{type:"CASE"}:CASE,"_","case_expression$ebnf$1","case_expression$ebnf$2",v.has("END")?{type:"END"}:END],postprocess:([e,t,r,s,n])=>({type:H.case_expression,caseKw:oe(Te(e),{trailing:t}),endKw:Te(n),expr:r||[],clauses:s})},{name:"case_clause",symbols:[v.has("WHEN")?{type:"WHEN"}:WHEN,"_","expression_chain_",v.has("THEN")?{type:"THEN"}:THEN,"_","expression_chain_"],postprocess:([e,t,r,s,n,T])=>({type:H.case_when,whenKw:oe(Te(e),{trailing:t}),thenKw:oe(Te(s),{trailing:n}),condition:r,result:T})},{name:"case_clause",symbols:[v.has("ELSE")?{type:"ELSE"}:ELSE,"_","expression_chain_"],postprocess:([e,t,r])=>({type:H.case_else,elseKw:oe(Te(e),{trailing:t}),result:r})},{name:"comma$subexpression$1",symbols:[v.has("COMMA")?{type:"COMMA"}:COMMA]},{name:"comma",symbols:["comma$subexpression$1"],postprocess:([[e]])=>({type:H.comma})},{name:"asterisk$subexpression$1",symbols:[v.has("ASTERISK")?{type:"ASTERISK"}:ASTERISK]},{name:"asterisk",symbols:["asterisk$subexpression$1"],postprocess:([[e]])=>({type:H.operator,text:e.text})},{name:"operator$subexpression$1",symbols:[v.has("OPERATOR")?{type:"OPERATOR"}:OPERATOR]},{name:"operator",symbols:["operator$subexpression$1"],postprocess:([[e]])=>({type:H.operator,text:e.text})},{name:"identifier$subexpression$1",symbols:[v.has("IDENTIFIER")?{type:"IDENTIFIER"}:IDENTIFIER]},{name:"identifier$subexpression$1",symbols:[v.has("QUOTED_IDENTIFIER")?{type:"QUOTED_IDENTIFIER"}:QUOTED_IDENTIFIER]},{name:"identifier$subexpression$1",symbols:[v.has("VARIABLE")?{type:"VARIABLE"}:VARIABLE]},{name:"identifier",symbols:["identifier$subexpression$1"],postprocess:([[e]])=>({type:H.identifier,quoted:e.type!=="IDENTIFIER",text:e.text})},{name:"parameter$subexpression$1",symbols:[v.has("NAMED_PARAMETER")?{type:"NAMED_PARAMETER"}:NAMED_PARAMETER]},{name:"parameter$subexpression$1",symbols:[v.has("QUOTED_PARAMETER")?{type:"QUOTED_PARAMETER"}:QUOTED_PARAMETER]},{name:"parameter$subexpression$1",symbols:[v.has("NUMBERED_PARAMETER")?{type:"NUMBERED_PARAMETER"}:NUMBERED_PARAMETER]},{name:"parameter$subexpression$1",symbols:[v.has("POSITIONAL_PARAMETER")?{type:"POSITIONAL_PARAMETER"}:POSITIONAL_PARAMETER]},{name:"parameter$subexpression$1",symbols:[v.has("CUSTOM_PARAMETER")?{type:"CUSTOM_PARAMETER"}:CUSTOM_PARAMETER]},{name:"parameter",symbols:["parameter$subexpression$1"],postprocess:([[e]])=>({type:H.parameter,key:e.key,text:e.text})},{name:"literal$subexpression$1",symbols:[v.has("NUMBER")?{type:"NUMBER"}:NUMBER]},{name:"literal$subexpression$1",symbols:[v.has("STRING")?{type:"STRING"}:STRING]},{name:"literal",symbols:["literal$subexpression$1"],postprocess:([[e]])=>({type:H.literal,text:e.text})},{name:"keyword$subexpression$1",symbols:[v.has("RESERVED_KEYWORD")?{type:"RESERVED_KEYWORD"}:RESERVED_KEYWORD]},{name:"keyword$subexpression$1",symbols:[v.has("RESERVED_KEYWORD_PHRASE")?{type:"RESERVED_KEYWORD_PHRASE"}:RESERVED_KEYWORD_PHRASE]},{name:"keyword$subexpression$1",symbols:[v.has("RESERVED_JOIN")?{type:"RESERVED_JOIN"}:RESERVED_JOIN]},{name:"keyword",symbols:["keyword$subexpression$1"],postprocess:([[e]])=>Te(e)},{name:"data_type$subexpression$1",symbols:[v.has("RESERVED_DATA_TYPE")?{type:"RESERVED_DATA_TYPE"}:RESERVED_DATA_TYPE]},{name:"data_type$subexpression$1",symbols:[v.has("RESERVED_DATA_TYPE_PHRASE")?{type:"RESERVED_DATA_TYPE_PHRASE"}:RESERVED_DATA_TYPE_PHRASE]},{name:"data_type",symbols:["data_type$subexpression$1"],postprocess:([[e]])=>tn(e)},{name:"data_type",symbols:[v.has("RESERVED_PARAMETERIZED_DATA_TYPE")?{type:"RESERVED_PARAMETERIZED_DATA_TYPE"}:RESERVED_PARAMETERIZED_DATA_TYPE,"_","parenthesis"],postprocess:([e,t,r])=>({type:H.parameterized_data_type,dataType:oe(tn(e),{trailing:t}),parenthesis:r})},{name:"logic_operator$subexpression$1",symbols:[v.has("AND")?{type:"AND"}:AND]},{name:"logic_operator$subexpression$1",symbols:[v.has("OR")?{type:"OR"}:OR]},{name:"logic_operator$subexpression$1",symbols:[v.has("XOR")?{type:"XOR"}:XOR]},{name:"logic_operator",symbols:["logic_operator$subexpression$1"],postprocess:([[e]])=>Te(e)},{name:"other_keyword$subexpression$1",symbols:[v.has("WHEN")?{type:"WHEN"}:WHEN]},{name:"other_keyword$subexpression$1",symbols:[v.has("THEN")?{type:"THEN"}:THEN]},{name:"other_keyword$subexpression$1",symbols:[v.has("ELSE")?{type:"ELSE"}:ELSE]},{name:"other_keyword$subexpression$1",symbols:[v.has("END")?{type:"END"}:END]},{name:"other_keyword",symbols:["other_keyword$subexpression$1"],postprocess:([[e]])=>Te(e)},{name:"_$ebnf$1",symbols:[]},{name:"_$ebnf$1",symbols:["_$ebnf$1","comment"],postprocess:e=>e[0].concat([e[1]])},{name:"_",symbols:["_$ebnf$1"],postprocess:([e])=>e},{name:"comment",symbols:[v.has("LINE_COMMENT")?{type:"LINE_COMMENT"}:LINE_COMMENT],postprocess:([e])=>({type:H.line_comment,text:e.text,precedingWhitespace:e.precedingWhitespace})},{name:"comment",symbols:[v.has("BLOCK_COMMENT")?{type:"BLOCK_COMMENT"}:BLOCK_COMMENT],postprocess:([e])=>({type:H.block_comment,text:e.text,precedingWhitespace:e.precedingWhitespace})},{name:"comment",symbols:[v.has("DISABLE_COMMENT")?{type:"DISABLE_COMMENT"}:DISABLE_COMMENT],postprocess:([e])=>({type:H.disable_comment,text:e.text,precedingWhitespace:e.precedingWhitespace})}],ParserStart:"main"},{Parser:WA,Grammar:wA}=xA;function XA(e){let t={};const r=new Yn(n=>[...gA(e.tokenize(n,t)),Un(n.length)]),s=new WA(wA.fromCompiled(VA),{lexer:r});return{parse:(n,T)=>{t=T;const{results:o}=s.feed(n);if(o.length===1)return o[0];throw o.length===0?new Error("Parse error: Invalid SQL"):new Error(`Parse error: Ambiguous grammar
169
+ ${JSON.stringify(o,void 0,2)}`)}}}var p;(function(e){e[e.SPACE=0]="SPACE",e[e.NO_SPACE=1]="NO_SPACE",e[e.NO_NEWLINE=2]="NO_NEWLINE",e[e.NEWLINE=3]="NEWLINE",e[e.MANDATORY_NEWLINE=4]="MANDATORY_NEWLINE",e[e.INDENT=5]="INDENT",e[e.SINGLE_INDENT=6]="SINGLE_INDENT"})(p=p||(p={}));class vn{constructor(t){this.indentation=t,this.items=[]}add(...t){for(const r of t)switch(r){case p.SPACE:this.items.push(p.SPACE);break;case p.NO_SPACE:this.trimHorizontalWhitespace();break;case p.NO_NEWLINE:this.trimWhitespace();break;case p.NEWLINE:this.trimHorizontalWhitespace(),this.addNewline(p.NEWLINE);break;case p.MANDATORY_NEWLINE:this.trimHorizontalWhitespace(),this.addNewline(p.MANDATORY_NEWLINE);break;case p.INDENT:this.addIndentation();break;case p.SINGLE_INDENT:this.items.push(p.SINGLE_INDENT);break;default:this.items.push(r)}}trimHorizontalWhitespace(){for(;jA(et(this.items));)this.items.pop()}trimWhitespace(){for(;$A(et(this.items));)this.items.pop()}addNewline(t){if(this.items.length>0)switch(et(this.items)){case p.NEWLINE:this.items.pop(),this.items.push(t);break;case p.MANDATORY_NEWLINE:break;default:this.items.push(t);break}}addIndentation(){for(let t=0;t<this.indentation.getLevel();t++)this.items.push(p.SINGLE_INDENT)}toString(){return this.items.map(t=>this.itemToString(t)).join("")}getLayoutItems(){return this.items}itemToString(t){switch(t){case p.SPACE:return" ";case p.NEWLINE:case p.MANDATORY_NEWLINE:return`
170
+ `;case p.SINGLE_INDENT:return this.indentation.getSingleIndent();default:return t}}}const jA=e=>e===p.SPACE||e===p.SINGLE_INDENT,$A=e=>e===p.SPACE||e===p.SINGLE_INDENT||e===p.NEWLINE;function En(e,t){if(t==="standard")return e;let r=[];return e.length>=10&&e.includes(" ")&&([e,...r]=e.split(" ")),t==="tabularLeft"?e=e.padEnd(9," "):e=e.padStart(9," "),e+["",...r].join(" ")}function rn(e){return No(e)||e===D.RESERVED_CLAUSE||e===D.RESERVED_SELECT||e===D.RESERVED_SET_OPERATION||e===D.RESERVED_JOIN||e===D.LIMIT}const SE="top-level",kA="block-level";class Vn{constructor(t){this.indent=t,this.indentTypes=[]}getSingleIndent(){return this.indent}getLevel(){return this.indentTypes.length}increaseTopLevel(){this.indentTypes.push(SE)}increaseBlockLevel(){this.indentTypes.push(kA)}decreaseTopLevel(){this.indentTypes.length>0&&et(this.indentTypes)===SE&&this.indentTypes.pop()}decreaseBlockLevel(){for(;this.indentTypes.length>0&&this.indentTypes.pop()===SE;);}}class KA extends vn{constructor(t){super(new Vn("")),this.expressionWidth=t,this.length=0,this.trailingSpace=!1}add(...t){if(t.forEach(r=>this.addToLength(r)),this.length>this.expressionWidth)throw new pE;super.add(...t)}addToLength(t){if(typeof t=="string")this.length+=t.length,this.trailingSpace=!1;else{if(t===p.MANDATORY_NEWLINE||t===p.NEWLINE)throw new pE;t===p.INDENT||t===p.SINGLE_INDENT||t===p.SPACE?this.trailingSpace||(this.length++,this.trailingSpace=!0):(t===p.NO_NEWLINE||t===p.NO_SPACE)&&this.trailingSpace&&(this.trailingSpace=!1,this.length--)}}}class pE extends Error{}class Ut{constructor({cfg:t,dialectCfg:r,params:s,layout:n,inline:T=!1}){this.inline=!1,this.nodes=[],this.index=-1,this.cfg=t,this.dialectCfg=r,this.inline=T,this.params=s,this.layout=n}format(t){for(this.nodes=t,this.index=0;this.index<this.nodes.length;this.index++)this.formatNode(this.nodes[this.index]);return this.layout}formatNode(t){this.formatComments(t.leadingComments),this.formatNodeWithoutComments(t),this.formatComments(t.trailingComments)}formatNodeWithoutComments(t){switch(t.type){case H.function_call:return this.formatFunctionCall(t);case H.parameterized_data_type:return this.formatParameterizedDataType(t);case H.array_subscript:return this.formatArraySubscript(t);case H.property_access:return this.formatPropertyAccess(t);case H.parenthesis:return this.formatParenthesis(t);case H.between_predicate:return this.formatBetweenPredicate(t);case H.case_expression:return this.formatCaseExpression(t);case H.case_when:return this.formatCaseWhen(t);case H.case_else:return this.formatCaseElse(t);case H.clause:return this.formatClause(t);case H.set_operation:return this.formatSetOperation(t);case H.limit_clause:return this.formatLimitClause(t);case H.all_columns_asterisk:return this.formatAllColumnsAsterisk(t);case H.literal:return this.formatLiteral(t);case H.identifier:return this.formatIdentifier(t);case H.parameter:return this.formatParameter(t);case H.operator:return this.formatOperator(t);case H.comma:return this.formatComma(t);case H.line_comment:return this.formatLineComment(t);case H.block_comment:return this.formatBlockComment(t);case H.disable_comment:return this.formatBlockComment(t);case H.data_type:return this.formatDataType(t);case H.keyword:return this.formatKeywordNode(t)}}formatFunctionCall(t){this.withComments(t.nameKw,()=>{this.layout.add(this.showFunctionKw(t.nameKw))}),this.formatNode(t.parenthesis)}formatParameterizedDataType(t){this.withComments(t.dataType,()=>{this.layout.add(this.showDataType(t.dataType))}),this.formatNode(t.parenthesis)}formatArraySubscript(t){let r;switch(t.array.type){case H.data_type:r=this.showDataType(t.array);break;case H.keyword:r=this.showKw(t.array);break;default:r=this.showIdentifier(t.array);break}this.withComments(t.array,()=>{this.layout.add(r)}),this.formatNode(t.parenthesis)}formatPropertyAccess(t){this.formatNode(t.object),this.layout.add(p.NO_SPACE,t.operator),this.formatNode(t.property)}formatParenthesis(t){const r=this.formatInlineExpression(t.children);r?(this.layout.add(t.openParen),this.layout.add(...r.getLayoutItems()),this.layout.add(p.NO_SPACE,t.closeParen,p.SPACE)):(this.layout.add(t.openParen,p.NEWLINE),We(this.cfg)?(this.layout.add(p.INDENT),this.layout=this.formatSubExpression(t.children)):(this.layout.indentation.increaseBlockLevel(),this.layout.add(p.INDENT),this.layout=this.formatSubExpression(t.children),this.layout.indentation.decreaseBlockLevel()),this.layout.add(p.NEWLINE,p.INDENT,t.closeParen,p.SPACE))}formatBetweenPredicate(t){this.layout.add(this.showKw(t.betweenKw),p.SPACE),this.layout=this.formatSubExpression(t.expr1),this.layout.add(p.NO_SPACE,p.SPACE,this.showNonTabularKw(t.andKw),p.SPACE),this.layout=this.formatSubExpression(t.expr2),this.layout.add(p.SPACE)}formatCaseExpression(t){this.formatNode(t.caseKw),this.layout.indentation.increaseBlockLevel(),this.layout=this.formatSubExpression(t.expr),this.layout=this.formatSubExpression(t.clauses),this.layout.indentation.decreaseBlockLevel(),this.layout.add(p.NEWLINE,p.INDENT),this.formatNode(t.endKw)}formatCaseWhen(t){this.layout.add(p.NEWLINE,p.INDENT),this.formatNode(t.whenKw),this.layout=this.formatSubExpression(t.condition),this.formatNode(t.thenKw),this.layout=this.formatSubExpression(t.result)}formatCaseElse(t){this.layout.add(p.NEWLINE,p.INDENT),this.formatNode(t.elseKw),this.layout=this.formatSubExpression(t.result)}formatClause(t){this.isOnelineClause(t)?this.formatClauseInOnelineStyle(t):We(this.cfg)?this.formatClauseInTabularStyle(t):this.formatClauseInIndentedStyle(t)}isOnelineClause(t){return We(this.cfg)?this.dialectCfg.tabularOnelineClauses[t.nameKw.text]:this.dialectCfg.onelineClauses[t.nameKw.text]}formatClauseInIndentedStyle(t){this.layout.add(p.NEWLINE,p.INDENT,this.showKw(t.nameKw),p.NEWLINE),this.layout.indentation.increaseTopLevel(),this.layout.add(p.INDENT),this.layout=this.formatSubExpression(t.children),this.layout.indentation.decreaseTopLevel()}formatClauseInOnelineStyle(t){this.layout.add(p.NEWLINE,p.INDENT,this.showKw(t.nameKw),p.SPACE),this.layout=this.formatSubExpression(t.children)}formatClauseInTabularStyle(t){this.layout.add(p.NEWLINE,p.INDENT,this.showKw(t.nameKw),p.SPACE),this.layout.indentation.increaseTopLevel(),this.layout=this.formatSubExpression(t.children),this.layout.indentation.decreaseTopLevel()}formatSetOperation(t){this.layout.add(p.NEWLINE,p.INDENT,this.showKw(t.nameKw),p.NEWLINE),this.layout.add(p.INDENT),this.layout=this.formatSubExpression(t.children)}formatLimitClause(t){this.withComments(t.limitKw,()=>{this.layout.add(p.NEWLINE,p.INDENT,this.showKw(t.limitKw))}),this.layout.indentation.increaseTopLevel(),We(this.cfg)?this.layout.add(p.SPACE):this.layout.add(p.NEWLINE,p.INDENT),t.offset?(this.layout=this.formatSubExpression(t.offset),this.layout.add(p.NO_SPACE,",",p.SPACE),this.layout=this.formatSubExpression(t.count)):this.layout=this.formatSubExpression(t.count),this.layout.indentation.decreaseTopLevel()}formatAllColumnsAsterisk(t){this.layout.add("*",p.SPACE)}formatLiteral(t){this.layout.add(t.text,p.SPACE)}formatIdentifier(t){this.layout.add(this.showIdentifier(t),p.SPACE)}formatParameter(t){this.layout.add(this.params.get(t),p.SPACE)}formatOperator({text:t}){this.cfg.denseOperators||this.dialectCfg.alwaysDenseOperators.includes(t)?this.layout.add(p.NO_SPACE,t):t===":"?this.layout.add(p.NO_SPACE,t,p.SPACE):this.layout.add(t,p.SPACE)}formatComma(t){this.inline?this.layout.add(p.NO_SPACE,",",p.SPACE):this.layout.add(p.NO_SPACE,",",p.NEWLINE,p.INDENT)}withComments(t,r){this.formatComments(t.leadingComments),r(),this.formatComments(t.trailingComments)}formatComments(t){t&&t.forEach(r=>{r.type===H.line_comment?this.formatLineComment(r):this.formatBlockComment(r)})}formatLineComment(t){aE(t.precedingWhitespace||"")?this.layout.add(p.NEWLINE,p.INDENT,t.text,p.MANDATORY_NEWLINE,p.INDENT):this.layout.getLayoutItems().length>0?this.layout.add(p.NO_NEWLINE,p.SPACE,t.text,p.MANDATORY_NEWLINE,p.INDENT):this.layout.add(t.text,p.MANDATORY_NEWLINE,p.INDENT)}formatBlockComment(t){t.type===H.block_comment&&this.isMultilineBlockComment(t)?(this.splitBlockComment(t.text).forEach(r=>{this.layout.add(p.NEWLINE,p.INDENT,r)}),this.layout.add(p.NEWLINE,p.INDENT)):this.layout.add(t.text,p.SPACE)}isMultilineBlockComment(t){return aE(t.text)||aE(t.precedingWhitespace||"")}isDocComment(t){const r=t.split(/\n/);return/^\/\*\*?$/.test(r[0])&&r.slice(1,r.length-1).every(s=>/^\s*\*/.test(s))&&/^\s*\*\/$/.test(et(r))}splitBlockComment(t){return this.isDocComment(t)?t.split(/\n/).map(r=>/^\s*\*/.test(r)?" "+r.replace(/^\s*/,""):r):t.split(/\n/).map(r=>r.replace(/^\s*/,""))}formatSubExpression(t){return new Ut({cfg:this.cfg,dialectCfg:this.dialectCfg,params:this.params,layout:this.layout,inline:this.inline}).format(t)}formatInlineExpression(t){const r=this.params.getPositionalParameterIndex();try{return new Ut({cfg:this.cfg,dialectCfg:this.dialectCfg,params:this.params,layout:new KA(this.cfg.expressionWidth),inline:!0}).format(t)}catch(s){if(s instanceof pE){this.params.setPositionalParameterIndex(r);return}else throw s}}formatKeywordNode(t){switch(t.tokenType){case D.RESERVED_JOIN:return this.formatJoin(t);case D.AND:case D.OR:case D.XOR:return this.formatLogicalOperator(t);default:return this.formatKeyword(t)}}formatJoin(t){We(this.cfg)?(this.layout.indentation.decreaseTopLevel(),this.layout.add(p.NEWLINE,p.INDENT,this.showKw(t),p.SPACE),this.layout.indentation.increaseTopLevel()):this.layout.add(p.NEWLINE,p.INDENT,this.showKw(t),p.SPACE)}formatKeyword(t){this.layout.add(this.showKw(t),p.SPACE)}formatLogicalOperator(t){this.cfg.logicalOperatorNewline==="before"?We(this.cfg)?(this.layout.indentation.decreaseTopLevel(),this.layout.add(p.NEWLINE,p.INDENT,this.showKw(t),p.SPACE),this.layout.indentation.increaseTopLevel()):this.layout.add(p.NEWLINE,p.INDENT,this.showKw(t),p.SPACE):this.layout.add(this.showKw(t),p.NEWLINE,p.INDENT)}formatDataType(t){this.layout.add(this.showDataType(t),p.SPACE)}showKw(t){return rn(t.tokenType)?En(this.showNonTabularKw(t),this.cfg.indentStyle):this.showNonTabularKw(t)}showNonTabularKw(t){switch(this.cfg.keywordCase){case"preserve":return Mt(t.raw);case"upper":return t.text;case"lower":return t.text.toLowerCase()}}showFunctionKw(t){return rn(t.tokenType)?En(this.showNonTabularFunctionKw(t),this.cfg.indentStyle):this.showNonTabularFunctionKw(t)}showNonTabularFunctionKw(t){switch(this.cfg.functionCase){case"preserve":return Mt(t.raw);case"upper":return t.text;case"lower":return t.text.toLowerCase()}}showIdentifier(t){if(t.quoted)return t.text;switch(this.cfg.identifierCase){case"preserve":return t.text;case"upper":return t.text.toUpperCase();case"lower":return t.text.toLowerCase()}}showDataType(t){switch(this.cfg.dataTypeCase){case"preserve":return Mt(t.raw);case"upper":return t.text;case"lower":return t.text.toLowerCase()}}}class qA{constructor(t,r){this.dialect=t,this.cfg=r,this.params=new mA(this.cfg.params)}format(t){const r=this.parse(t);return this.formatAst(r).trimEnd()}parse(t){return XA(this.dialect.tokenizer).parse(t,this.cfg.paramTypes||{})}formatAst(t){return t.map(r=>this.formatStatement(r)).join(`
171
+ `.repeat(this.cfg.linesBetweenQueries+1))}formatStatement(t){const r=new Ut({cfg:this.cfg,dialectCfg:this.dialect.formatOptions,params:this.params,layout:new vn(new Vn(MA(this.cfg)))}).format(t.children);return t.hasSemicolon&&(this.cfg.newlineBeforeSemicolon?r.add(p.NEWLINE,";"):r.add(p.NO_NEWLINE,";")),r.toString()}}class ft extends Error{}function JA(e){const t=["multilineLists","newlineBeforeOpenParen","newlineBeforeCloseParen","aliasAs","commaPosition","tabulateAlias"];for(const r of t)if(r in e)throw new ft(`${r} config is no more supported.`);if(e.expressionWidth<=0)throw new ft(`expressionWidth config must be positive number. Received ${e.expressionWidth} instead.`);if(e.params&&!QA(e.params)&&console.warn('WARNING: All "params" option values should be strings.'),e.paramTypes&&!zA(e.paramTypes))throw new ft("Empty regex given in custom paramTypes. That would result in matching infinite amount of parameters.");return e}function QA(e){return(e instanceof Array?e:Object.values(e)).every(r=>typeof r=="string")}function zA(e){return e.custom&&Array.isArray(e.custom)?e.custom.every(t=>t.regex!==""):!0}var ZA=function(e,t){var r={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(r[s]=e[s]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,s=Object.getOwnPropertySymbols(e);n<s.length;n++)t.indexOf(s[n])<0&&Object.prototype.propertyIsEnumerable.call(e,s[n])&&(r[s[n]]=e[s[n]]);return r};const Wn={bigquery:"bigquery",clickhouse:"clickhouse",db2:"db2",db2i:"db2i",duckdb:"duckdb",hive:"hive",mariadb:"mariadb",mysql:"mysql",n1ql:"n1ql",plsql:"plsql",postgresql:"postgresql",redshift:"redshift",spark:"spark",sqlite:"sqlite",sql:"sql",tidb:"tidb",trino:"trino",transactsql:"transactsql",tsql:"transactsql",singlestoredb:"singlestoredb",snowflake:"snowflake"},eS=Object.keys(Wn),tS={tabWidth:2,useTabs:!1,keywordCase:"preserve",identifierCase:"preserve",dataTypeCase:"preserve",functionCase:"preserve",indentStyle:"standard",logicalOperatorNewline:"before",expressionWidth:50,linesBetweenQueries:1,denseOperators:!1,newlineBeforeSemicolon:!1},ES=(e,t={})=>{if(typeof t.language=="string"&&!eS.includes(t.language))throw new ft(`Unsupported SQL dialect: ${t.language}`);const r=Wn[t.language||"sql"];return rS(e,Object.assign(Object.assign({},t),{dialect:aA[r]}))},rS=(e,t)=>{var{dialect:r}=t,s=ZA(t,["dialect"]);if(typeof e!="string")throw new Error("Invalid query argument. Expected string, instead got "+typeof e);const n=JA(Object.assign(Object.assign({},tS),s));return new qA(pA(r),n).format(e)};function nS({warehouseColumns:e,warehouseRows:t,warehouseRowCount:r,busy:s,t:n,onCancel:T,onCombine:o,suggestedPlan:i}){const[S,a]=l.useState([]),[A,R]=l.useState(!0),[N,I]=l.useState(null),[c,_]=l.useState(""),[O,C]=l.useState(""),[L,f]=l.useState(""),[x,M]=l.useState("left"),[b,m]=l.useState(!1),[h,G]=l.useState(!1);l.useEffect(()=>{let Y=!1;return R(!0),q.getDatasets().then(J=>{if(Y)return;const ae=J.datasets.filter(d=>d.storageMode!=="staged");a(ae);const Ie=ae.find(d=>d.id===(i==null?void 0:i.datasetId)||d.alias===(i==null?void 0:i.localDataset));_(d=>{var B;return d||(Ie==null?void 0:Ie.id)||((B=ae[0])==null?void 0:B.id)||""})}).catch(J=>{Y||I(J instanceof Error?J.message:String(J))}).finally(()=>{Y||R(!1)}),()=>{Y=!0}},[i==null?void 0:i.datasetId,i==null?void 0:i.localDataset]);const y=S.find(Y=>Y.id===c),V=l.useMemo(()=>y?os(e,y.profile.columns):[],[y,e]);l.useEffect(()=>{if(y&&(y.id===(i==null?void 0:i.datasetId)||y.alias===(i==null?void 0:i.localDataset))&&i){C(e.includes(i.warehouseKey)?i.warehouseKey:""),f(y.profile.columns.some(ae=>ae.name===i.localKey)?i.localKey:""),m(!1),G(!1);return}const J=V[0];C((J==null?void 0:J.warehouseKey)??""),f((J==null?void 0:J.localKey)??""),m(!1),G(!1)},[y,c,i,V,e]);const j=y==null?void 0:y.profile.columns.find(Y=>Y.name===L),W=is({warehouseRows:t,warehouseKey:O,localDistinctCount:j==null?void 0:j.distinctCount,localSampledRows:y==null?void 0:y.profile.sampledRows}),g=W==="many_to_many",Z=V.length===0,Q=!!(y&&O&&L&&(!g||b)&&(!Z||h));return E.jsxs("div",{style:{padding:12,borderBottom:`1px solid ${n.cellBorder}`,background:`${n.accent}08`,display:"grid",gap:10},children:[E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[E.jsx(Ln,{size:14,color:n.accent}),E.jsxs("div",{style:{flex:1},children:[E.jsx("div",{style:{color:n.textPrimary,font:`800 12px ${n.font}`},children:"Combine warehouse result with local data"}),E.jsx("div",{style:{color:n.textMuted,font:`10px ${n.font}`},children:"The warehouse query is staged with limits, then the join runs in the local analysis workspace."}),i&&E.jsxs("div",{style:{color:n.accent,font:`700 10px ${n.font}`,marginTop:2},children:["AI prepared this handoff · confirm ",i.warehouseKey," = ",i.localKey]})]}),E.jsx("button",{"aria-label":"Close combine data",onClick:T,style:{border:0,background:"transparent",color:n.textMuted,cursor:"pointer"},children:E.jsx(_n,{size:15})})]}),A?E.jsx("div",{style:{color:n.textMuted,fontSize:11},children:"Loading local datasets…"}):N?E.jsx("div",{style:{color:n.error,fontSize:11},children:N}):S.length===0?E.jsxs("div",{style:{border:`1px dashed ${n.btnBorder}`,borderRadius:7,padding:12,color:n.textSecondary,fontSize:11},children:["Import a CSV from ",E.jsx("strong",{children:"Import data"})," first, then return to this warehouse result."]}):E.jsxs(E.Fragment,{children:[E.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(145px, 1fr))",gap:8,alignItems:"end"},children:[E.jsx(Nt,{label:"Local dataset",t:n,children:E.jsx("select",{value:c,onChange:Y=>_(Y.target.value),style:ct(n),children:S.map(Y=>E.jsxs("option",{value:Y.id,children:[Y.name," · ",Y.profile.rowCount.toLocaleString()," rows"]},Y.id))})}),E.jsx(Nt,{label:"Warehouse key",t:n,children:E.jsxs("select",{value:O,onChange:Y=>{C(Y.target.value),m(!1)},style:ct(n),children:[!O&&E.jsx("option",{value:"",children:"Choose warehouse key…"}),e.map(Y=>E.jsx("option",{value:Y,children:Y},Y))]})}),E.jsx(Nt,{label:"Local key (=)",t:n,children:E.jsxs("select",{value:L,onChange:Y=>{f(Y.target.value),m(!1)},style:ct(n),children:[!L&&E.jsx("option",{value:"",children:"Choose local key…"}),y==null?void 0:y.profile.columns.map(Y=>E.jsx("option",{value:Y.name,children:Y.name},Y.name))]})}),E.jsx(Nt,{label:"Join",t:n,children:E.jsxs("select",{value:x,onChange:Y=>M(Y.target.value),style:ct(n),children:[E.jsx("option",{value:"left",children:"Keep warehouse rows"}),E.jsx("option",{value:"inner",children:"Matching rows only"})]})})]}),E.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:7,alignItems:"center",color:n.textMuted,font:`10px ${n.font}`},children:[E.jsxs("span",{children:[E.jsx(xt,{size:11,style:{verticalAlign:"-2px"}})," Up to ",r.toLocaleString()," current rows"]}),E.jsx("span",{children:"· staging limits 100,000 rows / 250 MB / 120 sec"}),E.jsxs("span",{children:["· CSV refreshed ",y?new Date(y.refreshedAt).toLocaleString():"—"]}),E.jsxs("span",{children:["· sample relationship: ",W.replace(/_/g," ")]}),V[0]&&O===V[0].warehouseKey&&L===V[0].localKey&&E.jsxs("span",{style:{color:n.accent},children:["· suggested: ",V[0].reason.toLowerCase()]})]}),g&&E.jsxs("label",{style:{display:"flex",alignItems:"flex-start",gap:7,padding:9,border:`1px solid ${n.warning}`,borderRadius:7,color:n.warning,font:`10px ${n.font}`},children:[E.jsx(sr,{size:13,style:{flexShrink:0}}),E.jsx("input",{type:"checkbox",checked:b,onChange:Y=>m(Y.target.checked)}),"Both keys repeat in the bounded samples. This may multiply rows. Confirm that repeated matches are expected before continuing."]}),Z&&E.jsxs("label",{style:{display:"flex",alignItems:"flex-start",gap:7,padding:9,border:`1px solid ${n.warning}`,borderRadius:7,color:n.warning,font:`10px ${n.font}`},children:[E.jsx(sr,{size:13,style:{flexShrink:0}}),E.jsx("input",{type:"checkbox",checked:h,onChange:Y=>G(Y.target.checked)}),"No likely business key was found. Choose both keys and confirm they represent the same entity. If they do not, refine the warehouse query or ask Notebook AI instead of forcing a join."]}),E.jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:8,alignItems:"center"},children:[E.jsx("span",{style:{color:n.warning,font:`700 10px ${n.font}`},children:"Local mixed-source analysis · review required · never auto-certified"}),E.jsxs("div",{style:{display:"flex",gap:7},children:[E.jsx("button",{onClick:T,style:sS(n),children:"Cancel"}),E.jsx("button",{disabled:!Q||s,onClick:()=>y&&o({dataset:y,warehouseKey:O,localKey:L,joinType:x,cardinality:W}),style:{...TS(n),opacity:Q&&!s?1:.5},children:s?"Staging and building…":i?"Create joined analysis":"Stage and create analysis"})]})]})]})]})}function Nt({label:e,t,children:r}){return E.jsxs("label",{style:{display:"grid",gap:4,color:t.textMuted,font:`700 9px ${t.font}`,textTransform:"uppercase",letterSpacing:".05em"},children:[e,r]})}function ct(e){return{width:"100%",minWidth:0,height:30,border:`1px solid ${e.btnBorder}`,borderRadius:5,background:e.cellBg,color:e.textPrimary,padding:"0 7px",font:`11px ${e.font}`}}function sS(e){return{border:`1px solid ${e.btnBorder}`,borderRadius:5,background:e.btnBg,color:e.textSecondary,padding:"6px 10px",cursor:"pointer",font:`700 10px ${e.font}`}}function TS(e){return{border:`1px solid ${e.accent}`,borderRadius:5,background:e.accent,color:"#fff",padding:"6px 11px",cursor:"pointer",font:`800 10px ${e.font}`}}const nn=["string","number","boolean","date","string[]","number[]","date[]"],oS=["dynamic","optional","static","business","derived"];function iS({source:e,onSourceChange:t,t:r}){const s=l.useMemo(()=>as(e),[e]),n=/\btype\s*=\s*"semantic"/i.test(e),[T,o]=l.useState(!1),[i,S]=l.useState(""),[a,A]=l.useState(""),[R,N]=l.useState(!1),[I,c]=l.useState("string"),_=(C,L)=>{t(QE(zE(e),{name:C.name,type:L.type??C.type,required:L.required??C.required,defaultText:L.defaultText??kE(C),policy:L.policy??C.policy}))},O=()=>{const C=i.trim().toLowerCase().replace(/[^a-z0-9_]+/g,"_").replace(/^_+|_+$/g,"");if(!C)return;const L=zE(e),f=n?KE(L,[...qE(L).requestedFilters,C]):L;t(QE(f,{name:C,type:I,required:R,defaultText:a,policy:R?"dynamic":"optional"})),S(""),A(""),N(!1),c("string"),o(!1)};return E.jsxs("div",{style:{padding:"7px 10px",borderBottom:`1px solid ${r.cellBorder}`,background:`${r.tableHeaderBg}35`},children:[E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:7,minHeight:24},children:[E.jsx("span",{style:{fontSize:10.5,fontWeight:800,color:r.textSecondary},children:"Parameters"}),s.length>0&&E.jsx("span",{style:{fontSize:9.5,color:r.textMuted},children:s.length}),n&&E.jsx("span",{style:{fontSize:9.5,color:r.textMuted},children:"New parameters bind to semantic filters with the same field name."}),E.jsx("span",{style:{flex:1}}),E.jsx("button",{type:"button",onClick:()=>o(C=>!C),style:DE(r),children:T?"Cancel":"+ Add"})]}),s.length>0&&E.jsx("div",{style:{display:"grid",gap:6,marginTop:6},children:s.map(C=>E.jsxs("div",{style:{display:"grid",gridTemplateColumns:"minmax(110px, 1fr) 92px minmax(115px, 1.2fr) auto 92px auto",gap:6,alignItems:"center",overflowX:"auto"},children:[E.jsx("span",{title:"Parameter names are stable; remove and add again to rename.",style:{fontFamily:r.fontMono,fontSize:10.5,color:r.textPrimary,overflow:"hidden",textOverflow:"ellipsis"},children:C.name}),E.jsx("select",{"aria-label":`${C.name} type`,value:C.type,onChange:L=>_(C,{type:L.target.value}),style:we(r),children:nn.map(L=>E.jsx("option",{value:L,children:L},L))}),E.jsx("input",{"aria-label":`${C.name} default`,value:kE(C),disabled:C.required,placeholder:C.required?"Required at run time":"Default value",onChange:L=>_(C,{defaultText:L.target.value}),style:{...we(r),opacity:C.required?.6:1}}),E.jsxs("label",{style:{display:"flex",alignItems:"center",gap:3,fontSize:9.5,color:r.textMuted,whiteSpace:"nowrap"},children:[E.jsx("input",{type:"checkbox",checked:C.required,onChange:L=>_(C,{required:L.target.checked})})," Req"]}),E.jsx("select",{"aria-label":`${C.name} policy`,value:C.policy,onChange:L=>_(C,{policy:L.target.value}),style:we(r),children:oS.map(L=>E.jsx("option",{value:L,children:L},L))}),E.jsx("button",{type:"button",title:`Remove ${C.name}`,onClick:()=>{var f;const L=Rs(e,C.name);t(((f=C.binding)==null?void 0:f.kind)==="semantic_filter"?KE(L,qE(e).requestedFilters.filter(x=>x!==C.name)):L)},style:aS(r),children:"Remove"})]},C.name))}),T&&E.jsxs("div",{style:{display:"grid",gridTemplateColumns:"minmax(110px, 1fr) 92px minmax(115px, 1.2fr) auto auto",gap:6,alignItems:"center",marginTop:7},children:[E.jsx("input",{"aria-label":"New parameter name",autoFocus:!0,value:i,placeholder:n?"semantic_field":"parameter_name",onChange:C=>{S(C.target.value),a||c(JE("",C.target.value))},style:we(r)}),E.jsx("select",{"aria-label":"New parameter type",value:I,onChange:C=>c(C.target.value),style:we(r),children:nn.map(C=>E.jsx("option",{value:C,children:C},C))}),E.jsx("input",{"aria-label":"New parameter default",value:a,disabled:R,placeholder:R?"Required at run time":"Default value",onChange:C=>{A(C.target.value),c(JE(C.target.value,i))},style:{...we(r),opacity:R?.6:1}}),E.jsxs("label",{style:{display:"flex",alignItems:"center",gap:4,fontSize:9.5,color:r.textMuted,whiteSpace:"nowrap"},children:[E.jsx("input",{type:"checkbox",checked:R,onChange:C=>N(C.target.checked)})," Required"]}),E.jsx("button",{type:"button",disabled:!i.trim(),onClick:O,style:{...DE(r),opacity:i.trim()?1:.5},children:"Add"})]})]})}function we(e){return{width:"100%",minWidth:0,boxSizing:"border-box",background:e.inputBg,border:`1px solid ${e.inputBorder}`,borderRadius:5,color:e.textPrimary,padding:"4px 6px",fontSize:10.5,fontFamily:e.font}}function DE(e){return{border:`1px solid ${e.btnBorder}`,borderRadius:4,background:"transparent",color:e.accent,padding:"2px 7px",fontSize:10,fontWeight:700,cursor:"pointer"}}function aS(e){return{...DE(e),color:e.textMuted,paddingInline:5}}function Pe({cell:e,t,onRun:r,onMoveUp:s,onMoveDown:n,onDelete:T,children:o}){const[i,S]=l.useState(!1),a=jn(e,t),A=Xn[e.type]??t.accent,R=e.name?E.jsx("span",{style:{color:t.textSecondary,fontSize:12,fontFamily:t.fontMono,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:200},children:e.name}):void 0,N=i?E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:2},children:[r&&E.jsx(ue,{title:"Run cell (Shift+Enter)",onClick:r,t,run:!0,children:E.jsx("svg",{width:"11",height:"11",viewBox:"0 0 10 10",fill:"currentColor",children:E.jsx("path",{d:"M1.5 1.5l7 3.5-7 3.5V1.5Z"})})}),E.jsx(ue,{title:"Move up",onClick:s,t,children:E.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:E.jsx("path",{d:"M3.47 7.78a.75.75 0 0 1 0-1.06l4.25-4.25a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1-1.06 1.06L8.75 4.81v7.44a.75.75 0 0 1-1.5 0V4.81L4.53 7.78a.75.75 0 0 1-1.06 0Z"})})}),E.jsx(ue,{title:"Move down",onClick:n,t,children:E.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:E.jsx("path",{d:"M12.53 8.22a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L2.97 9.28a.75.75 0 0 1 1.06-1.06l2.72 2.97V3.75a.75.75 0 0 1 1.5 0v7.44l2.72-2.97a.75.75 0 0 1 1.06 0Z"})})}),E.jsx(ue,{title:"Delete cell",onClick:T,t,danger:!0,children:E.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:E.jsx("path",{d:"M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"})})})]}):void 0;return E.jsx(un,{typeLabel:wn[e.type]??e.type.toUpperCase(),typeColor:A,accent:a,idleBorder:t.cellBorder,background:t.cellBg,headerBackground:`${t.tableHeaderBg}80`,active:i||e.status!=="idle",title:R,actions:N,status:E.jsx($n,{cell:e,t}),onMouseEnter:()=>S(!0),onMouseLeave:()=>S(!1),children:o})}const wn={sql:"QUERY",markdown:"MD",dql:"DQL",param:"PARAM",chart:"CHART",pivot:"PIVOT",single_value:"SINGLE VALUE",filter:"FILTER",table:"TABLE",map:"MAP",writeback:"WRITEBACK",python:"PYTHON",chat:"CHAT"};function Ne(e,t){return typeof window>"u"?t:getComputedStyle(document.documentElement).getPropertyValue(e).trim()||t}function RS(){return{sql:Ne("--cell-sql","#3b8ef0"),markdown:Ne("--cell-md","#2fb97a"),dql:Ne("--cell-insight","#ffc857"),param:Ne("--cell-inputs","#9aa0ae"),chart:Ne("--cell-chart","#b067f7"),pivot:Ne("--cell-pivot","#e5a84d"),single_value:Ne("--cell-single","#b067f7"),filter:Ne("--cell-filter","#f26a6a"),table:Ne("--cell-table","#5dd1c8"),map:Ne("--cell-goal","#61d095"),writeback:Ne("--cell-callout","#ff7ac6"),python:Ne("--cell-sql","#3b8ef0"),chat:Ne("--cell-chat","#8a8f9b")}}const Xn=new Proxy({},{get(e,t){return RS()[t]}}),AS={map:{title:"Map",subtitle:"Geospatial visualization — lat/lon points and choropleths from an upstream dataframe. Lands in v0.11 on the dql-compiler geo pipeline.",color:"#7ce38b",badge:"v0.11"},writeback:{title:"Writeback",subtitle:"Governed output sink — writes a dataframe back to your warehouse with block tests gating the commit. Lands in v0.11.",color:"#d2a8ff",badge:"v0.11"},python:{title:"Python (legacy)",subtitle:"This legacy cell is preserved for compatibility. Execution stays disabled until a secure kernel, dependency environment, cancellation, resource limits, and dataframe exchange are available.",color:"#3572a5",badge:"Unavailable"}};function jn(e,t){if(e.blockBinding)return e.blockBinding.state==="forked"?t.warning:t.success;switch(e.status){case"running":return t.cellBorderRunning;case"success":return t.success;case"error":return t.error;default:return t.cellBorder}}function $n({cell:e,t}){var T;const{status:r}=e;if(r==="idle"&&e.executionCount===void 0)return null;let s=t.textMuted,n="";if(r==="running")s=t.cellBorderRunning,n="Running…";else if(r==="error")s=t.error,n="Error";else if(e.executionCount!==void 0)if(s=t.success,((T=e.result)==null?void 0:T.executionTime)!==void 0){const o=e.result.executionTime;n=o<1e3?`${Math.max(1,Math.round(o))}ms`:`${(o/1e3).toFixed(1)}s`}else n=`[${e.executionCount}]`;return E.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:5,fontSize:10,fontFamily:t.font,color:t.textMuted,flexShrink:0},children:[E.jsx("span",{"aria-hidden":!0,style:{width:6,height:6,borderRadius:999,background:s,boxShadow:r==="running"?`0 0 0 3px ${s}33`:void 0,animation:r==="running"?"pulse 1.2s ease-in-out infinite":void 0,flexShrink:0}}),n,E.jsx("style",{children:"@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.5} }"})]})}function SS(e){if(!/^\s*block\s+"/i.test(e.trim()))return null;const t=n=>{var T;return((T=e.match(new RegExp(`\\b${n}\\s*=\\s*"([^"]*)"`,"i")))==null?void 0:T[1])??""},r=e.match(/\btags\s*=\s*\[([^\]]*)\]/i),s=r?(r[1].match(/"([^"]*)"/g)??[]).map(n=>n.slice(1,-1)):[];return{domain:t("domain"),owner:t("owner"),description:t("description"),blockType:t("type")||"custom",tags:s}}function lE(e,t,r){const s=new RegExp(`(\\b${t}\\s*=\\s*)"[^"]*"`,"i");return s.test(e)?e.replace(s,`$1"${r.replace(/"/g,'\\"')}"`):e}function lS(e,t){const r=t.map(n=>`"${n}"`).join(", "),s=/(\btags\s*=\s*)\[[^\]]*\]/i;return s.test(e)?e.replace(s,`$1[${r}]`):e}function IS({binding:e,t,onChange:r}){const[s,n]=l.useState([]),[T,o]=l.useState(!1);l.useEffect(()=>{let A=!1;return o(!1),q.openBlockStudio(e.path).then(R=>{A||n(R.validation.parameters??[])}).catch(()=>{A||(n([]),o(!0))}),()=>{A=!0}},[e.path]);const i=e.parameterValues??{},S=new Set(s.map(A=>A.name)),a=Object.keys(i).filter(A=>!S.has(A));return s.length===0&&a.length===0&&!T?null:E.jsxs("div",{style:{padding:"8px 10px",borderBottom:`1px solid ${t.cellBorder}`,background:t.appBg},children:[E.jsxs("div",{style:{marginBottom:6,fontSize:10.5,fontWeight:750,color:t.textSecondary},children:["Block inputs ",E.jsx("span",{style:{fontWeight:400,color:t.textMuted},children:"· defaults come from the block; notebook overrides stay here"})]}),T&&E.jsx("div",{style:{marginBottom:6,fontSize:10.5,color:t.error},children:"Could not load this block's parameter contract. The saved overrides were not changed."}),a.length>0&&E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:7,marginBottom:7,fontSize:10.5,color:t.warning},children:[E.jsxs("span",{children:["Block definition changed. Unknown overrides: ",a.join(", "),"."]}),E.jsx("button",{type:"button",onClick:()=>r(Object.fromEntries(Object.entries(i).filter(([A])=>S.has(A)))),style:ht(t,t.warning),children:"Remove stale"})]}),E.jsx(Cn,{parameters:s,values:i,onChange:(A,R)=>r({...i,[A]:R}),onReset:A=>{const R={...i};delete R[A],r(R)},t})]})}function OS({source:e,values:t,t:r,onChange:s}){const[n,T]=l.useState([]);return l.useEffect(()=>{let o=!1;const i=window.setTimeout(()=>{q.validateBlockStudio(e).then(S=>{o||T(S.parameters??[])}).catch(()=>{o||T([])})},200);return()=>{o=!0,window.clearTimeout(i)}},[e]),n.length===0?null:E.jsxs("div",{style:{padding:"8px 10px",borderBottom:`1px solid ${r.cellBorder}`,background:r.appBg},children:[E.jsxs("div",{style:{marginBottom:6,fontSize:10.5,fontWeight:750,color:r.textSecondary},children:["Run with ",E.jsx("span",{style:{fontWeight:400,color:r.textMuted},children:"· change values for this notebook without changing DQL defaults"})]}),E.jsx(Cn,{parameters:n,values:t,onChange:(o,i)=>s({...t,[o]:i}),onReset:o=>{const i={...t};delete i[o],s(i)},t:r})]})}function NS({binding:e,t,onRevert:r,onCustomize:s,onUnbind:n}){const T=e.state==="forked",o=T?t.warning:t.success,i=T?"FORKED":"BOUND",S=T?"Local edits have diverged from the block file — Revert to discard, or Save as Block to promote as a new version.":"This cell mirrors the block file. Edit to fork locally.";return E.jsxs("div",{title:S,style:{display:"flex",alignItems:"center",gap:8,padding:"4px 10px",borderBottom:`1px solid ${t.cellBorder}`,background:`${o}10`,fontFamily:t.fontMono,fontSize:11},children:[E.jsx("span",{style:{fontSize:9,fontWeight:700,letterSpacing:"0.08em",color:o,background:`${o}24`,border:`1px solid ${o}55`,borderRadius:3,padding:"1px 5px"},children:i}),E.jsx("span",{style:{color:t.textSecondary},children:e.path}),e.version&&E.jsxs("span",{style:{color:t.textMuted},children:["· v",e.version]}),!T&&E.jsx("span",{title:"Bound cells track the block file — edits fork locally",style:{color:t.textMuted},children:"🔒"}),E.jsx("div",{style:{flex:1}}),T&&E.jsx("button",{onClick:r,title:"Discard local edits and restore the block file body",style:ht(t,o),children:"Revert"}),!T&&E.jsx("button",{onClick:s,title:"Load the block source into this notebook and customize a local copy",style:ht(t,o),children:"Customize copy"}),E.jsx("button",{onClick:n,title:"Detach this cell from the block file",style:ht(t,t.btnBorder),children:"Unbind"})]})}function ht(e,t){return{background:"transparent",border:`1px solid ${t}`,borderRadius:4,color:e.textSecondary,fontSize:10,fontFamily:e.font,fontWeight:600,letterSpacing:"0.04em",padding:"1px 7px",cursor:"pointer"}}function cS({content:e,onChange:t,t:r}){const s=SS(e);if(!s)return null;const n={background:r.cellBg,border:`1px solid ${r.btnBorder}`,borderRadius:6,color:r.textPrimary,fontSize:11,fontFamily:r.fontMono,padding:"3px 7px",outline:"none"},T={fontSize:9,fontWeight:700,color:r.textMuted,fontFamily:r.font,letterSpacing:"0.05em",textTransform:"uppercase",marginRight:4,flexShrink:0},o={display:"flex",alignItems:"center",gap:4};return E.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 12px",padding:"5px 10px",borderBottom:`1px solid ${r.cellBorder}`,background:`${r.tableHeaderBg}40`},children:[E.jsxs("div",{style:o,children:[E.jsx("span",{style:T,children:"domain"}),E.jsx("input",{style:{...n,width:80},value:s.domain,placeholder:"e.g. finance",onChange:i=>t(lE(e,"domain",i.target.value))})]}),E.jsxs("div",{style:o,children:[E.jsx("span",{style:T,children:"owner"}),E.jsx("input",{style:{...n,width:90},value:s.owner,placeholder:"e.g. data-team",onChange:i=>t(lE(e,"owner",i.target.value))})]}),E.jsxs("div",{style:o,children:[E.jsx("span",{style:T,children:"tags"}),E.jsx(Ss,{style:{...n,width:110},values:s.tags,placeholder:"revenue, kpi",onChange:i=>t(lS(e,i))})]}),E.jsxs("div",{style:{...o,flex:1},children:[E.jsx("span",{style:T,children:"description"}),E.jsx("input",{style:{...n,flex:1,minWidth:120},value:s.description,placeholder:"What this block measures",onChange:i=>t(lE(e,"description",i.target.value))})]})]})}function dS({cellType:e,cellName:t,t:r,onCancel:s}){const[n,T]=l.useState(0);l.useEffect(()=>{const S=Date.now(),a=window.setInterval(()=>T(Date.now()-S),250);return()=>window.clearInterval(a)},[]);const o=n<1e3?`${Math.max(1,Math.round(n))}ms`:`${(n/1e3).toFixed(1)}s`,i=e==="dql"?n<1200?"Preparing DQL block":n<5e3?"Executing generated SQL":"Waiting for warehouse response":n<1200?"Preparing SQL":n<5e3?"Executing query":"Waiting for database response";return E.jsxs("div",{role:"status","aria-live":"polite",style:{display:"grid",gap:10,padding:14,minHeight:92,background:`${r.cellBorderRunning}0f`,borderTop:`1px solid ${r.cellBorder}`},children:[E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10},children:[E.jsx("span",{"aria-hidden":!0,style:{width:10,height:10,borderRadius:999,background:r.cellBorderRunning,boxShadow:`0 0 0 4px ${r.cellBorderRunning}22`,animation:"pulse 1.2s ease-in-out infinite",flexShrink:0}}),E.jsxs("div",{style:{minWidth:0,flex:1},children:[E.jsx("div",{style:{fontSize:13,fontWeight:800,color:r.textPrimary,fontFamily:r.font},children:i}),E.jsxs("div",{style:{fontSize:11,color:r.textMuted,fontFamily:r.fontMono,marginTop:3},children:[t||e.toUpperCase()," · ",o]})]}),E.jsx("button",{onClick:s,style:{border:`1px solid ${r.error}`,background:`${r.error}12`,color:r.error,borderRadius:4,padding:"4px 8px",fontSize:11,fontFamily:r.font,fontWeight:700,cursor:"pointer"},children:"Cancel"})]}),E.jsx("div",{style:{fontSize:11,color:r.textMuted,fontFamily:r.font,lineHeight:1.45},children:"The result table will appear here when execution finishes. Errors will replace this status card with details."})]})}const CS=new Set(["sql","dql","param","writeback","python","chat"]);function LS({state:e,t,onClick:r}){const s=uS(e,t);return E.jsxs("button",{type:"button",title:e.title,"aria-label":`${e.label}. ${e.title}`,onClick:n=>{n.stopPropagation(),r()},style:{height:22,maxWidth:170,minWidth:0,border:`1px solid ${s}55`,background:`${s}12`,color:s,borderRadius:4,padding:"0 7px",display:"inline-flex",alignItems:"center",gap:5,fontSize:10,fontFamily:t.font,fontWeight:800,cursor:"pointer",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",flexShrink:1},children:[E.jsx(je,{size:11,strokeWidth:2.2,style:{flexShrink:0},"aria-hidden":"true"}),E.jsx("span",{style:{overflow:"hidden",textOverflow:"ellipsis"},children:e.label})]})}function _S(e){return e.kind==="changed"||e.kind==="missing"||e.kind==="blocked"}function uS(e,t){switch(e.kind){case"changed":case"review_sql":case"review_context":case"complete":return t.warning;case"missing":case"blocked":return t.error;case"reuse":case"cert_ready":case"done":return t.success;case"draft_ready":case"run_preview":return t.accent;case"new":case"unknown":default:return t.textMuted}}function IE(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function pS({cell:e,t}){var A,R,N,I,c;const r=e.execution;if(!r)return null;const s=r.status==="success"?t.success:r.status==="cancelled"||r.status==="blocked"?t.warning:t.error,n=((A=e.dqlArtifact)==null?void 0:A.source)??(e.type==="dql"?e.content:void 0),T=((R=r.executionTarget)==null?void 0:R.target)==="local"?"Local DuckDB":(N=r.executionTarget)!=null&&N.connectionName?`Connection: ${r.executionTarget.connectionName}`:"No target recorded",o=((I=r.semanticTrace)==null?void 0:I.steps)??[],i=((c=r.semanticTrace)==null?void 0:c.bindings)??[],S={margin:"5px 0 0",padding:"7px 8px",maxHeight:190,overflow:"auto",whiteSpace:"pre-wrap",overflowWrap:"anywhere",border:`1px solid ${t.cellBorder}`,borderRadius:6,background:t.editorBg,color:t.textSecondary,fontFamily:t.fontMono,fontSize:10.5,lineHeight:1.45},a={color:t.textMuted,fontSize:9.5,fontWeight:800,letterSpacing:".045em",textTransform:"uppercase"};return E.jsxs("details",{style:{borderTop:`1px solid ${t.cellBorder}`,padding:"7px 12px",background:`${t.tableHeaderBg}28`},children:[E.jsxs("summary",{style:{cursor:"pointer",listStyle:"none",display:"flex",alignItems:"center",gap:7,color:t.textSecondary,fontSize:11,fontWeight:750},children:[E.jsx(cn,{size:12,color:s}),"Trust & Steps",E.jsx("span",{style:{color:s,textTransform:"capitalize"},children:r.status}),E.jsxs("span",{style:{color:t.textMuted,fontWeight:500},children:[r.engine??(e.type==="dql"?"DQL compiler":"warehouse SQL")," · ",r.durationMs," ms"]}),E.jsx("span",{title:r.runId,style:{marginLeft:"auto",maxWidth:190,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:t.textMuted,fontFamily:t.fontMono,fontSize:9.5,fontWeight:500},children:r.runId})]}),E.jsxs("div",{style:{display:"grid",gap:10,paddingTop:9,fontFamily:t.font},children:[E.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(145px, 1fr))",gap:6},children:[["Cell",r.cellId],["Route",r.route],["Target",T],["Started",r.startedAt]].map(([_,O])=>E.jsxs("div",{style:{minWidth:0,border:`1px solid ${t.cellBorder}`,borderRadius:6,padding:"6px 7px",background:t.cellBg},children:[E.jsx("div",{style:a,children:_}),E.jsx("div",{title:O,style:{marginTop:2,color:t.textSecondary,fontFamily:_==="Started"?t.font:t.fontMono,fontSize:10.5,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:O})]},_))}),n&&E.jsxs("div",{children:[E.jsx("div",{style:a,children:"1 · Governed DQL request"}),E.jsx("pre",{style:S,children:n})]}),r.compiledSql&&E.jsxs("div",{children:[E.jsxs("div",{style:a,children:[n?"2":"1"," · Compiled SQL"]}),E.jsx("pre",{style:S,children:r.compiledSql})]}),r.executedSql&&r.executedSql!==r.compiledSql&&E.jsxs("div",{children:[E.jsx("div",{style:a,children:"Executed SQL"}),E.jsx("pre",{style:S,children:r.executedSql})]}),(o.length>0||i.length>0)&&E.jsxs("div",{children:[E.jsx("div",{style:a,children:"Semantic compiler trace"}),o.length>0&&E.jsx("ol",{style:{margin:"6px 0 0",paddingLeft:20,color:t.textSecondary,fontSize:10.5,lineHeight:1.55},children:o.map((_,O)=>E.jsxs("li",{children:[E.jsx("strong",{children:_.label??_.id??`Step ${O+1}`}),_.status?` · ${_.status}`:"",_.detail?` — ${_.detail}`:""]},_.id??`${O}:${_.label??"step"}`))}),i.length>0&&E.jsx("pre",{style:S,children:IE(i)})]}),(r.targetBinding||r.executionReceipt)&&E.jsxs("div",{children:[E.jsx("div",{style:a,children:"Target binding & execution receipt"}),E.jsx("pre",{style:S,children:IE({targetBinding:r.targetBinding,executionReceipt:r.executionReceipt})})]}),r.error&&E.jsxs("div",{style:{border:`1px solid ${t.error}55`,borderRadius:6,padding:"7px 8px",background:`${t.error}0d`},children:[E.jsxs("div",{style:{...a,color:t.error},children:["Failure · ",r.error.code??"EXECUTION_FAILED",r.error.phase?` · ${r.error.phase}`:""]}),E.jsx("div",{style:{marginTop:4,color:t.textPrimary,fontSize:11,lineHeight:1.45},children:r.error.message}),r.error.details!==void 0&&E.jsx("pre",{style:S,children:IE(r.error.details)})]})]})]})}function DS({cell:e,index:t,onStartResearch:r,researchState:s}){var HE,bE,FE,YE,vE,VE,WE,wE,XE,jE,$E;const{state:n,dispatch:T}=le(),o=ne[n.themeMode],{executeCell:i,executeDependents:S,cancelCell:a}=Nn(),[A,R]=l.useState(!1),[N,I]=l.useState(!1),[c,_]=l.useState(e.name??""),[O,C]=l.useState(!0),[L,f]=l.useState("table"),[x,M]=l.useState(null),[b,m]=l.useState(!1),[h,G]=l.useState(!1),[y,V]=l.useState(!1),[j,W]=l.useState(null),[g,Z]=l.useState(!1),[Q,Y]=l.useState(!1),[J,ae]=l.useState(""),[Ie,d]=l.useState("note"),[B,F]=l.useState([]),[P,k]=l.useState("default"),[K,$]=l.useState(!1),[z,ee]=l.useState(!!e.mixedSourcePlan);l.useEffect(()=>{if(e.type!=="sql"&&e.type!=="dql")return;let U=!1;return q.getConnections().then(w=>{U||(F(Object.keys(w.connections??{})),k(w.default||"default"))}).catch(()=>{}),()=>{U=!0}},[e.type]);const Ee=l.useMemo(()=>{var U;return g?(U=e.dqlArtifact)!=null&&U.source?{content:e.dqlArtifact.source,suggestedName:e.dqlArtifact.name,derivedFromUpstream:!0}:kT(e,n.cells):null},[g,e,n.cells]),he=e.type==="sql"||e.type==="dql"||e.type==="chart"||e.type==="pivot"||e.type==="single_value"||e.type==="filter"||e.type==="table",te=jn(e,o),Le=e.type!=="markdown"&&e.type!=="param",Oe=l.useRef(null),st=l.useRef(e.content),[Qn,Ht]=l.useState(!1),zn=l.useMemo(()=>n.schemaTables.length>0?Object.fromEntries(n.schemaTables.map(U=>[U.name,U.columns.map(w=>w.name)])):void 0,[n.schemaTables]);l.useEffect(()=>{if(e.status==="success"&&e.result){const U=NE(e.result,e.chartConfig);M(U!=="table"?U:null),f(U!=="table"?"chart":"table")}},[e.status,e.result,e.chartConfig]);const xE=l.useCallback(()=>{Le&&i(e.id)},[e.id,i,Le]),be=l.useCallback(U=>{const w={content:U},X=e.blockBinding;if((X==null?void 0:X.originalContent)!==void 0){const Ae=U.trim()!==X.originalContent.trim()?"forked":"bound";Ae!==X.state&&(w.blockBinding={...X,state:Ae})}T({type:"UPDATE_CELL",id:e.id,updates:w}),Ht(U!==st.current)},[e.id,e.blockBinding,T]),Zn=l.useCallback(()=>{var w;const U=st.current;T({type:"UPDATE_CELL",id:e.id,updates:{content:U}}),(w=Oe.current)==null||w.resetTo(U),Ht(!1)},[e.id,T]),bt=l.useCallback(()=>{if(e.content.trim())try{const U=ES(e.content,{language:"sql",tabWidth:2,keywordCase:"upper",linesBetweenQueries:1});T({type:"UPDATE_CELL",id:e.id,updates:{content:U}})}catch{}},[e.content,e.id,T]),es=l.useCallback(()=>{bt(),setTimeout(()=>i(e.id),80)},[bt,i,e.id]),de=l.useCallback(U=>T({type:"UPDATE_CELL",id:e.id,updates:U}),[T,e.id]),Tt=l.useCallback(U=>{var Se;let w=(Se=e.name)==null?void 0:Se.trim();if(!w){const _e=`result_${t+1}`;w=_e;let ot=2;for(;n.cells.some(xe=>xe.id!==e.id&&xe.name===w);)w=`${_e}_${ot}`,ot+=1;T({type:"UPDATE_CELL",id:e.id,updates:{name:w}})}const X=ie(U);X.upstream=w,X.dependencies=[{cellId:e.id,output:w}];const Ae=`${w}_${U==="single_value"?"kpi":U}`;let re=Ae,Ue=2;for(;n.cells.some(_e=>_e.name===re);)re=`${Ae}_${Ue}`,Ue+=1;X.name=re,U==="filter"&&X.filterConfig&&(X.filterConfig={...X.filterConfig,upstream:w}),U==="pivot"&&X.pivotConfig&&(X.pivotConfig={...X.pivotConfig,upstream:w}),U==="single_value"&&X.singleValueConfig&&(X.singleValueConfig={...X.singleValueConfig,upstream:w}),T({type:"ADD_CELL",cell:X,afterId:e.id})},[e.id,e.name,T,t,n.cells]),ts=l.useCallback(async()=>{var Re,Ae,re;if(!e.result)return;V(!0),W(null);const U=await q.recommendVisualization({resultSchema:{columns:e.result.columns},rowSample:e.result.rows.slice(0,5),prompt:[e.name,e.content].filter(Boolean).join(" ").slice(0,600)});if(V(!1),!U.ok){W(U.error);return}const w=PS(U.display.defaultVisualization),X=U.display.fieldHints??{};M(w!=="table"?w:null),f(w!=="table"?"chart":"table"),de({chartConfig:{...e.chartConfig,chart:w,x:X.x??X.label??((Re=e.chartConfig)==null?void 0:Re.x),y:X.y??X.value??((Ae=e.chartConfig)==null?void 0:Ae.y),color:X.color??((re=e.chartConfig)==null?void 0:re.color)}}),W(`${U.display.component} · ${U.display.defaultVisualization}`)},[e.chartConfig,e.content,e.name,e.result,de]),Es=l.useCallback(async()=>{var X,Re,Ae,re,Ue;if(!e.content.trim()||K)return;const U=((X=e.result)==null?void 0:X.rowCount)??((Re=e.result)==null?void 0:Re.rows.length)??0;if(window.confirm(`Copy a bounded warehouse result into the local analysis workspace?
172
+
173
+ Current result: ${U.toLocaleString()} rows
174
+ Limits: 100,000 rows, 250 MB, 120 seconds
175
+
176
+ The staged snapshot is ignored by Git, records lineage, and expires after 7 days.`)){$(!0);try{const _e=(await q.stageDataset({sql:e.content,connectionName:((Ae=e.executionTarget)==null?void 0:Ae.connectionName)??P,name:`${e.name??"warehouse_result"} snapshot`,confirmed:!0,blockPath:((re=e.blockBinding)==null?void 0:re.path)??((Ue=e.dqlArtifact)==null?void 0:Ue.sourcePath)})).dataset,ot=mS(_e);T({type:"ADD_CELL",cell:ot,afterId:e.id}),T({type:"SET_SCHEMA",tables:[...n.schemaTables.filter(xe=>xe.name!==_e.alias),{name:_e.alias,path:_e.sourcePath,source:"file",objectType:"staged_dataset",columns:_e.profile.columns.map(xe=>({name:xe.name,type:xe.type}))}]})}catch(Se){window.alert(Se instanceof Error?Se.message:String(Se))}finally{$(!1)}}},[e,P,T,K,n.schemaTables]),rs=l.useCallback(async U=>{var w,X,Re;if(!(!e.content.trim()||K)){$(!0);try{const re=(await q.stageDataset({sql:e.content,connectionName:((w=e.executionTarget)==null?void 0:w.connectionName)??P,name:`${e.name??"warehouse_result"} snapshot`,confirmed:!0,blockPath:((X=e.blockBinding)==null?void 0:X.path)??((Re=e.dqlArtifact)==null?void 0:Re.sourcePath)})).dataset,Ue=As({staged:{...re,columns:re.profile.columns.map(Se=>Se.name)},local:{...U.dataset,columns:U.dataset.profile.columns.map(Se=>Se.name)},warehouseKey:U.warehouseKey,localKey:U.localKey,joinType:U.joinType,sourceCell:e});T({type:"ADD_CELL",cell:Ue,afterId:e.id}),T({type:"SET_SCHEMA",tables:[...n.schemaTables.filter(Se=>Se.name!==re.alias),{name:re.alias,path:re.sourcePath,source:"file",objectType:"staged_dataset",datasetId:re.id,fileFingerprint:re.fileFingerprint,storageMode:re.storageMode,refreshedAt:re.refreshedAt,trustState:re.trustState,columns:re.profile.columns.map(Se=>({name:Se.name,type:Se.type}))}]}),ee(!1)}catch(Ae){window.alert(Ae instanceof Error?Ae.message:String(Ae))}finally{$(!1)}}},[e,P,T,K,n.schemaTables]),gE=()=>{T({type:"DELETE_CELL",id:e.id})},yE=()=>{T({type:"MOVE_CELL",id:e.id,direction:"up"})},GE=()=>{T({type:"MOVE_CELL",id:e.id,direction:"down"})},De={cell:e,t:o,onMoveUp:yE,onMoveDown:GE,onDelete:gE};if(n.appMode!=="studio"&&CS.has(e.type))return E.jsxs("div",{style:{marginTop:8,marginBottom:8,padding:"6px 10px",borderRadius:6,border:`1px dashed ${o.cellBorder}`,background:o.cellBg,color:o.textMuted,fontSize:11,fontFamily:o.font,display:"flex",alignItems:"center",gap:8},children:[E.jsx("span",{style:{opacity:.7},children:"◎"}),E.jsxs("span",{children:[e.type.toUpperCase()," cell hidden in App view",e.name?` · ${e.name}`:""]})]});if(e.type==="param")return E.jsx(Pe,{...De,onRun:()=>S(e.id),children:E.jsx(AT,{cell:e,themeMode:n.themeMode,onApplyParam:S})});if(e.type==="pivot")return E.jsx(Pe,{...De,children:E.jsx(xT,{cell:e,cells:n.cells,index:t,themeMode:n.themeMode,onUpdate:de})});if(e.type==="single_value")return E.jsx(Pe,{...De,children:E.jsx(fT,{cell:e,cells:n.cells,index:t,themeMode:n.themeMode,onUpdate:de})});if(e.type==="filter")return E.jsx(Pe,{...De,children:E.jsx(uT,{cell:e,cells:n.cells,index:t,themeMode:n.themeMode,onUpdate:de})});if(e.type==="chart")return E.jsx(Pe,{...De,children:E.jsx(dT,{cell:e,cells:n.cells,index:t,themeMode:n.themeMode,onUpdate:de})});if(e.type==="table")return E.jsx(Pe,{...De,children:E.jsx(yT,{cell:e,cells:n.cells,index:t,themeMode:n.themeMode,onUpdate:de})});if(e.type==="chat")return E.jsx(Pe,{...De,children:E.jsx(BT,{cell:e,cells:n.cells,index:t,themeMode:n.themeMode,onUpdate:de})});const Ke=AS[e.type];if(Ke)return E.jsx(Pe,{...De,children:E.jsx(ST,{cell:e,themeMode:n.themeMode,title:Ke.title,subtitle:Ke.subtitle,color:Ke.color,badge:Ke.badge})});const BE=()=>{I(!1),T({type:"UPDATE_CELL",id:e.id,updates:{name:c.trim()||void 0}})},ns=(e.result||e.error||e.status==="running")&&e.type!=="markdown";return e.result&&NE(e.result,e.chartConfig),E.jsxs("div",{onMouseEnter:()=>R(!0),onMouseLeave:()=>R(!1),style:{display:"flex",gap:0,marginBottom:2},children:[g&&Ee&&E.jsx(Us,{cell:e,initialContent:Ee.derivedFromUpstream?Ee.content:void 0,initialName:Ee.suggestedName,initialDescription:Ee.suggestedDescription,onClose:()=>Z(!1),onSaved:({path:U,name:w})=>{T({type:"FILE_ADDED",file:{name:w,path:U,type:"block",folder:"blocks"}})}}),E.jsxs("div",{style:{flex:1,minWidth:0,borderRadius:8,border:`1px solid ${A||e.status!=="idle"?te:o.cellBorder}`,background:o.cellBg,boxShadow:e.status!=="idle"?`0 0 0 3px ${te}14, 0 1px 2px rgba(0,0,0,0.04)`:"0 1px 2px rgba(0,0,0,0.02)",overflow:"hidden",transition:"border-color 0.2s"},children:[E.jsxs("div",{style:{minHeight:38,display:"flex",alignItems:"center",padding:"7px 12px",gap:8,rowGap:6,background:"transparent",flexWrap:"wrap"},children:[E.jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:8,minWidth:0,flex:"1 1 260px"},children:[E.jsx("span",{"aria-hidden":!0,style:{width:6,height:6,borderRadius:999,background:Xn[e.type]??o.accent,flexShrink:0}}),E.jsx("span",{title:e.type==="dql"?"DQL cell — write a governed block (type, owner, description, tests) or use @metric()/@dim() refs":e.type==="sql"?"SQL cell — write raw SQL, reference other cells with {{name}}":void 0,style:{fontSize:11,fontWeight:700,letterSpacing:0,color:o.textSecondary,flexShrink:0,whiteSpace:"nowrap"},children:wn[e.type]}),N?E.jsx("input",{autoFocus:!0,value:c,onChange:U=>_(U.target.value),onBlur:BE,onKeyDown:U=>{U.key==="Enter"&&BE(),U.key==="Escape"&&I(!1)},style:{background:o.appBg,border:`1px solid ${o.cellBorderActive}`,borderRadius:5,color:o.textSecondary,fontSize:12,fontFamily:o.fontMono,padding:"2px 6px",outline:"none",width:170,minWidth:100}}):e.name?E.jsx("span",{onClick:()=>{_(e.name??""),I(!0)},title:"Click to rename",style:{color:o.textSecondary,fontSize:12,fontFamily:o.fontMono,cursor:"text",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:260,minWidth:0},children:e.name}):null,E.jsx($n,{cell:e,t:o}),(e.type==="sql"||e.type==="dql")&&E.jsx(IT,{cells:n.cells,index:t,content:e.content,themeMode:n.themeMode,onInsertHandle:U=>{const w=`{{${U}}}`,X=e.content??"";if(X.includes(w))return;const Re=X.trim().length===0?`SELECT * FROM ${w}`:`${X.replace(/\s*$/,"")} ${w}`;be(Re)}}),s&&_S(s)&&r&&E.jsx(LS,{state:s,t:o,onClick:()=>r(e.id)}),e.stale&&E.jsx("span",{title:"An upstream cell changed. Run this cell again.",style:{color:o.warning,fontSize:10,fontWeight:700},children:"stale"})]}),E.jsxs("div",{style:{display:"inline-flex",alignItems:"center",justifyContent:"flex-end",gap:5,flex:"0 0 auto",marginLeft:"auto"},children:[A&&(e.type==="sql"||e.type==="dql")&&E.jsx(bT,{themeMode:n.themeMode,cellType:e.type,onInsert:U=>be(U)}),A&&(e.type==="sql"||e.type==="dql")&&E.jsx("button",{type:"button",title:"Format SQL (clean up whitespace and keywords)",onClick:bt,style:Je(o),children:"Format"}),Qn&&(e.type==="sql"||e.type==="dql")&&E.jsx("button",{type:"button",title:"Reset to last saved version (discard changes)",onClick:Zn,style:Je(o,"danger"),children:"Reset"}),A&&r&&(e.type==="sql"||e.type==="dql")&&E.jsx("button",{type:"button",title:"Ask AI to explain, fix, find reuse, or prepare DQL from this cell",onClick:()=>r(e.id),style:Je(o,"accent"),children:"Ask AI"}),A&&he&&E.jsx("button",{type:"button",title:"Save this cell as a reusable block",onClick:()=>Z(!0),style:Je(o),children:"Save Block"}),(A||Q||(((HE=e.annotations)==null?void 0:HE.length)??0)>0)&&E.jsxs("button",{type:"button",title:"Add or review a cell note",onClick:()=>Y(U=>!U),style:Je(o,Q?"accent":void 0),children:[E.jsx(Bs,{size:11,"aria-hidden":"true"}),"Note",(bE=e.annotations)!=null&&bE.length?` ${e.annotations.length}`:""]}),A&&!e.name&&!N&&E.jsx(ue,{title:"Name this cell",onClick:()=>{_(""),I(!0)},t:o,children:E.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:E.jsx("path",{d:"M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"})})}),A&&Le&&e.status==="running"?E.jsx(ue,{title:"Cancel execution",onClick:()=>a(e.id),t:o,danger:!0,children:E.jsx("svg",{width:"11",height:"11",viewBox:"0 0 10 10",fill:"currentColor",children:E.jsx("rect",{x:"2",y:"2",width:"6",height:"6",rx:"1"})})}):A&&Le?E.jsx(ue,{title:"Run cell (Shift+Enter)",onClick:xE,t:o,run:!0,children:E.jsx("svg",{width:"11",height:"11",viewBox:"0 0 10 10",fill:"currentColor",children:E.jsx("path",{d:"M1.5 1.5l7 3.5-7 3.5V1.5Z"})})}):null,A&&E.jsxs(E.Fragment,{children:[E.jsx(ue,{title:"Move up",onClick:yE,t:o,children:E.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:E.jsx("path",{d:"M3.47 7.78a.75.75 0 0 1 0-1.06l4.25-4.25a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1-1.06 1.06L8.75 4.81v7.44a.75.75 0 0 1-1.5 0V4.81L4.53 7.78a.75.75 0 0 1-1.06 0Z"})})}),E.jsx(ue,{title:"Move down",onClick:GE,t:o,children:E.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:E.jsx("path",{d:"M12.53 8.22a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L2.97 9.28a.75.75 0 0 1 1.06-1.06l2.72 2.97V3.75a.75.75 0 0 1 1.5 0v7.44l2.72-2.97a.75.75 0 0 1 1.06 0Z"})})}),E.jsx(ue,{title:"Delete cell",onClick:gE,t:o,danger:!0,children:E.jsx("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"currentColor",children:E.jsx("path",{d:"M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"})})})]})]})]}),(e.type==="sql"||e.type==="dql")&&E.jsx(fS,{cell:e,connectionNames:B,defaultConnection:P,t:o,onChange:U=>de({executionTarget:U})}),e.type==="dql"&&E.jsx(cS,{content:e.content,onChange:be,t:o}),e.blockBinding&&E.jsx(NS,{binding:e.blockBinding,t:o,onRevert:async()=>{var w;const U=e.blockBinding;if(U)try{const X=await q.openBlockStudio(U.path),Re=`@block(${JSON.stringify(X.metadata.name)})`;T({type:"UPDATE_CELL",id:e.id,updates:{content:Re,blockBinding:{...U,state:"bound",originalContent:Re}}}),(w=Oe.current)==null||w.resetTo(Re)}catch(X){console.error("Failed to revert bound cell",X)}},onCustomize:async()=>{var w;const U=e.blockBinding;if(U)try{const X=await q.openBlockStudio(U.path);T({type:"UPDATE_CELL",id:e.id,updates:{content:X.source,dqlParameterValues:{...U.parameterValues??{}},blockBinding:{...U,state:"forked"}}}),(w=Oe.current)==null||w.resetTo(X.source),Ht(!0)}catch(X){console.error("Failed to customize bound cell",X)}},onUnbind:()=>{T({type:"UPDATE_CELL",id:e.id,updates:{blockBinding:void 0}})}}),e.type==="dql"&&(!e.blockBinding||e.blockBinding.state==="forked")&&E.jsxs(E.Fragment,{children:[E.jsx(iS,{source:e.content,onSourceChange:be,t:o}),E.jsx(OS,{source:e.content,values:e.dqlParameterValues??{},t:o,onChange:U=>T({type:"UPDATE_CELL",id:e.id,updates:{dqlParameterValues:U}})})]}),((FE=e.blockBinding)==null?void 0:FE.state)==="bound"&&E.jsx(IS,{binding:e.blockBinding,t:o,onChange:U=>T({type:"UPDATE_CELL",id:e.id,updates:{blockBinding:{...e.blockBinding,parameterValues:U}}})}),e.type==="markdown"?E.jsx(Ms,{value:e.content,onChange:be,themeMode:n.themeMode}):E.jsx(Ps,{value:e.content,onChange:be,onRun:xE,themeMode:n.themeMode,schema:zn,errorMessage:e.status==="error"?e.error:void 0,editorRef:Oe}),e.dqlArtifact&&(e.type==="sql"||e.type==="dql")&&E.jsxs("details",{style:{borderTop:`1px solid ${o.cellBorder}`,padding:"6px 12px",background:`${o.tableHeaderBg}40`},children:[E.jsxs("summary",{style:{cursor:"pointer",listStyle:"none",display:"flex",alignItems:"center",gap:6,fontSize:11,fontWeight:700,color:o.textSecondary},children:[E.jsx(cn,{size:12,color:o.accent}),"Governed DQL",e.dqlArtifact.sourcePath?E.jsx("span",{style:{fontWeight:400,color:o.textMuted,fontFamily:o.fontMono,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.dqlArtifact.sourcePath}):E.jsx("button",{type:"button",title:"Save this governed DQL as a reusable block",onClick:U=>{U.preventDefault(),U.stopPropagation(),Z(!0)},style:{marginLeft:"auto",border:"none",background:"transparent",cursor:"pointer",color:o.accent,fontFamily:o.font,fontSize:10.5,fontWeight:700,padding:"1px 4px"},children:"Save as DQL block"})]}),E.jsx("pre",{style:{margin:"6px 0 0",fontFamily:o.fontMono,fontSize:11,whiteSpace:"pre-wrap",color:o.textSecondary,maxHeight:200,overflow:"auto"},children:e.dqlArtifact.source})]}),(e.type==="sql"||e.type==="dql")&&(e.correctionProvenance&&!((YE=e.dqlArtifact)!=null&&YE.sourcePath||((vE=e.dqlArtifact)==null?void 0:vE.persistence)==="saved"||((VE=e.dqlArtifact)==null?void 0:VE.trustState)==="certified"||((WE=e.dqlArtifact)==null?void 0:WE.reviewState)==="certified")?Xe(e).reason==="ready"?E.jsx(xS,{cell:e,t:o}):E.jsxs("div",{"data-teach-state":Xe(e).reason,style:{borderTop:`1px solid ${o.cellBorder}`,padding:"5px 12px",background:`${o.accent}0A`,color:o.textMuted,font:`500 10.5px ${o.font}`},children:[E.jsx("strong",{style:{color:o.textSecondary},children:"AI draft."})," ",Xe(e).reason==="missing_generated_sql"?E.jsx(E.Fragment,{children:"Original SQL evidence is missing. Reopen this draft from Ask or Notebook AI before teaching it."}):Xe(e).reason==="run_required"||Xe(e).reason==="execution_mismatch"?E.jsxs(E.Fragment,{children:["Draft changed. Run this exact cell successfully to unlock ",E.jsx("strong",{style:{color:o.accent},children:"Teach DQL"}),"."]}):E.jsxs(E.Fragment,{children:["Edit this cell and run it successfully; then ",E.jsx("strong",{style:{color:o.accent},children:"Teach DQL"})," appears below the editor. Teaching creates a review candidate and never certifies automatically."]})]}):e.dqlArtifact&&(e.dqlArtifact.sourcePath||e.dqlArtifact.persistence==="saved"||e.dqlArtifact.trustState==="certified"||e.dqlArtifact.reviewState==="certified")?E.jsxs("div",{style:{borderTop:`1px solid ${o.cellBorder}`,padding:"5px 12px",background:`${o.warning}0A`,color:o.textMuted,font:`500 10.5px ${o.font}`},children:[E.jsx("strong",{style:{color:o.textSecondary},children:"Saved governed DQL."})," ","Notebook edits are a draft for block review and recertification; they do not create Teach DQL learning or overwrite the source automatically."]}):null),E.jsx(pS,{cell:e,t:o}),Q&&E.jsx(hS,{cell:e,value:J,kind:Ie,onValueChange:ae,onKindChange:d,onAdd:()=>{const U=J.trim();U&&(de({annotations:[...e.annotations??[],{id:`note_${Date.now()}_${Math.random().toString(36).slice(2,7)}`,body:U,kind:Ie,createdAt:new Date().toISOString()}]}),ae(""))},onRemove:U=>de({annotations:(e.annotations??[]).filter(w=>w.id!==U)}),t:o}),ns&&E.jsxs("div",{style:{borderTop:`1px solid ${o.cellBorder}`},children:[E.jsxs("div",{style:{height:28,display:"flex",alignItems:"center",padding:"0 12px",gap:10,borderBottom:e.result&&O?`1px solid ${o.cellBorder}`:"none",background:`${o.tableHeaderBg}60`},children:[e.result&&E.jsxs("span",{style:{fontSize:11,fontFamily:o.font,color:o.textMuted},children:[(()=>{const U=e.result.rowCount??e.result.rows.length;return`${U.toLocaleString()} ${U===1?"row":"rows"}`})(),e.result.executionTime!==void 0&&E.jsxs(E.Fragment,{children:[" · ",e.result.executionTime<1e3?`${Number(e.result.executionTime.toFixed(1))}ms`:`${(e.result.executionTime/1e3).toFixed(2)}s`]})]}),e.fromSnapshot&&e.result&&E.jsx("span",{title:"Result loaded from the last saved run; re-run to refresh.",style:{fontSize:10,fontFamily:o.font,color:o.textMuted,border:`1px solid ${o.btnBorder}`,borderRadius:3,padding:"0 6px",lineHeight:"16px"},children:"cached"}),e.error&&E.jsx("span",{style:{fontSize:11,fontFamily:o.font,color:o.error},children:"Error"}),e.result&&e.type==="sql"&&((wE=e.executionTarget)==null?void 0:wE.target)!=="local"&&E.jsxs(E.Fragment,{children:[E.jsx("button",{type:"button",disabled:K,onClick:()=>ee(U=>!U),title:"Combine this warehouse result with an imported local dataset",style:{border:`1px solid ${z?o.accent:o.btnBorder}`,background:z?`${o.accent}18`:o.btnBg,color:z?o.accent:o.textSecondary,borderRadius:4,padding:"2px 7px",font:`800 10px ${o.font}`,cursor:K?"wait":"pointer"},children:e.mixedSourcePlan?"Finish CSV join":"Combine with local data"}),E.jsx("button",{type:"button",disabled:K,onClick:()=>void Es(),title:"Copy this bounded warehouse result into the local analysis workspace",style:{border:`1px solid ${o.btnBorder}`,background:o.btnBg,color:o.textSecondary,borderRadius:4,padding:"2px 7px",font:`700 10px ${o.font}`,cursor:K?"wait":"pointer"},children:K?"Staging…":"Stage only"})]}),e.result&&E.jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:3},"aria-label":"Explore this result",children:[E.jsx("span",{style:{font:`700 9px ${o.font}`,color:o.textMuted,textTransform:"uppercase",letterSpacing:".05em"},children:"Explore"}),E.jsx(dt,{label:"Filter",t:o,onClick:()=>Tt("filter")}),E.jsx(dt,{label:"Pivot",t:o,onClick:()=>Tt("pivot")}),E.jsx(dt,{label:"Chart",t:o,onClick:()=>Tt("chart")}),E.jsx(dt,{label:"KPI",t:o,onClick:()=>Tt("single_value")})]}),E.jsx("div",{style:{flex:1}}),e.result&&O&&E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:3,position:"relative"},children:[E.jsx("button",{onClick:()=>{f("table"),m(!1)},style:{padding:"1px 7px",fontSize:10,fontFamily:o.font,borderRadius:3,border:`1px solid ${L==="table"?o.accent:o.btnBorder}`,background:L==="table"?`${o.accent}20`:"transparent",color:L==="table"?o.accent:o.textMuted,cursor:"pointer",transition:"all 0.15s"},children:"Table"}),E.jsx("button",{onClick:()=>{f("profile"),m(!1)},style:{padding:"1px 7px",fontSize:10,fontFamily:o.font,borderRadius:3,border:`1px solid ${L==="profile"?o.accent:o.btnBorder}`,background:L==="profile"?`${o.accent}20`:"transparent",color:L==="profile"?o.accent:o.textMuted,cursor:"pointer",transition:"all 0.15s"},children:"Profile"}),E.jsxs("div",{style:{position:"relative"},children:[E.jsxs("button",{onClick:()=>{L==="chart"&&b?m(!1):(f("chart"),m(U=>!U))},style:{padding:"1px 7px",fontSize:10,fontFamily:o.font,borderRadius:3,border:`1px solid ${L==="chart"?o.accent:o.btnBorder}`,background:L==="chart"?`${o.accent}20`:"transparent",color:L==="chart"?o.accent:o.textMuted,cursor:"pointer",transition:"all 0.15s",display:"flex",alignItems:"center",gap:3},children:[x?((XE=yt.find(U=>U.value===x))==null?void 0:XE.label)??"Chart":"Chart",E.jsx("svg",{width:"6",height:"6",viewBox:"0 0 8 8",fill:"currentColor",children:E.jsx("path",{d:"M1 2.5l3 3 3-3",stroke:"currentColor",fill:"none",strokeWidth:"1.2",strokeLinecap:"round"})})]}),b&&E.jsx(gS,{selected:x,onSelect:U=>{M(U),f("chart"),m(!1)},onClose:()=>m(!1),t:o})]}),E.jsx("button",{onClick:()=>void ts(),disabled:y,title:"Recommend chart from result fields",style:{padding:"1px 7px",fontSize:10,fontFamily:o.font,borderRadius:3,border:`1px solid ${y?o.btnBorder:o.accent}`,background:y?"transparent":`${o.accent}14`,color:y?o.textMuted:o.accent,cursor:y?"wait":"pointer",transition:"all 0.15s"},children:y?"...":"Suggest"}),j&&E.jsx("span",{title:j,style:{maxWidth:150,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:10,color:o.textMuted,fontFamily:o.font},children:j}),L==="chart"&&E.jsx("button",{onClick:()=>G(U=>!U),title:"Chart configuration",style:{padding:"1px 5px",fontSize:11,borderRadius:3,cursor:"pointer",border:`1px solid ${h?o.accent:o.btnBorder}`,background:h?`${o.accent}20`:"transparent",color:h?o.accent:o.textMuted,transition:"all 0.15s",display:"flex",alignItems:"center"},children:E.jsx("svg",{width:"10",height:"10",viewBox:"0 0 16 16",fill:"currentColor",children:E.jsx("path",{d:"M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.386.506.798.704 1.23.315.698.043 1.44-.476 1.89l-.815.806a.338.338 0 0 0-.079.262c.02.267.02.538 0 .805a.338.338 0 0 0 .079.262l.815.806c.52.45.79 1.192.476 1.89a7.22 7.22 0 0 1-.704 1.23c-.428.609-1.176.806-1.82.63l-1.103-.303c-.066-.019-.176-.011-.299.071a5.09 5.09 0 0 1-.668.386c-.133.066-.194.158-.212.224l-.288 1.107c-.169.645-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.29-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.09 5.09 0 0 1-.668-.387c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a7.12 7.12 0 0 1-.704-1.23c-.315-.698-.043-1.44.476-1.89l.815-.806a.338.338 0 0 0 .079-.262 6.08 6.08 0 0 1 0-.805.338.338 0 0 0-.079-.262l-.815-.806c-.52-.45-.79-1.192-.476-1.89a7.22 7.22 0 0 1 .704-1.23c.428-.609 1.176-.806 1.82-.63l1.103.303c.066.019.176.011.299-.071.214-.143.437-.272.668-.386.133-.066.194-.158.212-.224L6.54 1.29C6.71.645 7.256.095 7.999.031 8.236.01 8.474 0 8.713 0H8ZM8 5a3 3 0 1 0 0 6 3 3 0 0 0 0-6Z"})})})]}),E.jsxs("button",{onClick:()=>C(U=>!U),style:{background:"transparent",border:"none",cursor:"pointer",color:o.textMuted,fontSize:11,fontFamily:o.font,padding:"2px 4px",display:"flex",alignItems:"center",gap:4},children:[E.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"currentColor",style:{transform:O?"rotate(0deg)":"rotate(-90deg)",transition:"transform 0.15s"},children:E.jsx("path",{d:"M1 3l4 4 4-4",stroke:"currentColor",fill:"none",strokeWidth:"1.5"})}),O?"Hide":"Show"]})]}),z&&e.result&&E.jsx(nS,{warehouseColumns:e.result.columns,warehouseRows:e.result.rows,warehouseRowCount:e.result.rowCount??e.result.rows.length,busy:K,t:o,onCancel:()=>ee(!1),onCombine:U=>void rs(U),suggestedPlan:e.mixedSourcePlan}),O&&E.jsxs(E.Fragment,{children:[e.status==="running"&&Le&&E.jsx(dS,{cellType:e.type,cellName:e.name,t:o,onCancel:()=>a(e.id)}),e.error&&E.jsx(JT,{message:e.error,themeMode:n.themeMode,onFix:e.type==="sql"?es:void 0,onFixWithAi:(e.type==="sql"||e.type==="dql")&&r?()=>r(e.id,MS(e,n.schemaTables),{autoAsk:!0}):void 0,editableArtifactLabel:e.type==="dql"?"DQL":"SQL",schemaTables:n.schemaTables}),e.result&&!e.error&&(L==="profile"?E.jsx(US,{cell:e,t:o}):L==="chart"&&x?E.jsxs(E.Fragment,{children:[mE(x,e.result,n.themeMode,e.chartConfig),h&&E.jsx(yS,{columns:e.result.columns,chartConfig:e.chartConfig,onChange:U=>T({type:"UPDATE_CELL",id:e.id,updates:{chartConfig:{...e.chartConfig,...U}}}),t:o})]}):E.jsx(fE,{result:e.result,themeMode:n.themeMode}))]})]}),Le&&E.jsx(oo,{cellContent:e.content,cellType:e.type,compiledSql:((jE=e.dqlArtifact)==null?void 0:jE.compiledSql)??(($E=e.dqlArtifact)==null?void 0:$E.sql),cellId:e.id,cellName:e.name,cells:n.cells,themeMode:n.themeMode,t:o,onFocusNode:U=>{T({type:"SET_LINEAGE_FOCUS",nodeId:U}),T({type:"OPEN_LINEAGE_DRAWER",nodeId:U})}})]})]})}function PS(e){const t=e.toLowerCase().replace(/-/g,"_"),r=t==="grouped_bar"?"grouped-bar":t==="stacked_bar"?"stacked-bar":t,s=yt.find(n=>n.value===r);return(s==null?void 0:s.value)??"table"}function MS(e,t){const r=Is(e.content,t),s=Os(e.content,t),n=r.length>0&&s.length>0,T=e.type==="dql",o=T?PE(e.content):e.content;return[`Fix this notebook ${T?"DQL":"SQL"} cell error.`,`Use the selected ${T?"DQL source and its embedded query SQL":"SQL"}, semantic metadata, certified answers, warehouse schema, and registered local datasets before proposing changes.`,T?"Return a corrected review-required DQL artifact that preserves the block metadata and changes only what is required to repair the query. Never emit source::, dbt::, or semantic:: graph identities in executable SQL; resolve them to inspected physical database.schema.table relations.":"",n?`This is a mixed-source query: warehouse=${s.join(", ")}; local=${r.map(i=>i.alias??i.id).join(", ")}. Do not treat the local dataset as a missing warehouse table and do not execute a direct cross-engine join. Return a warehouse-only extraction that retains the join key, then explain how to use Combine with local data.`:"When repair is appropriate, return corrected read-only SQL plus a concise explanation and next action.","Do not create or certify a governed asset during error repair.",o!=null&&o.trim()?`Failing embedded SQL:
177
+ ${o.trim()}`:"",e.error?`Current error: ${e.error}`:""].filter(Boolean).join(`
178
+ `)}function mS(e){const t=ie("sql",`SELECT *
179
+ FROM "${e.alias.replace(/"/g,'""')}"
180
+ LIMIT 100`);return t.name=`${e.alias}_analysis`,t.executionTarget={target:"local"},t.datasetRefs=[{id:e.id,alias:e.alias,role:"staged",fingerprint:e.fileFingerprint}],t}function fS({cell:e,connectionNames:t,defaultConnection:r,t:s,onChange:n}){var i,S,a,A;const T=((i=e.executionTarget)==null?void 0:i.target)==="local"?"local":`connection:${((S=e.executionTarget)==null?void 0:S.connectionName)??r}`,o=e.blockBinding?"Certified or draft block":/@(?:metric|dim)\s*\(/i.test(e.content)?"Semantic query":((a=e.executionTarget)==null?void 0:a.target)==="local"?"Local dataset SQL":"Warehouse SQL";return E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"5px 12px",borderTop:`1px solid ${s.cellBorder}`,background:`${s.tableHeaderBg}35`},children:[E.jsx(xt,{size:12,color:s.textMuted,"aria-hidden":"true"}),E.jsx("span",{style:{color:s.textMuted,fontSize:10,fontWeight:700},children:o}),E.jsx("span",{style:{color:s.textMuted,fontSize:10},children:"runs on"}),E.jsxs("select",{"aria-label":"Query execution target",value:T,onChange:R=>{R.target.value==="local"?n({target:"local"}):n({target:"connection",connectionName:R.target.value.slice(11)})},style:{background:s.inputBg,color:s.textSecondary,border:`1px solid ${s.inputBorder}`,borderRadius:5,padding:"2px 6px",font:`10px ${s.font}`},children:[E.jsx("option",{value:"local",children:"Local analysis workspace"}),t.map(R=>E.jsxs("option",{value:`connection:${R}`,children:[R,R===r?" (default)":""]},R)),t.length===0&&E.jsx("option",{value:`connection:${r}`,children:r})]}),(A=e.datasetRefs)!=null&&A.length?E.jsxs("span",{style:{marginLeft:"auto",color:s.textMuted,fontSize:10},children:[e.datasetRefs.length," dataset",e.datasetRefs.length===1?"":"s"]}):null]})}function hS({cell:e,value:t,kind:r,onValueChange:s,onKindChange:n,onAdd:T,onRemove:o,t:i}){return E.jsxs("div",{style:{borderTop:`1px solid ${i.cellBorder}`,background:`${i.tableHeaderBg}30`,padding:"9px 12px",display:"grid",gap:8},children:[(e.annotations??[]).map(S=>E.jsxs("div",{style:{display:"flex",gap:8,alignItems:"flex-start",color:i.textSecondary,fontSize:11},children:[E.jsxs("div",{style:{flex:1},children:[E.jsx("span",{style:{display:"inline-flex",marginBottom:4,border:`1px solid ${i.btnBorder}`,borderRadius:999,padding:"1px 6px",color:i.textMuted,font:`700 9px ${i.font}`,textTransform:"uppercase",letterSpacing:".04em"},children:S.kind??"note"}),E.jsx("div",{style:{whiteSpace:"pre-wrap"},children:S.body}),E.jsxs("div",{style:{color:i.textMuted,fontSize:9,marginTop:3},children:[S.author?`${S.author} · `:"",new Date(S.updatedAt??S.createdAt).toLocaleString()]})]}),E.jsx("button",{type:"button",onClick:()=>o(S.id),style:{border:0,background:"transparent",color:i.textMuted,cursor:"pointer",fontSize:10},children:"Remove"})]},S.id)),E.jsxs("div",{style:{display:"flex",gap:6,alignItems:"flex-start"},children:[E.jsxs("select",{"aria-label":"Research note type",value:r??"note",onChange:S=>n(S.target.value),style:{background:i.inputBg,color:i.textPrimary,border:`1px solid ${i.inputBorder}`,borderRadius:6,padding:"6px 7px",font:`11px ${i.font}`},children:[E.jsx("option",{value:"note",children:"Note"}),E.jsx("option",{value:"assumption",children:"Assumption"}),E.jsx("option",{value:"finding",children:"Finding"}),E.jsx("option",{value:"decision",children:"Decision"}),E.jsx("option",{value:"caveat",children:"Caveat"})]}),E.jsx("textarea",{"aria-label":"Cell note",value:t,onChange:S=>s(S.target.value),placeholder:"Record an assumption, validation note, or takeaway…",rows:2,style:{flex:1,resize:"vertical",background:i.inputBg,color:i.textPrimary,border:`1px solid ${i.inputBorder}`,borderRadius:6,padding:"6px 8px",font:`11px ${i.font}`}}),E.jsx("button",{type:"button",onClick:T,disabled:!t.trim(),style:{alignSelf:"flex-end",border:`1px solid ${i.accent}`,background:`${i.accent}14`,color:i.accent,borderRadius:5,padding:"5px 9px",font:`700 10px ${i.font}`,cursor:t.trim()?"pointer":"not-allowed",opacity:t.trim()?1:.5},children:"Add note"})]})]})}function US({cell:e,t}){const r=e.result;if(!r)return null;const s=r.rows.slice(0,500);return E.jsx("div",{style:{padding:12,display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(170px, 1fr))",gap:8},children:r.columns.map(n=>{const o=s.map(a=>a[n]).filter(a=>a!=null&&a!==""),i=new Set(o.map(a=>String(a))).size,S=o.filter(a=>typeof a=="number"||typeof a=="string"&&a.trim()!==""&&Number.isFinite(Number(a)));return E.jsxs("div",{style:{border:`1px solid ${t.cellBorder}`,borderRadius:7,padding:9,background:t.cellBg},children:[E.jsx("div",{style:{color:t.textPrimary,font:`700 11px ${t.fontMono}`,overflow:"hidden",textOverflow:"ellipsis"},children:n}),E.jsxs("div",{style:{color:t.textMuted,fontSize:10,marginTop:6},children:[s.length-o.length," null · ",i," distinct in preview"]}),S.length===o.length&&S.length>0&&E.jsxs("div",{style:{color:t.textSecondary,fontSize:10,marginTop:3},children:["min ",Math.min(...S.map(Number)).toLocaleString()," · max"," ",Math.max(...S.map(Number)).toLocaleString()]})]},n)})})}function Je(e,t="default"){return ce(e,{variant:t==="accent"?"accent":t==="danger"?"danger":"secondary",size:"xs"})}function dt({label:e,t,onClick:r}){return E.jsx("button",{type:"button",onClick:r,title:`Create a reusable ${e.toLowerCase()} step from this result`,style:{border:`1px solid ${t.btnBorder}`,background:t.btnBg,color:t.textSecondary,borderRadius:4,padding:"2px 6px",font:`700 10px ${t.font}`,cursor:"pointer"},children:e})}function xS({cell:e,t}){const[r,s]=l.useState("idle"),[n,T]=l.useState(null),[o,i]=l.useState(!1),{eligible:S,generatedSql:a,correctedSql:A,question:R}=Xe(e),N=l.useMemo(()=>WT(e,{question:R??"",previousSql:a,correctedSql:A,domain:typeof window<"u"?(()=>{const h=new URLSearchParams(window.location.search).get("domain");return h&&h!=="all"?h:void 0})():void 0}),[e,A,a,R]),[I,c]=l.useState(N.title),[_,O]=l.useState(N.guidance),[C,L]=l.useState(N.rationale),[f,x]=l.useState(N.lesson),[M,b]=l.useState(N.scope);if(!S||r==="dismissed")return null;if(r==="saved")return E.jsxs("div",{"data-teach-state":"saved",role:"status",style:{borderTop:`1px solid ${t.success}55`,borderBottom:`1px solid ${t.success}33`,background:`${t.success}10`,padding:"11px 14px",display:"flex",alignItems:"center",gap:9,color:t.success,fontFamily:t.font},children:[E.jsx(ls,{size:17,strokeWidth:2.4}),E.jsxs("div",{children:[E.jsx("div",{style:{fontSize:12,fontWeight:750},children:"Correction saved for review"}),E.jsx("div",{style:{marginTop:2,fontSize:10.5,color:t.textMuted},children:"It remains a candidate until it passes evaluation and you explicitly approve it in Agent learning."})]})]});const m=async()=>{if(!I.trim()||!_.trim()){T("Add a short title and reusable lesson before saving."),s("error");return}if(!Ye(M)){T("Confirm at least one domain, metric, dbt model, business term, or block so this learning cannot become project-wide by accident."),s("error");return}s("saving"),T(null);try{const h=await q.recordAgentCorrection({question:R,wrongSql:a,correctedSql:A,title:I.trim(),guidance:_.trim(),lesson:{...f,version:1,rule:_.trim()},rationale:C.trim()||"Edited in the notebook and ran successfully.",scope:M});if(h.ok===!1){T(h.error??"Could not save this correction."),s("error");return}s("saved")}catch(h){T(h instanceof Error?h.message:String(h)),s("error")}};return E.jsxs("div",{"data-teach-state":r==="error"?"error":"ready",role:"region","aria-label":"Teach DQL correction",style:{borderTop:`2px solid ${r==="error"?t.error:t.accent}`,borderBottom:`1px solid ${r==="error"?`${t.error}44`:`${t.accent}44`}`,background:r==="error"?`${t.error}0D`:`linear-gradient(90deg, ${t.accent}18 0%, ${t.accent}09 72%, transparent 100%)`,padding:"13px 14px",display:"flex",alignItems:"center",gap:11,flexWrap:"wrap",fontFamily:t.font},children:[E.jsx("div",{"aria-hidden":"true",style:{width:32,height:32,flex:"0 0 32px",borderRadius:8,display:"grid",placeItems:"center",color:r==="error"?t.error:"#ffffff",background:r==="error"?`${t.error}18`:t.accent,border:`1px solid ${r==="error"?`${t.error}44`:t.accent}`},children:E.jsx(je,{size:17,strokeWidth:2.3})}),E.jsxs("div",{style:{flex:"1 1 300px",minWidth:0},children:[E.jsx("div",{style:{color:r==="error"?t.error:t.textPrimary,fontSize:12.5,fontWeight:750},children:r==="error"?"This correction was not saved":"Teach DQL from this successful correction"}),E.jsx("div",{style:{marginTop:3,color:t.textMuted,fontSize:10.75,lineHeight:1.45},children:r==="error"?n??"DQL could not create the review candidate. Try again.":E.jsx(E.Fragment,{children:"Review the before/after SQL, explain the reusable lesson, and confirm where it applies. Saving creates a candidate only."})})]}),E.jsxs("div",{style:{display:"inline-flex",alignItems:"center",gap:7,marginLeft:"auto"},children:[E.jsxs("button",{type:"button",onClick:()=>i(h=>!h),title:"Review the reusable lesson and its governed scope",style:ce(t,{variant:"primary",size:"md"}),children:[E.jsx(je,{size:14,"aria-hidden":"true"}),o?"Close review":"Review & teach"]}),E.jsx("button",{type:"button",onClick:()=>s("dismissed"),title:"Dismiss this suggestion",style:ce(t,{variant:"ghost",size:"sm"}),children:"Not now"})]}),o?E.jsxs("div",{"data-teach-review":!0,style:{flex:"1 0 100%",display:"grid",gap:12,padding:"13px",border:`1px solid ${t.cellBorder}`,borderRadius:8,background:t.cellBg},children:[E.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:10},children:[E.jsxs("details",{open:!0,style:{border:`1px solid ${t.cellBorder}`,borderRadius:7,padding:9},children:[E.jsx("summary",{style:{cursor:"pointer",color:t.textSecondary,fontSize:11,fontWeight:700},children:"Before · AI draft"}),E.jsx("pre",{style:{margin:"8px 0 0",color:t.textMuted,fontFamily:t.fontMono,fontSize:10.5,whiteSpace:"pre-wrap",maxHeight:180,overflow:"auto"},children:a})]}),E.jsxs("details",{open:!0,style:{border:`1px solid ${t.success}55`,borderRadius:7,padding:9},children:[E.jsx("summary",{style:{cursor:"pointer",color:t.success,fontSize:11,fontWeight:700},children:"After · successful correction"}),E.jsx("pre",{style:{margin:"8px 0 0",color:t.textMuted,fontFamily:t.fontMono,fontSize:10.5,whiteSpace:"pre-wrap",maxHeight:180,overflow:"auto"},children:A})]})]}),E.jsxs("label",{style:{display:"grid",gap:4,color:t.textSecondary,fontSize:10.5,fontWeight:650},children:["Learning title",E.jsx("input",{value:I,onChange:h=>c(h.target.value),style:ce(t,{size:"sm"})})]}),E.jsxs("label",{style:{display:"grid",gap:4,color:t.textSecondary,fontSize:10.5,fontWeight:650},children:["Reusable lesson",E.jsx("textarea",{value:_,onChange:h=>{O(h.target.value),x(G=>({...G,rule:h.target.value}))},rows:3,placeholder:"Explain the business or SQL rule that should guide similar questions.",style:{...ce(t,{size:"sm"}),resize:"vertical",lineHeight:1.45}}),E.jsx("span",{style:{color:t.textMuted,fontWeight:400},children:"This reviewed lesson—not the raw comment—is what matching future questions receive."})]}),E.jsxs("details",{style:{border:`1px solid ${t.cellBorder}`,borderRadius:7,padding:"9px 10px"},children:[E.jsxs("summary",{style:{cursor:"pointer",color:t.textSecondary,fontSize:10.5,fontWeight:700},children:["Help DQL generalize this lesson ",E.jsx("span",{style:{color:t.textMuted,fontWeight:400},children:"(optional)"})]}),E.jsxs("div",{style:{display:"grid",gap:9,paddingTop:9},children:[E.jsxs("label",{style:{display:"grid",gap:4,color:t.textMuted,fontSize:10},children:["Lesson type",E.jsxs("select",{value:f.category,onChange:h=>x({...f,category:h.target.value}),style:ce(t,{size:"sm"}),children:[E.jsx("option",{value:"semantic_rule",children:"Business definition"}),E.jsx("option",{value:"filter_rule",children:"Filter rule"}),E.jsx("option",{value:"join_rule",children:"Join rule"}),E.jsx("option",{value:"aggregation_rule",children:"Aggregation rule"}),E.jsx("option",{value:"grain_rule",children:"Grain rule"}),E.jsx("option",{value:"time_rule",children:"Time rule"}),E.jsx("option",{value:"relation_rule",children:"Table or column rule"}),E.jsx("option",{value:"dialect_rule",children:"SQL dialect rule"})]})]}),E.jsxs("label",{style:{display:"grid",gap:4,color:t.textMuted,fontSize:10},children:["Similar questions ",E.jsx("span",{children:"one per line; used for retrieval, never as automatic truth"}),E.jsx("textarea",{value:f.intentExamples.join(`
181
+ `),onChange:h=>x({...f,intentExamples:h.target.value.split(/\r?\n/)}),onBlur:()=>x({...f,intentExamples:Lr(f.intentExamples.join(`
182
+ `))}),rows:3,placeholder:`Revenue by region
183
+ Which markets generate the most net sales?`,style:{...ce(t,{size:"sm"}),resize:"vertical",lineHeight:1.4}})]}),E.jsxs("label",{style:{display:"grid",gap:4,color:t.textMuted,fontSize:10},children:["Avoid these known mistakes ",E.jsx("span",{children:"one per line"}),E.jsx("textarea",{value:f.avoid.join(`
184
+ `),onChange:h=>x({...f,avoid:h.target.value.split(/\r?\n/)}),onBlur:()=>x({...f,avoid:Lr(f.avoid.join(`
185
+ `))}),rows:2,placeholder:"Do not include refunded orders.",style:{...ce(t,{size:"sm"}),resize:"vertical",lineHeight:1.4}})]}),E.jsxs("label",{style:{display:"grid",gap:4,color:t.textMuted,fontSize:10},children:["Expected outcome or result shape",E.jsx("input",{value:f.expectedOutcome??"",onChange:h=>x({...f,expectedOutcome:h.target.value||void 0}),placeholder:"One row per region using net revenue",style:ce(t,{size:"sm"})})]})]})]}),E.jsxs("div",{children:[E.jsx("div",{style:{color:t.textSecondary,fontSize:10.5,fontWeight:700,marginBottom:6},children:"Where should this learning apply?"}),E.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(145px, 1fr))",gap:7},children:[["domain","Domain"],["metric","Metric"],["dbtModel","dbt model"],["term","Business term"],["block","Block"],["dialect","SQL dialect"]].map(([h,G])=>E.jsxs("label",{style:{display:"grid",gap:3,color:t.textMuted,fontSize:10},children:[G,E.jsx("input",{value:M[h]??"",onChange:y=>b({...M,[h]:y.target.value||void 0}),placeholder:`Optional ${G.toLowerCase()}`,style:ce(t,{size:"sm"})})]},h))})]}),E.jsxs("label",{style:{display:"grid",gap:4,color:t.textSecondary,fontSize:10.5,fontWeight:650},children:["Why is this correct? ",E.jsx("span",{style:{color:t.textMuted,fontWeight:400},children:"(optional reviewer evidence)"}),E.jsx("textarea",{value:C,onChange:h=>L(h.target.value),rows:2,placeholder:"Example: Finance defines revenue as net amount and excludes refunded orders.",style:{...ce(t,{size:"sm"}),resize:"vertical",lineHeight:1.45}})]}),E.jsxs("div",{style:{border:`1px solid ${Ye(M)?`${t.success}55`:`${t.warning}66`}`,borderRadius:7,padding:"9px 10px",background:Ye(M)?`${t.success}08`:`${t.warning}0A`,display:"grid",gap:4,fontSize:10.5},children:[E.jsxs("div",{style:{color:t.textPrimary,fontWeight:700},children:["Will apply to: ",Cr(M).length?`questions matching ${Cr(M).join(" · ")}`:"no confirmed scope yet"]}),E.jsx("div",{style:{color:t.textMuted},children:"Will not apply when a confirmed scope value differs. Relations and columns are derived from the corrected SQL and current project snapshot, then used for ranking, drift checks, and review evidence."}),Ye(M)?null:E.jsx("div",{style:{color:t.warning},children:"Add at least one domain, metric, model, term, or block before saving."})]}),E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"},children:[E.jsxs("button",{type:"button",onClick:()=>void m(),disabled:r==="saving"||!Ye(M),style:ce(t,{variant:"primary",size:"md",disabled:r==="saving"||!Ye(M)}),children:[E.jsx(je,{size:14,"aria-hidden":"true"}),r==="saving"?"Saving candidate…":"Save learning candidate"]}),E.jsx("span",{style:{color:t.textMuted,fontSize:10.25},children:"It remains inactive until evaluation and explicit approval in Agent learning."})]})]}):null]})}function ue({title:e,onClick:t,children:r,t:s,accent:n,danger:T,run:o}){const[i,S]=l.useState(!1),a=o?s.success:T?s.error:n?s.accent:void 0;return E.jsx("button",{title:e,"aria-label":e,onClick:t,onMouseEnter:()=>S(!0),onMouseLeave:()=>S(!1),style:{width:26,height:26,display:"flex",alignItems:"center",justifyContent:"center",background:a?i?`${a}24`:`${a}12`:i?s.btnHover:"transparent",border:`1px solid ${a?i?`${a}66`:`${a}33`:i?s.btnBorder:"transparent"}`,borderRadius:6,cursor:"pointer",color:a??(i?s.textSecondary:s.textMuted),transition:"background 0.15s, border-color 0.15s, color 0.15s",padding:0},children:r})}function gS({selected:e,onSelect:t,onClose:r,t:s}){const[n,T]=l.useState(null);return ME.useEffect(()=>{const o=i=>{setTimeout(()=>r(),0)};return document.addEventListener("mousedown",o),()=>document.removeEventListener("mousedown",o)},[r]),E.jsx("div",{onMouseDown:o=>o.stopPropagation(),style:{position:"absolute",top:24,right:0,zIndex:200,background:s.cellBg,border:`1px solid ${s.cellBorder}`,borderRadius:6,boxShadow:"0 8px 24px rgba(0,0,0,0.3)",padding:4,minWidth:130,maxHeight:280,overflowY:"auto",display:"flex",flexDirection:"column",gap:1},children:yt.map(({value:o,label:i})=>E.jsx("button",{onClick:()=>t(o),onMouseEnter:()=>T(o),onMouseLeave:()=>T(null),style:{background:e===o?`${s.accent}20`:n===o?s.btnHover:"transparent",border:"none",borderRadius:4,cursor:"pointer",color:e===o?s.accent:s.textSecondary,fontSize:11,fontFamily:s.font,fontWeight:e===o?600:400,padding:"4px 10px",textAlign:"left",transition:"background 0.1s"},children:i},o))})}function yS({columns:e,chartConfig:t,onChange:r,t:s}){const n={background:s.inputBg,border:`1px solid ${s.inputBorder}`,borderRadius:4,color:s.textPrimary,fontSize:11,fontFamily:s.fontMono,padding:"3px 6px",outline:"none",minWidth:100,flex:1},T={fontSize:9,fontWeight:700,color:s.textMuted,fontFamily:s.font,letterSpacing:"0.05em",textTransform:"uppercase",minWidth:40,flexShrink:0};return E.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:"6px 16px",padding:"8px 12px",borderTop:`1px solid ${s.cellBorder}`,background:`${s.tableHeaderBg}40`},children:[E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[E.jsx("span",{style:T,children:"X axis"}),E.jsxs("select",{style:n,value:(t==null?void 0:t.x)??"",onChange:o=>r({x:o.target.value||void 0}),children:[E.jsx("option",{value:"",children:"Auto"}),e.map(o=>E.jsx("option",{value:o,children:o},o))]})]}),E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[E.jsx("span",{style:T,children:"Y axis"}),E.jsxs("select",{style:n,value:(t==null?void 0:t.y)??"",onChange:o=>r({y:o.target.value||void 0}),children:[E.jsx("option",{value:"",children:"Auto"}),e.map(o=>E.jsx("option",{value:o,children:o},o))]})]}),E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[E.jsx("span",{style:T,children:"Color"}),E.jsxs("select",{style:n,value:(t==null?void 0:t.color)??"",onChange:o=>r({color:o.target.value||void 0}),children:[E.jsx("option",{value:"",children:"None"}),e.map(o=>E.jsx("option",{value:o,children:o},o))]})]}),E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,flex:1,minWidth:150},children:[E.jsx("span",{style:T,children:"Title"}),E.jsx("input",{style:{...n,fontFamily:s.font},value:(t==null?void 0:t.title)??"",placeholder:"Chart title",onChange:o=>r({title:o.target.value||void 0})})]})]})}function kn({themeMode:e,onPick:t,autoFocus:r=!0,compact:s=!0}){const n=ne[e],[T,o]=l.useState([]),[i,S]=l.useState(!0),[a,A]=l.useState(""),[R,N]=l.useState(""),[I,c]=l.useState(""),_=l.useRef(null);l.useEffect(()=>{let x=!1;return S(!0),q.getBlockLibrary().then(M=>{x||o(M.blocks)}).finally(()=>{x||S(!1)}),()=>{x=!0}},[]),l.useEffect(()=>{if(r){const x=setTimeout(()=>{var M;return(M=_.current)==null?void 0:M.focus()},30);return()=>clearTimeout(x)}},[r]);const O=l.useMemo(()=>[...new Set(T.map(x=>x.domain))].sort(),[T]),C=l.useMemo(()=>[...new Set(T.map(x=>x.status))].sort(),[T]),L=l.useMemo(()=>T.filter(x=>{if(a){const M=a.toLowerCase();if(![x.name,x.description,x.llmContext,x.domain,x.status,x.owner,...x.tags??[]].filter(Boolean).join(" ").toLowerCase().includes(M))return!1}return!(R&&x.domain!==R||I&&x.status!==I)}).sort((x,M)=>+(M.status==="certified")-+(x.status==="certified")||x.name.localeCompare(M.name)),[T,a,R,I]),f={background:n.inputBg,border:`1px solid ${n.inputBorder}`,borderRadius:4,color:n.textPrimary,fontSize:11,fontFamily:n.font,padding:"4px 6px",outline:"none"};return E.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6,minWidth:s?340:void 0},children:[E.jsxs("div",{style:{display:"flex",gap:4,alignItems:"center"},children:[E.jsx("input",{ref:_,value:a,onChange:x=>A(x.target.value),placeholder:"Search question, block, domain, owner, or tag…","aria-label":"Search existing blocks",style:{...f,flex:1,padding:"6px 8px"}}),E.jsxs("select",{"aria-label":"Filter blocks by domain",value:R,onChange:x=>N(x.target.value),style:f,children:[E.jsx("option",{value:"",children:"All domains"}),O.map(x=>E.jsx("option",{value:x,children:x},x))]}),E.jsxs("select",{"aria-label":"Filter blocks by status",value:I,onChange:x=>c(x.target.value),style:f,children:[E.jsx("option",{value:"",children:"Any"}),C.map(x=>E.jsx("option",{value:x,children:x},x))]})]}),!i&&E.jsxs("div",{style:{fontSize:10,color:n.textMuted,fontFamily:n.font,padding:"0 2px"},children:[L.length," reusable ",L.length===1?"block":"blocks"," · certified results are listed first"]}),E.jsx("div",{style:{maxHeight:s?220:420,overflowY:"auto",display:"flex",flexDirection:"column",border:`1px solid ${n.cellBorder}`,borderRadius:4},children:i?E.jsx(sn,{t:n,children:"Loading blocks..."}):L.length===0?E.jsx(sn,{t:n,children:T.length===0?"No blocks yet. Save a cell as a block to get started.":"No blocks match your filters."}):L.map(x=>E.jsx(GS,{block:x,onClick:()=>t(x),t:n,compact:s},x.path))})]})}function sn({children:e,t}){return E.jsx("div",{style:{padding:16,textAlign:"center",fontSize:11,color:t.textMuted,fontFamily:t.font,fontStyle:"italic"},children:e})}function GS({block:e,onClick:t,t:r,compact:s}){const[n,T]=l.useState(!1),o=xs[e.status]??r.textMuted;return E.jsxs("button",{onClick:t,onMouseEnter:()=>T(!0),onMouseLeave:()=>T(!1),style:{background:n?`${r.accent}14`:"transparent",border:"none",borderBottom:`1px solid ${r.cellBorder}`,cursor:"pointer",padding:s?"8px 10px":"10px 12px",textAlign:"left",fontFamily:r.font},children:[E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:3},children:[E.jsx("span",{style:{fontSize:12,fontWeight:600,color:r.textPrimary},children:e.name}),E.jsx("span",{style:{fontSize:9,fontWeight:600,color:o,background:`${o}18`,padding:"1px 6px",borderRadius:4,textTransform:"uppercase",letterSpacing:"0.04em"},children:e.status})]}),e.description&&E.jsx("div",{style:{fontSize:11,color:r.textMuted,lineHeight:1.3,marginBottom:3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.description}),E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,fontSize:10,color:r.textMuted},children:[E.jsx("span",{style:{background:r.pillBg,padding:"1px 6px",borderRadius:4},children:e.domain||"no domain"}),e.owner&&E.jsxs("span",{children:["by ",e.owner]}),(e.tags??[]).slice(0,s?2:4).map(i=>E.jsxs("span",{style:{background:r.pillBg,padding:"1px 6px",borderRadius:4},children:["#",i]},i))]})]})}const BS=[{type:"block",label:"Block",Icon:ZE,color:"#6b8afd"},{type:"ai_sql",label:"Ask AI",Icon:je,color:"#f0883e"},{type:"dql",label:"DQL",Icon:ZE,color:"#6b8afd"},{type:"sql",label:"SQL",Icon:Ns,color:"#3b8ef0"},{type:"import_data",label:"Import",Icon:Ks,color:"#5dd1c8"},{type:"markdown",label:"Note",Icon:In,color:"#2fb97a"},{type:"param",label:"Input",Icon:cs,color:"#9aa0ae"}];function Tn({afterId:e}){const{state:t,dispatch:r}=le(),s=ne[t.themeMode],[n,T]=l.useState(!1),[o,i]=l.useState(!1),[S,a]=l.useState(!1),[A,R]=l.useState(!1),N=l.useRef(null);l.useEffect(()=>{if(!o)return;function O(C){N.current&&!N.current.contains(C.target)&&(i(!1),a(!1))}return document.addEventListener("mousedown",O),()=>document.removeEventListener("mousedown",O)},[o]);const I=()=>{i(!1),a(!1)},c=O=>{const C=ie(O);r({type:"ADD_CELL",cell:C,afterId:e}),I()},_=async O=>{try{await q.openBlockStudio(O.path)}catch(f){console.error("Failed to bind block cell",f),window.alert(`Couldn't load block ${O.path}. Check the console for details.`),I();return}const C=`@block(${JSON.stringify(O.name)})`,L=ie("dql",C);L.name=O.name,L.blockBinding={path:O.path,state:"bound",originalContent:C},r({type:"ADD_CELL",cell:L,afterId:e}),I()};return E.jsxs("div",{ref:N,"data-testid":"add-cell-bar",onDragOver:O=>{O.dataTransfer.types.includes(er)&&(O.preventDefault(),R(!0))},onDragLeave:()=>R(!1),onDrop:O=>{const C=ds(O.dataTransfer.getData(er));if(!C)return;O.preventDefault(),R(!1);const L=ie("sql",C.reference);r({type:"ADD_CELL",cell:L,afterId:e}),q.trackUsage(C.name),window.dispatchEvent(new CustomEvent("dql:semantic-used",{detail:{name:C.name}}))},onMouseEnter:()=>T(!0),onMouseLeave:()=>{T(!1),R(!1)},onClick:O=>{O.target===O.currentTarget&&(T(!0),i(!0))},style:{position:"relative",height:28,display:"flex",alignItems:"center",justifyContent:"center",cursor:o?"default":"pointer"},children:[(n||o||A)&&E.jsxs("button",{"aria-label":"Add cell",onClick:()=>i(O=>!O),style:{position:"relative",zIndex:2,height:22,padding:"0 10px",borderRadius:11,border:`1px solid ${A?s.accent:s.cellBorderActive}`,background:A?`${s.accent}28`:`${s.accent}18`,color:s.accent,cursor:"pointer",fontSize:12,fontFamily:s.font,fontWeight:500,display:"flex",alignItems:"center",gap:4,transition:"background 0.15s"},children:[E.jsx("span",{style:{fontSize:14,lineHeight:1,marginTop:-1},children:"+"}),"Add cell"]}),o&&E.jsxs("div",{style:{position:"absolute",top:26,left:"50%",transform:"translateX(-50%)",zIndex:100,background:s.modalBg,border:`1px solid ${s.cellBorder}`,borderRadius:10,boxShadow:"0 12px 32px rgba(0,0,0,0.35)",padding:8,display:"flex",flexDirection:"column",gap:8,width:S?"min(760px, calc(100vw - 48px))":"max-content",maxWidth:"calc(100vw - 48px)"},children:[E.jsx("div",{style:{display:"flex",gap:4,flexWrap:"nowrap",alignItems:"center",justifyContent:"flex-start",overflowX:"auto",overflowY:"hidden",maxWidth:"100%",paddingBottom:1},children:BS.map(O=>E.jsx(HS,{entry:O,active:O.type==="block"&&S,onClick:()=>{if(O.type==="block"){a(C=>!C);return}if(O.type==="ai_sql"){window.dispatchEvent(new CustomEvent("dql:open-notebook-ai",{detail:{afterId:e}})),I();return}if(O.type==="import_data"){window.dispatchEvent(new CustomEvent("dql:open-dataset-import",{detail:{afterId:e}})),I();return}c(O.type)},t:s},O.type))}),S&&E.jsx("div",{style:{padding:"6px 2px 2px",borderTop:`1px solid ${s.cellBorder}`},children:E.jsx(kn,{themeMode:t.themeMode,onPick:O=>void _(O)})})]})]})}function HS({entry:e,onClick:t,t:r,active:s=!1}){const[n,T]=l.useState(!1),o=s||n,i=e.Icon;return E.jsxs("button",{"aria-label":e.type==="ai_sql"?"Ask AI":e.type==="import_data"?"Import data":`Add ${e.label} cell`,"data-testid":`add-cell-${e.type}`,onClick:t,onMouseEnter:()=>T(!0),onMouseLeave:()=>T(!1),title:e.label,style:{background:o?`${e.color}18`:"transparent",border:`1px solid ${o?e.color:r.cellBorder}`,borderRadius:8,cursor:"pointer",color:o?e.color:r.textSecondary,fontSize:11,fontFamily:r.font,fontWeight:600,padding:"0 11px",width:"auto",minWidth:"max-content",height:40,flex:"0 0 auto",display:"flex",flexDirection:"row",alignItems:"center",justifyContent:"center",gap:7,transition:"all 0.12s"},children:[E.jsx("span",{style:{color:e.color,display:"flex",alignItems:"center",justifyContent:"center"},children:E.jsx(i,{size:16,strokeWidth:1.85})}),E.jsx("span",{style:{whiteSpace:"nowrap",letterSpacing:0},children:e.label})]})}function bS({registerCellRef:e,onStartResearch:t,researchRefreshKey:r}){var b;const{state:s,dispatch:n}=le(),{executeCell:T}=Nn(),o=ne[s.themeMode],i=l.useMemo(()=>s.cells.map(qs).filter(m=>!!m),[s.cells]),S=l.useMemo(()=>new Map(i.map(m=>[m.id,m])),[i]),[a,A]=l.useState(new Map),[R,N]=l.useState(null),I=l.useRef(0),[c,_]=l.useState(null),[O,C]=l.useState(null);l.useCallback(m=>{N(m)},[]),l.useEffect(()=>{const m=h=>{var y;const G=(y=h.detail)==null?void 0:y.cellId;G&&(N(G),window.requestAnimationFrame(()=>{const V=Array.from(document.querySelectorAll("[data-cell-id]")).find(j=>j.dataset.cellId===G);V==null||V.scrollIntoView({behavior:"smooth",block:"center"})}))};return window.addEventListener(nr,m),()=>window.removeEventListener(nr,m)},[]),l.useEffect(()=>{R&&s.inspectorOpen&&n({type:"SET_INSPECTOR_CONTEXT",context:{kind:"cell",cellId:R}})},[R,s.inspectorOpen,n]),l.useEffect(()=>{var j;const m=(j=s.activeFile)==null?void 0:j.path;if(!m||i.length===0){A(new Map);return}let h=!1,G;const y=()=>{q.listNotebookResearchSourceCoverage({path:m,sourceCellIds:i.map(W=>W.id),sourceCells:i.map(W=>({id:W.id,name:W.name,type:W.type,fingerprint:W.fingerprint})),limit:1e4}).then(W=>{if(h)return;const g=new Map;for(const Z of W.runs)Z.sourceCellId&&!g.has(Z.sourceCellId)&&g.set(Z.sourceCellId,Z);A(g)}).catch(()=>{h||A(new Map)})};y();const V=W=>{const g=W.detail;g!=null&&g.notebookPath&&g.notebookPath!==m||y()};return window.addEventListener(rt,V),G=window.setInterval(y,15e3),()=>{h=!0,window.removeEventListener(rt,V),G&&window.clearInterval(G)}},[r,i,(b=s.activeFile)==null?void 0:b.path]),l.useEffect(()=>{function m(h){var j;if(!R)return;const G=h.target;if(G.tagName==="TEXTAREA"||G.tagName==="INPUT"||G.isContentEditable||G.closest(".cm-editor")){N(null);return}const y=s.cells,V=y.findIndex(W=>W.id===R);if(V!==-1)switch(h.key){case"a":{h.preventDefault();const W=ie("sql");if(V===0)n({type:"ADD_CELL",cell:W,afterId:y[0].id}),n({type:"MOVE_CELL",id:W.id,direction:"up"});else{const g=y[V-1].id;n({type:"ADD_CELL",cell:W,afterId:g})}N(W.id);break}case"b":{h.preventDefault();const W=ie("sql");n({type:"ADD_CELL",cell:W,afterId:R}),N(W.id);break}case"d":{h.preventDefault();const W=Date.now();if(W-I.current<=500){if(n({type:"DELETE_CELL",id:R}),y.length>1){const g=V>0?V-1:1;N(((j=y[g])==null?void 0:j.id)??null)}else N(null);I.current=0}else I.current=W;break}case"Enter":{if(h.shiftKey){h.preventDefault();const W=y[V];W&&W.type!=="markdown"&&T(W.id)}break}}}return document.addEventListener("keydown",m),()=>document.removeEventListener("keydown",m)},[R,s.cells,n,T]),l.useEffect(()=>{function m(h){h.target.closest("[data-cell-id]")||N(null)}return document.addEventListener("mousedown",m),()=>document.removeEventListener("mousedown",m)},[]);const L=l.useCallback((m,h)=>{_(h),m.dataTransfer.effectAllowed="move",m.dataTransfer.setData("text/plain",String(h));const G=m.currentTarget;setTimeout(()=>{G.style.opacity="0.4"},0)},[]),f=l.useCallback(m=>{m.currentTarget.style.opacity="1",_(null),C(null)},[]),x=l.useCallback((m,h)=>{m.preventDefault(),m.dataTransfer.dropEffect="move",C(h)},[]),M=l.useCallback((m,h)=>{m.preventDefault(),c!==null&&c!==h&&n({type:"REORDER_CELL",fromIndex:c,toIndex:h}),_(null),C(null)},[c,n]);return s.cells.length===0?E.jsx("div",{style:{maxWidth:1200,margin:"0 auto",padding:"0 24px",display:"flex",flexDirection:"column"},children:E.jsx(FS,{t:o})}):E.jsxs("div",{style:{maxWidth:1200,margin:"0 auto",padding:"0 24px",display:"flex",flexDirection:"column"},children:[s.appMode==="studio"&&E.jsx(Tn,{afterId:void 0}),s.cells.map((m,h)=>E.jsxs(ME.Fragment,{children:[E.jsxs("div",{ref:G=>e(m.id,G),"data-cell-id":m.id,draggable:s.appMode==="studio",onDragStart:s.appMode==="studio"?G=>L(G,h):void 0,onDragEnd:s.appMode==="studio"?f:void 0,onDragOver:s.appMode==="studio"?G=>x(G,h):void 0,onDrop:s.appMode==="studio"?G=>M(G,h):void 0,onClick:G=>{const y=G.target;!y.closest(".cm-editor")&&!y.closest("textarea")&&!y.closest("input")&&N(m.id)},style:{outline:R===m.id?`2px solid ${o.accent}40`:"none",outlineOffset:2,borderRadius:10,transition:"outline 0.1s, transform 0.15s",position:"relative",...O===h&&c!==null&&c!==h?{borderTop:`2px solid ${o.accent}`}:{}},children:[E.jsx("div",{style:{position:"absolute",left:-20,top:8,width:16,height:24,display:"flex",alignItems:"center",justifyContent:"center",cursor:"grab",color:o.textMuted,opacity:0,transition:"opacity 0.15s",zIndex:5},className:"drag-handle",children:E.jsxs("svg",{width:"8",height:"14",viewBox:"0 0 8 14",fill:"currentColor",children:[E.jsx("circle",{cx:"2",cy:"2",r:"1.2"}),E.jsx("circle",{cx:"6",cy:"2",r:"1.2"}),E.jsx("circle",{cx:"2",cy:"7",r:"1.2"}),E.jsx("circle",{cx:"6",cy:"7",r:"1.2"}),E.jsx("circle",{cx:"2",cy:"12",r:"1.2"}),E.jsx("circle",{cx:"6",cy:"12",r:"1.2"})]})}),E.jsx(DS,{cell:m,index:h,onStartResearch:t,researchState:zs(S.get(m.id)??null,a.get(m.id)??null,Qs(a.get(m.id)??null,S))})]}),s.appMode==="studio"&&E.jsx(Tn,{afterId:m.id})]},m.id)),E.jsx("style",{children:`
186
+ [data-cell-id]:hover .drag-handle { opacity: 0.5 !important; }
187
+ [data-cell-id]:hover .drag-handle:hover { opacity: 1 !important; }
188
+ `})]})}function FS({t:e}){const{state:t,dispatch:r}=le(),[s,n]=l.useState(!1),T=async i=>{try{await q.openBlockStudio(i.path)}catch(A){console.error("Failed to bind block cell",A),window.alert(`Couldn't load block ${i.path}.`);return}const S=`@block(${JSON.stringify(i.name)})`,a=ie("dql",S);a.name=i.name,a.blockBinding={path:i.path,state:"bound",originalContent:S},r({type:"ADD_CELL",cell:a}),n(!1)},o={minHeight:58,border:`1px solid ${e.cellBorder}`,background:e.cellBg,color:e.textPrimary,borderRadius:8,padding:"9px 11px",textAlign:"left",cursor:"pointer",fontFamily:e.font};return E.jsxs("div",{style:{display:"flex",flexDirection:"column",padding:"28px 0 56px",gap:16,color:e.textSecondary,width:"min(760px, 100%)",margin:"0 auto"},children:[E.jsxs("div",{children:[E.jsx("div",{style:{font:`750 18px ${e.font}`,color:e.textPrimary},children:"What are you researching?"}),E.jsx("div",{style:{marginTop:4,font:`12px/1.5 ${e.font}`,color:e.textMuted},children:"Start from trusted work when it exists, or explore directly with DQL, AI, and local data."})]}),E.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:8},children:[E.jsxs("button",{type:"button",style:{...o,borderColor:e.accent},onClick:()=>n(i=>!i),children:[E.jsx("strong",{style:{display:"block",color:e.accent},children:"Use existing block"}),E.jsx("span",{style:{display:"block",color:e.textMuted,fontSize:10.5,marginTop:3},children:"Search certified and draft reusable analysis."})]}),E.jsxs("button",{type:"button",style:o,onClick:()=>window.dispatchEvent(new CustomEvent("dql:open-notebook-ai")),children:[E.jsx("strong",{style:{display:"block"},children:"Ask Notebook AI"}),E.jsx("span",{style:{display:"block",color:e.textMuted,fontSize:10.5,marginTop:3},children:"Research blocks, semantic models, dbt, and data."})]}),E.jsxs("button",{type:"button",style:o,onClick:()=>r({type:"ADD_CELL",cell:ie("dql")}),children:[E.jsx("strong",{style:{display:"block"},children:"Create DQL query"}),E.jsx("span",{style:{display:"block",color:e.textMuted,fontSize:10.5,marginTop:3},children:"Build a governed or exploratory query."})]}),E.jsxs("button",{type:"button",style:o,onClick:()=>window.dispatchEvent(new CustomEvent("dql:open-dataset-import")),children:[E.jsx("strong",{style:{display:"block"},children:"Import local data"}),E.jsx("span",{style:{display:"block",color:e.textMuted,fontSize:10.5,marginTop:3},children:"Bring CSV, Parquet, or JSON into the research."})]})]}),s&&E.jsx("div",{style:{border:`1px solid ${e.cellBorder}`,borderRadius:10,padding:10,background:e.cellBg},children:E.jsx(kn,{themeMode:t.themeMode,compact:!1,onPick:i=>void T(i)})}),E.jsx("button",{type:"button",onClick:()=>r({type:"ADD_CELL",cell:ie("markdown",`## Research note
189
+
190
+ `)}),style:{alignSelf:"flex-start",border:0,background:"transparent",color:e.accent,cursor:"pointer",font:`700 11px ${e.font}`,padding:0},children:"+ Add a research note instead"})]})}function YS(){const{state:e}=le(),t=ne[e.themeMode],r=e.cells.filter(s=>s.type==="markdown"||s.result&&s.status!=="running"||s.error);return E.jsx("div",{style:{flex:1,overflow:"auto",background:t.appBg,padding:"32px 24px 48px"},children:E.jsxs("div",{style:{maxWidth:1200,margin:"0 auto",display:"flex",flexDirection:"column",gap:24},children:[E.jsxs("div",{style:{textAlign:"center",marginBottom:8},children:[E.jsx("h1",{style:{fontSize:28,fontWeight:700,color:t.textPrimary,fontFamily:t.font,letterSpacing:"-0.3px",margin:0},children:e.notebookTitle||"Untitled"}),E.jsxs("p",{style:{fontSize:12,color:t.textMuted,fontFamily:t.font,marginTop:6},children:[e.cells.filter(s=>s.result).length," results",e.activeFile?` · ${e.activeFile.path}`:""]})]}),r.length===0?E.jsx("div",{style:{textAlign:"center",padding:48,color:t.textMuted,fontSize:14,fontFamily:t.font},children:"No outputs to display. Run some cells first, then switch to dashboard mode."}):r.map(s=>E.jsx(vS,{cell:s},s.id))]})})}function vS({cell:e}){const{state:t}=le(),r=ne[t.themeMode];if(e.type==="markdown")return E.jsx("div",{style:{background:r.cellBg,borderRadius:10,border:`1px solid ${r.cellBorder}`,padding:"16px 24px",fontSize:14,lineHeight:1.7,fontFamily:r.font,color:r.textSecondary,whiteSpace:"pre-wrap"},dangerouslySetInnerHTML:{__html:WS(e.content,r)}});if(e.error)return E.jsxs("div",{style:{background:r.cellBg,borderRadius:10,border:`1px solid ${r.error}40`,padding:"16px 24px"},children:[e.name&&E.jsx(VS,{name:e.name,t:r}),E.jsx("div",{style:{color:r.error,fontSize:12,fontFamily:r.fontMono,whiteSpace:"pre-wrap"},children:e.error})]});if(!e.result)return null;const s=NE(e.result,e.chartConfig),n=s!=="table";return E.jsxs("div",{style:{background:r.cellBg,borderRadius:10,border:`1px solid ${r.cellBorder}`,overflow:"hidden"},children:[E.jsxs("div",{style:{padding:"10px 20px",borderBottom:`1px solid ${r.cellBorder}`,display:"flex",alignItems:"center",gap:8},children:[e.name?E.jsx("span",{style:{fontSize:13,fontWeight:600,color:r.textPrimary,fontFamily:r.font,flex:1},children:e.name}):E.jsx("span",{style:{flex:1}}),E.jsxs("span",{style:{fontSize:10,color:r.textMuted,fontFamily:r.fontMono},children:[(()=>{const T=e.result.rowCount??e.result.rows.length;return`${T} ${T===1?"row":"rows"}`})(),e.result.executionTime!=null&&E.jsxs(E.Fragment,{children:[" · ",e.result.executionTime<1e3?`${Number(e.result.executionTime.toFixed(1))}ms`:`${(e.result.executionTime/1e3).toFixed(1)}s`]})]})]}),E.jsx("div",{style:{padding:n?"16px 20px":0},children:n?mE(s,e.result,t.themeMode,e.chartConfig):E.jsx(fE,{result:e.result,themeMode:t.themeMode})})]})}function VS({name:e,t}){return E.jsx("div",{style:{fontSize:13,fontWeight:600,color:t.textPrimary,fontFamily:t.font,marginBottom:8},children:e})}function WS(e,t){const r=s=>s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");return e.split(`
191
+ `).map(s=>{const n=s.trim(),T=n.match(/^(#{1,6})\s+(.+)$/);if(T){const i=T[1].length;return`<div style="font-size:${["28px","22px","18px","16px","14px","13px"][i-1]};font-weight:${i<=2?700:600};color:${t.textPrimary};margin:8px 0 4px">${r(T[2])}</div>`}if(/^[-*_]{3,}$/.test(n))return`<hr style="border:none;border-top:1px solid ${t.cellBorder};margin:8px 0"/>`;if(!n)return'<div style="height:6px"></div>';let o=r(n);return o=o.replace(/\*{2}(.+?)\*{2}/g,"<strong>$1</strong>"),o=o.replace(/\*(.+?)\*/g,"<em>$1</em>"),o=o.replace(/`(.+?)`/g,`<code style="background:${t.editorBg};padding:1px 4px;border-radius:3px;font-size:0.9em">$1</code>`),`<div style="margin-bottom:4px">${o}</div>`}).join("")}const Kn=[{value:"draft",label:"Draft",dot:"#f59e0b"},{value:"in_review",label:"In review",dot:"#5b8def"},{value:"certified",label:"Certified",dot:"#4ade80"},{value:"deprecated",label:"Deprecated",dot:"#ef4444"}];function wS(e){return e?Kn.find(t=>t.value===e)??{value:e,label:e,dot:"#888"}:null}function XS(){const{state:e,dispatch:t}=le(),r=ne[e.themeMode],[s,n]=l.useState(null),T=l.useRef(null);if(l.useEffect(()=>{if(!s)return;const I=_=>{T.current&&!T.current.contains(_.target)&&n(null)},c=_=>{_.key==="Escape"&&n(null)};return document.addEventListener("mousedown",I),document.addEventListener("keydown",c),()=>{document.removeEventListener("mousedown",I),document.removeEventListener("keydown",c)}},[s]),!e.activeFile)return null;const o=e.activeFile.name.replace(/\.dqlnb$/,""),i=e.notebookMetadata,S=I=>{t({type:"UPDATE_NOTEBOOK_METADATA",updates:I})},a=wS(i.status),A=(i.categories??[]).length>0,R=!!i.description,N=!!i.projectFilter;return E.jsxs("div",{ref:T,style:{maxWidth:1080,margin:"0 auto",padding:"32px 48px 8px",display:"flex",flexDirection:"column",gap:12},children:[E.jsx("div",{style:{fontSize:22,fontWeight:650,color:r.textPrimary,fontFamily:r.font,letterSpacing:"-0.01em"},children:o}),E.jsxs("div",{style:{display:"grid",gap:5},children:[E.jsx("label",{htmlFor:"notebook-purpose",style:{font:`700 10px ${r.font}`,color:r.textMuted,textTransform:"uppercase",letterSpacing:".06em"},children:"Research purpose"}),E.jsx("textarea",{id:"notebook-purpose","aria-label":"Notebook research purpose",value:i.purpose??"",onChange:I=>S({purpose:I.target.value||void 0}),placeholder:"What business question or decision should this notebook answer? Include scope and important assumptions.",rows:2,style:{width:"100%",boxSizing:"border-box",resize:"vertical",border:`1px solid ${r.inputBorder}`,background:r.inputBg,color:r.textPrimary,borderRadius:7,padding:"8px 10px",font:`12px/1.45 ${r.font}`}})]}),E.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:6,alignItems:"center",position:"relative"},children:[E.jsx(Ct,{t:r,active:s==="status",filled:!!a,icon:E.jsx("span",{style:{color:(a==null?void 0:a.dot)??r.textMuted,fontSize:12},children:"●"}),label:(a==null?void 0:a.label)??"Add status",onClick:()=>n(s==="status"?null:"status"),children:s==="status"&&E.jsxs(Lt,{t:r,children:[Kn.map(I=>E.jsxs("button",{onClick:()=>{S({status:I.value}),n(null)},style:Rn(r,i.status===I.value),children:[E.jsx("span",{style:{color:I.dot,fontSize:12},children:"●"}),E.jsx("span",{children:I.label})]},I.value)),i.status&&E.jsx("button",{onClick:()=>{S({status:void 0}),n(null)},style:{...Rn(r,!1),color:r.textMuted},children:E.jsx("span",{children:"Clear"})})]})}),E.jsx(Ct,{t:r,active:s==="categories",filled:A,icon:E.jsx("span",{style:{fontFamily:r.fontMono,fontSize:10},children:"#"}),label:A?(i.categories??[]).slice(0,3).join(", ")+((i.categories??[]).length>3?"…":""):"Add categories",onClick:()=>n(s==="categories"?null:"categories"),children:s==="categories"&&E.jsx(Lt,{t:r,width:260,children:E.jsx($S,{t:r,value:i.categories??[],onChange:I=>S({categories:I.length?I:void 0})})})}),E.jsx(Ct,{t:r,active:s==="description",filled:R,icon:E.jsx("span",{style:{fontFamily:r.fontMono,fontSize:10},children:"✎"}),label:R?on(i.description,48):"Add context",onClick:()=>n(s==="description"?null:"description"),children:s==="description"&&E.jsx(Lt,{t:r,width:320,children:E.jsx(an,{multiline:!0,initial:i.description??"",onCommit:I=>S({description:I||void 0}),placeholder:"What does this notebook answer?",style:jS(r)})})}),E.jsx(Ct,{t:r,active:s==="projectFilter",filled:N,icon:E.jsx("span",{style:{fontFamily:r.fontMono,fontSize:10},children:"⌕"}),label:N?on(i.projectFilter,32):"Add scope",onClick:()=>n(s==="projectFilter"?null:"projectFilter"),children:s==="projectFilter"&&E.jsx(Lt,{t:r,width:280,children:E.jsx(an,{initial:i.projectFilter??"",onCommit:I=>S({projectFilter:I||void 0}),placeholder:"e.g. team:analytics",style:qn(r)})})})]})]})}function on(e,t){return e.length>t?`${e.slice(0,t-1)}…`:e}function an({initial:e,onCommit:t,multiline:r,placeholder:s,style:n}){const[T,o]=l.useState(e),i=l.useRef(T);i.current=T;const S=()=>{const a=i.current.trim();a!==e.trim()&&t(a)};return l.useEffect(()=>()=>S(),[]),r?E.jsx("textarea",{autoFocus:!0,value:T,onChange:a=>o(a.target.value),onBlur:S,placeholder:s,rows:4,style:n}):E.jsx("input",{autoFocus:!0,value:T,onChange:a=>o(a.target.value),onBlur:S,onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),a.target.blur())},placeholder:s,style:n})}function Ct({t:e,active:t,filled:r,icon:s,label:n,onClick:T,children:o}){return E.jsxs("div",{style:{position:"relative"},children:[E.jsxs("button",{className:"dql-meta-pill",onClick:T,style:{display:"inline-flex",alignItems:"center",gap:6,padding:"3px 9px",borderRadius:12,border:r?`1px solid ${e.cellBorder}`:`1px dashed ${e.cellBorder}`,background:t?`${e.accent}12`:r?e.pillBg:"transparent",color:r?e.textPrimary:e.textMuted,fontSize:11,fontFamily:e.font,cursor:"pointer",transition:"background-color 80ms, border-color 80ms","--dql-pill-hover-bg":`${e.accent}10`,"--dql-pill-hover-border":e.textMuted},children:[s,E.jsx("span",{children:n})]}),o]})}function Lt({t:e,width:t=200,children:r}){return E.jsx("div",{style:{position:"absolute",top:"calc(100% + 6px)",left:0,zIndex:20,width:t,background:e.modalBg,border:`1px solid ${e.cellBorder}`,borderRadius:6,padding:6,boxShadow:"0 8px 24px rgba(0,0,0,0.35)",display:"flex",flexDirection:"column",gap:4},children:r})}function Rn(e,t){return{display:"inline-flex",alignItems:"center",gap:8,padding:"6px 8px",borderRadius:4,border:"none",background:t?`${e.accent}18`:"transparent",color:e.textPrimary,fontSize:12,fontFamily:e.font,textAlign:"left",cursor:"pointer"}}function jS(e){return{width:"100%",background:e.editorBg,border:`1px solid ${e.cellBorder}`,borderRadius:4,color:e.textPrimary,fontSize:12,fontFamily:e.font,padding:8,outline:"none",resize:"vertical"}}function qn(e){return{width:"100%",background:e.editorBg,border:`1px solid ${e.cellBorder}`,borderRadius:4,color:e.textPrimary,fontSize:12,fontFamily:e.fontMono,padding:"6px 8px",outline:"none"}}function $S({t:e,value:t,onChange:r}){const[s,n]=l.useState(""),T=()=>{const o=s.trim();if(o){if(t.includes(o)){n("");return}r([...t,o]),n("")}};return E.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[t.length>0&&E.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:t.map(o=>E.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:4,padding:"2px 6px",borderRadius:10,background:e.pillBg,border:`1px solid ${e.cellBorder}`,color:e.textPrimary,fontSize:11,fontFamily:e.font},children:[o,E.jsx("button",{onClick:()=>r(t.filter(i=>i!==o)),style:{background:"transparent",border:"none",color:e.textMuted,cursor:"pointer",padding:0,fontSize:12,lineHeight:1},"aria-label":`Remove ${o}`,children:"×"})]},o))}),E.jsx("input",{autoFocus:!0,value:s,onChange:o=>n(o.target.value),onKeyDown:o=>{o.key==="Enter"||o.key===","?(o.preventDefault(),T()):o.key==="Backspace"&&!s&&t.length>0&&r(t.slice(0,-1))},placeholder:"Add category, press Enter",style:qn(e)})]})}function kS({afterId:e,onClose:t}){const{state:r,dispatch:s}=le(),n=ne[r.themeMode],[T,o]=l.useState("upload"),[i,S]=l.useState("local"),[a,A]=l.useState(null),[R,N]=l.useState(""),[I,c]=l.useState(!0),[_,O]=l.useState(""),[C,L]=l.useState(""),[f,x]=l.useState(""),[M,b]=l.useState(""),[m,h]=l.useState([]),[G,y]=l.useState(null),[V,j]=l.useState(!1),[W,g]=l.useState(null),Z=l.useRef(null),Q=async()=>{const d=await q.getDatasets();h(d.datasets),window.dispatchEvent(new CustomEvent("dql:datasets-changed",{detail:{count:d.datasets.length}}))};l.useEffect(()=>{Q().catch(()=>{})},[]);const Y=T==="upload"?!!a:!!R.trim(),J=d=>{const B=ie("sql",`SELECT *
192
+ FROM "${d.alias.replace(/"/g,'""')}"
193
+ LIMIT 100`);B.name=`${d.alias}_query`,B.executionTarget={target:"local"},B.datasetRefs=[{id:d.id,alias:d.alias,role:d.storageMode==="staged"?"staged":"source",fingerprint:d.fileFingerprint}],s({type:"ADD_CELL",cell:B,afterId:e}),s({type:"SET_SCHEMA",tables:[...r.schemaTables.filter(F=>F.name!==d.alias),{name:d.alias,path:d.sourcePath,source:"file",objectType:"dataset",datasetId:d.id,fileFingerprint:d.fileFingerprint,storageMode:d.storageMode,refreshedAt:d.refreshedAt,trustState:d.trustState,columns:d.profile.columns.map(F=>({name:F.name,type:F.type}))}]}),t()},ae=d=>{s({type:"SET_SCHEMA",tables:[...r.schemaTables.filter(B=>B.name!==d.alias),{name:d.alias,path:d.sourcePath,source:"file",objectType:d.storageMode==="staged"?"staged_dataset":"dataset",datasetId:d.id,fileFingerprint:d.fileFingerprint,storageMode:d.storageMode,refreshedAt:d.refreshedAt,trustState:d.trustState,columns:d.profile.columns.map(B=>({name:B.name,type:B.type}))}]})},Ie=async()=>{if(Y){j(!0),g(null);try{const d=await q.importDataset({filename:a==null?void 0:a.name,file:a??void 0,sourcePath:T==="path"?R.trim():void 0,storageMode:i,link:T==="path"&&i==="local"?I:!1,name:_.trim()||void 0,owner:C.trim()||void 0,description:f.trim()||void 0,tags:M.split(",").map(B=>B.trim()).filter(Boolean)});y(d.dataset),ae(d.dataset),await Q()}catch(d){g(d instanceof Error?d.message:String(d))}finally{j(!1)}}};return E.jsxs("section",{"aria-label":"Import data",style:{margin:"12px 18px 18px",border:`1px solid ${n.cellBorder}`,background:n.cellBg,borderRadius:10,boxShadow:"0 8px 24px rgba(0,0,0,.08)",overflow:"hidden"},children:[E.jsxs("header",{style:{minHeight:44,display:"flex",alignItems:"center",gap:9,padding:"0 14px",borderBottom:`1px solid ${n.cellBorder}`},children:[E.jsx(xt,{size:16,color:n.accent}),E.jsxs("div",{style:{flex:1},children:[E.jsx("div",{style:{color:n.textPrimary,fontSize:13,fontWeight:800},children:"Import data"}),E.jsx("div",{style:{color:n.textMuted,fontSize:10},children:"Create a reusable local dataset for research. CSV freshness is point-in-time."})]}),E.jsx("button",{"aria-label":"Close import data",onClick:t,style:{border:0,background:"transparent",color:n.textMuted,cursor:"pointer"},children:E.jsx(_n,{size:16})})]}),E.jsx("div",{style:{display:"flex",borderBottom:`1px solid ${n.cellBorder}`},children:[["upload",Tr,"Upload CSV"],["path",Ln,"Local path"],["existing",Cs,"Available data"]].map(([d,B,F])=>E.jsxs("button",{onClick:()=>{o(d),y(null),g(null)},style:{flex:1,height:38,border:0,borderBottom:`2px solid ${T===d?n.accent:"transparent"}`,background:T===d?`${n.accent}0d`:"transparent",color:T===d?n.accent:n.textSecondary,cursor:"pointer",font:`700 11px ${n.font}`,display:"inline-flex",justifyContent:"center",alignItems:"center",gap:6},children:[E.jsx(B,{size:13})," ",F]},d))}),T==="existing"?E.jsx(qS,{datasets:m,busy:V,onUse:J,onRefresh:async d=>{j(!0);try{y((await q.refreshDataset(d.id)).dataset),await Q()}finally{j(!1)}},onRename:async d=>{var F;const B=(F=window.prompt("Dataset name",d.name))==null?void 0:F.trim();if(!(!B||B===d.name)){j(!0);try{await q.renameDataset(d.id,B),await Q()}finally{j(!1)}}},onPin:async d=>{j(!0);try{await q.pinDataset(d.id,!d.pinned),await Q()}finally{j(!1)}},onRemove:async d=>{if(window.confirm(`Remove ${d.name}?`)){j(!0);try{await q.removeDataset(d.id),s({type:"SET_SCHEMA",tables:r.schemaTables.filter(B=>B.name!==d.alias)}),await Q()}finally{j(!1)}}},t:n}):G?E.jsx(KS,{dataset:G,onAdd:()=>J(G),onBack:()=>y(null),onUpdateSchema:async d=>{j(!0);try{const B=(await q.updateDatasetSchema(G.id,d)).dataset;y(B),await Q()}finally{j(!1)}},busy:V,t:n}):E.jsxs("div",{style:{padding:14,display:"grid",gap:12},children:[T==="upload"?E.jsxs("div",{children:[E.jsx("input",{ref:Z,type:"file",accept:".csv,text/csv,.parquet,.json,.jsonl,.ndjson",hidden:!0,onChange:d=>{var F;const B=((F=d.target.files)==null?void 0:F[0])??null;A(B),B&&!_&&O(B.name.replace(/\.[^.]+$/,""))}}),E.jsxs("button",{onClick:()=>{var d;return(d=Z.current)==null?void 0:d.click()},style:{width:"100%",minHeight:72,border:`1px dashed ${a?n.accent:n.inputBorder}`,background:a?`${n.accent}0c`:n.inputBg,color:a?n.accent:n.textSecondary,borderRadius:8,cursor:"pointer",font:`600 11px ${n.font}`},children:[E.jsx(Tr,{size:18,style:{display:"block",margin:"0 auto 6px"}}),a?`${a.name} · ${JS(a.size)}`:"Choose a CSV file"]})]}):E.jsxs("label",{style:{display:"grid",gap:5,color:n.textSecondary,fontSize:11},children:["Local file path",E.jsx("input",{value:R,onChange:d=>N(d.target.value),placeholder:"/Users/me/Downloads/customers.csv",style:Be(n)})]}),E.jsxs("div",{style:{display:"grid",gridTemplateColumns:"minmax(160px, 1fr) minmax(160px, 1fr)",gap:10},children:[E.jsxs("label",{style:_t(n),children:["Dataset name",E.jsx("input",{value:_,onChange:d=>O(d.target.value),placeholder:"Customer targets",style:Be(n)})]}),E.jsxs("label",{style:_t(n),children:["Owner (optional)",E.jsx("input",{value:C,onChange:d=>L(d.target.value),placeholder:"analytics",style:Be(n)})]}),E.jsxs("label",{style:_t(n),children:["Description",E.jsx("input",{value:f,onChange:d=>x(d.target.value),placeholder:"What this snapshot represents",style:Be(n)})]}),E.jsxs("label",{style:_t(n),children:["Tags",E.jsx("input",{value:M,onChange:d=>b(d.target.value),placeholder:"forecast, local",style:Be(n)})]})]}),E.jsxs("div",{style:{border:`1px solid ${n.cellBorder}`,borderRadius:7,padding:10},children:[E.jsx("div",{style:{color:n.textSecondary,fontSize:11,fontWeight:800,marginBottom:7},children:"Storage"}),E.jsxs("div",{style:{display:"flex",gap:8},children:[E.jsx(An,{active:i==="local",title:"Local only",description:"Ignored by Git. Best for private or temporary analysis.",onClick:()=>S("local"),t:n}),E.jsx(An,{active:i==="project",title:"Add to project",description:"Copies into data/ and writes data/sources.yml.",onClick:()=>{S("project"),c(!1)},t:n})]}),T==="path"&&i==="local"&&E.jsxs("label",{style:{display:"flex",alignItems:"center",gap:6,marginTop:8,color:n.textMuted,fontSize:10},children:[E.jsx("input",{type:"checkbox",checked:I,onChange:d=>c(d.target.checked)})," ","Link the original file instead of copying it"]})]}),W&&E.jsx("div",{role:"alert",style:{color:n.error,fontSize:11},children:W}),E.jsx("div",{style:{display:"flex",justifyContent:"flex-end"},children:E.jsx("button",{disabled:!Y||V,onClick:()=>void Ie(),style:{border:`1px solid ${n.accent}`,background:n.accent,color:"#fff",borderRadius:6,padding:"7px 13px",cursor:Y&&!V?"pointer":"not-allowed",opacity:Y&&!V?1:.55,font:`700 11px ${n.font}`},children:V?"Profiling…":"Import and profile"})})]})]})}function KS({dataset:e,onAdd:t,onBack:r,onUpdateSchema:s,busy:n,t:T}){const[o,i]=l.useState(e.schemaOverrides??{});return E.jsxs("div",{style:{padding:14,display:"grid",gap:10},children:[E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[E.jsxs("div",{style:{flex:1},children:[E.jsx("div",{style:{color:T.textPrimary,fontSize:13,fontWeight:800},children:e.name}),E.jsxs("div",{style:{color:T.textMuted,font:`10px ${T.fontMono}`},children:[e.alias," · ",e.profile.rowCount.toLocaleString()," rows · refreshed ",new Date(e.refreshedAt).toLocaleString()]})]}),E.jsx("span",{style:{color:e.trustState==="project_controlled"?T.success:T.warning,border:`1px solid ${e.trustState==="project_controlled"?T.success:T.warning}`,borderRadius:999,padding:"2px 7px",fontSize:9,fontWeight:800},children:e.trustState.replace(/_/g," ")})]}),e.profile.warnings.map(S=>E.jsx("div",{style:{color:T.warning,fontSize:10},children:S},S)),E.jsx("div",{style:{overflow:"auto",border:`1px solid ${T.cellBorder}`,borderRadius:7},children:E.jsxs("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:10},children:[E.jsx("thead",{children:E.jsx("tr",{children:["Column","Type (editable)","Nulls in preview","Distinct","Signals"].map(S=>E.jsx("th",{style:{textAlign:"left",padding:6,color:T.textMuted,borderBottom:`1px solid ${T.cellBorder}`},children:S},S))})}),E.jsx("tbody",{children:e.profile.columns.map(S=>{var a;return E.jsxs("tr",{children:[E.jsx("td",{style:Qe(T),children:S.name}),E.jsx("td",{style:Qe(T),children:E.jsxs("select",{value:o[S.name]??S.type,onChange:A=>i(R=>({...R,[S.name]:A.target.value})),style:{...Be(T),padding:"3px 5px",fontSize:9},children:[["VARCHAR","BOOLEAN","BIGINT","DOUBLE","DECIMAL(18,2)","DATE","TIMESTAMP","JSON"].map(A=>E.jsx("option",{value:A,children:A},A)),!["VARCHAR","BOOLEAN","BIGINT","DOUBLE","DECIMAL(18,2)","DATE","TIMESTAMP","JSON"].includes(S.type)&&E.jsx("option",{value:S.type,children:S.type})]})}),E.jsx("td",{style:Qe(T),children:S.nullCount??0}),E.jsx("td",{style:Qe(T),children:S.distinctCount??"—"}),E.jsx("td",{style:Qe(T),children:((a=S.flags)==null?void 0:a.join(", "))||"—"})]},S.name)})})]})}),E.jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:8},children:[E.jsx("button",{onClick:r,style:Sn(T),children:"Import another"}),E.jsxs("div",{style:{display:"flex",gap:7},children:[E.jsx("button",{disabled:n,onClick:()=>void s(o),style:Sn(T),children:n?"Saving…":"Save types"}),E.jsxs("button",{onClick:t,style:Jn(T),children:[E.jsx(us,{size:12})," Add starter query"]})]})]}),E.jsxs("div",{style:{color:T.textMuted,font:`10px ${T.font}`,textAlign:"right"},children:["To combine with warehouse data: run a warehouse Query cell, then choose ",E.jsx("strong",{children:"Combine with local data"})," on its result."]})]})}function qS({datasets:e,busy:t,onUse:r,onRefresh:s,onRename:n,onPin:T,onRemove:o,t:i}){const[S,a]=l.useState(""),A=l.useMemo(()=>e.filter(R=>`${R.name} ${R.alias} ${R.tags.join(" ")}`.toLowerCase().includes(S.toLowerCase())),[e,S]);return E.jsxs("div",{style:{padding:14,display:"grid",gap:8},children:[E.jsx("input",{value:S,onChange:R=>a(R.target.value),placeholder:"Search datasets",style:Be(i)}),A.length===0?E.jsx("div",{style:{padding:24,textAlign:"center",color:i.textMuted,fontSize:11},children:"No imported datasets yet."}):A.map(R=>E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:9,border:`1px solid ${i.cellBorder}`,borderRadius:7,padding:9},children:[E.jsx(xt,{size:14,color:i.accent}),E.jsxs("div",{style:{minWidth:0,flex:1},children:[E.jsxs("div",{style:{color:i.textPrimary,fontSize:11,fontWeight:800},children:[R.name,R.pinned?" · pinned":""]}),E.jsxs("div",{style:{color:i.textMuted,fontSize:9},children:[R.alias," · ",R.profile.rowCount.toLocaleString()," ","rows · ",R.storageMode," ·"," ",new Date(R.refreshedAt).toLocaleString()]})]}),E.jsx("button",{disabled:t,title:"Refresh",onClick:()=>s(R),style:ut(i),children:E.jsx(Ls,{size:12})}),E.jsx("button",{disabled:t,title:"Rename",onClick:()=>n(R),style:ut(i),children:"Aa"}),R.storageMode==="staged"&&E.jsx("button",{disabled:t,title:R.pinned?"Unpin":"Pin",onClick:()=>T(R),style:ut(i),children:R.pinned?"●":"○"}),E.jsx("button",{disabled:t,title:"Remove",onClick:()=>o(R),style:ut(i),children:E.jsx(_s,{size:12})}),E.jsx("button",{onClick:()=>r(R),style:Jn(i),children:"Use"})]},R.id))]})}function An({active:e,title:t,description:r,onClick:s,t:n}){return E.jsxs("button",{onClick:s,style:{flex:1,textAlign:"left",border:`1px solid ${e?n.accent:n.cellBorder}`,background:e?`${n.accent}0c`:"transparent",borderRadius:6,padding:8,cursor:"pointer"},children:[E.jsx("div",{style:{color:e?n.accent:n.textPrimary,fontSize:10,fontWeight:800},children:t}),E.jsx("div",{style:{color:n.textMuted,fontSize:9,marginTop:3},children:r})]})}function _t(e){return{display:"grid",gap:5,color:e.textSecondary,fontSize:10}}function Be(e){return{background:e.inputBg,color:e.textPrimary,border:`1px solid ${e.inputBorder}`,borderRadius:6,padding:"7px 8px",font:`11px ${e.font}`}}function Jn(e){return{border:`1px solid ${e.accent}`,background:`${e.accent}15`,color:e.accent,borderRadius:5,padding:"5px 9px",cursor:"pointer",font:`700 10px ${e.font}`,display:"inline-flex",alignItems:"center",gap:5}}function Sn(e){return{border:`1px solid ${e.btnBorder}`,background:e.btnBg,color:e.textSecondary,borderRadius:5,padding:"5px 9px",cursor:"pointer",font:`700 10px ${e.font}`}}function ut(e){return{width:26,height:26,border:`1px solid ${e.btnBorder}`,background:e.btnBg,color:e.textMuted,borderRadius:5,cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center"}}function Qe(e){return{padding:6,color:e.textSecondary,borderBottom:`1px solid ${e.cellBorder}`}}function JS(e){return e<1e6?`${(e/1e3).toFixed(1)} KB`:`${(e/1e6).toFixed(1)} MB`}const OE={total:0,active:0,blocked:0};function yl({onOpenFile:e,registerCellRef:t}){var Ie;const{state:r,dispatch:s}=le(),n=gs(),T=ne[r.themeMode],[o,i]=l.useState(!1),[S,a]=l.useState(!1),[A,R]=l.useState(null),[N,I]=l.useState(""),[c,_]=l.useState(void 0),[O,C]=l.useState(0),[L,f]=l.useState(OE),[x,M]=l.useState({open:!1}),[b,m]=l.useState([]),[h,G]=l.useState(()=>typeof window<"u"&&window.matchMedia("(max-width: 900px)").matches),y=(Ie=r.activeFile)==null?void 0:Ie.path,V=l.useMemo(()=>r.cells.find(d=>d.id===A)??null,[A,r.cells]),j=l.useMemo(()=>el({notebookPath:y,notebookTitle:r.notebookTitle,notebookMetadata:r.notebookMetadata,cell:V,cells:r.cells,datasets:b}),[y,V,b,r.cells,r.notebookMetadata,r.notebookTitle]),W=l.useCallback(d=>{R(null),I(""),_(void 0),i(!0),a(!0),e(d)},[e]);l.useEffect(()=>{if(!y){f(OE);return}let d=!1;return q.listNotebookResearch({path:y,limit:1}).then(B=>{d||f({total:B.counts.total,active:B.counts.needsReview+B.counts.errors+B.counts.draftReady+B.counts.certificationReady,blocked:B.counts.blocked})}).catch(()=>{d||f(OE)}),()=>{d=!0}},[y,S,O,r.queryLog.length]),l.useEffect(()=>{const d=B=>{const F=B.detail;R((F==null?void 0:F.afterId)??null),I(""),_(void 0),a(!1),i(!0)};return window.addEventListener("dql:open-notebook-ai",d),()=>window.removeEventListener("dql:open-notebook-ai",d)},[]),l.useEffect(()=>{const d=()=>{q.getDatasets().then(B=>m(B.datasets)).catch(()=>m([]))};return d(),window.addEventListener("dql:datasets-changed",d),()=>window.removeEventListener("dql:datasets-changed",d)},[y]),l.useEffect(()=>{var F;const d=window.matchMedia("(max-width: 900px)"),B=()=>G(d.matches);return B(),(F=d.addEventListener)==null||F.call(d,"change",B),()=>{var P;return(P=d.removeEventListener)==null?void 0:P.call(d,"change",B)}},[]),l.useEffect(()=>{const d=B=>{const F=B.detail;M({open:!0,afterId:F==null?void 0:F.afterId})};return window.addEventListener("dql:open-dataset-import",d),()=>window.removeEventListener("dql:open-dataset-import",d)},[]);const g=l.useCallback((d,B,F)=>{const P=(B==null?void 0:B.trim())??"";R(d),I(F!=null&&F.autoAsk?"":P),_(F!=null&&F.autoAsk&&P?{text:P,nonce:Date.now()}:void 0),a(!1),i(!0)},[]),Z=l.useCallback((d,B,F)=>{const P=d.trim();if(!P)return;const k=ie("sql",P);k.name=ze(B??"AI SQL draft"),k.correctionProvenance=Ze({question:F==null?void 0:F.question,generatedSql:P,sourceRunId:F==null?void 0:F.sourceRunId});const K=b.filter($=>new RegExp(`\\b${ln($.alias)}\\b`,"i").test(P)).map($=>({id:$.id,alias:$.alias,role:$.storageMode==="staged"?"staged":"source",fingerprint:$.fileFingerprint}));K.length>0&&(k.executionTarget={target:"local"},k.datasetRefs=K),s({type:"ADD_CELL",cell:k,afterId:A??void 0}),it(k.id),R(k.id),i(!0)},[A,b,s]),Q=l.useCallback(d=>{var K,$,z,ee,Ee,he;if(!r.activeFile){n(d,{datasets:b});return}const B=(d.sql??((K=d.dqlArtifact)==null?void 0:K.source)??"").trim();if(!B)return;if(d.mixedSourcePlan){const te=d.mixedSourcePlan,Le=ie("markdown",[`### ${d.title??"Mixed-source analysis"}`,"",`This analysis combines a bounded warehouse extraction with the local dataset \`${te.localDataset}\`.`,"",...($=te.warehouseRelations)!=null&&$.length?[`- Warehouse sources: ${te.warehouseRelations.map(st=>`\`${st}\``).join(", ")}`]:[],`- Join: \`${te.warehouseKey}\` = \`${te.localKey}\``,"- Trust: local mixed-source analysis · review required","- Run the warehouse cell below, then confirm **Create joined analysis**."].join(`
194
+ `));Le.name=ze("Analysis context");const Oe=ie("sql",B);Oe.name=ze(d.title??"Warehouse extraction"),Oe.mixedSourcePlan=te,Oe.executionTarget={target:"connection"},Oe.datasetRefs=[{id:te.datasetId??te.localDataset,alias:te.localDataset,role:"source"}],Oe.annotations=[{id:`note_${Date.now()}_mixed_source`,body:`AI prepared a bounded warehouse extraction for a local join with ${te.localDataset} on ${te.warehouseKey} = ${te.localKey}. Review required.`,createdAt:new Date().toISOString(),author:"DQL"}],s({type:"ADD_CELL",cell:Le,afterId:A??void 0}),s({type:"ADD_CELL",cell:Oe,afterId:Le.id}),it(Oe.id),R(Oe.id),i(!0);return}const F=(ee=(z=d.dqlArtifact)==null?void 0:z.source)==null?void 0:ee.trim(),P=ie(F?"dql":"sql",F||B);P.name=ze(d.title??((Ee=d.dqlArtifact)==null?void 0:Ee.name)??"AI analysis"),d.result&&(P.result=d.result,P.status="success",P.executionCount=1),d.chartConfig&&(P.chartConfig=d.chartConfig),P.correctionProvenance=Ze({question:d.question,generatedSql:d.sql??((he=d.dqlArtifact)==null?void 0:he.compiledSql),generatedDql:F,sourceRunId:d.sourceRunId}),d.dqlArtifact&&(P.dqlArtifact={source:d.dqlArtifact.source,sql:d.sql,name:d.dqlArtifact.name,sourcePath:d.dqlArtifact.sourcePath,kind:d.dqlArtifact.kind,metrics:d.dqlArtifact.metrics,dimensions:d.dqlArtifact.dimensions,parameters:d.dqlArtifact.parameters,parameterValues:d.dqlArtifact.parameterValues,persistence:d.dqlArtifact.persistence,trustState:d.dqlArtifact.trustState,compiledSql:d.dqlArtifact.compiledSql??d.sql,...d.question?{question:d.question}:{}},P.dqlParameterValues=d.dqlArtifact.parameterValues);const k=b.filter(te=>new RegExp(`\\b${ln(te.alias)}\\b`,"i").test(B)).map(te=>({id:te.id,alias:te.alias,role:te.storageMode==="staged"?"staged":"source",fingerprint:te.fileFingerprint}));k.length>0&&(P.executionTarget={target:"local"},P.datasetRefs=k,P.dqlArtifact&&(P.dqlArtifact.reviewState="review_required")),s({type:"ADD_CELL",cell:P,afterId:A??void 0}),it(P.id),R(P.id),i(!0)},[A,b,s]),Y=l.useCallback(d=>{var k,K,$,z,ee;if(!A)return;const B=(d.sql??((k=d.dqlArtifact)==null?void 0:k.source)??"").trim(),F=($=(K=d.dqlArtifact)==null?void 0:K.source)==null?void 0:$.trim(),P=F||B;P&&(s({type:"UPDATE_CELL",id:A,updates:{type:F?"dql":"sql",content:P,name:ze(d.title??((z=d.dqlArtifact)==null?void 0:z.name)??"AI edited cell"),execution:void 0,fromSnapshot:!1,...d.result?{result:d.result,status:"success",executionCount:1,stale:!1}:{result:void 0,status:"idle",executionCount:void 0},...d.chartConfig?{chartConfig:d.chartConfig}:{},correctionProvenance:Ze({question:d.question,generatedSql:d.sql??((ee=d.dqlArtifact)==null?void 0:ee.compiledSql),generatedDql:F,sourceRunId:d.sourceRunId}),...d.dqlArtifact?{dqlArtifact:{source:d.dqlArtifact.source,sql:d.sql,name:d.dqlArtifact.name,sourcePath:d.dqlArtifact.sourcePath,kind:d.dqlArtifact.kind,metrics:d.dqlArtifact.metrics,dimensions:d.dqlArtifact.dimensions,parameters:d.dqlArtifact.parameters,parameterValues:d.dqlArtifact.parameterValues,persistence:d.dqlArtifact.persistence,trustState:d.dqlArtifact.trustState,compiledSql:d.dqlArtifact.compiledSql??d.sql,...d.question?{question:d.question}:{}},dqlParameterValues:d.dqlArtifact.parameterValues}:{dqlArtifact:void 0,dqlParameterValues:void 0}}}),it(A))},[A,s]),J=l.useCallback(d=>{R(d.sourceCellId??null),I(d.question),_(void 0),a(!1),i(!0)},[]),ae=l.useCallback(async(d,B)=>{if(B&&B!==y){const F=r.files.find(P=>P.path===B);F&&e(F)}try{const F=await q.getNotebookResearch(d);R(F.sourceCellId??null),I(F.question),or({notebookPath:F.notebookPath,sourceCellId:F.sourceCellId,runId:F.id,reason:"agent-run-open-research"})}catch{or({notebookPath:B,runId:d,reason:"agent-run-open-research"})}_(void 0),C(Date.now()),a(!0),i(!0)},[y,e,r.files]);return r.activeFile?r.dashboardMode?E.jsx(YS,{}):E.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column",overflow:"hidden",background:T.appBg},children:[E.jsx(QS,{t:T,aiOpen:o,historyOpen:S,historyBadge:L,onToggleAi:()=>{R(null),I(""),_(void 0),i(d=>!d)},onToggleHistory:()=>{i(!0),a(d=>!d)}}),E.jsxs("div",{style:{flex:1,display:"flex",position:"relative",minHeight:0,overflow:"hidden"},children:[E.jsxs("div",{style:{flex:1,minWidth:0,overflow:"auto",padding:"0 0 40px",display:h&&o?"none":"block"},children:[E.jsx(XS,{}),x.open&&E.jsx(kS,{afterId:x.afterId,onClose:()=>M({open:!1})}),E.jsx(bS,{registerCellRef:t,researchRefreshKey:O,onStartResearch:g})]}),E.jsx("div",{style:{display:o?"contents":"none"},"aria-hidden":!o,children:E.jsx(zS,{t:T,notebookPath:y,sourceCell:V,upstreamContext:j,initialInput:N,autoAsk:c,historyOpen:S,historyRefreshKey:O,onClose:()=>i(!1),onToggleHistory:()=>a(d=>!d),onInsertSql:Z,onInsertDql:Q,onReplaceDql:Y,onAskFromHistory:J,onOpenResearch:ae,compact:h})})]})]}):E.jsx(sT,{onOpenFile:e,onOpenResearchFile:W})}function QS({t:e,aiOpen:t,historyOpen:r,historyBadge:s,onToggleAi:n,onToggleHistory:T}){const{state:o}=le(),i=o.cells.length,S=s.blocked>0?e.error:s.active>0?e.warning:e.accent,a=s.total>0?[`${s.total} AI histor${s.total===1?"y item":"y items"}`,s.active>0?`${s.active} open`:void 0,s.blocked>0?`${s.blocked} blocked`:void 0].filter(Boolean).join(" · "):"Open notebook AI history";return E.jsxs("div",{style:{height:32,flexShrink:0,borderBottom:`1px solid ${e.headerBorder}`,background:e.cellBg,display:"flex",alignItems:"center",padding:"0 16px",gap:12},children:[E.jsx(nl,{t:e}),E.jsx("div",{style:{flex:1}}),E.jsxs("button",{type:"button",title:t?"Hide notebook AI":"Ask AI about this notebook",onClick:n,style:{height:26,border:`1px solid ${t?e.accent:e.btnBorder}`,background:t?`${e.accent}16`:e.btnBg,color:t?e.accent:e.textSecondary,borderRadius:6,padding:"0 9px",display:"inline-flex",alignItems:"center",gap:6,fontSize:12,fontWeight:700,fontFamily:e.font,cursor:"pointer"},children:[E.jsx(je,{size:14,strokeWidth:2,"aria-hidden":"true"}),"Notebook AI"]}),E.jsxs("button",{type:"button",title:a,onClick:T,style:{height:26,border:`1px solid ${r?S:e.btnBorder}`,background:r?`${S}12`:e.btnBg,color:r?S:e.textSecondary,borderRadius:6,padding:"0 9px",display:"inline-flex",alignItems:"center",gap:6,fontSize:12,fontWeight:700,fontFamily:e.font,cursor:"pointer"},children:[E.jsx(pn,{size:14,strokeWidth:2,"aria-hidden":"true"}),"History",s.total>0&&E.jsx("span",{"aria-label":a,style:{minWidth:18,height:18,borderRadius:999,padding:"0 6px",display:"inline-flex",alignItems:"center",justifyContent:"center",border:`1px solid ${S}`,background:`${S}14`,color:S,fontSize:10,fontWeight:800,lineHeight:1},children:s.total>99?"99+":s.total})]}),E.jsxs("span",{style:{fontSize:11,color:e.textMuted,fontFamily:e.font,display:"flex",alignItems:"center",gap:12},children:[E.jsxs("span",{children:[i," ",i===1?"cell":"cells"]}),o.notebookDirty&&E.jsx("span",{style:{color:e.warning},children:"● unsaved"})]})]})}function zS({t:e,notebookPath:t,sourceCell:r,upstreamContext:s,initialInput:n,autoAsk:T,historyOpen:o,historyRefreshKey:i,onClose:S,onToggleHistory:a,onInsertSql:A,onInsertDql:R,onReplaceDql:N,onAskFromHistory:I,onOpenResearch:c,compact:_}){var Z;const{state:O}=le(),C=Fs(),L=hs(`notebook:${t??"notebook"}`),[f,x]=l.useState(!1),[M,b]=l.useState(!1),[m,h]=l.useState(0),G=r?`${r.type.toUpperCase()} cell${r.name?` · ${r.name}`:""}`:"Whole notebook",y=r?"This cell + dbt, semantic metadata, certified blocks, prior AI history":"Whole notebook + dbt, semantic metadata, certified blocks, prior AI history",V=(r==null?void 0:r.type)==="sql"?r.content.trim():(r==null?void 0:r.type)==="dql"?(Z=PE(r.content))==null?void 0:Z.trim():void 0,j=V?{cellSql:V}:void 0,W=r?{kind:"cell",id:r.id,title:r.name,path:t}:t?{kind:"notebook",path:t,title:O.notebookTitle||"Notebook"}:void 0,g={...j??{},notebookPath:t,notebookTitle:O.notebookTitle,sourceCellId:r==null?void 0:r.id,sourceCellName:r==null?void 0:r.name,sourceCellType:r==null?void 0:r.type,notebookContext:s};return E.jsxs(Hs,{t:e,title:"Notebook AI",subtitle:G,expanded:f,onToggleExpanded:()=>x(Q=>!Q),onClose:S,compact:_,onNewChat:()=>{L.resetThreadId(),h(Q=>Q+1)},running:M,ariaLabel:"Notebook AI",headerActions:E.jsx(bs,{t:e,label:o?"Hide AI history":"Show AI history",onClick:a,active:o,children:E.jsx(pn,{size:14})}),dock:"overlay",children:[o&&E.jsx(ZS,{t:e,notebookPath:t,sourceCellId:r==null?void 0:r.id,refreshKey:i,onAskFromHistory:I}),E.jsx("div",{style:{flex:1,minHeight:0},children:E.jsx(dn,{themeMode:O.themeMode,title:"Notebook AI",scopeHint:y,notebookPath:t,selectedObject:W,workspaceContext:g,initialMode:"auto",initialInput:T?"":n,autoRun:T?{text:T.text,mode:"ask",nonce:T.nonce}:void 0,threadId:L.threadId,onThreadIdChange:L.onThreadIdChange,onRunningChange:b,onInsertSql:A,onInsertDql:R,onReplaceDql:r?N:void 0,answerFirstCards:!0,insertDqlActionLabel:"Add to notebook",replaceDqlActionLabel:r?"Replace selected cell":void 0,onOpenBlock:(Q,Y)=>{C(Q,Y??Q)},onOpenResearch:(Q,Y)=>{c(Q,Y)}},`auto:${t??"notebook"}:${(r==null?void 0:r.id)??"all"}:${m}`)})]})}function ZS({t:e,notebookPath:t,sourceCellId:r,refreshKey:s,onAskFromHistory:n}){const[T,o]=l.useState([]),[i,S]=l.useState(!1),[a,A]=l.useState(null);return l.useEffect(()=>{if(!t){o([]);return}let R=!1;return S(!0),A(null),q.listNotebookResearch({path:t,sourceCellId:r,sort:"updated_desc",limit:12}).then(N=>{R||o(N.runs)}).catch(N=>{R||A(N instanceof Error?N.message:String(N))}).finally(()=>{R||S(!1)}),()=>{R=!0}},[t,s,r]),E.jsxs("div",{style:{borderBottom:`1px solid ${e.headerBorder}`,background:e.appBg,maxHeight:260,overflow:"auto",padding:10},children:[E.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[E.jsx(vs,{size:14,color:e.textMuted}),E.jsx("div",{style:{fontSize:11,fontWeight:850,color:e.textSecondary,textTransform:"uppercase",letterSpacing:"0.04em"},children:"AI history"}),E.jsx("div",{style:{flex:1}}),i&&E.jsx("span",{style:{fontSize:11,color:e.textMuted},children:"Loading"})]}),a&&E.jsx("div",{style:{fontSize:11,color:e.error,lineHeight:1.4},children:a}),!i&&!a&&T.length===0&&E.jsxs("div",{style:{fontSize:12,color:e.textMuted,lineHeight:1.45},children:["No saved AI history for this ",r?"cell":"notebook"," yet."]}),E.jsx("div",{style:{display:"grid",gap:7},children:T.map(R=>E.jsxs("button",{type:"button",onClick:()=>n(R),style:{border:`1px solid ${e.cellBorder}`,background:e.cellBg,color:e.textPrimary,borderRadius:8,padding:"8px 9px",textAlign:"left",cursor:"pointer",display:"grid",gap:4},children:[E.jsxs("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[E.jsx("span",{style:{fontSize:12,fontWeight:800,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:R.title||R.question}),E.jsx("span",{style:{marginLeft:"auto",fontSize:10,color:rl(R,e),fontWeight:850},children:El(R)})]}),E.jsx("div",{style:{fontSize:11,color:e.textMuted,lineHeight:1.35,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:R.question}),E.jsxs("div",{style:{fontSize:10,color:e.textMuted,fontFamily:e.fontMono},children:[tl(R.updatedAt),R.generatedSql||R.reviewedSql?" · SQL saved":"",R.dqlPromotionAction?` · ${R.dqlPromotionAction.split("_").join(" ")}`:""]})]},R.id))})]})}function el(e){var T,o,i,S,a,A,R,N;const t=[];t.push("Notebook AI contract:"),t.push(["- Use the same path for research, SQL generation, SQL repair, DQL reuse checks, and DQL draft planning.","- Always check certified DQL blocks, draft blocks, dbt/semantic metadata, and runtime schema before proposing new SQL.","- Return one clear outcome: Reuse certified block, Use existing draft, Review SQL preview, Fix SQL, Create DQL draft, Needs review, or Cannot answer yet.","- For review-required DQL artifacts, prefer reusable parameterizable SQL preview logic over hard-coded literals when the business question implies a reusable block.","- Keep DQL certification manual; do not claim SQL previews or drafts are certified.","- Imported CSV and staged warehouse snapshots are point-in-time local data. Never label a mixed local result certified.","- Before a cross-source join, state the governed source, local dataset, proposed join keys and cardinality, freshness mismatch, extraction scope, and review-required trust label.","- If join keys are ambiguous or likely many-to-many, ask a focused follow-up question instead of guessing.","- Never request or include complete dataset rows. Use the supplied schema/profile/lineage and only bounded redacted samples from explicit tools.","- Explain business purpose, grain, filters/parameters, technical lineage, duplicate/reuse evidence, preview status, and next action."].join(`
195
+ `)),t.push(`Notebook: ${e.notebookTitle||e.notebookPath||"Untitled notebook"}`),e.notebookPath&&t.push(`Path: ${e.notebookPath}`);const r=[e.notebookMetadata.purpose?`Purpose: ${Me(e.notebookMetadata.purpose,1200)}`:"",e.notebookMetadata.description?`Business context: ${Me(e.notebookMetadata.description,800)}`:"",e.notebookMetadata.status?`Notebook status: ${e.notebookMetadata.status}`:"",e.notebookMetadata.ownerDomain?`Owner domain: ${e.notebookMetadata.ownerDomain}`:"",(T=e.notebookMetadata.usesDomains)!=null&&T.length?`Uses domains: ${e.notebookMetadata.usesDomains.join(", ")}`:"",e.notebookMetadata.projectFilter?`Scope filter: ${e.notebookMetadata.projectFilter}`:"",(o=e.notebookMetadata.categories)!=null&&o.length?`Categories: ${e.notebookMetadata.categories.join(", ")}`:""].filter(Boolean);r.length>0&&t.push(r.join(`
196
+ `));const s=e.cells.filter(I=>I.type==="markdown"&&I.content.trim()).slice(0,12).map((I,c)=>`${c+1}. ${Me(I.content,700)}`);s.length>0&&(t.push("Notebook research narrative:"),t.push(s.join(`
197
+ `)));const n=e.cells.filter(I=>{var c,_;return((c=I.annotations)==null?void 0:c.length)||I.upstream||((_=I.dependencies)==null?void 0:_.length)}).slice(0,30).map(I=>{var _,O;return`- ${[`${I.type.toUpperCase()}${I.name?` ${I.name}`:` ${I.id}`}`,I.upstream?`upstream=${I.upstream}`:"",(_=I.dependencies)!=null&&_.length?`dependencies=${I.dependencies.map(C=>C.output??C.cellId).join(",")}`:"",(O=I.annotations)!=null&&O.length?`research=${I.annotations.map(C=>`${C.kind??"note"}:${Me(C.body,240)}`).join(" | ")}`:""].filter(Boolean).join(" · ")}`});if(n.length>0&&(t.push("Notebook dependency and research evidence:"),t.push(n.join(`
198
+ `))),e.datasets.length>0){const I=new Set(((S=(i=e.cell)==null?void 0:i.datasetRefs)==null?void 0:S.map(_=>_.id))??[]),c=[...e.datasets].sort((_,O)=>Number(I.has(O.id))-Number(I.has(_.id))).slice(0,20);t.push("Available notebook datasets (metadata only; no full rows):"),t.push(c.map(_=>[`- ${_.name} as ${_.alias}`,`storage=${_.storageMode}`,`trust=${_.trustState}`,`rows=${_.profile.rowCount}`,`refreshed=${_.refreshedAt}`,`columns=${_.profile.columns.slice(0,40).map(O=>{var C;return`${O.name}:${O.type}${(C=O.flags)!=null&&C.length?`[${O.flags.join("|")}]`:""}`}).join(", ")}`,_.lineage?`lineage=${Me(JSON.stringify(_.lineage),700)}`:"",_.schemaDrift?`schema_drift=${Me(JSON.stringify(_.schemaDrift),400)}`:""].filter(Boolean).join(" · ")).join(`
199
+ `))}if(e.cell){t.push(`Selected cell: ${e.cell.type.toUpperCase()}${e.cell.name?` ${e.cell.name}`:""}`);const I=((a=e.cell.blockBinding)==null?void 0:a.parameterValues)??e.cell.dqlParameterValues??((A=e.cell.dqlArtifact)==null?void 0:A.parameterValues);I&&Object.keys(I).length>0&&t.push(`Selected parameters: ${Me(JSON.stringify(I),800)}`),e.cell.blockBinding&&t.push(`Block binding: ${e.cell.blockBinding.path} · ${e.cell.blockBinding.state}`),((R=e.cell.dqlArtifact)!=null&&R.trustState||(N=e.cell.dqlArtifact)!=null&&N.reviewState)&&t.push(`Trust: ${e.cell.dqlArtifact.trustState??e.cell.dqlArtifact.reviewState}`),e.cell.error&&t.push(`Current error: ${e.cell.error}`),e.cell.result&&(t.push(`Result columns: ${e.cell.result.columns.join(", ")}`),t.push(`Result rows: ${e.cell.result.rowCount??e.cell.result.rows.length}`)),t.push("Selected cell content:"),t.push(e.cell.content)}else{const I=e.cells.filter(c=>c.type==="sql"||c.type==="dql").slice(0,8).map((c,_)=>`${_+1}. ${c.type.toUpperCase()}${c.name?` ${c.name}`:""}: ${Me(c.content,600)}`);I.length>0&&(t.push("Notebook SQL/DQL cells:"),t.push(I.join(`
200
+ `)))}return t.join(`
201
+
202
+ `)}function ln(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Me(e,t){const r=(e??"").replace(/\s+/g," ").trim();return r?r.length>t?`${r.slice(0,Math.max(0,t-3))}...`:r:""}function ze(e){return e.replace(/[^a-zA-Z0-9_ -]+/g," ").replace(/\s+/g,"_").replace(/^_+|_+$/g,"").slice(0,48)||"ai_sql_draft"}function tl(e){if(!e)return"Saved";const t=new Date(e);return Number.isNaN(t.getTime())?"Saved":t.toLocaleString(void 0,{month:"short",day:"numeric",hour:"numeric",minute:"2-digit"})}function El(e){return e.status==="error"?"error":e.reviewStatus==="certified"?"certified":e.reviewStatus==="draft_created"?"draft":e.reviewStatus==="completed"?"done":"review"}function rl(e,t){var r;return e.status==="error"||(r=e.reviewChecklist)!=null&&r.blockers.length?t.error:e.reviewStatus==="certified"||e.reviewStatus==="completed"?t.success:e.reviewStatus==="draft_created"?t.accent:t.warning}function nl({t:e}){const{state:t}=le();if(!t.activeFile)return null;const r=t.activeFile.path.split("/").filter(Boolean);return E.jsx("div",{style:{display:"flex",alignItems:"center",gap:4,fontSize:12,fontFamily:e.fontMono,color:e.textMuted,overflow:"hidden"},children:r.map((s,n)=>E.jsxs(ME.Fragment,{children:[n>0&&E.jsx("span",{style:{color:e.textMuted,opacity:.5},children:"/"}),E.jsx("span",{style:{color:n===r.length-1?e.textSecondary:e.textMuted,fontWeight:n===r.length-1?500:400,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:n===r.length-1?200:100},children:s})]},n))})}export{yl as NotebookEditor};