@kazurolabs/psql-explorer 0.0.0-stage → 0.3.0

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 (127) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +505 -2
  3. package/RELEASES.md +87 -0
  4. package/dist/app.js +39 -0
  5. package/dist/cli.js +307 -0
  6. package/dist/commands/configgen.js +128 -0
  7. package/dist/commands/explore.js +388 -0
  8. package/dist/commands/terminal-prompt.js +68 -0
  9. package/dist/config/load.js +324 -0
  10. package/dist/config/resolve-environment.js +112 -0
  11. package/dist/config/resolvers/env.js +12 -0
  12. package/dist/config/resolvers/file.js +24 -0
  13. package/dist/config/resolvers/groups.js +1 -0
  14. package/dist/config/resolvers/index.js +49 -0
  15. package/dist/config/resolvers/literal.js +7 -0
  16. package/dist/config/resolvers/prompt.js +159 -0
  17. package/dist/config/resolvers/stored.js +13 -0
  18. package/dist/config/resolvers/types.js +18 -0
  19. package/dist/config/resolvers/vault.js +283 -0
  20. package/dist/config/schema.js +24 -0
  21. package/dist/config/source.js +105 -0
  22. package/dist/db/connect.js +55 -0
  23. package/dist/db/identifiers.js +6 -0
  24. package/dist/db/paths.js +14 -0
  25. package/dist/db/store.js +323 -0
  26. package/dist/db/tester.js +190 -0
  27. package/dist/db/validate.js +99 -0
  28. package/dist/environments.js +140 -0
  29. package/dist/explorer/alter.js +493 -0
  30. package/dist/explorer/catalog.js +414 -0
  31. package/dist/explorer/connect-entry.js +42 -0
  32. package/dist/explorer/cypher-parse.js +478 -0
  33. package/dist/explorer/cypher.js +963 -0
  34. package/dist/explorer/ddl.js +502 -0
  35. package/dist/explorer/dependents.js +222 -0
  36. package/dist/explorer/design-load.js +254 -0
  37. package/dist/explorer/design.js +45 -0
  38. package/dist/explorer/edit.js +108 -0
  39. package/dist/explorer/explain.js +37 -0
  40. package/dist/explorer/filter.js +121 -0
  41. package/dist/explorer/format.js +134 -0
  42. package/dist/explorer/graph.js +679 -0
  43. package/dist/explorer/gucs.js +31 -0
  44. package/dist/explorer/profile.js +102 -0
  45. package/dist/explorer/references.js +95 -0
  46. package/dist/explorer/rows.js +64 -0
  47. package/dist/explorer/schema-diff.js +360 -0
  48. package/dist/explorer/search.js +309 -0
  49. package/dist/explorer/security.js +152 -0
  50. package/dist/explorer/seed.js +1376 -0
  51. package/dist/explorer/session.js +122 -0
  52. package/dist/explorer/stats.js +135 -0
  53. package/dist/explorer/timeout.js +13 -0
  54. package/dist/prompts.js +52 -0
  55. package/dist/screens/environments.js +229 -0
  56. package/dist/screens/explorer.js +145 -0
  57. package/dist/screens/header.js +8 -0
  58. package/dist/screens/index.js +13 -0
  59. package/dist/screens/new-connection.js +178 -0
  60. package/dist/screens/panes/common.js +35 -0
  61. package/dist/screens/panes/history.js +36 -0
  62. package/dist/screens/panes/info.js +61 -0
  63. package/dist/screens/panes/query.js +113 -0
  64. package/dist/screens/panes/table.js +178 -0
  65. package/dist/screens/panes/tables.js +142 -0
  66. package/dist/screens/prompt-modal.js +18 -0
  67. package/dist/screens/record-view.js +42 -0
  68. package/dist/screens/result-grid.js +126 -0
  69. package/dist/screens/scroll.js +12 -0
  70. package/dist/screens/splash.js +78 -0
  71. package/dist/screens/terminal.js +25 -0
  72. package/dist/screens/types.js +1 -0
  73. package/dist/services.js +1 -0
  74. package/dist/startup.js +84 -0
  75. package/dist/web/server.js +988 -0
  76. package/package.json +69 -5
  77. package/web/dist/assets/anton-latin-400-normal-AUNGEG_V.woff +0 -0
  78. package/web/dist/assets/anton-latin-400-normal-Byf51wtH.woff2 +0 -0
  79. package/web/dist/assets/anton-latin-ext-400-normal-BMODBQc6.woff +0 -0
  80. package/web/dist/assets/anton-latin-ext-400-normal-SyiqE2Jt.woff2 +0 -0
  81. package/web/dist/assets/anton-vietnamese-400-normal-2FfR1wHA.woff +0 -0
  82. package/web/dist/assets/anton-vietnamese-400-normal-CkBxLiRJ.woff2 +0 -0
  83. package/web/dist/assets/antonio-latin-400-normal-B7iMKlzw.woff +0 -0
  84. package/web/dist/assets/antonio-latin-400-normal-CZjzwNAN.woff2 +0 -0
  85. package/web/dist/assets/antonio-latin-700-normal-BY3mCh47.woff +0 -0
  86. package/web/dist/assets/antonio-latin-700-normal-DSH-lEDG.woff2 +0 -0
  87. package/web/dist/assets/antonio-latin-ext-400-normal-nE82dizb.woff2 +0 -0
  88. package/web/dist/assets/antonio-latin-ext-400-normal-qA9Jb92z.woff +0 -0
  89. package/web/dist/assets/antonio-latin-ext-700-normal-BdSkr58W.woff +0 -0
  90. package/web/dist/assets/antonio-latin-ext-700-normal-D-dvgqjr.woff2 +0 -0
  91. package/web/dist/assets/button-ClA70PLR.js +1 -0
  92. package/web/dist/assets/code-xml-CXkpHeU9.js +1 -0
  93. package/web/dist/assets/compare-view-DKl5l_Jw.js +2 -0
  94. package/web/dist/assets/copy-CCXzeW-s.js +1 -0
  95. package/web/dist/assets/cypher-view-Pd0WFH8F.js +13 -0
  96. package/web/dist/assets/design-view-CIHSmH4u.js +9 -0
  97. package/web/dist/assets/erd-view-CV7mFGAN.js +1 -0
  98. package/web/dist/assets/format-sql-BLj5_RDZ.js +5 -0
  99. package/web/dist/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
  100. package/web/dist/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
  101. package/web/dist/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
  102. package/web/dist/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  103. package/web/dist/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
  104. package/web/dist/assets/graph-force-yBLyErpS.js +1 -0
  105. package/web/dist/assets/graph-link-OCo_s0zO.js +1 -0
  106. package/web/dist/assets/graph-view-sM1OlByf.js +3 -0
  107. package/web/dist/assets/index-CDcnUacl.js +10 -0
  108. package/web/dist/assets/index-OzJqnJWG.css +2 -0
  109. package/web/dist/assets/key-round-Cv_7QeED.js +1 -0
  110. package/web/dist/assets/loader-circle-BK_GMdvN.js +1 -0
  111. package/web/dist/assets/orbitron-latin-700-normal-4jsRXGGJ.woff2 +0 -0
  112. package/web/dist/assets/orbitron-latin-700-normal-DmYOh-W9.woff +0 -0
  113. package/web/dist/assets/orbitron-latin-900-normal-BbJatbhp.woff +0 -0
  114. package/web/dist/assets/orbitron-latin-900-normal-DrIi7unX.woff2 +0 -0
  115. package/web/dist/assets/query-builder-view-ChNFb51g.js +4 -0
  116. package/web/dist/assets/rotate-ccw-CdCaf7Q6.js +1 -0
  117. package/web/dist/assets/route-DO6IZ7of.js +15 -0
  118. package/web/dist/assets/seed-view-DFNB8WHE.js +7 -0
  119. package/web/dist/assets/share-tech-mono-latin-400-normal-15MgdvEM.woff +0 -0
  120. package/web/dist/assets/share-tech-mono-latin-400-normal-CCqdbj5z.woff2 +0 -0
  121. package/web/dist/assets/shield-alert-CMS-3j4U.js +1 -0
  122. package/web/dist/assets/sliders-horizontal-Dg51yc-C.js +1 -0
  123. package/web/dist/assets/sql-tabs-B4jt6bQj.js +2 -0
  124. package/web/dist/assets/table-DfMz2f8M.js +1 -0
  125. package/web/dist/assets/triangle-alert-COGnHCD1.js +1 -0
  126. package/web/dist/assets/zone-D9dXk8tn.js +5 -0
  127. package/web/dist/index.html +26 -0
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){:root,:host{--shimmer-angle:20deg}*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0;--scroll-fade-t:0px;--scroll-fade-b:0px;--scroll-fade-s:0px;--scroll-fade-e:0px;--scroll-fade-mask:initial;--shimmer-image:initial;--shimmer-text-fill:initial}}}@layer theme{:root,:host{--font-sans:var(--body-font);--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-amber-500:oklch(76.9% .188 70.08);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-5xl:3rem;--text-5xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--tracking-widest:.1em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-md:calc(var(--radius) * .8);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--body-font);--default-mono-font-family:var(--font-mono);--font-heading:var(--heading-font)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}body{background-color:var(--background);color:var(--foreground)}html{font-family:var(--body-font)}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{inset-block:0}.top-0{top:0}.top-0\.5{top:calc(var(--spacing) * .5)}.top-2{top:calc(var(--spacing) * 2)}.top-14{top:calc(var(--spacing) * 14)}.right-0{right:0}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.bottom-0{bottom:0}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-0{left:0}.left-0\.5{left:calc(var(--spacing) * .5)}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.m-0{margin:0}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mr-1{margin-right:var(--spacing)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.\!table{display:table!important}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-4\.5{width:calc(var(--spacing) * 4.5);height:calc(var(--spacing) * 4.5)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-full{width:100%;height:100%}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-40{height:calc(var(--spacing) * 40)}.h-48{height:calc(var(--spacing) * 48)}.h-64{height:calc(var(--spacing) * 64)}.h-72{height:calc(var(--spacing) * 72)}.h-80{height:calc(var(--spacing) * 80)}.h-\[60vh\]{height:60vh}.h-\[70vh\]{height:70vh}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-full{height:100%}.h-px{height:1px}.max-h-\(--available-height\){max-height:var(--available-height)}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-\[70vh\]{max-height:70vh}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-80{min-height:calc(var(--spacing) * 80)}.min-h-96{min-height:calc(var(--spacing) * 96)}.min-h-px{min-height:1px}.min-h-screen{min-height:100vh}.w-\(--anchor-width\){width:var(--anchor-width)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-24{max-width:calc(var(--spacing) * 24)}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-44{max-width:calc(var(--spacing) * 44)}.max-w-48{max-width:calc(var(--spacing) * 48)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-72{max-width:calc(var(--spacing) * 72)}.max-w-80{max-width:calc(var(--spacing) * 80)}.max-w-96{max-width:calc(var(--spacing) * 96)}.max-w-\[32rem\]{max-width:32rem}.max-w-\[min\(90vw\,48rem\)\]{max-width:min(90vw,48rem)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:0}.min-w-6{min-width:calc(var(--spacing) * 6)}.min-w-36{min-width:calc(var(--spacing) * 36)}.min-w-44{min-width:calc(var(--spacing) * 44)}.min-w-48{min-width:calc(var(--spacing) * 48)}.min-w-56{min-width:calc(var(--spacing) * 56)}.min-w-64{min-width:calc(var(--spacing) * 64)}.min-w-full{min-width:100%}.flex-1{flex:1}.shrink-0{flex-shrink:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.origin-\(--transform-origin\){transform-origin:var(--transform-origin)}.translate-x-5{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.scroll-my-1{scroll-margin-block:var(--spacing)}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-\[auto_auto_auto_auto\]{grid-template-columns:auto auto auto auto}.grid-cols-\[max-content_1fr\]{grid-template-columns:max-content 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-\(--card-spacing\){gap:var(--card-spacing)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-px{gap:1px}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:var(--spacing)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-4xl{border-radius:calc(var(--radius) * 2.6)}.rounded-\[inherit\]{border-radius:inherit}.rounded-\[min\(var\(--radius-md\)\,10px\)\]{border-radius:min(var(--radius-md), 10px)}.rounded-\[min\(var\(--radius-md\)\,12px\)\]{border-radius:min(var(--radius-md), 12px)}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) * .8)}.rounded-xl{border-radius:calc(var(--radius) * 1.4)}.rounded-t-xl{border-top-left-radius:calc(var(--radius) * 1.4);border-top-right-radius:calc(var(--radius) * 1.4)}.rounded-b-xl{border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-500\/50{border-color:#f99c0080}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/50{border-color:color-mix(in oklab, var(--color-amber-500) 50%, transparent)}}.border-border,.border-border\/60{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/60{border-color:color-mix(in oklab, var(--border) 60%, transparent)}}.border-destructive,.border-destructive\/40{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/40{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.border-destructive\/50{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/50{border-color:color-mix(in oklab, var(--destructive) 50%, transparent)}}.border-input{border-color:var(--input)}.border-primary,.border-primary\/40{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/40{border-color:color-mix(in oklab, var(--primary) 40%, transparent)}}.border-sidebar-border{border-color:var(--sidebar-border)}.border-transparent{border-color:#0000}.bg-accent{background-color:var(--accent)}.bg-amber-500\/5{background-color:#f99c000d}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/5{background-color:color-mix(in oklab, var(--color-amber-500) 5%, transparent)}}.bg-background,.bg-background\/90{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/90{background-color:color-mix(in oklab, var(--background) 90%, transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-chart-1,.bg-chart-1\/15{background-color:var(--chart-1)}@supports (color:color-mix(in lab, red, red)){.bg-chart-1\/15{background-color:color-mix(in oklab, var(--chart-1) 15%, transparent)}}.bg-chart-2{background-color:var(--chart-2)}.bg-chart-3,.bg-chart-3\/15{background-color:var(--chart-3)}@supports (color:color-mix(in lab, red, red)){.bg-chart-3\/15{background-color:color-mix(in oklab, var(--chart-3) 15%, transparent)}}.bg-chart-4{background-color:var(--chart-4)}.bg-destructive,.bg-destructive\/5{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/5{background-color:color-mix(in oklab, var(--destructive) 5%, transparent)}}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-muted,.bg-muted\/20{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/20{background-color:color-mix(in oklab, var(--muted) 20%, transparent)}}.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/40{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-muted\/60{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/60{background-color:color-mix(in oklab, var(--muted) 60%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/15{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/15{background-color:color-mix(in oklab, var(--primary) 15%, transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.bg-primary\/70{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/70{background-color:color-mix(in oklab, var(--primary) 70%, transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-accent{background-color:var(--sidebar-accent)}.bg-sidebar\/90{background-color:var(--sidebar)}@supports (color:color-mix(in lab, red, red)){.bg-sidebar\/90{background-color:color-mix(in oklab, var(--sidebar) 90%, transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-clip-padding{background-clip:padding-box}.fill-accent-text{fill:var(--accent-text)}.fill-card{fill:var(--card)}.fill-foreground{fill:var(--foreground)}.fill-muted-foreground{fill:var(--muted-foreground)}.fill-primary,.fill-primary\/20{fill:var(--primary)}@supports (color:color-mix(in lab, red, red)){.fill-primary\/20{fill:color-mix(in oklab, var(--primary) 20%, transparent)}}.fill-sidebar{fill:var(--sidebar)}.stroke-accent-text{stroke:var(--accent-text)}.stroke-border{stroke:var(--border)}.stroke-muted-foreground{stroke:var(--muted-foreground)}.stroke-primary{stroke:var(--primary)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-\(--card-spacing\){padding:var(--card-spacing)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-\(--card-spacing\){padding-inline:var(--card-spacing)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-\(--card-spacing\){padding-block:var(--card-spacing)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-px{padding-block:1px}.pt-0{padding-top:0}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-24{padding-top:calc(var(--spacing) * 24)}.pt-\[12vh\]{padding-top:12vh}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-40{padding-bottom:calc(var(--spacing) * 40)}.pl-1{padding-left:var(--spacing)}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.font-heading{font-family:var(--heading-font)}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.3em\]{--tw-tracking:.3em;letter-spacing:.3em}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent-foreground{color:var(--accent-foreground)}.text-accent-text{color:var(--accent-text)}.text-amber-500{color:var(--color-amber-500)}.text-card-foreground{color:var(--card-foreground)}.text-chart-3{color:var(--chart-3)}.text-chart-4{color:var(--chart-4)}.text-destructive{color:var(--destructive)}.text-foreground,.text-foreground\/60{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/60{color:color-mix(in oklab, var(--foreground) 60%, transparent)}}.text-muted-foreground,.text-muted-foreground\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/70{color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.text-muted-foreground\/80{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/80{color:color-mix(in oklab, var(--muted-foreground) 80%, transparent)}}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-accent-foreground{color:var(--sidebar-accent-foreground)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.decoration-dotted{text-decoration-style:dotted}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.caret-current{caret-color:currentColor}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-accent-text{--tw-ring-color:var(--accent-text)}.ring-foreground\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.\!filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[--card-spacing\:--spacing\(4\)\]{--card-spacing:calc(var(--spacing) * 4)}.running{animation-play-state:running}.group-open\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}.group-data-\[size\=sm\]\/card\:text-sm:is(:where(.group\/card)[data-size=sm] *){font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.group-data-\[variant\=line\]\/tabs-list\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *){background-color:#0000}.group-data-horizontal\/tabs\:h-8:is(:where(.group\/tabs):where([data-orientation=horizontal]) *){height:calc(var(--spacing) * 8)}.group-data-vertical\/tabs\:h-fit:is(:where(.group\/tabs):where([data-orientation=vertical]) *){height:fit-content}.group-data-vertical\/tabs\:w-full:is(:where(.group\/tabs):where([data-orientation=vertical]) *){width:100%}.group-data-vertical\/tabs\:flex-col:is(:where(.group\/tabs):where([data-orientation=vertical]) *){flex-direction:column}.group-data-vertical\/tabs\:justify-start:is(:where(.group\/tabs):where([data-orientation=vertical]) *){justify-content:flex-start}.selection\:bg-primary\/30 ::selection{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.selection\:bg-primary\/30 ::selection{background-color:color-mix(in oklab, var(--primary) 30%, transparent)}}.selection\:bg-primary\/30::selection{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.selection\:bg-primary\/30::selection{background-color:color-mix(in oklab, var(--primary) 30%, transparent)}}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:bg-foreground:after{content:var(--tw-content);background-color:var(--foreground)}.after\:opacity-0:after{content:var(--tw-content);opacity:0}.after\:transition-opacity:after{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.group-data-horizontal\/tabs\:after\:inset-x-0:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);inset-inline:0}.group-data-horizontal\/tabs\:after\:bottom-\[-5px\]:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);bottom:-5px}.group-data-horizontal\/tabs\:after\:h-0\.5:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.group-data-vertical\/tabs\:after\:inset-y-0:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);inset-block:0}.group-data-vertical\/tabs\:after\:-right-1:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);right:calc(var(--spacing) * -1)}.group-data-vertical\/tabs\:after\:w-0\.5:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);width:calc(var(--spacing) * .5)}.last\:mb-0:last-child{margin-bottom:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.focus-within\:border-ring:focus-within{border-color:var(--ring)}@media (hover:hover){.hover\:bg-\[color-mix\(in_oklch\,var\(--secondary\)\,var\(--foreground\)_5\%\)\]:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[color-mix\(in_oklch\,var\(--secondary\)\,var\(--foreground\)_5\%\)\]:hover{background-color:color-mix(in oklch,var(--secondary),var(--foreground) 5%)}}.hover\:bg-destructive\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.hover\:bg-muted:hover,.hover\:bg-muted\/40:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/40:hover{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.hover\:bg-primary\/80:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab, var(--primary) 80%, transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-accent-text:hover{color:var(--accent-text)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus,:is(.not-data-\[variant\=destructive\]\:focus\:\*\*\:text-accent-foreground:not([data-variant=destructive]):focus *){color:var(--accent-foreground)}.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-3:focus-visible,.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.active\:cursor-grabbing:active{cursor:grabbing}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}@media (hover:hover){.enabled\:hover\:text-foreground:enabled:hover{color:var(--foreground)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-input\/50:disabled{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.disabled\:bg-input\/50:disabled{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}:where([data-slot=button-group]) .in-data-\[slot\=button-group\]\:rounded-lg{border-radius:var(--radius)}.has-aria-expanded\:bg-muted\/50:has([aria-expanded=true]){background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.has-aria-expanded\:bg-muted\/50:has([aria-expanded=true]){background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.has-data-\[icon\=inline-end\]\:pr-1:has([data-icon=inline-end]){padding-right:var(--spacing)}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-start\]\:pl-1:has([data-icon=inline-start]){padding-left:var(--spacing)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[slot\=card-description\]\:grid-rows-\[auto_auto\]:has([data-slot=card-description]){grid-template-rows:auto auto}.has-data-\[slot\=card-footer\]\:pb-0:has([data-slot=card-footer]){padding-bottom:0}.has-\[\>img\:first-child\]\:pt-0:has(>img:first-child){padding-top:0}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-highlighted\:bg-accent[data-highlighted]{background-color:var(--accent)}.data-highlighted\:text-accent-foreground[data-highlighted]{color:var(--accent-foreground)}.data-placeholder\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[align-trigger\=true\]\:animate-none[data-align-trigger=true]{animation:none}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=inline-end\]\:slide-in-from-left-2[data-side=inline-end]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=inline-start\]\:slide-in-from-right-2[data-side=inline-start],.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-8[data-size=default]{height:calc(var(--spacing) * 8)}.data-\[size\=sm\]\:h-7[data-size=sm]{height:calc(var(--spacing) * 7)}.data-\[size\=sm\]\:rounded-\[min\(var\(--radius-md\)\,10px\)\][data-size=sm]{border-radius:min(var(--radius-md), 10px)}.data-\[size\=sm\]\:\[--card-spacing\:--spacing\(3\)\][data-size=sm]{--card-spacing:calc(var(--spacing) * 3)}.data-\[size\=sm\]\:has-data-\[slot\=card-footer\]\:pb-0[data-size=sm]:has([data-slot=card-footer]){padding-bottom:0}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-1\.5>*)[data-slot=select-value]{gap:calc(var(--spacing) * 1.5)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[variant\=line\]\:rounded-none[data-variant=line]{border-radius:0}@media (width>=40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:mt-0{margin-top:0}.sm\:contents{display:contents}.sm\:hidden{display:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-\[minmax\(8rem\,max-content\)_1fr\]{grid-template-columns:minmax(8rem,max-content) 1fr}.sm\:grid-cols-\[minmax\(8rem\,max-content\)_1fr_1fr\]{grid-template-columns:minmax(8rem,max-content) 1fr 1fr}.sm\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}}@media (width>=48rem){.md\:sticky{position:sticky}.md\:top-0{top:0}.md\:h-screen{height:100vh}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-\[20rem_1fr\]{grid-template-columns:20rem 1fr}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}@media (hover:hover){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab, var(--destructive) 30%, transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.dark\:hover\:text-foreground:is(.dark *):hover{color:var(--foreground)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:color-mix(in oklab, var(--input) 80%, transparent)}}.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab, var(--destructive) 50%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.data-open\:animate-in:where([data-state=open]),.data-open\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0:where([data-state=open]),.data-open\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-state=open]),.data-open\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}.data-closed\:animate-out:where([data-state=closed]),.data-closed\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0:where([data-state=closed]),.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.data-closed\:zoom-out-95:where([data-state=closed]),.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.data-disabled\:pointer-events-none:where([data-disabled=true]),.data-disabled\:pointer-events-none:where([data-disabled]:not([data-disabled=false])){pointer-events:none}.data-disabled\:opacity-50:where([data-disabled=true]),.data-disabled\:opacity-50:where([data-disabled]:not([data-disabled=false])){opacity:.5}.data-active\:bg-background:where([data-state=active]),.data-active\:bg-background:where([data-active]:not([data-active=false])){background-color:var(--background)}.data-active\:text-foreground:where([data-state=active]),.data-active\:text-foreground:where([data-active]:not([data-active=false])){color:var(--foreground)}.group-data-\[variant\=default\]\/tabs-list\:data-active\:shadow-sm:is(:where(.group\/tabs-list)[data-variant=default] *):where([data-state=active]),.group-data-\[variant\=default\]\/tabs-list\:data-active\:shadow-sm:is(:where(.group\/tabs-list)[data-variant=default] *):where([data-active]:not([data-active=false])){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}.group-data-\[variant\=line\]\/tabs-list\:data-active\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}:is(.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false]))):after{content:var(--tw-content);opacity:1}.dark\:data-active\:border-input:is(.dark *):where([data-state=active]),.dark\:data-active\:border-input:is(.dark *):where([data-active]:not([data-active=false])){border-color:var(--input)}.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:data-active\:text-foreground:is(.dark *):where([data-state=active]),.dark\:data-active\:text-foreground:is(.dark *):where([data-active]:not([data-active=false])){color:var(--foreground)}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){border-color:#0000}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}.data-horizontal\:h-2\.5:where([data-orientation=horizontal]){height:calc(var(--spacing) * 2.5)}.data-horizontal\:h-px:where([data-orientation=horizontal]){height:1px}.data-horizontal\:w-full:where([data-orientation=horizontal]){width:100%}.data-horizontal\:flex-col:where([data-orientation=horizontal]){flex-direction:column}.data-horizontal\:border-t:where([data-orientation=horizontal]){border-top-style:var(--tw-border-style);border-top-width:1px}.data-horizontal\:border-t-transparent:where([data-orientation=horizontal]){border-top-color:#0000}.data-vertical\:h-full:where([data-orientation=vertical]){height:100%}.data-vertical\:w-2\.5:where([data-orientation=vertical]){width:calc(var(--spacing) * 2.5)}.data-vertical\:w-px:where([data-orientation=vertical]){width:1px}.data-vertical\:self-stretch:where([data-orientation=vertical]){align-self:stretch}.data-vertical\:border-l:where([data-orientation=vertical]){border-left-style:var(--tw-border-style);border-left-width:1px}.data-vertical\:border-l-transparent:where([data-orientation=vertical]){border-left-color:#0000}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\.border-b\]\:pb-\(--card-spacing\).border-b{padding-bottom:var(--card-spacing)}@media (hover:hover){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.\[a\]\:hover\:bg-muted:is(a):hover{background-color:var(--muted)}.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:color-mix(in oklab, var(--primary) 80%, transparent)}}.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.\[a\]\:hover\:text-muted-foreground:is(a):hover{color:var(--muted-foreground)}}:is(.\*\:\[img\:first-child\]\:rounded-t-xl>*):is(img:first-child){border-top-left-radius:calc(var(--radius) * 1.4);border-top-right-radius:calc(var(--radius) * 1.4)}:is(.\*\:\[img\:last-child\]\:rounded-b-xl>*):is(img:last-child){border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3\!>svg{width:calc(var(--spacing) * 3)!important;height:calc(var(--spacing) * 3)!important}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@property --scroll-fade-t{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-b{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-s{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-e{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-mask{syntax:"*";inherits:false}@property --shimmer-angle{syntax:"<angle>";inherits:true;initial-value:20deg}@property --shimmer-image{syntax:"*";inherits:false}@property --shimmer-text-fill{syntax:"*";inherits:false}@media (prefers-reduced-motion:reduce){.shimmer{-webkit-text-fill-color:currentColor;background-image:none;animation:none}}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Orbitron;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/orbitron-latin-700-normal-4jsRXGGJ.woff2)format("woff2"),url(/assets/orbitron-latin-700-normal-DmYOh-W9.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Orbitron;font-style:normal;font-display:swap;font-weight:900;src:url(/assets/orbitron-latin-900-normal-DrIi7unX.woff2)format("woff2"),url(/assets/orbitron-latin-900-normal-BbJatbhp.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Share Tech Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/share-tech-mono-latin-400-normal-CCqdbj5z.woff2)format("woff2"),url(/assets/share-tech-mono-latin-400-normal-15MgdvEM.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Anton;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/anton-vietnamese-400-normal-CkBxLiRJ.woff2)format("woff2"),url(/assets/anton-vietnamese-400-normal-2FfR1wHA.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Anton;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/anton-latin-ext-400-normal-SyiqE2Jt.woff2)format("woff2"),url(/assets/anton-latin-ext-400-normal-BMODBQc6.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Anton;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/anton-latin-400-normal-Byf51wtH.woff2)format("woff2"),url(/assets/anton-latin-400-normal-AUNGEG_V.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Antonio;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/antonio-latin-ext-400-normal-nE82dizb.woff2)format("woff2"),url(/assets/antonio-latin-ext-400-normal-qA9Jb92z.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Antonio;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/antonio-latin-400-normal-CZjzwNAN.woff2)format("woff2"),url(/assets/antonio-latin-400-normal-B7iMKlzw.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Antonio;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/antonio-latin-ext-700-normal-D-dvgqjr.woff2)format("woff2"),url(/assets/antonio-latin-ext-700-normal-BdSkr58W.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Antonio;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/antonio-latin-700-normal-DSH-lEDG.woff2)format("woff2"),url(/assets/antonio-latin-700-normal-BY3mCh47.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root,[data-theme=neon-sunset]{--heading-font:"Orbitron", "Geist Variable", sans-serif;--body-font:"Share Tech Mono", ui-monospace, monospace;--neon-cyan:oklch(88% .14 205);--neon-pink:oklch(68% .27 350);--neon-violet:oklch(55% .25 295);--background:oklch(14% .07 285);--foreground:oklch(94% .03 215);--card:oklch(19% .09 290/.7);--card-foreground:oklch(94% .03 215);--popover:oklch(17% .08 288);--popover-foreground:oklch(94% .03 215);--primary:var(--neon-pink);--primary-foreground:oklch(99% 0 0);--secondary:oklch(30% .14 295);--secondary-foreground:var(--neon-cyan);--accent-text:var(--secondary-foreground);--muted:oklch(24% .1 290);--muted-foreground:oklch(74% .08 250);--accent:oklch(30% .14 295);--accent-foreground:var(--neon-cyan);--destructive:oklch(68% .27 25);--border:oklch(88% .14 205/.35);--input:oklch(88% .14 205/.3);--ring:var(--neon-cyan);--chart-1:var(--neon-cyan);--chart-2:var(--neon-pink);--chart-3:var(--neon-violet);--chart-4:oklch(85% .17 95);--chart-5:oklch(75% .2 150);--chart-glow:6;--radius:.25rem;--sidebar:oklch(17% .08 288);--sidebar-foreground:oklch(94% .03 215);--sidebar-primary:var(--neon-pink);--sidebar-primary-foreground:oklch(99% 0 0);--sidebar-accent:oklch(30% .14 295);--sidebar-accent-foreground:var(--neon-cyan);--sidebar-border:oklch(88% .14 205/.35);--sidebar-ring:var(--neon-cyan);--title-color:var(--neon-cyan);--title-shadow:0 0 10px oklch(88% .14 205/.7);--selection:var(--neon-pink);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=phantom-heist]{--heading-font:"Anton", "Geist Variable", sans-serif;--body-font:"Geist Variable", ui-sans-serif, system-ui, sans-serif;--p5-red:oklch(58% .24 27);--p5-red-deep:oklch(30% .13 25);--p5-white:oklch(97% .01 90);--background:oklch(12% .01 25);--foreground:var(--p5-white);--card:oklch(10% 0 0);--card-foreground:var(--p5-white);--popover:oklch(10% 0 0);--popover-foreground:var(--p5-white);--primary:var(--p5-red);--primary-foreground:oklch(99% 0 0);--secondary:var(--p5-white);--secondary-foreground:oklch(10% 0 0);--accent-text:var(--p5-white);--muted:oklch(20% .03 25);--muted-foreground:oklch(78% .04 60);--accent:var(--p5-red);--accent-foreground:oklch(99% 0 0);--destructive:oklch(70% .2 40);--border:var(--p5-white);--input:oklch(97% .01 90/.4);--ring:var(--p5-red);--chart-1:var(--p5-red);--chart-2:var(--p5-white);--chart-3:oklch(72% .17 27);--chart-4:oklch(85% .1 90);--chart-5:oklch(65% .02 25);--chart-glow:0;--radius:0;--sidebar:oklch(8% 0 0);--sidebar-foreground:var(--p5-white);--sidebar-primary:var(--p5-red);--sidebar-primary-foreground:oklch(99% 0 0);--sidebar-accent:var(--p5-red);--sidebar-accent-foreground:oklch(99% 0 0);--sidebar-border:var(--p5-white);--sidebar-ring:var(--p5-red);--title-color:var(--p5-white);--title-shadow:2px 2px 0 var(--p5-red);--selection:var(--p5-red);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=standard]{--heading-font:"Geist Variable", ui-sans-serif, system-ui, sans-serif;--body-font:"Geist Variable", ui-sans-serif, system-ui, sans-serif;--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:oklch(68.5% .169 237);--primary-foreground:oklch(98% .01 237);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--accent-text:var(--secondary-foreground);--muted:oklch(97% 0 0);--muted-foreground:oklch(45% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(68.5% .169 237);--chart-1:oklch(68.5% .169 237);--chart-2:oklch(60% .118 185);--chart-3:oklch(40% .07 227);--chart-4:oklch(83% .19 84);--chart-5:oklch(77% .19 70);--chart-glow:0;--radius:.625rem;--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:oklch(68.5% .169 237);--sidebar-primary-foreground:oklch(98% .01 237);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(68.5% .169 237);--title-color:var(--foreground);--title-shadow:none;--selection:var(--primary);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=standard-dark]{--heading-font:"Geist Variable", ui-sans-serif, system-ui, sans-serif;--body-font:"Geist Variable", ui-sans-serif, system-ui, sans-serif;--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(68.5% .169 237);--primary-foreground:oklch(14.5% .02 237);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--accent-text:var(--secondary-foreground);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(68.5% .169 237);--chart-1:oklch(68.5% .169 237);--chart-2:oklch(69.6% .118 185);--chart-3:oklch(76.9% .08 227);--chart-4:oklch(83% .19 84);--chart-5:oklch(77% .19 70);--chart-glow:0;--radius:.625rem;--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(68.5% .169 237);--sidebar-primary-foreground:oklch(14.5% .02 237);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(68.5% .169 237);--title-color:var(--foreground);--title-shadow:none;--selection:var(--primary);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=digital-rain]{--heading-font:"Share Tech Mono", ui-monospace, monospace;--body-font:"Share Tech Mono", ui-monospace, monospace;--mx-green:oklch(82% .24 145);--mx-dim:oklch(50% .15 145);--background:oklch(8% .02 150);--foreground:oklch(85% .2 145);--card:oklch(10% .03 150/.82);--card-foreground:oklch(85% .2 145);--popover:oklch(10% .03 150);--popover-foreground:oklch(85% .2 145);--primary:var(--mx-green);--primary-foreground:oklch(12% .03 150);--secondary:oklch(20% .06 150);--secondary-foreground:var(--mx-green);--accent-text:var(--secondary-foreground);--muted:oklch(16% .05 150);--muted-foreground:oklch(66% .15 145);--accent:oklch(22% .07 150);--accent-foreground:var(--mx-green);--destructive:oklch(65% .25 25);--border:oklch(82% .24 145/.4);--input:oklch(82% .24 145/.35);--ring:var(--mx-green);--chart-1:var(--mx-green);--chart-2:oklch(70% .18 165);--chart-3:oklch(55% .15 145);--chart-4:oklch(90% .2 120);--chart-5:oklch(40% .1 145);--chart-glow:5;--radius:0;--sidebar:oklch(9% .025 150/.9);--sidebar-foreground:oklch(85% .2 145);--sidebar-primary:var(--mx-green);--sidebar-primary-foreground:oklch(12% .03 150);--sidebar-accent:oklch(22% .07 150);--sidebar-accent-foreground:var(--mx-green);--sidebar-border:oklch(82% .24 145/.4);--sidebar-ring:var(--mx-green);--title-color:var(--mx-green);--title-shadow:0 0 8px oklch(82% .24 145/.8);--selection:var(--mx-green);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=lcars]{--heading-font:"Antonio", "Geist Variable", sans-serif;--body-font:"Antonio", "Geist Variable", sans-serif;--lc-yellow:oklch(86% .17 92);--lc-pale:oklch(95% .1 105);--lc-lilac:oklch(80% .03 285);--lc-orange:oklch(75% .15 60);--background:oklch(0% 0 0);--foreground:var(--lc-pale);--card:oklch(12% 0 0);--card-foreground:var(--lc-pale);--popover:oklch(10% 0 0);--popover-foreground:var(--lc-pale);--primary:var(--lc-yellow);--primary-foreground:oklch(10% 0 0);--secondary:var(--lc-lilac);--secondary-foreground:oklch(10% 0 0);--accent-text:var(--lc-yellow);--muted:oklch(20% 0 0);--muted-foreground:oklch(80% .04 95);--accent:var(--lc-lilac);--accent-foreground:oklch(10% 0 0);--destructive:oklch(68% .2 30);--border:oklch(86% .17 92/.55);--input:oklch(80% .03 285/.5);--ring:var(--lc-orange);--chart-1:var(--lc-yellow);--chart-2:var(--lc-lilac);--chart-3:var(--lc-orange);--chart-4:var(--lc-pale);--chart-5:oklch(70% .12 330);--chart-glow:0;--radius:1rem;--sidebar:oklch(5% 0 0);--sidebar-foreground:var(--lc-pale);--sidebar-primary:var(--lc-yellow);--sidebar-primary-foreground:oklch(10% 0 0);--sidebar-accent:var(--lc-lilac);--sidebar-accent-foreground:oklch(10% 0 0);--sidebar-border:oklch(86% .17 92/.55);--sidebar-ring:var(--lc-orange);--title-color:var(--lc-yellow);--title-shadow:none;--selection:var(--lc-orange);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html{overflow-x:hidden}body{min-height:100vh}[data-slot=card-title]{text-transform:uppercase;letter-spacing:.08em;color:var(--title-color);text-shadow:var(--title-shadow)}[data-slot=badge]{font-family:var(--font-sans);text-shadow:none;text-transform:uppercase;letter-spacing:.1em;border-radius:0;font-style:normal;font-weight:500}::selection{background:var(--selection);color:#fff}.neon-title{font-family:var(--font-heading);text-transform:uppercase}:root:not([data-theme]) body,[data-theme=neon-sunset] body{background:radial-gradient(60% 40% at 50% 0,oklch(62% .2 235/.45),#0000 70%),radial-gradient(90% 30% at 50% 62%,oklch(60% .28 350/.4),#0000 70%),linear-gradient(oklch(10% .06 270) 0%,oklch(17% .12 290) 60%,oklch(12% .08 300) 100%)}:root:not([data-theme]) body:before,[data-theme=neon-sunset] body:before{content:"";z-index:-1;background-image:linear-gradient(oklch(68% .27 350/.35) 6px, transparent 6px), linear-gradient(90deg, oklch(68% .27 350/.35) 6px, transparent 6px), linear-gradient(var(--neon-pink) 2px, transparent 2px), linear-gradient(90deg, var(--neon-pink) 2px, transparent 2px);transform-origin:50% 100%;will-change:transform;background-position:-2px -2px,-2px -2px,0 0,0 0;background-size:70px 70px;height:calc(70vh + 70px);animation:2.4s linear infinite grid-scroll;position:fixed;bottom:0;left:-50%;right:-50%;-webkit-mask-image:linear-gradient(#0000 0%,#000 55%);mask-image:linear-gradient(#0000 0%,#000 55%)}:root:not([data-theme]) body:after,[data-theme=neon-sunset] body:after{content:"";z-index:50;pointer-events:none;background:repeating-linear-gradient(0deg,oklch(0% 0 0/.14) 0 1px,#0000 1px 3px);position:fixed;inset:0}@keyframes grid-scroll{0%{transform:perspective(240px)rotateX(60deg)translateY(0)}to{transform:perspective(240px)rotateX(60deg)translateY(70px)}}@keyframes flicker{0%,to{opacity:1}92%{opacity:1}93%{opacity:.55}94%{opacity:1}96%{opacity:.7}}:root:not([data-theme]) .neon-title,[data-theme=neon-sunset] .neon-title{letter-spacing:.04em;font-style:italic;font-weight:900}:root:not([data-theme]) .chrome-text,[data-theme=neon-sunset] .chrome-text{color:#0000;filter:drop-shadow(0 0 10px oklch(80% .14 215/.6));background:linear-gradient(oklch(99% .01 215) 0%,oklch(80% .08 230) 48%,oklch(45% .12 270) 52%,oklch(85% .08 220) 100%);-webkit-background-clip:text;background-clip:text}:root:not([data-theme]) .neon-pink-text,[data-theme=neon-sunset] .neon-pink-text{color:var(--neon-pink);text-shadow:0 0 4px oklch(95% .1 350), 0 0 14px var(--neon-pink), 0 0 36px var(--neon-pink);animation:5s infinite flicker}[data-theme=phantom-heist] body{background:radial-gradient(oklch(40% .15 27/.45) 1.5px, transparent 1.6px) 0 0 / 14px 14px, var(--background)}[data-theme=phantom-heist] body:before{content:"";z-index:-1;background:var(--p5-red);clip-path:polygon(0 0,62% 0,38% 100%,0 100%);opacity:.9;position:fixed;inset:0}[data-theme=phantom-heist] body:after{content:"";z-index:-1;background:var(--p5-white);clip-path:polygon(14% 0,100% 12%,86% 100%,0 82%);opacity:.08;width:46vw;height:34vh;position:fixed;bottom:-4vh;right:-6vw}[data-theme=phantom-heist] .neon-title{letter-spacing:.02em;font-style:normal;transform:rotate(-4deg)skew(-6deg)}[data-theme=phantom-heist] .chrome-text,[data-theme=phantom-heist] .neon-pink-text{padding:0 .15em;display:inline-block}[data-theme=phantom-heist] .chrome-text{background:var(--p5-white);color:oklch(10% 0 0);transform:skew(-4deg)rotate(1deg);box-shadow:.06em .06em oklch(10% 0 0)}[data-theme=phantom-heist] .neon-pink-text{color:var(--p5-red);box-shadow:.06em .06em 0 var(--p5-white);background:oklch(10% 0 0);transform:skew(-4deg)rotate(-1.5deg)}[data-theme=phantom-heist] [data-slot=card]{border:3px solid var(--p5-white);box-shadow:7px 7px 0 var(--p5-red);--tilt:-.8deg;transform:rotate(var(--tilt));transition:transform .12s ease-out,box-shadow .12s ease-out}[data-theme=phantom-heist] a:nth-child(2n)>[data-slot=card]{--tilt:.7deg}[data-theme=phantom-heist] a:hover>[data-slot=card]{box-shadow:10px 10px 0 var(--p5-red);transform:rotate(0)scale(1.03)}[data-theme=phantom-heist] [data-slot=card-title]{font-family:var(--font-heading);letter-spacing:.04em;font-size:1.35rem;font-style:italic}[data-theme=phantom-heist] [data-slot=badge]{clip-path:polygon(6% 0,100% 0,94% 100%,0 100%)}[data-theme=phantom-heist] h1,[data-theme=phantom-heist] h2,[data-theme=phantom-heist] h3{font-family:var(--font-heading);text-transform:uppercase;letter-spacing:.03em}[data-theme=digital-rain] body{background:var(--background)}[data-theme=digital-rain] body:after{content:"";z-index:50;pointer-events:none;background:radial-gradient(#0000 55%,oklch(0% 0 0/.55) 100%),repeating-linear-gradient(0deg,oklch(0% 0 0/.18) 0 1px,#0000 1px 3px);position:fixed;inset:0}[data-theme=digital-rain] .digital-rain{z-index:-1;width:100%;height:100%;position:fixed;inset:0}[data-theme=digital-rain] .neon-title{letter-spacing:.12em;color:var(--mx-green);text-shadow:0 0 6px var(--mx-green), 0 0 24px oklch(82% .24 145/.6)}[data-theme=digital-rain] .chrome-text,[data-theme=digital-rain] .neon-pink-text{color:inherit;animation:4.5s step-end infinite digital-glitch;display:inline-block;position:relative}[data-theme=digital-rain] .neon-pink-text{animation-delay:-2.2s}[data-theme=digital-rain] [data-slot=card]{border:1px solid var(--border);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);box-shadow:0 0 14px oklch(82% .24 145/.2),inset 0 0 18px oklch(82% .24 145/.08)}[data-theme=digital-rain] a:hover>[data-slot=card]{border-color:var(--mx-green);box-shadow:0 0 22px oklch(82% .24 145/.45),inset 0 0 18px oklch(82% .24 145/.14)}@keyframes digital-glitch{0%,91%,to{text-shadow:inherit;clip-path:none;transform:none}92%{text-shadow:3px 0 oklch(65% .25 25),-3px 0 oklch(80% .15 200);clip-path:inset(10% 0 55%);transform:translate(-4px,1px)skew(-8deg)}93%{text-shadow:-3px 0 oklch(65% .25 25),3px 0 oklch(80% .15 200);clip-path:inset(55% 0 8%);transform:translate(5px,-1px)}94%{clip-path:none;transform:translate(-2px)skew(6deg)}96%{text-shadow:2px 0 oklch(80% .15 200);transform:translate(3px,1px)}97%{transform:none}}[data-theme=lcars] body{background:var(--background)}[data-theme=lcars] .warp-field{z-index:-1;width:100%;height:100%;position:fixed;inset:0}[data-theme=lcars] .neon-title{letter-spacing:.04em;color:var(--lc-yellow);font-weight:700}[data-theme=lcars] .chrome-text{color:var(--lc-pale)}[data-theme=lcars] .neon-pink-text{color:var(--lc-orange)}[data-theme=lcars] [data-slot=card]{border:0;border-left:.9rem solid var(--lc-yellow);background:var(--card);border-radius:1.75rem .25rem .25rem 1.75rem}[data-theme=lcars] a:nth-child(3n+2)>[data-slot=card]{border-left-color:var(--lc-lilac)}[data-theme=lcars] a:nth-child(3n)>[data-slot=card]{border-left-color:var(--lc-orange)}[data-theme=lcars] a:hover>[data-slot=card]{background:oklch(20% .02 95)}[data-theme=lcars] button,[data-theme=lcars] [data-slot=badge]{text-transform:uppercase;letter-spacing:.08em;border-radius:999px}[data-theme=lcars] h1,[data-theme=lcars] h2,[data-theme=lcars] h3{font-family:var(--font-heading);text-transform:uppercase;letter-spacing:.06em}[data-theme=lcars]{--lc-salmon:oklch(74% .11 25);--lc-tan:oklch(82% .08 70);--lc-ink:oklch(12% 0 0)}[data-theme=lcars] nav[aria-label=Database]{background:var(--background);border-right:0;padding-right:.75rem}[data-theme=lcars] nav[aria-label=Database]>div:first-child{border-bottom:0}[data-theme=lcars] nav[aria-label=Database]>div:first-child a:first-child{background:var(--lc-orange);color:var(--lc-ink);border-radius:999px 0 0 999px;justify-content:flex-end;margin-bottom:3px;padding:.3rem .9rem;font-size:.8rem;font-weight:700;display:flex}[data-theme=lcars] nav[aria-label=Database]>div:first-child button{background:var(--lc-lilac);color:var(--lc-ink);border:0;border-radius:0 999px 999px 0;justify-content:flex-end;font-weight:700}[data-theme=lcars] nav[aria-label=Database]>div:first-child button:hover{background:var(--lc-pale);color:var(--lc-ink)}[data-theme=lcars] nav[aria-label=Database] li:has(>div>button[aria-expanded]){--block:var(--lc-yellow);margin-bottom:3px}[data-theme=lcars] nav[aria-label=Database] li:has(>div>button[aria-expanded]):nth-child(4n+2){--block:var(--lc-lilac)}[data-theme=lcars] nav[aria-label=Database] li:has(>div>button[aria-expanded]):nth-child(4n+3){--block:var(--lc-salmon)}[data-theme=lcars] nav[aria-label=Database] li:has(>div>button[aria-expanded]):nth-child(4n){--block:var(--lc-tan)}[data-theme=lcars] nav[aria-label=Database] li>div:has(>button[aria-expanded]){background:var(--block);border-radius:1.25rem 0 0 1.25rem;padding-right:.5rem}[data-theme=lcars] nav[aria-label=Database] li>div:has(>button[aria-expanded]):hover{background:var(--block)}@supports (color:color-mix(in lab, red, red)){[data-theme=lcars] nav[aria-label=Database] li>div:has(>button[aria-expanded]):hover{background:color-mix(in oklab, var(--block) 70%, white)}}[data-theme=lcars] nav[aria-label=Database] li>div>button[aria-expanded]{padding:.55rem .6rem .2rem .9rem}[data-theme=lcars] nav[aria-label=Database] li>div>button[aria-expanded] span,[data-theme=lcars] nav[aria-label=Database] li>div>a{color:var(--lc-ink);font-weight:700}[data-theme=lcars] nav[aria-label=Database] li>div>button[aria-expanded] span{letter-spacing:.06em;margin-left:auto}[data-theme=lcars] nav[aria-label=Database] li>div>button[aria-expanded] svg{order:2}[data-theme=lcars] nav[aria-label=Database] li>div:has(>button[aria-expanded])+div{border-left:0;margin-left:.75rem;padding-left:0}[data-theme=lcars] nav[aria-label=Database] summary{color:var(--block);font-weight:700}[data-theme=lcars] nav[aria-label=Database] details ul a{background:var(--block);border-radius:.9rem 0 0 .9rem;margin-top:2px;padding:.2rem .75rem}@supports (color:color-mix(in lab, red, red)){[data-theme=lcars] nav[aria-label=Database] details ul a{background:color-mix(in oklab, var(--block) 45%, black)}}[data-theme=lcars] nav[aria-label=Database] details ul a{color:var(--lc-pale);justify-content:flex-end}[data-theme=lcars] nav[aria-label=Database] details ul a svg{margin-right:auto}[data-theme=lcars] nav[aria-label=Database] details ul a:hover{background:var(--block)}@supports (color:color-mix(in lab, red, red)){[data-theme=lcars] nav[aria-label=Database] details ul a:hover{background:color-mix(in oklab, var(--block) 70%, black)}}[data-theme=lcars] nav[aria-label=Database] details ul a[aria-current=page]{background:var(--block);color:var(--lc-ink);font-weight:700}[data-theme=lcars] nav[aria-label=Database] details ul a[aria-current=page] span{color:var(--lc-ink)}[data-theme=lcars] nav[aria-label=Database]+main>header{background:var(--background);-webkit-backdrop-filter:none;backdrop-filter:none;border-bottom:0;gap:3px;padding-top:.6rem;padding-bottom:.6rem;padding-right:9rem}[data-theme=lcars] nav[aria-label=Database]+main>header:after{content:"";background:var(--lc-orange);border-radius:0 999px 999px 0;flex:1;min-width:1rem}[data-theme=lcars] nav[aria-label=Database]+main>header a{--block:var(--lc-yellow);background:var(--block);min-width:0;color:var(--lc-ink);letter-spacing:.08em;border:0;align-items:flex-end;margin-bottom:0;padding:.9rem .6rem .25rem;font-weight:700}[data-theme=lcars] nav[aria-label=Database]+main>header a svg{display:none}[data-theme=lcars] nav[aria-label=Database]+main>header a:first-child{border-radius:999px 0 0 999px;padding-left:1.4rem}[data-theme=lcars] nav[aria-label=Database]+main>header a:nth-child(4n+2){--block:var(--lc-lilac)}[data-theme=lcars] nav[aria-label=Database]+main>header a:nth-child(4n+3){--block:var(--lc-salmon)}[data-theme=lcars] nav[aria-label=Database]+main>header a:nth-child(4n){--block:var(--lc-tan)}[data-theme=lcars] nav[aria-label=Database]+main>header a:hover{background:var(--block)}@supports (color:color-mix(in lab, red, red)){[data-theme=lcars] nav[aria-label=Database]+main>header a:hover{background:color-mix(in oklab, var(--block) 65%, white)}}[data-theme=lcars] nav[aria-label=Database]+main>header a:hover{color:var(--lc-ink)}[data-theme=lcars] nav[aria-label=Database]+main>header a[aria-current=page]{background:var(--lc-pale);color:var(--lc-ink)}.star-chart,.cypher-readout{display:none}[data-theme=lcars]{--chart-blue:oklch(62% .18 262);--chart-blue-light:oklch(75% .14 255);--chart-green:oklch(80% .22 145)}[data-theme=lcars] .star-chart{display:inline}[data-theme=lcars] .star-grid-line{stroke:oklch(45% .17 265)}[data-theme=lcars] .star-dot{fill:oklch(55% .12 260)}[data-theme=lcars] .cypher-frame{border:.4rem solid var(--chart-blue);background:oklch(2% .01 265);border-radius:1.5rem}[data-theme=lcars] .cypher-edge{stroke:var(--chart-blue-light)}[data-theme=lcars] .cypher-dot{fill:var(--chart-blue);stroke:var(--chart-blue-light);filter:drop-shadow(0 0 5px oklch(62% .18 262/.7))}[data-theme=lcars] .cypher-label,[data-theme=lcars] .cypher-weight{fill:var(--chart-green);font-family:var(--heading-font);letter-spacing:.04em;text-transform:uppercase;stroke:oklch(2% .01 265);font-size:15px;font-weight:700}[data-theme=lcars] .cypher-weight{fill:var(--lc-orange)}[data-theme=lcars] .cypher-table{fill:var(--chart-blue-light);font-family:var(--heading-font);text-transform:uppercase}[data-theme=lcars] .cypher-readout{pointer-events:none;font-family:var(--heading-font);text-transform:uppercase;color:var(--lc-orange);justify-content:space-between;align-items:baseline;gap:1rem;display:flex;position:absolute;bottom:.5rem;left:1.25rem;right:1.25rem}[data-theme=lcars] .cypher-readout span{letter-spacing:.05em;font-size:1.1rem;font-weight:700}[data-theme=lcars] .cypher-readout strong{font-size:2.5rem;line-height:1}.theme-switcher{z-index:60;align-items:center;gap:.5rem;display:flex;position:fixed;top:.75rem;right:.75rem}.theme-switcher [data-slot=select-trigger]{background:var(--popover);color:var(--popover-foreground);letter-spacing:.08em;text-transform:uppercase;font-size:.72rem}@media (prefers-reduced-motion:reduce){body:before,.neon-pink-text,.chrome-text{animation:none}}[data-theme=standard] .neon-title,[data-theme=standard-dark] .neon-title{letter-spacing:-.03em;font-weight:700}[data-theme=standard] .neon-pink-text,[data-theme=standard-dark] .neon-pink-text{color:var(--primary)}[data-theme=standard] [data-slot=card-title],[data-theme=standard-dark] [data-slot=card-title]{text-transform:none;letter-spacing:0}[data-theme=digital-rain] nav[aria-label=Database]+main{background:oklch(5% .015 150/.82)}[data-theme=digital-rain] nav[aria-label=Database]{background:oklch(6% .02 150/.92)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
@@ -0,0 +1 @@
1
+ import{at as e}from"./route-DO6IZ7of.js";var t={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]};t.node;var n=e(t);export{n as t};
@@ -0,0 +1 @@
1
+ import{at as e}from"./route-DO6IZ7of.js";var t={name:`loader-circle`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]],aliases:[`loader-2`]};t.node;var n=e(t);export{n as t};
@@ -0,0 +1,4 @@
1
+ import{$ as e,J as t,Q as n,Y as r,Z as i,a,at as o,ct as s,n as c,ot as l,p as u,q as d,r as ee,rt as f,t as p}from"./route-DO6IZ7of.js";import{t as m}from"./button-ClA70PLR.js";import{a as te,i as ne,o as re,t as ie}from"./zone-D9dXk8tn.js";import{t as ae}from"./loader-circle-BK_GMdvN.js";import{t as oe}from"./rotate-ccw-CdCaf7Q6.js";import{t as se}from"./triangle-alert-COGnHCD1.js";import{a as ce,i as le,n as ue,o as de,r as fe,t as pe}from"./table-DfMz2f8M.js";import{$t as me,Gt as he,Jt as ge,Q as _e,Qt as h,Wt as ve,an as ye}from"./index-CDcnUacl.js";var g={name:`clipboard`,size:24,node:[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}]]};g.node;var be=o(g),_={name:`shield-check`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]};_.node;var xe=o(_),v=s(l(),1),y=[{id:`inner`,label:`Inner`,hint:`Only rows that have a match on both sides`},{id:`left`,label:`Left`,hint:`Every row so far, with the match when there is one`},{id:`right`,label:`Right`,hint:`Every row of the new table, with the match when there is one`},{id:`full`,label:`Full`,hint:`Every row from both sides`},{id:`cross`,label:`Cross`,hint:`Every row so far with every row of the new table`}],b=[`=`,`<>`,`<`,`<=`,`>`,`>=`],x=[{id:`count`,label:`count`},{id:`count distinct`,label:`count distinct`},{id:`sum`,label:`sum`},{id:`avg`,label:`average`},{id:`min`,label:`min`},{id:`max`,label:`max`}],S={eq:`is`,ne:`is not`,lt:`is less than`,lte:`is at most`,gt:`is more than`,gte:`is at least`,contains:`contains`,notcontains:`does not contain`,starts:`starts with`,ends:`ends with`,in:`is one of`,notin:`is none of`,between:`is between`,last:`is within the last`,true:`is true`,false:`is false`,null:`is empty (null)`,notnull:`is not empty`},Se=0,C=()=>`b${Date.now().toString(36)}${(Se++).toString(36)}`,w=(e=`and`)=>({kind:`group`,id:C(),match:e,items:[]}),T=()=>({joins:[],items:[],where:w(),having:w(),sort:[],distinct:!1,limit:100}),E=(e,t)=>`${e}.${t}`,Ce=e=>new Map(e.map(e=>[E(e.schema,e.name),e])),D=e=>[...e.from?[e.from]:[],...e.joins.map(e=>e.source)],O=(e,t)=>e.get(E(t.schema,t.table));function k(e,t,n,r){let i=D(e).find(e=>e.id===n);return i&&O(t,i)?.columns.find(e=>e.name===r)?.type}function A(e){return/^[a-z_][a-z0-9_$]*$/.test(e)&&!u(e)&&!p.has(e)?e:`"${e.replace(/"/g,`""`)}"`}function we(e,t){if(!t.includes(e))return e;for(let n=2;;n++)if(!t.includes(`${e}_${n}`))return`${e}_${n}`}function Te(e,t){return{id:C(),schema:e.schema,table:e.name,alias:we(e.name,t)}}function j(e){let t=e.toLowerCase().replace(/\(.*?\)/g,``).trim();return t.endsWith(`[]`)?`${j(t.slice(0,-2))}[]`:/^(smallint|integer|bigint|int[248]?|numeric|decimal|real|double precision|float[48]?|money|oid)$/.test(t)?`number`:/^(text|character varying|varchar|character|char|bpchar|citext|name)$/.test(t)?`text`:/^(boolean|bool)$/.test(t)?`boolean`:i(t)?`time`:/^json/.test(t)?`json`:t}var M=e=>j(e)===`number`,N=e=>j(e)===`text`;function P(e,t,n){let r=n.column===`*`?`bigint`:k(e,t,n.source,n.column);if(r)return n.aggregate===`count`||n.aggregate===`count distinct`?`bigint`:n.aggregate===`sum`||n.aggregate===`avg`?`numeric`:n.aggregate?r:n.bucket?n.bucket===`dow`||n.bucket===`hod`?`numeric`:`timestamp`:r}function Ee(e){let t=[`null`,`notnull`];if(!e)return[`eq`,`ne`,...t];let n=j(e);return n===`boolean`?[`true`,`false`,...t]:n===`number`?[`eq`,`ne`,`lt`,`lte`,`gt`,`gte`,`between`,`in`,`notin`,...t]:n===`time`?[`last`,`lt`,`lte`,`gt`,`gte`,`between`,`eq`,`ne`,...t]:n===`text`?[`eq`,`ne`,`contains`,`notcontains`,`starts`,`ends`,`in`,`notin`,`lt`,`gt`,...t]:[`eq`,`ne`,`in`,`notin`,`contains`,...t]}var De=e=>[`eq`,`ne`,`lt`,`lte`,`gt`,`gte`].includes(e),Oe=[`eq`,`ne`,`lt`,`lte`,`gt`,`gte`,`contains`,`notcontains`,`starts`,`ends`,`in`,`notin`,`between`,`last`],ke=e=>Oe.includes(e),F=e=>`'${e.replace(/\0/g,``).replace(/'/g,`''`)}'`;function I(e,t){let n=t.trim();return e&&M(e)&&/^-?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(n)?n:e&&j(e)===`boolean`&&/^(true|false)$/i.test(n)?n.toLowerCase():F(t)}var Ae=e=>e.replace(/[\\%_]/g,e=>`\\${e}`),je=[`minutes`,`hours`,`days`,`weeks`,`months`,`years`],Me=/^\d+ (minutes|hours|days|weeks|months|years)$/,L=(e,t)=>{let n=D(e).find(e=>e.id===t.source);return n?`${A(n.alias)}.${A(t.column)}`:void 0};function R(e,n,r){if(r.column===`*`)return r.aggregate===`count`?`count(*)`:void 0;let a=L(e,r);if(!a)return;if(r.aggregate)return`${r.aggregate===`count distinct`?`count(DISTINCT `:`${r.aggregate}(`}${a})`;let o=t.find(e=>e.id===r.bucket);if(!o)return a;let s=i(k(e,n,r.source,r.column)??``)??`timestamp`;return d(a,s,o,e.zone||void 0)}function Ne(e,t,n){let r=R(e,t,n.left);if(!r)return;let i=P(e,t,n.left),a=i&&!N(i)?`${r}::text`:r,o=e=>e===void 0||e.trim()===``?void 0:e,s=()=>(n.value??``).split(`,`).map(e=>e.trim()).filter(e=>e!==``),c={eq:`=`,ne:`<>`,lt:`<`,lte:`<=`,gt:`>`,gte:`>=`};switch(n.op){case`null`:return`${r} IS NULL`;case`notnull`:return`${r} IS NOT NULL`;case`true`:return`${r} IS TRUE`;case`false`:return`${r} IS FALSE`;case`eq`:case`ne`:case`lt`:case`lte`:case`gt`:case`gte`:{if(n.other){let t=L(e,n.other);return t?`${r} ${c[n.op]} ${t}`:void 0}let t=o(n.value);return t===void 0?void 0:`${r} ${c[n.op]} ${I(i,t)}`}case`contains`:case`notcontains`:case`starts`:case`ends`:{let e=o(n.value);if(e===void 0)return;let t=Ae(e),r=n.op===`starts`?`${t}%`:n.op===`ends`?`%${t}`:`%${t}%`;return`${a} ${n.op===`notcontains`?`NOT ILIKE`:`ILIKE`} ${F(r)}`}case`in`:case`notin`:{let e=s();return e.length===0?void 0:`${r} ${n.op===`notin`?`NOT IN`:`IN`} (${e.map(e=>I(i,e)).join(`, `)})`}case`between`:{let[e,t]=[o(n.value),o(n.value2)];return e===void 0||t===void 0?void 0:`${r} BETWEEN ${I(i,e)} AND ${I(i,t)}`}case`last`:{let e=n.value?.trim();return e&&Me.test(e)?`${r} >= now() - interval ${F(e)}`:void 0}}}function z(e,t,n,r){let i=n.items.flatMap(n=>{let r=n.kind===`group`?z(e,t,n,!0):Ne(e,t,n);return r===void 0?[]:[r]});if(i.length===0)return;let a=n.match===`and`?`AND`:`OR`;return r?i.length>1?`(${i.join(` ${a} `)})`:i[0]:i.join(`\n ${a} `)}var Pe=(e,t,n)=>Ne(e,t,n)!==void 0;function Fe(e){let n=t=>D(e).find(e=>e.id===t)?.alias??``,r=e=>{if(e.aggregate){let t=e.aggregate===`count distinct`?`distinct`:e.aggregate;return e.column===`*`?`count`:`${t}_${e.column}`}return e.bucket?t.find(t=>t.id===e.bucket)?.alias??e.column:e.column},i=e.items.map(e=>e.alias?.trim()||r(e)),a=e=>i.filter(t=>t===e).length,o=i.map((t,r)=>{let i=e.items[r];return i.alias?.trim()||a(t)===1?t:`${n(i.source)}_${t}`}),s=new Map;return o.map(e=>{let t=(s.get(e)??0)+1;return s.set(e,t),t===1?e:`${e}_${t}`})}var Ie=(e,t)=>e===void 0||t===void 0||j(e)===j(t),B=e=>e.items.some(e=>e.aggregate);function V(e){return e.items.flatMap(e=>e.kind===`group`?V(e):[e])}function Le(e,t){let n=[];if(!e.from)return[{level:`error`,text:`Pick a table to start from.`}];for(let r of D(e))O(t,r)||n.push({level:`error`,text:`${r.schema}.${r.table} is not in this database.`});for(let r of e.joins){r.kind!==`cross`&&!r.on.some(t=>L(e,t.left)&&L(e,t.right))&&n.push({level:`error`,text:`Say how ${r.source.alias} joins: pick the columns that match.`});for(let i of r.on){let[r,a]=[k(e,t,i.left.source,i.left.column),k(e,t,i.right.source,i.right.column)];!i.asText&&!Ie(r,a)&&n.push({level:`warning`,text:`${i.left.column} (${r}) and ${i.right.column} (${a}) have different types, which Postgres may refuse to compare. Tick "as text" on that join.`})}}e.items.length===0&&n.push({level:`error`,text:`Pick at least one column to show.`}),V(e.where).some(e=>e.left.aggregate)&&n.push({level:`error`,text:`Filters on a total belong under "Having".`});let r=B(e);if(V(e.having).length>0&&!r&&n.push({level:`error`,text:`"Having" filters totals, so show at least one count, sum, ... too.`}),V(e.having).some(e=>!e.left.aggregate)&&n.push({level:`error`,text:`"Having" can only test a count, sum, ...`}),r){let r=new Set(e.items.filter(e=>!e.aggregate).map(n=>R(e,t,n)));for(let i of e.sort)if(!i.expr.aggregate&&!r.has(R(e,t,i.expr))){n.push({level:`error`,text:`With totals, sort by a column you show, or by a total.`});break}}else e.sort.some(e=>e.expr.aggregate)&&n.push({level:`error`,text:`Sorting by a total needs that total in the columns shown.`});return e.distinct&&e.sort.some(n=>!e.items.some(r=>R(e,t,r)===R(e,t,n.expr)))&&n.push({level:`error`,text:`With "unique rows", sort only by columns you show.`}),n}function Re(e,t){if(!e.from||e.items.length===0)return;let n=Fe(e),r=e.items.flatMap((r,i)=>{let a=R(e,t,r);return a?[!r.aggregate&&!r.bucket&&n[i]===r.column?` ${a}`:` ${a} AS ${A(n[i])}`]:[]});if(r.length===0)return;let i=e=>`${A(e.schema)}.${A(e.table)}${e.alias===e.table?``:` AS ${A(e.alias)}`}`,a=[`SELECT${e.distinct?` DISTINCT`:``}`,r.join(`,
2
+ `),`FROM ${i(e.from)}`];for(let t of e.joins){if(t.kind===`cross`){a.push(`CROSS JOIN ${i(t.source)}`);continue}let n=t.on.flatMap(t=>{let[n,r]=[L(e,t.left),L(e,t.right)];return n&&r?[t.asText?`${n}::text ${t.op} ${r}::text`:`${n} ${t.op} ${r}`]:[]});a.push(`${t.kind.toUpperCase()} JOIN ${i(t.source)}`),a.push(` ON ${n.length>0?n.join(`
3
+ AND `):`true`}`)}let o=z(e,t,e.where,!1);o&&a.push(`WHERE ${o}`);let s=z(e,t,e.having,!1);if(B(e)){let n=e.items.filter(e=>!e.aggregate).flatMap(n=>R(e,t,n)??[]);n.length>0&&a.push(`GROUP BY ${n.join(`, `)}`)}s&&a.push(`HAVING ${s}`);let c=e.sort.flatMap(n=>{let r=R(e,t,n.expr);return r?[`${r}${n.descending?` DESC`:``}`]:[]});return c.length>0&&a.push(`ORDER BY ${c.join(`, `)}`),e.limit!==null&&e.limit>0&&a.push(`LIMIT ${Math.floor(e.limit)}`),`${a.join(`
4
+ `)};\n`}function H(e,t,n){let r=D(e).find(e=>e.id===n.source);if(!r)return!1;let i=O(t,r);return!i||n.column===`*`||i.columns.some(e=>e.name===n.column)}function ze(e,t){let n=r=>({...r,items:r.items.flatMap(r=>r.kind===`group`?[n(r)]:H(e,t,r.left)?[r.other&&!H(e,t,r.other)?{...r,other:void 0}:r]:[])});return{...e,joins:e.joins.map(n=>({...n,on:n.on.filter(n=>H(e,t,n.left)&&H(e,t,n.right))})),items:e.items.filter(n=>H(e,t,n)),where:n(e.where),having:n(e.having),sort:e.sort.filter(n=>H(e,t,n.expr))}}var Be=(e,t,n)=>ze({...e,joins:e.joins.filter(e=>e.id!==n)},t);function Ve(e,t){let n=[];for(let r of e){let e=t.get(r.id);if(e){for(let t of e.outgoing)n.push({table:t.to,via:r.id,on:t.fromColumns.map((e,n)=>({from:e,to:t.toColumns[n]})),label:`${t.to.schema}.${t.to.name} · ${r.alias}.${t.fromColumns.join(`, `)} → ${t.toColumns.join(`, `)}`});for(let t of e.incoming)n.push({table:t.from,via:r.id,on:t.toColumns.map((e,n)=>({from:e,to:t.fromColumns[n]})),label:`${t.from.schema}.${t.from.name} · ${t.fromColumns.join(`, `)} → ${r.alias}.${t.toColumns.join(`, `)}`})}}return n}function He(e,t,n){let r=D(e),[i,a]=[r.find(e=>e.id===n.left.source),r.find(e=>e.id===n.right.source)];if(!i||!a||n.op!==`=`)return!1;let o=[...t.get(i.id)?.outgoing??[],...t.get(i.id)?.incoming??[],...t.get(a.id)?.outgoing??[],...t.get(a.id)?.incoming??[]],s=(e,t)=>e.schema===t.schema&&e.name===t.table;return o.some(e=>e.fromColumns.some((t,r)=>{let o=e.toColumns[r];return s(e.from,i)&&s(e.to,a)&&t===n.left.column&&o===n.right.column||s(e.from,a)&&s(e.to,i)&&t===n.right.column&&o===n.left.column}))}var Ue=e=>JSON.stringify(e);function We(e){if(e)try{let t=JSON.parse(e);return!t||typeof t!=`object`||!Array.isArray(t.joins)||!Array.isArray(t.items)?void 0:{...T(),...t}}catch{return}}var U=e=>`psql-explorer:builder:${e}`;function Ge(e){try{return We(window.localStorage.getItem(U(e)))}catch{return}}function Ke(e,t){try{!t||!t.from?window.localStorage.removeItem(U(e)):window.localStorage.setItem(U(e),Ue(t))}catch{}}var W=f(),G=100,K=`border-input bg-background rounded-lg border px-2 py-1 text-sm`,q=`*`,J=e=>`${e.source}\u0001${e.column}`,qe=e=>{let[t,n]=e.split(``);return{source:t,column:n}};function Y({title:e,hint:t,action:n,children:r}){return(0,W.jsxs)(`section`,{className:`border-border border p-4`,children:[(0,W.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-baseline justify-between gap-2`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-medium tracking-widest uppercase`,children:e}),n]}),t&&(0,W.jsx)(`p`,{className:`text-muted-foreground mb-3 text-xs`,children:t}),(0,W.jsx)(`div`,{className:`flex flex-col gap-2`,children:r})]})}function X({children:e,onClick:t,disabled:n}){return(0,W.jsxs)(m,{type:`button`,variant:`outline`,size:`sm`,className:`self-start`,onClick:t,disabled:n,children:[(0,W.jsx)(h,{className:`size-3.5`}),` `,e]})}function Z({label:e,onClick:t}){return(0,W.jsx)(m,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":e,title:e,onClick:t,children:(0,W.jsx)(ge,{className:`text-destructive size-3.5`})})}function Q({ctx:e,sources:t,value:n,onChange:r,label:i,rows:a=!1,className:o=``}){let s=t.some(e=>e.id===n.source)||n.column===q;return(0,W.jsxs)(`select`,{"aria-label":i,className:`${K} ${o}`,value:J(n),onChange:e=>r(qe(e.target.value)),children:[!s&&(0,W.jsx)(`option`,{value:J(n),children:n.column}),a&&(0,W.jsx)(`option`,{value:J({source:t[0]?.id??``,column:q}),children:`rows (count them)`}),t.map(t=>(0,W.jsx)(`optgroup`,{label:t.alias,children:e.catalog.get(E(t.schema,t.table))?.columns.map(e=>(0,W.jsxs)(`option`,{value:J({source:t.id,column:e.name}),children:[e.name,` · `,e.type]},e.name))},t.id))]})}function Je({ctx:e,expr:t,onChange:n,mode:a,label:o}){let s=D(e.builder),c=t.column===q?void 0:P(e.builder,e.catalog,{source:t.source,column:t.column}),l=c?i(c):void 0,u=a!==`where`,d=x.filter(e=>t.column===q?e.id===`count`:![`sum`,`avg`].includes(e.id)||c&&j(c)===`number`);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Q,{ctx:e,sources:s,value:t,onChange:r=>{let o={source:r.source,column:r.column};if(r.column===q)o.aggregate=`count`;else{let n=e.catalog.get(E(...Ye(e.builder,r.source)))?.columns.find(e=>e.name===r.column)?.type;t.aggregate&&(e=>![`sum`,`avg`].includes(e)||n&&j(n)===`number`)(t.aggregate)?o.aggregate=t.aggregate:a===`having`&&(o.aggregate=`count`),t.bucket&&n&&i(n)&&!o.aggregate&&(o.bucket=t.bucket)}n(o)},label:o,rows:u}),u&&(0,W.jsxs)(`select`,{"aria-label":`${o}: total`,className:K,value:t.aggregate??``,onChange:e=>{let r=e.target.value||void 0;n({source:t.source,column:t.column,...r?{aggregate:r}:{},...t.bucket&&!r?{bucket:t.bucket}:{}})},children:[a!==`having`&&t.column!==q&&(0,W.jsx)(`option`,{value:``,children:`as it is`}),d.map(e=>(0,W.jsx)(`option`,{value:e.id,children:e.label},e.id))]}),(a===`item`||a===`sort`)&&l&&!t.aggregate&&(0,W.jsxs)(`select`,{"aria-label":`${o}: group by`,className:K,value:t.bucket??``,onChange:e=>n({source:t.source,column:t.column,...e.target.value?{bucket:e.target.value}:{}}),children:[(0,W.jsx)(`option`,{value:``,children:`exact time`}),r(l).map(e=>(0,W.jsxs)(`option`,{value:e.id,children:[`by `,e.label.toLowerCase()]},e.id))]})]})}var Ye=(e,t)=>{let n=D(e).find(e=>e.id===t);return[n?.schema??``,n?.table??``]};function Xe({catalog:e,value:t,onChange:n,label:r,children:i}){let a=(0,v.useMemo)(()=>{let t=new Map;for(let n of e.values())t.set(n.schema,[...t.get(n.schema)??[],n.name]);return[...t].sort(([e],[t])=>e.localeCompare(t))},[e]);return(0,W.jsxs)(`select`,{"aria-label":r,className:K,value:t??``,onChange:e=>{let[t,r]=e.target.value.split(``);t===`related`?n({schema:``,name:``},Number(r)):t&&r&&n({schema:t,name:r})},children:[(0,W.jsx)(`option`,{value:``,disabled:!0,children:`Pick a table...`}),i,a.map(([e,t])=>(0,W.jsx)(`optgroup`,{label:e,children:t.sort().map(t=>(0,W.jsx)(`option`,{value:`${e}\u0001${t}`,children:t},t))},e))]})}function Ze({ctx:e,join:t,keys:n,onChange:r,onRemove:i}){let a=D(e.builder),o=a.slice(0,a.findIndex(e=>e.id===t.source.id)),s=e=>r({...t,on:t.on.map(t=>t.id===e.id?e:t)});return(0,W.jsxs)(`div`,{className:`border-border flex flex-col gap-2 border p-3`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm`,children:[(0,W.jsx)(`select`,{"aria-label":`Kind of join with ${t.source.alias}`,className:K,value:t.kind,title:y.find(e=>e.id===t.kind)?.hint,onChange:e=>r({...t,kind:e.target.value}),children:y.map(e=>(0,W.jsxs)(`option`,{value:e.id,children:[e.label,` join`]},e.id))}),(0,W.jsxs)(`strong`,{className:`font-mono`,children:[t.source.schema,`.`,t.source.table]}),t.source.alias!==t.source.table&&(0,W.jsxs)(`span`,{className:`text-muted-foreground`,children:[`as `,t.source.alias]}),(0,W.jsx)(`span`,{className:`ml-auto`}),(0,W.jsx)(Z,{label:`Remove the join with ${t.source.alias}`,onClick:i})]}),t.kind!==`cross`&&(0,W.jsxs)(W.Fragment,{children:[t.on.map(i=>{let a=He(e.builder,n,i);return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm`,children:[(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`where`}),(0,W.jsx)(Q,{ctx:e,sources:o,value:i.left,onChange:e=>s({...i,left:e}),label:`Column so far`}),(0,W.jsx)(`select`,{"aria-label":`Comparison`,className:K,value:i.op,onChange:e=>s({...i,op:e.target.value}),children:b.map(e=>(0,W.jsx)(`option`,{children:e},e))}),(0,W.jsx)(Q,{ctx:e,sources:[t.source],value:i.right,onChange:e=>s({...i,right:e}),label:`Column of ${t.source.alias}`}),(0,W.jsxs)(`label`,{className:`text-muted-foreground flex items-center gap-1 text-xs`,title:`Compare both as text, for columns of different types`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:i.asText,onChange:e=>s({...i,asText:e.target.checked})}),` as text`]}),(0,W.jsx)(`span`,{className:`text-muted-foreground text-xs`,children:a?`foreign key`:`not a foreign key`}),t.on.length>1&&(0,W.jsx)(Z,{label:`Remove this test`,onClick:()=>r({...t,on:t.on.filter(e=>e.id!==i.id)})})]},i.id)}),(0,W.jsx)(X,{onClick:()=>{let n=o[0],i=t=>e.catalog.get(E(t.schema,t.table))?.columns[0]?.name??``;n&&r({...t,on:[...t.on,{id:C(),left:{source:n.id,column:i(n)},op:`=`,right:{source:t.source.id,column:i(t.source)},asText:!1}]})},children:`and another test`})]})]})}function Qe(e){let t=/^(\d*) ?(\w*)$/.exec(e??``);return[t?.[1]??``,je.find(e=>e===t?.[2])??`days`]}function $e({ctx:e,condition:t,mode:n,onChange:r,onRemove:i}){let a=Ee(P(e.builder,e.catalog,t.left)),o=D(e.builder),s=Pe(e.builder,e.catalog,t),c=e=>r({...t,...e}),[l,u]=Qe(t.value);return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm ${s?``:`opacity-70`}`,title:s?void 0:`Left out of the query until it is filled in`,children:[(0,W.jsx)(Je,{ctx:e,expr:t.left,mode:n,label:`Filter column`,onChange:n=>{let r=Ee(P(e.builder,e.catalog,n));c({left:n,op:r.includes(t.op)?t.op:r[0],other:void 0})}}),(0,W.jsx)(`select`,{"aria-label":`Test`,className:K,value:a.includes(t.op)?t.op:a[0],onChange:e=>{let t=e.target.value;c({op:t,...De(t)?{}:{other:void 0},...t===`last`?{value:`7 days`}:{}})},children:a.map(e=>(0,W.jsx)(`option`,{value:e,children:S[e]},e))}),De(t.op)&&(0,W.jsxs)(`select`,{"aria-label":`Compare with`,className:K,value:t.other?`column`:`value`,onChange:t=>c({other:t.target.value===`column`?{source:o[0]?.id??``,column:e.catalog.get(E(...Ye(e.builder,o[0]?.id??``)))?.columns[0]?.name??``}:void 0}),children:[(0,W.jsx)(`option`,{value:`value`,children:`a value`}),(0,W.jsx)(`option`,{value:`column`,children:`a column`})]}),t.other?(0,W.jsx)(Q,{ctx:e,sources:o,value:t.other,onChange:e=>c({other:e}),label:`Other column`}):t.op===`last`?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`input`,{"aria-label":`How many`,type:`number`,min:0,className:`${K} w-20`,value:l,onChange:e=>c({value:`${e.target.value} ${u}`})}),(0,W.jsx)(`select`,{"aria-label":`Unit`,className:K,value:u,onChange:e=>c({value:`${l} ${e.target.value}`}),children:je.map(e=>(0,W.jsx)(`option`,{children:e},e))})]}):ke(t.op)&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`input`,{"aria-label":`Value`,className:`${K} w-44`,placeholder:t.op===`in`||t.op===`notin`?`a, b, c`:`value`,value:t.value??``,onChange:e=>c({value:e.target.value})}),t.op===`between`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`and`}),(0,W.jsx)(`input`,{"aria-label":`Upper value`,className:`${K} w-44`,placeholder:`value`,value:t.value2??``,onChange:e=>c({value2:e.target.value})})]})]}),(0,W.jsx)(Z,{label:`Remove this filter`,onClick:i})]})}function $({ctx:e,group:t,mode:n,root:r,onChange:i,onRemove:a}){let o=D(e.builder)[0],s=()=>{let t=o&&e.catalog.get(E(o.schema,o.table))?.columns[0]?.name,r=n===`having`?{source:o?.id??``,column:q,aggregate:`count`}:{source:o?.id??``,column:t??``};return{kind:`condition`,id:C(),left:r,op:Ee(P(e.builder,e.catalog,r))[0]}},c=(e,n)=>i({...t,items:t.items.flatMap(t=>t.id===e?n?[n]:[]:[t])});return(0,W.jsxs)(`div`,{className:r?`flex flex-col gap-2`:`border-border ml-4 flex flex-col gap-2 border-l-2 pl-3`,children:[(t.items.length>1||!r)&&(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:r?`A row must match`:`Match`}),(0,W.jsxs)(`select`,{"aria-label":`All or any`,className:K,value:t.match,onChange:e=>i({...t,match:e.target.value}),children:[(0,W.jsx)(`option`,{value:`and`,children:`all of these`}),(0,W.jsx)(`option`,{value:`or`,children:`any of these`})]}),a&&(0,W.jsx)(Z,{label:`Remove this group`,onClick:a})]}),t.items.map(t=>t.kind===`group`?(0,W.jsx)($,{ctx:e,group:t,mode:n,onChange:e=>c(t.id,e),onRemove:()=>c(t.id,void 0)},t.id):(0,W.jsx)($e,{ctx:e,condition:t,mode:n,onChange:e=>c(t.id,e),onRemove:()=>c(t.id,void 0)},t.id)),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsx)(X,{onClick:()=>i({...t,items:[...t.items,s()]}),disabled:!o,children:`filter`}),(0,W.jsx)(X,{onClick:()=>i({...t,items:[...t.items,{...w(`or`),items:[s()]}]}),disabled:!o,children:`group`})]})]})}function et({environment:t,builder:r}){let i=ve(()=>e.catalog(t),t),o=(0,v.useMemo)(()=>Ce(i.data??[]),[i.data]),[s,l]=(0,v.useState)(()=>We(r.state)??Ge(t)??T()),[u,d]=(0,v.useState)(),[f,p]=(0,v.useState)(new Map),ge=(0,v.useMemo)(()=>ie(),[]),h={builder:s,catalog:o},g=D(s),_=e=>l(t=>ze(e(t),o));(0,v.useEffect)(()=>{Ke(t,s),s.from&&a({environment:t,builder:{state:Ue(s)}})},[t,s]);let y=g.map(e=>E(e.schema,e.table)).join(`,`);(0,v.useEffect)(()=>{if(i.data!==void 0)for(let n of D(s)){let r=E(n.schema,n.table);o.has(r)&&!f.has(r)&&e.foreignKeys(t,{kind:`table`,schema:n.schema,name:n.table}).then(e=>p(t=>new Map(t).set(r,e))).catch(()=>p(e=>new Map(e).set(r,{outgoing:[],incoming:[]})))}},[y,i.data,t]);let b=(0,v.useMemo)(()=>new Map(g.flatMap(e=>{let t=f.get(E(e.schema,e.table));return t?[[e.id,t]]:[]})),[f,y]),x=(0,v.useMemo)(()=>Re(s,o),[s,o]),S=(0,v.useMemo)(()=>Le(s,o),[s,o]),Se=!x||S.some(e=>e.level===`error`),w=(0,v.useMemo)(()=>Ve(g,b),[b]),O=(0,v.useRef)(0),k=async(n=0)=>{if(!x||!c(x))return;let r=++O.current;d(e=>({sql:x,page:n,running:!0,...e?.sql===x?{result:e.result}:{}}));try{let i=await e.query(t,x,n*G,G);r===O.current&&d({sql:x,page:n,result:i,running:!1})}catch(e){r===O.current&&d({sql:x,page:n,error:e.message,running:!1})}},A=(e,t)=>{if(!s.from)return;let n=t===void 0?void 0:w[t],r=Te(n?.table??e,g.map(e=>e.alias)),i=e=>o.get(E(e.schema,e.table))?.columns[0]?.name??``,a=n?n.on.map(e=>({id:C(),left:{source:n.via,column:e.from},op:`=`,right:{source:r.id,column:e.to},asText:!1})):[{id:C(),left:{source:s.from.id,column:i(s.from)},op:`=`,right:{source:r.id,column:i(r)},asText:!1}];_(e=>({...e,joins:[...e.joins,{id:C(),kind:`inner`,source:r,on:a}]}))},j=e=>_(t=>({...t,items:[...t.items,{...e,id:C()}]})),M=e=>o.get(E(e.schema,e.table))?.columns[0]?.name??``;if(i.error)return(0,W.jsx)(`p`,{className:`text-destructive text-sm`,children:i.error});if(i.loading||!i.data)return(0,W.jsx)(he,{className:`h-40`});let N=B(s),P=u&&u.sql!==x;return(0,W.jsxs)(`div`,{className:`flex max-w-5xl flex-col gap-4`,children:[(0,W.jsxs)(`p`,{className:`text-muted-foreground flex items-center gap-2 text-sm`,children:[(0,W.jsx)(xe,{className:`size-4 shrink-0`}),` Builds a query that reads rows. Nothing here can insert, change or delete data.`]}),(0,W.jsx)(Y,{title:`From`,hint:`The table the rows come from.`,children:(0,W.jsx)(`div`,{className:`flex flex-wrap items-center gap-2`,children:(0,W.jsx)(Xe,{catalog:o,label:`Table to start from`,value:s.from?`${s.from.schema}\u0001${s.from.table}`:void 0,onChange:e=>_(t=>{let n=t.from?{...t.from,schema:e.schema,table:e.name,alias:we(e.name,t.joins.map(e=>e.source.alias))}:Te(e,[]),r=t.items.length>0?t.items:[{id:C(),source:n.id,column:o.get(E(e.schema,e.name))?.columns[0]?.name??``}];return{...t,from:n,items:r}})})})}),s.from&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Y,{title:`Join`,hint:`Add tables whose rows match yours. A foreign key is not needed: pick any two columns that hold the same thing.`,children:[s.joins.map(e=>(0,W.jsx)(Ze,{ctx:h,join:e,keys:b,onChange:e=>_(t=>({...t,joins:t.joins.map(t=>t.id===e.id?e:t)})),onRemove:()=>l(Be(s,o,e.id))},e.id)),(0,W.jsx)(Xe,{catalog:o,label:`Add a table to join`,onChange:A,children:w.length>0&&(0,W.jsx)(`optgroup`,{label:`Related by a foreign key`,children:w.map((e,t)=>(0,W.jsx)(`option`,{value:`related\u0001${t}`,children:e.label},t))})})]}),(0,W.jsxs)(Y,{title:`Columns`,hint:N?`Counts, sums and the like are worked out for each combination of the other columns.`:`What to show. Use a count, sum, ... to group rows instead.`,children:[s.items.map(e=>(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm`,children:[(0,W.jsx)(Je,{ctx:h,expr:e,mode:`item`,label:`Column`,onChange:t=>_(n=>({...n,items:n.items.map(n=>n.id===e.id?{...t,id:e.id,...e.alias?{alias:e.alias}:{}}:n)}))}),(0,W.jsx)(`input`,{"aria-label":`Name in the result`,className:`${K} w-36`,placeholder:`name in result`,value:e.alias??``,onChange:t=>_(n=>({...n,items:n.items.map(n=>n.id===e.id?{...n,alias:t.target.value||void 0}:n)}))}),(0,W.jsx)(Z,{label:`Remove this column`,onClick:()=>_(t=>({...t,items:t.items.filter(t=>t.id!==e.id)}))})]},e.id)),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(X,{onClick:()=>j({source:s.from.id,column:M(s.from)}),children:`column`}),(0,W.jsx)(X,{onClick:()=>j({source:s.from.id,column:q,aggregate:`count`}),children:`count of rows`}),g.map(e=>(0,W.jsxs)(m,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>_(t=>({...t,items:[...t.items,...(o.get(E(e.schema,e.table))?.columns??[]).filter(n=>!t.items.some(t=>t.source===e.id&&t.column===n.name&&!t.aggregate&&!t.bucket)).map(t=>({id:C(),source:e.id,column:t.name}))]})),children:[`all of `,e.alias]},e.id))]})]}),(0,W.jsx)(Y,{title:`Filter`,hint:`Only the rows that match.`,children:(0,W.jsx)($,{ctx:h,group:s.where,mode:`where`,root:!0,onChange:e=>_(t=>({...t,where:e}))})}),N&&(0,W.jsx)(Y,{title:`Having`,hint:`Filter on the totals, e.g. customers with more than 5 orders.`,children:(0,W.jsx)($,{ctx:h,group:s.having,mode:`having`,root:!0,onChange:e=>_(t=>({...t,having:e}))})}),(0,W.jsxs)(Y,{title:`Sort and limit`,children:[s.sort.map(e=>(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm`,children:[(0,W.jsx)(Je,{ctx:h,expr:e.expr,mode:`sort`,label:`Sort by`,onChange:t=>_(n=>({...n,sort:n.sort.map(n=>n.id===e.id?{...n,expr:t}:n)}))}),(0,W.jsxs)(`select`,{"aria-label":`Direction`,className:K,value:e.descending?`desc`:`asc`,onChange:t=>_(n=>({...n,sort:n.sort.map(n=>n.id===e.id?{...n,descending:t.target.value===`desc`}:n)})),children:[(0,W.jsx)(`option`,{value:`asc`,children:`lowest first`}),(0,W.jsx)(`option`,{value:`desc`,children:`highest first`})]}),(0,W.jsx)(Z,{label:`Remove this sort`,onClick:()=>_(t=>({...t,sort:t.sort.filter(t=>t.id!==e.id)}))})]},e.id)),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-4 text-sm`,children:[(0,W.jsx)(X,{onClick:()=>{let e=s.items[0];_(t=>({...t,sort:[...t.sort,{id:C(),expr:e?{source:e.source,column:e.column,...e.aggregate?{aggregate:e.aggregate}:{},...e.bucket?{bucket:e.bucket}:{}}:{source:t.from.id,column:M(t.from)},descending:!1}]}))},children:`sort`}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`Limit`}),(0,W.jsx)(`input`,{"aria-label":`Limit`,type:`number`,min:1,placeholder:`none`,className:`${K} w-24`,value:s.limit??``,onChange:e=>_(t=>({...t,limit:e.target.value===``?null:Math.max(1,Math.floor(Number(e.target.value))||1)}))})]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2`,title:`Leave out rows that repeat`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:s.distinct,onChange:e=>_(t=>({...t,distinct:e.target.checked}))}),` unique rows only`]}),s.items.some(e=>e.bucket)&&(0,W.jsxs)(`label`,{className:`flex items-center gap-2`,title:`Days, months, ... of a timestamp with time zone are cut in this zone`,children:[(0,W.jsx)(`span`,{className:`text-muted-foreground`,children:`Time zone`}),(0,W.jsx)(`input`,{"aria-label":`Time zone`,className:`${K} w-40`,list:`builder-zones`,placeholder:`session's`,value:s.zone??``,onChange:e=>_(t=>({...t,zone:e.target.value||void 0}))}),(0,W.jsx)(`datalist`,{id:`builder-zones`,children:n().map(e=>(0,W.jsx)(`option`,{value:e},e))})]})]})]})]}),(0,W.jsxs)(Y,{title:`SQL`,action:(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsxs)(m,{type:`button`,disabled:Se||u?.running,onClick:()=>void k(0),children:[u?.running?(0,W.jsx)(ae,{className:`size-4 animate-spin`}):(0,W.jsx)(me,{className:`size-4`}),` Run`]}),(0,W.jsxs)(m,{type:`button`,variant:`outline`,disabled:!x,onClick:()=>x&&ee(t,x,!1),children:[(0,W.jsx)(ye,{className:`size-4`}),` Edit as SQL`]}),(0,W.jsxs)(m,{type:`button`,variant:`outline`,disabled:!x,onClick:()=>x&&void navigator.clipboard.writeText(x).catch(()=>{}),children:[(0,W.jsx)(be,{className:`size-4`}),` Copy`]}),(0,W.jsxs)(m,{type:`button`,variant:`ghost`,disabled:!s.from,onClick:()=>{l(T()),d(void 0)},children:[(0,W.jsx)(oe,{className:`size-4`}),` Start over`]})]}),children:[x?(0,W.jsx)(`pre`,{"aria-label":`Generated SQL`,className:`bg-muted/40 overflow-x-auto rounded-lg p-3 font-mono text-xs whitespace-pre`,children:x}):(0,W.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`Pick a table and a column to see the query.`}),S.length>0&&(0,W.jsx)(`ul`,{className:`text-xs`,children:S.map((e,t)=>(0,W.jsxs)(`li`,{className:`flex items-start gap-1 ${e.level===`error`?`text-destructive`:`text-amber-500`}`,children:[(0,W.jsx)(se,{className:`mt-0.5 size-3 shrink-0`}),` `,e.text]},t))})]}),u?.error&&(0,W.jsx)(`p`,{className:`text-destructive text-sm break-words`,children:u.error}),u?.result&&(0,W.jsxs)(`div`,{className:P?`opacity-60`:void 0,children:[P&&(0,W.jsx)(`p`,{className:`text-muted-foreground mb-2 text-xs`,children:`The query has changed since this ran.`}),(0,W.jsxs)(`p`,{className:`text-muted-foreground mb-2 text-xs`,children:[u.result.rows.length===0?u.page>0?`no more rows`:`0 rows`:`rows ${u.page*G+1}-${u.page*G+u.result.rows.length}${u.result.truncated?``:` (${u.page*G+u.result.rows.length} in all)`}`,` `,`in `,_e(u.result.durationMs)]}),(0,W.jsx)(te,{data:u.result,fetchAll:()=>e.exportSql(t,u.sql),filename:`query-builder-result`}),(0,W.jsxs)(pe,{children:[(0,W.jsx)(ce,{children:(0,W.jsx)(de,{children:u.result.columns.map((e,t)=>(0,W.jsx)(le,{title:e.type,children:e.name},t))})}),(0,W.jsx)(ue,{children:u.result.rows.map((e,t)=>(0,W.jsx)(de,{children:e.map((e,t)=>(0,W.jsx)(fe,{children:e===null?(0,W.jsx)(`span`,{className:`text-muted-foreground italic`,children:`NULL`}):(0,W.jsx)(re,{value:e,type:u.result.columns[t].type,zone:ge})},t))},t))})]}),(u.page>0||u.result.truncated)&&(0,W.jsx)(`div`,{className:`text-muted-foreground mt-3 flex items-center gap-4 text-xs`,children:(0,W.jsx)(ne,{page:u.page,hasMore:u.result.truncated,disabled:u.running,onPage:e=>void k(e)})})]})]})}export{et as BuilderView};
@@ -0,0 +1 @@
1
+ import{at as e}from"./route-DO6IZ7of.js";var t={name:`rotate-ccw`,size:24,node:[[`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`}]]};t.node;var n=e(t);export{n as t};
@@ -0,0 +1,15 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t,t.exports),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n)),l=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.for(`react.view_transition`),m=Symbol.iterator;function h(e){return typeof e!=`object`||!e?null:(e=m&&e[m]||e[`@@iterator`],typeof e==`function`?e:null)}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function y(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function b(){}b.prototype=y.prototype;function x(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}var S=x.prototype=new b;S.constructor=x,_(S,y.prototype),S.isPureReactComponent=!0;var C=Array.isArray;function w(){}var T={H:null,A:null,T:null,S:null},E=Object.prototype.hasOwnProperty;function D(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function O(e,t){return D(e.type,t,e.props)}function k(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function A(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var ee=/\/+/g;function j(e,t){return typeof e==`object`&&e&&e.key!=null?A(``+e.key):t.toString(36)}function te(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(w,w):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function M(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,M(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+j(e,0):a,C(o)?(i=``,c!=null&&(i=c.replace(ee,`$&/`)+`/`),M(o,r,i,``,function(e){return e})):o!=null&&(k(o)&&(o=O(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(ee,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(C(e))for(var u=0;u<e.length;u++)a=e[u],s=l+j(a,u),c+=M(a,r,i,s,o);else if(u=h(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+j(a,u++),c+=M(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return M(te(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function N(e,t,n){if(e==null)return e;var r=[],i=0;return M(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function P(e){if(e._status===-1){var t=e._result,n=t();n.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t,n.status===void 0&&(n.status=`fulfilled`,n.value=t))},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t,n.status===void 0&&(n.status=`rejected`,n.reason=t))}),e._status===-1&&(e._status=0,e._result=n)}if(e._status===1)return e._result.default;throw e._result}var F=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)};function I(e){var t=T.T,n={};n.types=t===null?null:t.types,T.T=n;try{var r=e(),i=T.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(w,F)}catch(e){F(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),T.T=t}}function ne(e){var t=T.T;if(t!==null){var n=t.types;n===null?t.types=[e]:n.indexOf(e)===-1&&n.push(e)}else I(ne.bind(null,e))}var re={map:N,forEach:function(e,t,n){N(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return N(e,function(){t++}),t},toArray:function(e){return N(e,function(e){return e})||[]},only:function(e){if(!k(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=re,e.Component=y,e.Fragment=r,e.Profiler=a,e.PureComponent=x,e.StrictMode=i,e.Suspense=l,e.ViewTransition=p,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=T,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return T.H.useMemoCache(e)}},e.addTransitionType=ne,e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=_({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!E.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return D(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)E.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return D(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=k,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:P}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=I,e.unstable_useCacheRefresh=function(){return T.H.useCacheRefresh()},e.use=function(e){return T.H.use(e)},e.useActionState=function(e,t,n){return T.H.useActionState(e,t,n)},e.useCallback=function(e,t){return T.H.useCallback(e,t)},e.useContext=function(e){return T.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return T.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return T.H.useEffect(e,t)},e.useEffectEvent=function(e){return T.H.useEffectEvent(e)},e.useId=function(){return T.H.useId()},e.useImperativeHandle=function(e,t,n){return T.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return T.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return T.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return T.H.useMemo(e,t)},e.useOptimistic=function(e,t){return T.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return T.H.useReducer(e,t,n)},e.useRef=function(e){return T.H.useRef(e)},e.useState=function(e){return T.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return T.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return T.H.useTransition()},e.version=`19.3.1`})),u=o(((e,t)=>{t.exports=l()})),d=c(u(),1),f=e=>e?.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();function p(e,t,n=[]){if(t==null)throw Error(`[lucide]: iconNode is required when icon name is used`);return{name:f(e),size:24,node:t,...n.length>0?{aliases:n}:{}}}var m=e=>{let t=``,n=!1;for(let r of e)r===`-`||r===`_`||r<=` `?n=t.length>0:(t.length===0?t+=r.toLowerCase():t+=n?r.toUpperCase():r,n=!1);return t},h=e=>{let t=m(e);return t.charAt(0).toUpperCase()+t.slice(1)},g=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),_={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`};function v(e){return e!=null}function y(e,t={}){let n=t.attributeNames??{},r=e=>n[e]??e,i=e.size??e.width??_.width,a=e.size??e.height??_.height,o=e.aliases?.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>`lucide-${e}`)??[],s=[...e.name?[`lucide-${e.name}`]:[],...o],c=t.className?.split(` `).filter(Boolean)??[],l=t.includeDefaultClasses===!1?g(...c):g(`lucide`,...s,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??_[`stroke-width`])*Number(e.size??e.width??_.width)/Number(t.size??t.width??_.width):t.strokeWidth??_[`stroke-width`];return[`svg`,{...Object.entries(_).reduce((e,[t,n])=>(e[r(t)]=n,e),{}),...`color`in t&&t.color&&{[r(`stroke`)]:t.color},...`size`in t&&v(t.size)&&{[r(`width`)]:t.size,[r(`height`)]:t.size},...`width`in t&&v(t.width)&&{[r(`width`)]:t.width},...`height`in t&&v(t.height)&&{[r(`height`)]:t.height},[r(`stroke-width`)]:u,...l&&{[r(`class`)]:l},[r(`viewBox`)]:`0 0 ${i} ${a}`,...t.hasA11yProp===!1?{[r(`aria-hidden`)]:`true`}:{},...`attributes`in t&&t.attributes},e.node.map(e=>{let[n,i,a]=e,o=t.nonScalingStroke?{[r(`vector-effect`)]:`non-scaling-stroke`,...i}:i;return a?[n,o,a]:[n,o]})]}function b(e,t={}){return y(e,{...t,attributeNames:{...t.attributeNames,class:`className`,"stroke-width":`strokeWidth`,"stroke-linecap":`strokeLinecap`,"stroke-linejoin":`strokeLinejoin`,"vector-effect":`vectorEffect`}})}var x=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},S=(0,d.createContext)({}),C=()=>(0,d.useContext)(S),w=(0,d.forwardRef)(({color:e,size:t,width:n,height:r,strokeWidth:i,absoluteStrokeWidth:a,nonScalingStroke:o,className:s=``,children:c,iconNode:l=[],icon:u={node:l,aliases:[],size:24},...f},p)=>{let{size:m=24,strokeWidth:h=2,absoluteStrokeWidth:_=!1,nonScalingStroke:v=!1,color:y=`currentColor`,className:S=``}=C()??{},w=!!c||x(f),[T,E,D=[]]=b(u,{color:e??y,width:n??t??m,height:r??t??m,strokeWidth:i??h,absoluteStrokeWidth:a??_,nonScalingStroke:o??v,className:g(S,s),hasA11yProp:w,attributes:f});return(0,d.createElement)(T,{ref:p,...E},[...D.map(([e,t])=>(0,d.createElement)(e,t)),...Array.isArray(c)?c:[c]])});function T(e,t=[],n=[]){let r=typeof e==`string`?p(e,t,n):e,i=(0,d.forwardRef)(({className:e,...t},n)=>(0,d.createElement)(w,{ref:n,icon:r,className:e,...t}));return r.name&&(i.displayName=h(r.name)),i}var E=48,D=(e,t=0)=>{let n=new Int32Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r)-E-t;return n},O=e=>{let t=new Int32Array(e.length+1);for(let n=0;n<e.length;n++)t[n+1]=t[n]+e[n];return t},k=e=>{let t=new Int32Array(e.length),n=0;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r)-E;n+=i>>>1^-(i&1),t[r]=n}return t},A=384,ee=[],j=O(D(`E0500002005282000000002000150000020021820000011200000003022202000300004200120000200420001200021200301200010400162000010000220021010:2192001200220012000220012000200200200400010200040000000000400200108200110100000022010313000162002000020020012020080213000228200000000082000000000120002000120020020040101020300130001001010`)),te=O(D(`:11111111211111119311546544411119731869:671397415686432441111111111161114151214313433415:78311132233313187211117221449443411141111151152226611131111112212518142224214215421421542142424242516171151615616347111111111197911327451111111111111111111113134714133513411111311111111111111111111112444411111342312715245411117:3`)),M=`@containerabcdefghinlmoprstunderlineviawzccentlignnimatespectuto-colsrowsaglorightnessckdrop-sisbcontrastfiltergrayscalehue-rotateinvertopacityslurrightnessaturateepia-coniclinearpositionradialsizeockurrderttom-belrstxyespacing-xyaretoursorlnt-umnsendspantartainentrasteividerop-shadowurationcorationlay-xyasendillexontromlter-featuresstretchapr-xyayscaleidow-colsrowsue-rotatedentlinesetvert-beringsxyeshadoweiadingftnest-clamp-imageabein-lrstxyskx--b-coniclpositionrsizet-x-y-fromto-fromto-inearfromto-fromto-adialfromto-fromtofromtofromtofromtoblockhinlinew-screenesblockhinlinewbjectpacityrutlinederigin-offsetbelrstxyesrspective-originaceholderioghtng-offsettateundedw-xyz-belrstlreseslr-endspantartaturatecepiahizekewpace-taleroll-xyz-barmpbelrstxyesbelrstxyes-thumbrackadowrink-xyxyartrokeabextora-shadowpckingnsformitionlate-xyz-offsetill-changeoom`,N=(()=>{let e=j.length-1,t=new Int32Array(e);for(let n=e-1;n>=0;n--){let e=1,r=n+1;for(let i=j[n];i<j[n+1];i++)e+=t[r],r+=t[r];t[n]=e}let n=new Int32Array(j[e]),r=0;for(let i=0;i<e;i++){let e=i+1;for(let a=j[i];a<j[i+1];a++)n[r++]=e,e+=t[e]}return n})(),P=D(`02000000000000900<=0?000B000F00F00ŏI0J0LNPRTVX0000]_a00000000000000000000000rst0000000zŏ00000000000…ŏ000ˆ0000ŏ0000000000—0000000000000000000000000000000000000000000000000000Ë000000000000000000000Þ000000000000000000ð0000000ø0ùúûüýþÿĀāĂ㥹Ć000000000000000000000000000000000000000000ħ0ĨĪ00000000000000000000ļĽ00000Ŭ000000`,1),F=O(D(`123333359346463635126536711576`)),I=D(`93203242332583253248325D>E?F@03263243255B:032523853:0325B:8GA032542H<C=12727B:0328432553;D>E?3257D>032585:0325B:;0328B:032`),ne=D(`012113445661666666789111:5;;;;;;;;444;;;:62999<1161=62>>?61:21@ABCD4446996:64E:::;:?::64:F114GHHIHHHHIHH1HH1HH1HHHHHH::EEJ4444::EE4444441691;644444114244444:;K6666555555555555555999666664444444444444444444444226?6:66644L9M?D:111::::6DE199`),re=k(`020200202020020020020020020020200200200200200200200002020202001003040106000200200200200200200200200200200200200200200200200200200200200200200200200200200200020020020020020020002020200202002002002002002002002002002020002002020020200220200200200200200200200200200200020020020000200020002000200200200020020020002000200200200020020202002020202000200200020022000200200020020002002000200220002002000200W0Z00020020002002020002002000200g0j0002002000200200020020002002000200200020020002000200002000002002002002002000200020000200002002002002002002002020020020200200200200200200200200202020020020020020020020020002002002020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020020002002002002002002000200200200200200200200200200020202020002000200020002002002002000020200200`),ie=(()=>{let e=new Int32Array(319).fill(-1),t=k(`02422242:222222242224222242442222222422222244442242226224222426222422442462222422622222222626222462242622422622422424242422222222422222222242422222222222222222622442224222222222222224424442262222222222222222222226224222424242422224422422422222`),n=k(`02222222222222222222202222222222222222222222221422222222222222222222222222222222222Y\\222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222221422222222222222222222222222222222222222Ŀł222222222222222222`);for(let r=0;r<t.length;r++)e[t[r]]=n[r];return e})(),ae=`container |break-after- all auto avoid avoid-page column left page right|break-before- all auto avoid avoid-page column left page right|break-inside-a uto void void-column void-page|box-decoration- clone slice|box- border content| contents flow-root hidden table table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group| not-sr-only sr-only|float- end left none right start|clear- both end left none right start|isolat e ion-auto|overflow- auto clip hidden scroll visible|overflow-x- auto clip hidden scroll visible|overflow-y- auto clip hidden scroll visible|overscroll- auto contain none|overscroll-x- auto contain none|overscroll-y- auto contain none| absolute fixed relative static sticky| collapse invisible visible|justify- around baseline between center center-safe end end-safe evenly normal start stretch|justify-items- center center-safe end end-safe normal start stretch|justify-self- auto center center-safe end end-safe start stretch|items- baseline baseline-last center center-safe end end-safe start stretch|self- auto baseline baseline-last center center-safe end end-safe start stretch|place-content- around baseline between center center-safe end end-safe evenly start stretch|place-items- baseline center center-safe end end-safe start stretch|place-self- auto center center-safe end end-safe start stretch| antialiased subpixel-antialiased| italic not-italic|normal-nums |ordinal |slashed-zero | lining-nums oldstyle-nums| proportional-nums tabular-nums| diagonal-fractions stacked-fractions| no-underline overline| capitalize lowercase normal-case uppercase|truncate |whitespace- break-spaces normal nowrap pre pre-line pre-wrap|break- all keep normal words|wrap- anywhere break-word normal|hyphens- auto manual none|mix-blend- color color-burn color-dodge darken difference exclusion hard-light hue lighten luminosity multiply normal overlay plus-darker plus-lighter saturation screen soft-light|table- auto fixed|caption- bottom top|backface- hidden visible|appearance- auto none|scheme- dark light light-dark normal only-dark only-light|field-sizing- content fixed|pointer-events- auto none|resize -none -x -y|snap- align-none center end start|snap- always normal|snap- both none x y|snap- mandatory proximity|touch- auto manipulation none|touch-pan- left right x|touch-pan- down up y|touch-pinch-zoom |select- all auto none text|forced-color-adjust- auto none| normal size| baseline bottom middle sub super text-bottom text-top top| bounce none ping pulse spin| auto square video| auto fr max min px|none | auto full px| fixed local scroll|clip- border content padding text|origin- border content padding| bottom bottom-left bottom-right center left left-bottom left-top right right-bottom right-top top top-left top-right| no-repeat repeat repeat-round repeat-space repeat-x repeat-y| auto contain cover| gradient-to-b gradient-to-bl gradient-to-br gradient-to-l gradient-to-r gradient-to-t gradient-to-tl gradient-to-tr none|blend- color color-burn color-dodge darken difference exclusion hard-light hue lighten luminosity multiply normal overlay saturation screen soft-light|to- b bl br l r t tl tr| auto dvh fit full lh lvh max min px screen svh| dashed dotted double hidden none solid| collapse separate|px |auto |full | content none strict| inline-size size|layout |paint |style | around baseline between center center-safe end end-safe evenly normal start stretch| alias all-scroll auto cell col-resize context-menu copy crosshair default e-resize ew-resize grab grabbing help move n-resize ne-resize nesw-resize no-drop none not-allowed ns-resize nw-resize nwse-resize pointer progress row-resize s-resize se-resize sw-resize text vertical-text w-resize wait zoom-in zoom-out| dashed dotted double solid wavy| auto from-font|reverse |initial | in in-out initial linear out| col col-reverse row row-reverse| nowrap wrap wrap-reverse| auto initial none| black bold extrabold extralight light medium normal semibold thin| condensed expanded extra-condensed extra-expanded normal semi-condensed semi-expanded ultra-condensed ultra-expanded|flow- col col-dense dense row row-dense| none subgrid| auto dvh dvw fit full lh lvh lvw max min px screen svh svw| block flex grid table| auto dvw fit full lvw max min px screen svw| loose none normal px relaxed snug tight|through |item | inside outside| decimal disc none| auto px| clip-border clip-content clip-fill clip-padding clip-stroke clip-view no-clip| add exclude intersect subtract| alpha luminance match|origin- border content fill padding stroke view|type- alpha luminance| circle ellipse| closest-corner closest-side farthest-corner farthest-side|at- bottom bottom-left bottom-right center left left-bottom left-top right right-bottom right-top top top-left top-right| dvh fit full lh lvh max min none px screen svh| auto dvh dvw fit full lh lvh lvw max min none px screen svh svw| dvw fit full lvw max min none px screen svw| auto dvh dvw fit full lvh lvw max min none prose px svh svw| auto dvh dvw fit full lvh lvw max min none px screen svh svw| contain cover fill none scale-down| first last none| distant dramatic midrange near none normal|inset | full none|3d | auto smooth|gutter- auto both stable| auto none thin| inner none| auto dvh dvw fit full lvh lvw max min px svh svw|base | center end justify left right start| clip ellipsis| balance nowrap pretty wrap| normal tight tighter wide wider widest| cpu gpu none| 3d flat| all colors none opacity shadow transform| discrete normal| full px| auto dvh dvw fit full lvh lvw max min px screen svh svw| auto contents scroll transform`.split(`|`).map(e=>{let t=e.split(` `),n=t.shift();for(let e=0;e<t.length;e++)t[e]=n+t[e];return t}),oe=k(`0000000000000000000000000000000000000000000000000000000000000262242:6@200000006:240B428:4422400002046044222426220026642642462026224222824220022400000000\\00N222422242222222224062242222222422226264222422222222222222442804222422222222222222222222220<4<0204260002444020204224422`),L=k(`ɠ222222222222222222222222222222222222222222222222222222222222˕4222226>ʶ22ʷʺʷ2ʸʷ42ʴ2ʓ22>621422ɶ222ɹɼɷɺɷɺ22ɱ42222ɨ2ɧ26622ɘɓ244ƸƵ222]d24242ǖǓƚÄȫ2263ȨȥȨ2222222ǣ222222222222222222ǂƽ2ƾƵ2222222422222ƜƑ22222222222222222222144Ŧţ22Ţş222222222222222222222ĸ2ı68ĦģĦɡŰ4Ġ«®ĝ822ĔđĔ2ē2222622`),se=k(`02222222222222222222222222222222222222222222222222222222222222222202022222222222EH2200IL021042222Y\\222IL0cf2e10j2222U00X202[^2y0000120|{~‚22…ˆ‡:22|22222222222G000q†OVI00000}š2›>40000ŒB00000I¨©000¬00000000000000021M®­00°“000000000000000000000–222›HGHa1º222¿2À2222ÉÌ000­°2±`),ce=new Int32Array(995),le=new Int32Array(995),ue=new Int32Array(995),de=``,fe=new Int32Array(1038);{let e=new Map,t=0,n=0;for(let r=0;r<oe.length;r++)for(let i of ae[se[r]]){let a=e.get(i);a===void 0&&(a=t++,e.set(i,a),fe[a*2]=de.length,fe[a*2+1]=i.length,de+=i),ce[n]=oe[r],le[n]=L[r],ue[n]=a,n++}}var pe=k(`0b2N:222@R>F@286¦2@H2D266226FB22B2>BD\\6N22222Z222D222p`),me=O(D(`1::24444432:442:44:44>222222:44:4421322511111311111114`)),he=k(`2Š4A;33N=C@H4A;33N=C@<27;83:;8393NQ:3NQʰ222ˉºŴŽ2R2=18cƴÅҜ=cĞÛC1ƈǝȈ:ħ25=11D3A@4=<1;1DEr25;11B3?<6;:371BCn9@7=<8192>2E121@9@EHE@9>2T25511<398454131<=V25511<398454131<=„ƧNž2Đå242L222290000f22500ɛ000ǘ222`),ge=D(`ij`),_e=D(`—`),ve=D(`1`),ye={GROUP_COUNT:A,customValidatorNames:ee,edgeStart:j,labelStart:te,labelText:M,edgeTarget:N,nodeGroup:P,nodeVlist:ie,vlistPat:F,vlistOps:I,vlistRef:ne,vlistGroup:re,litAnchor:ce,litGroup:le,litPool:ue,poolOffsets:fe,poolText:de,adjGid:pe,adjStart:me,adjTgt:he,patGid:ge,patTgt:_e,postfixLookupGroups:ve,orderSensitiveModifiers:`* ** after backdrop before details-content file first-letter first-line marker placeholder selection`},be=`line`in Error(),xe=-1,Se=-1,Ce=(e,t,n)=>{let r=2166136261;for(let i=t;i<n;i++)r=Math.imul(r^e.charCodeAt(i),16777619);return r},we=(e,t,n)=>{let r=n-t,i=Math.imul(r,2654435761)^e.charCodeAt(t);if(r>3){let a=r>>2,o=r>>1;i=Math.imul(i^e.charCodeAt(t+1)<<8^e.charCodeAt(t+2)<<16^e.charCodeAt(t+a),2246822507),i=Math.imul(i^e.charCodeAt(t+o)<<8^e.charCodeAt(t+o+a)<<16^e.charCodeAt(n-3),3266489909),i^=e.charCodeAt(n-2)<<8^e.charCodeAt(n-1)<<16;for(let r=t+3,a=n-4;r<t+8&&r<a;r++,a--)i=Math.imul(i^e.charCodeAt(r)^e.charCodeAt(a)<<8,16777619)}return i^i>>>15},Te=(e,t,n={})=>{let{GROUP_COUNT:r,edgeStart:i,labelStart:a,labelText:o,edgeTarget:s,nodeGroup:c,nodeVlist:l,vlistPat:u,vlistOps:d,vlistRef:f,vlistGroup:p,litAnchor:m,litGroup:h,litPool:g,poolOffsets:_,poolText:v,adjGid:y,adjStart:b,adjTgt:x,patGid:S,patTgt:C,postfixLookupGroups:w,customValidatorNames:T,orderSensitiveModifiers:E}=e,D=new Int32Array(r).fill(-1);for(let e=0;e<y.length;e++)D[y[e]]=e;let O=0;for(let e=0;e+1<b.length;e++){let t=b[e+1]-b[e];t>O&&(O=t)}let k=32;for(;k<2*(1+O+S.length);)k<<=1;let A=new Int32Array(f.length+1);for(let e=0;e<f.length;e++)A[e+1]=A[e]+u[f[e]+1]-u[f[e]];let ee=new Uint8Array(r);for(let e=0;e<w.length;e++)ee[w[e]]=1;let j=i.length-1,te=new Uint8Array(j),M=0,N=!0;for(let e=0;e<m.length;e++){te[m[e]]=1;let t=_[g[e]*2+1];t>M&&(M=t);let n=v.charCodeAt(_[g[e]*2]);(n===91||n===40)&&(N=!1)}let P=1;for(;P<m.length*2;)P<<=1;let F=new Int32Array(P).fill(-1);for(let e=0;e<m.length;e++){let t=_[g[e]*2],n=(Ce(v,t,t+_[g[e]*2+1])^Math.imul(m[e],2654435761)|0)&P-1;for(;F[n]!==-1;)n=n+1&P-1;F[n]=e}let I=(e,t,n,r)=>{let i=(Ce(t,n,r)^Math.imul(e,2654435761)|0)&P-1,a=r-n;for(;;){let r=F[i];if(r===-1)return-1;if(m[r]===e&&_[g[r]*2+1]===a){let e=_[g[r]*2],i=!0;for(let r=0;r<a;r++)if(v.charCodeAt(e+r)!==t.charCodeAt(n+r)){i=!1;break}if(i)return h[r]}i=i+1&P-1}},ne=n.cacheSize??8192,re=n.prefix??e.prefix??``,ie=re===``?``:re+`:`,ae=ie.length,oe=(T??[]).map(e=>{let n=t&&t[e];if(!n)throw Error(`cn: missing validator `+e);return n}),L=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,se=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,ce=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,le=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ue=0,de=-1,fe=-1,pe=-1,me=-1,he=e=>e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||e===95,ge=e=>/\s/.test(String.fromCharCode(e)),_e=(e,t,n)=>{if(ue=0,de=-1,n-t<3)return;let r=e.charCodeAt(t),i=e.charCodeAt(n-1);if(r===91&&i===93)ue=1;else if(r===40&&i===41)ue=2;else return;pe=t+1,me=n-1;let a=t+1;if(he(e.charCodeAt(a))){for(a++;a<n-1;){let t=e.charCodeAt(a);if(!he(t)&&t!==45)break;a++}a<n-2&&e.charCodeAt(a)===58&&(de=t+1,fe=a,pe=a+1)}},ve=(e,t,n,r)=>{if(n-t!==r.length)return!1;for(let n=0;n<r.length;n++)if(e.charCodeAt(t+n)!==r.charCodeAt(n))return!1;return!0},ye=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Te=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Ee=e=>!!e&&!Number.isNaN(Number(e)),De=(e,t,n)=>{if(n-t<11||!ve(e,t,t+10,`@container`))return!1;if(e.charCodeAt(t+10)===47)return n-t>=12;let r=e.charCodeAt(t+11);return r===115&&n-t>=17&&ve(e,t+10,t+16,`-size/`)||r===110&&n-t>=19&&ve(e,t+10,t+18,`-normal/`)},ke=[1,1,1,1,1,1,1,1,2,2,2,2,2,2,2],Ae=`length|number|number weight|family-name|position percentage|length size bg-size|image url|shadow|length|family-name|position percentage|length size bg-size|image url|shadow|number weight`.split(`|`).map(e=>e.split(` `)),je=[2,3,1,0,0,0,4,5,0,0,0,0,0,1,1],Me=(e,t,n,r)=>{if(e>=10){if(e>=25)return oe[e-25](t.slice(n,r));let i=e-10;if(ue!==ke[i])return!1;if(de>=0){for(let e of Ae[i])if(ve(t,de,fe,e))return!0;return!1}switch(je[i]){case 0:return!1;case 1:return!0;case 2:{let e=t.slice(pe,me);return L.test(e)&&!se.test(e)}case 3:return Ee(t.slice(pe,me));case 4:return le.test(t.slice(pe,me));default:return ce.test(t.slice(pe,me))}}switch(e){case 0:return!0;case 1:return ue===0;case 2:return ue===1;case 3:return ue===2;case 4:return ye.test(t.slice(n,r));case 5:return Ee(t.slice(n,r));case 6:{let e=t.slice(n,r);return!!e&&Number.isInteger(Number(e))}case 7:return r>n&&t.charCodeAt(r-1)===37&&Ee(t.slice(n,r-1));case 8:return Te.test(t.slice(n,r));default:return De(t,n,r)}},Ne=new Set(typeof E==`string`?E.split(` `):E),Pe=(e,t,n,r,i,a)=>{let o=Ce(t,n,r)^(i?2654435769:0),s=e.get(o);if(s!==void 0)outer:for(let e=0;e<s.length;e++){let a=s[e];if(a.imp===i&&a.k.length===r-n){for(let e=0;e<a.k.length;e++)if(a.k.charCodeAt(e)!==t.charCodeAt(n+e))continue outer;return a.id}}else e.set(o,s=[]);let c=t.slice(n,r),l=a(c);return s.push({k:c,imp:i,id:l}),l},Fe=new Map,Ie=new Map,Le=2,Re=4096,ze=(e,t)=>{let n=[],r=0,i=0,a=0;for(let t=0;t<e.length;t++){let o=e.charCodeAt(t);r===0&&i===0&&o===58?(n.push(e.slice(a,t)),a=t+1):o===91?r++:o===93?r--:o===40?i++:o===41&&i--}n.push(e.slice(a));let o=n[0];if(n.length>1){let e=[],t=[];for(let r of n)r.charCodeAt(0)===91||Ne.has(r)?(t.length&&(e.push(...t.sort()),t=[]),e.push(r)):t.push(r);t.length&&e.push(...t.sort()),o=e.join(`:`)}let s=t?o+` !`:o,c=Ie.get(s);return c===void 0&&Ie.set(s,c=Le++),c},Be=new Map,Ve=r,R=r+4096,He=()=>Ve++,z=2097152,Ue=8192,B=new Int32Array(Ue),V=Array(Ue).fill(null),We=new Int32Array(Ue),Ge=new Int32Array(Ue),Ke=new Uint8Array(Ue),qe=0,Je=(e,t,n,r,i,a,o,s)=>{let c=e;if(V[e]!==null){if(V[e|1]===null)c=e|1;else if(!(qe++&3))c=e|qe>>2&1;else return}V[c]=t.slice(n,r),B[c]=i,We[c]=a,Ge[c]=o,Ke[c]=s},Ye=()=>V.fill(null),H=256,Xe=[new Int32Array(H),new Int32Array(H),new Int32Array(H),new Int32Array(H)],[Ze,U,Qe,$e]=Xe,et=new Uint8Array(H),tt=new Uint8Array(H),nt=()=>{H*=2,Xe=Xe.map(e=>{let t=new Int32Array(H);return t.set(e),t}),[Ze,U,Qe,$e]=Xe;let e=new Uint8Array(H);e.set(et),et=e,tt=new Uint8Array(H)},W=64,rt=new Int32Array(W),it=new Int32Array(W),at=new Int32Array(r),ot=2048,st=21,ct=new Float64Array(ot),lt=new Int32Array(ot),ut=0,dt=(e,t)=>{if(e===0&&t<r)return at[t]===ut?1:(at[t]=ut,0);let n=e*2097152+t+1,i=Math.imul(n,2654435761)>>>st;for(;lt[i]===ut;){if(ct[i]===n)return 1;i=i+1&ot-1}return ct[i]=n,lt[i]=ut,0},ft=(e,t,n,r,i)=>{if(n-t>=2&&e.charCodeAt(t)===91&&e.charCodeAt(n-1)===93){let r=-1;for(let i=t+1;i<n-1;i++)if(e.charCodeAt(i)===58){r=i;break}return r===-1||r===t+1?xe:Pe(Be,e,t+1,r,0,He)}if(r>=0&&c[r]>=0)return c[r];for(let t=i-1;t>=0;t--){let r=it[t];if(r>n)continue;let i=rt[t],a=n-r;if(te[i]===1&&a>0&&a<=M){let t=e.charCodeAt(r);if(N===!1||t!==91&&t!==40){let t=I(i,e,r,n);if(t>=0)return t}}let o=l[i];if(o<0)continue;let s=f[o],c=u[s],m=u[s+1];if(c===m)continue;_e(e,r,n);let h=A[o]-c;for(let t=c;t<m;t++)if(Me(d[t],e,r,n))return p[h+t]}return xe},pt=e=>{let t=e.length,n=0,c=0,u=!1;(Le>Re||Fe.size>Re)&&(Fe=new Map,Ie=new Map,Le=2,Ye()),Ve>R&&(Be=new Map,Ve=r,Ye());let d=0;for(;d<t;){let f=e.charCodeAt(d);if(f===32||f>=9&&f<=13||f>=160&&ge(f)){f!==32&&(u=!0),d++;continue}let p=d,m=0;for(;d<t;){if(f=e.charCodeAt(d),f<=32){if(f===32)break;if(f>=9&&f<=13){u=!0;break}}else if(f>=160&&ge(f)){u=!0;break}m=Math.imul(m^f,16777619),d++}let h=d,g=h-p;n===H&&nt();let _=n++;Ze[_]=p,U[_]=h,c+=g,m^=Math.imul(g,2654435761);let v=m^m>>>15,y=v&8190;{let t=-1;if(B[y]===v&&V[y]!==null&&V[y].length===g?t=y:B[y|1]===v&&V[y|1]!==null&&V[y|1].length===g&&(t=y|1),t>=0){let n=V[t],r=!0;for(let t=0;t<g;t++)if(n.charCodeAt(t)!==e.charCodeAt(p+t)){r=!1;break}if(r){Qe[_]=We[t],$e[_]=Ge[t],et[_]=Ke[t];continue}}}let b=p;if(ae!==0){if(h-p<=ae||!e.startsWith(ie,p)){Qe[_]=xe,Je(y,e,p,h,v,xe,0,0);continue}b=p+ae}let x=0,S=0,C=-1,w=-1;for(let t=b;t<h;t++){let n=e.charCodeAt(t);if(x===0&&S===0){if(n===58){C=t;continue}if(n===47){w=t;continue}}n===91?x++:n===93?x--:n===40?S++:n===41&&S--}let T=C>=b?C+1:b,E=T,D=h,O=!1,k=0;D>E&&e.charCodeAt(D-1)===33?(O=!0,D--):D>E&&e.charCodeAt(E)===33&&(O=!0,E++,k=1);let A=-1;w>T&&(A=w+k,A>=D&&(A=-1));let j=E;D-E>1&&e.charCodeAt(E)===45&&(j=E+1);let M=0,N=0,P=0,F=-1,I=0;(l[0]>=0||te[0]===1)&&(rt[0]=0,it[0]=j,I=1);let ne=Se,re=0;for(let t=j;t<D;t++)if(t===A&&(ne=N<P?Se:M,re=I),M!==Se){let n=e.charCodeAt(t),r=-1;if(N<P)o.charCodeAt(N)===n?(N++,N===P&&(r=M=F)):M=Se;else{let e=i[M],t=i[M+1],c=Se;for(let i=e;i<t;i++){let e=a[i];if(o.charCodeAt(e)===n){a[i+1]-e===1?r=c=s[i]:(N=e+1,P=a[i+1],F=s[i],c=M);break}}M=c}if(r>=0&&(l[r]>=0||te[r]===1)&&t+1<D&&e.charCodeAt(t+1)===45){if(I===W){W*=2;let e=new Int32Array(W);e.set(rt),rt=e;let t=new Int32Array(W);t.set(it),it=t}rt[I]=r,it[I]=t+2,I++}}A===D&&(ne=N<P?Se:M,re=I);let oe=N<P?Se:M,L,se=!1;if(A>=0){if(se=!0,L=ft(e,E,A,ne,re),L!==xe&&L<r&&ee[L]){let t=ft(e,E,D,oe,I);t!==xe&&t!==L&&(L=t,se=!1)}else L===xe&&(L=ft(e,E,D,oe,I),se=!1)}else L=ft(e,E,D,oe,I);let ce=0,le=0;L===xe?Qe[_]=xe:(le=+!!se,ce=b>=C?+!!O:Pe(Fe,e,b,C,+!!O,e=>ze(e,O)),Qe[_]=L,et[_]=le,$e[_]=ce),Je(y,e,p,h,v,L,ce,le)}if(n===0)return``;if(n===1)return Ze[0]===0&&U[0]===t?e:e.slice(Ze[0],U[0]);if(n*k>ot){for(;n*k>ot;)ot<<=1,st--;ct=new Float64Array(ot),lt=new Int32Array(ot)}if(Le>=z||Ve>=z)throw Error(`cn: too many distinct classes in one merge`);ut=ut+1|0,ut===0&&(at.fill(0),lt.fill(0),ut=1);let f=!1;for(let e=n-1;e>=0;e--){let t=Qe[e];if(t===xe){tt[e]=1;continue}let n=$e[e];if(dt(n,t)===1)tt[e]=0,f=!0;else if(tt[e]=1,t<r){let r=D[t];if(r>=0)for(let e=b[r];e<b[r+1];e++)dt(n,x[e]);if(et[e]&1)for(let e=0;e<S.length;e++)S[e]===t&&dt(n,C[e])}}if(!f&&!u&&t===c+n-1)return e;let p=``,m=0;for(;m<n;){if(!tt[m]){m++;continue}let t=Ze[m],r=U[m],i=m+1;for(;i<n&&tt[i]&&Ze[i]===r+1&&e.charCodeAt(r)===32;)r=U[i],i++;p.length>0&&(p+=` `),p+=e.slice(t,r),m=i}return p},G=16384,K=new Int32Array(G*2),mt=0,q=1,ht=Object.create(null),gt=Object.create(null),_t=new Map,vt=new Map,yt=0,bt=0,J=()=>{mt^=G,q=q+1|0,bt=0},xt=e=>{let t=ht[e];if(t!==void 0)return t;let n=we(e,0,e.length),r=(n&16383)+mt,i=K[r]===(n^q)||K[r^G]===(n^q-1);return i&&(t=gt[e],t!==void 0)?(ht[e]=t,t):(t=pt(e),i?(ht[e]=t,++yt>ne&&(yt=0,gt=ht,ht=Object.create(null),J())):(K[r]=n^q,++bt>G&&J()),t)},St=e=>{let t=_t.get(e);if(t!==void 0)return t;let n=we(e,0,e.length),r=(n&16383)+mt,i=K[r]===(n^q)||K[r^G]===(n^q-1);return i&&(t=vt.get(e),t!==void 0)?(_t.set(e,t),t):(t=pt(e),i?(_t.set(e,t),++yt>ne&&(yt=0,vt=_t,_t=new Map,J())):(K[r]=n^q,++bt>G&&J()),t)},Ct=e=>{let t=we(e,0,e.length),n=(t&16383)+mt;return K[n]===(t^q)||K[n^G]===(t^q-1)||(K[n]=t^q,++bt>G&&J(),!1)},Y=ne===0?pt:be?e=>{let t=_t.get(e);return t===void 0?St(e):t}:xt;return{merge:function(){return arguments.length===1&&typeof arguments[0]==`string`?Y(arguments[0]):Y(Oe.apply(null,arguments))},mergeString:Y,seenBefore:ne===0?()=>!1:Ct,mergeUncached:pt}},Ee=(e,t)=>{if(!e)return``;if(typeof e==`string`)return e;let n=``;if(typeof e.length==`number`&&(!t||Array.isArray(e))){let r=e;for(let e=0;e<r.length;e++){let i=r[e];if(!i)continue;let a=typeof i==`string`?i:Ee(i,t);a&&(n&&(n+=` `),n+=a)}return n}if(t){if(typeof e==`number`)return``+e;if(typeof e==`object`)for(let t in e)e[t]&&(n&&(n+=` `),n+=t)}return n},De=(e,t)=>{let n=``;for(let r=0;r<e.length;r++){let i=e[r];if(!i)continue;let a=typeof i==`string`?i:Ee(i,t);a&&(n&&(n+=` `),n+=a)}return n},Oe=function(){return De(arguments,!1)},ke=256,Ae=16,je=1024,Me=4096,Ne=(e,t)=>{let n=t===void 0?()=>!0:t.seenBefore,r=t===void 0?e:t.mergeUncached,i=new Map,a=new Map,o=0,s=null,c=null,l=[],u=[],d=0,f=(t,n,r)=>{c===null&&(c=Array(Me).fill(``),l=Array(Me).fill(``),u=Array(Me).fill(``));let i=we(t,0,t.length)&4094;if(c[i]===t&&l[i]===n)return u[i];if(c[i|1]===t&&l[i|1]===n)return u[i|1];let a=e(r?n+` `+t:t),o=c[i]===``?i:i|(c[i|1]===``?1:d++&1);return c[o]=t,l[o]=n,u[o]=a,a},p=(e,t,n,r)=>{let i=0;if(t){if(t!==e.a0)return!1;i=1}if(n){if(n!==(i===0?e.a0:e.a1))return!1;i++}if(r){if(r!==(i===0?e.a0:i===1?e.a1:e.a2))return!1;i++}return i===e.t},m=(e,t)=>{let n=e.a,r=0;for(let e=0;e<t.length;e++){let i=t[e];if(i){if(i!==n[r])return!1;r++}}return r===e.t},h=(t,c)=>{let l=t.length,u=s===null?null:s.n;if(!c){if(u!==null&&m(u,t))return s=u,u.r;if(s!==null&&s!==u&&m(s,t))return s.r}let d=``,p=-1,h=0,g=!1;for(let e=0;e<l;e++){let n=t[e];if(n){if(typeof n!=`string`){if(n=t[e]=Ee(n,!0),!n)continue;g=!0}p<0&&(d=n,p=e),h++}}if(h===0)return``;if(h===1)return e(d);if(g){if(u!==null&&m(u,t))return s=u,u.r;if(s!==null&&s!==u&&m(s,t))return s.r}let _=i.get(d);_===void 0&&(_=a.get(d),_!==void 0&&i.set(d,_));let v=null;if(_!==void 0){if(_.skip>0){_.skip--,s=null;let e=d;for(let n=p+1;n<l;n++){let r=t[n];r&&(e+=` `+r)}return f(e,``,!1)}let e=_.e;outer:for(let n=0;n<e.length;n++){let r=e[n];if(r.t!==h)continue;let i=r.a,a=1;for(let e=p+1;e<l;e++){let n=t[e];if(n&&n!==i[a++])continue outer}v=r;break}v!==null&&(_.miss=0)}if(v===null){let s=d,c=[d];for(let e=p+1;e<l;e++){let n=t[e];n&&(s+=` `+n,c.push(n))}if(!n(s))return r(s);v={r:e(s),t:c.length,a0:c[0],a1:c[1],a2:c[2]??``,a:c,n:null},_===void 0?i.set(d,_={e:[],miss:0,skip:0,at:0}):++_.miss>Ae&&(_.miss=Ae,_.skip=je,_.e.length=0,_.at=0);let u=_.e;u.length<ke?u.push(v):(u[_.at]=v,_.at=_.at+1&255),++o>1e3&&(o=0,a=i,i=new Map)}return s!==null&&s!==v&&(s.n=v),s=v,v.r},g=t=>Array.isArray(t)?h(t.slice(),!1):e(Ee(t,!0));return function(t,n,r){let a=arguments.length;if((a|1)==3){let e=s;if(e!==null){let i=e.n;if(i!==null&&p(i,t,n,r))return s=i,i.r;if(e!==i&&p(e,t,n,r))return e.r}if(a===2&&typeof n==`string`&&n!==``){let e=i.get(t);if(e!==void 0&&e.skip>0)return e.skip--,s=null,f(n,t,!0)}return h([t,n,r],!0)}if(a===1)return typeof t==`string`?e(t):g(t);let o=s;if(o!==null){let e=o.n;if(e!==null){let t=e.a,n=0,r=!0;for(let e=0;e<a;e++){let i=arguments[e];if(i){if(i!==t[n]){r=!1;break}n++}}if(r&&n===e.t)return s=e,e.r}if(o!==e){let e=o.a,t=0,n=!0;for(let r=0;r<a;r++){let i=arguments[r];if(i){if(i!==e[t]){n=!1;break}t++}}if(n&&t===o.t)return o.r}}let c=[];for(let e=0;e<a;e++)c.push(arguments[e]);return h(c,!0)}},Pe=Te(ye),Fe=Ne(Pe.mergeString,Pe);Pe.merge;var Ie=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),Le=o(((e,t)=>{t.exports=Ie()})),Re=`psql-explorer:gucs:`;function ze(e){try{let t=JSON.parse(window.localStorage.getItem(Re+e)??`[]`);return Array.isArray(t)?t.filter(e=>typeof e?.name==`string`&&typeof e.value==`string`):[]}catch{return[]}}function Be(e,t){try{t.length===0?window.localStorage.removeItem(Re+e):window.localStorage.setItem(Re+e,JSON.stringify(t))}catch{}}var Ve=e=>e.filter(({name:e})=>e.trim()!==``).map(({name:e,value:t})=>({name:e.trim(),value:t}));async function R(e){let t=await fetch(e),n=await t.text(),r;try{r=n?JSON.parse(n):void 0}catch{}if(!t.ok||r===void 0)throw Error(r?.error??`The psql-explorer API did not answer (${t.status}). Is "psql-explorer web" running on port 7878?`);return r}var He=e=>Ve(ze(e));async function z(e,t,n){let r=await fetch(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t),signal:n}),i=await r.text(),a;try{a=i?JSON.parse(i):void 0}catch{}if(!r.ok||a===void 0)throw Object.assign(Error(a?.error??`The psql-explorer API did not answer (${r.status}).`),{statement:a?.statement});return a}async function Ue(e){let t=await fetch(e,{method:`DELETE`});if(!t.ok){let e=await t.json().catch(()=>void 0);throw Error(e?.error??`The psql-explorer API did not answer (${t.status}).`)}}var B=e=>new URLSearchParams(Object.entries(e).flatMap(([e,t])=>t===void 0?[]:[[e,String(t)]])).toString(),V=e=>`/api/envs/${encodeURIComponent(e)}`,We={writeMode:e=>R(`${V(e)}/write`),setWriteMode:(e,t)=>z(`${V(e)}/write`,{enabled:t}),prompt:()=>R(`/api/prompt`),answer:({envName:e,field:t},n)=>z(`/api/prompt`,{envName:e,field:t,value:n}),environments:()=>R(`/api/envs`),info:e=>R(`${V(e)}/info`),schemas:e=>R(`${V(e)}/schemas`),objects:(e,t)=>R(`${V(e)}/objects?${B({schema:t})}`),relation:(e,{schema:t,name:n})=>R(`${V(e)}/object?${B({kind:`table`,schema:t,name:n})}`),function:(e,{schema:t,name:n,args:r})=>R(`${V(e)}/object?${B({kind:`function`,schema:t,name:n,args:r})}`),sequence:(e,{schema:t,name:n})=>R(`${V(e)}/object?${B({kind:`sequence`,schema:t,name:n})}`),type:(e,{schema:t,name:n})=>R(`${V(e)}/object?${B({kind:`type`,schema:t,name:n})}`),erd:(e,t)=>R(`${V(e)}/erd?${B({schema:t})}`),searchIndex:e=>R(`${V(e)}/search-index`),find:(e,t,n)=>R(`${V(e)}/find?${B({q:t,schema:n})}`),catalog:e=>R(`${V(e)}/catalog`),functions:e=>R(`${V(e)}/functions`),query:(e,t,n=0,r=100,i)=>z(`${V(e)}/query`,{sql:t,offset:n,limit:r,settings:He(e)},i),exportSql:(e,t)=>z(`${V(e)}/export`,{sql:t,settings:He(e)}),exportTable:(e,{schema:t,name:n},{filters:r,sort:i})=>z(`${V(e)}/export`,{schema:t,table:n,filters:r,sort:i}),history:(e,t=``)=>R(`${V(e)}/history?${B({q:t||void 0,limit:200})}`),saved:e=>R(`${V(e)}/saved`),saveQuery:(e,t)=>z(`${V(e)}/saved`,t),updateSaved:(e,t,n)=>z(`${V(e)}/saved/${t}`,n),deleteSaved:(e,t)=>Ue(`${V(e)}/saved/${t}`),explain:(e,t)=>z(`${V(e)}/explain`,{sql:t,settings:He(e)}),explainAnalyze:(e,t)=>z(`${V(e)}/explain`,{sql:t,analyze:!0,settings:He(e)}),stats:e=>R(`${V(e)}/stats`),tableStats:(e,{schema:t,name:n})=>R(`${V(e)}/stats?${B({schema:t,table:n})}`),schemaDiff:(e,t,n,r)=>R(`${V(e)}/schema-diff?${B({with:t,schema:n,withSchema:r})}`),security:(e,{schema:t,name:n})=>R(`${V(e)}/security?${B({schema:t,name:n})}`),functionSecurity:(e,{schema:t,name:n,args:r})=>R(`${V(e)}/security?${B({schema:t,name:n,args:r??``})}`),roles:e=>R(`${V(e)}/roles`),dependents:(e,{kind:t,schema:n,name:r,args:i})=>R(`${V(e)}/dependents?${B({kind:t,schema:n,name:r,args:i})}`),rows:(e,{schema:t,name:n},r=0,{filters:i,sort:a}={filters:[],sort:[]})=>R(`${V(e)}/rows?${B({schema:t,table:n,limit:100,offset:r,filters:i.length>0?JSON.stringify(i):void 0,sort:a.length>0?JSON.stringify(a):void 0})}`),edit:(e,{schema:t,name:n},r,i)=>z(`${V(e)}/edit`,{schema:t,table:n,...r,apply:i}),seedSetup:(e,{schema:t,name:n})=>R(`${V(e)}/seed?${B({schema:t,table:n})}`),previewSeed:(e,{schema:t,name:n},r)=>z(`${V(e)}/seed`,{schema:t,table:n,...r}),runSeed:(e,{schema:t,name:n},r,i)=>z(`${V(e)}/seed`,{schema:t,table:n,...r,apply:!0},i),graph:(e,{schema:t,name:n},r,i)=>z(`${V(e)}/graph`,{schema:t,table:n,...r},i),cypher:(e,t,n)=>z(`${V(e)}/cypher`,t,n),expandGraph:(e,t)=>z(`${V(e)}/graph/expand`,t),design:(e,t,n=!1,r)=>z(`${V(e)}/design`,{design:t,apply:n},r),loadDesign:(e,t,n)=>R(`${V(e)}/design?${B({schema:t,name:n})}`),alter:(e,t,n=!1,r)=>z(`${V(e)}/alter`,{...t,apply:n},r),dropTable:(e,t,n,r,i=!1,a)=>z(`${V(e)}/drop-table`,{schema:t,name:n,cascade:r,apply:i},a),dependentsOf:(e,t)=>R(`${V(e)}/dependents?${B({kind:t.kind,schema:t.schema,name:t.name,table:`table`in t?t.table:void 0})}`),schemaForeignKeys:(e,t)=>R(`${V(e)}/schema-foreign-keys?${B({schema:t})}`),foreignKeys:(e,{schema:t,name:n})=>R(`${V(e)}/foreign-keys?${B({schema:t,table:n})}`),references:(e,{schema:t,name:n},r)=>z(`${V(e)}/references`,{schema:t,table:n,values:r}),profile:(e,{schema:t,name:n},r)=>R(`${V(e)}/profile?${B({schema:t,table:n,column:r})}`)};function Ge(e){let t=e.toLowerCase();if(t===`date`)return`date`;if(t===`timestamptz`||/^timestamp(\(\d+\))? with time zone/.test(t))return`timestamptz`;if(/^timestamp(\(\d+\))?( without time zone)?$/.test(t))return`timestamp`}var Ke=e=>t=>`date_trunc('${e}', ${t})`,qe=e=>t=>`extract(${e} from ${t})`,Je=[{id:`minute`,label:`Minute`,alias:`minute`,needsTime:!0,sql:Ke(`minute`)},{id:`hour`,label:`Hour`,alias:`hour`,needsTime:!0,sql:Ke(`hour`)},{id:`day`,label:`Day`,alias:`day`,sql:Ke(`day`)},{id:`week`,label:`Week`,alias:`week`,sql:Ke(`week`)},{id:`month`,label:`Month`,alias:`month`,sql:Ke(`month`)},{id:`quarter`,label:`Quarter`,alias:`quarter`,sql:Ke(`quarter`)},{id:`year`,label:`Year`,alias:`year`,sql:Ke(`year`)},{id:`dow`,label:`Day of week`,alias:`day_of_week`,sql:qe(`isodow`)},{id:`hod`,label:`Hour of day`,alias:`hour_of_day`,needsTime:!0,sql:qe(`hour`)}],Ye=e=>Je.filter(t=>!t.needsTime||e!==`date`),H=e=>Ye(e).filter(e=>[`hour`,`day`,`week`,`month`,`year`].includes(e.id)),Xe=e=>`'${e.replace(/'/g,`''`)}'`;function Ze(e,t,n){return t===`timestamptz`&&n?`${e} AT TIME ZONE ${Xe(n)}`:e}function U(e,t,n,r){return n.sql(Ze(e,t,r))}var Qe=e=>/^[a-z_][a-z0-9_$]*$/.test(e)?e:`"${e.replace(/"/g,`""`)}"`;function $e(e){let t=Ge(e.type);if(!t)return;let n=U(`q.${Qe(e.column)}`,t,e.bucket,e.zone),r=e.statement.trim().replace(/;+\s*$/,``).replace(/\n/g,`
2
+ `);return[`SELECT`,` ${n} AS ${e.bucket.alias},`,` count(*) AS rows`,`FROM (`,` ${r}`,`) AS q`,`GROUP BY 1`,`ORDER BY 1;`,``].join(`
3
+ `)}function et(){return[`UTC`,...(typeof Intl.supportedValuesOf==`function`?Intl.supportedValuesOf(`timeZone`):[]).filter(e=>e!==`UTC`)]}var tt=()=>Intl.DateTimeFormat().resolvedOptions().timeZone,nt=/(--[^\n]*|\/\*[\s\S]*?(?:\*\/|$))|((?:[eEbBxXnNuU]&?)?'(?:[^']|'')*(?:'|$))|("(?:[^"]|"")*(?:"|$))|(\$[A-Za-z_\u0080-￿]*\$)|(\$\d+)|(::)|((?<![\w:]):[A-Za-z_]\w*)|([A-Za-z_\u0080-￿][\w$\u0080-￿]*)|(\d+(?:\.\d+)?(?:[eE][+-]?\d+)?|\.\d+)|(\s+)|([+\-*/<>=~!@#%^&|`?]+)|([\s\S])/g;function W(e){let t=[];nt.lastIndex=0;let n=0;for(;n<e.length;){nt.lastIndex=n;let r=nt.exec(e);if(!r)break;let i=r[0],a=n+i.length,o;if(r[1])o=`comment`;else if(r[2]||r[3])o=r[2]?`string`:`quoted`;else if(r[4]){let t=e.indexOf(i,a);a=t<0?e.length:t+i.length,o=`string`}else o=r[5]||r[7]?`param`:r[6]?`operator`:r[8]?`word`:r[9]?`number`:r[10]?`space`:r[11]?`operator`:`punct`;t.push({kind:o,text:e.slice(n,a),start:n,end:a}),n=a}return t}function rt(e){let t=[],n=0,r=!1,i=i=>{if(r){let r=e.slice(n,i),a=r.length-r.trimStart().length,o=r.trim();t.push({text:o,start:n+a,end:n+a+o.length})}r=!1};for(let t of W(e))t.kind===`punct`&&t.text===`;`?(i(t.start),n=t.end):t.kind!==`space`&&t.kind!==`comment`&&(r=!0);return i(e.length),t}function it(e,t){let n=rt(e),r=n.findIndex(e=>t<=e.end);if(r<0)return n[n.length-1];let i=n[r],a=n[r-1];return a&&t<i.start&&!e.slice(a.end,t).includes(`
4
+ `)?a:i}function at(e,t,n){return t===n?it(e,t)?.text??e.trim():e.slice(Math.min(t,n),Math.max(t,n)).trim()}function ot(e){let t=new Map;for(let n of W(e))n.kind===`param`&&(t.has(n.text)||t.set(n.text,{name:n.text,label:n.text}));return[...t.values()].sort((e,t)=>{let n=/^\$(\d+)$/.exec(e.name),r=/^\$(\d+)$/.exec(t.name);return n&&r?Number(n[1])-Number(r[1]):0})}function st(e){let t=e.trim();if(/^null$/i.test(t))return`NULL`;if(/^(true|false)$/i.test(t))return t.toLowerCase();if(/^-?\d+(\.\d+)?$/.test(t))return t;let n=/^'(.*)'$/s.exec(t)?.[1];return`'${(n===void 0?e:n).replace(/'/g,`''`)}'`}function ct(e,t){let n=``;for(let r of W(e)){let e=r.kind===`param`?t[r.text]:void 0;n+=e===void 0||e===``?r.text:st(e)}return n}var lt=[{name:`smallint`},{name:`integer`},{name:`bigint`},{name:`numeric`,sized:`numeric`},{name:`real`},{name:`double precision`},{name:`money`},{name:`boolean`},{name:`text`},{name:`varchar`,sized:`length`},{name:`char`,sized:`length`},{name:`citext`},{name:`bytea`},{name:`uuid`},{name:`date`},{name:`time`,sized:`precision`},{name:`timetz`,sized:`precision`},{name:`timestamp`,sized:`precision`},{name:`timestamptz`,sized:`precision`},{name:`interval`,sized:`precision`},{name:`json`},{name:`jsonb`},{name:`xml`},{name:`inet`},{name:`cidr`},{name:`macaddr`},{name:`bit`,sized:`length`},{name:`varbit`,sized:`length`},{name:`tsvector`},{name:`tsquery`},{name:`point`},{name:`int4range`},{name:`int8range`},{name:`numrange`},{name:`daterange`},{name:`tsrange`},{name:`tstzrange`}],ut=[`now()`,`current_timestamp`,`current_date`,`gen_random_uuid()`,`true`,`false`,`''`,`0`,`'{}'::jsonb`,`'[]'::jsonb`],dt=[`no action`,`restrict`,`cascade`,`set null`,`set default`],ft=[`btree`,`hash`,`gin`,`gist`,`brin`],pt=0,G=()=>`r${Date.now().toString(36)}${(pt++).toString(36)}`,K=(e=``)=>({id:G(),name:e,type:{name:`text`},notNull:!1,default:``,identity:``,generated:``,comment:``}),mt=()=>({id:G(),column:``,expression:``,descending:!1});function q(e=`public`){return{schema:e,name:``,unlogged:!1,comment:``,partition:{method:``,column:``},columns:[{...K(`id`),type:{name:`bigint`},identity:`always`,notNull:!0}],constraints:[],indexes:[]}}var ht=e=>{let t=q(e.schema);return e.name===``&&!e.unlogged&&e.comment===``&&e.partition.method===``&&e.constraints.length===0&&e.indexes.length===0&&e.columns.length===1&&e.columns[0].name===t.columns[0].name&&e.columns[0].type.name===`bigint`},gt=e=>e.schema===void 0?lt.find(t=>t.name===e.name)?.sized:void 0,_t=e=>e.schema===void 0?`b:${e.name}`:`t:${e.schema}.${e.name}`;function vt(e){if(e.startsWith(`t:`)){let t=e.slice(2),n=t.indexOf(`.`);return{schema:t.slice(0,n),name:t.slice(n+1)}}return{name:e.slice(2)}}function yt(e){let t=gt(e);return{name:e.name,...e.schema===void 0?{}:{schema:e.schema},...(t===`length`||t===`precision`)&&e.length!==void 0?{length:e.length}:{},...t===`numeric`&&e.precision!==void 0?{precision:e.precision}:{},...t===`numeric`&&e.precision!==void 0&&e.scale!==void 0?{scale:e.scale}:{},...e.array?{array:e.array}:{}}}var bt=gt,J=(e,t)=>e.columns.find(e=>e.id===t)?.name??``;function xt(e,t){let n=e.name||`table`,r=t=>t.map(t=>J(e,t)||`column`);switch(t.kind){case`primary`:return`${n}_pkey`;case`unique`:return`${n}_${r(t.columns).join(`_`)}_key`;case`foreign`:return`${n}_${r(t.columns).join(`_`)}_fkey`;case`check`:return`${n}_check`}}function St(e,t){let n=t.items.map(t=>t.column?J(e,t.column)||`column`:`expr`);return`${e.name||`table`}_${n.join(`_`)}_idx`}var Ct=e=>e.trim()===``?void 0:e,Y=(e,t)=>t===void 0||t===!1?{}:{[e]:t};function wt(e,{ids:t=!1}={}){let n=e=>t?{id:e}:{},r=t=>t.map(t=>J(e,t)),i=new Set(e.constraints.flatMap(e=>e.kind===`primary`?e.columns:[]));return{schema:e.schema,name:e.name,columns:e.columns.map(e=>({...n(e.id),name:e.name,type:yt(e.type),...Y(`notNull`,e.notNull||i.has(e.id)||void 0),...Y(`default`,Ct(e.default)),...e.identity?{identity:e.identity}:{},...Y(`generated`,Ct(e.generated)),...Y(`comment`,Ct(e.comment))})),constraints:e.constraints.map(t=>{let i=Ct(t.name);switch(t.kind){case`primary`:return{...n(t.id),kind:`primary`,...Y(`name`,i),columns:r(t.columns)};case`unique`:return{...n(t.id),kind:`unique`,...Y(`name`,i),columns:r(t.columns),...Y(`nullsNotDistinct`,t.nullsNotDistinct||void 0)};case`check`:return{...n(t.id),kind:`check`,...Y(`name`,i),expression:t.expression};case`foreign`:{let a=t.target.self;return{...n(t.id),kind:`foreign`,...Y(`name`,i),columns:r(t.columns),references:{schema:a?e.schema:t.target.schema,table:a?e.name:t.target.table,columns:a?r(t.targetColumns):t.targetColumns},...t.onDelete?{onDelete:t.onDelete}:{},...t.onUpdate?{onUpdate:t.onUpdate}:{},...Y(`matchFull`,t.matchFull||void 0),...Y(`deferrable`,t.deferrable||void 0),...Y(`initiallyDeferred`,t.initiallyDeferred||void 0)}}}}),indexes:e.indexes.map(t=>({...n(t.id),...Y(`name`,Ct(t.name)),...Y(`unique`,t.unique||void 0),...t.method===`btree`?{}:{method:t.method},items:t.items.map(t=>({...t.column?{column:J(e,t.column)}:{expression:t.expression},...Y(`descending`,t.descending||void 0)})),...t.include.length>0?{include:r(t.include)}:{},...Y(`where`,Ct(t.where))})),...Y(`unlogged`,e.unlogged||void 0),...Y(`comment`,Ct(e.comment)),...e.partition.method&&e.partition.column?{partition:{method:e.partition.method,column:J(e,e.partition.column)}}:{}}}function Tt(e){let t=e.columns.map(e=>({id:G(),name:e.name,type:e.type,notNull:!!e.notNull,default:e.default??``,identity:e.identity??``,generated:e.generated??``,comment:e.comment??``})),n=e=>t.find(t=>t.name===e)?.id??``,r=e=>e.map(n),i=e=>dt.includes(e??``)?e:``;return{schema:e.schema,name:e.name,unlogged:!!e.unlogged,comment:e.comment??``,partition:e.partition?{method:e.partition.method,column:n(e.partition.column)}:{method:``,column:``},columns:t,constraints:e.constraints.map(t=>{let n={id:G(),name:t.name??``};switch(t.kind){case`primary`:return{...n,kind:`primary`,columns:r(t.columns)};case`unique`:return{...n,kind:`unique`,columns:r(t.columns),nullsNotDistinct:!!t.nullsNotDistinct};case`check`:return{...n,kind:`check`,expression:t.expression};case`foreign`:{let a=t.references.schema===e.schema&&t.references.table===e.name;return{...n,kind:`foreign`,columns:r(t.columns),target:{self:a,schema:t.references.schema,table:t.references.table},targetColumns:a?r(t.references.columns):t.references.columns,onDelete:i(t.onDelete),onUpdate:i(t.onUpdate),matchFull:!!t.matchFull,deferrable:!!t.deferrable,initiallyDeferred:!!t.initiallyDeferred}}}}),indexes:e.indexes.map(e=>({id:G(),name:e.name??``,unique:!!e.unique,method:ft.includes(e.method??`btree`)?e.method??`btree`:`btree`,items:e.items.map(e=>({id:G(),column:`column`in e?n(e.column):``,expression:`expression`in e?e.expression:``,descending:!!e.descending})),include:r(e.include??[]),where:e.where??``}))}}var Et=(e,t)=>`${e}.${t}`,Dt={varchar:`character varying`,char:`character`,timestamp:`timestamp without time zone`,timestamptz:`timestamp with time zone`,time:`time without time zone`,timetz:`time with time zone`,int:`integer`,int2:`smallint`,int4:`integer`,int8:`bigint`,bool:`boolean`,float8:`double precision`,float4:`real`,varbit:`bit varying`,decimal:`numeric`};function Ot(e){return(e.schema===void 0?Dt[e.name]??e.name:`${e.schema}.${e.name}`)+`[]`.repeat(e.array??0)}var kt=e=>{let t=e.replace(/\(.*?\)/g,``).trim().toLowerCase(),n=/(\[\])+$/.exec(t)?.[0]??``,r=t.slice(0,t.length-n.length).replace(/^"?public"?\./,``);return(Dt[r]??r)+n},At=new Set([`smallint`,`integer`,`bigint`]),jt=63;function Mt(e,t={}){let n=[],r=(e,t,r)=>n.push({level:e,message:t,row:r});e.schema||r(`error`,`Pick a schema.`),e.name.trim()?e.name.length>jt&&r(`error`,`The table name is longer than ${jt} characters.`):r(`error`,`Name the table.`),e.columns.length===0&&r(`error`,`The table needs a column.`);let i=new Map;for(let t of e.columns){if(!t.name.trim()){r(`error`,`A column has no name.`,t.id);continue}t.name.length>jt&&r(`error`,`The column name "${t.name.slice(0,20)}..." is longer than ${jt} characters.`,t.id),i.has(t.name)&&r(`error`,`Two columns are named "${t.name}".`,t.id),i.set(t.name,t.id),t.generated.trim()&&(t.default.trim()||t.identity)?r(`error`,`"${t.name}" is generated, so it has no default or identity.`,t.id):t.identity&&t.default.trim()&&r(`error`,`"${t.name}" is an identity, so it has no default.`,t.id),t.identity&&t.type.schema===void 0&&!At.has(t.type.name)&&!t.type.array&&r(`warning`,`"${t.name}" is an identity but not an integer; Postgres only allows integers.`,t.id),t.type.array&&(t.identity||t.generated.trim())&&r(`error`,`"${t.name}" is an array, which cannot be an identity or generated.`,t.id);let e=gt(t.type);e===`length`&&t.type.length!==void 0&&!(t.type.length>=1)&&r(`error`,`The length of "${t.name}" is at least 1.`,t.id),e===`numeric`&&t.type.scale!==void 0&&t.type.precision===void 0&&r(`error`,`"${t.name}" has a scale but no precision.`,t.id)}let a=new Set(e.columns.map(e=>e.id)),o=t=>`"${J(e,t)||`?`}"`,s=(e,t,n)=>{e.length===0&&r(`error`,`${t} needs a column.`,n),e.some(e=>!e||!a.has(e))&&r(`error`,`${t} has a column that is not picked.`,n),new Set(e).size!==e.length&&r(`error`,`${t} lists a column twice.`,n)},c=new Map,l=e.constraints.filter(e=>e.kind===`primary`);l.length>1&&r(`error`,`A table has only one primary key.`,l[1].id);for(let n of e.constraints){let i={primary:`The primary key`,unique:`A unique constraint`,check:`A check`,foreign:`A foreign key`}[n.kind],a=n.name.trim()||xt(e,n);switch(a.length>jt&&r(`error`,`The name "${a.slice(0,20)}..." is longer than ${jt} characters.`,n.id),n.name.trim()&&(c.has(a)&&r(`error`,`Two constraints are named "${a}".`,n.id),c.set(a,n.id)),n.kind){case`primary`:case`unique`:if(s(n.columns,i,n.id),n.kind===`unique`&&n.nullsNotDistinct&&t.serverMajor!==void 0&&t.serverMajor<15&&r(`error`,`NULLS NOT DISTINCT needs PostgreSQL 15 or later.`,n.id),n.kind===`primary`)for(let t of n.columns){let i=e.columns.find(e=>e.id===t);i&&!i.notNull&&r(`note`,`${o(t)} is part of the primary key, so it becomes NOT NULL.`,n.id)}e.partition.method&&e.partition.column&&!n.columns.includes(e.partition.column)&&r(`error`,`${i} of a partitioned table must include ${o(e.partition.column)}.`,n.id);break;case`check`:n.expression.trim()||r(`error`,`A check has no expression.`,n.id);break;case`foreign`:{s(n.columns,i,n.id);let a=n.target.self;if(!a&&(!n.target.schema||!n.target.table)){r(`error`,`A foreign key needs a table to point at.`,n.id);break}if(n.targetColumns.length!==n.columns.length||n.targetColumns.some(e=>!e)){r(`error`,`A foreign key needs a referenced column for each column.`,n.id);break}let c=a?e.columns.map(e=>({id:e.id,name:e.name,type:Ot(e.type)})):t.targets?.get(Et(n.target.schema,n.target.table))?.map(e=>({id:e.name,name:e.name,type:e.type}));n.columns.forEach((t,i)=>{let s=e.columns.find(e=>e.id===t),l=c?.find(e=>e.id===n.targetColumns[i]);s&&c&&(l?kt(Ot(s.type))!==kt(l.type)&&r(`warning`,`${o(t)} is ${Ot(s.type)} but ${l.name} is ${l.type}; the types should match.`,n.id):r(`error`,`${o(t)} points at a column that is not in ${a?`this table`:n.target.table}.`,n.id))}),n.initiallyDeferred&&!n.deferrable&&r(`error`,`A foreign key can only start deferred if it is deferrable.`,n.id),a&&!e.name.trim()&&r(`error`,`Name the table before it points at itself.`,n.id);break}}}let u=new Map;for(let t of e.indexes){t.name.trim()&&(u.has(t.name)&&r(`error`,`Two indexes are named "${t.name}".`,t.id),u.set(t.name,t.id),t.name.length>jt&&r(`error`,`The index name "${t.name.slice(0,20)}..." is too long.`,t.id)),t.items.length===0&&r(`error`,`An index needs a column or an expression.`,t.id);for(let e of t.items)e.column&&!a.has(e.column)&&r(`error`,`An index has a column that is not picked.`,t.id),!e.column&&!e.expression.trim()&&r(`error`,`An index item is neither a column nor an expression.`,t.id);t.unique&&t.method!==`btree`&&r(`error`,`A ${t.method} index cannot be unique.`,t.id),t.include.length>0&&t.method!==`btree`&&t.method!==`gist`&&r(`error`,`A ${t.method} index cannot have INCLUDE columns.`,t.id),t.include.some(e=>!a.has(e))&&r(`error`,`An index has an included column that is not picked.`,t.id)}return e.partition.method&&(e.partition.column&&a.has(e.partition.column)||r(`error`,`Pick the column to partition by.`),e.unlogged&&r(`error`,`A partitioned table cannot be unlogged.`)),n}var Nt=e=>e.some(e=>e.level===`error`),Pt=e=>`psql-explorer:design:${e}`;function Ft(e){try{let t=window.localStorage.getItem(Pt(e));if(!t)return;let n=JSON.parse(t);return typeof n.schema!=`string`||typeof n.name!=`string`||!Array.isArray(n.columns)?void 0:{...q(n.schema),...n}}catch{return}}function It(e,t){try{!t||ht(t)?window.localStorage.removeItem(Pt(e)):window.localStorage.setItem(Pt(e),JSON.stringify(t))}catch{}}var Lt=/(--[^\n]*|\/\*[\s\S]*?(?:\*\/|$))|('(?:[^']|'')*(?:'|$))|("(?:[^"]|"")*(?:"|$))|([A-Za-z_][\w$]*)|(\d+(?:\.\d+)?)|(\s+)|([\s\S])/g;function Rt(e){let t=[];for(let n of e.matchAll(Lt)){let e=n[1]?`comment`:n[2]?`string`:n[3]?`quoted`:n[4]?`word`:n[5]?`number`:n[6]?`space`:`punct`;t.push({kind:e,text:n[0],start:n.index,end:n.index+n[0].length})}return t}var zt=new Set(`select from where and or not in is null as on join inner left right full outer cross natural using
5
+ group by order having limit offset union all intersect except distinct insert into values update set
6
+ delete returning create alter drop table view index with recursive case when then else end exists
7
+ between like ilike similar to asc desc nulls first last over partition window filter lateral
8
+ default true false cast primary key references foreign unique check constraint explain analyze
9
+ begin commit rollback truncate fetch for only extension if`.split(/\s+/)),Bt=e=>zt.has(e.toLowerCase()),X=e=>e.kind===`quoted`?e.text.slice(1,-1).replace(/""/g,`"`):e.text.toLowerCase(),Z=e=>e?.kind===`word`||e?.kind===`quoted`,Vt=e=>{let t=e[e.length-1];return t?.kind===`word`?t.text.toLowerCase():``},Ht=new Set([`from`,`join`,`update`,`into`,`table`]);function Ut(e,t){let n=Rt(e).filter(e=>e.kind!==`space`&&e.kind!==`comment`),r=(e,n)=>{let r=t.filter(t=>t.name===n&&(e===void 0||t.schema===e));return r.find(e=>e.schema===`public`)??r[0]},i=[];for(let e=0;e<n.length;e++){if(!Z(n[e]))continue;let t=[n[e]];for(;n[e+1]?.text===`.`&&n[e+1].start===n[e].end&&Z(n[e+2])&&n[e+2].start===n[e+1].end;)t.push(n[e+2]),e+=2;i.push(t)}let a=[],o=new Map,s=new Map,c=[],l=``,u=!1;for(let e=0;e<n.length;e++){let t=n[e];if(t.kind===`word`&&Ht.has(t.text.toLowerCase())){u=!0,l=t.text.toLowerCase();continue}if(!u)continue;u=!1;let d=i.find(e=>e[0]===t);if(!d||d.length>2)continue;let f=d.length===2?r(X(d[0]),X(d[1])):r(void 0,X(d[0]));if(!f)continue;s.set(d[d.length-1],f),a.includes(f)||a.push(f);let p=e+d.length*2-1;n[p]?.text.toLowerCase()===`as`&&p++;let m=n[p],h=f.name;Z(m)&&!(m.kind===`word`&&Bt(m.text))&&(o.set(X(m),f),h=X(m),p++),c.push({name:h,table:f,starter:l,start:t.start}),n[p]?.text===`,`&&(u=!0)}return{tokens:n,chains:i,findTable:r,used:a,aliases:o,positions:s,scopes:c}}function Wt(e,t){let{chains:n,findTable:r,used:i,aliases:a,positions:o}=Ut(e,t),s=[],c=(e,t)=>e.columns.filter(e=>e.name===t),l=(e,t,n)=>s.push({start:e.start,end:e.end,table:t,columns:n});for(let e of n){let t=e[e.length-1];if(e.length===1&&e[0].kind===`word`&&Bt(e[0].text))continue;let n=e.map(X),s=o.get(t);if(s){l(t,s);continue}if(e.length===1){let e=n[0],r=a.get(e);if(r){l(t,r);continue}let o=i.filter(t=>c(t,e).length>0);o.length>0&&l(t,o[0],o.flatMap(t=>c(t,e)));continue}let u=n[n.length-2],d=e.length===3?r(n[0],u):a.get(u)??i.find(e=>e.name===u);if(!d){let i=e.length===2?r(n[0],n[1]):void 0;i&&l(t,i);continue}l(e[e.length-2],d);let f=c(d,n[n.length-1]);f.length>0&&l(t,d,f)}return s.sort((e,t)=>e.start-t.start)}function Gt(e,t){if(t.length===0)return[];let n=Rt(e).filter(e=>e.kind!==`space`&&e.kind!==`comment`),r=[];for(let e=0;e<n.length;e++){let i=n[e];if(!Z(i)||n[e+1]?.text!==`(`||i.kind===`word`&&Bt(i.text))continue;let a=X(i),o=n[e-1]?.text===`.`&&n[e-1].end===i.start&&Z(n[e-2])?X(n[e-2]):void 0,s=t.filter(e=>e.name===a&&(o===void 0||e.schema===o));s.length>0&&r.push({start:i.start,end:i.end,functions:s})}return r}function Kt(e){let t=[],n=0,r=``;for(let i of Rt(e))(i.text===`(`||i.text===`[`)&&n++,(i.text===`)`||i.text===`]`)&&n--,i.text===`,`&&n===0?(t.push(r.trim()),r=``):r+=i.text;return r.trim()&&t.push(r.trim()),t}function qt(e,t,n){if(n.length===0)return;let r=Rt(e.slice(0,t)).filter(e=>e.kind!==`space`&&e.kind!==`comment`),i=[];r.forEach((e,t)=>{if(e.text===`(`&&e.kind===`punct`){let e=r[t-1],n=Z(e)&&!(e.kind===`word`&&Bt(e.text)),a=r[t-2]?.text===`.`&&r[t-2].end===e?.start;i.push({token:n?e:void 0,qualifier:n&&a&&Z(r[t-3])?X(r[t-3]):void 0,commas:0})}else e.text===`)`&&e.kind===`punct`?i.pop():e.text===`,`&&e.kind===`punct`&&i.length>0&&i[i.length-1].commas++});let a=i[i.length-1];if(!a?.token)return;let o=X(a.token),s=n.filter(e=>e.name===o&&(a.qualifier===void 0||e.schema===a.qualifier)),c=s.filter(e=>Kt(e.signature).length>a.commas||/\bVARIADIC\b/.test(e.signature)),l=c.length>0?c:s;return l.length>0?{name:o,functions:l,index:a.commas}:void 0}function Jt(e,t,n){let r=e[t-1];if(r===void 0||!/[\s,;)]/.test(r))return;let{chains:i,positions:a}=Ut(e,n),o=i.find(e=>e[e.length-1].end===t-1);if(!o||o.length!==1||!a.has(o[0]))return;let s=n.filter(e=>e.name===X(o[0]));if(s.length!==1)return;let c=`${Q(s[0].schema)}.`,l=o[0].start;return{sql:e.slice(0,l)+c+e.slice(l),caret:t+c.length}}function Yt(e){return`SELECT\n${e.columns.map(e=>` ${Q(e.name)}`).join(`,
10
+ `)||` *`}\nFROM ${Q(e.schema)}.${Q(e.name)}\nLIMIT 100;\n`}var Xt=12,Q=e=>/^[a-z_][a-z0-9_$]*$/.test(e)&&!Bt(e)?e:`"${e.replace(/"/g,`""`)}"`,$=(e,t)=>e.toLowerCase().startsWith(t.toLowerCase()),Zt=new Set(`select from join on where group order having set returning values limit using`.split(` `)),Qt=new Set([`select`,`group`,`order`]),$t=(e,t)=>e.schema===t.schema&&e.name===t.table;function en(e){let t=e.toLowerCase();return t.endsWith(`[]`)?`array`:/^(smallint|integer|bigint|numeric|decimal|real|double precision|money|oid)/.test(t)?`number`:/^(text|character|char|varchar|citext|name|bpchar)/.test(t)?`text`:/^(timestamp|date)/.test(t)?`time`:/^(json)/.test(t)?`json`:t}function tn(e){let t=t=>e[t]?.kind===`word`?e[t].text.toLowerCase():``,n=e=>t(e)===`not`?e-1:e,r=e.length-1;if(r<0)return-1;if(e[r].kind===`punct`&&/[=<>]/.test(e[r].text)){let t=r;for(;e[t-1]?.kind===`punct`&&/[!<>=]/.test(e[t-1].text);)t--;return t-1}if(t(r)===`like`||t(r)===`ilike`)return n(r-1);let i=r;for(;i>=0&&(e[i].text===`,`||e[i].text===`.`||[`string`,`number`,`word`,`quoted`].includes(e[i].kind))&&t(i)!==`in`;)i--;return e[i]?.text===`(`&&t(i-1)===`in`?n(i-2):-1}function nn(e){let t=[],n=[``];return e.forEach((r,i)=>{if(r.text===`(`)n.push(``);else if(r.text===`)`)n.length>1&&n.pop();else if(r.kind===`word`&&Zt.has(r.text.toLowerCase()))n[n.length-1]=r.text.toLowerCase();else if(r.kind===`word`&&r.text.toLowerCase()===`as`&&n[n.length-1]===`select`){let n=e[i+1];Z(n)&&t.push(X(n))}}),t}var rn=new Set([`constraint`,`primary`,`unique`,`foreign`,`check`,`exclude`,`like`,`period`]),an=new Set([`not`,`null`,`default`,`primary`,`references`,`unique`,`check`,`generated`,`constraint`,`collate`]),on=[`serial`,`bigserial`,`smallserial`,...lt.map(e=>e.name)];function sn(e,t,n,r){let i=t.map((e,t)=>e.kind===`punct`&&e.text===`;`?t:-1).filter(e=>e>=0),a=i.filter(e=>t[e].start<n).pop()??-1,o=i.find(e=>t[e].start>=n)??t.length,s=t.slice(a+1,o),c=e=>e?.kind===`word`?e.text.toLowerCase():``;if(c(s[0])!==`create`)return;let l=s.findIndex(e=>c(e)===`table`);if(l<0||l>4)return;let u=s.findIndex((e,t)=>t>l&&e.kind===`punct`&&e.text===`(`);if(u<0||n<s[u].end)return;let d=[[]],f=0;for(let e=u+1;e<s.length;e++){let t=s[e];if(t.kind===`punct`&&t.text===`,`&&f===0)d.push([]);else{if(t.kind===`punct`&&t.text===`(`&&f++,t.kind===`punct`&&t.text===`)`){if(f===0){if(n>t.start)return;break}f--}d[d.length-1].push(t)}}let p=d.flatMap(t=>{let n=t[0];if(!Z(n)||n.kind===`word`&&rn.has(n.text.toLowerCase()))return[];let r=t.slice(1),i=r.findIndex(e=>an.has(c(e))),a=i<0?r:r.slice(0,i),o=a.length>0?e.slice(a[0].start,a[a.length-1].end):``;return[{name:X(n),type:o}]}),m=[],h=u+1;s.forEach((e,t)=>{t<=u||e.end>n||e.kind===`punct`&&(e.text===`(`?m.push(t):e.text===`)`?m.pop():e.text===`,`&&m.length===0&&(h=t+1))});let g=s.filter((e,t)=>t>=h&&e.end<=n);if(m.length===0){let e=g[0];return g.length===1&&Z(e)&&!(e.kind===`word`&&rn.has(e.text.toLowerCase()))?{at:`type`}:void 0}if(m.length!==1)return;let _=m[0],v=new Set(s.filter((e,t)=>t>_&&e.end<=n&&Z(e)).map(e=>X(e))),y=s[_-1],b=c(s[_-2]);if(c(y)===`unique`||c(y)===`include`||c(y)===`key`&&(b===`primary`||b===`foreign`))return{at:`columns`,columns:p,taken:v};if(Z(y)){let e=s[_-2]?.text===`.`&&Z(s[_-3]);if(c(s[_-(e?4:2)])===`references`){let t=r(e?X(s[_-3]):void 0,X(y));if(t)return{at:`columns`,columns:t.columns.map(e=>({name:e.name,type:e.type})),taken:v}}}}function cn(e,t,n){let r=e.map((e,t)=>e.kind===`punct`&&e.text===`;`?t:-1).filter(e=>e>=0),i=r.filter(n=>e[n].start<t).pop()??-1,a=r.find(n=>e[n].start>=t)??e.length,o=e.slice(i+1,a),s=e=>e?.kind===`word`?e.text.toLowerCase():``;if(s(o[0])!==`create`)return;let c=o.slice(1,6).map(s).find(e=>e===`index`||e===`trigger`||e===`policy`);if(!c)return;let l=o.findIndex(e=>s(e)===`on`);if(l<0||t<o[l].end)return;let u=l+1;if(s(o[u])===`only`&&u++,o[u]===void 0||o[u].start>=t)return{wants:`table`};let d=o[u];if(!Z(d))return;let f,p=X(d);o[u+1]?.text===`.`&&Z(o[u+2])&&(f=p,p=X(o[u+2]),u+=2);let m=n(f,p);if(!m||o[u].end>=t)return;let h=[],g=!1,_=o[u];for(let e of o.slice(u+1)){if(e.start>=t)break;if(e.text===`(`){let e=s(_);h.push(c===`index`?e!==`with`:c===`policy`&&(e===`using`||e===`check`))}else e.text===`)`?h.pop():c===`index`&&s(e)===`where`&&h.length===0&&(g=!0);_=e}return g||h.some(Boolean)?{wants:`columns`,table:m}:void 0}function ln(e,t,n,r=!1,i,a=[]){let o=e.slice(0,t),s=/[A-Za-z_][\w$]*$/.exec(o)?.[0]??``,c=t-s.length,l=e[c-1]===`.`;if(Rt(e).find(e=>e.kind===`string`&&e.start<t&&t<e.end||e.kind===`comment`&&e.start<t&&t<=e.end))return;let{tokens:u,findTable:d,used:f,aliases:p,scopes:m}=Ut(e,n),h=u.filter(e=>e.end<=(l?c-1:c)),g=l?void 0:sn(e,u,c,d);if(g){let e=h[h.length-1];if(!s&&!r&&g.at===`columns`&&![`(`,`,`].includes(e?.text??``))return;let n=g.at===`type`?on.filter(e=>$(e,s)).map((e,t)=>({label:e,insert:e,kind:`type`,detail:`type`,score:-t})):g.columns.filter(e=>!g.taken.has(e.name)&&$(e.name,s)).map((e,t)=>({label:e.name,insert:Q(e.name),kind:`column`,detail:e.type||void 0,score:1e3-t})),i=n.filter(e=>e.label!==s||n.length>1).slice(0,40);return i.length>0?{from:c,to:t,items:i}:void 0}let _=l?void 0:cn(u,c,d);if(_?.wants===`columns`){let e=h[h.length-1];if(!s&&!r&&![`(`,`,`,`where`,`and`,`or`,`not`].includes(e?.text.toLowerCase()??``))return;let n=_.table.columns.filter(e=>$(e.name,s)).map((e,t)=>({label:e.name,insert:Q(e.name),kind:`column`,detail:e.type,score:1e3-t})),i=n.filter(e=>e.label!==s||n.length>1).slice(0,40);return i.length>0?{from:c,to:t,items:i}:void 0}let v=_?.wants===`table`||!l&&Vt(h)===`references`,y=l?h.pop():void 0,b=h[h.length-1],x=b?.kind===`word`?b.text.toLowerCase():``,S=[...h].reverse().find(e=>e.kind===`word`&&Zt.has(e.text.toLowerCase())),C=S?.text.toLowerCase()===`on`,w=tn(h),T=x===`is`||x===`not`&&h[h.length-2]?.text.toLowerCase()===`is`,E=C&&(x===`on`||x===`and`||x===`or`),D=x===`column`&&m.length>0;if(!l&&!s&&!r&&!(v||D||x===`join`||E||w>=0||T))return;let O=e=>m.find(t=>t.name===e)??m.find(t=>t.table.name===e),k=[...m].reverse().find(e=>e.starter===`join`&&e.start<t),A,ee=w>=0?h[w]:void 0;if(ee&&Z(ee)){let e=h[w-1]?.text===`.`?h[w-2]:void 0,t=e&&Z(e)?[O(X(e))].filter(e=>e!==void 0):m.filter(e=>e.table.columns.some(e=>e.name===X(ee))),n=t[0]?.table.columns.find(e=>e.name===X(ee));t.length===1&&n&&(A={scope:t[0],column:n})}let j=x===`like`||x===`ilike`,te=(e,t)=>{if(!A)return 0;let{scope:n,column:r}=A;if(e===n&&t===r)return-1;if(e!==n&&(r.references&&$t(e.table,r.references)&&r.references.column===t.name||t.references&&$t(n.table,t.references)&&t.references.column===r.name))return 100;let i=t.type===r.type?40:en(t.type)===en(r.type)?25:0;return i+(i>0&&t.name===r.name?10:0)},M=[],N=e=>{if(!s)return;let t=a.filter(t=>$(t.name,s)&&(e===void 0||t.schema===e)).sort((e,t)=>Number(e.schema===`pg_catalog`)-Number(t.schema===`pg_catalog`));for(let e of t)M.push({label:`${e.name}(${e.signature})`,insert:`${Q(e.name)}(`,kind:`function`,detail:e.returns??e.kind})},P=(e,t,n)=>{let r=A?te(e,t):C?t.references?20:t.primaryKey?15:0:0;return{label:n?`${e.name}.${t.name}`:t.name,insert:n?`${Q(e.name)}.${Q(t.name)}`:Q(t.name),kind:`column`,detail:r>=100?`foreign key`:`${t.type}${t.primaryKey?` · pk`:``}`,related:r>=100,fits:r>=25&&r<100,score:r}},F=(e,t,n)=>!s||$(t.name,s)||n&&$(e.name,s);if(l){if(!y||!Z(y))return;let e=X(y),t=O(e),r=t?.table??p.get(e)??f.find(t=>t.name===e)??d(void 0,e);if(r){let n=t??{name:e,table:r,starter:``,start:0};for(let e of r.columns)F(n,e,!1)&&M.push(P(n,e,!1))}else{for(let t of n)t.schema===e&&$(t.name,s)&&M.push({label:t.name,insert:Q(t.name),kind:`table`,detail:t.kind});N(e)}}else if(v){let e=new Set;for(let t of n){let n=`${t.schema}.${t.name}`;!e.has(n)&&$(t.name,s)&&(e.add(n),M.push({label:t.name,insert:Q(t.name),kind:`table`,detail:t.schema}))}for(let e of new Set(n.map(e=>e.schema)))s&&$(e,s)&&M.push({label:e,insert:Q(e),kind:`schema`})}else if(D)for(let e of m)for(let t of e.table.columns)F(e,t,!1)&&M.push(P(e,t,!1));else if(T)for(let e of x===`not`?[`NULL`,`TRUE`,`FALSE`]:[`NULL`,`NOT NULL`,`TRUE`,`FALSE`])$(e,s)&&M.push({label:e,insert:e,kind:`keyword`});else if(A){for(let e of m)for(let t of e.table.columns){if(!F(e,t,m.length>1))continue;let n=P(e,t,m.length>1);j&&en(t.type)===`text`&&(n.score=Math.max(n.score??0,25)),M.push(n)}if(N(),en(A.column.type)===`boolean`)for(let e of[`TRUE`,`FALSE`])$(e,s)&&M.push({label:e,insert:e,kind:`keyword`,score:50})}else if(C&&(E||s)){for(let e of m)for(let t of e.table.columns){let n=t.references;if(n)for(let r of m){if(r===e||!$t(r.table,n))continue;let i=`${e.name}.${t.name} = ${r.name}.${n.column}`;(!s||$(i,s)||$(`${r.name}.${n.column}`,s))&&M.push({label:i,insert:`${Q(e.name)}.${Q(t.name)} = ${Q(r.name)}.${Q(n.column)}`,kind:`condition`,detail:`foreign key`,related:!0,score:e===k||r===k?100:80})}}for(let e of m)for(let t of e.table.columns){if(!F(e,t,!0))continue;let n=P(e,t,!0);n.score=(n.score??0)+(e===k?5:0),M.push(n)}}else{let e=Ht.has(x);if(!e){let e=S?.text.toLowerCase();if(e===`group`||e===`order`){let e=new Set;for(let t of nn(h))!e.has(t)&&$(t,s)&&(e.add(t),M.push({label:t,insert:Q(t),kind:`column`,detail:`alias`,score:1}))}for(let e of m)for(let t of e.table.columns)F(e,t,!1)&&M.push(P(e,t,!1));if(Qt.has(S?.text.toLowerCase()??``)){let e=m.length>1;for(let t of m)for(let n of t.table.columns){let r=Ge(n.type);if(!r)continue;let a=e?`${Q(t.name)}.${Q(n.name)}`:Q(n.name);for(let o of H(r)){let c=U(e?`${t.name}.${n.name}`:n.name,r,o,i);if(s&&!F(t,n,!1)&&!$(c,s))continue;let l=Q(`${n.name}_${o.alias}`);M.push({label:c,insert:U(a,r,o,i)+(S?.text.toLowerCase()===`select`?` AS ${l}`:``),kind:`column`,detail:`${o.label.toLowerCase()} of ${r===`timestamptz`&&i?i:r}`,score:-1})}}}}let t=new Set;for(let r of n){if(!$(r.name,s))continue;let n=`${r.schema}.${r.name}`;if(t.has(n))continue;t.add(n);let i=e&&m.length>0?m.flatMap(e=>[...e.table.columns.some(e=>e.references&&$t(r,e.references))?[`referenced by ${e.table.name}`]:[],...r.columns.some(t=>t.references&&$t(e.table,t.references))?[`references ${e.table.name}`]:[]])[0]:void 0;M.push({label:r.name,insert:Q(r.name),kind:`table`,detail:i??r.schema,related:!!i,score:i?100:0})}for(let e of new Set(n.map(e=>e.schema)))s&&$(e,s)&&M.push({label:e,insert:Q(e),kind:`schema`});if(e||N(),!e&&s)for(let e of zt)$(e,s)&&M.push({label:e.toUpperCase(),insert:e.toUpperCase(),kind:`keyword`})}M.sort((e,t)=>(t.score??0)-(e.score??0));let I=M.filter(e=>e.label!==s||M.length>1).slice(0,Xt);return I.length>0?{from:c,to:t,items:I}:void 0}var un=new Set([`=`,`<`,`>`,`<=`,`>=`,`<>`,`!=`]);function dn(e,t){let n=W(e).filter(e=>e.kind!==`space`&&e.kind!==`comment`),r=new Map;for(let n of Wt(e,t))n.columns&&r.set(n.end,n.columns);let i=e=>{let t=e&&r.get(e.end);return t?.length?Ge(t[0].type):void 0},a=e=>n[e]?.kind===`word`?n[e].text.toLowerCase():``,o={};return n.forEach((e,t)=>{if(e.kind!==`param`||o[e.text])return;let r,s=n[t-1];s?.kind===`operator`&&un.has(s.text)&&(r=i(n[t-2]));let c=n[t+1];if(!r&&c?.kind===`operator`&&un.has(c.text)&&(r=i(n[t+2])),!r&&a(t-1)===`between`&&(r=i(n[t-2])),!r&&a(t-1)===`and`){for(let e of[3,4])if(a(t-e)===`between`){r=i(n[t-e-1]);break}}r&&(o[e.text]=r)}),o}var fn=` `;function pn(e,t,n,r){let i=e.slice(t,n).includes(`
11
+ `);if(!r&&!i)return{sql:e.slice(0,t)+fn+e.slice(n),from:t+2,to:t+2};let a=e.lastIndexOf(`
12
+ `,t-1)+1,o=n>t&&e[n-1]===`
13
+ `?n-1:n,s=e.slice(a,o).split(`
14
+ `),c=0,l=0,u=s.map((e,t)=>{let n=e;if(!r)n=fn+e;else{let t=/^(?: {1,2}|\t)/.exec(e);t&&(n=e.slice(t[0].length))}return t===0&&(c=n.length-e.length),l+=n.length-e.length,n});return{sql:e.slice(0,a)+u.join(`
15
+ `)+e.slice(o),from:Math.max(a,t+c),to:Math.max(a,n+l)}}var mn=[`table`,`function`,`sequence`,`type`];function hn({environment:e,object:t,erd:n,stats:r,sql:i,seed:a,compare:o,graph:s,cypher:c,design:l,builder:u,statement:d,find:f,rows:p,tab:m,page:h}){if(!e)return`#/`;let g=[e];i&&g.push(`sql`),a&&g.push(`seed`,...a.schema&&a.table?[a.schema,a.table]:[]),s&&g.push(`graph`,...s.schema&&s.table?[s.schema,s.table]:[]),c&&g.push(`cypher`),u&&g.push(`build`),l&&g.push(`design`,...l.schema&&l.table?[`app`,l.schema,l.table]:[`new`]),r&&g.push(`stats`),o&&g.push(`compare`,...o.with?[o.with]:[]),f&&g.push(`find`,f.text,...f.schema?[f.schema]:[]),n&&g.push(`erd`,n),t&&(g.push(t.kind,t.schema,t.name),t.kind===`function`&&g.push(t.args??``));let _=`#/${g.map(encodeURIComponent).join(`/`)}`,v=new URLSearchParams;i&&d?.text&&(v.set(`q`,d.text),d.explain?v.set(`explain`,d.analyze?`analyze`:`1`):d.run&&v.set(`run`,`1`),d.page&&v.set(`page`,String(d.page))),o?.with&&o.schema&&(v.set(`schema`,o.schema),o.withSchema&&o.withSchema!==o.schema&&v.set(`withSchema`,o.withSchema)),u?.state&&v.set(`b`,u.state),c?.query&&(v.set(`q`,c.query),c.run&&v.set(`run`,`1`)),s?.table&&(s.filters?.length&&v.set(`filters`,JSON.stringify(s.filters)),s.keys?.length&&v.set(`keys`,JSON.stringify(s.keys)),s.depth!==void 0&&s.depth!==1&&v.set(`depth`,String(s.depth)),s.direction&&s.direction!==`both`&&v.set(`direction`,s.direction),s.expanded?.length&&v.set(`expand`,JSON.stringify(s.expanded))),t&&(m&&m!==`columns`&&v.set(`tab`,m),p&&v.set(`rows`,JSON.stringify(p)),h&&v.set(`page`,String(h)));let y=v.toString();return y?`${_}?${y}`:_}function gn(e){let t=Rt(e).filter(e=>e.kind===`word`).map(e=>e.text.toLowerCase()),n=t[0];return!n||![`select`,`with`,`show`,`values`,`table`].includes(n)?!1:!t.some(e=>_n.has(e))}var _n=new Set([`insert`,`update`,`delete`,`merge`,`truncate`,`drop`,`alter`,`create`,`grant`,`revoke`,`copy`,`call`,`do`,`into`,`vacuum`,`reindex`,`cluster`,`lock`,`set`,`reset`,`listen`,`notify`,`refresh`,`comment`,`import`]);function vn(e){let t=e.get(`rows`);if(t)try{let{filters:e,sort:n}=JSON.parse(t);return{filters:Array.isArray(e)?e:[],sort:Array.isArray(n)?n:[]}}catch{return}}function yn(e){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}function bn(e){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}}function xn(e){if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>Array.isArray(e)&&e.length>0&&e.every(e=>typeof e==`string`)):[]}catch{return[]}}var Sn=e=>{let t=Number(e.get(`page`));return Number.isInteger(t)&&t>0?t:void 0};function Cn(e){let t=e.indexOf(`?`),n=t<0?e:e.slice(0,t),r=new URLSearchParams(t<0?``:e.slice(t+1)),i=wn(n);if(i.compare?.with){let e=r.get(`schema`)||void 0,t=e&&r.get(`withSchema`)||void 0;return{...i,compare:{...i.compare,...e?{schema:e}:{},...t?{withSchema:t}:{}}}}if(i.graph?.table){let e=yn(r.get(`filters`)),t=Number(r.get(`depth`)),n=r.get(`direction`),a=bn(r.get(`expand`)),o=xn(r.get(`keys`));return{...i,graph:{...i.graph,...e.length>0?{filters:e}:{},...o.length>0?{keys:o}:{},...Number.isInteger(t)&&t>=0&&t<=3&&r.has(`depth`)?{depth:t}:{},...n===`out`||n===`in`?{direction:n}:{},...a.length>0?{expanded:a}:{}}}}if(i.builder){let e=r.get(`b`);return e?{...i,builder:{state:e}}:i}if(i.cypher){let e=r.get(`q`);return e?.trim()?{...i,cypher:{query:e,...r.get(`run`)===`1`?{run:!0}:{}}}:i}if(i.sql){let e=r.get(`q`);if(!e?.trim())return i;let t=r.get(`explain`)===`1`||r.get(`explain`)===`analyze`,n=Sn(r),a={text:e,...t?{explain:t,...r.get(`explain`)===`analyze`?{analyze:!0}:{}}:r.get(`run`)===`1`?{run:!0}:{},...n&&!t?{page:n}:{}};return{...i,statement:a}}if(!i.object)return i;let a=vn(r),o=r.get(`tab`),s=Sn(r);return{...i,...a?{rows:a}:{},...o?{tab:o}:{},...s?{page:s}:{}}}function wn(e){let[t,n,r,i,a]=e.replace(/^#\/?/,``).split(`/`).map(decodeURIComponent);return t?n===`sql`?{environment:t,sql:!0}:n===`stats`?{environment:t,stats:!0}:n===`compare`?{environment:t,compare:r?{with:r}:{}}:n===`design`?r===`app`&&i&&a?{environment:t,design:{schema:i,table:a}}:{environment:t,design:{}}:n===`cypher`?{environment:t,cypher:{}}:n===`build`?{environment:t,builder:{}}:n===`graph`?{environment:t,graph:r&&i?{schema:r,table:i}:{}}:n===`seed`?{environment:t,seed:r&&i?{schema:r,table:i}:{}}:n===`find`&&r?{environment:t,find:{text:r,...i?{schema:i}:{}}}:n===`erd`&&r?{environment:t,erd:r}:!n||!mn.includes(n)||!r||!i?{environment:t}:{environment:t,object:{kind:n,schema:r,name:i,args:a}}:{}}function Tn(){let[e,t]=(0,d.useState)(window.location.hash);return(0,d.useEffect)(()=>{let e=()=>t(window.location.hash);return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]),Cn(e)}var En=(e,t)=>e?.kind===t.kind&&e.schema===t.schema&&e.name===t.name&&(e.args??``)===(t.args??``);function Dn(e,t,n=!0){let r=hn({environment:e,sql:!0,statement:{text:t,run:n}});window.location.hash===r?window.dispatchEvent(new HashChangeEvent(`hashchange`)):window.location.hash=r}function On(e){let t=hn(e);return t.length<=8e3?t:hn({...e,statement:void 0,cypher:e.cypher&&{...e.cypher,query:void 0},builder:e.builder&&{},rows:void 0,graph:e.graph&&{...e.graph,filters:void 0,keys:void 0,expanded:void 0}})}function kn(e){try{window.history.replaceState(null,``,On(e))}catch{}}export{We as $,G as A,Mt as B,ft as C,ht as D,Nt as E,xt as F,rt as G,ot as H,Et as I,Je as J,tt as K,wt as L,It as M,bt as N,Ft as O,St as P,et as Q,vt as R,ut as S,Tt as T,W as U,ct as V,at as W,$e as X,Ye as Y,Ge as Z,qt as _,kn as a,T as at,dt as b,Tn as c,c as ct,ln as d,Ve as et,pn as f,Yt as g,Jt as h,Cn as i,Fe as it,mt as j,K as k,Wt as l,dn as m,gn as n,Be as nt,hn as o,u as ot,Bt as p,U as q,Dn as r,Le as rt,En as s,o as st,_n as t,ze as tt,Gt as u,Kt as v,q as w,lt as x,Rt as y,_t as z};