@kedem/okdb 1.0.0 → 1.0.1

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 (117) hide show
  1. package/README.md +1 -1
  2. package/bin/okdb.js +1 -1
  3. package/okdb-data/default/data.mdb +0 -0
  4. package/okdb-data/default/lock.mdb +0 -0
  5. package/okdb-data/~log/data.mdb +0 -0
  6. package/okdb-data/~log/lock.mdb +0 -0
  7. package/okdb-data/~system/data.mdb +0 -0
  8. package/okdb-data/~system/lock.mdb +0 -0
  9. package/okdb.js +1 -1
  10. package/package.json +1 -1
  11. package/public/admin-app.js +1 -1
  12. package/public/components/admin-route-host.ok.js +1 -1
  13. package/public/components/env-picker.ok.js +1 -1
  14. package/public/components/field-path-input.ok.js +1 -1
  15. package/public/components/geo-map.ok.js +1 -1
  16. package/public/components/ok-cron-input.ok.js +1 -1
  17. package/public/components/ok-dropzone.ok.js +1 -1
  18. package/public/components/ok-js-input.ok.js +1 -1
  19. package/public/components/ok-json-input.ok.js +1 -1
  20. package/public/components/ok-text-monaco-input.ok.js +1 -1
  21. package/public/components/theme-toggle.ok.js +1 -1
  22. package/public/login-app.js +1 -1
  23. package/public/modules/ok.js +1 -1
  24. package/public/sections/api/parts/api-endpoint.ok.js +1 -1
  25. package/public/sections/auth/modals/create-token-modal.ok.js +1 -1
  26. package/public/sections/auth/modals/edit-token-modal.ok.js +1 -1
  27. package/public/sections/auth/modals/perm-info-popover.ok.js +1 -1
  28. package/public/sections/auth/parts/token-detail.ok.js +1 -1
  29. package/public/sections/auth/parts/token-list.ok.js +1 -1
  30. package/public/sections/db/modals/add-item-modal.ok.js +1 -1
  31. package/public/sections/db/modals/create-env-modal.ok.js +1 -1
  32. package/public/sections/db/modals/create-fts-modal.ok.js +1 -1
  33. package/public/sections/db/modals/create-index-modal.ok.js +1 -1
  34. package/public/sections/db/modals/create-pipeline-modal.ok.js +1 -1
  35. package/public/sections/db/modals/demo-env-modal.ok.js +1 -1
  36. package/public/sections/db/modals/remove-env-modal.ok.js +1 -1
  37. package/public/sections/db/modals/schema-edit-modal.ok.js +1 -1
  38. package/public/sections/db/parts/db-overview.ok.js +1 -1
  39. package/public/sections/db/parts/db-pipelines-panel.ok.js +1 -1
  40. package/public/sections/db/parts/edit-row.ok.js +1 -1
  41. package/public/sections/db/parts/tm-timeline.ok.js +1 -1
  42. package/public/sections/db/parts/type-changelog.ok.js +1 -1
  43. package/public/sections/db/parts/type-list.ok.js +1 -1
  44. package/public/sections/db/parts/type-pipelines-tab.ok.js +1 -1
  45. package/public/sections/db/parts/type-schema-tab.ok.js +1 -1
  46. package/public/sections/db/parts/type-viewer.ok.js +1 -1
  47. package/public/sections/db/parts/type-violations-tab.ok.js +1 -1
  48. package/public/sections/embeddings/modals/register-model-modal.ok.js +1 -1
  49. package/public/sections/embeddings/parts/embed-create-panel.ok.js +1 -1
  50. package/public/sections/embeddings/parts/embed-embedder-panel.ok.js +1 -1
  51. package/public/sections/embeddings/parts/embed-engine-declaration-editor.ok.js +1 -1
  52. package/public/sections/embeddings/parts/embed-engine-list.ok.js +1 -1
  53. package/public/sections/embeddings/parts/embed-indexer-panel.ok.js +1 -1
  54. package/public/sections/embeddings/parts/embed-lifecycle-bar.ok.js +1 -1
  55. package/public/sections/embeddings/parts/embed-model-catalog.ok.js +1 -1
  56. package/public/sections/embeddings/parts/embed-overview.ok.js +1 -1
  57. package/public/sections/embeddings/parts/embed-search-panel.ok.js +1 -1
  58. package/public/sections/embeddings/parts/embed-worker-panel.ok.js +1 -1
  59. package/public/sections/embeddings/parts/embeddings-engine-panel.ok.js +1 -1
  60. package/public/sections/embeddings/parts/engines-overview.ok.js +1 -1
  61. package/public/sections/embeddings/parts/pipeline-create-panel.ok.js +1 -1
  62. package/public/sections/engines/engine-panel-shared-style.js +1 -1
  63. package/public/sections/engines/engine-ui-utils.js +1 -1
  64. package/public/sections/engines/modals/engine-modal.ok.js +1 -1
  65. package/public/sections/engines/parts/engine-declaration-editor.ok.js +1 -1
  66. package/public/sections/engines/parts/engine-lifecycle-actions.ok.js +1 -1
  67. package/public/sections/engines/parts/engine-panel-shell.ok.js +1 -1
  68. package/public/sections/engines/parts/engine-resource-card.ok.js +1 -1
  69. package/public/sections/engines/parts/engine-row-item.ok.js +1 -1
  70. package/public/sections/engines/parts/generic-engine-panel.ok.js +1 -1
  71. package/public/sections/files/parts/files-blob-status.ok.js +1 -1
  72. package/public/sections/files/parts/files-collection-list.ok.js +1 -1
  73. package/public/sections/files/parts/files-collection-panel.ok.js +1 -1
  74. package/public/sections/files/parts/files-file-list.ok.js +1 -1
  75. package/public/sections/files/parts/files-overview.ok.js +1 -1
  76. package/public/sections/files/parts/files-path-browser.ok.js +1 -1
  77. package/public/sections/files/parts/files-upload-panel.ok.js +1 -1
  78. package/public/sections/functions/modals/function-modal.ok.js +1 -1
  79. package/public/sections/functions/parts/function-detail.ok.js +1 -1
  80. package/public/sections/functions/parts/function-logs.ok.js +1 -1
  81. package/public/sections/functions/parts/function-runner.ok.js +1 -1
  82. package/public/sections/functions/parts/functions-list.ok.js +1 -1
  83. package/public/sections/license/parts/license-panel.ok.js +1 -1
  84. package/public/sections/queue/modals/create-bucket-modal.ok.js +1 -1
  85. package/public/sections/queue/modals/edit-bucket-modal.ok.js +1 -1
  86. package/public/sections/queue/modals/edit-job-modal.ok.js +1 -1
  87. package/public/sections/queue/modals/enqueue-job-modal.ok.js +1 -1
  88. package/public/sections/queue/modals/job-type-modal.ok.js +1 -1
  89. package/public/sections/queue/parts/ok-job-form.ok.js +1 -1
  90. package/public/sections/queue/parts/queue-buckets.ok.js +1 -1
  91. package/public/sections/queue/parts/queue-job-types.ok.js +1 -1
  92. package/public/sections/queue/parts/queue-jobs.ok.js +1 -1
  93. package/public/sections/queue/parts/queue-types.ok.js +1 -1
  94. package/public/sections/queue/parts/queue-workers.ok.js +1 -1
  95. package/public/sections/sync/parts/sync-node-detail.ok.js +1 -1
  96. package/public/sections/sync/parts/sync-retention.ok.js +1 -1
  97. package/public/sections/sync/parts/sync-topology.ok.js +1 -1
  98. package/public/sections/system/modals/data-ops-modal.ok.js +1 -1
  99. package/public/sections/system/parts/system-api-panel.ok.js +1 -1
  100. package/public/sections/system/parts/system-auth-panel.ok.js +1 -1
  101. package/public/sections/system/parts/system-log-history.ok.js +1 -1
  102. package/public/sections/system/parts/system-log.ok.js +1 -1
  103. package/public/sections/system/parts/system-status.ok.js +1 -1
  104. package/public/sections/system/parts/system-sync-panel.ok.js +1 -1
  105. package/public/sections/views/modals/create-view-modal.ok.js +1 -1
  106. package/public/sections/views/parts/view-detail.ok.js +1 -1
  107. package/public/sections/views/parts/views-list.ok.js +1 -1
  108. package/public/sections/views/parts/views-overview.ok.js +1 -1
  109. package/public/setup-app.js +1 -1
  110. package/public/stores/auth-store.js +1 -1
  111. package/public/stores/events-store.js +1 -1
  112. package/public/stores/functions-store.js +1 -1
  113. package/public/stores/okdb-store.js +1 -1
  114. package/public/stores/theme-store.js +1 -1
  115. package/public/util/permissions.js +1 -1
  116. package/public/util/sift-schema.js +1 -1
  117. package/public/view-models/type-query-vm.js +1 -1
@@ -1 +1 @@
1
- const _0x1b645b=_0x33ca;(function(_0x5f010d,_0x300df7){const _0x2c3d4b=_0x33ca,_0x39965f=_0x5f010d();while(!![]){try{const _0x510049=-parseInt(_0x2c3d4b(0x206))/0x1+parseInt(_0x2c3d4b(0x271))/0x2+-parseInt(_0x2c3d4b(0x1b5))/0x3+parseInt(_0x2c3d4b(0x290))/0x4+parseInt(_0x2c3d4b(0x2a5))/0x5+-parseInt(_0x2c3d4b(0x26d))/0x6+parseInt(_0x2c3d4b(0x201))/0x7*(parseInt(_0x2c3d4b(0x1b7))/0x8);if(_0x510049===_0x300df7)break;else _0x39965f['push'](_0x39965f['shift']());}catch(_0x62f3d1){_0x39965f['push'](_0x39965f['shift']());}}}(_0x11f9,0xc7608));import _0x171b5f from'@toolkit/elements/ok-icon.ok.js';import _0x46a359 from'@toolkit/elements/ok-table.ok.js';import _0x25007f from'@toolkit/core/ok-overlay.ok.js';import _0x46bb9a from'../../../components/geo-map.ok.js';import _0x393513 from'../../../components/ok-json-input.ok.js';import _0x946eea from'../../../view-models/type-query-vm.js';import{buildSiftSchema as _0xf653e}from'../../../util/sift-schema.js';import _0x3ac0ed from'../modals/add-item-modal.ok.js';import _0x5501e3 from'../modals/create-fts-modal.ok.js';import _0x1ea0d1 from'../modals/create-index-modal.ok.js';import _0x3a1f30 from'../modals/create-pipeline-modal.ok.js';import _0x3198ff from'./edit-row.ok.js';import _0x266dde from'../../../stores/events-store.js';function _0x33ca(_0x4c8639,_0x4f0767){_0x4c8639=_0x4c8639-0x1ac;const _0x11f931=_0x11f9();let _0x33ca75=_0x11f931[_0x4c8639];return _0x33ca75;}function _0x11f9(){const _0x3fa6fd=['INDEX_HAS_CONSUMERS','keys','engines','__create_pipeline__','error','indexStatuses','Geo\x20query\x20error','searchMode','POST','API','Rebuilding\x20index\x20\x22','$ok','isArray','defaultTTLPreset','typeFields','fts:registered','trim','loadTypeEnginesCount','ttlStatsLoading','ftsScoreMap','find','hasNext','type','dropped','vector-search','Error\x20fetching\x20indexes','index:drop','1610880xPDtmD','index:registered','map','geoConfig','773534qwaweK','openTypePipelines','$watch','\x20km','toast','ready','geoHighlightedKey','flatMap','Default\x20TTL\x20cleared','pipeline','DELETE','action','total','indexer','index:ready','Drop\x20type\x20error','_geoSelSource','entries','geoDistanceMap','<create-pipeline-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:env=\x22envName\x22\x20:on-done=\x22onDone\x22\x20/>','scalar','geoField','confirm','displayRows','expand','numTerms','overview','json','lat','config','loadViolations','3401812KPLWOb','value','_search','embeddings:pipeline:ready','unshift','geo','typeEngineCount','Rebuild\x20index\x20error','status','apiBase','push','Remove\x20failed','select','geoViewMode','fts:drop','Drop\x20FTS\x20error','stringify','queryMode','Rebuild\x20failed','engine:uninstalled','/deep-properties','2312000ZQVzWg','source_env','stores','selectedIndexStart','array','geoLat','ftsList','distance','catch','/env/','object','target','\x22?\x20This\x20will\x20re-scan\x20all\x20records.','Failed\x20to\x20clear\x20default\x20TTL','clearSelection','join','result','$attr','detail','open','ftsPrefix','maxScore','Rebuild\x20FTS\x20error','lon','$el','name','Sweep\x20done:\x20','/recompute-fields','querySelector','loadFtsIndexes','Failed\x20to\x20set\x20default\x20TTL','Create\x20FTS\x20Index','removeIndex','changelog','load','selectedIndex','round','2072106ppxgGY','info','140432fdHlgm','currentRoutePipeline','items','all','defineProperty','has','add','ttlSweepBusy','/ttl/sweep','key','dispatchEvent','stopped','\x22?\x20This\x20will\x20re-index\x20all\x20records.','/engines','score','/type/','a\x20consumer','geoIndexes','split','usedBy','running','statusText','Remove\x20index\x20\x22','selectedVectorEngineMeta','\x22?\x20This\x20cannot\x20be\x20undone.','index','Index\x20rebuild\x20complete','length','/reset','title','engine:started','/ttl/default','selectedEnv','selectedVectorEngine','query','openEnginesCreatePipeline','create','/pipelines','modal','Rebuild\x20FTS\x20index\x20\x22','unique','recomputeFields\x20error','splice','some','geoSortAsc','vectorScoreMap','__drop_fts__','sizeBytes','Item\x20updated','displayVectorName','$router','geoLon','findIndex','\x20expired\x20item(s)\x20removed','null','floor','rowValueOf','<create-index-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:deep-paths=\x22deepPaths\x22\x20:geo-fields=\x22geoFields\x22\x20:on-done=\x22onDone\x22\x20/>','includes','defaultTTLBusy','envApiBase','violations','types','Fields\x20recomputed','slice','/fts','geoRadius','Add\x20item','resetPaging','selectedPrefix','loadDefaultTTL','clearExpanded','ftsText','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:0;\x20height:100%;\x22>\x0a\x0a\x20\x20<!--\x20Tab\x20bar\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:2px;\x20border-bottom:1px\x20solid\x20var(--okdb-app-border);\x20margin-bottom:12px;\x20flex-shrink:0;\x22>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27data\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27data\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Data\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27changelog\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27changelog\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Changelog\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27manage\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27manage\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Manage\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27schema\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27schema\x27\x20?\x20(\x27border-color:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-success)\x27)\x20+\x20\x27;\x20color:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-success)\x27)\x20+\x20\x27;\x20background:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27#f8717111\x27\x20:\x20\x27color-mix(in\x20srgb,\x20var(--okdb-success)\x207%,\x20transparent)\x27)\x20+\x20\x27;\x20border-bottom-color:transparent;\x27)\x20:\x20(violationCount\x20>\x200\x20?\x20\x27border-color:transparent;\x20background:transparent;\x20color:var(--okdb-danger);\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27)\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Schema<if\x20:=\x22violationCount\x20>\x200\x22><span\x20style=\x22margin-left:6px;\x20font-size:10px;\x20padding:2px\x207px;\x20border-radius:999px;\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2013%,\x20transparent);\x20color:var(--okdb-danger);\x20font-weight:600;\x22>{{\x20violationCount\x20}}</span></if>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22switchToEngines()\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27engines\x27\x20?\x20\x27border-color:var(--okdb-purple);\x20color:var(--okdb-purple);\x20background:color-mix(in\x20srgb,\x20var(--okdb-purple)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Engines<if\x20:=\x22typeEngineCount\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20typeEngineCount\x20}}</span></if>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Data\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27data\x27\x22>\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:16px;\x20flex:1;\x20min-height:0;\x22>\x0a\x0a\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;\x20gap:16px;\x22>\x0a\x0a\x20\x20\x20\x20<!--\x20──\x20Left\x20column:\x20query\x20controls\x20──\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22flex:1;\x20display:flex;\x20flex-direction:column;\x20gap:10px;\x20min-width:0;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Row\x201:\x20filter\x20label\x20+\x20accordion\x20+\x20JSON\x20input\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Label\x20row\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20color:#6a8a9a;\x20user-select:none;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20searchMode\x20===\x20\x27vector\x27\x20?\x20\x27Post-filter\x20vector\x20results\x20with\x20sift\x27\x20:\x20searchMode\x20===\x20\x27fts\x27\x20?\x20\x27Post-filter\x20FTS\x20results\x20with\x20sift\x27\x20:\x20searchMode\x20===\x20\x27geo\x27\x20?\x20\x27Post-filter\x20geo\x20results\x20with\x20sift\x27\x20:\x20\x27Filter\x20with\x20sift\x20query\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22help-toggle\x22\x20@click=\x22helpOpen\x20=\x20!helpOpen\x22\x20:class=\x22helpOpen\x20?\x20\x27help-toggle--open\x27\x20:\x20\x27\x27\x22>i</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Accordion:\x20query\x20reference\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22helpOpen\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22help-accordion\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{}</code><span>match\x20all\x20records</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22field\x22:\x20\x22value\x22}</code><span>exact\x20match</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22n\x22:\x20{\x22$gt\x22:\x205,\x20\x22$lt\x22:\x2050}}</code><span>numeric\x20comparison</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22x\x22:\x20{\x22$in\x22:\x20[\x22a\x22,\x22b\x22]}}</code><span>set\x20membership</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22x\x22:\x20{\x22$exists\x22:\x20true}}</code><span>field\x20presence</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x20ht-row--note\x22>Nested\x20fields\x20use\x20dot\x20notation:\x20<code>\x22a.b\x22</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.query\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22query.query\x20=\x20$event.detail\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:schema=\x22siftSchema\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:220px;\x20min-height:60px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</ok-json-input>\x0a\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Mode\x20bar:\x20Scan\x20/\x20Index\x20/\x20FTS\x20/\x20Vector\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:4px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22\x20style=\x22flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27scan\x27\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27scan\x27)\x22>Scan</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27index\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27index\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Index<if\x20:=\x22possibleIndexes.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20possibleIndexes.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27fts\x27\x20\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27fts\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FTS<if\x20:=\x22ftsList.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20ftsList.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27vector\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27vector\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Vector<if\x20:=\x22vectorEngines.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20vectorEngines.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27geo\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27geo\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Geo<if\x20:=\x22geoIndexes.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20geoIndexes.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Scan\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27scan\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.selectedDirection\x20=\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27asc\x27\x20:\x20\x27desc\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20key\x20scan\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27↓\x20Desc\x27\x20:\x20\x27↑\x20Asc\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x20user-select:none;\x22>Full\x20key-ordered\x20scan\x20·\x20sift\x20applied\x20as\x20filter</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Index\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27index\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectIndex($event.target.value)\x22\x20style=\x22min-width:160px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22possibleIndexes\x22\x20let:item=\x22idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22idx\x22\x20:selected=\x22query.selectedIndex\x20===\x20idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20idx\x20}}{{\x20indexStatuses[idx]?.unique\x20?\x20\x27\x20◆\x27\x20:\x20\x27\x27\x20}}{{\x20indexStatusBadge(idx)\x20?\x20\x27\x20⚠\x20\x27\x20+\x20indexStatusBadge(idx)\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create_index__\x22\x20style=\x22color:var(--okdb-accent);\x22>+\x20Create\x20index…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__remove_index__\x22\x20style=\x22color:var(--okdb-danger);\x22>×\x20Remove\x20\x22{{\x20query.selectedIndex\x20}}\x22</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.selectedDirection\x20=\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27asc\x27\x20:\x20\x27desc\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20sort\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27↓\x20Desc\x27\x20:\x20\x27↑\x20Asc\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22query.queryMode\x20===\x20\x27prefix\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.queryMode\x20=\x20\x27prefix\x27,\x20query.selectedIndexStart\x20=\x20undefined,\x20query.selectedIndexEnd\x20=\x20undefined\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Prefix\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22query.queryMode\x20===\x20\x27range\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.queryMode\x20=\x20\x27range\x27,\x20query.selectedPrefix\x20=\x20undefined\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Range\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Index\x20detail\x20strip\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x20&&\x20selectedIndexInfo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22idx-info-strip\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-label\x22>Fields:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22selectedIndexInfo.fields\x22\x20let:item=\x22f\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22idx-info-field\x22>{{\x20f\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedIndexInfo.isUnique\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--unique\x22>◆\x20unique</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedIndexInfo.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--geo\x22>◎\x20geo\x20·\x20precision\x20{{\x20selectedIndexInfo.geoPrecision\x20??\x207\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!selectedIndexInfo.isUnique\x20&&\x20!selectedIndexInfo.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--regular\x22>regular</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.queryMode\x20===\x20\x27prefix\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>Prefix:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedPrefix\x22\x20@change=\x22query.selectedPrefix\x20=\x20$event.detail\x22\x20style=\x22width:220px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.35;\x20font-size:11px;\x22>scalar\x20or\x20array\x20for\x20composite\x20indexes</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.queryMode\x20===\x20\x27range\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>Start:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedIndexStart\x22\x20@change=\x22query.selectedIndexStart\x20=\x20$event.detail\x22\x20style=\x22width:180px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>End:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedIndexEnd\x22\x20@change=\x22query.selectedIndexEnd\x20=\x20$event.detail\x22\x20style=\x22width:180px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20FTS\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27fts\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectFtsIndex($event.target.value,\x20$event)\x22\x20style=\x22min-width:160px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ftsList\x22\x20let:item=\x22fts\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22fts.name\x22\x20:selected=\x22query.selectedFtsIndex\x20===\x20fts.name\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20fts.name\x20}}{{\x20ftsStatusBadge(fts)\x20?\x20\x27\x20⚠\x20\x27\x20+\x20ftsStatusBadge(fts)\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create_fts__\x22\x20style=\x22color:var(--okdb-accent);\x22>+\x20Create\x20FTS\x20index…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__drop_fts__\x22\x20style=\x22color:var(--okdb-danger);\x22>×\x20Drop\x20\x22{{\x20query.selectedFtsIndex\x20}}\x22</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Search…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.ftsText\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22query.ftsText\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:140px;\x20max-width:300px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22\x20title=\x22AND:\x20all\x20terms\x20required\x20·\x20OR:\x20any\x20term\x20matches,\x20ranked\x20by\x20hit\x20count\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22query.ftsMode\x20===\x20\x27and\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22query.ftsMode\x20=\x20\x27and\x27\x22>AND</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22query.ftsMode\x20===\x20\x27or\x27\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22query.ftsMode\x20=\x20\x27or\x27\x22>OR</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:12px;\x20display:flex;\x20align-items:center;\x20gap:4px;\x20cursor:pointer;\x20white-space:nowrap;\x20user-select:none;\x22\x20title=\x22Prefix:\x20\x27sta\x27\x20matches\x20\x27start\x27,\x20\x27stack\x27,\x20etc.\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22query.ftsPrefix\x22\x20@change=\x22query.ftsPrefix\x20=\x20$event.target.checked\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Prefix\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Vector\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27vector\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEngines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.7;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22cpu\x22\x20style=\x22width:13px;height:13px;opacity:.5;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>No\x20vector\x20search\x20engines\x20for\x20<b>{{\x20type\x20}}</b>\x20yet.</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesCreatePipeline()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20Create\x20Pipeline…</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEngines.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectVectorEngine($event.target.value,\x20$event)\x22\x20style=\x22min-width:160px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22vectorEngines\x22\x20let:item=\x22ve\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22displayVectorName(ve.name)\x22\x20:selected=\x22query.selectedVectorEngine\x20===\x20displayVectorName(ve.name)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20displayVectorName(ve.name)\x20}}{{\x20ve.isRunning\x20?\x20\x27\x27\x20:\x20\x27\x20(stopped)\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create_pipeline__\x22\x20style=\x22color:var(--okdb-indigo);\x22>+\x20Create\x20pipeline…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Semantic\x20query…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.vectorText\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.500=\x22query.vectorText\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:160px;\x20max-width:340px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.55;\x20white-space:nowrap;\x20user-select:none;\x22>top</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.vectorLimit\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22query.vectorLimit\x20=\x20Math.max(1,\x20Math.min(200,\x20Number($event.target.value)\x20||\x2020))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20min=\x221\x22\x20max=\x22200\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:56px;\x20text-align:center;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Max\x20results\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Pipeline\x20badge\x20—\x20clickable,\x20navigates\x20to\x20local\x20Engines\x20tab\x20in\x20pipeline\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedVectorEngineMeta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedVectorEngineMeta.meta\x20&&\x20selectedVectorEngineMeta.meta.pipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesPipeline(selectedVectorEngineMeta.meta.pipeline)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x209px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x20white-space:nowrap;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22\x27Open\x20the\x20type\x20pipeline\x20view\x20focused\x20on:\x20\x27\x20+\x20selectedVectorEngineMeta.meta.pipeline\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20{{\x20selectedVectorEngineMeta.meta.pipeline\x20}}\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Link\x20to\x20local\x20type\x20engines\x20workspace\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openTypePipelinesForSelectedVector()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x209px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2020%,\x20transparent);\x20color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2060%,\x20transparent);\x20background:transparent;\x20cursor:pointer;\x20white-space:nowrap;\x20margin-left:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20the\x20type-scoped\x20engines\x20view\x20for\x20this\x20vector\x20search\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20Type\x20Engines\x20→</button>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Geo\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22geoIndexes.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.7;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>◎</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>No\x20geo\x20indexes\x20for\x20<b>{{\x20type\x20}}</b>\x20yet.\x20Create\x20one\x20from\x20the\x20Manage\x20tab.</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22geoIndexes.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22geoField\x20=\x20$event.target.value\x22\x20style=\x22min-width:140px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22geoIndexes\x22\x20let:item=\x22gf\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22gf\x22\x20:selected=\x22geoField\x20===\x20gf\x22>{{\x20gf\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.5;\x22>Lat</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x2240.7484\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoLat\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoLat\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.5;\x22>Lon</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x22-73.9856\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoLon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoLon\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.5;\x22>Radius\x20(m)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x22∞\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoRadius\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoRadius\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:90px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Leave\x20empty\x20for\x20unlimited\x20radius\x20(sorted\x20by\x20distance)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22geoSortAsc\x20=\x20!geoSortAsc\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20sort\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20geoSortAsc\x20?\x20\x27↑\x20Nearest\x27\x20:\x20\x27↓\x20Farthest\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.35;\x20user-select:none;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Results\x20sorted\x20by\x20distance\x20·\x20sift\x20filter\x20applied\x20as\x20post-filter\x20·\x20leave\x20radius\x20empty\x20for\x20no\x20cutoff\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20──\x20Geo\x20view\x20toggle\x20(only\x20in\x20geo\x20mode)\x20──\x20-->\x0a\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20geoIndexes.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:4px;\x20flex-shrink:0;\x20padding:2px\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22\x20style=\x22flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27table\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27table\x27\x22\x20title=\x22Table\x20only\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22table-2\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27map\x27\x20\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27map\x27\x22\x20\x20\x20title=\x22Map\x20only\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22map-pin\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27split\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27split\x27\x22\x20title=\x22Table\x20+\x20Map\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22columns\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20opacity:.3;\x20user-select:none;\x22>view</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Results\x20area\x20──\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20position:relative;\x20flex:1;\x20min-height:0;\x22>\x0a\x20\x20\x20\x20<if\x20:=\x22query.busy\x22>\x0a\x20\x20\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20Results\x20bar:\x20timing\x20+\x20Add\x20item\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22margin-bottom:8px;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.time\x20!=\x20null\x20?\x20query.time\x20+\x20\x27ms\x27\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20<b\x20style=\x22opacity:.7;\x22>{{\x20type\x20}}</b>\x0a\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openAddModal\x22\x20class=\x22btn-primary\x20btn-icon\x22\x20style=\x22font-size:12px;\x20padding:3px\x2012px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Add\x20item\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Content\x20row\x20—\x20table\x20+\x20map\x20as\x20siblings,\x20shown/hidden\x20via\x20display:none\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex:1;\x20min-height:0;\x20gap:10px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20TABLE\x20col\x20—\x20hidden\x20only\x20in\x20pure\x20map\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20geoViewMode\x20===\x20\x27map\x27\x20?\x20\x27display:none\x27\x20:\x20\x27flex:1;\x20min-width:0;\x20display:flex;\x20flex-direction:column;\x20min-height:0;\x27\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22hasDirectValueRows\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-table\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ref=\x22table\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:data=\x22displayRows\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20select=\x22single\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20no-scroll\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x20overflow:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select-change=\x22onGeoTableSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<columns>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22min-content\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__header\x22>key</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-accent);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>score</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-indigo);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>sim</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-success);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>dist</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__cell\x22>{{\x20keyOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22directValueKindOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27direct-value-badge\x20direct-value-badge--\x27\x20+\x20directValueKindOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20directValueKindOf(row)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22fts-score-badge\x22>{{\x20matchOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vec-score-badge\x22>{{\x20vectorScoreOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-orange);\x20opacity:.8;\x20margin-left:4px;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20chunk\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20distanceOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22geo-dist-badge\x22>{{\x20distanceOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>value</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20:title=\x22prettyValueOf(row)\x22\x20style=\x22display:block;\x20white-space:pre-wrap;\x20word-break:break-word;\x20font-size:12px;\x22>{{\x20inlineValueOf(row)\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</columns>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<expanded\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Chunk\x20info\x20panel\x20—\x20shown\x20only\x20in\x20vector\x20mode\x20for\x20chunked\x20pipeline\x20results\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x20&&\x20vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:8px\x2010px\x200;\x20display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row).text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:140px;\x20overflow:auto;\x20white-space:pre-wrap;\x20word-break:break-word;\x20line-height:1.5;\x22>{{\x20vectorChunkMetaOf(row).text\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!vectorChunkMetaOf(row).text\x20&&\x20vectorChunkMetaOf(row).start\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.55;\x20margin-left:4px;\x22>(highlighted\x20in\x20document\x20below)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22height:1px;\x20background:var(--okdb-app-border);\x20margin:2px\x200;\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<edit-row\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:row=\x22rowValueOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:key=\x22keyOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@remove=\x22onRemoveRow(keyOf(row))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onRowChanged($event)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</edit-row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</expanded>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</ok-table>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!hasDirectValueRows\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-table\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ref=\x22table\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:data=\x22displayRows\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20select=\x22single\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20no-scroll\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x20overflow:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select-change=\x22onGeoTableSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<columns>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22min-content\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__header\x22>key</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-accent);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>score</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-indigo);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>sim</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-success);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>dist</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__cell\x22>{{\x20keyOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22fts-score-badge\x22>{{\x20matchOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vec-score-badge\x22>{{\x20vectorScoreOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-orange);\x20opacity:.8;\x20margin-left:4px;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20chunk\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20distanceOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22geo-dist-badge\x22>{{\x20distanceOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<auto\x20max=\x2210\x22\x20:show-more-content=\x22(n)\x20=>\x20\x27+\x27\x20+\x20n\x20+\x20\x27\x20cols\x27\x22\x20show-more-title=\x22Click\x20to\x20show\x20all\x20columns\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row\x20let:value>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22[typeof\x20value,\x20value\x20===\x20null\x20?\x20\x27null\x27\x20:\x20\x27\x27]\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20value\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</auto>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</columns>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<expanded\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Chunk\x20info\x20panel\x20—\x20shown\x20only\x20in\x20vector\x20mode\x20for\x20chunked\x20pipeline\x20results\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x20&&\x20vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:8px\x2010px\x200;\x20display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row).text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:140px;\x20overflow:auto;\x20white-space:pre-wrap;\x20word-break:break-word;\x20line-height:1.5;\x22>{{\x20vectorChunkMetaOf(row).text\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!vectorChunkMetaOf(row).text\x20&&\x20vectorChunkMetaOf(row).start\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.55;\x20margin-left:4px;\x22>(highlighted\x20in\x20document\x20below)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22height:1px;\x20background:var(--okdb-app-border);\x20margin:2px\x200;\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<edit-row\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:row=\x22rowValueOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:key=\x22keyOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@remove=\x22onRemoveRow(keyOf(row))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onRowChanged($event)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</edit-row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</expanded>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</ok-table>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ok-pager\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22query.prevPage()\x22\x20:disabled=\x22!query.hasPrev\x20||\x20query.busy\x22>‹\x20Prev</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20query.total\x20}}\x20result{{\x20query.total\x20===\x201\x20?\x20\x27\x27\x20:\x20\x27s\x27\x20}}\x20·\x20{{\x20query.pageSize\x20}}/page</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22query.nextPage()\x22\x20:disabled=\x22!query.hasNext\x20||\x20query.busy\x22>Next\x20›</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20<!--\x20MAP\x20col\x20—\x20always\x20mounted,\x20shown\x20only\x20in\x20geo\x20map/split\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:0;\x20min-height:0;\x20border-radius:8px;\x20overflow:hidden;\x20border:1px\x20solid\x20#23292e;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22{\x20\x27display\x27:\x20(geoViewMode\x20===\x20\x27map\x27\x20||\x20geoViewMode\x20===\x20\x27split\x27)?\x20\x27block\x27\x20:\x20\x27none\x27\x20}\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<geo-map\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:points=\x22geoMapPoints\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:origin-lat=\x22geoLat\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:origin-lon=\x22geoLon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:radius=\x22geoRadius\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:highlight-key=\x22geoHighlightedKey\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@move=\x22geoLat\x20=\x20String($event.detail.lat.toFixed(6)),\x20geoLon\x20=\x20String($event.detail.lon.toFixed(6))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select=\x22onGeoMapSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:100%;\x20height:100%;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x0a</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Changelog\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27changelog\x27\x22>\x0a\x20\x20\x20\x20<type-changelog\x20:type=\x22type\x22\x20style=\x22flex:1;\x20min-height:0;\x22\x20/>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Manage\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27manage\x27\x22>\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:12px;\x20flex:1;\x20overflow:auto;\x20padding-right:4px;\x22>\x0a\x0a\x20\x20\x20\x20<!--\x20Overview\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;\x20gap:24px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:15px;\x20font-weight:600;\x22>{{\x20type\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20margin-top:2px;\x22>type</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:22px;\x20font-weight:600;\x20color:var(--okdb-accent);\x22>{{\x20typeCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20margin-top:2px;\x22>records</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Fields\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeFieldEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20fields\x20tracked\x20yet\x20—\x20add\x20items\x20or\x20use\x20Recompute.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeFieldEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--2\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Field</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Observed\x20types</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22typeFieldEntries\x22\x20let:item=\x22tf\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20tf.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20tf.types.join(\x27,\x20\x27)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Secondary\x20Indexes\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Secondary\x20Indexes</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openCreateIndex()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Create\x20index\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20indexes\x20yet.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Kind</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Ownership</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22indexEntries\x22\x20let:item=\x22ix\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:4px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ix.fields\x22\x20let:item=\x22f\x22\x20let:index=\x22fi\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20style=\x22font-size:12px;\x20color:var(--okdb-json-key);\x22>{{\x20f\x20}}</code><span\x20style=\x22opacity:.3;\x20font-size:11px;\x20margin-left:0;\x22\x20:style=\x22fi\x20<\x20ix.fields.length\x20-\x201\x20?\x20\x27\x27\x20:\x20\x27display:none\x27\x22>·</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ix.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--geo\x22>◎\x20geo</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20opacity:.45;\x20white-space:nowrap;\x22>precision\x20{{\x20ix.geoPrecision\x20??\x207\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ix.isUnique\x20&&\x20!ix.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--unique\x22>◆\x20unique</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!ix.isGeo\x20&&\x20!ix.isUnique\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--regular\x22>regular</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:3px;\x20flex-direction:column;\x20align-items:flex-start;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ix.createdBy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-owned-badge\x22>{{\x20ix.createdBy.kind\x20}}:{{\x20ix.createdBy.name\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ix.usedBy\x22\x20let:item=\x22consumer\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-consumer-badge\x22>{{\x20consumer\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20ix.status\x22>{{\x20ix.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22rebuildIndex(ix.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20opacity:.7;\x22\x20title=\x22Rebuild\x20this\x20index\x20from\x20all\x20current\x20records\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Rebuild\x20this\x20index\x20from\x20all\x20current\x20records\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Rebuild\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeIndex(ix.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20opacity:.8;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x20||\x20ix.usedBy.length\x20>\x200\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22ix.usedBy.length\x20>\x200\x20?\x20\x27Used\x20by:\x20\x27\x20+\x20ix.usedBy.join(\x27,\x20\x27)\x20:\x20($ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Remove\x20this\x20index\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27))\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Remove\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20FTS\x20Indexes\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>FTS\x20Indexes</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openCreateFtsModal()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Create\x20FTS\x20index\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ftsEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20FTS\x20indexes\x20yet.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ftsEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--fts\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Name</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Size</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ftsEntries\x22\x20let:item=\x22fe\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20fe.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20fe.fields\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20fe.status\x22>{{\x20fe.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22\x20style=\x22font-size:11px;\x20font-family:monospace;\x22>{{\x20fmtBytes(fe.sizeBytes)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22rebuildFts(fe.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20opacity:.7;\x22\x20title=\x22Rebuild\x20this\x20FTS\x20index\x20from\x20all\x20current\x20records\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Rebuild\x20this\x20FTS\x20index\x20from\x20all\x20current\x20records\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Rebuild\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22dropFtsIndex(fe.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20opacity:.8;\x22\x20title=\x22Drop\x20this\x20FTS\x20index\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Drop\x20this\x20FTS\x20index\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Drop\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Vector\x20Search\x20Engines\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Vector\x20Search\x20Engines</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesWorkspace()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20color:var(--okdb-indigo);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2027%,\x20transparent);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20the\x20type-scoped\x20engines\x20view\x20for\x20this\x20type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20⛓\x20Type\x20Engines\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20No\x20vector\x20search\x20engines\x20for\x20this\x20type\x20yet.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesCreatePipeline()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22margin-left:6px;\x20font-size:11px;\x20padding:1px\x208px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2027%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x205%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>Create\x20Pipeline…</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--vec\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Engine</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Pipeline</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22vectorEntries\x22\x20let:item=\x22ve\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20ve.displayName\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20(ve.running\x20?\x20\x27ready\x27\x20:\x20\x27creating\x27)\x22>{{\x20ve.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20ve.pipeline\x20??\x20\x27—\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesPipeline(ve.pipeline)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-indigo);\x20opacity:.85;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20this\x20type-scoped\x20pipeline\x20view\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20⛓\x20View\x20local\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20TTL\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Time-to-Live\x20(TTL)</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22(loadTTLStats(),\x20loadDefaultTTL())\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20opacity:.6;\x22\x20:disabled=\x22ttlStatsLoading\x22\x20title=\x22Refresh\x20TTL\x20stats\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20↻\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Default\x20TTL\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-bottom:12px;\x20padding:10px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20font-weight:600;\x20opacity:.7;\x20margin-bottom:8px;\x22>Default\x20TTL\x20for\x20new\x20items</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20color:var(--okdb-success);\x20margin-bottom:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Currently:\x20<span\x20style=\x22font-family:monospace;\x20font-weight:600;\x22>{{\x20fmtDuration(defaultTTL)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.4;\x20font-size:11px;\x22>\x20({{\x20defaultTTL\x20}}ms)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.4;\x20margin-bottom:8px;\x22>No\x20default\x20—\x20items\x20don\x27t\x20expire\x20unless\x20TTL\x20is\x20set\x20explicitly.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onDefaultTTLPresetChange($event.target.value)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x206px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:4px;\x20color:var(--okdb-app-fg);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>Custom…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2260000\x22>1\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22300000\x22>5\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22900000\x22>15\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x223600000\x22>1\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2221600000\x22>6\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2286400000\x22>24\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22604800000\x22>7\x20days</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x222592000000\x22>30\x20days</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20!value=\x22defaultTTLInput\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22(defaultTTLInput\x20=\x20$el.value,\x20defaultTTLPreset\x20=\x20\x27\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22ms\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\x20font-size:11px;\x20padding:2px\x206px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:4px;\x20color:var(--okdb-app-fg);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDefaultTTLAction()\x22\x20:disabled=\x22defaultTTLBusy\x20||\x20!defaultTTLInput\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent);\x22>Set</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22clearDefaultTTLAction()\x22\x20:disabled=\x22defaultTTLBusy\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x22>Clear</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20TTL\x20stats\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!ttlStats\x20||\x20!ttlStats.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20TTL\x20entries\x20for\x20this\x20type\x20—\x20TTL\x20sub-databases\x20are\x20created\x20lazily\x20on\x20first\x20use.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ttlStats\x20&&\x20ttlStats.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:24px;\x20align-items:center;\x20margin-bottom:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:18px;\x20font-weight:600;\x20color:var(--okdb-success);\x22>{{\x20ttlStats.totalEntries\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>entries</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20:style=\x22\x27font-size:18px;\x20font-weight:600;\x20color:\x27\x20+\x20(ttlStats.expiredEntries\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-app-fg-muted)\x27)\x20+\x20\x27;\x27\x22>{{\x20ttlStats.expiredEntries\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>expired</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20font-family:monospace;\x20color:var(--okdb-app-fg);\x22>{{\x20ttlStats.nextExpiry\x20?\x20fmtDuration(ttlStats.nextExpiry\x20-\x20Date.now())\x20:\x20\x27—\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>next\x20expiry</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22triggerSweep()\x22\x20:disabled=\x22ttlSweepBusy\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Sweep\x20expired\x20now\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ttlSweepBusy\x22><span\x20style=\x22font-size:11px;\x20opacity:.5;\x22>Sweeping…</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Danger\x20zone\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20card--danger\x22>\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22\x20style=\x22color:var(--okdb-danger);\x22>⚠\x20Danger\x20Zone</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22recomputeFields\x22\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27data:write\x27)\x20?\x20\x27Rescan\x20all\x20records\x20to\x20rebuild\x20the\x20field\x20schema\x27\x20:\x20$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Recompute\x20fields\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22dropType\x22\x20class=\x22btn-danger\x20btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Drop\x20type\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Schema\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27schema\x27\x22>\x0a\x20\x20\x20\x20<type-schema-tab\x0a\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20:on-view-key=\x22(key)\x20=>\x20setTab(\x27data\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:on-schema-changed=\x22()\x20=>\x20loadViolations()\x22\x0a\x20\x20\x20\x20\x20\x20:on-violation-count-changed=\x22(count)\x20=>\x20onViolationCountChanged(count)\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27engines\x27\x22>\x0a\x20\x20\x20\x20<type-pipelines-tab\x20:type=\x22type\x22\x20:focusedpipeline=\x22currentRoutePipeline\x22\x20:currentmode=\x22currentRouteMode\x22\x20style=\x22flex:1;\x20min-height:0;\x22\x20/>\x0a\x20\x20</if>\x0a\x0a</div>','259bTCAkM','Cannot\x20remove:\x20index\x20is\x20used\x20by\x20','Create\x20Index','__create_fts__','loadVectorEngines','573288ksIjeR','ok-table','then','_updateGeoIndexes','vectorEngines','replace','schema','ttlStats','scan','okdb','/indexes','mode','default','selectedDirection','Drop\x20type\x20\x22','defaultTTL','/index/','table','Remove\x20index\x20error','kind','source_type','Create\x20Pipeline\x20·\x20','engine:installed','deselect','string','resolve','reverse','fmtDuration','view','_current','loadIndexes','<add-item-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:on-done=\x22onDone\x22\x20/>','details','busy','openCreatePipelineModal','engine:stopped','Rebuild\x20index\x20\x22','engine:error','code','Sweep\x20failed','fields','violationCount','shared','data','message','/violations/','success','_backStack','pipelines','meta','loadTTLStats','application/json','toFixed','values','tab','$vars','label','count','paths','isRunning','filter','selectedIndexEnd','time','size','precision','pageSize','index:reset','possibleIndexes','_unsubs','keyOf','__key','allSettled','manage','selectedFtsIndex','openCreateIndex','defaultTTLInput'];_0x11f9=function(){return _0x3fa6fd;};return _0x11f9();}import _0x22c12a from'./type-changelog.ok.js';import _0x486226 from'./type-pipelines-tab.ok.js';import _0x1b2f29 from'./type-schema-tab.ok.js';function y(_0x484c2e){const _0x5119f9=_0x33ca;return!!_0x484c2e&&_0x5119f9(0x2af)==typeof _0x484c2e&&!Array['isArray'](_0x484c2e);}function x(_0x526ce1,_0xee5cdc){const _0x3a741c=_0x33ca;y(_0x526ce1)&&_0x526ce1['__key']!==_0xee5cdc&&Object[_0x3a741c(0x1bb)](_0x526ce1,_0x3a741c(0x24c),{'value':_0xee5cdc,'enumerable':!0x1,'configurable':!0x1,'writable':!0x1});}function m(_0x311f3e,_0xbbe4d1=0x0){const _0x473de2=_0x33ca;try{return JSON[_0x473de2(0x2a0)](_0x311f3e,null,_0xbbe4d1)??String(_0x311f3e);}catch{return String(_0x311f3e);}}export default{'tag':'type-viewer','dependencies':[_0x171b5f,_0x46a359,_0x25007f,_0x3198ff,_0x393513,_0x22c12a,_0x486226,_0x1b2f29,_0x3ac0ed,_0x1ea0d1,_0x5501e3,_0x3a1f30,_0x46bb9a],'attr':{'type':{}},'context'(_0x5f7778){const _0x189c00=_0x33ca;let _0x85d531=null,_0x376ae1=null,_0x4ca5fe=null;const _0x5a1722=new _0x946eea({'type':_0x5f7778['$attr'][_0x189c00(0x268)],'apiBase':()=>_0x5f7778['$ok'][_0x189c00(0x2a7)][_0x189c00(0x20f)][_0x189c00(0x299)]});return{'tab':_0x189c00(0x231),get 'envApiBase'(){const _0x315344=_0x189c00;return _0x5f7778[_0x315344(0x25d)][_0x315344(0x2a7)]['okdb'][_0x315344(0x299)];},get 'type'(){const _0xe78f67=_0x189c00;return _0x5f7778[_0xe78f67(0x2b6)][_0xe78f67(0x268)];},'violationCount':0x0,async 'loadViolations'(){const _0x34c444=_0x189c00;if(this[_0x34c444(0x268)])try{const [_0x26cfad,_0x19e9ac]=await Promise[_0x34c444(0x1ba)]([fetch(this['envApiBase']+_0x34c444(0x233)+encodeURIComponent(this[_0x34c444(0x268)])),fetch(this[_0x34c444(0x1f3)]+'/ref-violations/'+encodeURIComponent(this[_0x34c444(0x268)]))]);let _0x93264=0x0;if(_0x26cfad['ok']){const _0x57708a=await _0x26cfad[_0x34c444(0x28c)]();_0x93264+=(_0x57708a?.[_0x34c444(0x231)]?.[_0x34c444(0x1f4)]??_0x57708a?.[_0x34c444(0x2b5)]?.[_0x34c444(0x1f4)]??[])[_0x34c444(0x1d2)];}if(_0x19e9ac['ok']){const _0x42e1d=await _0x19e9ac[_0x34c444(0x28c)]();_0x93264+=(_0x42e1d?.[_0x34c444(0x231)]?.[_0x34c444(0x1f4)]??_0x42e1d?.[_0x34c444(0x2b5)]?.[_0x34c444(0x1f4)]??[])[_0x34c444(0x1d2)];}this['violationCount']=_0x93264;}catch{}},'onViolationCountChanged'(_0x366ef6){const _0x155241=_0x189c00;this[_0x155241(0x22f)]=_0x366ef6;},'query':_0x5a1722,'possibleIndexes':[],'indexStatuses':{},'createIdxPossible':[],'createIdxTypeLoaded':null,'ftsList':[],'vectorEngines':[],'typeEngineCount':0x0,'searchMode':_0x189c00(0x20e),'geoIndexes':[],'geoField':'','geoLat':'','geoLon':'','geoRadius':'','geoSortAsc':!0x0,'geoDistanceMap':{},'mapOpen':!0x1,'geoViewMode':'table','geoHighlightedKey':null,'_geoSelSource':null,get 'geoMapPoints'(){const _0x5d0d44=_0x189c00,_0x447fa7=this[_0x5d0d44(0x286)];return _0x447fa7?(this[_0x5d0d44(0x1d9)]['items']||[])[_0x5d0d44(0x26f)](_0x1c034d=>{const _0x3d4fd3=_0x5d0d44,_0xdcfcf2=_0x1c034d[_0x3d4fd3(0x291)]||{},_0x35b2a8=((_0x3e2a0b,_0x3389d6)=>{const _0x5b2ad8=_0x3d4fd3;let _0x4b0c4b=_0x3e2a0b;for(const _0xdbcd79 of _0x3389d6[_0x5b2ad8(0x1c9)]('.')){if(null==_0x4b0c4b)return null;_0x4b0c4b=_0x4b0c4b[_0xdbcd79];}return _0x4b0c4b;})(_0xdcfcf2,_0x447fa7);return{'key':_0x1c034d[_0x3d4fd3(0x1c0)],'title':_0xdcfcf2[_0x3d4fd3(0x2be)]||_0xdcfcf2[_0x3d4fd3(0x1d4)]||_0xdcfcf2[_0x3d4fd3(0x23e)]||_0x1c034d[_0x3d4fd3(0x1c0)],'lat':_0x35b2a8?.[_0x3d4fd3(0x28d)],'lon':_0x35b2a8?.[_0x3d4fd3(0x2bc)],'distance':_0x1c034d[_0x3d4fd3(0x2ac)]};})[_0x5d0d44(0x242)](_0x1a30d8=>null!=_0x1a30d8[_0x5d0d44(0x28d)]&&null!=_0x1a30d8[_0x5d0d44(0x2bc)]):[];},'setTab'(_0x5e6dda){const _0x44a226=_0x189c00;if(this[_0x44a226(0x23c)]=_0x5e6dda,'engines'===_0x5e6dda)return;const _0x76e2d=_0x5f7778[_0x44a226(0x23d)]['$router'];if(!_0x76e2d?.[_0x44a226(0x292)]?.[_0x44a226(0x23c)])return;const _0xcc1851={..._0x76e2d[_0x44a226(0x292)]};delete _0xcc1851[_0x44a226(0x23c)],delete _0xcc1851[_0x44a226(0x211)],delete _0xcc1851[_0x44a226(0x27a)],_0x76e2d[_0x44a226(0x20b)](_0x76e2d[_0x44a226(0x21f)](_0x76e2d['_path']||'',_0xcc1851,_0x76e2d['_anchor']||''));},'switchToPipelines'(){const _0x38d32c=_0x189c00;this['openTypePipelines']({'mode':_0x38d32c(0x236),'pipeline':this[_0x38d32c(0x1b8)]||null});},get 'currentRoutePipeline'(){const _0x2964de=_0x189c00;return String(_0x5f7778[_0x2964de(0x23d)]?.['$router']?.[_0x2964de(0x292)]?.[_0x2964de(0x27a)]||'');},get 'currentRouteMode'(){const _0x36156e=_0x189c00;return'pipelines'===String(_0x5f7778['$vars']?.[_0x36156e(0x1e9)]?.[_0x36156e(0x292)]?.[_0x36156e(0x211)]||'')[_0x36156e(0x262)]()?_0x36156e(0x236):'engines';},'openTypePipelines'(_0xe9f2f9={}){const _0x2e5371=_0x189c00,_0x31a9ec=_0x5f7778[_0x2e5371(0x23d)]?.[_0x2e5371(0x1e9)];if(!_0x31a9ec?.[_0x2e5371(0x21f)]||!_0x31a9ec?.[_0x2e5371(0x29a)])return;const _0x166a13=_0x5f7778[_0x2e5371(0x25d)][_0x2e5371(0x2a7)][_0x2e5371(0x20f)][_0x2e5371(0x1d7)]||'default',_0x2aa62b={..._0x31a9ec['_search']||{},'env':_0x166a13,'type':this[_0x2e5371(0x268)],'tab':_0x2e5371(0x254),'mode':_0x2e5371(0x236)===_0xe9f2f9[_0x2e5371(0x211)]?_0x2e5371(0x236):_0x2e5371(0x254)};_0xe9f2f9[_0x2e5371(0x27a)]?_0x2aa62b[_0x2e5371(0x27a)]=_0xe9f2f9[_0x2e5371(0x27a)]:delete _0x2aa62b[_0x2e5371(0x27a)],_0x31a9ec[_0x2e5371(0x29a)](_0x31a9ec[_0x2e5371(0x21f)]('/db',_0x2aa62b));},'openEnginesWorkspace'(_0x4621c5={}){const _0x4f4699=_0x189c00;if(_0x4f4699(0x1db)===_0x4621c5[_0x4f4699(0x222)]){const _0x5154f9=_0x5f7778[_0x4f4699(0x23d)]?.[_0x4f4699(0x1e9)];if(!_0x5154f9?.[_0x4f4699(0x21f)]||!_0x5154f9?.[_0x4f4699(0x29a)])return;const _0x45913f={'env':_0x5f7778[_0x4f4699(0x25d)]['stores'][_0x4f4699(0x20f)][_0x4f4699(0x1d7)]||_0x4f4699(0x212),'view':_0x4f4699(0x1db),'sourceType':this[_0x4f4699(0x268)]};return _0x4621c5['kind']&&(_0x45913f[_0x4f4699(0x219)]=_0x4621c5[_0x4f4699(0x219)]),void _0x5154f9['push'](_0x5154f9['resolve'](_0x4f4699(0x1c4),_0x45913f));}this[_0x4f4699(0x272)]({'mode':_0x4621c5[_0x4f4699(0x211)]||_0x4f4699(0x254),'pipeline':_0x4621c5['pipeline']||null});},'openTypePipelinesForSelectedVector'(){const _0x185740=_0x189c00,_0x26d9c8=this[_0x185740(0x1ce)]?.[_0x185740(0x237)]?.[_0x185740(0x27a)]||null;this[_0x185740(0x272)]({'mode':_0x185740(0x236),'pipeline':_0x26d9c8});},'openGlobalEnginesWorkspace'(_0x28efee={}){const _0x21037c=_0x189c00,_0x2d6461=_0x5f7778[_0x21037c(0x23d)]?.['$router'];if(!_0x2d6461?.['resolve']||!_0x2d6461?.[_0x21037c(0x29a)])return;const _0x48bbd0={'env':_0x5f7778['$ok'][_0x21037c(0x2a7)]['okdb'][_0x21037c(0x1d7)]||_0x21037c(0x212),'sourceType':this[_0x21037c(0x268)]};_0x28efee['view']&&'overview'!==_0x28efee[_0x21037c(0x222)]||(_0x48bbd0[_0x21037c(0x211)]=_0x21037c(0x236)),_0x28efee[_0x21037c(0x222)]&&_0x21037c(0x28b)!==_0x28efee[_0x21037c(0x222)]&&(_0x48bbd0[_0x21037c(0x222)]=_0x28efee[_0x21037c(0x222)]),_0x28efee[_0x21037c(0x219)]&&(_0x48bbd0[_0x21037c(0x219)]=_0x28efee[_0x21037c(0x219)]),_0x28efee[_0x21037c(0x27a)]&&(_0x48bbd0[_0x21037c(0x27a)]=_0x28efee['pipeline']),_0x2d6461['push'](_0x2d6461['resolve'](_0x21037c(0x1c4),_0x48bbd0));},async 'openEnginesCreatePipeline'(){const _0xf5187b=_0x189c00;this[_0xf5187b(0x268)]&&await _0x5f7778[_0xf5187b(0x25d)][_0xf5187b(0x230)][_0xf5187b(0x1dd)][_0xf5187b(0x2b8)]({'owner':_0x5f7778,'title':_0xf5187b(0x21b)+this['type'],'canDrag':!0x0,'content':_0xf5187b(0x284),'context':_0xbf99d4=>({'modal':_0xbf99d4,'type':this[_0xf5187b(0x268)],'envName':_0x5f7778[_0xf5187b(0x25d)][_0xf5187b(0x2a7)][_0xf5187b(0x20f)][_0xf5187b(0x1d7)]||_0xf5187b(0x212),'onDone':async()=>{const _0x3bbb50=_0xf5187b;await Promise['all']([this['loadVectorEngines'](!0x0),this[_0x3bbb50(0x263)]()]);}})});},'openEnginesPipeline'(_0x50c9b1=null){const _0x30cd02=_0x189c00;this[_0x30cd02(0x272)]({'mode':_0x30cd02(0x236),'pipeline':_0x50c9b1||null});},'switchToEngines'(){const _0x3490ff=_0x189c00;this[_0x3490ff(0x272)]({'mode':_0x3490ff(0x254),'pipeline':this[_0x3490ff(0x1b8)]||null});},'setSearchMode'(_0x48512f){const _0x89dc71=_0x189c00;if(this[_0x89dc71(0x259)]=_0x48512f,this[_0x89dc71(0x1d9)][_0x89dc71(0x1b3)]=null,this[_0x89dc71(0x1d9)][_0x89dc71(0x24f)]=null,this[_0x89dc71(0x1d9)]['selectedVectorEngine']=null,this[_0x89dc71(0x1d9)][_0x89dc71(0x1fc)]=void 0x0,this[_0x89dc71(0x1d9)][_0x89dc71(0x2a8)]=void 0x0,this['query'][_0x89dc71(0x243)]=void 0x0,this[_0x89dc71(0x283)]={},this[_0x89dc71(0x277)]=null,_0x89dc71(0x295)!==_0x48512f){this[_0x89dc71(0x29d)]=_0x89dc71(0x217);try{_0x5f7778[_0x89dc71(0x2bd)]?.[_0x89dc71(0x1ac)](_0x89dc71(0x207))?.['clearSelection']?.();}catch(_0x480e3d){}}},'_updateGeoIndexes'(){const _0x110423=_0x189c00;this[_0x110423(0x1c8)]=this[_0x110423(0x249)][_0x110423(0x242)](_0x237266=>this[_0x110423(0x257)][_0x237266]?.[_0x110423(0x270)]),this[_0x110423(0x1c8)][_0x110423(0x1d2)]&&!this['geoField']&&(this[_0x110423(0x286)]=this['geoIndexes'][0x0]);},async 'loadGeoQuery'(){const _0x41d50e=_0x189c00;if(!this[_0x41d50e(0x268)]||!this[_0x41d50e(0x286)])return;const _0x57d310=parseFloat(this[_0x41d50e(0x2aa)]),_0x260dd1=parseFloat(this['geoLon']);if(isNaN(_0x57d310)||isNaN(_0x260dd1))return;const _0x4396d=this[_0x41d50e(0x1f9)]?parseFloat(this[_0x41d50e(0x1f9)]):void 0x0;this[_0x41d50e(0x1d9)][_0x41d50e(0x227)]=!0x0,this[_0x41d50e(0x283)]={};try{const _0x3f56b7={...this[_0x41d50e(0x1d9)][_0x41d50e(0x1d9)]},_0x10ae5e={'lat':_0x57d310,'lon':_0x260dd1};_0x4396d&&!isNaN(_0x4396d)&&(_0x10ae5e['radius']=_0x4396d),_0x3f56b7[this[_0x41d50e(0x286)]]={'$near':_0x10ae5e};const _0x2ea37c=await fetch(this[_0x41d50e(0x1f3)]+'/type/'+this[_0x41d50e(0x268)]+'/query',{'method':_0x41d50e(0x25a),'headers':{'Content-Type':_0x41d50e(0x239)},'body':JSON['stringify']({'filter':_0x3f56b7,'options':{'limit':this['query'][_0x41d50e(0x247)]}})});if(!_0x2ea37c['ok'])throw new Error(_0x2ea37c[_0x41d50e(0x1cc)]);const {data:_0x5797f2,meta:_0x2003ff}=await _0x2ea37c['json']();let _0x2b9546=_0x5797f2??[];this[_0x41d50e(0x1e3)]||(_0x2b9546=_0x2b9546[_0x41d50e(0x1f7)]()[_0x41d50e(0x220)]()),this[_0x41d50e(0x1d9)][_0x41d50e(0x1b9)]=_0x2b9546;const _0x1cd200={};this[_0x41d50e(0x1d9)][_0x41d50e(0x23b)]=_0x2b9546[_0x41d50e(0x26f)](_0x53066f=>(x(_0x53066f[_0x41d50e(0x291)],_0x53066f[_0x41d50e(0x1c0)]),null!=_0x53066f['distance']&&(_0x1cd200[_0x53066f[_0x41d50e(0x1c0)]]=_0x53066f[_0x41d50e(0x2ac)]),_0x53066f[_0x41d50e(0x291)])),this['geoDistanceMap']=_0x1cd200,this[_0x41d50e(0x1d9)][_0x41d50e(0x267)]=!0x1,this[_0x41d50e(0x1d9)]['hasPrev']=!0x1,this['query'][_0x41d50e(0x223)]=null,this['query'][_0x41d50e(0x235)]=[],this[_0x41d50e(0x1d9)][_0x41d50e(0x244)]=_0x2003ff?.[_0x41d50e(0x244)]??null,this[_0x41d50e(0x1d9)][_0x41d50e(0x27d)]=_0x2b9546[_0x41d50e(0x1d2)];}catch(_0x3f3e49){console[_0x41d50e(0x256)](_0x41d50e(0x258),_0x3f3e49);}finally{this['query'][_0x41d50e(0x227)]=!0x1;}},get 'selectedVectorEngineMeta'(){const _0x585bb9=_0x189c00;return this['query'][_0x585bb9(0x1d8)]?this[_0x585bb9(0x20a)][_0x585bb9(0x266)](_0x5f1b9f=>this[_0x585bb9(0x1e8)](_0x5f1b9f[_0x585bb9(0x2be)])===this[_0x585bb9(0x1d9)][_0x585bb9(0x1d8)])??null:null;},'helpOpen':!0x1,get 'typeFields'(){const _0x3afbe8=_0x189c00,_0x225b02=(_0x5f7778[_0x3afbe8(0x25d)]['stores'][_0x3afbe8(0x20f)][_0x3afbe8(0x1f5)]||[])[_0x3afbe8(0x266)](_0x58239a=>_0x58239a[_0x3afbe8(0x268)]===this[_0x3afbe8(0x268)]);return _0x225b02?.['fields']||{};},get 'typeCount'(){const _0x3e6ec5=_0x189c00,_0x44c79f=(_0x5f7778[_0x3e6ec5(0x25d)][_0x3e6ec5(0x2a7)][_0x3e6ec5(0x20f)][_0x3e6ec5(0x1f5)]||[])[_0x3e6ec5(0x266)](_0x2c76fa=>_0x2c76fa[_0x3e6ec5(0x268)]===this[_0x3e6ec5(0x268)]);return _0x44c79f?.[_0x3e6ec5(0x23f)]??'?';},get 'typeFieldEntries'(){const _0xf39018=_0x189c00;return Object[_0xf39018(0x282)](this[_0xf39018(0x260)])[_0xf39018(0x26f)](([_0x20ec13,_0x19b2ae])=>({'name':_0x20ec13,'types':_0x19b2ae}));},get 'indexEntries'(){const _0x43c097=_0x189c00;return this[_0x43c097(0x249)][_0x43c097(0x26f)](_0x34a1c3=>({'name':_0x34a1c3,'fields':_0x34a1c3[_0x43c097(0x1c9)]('~'),'status':this[_0x43c097(0x257)][_0x34a1c3]?.['status']||'ready','isGeo':!!this['indexStatuses'][_0x34a1c3]?.[_0x43c097(0x270)],'geoPrecision':this['indexStatuses'][_0x34a1c3]?.[_0x43c097(0x270)]?.['precision']??null,'isUnique':!!this[_0x43c097(0x257)][_0x34a1c3]?.[_0x43c097(0x1df)],'createdBy':this[_0x43c097(0x257)][_0x34a1c3]?.['createdBy']??null,'usedBy':this['indexStatuses'][_0x34a1c3]?.['usedBy']??[]}));},get 'selectedIndexInfo'(){const _0x46c0ce=_0x189c00,_0x15e8c9=this[_0x46c0ce(0x1d9)]['selectedIndex'];if(!_0x15e8c9)return null;const _0x38b07c=this[_0x46c0ce(0x257)][_0x15e8c9];return{'fields':_0x15e8c9[_0x46c0ce(0x1c9)]('~'),'isGeo':!!_0x38b07c?.[_0x46c0ce(0x270)],'geoPrecision':_0x38b07c?.[_0x46c0ce(0x270)]?.[_0x46c0ce(0x246)]??null,'isUnique':!!_0x38b07c?.[_0x46c0ce(0x1df)]};},get 'ftsEntries'(){const _0x25029a=_0x189c00;return this[_0x25029a(0x2ab)][_0x25029a(0x26f)](_0x3d4fe2=>({'name':_0x3d4fe2['name'],'status':_0x3d4fe2[_0x25029a(0x298)]||'ready','fields':(_0x3d4fe2[_0x25029a(0x28e)]&&_0x3d4fe2[_0x25029a(0x28e)][_0x25029a(0x22e)]?_0x3d4fe2[_0x25029a(0x28e)][_0x25029a(0x22e)]:[])['join'](',\x20'),'sizeBytes':_0x3d4fe2[_0x25029a(0x1e6)]??null}));},'fmtBytes'(_0x23d552){const _0x5e41d7=_0x189c00;if(null==_0x23d552||0x0===_0x23d552)return'—';const _0x1698ca=['B','KB','MB','GB'];let _0x4fcd58=_0x23d552,_0x302f67=0x0;for(;_0x4fcd58>=0x400&&_0x302f67<_0x1698ca['length']-0x1;)_0x4fcd58/=0x400,_0x302f67++;return _0x4fcd58[_0x5e41d7(0x23a)](0x1)+'\u00a0'+_0x1698ca[_0x302f67];},'ttlStats':null,'ttlStatsLoading':!0x1,'ttlSweepBusy':!0x1,'defaultTTL':null,'defaultTTLInput':'','defaultTTLPreset':'','defaultTTLBusy':!0x1,async 'loadTTLStats'(){const _0x5e9a87=_0x189c00;if(this[_0x5e9a87(0x268)]){this['ttlStatsLoading']=!0x0;try{const _0x2da2d1=await fetch(this[_0x5e9a87(0x1f3)]+'/ttl/stats?type='+encodeURIComponent(this[_0x5e9a87(0x268)])),_0x5ec45c=await _0x2da2d1[_0x5e9a87(0x28c)]();this[_0x5e9a87(0x20d)]=_0x5ec45c[_0x5e9a87(0x231)]??_0x5ec45c['result']??null;}catch{this[_0x5e9a87(0x20d)]=null;}finally{this[_0x5e9a87(0x264)]=!0x1;}}},async 'loadDefaultTTL'(){const _0x778072=_0x189c00;if(this[_0x778072(0x268)])try{const _0x237a1d=await fetch(this[_0x778072(0x1f3)]+_0x778072(0x1c6)+encodeURIComponent(this[_0x778072(0x268)])+_0x778072(0x1d6)),_0x26967c=await _0x237a1d[_0x778072(0x28c)](),_0x613212=_0x26967c[_0x778072(0x231)]?.[_0x778072(0x215)]??_0x26967c[_0x778072(0x2b5)]?.[_0x778072(0x215)]??null;this[_0x778072(0x215)]=_0x613212,this[_0x778072(0x251)]=_0x613212?String(_0x613212):'',this[_0x778072(0x25f)]=_0x613212?String(_0x613212):'';}catch{this['defaultTTL']=null;}},async 'setDefaultTTLAction'(){const _0x4a194e=_0x189c00,_0x3f8837=parseInt(this[_0x4a194e(0x251)]);if(_0x3f8837&&!(_0x3f8837<=0x0)){this[_0x4a194e(0x1f2)]=!0x0;try{const _0x53d119=await fetch(this[_0x4a194e(0x1f3)]+'/type/'+encodeURIComponent(this[_0x4a194e(0x268)])+_0x4a194e(0x1d6),{'method':'PUT','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'ttl':_0x3f8837})});if(!_0x53d119['ok']){const _0xe3171=await _0x53d119['json']()[_0x4a194e(0x2ad)](()=>({}));throw new Error(_0xe3171?.['error']?.['message']||_0x53d119[_0x4a194e(0x1cc)]);}this[_0x4a194e(0x215)]=_0x3f8837,_0x5f7778[_0x4a194e(0x25d)][_0x4a194e(0x230)]?.['toast']?.[_0x4a194e(0x1b6)]?.('Default\x20TTL\x20set\x20('+this[_0x4a194e(0x221)](_0x3f8837)+')');}catch(_0x4e575a){_0x5f7778['$ok'][_0x4a194e(0x230)]?.[_0x4a194e(0x275)]?.[_0x4a194e(0x256)]?.(_0x4e575a[_0x4a194e(0x232)]||_0x4a194e(0x1ae));}finally{this['defaultTTLBusy']=!0x1;}}},async 'clearDefaultTTLAction'(){const _0x2e5f92=_0x189c00;this[_0x2e5f92(0x1f2)]=!0x0;try{const _0x1ecdb2=await fetch(this[_0x2e5f92(0x1f3)]+_0x2e5f92(0x1c6)+encodeURIComponent(this[_0x2e5f92(0x268)])+_0x2e5f92(0x1d6),{'method':_0x2e5f92(0x27b)});if(!_0x1ecdb2['ok'])throw new Error(_0x1ecdb2[_0x2e5f92(0x1cc)]);this[_0x2e5f92(0x215)]=null,this[_0x2e5f92(0x251)]='',this[_0x2e5f92(0x25f)]='',_0x5f7778['$ok']['shared']?.[_0x2e5f92(0x275)]?.[_0x2e5f92(0x1b6)]?.(_0x2e5f92(0x279));}catch(_0xce73db){_0x5f7778[_0x2e5f92(0x25d)][_0x2e5f92(0x230)]?.[_0x2e5f92(0x275)]?.['error']?.(_0xce73db[_0x2e5f92(0x232)]||_0x2e5f92(0x2b2));}finally{this[_0x2e5f92(0x1f2)]=!0x1;}},'onDefaultTTLPresetChange'(_0x9aa822){const _0x43a2ad=_0x189c00;this[_0x43a2ad(0x25f)]=_0x9aa822,_0x9aa822&&(this[_0x43a2ad(0x251)]=_0x9aa822);},async 'triggerSweep'(){const _0x46baca=_0x189c00;this[_0x46baca(0x1be)]=!0x0;try{const _0x294e26=await fetch(this[_0x46baca(0x1f3)]+_0x46baca(0x1bf),{'method':_0x46baca(0x25a),'headers':{'Content-Type':_0x46baca(0x239)},'body':JSON['stringify']({'batchSize':0x3e8})}),_0x5da9ad=await _0x294e26[_0x46baca(0x28c)](),_0x3cc73c=_0x46baca(0x2bf)+((_0x5da9ad['data']??_0x5da9ad['result']??{})['removed']??0x0)+_0x46baca(0x1ec);_0x5f7778[_0x46baca(0x25d)][_0x46baca(0x230)]?.[_0x46baca(0x275)]?.[_0x46baca(0x1b6)]?.(_0x3cc73c),await this[_0x46baca(0x238)](),await this[_0x46baca(0x1d9)]['load']();}catch(_0x465a07){_0x5f7778['$ok'][_0x46baca(0x230)]?.[_0x46baca(0x275)]?.[_0x46baca(0x256)]?.(_0x465a07[_0x46baca(0x232)]||_0x46baca(0x22d));}finally{this[_0x46baca(0x1be)]=!0x1;}},'fmtDuration'(_0x613d64){const _0x36ba8e=_0x189c00;if(null==_0x613d64)return'—';const _0x679786=Math[_0x36ba8e(0x1ee)](_0x613d64/0x3e8);return _0x679786<0x3c?_0x679786+'s':_0x679786<0xe10?Math['floor'](_0x679786/0x3c)+'m\x20'+_0x679786%0x3c+'s':_0x679786<0x15180?Math['floor'](_0x679786/0xe10)+'h\x20'+Math[_0x36ba8e(0x1ee)](_0x679786%0xe10/0x3c)+'m':Math['floor'](_0x679786/0x15180)+'d\x20'+Math['floor'](_0x679786%0x15180/0xe10)+'h';},get 'vectorEntries'(){const _0x30e770=_0x189c00;return this[_0x30e770(0x20a)][_0x30e770(0x26f)](_0x549e69=>({'name':_0x549e69[_0x30e770(0x2be)],'displayName':this[_0x30e770(0x1e8)](_0x549e69[_0x30e770(0x2be)]),'status':_0x549e69['isRunning']?_0x30e770(0x1cb):_0x549e69['status']||_0x30e770(0x1c2),'running':_0x549e69[_0x30e770(0x241)],'pipeline':_0x549e69[_0x30e770(0x237)]&&_0x549e69[_0x30e770(0x237)][_0x30e770(0x27a)]?_0x549e69[_0x30e770(0x237)][_0x30e770(0x27a)]:null}));},get 'siftSchema'(){return _0xf653e(this['typeFields']);},async 'loadIndexes'(_0x14d525=!0x1){const _0x49fee7=_0x189c00;if(this[_0x49fee7(0x268)]&&(_0x14d525||_0x85d531!==this[_0x49fee7(0x268)]))try{const _0x22ce48=await fetch(this[_0x49fee7(0x1f3)]+_0x49fee7(0x1c6)+this['type']+_0x49fee7(0x210)),_0x28c965=await _0x22ce48['json'](),_0x5c709c=_0x28c965[_0x49fee7(0x231)]??_0x28c965[_0x49fee7(0x2b5)]??{};this['possibleIndexes']=Object[_0x49fee7(0x253)](_0x5c709c),this[_0x49fee7(0x257)]=_0x5c709c,this[_0x49fee7(0x209)](),_0x85d531=this[_0x49fee7(0x268)];}catch(_0x2e4fd4){console['error'](_0x49fee7(0x26b),_0x2e4fd4);}},async 'loadFtsIndexes'(_0x32234a=!0x1){const _0x34449b=_0x189c00;if(this[_0x34449b(0x268)]&&(_0x32234a||_0x376ae1!==this[_0x34449b(0x268)]))try{const _0x5b94ea=await fetch(this[_0x34449b(0x1f3)]+'/type/'+this[_0x34449b(0x268)]+_0x34449b(0x1f8)),{data:_0x21b51b}=await _0x5b94ea[_0x34449b(0x28c)]();this['ftsList']=_0x21b51b||[],_0x376ae1=this[_0x34449b(0x268)];}catch(_0x3cacae){console[_0x34449b(0x256)]('Error\x20fetching\x20FTS\x20indexes',_0x3cacae);}},async 'loadVectorEngines'(_0x3e80cf=!0x1){const _0x264da0=_0x189c00;if(this[_0x264da0(0x268)]&&(_0x3e80cf||_0x4ca5fe!==this[_0x264da0(0x268)]))try{const _0x26d32d=_0x5f7778[_0x264da0(0x25d)][_0x264da0(0x2a7)][_0x264da0(0x20f)][_0x264da0(0x1d7)]||'default',[_0x30e83f,_0x670e49]=await Promise[_0x264da0(0x24d)]([fetch(__ENV__[_0x264da0(0x25b)]+'/env/'+encodeURIComponent(_0x26d32d)+_0x264da0(0x1c4))['then'](_0x45b4e8=>_0x45b4e8[_0x264da0(0x28c)]()),fetch(__ENV__['API']+'/embeddings/embedders')[_0x264da0(0x208)](_0xee076d=>_0xee076d['json']())]),_0x36c9eb='fulfilled'===_0x30e83f[_0x264da0(0x298)]?_0x30e83f[_0x264da0(0x291)]?.[_0x264da0(0x2b5)]??_0x30e83f[_0x264da0(0x291)]?.[_0x264da0(0x231)]??[]:[],_0x513549=[...'fulfilled'===_0x670e49['status']?_0x670e49[_0x264da0(0x291)]?.[_0x264da0(0x231)]??[]:[],..._0x36c9eb],_0x2e8758={};for(const _0x48015e of _0x513549)_0x264da0(0x27e)===_0x48015e[_0x264da0(0x268)]&&_0x48015e[_0x264da0(0x28e)]&&(_0x2e8758[_0x48015e[_0x264da0(0x2be)]]={'source_type':_0x48015e['config'][_0x264da0(0x21a)],'source_env':_0x48015e[_0x264da0(0x28e)][_0x264da0(0x2a6)]??'default'});this[_0x264da0(0x20a)]=_0x513549['filter'](_0x3cc8e9=>{const _0x21a19e=_0x264da0;if(_0x21a19e(0x26a)!==_0x3cc8e9[_0x21a19e(0x268)])return!0x1;const _0x1bf655=_0x3cc8e9[_0x21a19e(0x28e)]?.[_0x21a19e(0x21a)],_0xdea5e1=_0x3cc8e9[_0x21a19e(0x28e)]?.['source_env']??_0x21a19e(0x212);if(_0x1bf655===this[_0x21a19e(0x268)]&&_0xdea5e1===_0x26d32d)return!0x0;const _0x1afa63=_0x2e8758[_0x3cc8e9[_0x21a19e(0x2be)]];return _0x1afa63?.[_0x21a19e(0x21a)]===this[_0x21a19e(0x268)]&&(_0x1afa63?.[_0x21a19e(0x2a6)]??_0x21a19e(0x212))===_0x26d32d;}),_0x4ca5fe=this[_0x264da0(0x268)];}catch(_0x2cc9c6){this[_0x264da0(0x20a)]=[];}},async 'loadTypeEnginesCount'(){const _0x6157b6=_0x189c00;if(this[_0x6157b6(0x268)])try{const _0x11a8aa=_0x5f7778[_0x6157b6(0x25d)][_0x6157b6(0x2a7)][_0x6157b6(0x20f)]['selectedEnv']||_0x6157b6(0x212),_0xbf9c9d=await fetch(__ENV__[_0x6157b6(0x25b)]+_0x6157b6(0x2ae)+encodeURIComponent(_0x11a8aa)+_0x6157b6(0x1c6)+encodeURIComponent(this[_0x6157b6(0x268)])+_0x6157b6(0x1dc)),_0x1c7222=await _0xbf9c9d[_0x6157b6(0x28c)]()['catch'](()=>({})),_0x1570a1=_0xbf9c9d['ok']?_0x1c7222?.[_0x6157b6(0x231)]??[]:[],_0x326d9e=new Set();for(const _0x2088ea of _0x1570a1[_0x6157b6(0x278)](_0x338313=>_0x338313?.[_0x6157b6(0x254)]??[])){const _0x46130a=_0x2088ea?.['key']??(_0x2088ea?.['type']&&_0x2088ea?.[_0x6157b6(0x2be)]?_0x2088ea[_0x6157b6(0x268)]+'@'+_0x2088ea[_0x6157b6(0x2be)]:_0x2088ea?.[_0x6157b6(0x2be)]??null);_0x46130a&&_0x326d9e[_0x6157b6(0x1bd)](_0x46130a);}this[_0x6157b6(0x296)]=_0x326d9e[_0x6157b6(0x245)];}catch{this['typeEngineCount']=0x0;}else this[_0x6157b6(0x296)]=0x0;},async 'recomputeFields'(){const _0x16f6f2=_0x189c00;if(this['type'])try{await fetch(this[_0x16f6f2(0x1f3)]+_0x16f6f2(0x1c6)+this[_0x16f6f2(0x268)]+_0x16f6f2(0x2c0),{'method':_0x16f6f2(0x25a)}),await _0x5f7778['$ok'][_0x16f6f2(0x2a7)]['okdb']['reloadTypes'](),_0x5f7778[_0x16f6f2(0x25d)][_0x16f6f2(0x230)]?.[_0x16f6f2(0x275)]?.['success']?.(_0x16f6f2(0x1f6));}catch(_0x23bb4f){console[_0x16f6f2(0x256)](_0x16f6f2(0x1e0),_0x23bb4f),_0x5f7778[_0x16f6f2(0x25d)][_0x16f6f2(0x230)]?.[_0x16f6f2(0x275)]?.[_0x16f6f2(0x256)]?.('Recompute\x20failed');}},'indexStatusBadge'(_0x2e54f4){const _0x4a465f=_0x189c00,_0x3a1139=this['indexStatuses']?.[_0x2e54f4]?.[_0x4a465f(0x298)];return _0x3a1139&&'ready'!==_0x3a1139?_0x3a1139:null;},'ftsStatusBadge'(_0x543d31){const _0xff7129=_0x189c00,_0x2bcc14=_0x543d31?.[_0xff7129(0x298)];return _0x2bcc14&&_0xff7129(0x276)!==_0x2bcc14?_0x2bcc14:null;},'keyOf':_0x32463d=>_0x32463d?.['__key']??_0x32463d?.['key']??null,get 'hasDirectValueRows'(){const _0x50b812=_0x189c00;return(this[_0x50b812(0x1d9)][_0x50b812(0x1b9)]||[])[_0x50b812(0x1e2)](_0x261b2f=>!y(_0x261b2f?.[_0x50b812(0x291)]));},get 'displayRows'(){const _0xa44517=_0x189c00;return this['hasDirectValueRows']?this['query'][_0xa44517(0x1b9)]:this[_0xa44517(0x1d9)]['values'];},'rowValueOf':_0x4054ec=>_0x4054ec&&'object'==typeof _0x4054ec&&_0x189c00(0x1c0)in _0x4054ec&&_0x189c00(0x291)in _0x4054ec?_0x4054ec[_0x189c00(0x291)]:_0x4054ec,'directValueKindOf'(_0x76367e){const _0x2fe65f=_0x189c00,_0x294066=this[_0x2fe65f(0x1ef)](_0x76367e);return null===_0x294066?_0x2fe65f(0x1ed):Array[_0x2fe65f(0x25e)](_0x294066)?_0x2fe65f(0x2a9):y(_0x294066)?null:_0x2fe65f(0x285);},'inlineValueOf'(_0x2a3711){const _0x24fc60=_0x189c00;return m(this[_0x24fc60(0x1ef)](_0x2a3711));},'prettyValueOf'(_0x1a11eb){const _0x29c800=_0x189c00;return m(this[_0x29c800(0x1ef)](_0x1a11eb),0x2);},'scoreOf'(_0x46bb0d){const _0x583a8b=_0x189c00,_0x1f271c=this[_0x583a8b(0x24b)](_0x46bb0d);return _0x1f271c?this[_0x583a8b(0x1d9)][_0x583a8b(0x265)]?.[_0x1f271c]?.[_0x583a8b(0x1c5)]??null:null;},'matchOf'(_0x1638c3){const _0x5cedfd=_0x189c00,_0x58a690=this[_0x5cedfd(0x24b)](_0x1638c3);if(!_0x58a690)return null;const _0x3c4dca=this[_0x5cedfd(0x1d9)]['ftsScoreMap']?.[_0x58a690];if(!_0x3c4dca||null==_0x3c4dca[_0x5cedfd(0x1c5)])return null;const _0x72cf2f=_0x3c4dca[_0x5cedfd(0x2ba)]??0x2*_0x3c4dca[_0x5cedfd(0x28a)];return _0x3c4dca[_0x5cedfd(0x1c5)]+'/'+_0x72cf2f;},'vectorScoreOf'(_0x279f63){const _0x3504f0=_0x189c00,_0x16c48a=this[_0x3504f0(0x24b)](_0x279f63);if(!_0x16c48a)return null;const _0x528b45=this['query'][_0x3504f0(0x1e4)]?.[_0x16c48a];return null==_0x528b45?null:Math[_0x3504f0(0x1b4)](0x64*_0x528b45)+'%';},'vectorChunkMetaOf'(_0x7bbaa6){const _0x5cfc0e=_0x189c00,_0x320e7b=this[_0x5cfc0e(0x24b)](_0x7bbaa6);return _0x320e7b?this[_0x5cfc0e(0x1d9)]['vectorChunkMetaMap']?.[_0x320e7b]??null:null;},'distanceOf'(_0x3b9ef5){const _0x19c29a=_0x189c00,_0x45f5be=this[_0x19c29a(0x24b)](_0x3b9ef5);if(!_0x45f5be)return null;const _0xd4f845=this['geoDistanceMap']?.[_0x45f5be];return null==_0xd4f845?null:_0xd4f845<0x3e8?Math[_0x19c29a(0x1b4)](_0xd4f845)+'\x20m':(_0xd4f845/0x3e8)['toFixed'](0x1)+_0x19c29a(0x274);},'displayVectorName'(_0x3bc9d6){const _0x16c432=_0x189c00,_0x1e3efb=(_0x5f7778[_0x16c432(0x25d)][_0x16c432(0x2a7)]['okdb'][_0x16c432(0x1d7)]||'default')+':';return _0x3bc9d6['startsWith'](_0x1e3efb)?_0x3bc9d6[_0x16c432(0x1f7)](_0x1e3efb['length']):_0x3bc9d6;},'selectVectorEngine'(_0x138237,_0x5300e2){const _0x14210c=_0x189c00;if(_0x14210c(0x255)===_0x138237)return _0x5300e2&&(_0x5300e2[_0x14210c(0x2b0)][_0x14210c(0x291)]=this['query'][_0x14210c(0x1d8)]||''),void this[_0x14210c(0x228)]();this[_0x14210c(0x1d9)][_0x14210c(0x1d8)]=_0x138237||null,this[_0x14210c(0x1d9)][_0x14210c(0x1d8)]&&(this[_0x14210c(0x1d9)][_0x14210c(0x1b3)]=null,this['query']['selectedFtsIndex']=null,this[_0x14210c(0x1d9)][_0x14210c(0x1fc)]=void 0x0,this['query'][_0x14210c(0x2a8)]=void 0x0,this[_0x14210c(0x1d9)]['selectedIndexEnd']=void 0x0);},'openCreatePipelineModal'(){const _0x1f5419=_0x189c00;this[_0x1f5419(0x1da)]();},'createMenuOpen':!0x1,'onRowChanged'(_0x5ba5e8){const _0x32c764=_0x189c00,_0x470d7f=_0x5ba5e8?.['detail']??null,_0x3bbfc5=_0x470d7f?.[_0x32c764(0x1c0)]??null;if(null!=_0x3bbfc5){const _0x46d1d4=this[_0x32c764(0x1d9)][_0x32c764(0x1b9)][_0x32c764(0x1eb)](_0x21b8f3=>_0x21b8f3?.[_0x32c764(0x1c0)]===_0x3bbfc5);if(_0x46d1d4>=0x0){const _0xbbb419=_0x470d7f?.['value'];x(_0xbbb419,_0x3bbfc5),this[_0x32c764(0x1d9)][_0x32c764(0x1b9)][_0x32c764(0x1e1)](_0x46d1d4,0x1,{...this[_0x32c764(0x1d9)][_0x32c764(0x1b9)][_0x46d1d4],'value':_0xbbb419}),_0x46d1d4<this[_0x32c764(0x1d9)][_0x32c764(0x23b)][_0x32c764(0x1d2)]&&this[_0x32c764(0x1d9)]['values'][_0x32c764(0x1e1)](_0x46d1d4,0x1,_0xbbb419);}}_0x5f7778[_0x32c764(0x25d)][_0x32c764(0x230)][_0x32c764(0x275)][_0x32c764(0x1b6)](_0x32c764(0x1e7)),this[_0x32c764(0x28f)]();},'onRemoveRow'(_0x3379db){const _0x1f62c6=_0x189c00,_0x219b41=this[_0x1f62c6(0x1d9)]['items'][_0x1f62c6(0x1eb)](_0x46a4a9=>_0x46a4a9?.[_0x1f62c6(0x1c0)]===_0x3379db);_0x219b41>=0x0&&(this['query'][_0x1f62c6(0x23b)][_0x1f62c6(0x1e1)](_0x219b41,0x1),this[_0x1f62c6(0x1d9)][_0x1f62c6(0x1b9)][_0x1f62c6(0x1e1)](_0x219b41,0x1));},async 'openAddModal'(){const _0x41d86d=_0x189c00;await _0x5f7778[_0x41d86d(0x25d)][_0x41d86d(0x230)][_0x41d86d(0x1dd)][_0x41d86d(0x2b8)]({'owner':_0x5f7778,'title':_0x41d86d(0x1fa),'content':_0x41d86d(0x225),'context':_0x31c972=>({'modal':_0x31c972,'type':this['type'],'onDone':async({key:_0x4a0b38,value:_0x2a7aba})=>{const _0x3f277d=_0x41d86d;x(_0x2a7aba,_0x4a0b38),this[_0x3f277d(0x1d9)][_0x3f277d(0x23b)][_0x3f277d(0x294)](_0x2a7aba),this[_0x3f277d(0x1d9)][_0x3f277d(0x1b9)][_0x3f277d(0x294)]({'key':_0x4a0b38,'value':_0x2a7aba});}})});},async 'openCreateIndex'(){const _0x2010af=_0x189c00;let _0x3ef964={},_0x22d105=[];try{const _0x4d4751=await fetch(this[_0x2010af(0x1f3)]+_0x2010af(0x1c6)+this[_0x2010af(0x268)]+'/deep-properties'),_0x3fdb05=await _0x4d4751[_0x2010af(0x28c)]();_0x3ef964=(_0x3fdb05[_0x2010af(0x231)]??_0x3fdb05[_0x2010af(0x2b5)])?.[_0x2010af(0x240)]??{},_0x22d105=Object[_0x2010af(0x253)](_0x3ef964)['filter'](_0x126a24=>_0x3ef964[_0x126a24][_0x2010af(0x1f1)]('geo'));}catch{const _0x3463f9=(_0x5f7778[_0x2010af(0x25d)]['stores'][_0x2010af(0x20f)]['types']||[])['find'](_0x493fd0=>_0x493fd0['type']===this[_0x2010af(0x268)]);for(const _0x4116ab of Object[_0x2010af(0x253)](_0x3463f9?.[_0x2010af(0x22e)]||{}))_0x3ef964[_0x4116ab]=_0x3463f9[_0x2010af(0x22e)][_0x4116ab];}await _0x5f7778[_0x2010af(0x25d)][_0x2010af(0x230)][_0x2010af(0x1dd)]['open']({'owner':_0x5f7778,'title':_0x2010af(0x203),'content':_0x2010af(0x1f0),'context':_0x2f6326=>({'modal':_0x2f6326,'type':this[_0x2010af(0x268)],'deepPaths':_0x3ef964,'geoFields':_0x22d105,'onDone':async()=>{const _0x1c2694=_0x2010af;await this[_0x1c2694(0x224)](!0x0);}})});},async 'dropType'(){const _0x2d8c0f=_0x189c00;if(this[_0x2d8c0f(0x268)]&&await _0x5f7778[_0x2d8c0f(0x25d)]['shared']['modal'][_0x2d8c0f(0x287)](_0x2d8c0f(0x214)+this['type']+_0x2d8c0f(0x1cf)))try{await fetch(this[_0x2d8c0f(0x1f3)]+'/type/'+this['type'],{'method':_0x2d8c0f(0x27b)}),await _0x5f7778[_0x2d8c0f(0x25d)][_0x2d8c0f(0x2a7)][_0x2d8c0f(0x20f)]['reloadTypes'](),_0x5f7778[_0x2d8c0f(0x2bd)][_0x2d8c0f(0x1c1)](new CustomEvent(_0x2d8c0f(0x269),{'detail':this[_0x2d8c0f(0x268)]}));}catch(_0x38daab){console['error'](_0x2d8c0f(0x280),_0x38daab);}},async 'removeIndex'(_0xd64907){const _0x2c38fc=_0x189c00,_0x944d00=_0xd64907||this[_0x2c38fc(0x1d9)]['selectedIndex'];if(_0x944d00&&await _0x5f7778['$ok'][_0x2c38fc(0x230)]['modal'][_0x2c38fc(0x287)](_0x2c38fc(0x1cd)+_0x944d00+'\x22?')){try{const _0x154fbe=await fetch(this[_0x2c38fc(0x1f3)]+_0x2c38fc(0x1c6)+this[_0x2c38fc(0x268)]+_0x2c38fc(0x216)+_0x944d00,{'method':_0x2c38fc(0x27b)});if(!_0x154fbe['ok']){const _0x350315=await _0x154fbe['json']()[_0x2c38fc(0x2ad)](()=>({})),_0x20b93f=_0x350315?.[_0x2c38fc(0x256)]?.[_0x2c38fc(0x22c)];if(_0x2c38fc(0x252)===_0x20b93f){const _0x2284b4=(_0x350315?.['error']?.[_0x2c38fc(0x226)]?.[_0x2c38fc(0x1ca)]??[])[_0x2c38fc(0x26f)](_0x22267e=>_0x22267e[_0x2c38fc(0x219)]+':'+_0x22267e['name'])[_0x2c38fc(0x2b4)](',\x20');return void _0x5f7778[_0x2c38fc(0x25d)][_0x2c38fc(0x230)]?.['toast']?.['error']?.(_0x2c38fc(0x202)+(_0x2284b4||_0x2c38fc(0x1c7)));}throw new Error(_0x350315?.['error']?.[_0x2c38fc(0x232)]??_0x2c38fc(0x29b));}}catch(_0x3bd696){return console[_0x2c38fc(0x256)](_0x2c38fc(0x218),_0x3bd696),void _0x5f7778[_0x2c38fc(0x25d)][_0x2c38fc(0x230)]?.[_0x2c38fc(0x275)]?.[_0x2c38fc(0x256)]?.(_0x3bd696[_0x2c38fc(0x232)]);}this[_0x2c38fc(0x1d9)][_0x2c38fc(0x1b3)]===_0x944d00&&(this[_0x2c38fc(0x1d9)]['selectedIndex']=null),this[_0x2c38fc(0x1d9)][_0x2c38fc(0x1fb)](),await this['loadIndexes'](!0x0),await this[_0x2c38fc(0x1d9)][_0x2c38fc(0x1b2)]();}},'selectIndex'(_0x14169b){const _0x456a21=_0x189c00;if('__create_index__'===_0x14169b)return this['query'][_0x456a21(0x1b3)]=null,void this[_0x456a21(0x250)]();'__remove_index__'!==_0x14169b?(this[_0x456a21(0x1d9)][_0x456a21(0x1b3)]=_0x14169b||null,this['query'][_0x456a21(0x1b3)]&&(this['query'][_0x456a21(0x24f)]=null),this[_0x456a21(0x1d9)][_0x456a21(0x1b3)]||(this[_0x456a21(0x1d9)][_0x456a21(0x1fc)]=void 0x0,this['query'][_0x456a21(0x2a8)]=void 0x0,this[_0x456a21(0x1d9)][_0x456a21(0x243)]=void 0x0)):this[_0x456a21(0x1b0)]();},'selectFtsIndex'(_0x1b2f37,_0x2bbcf2){const _0x417240=_0x189c00;if(_0x417240(0x204)===_0x1b2f37)return _0x2bbcf2&&(_0x2bbcf2[_0x417240(0x2b0)]['value']=this[_0x417240(0x1d9)][_0x417240(0x24f)]||''),void this['openCreateFtsModal']();_0x417240(0x1e5)!==_0x1b2f37?(this['query'][_0x417240(0x24f)]=_0x1b2f37||null,this['query']['selectedFtsIndex']&&(this[_0x417240(0x1d9)]['selectedIndex']=null,this['query'][_0x417240(0x1fc)]=void 0x0,this[_0x417240(0x1d9)][_0x417240(0x2a8)]=void 0x0,this[_0x417240(0x1d9)]['selectedIndexEnd']=void 0x0)):this['dropFtsIndex']();},async 'openCreateFtsModal'(){const _0x4bb28e=_0x189c00;let _0x485019={};try{const _0x2f05af=await fetch(this[_0x4bb28e(0x1f3)]+_0x4bb28e(0x1c6)+this[_0x4bb28e(0x268)]+_0x4bb28e(0x2a4)),_0x575fc5=await _0x2f05af[_0x4bb28e(0x28c)]();_0x485019=(_0x575fc5[_0x4bb28e(0x231)]??_0x575fc5['result'])?.[_0x4bb28e(0x240)]??{};}catch{const _0x3361a3=(_0x5f7778[_0x4bb28e(0x25d)][_0x4bb28e(0x2a7)][_0x4bb28e(0x20f)]['types']||[])[_0x4bb28e(0x266)](_0x7f56c5=>_0x7f56c5[_0x4bb28e(0x268)]===this[_0x4bb28e(0x268)]);for(const _0x3714f3 of Object[_0x4bb28e(0x253)](_0x3361a3?.['fields']||{}))_0x485019[_0x3714f3]=_0x3361a3[_0x4bb28e(0x22e)][_0x3714f3];}await _0x5f7778['$ok'][_0x4bb28e(0x230)][_0x4bb28e(0x1dd)][_0x4bb28e(0x2b8)]({'owner':_0x5f7778,'title':_0x4bb28e(0x1af),'content':'<create-fts-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:api-base=\x22apiBase\x22\x20:deep-paths=\x22deepPaths\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x4d06ef=>({'modal':_0x4d06ef,'type':this[_0x4bb28e(0x268)],'apiBase':this[_0x4bb28e(0x1f3)],'deepPaths':_0x485019,'onDone':async()=>{const _0x4c76f4=_0x4bb28e;await this[_0x4c76f4(0x1ad)](!0x0);}})});},async 'dropFtsIndex'(_0x50c548){const _0x5293a2=_0x189c00,_0x302e5f=_0x50c548||this[_0x5293a2(0x1d9)][_0x5293a2(0x24f)];if(_0x302e5f&&await _0x5f7778[_0x5293a2(0x25d)][_0x5293a2(0x230)][_0x5293a2(0x1dd)][_0x5293a2(0x287)]('Drop\x20FTS\x20index\x20\x22'+_0x302e5f+_0x5293a2(0x1cf))){try{await fetch(this['envApiBase']+_0x5293a2(0x1c6)+this[_0x5293a2(0x268)]+'/fts/'+encodeURIComponent(_0x302e5f),{'method':_0x5293a2(0x27b)});}catch(_0x499a10){return console[_0x5293a2(0x256)](_0x5293a2(0x29f),_0x499a10),void _0x5f7778[_0x5293a2(0x25d)][_0x5293a2(0x230)]?.['toast']?.['error']?.('Drop\x20FTS\x20failed');}this[_0x5293a2(0x1d9)][_0x5293a2(0x24f)]===_0x302e5f&&(this[_0x5293a2(0x1d9)]['selectedFtsIndex']=null),await this[_0x5293a2(0x1ad)](!0x0),await this['query'][_0x5293a2(0x1b2)]();}},async 'rebuildIndex'(_0x14f095){const _0x5042e8=_0x189c00;if(_0x14f095&&await _0x5f7778[_0x5042e8(0x25d)][_0x5042e8(0x230)][_0x5042e8(0x1dd)][_0x5042e8(0x287)](_0x5042e8(0x22a)+_0x14f095+_0x5042e8(0x2b1)))try{await fetch(this[_0x5042e8(0x1f3)]+'/type/'+this[_0x5042e8(0x268)]+_0x5042e8(0x216)+encodeURIComponent(_0x14f095)+'/reset',{'method':'POST'}),_0x5f7778[_0x5042e8(0x25d)][_0x5042e8(0x230)]?.[_0x5042e8(0x275)]?.[_0x5042e8(0x1b6)]?.(_0x5042e8(0x25c)+_0x14f095+'\x22…'),await this[_0x5042e8(0x224)](!0x0);}catch(_0x57e71e){console[_0x5042e8(0x256)](_0x5042e8(0x297),_0x57e71e),_0x5f7778[_0x5042e8(0x25d)][_0x5042e8(0x230)]?.['toast']?.[_0x5042e8(0x256)]?.(_0x5042e8(0x2a2));}},async 'rebuildFts'(_0x53ef79){const _0x19fbe1=_0x189c00,_0x5175cf=_0x53ef79||this[_0x19fbe1(0x1d9)][_0x19fbe1(0x24f)];if(_0x5175cf&&await _0x5f7778['$ok'][_0x19fbe1(0x230)][_0x19fbe1(0x1dd)][_0x19fbe1(0x287)](_0x19fbe1(0x1de)+_0x5175cf+_0x19fbe1(0x1c3)))try{await fetch(this['envApiBase']+_0x19fbe1(0x1c6)+this[_0x19fbe1(0x268)]+'/fts/'+encodeURIComponent(_0x5175cf)+_0x19fbe1(0x1d3),{'method':_0x19fbe1(0x25a)}),_0x5f7778['$ok'][_0x19fbe1(0x230)]?.[_0x19fbe1(0x275)]?.[_0x19fbe1(0x1b6)]?.('Rebuilding\x20FTS\x20index\x20\x22'+_0x5175cf+'\x22…'),await this[_0x19fbe1(0x1ad)](!0x0);}catch(_0x4af603){console[_0x19fbe1(0x256)](_0x19fbe1(0x2bb),_0x4af603),_0x5f7778[_0x19fbe1(0x25d)]['shared']?.['toast']?.['error']?.('Rebuild\x20failed');}},'onGeoTableSelect'(_0x1f36ba){const _0x5350a2=_0x189c00;if(_0x5350a2(0x295)!==this['searchMode'])return;this['_geoSelSource']=_0x5350a2(0x217);const _0xec9185=_0x1f36ba[_0x5350a2(0x2b7)]?.[_0x5350a2(0x27c)];this[_0x5350a2(0x277)]=_0x5350a2(0x21d)===_0xec9185?null:_0x1f36ba[_0x5350a2(0x2b7)]?.['row']?.['__key']??null;},'onGeoMapSelect'(_0x34a83f){const _0x407e11=_0x189c00,_0x4f6a3d=_0x34a83f[_0x407e11(0x2b7)]?.[_0x407e11(0x1c0)]??null;this[_0x407e11(0x281)]='map',this[_0x407e11(0x277)]=this[_0x407e11(0x277)]===_0x4f6a3d?null:_0x4f6a3d;}};},'_unsubs':[],async 'init'(_0x124ccc){const _0x4429d5=_0x33ca;if(_0x124ccc['$watch'](()=>this[_0x4429d5(0x268)],async()=>{const _0x1b579b=_0x4429d5;this[_0x1b579b(0x1d9)][_0x1b579b(0x268)]=this[_0x1b579b(0x268)],this[_0x1b579b(0x1d9)][_0x1b579b(0x24f)]=null,this[_0x1b579b(0x1d9)][_0x1b579b(0x1d8)]=null,this[_0x1b579b(0x259)]=_0x1b579b(0x20e),this['query'][_0x1b579b(0x1fb)](),await this[_0x1b579b(0x224)](!0x0),await this[_0x1b579b(0x1ad)](!0x0),await this[_0x1b579b(0x205)](!0x0),await this[_0x1b579b(0x263)](),await this['loadViolations'](),await this[_0x1b579b(0x1d9)][_0x1b579b(0x1b2)]();}),_0x124ccc[_0x4429d5(0x273)](()=>[this['query'][_0x4429d5(0x1d9)],this[_0x4429d5(0x1d9)]['selectedIndex'],this['query'][_0x4429d5(0x2a8)],this[_0x4429d5(0x1d9)]['selectedIndexEnd'],this[_0x4429d5(0x1d9)][_0x4429d5(0x213)],this[_0x4429d5(0x1d9)][_0x4429d5(0x2a1)],this[_0x4429d5(0x1d9)]['selectedPrefix'],this[_0x4429d5(0x1d9)][_0x4429d5(0x24f)],this[_0x4429d5(0x1d9)][_0x4429d5(0x1ff)],this[_0x4429d5(0x1d9)]['ftsMode'],this['query'][_0x4429d5(0x2b9)],this[_0x4429d5(0x1d9)][_0x4429d5(0x1d8)],this['query']['vectorText'],this[_0x4429d5(0x1d9)]['vectorLimit']],async()=>{const _0x4c2e88=_0x4429d5;this[_0x4c2e88(0x268)]&&(this['query'][_0x4c2e88(0x1fb)](),await this[_0x4c2e88(0x1d9)][_0x4c2e88(0x1b2)]());}),_0x124ccc['$watch'](()=>[this[_0x4429d5(0x259)],this[_0x4429d5(0x286)],this[_0x4429d5(0x2aa)],this['geoLon'],this[_0x4429d5(0x1f9)],this['geoSortAsc'],this['query'][_0x4429d5(0x1d9)]],async()=>{const _0x24278c=_0x4429d5;_0x24278c(0x295)===this[_0x24278c(0x259)]&&this[_0x24278c(0x268)]&&this[_0x24278c(0x286)]&&this['geoLat']&&this[_0x24278c(0x1ea)]&&await this['loadGeoQuery']();}),this[_0x4429d5(0x268)]){const _0x1a26ec=new Set([_0x4429d5(0x231),'changelog','manage',_0x4429d5(0x20c),'pipelines','engines']),_0x3749d2=_0x124ccc['$vars'][_0x4429d5(0x1e9)]?.['search']?.['tab'];_0x3749d2&&_0x1a26ec[_0x4429d5(0x1bc)](_0x3749d2)&&(this[_0x4429d5(0x23c)]=_0x4429d5(0x236)===_0x3749d2?_0x4429d5(0x254):_0x3749d2),await Promise['all']([this[_0x4429d5(0x224)](),this[_0x4429d5(0x1ad)](),this['loadVectorEngines'](),this['loadTypeEnginesCount'](),this['loadViolations'](),this['loadTTLStats'](),this[_0x4429d5(0x1fd)](),this[_0x4429d5(0x1d9)]['load']()]);}this[_0x4429d5(0x24a)]=[_0x266dde['on'](_0x4429d5(0x248),()=>{const _0x219466=_0x4429d5;this[_0x219466(0x224)](!0x0),this[_0x219466(0x1ad)](!0x0);}),_0x266dde['on'](_0x4429d5(0x27f),_0x45c2a9=>{const _0x11c967=_0x4429d5;this['loadIndexes'](!0x0),this[_0x11c967(0x1ad)](!0x0);const _0x34f00d=_0x45c2a9?.[_0x11c967(0x268)];if(!_0x34f00d||_0x34f00d===this[_0x11c967(0x268)]){const _0xa2e75a=_0x45c2a9?.[_0x11c967(0x1d0)],_0x5d5bea=Array[_0x11c967(0x25e)](_0xa2e75a)&&'fts'===_0xa2e75a[0x0],_0x36f6d0=_0x5d5bea?_0xa2e75a[0x1]:_0x11c967(0x21e)==typeof _0xa2e75a?_0xa2e75a:'',_0x4c07b1=_0x5d5bea?'FTS\x20index\x20ready:\x20'+_0x36f6d0:_0x36f6d0?'Index\x20ready:\x20'+_0x36f6d0:_0x11c967(0x1d1);_0x124ccc['$ok'][_0x11c967(0x230)]?.['toast']?.[_0x11c967(0x234)]?.(_0x4c07b1);}}),_0x266dde['on'](_0x4429d5(0x26e),()=>this[_0x4429d5(0x224)](!0x0)),_0x266dde['on'](_0x4429d5(0x26c),()=>this[_0x4429d5(0x224)](!0x0)),_0x266dde['on'](_0x4429d5(0x261),()=>this[_0x4429d5(0x1ad)](!0x0)),_0x266dde['on'](_0x4429d5(0x29e),()=>this[_0x4429d5(0x1ad)](!0x0)),_0x266dde['on'](_0x4429d5(0x1d5),()=>this[_0x4429d5(0x205)](!0x0)),_0x266dde['on'](_0x4429d5(0x229),()=>this[_0x4429d5(0x205)](!0x0)),_0x266dde['on'](_0x4429d5(0x22b),()=>this['loadVectorEngines'](!0x0)),_0x266dde['on'](_0x4429d5(0x21c),()=>this[_0x4429d5(0x205)](!0x0)),_0x266dde['on'](_0x4429d5(0x2a3),()=>this[_0x4429d5(0x205)](!0x0)),_0x266dde['on'](_0x4429d5(0x1d5),()=>this[_0x4429d5(0x263)]()),_0x266dde['on'](_0x4429d5(0x229),()=>this[_0x4429d5(0x263)]()),_0x266dde['on'](_0x4429d5(0x22b),()=>this[_0x4429d5(0x263)]()),_0x266dde['on'](_0x4429d5(0x21c),()=>this[_0x4429d5(0x263)]()),_0x266dde['on'](_0x4429d5(0x2a3),()=>this[_0x4429d5(0x263)]()),_0x266dde['on'](_0x4429d5(0x293),()=>this['loadVectorEngines'](!0x0)),_0x266dde['on'](_0x4429d5(0x293),()=>this[_0x4429d5(0x263)]())];const _0x25c6c4=new Set([_0x4429d5(0x231),_0x4429d5(0x1b1),_0x4429d5(0x24e),'schema',_0x4429d5(0x236),'engines']);_0x124ccc[_0x4429d5(0x273)](()=>_0x124ccc[_0x4429d5(0x23d)]['$router']?.['_search']?.[_0x4429d5(0x23c)],()=>{const _0x518416=_0x4429d5,_0x12e8e8=_0x124ccc[_0x518416(0x23d)][_0x518416(0x1e9)]?.[_0x518416(0x292)]?.['tab'];if(!_0x12e8e8)return;const _0x147651=_0x25c6c4[_0x518416(0x1bc)](_0x12e8e8)?_0x518416(0x236)===_0x12e8e8?_0x518416(0x254):_0x12e8e8:_0x518416(0x231);this[_0x518416(0x23c)]!==_0x147651&&(this[_0x518416(0x23c)]=_0x147651);}),_0x124ccc[_0x4429d5(0x273)](()=>this[_0x4429d5(0x277)],_0x256f95=>{const _0x472fd3=_0x4429d5,_0x225396=this['_geoSelSource'];if(this[_0x472fd3(0x281)]=null,_0x472fd3(0x295)!==this[_0x472fd3(0x259)])return;if(_0x472fd3(0x217)===_0x225396)return;const _0x44036c=_0x124ccc['$el']?.['querySelector']('ok-table');if(!_0x44036c)return;if(!_0x256f95)return _0x44036c[_0x472fd3(0x2b3)]?.(),void _0x44036c[_0x472fd3(0x1fe)]?.();const _0x1f56a7=this[_0x472fd3(0x288)]?.['find'](_0x408084=>this[_0x472fd3(0x24b)](_0x408084)===_0x256f95);_0x1f56a7?(_0x44036c[_0x472fd3(0x29c)]?.(_0x1f56a7),_0x44036c['clearExpanded']?.(),_0x44036c[_0x472fd3(0x289)]?.(_0x1f56a7)):(_0x44036c[_0x472fd3(0x2b3)]?.(),_0x44036c[_0x472fd3(0x1fe)]?.());});},'unmount'(){const _0x44178e=_0x33ca;for(const _0x46542b of this[_0x44178e(0x24a)])_0x46542b();this[_0x44178e(0x24a)]=[];},'template':_0x1b645b(0x200),'style':'[tag]{display:flex;flex-direction:column;height:100%;min-width:0;min-height:0}.ok-table__cell__inner>span.object{color:#a6da95}.ok-table__cell__inner>span.number{color:var(--okdb-accent)}.ok-table__cell__inner>span.boolean{color:#ff6c6b}.ok-table__cell__inner>span.null,.ok-table__cell__inner>span.undefined{color:#c792ea}.ok-table__cell__inner>.key__header{font-weight:700;color:var(--okdb-json-key)}.ok-table__cell__inner>.key__cell{color:var(--okdb-json-key)}.fts-score-badge,.mode-count{display:inline-block;border-radius:999px;font-size:10px;vertical-align:middle}.mode-count{margin-left:4px;padding:0\x205px;background:#ffffff18;line-height:1.6}.fts-score-badge{margin-left:5px;padding:1px\x205px;border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent);opacity:.8}.vec-score-badge{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-indigo)\x2033%,transparent);color:var(--okdb-indigo)}.direct-value-badge,.geo-dist-badge,.vec-score-badge{display:inline-block;margin-left:5px;padding:1px\x205px;border-radius:999px;font-size:10px;vertical-align:middle;opacity:.8}.geo-dist-badge{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent);color:var(--okdb-success)}.direct-value-badge{border:1px\x20solid}.direct-value-badge--scalar{border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2033%,transparent);color:var(--okdb-app-fg-muted)}.direct-value-badge--array{border-color:#2dd4bf55;color:#2dd4bf}.direct-value-badge--null{border-color:color-mix(in\x20srgb,var(--okdb-purple)\x2033%,transparent);color:var(--okdb-purple)}.manage-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.manage-section-title{font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.06em;opacity:.5;margin-bottom:0}.manage-grid{display:grid;gap:0}.manage-grid--2{grid-template-columns:1fr\x201fr}.manage-grid--3{grid-template-columns:1fr\x20auto\x20auto}.manage-grid--4{grid-template-columns:1fr\x20auto\x20auto\x20auto}.manage-grid--idx{grid-template-columns:minmax(80px,2fr)\x20minmax(90px,1fr)\x20minmax(80px,1fr)\x20auto\x20auto\x20auto}.idx-consumer-badge,.idx-owned-badge{display:inline-block;padding:1px\x206px;border-radius:3px;font-size:10px;white-space:nowrap}.idx-owned-badge{background:color-mix(in\x20srgb,var(--okdb-accent)\x2012%,transparent);color:var(--okdb-accent);border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-accent)\x2025%,transparent)}.idx-consumer-badge{background:color-mix(in\x20srgb,var(--okdb-sky)\x2012%,transparent);color:var(--okdb-sky);border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-sky)\x2025%,transparent)}.manage-grid--fts{grid-template-columns:minmax(80px,1fr)\x202fr\x20minmax(60px,auto)\x20minmax(50px,auto)\x20auto\x20auto}.manage-grid--vec{grid-template-columns:minmax(80px,1fr)\x20minmax(60px,auto)\x20minmax(80px,1fr)\x20auto}.idx-kind-badge{display:inline-block;padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid;white-space:nowrap}.idx-kind-badge--geo{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.idx-kind-badge--unique{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.idx-kind-badge--regular{color:var(--okdb-app-fg-muted);border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2020%,transparent)}.idx-info-strip{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:5px\x208px;background:var(--okdb-app-bg-deep);border:1px\x20solid\x20var(--okdb-app-surface-2);border-radius:4px;font-size:11px}.idx-info-label{opacity:.4;white-space:nowrap}.idx-info-field{font-size:11px;color:var(--okdb-json-key)}.idx-info-badge{padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid;white-space:nowrap}.idx-info-badge--geo{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.idx-info-badge--unique{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.idx-info-badge--regular{color:var(--okdb-app-fg-muted);border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2020%,transparent)}.manage-col-hd{font-size:11px;opacity:.4;padding:0\x2012px\x206px\x200;border-bottom:1px\x20solid\x20var(--okdb-app-border);font-weight:400}.manage-cell{padding:6px\x2012px\x206px\x200;border-bottom:1px\x20solid\x20var(--okdb-app-surface);font-size:13px;display:flex;align-items:center;min-width:0}.manage-cell--dim{opacity:.5;font-size:12px}.manage-status{display:inline-block;padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid}.manage-status--ready{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.manage-status--creating,.manage-status--resetting{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.card--danger{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-danger)\x2013%,transparent)!important}'};
1
+ const _0x2e63d4=_0x392c;(function(_0x5e6644,_0x3bfe7d){const _0x35c17f=_0x392c,_0x9f7f0b=_0x5e6644();while(!![]){try{const _0x3098ab=parseInt(_0x35c17f(0x2ff))/0x1+parseInt(_0x35c17f(0x2c8))/0x2*(-parseInt(_0x35c17f(0x260))/0x3)+-parseInt(_0x35c17f(0x2e0))/0x4*(parseInt(_0x35c17f(0x30d))/0x5)+parseInt(_0x35c17f(0x2a7))/0x6+-parseInt(_0x35c17f(0x273))/0x7+-parseInt(_0x35c17f(0x2d5))/0x8+parseInt(_0x35c17f(0x1f7))/0x9*(parseInt(_0x35c17f(0x2b5))/0xa);if(_0x3098ab===_0x3bfe7d)break;else _0x9f7f0b['push'](_0x9f7f0b['shift']());}catch(_0x4c2861){_0x9f7f0b['push'](_0x9f7f0b['shift']());}}}(_0x5acc,0xbb1e3));import _0x5f1520 from'@toolkit/elements/ok-icon.ok.js';import _0x18869b from'@toolkit/elements/ok-table.ok.js';function _0x392c(_0x417599,_0x442d07){_0x417599=_0x417599-0x1ef;const _0x5acca5=_0x5acc();let _0x392c38=_0x5acca5[_0x417599];return _0x392c38;}import _0x2acb56 from'@toolkit/core/ok-overlay.ok.js';function _0x5acc(){const _0x4193af=['Default\x20TTL\x20cleared','_path','$router','vectorChunkMetaMap','embeddings:pipeline:ready','row','/ref-violations/','application/json','\x22?\x20This\x20cannot\x20be\x20undone.','defaultTTLBusy','unshift','indexStatuses','_unsubs','numTerms','$ok','\x20expired\x20item(s)\x20removed','target','distance','Drop\x20FTS\x20index\x20\x22','paths','details','openCreateIndex','detail','reloadTypes','Geo\x20query\x20error','hasDirectValueRows','selectedIndexEnd','time','__key','/deep-properties','code','resolve','index:reset','catch','geoLon','geoSortAsc','<create-fts-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:api-base=\x22apiBase\x22\x20:deep-paths=\x22deepPaths\x22\x20:on-done=\x22onDone\x22\x20/>','typeFields','queryMode','ftsScoreMap','result','splice','has','defaultTTL','rowValueOf','dropped','Fields\x20recomputed','searchMode','default','Error\x20fetching\x20FTS\x20indexes','openEnginesCreatePipeline','toFixed','clearSelection','querySelector','loadVectorEngines','violations','isRunning','Drop\x20FTS\x20error','loadTypeEnginesCount','okdb','ttlSweepBusy','<create-pipeline-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:env=\x22envName\x22\x20:on-done=\x22onDone\x22\x20/>','types','object','modal','violationCount','selectedFtsIndex','loadTTLStats','Drop\x20FTS\x20failed','table','$vars','geoConfig','__create_fts__','round','meta','string','\x22?\x20This\x20will\x20re-index\x20all\x20records.','status','Rebuilding\x20index\x20\x22','recomputeFields\x20error','Drop\x20type\x20error','Create\x20Index','lat','defaultTTLInput','engines','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:0;\x20height:100%;\x22>\x0a\x0a\x20\x20<!--\x20Tab\x20bar\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:2px;\x20border-bottom:1px\x20solid\x20var(--okdb-app-border);\x20margin-bottom:12px;\x20flex-shrink:0;\x22>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27data\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27data\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Data\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27changelog\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27changelog\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Changelog\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27manage\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27manage\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Manage\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27schema\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27schema\x27\x20?\x20(\x27border-color:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-success)\x27)\x20+\x20\x27;\x20color:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-success)\x27)\x20+\x20\x27;\x20background:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27#f8717111\x27\x20:\x20\x27color-mix(in\x20srgb,\x20var(--okdb-success)\x207%,\x20transparent)\x27)\x20+\x20\x27;\x20border-bottom-color:transparent;\x27)\x20:\x20(violationCount\x20>\x200\x20?\x20\x27border-color:transparent;\x20background:transparent;\x20color:var(--okdb-danger);\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27)\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Schema<if\x20:=\x22violationCount\x20>\x200\x22><span\x20style=\x22margin-left:6px;\x20font-size:10px;\x20padding:2px\x207px;\x20border-radius:999px;\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2013%,\x20transparent);\x20color:var(--okdb-danger);\x20font-weight:600;\x22>{{\x20violationCount\x20}}</span></if>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22switchToEngines()\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27engines\x27\x20?\x20\x27border-color:var(--okdb-purple);\x20color:var(--okdb-purple);\x20background:color-mix(in\x20srgb,\x20var(--okdb-purple)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Engines<if\x20:=\x22typeEngineCount\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20typeEngineCount\x20}}</span></if>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Data\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27data\x27\x22>\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:16px;\x20flex:1;\x20min-height:0;\x22>\x0a\x0a\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;\x20gap:16px;\x22>\x0a\x0a\x20\x20\x20\x20<!--\x20──\x20Left\x20column:\x20query\x20controls\x20──\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22flex:1;\x20display:flex;\x20flex-direction:column;\x20gap:10px;\x20min-width:0;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Row\x201:\x20filter\x20label\x20+\x20accordion\x20+\x20JSON\x20input\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Label\x20row\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20color:#6a8a9a;\x20user-select:none;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20searchMode\x20===\x20\x27vector\x27\x20?\x20\x27Post-filter\x20vector\x20results\x20with\x20sift\x27\x20:\x20searchMode\x20===\x20\x27fts\x27\x20?\x20\x27Post-filter\x20FTS\x20results\x20with\x20sift\x27\x20:\x20searchMode\x20===\x20\x27geo\x27\x20?\x20\x27Post-filter\x20geo\x20results\x20with\x20sift\x27\x20:\x20\x27Filter\x20with\x20sift\x20query\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22help-toggle\x22\x20@click=\x22helpOpen\x20=\x20!helpOpen\x22\x20:class=\x22helpOpen\x20?\x20\x27help-toggle--open\x27\x20:\x20\x27\x27\x22>i</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Accordion:\x20query\x20reference\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22helpOpen\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22help-accordion\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{}</code><span>match\x20all\x20records</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22field\x22:\x20\x22value\x22}</code><span>exact\x20match</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22n\x22:\x20{\x22$gt\x22:\x205,\x20\x22$lt\x22:\x2050}}</code><span>numeric\x20comparison</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22x\x22:\x20{\x22$in\x22:\x20[\x22a\x22,\x22b\x22]}}</code><span>set\x20membership</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22x\x22:\x20{\x22$exists\x22:\x20true}}</code><span>field\x20presence</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x20ht-row--note\x22>Nested\x20fields\x20use\x20dot\x20notation:\x20<code>\x22a.b\x22</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.query\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22query.query\x20=\x20$event.detail\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:schema=\x22siftSchema\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:220px;\x20min-height:60px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</ok-json-input>\x0a\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Mode\x20bar:\x20Scan\x20/\x20Index\x20/\x20FTS\x20/\x20Vector\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:4px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22\x20style=\x22flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27scan\x27\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27scan\x27)\x22>Scan</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27index\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27index\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Index<if\x20:=\x22possibleIndexes.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20possibleIndexes.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27fts\x27\x20\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27fts\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FTS<if\x20:=\x22ftsList.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20ftsList.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27vector\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27vector\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Vector<if\x20:=\x22vectorEngines.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20vectorEngines.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27geo\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27geo\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Geo<if\x20:=\x22geoIndexes.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20geoIndexes.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Scan\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27scan\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.selectedDirection\x20=\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27asc\x27\x20:\x20\x27desc\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20key\x20scan\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27↓\x20Desc\x27\x20:\x20\x27↑\x20Asc\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x20user-select:none;\x22>Full\x20key-ordered\x20scan\x20·\x20sift\x20applied\x20as\x20filter</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Index\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27index\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectIndex($event.target.value)\x22\x20style=\x22min-width:160px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22possibleIndexes\x22\x20let:item=\x22idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22idx\x22\x20:selected=\x22query.selectedIndex\x20===\x20idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20idx\x20}}{{\x20indexStatuses[idx]?.unique\x20?\x20\x27\x20◆\x27\x20:\x20\x27\x27\x20}}{{\x20indexStatusBadge(idx)\x20?\x20\x27\x20⚠\x20\x27\x20+\x20indexStatusBadge(idx)\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create_index__\x22\x20style=\x22color:var(--okdb-accent);\x22>+\x20Create\x20index…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__remove_index__\x22\x20style=\x22color:var(--okdb-danger);\x22>×\x20Remove\x20\x22{{\x20query.selectedIndex\x20}}\x22</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.selectedDirection\x20=\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27asc\x27\x20:\x20\x27desc\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20sort\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27↓\x20Desc\x27\x20:\x20\x27↑\x20Asc\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22query.queryMode\x20===\x20\x27prefix\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.queryMode\x20=\x20\x27prefix\x27,\x20query.selectedIndexStart\x20=\x20undefined,\x20query.selectedIndexEnd\x20=\x20undefined\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Prefix\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22query.queryMode\x20===\x20\x27range\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.queryMode\x20=\x20\x27range\x27,\x20query.selectedPrefix\x20=\x20undefined\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Range\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Index\x20detail\x20strip\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x20&&\x20selectedIndexInfo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22idx-info-strip\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-label\x22>Fields:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22selectedIndexInfo.fields\x22\x20let:item=\x22f\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22idx-info-field\x22>{{\x20f\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedIndexInfo.isUnique\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--unique\x22>◆\x20unique</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedIndexInfo.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--geo\x22>◎\x20geo\x20·\x20precision\x20{{\x20selectedIndexInfo.geoPrecision\x20??\x207\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!selectedIndexInfo.isUnique\x20&&\x20!selectedIndexInfo.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--regular\x22>regular</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.queryMode\x20===\x20\x27prefix\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>Prefix:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedPrefix\x22\x20@change=\x22query.selectedPrefix\x20=\x20$event.detail\x22\x20style=\x22width:220px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.35;\x20font-size:11px;\x22>scalar\x20or\x20array\x20for\x20composite\x20indexes</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.queryMode\x20===\x20\x27range\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>Start:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedIndexStart\x22\x20@change=\x22query.selectedIndexStart\x20=\x20$event.detail\x22\x20style=\x22width:180px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>End:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedIndexEnd\x22\x20@change=\x22query.selectedIndexEnd\x20=\x20$event.detail\x22\x20style=\x22width:180px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20FTS\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27fts\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectFtsIndex($event.target.value,\x20$event)\x22\x20style=\x22min-width:160px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ftsList\x22\x20let:item=\x22fts\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22fts.name\x22\x20:selected=\x22query.selectedFtsIndex\x20===\x20fts.name\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20fts.name\x20}}{{\x20ftsStatusBadge(fts)\x20?\x20\x27\x20⚠\x20\x27\x20+\x20ftsStatusBadge(fts)\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create_fts__\x22\x20style=\x22color:var(--okdb-accent);\x22>+\x20Create\x20FTS\x20index…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__drop_fts__\x22\x20style=\x22color:var(--okdb-danger);\x22>×\x20Drop\x20\x22{{\x20query.selectedFtsIndex\x20}}\x22</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Search…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.ftsText\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22query.ftsText\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:140px;\x20max-width:300px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22\x20title=\x22AND:\x20all\x20terms\x20required\x20·\x20OR:\x20any\x20term\x20matches,\x20ranked\x20by\x20hit\x20count\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22query.ftsMode\x20===\x20\x27and\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22query.ftsMode\x20=\x20\x27and\x27\x22>AND</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22query.ftsMode\x20===\x20\x27or\x27\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22query.ftsMode\x20=\x20\x27or\x27\x22>OR</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:12px;\x20display:flex;\x20align-items:center;\x20gap:4px;\x20cursor:pointer;\x20white-space:nowrap;\x20user-select:none;\x22\x20title=\x22Prefix:\x20\x27sta\x27\x20matches\x20\x27start\x27,\x20\x27stack\x27,\x20etc.\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22query.ftsPrefix\x22\x20@change=\x22query.ftsPrefix\x20=\x20$event.target.checked\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Prefix\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Vector\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27vector\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEngines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.7;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22cpu\x22\x20style=\x22width:13px;height:13px;opacity:.5;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>No\x20vector\x20search\x20engines\x20for\x20<b>{{\x20type\x20}}</b>\x20yet.</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesCreatePipeline()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20Create\x20Pipeline…</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEngines.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectVectorEngine($event.target.value,\x20$event)\x22\x20style=\x22min-width:160px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22vectorEngines\x22\x20let:item=\x22ve\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22displayVectorName(ve.name)\x22\x20:selected=\x22query.selectedVectorEngine\x20===\x20displayVectorName(ve.name)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20displayVectorName(ve.name)\x20}}{{\x20ve.isRunning\x20?\x20\x27\x27\x20:\x20\x27\x20(stopped)\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create_pipeline__\x22\x20style=\x22color:var(--okdb-indigo);\x22>+\x20Create\x20pipeline…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Semantic\x20query…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.vectorText\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.500=\x22query.vectorText\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:160px;\x20max-width:340px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.55;\x20white-space:nowrap;\x20user-select:none;\x22>top</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.vectorLimit\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22query.vectorLimit\x20=\x20Math.max(1,\x20Math.min(200,\x20Number($event.target.value)\x20||\x2020))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20min=\x221\x22\x20max=\x22200\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:56px;\x20text-align:center;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Max\x20results\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Pipeline\x20badge\x20—\x20clickable,\x20navigates\x20to\x20local\x20Engines\x20tab\x20in\x20pipeline\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedVectorEngineMeta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedVectorEngineMeta.meta\x20&&\x20selectedVectorEngineMeta.meta.pipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesPipeline(selectedVectorEngineMeta.meta.pipeline)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x209px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x20white-space:nowrap;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22\x27Open\x20the\x20type\x20pipeline\x20view\x20focused\x20on:\x20\x27\x20+\x20selectedVectorEngineMeta.meta.pipeline\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20{{\x20selectedVectorEngineMeta.meta.pipeline\x20}}\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Link\x20to\x20local\x20type\x20engines\x20workspace\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openTypePipelinesForSelectedVector()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x209px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2020%,\x20transparent);\x20color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2060%,\x20transparent);\x20background:transparent;\x20cursor:pointer;\x20white-space:nowrap;\x20margin-left:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20the\x20type-scoped\x20engines\x20view\x20for\x20this\x20vector\x20search\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20Type\x20Engines\x20→</button>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Geo\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22geoIndexes.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.7;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>◎</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>No\x20geo\x20indexes\x20for\x20<b>{{\x20type\x20}}</b>\x20yet.\x20Create\x20one\x20from\x20the\x20Manage\x20tab.</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22geoIndexes.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22geoField\x20=\x20$event.target.value\x22\x20style=\x22min-width:140px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22geoIndexes\x22\x20let:item=\x22gf\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22gf\x22\x20:selected=\x22geoField\x20===\x20gf\x22>{{\x20gf\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.5;\x22>Lat</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x2240.7484\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoLat\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoLat\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.5;\x22>Lon</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x22-73.9856\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoLon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoLon\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.5;\x22>Radius\x20(m)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x22∞\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoRadius\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoRadius\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:90px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Leave\x20empty\x20for\x20unlimited\x20radius\x20(sorted\x20by\x20distance)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22geoSortAsc\x20=\x20!geoSortAsc\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20sort\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20geoSortAsc\x20?\x20\x27↑\x20Nearest\x27\x20:\x20\x27↓\x20Farthest\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.35;\x20user-select:none;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Results\x20sorted\x20by\x20distance\x20·\x20sift\x20filter\x20applied\x20as\x20post-filter\x20·\x20leave\x20radius\x20empty\x20for\x20no\x20cutoff\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20──\x20Geo\x20view\x20toggle\x20(only\x20in\x20geo\x20mode)\x20──\x20-->\x0a\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20geoIndexes.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:4px;\x20flex-shrink:0;\x20padding:2px\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22\x20style=\x22flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27table\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27table\x27\x22\x20title=\x22Table\x20only\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22table-2\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27map\x27\x20\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27map\x27\x22\x20\x20\x20title=\x22Map\x20only\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22map-pin\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27split\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27split\x27\x22\x20title=\x22Table\x20+\x20Map\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22columns\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20opacity:.3;\x20user-select:none;\x22>view</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Results\x20area\x20──\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20position:relative;\x20flex:1;\x20min-height:0;\x22>\x0a\x20\x20\x20\x20<if\x20:=\x22query.busy\x22>\x0a\x20\x20\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20Results\x20bar:\x20timing\x20+\x20Add\x20item\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22margin-bottom:8px;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.time\x20!=\x20null\x20?\x20query.time\x20+\x20\x27ms\x27\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20<b\x20style=\x22opacity:.7;\x22>{{\x20type\x20}}</b>\x0a\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openAddModal\x22\x20class=\x22btn-primary\x20btn-icon\x22\x20style=\x22font-size:12px;\x20padding:3px\x2012px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Add\x20item\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Content\x20row\x20—\x20table\x20+\x20map\x20as\x20siblings,\x20shown/hidden\x20via\x20display:none\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex:1;\x20min-height:0;\x20gap:10px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20TABLE\x20col\x20—\x20hidden\x20only\x20in\x20pure\x20map\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20geoViewMode\x20===\x20\x27map\x27\x20?\x20\x27display:none\x27\x20:\x20\x27flex:1;\x20min-width:0;\x20display:flex;\x20flex-direction:column;\x20min-height:0;\x27\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22hasDirectValueRows\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-table\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ref=\x22table\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:data=\x22displayRows\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20select=\x22single\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20no-scroll\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x20overflow:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select-change=\x22onGeoTableSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<columns>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22min-content\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__header\x22>key</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-accent);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>score</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-indigo);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>sim</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-success);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>dist</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__cell\x22>{{\x20keyOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22directValueKindOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27direct-value-badge\x20direct-value-badge--\x27\x20+\x20directValueKindOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20directValueKindOf(row)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22fts-score-badge\x22>{{\x20matchOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vec-score-badge\x22>{{\x20vectorScoreOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-orange);\x20opacity:.8;\x20margin-left:4px;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20chunk\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20distanceOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22geo-dist-badge\x22>{{\x20distanceOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>value</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20:title=\x22prettyValueOf(row)\x22\x20style=\x22display:block;\x20white-space:pre-wrap;\x20word-break:break-word;\x20font-size:12px;\x22>{{\x20inlineValueOf(row)\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</columns>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<expanded\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Chunk\x20info\x20panel\x20—\x20shown\x20only\x20in\x20vector\x20mode\x20for\x20chunked\x20pipeline\x20results\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x20&&\x20vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:8px\x2010px\x200;\x20display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row).text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:140px;\x20overflow:auto;\x20white-space:pre-wrap;\x20word-break:break-word;\x20line-height:1.5;\x22>{{\x20vectorChunkMetaOf(row).text\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!vectorChunkMetaOf(row).text\x20&&\x20vectorChunkMetaOf(row).start\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.55;\x20margin-left:4px;\x22>(highlighted\x20in\x20document\x20below)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22height:1px;\x20background:var(--okdb-app-border);\x20margin:2px\x200;\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<edit-row\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:row=\x22rowValueOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:key=\x22keyOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@remove=\x22onRemoveRow(keyOf(row))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onRowChanged($event)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</edit-row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</expanded>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</ok-table>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!hasDirectValueRows\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-table\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ref=\x22table\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:data=\x22displayRows\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20select=\x22single\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20no-scroll\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x20overflow:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select-change=\x22onGeoTableSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<columns>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22min-content\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__header\x22>key</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-accent);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>score</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-indigo);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>sim</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-success);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>dist</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__cell\x22>{{\x20keyOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22fts-score-badge\x22>{{\x20matchOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vec-score-badge\x22>{{\x20vectorScoreOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-orange);\x20opacity:.8;\x20margin-left:4px;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20chunk\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20distanceOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22geo-dist-badge\x22>{{\x20distanceOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<auto\x20max=\x2210\x22\x20:show-more-content=\x22(n)\x20=>\x20\x27+\x27\x20+\x20n\x20+\x20\x27\x20cols\x27\x22\x20show-more-title=\x22Click\x20to\x20show\x20all\x20columns\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row\x20let:value>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22[typeof\x20value,\x20value\x20===\x20null\x20?\x20\x27null\x27\x20:\x20\x27\x27]\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20value\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</auto>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</columns>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<expanded\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Chunk\x20info\x20panel\x20—\x20shown\x20only\x20in\x20vector\x20mode\x20for\x20chunked\x20pipeline\x20results\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x20&&\x20vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:8px\x2010px\x200;\x20display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row).text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:140px;\x20overflow:auto;\x20white-space:pre-wrap;\x20word-break:break-word;\x20line-height:1.5;\x22>{{\x20vectorChunkMetaOf(row).text\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!vectorChunkMetaOf(row).text\x20&&\x20vectorChunkMetaOf(row).start\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.55;\x20margin-left:4px;\x22>(highlighted\x20in\x20document\x20below)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22height:1px;\x20background:var(--okdb-app-border);\x20margin:2px\x200;\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<edit-row\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:row=\x22rowValueOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:key=\x22keyOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@remove=\x22onRemoveRow(keyOf(row))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onRowChanged($event)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</edit-row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</expanded>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</ok-table>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ok-pager\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22query.prevPage()\x22\x20:disabled=\x22!query.hasPrev\x20||\x20query.busy\x22>‹\x20Prev</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20query.total\x20}}\x20result{{\x20query.total\x20===\x201\x20?\x20\x27\x27\x20:\x20\x27s\x27\x20}}\x20·\x20{{\x20query.pageSize\x20}}/page</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22query.nextPage()\x22\x20:disabled=\x22!query.hasNext\x20||\x20query.busy\x22>Next\x20›</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20<!--\x20MAP\x20col\x20—\x20always\x20mounted,\x20shown\x20only\x20in\x20geo\x20map/split\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:0;\x20min-height:0;\x20border-radius:8px;\x20overflow:hidden;\x20border:1px\x20solid\x20#23292e;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22{\x20\x27display\x27:\x20(geoViewMode\x20===\x20\x27map\x27\x20||\x20geoViewMode\x20===\x20\x27split\x27)?\x20\x27block\x27\x20:\x20\x27none\x27\x20}\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<geo-map\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:points=\x22geoMapPoints\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:origin-lat=\x22geoLat\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:origin-lon=\x22geoLon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:radius=\x22geoRadius\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:highlight-key=\x22geoHighlightedKey\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@move=\x22geoLat\x20=\x20String($event.detail.lat.toFixed(6)),\x20geoLon\x20=\x20String($event.detail.lon.toFixed(6))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select=\x22onGeoMapSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:100%;\x20height:100%;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x0a</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Changelog\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27changelog\x27\x22>\x0a\x20\x20\x20\x20<type-changelog\x20:type=\x22type\x22\x20style=\x22flex:1;\x20min-height:0;\x22\x20/>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Manage\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27manage\x27\x22>\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:12px;\x20flex:1;\x20overflow:auto;\x20padding-right:4px;\x22>\x0a\x0a\x20\x20\x20\x20<!--\x20Overview\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;\x20gap:24px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:15px;\x20font-weight:600;\x22>{{\x20type\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20margin-top:2px;\x22>type</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:22px;\x20font-weight:600;\x20color:var(--okdb-accent);\x22>{{\x20typeCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20margin-top:2px;\x22>records</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Fields\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeFieldEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20fields\x20tracked\x20yet\x20—\x20add\x20items\x20or\x20use\x20Recompute.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeFieldEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--2\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Field</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Observed\x20types</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22typeFieldEntries\x22\x20let:item=\x22tf\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20tf.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20tf.types.join(\x27,\x20\x27)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Secondary\x20Indexes\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Secondary\x20Indexes</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openCreateIndex()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Create\x20index\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20indexes\x20yet.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Kind</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Ownership</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22indexEntries\x22\x20let:item=\x22ix\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:4px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ix.fields\x22\x20let:item=\x22f\x22\x20let:index=\x22fi\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20style=\x22font-size:12px;\x20color:var(--okdb-json-key);\x22>{{\x20f\x20}}</code><span\x20style=\x22opacity:.3;\x20font-size:11px;\x20margin-left:0;\x22\x20:style=\x22fi\x20<\x20ix.fields.length\x20-\x201\x20?\x20\x27\x27\x20:\x20\x27display:none\x27\x22>·</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ix.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--geo\x22>◎\x20geo</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20opacity:.45;\x20white-space:nowrap;\x22>precision\x20{{\x20ix.geoPrecision\x20??\x207\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ix.isUnique\x20&&\x20!ix.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--unique\x22>◆\x20unique</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!ix.isGeo\x20&&\x20!ix.isUnique\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--regular\x22>regular</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:3px;\x20flex-direction:column;\x20align-items:flex-start;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ix.createdBy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-owned-badge\x22>{{\x20ix.createdBy.kind\x20}}:{{\x20ix.createdBy.name\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ix.usedBy\x22\x20let:item=\x22consumer\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-consumer-badge\x22>{{\x20consumer\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20ix.status\x22>{{\x20ix.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22rebuildIndex(ix.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20opacity:.7;\x22\x20title=\x22Rebuild\x20this\x20index\x20from\x20all\x20current\x20records\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Rebuild\x20this\x20index\x20from\x20all\x20current\x20records\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Rebuild\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeIndex(ix.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20opacity:.8;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x20||\x20ix.usedBy.length\x20>\x200\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22ix.usedBy.length\x20>\x200\x20?\x20\x27Used\x20by:\x20\x27\x20+\x20ix.usedBy.join(\x27,\x20\x27)\x20:\x20($ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Remove\x20this\x20index\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27))\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Remove\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20FTS\x20Indexes\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>FTS\x20Indexes</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openCreateFtsModal()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Create\x20FTS\x20index\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ftsEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20FTS\x20indexes\x20yet.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ftsEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--fts\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Name</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Size</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ftsEntries\x22\x20let:item=\x22fe\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20fe.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20fe.fields\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20fe.status\x22>{{\x20fe.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22\x20style=\x22font-size:11px;\x20font-family:monospace;\x22>{{\x20fmtBytes(fe.sizeBytes)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22rebuildFts(fe.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20opacity:.7;\x22\x20title=\x22Rebuild\x20this\x20FTS\x20index\x20from\x20all\x20current\x20records\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Rebuild\x20this\x20FTS\x20index\x20from\x20all\x20current\x20records\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Rebuild\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22dropFtsIndex(fe.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20opacity:.8;\x22\x20title=\x22Drop\x20this\x20FTS\x20index\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Drop\x20this\x20FTS\x20index\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Drop\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Vector\x20Search\x20Engines\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Vector\x20Search\x20Engines</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesWorkspace()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20color:var(--okdb-indigo);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2027%,\x20transparent);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20the\x20type-scoped\x20engines\x20view\x20for\x20this\x20type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20⛓\x20Type\x20Engines\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20No\x20vector\x20search\x20engines\x20for\x20this\x20type\x20yet.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesCreatePipeline()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22margin-left:6px;\x20font-size:11px;\x20padding:1px\x208px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2027%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x205%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>Create\x20Pipeline…</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--vec\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Engine</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Pipeline</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22vectorEntries\x22\x20let:item=\x22ve\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20ve.displayName\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20(ve.running\x20?\x20\x27ready\x27\x20:\x20\x27creating\x27)\x22>{{\x20ve.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20ve.pipeline\x20??\x20\x27—\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesPipeline(ve.pipeline)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-indigo);\x20opacity:.85;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20this\x20type-scoped\x20pipeline\x20view\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20⛓\x20View\x20local\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20TTL\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Time-to-Live\x20(TTL)</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22(loadTTLStats(),\x20loadDefaultTTL())\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20opacity:.6;\x22\x20:disabled=\x22ttlStatsLoading\x22\x20title=\x22Refresh\x20TTL\x20stats\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20↻\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Default\x20TTL\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-bottom:12px;\x20padding:10px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20font-weight:600;\x20opacity:.7;\x20margin-bottom:8px;\x22>Default\x20TTL\x20for\x20new\x20items</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20color:var(--okdb-success);\x20margin-bottom:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Currently:\x20<span\x20style=\x22font-family:monospace;\x20font-weight:600;\x22>{{\x20fmtDuration(defaultTTL)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.4;\x20font-size:11px;\x22>\x20({{\x20defaultTTL\x20}}ms)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.4;\x20margin-bottom:8px;\x22>No\x20default\x20—\x20items\x20don\x27t\x20expire\x20unless\x20TTL\x20is\x20set\x20explicitly.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onDefaultTTLPresetChange($event.target.value)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x206px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:4px;\x20color:var(--okdb-app-fg);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>Custom…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2260000\x22>1\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22300000\x22>5\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22900000\x22>15\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x223600000\x22>1\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2221600000\x22>6\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2286400000\x22>24\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22604800000\x22>7\x20days</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x222592000000\x22>30\x20days</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20!value=\x22defaultTTLInput\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22(defaultTTLInput\x20=\x20$el.value,\x20defaultTTLPreset\x20=\x20\x27\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22ms\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\x20font-size:11px;\x20padding:2px\x206px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:4px;\x20color:var(--okdb-app-fg);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDefaultTTLAction()\x22\x20:disabled=\x22defaultTTLBusy\x20||\x20!defaultTTLInput\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent);\x22>Set</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22clearDefaultTTLAction()\x22\x20:disabled=\x22defaultTTLBusy\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x22>Clear</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20TTL\x20stats\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!ttlStats\x20||\x20!ttlStats.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20TTL\x20entries\x20for\x20this\x20type\x20—\x20TTL\x20sub-databases\x20are\x20created\x20lazily\x20on\x20first\x20use.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ttlStats\x20&&\x20ttlStats.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:24px;\x20align-items:center;\x20margin-bottom:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:18px;\x20font-weight:600;\x20color:var(--okdb-success);\x22>{{\x20ttlStats.totalEntries\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>entries</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20:style=\x22\x27font-size:18px;\x20font-weight:600;\x20color:\x27\x20+\x20(ttlStats.expiredEntries\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-app-fg-muted)\x27)\x20+\x20\x27;\x27\x22>{{\x20ttlStats.expiredEntries\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>expired</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20font-family:monospace;\x20color:var(--okdb-app-fg);\x22>{{\x20ttlStats.nextExpiry\x20?\x20fmtDuration(ttlStats.nextExpiry\x20-\x20Date.now())\x20:\x20\x27—\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>next\x20expiry</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22triggerSweep()\x22\x20:disabled=\x22ttlSweepBusy\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Sweep\x20expired\x20now\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ttlSweepBusy\x22><span\x20style=\x22font-size:11px;\x20opacity:.5;\x22>Sweeping…</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Danger\x20zone\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20card--danger\x22>\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22\x20style=\x22color:var(--okdb-danger);\x22>⚠\x20Danger\x20Zone</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22recomputeFields\x22\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27data:write\x27)\x20?\x20\x27Rescan\x20all\x20records\x20to\x20rebuild\x20the\x20field\x20schema\x27\x20:\x20$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Recompute\x20fields\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22dropType\x22\x20class=\x22btn-danger\x20btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Drop\x20type\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Schema\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27schema\x27\x22>\x0a\x20\x20\x20\x20<type-schema-tab\x0a\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20:on-view-key=\x22(key)\x20=>\x20setTab(\x27data\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:on-schema-changed=\x22()\x20=>\x20loadViolations()\x22\x0a\x20\x20\x20\x20\x20\x20:on-violation-count-changed=\x22(count)\x20=>\x20onViolationCountChanged(count)\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27engines\x27\x22>\x0a\x20\x20\x20\x20<type-pipelines-tab\x20:type=\x22type\x22\x20:focusedpipeline=\x22currentRoutePipeline\x22\x20:currentmode=\x22currentRouteMode\x22\x20style=\x22flex:1;\x20min-height:0;\x22\x20/>\x0a\x20\x20</if>\x0a\x0a</div>','currentRoutePipeline','replace','score','index','pageSize','loadViolations','split','ftsMode','engine:started','Sweep\x20done:\x20','Failed\x20to\x20set\x20default\x20TTL','push','search','3KPMDuz','$attr','selectedDirection','Recompute\x20failed','unique','usedBy','apiBase','value','null','Rebuilding\x20FTS\x20index\x20\x22','vectorEngines','dropFtsIndex','length','/indexes','/index/','then','total','Create\x20FTS\x20Index','ttlStats','459529bhOlVb','ok-table','success','engine:installed','loadIndexes','deselect','schema','Sweep\x20failed','sizeBytes','selectedIndexStart','typeEngineCount','geoRadius','select','/fts','statusText','/violations/','floor','Add\x20item','engine:error','load','createdBy','clearExpanded','action','selectedEnv','array','geoHighlightedKey','flatMap','Remove\x20index\x20\x22','Rebuild\x20index\x20error','Rebuild\x20failed','Remove\x20failed','$el','ttlStatsLoading','Rebuild\x20FTS\x20error','selectedVectorEngineMeta','/query','\x22?\x20This\x20will\x20re-scan\x20all\x20records.','precision','stores','scalar','startsWith','stringify','engine:uninstalled','open','Create\x20Pipeline\x20·\x20','geoIndexes','view','source_env','entries','DELETE','index:registered','fulfilled','5066964omJizp','/ttl/default','_search','busy','trim','title','shared','geo','isArray','kind','allSettled','loadDefaultTTL','Rebuild\x20FTS\x20index\x20\x22','config','3450MZPAbA','info','possibleIndexes','loadFtsIndexes','json','geoViewMode','__create_pipeline__','/type/','filter','openCreatePipelineModal','expand','resetPaging','radius','Default\x20TTL\x20set\x20(','reverse','__create_index__','envApiBase','confirm','type','3064678qHdmOg','Remove\x20index\x20error','map','/reset','_geoSelSource','engine:stopped','find','mode','type-viewer','index:ready','index:drop','includes','defineProperty','7860944wljGty','pipeline','error','data','keyOf','selectedPrefix','ftsText','openCreateFtsModal','API','ready','selectedIndex','3376rKYjSL','Error\x20fetching\x20indexes','__remove_index__','INDEX_HAS_CONSUMERS','$watch','Drop\x20type\x20\x22','/env/','add','loadGeoQuery','items','slice','fmtDuration','query','changelog','join','toast','/ttl/sweep','stopped','create','/recompute-fields','<add-item-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:on-done=\x22onDone\x22\x20/>','Item\x20updated','keys','source_type','manage','selectedVectorEngine','pipelines','findIndex','message','all','geoLat','1403994XGzKPA','lon','geoDistanceMap','hasPrev','POST','running','removeIndex','/fts/','openTypePipelines','displayRows','name','fts:registered','overview','values','7805lDFFqi','[tag]{display:flex;flex-direction:column;height:100%;min-width:0;min-height:0}.ok-table__cell__inner>span.object{color:#a6da95}.ok-table__cell__inner>span.number{color:var(--okdb-accent)}.ok-table__cell__inner>span.boolean{color:#ff6c6b}.ok-table__cell__inner>span.null,.ok-table__cell__inner>span.undefined{color:#c792ea}.ok-table__cell__inner>.key__header{font-weight:700;color:var(--okdb-json-key)}.ok-table__cell__inner>.key__cell{color:var(--okdb-json-key)}.fts-score-badge,.mode-count{display:inline-block;border-radius:999px;font-size:10px;vertical-align:middle}.mode-count{margin-left:4px;padding:0\x205px;background:#ffffff18;line-height:1.6}.fts-score-badge{margin-left:5px;padding:1px\x205px;border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent);opacity:.8}.vec-score-badge{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-indigo)\x2033%,transparent);color:var(--okdb-indigo)}.direct-value-badge,.geo-dist-badge,.vec-score-badge{display:inline-block;margin-left:5px;padding:1px\x205px;border-radius:999px;font-size:10px;vertical-align:middle;opacity:.8}.geo-dist-badge{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent);color:var(--okdb-success)}.direct-value-badge{border:1px\x20solid}.direct-value-badge--scalar{border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2033%,transparent);color:var(--okdb-app-fg-muted)}.direct-value-badge--array{border-color:#2dd4bf55;color:#2dd4bf}.direct-value-badge--null{border-color:color-mix(in\x20srgb,var(--okdb-purple)\x2033%,transparent);color:var(--okdb-purple)}.manage-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.manage-section-title{font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.06em;opacity:.5;margin-bottom:0}.manage-grid{display:grid;gap:0}.manage-grid--2{grid-template-columns:1fr\x201fr}.manage-grid--3{grid-template-columns:1fr\x20auto\x20auto}.manage-grid--4{grid-template-columns:1fr\x20auto\x20auto\x20auto}.manage-grid--idx{grid-template-columns:minmax(80px,2fr)\x20minmax(90px,1fr)\x20minmax(80px,1fr)\x20auto\x20auto\x20auto}.idx-consumer-badge,.idx-owned-badge{display:inline-block;padding:1px\x206px;border-radius:3px;font-size:10px;white-space:nowrap}.idx-owned-badge{background:color-mix(in\x20srgb,var(--okdb-accent)\x2012%,transparent);color:var(--okdb-accent);border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-accent)\x2025%,transparent)}.idx-consumer-badge{background:color-mix(in\x20srgb,var(--okdb-sky)\x2012%,transparent);color:var(--okdb-sky);border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-sky)\x2025%,transparent)}.manage-grid--fts{grid-template-columns:minmax(80px,1fr)\x202fr\x20minmax(60px,auto)\x20minmax(50px,auto)\x20auto\x20auto}.manage-grid--vec{grid-template-columns:minmax(80px,1fr)\x20minmax(60px,auto)\x20minmax(80px,1fr)\x20auto}.idx-kind-badge{display:inline-block;padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid;white-space:nowrap}.idx-kind-badge--geo{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.idx-kind-badge--unique{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.idx-kind-badge--regular{color:var(--okdb-app-fg-muted);border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2020%,transparent)}.idx-info-strip{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:5px\x208px;background:var(--okdb-app-bg-deep);border:1px\x20solid\x20var(--okdb-app-surface-2);border-radius:4px;font-size:11px}.idx-info-label{opacity:.4;white-space:nowrap}.idx-info-field{font-size:11px;color:var(--okdb-json-key)}.idx-info-badge{padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid;white-space:nowrap}.idx-info-badge--geo{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.idx-info-badge--unique{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.idx-info-badge--regular{color:var(--okdb-app-fg-muted);border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2020%,transparent)}.manage-col-hd{font-size:11px;opacity:.4;padding:0\x2012px\x206px\x200;border-bottom:1px\x20solid\x20var(--okdb-app-border);font-weight:400}.manage-cell{padding:6px\x2012px\x206px\x200;border-bottom:1px\x20solid\x20var(--okdb-app-surface);font-size:13px;display:flex;align-items:center;min-width:0}.manage-cell--dim{opacity:.5;font-size:12px}.manage-status{display:inline-block;padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid}.manage-status--ready{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.manage-status--creating,.manage-status--resetting{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.card--danger{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-danger)\x2013%,transparent)!important}','geoField','Index\x20rebuild\x20complete','indexer','vector-search','key','fields','defaultTTLPreset','63027qfeKVl','fts','/engines','displayVectorName','tab','Index\x20ready:\x20'];_0x5acc=function(){return _0x4193af;};return _0x5acc();}import _0x4cac4e from'../../../components/geo-map.ok.js';import _0x48d424 from'../../../components/ok-json-input.ok.js';import _0x3d17aa from'../../../view-models/type-query-vm.js';import{buildSiftSchema as _0x880d07}from'../../../util/sift-schema.js';import _0x2d1a39 from'../modals/add-item-modal.ok.js';import _0x3879ea from'../modals/create-fts-modal.ok.js';import _0x3e3f49 from'../modals/create-index-modal.ok.js';import _0x43f102 from'../modals/create-pipeline-modal.ok.js';import _0x4bd11c from'./edit-row.ok.js';import _0x12a3df from'../../../stores/events-store.js';import _0x2b9da9 from'./type-changelog.ok.js';import _0xef921d from'./type-pipelines-tab.ok.js';import _0x29c127 from'./type-schema-tab.ok.js';function y(_0x395039){const _0x463f41=_0x392c;return!!_0x395039&&_0x463f41(0x23c)==typeof _0x395039&&!Array[_0x463f41(0x2af)](_0x395039);}function x(_0x29fecf,_0x118a2e){const _0x21ae26=_0x392c;y(_0x29fecf)&&_0x29fecf[_0x21ae26(0x219)]!==_0x118a2e&&Object[_0x21ae26(0x2d4)](_0x29fecf,'__key',{'value':_0x118a2e,'enumerable':!0x1,'configurable':!0x1,'writable':!0x1});}function m(_0x4a2a7e,_0x47a008=0x0){const _0x4cef0f=_0x392c;try{return JSON[_0x4cef0f(0x29c)](_0x4a2a7e,null,_0x47a008)??String(_0x4a2a7e);}catch{return String(_0x4a2a7e);}}export default{'tag':_0x2e63d4(0x2d0),'dependencies':[_0x5f1520,_0x18869b,_0x2acb56,_0x4bd11c,_0x48d424,_0x2b9da9,_0xef921d,_0x29c127,_0x2d1a39,_0x3e3f49,_0x3879ea,_0x43f102,_0x4cac4e],'attr':{'type':{}},'context'(_0x3b4491){const _0x1c76f2=_0x2e63d4;let _0x94be6f=null,_0x223e19=null,_0x18ded9=null;const _0x1546fd=new _0x3d17aa({'type':_0x3b4491[_0x1c76f2(0x261)][_0x1c76f2(0x2c7)],'apiBase':()=>_0x3b4491['$ok'][_0x1c76f2(0x299)][_0x1c76f2(0x238)][_0x1c76f2(0x266)]});return{'tab':'data',get 'envApiBase'(){const _0x28447b=_0x1c76f2;return _0x3b4491[_0x28447b(0x20b)][_0x28447b(0x299)][_0x28447b(0x238)][_0x28447b(0x266)];},get 'type'(){const _0x25748b=_0x1c76f2;return _0x3b4491[_0x25748b(0x261)][_0x25748b(0x2c7)];},'violationCount':0x0,async 'loadViolations'(){const _0x121d18=_0x1c76f2;if(this[_0x121d18(0x2c7)])try{const [_0x5333e1,_0x9d295e]=await Promise[_0x121d18(0x2fd)]([fetch(this['envApiBase']+_0x121d18(0x282)+encodeURIComponent(this[_0x121d18(0x2c7)])),fetch(this[_0x121d18(0x2c5)]+_0x121d18(0x203)+encodeURIComponent(this['type']))]);let _0xc737d5=0x0;if(_0x5333e1['ok']){const _0x110e92=await _0x5333e1['json']();_0xc737d5+=(_0x110e92?.[_0x121d18(0x2d8)]?.['violations']??_0x110e92?.[_0x121d18(0x225)]?.[_0x121d18(0x234)]??[])['length'];}if(_0x9d295e['ok']){const _0x5408d9=await _0x9d295e[_0x121d18(0x2b9)]();_0xc737d5+=(_0x5408d9?.[_0x121d18(0x2d8)]?.[_0x121d18(0x234)]??_0x5408d9?.[_0x121d18(0x225)]?.[_0x121d18(0x234)]??[])[_0x121d18(0x26c)];}this[_0x121d18(0x23e)]=_0xc737d5;}catch{}},'onViolationCountChanged'(_0x3c66d5){const _0x311593=_0x1c76f2;this[_0x311593(0x23e)]=_0x3c66d5;},'query':_0x1546fd,'possibleIndexes':[],'indexStatuses':{},'createIdxPossible':[],'createIdxTypeLoaded':null,'ftsList':[],'vectorEngines':[],'typeEngineCount':0x0,'searchMode':'scan','geoIndexes':[],'geoField':'','geoLat':'','geoLon':'','geoRadius':'','geoSortAsc':!0x0,'geoDistanceMap':{},'mapOpen':!0x1,'geoViewMode':'table','geoHighlightedKey':null,'_geoSelSource':null,get 'geoMapPoints'(){const _0x1eb6fa=_0x1c76f2,_0x1b0b38=this[_0x1eb6fa(0x1f0)];return _0x1b0b38?(this['query'][_0x1eb6fa(0x2e9)]||[])['map'](_0x2fb45b=>{const _0x5ee571=_0x1eb6fa,_0xbab445=_0x2fb45b[_0x5ee571(0x267)]||{},_0x49a282=((_0x4f1f34,_0x3b2676)=>{let _0x3b2188=_0x4f1f34;for(const _0x375005 of _0x3b2676['split']('.')){if(null==_0x3b2188)return null;_0x3b2188=_0x3b2188[_0x375005];}return _0x3b2188;})(_0xbab445,_0x1b0b38);return{'key':_0x2fb45b[_0x5ee571(0x1f4)],'title':_0xbab445[_0x5ee571(0x309)]||_0xbab445[_0x5ee571(0x2ac)]||_0xbab445['label']||_0x2fb45b[_0x5ee571(0x1f4)],'lat':_0x49a282?.[_0x5ee571(0x24f)],'lon':_0x49a282?.[_0x5ee571(0x300)],'distance':_0x2fb45b[_0x5ee571(0x20e)]};})[_0x1eb6fa(0x2bd)](_0x589fe1=>null!=_0x589fe1[_0x1eb6fa(0x24f)]&&null!=_0x589fe1[_0x1eb6fa(0x300)]):[];},'setTab'(_0x268441){const _0x46aa40=_0x1c76f2;if(this[_0x46aa40(0x1fb)]=_0x268441,'engines'===_0x268441)return;const _0x4892fa=_0x3b4491[_0x46aa40(0x243)][_0x46aa40(0x1ff)];if(!_0x4892fa?.[_0x46aa40(0x2a9)]?.['tab'])return;const _0x583092={..._0x4892fa['_search']};delete _0x583092['tab'],delete _0x583092[_0x46aa40(0x2cf)],delete _0x583092[_0x46aa40(0x2d6)],_0x4892fa[_0x46aa40(0x254)](_0x4892fa[_0x46aa40(0x21c)](_0x4892fa[_0x46aa40(0x1fe)]||'',_0x583092,_0x4892fa['_anchor']||''));},'switchToPipelines'(){const _0xc06d50=_0x1c76f2;this[_0xc06d50(0x307)]({'mode':_0xc06d50(0x2fa),'pipeline':this[_0xc06d50(0x253)]||null});},get 'currentRoutePipeline'(){const _0x75185f=_0x1c76f2;return String(_0x3b4491[_0x75185f(0x243)]?.[_0x75185f(0x1ff)]?.[_0x75185f(0x2a9)]?.['pipeline']||'');},get 'currentRouteMode'(){const _0x40727b=_0x1c76f2;return _0x40727b(0x2fa)===String(_0x3b4491['$vars']?.[_0x40727b(0x1ff)]?.[_0x40727b(0x2a9)]?.[_0x40727b(0x2cf)]||'')[_0x40727b(0x2ab)]()?_0x40727b(0x2fa):_0x40727b(0x251);},'openTypePipelines'(_0x18a724={}){const _0x355d0d=_0x1c76f2,_0x3aa184=_0x3b4491[_0x355d0d(0x243)]?.['$router'];if(!_0x3aa184?.['resolve']||!_0x3aa184?.[_0x355d0d(0x25e)])return;const _0x6ca8a6=_0x3b4491['$ok'][_0x355d0d(0x299)][_0x355d0d(0x238)][_0x355d0d(0x28a)]||_0x355d0d(0x22d),_0x257cbb={..._0x3aa184[_0x355d0d(0x2a9)]||{},'env':_0x6ca8a6,'type':this[_0x355d0d(0x2c7)],'tab':_0x355d0d(0x251),'mode':_0x355d0d(0x2fa)===_0x18a724[_0x355d0d(0x2cf)]?_0x355d0d(0x2fa):_0x355d0d(0x251)};_0x18a724['pipeline']?_0x257cbb[_0x355d0d(0x2d6)]=_0x18a724['pipeline']:delete _0x257cbb[_0x355d0d(0x2d6)],_0x3aa184[_0x355d0d(0x25e)](_0x3aa184['resolve']('/db',_0x257cbb));},'openEnginesWorkspace'(_0x2a3bbc={}){const _0x343d0f=_0x1c76f2;if(_0x343d0f(0x2f2)===_0x2a3bbc[_0x343d0f(0x2a1)]){const _0x3873d9=_0x3b4491[_0x343d0f(0x243)]?.['$router'];if(!_0x3873d9?.[_0x343d0f(0x21c)]||!_0x3873d9?.[_0x343d0f(0x25e)])return;const _0x48c6d5={'env':_0x3b4491['$ok']['stores']['okdb'][_0x343d0f(0x28a)]||_0x343d0f(0x22d),'view':'create','sourceType':this[_0x343d0f(0x2c7)]};return _0x2a3bbc[_0x343d0f(0x2b0)]&&(_0x48c6d5[_0x343d0f(0x2b0)]=_0x2a3bbc[_0x343d0f(0x2b0)]),void _0x3873d9[_0x343d0f(0x25e)](_0x3873d9[_0x343d0f(0x21c)]('/engines',_0x48c6d5));}this['openTypePipelines']({'mode':_0x2a3bbc[_0x343d0f(0x2cf)]||_0x343d0f(0x251),'pipeline':_0x2a3bbc[_0x343d0f(0x2d6)]||null});},'openTypePipelinesForSelectedVector'(){const _0x5eb7a9=_0x1c76f2,_0x56e4b9=this[_0x5eb7a9(0x295)]?.['meta']?.[_0x5eb7a9(0x2d6)]||null;this[_0x5eb7a9(0x307)]({'mode':_0x5eb7a9(0x2fa),'pipeline':_0x56e4b9});},'openGlobalEnginesWorkspace'(_0x392107={}){const _0x43c31a=_0x1c76f2,_0x35fa76=_0x3b4491['$vars']?.[_0x43c31a(0x1ff)];if(!_0x35fa76?.[_0x43c31a(0x21c)]||!_0x35fa76?.[_0x43c31a(0x25e)])return;const _0x1c70df={'env':_0x3b4491['$ok'][_0x43c31a(0x299)][_0x43c31a(0x238)][_0x43c31a(0x28a)]||_0x43c31a(0x22d),'sourceType':this[_0x43c31a(0x2c7)]};_0x392107[_0x43c31a(0x2a1)]&&_0x43c31a(0x30b)!==_0x392107[_0x43c31a(0x2a1)]||(_0x1c70df[_0x43c31a(0x2cf)]=_0x43c31a(0x2fa)),_0x392107['view']&&'overview'!==_0x392107[_0x43c31a(0x2a1)]&&(_0x1c70df['view']=_0x392107[_0x43c31a(0x2a1)]),_0x392107[_0x43c31a(0x2b0)]&&(_0x1c70df['kind']=_0x392107[_0x43c31a(0x2b0)]),_0x392107[_0x43c31a(0x2d6)]&&(_0x1c70df[_0x43c31a(0x2d6)]=_0x392107[_0x43c31a(0x2d6)]),_0x35fa76[_0x43c31a(0x25e)](_0x35fa76[_0x43c31a(0x21c)]('/engines',_0x1c70df));},async 'openEnginesCreatePipeline'(){const _0x2800a0=_0x1c76f2;this[_0x2800a0(0x2c7)]&&await _0x3b4491[_0x2800a0(0x20b)][_0x2800a0(0x2ad)][_0x2800a0(0x23d)][_0x2800a0(0x29e)]({'owner':_0x3b4491,'title':_0x2800a0(0x29f)+this[_0x2800a0(0x2c7)],'canDrag':!0x0,'content':_0x2800a0(0x23a),'context':_0x3241a9=>({'modal':_0x3241a9,'type':this[_0x2800a0(0x2c7)],'envName':_0x3b4491[_0x2800a0(0x20b)]['stores'][_0x2800a0(0x238)][_0x2800a0(0x28a)]||_0x2800a0(0x22d),'onDone':async()=>{const _0x162673=_0x2800a0;await Promise[_0x162673(0x2fd)]([this['loadVectorEngines'](!0x0),this[_0x162673(0x237)]()]);}})});},'openEnginesPipeline'(_0x4c55fe=null){const _0x51af0b=_0x1c76f2;this[_0x51af0b(0x307)]({'mode':_0x51af0b(0x2fa),'pipeline':_0x4c55fe||null});},'switchToEngines'(){const _0x4ee091=_0x1c76f2;this[_0x4ee091(0x307)]({'mode':_0x4ee091(0x251),'pipeline':this[_0x4ee091(0x253)]||null});},'setSearchMode'(_0x46ed9c){const _0x176fe5=_0x1c76f2;if(this['searchMode']=_0x46ed9c,this['query']['selectedIndex']=null,this[_0x176fe5(0x2ec)]['selectedFtsIndex']=null,this[_0x176fe5(0x2ec)][_0x176fe5(0x2f9)]=null,this[_0x176fe5(0x2ec)]['selectedPrefix']=void 0x0,this[_0x176fe5(0x2ec)]['selectedIndexStart']=void 0x0,this[_0x176fe5(0x2ec)][_0x176fe5(0x217)]=void 0x0,this[_0x176fe5(0x301)]={},this[_0x176fe5(0x28c)]=null,'geo'!==_0x46ed9c){this[_0x176fe5(0x2ba)]=_0x176fe5(0x242);try{_0x3b4491[_0x176fe5(0x292)]?.['querySelector'](_0x176fe5(0x274))?.[_0x176fe5(0x231)]?.();}catch(_0x2f835e){}}},'_updateGeoIndexes'(){const _0x3b3c55=_0x1c76f2;this[_0x3b3c55(0x2a0)]=this[_0x3b3c55(0x2b7)][_0x3b3c55(0x2bd)](_0x19eb33=>this['indexStatuses'][_0x19eb33]?.[_0x3b3c55(0x244)]),this[_0x3b3c55(0x2a0)]['length']&&!this[_0x3b3c55(0x1f0)]&&(this['geoField']=this[_0x3b3c55(0x2a0)][0x0]);},async 'loadGeoQuery'(){const _0x3f3521=_0x1c76f2;if(!this['type']||!this[_0x3f3521(0x1f0)])return;const _0x5e02a8=parseFloat(this[_0x3f3521(0x2fe)]),_0x277545=parseFloat(this[_0x3f3521(0x21f)]);if(isNaN(_0x5e02a8)||isNaN(_0x277545))return;const _0x11febe=this[_0x3f3521(0x27e)]?parseFloat(this['geoRadius']):void 0x0;this['query'][_0x3f3521(0x2aa)]=!0x0,this['geoDistanceMap']={};try{const _0x2be871={...this['query'][_0x3f3521(0x2ec)]},_0x1b4b43={'lat':_0x5e02a8,'lon':_0x277545};_0x11febe&&!isNaN(_0x11febe)&&(_0x1b4b43[_0x3f3521(0x2c1)]=_0x11febe),_0x2be871[this['geoField']]={'$near':_0x1b4b43};const _0x15b347=await fetch(this['envApiBase']+_0x3f3521(0x2bc)+this['type']+_0x3f3521(0x296),{'method':_0x3f3521(0x303),'headers':{'Content-Type':_0x3f3521(0x204)},'body':JSON[_0x3f3521(0x29c)]({'filter':_0x2be871,'options':{'limit':this['query'][_0x3f3521(0x257)]}})});if(!_0x15b347['ok'])throw new Error(_0x15b347['statusText']);const {data:_0x210a24,meta:_0x51f6ac}=await _0x15b347[_0x3f3521(0x2b9)]();let _0x2f54c1=_0x210a24??[];this[_0x3f3521(0x220)]||(_0x2f54c1=_0x2f54c1[_0x3f3521(0x2ea)]()[_0x3f3521(0x2c3)]()),this['query'][_0x3f3521(0x2e9)]=_0x2f54c1;const _0x1e713e={};this[_0x3f3521(0x2ec)][_0x3f3521(0x30c)]=_0x2f54c1[_0x3f3521(0x2ca)](_0x34f80d=>(x(_0x34f80d[_0x3f3521(0x267)],_0x34f80d['key']),null!=_0x34f80d[_0x3f3521(0x20e)]&&(_0x1e713e[_0x34f80d['key']]=_0x34f80d['distance']),_0x34f80d['value'])),this[_0x3f3521(0x301)]=_0x1e713e,this[_0x3f3521(0x2ec)]['hasNext']=!0x1,this[_0x3f3521(0x2ec)][_0x3f3521(0x302)]=!0x1,this[_0x3f3521(0x2ec)]['_current']=null,this[_0x3f3521(0x2ec)]['_backStack']=[],this[_0x3f3521(0x2ec)][_0x3f3521(0x218)]=_0x51f6ac?.[_0x3f3521(0x218)]??null,this['query'][_0x3f3521(0x270)]=_0x2f54c1[_0x3f3521(0x26c)];}catch(_0xbfee42){console[_0x3f3521(0x2d7)](_0x3f3521(0x215),_0xbfee42);}finally{this[_0x3f3521(0x2ec)][_0x3f3521(0x2aa)]=!0x1;}},get 'selectedVectorEngineMeta'(){const _0x1eef6d=_0x1c76f2;return this[_0x1eef6d(0x2ec)][_0x1eef6d(0x2f9)]?this['vectorEngines']['find'](_0x14896a=>this[_0x1eef6d(0x1fa)](_0x14896a[_0x1eef6d(0x309)])===this['query'][_0x1eef6d(0x2f9)])??null:null;},'helpOpen':!0x1,get 'typeFields'(){const _0x1c629f=_0x1c76f2,_0x3a0b91=(_0x3b4491['$ok'][_0x1c629f(0x299)][_0x1c629f(0x238)][_0x1c629f(0x23b)]||[])[_0x1c629f(0x2ce)](_0x25b7b2=>_0x25b7b2[_0x1c629f(0x2c7)]===this[_0x1c629f(0x2c7)]);return _0x3a0b91?.['fields']||{};},get 'typeCount'(){const _0x2fa505=_0x1c76f2,_0xa06048=(_0x3b4491[_0x2fa505(0x20b)][_0x2fa505(0x299)][_0x2fa505(0x238)][_0x2fa505(0x23b)]||[])['find'](_0x5e25cc=>_0x5e25cc[_0x2fa505(0x2c7)]===this[_0x2fa505(0x2c7)]);return _0xa06048?.['count']??'?';},get 'typeFieldEntries'(){const _0x40d15d=_0x1c76f2;return Object[_0x40d15d(0x2a3)](this['typeFields'])[_0x40d15d(0x2ca)](([_0x16e223,_0x1660c3])=>({'name':_0x16e223,'types':_0x1660c3}));},get 'indexEntries'(){const _0x3cb97d=_0x1c76f2;return this[_0x3cb97d(0x2b7)]['map'](_0x8917fb=>({'name':_0x8917fb,'fields':_0x8917fb[_0x3cb97d(0x259)]('~'),'status':this['indexStatuses'][_0x8917fb]?.[_0x3cb97d(0x24a)]||'ready','isGeo':!!this['indexStatuses'][_0x8917fb]?.[_0x3cb97d(0x244)],'geoPrecision':this[_0x3cb97d(0x208)][_0x8917fb]?.[_0x3cb97d(0x244)]?.[_0x3cb97d(0x298)]??null,'isUnique':!!this['indexStatuses'][_0x8917fb]?.['unique'],'createdBy':this['indexStatuses'][_0x8917fb]?.[_0x3cb97d(0x287)]??null,'usedBy':this[_0x3cb97d(0x208)][_0x8917fb]?.['usedBy']??[]}));},get 'selectedIndexInfo'(){const _0x5789c8=_0x1c76f2,_0x4743f5=this[_0x5789c8(0x2ec)][_0x5789c8(0x2df)];if(!_0x4743f5)return null;const _0xaeef98=this[_0x5789c8(0x208)][_0x4743f5];return{'fields':_0x4743f5[_0x5789c8(0x259)]('~'),'isGeo':!!_0xaeef98?.['geoConfig'],'geoPrecision':_0xaeef98?.['geoConfig']?.['precision']??null,'isUnique':!!_0xaeef98?.[_0x5789c8(0x264)]};},get 'ftsEntries'(){const _0x2b380a=_0x1c76f2;return this['ftsList'][_0x2b380a(0x2ca)](_0x3e7084=>({'name':_0x3e7084[_0x2b380a(0x309)],'status':_0x3e7084['status']||'ready','fields':(_0x3e7084['config']&&_0x3e7084['config'][_0x2b380a(0x1f5)]?_0x3e7084[_0x2b380a(0x2b4)][_0x2b380a(0x1f5)]:[])['join'](',\x20'),'sizeBytes':_0x3e7084[_0x2b380a(0x27b)]??null}));},'fmtBytes'(_0x14d702){const _0x1e6b53=_0x1c76f2;if(null==_0x14d702||0x0===_0x14d702)return'—';const _0x5e1d4f=['B','KB','MB','GB'];let _0x4eb23c=_0x14d702,_0x5f536a=0x0;for(;_0x4eb23c>=0x400&&_0x5f536a<_0x5e1d4f[_0x1e6b53(0x26c)]-0x1;)_0x4eb23c/=0x400,_0x5f536a++;return _0x4eb23c[_0x1e6b53(0x230)](0x1)+'\u00a0'+_0x5e1d4f[_0x5f536a];},'ttlStats':null,'ttlStatsLoading':!0x1,'ttlSweepBusy':!0x1,'defaultTTL':null,'defaultTTLInput':'','defaultTTLPreset':'','defaultTTLBusy':!0x1,async 'loadTTLStats'(){const _0xb1b52c=_0x1c76f2;if(this[_0xb1b52c(0x2c7)]){this['ttlStatsLoading']=!0x0;try{const _0x5565fa=await fetch(this[_0xb1b52c(0x2c5)]+'/ttl/stats?type='+encodeURIComponent(this[_0xb1b52c(0x2c7)])),_0x4739c0=await _0x5565fa[_0xb1b52c(0x2b9)]();this['ttlStats']=_0x4739c0[_0xb1b52c(0x2d8)]??_0x4739c0[_0xb1b52c(0x225)]??null;}catch{this[_0xb1b52c(0x272)]=null;}finally{this[_0xb1b52c(0x293)]=!0x1;}}},async 'loadDefaultTTL'(){const _0x4f95ea=_0x1c76f2;if(this[_0x4f95ea(0x2c7)])try{const _0x2f4178=await fetch(this[_0x4f95ea(0x2c5)]+'/type/'+encodeURIComponent(this['type'])+_0x4f95ea(0x2a8)),_0x423152=await _0x2f4178[_0x4f95ea(0x2b9)](),_0x3da2f4=_0x423152[_0x4f95ea(0x2d8)]?.['defaultTTL']??_0x423152[_0x4f95ea(0x225)]?.['defaultTTL']??null;this[_0x4f95ea(0x228)]=_0x3da2f4,this['defaultTTLInput']=_0x3da2f4?String(_0x3da2f4):'',this[_0x4f95ea(0x1f6)]=_0x3da2f4?String(_0x3da2f4):'';}catch{this[_0x4f95ea(0x228)]=null;}},async 'setDefaultTTLAction'(){const _0x5538be=_0x1c76f2,_0x44aa72=parseInt(this['defaultTTLInput']);if(_0x44aa72&&!(_0x44aa72<=0x0)){this['defaultTTLBusy']=!0x0;try{const _0x1d4f87=await fetch(this[_0x5538be(0x2c5)]+_0x5538be(0x2bc)+encodeURIComponent(this[_0x5538be(0x2c7)])+_0x5538be(0x2a8),{'method':'PUT','headers':{'Content-Type':_0x5538be(0x204)},'body':JSON[_0x5538be(0x29c)]({'ttl':_0x44aa72})});if(!_0x1d4f87['ok']){const _0x4ea905=await _0x1d4f87[_0x5538be(0x2b9)]()[_0x5538be(0x21e)](()=>({}));throw new Error(_0x4ea905?.[_0x5538be(0x2d7)]?.[_0x5538be(0x2fc)]||_0x1d4f87[_0x5538be(0x281)]);}this[_0x5538be(0x228)]=_0x44aa72,_0x3b4491[_0x5538be(0x20b)][_0x5538be(0x2ad)]?.[_0x5538be(0x2ef)]?.[_0x5538be(0x2b6)]?.(_0x5538be(0x2c2)+this[_0x5538be(0x2eb)](_0x44aa72)+')');}catch(_0x53031e){_0x3b4491['$ok'][_0x5538be(0x2ad)]?.[_0x5538be(0x2ef)]?.[_0x5538be(0x2d7)]?.(_0x53031e['message']||_0x5538be(0x25d));}finally{this[_0x5538be(0x206)]=!0x1;}}},async 'clearDefaultTTLAction'(){const _0x17e9fb=_0x1c76f2;this[_0x17e9fb(0x206)]=!0x0;try{const _0x4ef85b=await fetch(this[_0x17e9fb(0x2c5)]+_0x17e9fb(0x2bc)+encodeURIComponent(this[_0x17e9fb(0x2c7)])+_0x17e9fb(0x2a8),{'method':_0x17e9fb(0x2a4)});if(!_0x4ef85b['ok'])throw new Error(_0x4ef85b[_0x17e9fb(0x281)]);this[_0x17e9fb(0x228)]=null,this[_0x17e9fb(0x250)]='',this['defaultTTLPreset']='',_0x3b4491[_0x17e9fb(0x20b)][_0x17e9fb(0x2ad)]?.['toast']?.[_0x17e9fb(0x2b6)]?.(_0x17e9fb(0x1fd));}catch(_0x35f47d){_0x3b4491[_0x17e9fb(0x20b)][_0x17e9fb(0x2ad)]?.[_0x17e9fb(0x2ef)]?.['error']?.(_0x35f47d['message']||'Failed\x20to\x20clear\x20default\x20TTL');}finally{this['defaultTTLBusy']=!0x1;}},'onDefaultTTLPresetChange'(_0x39b1fc){const _0x590589=_0x1c76f2;this[_0x590589(0x1f6)]=_0x39b1fc,_0x39b1fc&&(this[_0x590589(0x250)]=_0x39b1fc);},async 'triggerSweep'(){const _0x2bb5fd=_0x1c76f2;this[_0x2bb5fd(0x239)]=!0x0;try{const _0x437a0d=await fetch(this[_0x2bb5fd(0x2c5)]+_0x2bb5fd(0x2f0),{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'batchSize':0x3e8})}),_0x436312=await _0x437a0d[_0x2bb5fd(0x2b9)](),_0xe31f4f=_0x2bb5fd(0x25c)+((_0x436312[_0x2bb5fd(0x2d8)]??_0x436312[_0x2bb5fd(0x225)]??{})['removed']??0x0)+_0x2bb5fd(0x20c);_0x3b4491['$ok'][_0x2bb5fd(0x2ad)]?.[_0x2bb5fd(0x2ef)]?.[_0x2bb5fd(0x2b6)]?.(_0xe31f4f),await this[_0x2bb5fd(0x240)](),await this[_0x2bb5fd(0x2ec)][_0x2bb5fd(0x286)]();}catch(_0x5a3833){_0x3b4491[_0x2bb5fd(0x20b)][_0x2bb5fd(0x2ad)]?.[_0x2bb5fd(0x2ef)]?.[_0x2bb5fd(0x2d7)]?.(_0x5a3833[_0x2bb5fd(0x2fc)]||_0x2bb5fd(0x27a));}finally{this[_0x2bb5fd(0x239)]=!0x1;}},'fmtDuration'(_0x288e06){const _0x261b84=_0x1c76f2;if(null==_0x288e06)return'—';const _0x35ae81=Math[_0x261b84(0x283)](_0x288e06/0x3e8);return _0x35ae81<0x3c?_0x35ae81+'s':_0x35ae81<0xe10?Math['floor'](_0x35ae81/0x3c)+'m\x20'+_0x35ae81%0x3c+'s':_0x35ae81<0x15180?Math[_0x261b84(0x283)](_0x35ae81/0xe10)+'h\x20'+Math[_0x261b84(0x283)](_0x35ae81%0xe10/0x3c)+'m':Math[_0x261b84(0x283)](_0x35ae81/0x15180)+'d\x20'+Math[_0x261b84(0x283)](_0x35ae81%0x15180/0xe10)+'h';},get 'vectorEntries'(){const _0x1ce2f4=_0x1c76f2;return this[_0x1ce2f4(0x26a)][_0x1ce2f4(0x2ca)](_0x252160=>({'name':_0x252160['name'],'displayName':this[_0x1ce2f4(0x1fa)](_0x252160[_0x1ce2f4(0x309)]),'status':_0x252160['isRunning']?_0x1ce2f4(0x304):_0x252160['status']||_0x1ce2f4(0x2f1),'running':_0x252160[_0x1ce2f4(0x235)],'pipeline':_0x252160['meta']&&_0x252160[_0x1ce2f4(0x247)][_0x1ce2f4(0x2d6)]?_0x252160[_0x1ce2f4(0x247)][_0x1ce2f4(0x2d6)]:null}));},get 'siftSchema'(){const _0x1a06b8=_0x1c76f2;return _0x880d07(this[_0x1a06b8(0x222)]);},async 'loadIndexes'(_0x46bff8=!0x1){const _0x560474=_0x1c76f2;if(this[_0x560474(0x2c7)]&&(_0x46bff8||_0x94be6f!==this[_0x560474(0x2c7)]))try{const _0x587d9e=await fetch(this[_0x560474(0x2c5)]+_0x560474(0x2bc)+this[_0x560474(0x2c7)]+_0x560474(0x26d)),_0x3c37f5=await _0x587d9e[_0x560474(0x2b9)](),_0x536087=_0x3c37f5['data']??_0x3c37f5[_0x560474(0x225)]??{};this[_0x560474(0x2b7)]=Object[_0x560474(0x2f6)](_0x536087),this['indexStatuses']=_0x536087,this['_updateGeoIndexes'](),_0x94be6f=this['type'];}catch(_0x41a80f){console[_0x560474(0x2d7)](_0x560474(0x2e1),_0x41a80f);}},async 'loadFtsIndexes'(_0x268a80=!0x1){const _0x1068b2=_0x1c76f2;if(this[_0x1068b2(0x2c7)]&&(_0x268a80||_0x223e19!==this[_0x1068b2(0x2c7)]))try{const _0x42bf64=await fetch(this[_0x1068b2(0x2c5)]+'/type/'+this[_0x1068b2(0x2c7)]+_0x1068b2(0x280)),{data:_0x5667fd}=await _0x42bf64[_0x1068b2(0x2b9)]();this['ftsList']=_0x5667fd||[],_0x223e19=this[_0x1068b2(0x2c7)];}catch(_0x552f68){console[_0x1068b2(0x2d7)](_0x1068b2(0x22e),_0x552f68);}},async 'loadVectorEngines'(_0x207821=!0x1){const _0x431987=_0x1c76f2;if(this[_0x431987(0x2c7)]&&(_0x207821||_0x18ded9!==this['type']))try{const _0x224815=_0x3b4491[_0x431987(0x20b)][_0x431987(0x299)][_0x431987(0x238)][_0x431987(0x28a)]||_0x431987(0x22d),[_0x2c0563,_0x480721]=await Promise[_0x431987(0x2b1)]([fetch(__ENV__['API']+_0x431987(0x2e6)+encodeURIComponent(_0x224815)+_0x431987(0x1f9))[_0x431987(0x26f)](_0x20dbe8=>_0x20dbe8['json']()),fetch(__ENV__[_0x431987(0x2dd)]+'/embeddings/embedders')['then'](_0x134e95=>_0x134e95[_0x431987(0x2b9)]())]),_0x17da5d='fulfilled'===_0x2c0563[_0x431987(0x24a)]?_0x2c0563[_0x431987(0x267)]?.['result']??_0x2c0563[_0x431987(0x267)]?.['data']??[]:[],_0x22d549=[..._0x431987(0x2a6)===_0x480721[_0x431987(0x24a)]?_0x480721[_0x431987(0x267)]?.['data']??[]:[],..._0x17da5d],_0x1d94da={};for(const _0xb1ade2 of _0x22d549)_0x431987(0x1f2)===_0xb1ade2['type']&&_0xb1ade2['config']&&(_0x1d94da[_0xb1ade2['name']]={'source_type':_0xb1ade2[_0x431987(0x2b4)][_0x431987(0x2f7)],'source_env':_0xb1ade2[_0x431987(0x2b4)][_0x431987(0x2a2)]??_0x431987(0x22d)});this[_0x431987(0x26a)]=_0x22d549[_0x431987(0x2bd)](_0x350022=>{const _0x2c1b06=_0x431987;if(_0x2c1b06(0x1f3)!==_0x350022[_0x2c1b06(0x2c7)])return!0x1;const _0xed7af0=_0x350022[_0x2c1b06(0x2b4)]?.[_0x2c1b06(0x2f7)],_0x5b8c48=_0x350022[_0x2c1b06(0x2b4)]?.[_0x2c1b06(0x2a2)]??_0x2c1b06(0x22d);if(_0xed7af0===this[_0x2c1b06(0x2c7)]&&_0x5b8c48===_0x224815)return!0x0;const _0x1e99dd=_0x1d94da[_0x350022['name']];return _0x1e99dd?.[_0x2c1b06(0x2f7)]===this[_0x2c1b06(0x2c7)]&&(_0x1e99dd?.[_0x2c1b06(0x2a2)]??_0x2c1b06(0x22d))===_0x224815;}),_0x18ded9=this[_0x431987(0x2c7)];}catch(_0x43a3be){this['vectorEngines']=[];}},async 'loadTypeEnginesCount'(){const _0x21aae9=_0x1c76f2;if(this[_0x21aae9(0x2c7)])try{const _0x5d4402=_0x3b4491[_0x21aae9(0x20b)]['stores'][_0x21aae9(0x238)][_0x21aae9(0x28a)]||_0x21aae9(0x22d),_0x39631a=await fetch(__ENV__[_0x21aae9(0x2dd)]+_0x21aae9(0x2e6)+encodeURIComponent(_0x5d4402)+_0x21aae9(0x2bc)+encodeURIComponent(this[_0x21aae9(0x2c7)])+'/pipelines'),_0x5b2ebf=await _0x39631a[_0x21aae9(0x2b9)]()[_0x21aae9(0x21e)](()=>({})),_0x516d26=_0x39631a['ok']?_0x5b2ebf?.[_0x21aae9(0x2d8)]??[]:[],_0x3531b3=new Set();for(const _0x5c0297 of _0x516d26[_0x21aae9(0x28d)](_0x331155=>_0x331155?.[_0x21aae9(0x251)]??[])){const _0x21a28c=_0x5c0297?.[_0x21aae9(0x1f4)]??(_0x5c0297?.['type']&&_0x5c0297?.[_0x21aae9(0x309)]?_0x5c0297[_0x21aae9(0x2c7)]+'@'+_0x5c0297[_0x21aae9(0x309)]:_0x5c0297?.[_0x21aae9(0x309)]??null);_0x21a28c&&_0x3531b3[_0x21aae9(0x2e7)](_0x21a28c);}this[_0x21aae9(0x27d)]=_0x3531b3['size'];}catch{this[_0x21aae9(0x27d)]=0x0;}else this[_0x21aae9(0x27d)]=0x0;},async 'recomputeFields'(){const _0x1fd329=_0x1c76f2;if(this['type'])try{await fetch(this[_0x1fd329(0x2c5)]+_0x1fd329(0x2bc)+this[_0x1fd329(0x2c7)]+_0x1fd329(0x2f3),{'method':_0x1fd329(0x303)}),await _0x3b4491['$ok']['stores'][_0x1fd329(0x238)][_0x1fd329(0x214)](),_0x3b4491['$ok'][_0x1fd329(0x2ad)]?.[_0x1fd329(0x2ef)]?.[_0x1fd329(0x275)]?.(_0x1fd329(0x22b));}catch(_0x426b25){console[_0x1fd329(0x2d7)](_0x1fd329(0x24c),_0x426b25),_0x3b4491['$ok'][_0x1fd329(0x2ad)]?.[_0x1fd329(0x2ef)]?.[_0x1fd329(0x2d7)]?.(_0x1fd329(0x263));}},'indexStatusBadge'(_0x327589){const _0x267914=_0x1c76f2,_0xe78478=this[_0x267914(0x208)]?.[_0x327589]?.['status'];return _0xe78478&&_0x267914(0x2de)!==_0xe78478?_0xe78478:null;},'ftsStatusBadge'(_0x369f80){const _0x544074=_0x1c76f2,_0x215da1=_0x369f80?.[_0x544074(0x24a)];return _0x215da1&&_0x544074(0x2de)!==_0x215da1?_0x215da1:null;},'keyOf':_0x521088=>_0x521088?.[_0x1c76f2(0x219)]??_0x521088?.[_0x1c76f2(0x1f4)]??null,get 'hasDirectValueRows'(){const _0x385b8d=_0x1c76f2;return(this[_0x385b8d(0x2ec)][_0x385b8d(0x2e9)]||[])['some'](_0x551e32=>!y(_0x551e32?.[_0x385b8d(0x267)]));},get 'displayRows'(){const _0x204d59=_0x1c76f2;return this[_0x204d59(0x216)]?this[_0x204d59(0x2ec)][_0x204d59(0x2e9)]:this[_0x204d59(0x2ec)][_0x204d59(0x30c)];},'rowValueOf':_0xc752fd=>_0xc752fd&&'object'==typeof _0xc752fd&&_0x1c76f2(0x1f4)in _0xc752fd&&_0x1c76f2(0x267)in _0xc752fd?_0xc752fd[_0x1c76f2(0x267)]:_0xc752fd,'directValueKindOf'(_0x47d09f){const _0xb7a2f=_0x1c76f2,_0x1e5827=this[_0xb7a2f(0x229)](_0x47d09f);return null===_0x1e5827?_0xb7a2f(0x268):Array['isArray'](_0x1e5827)?_0xb7a2f(0x28b):y(_0x1e5827)?null:_0xb7a2f(0x29a);},'inlineValueOf'(_0x4884be){const _0x40bf7b=_0x1c76f2;return m(this[_0x40bf7b(0x229)](_0x4884be));},'prettyValueOf'(_0x1ece79){const _0x2e9ec2=_0x1c76f2;return m(this[_0x2e9ec2(0x229)](_0x1ece79),0x2);},'scoreOf'(_0x31385f){const _0x2aa5b5=_0x1c76f2,_0x4f54ea=this[_0x2aa5b5(0x2d9)](_0x31385f);return _0x4f54ea?this['query']['ftsScoreMap']?.[_0x4f54ea]?.[_0x2aa5b5(0x255)]??null:null;},'matchOf'(_0x4bd317){const _0x330e59=_0x1c76f2,_0x25260a=this[_0x330e59(0x2d9)](_0x4bd317);if(!_0x25260a)return null;const _0x14df12=this[_0x330e59(0x2ec)][_0x330e59(0x224)]?.[_0x25260a];if(!_0x14df12||null==_0x14df12[_0x330e59(0x255)])return null;const _0x7f54af=_0x14df12['maxScore']??0x2*_0x14df12[_0x330e59(0x20a)];return _0x14df12['score']+'/'+_0x7f54af;},'vectorScoreOf'(_0xe01de7){const _0x31f07f=_0x1c76f2,_0x3dbd94=this['keyOf'](_0xe01de7);if(!_0x3dbd94)return null;const _0x1901d0=this[_0x31f07f(0x2ec)]['vectorScoreMap']?.[_0x3dbd94];return null==_0x1901d0?null:Math[_0x31f07f(0x246)](0x64*_0x1901d0)+'%';},'vectorChunkMetaOf'(_0x17e84f){const _0x25ae85=_0x1c76f2,_0x1737fc=this[_0x25ae85(0x2d9)](_0x17e84f);return _0x1737fc?this[_0x25ae85(0x2ec)][_0x25ae85(0x200)]?.[_0x1737fc]??null:null;},'distanceOf'(_0x23a259){const _0x55d04a=_0x1c76f2,_0x34da6a=this[_0x55d04a(0x2d9)](_0x23a259);if(!_0x34da6a)return null;const _0x92f55=this['geoDistanceMap']?.[_0x34da6a];return null==_0x92f55?null:_0x92f55<0x3e8?Math[_0x55d04a(0x246)](_0x92f55)+'\x20m':(_0x92f55/0x3e8)[_0x55d04a(0x230)](0x1)+'\x20km';},'displayVectorName'(_0x1657dc){const _0x5a3df3=_0x1c76f2,_0x104236=(_0x3b4491[_0x5a3df3(0x20b)][_0x5a3df3(0x299)][_0x5a3df3(0x238)][_0x5a3df3(0x28a)]||_0x5a3df3(0x22d))+':';return _0x1657dc[_0x5a3df3(0x29b)](_0x104236)?_0x1657dc[_0x5a3df3(0x2ea)](_0x104236['length']):_0x1657dc;},'selectVectorEngine'(_0x1b200b,_0x5c8e7a){const _0x2ab5ed=_0x1c76f2;if(_0x2ab5ed(0x2bb)===_0x1b200b)return _0x5c8e7a&&(_0x5c8e7a[_0x2ab5ed(0x20d)]['value']=this[_0x2ab5ed(0x2ec)][_0x2ab5ed(0x2f9)]||''),void this[_0x2ab5ed(0x2be)]();this['query'][_0x2ab5ed(0x2f9)]=_0x1b200b||null,this[_0x2ab5ed(0x2ec)][_0x2ab5ed(0x2f9)]&&(this[_0x2ab5ed(0x2ec)]['selectedIndex']=null,this[_0x2ab5ed(0x2ec)]['selectedFtsIndex']=null,this[_0x2ab5ed(0x2ec)][_0x2ab5ed(0x2da)]=void 0x0,this[_0x2ab5ed(0x2ec)][_0x2ab5ed(0x27c)]=void 0x0,this[_0x2ab5ed(0x2ec)][_0x2ab5ed(0x217)]=void 0x0);},'openCreatePipelineModal'(){const _0x5a640=_0x1c76f2;this[_0x5a640(0x22f)]();},'createMenuOpen':!0x1,'onRowChanged'(_0x2fde1b){const _0x487471=_0x1c76f2,_0x15fcca=_0x2fde1b?.[_0x487471(0x213)]??null,_0x3a2860=_0x15fcca?.[_0x487471(0x1f4)]??null;if(null!=_0x3a2860){const _0x2de7ae=this[_0x487471(0x2ec)]['items']['findIndex'](_0x4b6d57=>_0x4b6d57?.[_0x487471(0x1f4)]===_0x3a2860);if(_0x2de7ae>=0x0){const _0x30031e=_0x15fcca?.[_0x487471(0x267)];x(_0x30031e,_0x3a2860),this[_0x487471(0x2ec)][_0x487471(0x2e9)]['splice'](_0x2de7ae,0x1,{...this[_0x487471(0x2ec)][_0x487471(0x2e9)][_0x2de7ae],'value':_0x30031e}),_0x2de7ae<this['query'][_0x487471(0x30c)]['length']&&this[_0x487471(0x2ec)]['values'][_0x487471(0x226)](_0x2de7ae,0x1,_0x30031e);}}_0x3b4491['$ok'][_0x487471(0x2ad)][_0x487471(0x2ef)]['info'](_0x487471(0x2f5)),this[_0x487471(0x258)]();},'onRemoveRow'(_0x4c50ad){const _0x5095bc=_0x1c76f2,_0x316691=this['query']['items'][_0x5095bc(0x2fb)](_0x539f91=>_0x539f91?.[_0x5095bc(0x1f4)]===_0x4c50ad);_0x316691>=0x0&&(this[_0x5095bc(0x2ec)]['values']['splice'](_0x316691,0x1),this['query'][_0x5095bc(0x2e9)]['splice'](_0x316691,0x1));},async 'openAddModal'(){const _0x142164=_0x1c76f2;await _0x3b4491[_0x142164(0x20b)][_0x142164(0x2ad)][_0x142164(0x23d)][_0x142164(0x29e)]({'owner':_0x3b4491,'title':_0x142164(0x284),'content':_0x142164(0x2f4),'context':_0x9c93ba=>({'modal':_0x9c93ba,'type':this[_0x142164(0x2c7)],'onDone':async({key:_0x7c6354,value:_0x325b2e})=>{const _0x266339=_0x142164;x(_0x325b2e,_0x7c6354),this[_0x266339(0x2ec)]['values'][_0x266339(0x207)](_0x325b2e),this['query']['items'][_0x266339(0x207)]({'key':_0x7c6354,'value':_0x325b2e});}})});},async 'openCreateIndex'(){const _0x4a92a8=_0x1c76f2;let _0x219daf={},_0x33d12e=[];try{const _0x523753=await fetch(this[_0x4a92a8(0x2c5)]+_0x4a92a8(0x2bc)+this[_0x4a92a8(0x2c7)]+_0x4a92a8(0x21a)),_0x5c6967=await _0x523753[_0x4a92a8(0x2b9)]();_0x219daf=(_0x5c6967['data']??_0x5c6967[_0x4a92a8(0x225)])?.[_0x4a92a8(0x210)]??{},_0x33d12e=Object[_0x4a92a8(0x2f6)](_0x219daf)[_0x4a92a8(0x2bd)](_0x353d6b=>_0x219daf[_0x353d6b][_0x4a92a8(0x2d3)](_0x4a92a8(0x2ae)));}catch{const _0x2703d2=(_0x3b4491[_0x4a92a8(0x20b)][_0x4a92a8(0x299)]['okdb'][_0x4a92a8(0x23b)]||[])[_0x4a92a8(0x2ce)](_0x5ebea5=>_0x5ebea5[_0x4a92a8(0x2c7)]===this['type']);for(const _0x1b3eb4 of Object[_0x4a92a8(0x2f6)](_0x2703d2?.['fields']||{}))_0x219daf[_0x1b3eb4]=_0x2703d2['fields'][_0x1b3eb4];}await _0x3b4491['$ok'][_0x4a92a8(0x2ad)][_0x4a92a8(0x23d)]['open']({'owner':_0x3b4491,'title':_0x4a92a8(0x24e),'content':'<create-index-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:deep-paths=\x22deepPaths\x22\x20:geo-fields=\x22geoFields\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x384feb=>({'modal':_0x384feb,'type':this[_0x4a92a8(0x2c7)],'deepPaths':_0x219daf,'geoFields':_0x33d12e,'onDone':async()=>{const _0x40459c=_0x4a92a8;await this[_0x40459c(0x277)](!0x0);}})});},async 'dropType'(){const _0x1af53a=_0x1c76f2;if(this[_0x1af53a(0x2c7)]&&await _0x3b4491[_0x1af53a(0x20b)]['shared'][_0x1af53a(0x23d)][_0x1af53a(0x2c6)](_0x1af53a(0x2e5)+this[_0x1af53a(0x2c7)]+_0x1af53a(0x205)))try{await fetch(this['envApiBase']+_0x1af53a(0x2bc)+this[_0x1af53a(0x2c7)],{'method':_0x1af53a(0x2a4)}),await _0x3b4491[_0x1af53a(0x20b)][_0x1af53a(0x299)][_0x1af53a(0x238)][_0x1af53a(0x214)](),_0x3b4491['$el']['dispatchEvent'](new CustomEvent(_0x1af53a(0x22a),{'detail':this[_0x1af53a(0x2c7)]}));}catch(_0x103389){console['error'](_0x1af53a(0x24d),_0x103389);}},async 'removeIndex'(_0x48c54a){const _0x403732=_0x1c76f2,_0x44dfd=_0x48c54a||this[_0x403732(0x2ec)][_0x403732(0x2df)];if(_0x44dfd&&await _0x3b4491[_0x403732(0x20b)][_0x403732(0x2ad)]['modal']['confirm'](_0x403732(0x28e)+_0x44dfd+'\x22?')){try{const _0x485643=await fetch(this[_0x403732(0x2c5)]+_0x403732(0x2bc)+this[_0x403732(0x2c7)]+_0x403732(0x26e)+_0x44dfd,{'method':_0x403732(0x2a4)});if(!_0x485643['ok']){const _0x2d8be0=await _0x485643[_0x403732(0x2b9)]()[_0x403732(0x21e)](()=>({})),_0x3c6597=_0x2d8be0?.['error']?.[_0x403732(0x21b)];if(_0x403732(0x2e3)===_0x3c6597){const _0x2d2e0b=(_0x2d8be0?.[_0x403732(0x2d7)]?.[_0x403732(0x211)]?.[_0x403732(0x265)]??[])[_0x403732(0x2ca)](_0x3cb1f4=>_0x3cb1f4['kind']+':'+_0x3cb1f4[_0x403732(0x309)])[_0x403732(0x2ee)](',\x20');return void _0x3b4491[_0x403732(0x20b)]['shared']?.['toast']?.[_0x403732(0x2d7)]?.('Cannot\x20remove:\x20index\x20is\x20used\x20by\x20'+(_0x2d2e0b||'a\x20consumer'));}throw new Error(_0x2d8be0?.[_0x403732(0x2d7)]?.['message']??_0x403732(0x291));}}catch(_0x164103){return console[_0x403732(0x2d7)](_0x403732(0x2c9),_0x164103),void _0x3b4491[_0x403732(0x20b)]['shared']?.['toast']?.[_0x403732(0x2d7)]?.(_0x164103[_0x403732(0x2fc)]);}this[_0x403732(0x2ec)][_0x403732(0x2df)]===_0x44dfd&&(this['query'][_0x403732(0x2df)]=null),this['query'][_0x403732(0x2c0)](),await this[_0x403732(0x277)](!0x0),await this[_0x403732(0x2ec)][_0x403732(0x286)]();}},'selectIndex'(_0x119bdd){const _0x46f45f=_0x1c76f2;if(_0x46f45f(0x2c4)===_0x119bdd)return this[_0x46f45f(0x2ec)]['selectedIndex']=null,void this[_0x46f45f(0x212)]();_0x46f45f(0x2e2)!==_0x119bdd?(this['query'][_0x46f45f(0x2df)]=_0x119bdd||null,this[_0x46f45f(0x2ec)][_0x46f45f(0x2df)]&&(this[_0x46f45f(0x2ec)]['selectedFtsIndex']=null),this[_0x46f45f(0x2ec)][_0x46f45f(0x2df)]||(this['query'][_0x46f45f(0x2da)]=void 0x0,this[_0x46f45f(0x2ec)][_0x46f45f(0x27c)]=void 0x0,this[_0x46f45f(0x2ec)]['selectedIndexEnd']=void 0x0)):this[_0x46f45f(0x305)]();},'selectFtsIndex'(_0x392d99,_0x4ef42c){const _0x1e3b32=_0x1c76f2;if(_0x1e3b32(0x245)===_0x392d99)return _0x4ef42c&&(_0x4ef42c['target']['value']=this[_0x1e3b32(0x2ec)][_0x1e3b32(0x23f)]||''),void this[_0x1e3b32(0x2dc)]();'__drop_fts__'!==_0x392d99?(this['query'][_0x1e3b32(0x23f)]=_0x392d99||null,this[_0x1e3b32(0x2ec)]['selectedFtsIndex']&&(this[_0x1e3b32(0x2ec)][_0x1e3b32(0x2df)]=null,this['query'][_0x1e3b32(0x2da)]=void 0x0,this['query'][_0x1e3b32(0x27c)]=void 0x0,this[_0x1e3b32(0x2ec)][_0x1e3b32(0x217)]=void 0x0)):this[_0x1e3b32(0x26b)]();},async 'openCreateFtsModal'(){const _0x3d430b=_0x1c76f2;let _0x565dfe={};try{const _0x103e3d=await fetch(this[_0x3d430b(0x2c5)]+_0x3d430b(0x2bc)+this['type']+_0x3d430b(0x21a)),_0x1cf32f=await _0x103e3d[_0x3d430b(0x2b9)]();_0x565dfe=(_0x1cf32f['data']??_0x1cf32f[_0x3d430b(0x225)])?.[_0x3d430b(0x210)]??{};}catch{const _0x521229=(_0x3b4491[_0x3d430b(0x20b)][_0x3d430b(0x299)][_0x3d430b(0x238)][_0x3d430b(0x23b)]||[])['find'](_0x4c8cda=>_0x4c8cda['type']===this[_0x3d430b(0x2c7)]);for(const _0x9912e7 of Object['keys'](_0x521229?.[_0x3d430b(0x1f5)]||{}))_0x565dfe[_0x9912e7]=_0x521229['fields'][_0x9912e7];}await _0x3b4491[_0x3d430b(0x20b)][_0x3d430b(0x2ad)]['modal']['open']({'owner':_0x3b4491,'title':_0x3d430b(0x271),'content':_0x3d430b(0x221),'context':_0x4f896e=>({'modal':_0x4f896e,'type':this[_0x3d430b(0x2c7)],'apiBase':this[_0x3d430b(0x2c5)],'deepPaths':_0x565dfe,'onDone':async()=>{const _0x1f1afa=_0x3d430b;await this[_0x1f1afa(0x2b8)](!0x0);}})});},async 'dropFtsIndex'(_0x346ac2){const _0x24e3ab=_0x1c76f2,_0x24151b=_0x346ac2||this[_0x24e3ab(0x2ec)][_0x24e3ab(0x23f)];if(_0x24151b&&await _0x3b4491[_0x24e3ab(0x20b)][_0x24e3ab(0x2ad)][_0x24e3ab(0x23d)][_0x24e3ab(0x2c6)](_0x24e3ab(0x20f)+_0x24151b+'\x22?\x20This\x20cannot\x20be\x20undone.')){try{await fetch(this['envApiBase']+_0x24e3ab(0x2bc)+this[_0x24e3ab(0x2c7)]+_0x24e3ab(0x306)+encodeURIComponent(_0x24151b),{'method':_0x24e3ab(0x2a4)});}catch(_0xd3df37){return console[_0x24e3ab(0x2d7)](_0x24e3ab(0x236),_0xd3df37),void _0x3b4491[_0x24e3ab(0x20b)][_0x24e3ab(0x2ad)]?.[_0x24e3ab(0x2ef)]?.[_0x24e3ab(0x2d7)]?.(_0x24e3ab(0x241));}this[_0x24e3ab(0x2ec)]['selectedFtsIndex']===_0x24151b&&(this[_0x24e3ab(0x2ec)][_0x24e3ab(0x23f)]=null),await this['loadFtsIndexes'](!0x0),await this[_0x24e3ab(0x2ec)][_0x24e3ab(0x286)]();}},async 'rebuildIndex'(_0x590260){const _0xd96566=_0x1c76f2;if(_0x590260&&await _0x3b4491[_0xd96566(0x20b)][_0xd96566(0x2ad)]['modal'][_0xd96566(0x2c6)]('Rebuild\x20index\x20\x22'+_0x590260+_0xd96566(0x297)))try{await fetch(this[_0xd96566(0x2c5)]+_0xd96566(0x2bc)+this['type']+'/index/'+encodeURIComponent(_0x590260)+_0xd96566(0x2cb),{'method':_0xd96566(0x303)}),_0x3b4491['$ok'][_0xd96566(0x2ad)]?.[_0xd96566(0x2ef)]?.[_0xd96566(0x2b6)]?.(_0xd96566(0x24b)+_0x590260+'\x22…'),await this['loadIndexes'](!0x0);}catch(_0x6747c0){console[_0xd96566(0x2d7)](_0xd96566(0x28f),_0x6747c0),_0x3b4491[_0xd96566(0x20b)]['shared']?.[_0xd96566(0x2ef)]?.['error']?.(_0xd96566(0x290));}},async 'rebuildFts'(_0x28370a){const _0x4a8dc4=_0x1c76f2,_0x56ed8d=_0x28370a||this[_0x4a8dc4(0x2ec)][_0x4a8dc4(0x23f)];if(_0x56ed8d&&await _0x3b4491[_0x4a8dc4(0x20b)]['shared'][_0x4a8dc4(0x23d)]['confirm'](_0x4a8dc4(0x2b3)+_0x56ed8d+_0x4a8dc4(0x249)))try{await fetch(this[_0x4a8dc4(0x2c5)]+_0x4a8dc4(0x2bc)+this['type']+_0x4a8dc4(0x306)+encodeURIComponent(_0x56ed8d)+'/reset',{'method':_0x4a8dc4(0x303)}),_0x3b4491[_0x4a8dc4(0x20b)][_0x4a8dc4(0x2ad)]?.[_0x4a8dc4(0x2ef)]?.[_0x4a8dc4(0x2b6)]?.(_0x4a8dc4(0x269)+_0x56ed8d+'\x22…'),await this[_0x4a8dc4(0x2b8)](!0x0);}catch(_0x54416e){console[_0x4a8dc4(0x2d7)](_0x4a8dc4(0x294),_0x54416e),_0x3b4491[_0x4a8dc4(0x20b)][_0x4a8dc4(0x2ad)]?.[_0x4a8dc4(0x2ef)]?.[_0x4a8dc4(0x2d7)]?.(_0x4a8dc4(0x290));}},'onGeoTableSelect'(_0x19555a){const _0x6132d9=_0x1c76f2;if(_0x6132d9(0x2ae)!==this[_0x6132d9(0x22c)])return;this[_0x6132d9(0x2cc)]=_0x6132d9(0x242);const _0x32616d=_0x19555a['detail']?.[_0x6132d9(0x289)];this[_0x6132d9(0x28c)]=_0x6132d9(0x278)===_0x32616d?null:_0x19555a[_0x6132d9(0x213)]?.[_0x6132d9(0x202)]?.['__key']??null;},'onGeoMapSelect'(_0x3299c0){const _0x5b74b7=_0x1c76f2,_0x5404ad=_0x3299c0[_0x5b74b7(0x213)]?.[_0x5b74b7(0x1f4)]??null;this['_geoSelSource']=_0x5b74b7(0x2ca),this[_0x5b74b7(0x28c)]=this['geoHighlightedKey']===_0x5404ad?null:_0x5404ad;}};},'_unsubs':[],async 'init'(_0x335a66){const _0x18c70b=_0x2e63d4;if(_0x335a66['$watch'](()=>this[_0x18c70b(0x2c7)],async()=>{const _0xf8eae3=_0x18c70b;this[_0xf8eae3(0x2ec)]['type']=this[_0xf8eae3(0x2c7)],this[_0xf8eae3(0x2ec)][_0xf8eae3(0x23f)]=null,this[_0xf8eae3(0x2ec)]['selectedVectorEngine']=null,this[_0xf8eae3(0x22c)]='scan',this[_0xf8eae3(0x2ec)][_0xf8eae3(0x2c0)](),await this[_0xf8eae3(0x277)](!0x0),await this[_0xf8eae3(0x2b8)](!0x0),await this['loadVectorEngines'](!0x0),await this['loadTypeEnginesCount'](),await this['loadViolations'](),await this[_0xf8eae3(0x2ec)][_0xf8eae3(0x286)]();}),_0x335a66['$watch'](()=>[this[_0x18c70b(0x2ec)]['query'],this['query']['selectedIndex'],this['query'][_0x18c70b(0x27c)],this[_0x18c70b(0x2ec)][_0x18c70b(0x217)],this[_0x18c70b(0x2ec)][_0x18c70b(0x262)],this[_0x18c70b(0x2ec)][_0x18c70b(0x223)],this[_0x18c70b(0x2ec)][_0x18c70b(0x2da)],this[_0x18c70b(0x2ec)][_0x18c70b(0x23f)],this[_0x18c70b(0x2ec)][_0x18c70b(0x2db)],this[_0x18c70b(0x2ec)][_0x18c70b(0x25a)],this[_0x18c70b(0x2ec)]['ftsPrefix'],this['query'][_0x18c70b(0x2f9)],this[_0x18c70b(0x2ec)]['vectorText'],this['query']['vectorLimit']],async()=>{const _0x510b5b=_0x18c70b;this[_0x510b5b(0x2c7)]&&(this[_0x510b5b(0x2ec)][_0x510b5b(0x2c0)](),await this[_0x510b5b(0x2ec)][_0x510b5b(0x286)]());}),_0x335a66[_0x18c70b(0x2e4)](()=>[this['searchMode'],this[_0x18c70b(0x1f0)],this[_0x18c70b(0x2fe)],this[_0x18c70b(0x21f)],this[_0x18c70b(0x27e)],this[_0x18c70b(0x220)],this[_0x18c70b(0x2ec)][_0x18c70b(0x2ec)]],async()=>{const _0x26a9c4=_0x18c70b;'geo'===this[_0x26a9c4(0x22c)]&&this[_0x26a9c4(0x2c7)]&&this[_0x26a9c4(0x1f0)]&&this[_0x26a9c4(0x2fe)]&&this[_0x26a9c4(0x21f)]&&await this[_0x26a9c4(0x2e8)]();}),this['type']){const _0x27bef8=new Set([_0x18c70b(0x2d8),_0x18c70b(0x2ed),_0x18c70b(0x2f8),_0x18c70b(0x279),_0x18c70b(0x2fa),_0x18c70b(0x251)]),_0x13a53e=_0x335a66['$vars'][_0x18c70b(0x1ff)]?.[_0x18c70b(0x25f)]?.['tab'];_0x13a53e&&_0x27bef8[_0x18c70b(0x227)](_0x13a53e)&&(this['tab']=_0x18c70b(0x2fa)===_0x13a53e?_0x18c70b(0x251):_0x13a53e),await Promise[_0x18c70b(0x2fd)]([this[_0x18c70b(0x277)](),this[_0x18c70b(0x2b8)](),this[_0x18c70b(0x233)](),this['loadTypeEnginesCount'](),this[_0x18c70b(0x258)](),this[_0x18c70b(0x240)](),this[_0x18c70b(0x2b2)](),this['query'][_0x18c70b(0x286)]()]);}this[_0x18c70b(0x209)]=[_0x12a3df['on'](_0x18c70b(0x21d),()=>{const _0x364e2c=_0x18c70b;this[_0x364e2c(0x277)](!0x0),this[_0x364e2c(0x2b8)](!0x0);}),_0x12a3df['on'](_0x18c70b(0x2d1),_0x4b032a=>{const _0x4ab541=_0x18c70b;this[_0x4ab541(0x277)](!0x0),this[_0x4ab541(0x2b8)](!0x0);const _0x1c6c89=_0x4b032a?.[_0x4ab541(0x2c7)];if(!_0x1c6c89||_0x1c6c89===this[_0x4ab541(0x2c7)]){const _0x4e0b59=_0x4b032a?.[_0x4ab541(0x256)],_0x53792a=Array[_0x4ab541(0x2af)](_0x4e0b59)&&_0x4ab541(0x1f8)===_0x4e0b59[0x0],_0xfee97f=_0x53792a?_0x4e0b59[0x1]:_0x4ab541(0x248)==typeof _0x4e0b59?_0x4e0b59:'',_0x5964c6=_0x53792a?'FTS\x20index\x20ready:\x20'+_0xfee97f:_0xfee97f?_0x4ab541(0x1fc)+_0xfee97f:_0x4ab541(0x1f1);_0x335a66[_0x4ab541(0x20b)][_0x4ab541(0x2ad)]?.[_0x4ab541(0x2ef)]?.['success']?.(_0x5964c6);}}),_0x12a3df['on'](_0x18c70b(0x2a5),()=>this['loadIndexes'](!0x0)),_0x12a3df['on'](_0x18c70b(0x2d2),()=>this['loadIndexes'](!0x0)),_0x12a3df['on'](_0x18c70b(0x30a),()=>this['loadFtsIndexes'](!0x0)),_0x12a3df['on']('fts:drop',()=>this[_0x18c70b(0x2b8)](!0x0)),_0x12a3df['on'](_0x18c70b(0x25b),()=>this[_0x18c70b(0x233)](!0x0)),_0x12a3df['on']('engine:stopped',()=>this['loadVectorEngines'](!0x0)),_0x12a3df['on'](_0x18c70b(0x285),()=>this[_0x18c70b(0x233)](!0x0)),_0x12a3df['on'](_0x18c70b(0x276),()=>this[_0x18c70b(0x233)](!0x0)),_0x12a3df['on'](_0x18c70b(0x29d),()=>this[_0x18c70b(0x233)](!0x0)),_0x12a3df['on'](_0x18c70b(0x25b),()=>this[_0x18c70b(0x237)]()),_0x12a3df['on'](_0x18c70b(0x2cd),()=>this['loadTypeEnginesCount']()),_0x12a3df['on'](_0x18c70b(0x285),()=>this[_0x18c70b(0x237)]()),_0x12a3df['on']('engine:installed',()=>this[_0x18c70b(0x237)]()),_0x12a3df['on'](_0x18c70b(0x29d),()=>this[_0x18c70b(0x237)]()),_0x12a3df['on'](_0x18c70b(0x201),()=>this[_0x18c70b(0x233)](!0x0)),_0x12a3df['on'](_0x18c70b(0x201),()=>this[_0x18c70b(0x237)]())];const _0x2b560c=new Set([_0x18c70b(0x2d8),_0x18c70b(0x2ed),_0x18c70b(0x2f8),_0x18c70b(0x279),_0x18c70b(0x2fa),'engines']);_0x335a66[_0x18c70b(0x2e4)](()=>_0x335a66['$vars'][_0x18c70b(0x1ff)]?.[_0x18c70b(0x2a9)]?.[_0x18c70b(0x1fb)],()=>{const _0x36bd43=_0x18c70b,_0x493c68=_0x335a66['$vars'][_0x36bd43(0x1ff)]?.[_0x36bd43(0x2a9)]?.[_0x36bd43(0x1fb)];if(!_0x493c68)return;const _0x1a99c8=_0x2b560c[_0x36bd43(0x227)](_0x493c68)?'pipelines'===_0x493c68?_0x36bd43(0x251):_0x493c68:_0x36bd43(0x2d8);this['tab']!==_0x1a99c8&&(this[_0x36bd43(0x1fb)]=_0x1a99c8);}),_0x335a66[_0x18c70b(0x2e4)](()=>this['geoHighlightedKey'],_0x1cf1f5=>{const _0x5783d8=_0x18c70b,_0x38a7dc=this['_geoSelSource'];if(this[_0x5783d8(0x2cc)]=null,_0x5783d8(0x2ae)!==this[_0x5783d8(0x22c)])return;if('table'===_0x38a7dc)return;const _0x25ac7f=_0x335a66[_0x5783d8(0x292)]?.[_0x5783d8(0x232)](_0x5783d8(0x274));if(!_0x25ac7f)return;if(!_0x1cf1f5)return _0x25ac7f[_0x5783d8(0x231)]?.(),void _0x25ac7f[_0x5783d8(0x288)]?.();const _0x1b3825=this[_0x5783d8(0x308)]?.[_0x5783d8(0x2ce)](_0x14cd23=>this[_0x5783d8(0x2d9)](_0x14cd23)===_0x1cf1f5);_0x1b3825?(_0x25ac7f[_0x5783d8(0x27f)]?.(_0x1b3825),_0x25ac7f['clearExpanded']?.(),_0x25ac7f[_0x5783d8(0x2bf)]?.(_0x1b3825)):(_0x25ac7f[_0x5783d8(0x231)]?.(),_0x25ac7f[_0x5783d8(0x288)]?.());});},'unmount'(){const _0x4957ee=_0x2e63d4;for(const _0xcee0a7 of this[_0x4957ee(0x209)])_0xcee0a7();this[_0x4957ee(0x209)]=[];},'template':_0x2e63d4(0x252),'style':_0x2e63d4(0x1ef)};