@camstack/addon-admin-ui 1.2.352 → 1.2.353
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.
- package/dist/assets/{Addons-CGDc3MCi.js → Addons-CSSlxmKX.js} +1 -1
- package/dist/assets/{AdminTabs-CZPAmhas.js → AdminTabs-D2EUE5A0.js} +1 -1
- package/dist/assets/{AiProfiles-Cb885xLi.js → AiProfiles-ZTs3hQfG.js} +1 -1
- package/dist/assets/{BrokerForm-CHyLrgZU.js → BrokerForm-jvEIkwfE.js} +1 -1
- package/dist/assets/{Build-Cq1iHbS5.js → Build-D-cQZg2g.js} +1 -1
- package/dist/assets/{Calendars-Bp7O4Q0e.js → Calendars-BCpPE1jT.js} +1 -1
- package/dist/assets/{Capabilities-BwrQQsWg.js → Capabilities-WsxtQm6G.js} +1 -1
- package/dist/assets/{Cluster-BxZqJz_z.js → Cluster-BZpFTXoQ.js} +1 -1
- package/dist/assets/{ClusterStepModel-BXQrb9-2.js → ClusterStepModel-Hz5Uy3Lc.js} +1 -1
- package/dist/assets/{CompositionEditor-CWseh3e4.js → CompositionEditor-DlXjZmuS.js} +1 -1
- package/dist/assets/{CompositionEditorPage-B6M-10Ch.js → CompositionEditorPage-DN1jwFte.js} +1 -1
- package/dist/assets/{Data-8_oyAAFm.js → Data-BiwkrKto.js} +1 -1
- package/dist/assets/{DetectionIntelligence-ZAxkWwsC.js → DetectionIntelligence-C_6PVnNp.js} +1 -1
- package/dist/assets/{DeviceDetail-CZeHFThw.js → DeviceDetail-Dd16eq5_.js} +1 -1
- package/dist/assets/{DeviceDoActionFields-rqWve7Cc.js → DeviceDoActionFields-C9efvuLy.js} +1 -1
- package/dist/assets/{Devices-KcQPMfTP.js → Devices-uRSR1KF9.js} +1 -1
- package/dist/assets/{EmbedPlayerPage-jqACjBI1.js → EmbedPlayerPage-B0M5LCl6.js} +1 -1
- package/dist/assets/{Events-BF592qf_.js → Events-BqYGW97U.js} +1 -1
- package/dist/assets/{Identity-Cts1UzJ3.js → Identity-CwF15mWM.js} +1 -1
- package/dist/assets/{IntegrationDetail-CPXel_5q.js → IntegrationDetail-KiizjQky.js} +1 -1
- package/dist/assets/{IntegrationHub-P7DZLhMu.js → IntegrationHub-CtZ9pFUl.js} +1 -1
- package/dist/assets/{Integrations-BkAo2E4O.js → Integrations-5D0W0NO_.js} +1 -1
- package/dist/assets/{Integrations-COJxgwuo.js → Integrations-8JethkBu.js} +1 -1
- package/dist/assets/{Locations-CHSHPbFF.js → Locations-C0VGgBDh.js} +1 -1
- package/dist/assets/{Logs-DRTuZa-s.js → Logs-BdD9ktZ1.js} +1 -1
- package/dist/assets/{MotionZonesSettings-BWlY0uhl.js → MotionZonesSettings-BMZDT9aS.js} +1 -1
- package/dist/assets/{MyAccess-C4ubGrSr.js → MyAccess-VT-IYS_0.js} +1 -1
- package/dist/assets/{Network-BOzx7hn8.js → Network-DAS4ofeO.js} +1 -1
- package/dist/assets/{NodeAddonsSettingsPanel-DaKtOtU5.js → NodeAddonsSettingsPanel-2ImNi4l_.js} +1 -1
- package/dist/assets/{Notifications-D_GaC55O.js → Notifications-CtpsBCVg.js} +1 -1
- package/dist/assets/{Plates-Di4sfAWp.js → Plates-DRYDfqhl.js} +1 -1
- package/dist/assets/{PrivacyMaskSettings-z1qT12AK.js → PrivacyMaskSettings-e1shTFq0.js} +1 -1
- package/dist/assets/{Recordings-BmNingKf.js → Recordings-Cp1t8Lsr.js} +1 -1
- package/dist/assets/{ScanNetworkModal-ByV68CCf.js → ScanNetworkModal-CtcUY86A.js} +1 -1
- package/dist/assets/{SceneMonitorEditor-DqvGdipD.js → SceneMonitorEditor-B8SaYaRg.js} +1 -1
- package/dist/assets/{Scenes-_7asi5eD.js → Scenes-UX3CQiSD.js} +1 -1
- package/dist/assets/{Settings-FlIRnDpv.js → Settings-hvJAx444.js} +1 -1
- package/dist/assets/{Showroom-DBp7iZ0G.js → Showroom-DGF0GI0t.js} +1 -1
- package/dist/assets/{Terminal-K34D1Ywo.js → Terminal-CnAgipZG.js} +1 -1
- package/dist/assets/{Viewer-BYJtbGy9.js → Viewer-u429VTlj.js} +1 -1
- package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-VirN8RQI.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-Dmoq9iz_.js} +1 -1
- package/dist/assets/{archive-BCuy69tM.js → archive-DEGN5b-2.js} +1 -1
- package/dist/assets/{authed-media-C08zoxUE.js → authed-media-zoQQL-DU.js} +1 -1
- package/dist/assets/{boxes-Co2Q90CO.js → boxes-D53xb3mF.js} +1 -1
- package/dist/assets/circle-slash-g5R19IPN.js +1 -0
- package/dist/assets/{client-Diiyoh60.js → client-CxHFB-xR.js} +1 -1
- package/dist/assets/crop-DTBzwOc0.js +1 -0
- package/dist/assets/{debounced-invalidate-4bQv6974.js → debounced-invalidate-Di49k3Ur.js} +1 -1
- package/dist/assets/{device-integration-icon-DMx3ZoRE.js → device-integration-icon-C44r3pOz.js} +1 -1
- package/dist/assets/device-picker-model-Y21yLCDr.js +1 -0
- package/dist/assets/{dist-Lw8PosIF.js → dist-B_y7Xf3Y.js} +1 -1
- package/dist/assets/{dist-CupfglO0.js → dist-CupCPVu2.js} +1 -1
- package/dist/assets/{face-bbox-UX05kDZA.js → face-bbox-BekWkYM8.js} +1 -1
- package/dist/assets/{hard-drive-download-gfGmt8d5.js → hard-drive-download-CaBI4JJt.js} +1 -1
- package/dist/assets/{hostInit-BKiqkTOp.js → hostInit-LeZtjcV4.js} +1 -1
- package/dist/assets/{index-cOBEaAEQ.js → index-BdYsVZMw.js} +3 -3
- package/dist/assets/{layers-DOEpCuQZ.js → layers-Bl4GXnaV.js} +1 -1
- package/dist/assets/{location-owned-usage-BLkNLXfg.js → location-owned-usage-B2EH12kQ.js} +1 -1
- package/dist/assets/{mf-entry-bootstrap-0-72b0f0d1.js → mf-entry-bootstrap-0-f71236c8.js} +2 -2
- package/dist/assets/mount-Y21yLCDr.js +1 -0
- package/dist/assets/{notification-schedule-field-B8_FhM0a.js → notification-schedule-field-CX_ISfhK.js} +1 -1
- package/dist/assets/{player-overlays-BFYAtS6k.js → player-overlays-CHWCYkGf.js} +1 -1
- package/dist/assets/remoteEntry-D2L5CI92.js +1 -0
- package/dist/assets/{send-CYjwgPvF.js → send-BxCvGnMf.js} +1 -1
- package/dist/assets/{settings-2-DzUYHDiK.js → settings-2-CWTgzyTw.js} +1 -1
- package/dist/assets/{src-CPNx7Cnt.js → src-Crb8RLzq.js} +3 -3
- package/dist/assets/{use-scenes-feed--Nza8Rhx.js → use-scenes-feed-CsZwOmyp.js} +1 -1
- package/dist/assets/{use-stationary-objects-CJwD3-xc.js → use-stationary-objects-DTKCTzni.js} +1 -1
- package/dist/assets/useEventInvalidation-Y21yLCDr.js +1 -0
- package/dist/assets/{useNodeUrlSelection-DKxGlIbc.js → useNodeUrlSelection-BSYJnQKG.js} +1 -1
- package/dist/assets/user-round-BR8uDCSh.js +1 -0
- package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-MXxx-qLy.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-mzuJ2veF.js} +2 -2
- package/dist/index.html +7 -7
- package/dist/server/addon.js +1 -1
- package/package.json +1 -1
- package/dist/assets/circle-slash-0LfB3qk4.js +0 -1
- package/dist/assets/crop--L-amBAa.js +0 -1
- package/dist/assets/device-picker-model-D073lAZn.js +0 -1
- package/dist/assets/mount-D073lAZn.js +0 -1
- package/dist/assets/remoteEntry-BY-9rdAo.js +0 -1
- package/dist/assets/useEventInvalidation-D073lAZn.js +0 -1
- package/dist/assets/user-round-BfNCEGcF.js +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./__vite-browser-external-Cc3gW-QT.js","./rolldown-runtime-Cyuzqnbw.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{a as e}from"./rolldown-runtime-Cyuzqnbw.js";import{t}from"./vite-preload-helper-kNaey6uv.js";import{A as n,C as r,D as i,E as a,F as o,I as s,M as c,N as l,O as u,P as d,S as f,T as p,_ as m,a as h,b as g,c as _,d as ee,f as te,g as v,h as ne,i as re,j as y,k as ie,l as ae,m as b,n as oe,o as se,p as x,r as ce,s as le,t as ue,u as de,v as S,w as fe,x as pe,y as C}from"./__vite-browser-external-Cc3gW-QT.js";var me=function(e){return e.SystemBoot=`system.boot`,e.SystemAddonsReady=`system.addons-ready`,e.SystemRestarting=`system.restarting`,e.SystemRestartCompleted=`system.restart-completed`,e.SystemTlsCertChanged=`system.tls-cert-changed`,e.UpdateAvailable=`update.available`,e.SystemReadyState=`system.ready-state`,e.AddonStarted=`addon.started`,e.AddonStopped=`addon.stopped`,e.AddonRestarted=`addon.restarted`,e.AddonUpdated=`addon.updated`,e.AddonInstalled=`addon.installed`,e.AddonUninstalled=`addon.uninstalled`,e.AddonCrashed=`addon.crashed`,e.AddonRunnerFailed=`addon.runner-failed`,e.AddonError=`addon.error`,e.AddonPageReady=`addon.page-ready`,e.AddonWidgetReady=`addon.widget-ready`,e.AddonLoadFailed=`addon.load-failed`,e.AddonLoadRecovered=`addon.load-recovered`,e.AddonRetryScheduled=`addon.retry-scheduled`,e.SystemLivenessFailed=`system.liveness-failed`,e.SystemLivenessRecovered=`system.liveness-recovered`,e.AddonRetryAttempting=`addon.retry-attempting`,e.DeviceRegistered=`device.registered`,e.DeviceUnregistered=`device.unregistered`,e.DeviceEnabled=`device.enabled`,e.DeviceDisabled=`device.disabled`,e.DeviceSettingsUpdated=`device.settings-updated`,e.DeviceBindingsChanged=`device.bindings-changed`,e.DeviceMetaChanged=`device.meta-changed`,e.DeviceSourceInfoChanged=`device.source-info-changed`,e.DeviceStreamsRegistered=`device.streams-registered`,e.DeviceProvisioned=`device.provisioned`,e.DeviceReady=`device.ready`,e.IntegrationEnabled=`integration.enabled`,e.IntegrationDisabled=`integration.disabled`,e.IntegrationDeleted=`integration.deleted`,e.BrokerStatusChanged=`broker.status-changed`,e.BrokerMessage=`broker.message`,e.ProviderStarted=`provider.started`,e.ProviderStopped=`provider.stopped`,e.ProcessCrashed=`process.crashed`,e.ProcessRestartScheduled=`process.restart_scheduled`,e.ProcessRestarted=`process.restarted`,e.StorageLocationsChanged=`storage.locations-changed`,e.RecordingStarted=`recording.started`,e.RecordingStopped=`recording.stopped`,e.RecordingError=`recording.error`,e.RecordingHealthDegraded=`recording.health.degraded`,e.RecordingStorageCritical=`recording.storage.critical`,e.RecordingSegmentWritten=`recording.segment.written`,e.RecordingPolicyFallback=`recording.policy.fallback`,e.RecordingRetentionCompleted=`recording.retention.completed`,e.RecordingExportProgress=`recording.export.progress`,e.RecordingExportCompleted=`recording.export.completed`,e.RecordingExportFailed=`recording.export.failed`,e.DetectionEvent=`detection.event`,e.SessionTrackNew=`session.track.new`,e.SessionTrackExpired=`session.track.expired`,e.BenchmarkProgress=`benchmark.progress`,e.PlatformProbePhase=`platform-probe.phase`,e.PipelineProgress=`pipeline.progress`,e.PipelineTrace=`pipeline.trace`,e.PipelineInferenceResult=`pipeline.inference-result`,e.PipelineCameraAssigned=`pipeline.camera-assigned`,e.PipelineCameraUnassigned=`pipeline.camera-unassigned`,e.PipelineNodeInferenceUnavailable=`pipeline.node-inference-unavailable`,e.PipelineDetectionBlind=`pipeline.detection-blind`,e.PipelineCameraUpdated=`pipeline.camera-updated`,e.PipelineIngestOwnerChanged=`pipeline.ingest-owner-changed`,e.PipelineRunnerLoadSnapshot=`pipeline.runner-load-snapshot`,e.PipelineCameraMetricsSnapshot=`pipeline.camera-metrics-snapshot`,e.StreamBrokerMetricsSnapshot=`stream-broker.metrics-snapshot`,e.StreamBrokerOnCamStreamDemand=`stream-broker.onCamStreamDemand`,e.StreamBrokerOnCamStreamIdle=`stream-broker.onCamStreamIdle`,e.StreamBrokerOnRequestStreamSourceRefresh=`stream-broker.onRequestStreamSourceRefresh`,e.StreamParamsChanged=`stream-params.changed`,e.DeviceStateChanged=`device.state-changed`,e.DeviceNativeShadowChanged=`device.native-shadow-changed`,e.ZoneAnalyticsOccupancyChanged=`zone-analytics.occupancy-changed`,e.BatteryOnStatusChanged=`battery.onStatusChanged`,e.NetworkLinkOnStatusChanged=`network-link.onStatusChanged`,e.BatteryOnWakeStarted=`battery.onWakeStarted`,e.DoorbellOnPressed=`doorbell.onPressed`,e.EventEmitted=`event-emitter.event`,e.PipelineEngineMetricsSnapshot=`pipeline.engine-metrics-snapshot`,e.PipelineEngineProvisioning=`pipeline.engine-provisioning`,e.ClusterTopologySnapshot=`cluster.topology-snapshot`,e.MetricsNodeResourcesSnapshot=`metrics.node-resources-snapshot`,e.MetricsNodeProcessesSnapshot=`metrics.node-processes-snapshot`,e.CapabilityBindingChanged=`capability.binding-changed`,e.ModelDownloadProgress=`model.download.progress`,e.AgentRegistered=`agent.registered`,e.AgentUnregistered=`agent.unregistered`,e.AgentOnline=`agent.online`,e.AgentOffline=`agent.offline`,e.WorkerOnline=`worker.online`,e.WorkerOffline=`worker.offline`,e.AgentTaskDispatched=`agent.task.dispatched`,e.AgentTaskAssigned=`agent.task.assigned`,e.AgentTrpcConnected=`agent.trpc.connected`,e.AgentWsConnected=`agent.ws.connected`,e.AgentWsDisconnected=`agent.ws.disconnected`,e.AgentBackupActivated=`agent.backup.activated`,e.OrchestrationSettingsUpdated=`orchestration.settings-updated`,e.MotionAnalysis=`detection.motion-analysis`,e.MotionZonesRaw=`detection.motion-zones-raw`,e.MotionOnMotionChanged=`motion.on-motion-changed`,e.DetectionResult=`detection.result`,e.DetectionRaw=`detection.raw`,e.DetectionCameraNative=`detection.camera-native`,e.PipelineAudioInferenceResult=`pipeline.audio-inference-result`,e.DetectionPhaseTransition=`detection.phase-transition`,e.ProviderMotion=`provider.motion`,e.ProviderDetection=`provider.detection`,e.EnrichmentEmbeddingStored=`enrichment.embedding.stored`,e.EnrichmentSceneStateChanged=`enrichment.scene.state-changed`,e.EnrichmentActivitySummary=`enrichment.activity.summary`,e.PipelineAnalyticsTrackLifecycle=`pipeline-analytics.track-lifecycle`,e.PipelineAnalyticsTrackStarted=`pipeline-analytics.track-started`,e.PipelineAnalyticsTrackEnded=`pipeline-analytics.track-ended`,e.PipelineAnalyticsDetectionEvent=`pipeline-analytics.detection-event`,e.PipelineAnalyticsFrameTracked=`pipeline-analytics.frame-tracked`,e.PipelineAnalyticsStationaryChanged=`pipeline-analytics.stationary-changed`,e.PipelineAnalyticsPackageDelivered=`pipeline-analytics.package-delivered`,e.PipelineAnalyticsPackagePickedUp=`pipeline-analytics.package-picked-up`,e.PipelineAnalyticsFaceGalleryChanged=`pipeline-analytics.face-gallery-changed`,e.PipelineAnalyticsPlateGalleryChanged=`pipeline-analytics.plate-gallery-changed`,e.CameraStreamsProfileSlotsChanged=`camera-streams.onProfileSlotsChanged`,e.StreamOnline=`stream.online`,e.StreamOffline=`stream.offline`,e.NetworkTunnelStarted=`network.tunnel.started`,e.NetworkTunnelStopped=`network.tunnel.stopped`,e.LocalNetworkChanged=`network.local.changed`,e.MeshNetworkChanged=`network.mesh.changed`,e.BackupCompleted=`backup.completed`,e.BackupRunCompleted=`backup.run-completed`,e.BackupRestored=`backup.restored`,e.NotificationDispatched=`notification.dispatched`,e.NotificationFailed=`notification.failed`,e.DeviceUpdated=`device.updated`,e.DeviceOnline=`device.online`,e.DeviceOffline=`device.offline`,e.DeviceAwake=`device.awake`,e.DeviceSleeping=`device.sleeping`,e.RetentionCleanup=`retention.cleanup`,e.AddonsBulkUpdateProgress=`addons.bulk-update-progress`,e.AddonsJobProgress=`addons.job-progress`,e.AddonsJobLog=`addons.job-log`,e.AccessoriesChildVisibilityChanged=`accessories.onChildVisibilityChanged`,e.AccessoriesChanged=`accessories.onAccessoriesChanged`,e.ModelConvertProgress=`model-convert.progress`,e}({}),he=new Set([`device.native-shadow-changed`]);function ge(e){return he.has(e)}function _e(){let e=Object.values(me).filter(e=>typeof e==`string`);return[...new Set(e)].filter(e=>!ge(e)).toSorted()}var ve=[`f32le`,`pcmu`,`pcma`];function ye(e){return typeof e==`string`&&ve.includes(e)}function be(e){return e===`f32le`?4:1}function xe(e,t){if(t===`f32le`){let t=new Uint8Array(e.byteLength);return t.set(e),t}let n=t===`pcmu`?we:Te,r=new Float32Array(e.length);for(let t=0;t<e.length;t++)r[t]=n[e[t]];return new Uint8Array(r.buffer)}function Se(){let e=new Float32Array(256);for(let t=0;t<256;t++){let n=~t&255,r=n&128?-1:1,i=n>>4&7;e[t]=r*((8*(n&15)+132<<i)-132)/32768}return e}function Ce(){let e=new Float32Array(256);for(let t=0;t<256;t++){let n=t^85,r=n&128?1:-1,i=n>>4&7,a=n&15;e[t]=r*(i===0?16*a+8:16*a+264<<i-1)/32768}return e}var we=Se(),Te=Ce(),Ee=[{id:`overview`,label:`Overview`,icon:`layout-dashboard`,order:-10},{id:`general`,label:`General`,icon:`settings`,order:0},{id:`image`,label:`Image`,icon:`image`,order:5},{id:`light`,label:`Light`,icon:`lightbulb`,order:7},{id:`motion`,label:`Motion`,icon:`activity`,order:10},{id:`audio`,label:`Audio`,icon:`mic`,order:12},{id:`alarms`,label:`Alarms`,icon:`bell-ring`,order:13},{id:`snapshot`,label:`Snapshot`,icon:`camera`,order:15},{id:`osd`,label:`OSD`,icon:`type`,order:18},{id:`stream-broker`,label:`Stream Broker`,icon:`radio`,order:20},{id:`streaming`,label:`Streaming`,icon:`video`,order:35},{id:`ptz`,label:`PTZ`,icon:`move`,order:40},{id:`navigation`,label:`Navigation`,icon:`compass`,order:41},{id:`consumables`,label:`Consumables`,icon:`recycle`,order:44},{id:`pipeline`,label:`Detection Pipeline`,icon:`cpu`,order:39},{id:`detection-pipeline`,label:`Detection pipeline`,icon:`cpu`,order:39},{id:`zones`,label:`Detection`,icon:`shapes`,order:38},{id:`analytics`,label:`Analytics`,icon:`activity`,order:37},{id:`live-stats`,label:`Live Stats`,icon:`activity`,order:39},{id:`recording`,label:`Recording`,icon:`circle-dot`,order:40},{id:`engine`,label:`Inference Engine`,icon:`zap`,order:41},{id:`scheduler`,label:`Scheduler`,icon:`list-checks`,order:42},{id:`decoder`,label:`Decoder`,icon:`film`,order:43},{id:`notifications`,label:`Notifications`,icon:`bell`,order:50},{id:`network`,label:`Network`,icon:`globe`,order:60},{id:`storage`,label:`Storage`,icon:`hard-drive`,order:70},{id:`advanced`,label:`Advanced`,icon:`wrench`,order:100}],De=Object.fromEntries(Ee.map(e=>[e.id,e]));function Oe(e){return e.type===`separator`||e.type===`info`||e.type===`qr-code`||e.type===`button`||e.type===`object-array`||e.type===`widget`||e.type===`addon-action-button`||e.type===`device-action-button`}function ke(e){let t=new Map;if(typeof e!=`object`||!e)return t;let n=e.sections;if(!Array.isArray(n))return t;for(let e of n)typeof e==`object`&&e&&Ae(e.fields,t);return t}function Ae(e,t){if(Array.isArray(e))for(let n of e){if(typeof n!=`object`||!n)continue;let e=n.type;if(e===`group`){Ae(n.fields,t);continue}if(e===`sub-tabs`){let e=n.tabs;if(Array.isArray(e))for(let n of e)typeof n==`object`&&n&&Ae(n.fields,t);continue}let r=n.key;typeof r!=`string`||r.length===0||`value`in n&&t.set(r,{value:n.value,default:n.default})}}function je(e){let t=new Map;for(let[n,r]of ke(e))t.set(n,r.value??r.default);return t}function Me(e,t){let n=ke(e).get(t);return n===void 0?void 0:n.value??n.default}function Ne(e,t){return{...e.tabs?{tabs:[...e.tabs]}:{},sections:e.sections.map(e=>({...e,fields:e.fields.map(e=>Pe(e,t))}))}}function Pe(e,t){if(Oe(e))return e;if(e.type===`group`){let n=e.fields.map(e=>Pe(e,t));return{...e,fields:n}}if(e.type===`sub-tabs`){let n=e.tabs.map(e=>({...e,fields:e.fields.map(e=>Pe(e,t))}));return{...e,tabs:n}}let n=e.key,r=Object.prototype.hasOwnProperty.call(t,n)?t[n]:void 0,i=e.default;if(e.multiple){let t=Array.isArray(r)?r:r==null?[]:[r],n=e.multiple.itemDefault===void 0?i===void 0?Fe(e)===`string`?``:null:i:e.multiple.itemDefault,a=Math.max(e.multiple.min,t.length),o=[];for(let e=0;e<a;e++)o.push(e<t.length?t[e]:n);return{...e,value:o}}let a=r===void 0?i===void 0?null:i:r,o=e.type===`textarea`&&e.isJson&&typeof a==`object`&&a?JSON.stringify(a,null,2):a;if(e.type===`tags`&&typeof e.suggestionsFrom==`string`){let n=t[e.suggestionsFrom],r=Array.isArray(n)?n.filter(e=>typeof e==`string`&&e.length>0):[],i=[...new Set([...e.suggestions??[],...r])];return{...e,suggestions:i,value:o}}if((e.type===`select`||e.type===`multiselect`)&&typeof e.optionsFrom==`string`){let n=t[e.optionsFrom],r=new Map;for(let t of e.options)r.set(t.value,t);if(Array.isArray(n))for(let e of n){if(typeof e==`string`&&e.length>0){r.has(e)||r.set(e,{value:e,label:e});continue}if(typeof e!=`object`||!e)continue;let t=Reflect.get(e,`value`),n=Reflect.get(e,`label`);typeof t!=`string`||t.length===0||r.has(t)||r.set(t,{value:t,label:typeof n==`string`&&n.length>0?n:t})}return{...e,options:[...r.values()],value:o}}return{...e,value:o}}function Fe(e){switch(e.type){case`text`:case`textarea`:case`password`:case`color`:case`probe`:case`timezone`:case`datetime`:return`string`;case`number`:case`slider`:return`number`;case`boolean`:return`boolean`;default:return`other`}}function Ie(e,t){return e.category===t}function Le(e,t,n){return{id:typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2),timestamp:new Date,source:t,category:e,data:n}}function Re(e,t){let n=t.ts??Date.now();e.emit(Le(`system.ready-state`,{type:`capability`,id:t.capName,nodeId:t.sourceNodeId},{capName:t.capName,scope:t.scope,state:t.state,generation:t.generation,sourceNodeId:t.sourceNodeId,ts:n}))}function ze(e){let t=async()=>{let t=(await e.read())[e.key];if(t===void 0)return e.fallback;let n=e.schema.safeParse(t);return n.success?n.data:(e.onParseError?.(e.key,n.error),e.fallback)},n=async t=>{let n=e.schema.parse(t);await e.write({[e.key]:n})};return{get:t,set:n,update:async e=>{await n(e(await t()))}}}function Be(e){if(e==null||e===``)return`hub`;let t=e.indexOf(`/`);if(t<0)return e;let n=e.slice(0,t);return n===``?`hub`:n}function Ve(e,t){return`${e}@${Be(t)}`}function He(e,t,n){return e[Ve(t,n)]}function Ue(e,t,n){let r={};for(let[i,a]of Object.entries(e))r[t.has(i)?Ve(i,n):i]=a;return r}function We(e,t,n){let r={};for(let[n,i]of Object.entries(e))n.includes(`@`)||t.has(n)||(r[n]=i);for(let i of t){let t=He(e,i,n);t!==void 0&&(r[i]=t)}return r}var Ge=class{_ctx=null;_config;_readinessGeneration=typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2,14);_registeredCapNames=[];settingsStoreReady=!1;defaults;constructor(e){this.defaults=e,this._config={...e}}get autoEmitReadiness(){return!0}get ctx(){if(!this._ctx)throw Error(`${this.constructor.name}: ctx accessed before initialize()`);return this._ctx}get ctxIfReady(){return this._ctx}get config(){return this._config}async initialize(e){this._ctx=e,await this.resolveConfig();let t=await this.onInitialize();this.emitLifecycle(me.AddonStarted);let n=Je(t),r=n&&`providers`in n&&n.providers?n.providers:[];return this._registeredCapNames=r.map(e=>e.capability.name),n}postBrokerStart(){this.autoEmitReadiness&&this._registeredCapNames.length>0&&this.emitReadinessForProviders(`ready`)}async onHubReachable(){}async shutdown(){this.emitLifecycle(me.AddonStopped),this.autoEmitReadiness&&this.emitReadinessForProviders(`down`),await this.onShutdown();for(let e of this._subscriptions)e();this._subscriptions=[],this._ctx=null}async onShutdown(){}async onConfigChanged(){}field(e){return e}schema(e){return e}globalSettingsSchema(e){return null}deviceSettingsSchema(){return null}integrationSettingSections(){return[]}async getGlobalSettings(e,t,n){let r=this.globalSettingsSchema(t);if(!r)return{sections:[]};let i=await this.resolveGlobalStore(n,t);return Ne(r,e?{...i,...e}:i)}async getIntegrationSettings(e){let t=this.integrationSettingSections();if(t.length===0)return null;let n=this.globalSettingsSchema();if(!n)throw Error(`${this.constructor.name}: integrationSettingSections() names [${t.join(`, `)}] but globalSettingsSchema() returns null.`);let r=new Map(n.sections.map(e=>[e.id,e])),i=[];for(let e of t){let t=r.get(e);if(!t)throw Error(`${this.constructor.name}: integrationSettingSections() names unknown section "${e}". Known sections: [${[...r.keys()].join(`, `)}].`);let n=Ke(t.fields);n.length!==0&&i.push({...t,fields:n})}if(i.length===0)return null;let a=await this.resolveGlobalStore(e);return Ne({...n,sections:i},a)}async resolveGlobalStore(e,t){let n=await this._ctx?.settings?.readAddonStore()??{},r=this.perNodeKeys(t),i=Be(e??this._ctx?.kernel?.localNodeId);return r.size>0?We(n,r,i):n}async readStoredGlobalKey(e){let t=this._ctx?.settings?.readAddonStoreResult;if(t===void 0)return{kind:`unreadable`,reason:`three-way-read-unavailable`};let n;try{n=await t.call(this._ctx?.settings)}catch(e){return{kind:`unreadable`,reason:`store-read-failed`,error:e instanceof Error?e.message:String(e)}}return n.kind===`failed`?{kind:`unreadable`,reason:`store-read-failed`,error:n.error}:n.kind===`missing`||!Object.prototype.hasOwnProperty.call(n.value,e)?{kind:`absent`}:{kind:`present`,value:n.value[e]}}async updateGlobalSettings(e,t){let n=this.perNodeKeys(),r=Be(this._ctx?.kernel?.localNodeId),i=Be(t??this._ctx?.kernel?.localNodeId),a=e,o=n.size>0?Ue(a,n,i):a;await this._ctx?.settings?.writeAddonStore(o),i===r&&(await this.resolveConfig(),await this.onConfigChanged(),this.emitLifecycle(me.AddonUpdated,{level:`global`}),this.maybeAutoRestart(e,this.globalSettingsSchema()))}_perNodeKeysCache=new Map;perNodeKeys(e){let t=e??``,n=this._perNodeKeysCache.get(t);if(n)return n;let r=this.globalSettingsSchema(e),i=new Set(r?r.sections.flatMap(e=>qe(e.fields)):[]);return this._perNodeKeysCache.set(t,i),i}maybeAutoRestart(e,t){if(!t)return;let n=new Set;for(let e of t.sections)for(let t of e.fields)t.type===`separator`||t.type===`info`||t.requiresRestart&&n.add(t.key);if(n.size===0||!Object.keys(e).some(e=>n.has(e)))return;let r=this._ctx;if(!r)return;let i=r.id;setImmediate(()=>{r.api.addons?.restartAddon?.mutate({addonId:i}).then(()=>{r.logger.info(`addon auto-restart triggered by restart-required setting change`,{meta:{changedFields:Object.keys(e).filter(e=>n.has(e))}})}).catch(e=>{r.logger.error(`addon auto-restart failed`,{meta:{error:e instanceof Error?e.message:String(e)}})})})}async getDeviceSettings(e){let t=this.deviceSettingsSchema();return t?Ne(t,await this._ctx?.settings?.readDeviceStore(e)??{}):{sections:[]}}async updateDeviceSettings(e,t){await this._ctx?.settings?.writeDeviceStore(e,t)}_subscriptions=[];watchCapability(e,t){let n=new Set(Array.isArray(e)?e:[e]);this.subscribe({category:`system.ready-state`},e=>{let r=e.data;if(typeof r.capName!=`string`||!n.has(r.capName)||r.scope?.type!==`node`)return;let i=r.scope.nodeId;if(typeof i!=`string`||i.length===0)return;let a=r.capName;r.state===`down`?t.onDown?.(i,a):r.state===`ready`&&t.onReady?.(i,a)})}subscribe(e,t){let n=this.ctx.eventBus.subscribe(e,t);this._subscriptions.push(n)}emitLifecycle(e,t){try{let n=this._ctx;if(!n)return;n.eventBus.emit({id:`${n.id}-${Date.now()}`,timestamp:new Date,source:{type:`addon`,id:n.id,nodeId:n.kernel.localNodeId??`hub`},category:e,data:{addonId:n.id,...t}})}catch{}}emitReadinessForProviders(e){let t=this._ctx;if(!t||this._registeredCapNames.length===0)return;let n=t.kernel?.localNodeId??`hub`,r=n.includes(`/`)?n.split(`/`)[0]:n;for(let n of this._registeredCapNames)try{Re(t.eventBus,{capName:n,scope:{type:`node`,nodeId:r},state:e,generation:this._readinessGeneration,sourceNodeId:r})}catch{}}async resolveModelsDir(){let{join:n}=await t(async()=>{let{join:t}=await import(`./__vite-browser-external-Cc3gW-QT.js`).then(t=>e(t.t(),1));return{join:t}},__vite__mapDeps([0,1]),import.meta.url),{promises:r}=await t(async()=>{let{promises:t}=await import(`./__vite-browser-external-Cc3gW-QT.js`).then(t=>e(t.t(),1));return{promises:t}},__vite__mapDeps([0,1]),import.meta.url),i=n(this.ctx.nodeDataDir,`models`);return await r.mkdir(i,{recursive:!0}),i}get capabilities(){return this.ctx.capabilities??null}async resolveConfig(){let e=await this.readAddonStoreWithRetry(),t=this.perNodeKeys(),n=Be(this._ctx?.kernel?.localNodeId),r={...this.defaults};for(let i of Object.keys(this.defaults)){let a=t.has(i)?He(e,i,n):e[i];if(a!=null){let e=typeof this.defaults[i];typeof a===e&&(r[i]=a)}}this._config=r}state(e,t,n){return ze({key:e,schema:t,fallback:n,read:()=>this.readAddonStoreWithRetry(),write:async e=>{await this._ctx?.settings?.writeAddonStore(e)},onParseError:(e,t)=>this._ctx?.logger?.warn?.(`durable-state: stored "${e}" failed validation — using fallback`,{meta:{addonId:this._ctx?.id,key:e,error:String(t)}})})}deviceState(e,t,n,r){return ze({key:t,schema:n,fallback:r,read:async()=>await this._ctx?.settings?.readDeviceStore(e)??{},write:async t=>{await this._ctx?.settings?.writeDeviceStore(e,t)},onParseError:(t,n)=>this._ctx?.logger?.warn?.(`durable-state: stored device ${e} "${t}" failed validation — using fallback`,{meta:{addonId:this._ctx?.id,deviceId:e,key:t,error:String(n)}})})}async readAddonStoreWithRetry(){let e=this._ctx?.settings;if(!e)return{};let t=[150,350,600,900],n;for(let r=0;r<=t.length;r++)try{let t=await e.readAddonStore()??{};return this.settingsStoreReady=!0,t}catch(e){n=e;let i=e instanceof Error?e.message:String(e);if(!(i.includes(`SqliteSettingsBackend not initialized`)||i.includes(`provider not available`)))throw e;if(r===t.length)break;await new Promise(e=>setTimeout(e,t[r]))}return this.settingsStoreReady=!1,this._ctx?.logger?.warn?.(`readAddonStore: settings-store unavailable after retries — using defaults`,{meta:{error:n instanceof Error?n.message:String(n)}}),{}}};function Ke(e){let t=[];for(let n of e){if(n.type===`group`){let e=Ke(n.fields);e.length>0&&t.push({...n,fields:e});continue}if(n.type===`sub-tabs`){let e=n.tabs.map(e=>({...e,fields:Ke(e.fields)})).filter(e=>e.fields.length>0);e.length>0&&t.push({...n,tabs:e});continue}`perNode`in n&&n.perNode===!0||t.push(n)}return t}function qe(e){let t=[];for(let n of e){if(n.type===`group`){t.push(...qe(n.fields));continue}if(n.type===`sub-tabs`){for(let e of n.tabs)t.push(...qe(e.fields));continue}`perNode`in n&&n.perNode===!0&&t.push(n.key)}return t}function Je(e){if(e!=null)return Array.isArray(e)?{providers:e}:e}var Ye=class{disposers=[];disposed=!1;onError;constructor(e={}){this.onError=e.onError??((e,t)=>{console.error(`[DisposerChain] disposer #${t} threw`,e)})}add(e){if(this.disposed){try{let t=e();t&&typeof t.then==`function`&&t.catch(e=>this.onError(e,-1))}catch(e){this.onError(e,-1)}return()=>void 0}return this.disposers.push(e),()=>{let t=this.disposers.indexOf(e);t>=0&&this.disposers.splice(t,1)}}get isDisposed(){return this.disposed}get size(){return this.disposers.length}async dispose(){if(this.disposed)return;this.disposed=!0;let e=this.disposers.slice().toReversed();this.disposers=[];for(let t=0;t<e.length;t++){let n=e[t];try{let e=n();e&&typeof e.then==`function`&&await e}catch(n){this.onError(n,e.length-1-t)}}}},Xe=`x-camstack-dataplane-secret`,Ze=[`grid-view`,`events-view`],Qe=3e4,$e=64,et=15e3,tt=256*1024,nt=u({url:c().min(1),hostNodeId:c().min(1),expiresAtMs:i().int().nonnegative(),declaredBytes:i().int().nonnegative().nullable()}),w=x([`high`,`mid`,`low`]),rt=[`high`,`mid`,`low`],it=d([w,p(`auto`)]),at=x([`pull-rtsp`,`pull-rtmp`,`pull-http`,`pull-flv`,`pull-rfc4571`,`push-annexb`,`derived`]),ot=u({width:i().int().positive(),height:i().int().positive()}),st=u({camStreamId:c().min(1),deviceId:i().int().nonnegative(),kind:at,url:c().optional(),codec:c().optional(),resolution:ot.optional(),fps:i().positive().optional(),label:c().optional(),deviceFeatures:S(c()).optional(),autoEligible:C().optional(),profileHint:w.optional(),metadata:y(c(),o()).optional()}),ct=x([`unassigned`,`idle`,`connecting`,`streaming`,`error`]),lt=u({deviceId:i().int().nonnegative(),profile:w,brokerId:c(),sourceCamStreamId:c().nullable(),status:ct,resolution:ot.optional(),codec:c().optional(),preBufferSec:i().nonnegative().optional(),errorMessage:c().optional()});function ut(e,t){return`${e}/${t}`}function dt(e,t){return`${e}/${t}`}function ft(e){let t=e.indexOf(`/`);if(t<=0)return null;let n=e.slice(0,t),r=e.slice(t+1);if(!/^\d+$/.test(n))return null;let i=w.safeParse(r);return i.success?{deviceId:Number(n),profile:i.data}:null}function pt(e,t){let n=[...e].filter(e=>t===void 0||e.deviceId===t).toSorted((e,t)=>rt.indexOf(e.profile)-rt.indexOf(t.profile)),r=new Set,i=[];for(let e of n){let t=e.sourceCamStreamId;t!==null&&(r.has(t)||(r.add(t),i.push(e)))}return i}var mt=u({id:c(),label:c(),protocol:x([`rtsp`,`rtmp`,`annexb`,`http-mjpeg`,`webrtc`,`custom`]),url:c().optional(),resolution:u({width:i(),height:i()}).readonly().optional(),fps:i().optional(),bitrate:i().optional(),codec:c().optional(),profileHint:w.optional()}),ht=u({type:c(),url:c(),videoCodec:c().optional(),audioCodec:c().optional(),metadata:y(c(),o()).readonly().optional()}),gt=u({shmId:c(),slot:i().int().nonnegative(),seq:i().int().nonnegative(),width:i().int().positive(),height:i().int().positive(),format:x([`jpeg`,`rgb`,`bgr`,`yuv420`,`gray`]),pts:i(),byteLength:i().int().nonnegative(),nodeId:c(),slotCount:i().int().positive()}),_t=x(ve),vt=u({data:b(Uint8Array),sampleRate:i().int().positive(),channels:i().int().positive(),timestamp:i(),format:_t.optional()}),yt=u({brokerId:c(),tag:c().optional(),accept:S(_t).readonly().optional()}),bt=u({subscriptionId:c()}),xt=x([`idle`,`connecting`,`streaming`,`error`,`stopped`]),St=u({status:xt,inputFps:i(),encodedSubscribers:i(),uptimeMs:i(),bitrateKbps:i(),idrIntervalMs:i(),codec:c().optional(),totalBytes:i(),packetCount:i(),rtspClients:i(),pipeClients:i(),preBufferSec:i(),preBufferMs:i(),preBufferPackets:i(),audio:u({codec:c(),sampleRate:i(),channels:i(),supported:C()}).nullable().optional(),audioMuted:C().optional(),audioMutedDropped:i().optional()}),Ct=u({profile:w,brokerId:c(),url:c(),mutedUrl:c(),enabled:C(),codec:c().optional(),resolution:ot.optional()}),wt=class extends Error{capName;scope;waitedMs;constructor(e,t,n){super(`Timed out waiting for ${e} (${Et(t)}) to become ready after ${n}ms`),this.name=`ReadinessTimeoutError`,this.capName=e,this.scope=t,this.waitedMs=n}};function Tt(e,t){return`${e}|${Et(t)}`}function Et(e){switch(e.type){case`global`:return`global`;case`node`:return`node:${e.nodeId}`;case`device`:return`device:${e.deviceId}`}}function Dt(e){switch(e){case`starting`:return 0;case`ready`:return 1;case`down`:return 2}}function Ot(e,t){return e.type===t.type?e.type===`global`||t.type===`global`?!0:e.type===`node`&&t.type===`node`?e.nodeId===t.nodeId:e.type===`device`&&t.type===`device`?e.deviceId===t.deviceId:!1:!1}var kt=class{bus;sourceNodeId;logger;now;generation;verboseDeviceScopeLogs;snapshot=new Map;subscriptions=new Set;unsubscribeBus;unsubscribeAgentOffline;constructor(e){if(this.bus=e.eventBus,this.sourceNodeId=e.sourceNodeId,this.logger=e.logger,this.now=e.now??(()=>Date.now()),this.generation=e.generation??At(),this.verboseDeviceScopeLogs=e.verboseDeviceScopeLogs??!1,this.unsubscribeBus=this.bus.subscribe({category:`system.ready-state`},e=>this.ingest(e.data)),this.unsubscribeAgentOffline=this.bus.subscribe({category:`agent.offline`},e=>this.synthesizeDownForNode(e.data.agentId)),typeof this.bus.getRecent==`function`)try{let e=this.bus.getRecent({category:`system.ready-state`});for(let t of e)this.ingest(t.data)}catch{}}close(){this.unsubscribeBus(),this.unsubscribeAgentOffline(),this.subscriptions.clear()}get(e,t){return this.snapshot.get(Tt(e,t))??null}getSnapshotForTransport(){return Array.from(this.snapshot.values())}hydrate(e){let t=this.now(),n=0;for(let r of e){let e=Tt(r.capName,r.scope),i=this.snapshot.get(e)??null,a,o;if(i!==null){if(this.isLocallyAuthoritative(i))continue;let e=i.generation===r.generation;if(e&&Dt(r.state)<=Dt(i.state))continue;a=!e&&r.state===`ready`?i.epoch+1:i.epoch,o=Math.max(0,t-i.lastChange)}else a=1,o=0;let s={capName:r.capName,scope:r.scope,state:r.state,generation:r.generation,epoch:a,lastChange:t,sourceNodeId:r.sourceNodeId};this.snapshot.set(e,s),n++,this.logPerRecord(r.scope,`readiness: ${r.capName} (${Et(r.scope)}) → ${r.state} (hydrated${i===null?``:` update`}, gen=${r.generation.slice(0,6)})`);let c={capName:r.capName,scope:r.scope,state:r.state,epoch:a,generation:r.generation,sourceNodeId:`hydrated`,ts:t,durationInPrevState:o};for(let e of this.subscriptions)if(e.capName===r.capName&&Ot(e.scope,r.scope))try{e.handler(c)}catch(e){this.logger?.warn(`readiness hydrate handler threw for ${r.capName}: ${e.message??String(e)}`)}}return n}logPerRecord(e,t){if(this.logger){if(e.type===`device`){if(!this.verboseDeviceScopeLogs)return;this.logger.debug(t,{tags:{deviceId:e.deviceId}});return}this.logger.debug(t)}}isLocallyAuthoritative(e){return e.scope.type===`node`?e.scope.nodeId===this.sourceNodeId:e.sourceNodeId===this.sourceNodeId}getAll(){return new Map(this.snapshot)}emitReady(e,t){this.emitTransition(e,t,`ready`)}emitStarting(e,t){this.emitTransition(e,t,`starting`)}emitDown(e,t){this.emitTransition(e,t,`down`)}awaitReady(e,t,n={}){let r=n.timeoutMs??1/0,i=this.now();return this.get(e,t)?.state===`ready`?Promise.resolve():n.signal?.aborted?Promise.reject(n.signal.reason??Error(`aborted`)):new Promise((a,o)=>{let s=!1,c=this.onReadyState(e,t,e=>{e.state===`ready`&&(s||(s=!0,f(),a()))}),l=Number.isFinite(r)?setTimeout(()=>{s||(s=!0,f(),o(new wt(e,t,this.now()-i)))},r):null,u=setInterval(()=>{s||this.logger?.warn(`readiness: still awaiting ${e} (${Et(t)}) after ${this.now()-i}ms`)},3e4);typeof u.unref==`function`&&u.unref();let d=()=>{s||(s=!0,f(),o(n.signal?.reason??Error(`aborted`)))};n.signal?.addEventListener(`abort`,d,{once:!0});function f(){c(),l!==null&&clearTimeout(l),clearInterval(u),n.signal?.removeEventListener(`abort`,d)}})}onReadyState(e,t,n){let r={capName:e,scope:t,handler:n};this.subscriptions.add(r);let i=this.get(e,t);return i!==null&&queueMicrotask(()=>{this.subscriptions.has(r)&&n({capName:e,scope:t,state:i.state,epoch:i.epoch,generation:i.generation,sourceNodeId:this.sourceNodeId,ts:i.lastChange,durationInPrevState:0})}),()=>{this.subscriptions.delete(r)}}emitTransition(e,t,n){let r=this.now();this.bus.emit(Le(`system.ready-state`,{type:`capability`,id:e,nodeId:this.sourceNodeId},{capName:e,scope:t,state:n,generation:this.generation,sourceNodeId:this.sourceNodeId,ts:r}))}ingest(e){if(typeof e?.capName!=`string`||e.state!==`ready`&&e.state!==`starting`&&e.state!==`down`||typeof e.generation!=`string`||e.scope?.type!==`global`&&e.scope?.type!==`node`&&e.scope?.type!==`device`)return;let t=Tt(e.capName,e.scope),n=this.snapshot.get(t)??null,r=this.now(),i;if(i=n===null?+(e.state===`ready`):n.generation!==e.generation&&e.state===`ready`?n.epoch+1:n.epoch,n!==null&&n.generation===e.generation&&n.state===e.state)return;let a=n===null?0:Math.max(0,r-n.lastChange),o={capName:e.capName,scope:e.scope,state:e.state,generation:e.generation,epoch:i,lastChange:r,sourceNodeId:e.sourceNodeId};this.snapshot.set(t,o);let s={capName:e.capName,scope:e.scope,state:e.state,epoch:i,generation:e.generation,sourceNodeId:e.sourceNodeId,ts:e.ts,durationInPrevState:a};this.logPerRecord(e.scope,`readiness: ${e.capName} (${Et(e.scope)}) → ${e.state} epoch=${i} gen=${e.generation.slice(0,6)} (prev ${a}ms)`);for(let t of this.subscriptions)if(t.capName===e.capName&&Ot(t.scope,e.scope))try{t.handler(s)}catch(t){this.logger?.warn(`readiness handler threw for ${e.capName}: ${t.message??String(t)}`)}}synthesizeDownForNode(e){let t=this.now();for(let[n,r]of this.snapshot){if(r.state===`down`||!(r.scope.type===`node`&&r.scope.nodeId===e||r.scope.type===`device`&&r.sourceNodeId===e))continue;let i=Math.max(0,t-r.lastChange),a={...r,state:`down`,lastChange:t};this.snapshot.set(n,a);let o={capName:r.capName,scope:r.scope,state:`down`,epoch:r.epoch,generation:r.generation,sourceNodeId:this.sourceNodeId,ts:t,durationInPrevState:i};this.logPerRecord(r.scope,`readiness: ${r.capName} (${Et(r.scope)}) → down (synthesized from agent.offline ${e})`);for(let e of this.subscriptions)if(e.capName===r.capName&&Ot(e.scope,r.scope))try{e.handler(o)}catch(e){this.logger?.warn(`readiness handler threw during agent.offline demux for ${r.capName}: ${e.message??String(e)}`)}}}};function At(){return typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).slice(2,14)}function jt(e,t){for(let{capName:n,scope:r}of t)e.emitDown(n,r)}var Mt=`__camstackNodePin`;function Nt(e){return{context:{[Mt]:Pt(e)}}}function Pt(e){let t=e.split(`/`)[0];return t===void 0||t.length===0?e:t}function Ft(e){if(typeof e!=`object`||!e)return;let t=Reflect.get(e,Mt);return typeof t==`string`?t:void 0}u({field:c().min(1),on:p(`advance`)});var It=`session`;function Lt(e){return e.mount?e.mount:e.deviceNative===!0?{kind:`device-native`}:e.scope===`device`&&e.kind===`wrapper`?{kind:`device-scoped`}:e.mode===`collection`?{kind:`collection`}:{kind:`singleton`}}var Rt=`provider`,zt=u({id:c(),title:c(),description:c().optional(),style:x([`card`,`accordion`]).optional(),defaultCollapsed:C().optional(),columns:d([p(1),p(2),p(3),p(4)]).optional(),tab:c().optional(),location:x([`settings`,`top-tab`]).optional(),order:i().optional(),fields:S(m())}),Bt=u({tabs:S(u({id:c(),label:c(),icon:c(),order:i().optional()})).optional(),sections:S(zt)}).nullable(),Vt={getDeviceSettingsContribution:{input:u({deviceId:i()}),output:Bt,kind:`query`,auth:`protected`},getDeviceLiveContribution:{input:u({deviceId:i()}),output:Bt,kind:`query`,auth:`protected`},applyDeviceSettingsPatch:{input:u({deviceId:i(),patch:y(c(),o())}),output:u({success:p(!0)}),kind:`mutation`,auth:`admin`}},Ht={getStatus:{input:u({deviceId:i()}),output:o().nullable(),kind:`query`,auth:`protected`}};function Ut(e){let t=e.methods;return e.exposesDeviceSettings&&(t={...Vt,...t}),e.status&&(t={...Ht,...t}),t}function T(e,t,n){return{input:e,output:t,kind:n?.kind??`query`,...n?.auth===void 0?{}:{auth:n.auth},...n?.access===void 0?{}:{access:n.access},...n?.caller===void 0?{}:{caller:n.caller},timeoutMs:n?.timeoutMs}}function Wt(e,t,n){return{...T(e,t,n),systemOnly:!0}}function Gt(e,t,n){return{...T(e,t,n),providerOptional:!0}}function Kt(e){return{data:e}}function qt(e){return e?.deviceConfig!==void 0}var Jt=u({staticDir:c()}),Yt=u({version:c()}),Xt={name:`admin-ui`,scope:`system`,mode:`singleton`,internal:!0,methods:{getStaticDir:T(v(),Jt,{auth:`admin`}),getVersion:T(v(),Yt,{auth:`admin`})}};function Zt(e){return e}function Qt(e,t,n){return{input:e,output:t,kind:n?.kind??`query`,auth:n?.auth??`protected`,scope:n?.scope??{kind:`system`},...n?.caller?{caller:`required`}:{}}}function $t(e,t,n){return{input:e,output:t,kind:n?.kind??`query`,auth:n?.auth??`protected`,scope:{kind:`device`,...n?.deviceTypes?{deviceTypes:n.deviceTypes}:{}}}}function en(e){let t={};for(let[n,r]of Object.entries(e))t[n]={kind:r.kind,auth:r.auth,scope:r.scope,...r.caller===`required`?{caller:`required`}:{}};return t}var tn=256,nn=u({staticDir:c()}),rn=u({version:c()}),an={name:`viewer-ui`,scope:`system`,mode:`singleton`,internal:!0,methods:{getStaticDir:T(v(),nn,{auth:`admin`}),getVersion:T(v(),rn,{auth:`admin`})}},on=u({id:c(),label:c(),protocol:x([`rtsp`,`rtmp`,`annexb`,`http-mjpeg`,`webrtc`,`custom`]),url:c().optional(),resolution:u({width:i(),height:i()}).optional(),fps:i().optional(),bitrate:i().optional(),codec:c().optional(),profileHint:w.optional(),sdp:c().optional()}),sn=u({key:c(),value:o()}),cn=u({source:c(),data:y(c(),o())}),ln={name:`device-ops`,scope:`device`,deviceNative:!0,mode:`singleton`,methods:{getStreamSources:T(u({deviceId:i()}),S(on)),getConfigEntries:T(u({deviceId:i()}),S(sn)),setConfig:T(u({deviceId:i(),values:y(c(),o())}),v(),{kind:`mutation`,auth:`admin`}),runAction:T(u({deviceId:i(),action:c().min(1),input:o()}),o(),{kind:`mutation`}),removeDevice:T(u({deviceId:i()}),v(),{kind:`mutation`,auth:`admin`}),getSettingsSchema:T(u({deviceId:i()}),o().nullable()),getRawState:T(u({deviceId:i()}),cn.nullable(),{auth:`protected`})}},un=`device.state-changed`;function dn(e){let t=new Map,n=new Map,r=null,i=(e,t)=>`${e}:${t}`,a=()=>{r||e.live?.onEvent&&(r=e.live.onEvent.subscribe({category:un},{onData:e=>{let r=e.data;if(!r||typeof r.deviceId!=`number`||typeof r.capName!=`string`)return;let a=i(r.deviceId,r.capName);t.set(a,r.slice);let o=n.get(a);if(o)for(let e of o)try{e(r.slice)}catch{}}}))},o=()=>{r&&(n.size>0||(r.unsubscribe(),r=null))};return{read(e,n){return t.get(i(e,n))},async refresh(r,a){let o=await e.deviceState.getCapSlice.query({deviceId:r,capName:a}),s=i(r,a);t.set(s,o??void 0);let c=n.get(s);if(c)for(let e of c)try{e(o??void 0)}catch{}},watch(e,t,r){let s=i(e,t),c=n.get(s);return c||(c=new Set,n.set(s,c)),c.add(r),a(),()=>{c.delete(r),c.size===0&&n.delete(s),o()}},async write(t,n,r){await e.deviceState.setCapSlice.mutate({deviceId:t,capName:n,slice:r})}}}function fn(e){let{eventBus:t,api:n}=e,r=new Map,i=new Map,a=null,o=(e,t)=>`${e}:${t}`,s=(e,t,n)=>{let a=o(e,t);r.set(a,n);let s=i.get(a);if(s)for(let e of s)try{e(n)}catch{}},c=()=>{a||=t.subscribe({category:un},e=>{let t=e.data;if(typeof t!=`object`||!t)return;let n=Reflect.get(t,`deviceId`),r=Reflect.get(t,`capName`);typeof n!=`number`||typeof r!=`string`||s(n,r,Reflect.get(t,`slice`))})},l=()=>{a!==null&&(i.size>0||(a(),a=null))};return{read(e,t){return r.get(o(e,t))},async refresh(e,t){s(e,t,await n.deviceState.getCapSlice.query({deviceId:e,capName:t})??void 0)},watch(e,t,n){let r=o(e,t),a=i.get(r);return a||(a=new Set,i.set(r,a)),a.add(n),c(),()=>{a.delete(n),a.size===0&&i.delete(r),l()}},async write(e,t,r){await n.deviceState.setCapSlice.mutate({deviceId:e,capName:t,slice:r})}}}function pn(e,t,n){let r=(e,t)=>`${e}:${t}`;return{read(t,n){return e.get(t)?.get(n)},async refresh(){},watch(e,n,i){let a=r(e,n),o=t.get(a);return o||(o=new Set,t.set(a,o)),o.add(i),()=>{o.delete(i),o.size===0&&t.delete(a)}},async write(e,t,r){if(!n)throw Error(`createMirrorSource: write requires an api reference — pass it as the third argument when constructing the source`);await n.deviceState.setCapSlice.mutate({deviceId:e,capName:t,slice:r})}}}function E(e,t,n){let r=mn(e)?e:dn(e);return{get value(){return r.read(t,n)},refresh(){return r.refresh(t,n)},subscribe(e){let i=r.watch(t,n,t=>{try{e(t)}catch{}});try{e(r.read(t,n))}catch{}return r.read(t,n)===void 0&&r.refresh(t,n).catch(()=>void 0),i},async set(e){await r.write(t,n,e)},async patch(e){let i={...r.read(t,n),...e};await r.write(t,n,i)}}}function mn(e){return typeof e.read==`function`&&typeof e.watch==`function`}function hn(e,t,n){let r=e,i=n?.stateSource??dn(e);function a(e,n){let r=typeof e==`object`&&e?e:{};return n===void 0?{...r,deviceId:t.deviceId}:{...r,deviceId:t.deviceId,nodeId:n}}function o(e,t,n,i,a){let o=r[e]?.[t];if(!o)throw Error(`DeviceProxy: api has no '${e}.${t}'`);let s=o;return n===`mutation`?s.mutate(i):n===`subscription`?s.subscribe(i,a):s.query(i)}function s(e,n,r,i,s,c){return o(n,r,i,a(s,t.entries.find(t=>t.capName===e)?.providerNodeId),c)}function c(e,t,n,r,i){return o(e,t,n,a(r,void 0),i)}function l(e){return t.entries.some(t=>t.capName===e)}let u={setChildHidden:e=>s(`accessories`,`accessories`,`setChildHidden`,`mutation`,e),getStatus:e=>s(`accessories`,`accessories`,`getStatus`,`query`,e)},d={getStatus:e=>s(`air-quality-sensor`,`airQualitySensor`,`getStatus`,`query`,e)},f={arm:e=>s(`alarm-panel`,`alarmPanel`,`arm`,`mutation`,e),disarm:e=>s(`alarm-panel`,`alarmPanel`,`disarm`,`mutation`,e),trigger:e=>s(`alarm-panel`,`alarmPanel`,`trigger`,`mutation`,e),getStatus:e=>s(`alarm-panel`,`alarmPanel`,`getStatus`,`query`,e)},p={getStatus:e=>s(`ambient-light-sensor`,`ambientLightSensor`,`getStatus`,`query`,e)},m={resolveDeviceSettings:e=>s(`audio-analysis`,`audioAnalysis`,`resolveDeviceSettings`,`query`,e),getDeviceSettingsContribution:e=>s(`audio-analysis`,`audioAnalysis`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>s(`audio-analysis`,`audioAnalysis`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>s(`audio-analysis`,`audioAnalysis`,`applyDeviceSettingsPatch`,`mutation`,e)},h={getCurrentSnapshot:e=>s(`audio-metrics`,`audioMetrics`,`getCurrentSnapshot`,`query`,e),getHistory:e=>s(`audio-metrics`,`audioMetrics`,`getHistory`,`query`,e)},g={enable:e=>s(`automation-control`,`automationControl`,`enable`,`mutation`,e),disable:e=>s(`automation-control`,`automationControl`,`disable`,`mutation`,e),trigger:e=>s(`automation-control`,`automationControl`,`trigger`,`mutation`,e),getStatus:e=>s(`automation-control`,`automationControl`,`getStatus`,`query`,e)},_={wakeForStream:e=>s(`battery`,`battery`,`wakeForStream`,`mutation`,e),getStatus:e=>s(`battery`,`battery`,`getStatus`,`query`,e)},ee={getStatus:e=>s(`binary`,`binary`,`getStatus`,`query`,e)},te={setBrightness:e=>s(`brightness`,`brightness`,`setBrightness`,`mutation`,e),getStatus:e=>s(`brightness`,`brightness`,`getStatus`,`query`,e)},v={press:e=>s(`button`,`button`,`press`,`mutation`,e)},ne={getCredentials:e=>s(`camera-credentials`,`cameraCredentials`,`getCredentials`,`query`,e),getStatus:e=>s(`camera-credentials`,`cameraCredentials`,`getStatus`,`query`,e)},re={getLayout:e=>s(`camera-grid-layout`,`cameraGridLayout`,`getLayout`,`query`,e),saveLayout:e=>s(`camera-grid-layout`,`cameraGridLayout`,`saveLayout`,`mutation`,e),getDeviceSettingsContribution:e=>s(`camera-grid-layout`,`cameraGridLayout`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>s(`camera-grid-layout`,`cameraGridLayout`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>s(`camera-grid-layout`,`cameraGridLayout`,`applyDeviceSettingsPatch`,`mutation`,e)},y={getDeviceSettingsContribution:e=>s(`camera-pipeline-config`,`cameraPipelineConfig`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>s(`camera-pipeline-config`,`cameraPipelineConfig`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>s(`camera-pipeline-config`,`cameraPipelineConfig`,`applyDeviceSettingsPatch`,`mutation`,e)},ie={getCameraStreams:e=>s(`camera-streams`,`cameraStreams`,`getCameraStreams`,`query`,e),getBrokerStreams:e=>s(`camera-streams`,`cameraStreams`,`getBrokerStreams`,`query`,e),getRtspEntries:e=>s(`camera-streams`,`cameraStreams`,`getRtspEntries`,`query`,e),getProfileRtspEntries:e=>s(`camera-streams`,`cameraStreams`,`getProfileRtspEntries`,`query`,e),pickStream:e=>s(`camera-streams`,`cameraStreams`,`pickStream`,`query`,e)},ae={getStatus:e=>s(`carbon-monoxide`,`carbonMonoxide`,`getStatus`,`query`,e)},b={setMode:e=>s(`climate-control`,`climateControl`,`setMode`,`mutation`,e),setFanMode:e=>s(`climate-control`,`climateControl`,`setFanMode`,`mutation`,e),setPreset:e=>s(`climate-control`,`climateControl`,`setPreset`,`mutation`,e),setTarget:e=>s(`climate-control`,`climateControl`,`setTarget`,`mutation`,e),setTargetRange:e=>s(`climate-control`,`climateControl`,`setTargetRange`,`mutation`,e),setTargetHumidity:e=>s(`climate-control`,`climateControl`,`setTargetHumidity`,`mutation`,e),setSwingVertical:e=>s(`climate-control`,`climateControl`,`setSwingVertical`,`mutation`,e),setSwingHorizontal:e=>s(`climate-control`,`climateControl`,`setSwingHorizontal`,`mutation`,e),getStatus:e=>s(`climate-control`,`climateControl`,`getStatus`,`query`,e)},oe={setColor:e=>s(`color`,`color`,`setColor`,`mutation`,e),getStatus:e=>s(`color`,`color`,`getStatus`,`query`,e)},se={getStatus:e=>s(`connectivity`,`connectivity`,`getStatus`,`query`,e)},x={reset:e=>s(`consumables`,`consumables`,`reset`,`mutation`,e),getStatus:e=>s(`consumables`,`consumables`,`getStatus`,`query`,e)},ce={getStatus:e=>s(`contact`,`contact`,`getStatus`,`query`,e)},le={setValue:e=>s(`control`,`control`,`setValue`,`mutation`,e),getStatus:e=>s(`control`,`control`,`getStatus`,`query`,e)},ue={open:e=>s(`cover`,`cover`,`open`,`mutation`,e),close:e=>s(`cover`,`cover`,`close`,`mutation`,e),stop:e=>s(`cover`,`cover`,`stop`,`mutation`,e),setPosition:e=>s(`cover`,`cover`,`setPosition`,`mutation`,e),setTiltPosition:e=>s(`cover`,`cover`,`setTiltPosition`,`mutation`,e),getStatus:e=>s(`cover`,`cover`,`getStatus`,`query`,e)},de={getOptions:e=>s(`day-night`,`dayNight`,`getOptions`,`query`,e),setSettings:e=>s(`day-night`,`dayNight`,`setSettings`,`mutation`,e),getStatus:e=>s(`day-night`,`dayNight`,`getStatus`,`query`,e)},S={getDeviceSettingsContribution:e=>s(`detection-pipeline`,`detectionPipeline`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>s(`detection-pipeline`,`detectionPipeline`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>s(`detection-pipeline`,`detectionPipeline`,`applyDeviceSettingsPatch`,`mutation`,e)},fe={getAdminLink:e=>s(`device-admin-link`,`deviceAdminLink`,`getAdminLink`,`query`,e)},pe={listDiscovered:e=>s(`device-discovery`,`deviceDiscovery`,`listDiscovered`,`query`,e),refreshDiscovery:e=>s(`device-discovery`,`deviceDiscovery`,`refreshDiscovery`,`mutation`,e),adoptDevice:e=>s(`device-discovery`,`deviceDiscovery`,`adoptDevice`,`mutation`,e),releaseDevice:e=>s(`device-discovery`,`deviceDiscovery`,`releaseDevice`,`mutation`,e),getStatus:e=>s(`device-discovery`,`deviceDiscovery`,`getStatus`,`query`,e)},C={listSources:e=>s(`device-extension`,`deviceExtension`,`listSources`,`query`,e),listSlots:e=>s(`device-extension`,`deviceExtension`,`listSlots`,`query`,e),listCandidates:e=>s(`device-extension`,`deviceExtension`,`listCandidates`,`query`,e),setSlot:e=>s(`device-extension`,`deviceExtension`,`setSlot`,`mutation`,e)},me={getStreamSources:e=>s(`device-ops`,`deviceOps`,`getStreamSources`,`query`,e),getConfigEntries:e=>s(`device-ops`,`deviceOps`,`getConfigEntries`,`query`,e),setConfig:e=>s(`device-ops`,`deviceOps`,`setConfig`,`mutation`,e),runAction:e=>s(`device-ops`,`deviceOps`,`runAction`,`mutation`,e),removeDevice:e=>s(`device-ops`,`deviceOps`,`removeDevice`,`mutation`,e),getSettingsSchema:e=>s(`device-ops`,`deviceOps`,`getSettingsSchema`,`query`,e),getRawState:e=>s(`device-ops`,`deviceOps`,`getRawState`,`query`,e)},he={getStatus:e=>s(`device-status`,`deviceStatus`,`getStatus`,`query`,e)},ge={getStatus:e=>s(`doorbell`,`doorbell`,`getStatus`,`query`,e)},_e={getStatus:e=>s(`enum-sensor`,`enumSensor`,`getStatus`,`query`,e)},ve={getStatus:e=>s(`event-emitter`,`eventEmitter`,`getStatus`,`query`,e)},ye={setPercentage:e=>s(`fan-control`,`fanControl`,`setPercentage`,`mutation`,e),setPreset:e=>s(`fan-control`,`fanControl`,`setPreset`,`mutation`,e),setDirection:e=>s(`fan-control`,`fanControl`,`setDirection`,`mutation`,e),setOscillating:e=>s(`fan-control`,`fanControl`,`setOscillating`,`mutation`,e),getStatus:e=>s(`fan-control`,`fanControl`,`getStatus`,`query`,e)},be={getStatus:e=>s(`feature-probe`,`featureProbe`,`getStatus`,`query`,e)},xe={getStatus:e=>s(`flood`,`flood`,`getStatus`,`query`,e)},Se={getStatus:e=>s(`gas`,`gas`,`getStatus`,`query`,e)},Ce={setOn:e=>s(`humidifier`,`humidifier`,`setOn`,`mutation`,e),setTargetHumidity:e=>s(`humidifier`,`humidifier`,`setTargetHumidity`,`mutation`,e),setMode:e=>s(`humidifier`,`humidifier`,`setMode`,`mutation`,e),getStatus:e=>s(`humidifier`,`humidifier`,`getStatus`,`query`,e)},we={getStatus:e=>s(`humidity-sensor`,`humiditySensor`,`getStatus`,`query`,e)},Te={getStatus:e=>s(`image`,`image`,`getStatus`,`query`,e)},Ee={getOptions:e=>s(`image-settings`,`imageSettings`,`getOptions`,`query`,e),setSettings:e=>s(`image-settings`,`imageSettings`,`setSettings`,`mutation`,e),getStatus:e=>s(`image-settings`,`imageSettings`,`getStatus`,`query`,e)},De={startSession:e=>s(`intercom`,`intercom`,`startSession`,`mutation`,e),handleAnswer:e=>s(`intercom`,`intercom`,`handleAnswer`,`mutation`,e),stopSession:e=>s(`intercom`,`intercom`,`stopSession`,`mutation`,e),startTalkSession:e=>s(`intercom`,`intercom`,`startTalkSession`,`mutation`,e),pushTalkAudio:e=>s(`intercom`,`intercom`,`pushTalkAudio`,`mutation`,e),endTalkSession:e=>s(`intercom`,`intercom`,`endTalkSession`,`mutation`,e),getStatus:e=>s(`intercom`,`intercom`,`getStatus`,`query`,e)},Oe={startMowing:e=>s(`lawn-mower-control`,`lawnMowerControl`,`startMowing`,`mutation`,e),pause:e=>s(`lawn-mower-control`,`lawnMowerControl`,`pause`,`mutation`,e),dock:e=>s(`lawn-mower-control`,`lawnMowerControl`,`dock`,`mutation`,e),getStatus:e=>s(`lawn-mower-control`,`lawnMowerControl`,`getStatus`,`query`,e)},ke={lock:e=>s(`lock-control`,`lockControl`,`lock`,`mutation`,e),unlock:e=>s(`lock-control`,`lockControl`,`unlock`,`mutation`,e),open:e=>s(`lock-control`,`lockControl`,`open`,`mutation`,e),getStatus:e=>s(`lock-control`,`lockControl`,`getStatus`,`query`,e)},Ae={play:e=>s(`media-player`,`mediaPlayer`,`play`,`mutation`,e),pause:e=>s(`media-player`,`mediaPlayer`,`pause`,`mutation`,e),stop:e=>s(`media-player`,`mediaPlayer`,`stop`,`mutation`,e),next:e=>s(`media-player`,`mediaPlayer`,`next`,`mutation`,e),previous:e=>s(`media-player`,`mediaPlayer`,`previous`,`mutation`,e),seek:e=>s(`media-player`,`mediaPlayer`,`seek`,`mutation`,e),setVolume:e=>s(`media-player`,`mediaPlayer`,`setVolume`,`mutation`,e),setMute:e=>s(`media-player`,`mediaPlayer`,`setMute`,`mutation`,e),setShuffle:e=>s(`media-player`,`mediaPlayer`,`setShuffle`,`mutation`,e),setRepeat:e=>s(`media-player`,`mediaPlayer`,`setRepeat`,`mutation`,e),selectSource:e=>s(`media-player`,`mediaPlayer`,`selectSource`,`mutation`,e),playMedia:e=>s(`media-player`,`mediaPlayer`,`playMedia`,`mutation`,e),getStatus:e=>s(`media-player`,`mediaPlayer`,`getStatus`,`query`,e)},je={isDetected:e=>s(`motion`,`motion`,`isDetected`,`query`,e),getStatus:e=>s(`motion`,`motion`,`getStatus`,`query`,e)},Me={analyze:e=>s(`motion-detection`,`motionDetection`,`analyze`,`mutation`,e),removeCamera:e=>s(`motion-detection`,`motionDetection`,`removeCamera`,`mutation`,e),reset:e=>s(`motion-detection`,`motionDetection`,`reset`,`mutation`,e),getDeviceSettingsContribution:e=>s(`motion-detection`,`motionDetection`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>s(`motion-detection`,`motionDetection`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>s(`motion-detection`,`motionDetection`,`applyDeviceSettingsPatch`,`mutation`,e)},Ne={setMotionTrigger:e=>s(`motion-trigger`,`motionTrigger`,`setMotionTrigger`,`mutation`,e),getStatus:e=>s(`motion-trigger`,`motionTrigger`,`getStatus`,`query`,e)},Pe={getOptions:e=>s(`motion-zones`,`motionZones`,`getOptions`,`query`,e),setZone:e=>s(`motion-zones`,`motionZones`,`setZone`,`mutation`,e),getStatus:e=>s(`motion-zones`,`motionZones`,`getStatus`,`query`,e)},Fe={getOptions:e=>s(`native-object-detection`,`nativeObjectDetection`,`getOptions`,`query`,e),setSettings:e=>s(`native-object-detection`,`nativeObjectDetection`,`setSettings`,`mutation`,e),setEnabled:e=>s(`native-object-detection`,`nativeObjectDetection`,`setEnabled`,`mutation`,e),getStatus:e=>s(`native-object-detection`,`nativeObjectDetection`,`getStatus`,`query`,e)},Ie={move:e=>s(`navigation`,`navigation`,`move`,`mutation`,e),stop:e=>s(`navigation`,`navigation`,`stop`,`mutation`,e),goToPoint:e=>s(`navigation`,`navigation`,`goToPoint`,`mutation`,e),listActions:e=>s(`navigation`,`navigation`,`listActions`,`query`,e),runAction:e=>s(`navigation`,`navigation`,`runAction`,`mutation`,e),playSound:e=>s(`navigation`,`navigation`,`playSound`,`mutation`,e),setLightOn:e=>s(`navigation`,`navigation`,`setLightOn`,`mutation`,e),setLightMode:e=>s(`navigation`,`navigation`,`setLightMode`,`mutation`,e),setLightLevel:e=>s(`navigation`,`navigation`,`setLightLevel`,`mutation`,e),getFeatures:e=>s(`navigation`,`navigation`,`getFeatures`,`query`,e),getStatus:e=>s(`navigation`,`navigation`,`getStatus`,`query`,e)},Le={getStatus:e=>s(`network-link`,`networkLink`,`getStatus`,`query`,e)},Re={send:e=>s(`notifier`,`notifier`,`send`,`mutation`,e),cancel:e=>s(`notifier`,`notifier`,`cancel`,`mutation`,e),getStatus:e=>s(`notifier`,`notifier`,`getStatus`,`query`,e)},ze={getStatus:e=>s(`numeric-sensor`,`numericSensor`,`getStatus`,`query`,e)},Be={setOverlay:e=>s(`osd`,`osd`,`setOverlay`,`mutation`,e),getStatus:e=>s(`osd`,`osd`,`getStatus`,`query`,e)},Ve={feed:e=>s(`pet-feeder`,`petFeeder`,`feed`,`mutation`,e),cancelFeed:e=>s(`pet-feeder`,`petFeeder`,`cancelFeed`,`mutation`,e),resetDesiccant:e=>s(`pet-feeder`,`petFeeder`,`resetDesiccant`,`mutation`,e),markFoodReplenished:e=>s(`pet-feeder`,`petFeeder`,`markFoodReplenished`,`mutation`,e),callPet:e=>s(`pet-feeder`,`petFeeder`,`callPet`,`mutation`,e),playSound:e=>s(`pet-feeder`,`petFeeder`,`playSound`,`mutation`,e),setChildLock:e=>s(`pet-feeder`,`petFeeder`,`setChildLock`,`mutation`,e),setIndicatorLight:e=>s(`pet-feeder`,`petFeeder`,`setIndicatorLight`,`mutation`,e),setFeedSound:e=>s(`pet-feeder`,`petFeeder`,`setFeedSound`,`mutation`,e),setVolume:e=>s(`pet-feeder`,`petFeeder`,`setVolume`,`mutation`,e),getStatus:e=>s(`pet-feeder`,`petFeeder`,`getStatus`,`query`,e)},He={getActiveTracks:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getActiveTracks`,`query`,e),getTrack:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getTrack`,`query`,e),listTracks:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listTracks`,`query`,e),listRecentTracks:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listRecentTracks`,`query`,e),clearTracks:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`clearTracks`,`mutation`,e),getMotionEvents:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getMotionEvents`,`query`,e),getObjectEvents:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getObjectEvents`,`query`,e),getAudioEvents:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getAudioEvents`,`query`,e),listEventKinds:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listEventKinds`,`query`,e),listEventKindsBatch:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listEventKindsBatch`,`query`,e),getSensorEvents:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getSensorEvents`,`query`,e),getKeyEvents:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getKeyEvents`,`query`,e),getKeyEventsBatch:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getKeyEventsBatch`,`query`,e),readLongTermSeries:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`readLongTermSeries`,`query`,e),getEventDensity:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getEventDensity`,`query`,e),getEventDensityBatch:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getEventDensityBatch`,`query`,e),pruneEventsBefore:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`pruneEventsBefore`,`mutation`,e),pruneTracksBefore:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`pruneTracksBefore`,`mutation`,e),wipeAllAnalytics:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`wipeAllAnalytics`,`mutation`,e),reconcileFromDisk:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`reconcileFromDisk`,`mutation`,e),deleteTracks:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`deleteTracks`,`mutation`,e),setTrackFlags:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`setTrackFlags`,`mutation`,e),listArchivedDebugNotes:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listArchivedDebugNotes`,`query`,e),setTrackRelation:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`setTrackRelation`,`mutation`,e),clearTrackRelation:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`clearTrackRelation`,`mutation`,e),setTrackPurity:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`setTrackPurity`,`mutation`,e),listTrackRelations:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listTrackRelations`,`query`,e),listBirthDecisions:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listBirthDecisions`,`query`,e),getEventStoreFootprint:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getEventStoreFootprint`,`query`,e),getEventMediaFootprintByKind:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getEventMediaFootprintByKind`,`query`,e),pruneEvents:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`pruneEvents`,`mutation`,e),deleteDeviceEvents:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`deleteDeviceEvents`,`mutation`,e),pauseForStorageMigration:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`pauseForStorageMigration`,`mutation`,e),resumeForStorageMigration:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`resumeForStorageMigration`,`mutation`,e),refreshStorageLocationsForMigration:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`refreshStorageLocationsForMigration`,`mutation`,e),startStorageMigrationMove:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`startStorageMigrationMove`,`mutation`,e),getStorageMigrationMoveStatus:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getStorageMigrationMoveStatus`,`query`,e),cancelStorageMigrationMove:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`cancelStorageMigrationMove`,`mutation`,e),relocateMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`relocateMedia`,`mutation`,e),countUnstampedEventMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`countUnstampedEventMedia`,`query`,e),countRelocatableMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`countRelocatableMedia`,`query`,e),listRelocateMediaJobs:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listRelocateMediaJobs`,`query`,e),cancelRelocateMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`cancelRelocateMedia`,`mutation`,e),listOpsLog:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listOpsLog`,`query`,e),reclaimDebugMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`reclaimDebugMedia`,`mutation`,e),getMediaReclaimStatus:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getMediaReclaimStatus`,`query`,e),getTrainingExportSummary:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getTrainingExportSummary`,`query`,e),getTrainingExportUrl:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getTrainingExportUrl`,`query`,e),listRetrainStaging:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listRetrainStaging`,`query`,e),listRetrainFrames:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listRetrainFrames`,`query`,e),selectRetrainFrames:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`selectRetrainFrames`,`mutation`,e),deselectRetrainFrame:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`deselectRetrainFrame`,`mutation`,e),getRetrainFrameImage:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getRetrainFrameImage`,`query`,e),proposeRetrainAnnotations:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`proposeRetrainAnnotations`,`mutation`,e),listRetrainAnnotations:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listRetrainAnnotations`,`query`,e),saveRetrainAnnotations:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`saveRetrainAnnotations`,`mutation`,e),completeRetrainTrack:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`completeRetrainTrack`,`mutation`,e),restageRetrainTrack:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`restageRetrainTrack`,`mutation`,e),getRetrainExportUrl:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getRetrainExportUrl`,`query`,e),getEventMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getEventMedia`,`query`,e),getTrackMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getTrackMedia`,`query`,e),listTrackMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listTrackMedia`,`query`,e),listEventMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`listEventMedia`,`query`,e),ownersWithMedia:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`ownersWithMedia`,`query`,e),searchObjectEvents:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`searchObjectEvents`,`query`,e),wipeObjectEmbeddings:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`wipeObjectEmbeddings`,`mutation`,e),rebuildObjectEmbeddings:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`rebuildObjectEmbeddings`,`mutation`,e),getObjectEmbeddingRebuildStatus:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getObjectEmbeddingRebuildStatus`,`query`,e),getDeviceSettingsContribution:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>s(`pipeline-analytics`,`pipelineAnalytics`,`applyDeviceSettingsPatch`,`mutation`,e)},Ue={getStatus:e=>s(`power-meter`,`powerMeter`,`getStatus`,`query`,e)},We={getStatus:e=>s(`presence`,`presence`,`getStatus`,`query`,e)},Ge={getStatus:e=>s(`pressure-sensor`,`pressureSensor`,`getStatus`,`query`,e)},Ke={getOptions:e=>s(`privacy-mask`,`privacyMask`,`getOptions`,`query`,e),setMask:e=>s(`privacy-mask`,`privacyMask`,`setMask`,`mutation`,e),setAudioEnabled:e=>s(`privacy-mask`,`privacyMask`,`setAudioEnabled`,`mutation`,e),getStatus:e=>s(`privacy-mask`,`privacyMask`,`getStatus`,`query`,e)},qe={move:e=>s(`ptz`,`ptz`,`move`,`mutation`,e),continuousMove:e=>s(`ptz`,`ptz`,`continuousMove`,`mutation`,e),stop:e=>s(`ptz`,`ptz`,`stop`,`mutation`,e),getPresets:e=>s(`ptz`,`ptz`,`getPresets`,`query`,e),goToPreset:e=>s(`ptz`,`ptz`,`goToPreset`,`mutation`,e),savePreset:e=>s(`ptz`,`ptz`,`savePreset`,`mutation`,e),deletePreset:e=>s(`ptz`,`ptz`,`deletePreset`,`mutation`,e),getOptions:e=>s(`ptz`,`ptz`,`getOptions`,`query`,e),goHome:e=>s(`ptz`,`ptz`,`goHome`,`mutation`,e),getHomePreset:e=>s(`ptz`,`ptz`,`getHomePreset`,`query`,e),setHomePreset:e=>s(`ptz`,`ptz`,`setHomePreset`,`mutation`,e),captureHomeHere:e=>s(`ptz`,`ptz`,`captureHomeHere`,`mutation`,e),getHomeReturn:e=>s(`ptz`,`ptz`,`getHomeReturn`,`query`,e),setHomeReturn:e=>s(`ptz`,`ptz`,`setHomeReturn`,`mutation`,e),getPosition:e=>s(`ptz`,`ptz`,`getPosition`,`query`,e),setAutofocus:e=>s(`ptz`,`ptz`,`setAutofocus`,`mutation`,e),getStatus:e=>s(`ptz`,`ptz`,`getStatus`,`query`,e)},Je={getStatus:e=>s(`ptz-autotrack`,`ptzAutotrack`,`getStatus`,`query`,e),setEnabled:e=>s(`ptz-autotrack`,`ptzAutotrack`,`setEnabled`,`mutation`,e),getSettings:e=>s(`ptz-autotrack`,`ptzAutotrack`,`getSettings`,`query`,e),setSettings:e=>s(`ptz-autotrack`,`ptzAutotrack`,`setSettings`,`mutation`,e)},Ye={reboot:e=>s(`reboot`,`reboot`,`reboot`,`mutation`,e)},Xe={listSources:e=>s(`recording`,`recording`,`listSources`,`query`,e),getAvailability:e=>s(`recording`,`recording`,`getAvailability`,`query`,e),getDaysWithRecordings:e=>s(`recording`,`recording`,`getDaysWithRecordings`,`query`,e),getPlayback:e=>s(`recording`,`recording`,`getPlayback`,`query`,e),getPlaybackOptions:e=>s(`recording`,`recording`,`getPlaybackOptions`,`query`,e)},Ze={getOptions:e=>s(`recording-onboard`,`recordingOnboard`,`getOptions`,`query`,e),setSettings:e=>s(`recording-onboard`,`recordingOnboard`,`setSettings`,`mutation`,e),getStatus:e=>s(`recording-onboard`,`recordingOnboard`,`getStatus`,`query`,e)},Qe={getStatus:e=>s(`recording-signal`,`recordingSignal`,`getStatus`,`query`,e)},$e={listScenes:e=>s(`scene-monitor`,`sceneMonitor`,`listScenes`,`query`,e),listScenesBatch:e=>s(`scene-monitor`,`sceneMonitor`,`listScenesBatch`,`query`,e),createScene:e=>s(`scene-monitor`,`sceneMonitor`,`createScene`,`mutation`,e),updateScene:e=>s(`scene-monitor`,`sceneMonitor`,`updateScene`,`mutation`,e),deleteScene:e=>s(`scene-monitor`,`sceneMonitor`,`deleteScene`,`mutation`,e),captureReference:e=>s(`scene-monitor`,`sceneMonitor`,`captureReference`,`mutation`,e),deleteReference:e=>s(`scene-monitor`,`sceneMonitor`,`deleteReference`,`mutation`,e),recheckNow:e=>s(`scene-monitor`,`sceneMonitor`,`recheckNow`,`mutation`,e),resetScene:e=>s(`scene-monitor`,`sceneMonitor`,`resetScene`,`mutation`,e),getStatus:e=>s(`scene-monitor`,`sceneMonitor`,`getStatus`,`query`,e)},et={run:e=>s(`script-runner`,`scriptRunner`,`run`,`mutation`,e),stop:e=>s(`script-runner`,`scriptRunner`,`stop`,`mutation`,e),getStatus:e=>s(`script-runner`,`scriptRunner`,`getStatus`,`query`,e)},tt={getStatus:e=>s(`smoke`,`smoke`,`getStatus`,`query`,e)},nt={getSnapshot:e=>s(`snapshot`,`snapshot`,`getSnapshot`,`query`,e),invalidateCache:e=>s(`snapshot`,`snapshot`,`invalidateCache`,`mutation`,e),getSnapshotOverview:e=>s(`snapshot`,`snapshot`,`getSnapshotOverview`,`query`,e),getDebugState:e=>s(`snapshot`,`snapshot`,`getDebugState`,`query`,e),getSnapshotLinks:e=>s(`snapshot`,`snapshot`,`getSnapshotLinks`,`query`,e),getStatus:e=>s(`snapshot`,`snapshot`,`getStatus`,`query`,e),getDeviceSettingsContribution:e=>s(`snapshot`,`snapshot`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>s(`snapshot`,`snapshot`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>s(`snapshot`,`snapshot`,`applyDeviceSettingsPatch`,`mutation`,e)},w={getCatalog:e=>s(`stream-catalog`,`streamCatalog`,`getCatalog`,`query`,e)},rt={getOptions:e=>s(`stream-params`,`streamParams`,`getOptions`,`query`,e),setProfile:e=>s(`stream-params`,`streamParams`,`setProfile`,`mutation`,e),getConfigSchema:e=>s(`stream-params`,`streamParams`,`getConfigSchema`,`query`,e),getStatus:e=>s(`stream-params`,`streamParams`,`getStatus`,`query`,e)},it={listSignals:e=>s(`stream-signals`,`streamSignals`,`listSignals`,`query`,e)},at={setState:e=>s(`switch`,`switch`,`setState`,`mutation`,e),getStatus:e=>s(`switch`,`switch`,`getStatus`,`query`,e)},ot={getStatus:e=>s(`tamper`,`tamper`,`getStatus`,`query`,e)},st={getStatus:e=>s(`temperature-sensor`,`temperatureSensor`,`getStatus`,`query`,e)},ct={installUpdate:e=>s(`update`,`update`,`installUpdate`,`mutation`,e),getStatus:e=>s(`update`,`update`,`getStatus`,`query`,e)},lt={start:e=>s(`vacuum-control`,`vacuumControl`,`start`,`mutation`,e),pause:e=>s(`vacuum-control`,`vacuumControl`,`pause`,`mutation`,e),stop:e=>s(`vacuum-control`,`vacuumControl`,`stop`,`mutation`,e),returnToBase:e=>s(`vacuum-control`,`vacuumControl`,`returnToBase`,`mutation`,e),locate:e=>s(`vacuum-control`,`vacuumControl`,`locate`,`mutation`,e),setFanSpeed:e=>s(`vacuum-control`,`vacuumControl`,`setFanSpeed`,`mutation`,e),getStatus:e=>s(`vacuum-control`,`vacuumControl`,`getStatus`,`query`,e)},ut={open:e=>s(`valve`,`valve`,`open`,`mutation`,e),close:e=>s(`valve`,`valve`,`close`,`mutation`,e),stop:e=>s(`valve`,`valve`,`stop`,`mutation`,e),setPosition:e=>s(`valve`,`valve`,`setPosition`,`mutation`,e),getStatus:e=>s(`valve`,`valve`,`getStatus`,`query`,e)},dt={getStatus:e=>s(`vibration`,`vibration`,`getStatus`,`query`,e)},ft={listClips:e=>s(`videoclips`,`videoclips`,`listClips`,`query`,e),listSources:e=>s(`videoclips`,`videoclips`,`listSources`,`query`,e),getClipPlayback:e=>s(`videoclips`,`videoclips`,`getClipPlayback`,`query`,e),readClipBytes:e=>s(`videoclips`,`videoclips`,`readClipBytes`,`query`,e),offerClipBytes:e=>s(`videoclips`,`videoclips`,`offerClipBytes`,`query`,e),dialClipStream:e=>s(`videoclips`,`videoclips`,`dialClipStream`,`query`,e),getPlaybackOptions:e=>s(`videoclips`,`videoclips`,`getPlaybackOptions`,`query`,e)},pt={setTargetTemp:e=>s(`water-heater`,`waterHeater`,`setTargetTemp`,`mutation`,e),setOperationMode:e=>s(`water-heater`,`waterHeater`,`setOperationMode`,`mutation`,e),setAway:e=>s(`water-heater`,`waterHeater`,`setAway`,`mutation`,e),getStatus:e=>s(`water-heater`,`waterHeater`,`getStatus`,`query`,e)},mt={getStatus:e=>s(`weather`,`weather`,`getStatus`,`query`,e)},ht={listStreams:e=>s(`webrtc-session`,`webrtcSession`,`listStreams`,`query`,e),createSession:e=>s(`webrtc-session`,`webrtcSession`,`createSession`,`mutation`,e),handleOffer:e=>s(`webrtc-session`,`webrtcSession`,`handleOffer`,`mutation`,e),handleAnswer:e=>s(`webrtc-session`,`webrtcSession`,`handleAnswer`,`mutation`,e),addIceCandidate:e=>s(`webrtc-session`,`webrtcSession`,`addIceCandidate`,`mutation`,e),getIceCandidates:e=>s(`webrtc-session`,`webrtcSession`,`getIceCandidates`,`query`,e),closeSession:e=>s(`webrtc-session`,`webrtcSession`,`closeSession`,`mutation`,e),hasAdaptiveBitrate:e=>s(`webrtc-session`,`webrtcSession`,`hasAdaptiveBitrate`,`query`,e),getSessionState:e=>s(`webrtc-session`,`webrtcSession`,`getSessionState`,`query`,e),applyDownlinkProbe:e=>s(`webrtc-session`,`webrtcSession`,`applyDownlinkProbe`,`mutation`,e),getSessionDebug:e=>s(`webrtc-session`,`webrtcSession`,`getSessionDebug`,`query`,e)},gt={getCurrentSnapshot:e=>s(`zone-analytics`,`zoneAnalytics`,`getCurrentSnapshot`,`query`,e),getCurrentSnapshotBatch:e=>s(`zone-analytics`,`zoneAnalytics`,`getCurrentSnapshotBatch`,`query`,e),getZoneHistory:e=>s(`zone-analytics`,`zoneAnalytics`,`getZoneHistory`,`query`,e),getCameraHistory:e=>s(`zone-analytics`,`zoneAnalytics`,`getCameraHistory`,`query`,e),getUnzonedHistory:e=>s(`zone-analytics`,`zoneAnalytics`,`getUnzonedHistory`,`query`,e)},_t={listRules:e=>s(`zone-rules`,`zoneRules`,`listRules`,`query`,e),setRules:e=>s(`zone-rules`,`zoneRules`,`setRules`,`mutation`,e)},vt={listZones:e=>s(`zones`,`zones`,`listZones`,`query`,e),addZone:e=>s(`zones`,`zones`,`addZone`,`mutation`,e),removeZone:e=>s(`zones`,`zones`,`removeZone`,`mutation`,e),updateZone:e=>s(`zones`,`zones`,`updateZone`,`mutation`,e)},yt={getDeviceSettings:e=>c(`addonSettings`,`getDeviceSettings`,`query`,e),updateDeviceSettings:e=>c(`addonSettings`,`updateDeviceSettings`,`mutation`,e)},bt={detachDevice:e=>c(`audioAnalyzer`,`detachDevice`,`mutation`,e)},xt={getStatus:e=>c(`deviceAdoption`,`getStatus`,`query`,e)},St={getDeviceSettingsContribution:e=>c(`deviceExport`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>c(`deviceExport`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>c(`deviceExport`,`applyDeviceSettingsPatch`,`mutation`,e)},Ct={loadConfig:e=>c(`deviceManager`,`loadConfig`,`query`,e),loadRuntimeState:e=>c(`deviceManager`,`loadRuntimeState`,`query`,e),loadMeta:e=>c(`deviceManager`,`loadMeta`,`query`,e),setName:e=>c(`deviceManager`,`setName`,`mutation`,e),setLocation:e=>c(`deviceManager`,`setLocation`,`mutation`,e),setType:e=>c(`deviceManager`,`setType`,`mutation`,e),setIntegrationId:e=>c(`deviceManager`,`setIntegrationId`,`mutation`,e),setLinkDeviceId:e=>c(`deviceManager`,`setLinkDeviceId`,`mutation`,e),setPrimaryChildEntityId:e=>c(`deviceManager`,`setPrimaryChildEntityId`,`mutation`,e),setChildLayout:e=>c(`deviceManager`,`setChildLayout`,`mutation`,e),setDisplay:e=>c(`deviceManager`,`setDisplay`,`mutation`,e),getWireableFields:e=>c(`deviceManager`,`getWireableFields`,`query`,e),setRole:e=>c(`deviceManager`,`setRole`,`mutation`,e),applyInitialMeta:e=>c(`deviceManager`,`applyInitialMeta`,`mutation`,e),setMetadata:e=>c(`deviceManager`,`setMetadata`,`mutation`,e),setDisabled:e=>c(`deviceManager`,`setDisabled`,`mutation`,e),getDevice:e=>c(`deviceManager`,`getDevice`,`query`,e),getLinkedDevices:e=>c(`deviceManager`,`getLinkedDevices`,`query`,e),getStreamSources:e=>c(`deviceManager`,`getStreamSources`,`query`,e),getConfigSchema:e=>c(`deviceManager`,`getConfigSchema`,`query`,e),getSettingsSchema:e=>c(`deviceManager`,`getSettingsSchema`,`query`,e),updateConfig:e=>c(`deviceManager`,`updateConfig`,`mutation`,e),enable:e=>c(`deviceManager`,`enable`,`mutation`,e),disable:e=>c(`deviceManager`,`disable`,`mutation`,e),remove:e=>c(`deviceManager`,`remove`,`mutation`,e),getStreamProfileMap:e=>c(`deviceManager`,`getStreamProfileMap`,`query`,e),setStreamProfileMap:e=>c(`deviceManager`,`setStreamProfileMap`,`mutation`,e),probeStreams:e=>c(`deviceManager`,`probeStreams`,`mutation`,e),getBindings:e=>c(`deviceManager`,`getBindings`,`query`,e),setWrapperActive:e=>c(`deviceManager`,`setWrapperActive`,`mutation`,e),getWrapperActivation:e=>c(`deviceManager`,`getWrapperActivation`,`query`,e),getDeviceSettingsAggregate:e=>c(`deviceManager`,`getDeviceSettingsAggregate`,`query`,e),getDeviceLiveInfoAggregate:e=>c(`deviceManager`,`getDeviceLiveInfoAggregate`,`query`,e),getDeviceAggregate:e=>c(`deviceManager`,`getDeviceAggregate`,`query`,e),runDeviceAction:e=>c(`deviceManager`,`runDeviceAction`,`mutation`,e),updateDeviceField:e=>c(`deviceManager`,`updateDeviceField`,`mutation`,e),updateDeviceFieldsBatch:e=>c(`deviceManager`,`updateDeviceFieldsBatch`,`mutation`,e),testField:e=>c(`deviceManager`,`testField`,`mutation`,e),getDeviceStatusAggregate:e=>c(`deviceManager`,`getDeviceStatusAggregate`,`query`,e)},wt={getSnapshot:e=>c(`deviceState`,`getSnapshot`,`query`,e),getCapSlice:e=>c(`deviceState`,`getCapSlice`,`query`,e),setCapSlice:e=>c(`deviceState`,`setCapSlice`,`mutation`,e),claimFields:e=>c(`deviceState`,`claimFields`,`mutation`,e),patchOwnedFields:e=>c(`deviceState`,`patchOwnedFields`,`mutation`,e),releaseClaim:e=>c(`deviceState`,`releaseClaim`,`mutation`,e),getNativeCapSlice:e=>c(`deviceState`,`getNativeCapSlice`,`query`,e)},Tt={listRecentFaces:e=>c(`faceGallery`,`listRecentFaces`,`query`,e),getFaceByTrack:e=>c(`faceGallery`,`getFaceByTrack`,`query`,e)},Et={getDeviceStats:e=>c(`networkQuality`,`getDeviceStats`,`query`,e),reportClientStats:e=>c(`networkQuality`,`reportClientStats`,`mutation`,e)},Dt={setDeviceMuted:e=>c(`notificationRules`,`setDeviceMuted`,`mutation`,e)},Ot={getDeviceOsd:e=>c(`osdManager`,`getDeviceOsd`,`query`,e),getSourceCatalog:e=>c(`osdManager`,`getSourceCatalog`,`query`,e),setSlotBinding:e=>c(`osdManager`,`setSlotBinding`,`mutation`,e),clearSlotBinding:e=>c(`osdManager`,`clearSlotBinding`,`mutation`,e),previewSlot:e=>c(`osdManager`,`previewSlot`,`mutation`,e),renderDevice:e=>c(`osdManager`,`renderDevice`,`mutation`,e)},kt={runPipeline:e=>c(`pipelineExecutor`,`runPipeline`,`mutation`,e),runPipelineBatch:e=>c(`pipelineExecutor`,`runPipelineBatch`,`mutation`,e)},At={assignPipeline:e=>c(`pipelineOrchestrator`,`assignPipeline`,`mutation`,e),unassignPipeline:e=>c(`pipelineOrchestrator`,`unassignPipeline`,`mutation`,e),setPipelineDevicePin:e=>c(`pipelineOrchestrator`,`setPipelineDevicePin`,`mutation`,e),getPipelineDevicePin:e=>c(`pipelineOrchestrator`,`getPipelineDevicePin`,`query`,e),getPipelineAssignment:e=>c(`pipelineOrchestrator`,`getPipelineAssignment`,`query`,e),getCameraMetrics:e=>c(`pipelineOrchestrator`,`getCameraMetrics`,`query`,e),assignAudio:e=>c(`pipelineOrchestrator`,`assignAudio`,`mutation`,e),unassignAudio:e=>c(`pipelineOrchestrator`,`unassignAudio`,`mutation`,e),getAudioAssignment:e=>c(`pipelineOrchestrator`,`getAudioAssignment`,`query`,e),getCameraSettings:e=>c(`pipelineOrchestrator`,`getCameraSettings`,`query`,e),setCameraStepToggle:e=>c(`pipelineOrchestrator`,`setCameraStepToggle`,`mutation`,e),getCameraStepOverrides:e=>c(`pipelineOrchestrator`,`getCameraStepOverrides`,`query`,e),setCameraStepOverride:e=>c(`pipelineOrchestrator`,`setCameraStepOverride`,`mutation`,e),setCameraStepSettings:e=>c(`pipelineOrchestrator`,`setCameraStepSettings`,`mutation`,e),setCameraPipelineForAgent:e=>c(`pipelineOrchestrator`,`setCameraPipelineForAgent`,`mutation`,e),resolvePipeline:e=>c(`pipelineOrchestrator`,`resolvePipeline`,`query`,e),getCameraSwitches:e=>c(`pipelineOrchestrator`,`getCameraSwitches`,`query`,e),setCameraSwitch:e=>c(`pipelineOrchestrator`,`setCameraSwitch`,`mutation`,e),getCameraStatus:e=>c(`pipelineOrchestrator`,`getCameraStatus`,`query`,e),getDeviceSettingsContribution:e=>c(`pipelineOrchestrator`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>c(`pipelineOrchestrator`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>c(`pipelineOrchestrator`,`applyDeviceSettingsPatch`,`mutation`,e)},jt={detachCamera:e=>c(`pipelineRunner`,`detachCamera`,`mutation`,e),getCameraMetrics:e=>c(`pipelineRunner`,`getCameraMetrics`,`query`,e),requestOccupancyBurst:e=>c(`pipelineRunner`,`requestOccupancyBurst`,`mutation`,e),runDetailSubtree:e=>c(`pipelineRunner`,`runDetailSubtree`,`mutation`,e),parkTrackFrame:e=>c(`pipelineRunner`,`parkTrackFrame`,`mutation`,e),getParkedTrackFrame:e=>c(`pipelineRunner`,`getParkedTrackFrame`,`query`,e),releaseParkedTrackFrames:e=>c(`pipelineRunner`,`releaseParkedTrackFrames`,`mutation`,e)},Mt={listPlates:e=>c(`plateGallery`,`listPlates`,`query`,e),getPlateByTrack:e=>c(`plateGallery`,`getPlateByTrack`,`query`,e)},Nt={getDeviceConfig:e=>c(`recordingArchive`,`getDeviceConfig`,`query`,e),locateSegment:e=>c(`recordingArchive`,`locateSegment`,`query`,e),readSegmentBytes:e=>c(`recordingArchive`,`readSegmentBytes`,`query`,e),readGopBytes:e=>c(`recordingArchive`,`readGopBytes`,`query`,e),readWindowBytes:e=>c(`recordingArchive`,`readWindowBytes`,`query`,e),setDeviceConfig:e=>c(`recordingArchive`,`setDeviceConfig`,`mutation`,e),rescanStorage:e=>c(`recordingArchive`,`rescanStorage`,`mutation`,e),pruneFootage:e=>c(`recordingArchive`,`pruneFootage`,`mutation`,e),deleteFootprint:e=>c(`recordingArchive`,`deleteFootprint`,`mutation`,e),renderGif:e=>c(`recordingArchive`,`renderGif`,`mutation`,e),renderClip:e=>c(`recordingArchive`,`renderClip`,`mutation`,e),getStatus:e=>c(`recordingArchive`,`getStatus`,`query`,e),getDeviceSettingsContribution:e=>c(`recordingArchive`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>c(`recordingArchive`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>c(`recordingArchive`,`applyDeviceSettingsPatch`,`mutation`,e)},Pt={listExports:e=>c(`recordingExport`,`listExports`,`query`,e)},Ft={reportStreamSignal:e=>c(`streamBroker`,`reportStreamSignal`,`mutation`,e),publishCameraStream:e=>c(`streamBroker`,`publishCameraStream`,`mutation`,e),retractCameraStream:e=>c(`streamBroker`,`retractCameraStream`,`mutation`,e),assignProfile:e=>c(`streamBroker`,`assignProfile`,`mutation`,e),unassignProfile:e=>c(`streamBroker`,`unassignProfile`,`mutation`,e),forgetDeviceHardware:e=>c(`streamBroker`,`forgetDeviceHardware`,`mutation`,e),renderPreBufferClip:e=>c(`streamBroker`,`renderPreBufferClip`,`mutation`,e),produceEventMedia:e=>c(`streamBroker`,`produceEventMedia`,`mutation`,e),restartProfile:e=>c(`streamBroker`,`restartProfile`,`mutation`,e),getDeviceAudioMute:e=>c(`streamBroker`,`getDeviceAudioMute`,`query`,e),setDeviceAudioMute:e=>c(`streamBroker`,`setDeviceAudioMute`,`mutation`,e),getDeviceSettingsContribution:e=>c(`streamBroker`,`getDeviceSettingsContribution`,`query`,e),getDeviceLiveContribution:e=>c(`streamBroker`,`getDeviceLiveContribution`,`query`,e),applyDeviceSettingsPatch:e=>c(`streamBroker`,`applyDeviceSettingsPatch`,`mutation`,e)};return{deviceId:t.deviceId,binding:t,state:{airQualitySensor:E(i,t.deviceId,`air-quality-sensor`),alarmPanel:E(i,t.deviceId,`alarm-panel`),ambientLightSensor:E(i,t.deviceId,`ambient-light-sensor`),audioMetrics:E(i,t.deviceId,`audio-metrics`),automationControl:E(i,t.deviceId,`automation-control`),battery:E(i,t.deviceId,`battery`),binary:E(i,t.deviceId,`binary`),brightness:E(i,t.deviceId,`brightness`),cameraStreams:E(i,t.deviceId,`camera-streams`),carbonMonoxide:E(i,t.deviceId,`carbon-monoxide`),climateControl:E(i,t.deviceId,`climate-control`),color:E(i,t.deviceId,`color`),connectivity:E(i,t.deviceId,`connectivity`),consumables:E(i,t.deviceId,`consumables`),contact:E(i,t.deviceId,`contact`),control:E(i,t.deviceId,`control`),cover:E(i,t.deviceId,`cover`),dayNight:E(i,t.deviceId,`day-night`),deviceDiscovery:E(i,t.deviceId,`device-discovery`),deviceStatus:E(i,t.deviceId,`device-status`),doorbell:E(i,t.deviceId,`doorbell`),enumSensor:E(i,t.deviceId,`enum-sensor`),eventEmitter:E(i,t.deviceId,`event-emitter`),fanControl:E(i,t.deviceId,`fan-control`),featureProbe:E(i,t.deviceId,`feature-probe`),flood:E(i,t.deviceId,`flood`),gas:E(i,t.deviceId,`gas`),humidifier:E(i,t.deviceId,`humidifier`),humiditySensor:E(i,t.deviceId,`humidity-sensor`),image:E(i,t.deviceId,`image`),imageSettings:E(i,t.deviceId,`image-settings`),intercom:E(i,t.deviceId,`intercom`),lawnMowerControl:E(i,t.deviceId,`lawn-mower-control`),lockControl:E(i,t.deviceId,`lock-control`),mediaPlayer:E(i,t.deviceId,`media-player`),motion:E(i,t.deviceId,`motion`),motionTrigger:E(i,t.deviceId,`motion-trigger`),motionZones:E(i,t.deviceId,`motion-zones`),nativeObjectDetection:E(i,t.deviceId,`native-object-detection`),navigation:E(i,t.deviceId,`navigation`),networkLink:E(i,t.deviceId,`network-link`),notifier:E(i,t.deviceId,`notifier`),numericSensor:E(i,t.deviceId,`numeric-sensor`),petFeeder:E(i,t.deviceId,`pet-feeder`),powerMeter:E(i,t.deviceId,`power-meter`),presence:E(i,t.deviceId,`presence`),pressureSensor:E(i,t.deviceId,`pressure-sensor`),privacyMask:E(i,t.deviceId,`privacy-mask`),ptzAutotrack:E(i,t.deviceId,`ptz-autotrack`),recordingOnboard:E(i,t.deviceId,`recording-onboard`),recordingSignal:E(i,t.deviceId,`recording-signal`),sceneMonitor:E(i,t.deviceId,`scene-monitor`),scriptRunner:E(i,t.deviceId,`script-runner`),smoke:E(i,t.deviceId,`smoke`),streamCatalog:E(i,t.deviceId,`stream-catalog`),streamParams:E(i,t.deviceId,`stream-params`),streamSignals:E(i,t.deviceId,`stream-signals`),switch:E(i,t.deviceId,`switch`),tamper:E(i,t.deviceId,`tamper`),temperatureSensor:E(i,t.deviceId,`temperature-sensor`),update:E(i,t.deviceId,`update`),vacuumControl:E(i,t.deviceId,`vacuum-control`),valve:E(i,t.deviceId,`valve`),vibration:E(i,t.deviceId,`vibration`),waterHeater:E(i,t.deviceId,`water-heater`),weather:E(i,t.deviceId,`weather`),zoneAnalytics:E(i,t.deviceId,`zone-analytics`),zoneRules:E(i,t.deviceId,`zone-rules`),zones:E(i,t.deviceId,`zones`)},...l(`accessories`)?{accessories:u}:{},...l(`air-quality-sensor`)?{airQualitySensor:d}:{},...l(`alarm-panel`)?{alarmPanel:f}:{},...l(`ambient-light-sensor`)?{ambientLightSensor:p}:{},...l(`audio-analysis`)?{audioAnalysis:m}:{},...l(`audio-metrics`)?{audioMetrics:h}:{},...l(`automation-control`)?{automationControl:g}:{},...l(`battery`)?{battery:_}:{},...l(`binary`)?{binary:ee}:{},...l(`brightness`)?{brightness:te}:{},...l(`button`)?{button:v}:{},...l(`camera-credentials`)?{cameraCredentials:ne}:{},...l(`camera-grid-layout`)?{cameraGridLayout:re}:{},...l(`camera-pipeline-config`)?{cameraPipelineConfig:y}:{},...l(`camera-streams`)?{cameraStreams:ie}:{},...l(`carbon-monoxide`)?{carbonMonoxide:ae}:{},...l(`climate-control`)?{climateControl:b}:{},...l(`color`)?{color:oe}:{},...l(`connectivity`)?{connectivity:se}:{},...l(`consumables`)?{consumables:x}:{},...l(`contact`)?{contact:ce}:{},...l(`control`)?{control:le}:{},...l(`cover`)?{cover:ue}:{},...l(`day-night`)?{dayNight:de}:{},...l(`detection-pipeline`)?{detectionPipeline:S}:{},...l(`device-admin-link`)?{deviceAdminLink:fe}:{},...l(`device-discovery`)?{deviceDiscovery:pe}:{},...l(`device-extension`)?{deviceExtension:C}:{},...l(`device-ops`)?{deviceOps:me}:{},...l(`device-status`)?{deviceStatus:he}:{},...l(`doorbell`)?{doorbell:ge}:{},...l(`enum-sensor`)?{enumSensor:_e}:{},...l(`event-emitter`)?{eventEmitter:ve}:{},...l(`fan-control`)?{fanControl:ye}:{},...l(`feature-probe`)?{featureProbe:be}:{},...l(`flood`)?{flood:xe}:{},...l(`gas`)?{gas:Se}:{},...l(`humidifier`)?{humidifier:Ce}:{},...l(`humidity-sensor`)?{humiditySensor:we}:{},...l(`image`)?{image:Te}:{},...l(`image-settings`)?{imageSettings:Ee}:{},...l(`intercom`)?{intercom:De}:{},...l(`lawn-mower-control`)?{lawnMowerControl:Oe}:{},...l(`lock-control`)?{lockControl:ke}:{},...l(`media-player`)?{mediaPlayer:Ae}:{},...l(`motion`)?{motion:je}:{},...l(`motion-detection`)?{motionDetection:Me}:{},...l(`motion-trigger`)?{motionTrigger:Ne}:{},...l(`motion-zones`)?{motionZones:Pe}:{},...l(`native-object-detection`)?{nativeObjectDetection:Fe}:{},...l(`navigation`)?{navigation:Ie}:{},...l(`network-link`)?{networkLink:Le}:{},...l(`notifier`)?{notifier:Re}:{},...l(`numeric-sensor`)?{numericSensor:ze}:{},...l(`osd`)?{osd:Be}:{},...l(`pet-feeder`)?{petFeeder:Ve}:{},...l(`pipeline-analytics`)?{pipelineAnalytics:He}:{},...l(`power-meter`)?{powerMeter:Ue}:{},...l(`presence`)?{presence:We}:{},...l(`pressure-sensor`)?{pressureSensor:Ge}:{},...l(`privacy-mask`)?{privacyMask:Ke}:{},...l(`ptz`)?{ptz:qe}:{},...l(`ptz-autotrack`)?{ptzAutotrack:Je}:{},...l(`reboot`)?{reboot:Ye}:{},...l(`recording`)?{recording:Xe}:{},...l(`recording-onboard`)?{recordingOnboard:Ze}:{},...l(`recording-signal`)?{recordingSignal:Qe}:{},...l(`scene-monitor`)?{sceneMonitor:$e}:{},...l(`script-runner`)?{scriptRunner:et}:{},...l(`smoke`)?{smoke:tt}:{},...l(`snapshot`)?{snapshot:nt}:{},...l(`stream-catalog`)?{streamCatalog:w}:{},...l(`stream-params`)?{streamParams:rt}:{},...l(`stream-signals`)?{streamSignals:it}:{},...l(`switch`)?{switch:at}:{},...l(`tamper`)?{tamper:ot}:{},...l(`temperature-sensor`)?{temperatureSensor:st}:{},...l(`update`)?{update:ct}:{},...l(`vacuum-control`)?{vacuumControl:lt}:{},...l(`valve`)?{valve:ut}:{},...l(`vibration`)?{vibration:dt}:{},...l(`videoclips`)?{videoclips:ft}:{},...l(`water-heater`)?{waterHeater:pt}:{},...l(`weather`)?{weather:mt}:{},...l(`webrtc-session`)?{webrtcSession:ht}:{},...l(`zone-analytics`)?{zoneAnalytics:gt}:{},...l(`zone-rules`)?{zoneRules:_t}:{},...l(`zones`)?{zones:vt}:{},addonSettings:yt,audioAnalyzer:bt,deviceAdoption:xt,deviceExport:St,deviceManager:Ct,deviceState:wt,faceGallery:Tt,networkQuality:Et,notificationRules:Dt,osdManager:Ot,pipelineExecutor:kt,pipelineOrchestrator:At,pipelineRunner:jt,plateGallery:Mt,recordingArchive:Nt,recordingExport:Pt,streamBroker:Ft}}var gn=new Set(`accessories.air-quality-sensor.alarm-panel.ambient-light-sensor.audio-analysis.audio-metrics.automation-control.battery.binary.brightness.button.camera-credentials.camera-grid-layout.camera-pipeline-config.camera-streams.carbon-monoxide.climate-control.color.connectivity.consumables.contact.control.cover.day-night.detection-pipeline.device-admin-link.device-discovery.device-extension.device-ops.device-status.doorbell.enum-sensor.event-emitter.fan-control.feature-probe.flood.gas.humidifier.humidity-sensor.image.image-settings.intercom.lawn-mower-control.lock-control.media-player.motion.motion-detection.motion-trigger.motion-zones.native-object-detection.navigation.network-link.notifier.numeric-sensor.osd.pet-feeder.pipeline-analytics.power-meter.presence.pressure-sensor.privacy-mask.ptz.ptz-autotrack.reboot.recording.recording-onboard.recording-signal.scene-monitor.script-runner.smoke.snapshot.stream-catalog.stream-params.stream-signals.switch.tamper.temperature-sensor.update.vacuum-control.valve.vibration.videoclips.water-heater.weather.webrtc-session.zone-analytics.zone-rules.zones`.split(`.`));function _n(e){return gn.has(e)}var vn=[15e3,6e4,5*6e4,15*6e4,30*6e4,60*6e4,90*6e4];function yn(e){return JSON.parse(e)}function bn(e){return typeof e!=`object`||!e||Array.isArray(e)?null:{...e}}function xn(e){return Array.isArray(e)?e:[]}function Sn(e,t=``){return typeof e==`string`?e:t}function Cn(e,t=0){return typeof e==`number`?e:t}function wn(e,t=!1){return typeof e==`boolean`?e:t}function Tn(e){try{return bn(yn(e))}catch{return null}}function En(e){try{let t=yn(e);return Array.isArray(t)?t:null}catch{return null}}function Dn(e){return new Promise(t=>setTimeout(t,Math.max(0,e)))}function On(e,t){return t.aborted?Promise.resolve():new Promise(n=>{let r=setTimeout(()=>{t.removeEventListener(`abort`,i),n()},Math.max(0,e)),i=()=>{clearTimeout(r),t.removeEventListener(`abort`,i),n()};t.addEventListener(`abort`,i,{once:!0})})}var D=function(e){return e.Camera=`camera`,e.Hub=`hub`,e.Light=`light`,e.Siren=`siren`,e.Switch=`switch`,e.Sensor=`sensor`,e.Thermostat=`thermostat`,e.Climate=`climate`,e.Button=`button`,e.EventEmitter=`event-emitter`,e.Update=`update`,e.Generic=`generic`,e.Notifier=`notifier`,e.Script=`script`,e.Automation=`automation`,e.Lock=`lock`,e.Cover=`cover`,e.Valve=`valve`,e.Humidifier=`humidifier`,e.WaterHeater=`water-heater`,e.Fan=`fan`,e.MediaPlayer=`media-player`,e.AlarmPanel=`alarm-panel`,e.Control=`control`,e.Presence=`presence`,e.Weather=`weather`,e.Vacuum=`vacuum`,e.LawnMower=`lawn-mower`,e.Container=`container`,e.Image=`image`,e.PetFeeder=`pet-feeder`,e}({}),kn=function(e){return e.BatteryOperated=`battery-operated`,e.Rebootable=`rebootable`,e.Resyncable=`resyncable`,e.NativeSnapshot=`native-snapshot`,e.DoorbellButton=`doorbell-button`,e.TwoWayAudio=`two-way-audio`,e.PanTiltZoom=`pan-tilt-zoom`,e.PtzAutotrack=`ptz-autotrack`,e.MotionTrigger=`motion-trigger`,e.LightColorRgb=`light-color-rgb`,e.LightColorHsv=`light-color-hsv`,e.LightColorMired=`light-color-mired`,e.ClimateDualSetpoint=`climate-dual-setpoint`,e.ClimateHumidity=`climate-humidity`,e.ClimateFanMode=`climate-fan-mode`,e.ClimatePreset=`climate-preset`,e.ClimateSwingVertical=`climate-swing-vertical`,e.ClimateSwingHorizontal=`climate-swing-horizontal`,e.CoverPositionable=`cover-positionable`,e.CoverTilt=`cover-tilt`,e.ValvePositionable=`valve-positionable`,e.FanSpeed=`fan-speed`,e.FanPreset=`fan-preset`,e.FanDirection=`fan-direction`,e.FanOscillating=`fan-oscillating`,e.LockPinRequired=`lock-pin-required`,e.LockOpen=`lock-open`,e.MediaPlayerSeek=`media-player-seek`,e.MediaPlayerVolume=`media-player-volume`,e.MediaPlayerMute=`media-player-mute`,e.MediaPlayerShuffle=`media-player-shuffle`,e.MediaPlayerRepeat=`media-player-repeat`,e.MediaPlayerSelectSource=`media-player-select-source`,e.MediaPlayerPlayMedia=`media-player-play-media`,e.MediaPlayerNext=`media-player-next`,e.MediaPlayerPrevious=`media-player-previous`,e.MediaPlayerStop=`media-player-stop`,e.AlarmPinRequired=`alarm-pin-required`,e.PresenceGps=`presence-gps`,e.NotifierImage=`notifier-image`,e.NotifierPriority=`notifier-priority`,e.NotifierData=`notifier-data`,e.NotifierActions=`notifier-actions`,e.NotifierRecipients=`notifier-recipients`,e.ScriptVariables=`script-variables`,e.AutomationSkipCondition=`automation-skip-condition`,e.VacuumHasMap=`vacuum-has-map`,e.VacuumHasAi=`vacuum-has-ai`,e.MowerHasMap=`mower-has-map`,e.MowerHasTargetedMowing=`mower-has-targeted-mowing`,e}({}),An=function(e){return e.ChargingDC=`charging-dc`,e.ChargingSolar=`charging-solar`,e.NotCharging=`not-charging`,e}({}),O=function(e){return e.Siren=`siren`,e.Floodlight=`floodlight`,e.Spotlight=`spotlight`,e.PirSensor=`pir-sensor`,e.Chime=`chime`,e.Autotrack=`autotrack`,e.Nightvision=`nightvision`,e.PrivacyMask=`privacy-mask`,e.Doorbell=`doorbell`,e.BinaryHelper=`binary-helper`,e.MotionSensor=`motion-sensor`,e.ContactSensor=`contact-sensor`,e.LeakSensor=`leak-sensor`,e.SmokeSensor=`smoke-sensor`,e.COSensor=`co-sensor`,e.GasSensor=`gas-sensor`,e.TamperSensor=`tamper-sensor`,e.VibrationSensor=`vibration-sensor`,e.ConnectivitySensor=`connectivity-sensor`,e.SoundSensor=`sound-sensor`,e.BinarySensor=`binary-sensor`,e.TemperatureSensor=`temperature-sensor`,e.HumiditySensor=`humidity-sensor`,e.AmbientLightSensor=`ambient-light-sensor`,e.PressureSensor=`pressure-sensor`,e.WindSensor=`wind-sensor`,e.RainSensor=`rain-sensor`,e.UvSensor=`uv-sensor`,e.SolarRadiationSensor=`solar-radiation-sensor`,e.SoilMoistureSensor=`soil-moisture-sensor`,e.PowerSensor=`power-sensor`,e.EnergySensor=`energy-sensor`,e.VoltageSensor=`voltage-sensor`,e.CurrentSensor=`current-sensor`,e.AirQualitySensor=`air-quality-sensor`,e.BatterySensor=`battery-sensor`,e.NumericSensor=`numeric-sensor`,e.EnumSensor=`enum-sensor`,e.DateTimeSensor=`datetime-sensor`,e.GenericSensor=`generic-sensor`,e.NumericControl=`numeric-control`,e.SelectControl=`select-control`,e.TextControl=`text-control`,e.DateTimeControl=`datetime-control`,e.MobilePushNotifier=`mobile-push-notifier`,e.MessagingNotifier=`messaging-notifier`,e.EmailNotifier=`email-notifier`,e.GenericNotifier=`generic-notifier`,e}({});function jn(e){return e instanceof Error?e.message:typeof e==`string`?e:String(e)}var Mn=ue(),Nn={opus:`libopus`,aac:`aac`,pcmu:`pcm_mulaw`,pcma:`pcm_alaw`},Pn={aac:{kind:`encode`,codec:`aac`,bitrateKbps:128,sampleRateHz:48e3,channels:1},opus:{kind:`encode`,codec:`opus`,bitrateKbps:64,sampleRateHz:48e3,channels:1},pcmu:{kind:`encode`,codec:`pcmu`,sampleRateHz:8e3,channels:1}};function Fn(e){return[`-hide_banner`,`-loglevel`,e]}function In(e){return!e||e===`none`||e===`copy`}function Ln(e,t){let n=[];if(In(t)||n.push(`-hwaccel`,String(t)),e.extraArgs?.length&&n.push(...e.extraArgs),e.decodeThreadCount!==void 0&&e.decodeThreadCount>0&&n.push(`-threads`,String(e.decodeThreadCount)),e.analyzeDurationUs!==void 0&&n.push(`-analyzeduration`,String(e.analyzeDurationUs)),e.probeSizeBytes!==void 0&&n.push(`-probesize`,String(e.probeSizeBytes)),e.lowDelay===!0&&n.push(`-flags`,`low_delay`),e.useWallclockTimestamps===!0&&n.push(`-use_wallclock_as_timestamps`,`1`),e.fflags?.length)for(let t of e.fflags)n.push(`-fflags`,t);if(e.rtspTransport&&n.push(`-rtsp_transport`,e.rtspTransport),e.rawVideo!==void 0){let t=e.rawVideo;n.push(`-f`,`rawvideo`,`-pix_fmt`,t.pixelFormat,`-video_size`,`${String(t.width)}x${String(t.height)}`,`-framerate`,String(t.framerate))}return n.push(`-i`,e.url),n}function Rn(e){let t=e.filterGraph;return t?{video:`[${t.videoOutLabel}]`,audio:t.audioOutLabel?`[${t.audioOutLabel}]`:`0:a:0?`}:e.extraInputs?.length?{video:`0:v:0`,audio:`0:a:0?`}:{video:null,audio:null}}function zn(e,t,n,r){if(n){if(e)throw Error(`FfmpegInvocation: video.scale cannot be combined with a filter graph — scale inside the graph instead (the -vf would feed an output the graph already feeds)`);if(t.some(e=>e===`-vf`))throw Error(`FfmpegInvocation: outputArgs carries a -vf while a filter graph feeds the same output — fold the filter into the graph`);return[]}if(t.some(e=>e===`-vf`))return[];if(!e)return r.length>0?[`-vf`,r]:[];let i=r.length>0?`,${r}`:``;return e.mode===`exact`?[`-vf`,`scale=${e.width}:${e.height}${i}`]:[`-vf`,`scale='min(${e.width},iw)':'min(${e.height},ih)':force_original_aspect_ratio=decrease:force_divisible_by=2${i}`]}function Bn(e,t){return e===void 0||!In(t)?``:`format=nv12,hwupload`}function Vn(e){let t=e.bitrateKbps;if(t===void 0)return[];let n=e.rateControl??{kind:`cap`,vbvSeconds:2},r=Math.max(1,Math.round(t*n.vbvSeconds));return[...n.kind===`cbr`?[`-b:v`,`${t}k`]:[],`-maxrate`,`${t}k`,`-bufsize`,`${r}k`]}function Hn(e,t,n,r){if(e.kind===`raw`){if(n&&e.filter!==void 0)throw Error(`FfmpegInvocation: video.filter cannot be combined with a filter graph — fold the filter into the graph`);return[...e.filter===void 0?[]:[`-vf`,e.filter],`-c:v`,`rawvideo`,`-pix_fmt`,e.pixelFormat,...e.fps===void 0?[]:[`-r`,String(e.fps)]]}if(e.kind===`copy`){if(n)throw Error("FfmpegInvocation: a filter graph produces a NEW picture, so video.kind must be `encode`");return[`-c:v`,`copy`,...e.bitstreamFilter?[`-bsf:v`,e.bitstreamFilter]:[]]}let i=r===void 0?``:Bn(r.device,r.decodeHwAccel);if(r!==void 0&&n)throw Error(`FfmpegInvocation: a hardware encode fed by a filter graph must upload INSIDE the graph — hwEncodeDevice cannot be combined with filterGraph`);let a=[...zn(e.scale,t,n,i),`-c:v`,e.encoder];return e.preset!==void 0&&a.push(`-preset`,e.preset),e.tune!==void 0&&a.push(`-tune`,e.tune),e.singleSlicePerFrame===!0&&e.encoder===`libx264`&&a.push(`-x264-params`,`sliced-threads=0`),e.profile!==void 0&&a.push(`-profile:v`,e.profile),e.level!==void 0&&a.push(`-level`,e.level),e.pixelFormat!==void 0&&a.push(`-pix_fmt`,e.pixelFormat),e.fps!==void 0&&a.push(`-r`,String(e.fps)),e.gopFrames!==void 0&&a.push(`-g`,String(e.gopFrames)),e.forceKeyFramesSeconds!==void 0&&a.push(`-force_key_frames`,`expr:gte(t,n_forced*${e.forceKeyFramesSeconds})`),e.bf!==void 0&&a.push(`-bf`,String(e.bf)),a.push(...Vn(e)),e.bitstreamFilter!==void 0&&a.push(`-bsf:v`,e.bitstreamFilter),a}function Un(e){if(e.kind===`none`)return[`-an`];if(e.kind===`copy`)return[`-c:a`,`copy`];let t=[];return e.filter!==void 0&&t.push(`-af`,e.filter),t.push(`-c:a`,Nn[e.codec]),e.application!==void 0&&t.push(`-application`,e.application),e.frameDurationMs!==void 0&&t.push(`-frame_duration`,String(e.frameDurationMs)),e.globalHeader===!0&&t.push(`-flags`,`+global_header`),e.sampleRateHz!==void 0&&t.push(`-ar`,String(e.sampleRateHz)),e.bitrateKbps!==void 0&&t.push(`-b:a`,`${e.bitrateKbps}k`),e.vbvBufferKbits!==void 0&&t.push(`-bufsize`,`${e.vbvBufferKbits}k`),e.channels!==void 0&&t.push(`-ac`,String(e.channels)),t}function Wn(e){let t=[];return e.payloadType!==void 0&&t.push(`-payload_type`,String(e.payloadType)),e.ssrc!==void 0&&t.push(`-ssrc`,String(e.ssrc)),e.sdpFile!==void 0&&t.push(`-sdp_file`,e.sdpFile),t.push(`-f`,`rtp`,e.url),t}function Gn(e){return e.kind===`stdout`&&(e.container===`h264`||e.container===`hevc`)}var Kn=`+frag_keyframe+empty_moov+default_base_moof`;function qn(e){return e.kind===`rtsp-listen`?[`-f`,`rtsp`,`-rtsp_transport`,`tcp`,`-rtsp_flags`,`listen`,e.url]:e.kind===`rtp-outputs`?[]:e.container===`mp4`?Yn(e):[`-f`,e.container,`pipe:1`]}var Jn=.9;function Yn(e){return[`-movflags`,Kn,`-min_frag_duration`,String(Math.max(0,Math.round(e.fragmentMs*Jn*1e3))),`-f`,`mp4`,`pipe:1`]}function Xn(e){return[`-map`,`0:a:0?`,...Un(e.codec===`pcma`?{kind:`encode`,codec:`pcma`,sampleRateHz:8e3,channels:1}:Pn[e.codec]),...Wn({url:e.rtpUrl,sdpFile:e.sdpFile})]}function Zn(e){return e.hwEncodeDevice===void 0?void 0:{device:e.hwEncodeDevice,decodeHwAccel:e.decodeHwAccel}}function Qn(e){let t=e.filterGraph??null,n=[...Fn(e.logLevel),...e.hwEncodeDevice===void 0?[]:[`-vaapi_device`,e.hwEncodeDevice.renderNode],...Ln(e.input,e.decodeHwAccel),...(e.extraInputs??[]).flatMap(t=>Ln(t,e.decodeHwAccel)),...t?[`-filter_complex`,t.graph]:[]],r=[...e.threadCount>0?[`-threads`,String(e.threadCount)]:[],...e.filterThreadCount!==void 0&&e.filterThreadCount>0?[`-filter_threads`,String(e.filterThreadCount)]:[]],i=Rn(e),a=i.video?[`-map`,i.video]:[],o=i.audio?[`-map`,i.audio]:[];if(e.sink.kind===`rtp-outputs`){let a=e.sink.video?[`-an`,`-map`,i.video??`0:v:0`,...Hn(e.video,e.outputArgs,t,Zn(e)),...r,...e.outputArgs,...Wn(e.sink.video)]:[],o=e.sink.audio?[`-vn`,`-map`,i.audio??`0:a:0?`,...Un(e.audio),...Wn(e.sink.audio)]:[];return[...n,...a,...o]}let s=Gn(e.sink)||e.audio.kind===`none`,c=Gn(e.sink)?[`-an`]:Un(e.audio);return[...n,...a,...Hn(e.video,e.outputArgs,t,Zn(e)),...r,...s?[]:o,...c,...e.outputArgs,...qn(e.sink),...e.audioSidecar?Xn(e.audioSidecar):[]]}var $n={videotoolbox:{h264:`h264_videotoolbox`,h265:`hevc_videotoolbox`},vaapi:{h264:`h264_vaapi`,h265:`hevc_vaapi`},qsv:{h264:`h264_qsv`,h265:`hevc_qsv`},cuda:{h264:`h264_nvenc`,h265:`hevc_nvenc`},nvdec:{h264:`h264_nvenc`,h265:`hevc_nvenc`},amf:{h264:`h264_amf`,h265:`hevc_amf`}};function er(e,t,n){let r=e===`h264`?`libx264`:`libx265`;if(!n||t===null||In(t)||t===`auto`)return r;let i=$n[t.toLowerCase()];return i?e===`h264`?i.h264:i.h265:r}function tr(e){return e===`passthrough`?{kind:`none`}:e.codec===`copy`?{kind:`copy`}:{kind:`encode`,codec:e.codec,...e.bitrateKbps===void 0?{}:{bitrateKbps:e.bitrateKbps},...e.sampleRateHz===void 0?{}:{sampleRateHz:e.sampleRateHz},...e.channels===void 0?{}:{channels:e.channels}}}function nr(e){let t=e.profile.video,n=t.codec===`copy`||e.forceReencode!==!0&&t.codec===e.sourceCodec,r=t.width!==void 0&&t.height!==void 0?{mode:`fit`,width:t.width,height:t.height}:null,i=t.codec===`h265`?`h265`:`h264`,a=n?{kind:`copy`,...e.bitstreamFilter===void 0?{}:{bitstreamFilter:e.bitstreamFilter}}:{kind:`encode`,encoder:er(i,e.decodeHwAccel,e.hardwareEncoders===!0),scale:r,...t.preset===void 0?{}:{preset:t.preset},...t.tune===void 0?{}:{tune:t.tune},...t.singleSlicePerFrame===void 0?{}:{singleSlicePerFrame:t.singleSlicePerFrame},...t.profile===void 0?{}:{profile:t.profile},...t.level===void 0?{}:{level:t.level},...e.pixelFormat===void 0?{}:{pixelFormat:e.pixelFormat},...t.fps===void 0?{}:{fps:t.fps},...t.gopFrames===void 0?{}:{gopFrames:t.gopFrames},...e.forceKeyFramesSeconds===void 0?{}:{forceKeyFramesSeconds:e.forceKeyFramesSeconds},...t.bf===void 0?{}:{bf:t.bf},...t.bitrateKbps===void 0?{}:{bitrateKbps:t.bitrateKbps},...e.rateControl===void 0?{}:{rateControl:e.rateControl},...e.bitstreamFilter===void 0?{}:{bitstreamFilter:e.bitstreamFilter}};return{logLevel:e.logLevel??`error`,decodeHwAccel:e.decodeHwAccel,input:{url:e.sourceUrl,rtspTransport:`tcp`,fflags:[`+discardcorrupt`],...e.profile.inputArgs?.length?{extraArgs:e.profile.inputArgs}:{}},video:a,audio:tr(e.profile.audio),threadCount:e.threadCount??0,outputArgs:e.profile.outputArgs??[],sink:e.sink,...e.audioSidecar===void 0?{}:{audioSidecar:e.audioSidecar}}}var rr=16*1024*1024,ir=8,ar=16,or=class{maxUnitBytes;buffer=new Uint8Array;unitStart=0;cursor=0;state=`init`;nextSequence=0;faultReason=null;interstitial=new Set;constructor(e={}){this.maxUnitBytes=e.maxUnitBytes??rr}get fault(){return this.faultReason}get pendingBytes(){return this.buffer.length-this.unitStart}get discardedInterstitialTypes(){return[...this.interstitial]}push(e){return this.faultReason!==null||e.length===0?[]:(this.append(e),this.pendingBytes>this.maxUnitBytes?this.fail(`a single fMP4 unit exceeded ${this.maxUnitBytes} bytes — this stream is not fragmented`):this.drainBoxes())}append(e){if(this.buffer.length===0){this.buffer=e.slice();return}let t=new Uint8Array(this.buffer.length+e.length);t.set(this.buffer,0),t.set(e,this.buffer.length),this.buffer=t}drainBoxes(){let e=[];for(;;){let t=this.readHeader();if(this.faultReason!==null)return e;if(t===null||this.cursor+t.totalBytes>this.buffer.length)break;let n=this.cursor,r=n+t.totalBytes;this.cursor=r;let i=this.consumeBox(t.type,n,r);if(this.faultReason!==null)return e;i!==null&&e.push(i)}return this.compact(),e}consumeBox(e,t,n){if(this.state===`init`){if(e!==`moof`)return null;if(t===this.unitStart)return this.fail(`a moof arrived before any initialisation box — there is no ftyp/moov to send`),null;let n=this.emit(`init`,this.unitStart,t);return this.unitStart=t,this.state=`fragment`,n}if(this.state===`idle`)return e===`moof`?(this.unitStart=t,this.state=`fragment`,null):(this.interstitial.add(e),this.unitStart=n,null);if(e!==`mdat`)return null;let r=this.emit(`fragment`,this.unitStart,n);return this.unitStart=n,this.state=`idle`,r}readHeader(){let e=this.buffer.length-this.cursor;if(e<ir)return null;let t=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),n=t.getUint32(this.cursor),r=String.fromCharCode(this.buffer[this.cursor+4]??0,this.buffer[this.cursor+5]??0,this.buffer[this.cursor+6]??0,this.buffer[this.cursor+7]??0);if(n===0)return this.fail(`box "${r}" declares size 0 (to EOF) — an unbounded box cannot be fragmented`),null;if(n===1){if(e<ar)return null;let n=t.getBigUint64(this.cursor+ir);return n>BigInt(this.maxUnitBytes)?(this.fail(`box "${r}" declares ${n} bytes, over the ${this.maxUnitBytes} byte bound`),null):{type:r,totalBytes:Number(n)}}return n<ir?(this.fail(`box "${r}" declares an impossible size of ${n} bytes`),null):{type:r,totalBytes:n}}emit(e,t,n){let r=this.nextSequence;return this.nextSequence+=1,{kind:e,data:this.buffer.slice(t,n),sequence:r}}compact(){this.unitStart!==0&&(this.buffer=this.buffer.slice(this.unitStart),this.cursor-=this.unitStart,this.unitStart=0)}fail(e){return this.faultReason=e,this.buffer=new Uint8Array,this.unitStart=0,this.cursor=0,[]}};function sr(e){let t=JSON.stringify(e,cr);return(0,Mn.createHash)(`sha256`).update(t??``).digest(`hex`)}function cr(e,t){if(t&&typeof t==`object`&&!Array.isArray(t)){let e=t,n={};for(let t of Object.keys(e).toSorted())n[t]=e[t];return n}return t}var lr=`8.1.2-5`,ur=`https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v${lr}`;function dr(e){return`${ur}/jellyfin-ffmpeg_${lr}_portable_${e}-gpl.tar.xz`}dr(`linux64`),dr(`linuxarm64`),dr(`macarm64`),dr(`mac64`);var fr=`CAMSTACK_FFMPEG_PATH`,pr={contact:`entryOpen`,binary:`on`,switch:`on`,motion:`detected`,flood:`flooded`,gas:`detected`,smoke:`detected`,"carbon-monoxide":`detected`,vibration:`detected`,tamper:`tampered`},mr={contact:`lastChangedAt`,binary:`lastChangedAt`,switch:`lastChangedAt`,motion:`lastDetectedAt`,flood:`lastChangedAt`,gas:`lastChangedAt`,smoke:`lastChangedAt`,"carbon-monoxide":`lastChangedAt`,vibration:`lastChangedAt`,tamper:`lastChangedAt`},hr=Object.keys(pr),gr=[`sensor`,`switch`,`control`];function _r(e){return Object.prototype.hasOwnProperty.call(pr,e)}function vr(e,t){let n=pr[e];if(n===void 0)return null;let r=t[n];return typeof r==`boolean`?r:null}function yr(e,t){let n=mr[e];if(n===void 0)return null;let r=t[n];return typeof r!=`number`||!Number.isFinite(r)||r<=0?null:r}var br=3e4;function xr(e){let t=e.changedAt,n=Math.max(e.startedAtMs,e.nowMs-e.firstSightingFreshnessMs),r=e.priorLevel===void 0&&e.level&&t!==null&&Number.isFinite(t)&&t>=n,i=e.priorLevel===!1&&e.level&&t!==null&&Number.isFinite(t);return(r||i)&&t!==null?{kind:`rise`,timestamp:t}:{kind:`none`,nextPriorLevel:e.level}}function Sr(e){let t=vr(e.capName,e.slice);return t===null?{edge:`none`,value:null,reason:_r(e.capName)?`non-boolean-value`:`unknown-cap`}:xr({level:t,changedAt:yr(e.capName,e.slice),priorLevel:e.prior,startedAtMs:e.startedAtMs,nowMs:e.nowMs,firstSightingFreshnessMs:e.firstSightingFreshnessMs}).kind===`rise`?{edge:`rising`,value:!0}:e.prior===void 0?t?{edge:`none`,value:t,reason:`baseline-seeded-stale-active`}:{edge:`none`,value:t,reason:`baseline-seeded-inactive`}:e.prior===t?{edge:`none`,value:t,reason:`no-change`}:t?{edge:`none`,value:t,reason:`missing-timestamp`}:{edge:`none`,value:t,reason:`falling-edge`}}var k=class extends Error{position;constructor(e,t){super(e),this.name=`ExpressionParseError`,this.position=t}},A=class extends Error{constructor(e){super(e),this.name=`ExpressionEvalError`}};function Cr(e){return e===`rose`||e===`count`}function j(e,t,n){if(typeof e!=`number`||!Number.isFinite(e))throw new A(`${t}: argument ${n+1} must be a finite number`);return e}function wr(e,t,n){if(typeof e!=`string`)throw new A(`${t}: argument ${n+1} must be a string`);return e}function M(e,t){if(!Number.isFinite(e))throw new A(`${t}: produced a non-finite result`);return e}function Tr(e,t){return e.map((e,n)=>j(e,t,n))}function Er(e,t,n){if(typeof e!=`boolean`)throw new A(`${t}: argument ${n+1} must be a boolean`);return e}var Dr=/^[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?$/;function Or(e){if(typeof e==`number`)return Number.isFinite(e)?e:null;if(typeof e!=`string`)return null;let t=e.trim();if(!Dr.test(t))return null;let n=Number(t);return Number.isFinite(n)?n:null}var kr=2e3;function Ar(e,t,n,r,i,a){let o=Er(e,`rose`,0),s=typeof t==`number`&&Number.isFinite(t)?t:null,c=n===void 0?kr:j(n,`rose`,2);if(c<0)throw new A(`rose: debounce must be a non-negative finite number`);if(r.disarmNext===!0||i.disarmRoseNext)return r.disarmNext=!1,r.priorLevel===void 0&&(r.priorLevel=o),a.currentOutput;let l=xr({level:o,changedAt:s,priorLevel:r.priorLevel,startedAtMs:a.startedAtMs,nowMs:a.nowMs,firstSightingFreshnessMs:br});return r.priorLevel=l.kind===`rise`?!0:l.nextPriorLevel,l.kind===`none`||i.acceptedEdgeAt!==null&&l.timestamp-i.acceptedEdgeAt<c?a.currentOutput:(i.acceptedEdgeAt=l.timestamp,l.timestamp)}function jr(e){e.disarmRoseNext=!0;for(let[t,n]of e.calls)n.kind===`rose`&&e.calls.set(t,{...n,disarmNext:!0})}function Mr(e,t,n){let r=typeof n==`number`&&Number.isFinite(n)&&n>=0?n:0;return e===null?(t.primed=!0,r):typeof e!=`number`||!Number.isFinite(e)?r:t.primed?t.highWater!==null&&e<=t.highWater?r:(t.highWater=e,r+1):(t.primed=!0,t.highWater=e,r)}var Nr=1/0,Pr={min:{minArgs:1,maxArgs:Nr,apply:e=>M(Math.min(...Tr(e,`min`)),`min`)},max:{minArgs:1,maxArgs:Nr,apply:e=>M(Math.max(...Tr(e,`max`)),`max`)},abs:{minArgs:1,maxArgs:1,apply:e=>M(Math.abs(j(e[0],`abs`,0)),`abs`)},floor:{minArgs:1,maxArgs:1,apply:e=>M(Math.floor(j(e[0],`floor`,0)),`floor`)},ceil:{minArgs:1,maxArgs:1,apply:e=>M(Math.ceil(j(e[0],`ceil`,0)),`ceil`)},sqrt:{minArgs:1,maxArgs:1,apply:e=>M(Math.sqrt(j(e[0],`sqrt`,0)),`sqrt`)},round:{minArgs:1,maxArgs:2,apply:e=>{let t=j(e[0],`round`,0),n=e.length>1?Math.trunc(j(e[1],`round`,1)):0;if(n<0||n>100)throw new A(`round: digits must be between 0 and 100`);let r=10**n;return M(Math.round(t*r)/r,`round`)}},pow:{minArgs:2,maxArgs:2,apply:e=>M(j(e[0],`pow`,0)**j(e[1],`pow`,1),`pow`)},clamp:{minArgs:3,maxArgs:3,apply:e=>{let t=j(e[0],`clamp`,0),n=j(e[1],`clamp`,1),r=j(e[2],`clamp`,2);if(n>r)throw new A(`clamp: lower bound is greater than upper bound`);return M(Math.min(r,Math.max(n,t)),`clamp`)}},avg:{minArgs:1,maxArgs:Nr,apply:e=>{let t=Tr(e,`avg`);return M(t.reduce((e,t)=>e+t,0)/t.length,`avg`)}},sum:{minArgs:1,maxArgs:Nr,apply:e=>M(Tr(e,`sum`).reduce((e,t)=>e+t,0),`sum`)},coalesce:{minArgs:1,maxArgs:Nr,apply:e=>{for(let t of e)if(t!==null)return t;return null}},age:{minArgs:2,maxArgs:2,apply:e=>M(j(e[0],`age`,0)-j(e[1],`age`,1),`age`)},convert:{minArgs:3,maxArgs:3,apply:(e,t)=>{let n=j(e[0],`convert`,0),r=wr(e[1],`convert`,1).trim(),i=wr(e[2],`convert`,2).trim();if(t.convert){let e=t.convert(n,r,i);if(e===null)throw new A(`convert: cannot convert '${r}' to '${i}'`);return M(e,`convert`)}if(r===i)return n;throw new A(`convert: unit conversion table not installed`)}},any:{minArgs:1,maxArgs:Nr,apply:e=>e.map((e,t)=>Er(e,`any`,t)).some(e=>e)},all:{minArgs:1,maxArgs:Nr,apply:e=>e.map((e,t)=>Er(e,`all`,t)).every(e=>e)},within:{minArgs:2,maxArgs:2,apply:(e,t)=>{let n=j(e[1],`within`,1);if(n<0)throw new A(`within: the window must not be negative`);let r=e[0];if(r===null)return!1;let i=j(r,`within`,0),a=t.now;if(a===void 0||!Number.isFinite(a))throw new A(`within: no clock was supplied to this evaluation`);let o=a-i<=n;return o&&t.noteDeadline?.(i+n+1),o}},number:{minArgs:1,maxArgs:1,apply:e=>Or(e[0])},latest:{minArgs:1,maxArgs:Nr,apply:e=>{let t=e.flatMap((e,t)=>e===null?[]:[j(e,`latest`,t)]);return t.length===0?null:M(Math.max(...t),`latest`)}},rose:{minArgs:2,maxArgs:3,apply:()=>{throw new A(`rose: stateful evaluation context is required`)}},count:{minArgs:1,maxArgs:1,apply:()=>{throw new A(`count: stateful evaluation context is required`)}}},Fr=Object.freeze(Object.assign(Object.create(null),Pr)),Ir=new Set(Object.keys(Pr)),Lr=2048,Rr=256,zr=4096,Br=32,Vr=16,Hr=256,Ur=/^[A-Za-z_][A-Za-z0-9_]*$/,Wr=new Set([`now`,`true`,`false`,`null`]),Gr=new Set([`true`,`false`,`null`]);function Kr(e){return e>=`0`&&e<=`9`}function qr(e){return e>=`A`&&e<=`Z`||e>=`a`&&e<=`z`||e===`_`}function Jr(e){return qr(e)||Kr(e)}function Yr(e){return e===` `||e===` `||e===`
|
|
3
|
-
`||e===`\r`||e===`\f`||e===`\v`}function Xr(e){if(e.length>2048)throw new k(`expression too long (${e.length} > ${Lr} chars)`,0);let t=[],n=0,r=e.length;for(;n<r;){let i=e[n];if(Yr(i)){n+=1;continue}if(Kr(i)){let i=n;for(;n<r&&Kr(e[n]);)n+=1;if(n<r&&e[n]===`.`){if(n+1>=r||!Kr(e[n+1]))throw new k(`malformed number: decimal point needs a digit`,n);for(n+=1;n<r&&Kr(e[n]);)n+=1}let a=e.slice(i,n),o=Number(a);if(!Number.isFinite(o))throw new k(`malformed number: '${a}'`,i);t.push({type:`number`,value:o,pos:i});continue}if(i===`'`||i===`"`){let a=i,o=n;n+=1;let s=``,c=!1;for(;n<r;){let t=e[n];if(t===`\\`){let t=n+1<r?e[n+1]:``;if(t===`\\`||t===`'`||t===`"`){s+=t,n+=2;continue}throw new k(`invalid string escape: '\\${t}'`,n)}if(t===a){c=!0,n+=1;break}s+=t,n+=1}if(!c)throw new k(`unterminated string literal`,o);t.push({type:`string`,value:s,pos:o});continue}if(qr(i)){let i=n;for(;n<r&&Jr(e[n]);)n+=1;let a=e.slice(i,n);Gr.has(a)?t.push({type:`keyword`,keyword:Zr(a),pos:i}):t.push({type:`identifier`,name:a,pos:i});continue}let a=n+1<r?e.slice(n,n+2):``;if(a===`<=`||a===`>=`||a===`==`||a===`!=`||a===`&&`||a===`||`){t.push({type:`punct`,punct:a,pos:n}),n+=2;continue}if(Qr(i)){t.push({type:`punct`,punct:i,pos:n}),n+=1;continue}throw new k(`unexpected character '${i}'`,n)}return t.push({type:`eof`,pos:r}),t}function Zr(e){return e===`true`?`true`:e===`false`?`false`:`null`}function Qr(e){return e===`(`||e===`)`||e===`,`||e===`?`||e===`:`||e===`+`||e===`-`||e===`*`||e===`/`||e===`%`||e===`!`||e===`<`||e===`>`}var $r={"||":1,"&&":2,"==":3,"!=":3,"<":4,"<=":4,">":4,">=":4,"+":5,"-":5,"*":6,"/":6,"%":6};function ei(e){return e===`&&`||e===`||`}function ti(e){return e===`+`||e===`-`||e===`*`||e===`/`||e===`%`||e===`==`||e===`!=`||e===`<`||e===`<=`||e===`>`||e===`>=`}var ni=class{tokens;pos=0;nodeCount=0;identifiers=new Set;callees=new Set;constructor(e){this.tokens=e}parse(){let e=this.parseTernary(),t=this.peek();if(t.type!==`eof`)throw new k(`unexpected trailing input`,t.pos);return{ast:e,identifiers:this.identifiers,callees:this.callees,nodeCount:this.nodeCount}}peek(){return this.tokens[this.pos]}next(){return this.tokens[this.pos++]}expectPunct(e){let t=this.peek();if(t.type!==`punct`||t.punct!==e)throw new k(`expected '${e}'`,t.pos);this.pos+=1}matchPunct(e){let t=this.peek();return t.type===`punct`&&t.punct===e?(this.pos+=1,!0):!1}countNode(){if(this.nodeCount+=1,this.nodeCount>256)throw new k(`expression too complex`,this.peek().pos)}parseTernary(){let e=this.parseBinary(1);if(this.matchPunct(`?`)){let t=this.parseTernary();this.expectPunct(`:`);let n=this.parseTernary();return this.countNode(),{kind:`conditional`,test:e,consequent:t,alternate:n}}return e}parseBinary(e){let t=this.parseUnary();for(;;){let n=this.peek();if(n.type!==`punct`)break;let r=$r[n.punct];if(r===void 0||r<e)break;let i=n.punct;this.pos+=1;let a=this.parseBinary(r+1);if(this.countNode(),ei(i))t={kind:`logical`,op:i,left:t,right:a};else if(ti(i))t={kind:`binary`,op:i,left:t,right:a};else throw new k(`unexpected operator '${i}'`,n.pos)}return t}parseUnary(){let e=this.peek();if(e.type===`punct`&&(e.punct===`!`||e.punct===`-`)){let t=e.punct;this.pos+=1;let n=this.parseUnary();return this.countNode(),{kind:`unary`,op:t,operand:n}}return this.parsePrimary()}parsePrimary(){let e=this.next();switch(e.type){case`number`:return this.countNode(),{kind:`literal`,value:e.value};case`string`:return this.countNode(),{kind:`literal`,value:e.value};case`keyword`:return this.countNode(),{kind:`literal`,value:e.keyword===`null`?null:e.keyword===`true`};case`identifier`:{let t=this.peek();return t.type===`punct`&&t.punct===`(`?this.parseCall(e.name,e.pos):(this.identifiers.add(e.name),this.countNode(),{kind:`identifier`,name:e.name})}case`punct`:if(e.punct===`(`){let e=this.parseTernary();return this.expectPunct(`)`),e}throw new k(`unexpected token '${e.punct}'`,e.pos);case`eof`:throw new k(`unexpected end of expression`,e.pos)}}parseCall(e,t){if(!Ir.has(e))throw new k(`unknown function '${e}'`,t);this.expectPunct(`(`);let n=[];if(!this.matchPunct(`)`))for(;;){if(n.push(this.parseTernary()),n.length>16)throw new k(`too many arguments to '${e}'`,t);if(!this.matchPunct(`,`)){this.expectPunct(`)`);break}}return this.callees.add(e),this.countNode(),{kind:`call`,callee:e,args:n}}};function ri(e){return new ni(Xr(e)).parse()}var ii=new Map;function ai(e){let t=ii.get(e);if(t!==void 0)return ii.delete(e),ii.set(e,t),t;let n;try{n={ok:!0,parsed:ri(e)}}catch(e){n={ok:!1,error:e instanceof k?e.message:String(e)}}if(ii.set(e,n),ii.size>256){let e=ii.keys().next().value;e!==void 0&&ii.delete(e)}return n}function oi(e){let t=ai(e);if(t.ok)return t.parsed;throw new k(t.error)}function si(e){return ai(e)}var ci=Object.freeze({});function li(e){let t=Object.create(null);for(let n of Object.keys(e))Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}function ui(e){return typeof e==`number`&&Number.isFinite(e)}function di(e){return!!e}function fi(e,t){if(!Number.isFinite(e))throw new A(`${t} produced a non-finite result`);return e}function pi(e){if(e.steps+=1,e.steps>e.maxSteps)throw new A(`expression evaluation step budget exceeded`)}function N(e,t){return`${e}/${t}`}function P(e,t,n){switch(pi(t),e.kind){case`literal`:return e.value;case`identifier`:if(!(e.name in t.scope))throw new A(`unknown identifier: ${e.name}`);return t.scope[e.name];case`unary`:return mi(e.op,P(e.operand,t,N(n,`operand`)));case`binary`:return hi(e.op,P(e.left,t,N(n,`left`)),P(e.right,t,N(n,`right`)));case`logical`:{let r=P(e.left,t,N(n,`left`));return e.op===`&&`?di(r)?P(e.right,t,N(n,`right`)):r:di(r)?r:P(e.right,t,N(n,`right`))}case`conditional`:return di(P(e.test,t,N(n,`test`)))?P(e.consequent,t,N(n,`consequent`)):P(e.alternate,t,N(n,`alternate`));case`call`:{let r=e.args.map((e,r)=>P(e,t,N(n,`arg:${r}`)));return gi(e.callee,r,n,t)}}}function mi(e,t){if(e===`!`)return!di(t);if(!ui(t))throw new A(`unary "-" requires a finite number`);return fi(-t,`unary "-"`)}function hi(e,t,n){switch(e){case`==`:return t===n;case`!=`:return t!==n;case`+`:if(typeof t==`string`&&typeof n==`string`)return t+n;if(ui(t)&&ui(n))return fi(t+n,`"+"`);throw new A(`"+" requires two numbers or two strings`);case`-`:case`*`:case`/`:case`%`:if(!ui(t)||!ui(n))throw new A(`"${e}" requires two finite numbers`);return fi(e===`-`?t-n:e===`*`?t*n:e===`/`?t/n:t%n,`"${e}"`);case`<`:case`<=`:case`>`:case`>=`:if(ui(t)&&ui(n)||typeof t==`string`&&typeof n==`string`)return e===`<`?t<n:e===`<=`?t<=n:e===`>`?t>n:t>=n;throw new A(`"${e}" requires two numbers or two strings`)}}function gi(e,t,n,r){if(!Object.prototype.hasOwnProperty.call(Fr,e))throw new A(`unknown function: ${e}`);let i=Fr[e];if(t.length<i.minArgs||t.length>i.maxArgs)throw new A(`${e}: wrong number of arguments (${t.length})`);if(Cr(e)){if(r.invokeStateful===void 0)throw new A(`${e}: stateful evaluation context is required`);return r.invokeStateful({name:e,path:n,args:t})}return i.apply(t,r.hooks)}function _i(e,t,n){return P(e,{scope:t,hooks:n?.hooks??ci,maxSteps:n?.maxSteps??4096,...n?.invokeStateful===void 0?{}:{invokeStateful:n.invokeStateful},steps:0},`root`)}function vi(){return{calls:new Map,acceptedEdgeAt:null,disarmRoseNext:!1}}function yi(e){return{calls:new Map([...e.calls].map(([e,t])=>[e,{...t}])),acceptedEdgeAt:e.acceptedEdgeAt,disarmRoseNext:e.disarmRoseNext}}function bi(e,t,n){let r=t.calls.get(e.path);switch(e.name){case`rose`:{let i=r?.kind===`rose`?r:{kind:`rose`};t.calls.set(e.path,i);let a=n.currentOutput===null||typeof n.currentOutput==`number`&&Number.isFinite(n.currentOutput)?n.currentOutput:null;return Ar(e.args[0],e.args[1],e.args[2],i,t,{currentOutput:a,startedAtMs:n.startedAtMs,nowMs:n.nowMs})}case`count`:{let i=r?.kind===`count`?r:{kind:`count`,highWater:null,primed:!1};return t.calls.set(e.path,i),Mr(e.args[0],i,n.currentOutput)}}}var xi=`now`;function Si(e){if(e===null)return null;if(typeof e==`string`||typeof e==`boolean`)return e;if(typeof e==`number`)return Number.isFinite(e)?e:void 0}function Ci(e){let t=Object.keys(e.bindings);if(t.length>32)return`too many bindings (${t.length} > 32)`;for(let e of t){if(!Ur.test(e))return`invalid binding name '${e}'`;if(Wr.has(e))return`binding name '${e}' is reserved`;if(Ir.has(e))return`binding name '${e}' shadows a builtin function`}let n=si(e.expr);if(!n.ok)return n.error;let r=new Set(t);for(let e of n.parsed.identifiers)if(e!==`now`&&!r.has(e))return`expression references unbound identifier '${e}'`;return null}function wi(e,t,n,r){let i=si(e);if(!i.ok)return{ok:!1,error:i.error};let a=li({...t,now:n}),o={...r?.hooks,now:n};try{return{ok:!0,value:_i(i.parsed.ast,a,{...r,hooks:o})}}catch(e){return{ok:!1,error:e instanceof A?e.message:String(e)}}}var Ti=`composer`,Ei=`customize:`,Di=`composed-`,Oi=16,ki=32,Ai=2e4,ji=u({addonId:c().min(1),stableId:c().min(1)}),Mi=u({source:ji,cap:c().min(1),fieldPath:c().min(1)}),Ni=Mi.extend({kind:p(`from`)}),Pi=u({kind:p(`literal`),value:d([c(),i(),C(),ne()])}),Fi=f(`kind`,[Ni,Pi]),Ii=u({kind:p(`expression`),expr:c().min(1).max(Lr),bindings:y(c().regex(Ur),Fi)}).superRefine((e,t)=>{let n=Ci(e);n!==null&&t.addIssue({code:`custom`,message:n,path:[`expr`]})}),Li=u({kind:p(`code`),code:c().min(1).max(Ai)}),Ri=f(`kind`,[Ni,Ii,Li]),zi=u({kind:p(`forward`),source:ji,cap:c().min(1),method:c().min(1)}),Bi=f(`kind`,[zi,Li]),Vi=/^[a-z0-9][a-z0-9-]{0,47}$/,Hi=16,Ui=`items`,Wi=u({label:c().min(1).max(80),fields:y(c().min(1),Ri)}),Gi=u({kind:p(`fields`),cap:c().min(1),enabled:C().optional(),fields:y(c().min(1),Ri).refine(e=>Object.keys(e).length<=32,{message:`at most 32 fields per capability`}),items:y(c().regex(Vi),Wi).refine(e=>Object.keys(e).length<=16,{message:`at most 16 items`}).optional(),commands:y(c().min(1),Bi).optional()}),Ki=u({kind:p(`passthrough`),cap:c().min(1),enabled:C().optional(),source:ji}),qi=f(`kind`,[Gi,Ki]);function Ji(e){return e.enabled!==!1}var Yi=u({kind:p(`new`),type:x(D),role:x(O).optional()}),Xi=u({kind:p(`existing`),device:ji}),Zi=f(`kind`,[Yi,Xi]),Qi=u({target:Zi,features:S(qi).min(1).max(16)}).superRefine((e,t)=>{let n=new Set;e.features.forEach((e,r)=>{n.has(e.cap)&&t.addIssue({code:`custom`,message:`capability \`${e.cap}\` is composed twice — one feature per capability`,path:[`features`,r,`cap`]}),n.add(e.cap)})});function F(e){return`${e.addonId}/${e.stableId}`}function $i(e,t){return`${F(e)}#${t}`}function ea(e){return`${$i(e.source,e.cap)}.${e.fieldPath}`}function ta(e){return`${Di}${e}`}function na(e){return{addonId:Ti,stableId:ta(e)}}function ra(e){switch(e.kind){case`from`:return[{source:e.source,cap:e.cap,fieldPath:e.fieldPath}];case`expression`:return Object.values(e.bindings).flatMap(e=>e.kind===`from`?[{source:e.source,cap:e.cap,fieldPath:e.fieldPath}]:[]);case`code`:return[]}}function ia(e,t,n){return`${e}[${t}].${n}`}function aa(e,t=Ui){return[...Object.entries(e.fields).map(([e,t])=>({fieldPath:e,source:t})),...Object.entries(e.items??{}).flatMap(([e,n])=>Object.entries(n.fields).map(([n,r])=>({fieldPath:ia(t,e,n),source:r})))]}function oa(e){return aa(e).map(e=>e.source)}var sa=function(e){return e.Addon=`addon`,e.Core=`core`,e.Device=`device`,e.Provider=`provider`,e.System=`system`,e}({}),ca=[`track`,`face`,`identity`,`plate`,`vehicle`,`scene`,`motion`,`object`,`audio`,`mosaic`],la=new Set(ca),ua=/^\d+$/;function da(e){return la.has(e)}function fa(e){let t=e.split(`:`);if(t.length!==3&&t.length!==4)return null;let[n,r,i,a]=t;return n===void 0||!da(n)||r===void 0||r.length===0||i===void 0||i.length===0?null:a===void 0?{ownerType:n,ownerId:r,fileKind:i}:ua.test(a)?{ownerType:n,ownerId:r,fileKind:i,timestampMs:Number(a)}:null}function pa(e){let t=`${e.ownerType}:${e.ownerId}:${e.fileKind}`;return e.timestampMs===void 0?t:`${t}:${e.timestampMs}`}var ma=[`motion`,`object`,`audio`],ha=x(ma),ga=[...ma,`track`],_a=x(ga),va=new Set(ma);function ya(e){return va.has(e)}function ba(e,t){return{id:e,getRoutes:()=>t,invoke:async e=>{let n=xa(t,e.method,e.path);if(!n)return{status:404,headers:{},redirectUrl:null,body:{error:`No route matches ${e.method} ${e.path}`}};let r={status:200,headers:{},redirectUrl:null},i=Ca(r),a={params:{...e.params,...n.params},query:e.query,body:e.body,headers:e.headers,...e.user?{user:e.user}:{},...e.scopedToken===void 0?{}:{scopedToken:e.scopedToken}};return await n.route.handler(a,i),r}}}function xa(e,t,n){let r=t.toUpperCase();for(let t of e){if(t.method!==r)continue;let e=Sa(t.path,n);if(e!==null)return{route:t,params:e}}return null}function Sa(e,t){let n=e.split(`/`).filter(Boolean),r=t.split(`/`).filter(Boolean);if(n.length!==r.length)return null;let i={};for(let e=0;e<n.length;e++){let t=n[e],a=r[e];if(t.startsWith(`:`))i[t.slice(1)]=a;else if(t!==a)return null}return i}function Ca(e){let t={status(n){return e.status=n,t},code(n){return e.status=n,t},send(t){e.body=t},redirect(t){e.redirectUrl=t,e.status===200&&(e.status=302)},header(n,r){return e.headers[n.toLowerCase()]=r,t},type(n){return e.contentType=n,t}};return t}var wa=u({codec:x([`h264`,`h265`,`copy`]),profile:x([`baseline`,`main`,`high`]).optional(),level:c().optional(),width:i().int().positive().optional(),height:i().int().positive().optional(),fps:i().positive().optional(),bitrateKbps:i().int().positive().optional(),gopFrames:i().int().positive().optional(),bf:i().int().min(0).optional(),preset:x([`ultrafast`,`superfast`,`veryfast`,`faster`,`fast`,`medium`]).optional(),tune:x([`zerolatency`,`film`,`animation`]).optional(),singleSlicePerFrame:C().optional()}),Ta=d([p(`passthrough`),u({codec:x([`opus`,`aac`,`pcmu`,`pcma`,`copy`]),bitrateKbps:i().int().positive().optional(),sampleRateHz:i().int().positive().optional(),channels:d([p(1),p(2)]).optional()})]),Ea=u({video:wa,audio:Ta,inputArgs:S(c()).optional(),outputArgs:S(c()).optional()});function Da(e){let t=e.codec?.toLowerCase().replace(/[.\s-]/g,``),n={codec:t===`h265`||t===`hevc`?`h265`:`h264`,...e.resolution?.width===void 0?{}:{width:e.resolution.width},...e.resolution?.height===void 0?{}:{height:e.resolution.height},...e.fps===void 0?{}:{fps:e.fps}};if(!(n.width===void 0&&n.height===void 0&&n.fps===void 0))return{video:n,audio:`passthrough`}}function Oa(e,t,n){let r=e>=n;return r===t>=n?r?e-t:t-e:r?-1:1}function ka(e){let t=e.toLowerCase().replace(/[.\s-]/g,``);return t===`hevc`||t===`hvc1`||t===`hev1`?`h265`:t===`avc`||t===`avc1`?`h264`:t}function Aa(e,t){if(t.length===0)return!0;if(e===void 0)return!1;let n=ka(e);return t.some(e=>ka(e)===n)}function ja(e,t){for(let n=0;n<t.length;n+=1)if(e.startsWith(t[n]))return n;return t.length}function Ma(e,t){let n=e.filter(e=>t.allowTranscode||Aa(e.codec,t.acceptCodecs));if(n.length===0)return null;let r=t.targetHeight,i=n.map(e=>({candidate:e,transcodes:!Aa(e.codec,t.acceptCodecs),provider:ja(e.camStreamId,t.preferredProviders),height:e.height??0}));i.sort((e,n)=>e.transcodes===n.transcodes?e.provider===n.provider?r===void 0?t.resolutionPreference===`highest`?n.height-e.height:e.height-n.height:Oa(e.height,n.height,r):e.provider-n.provider:e.transcodes?1:-1);let a=i[0];return a===void 0?null:{candidate:a.candidate,transcodes:a.transcodes}}var Na={video:{codec:`h264`,profile:`baseline`,level:`3.1`,width:1280,height:720,fps:25,bitrateKbps:2500,gopFrames:25,bf:0,preset:`veryfast`,tune:`zerolatency`},audio:`passthrough`},Pa={...Na,video:{...Na.video,bitrateKbps:3e3,gopFrames:30,preset:`ultrafast`},audio:`passthrough`},Fa={...Na,audio:{codec:`opus`},video:{...Na.video,singleSlicePerFrame:!0}},Ia={kind:`cbr`,vbvSeconds:1},La={kind:`cap`,vbvSeconds:2},Ra=360,za=400,Ba=24,Va={kind:`encode`,codec:`opus`,bitrateKbps:24,channels:1,application:`lowdelay`,globalHeader:!0,filter:`aresample=async=1000:first_pts=0`},Ha=96,Ua=4;function Wa(e){let t=e.now??(()=>Date.now()),n=null,r=-1/0;return{read(){return t()-r<e.ttlMs?n:void 0},write(e){n=e,r=t()}}}function Ga(e){return!e||e===`none`||e===`copy`}async function Ka(e){let t=e.override;if(t!=null&&t!==``)return Ga(t)?null:t;let n=e.cache?.read();if(n!==void 0)return n;let r;try{r=await e.readDecoderBackend()}catch(t){let n=await e.readKernelPreferred().catch(()=>[]);return e.onFallback({reason:`decoder-unreadable`,kernelPreferred:n,error:t instanceof Error?t.message:String(t)}),e.cache?.write(null),null}if(r===``){let t=await e.readKernelPreferred().catch(()=>[]);return e.onFallback({reason:`decoder-unprobed`,kernelPreferred:t}),e.cache?.write(null),null}let i=Ga(r)?null:r;return e.cache?.write(i),i}function qa(e){return String(Math.round(e*1e3)/1e3)}function Ja(e,t){return!Number.isFinite(t)||t<=0?e:e/t}function Ya(e){let t=e.speed>0?e.speed:1;return t===1?`[0:v]fps=${qa(e.fps)},scale=${e.maxWidth}:-2:flags=lanczos,split[a][b];[a]palettegen=stats_mode=diff[p];[b][p]paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle`:`[0:v]fps=${qa(e.fps/t)},setpts=PTS/${t},fps=${qa(e.fps)},scale=${e.maxWidth}:-2:flags=lanczos,split[a][b];[a]palettegen=stats_mode=diff[p];[b][p]paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle`}function Xa(e){return[`-y`,`-v`,`error`,`-f`,`mp4`,`-i`,e.input??`pipe:0`,`-filter_complex`,Ya(e),`-loop`,`0`,`-f`,`gif`,`pipe:1`]}function Za(e){return{transport:e.publishLocally===!0?`push`:`dial`}}var Qa=`\0unset`;function $a(e){return{codec:e.codec,profile:e.profile??Qa,level:e.level??Qa,width:e.width??-1,height:e.height??-1,fps:e.fps??-1,bitrateKbps:e.bitrateKbps??-1,gopFrames:e.gopFrames??-1,bf:e.bf??-1,preset:e.preset??Qa,tune:e.tune??Qa,singleSlicePerFrame:e.singleSlicePerFrame===void 0?Qa:String(e.singleSlicePerFrame)}}function eo(e){return e===`passthrough`?{codec:`passthrough`}:{codec:e.codec,bitrateKbps:e.bitrateKbps??-1,sampleRateHz:e.sampleRateHz??-1,channels:e.channels??-1}}function to(e,t=Za(e)){return{deviceId:e.deviceId,source:e.source.kind===`profile`?`profile:${e.source.profile}`:`cam-stream:${e.source.camStreamId}`,transport:t.transport,fragmentMs:t.fragmentMs??-1,video:$a(e.encode.video),audio:eo(e.encode.audio),rateControl:e.rateControl??`relaxed`,bitstreamFilter:e.bitstreamFilter??Qa,pixelFormat:e.pixelFormat??Qa,decodeHwAccel:e.decodeHwAccel??Qa}}function no(e,t=Za(e)){return`egress:${sr(to(e,t))}`}function ro(e){let t=null;return()=>{if(t!==null)return t;let n=e();return t=n,n.catch(()=>{t===n&&(t=null)}),n}}var io=x([`singleton`,`device`,`widget`]),ao=u({capName:c(),kind:io,deviceId:i().optional(),reachable:C(),latencyMs:i(),error:c().optional()}),oo=u({addonId:c(),caps:S(ao).readonly(),widgets:S(ao).readonly()}),so=u({nodeId:c(),addons:S(oo).readonly()}),co=u({ok:C(),degraded:C(),checkedAt:c(),nodes:S(so).readonly(),summary:u({total:i(),reachable:i(),unreachable:i()})}),lo=`hub-only`;function uo(e){return{placement:e.execution?.placement??`hub-only`,group:e.execution?.group}}function fo(e){let t=uo(e).placement;return t===`any-node`||t===`agent-only`}function po(e){return uo(e).placement===`agent-only`}function mo(e){return uo(e).group}function ho(e,t){return e.execution?.group??t}function go(e){return uo(e).placement}function _o(e){return e.execution?.isolate===!0}var vo=x([`running`,`done`,`failed`,`cancelled`]),yo=x([`adopted`,`already-adopted`,`failed`,`cancelled`]),bo=u({childNativeId:c(),outcome:yo,parentDeviceId:i().int().nonnegative().nullable(),accessoryCount:i().int().nonnegative(),error:c().nullable()}),xo=u({jobId:c(),addonId:c(),integrationId:c(),state:vo,total:i().int().nonnegative(),processed:i().int().nonnegative(),adopted:i().int().nonnegative(),alreadyAdopted:i().int().nonnegative(),failed:i().int().nonnegative(),accessoriesCreated:i().int().nonnegative(),currentChildNativeId:c().nullable(),results:S(bo).readonly(),startedAt:i(),finishedAt:i().nullable(),error:c().nullable()}),So={cleanupIntervalMs:3600*1e3,detectionEventsDays:30,audioLevelsDays:7,snapshotsDays:14},Co=x([`stream-broker`,`object-detection`,`privacy-mask`,`device-audio`,`broker-audio`,`audio-analysis`,`event-saving`,`recording`,`notifications`]),wo=[`stream-broker`,`object-detection`,`privacy-mask`,`device-audio`,`broker-audio`,`audio-analysis`,`event-saving`,`recording`,`notifications`],To=f(`kind`,[u({kind:p(`device-disabled`)}),u({kind:p(`wrapper-binding`),capName:c()}),u({kind:p(`recording-config`)}),u({kind:p(`notification-mute`)}),u({kind:p(`camera-audio`),capName:c()}),u({kind:p(`camera-mask`),capName:c()}),u({kind:p(`broker-audio-mute`)})]),Eo=x([`no-provider`,`source-unreachable`,`device-disabled`]),Do=x([`no-privacy-zones`]),Oo=u({id:Co,label:c(),costWhenOff:c(),available:C(),unavailableReason:Eo.optional(),warning:Do.optional(),enabled:C(),authority:To}),ko=u({deviceId:i().int(),switches:S(Oo).readonly(),fetchedAt:i()}),Ao=`detection-pipeline`,jo=`audio-analysis`,Mo=`privacy-mask`,No=`pipeline-analytics`,Po=[`motion-detection`,Ao,jo,No,`scene-monitor`],Fo={"stream-broker":{id:`stream-broker`,label:`Camera`,costWhenOff:`Off: the whole camera stops. No live view, no recording, no detection and no notifications — its streams are released and nothing dials it again until you turn it back on.`,authority:{kind:`device-disabled`},countsAsSwitchedOff:!0},"object-detection":{id:`object-detection`,label:`Object detection & tracking`,costWhenOff:`Off: nothing is detected or tracked on this camera, so it produces no events — and with no events there are no object notifications and no event-triggered recording. Live view and continuous recording are unaffected.`,authority:{kind:`wrapper-binding`,capName:Ao},countsAsSwitchedOff:!0},"privacy-mask":{id:`privacy-mask`,label:`Privacy mask`,costWhenOff:`On: the zones you drew on this camera are blacked out by the camera itself — live view, playback, exports and detection all see the black boxes, and nothing behind them was ever recorded. Off: the camera captures the whole frame, and your zones are kept for when you turn it back on.`,authority:{kind:`camera-mask`,capName:Mo},countsAsSwitchedOff:!1},"device-audio":{id:`device-audio`,label:`Camera microphone`,costWhenOff:`Off: the camera captures no sound at all. Live view and recordings become silent video, and audio detection and classification have nothing left to analyse — turning them back on will not recover it. The picture, motion and object detection are unaffected, and two-way talk still works. Applies at the camera, so every consumer sees the same silence.`,authority:{kind:`camera-audio`,capName:Mo},countsAsSwitchedOff:!0},"broker-audio":{id:`broker-audio`,label:`Audio distribution`,costWhenOff:`Off: this server distributes no sound for this camera — live view is silent and everything recorded while it is off is silent FOREVER, even after you turn it back on. Audio detection and classification also have nothing to analyse. The camera keeps capturing sound, so nothing about the camera changes and turning this back on is instant, with no interruption to the picture.`,authority:{kind:`broker-audio-mute`},countsAsSwitchedOff:!0},"audio-analysis":{id:`audio-analysis`,label:`Audio detection & classification`,costWhenOff:`Off: no audio is decoded or classified for this camera. Tracks carry no audio labels and no audio-triggered rule can fire. Audio recorded alongside video is unaffected.`,authority:{kind:`wrapper-binding`,capName:jo},countsAsSwitchedOff:!0},"event-saving":{id:`event-saving`,label:`Event saving`,costWhenOff:`Off: nothing about this camera is written to its history — no tracks, no events and no event snapshots or clips. Detection keeps running and live boxes still appear, so the camera looks busy while its timeline stays empty, and anything that fires ON an event (notification rules, event-triggered recording) has nothing to fire on. Continuous recording is unaffected, and history already written is kept.`,authority:{kind:`wrapper-binding`,capName:No},countsAsSwitchedOff:!0},recording:{id:`recording`,label:`Recording`,costWhenOff:`Off: nothing new is written to disk. Footage already recorded stays, but retention keeps deleting it — so this camera’s history shrinks and is not replaced. Your recording schedule is kept and resumes when you turn it back on.`,authority:{kind:`recording-config`},countsAsSwitchedOff:!0},notifications:{id:`notifications`,label:`Notifications`,costWhenOff:`Off: this camera never notifies anyone, on any rule, with no expiry. Detection, events and recording carry on exactly as before — you simply stop being told about them.`,authority:{kind:`notification-mute`},countsAsSwitchedOff:!0}};function Io(e,t){switch(e.authority.kind){case`device-disabled`:return{available:!0,enabled:!t.deviceDisabled};case`wrapper-binding`:{let n=e.authority.capName;return t.bindableCapNames===null||t.activeWrapperCapNames===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:t.bindableCapNames.includes(n)?{available:!0,enabled:t.activeWrapperCapNames.includes(n)}:{available:!1,enabled:!0,unavailableReason:`no-provider`}}case`recording-config`:return t.recordingEnabled===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:{available:!0,enabled:t.recordingEnabled};case`notification-mute`:return t.notificationsMuted===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:{available:!0,enabled:!t.notificationsMuted};case`camera-audio`:{let e=t.deviceAudio;return e===null?{available:!1,enabled:!0,unavailableReason:t.deviceDisabled?`device-disabled`:`source-unreachable`}:e.supported?e.enabled===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:{available:!0,enabled:e.enabled}:{available:!1,enabled:!0,unavailableReason:`no-provider`}}case`camera-mask`:{let e=t.privacyMask;return e===null?{available:!1,enabled:!1,unavailableReason:t.deviceDisabled?`device-disabled`:`source-unreachable`}:e.supported?e.configuredRegions===null||e.enabled===null?{available:!1,enabled:!1,unavailableReason:`source-unreachable`}:e.configuredRegions===0?{available:!0,enabled:e.enabled,warning:`no-privacy-zones`}:{available:!0,enabled:e.enabled}:{available:!1,enabled:!1,unavailableReason:`no-provider`}}case`broker-audio-mute`:{let e=t.brokerAudio;return e===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:{available:!0,enabled:!e.muted}}}}function Lo(e){return wo.map(t=>{let n=Fo[t],r=Io(n,e);return{id:n.id,label:n.label,costWhenOff:n.costWhenOff,available:r.available,...r.unavailableReason===void 0?{}:{unavailableReason:r.unavailableReason},...r.warning===void 0?{}:{warning:r.warning},enabled:r.enabled,authority:n.authority}})}function Ro(e){return e.filter(e=>Fo[e.id].countsAsSwitchedOff&&e.available&&!e.enabled).map(e=>e.id)}function zo(e){let t=[],n=[];for(let r of wo){let i=Fo[r];if(!i.countsAsSwitchedOff)continue;let a=Io(i,e);a.unavailableReason===`source-unreachable`?n.push(r):a.available&&!a.enabled&&t.push(r)}return{switchedOff:t,unreadable:n}}var Bo=`__camstack_redacted__`;function Vo(e){return e.type===`password`?!0:`secret`in e&&e.secret===!0}function Ho(e){let t=new Set;for(let n of Go(e))for(let e of Ko(n))qo(e,t);return t}function Uo(e){for(let t of Go(e))if(Ko(t).length>0)return!0;return!1}function Wo(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Go(e){if(!Wo(e))return[];let t=e.sections;return Array.isArray(t)?t:[]}function Ko(e){if(!Wo(e))return[];let t=e.fields;return Array.isArray(t)?t:[]}function qo(e,t){if(!Wo(e))return;let n=e.type,r=e.key;if((n===`password`||e.secret===!0)&&typeof r==`string`&&r.length>0&&t.add(r),n===`group`){for(let n of Ko(e))qo(n,t);return}if(n===`sub-tabs`){let n=e.tabs;if(!Array.isArray(n))return;for(let e of n)for(let n of Ko(e))qo(n,t)}}var Jo=3e4,Yo=500,Xo=6e4,Zo=x([`confirmed`,`suppressed`,`exhausted-fallback`]),Qo=u({id:c(),at:i().int(),deviceId:i().int(),sourceTrackId:c(),className:c(),verdict:Zo,reason:c().nullable(),attempts:i().int(),deferredForMs:i().int(),decidedOnCoastedFrame:C(),birthEvidenceAvailable:C(),decidedByBirthEvidence:C(),bestScore:i().nullable(),appliedMinConfidence:i().nullable(),firstSeen:i().int().nullable(),motionOnsetAt:i().int().nullable(),birthLatencyMs:i().int().nullable(),birthIndexInBurst:i().int().nullable()}),$o=u({deviceId:i().int().optional(),since:i().int().optional(),verdict:Zo.optional(),limit:i().int().min(1).max(5e3).optional()}),es=5e3,ts=200,ns=u({id:c(),note:c(),deviceId:i().int(),sourceTrackId:c(),archivedAt:i().int(),trackStartedAt:i().int().nullable(),trackClass:c().nullable(),trackLabel:c().nullable()}),rs=u({deviceId:i().int().optional(),limit:i().int().min(1).max(1e3).optional()}),is=2e4,as=5e3,os=500,ss=x([`same-subject`,`different-subjects`]),cs=x([`before`,`after`]),ls=x([`mixed`,`not-a-subject`]),us=u({id:c(),deviceId:i().int(),leftTrackId:c(),rightTrackId:c(),leftSide:cs.nullable(),rightSide:cs.nullable(),relation:ss,presence:p(`continuous`).nullable(),leftStartedAt:i().int().nullable(),rightStartedAt:i().int().nullable(),createdAt:i().int(),updatedAt:i().int(),author:c().nullable()}),ds=u({id:c(),deviceId:i().int(),sourceTrackId:c(),purity:ls,switchAtMs:i().int().nullable(),startedAt:i().int().nullable(),createdAt:i().int(),updatedAt:i().int(),author:c().nullable()}),fs=u({deviceId:i().int(),trackId:c().min(1),otherTrackId:c().min(1),relation:ss,presence:p(`continuous`).optional(),trackSide:cs.optional(),otherSide:cs.optional()}),ps=u({deviceId:i().int(),trackId:c().min(1),otherTrackId:c().min(1)}),ms=u({cleared:C()}),hs=u({deviceId:i().int(),trackId:c().min(1),purity:x([`pure`,`mixed`,`not-a-subject`]),switchAtMs:i().int().optional()}),gs=u({purity:ds.nullable()}),_s=u({deviceId:i().int(),trackId:c().optional(),since:i().int().optional(),until:i().int().optional(),limit:i().int().min(1).max(5e3).optional()}),vs=u({relations:S(us).readonly(),purities:S(ds).readonly(),truncated:C()}),ys=x([`unknown-track`,`cross-device`,`self-relation`,`contradiction`,`switch-outside-track`,`switch-needs-mixed`]),bs={high:`High`,mid:`Mid`,low:`Low`};function xs(e){return bs[e]??e.charAt(0).toUpperCase()+e.slice(1)}function Ss(e){return(e.width??0)*(e.height??0)}function Cs(e){if(e.length===0)return[];let t=e.map((e,t)=>({s:e,i:t,px:Ss(e.metadata??{})})).toSorted((e,t)=>t.px-e.px),n=Array.from({length:e.length});for(let e=0;e<t.length;e++){let{s:r,i}=t[e],a;a=e===0?`high`:e===t.length-1?`low`:`mid`,n[i]={...r,quality:a}}return n}function ws(e){let t=e.height??0,n=e.width??0;return t>=1080||n>=1920?`high`:t>=480||n>=640?`mid`:`low`}function Ts(e){let t=e.protocols.find(e=>e.type===`rtsp`&&e.url)??e.protocols.find(e=>e.url),n=t?.type,r=n===`rtsp`?`rtsp`:n===`http`||n===`flv`?`http-mjpeg`:`custom`;return{id:e.id,label:e.label??e.id,protocol:r,url:t?.url,profileHint:e.quality}}function I(e){return typeof e==`string`}function Es(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ds(e){return I(e)&&e.trim()?{url:e}:Es(e)&&I(e.url)&&e.url.trim()?{url:e.url,label:I(e.label)?e.label:void 0}:null}function Os(e){let t=I(e.snapshot_url)?e.snapshot_url:void 0;if(Array.isArray(e.streams)){let n=[];for(let t of e.streams){let e=Ds(t);e&&n.push(e)}return{streams:n,snapshot_url:t}}let n=[],r=I(e.main_stream_url)?e.main_stream_url:void 0;r&&n.push({url:r,label:I(e.main_stream_name)?e.main_stream_name:void 0});let i=I(e.sub_stream_url)?e.sub_stream_url:void 0;i&&n.push({url:i,label:I(e.sub_stream_name)?e.sub_stream_name:void 0});let a=I(e.third_stream_url)?e.third_stream_url:void 0;return a&&n.push({url:a,label:I(e.third_stream_name)?e.third_stream_name:void 0}),{streams:n,snapshot_url:t}}function ks(e){if(e.length===0)return{};let t=Cs(e),n={},r=t.find(e=>e.quality===`high`),i=t.find(e=>e.quality===`mid`),a=t.find(e=>e.quality===`low`);r&&(n.high=r.id),i&&(n.mid=i.id),a&&(n.low=a.id);let o=r??i??a??t[0];return o&&(n.high||=o.id,n.mid||=o.id,n.low||=o.id),n}var As={streaming:!0,notifications:!0,objectDetection:!1,remoteAccess:!0,agentCluster:!1,smartHome:!0,recordings:!0,backup:!0,repl:!0},js={debug:0,info:1,warn:2,error:3};function Ms(e,t){return js[e]<=js[t]}var Ns=x([`recording`,`events`]),Ps=x([`prune`,`manual-delete`,`rescan`,`retention-run`,`relocate`,`orphan-audit`]),Fs=x([`retention`,`quota`,`manual`,`operator`,`maintenance`,`orphaned-device`]),Is=u({id:c(),at:i(),domain:Ns,op:Ps,reason:Fs,deviceId:i().nullable(),nodeId:c(),itemsAffected:i(),bytesReclaimed:i(),detail:c().nullable(),actor:c()}),Ls=u({deviceId:i().optional(),limit:i().int().min(1).max(1e3).optional()}),Rs=500,zs=200,Bs=u({id:c(),name:c(),category:c().optional(),description:c().optional(),icon:c().optional()}),Vs=[`person`,`vehicle`,`animal`,`package`],Hs=[`person`,`vehicle`,`animal`];function Us(e){return Hs.some(t=>t===e)}var Ws=u({mapping:y(c(),x(Vs)),preserveOriginal:C()}),Gs={preMs:5e3,postMs:1e4},Ks=i().int().min(0).max(6),qs=/^([01]\d|2[0-3]):[0-5]\d$/,Js=x([`off`,`events`,`continuous`,`on-device-decision`]),Ys=x(Hs),Xs=e=>new Set(e).size===e.length,Zs=16,Qs=-30,$s=u({motion:C().optional(),audioThresholdDbfs:i().optional(),objectClasses:S(Ys).min(1).refine(Xs,{message:`objectClasses must not repeat a class`}).optional(),sensorDeviceIds:S(i().int().positive()).min(1).max(16).refine(Xs,{message:`sensorDeviceIds must not repeat a device`}).optional()}),ec=x([`continuous`,`events`]),tc=$s,nc=x([`on`,`muted`]),rc=u({days:S(Ks),start:c().regex(qs),end:c().regex(qs),mode:ec,audio:nc.optional(),triggers:tc.optional(),preBufferSec:i().min(0).optional(),postBufferSec:i().min(0).optional()}),ic={postBufferSec:30};function ac(e){let t=[],n=e.bands.map((e,n)=>{if(e.preBufferSec===void 0)return e;t.push(n);let{preBufferSec:r,...i}=e;return i});return t.length===0?{config:e,strippedBands:t}:{config:{...e,bands:n},strippedBands:t}}var oc=ic.postBufferSec*1e3,sc=u({maxAgeDays:i().min(0).optional(),maxSizeGb:i().min(0).optional()}),cc=u({enabled:C(),mode:Js.optional(),profiles:S(w).optional(),segmentSeconds:i().int().positive().optional(),bands:S(rc).default([]),deviceDecision:C().optional(),retention:sc.optional()}).strict().refine(e=>e.deviceDecision!==!0||e.bands.length===0,{message:`deviceDecision is a whole-config mode and carries no schedule: it cannot be combined with bands`,path:[`bands`]});function lc(e){return e.enabled?e.deviceDecision===!0?`on-device-decision`:e.bands.length===0?`off`:e.bands.some(e=>e.mode===`continuous`)?`continuous`:`events`:`off`}var uc=[`high`,`low`];function dc(e,t){if(t!==void 0&&t.length>0){let n=e.filter(e=>t.includes(e));return n.length>0?n:[...e]}let n=e.filter(e=>uc.includes(e));return n.length>0?n:[...e]}var fc=[`motion`,`audioThresholdDbfs`,`objectClasses`,`sensorDeviceIds`];function pc(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function mc(e){return pc(e)&&pc(e.triggers)&&e.triggers.deviceSignal===!0}function hc(e){let t=e.triggers;return pc(t)?fc.some(e=>t[e]!==void 0):!1}function gc(e){let t=e.triggers;if(!pc(t))return e;let{deviceSignal:n,...r}=t;return{...e,triggers:r}}function _c(e){let t={value:e,migrated:!1,strippedOnly:!1};if(!pc(e)||!Array.isArray(e.bands)||!e.bands.some(mc))return t;let n=[];for(let t of e.bands){if(!mc(t)||!pc(t)){n.push(t);continue}hc(t)&&n.push(gc(t))}if(n.length>0)return{value:{...e,bands:n},migrated:!1,strippedOnly:!0};let{mode:r,...i}=e;return{value:{...i,bands:[],deviceDecision:!0},migrated:!0,strippedOnly:!1}}var vc=x([`queued`,`running`,`done`,`failed`,`cancelled`]),yc=u({jobId:c(),state:vc,fromLocationId:c(),toLocationId:c(),deviceId:i().nullable(),entities:S(c()),filesMoved:i().int(),bytesMoved:i().int(),filesTotal:i().int().nullable(),rowsReconciled:i().int().nonnegative().optional(),rowsForgotten:i().int().nonnegative().optional(),startedAt:i(),finishedAt:i().nullable(),error:c().nullable()}),bc=x([`recordings`,`recordingsLow`]),xc=u({fromLocationId:c(),toLocationId:c(),entities:S(x([`segments`])).optional(),footageClass:bc.optional(),deviceId:i().int().optional(),profiles:S(c()).optional(),throttleMbps:i().min(1).max(1e3).optional(),sinceMs:i().int().optional()}),Sc=u({leaseId:c().min(1)}),Cc=xc.extend({leaseId:c().min(1)}),wc=x([`move`,`seal`,`gallery`]),Tc=u({toLocationId:c(),fromLocationId:c().optional(),throttleMbps:i().min(1).max(1e3).optional(),mode:wc.optional()}),Ec=u({present:C(),rows:i().int().nonnegative().nullable()}),Dc=u({media:Ec,retrainFrames:Ec,anyPresent:C(),total:i().int().nonnegative().nullable()}).nullable(),Oc=Tc.extend({leaseId:c().min(1)}),kc=x([`recordings`,`recordingsLow`,`eventMedia`,`backups`,`galleryMedia`]),Ac=u({recordings:c().min(1).optional(),recordingsLow:c().min(1).optional(),eventMedia:c().min(1).optional(),backups:c().min(1).optional(),galleryMedia:c().min(1).optional()}).refine(e=>Object.keys(e).length>0,{message:`select at least one storage class`}),jc=u({recordings:c().min(1).optional(),recordingsLow:c().min(1).optional(),eventMedia:c().min(1).optional(),backups:c().min(1).optional(),galleryMedia:c().min(1).optional()}).optional(),Mc=x([`blocking`,`nonBlocking`]),Nc=u({destinations:Ac,sources:jc,throttleMbps:i().min(1).max(1e3).optional(),mode:Mc.optional()}),Pc=x([`planning`,`sealing`,`pausing`,`moving`,`draining`,`verifying`,`repointing`,`refreshing`,`resuming`,`done`,`failed`,`cancelled`]),Fc=x([`pipeline`,`recorder`,`analytics`]),Ic=u({filesMoved:i().int().nonnegative(),filesTotal:i().int().nonnegative().nullable(),bytesMoved:i().int().nonnegative(),rowsReconciled:i().int().nonnegative().optional(),startedAt:i(),observedAt:i()}),Lc=u({storageClass:kc,fromLocationId:c(),toLocationId:c(),freezeSource:C().optional(),moverJobId:c().nullable(),state:vc.nullable(),error:c().nullable(),progress:Ic.nullable()}),Rc=u({jobId:c(),phase:Pc,mode:Mc,destinations:Ac,sources:jc,throttleMbps:i(),moves:S(Lc),pauseLeaseId:c().nullable(),pausedParticipants:S(Fc),repointed:C(),cancelRequested:C(),startedAt:i(),updatedAt:i(),finishedAt:i().nullable(),error:c().nullable()}),zc=x([`sharesDeviceWithSource`,`deviceIdentityUnknown`,`unstampedEventMediaRows`,`blockingOnly`,`noMover`]),Bc=u({code:zc,storageClass:kc,message:c()}),Vc=u({destinations:Ac,sources:jc,mode:Mc,moves:S(u({storageClass:kc,fromLocationId:c(),toLocationId:c(),freezeSource:C().optional()})),findings:S(Bc)}),Hc=x([`footage`,`media`]),Uc=u({lane:Hc,job:yc,migrationJobId:c().nullable(),observedAt:i()}),Wc=u({storageClass:kc,fromLocationId:c(),toLocationId:c(),items:i().int().nonnegative().nullable(),bytes:i().int().nonnegative().nullable()}),Gc=u({classes:S(kc).min(1),throttleMbps:i().min(1).max(1e3).optional()}),Kc=u({fromLocationId:c().min(1),footageClass:bc.optional()}),qc=u({segments:i().int().nonnegative(),bytes:i().int().nonnegative()}).nullable(),Jc=u({locationId:c().min(1),apply:C().optional(),deviceId:i().int().positive().optional(),profiles:S(c().min(1)).optional()}),Yc=x([`location-unknown`,`source-writable`,`no-ledger`,`archive-unreadable`,`anchor-absent`,`anchor-unreadable`,`anchor-moved`]),Xc=x([`live-tail`,`listing-error`,`path-mismatch`,`durable-refused`]),Zc=u({"live-tail":i().int().nonnegative(),"listing-error":i().int().nonnegative(),"path-mismatch":i().int().nonnegative(),"durable-refused":i().int().nonnegative()}),Qc=u({deviceId:i().int(),hoursWalked:i().int().nonnegative(),hoursMissing:i().int().nonnegative(),ghostSegments:i().int().nonnegative(),ghostBytes:i().int().nonnegative(),forgottenSegments:i().int().nonnegative(),orphanFiles:i().int().nonnegative()}),$c=u({locationId:c(),applied:C(),refused:Yc.nullable(),archiveSegments:i().int().nonnegative().nullable(),archiveBytes:i().int().nonnegative().nullable(),hoursClaimed:i().int().nonnegative(),hoursWalked:i().int().nonnegative(),hoursMissing:i().int().nonnegative(),listings:i().int().nonnegative(),segmentsClaimed:i().int().nonnegative(),ghostSegments:i().int().nonnegative(),ghostBytes:i().int().nonnegative(),ghostHoursWhole:i().int().nonnegative(),forgottenSegments:i().int().nonnegative(),forgottenBytes:i().int().nonnegative(),orphanFiles:i().int().nonnegative(),orphanSample:S(c()).readonly(),hoursSkipped:i().int().nonnegative(),skippedByReason:Zc,bounded:C(),byDevice:S(Qc).readonly()}),el=u({rows:i().int().nonnegative()}).nullable(),tl=u({toLocationId:c().min(1),fromLocationId:c().optional(),mode:wc.optional()}),nl=x([`orphans`,`debug-media`,`ghost-ledger`,`done`,`failed`,`cancelled`]),rl=u({includeDebugMedia:C().optional()}),il=u({jobId:c(),phase:nl,includeDebugMedia:C(),orphansReclaimed:i().int().nonnegative(),orphanBytesReclaimed:i().int().nonnegative(),debugMediaReclaimed:i().int().nonnegative(),debugMediaBytesReclaimed:i().int().nonnegative(),ghostsForgotten:i().int().nonnegative(),ghostBytesForgotten:i().int().nonnegative(),detail:c().nullable(),cancelRequested:C(),startedAt:i(),updatedAt:i(),finishedAt:i().nullable(),error:c().nullable()}),al=u({jobId:c().optional()}),ol=[`face`,`plate`],sl=[`face`,`plate`,`clip`,`custom`],cl=[`active`,`readonly`,`drain`,`disabled`],ll=x(cl),ul=x([`normal`,`never`,`drain`]),dl=`readOnly`;function fl(e){return e===`active`}function pl(e){return e!==`disabled`}function ml(e){switch(e){case`active`:return`normal`;case`drain`:return`drain`;case`readonly`:case`disabled`:return`never`}}function hl(e){return e.mode===void 0&&(e.config.readOnly===!0||e.enabled===!1)?`readonly`:null}function gl(e){return(_l(e.mode)?e.mode:void 0)??hl(e)??`active`}function _l(e){return cl.some(t=>t===e)}function vl(e){return fl(gl(e))}function yl(e){return pl(gl(e))}function bl(e){return ml(gl(e))}function xl(e){if(!(`readOnly`in e))return e;let t={...e};return delete t[dl],t}function Sl(e,t){return{...e,mode:t,enabled:fl(t),config:xl(e.config)}}var Cl=c().regex(/^[a-z][a-zA-Z0-9-]*$/),L=u({id:c().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/),type:c(),displayName:c().min(1),providerId:c().min(1),config:y(c(),o()),nodeId:c().optional(),isSystem:C().default(!1),enabled:C().optional(),mode:ll.optional(),capacity:u({totalBytes:i(),availableBytes:i()}).nullable().optional(),owned:u({bytes:i().int().nonnegative(),measuredAtMs:i().int().nonnegative()}).optional(),createdAt:i(),updatedAt:i()}),wl=u({isDefault:C().optional()});function Tl(e){return vl({...e,config:e.config??{}})}var El=1024**3;function Dl(e){return Math.floor(e*El)}var Ol=u({locationId:c(),startedAtMs:i(),startBytes:i(),bytesRemaining:i(),drained:C(),estimatedEmptyAtMs:i().nullable()}),R=d([Cl,c().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/)]),kl=x([`local-path`,`cap-mediated`]),Al=`local-path`,jl=u({id:c().regex(/^[a-z][a-zA-Z0-9-]*$/,{message:`id must start with a lowercase letter and contain only letters, digits, or hyphens`}),displayName:c().min(1,{message:`displayName must not be empty`}),description:c().optional(),cardinality:x([`single`,`multi`]),access:kl.optional(),defaultsTo:c().optional(),defaultRoot:x([`data`,`media`,`backup`]).optional()}),Ml={offsetHours:1,startMonth:3,startWeekIndex:5,startWeekday:`Sunday`,startHour:2,endMonth:10,endWeekIndex:5,endWeekday:`Sunday`,endHour:3},Nl={offsetHours:1,startMonth:3,startWeekIndex:2,startWeekday:`Sunday`,startHour:2,endMonth:11,endWeekIndex:1,endWeekday:`Sunday`,endHour:2},Pl=[{id:`UTC`,label:`UTC (UTC+0)`,region:`Universal`,stdOffsetMinutes:0,dst:null},{id:`Europe/London`,label:`Europe/London (UTC+0 / BST)`,region:`Europe`,stdOffsetMinutes:0,dst:Ml},{id:`Europe/Rome`,label:`Europe/Rome (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:Ml},{id:`Europe/Paris`,label:`Europe/Paris (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:Ml},{id:`Europe/Berlin`,label:`Europe/Berlin (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:Ml},{id:`Europe/Madrid`,label:`Europe/Madrid (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:Ml},{id:`Europe/Amsterdam`,label:`Europe/Amsterdam (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:Ml},{id:`Europe/Istanbul`,label:`Europe/Istanbul (UTC+3)`,region:`Europe`,stdOffsetMinutes:180,dst:null},{id:`America/New_York`,label:`America/New York (UTC−5 / EDT)`,region:`Americas`,stdOffsetMinutes:-300,dst:Nl},{id:`America/Chicago`,label:`America/Chicago (UTC−6 / CDT)`,region:`Americas`,stdOffsetMinutes:-360,dst:Nl},{id:`America/Denver`,label:`America/Denver (UTC−7 / MDT)`,region:`Americas`,stdOffsetMinutes:-420,dst:Nl},{id:`America/Los_Angeles`,label:`America/Los Angeles (UTC−8 / PDT)`,region:`Americas`,stdOffsetMinutes:-480,dst:Nl},{id:`America/Sao_Paulo`,label:`America/Sao Paulo (UTC−3)`,region:`Americas`,stdOffsetMinutes:-180,dst:null},{id:`Asia/Dubai`,label:`Asia/Dubai (UTC+4)`,region:`Asia`,stdOffsetMinutes:240,dst:null},{id:`Asia/Kolkata`,label:`Asia/Kolkata (UTC+5:30)`,region:`Asia`,stdOffsetMinutes:330,dst:null},{id:`Asia/Singapore`,label:`Asia/Singapore (UTC+8)`,region:`Asia`,stdOffsetMinutes:480,dst:null},{id:`Asia/Shanghai`,label:`Asia/Shanghai (UTC+8)`,region:`Asia`,stdOffsetMinutes:480,dst:null},{id:`Asia/Tokyo`,label:`Asia/Tokyo (UTC+9)`,region:`Asia`,stdOffsetMinutes:540,dst:null},{id:`Australia/Sydney`,label:`Australia/Sydney (UTC+10 / AEDT)`,region:`Oceania`,stdOffsetMinutes:600,dst:{offsetHours:1,startMonth:10,startWeekIndex:1,startWeekday:`Sunday`,startHour:2,endMonth:4,endWeekIndex:1,endWeekday:`Sunday`,endHour:3}}];function Fl(e){return Pl.find(t=>t.id===e)}var Il=x([`info`,`warn`,`error`]),Ll=u({name:c().min(3).regex(/^[a-z0-9-]+(\.[a-z0-9-]+)+$/,`a channel name is dotted lower-kebab, e.g. area.thing`),description:c().min(1),defaultLevel:Il,perDevice:C()}),Rl=u({channel:c().min(1),armedUntilMs:i(),deviceIds:S(i().int()).readonly().nullable()}),zl=class{descriptor;on=!1;devices=null;level;closesAtMs=0;constructor(e){this.descriptor=e,this.level=e.defaultLevel}get armedUntilMs(){return this.on?this.closesAtMs:0}wants(e){return this.on?this.devices===null||this.devices.has(e):!1}log(e,t,n){if(!this.on)return;let r={...n.tags,logChannel:this.descriptor.name},i={...n,tags:r};this.level===`error`?e.error(t,i):this.level===`warn`?e.warn(t,i):e.info(t,i)}arm(e){let t=e.deviceIds;this.devices=t===null||t.length===0?null:new Set(t),this.closesAtMs=e.armedUntilMs,this.on=!0}disarm(){this.on=!1,this.devices=null,this.closesAtMs=0}},Bl=class{gates=new Map;declare(e){let t=Ll.parse(e);if(this.gates.get(t.name)!==void 0)throw Error(`log channel "${t.name}" is already declared in this process — two declarations of one name is a programming error, not a merge`);let n=new zl(t);return this.gates.set(t.name,n),n}list(){return[...this.gates.values()].map(e=>e.descriptor).sort((e,t)=>e.name.localeCompare(t.name))}gate(e){return this.gates.get(e)}apply(e,t){let n=new Map,r=[];for(let i of e)if(!(i.armedUntilMs<=t)){if(!this.gates.has(i.channel)){r.push(i.channel);continue}n.set(i.channel,i)}for(let[e,t]of this.gates){let r=n.get(e);r===void 0?t.disarm():t.arm(r)}return r}tick(e){let t=[];for(let[n,r]of this.gates)r.on&&r.armedUntilMs<=e&&(r.disarm(),t.push(n));return t}armed(){let e=[];for(let[t,n]of this.gates)n.on&&e.push({channel:t,armedUntilMs:n.armedUntilMs,deviceIds:null});return e}},Vl=null;function Hl(){return Vl??=new Bl,Vl}function Ul(e){return Hl().declare(e)}function Wl(){Vl=null}var Gl=5e3;function Kl(e,t={}){let n=Hl(),r=t.now??Date.now,i=t.tickMs??5e3,a=setInterval(()=>{let t=n.tick(r());for(let n of t)e.info(`log channel window closed`,{tags:{logChannel:n},meta:{channel:n}})},i);return a.unref?.(),{list:()=>n.list(),apply:t=>{let i=n.apply(t.windows,r()),a=n.armed();return e.info(`log channels applied`,{meta:{armed:a.map(e=>e.channel),unknown:i,declared:n.list().length}}),{armed:a.length,unknown:i}},stop:()=>{clearInterval(a)}}}var ql=16,Jl=1024,Yl=`other`;function Xl(e,t,n){return n===void 0?`${e}${t}`:`${e}${t}${n}`}var Zl=class{maxKeys;maxReasons;counters=new Map;refused=0;constructor(e=Jl,t=16){this.maxKeys=e,this.maxReasons=t}get keysRefused(){return this.refused}get size(){return this.counters.size}note(e,t){if(!Number.isInteger(e.deviceId)||e.deviceId<=0)return;let n=Xl(e.deviceId,e.family,e.variant),r=this.counters.get(n);if(r===void 0){if(this.counters.size>=this.maxKeys){this.refused+=1;return}r={deviceId:e.deviceId,family:e.family,variant:e.variant,sinceMs:t,attempts:0,succeeded:0,reasons:new Map},this.counters.set(n,r)}if(r.attempts+=1,e.reason===void 0){r.succeeded+=1;return}let i=r.reasons.has(e.reason)||r.reasons.size<this.maxReasons?e.reason:Yl;r.reasons.set(i,(r.reasons.get(i)??0)+1)}snapshot(e){let t=[];for(let n of this.counters.values())t.push({deviceId:n.deviceId,family:n.family,...n.variant===void 0?{}:{variant:n.variant},sinceMs:n.sinceMs,atMs:e,attempts:n.attempts,succeeded:n.succeeded,reasons:[...n.reasons.entries()].map(([e,t])=>({reason:e,count:t})).toSorted((e,t)=>t.count-e.count)});return t}clear(){this.counters.clear()}};function Ql(e){return e.attempts<=0?null:(e.attempts-e.succeeded)/e.attempts}var $l=`__unattributed__`,eu=`__root__`;function tu(e){return e.addonId===null?e.classification===`root`?{key:eu,kind:`root`}:{key:$l,kind:`unattributed`}:{key:e.addonId,kind:`addon`}}function nu(e){return Math.round(e*10)/10}function ru(e,t){let n=new Map;for(let t of e){let{key:e,kind:r}=tu(t),i=n.get(e)??{kind:r,main:0,gc:0,lifetime:0,memory:0,count:0,splitKnown:!0},a=t.cpuMainPercent!==null&&t.cpuGcPercent!==null;n.set(e,{kind:i.kind,main:i.main+(t.cpuMainPercent??0),gc:i.gc+(t.cpuGcPercent??0),lifetime:i.lifetime+t.cpuPercent,memory:i.memory+t.memoryRssBytes,count:i.count+1,splitKnown:i.splitKnown&&a})}return[...n.entries()].map(([e,n])=>{let r=n.splitKnown?nu(n.main):null,i=n.splitKnown?nu(n.gc):null,a=nu(n.lifetime);return{key:e,kind:n.kind,point:{atMs:t,samples:1,cpuMainPercent:r,cpuMainPercentMin:r,cpuGcPercent:i,cpuGcPercentMin:i,cpuLifetimePercent:a,cpuLifetimePercentMin:a,memoryRssBytes:n.memory,memoryRssBytesMin:n.memory,processCount:n.count,processCountMin:n.count}}})}function iu(e,t){return e===null||t===null?null:e<t?e:t}function au(e,t){return e===null||t===null?null:e>t?e:t}function ou(e,t,n){return{atMs:n,samples:e.samples+t.samples,cpuMainPercent:au(e.cpuMainPercent,t.cpuMainPercent),cpuMainPercentMin:iu(e.cpuMainPercentMin,t.cpuMainPercentMin),cpuGcPercent:au(e.cpuGcPercent,t.cpuGcPercent),cpuGcPercentMin:iu(e.cpuGcPercentMin,t.cpuGcPercentMin),cpuLifetimePercent:Math.max(e.cpuLifetimePercent,t.cpuLifetimePercent),cpuLifetimePercentMin:Math.min(e.cpuLifetimePercentMin,t.cpuLifetimePercentMin),memoryRssBytes:Math.max(e.memoryRssBytes,t.memoryRssBytes),memoryRssBytesMin:Math.min(e.memoryRssBytesMin,t.memoryRssBytesMin),processCount:Math.max(e.processCount,t.processCount),processCountMin:Math.min(e.processCountMin,t.processCountMin)}}function su(e,t,n){if(n<=0||t<=0||e<=0)return Math.max(t,1);let r=e/n;return r<=t?t:Math.ceil(r/t)*t}function cu(e,t,n){if(t<=0||e.length===0)return e;let r=new Map;for(let i of e){let e=n+Math.floor((i.atMs-n)/t)*t,a=r.get(e);r.set(e,a===void 0?{...i,atMs:e}:ou(a,i,e))}return[...r.values()].toSorted((e,t)=>e.atMs-t.atMs)}function lu(e,t,n,r={}){if(e.length===0)return null;let i=`${n}/`,a=e=>({brokerId:e.brokerId,profileId:e.brokerId.startsWith(i)?e.brokerId.slice(i.length):e.brokerId,url:e.url,mutedUrl:e.mutedUrl,enabled:e.enabled,...e.codec===void 0?{}:{codec:e.codec},...e.resolution===void 0?{}:{resolution:e.resolution}});if(t!==`auto`){let n=e.find(e=>e.enabled&&e.url.length>0&&(e.profile===t||e.brokerId===`${i}${t}`));if(n)return a(n)}let o=e.filter(e=>e.enabled&&e.url.length>0);if(o.length===0)return null;let s=r.targetResolution;if(s){let e=o.filter(e=>e.resolution!==void 0);if(e.length>0){let t=uu(e,s);if(t)return a(t)}}return a(o[0])}function uu(e,t){let n=t.width*t.height;return[...e.flatMap(e=>e.resolution===void 0?[]:[{entry:e,pixels:e.resolution.width*e.resolution.height}])].sort((e,t)=>Oa(e.pixels,t.pixels,n))[0]?.entry}var du=1,fu=96,pu={upperHs:[0,32],upperV:[32,40],upperGrad:[40,48],lowerHs:[48,80],lowerV:[80,88],lowerGrad:[88,96]},mu=!1,hu=[`motion`,`objects`,`discarded`,`stationary`],gu=[`motion`,`objects`,`stationary`],_u={borderWidth:2,dashed:!0,dashPattern:[6,4],opacity:1,borderRadius:2};function vu(e){return!Number.isFinite(e)||e<=0?`0 s`:e<6e4?`${String(Math.round(e/1e3))} s`:e<36e5?`${String(Math.round(e/6e4))} min`:`${String(Math.round(e/36e5))} h`}var yu=[`onnx`,`coreml`,`openvino`,`tflite`,`pt`],bu={yolo26:`YOLO26`,"yolo26-seg":`YOLO26-seg`,yolov9:`YOLOv9`};function xu(e){return bu[e]??e.toUpperCase()}var Su={"yolo26-seg":`detection + masks, slightly heavier`},Cu=/\s*@\s*\d+\s*(?:[x×]\s*\d+)?/gi;function wu(e,t){let n=xu(e),r=t.replace(RegExp(`^${n}\\s+`,`i`),``).replace(Cu,``).trim();return r.length>0?r:t}function Tu(e,t){let n=[];return t===`test`&&n.push(`Test`),n.push(e===`int8`?`Int8`:`Standard`),n.join(` · `)}function Eu(e){return yu.filter(t=>e.formats[t]!==void 0)}function Du(e){let t=yu.map(t=>e.formats[t]?.sizeMB).filter(e=>typeof e==`number`);return t.length>0?Math.min(...t):0}var Ou=[`t`,`n`,`s`,`m`,`c`,`l`,`x`],ku=[`fp32`,`int8`];function Au(e){let t=new Map;for(let n of e){if(n.legacy===!0||n.group===void 0)continue;let{family:e,tier:r}=n.group,i=t.get(e)??new Map,a=i.get(r)??[];a.push(n),i.set(r,a),t.set(e,i)}let n=[];for(let[e,r]of t){let t=[];for(let[n,i]of r){let r=i.map(e=>{let t=e.group?.precision??`fp32`,n=e.group?.optimization??`standard`;return{modelId:e.id,precision:t,optimization:n,resolution:e.group?.resolution,label:Tu(t,n),formats:Eu(e),sizeMB:Du(e)}}).toSorted((e,t)=>e.resolution===t.resolution?e.optimization===t.optimization?ku.indexOf(e.precision)-ku.indexOf(t.precision):e.optimization===`test`?1:-1:(t.resolution??1/0)-(e.resolution??1/0)),a=r.find(e=>e.precision===`fp32`&&e.optimization===`standard`)??r[0];if(a===void 0)continue;let o=i.find(e=>e.id===a.modelId);t.push({tier:n,label:o?wu(e,o.name):n.toUpperCase(),baseModelId:a.modelId,options:r})}t.sort((e,t)=>{let n=Ou.indexOf(e.tier),r=Ou.indexOf(t.tier);return n!==-1&&r!==-1?n-r:n===-1?r===-1?e.tier.localeCompare(t.tier):1:-1});let i=Su[e];n.push({family:e,label:xu(e),...i===void 0?{}:{hint:i},tiers:t})}return n.sort((e,t)=>e.family.localeCompare(t.family)),n}function ju(e,t){let n=t.precision??`fp32`,r=t.optimization??`standard`,i=e.filter(e=>e.group!==void 0&&e.group.family===t.family&&e.group.tier===t.tier&&(e.group.precision??`fp32`)===n&&(e.group.optimization??`standard`)===r);return t.resolution===void 0?i.toSorted((e,t)=>(t.group?.resolution??1/0)-(e.group?.resolution??1/0))[0]?.id??null:i.find(e=>e.group?.resolution===t.resolution)?.id??null}function Mu(e,t){let n=e.find(e=>e.id===t);return n?.group===void 0?null:{family:n.group.family,tier:n.group.tier,precision:n.group.precision??`fp32`,optimization:n.group.optimization??`standard`,resolution:n.group.resolution}}var Nu=/^object-clip(-[a-z0-9][a-z0-9-]*)?$/,Pu=u({textModelId:c().min(1),embeddingDim:i().int().positive(),vectorIndex:c().regex(Nu),tokenizerFile:c().min(1),contextLength:i().int().positive(),padId:i().int().nonnegative(),searchMinScore:i().min(0).max(1)}),Fu=[`loose`,`balanced`,`strict`],Iu=x(Fu),Lu={loose:1,balanced:1.25,strict:1.5};function Ru(e,t){if(t.minScore!==void 0)return t.minScore;let n=Lu[t.strictness??`loose`];return Math.min(1,Math.round(e.searchMinScore*n*1e3)/1e3)}var zu=[`animal-classifier`,`vehicle-classifier`,`package-detection`],Bu=[`plate-detection`,`face-detection`],Vu=[`segmentation`],Hu=[...zu,...Bu,...Vu];function Uu(e){return Hu.some(t=>t===e)}function Wu(e){return zu.some(t=>t===e)}var Gu={"animal-classifier":[`bird`,`cat`,`cow`,`deer`,`dog`,`horse`,`sheep`,`squirrel`],"vehicle-classifier":[`Ambulance`,`Bicycle`,`Bus`,`Car`,`Motorcycle`,`Taxi`,`Truck`,`Van`],"package-detection":[`package`]},Ku={"animal-classifier":`animal`,"vehicle-classifier":`vehicle`,"package-detection":`package`},qu={"animal-classifier":{},"vehicle-classifier":{school_bus:`Bus`,garbage_truck:`Truck`},"package-detection":{}},Ju={"plate-detection":{rootLabels:[`license_plate`],parentMacro:`vehicle`,childClass:`plate`,servedChildSteps:[`plate-ocr`],use:`as-output`},"face-detection":{rootLabels:[`face`],parentMacro:`person`,childClass:`face`,servedChildSteps:[`face-embedding`],use:`refine`,minRootInputPx:640}},Yu={"animal-classifier":!0,"vehicle-classifier":!0,"package-detection":!0,"plate-detection":!1,"face-detection":!1,segmentation:!0},Xu=`useRootModel`,Zu=`labelLink`,Qu=`detector-link:`;function $u(e){return`${Qu}${e}`}function ed(e){if(e===void 0||!e.startsWith(`detector-link:`))return;let t=e.slice(14);return Wu(t)?t:void 0}function td(e,t){let n=qu[e][t];if(n!==void 0)return n;let r=t.toLowerCase();return Gu[e].find(e=>e.toLowerCase()===r)}function nd(e,t){let n=[];if(t!==void 0)for(let r of zu){let i={};for(let n of e){if(t.mapping[n]!==Ku[r])continue;let e=td(r,n);e!==void 0&&(i[n]=e)}let a=new Set(Object.values(i));if(a.size===0)continue;let o=Gu[r].filter(e=>!a.has(e));n.push({kind:`label`,stepId:r,labelToEffect:i,uncovered:o})}let r=new Set(e);for(let e of Bu){let t=Ju[e],i=t.rootLabels.filter(e=>r.has(e));i.length!==0&&n.push({kind:`crop`,stepId:e,rootLabels:i,parentMacro:t.parentMacro,childClass:t.childClass})}return n}var rd=[`yolo-seg`];function id(e){return e===void 0||!rd.includes(e)?[]:Vu.map(e=>({kind:`mask`,stepId:e}))}function ad(e,t){let n=e?.suppliesSteps??nd(e!==void 0&&e.labels.length>0?e.labels.map(e=>e.id):t.labels,e?.classMap??t.classMap),r=id(e?.postprocessor).filter(e=>!n.some(t=>t.stepId===e.stepId)),i=r.length>0?[...n,...r]:n,a=e===void 0?void 0:Math.min(e.inputSize.width,e.inputSize.height);return a===void 0?i:i.map(e=>e.kind===`crop`?{...e,rootInputPx:a}:e)}function od(e,t){return e?.find(e=>e.stepId===t)}function sd(e,t){let n=t?.[Xu];if(typeof n==`boolean`)return n;let r=t?.[Zu];return r===`skip-when-filled`?!0:r===`run`?!1:Yu[e]}function cd(e){if(e.kind!==`crop`)return;let t=Ju[e.stepId].minRootInputPx;if(t!==void 0)return e.rootInputPx!==void 0&&e.rootInputPx>=t?void 0:`root-input-too-small`}function ld(e,t,n){let r=od(n,e),i=sd(e,t),a=r===void 0?`root-does-not-declare`:cd(r);return{stepId:e,supply:r,intent:i,effective:i&&a===void 0,inactive:i&&a!==void 0,...i&&a!==void 0?{inactiveReason:a}:{}}}function ud(e,t){let n=t?.enabledClasses;return!Array.isArray(n)||n.length===0?!0:n.some(t=>t===e)}function dd(e){return Ju[e].servedChildSteps}var fd=.9;function pd(e,t){let n=e.w*e.h;if(!(n>0))return-1;let r=-1,i=1/0;return t.forEach((t,a)=>{if(Math.max(0,Math.min(e.x+e.w,t.x+t.w)-Math.max(e.x,t.x))*Math.max(0,Math.min(e.y+e.h,t.y+t.h)-Math.max(e.y,t.y))/n<.9)return;let o=t.w*t.h;o<i&&(r=a,i=o)}),r}var md={"animal-classifier":`animals`,"vehicle-classifier":`vehicles`,"package-detection":`packages`,"plate-detection":`plates`,"face-detection":`faces`,segmentation:`masks`};function hd(e){let t=md[e.stepId];if(e.kind!==`label`)return t;let n=Gu[e.stepId].length;return n<=1?t:`${t} ${String(n-e.uncovered.length)}/${String(n)}`}function gd(e){return(e??[]).map(hd).join(` · `)}var _d=[`onnx`,`coreml`,`openvino`,`tflite`,`pt`,`gguf`],vd=u({url:c(),sizeMB:i(),isDirectory:C().optional(),files:S(c()).readonly().optional(),runtimes:S(x([`python`])).readonly().optional(),revision:c().min(1).optional()}),yd=x([`current`,`stale`,`missing`]),bd=x([`fp32`,`fp16`,`int8`]),xd=u({downloaded:C(),sizeMB:i(),onDisk:yd.optional(),precision:bd.optional()}),Sd=u({url:c(),filename:c(),sizeMB:i()}),Cd=u({onnx:vd.optional(),coreml:vd.optional(),openvino:vd.optional(),tflite:vd.optional(),pt:vd.optional(),gguf:vd.optional()}),wd=u({family:c(),tier:c(),precision:x([`fp32`,`int8`]).optional(),optimization:x([`standard`,`test`]).optional(),resolution:i().int().positive().optional()}),Td=[`camstack`,`frigate`,`scrypted`,`custom`],Ed=x(Td);function Dd(e){if(e.provider!==void 0)return e.provider;let t=`${e.id} ${e.description??``}`;return/scrypted/i.test(t)?`scrypted`:/frigate/i.test(t)?`frigate`:`custom`}var Od=[`camstack-hf`,`third-party`,`built-in`],kd=n(e=>typeof e==`string`?{weights:e}:e,u({weights:c().min(1),code:c().min(1).optional(),data:u({name:c().min(1),terms:c().min(1),url:c().url().optional()}).optional(),upstream:u({name:c().min(1),url:c().url()}).optional(),url:c().url().optional(),attribution:c().min(1).optional(),modifications:c().min(1).optional(),hosting:x(Od).optional(),nonCommercial:C().optional()})),Ad=f(`kind`,[u({kind:p(`label`),stepId:x(zu),labelToEffect:y(c(),c()),uncovered:S(c()).readonly()}),u({kind:p(`crop`),stepId:x(Bu),rootLabels:S(c()).readonly(),parentMacro:x([`vehicle`,`person`]),childClass:x([`plate`,`face`]),rootInputPx:i().int().positive().optional()}),u({kind:p(`mask`),stepId:x(Vu)})]),jd=u({id:c(),name:c(),description:c(),formats:Cd,inputSize:u({width:i(),height:i()}),inputChannels:i().int().positive().optional(),labels:S(Bs).readonly(),inputLayout:x([`nchw`,`nhwc`]).optional(),inputNormalization:x([`zero-one`,`imagenet`,`none`,`scrfd`]).optional(),outputProbabilities:C().optional(),preprocessMode:x([`letterbox`,`resize`]).optional(),postprocessor:g().optional(),defaultConfidence:i().min(0).max(1).optional(),defaultClassFloors:y(c(),i().min(0).max(1)).optional(),gpuInferencePrecision:x([`f32`,`f16`]).optional(),suppliedLabelFloors:y(c(),i().min(0).max(1)).optional(),faceAlignment:C().optional(),extraFiles:S(Sd).readonly().optional(),legacy:C().optional(),metrics:u({map50:i().optional(),p95LatencyMs:y(c(),i()).optional()}).optional(),license:kd.optional(),group:wd.optional(),provider:Ed.optional(),classMap:Ws.optional(),suppliesSteps:S(Ad).readonly().optional(),clip:Pu.optional()}),Md=f(`format`,[u({format:p(`openvino`),precisions:S(x([`fp16`,`int8`])).min(1).readonly()}),u({format:p(`coreml`)})]),Nd=u({id:c().regex(/^[a-zA-Z0-9._-]+$/),name:c(),labels:S(Bs).readonly(),inputSize:u({width:i(),height:i()}),inputLayout:x([`nchw`,`nhwc`]).optional(),inputNormalization:x([`zero-one`,`imagenet`,`none`,`scrfd`]).optional(),preprocessMode:x([`letterbox`,`resize`]).optional(),outputFormat:x([`yolo`,`ssd`,`embedding`,`classification`,`ocr`,`segmentation`]),faceAlignment:C().optional(),classMap:Ws.optional()}),Pd=u({format:x(_d),precision:x([`fp16`,`int8`]).optional(),sizeMB:i(),validated:C(),files:S(c()).readonly()}),Fd=u({entry:jd,artifacts:S(Pd).readonly()});function Id(e){switch(e.toUpperCase()){case`GET`:case`HEAD`:case`OPTIONS`:return`view`;case`POST`:case`PUT`:case`PATCH`:return`create`;default:return`delete`}}function Ld(e,t){return e.some(e=>e.type===`category`&&e.target===`device`&&e.access.includes(t))}function Rd(e,t,n){return e.some(e=>e.type===`addon`&&e.target===t&&e.access.includes(n))}function zd(e){let t=e.kind;if(t===void 0)return{kind:`session`};if(t!==`sso-bridge`)return{kind:`not-a-credential`,reason:`bridge token kind=${String(t)}`};let n=e.provider;return n===`oauth-access`?{kind:`integration`,provider:`oauth-access`}:{kind:`not-a-credential`,reason:`bridge token provider=${String(n)}`}}function Bd(e){let{principal:t}=e;if(t.kind===`not-a-credential`)return{allowed:!1,reason:t.reason};if(t.kind===`session`)return{allowed:!0};let n=Id(e.method);return Rd(e.scopes,e.addonId,n)?{allowed:!0}:{allowed:!1,reason:`integration token holds no addon:${e.addonId}[${n}] grant`}}var Vd=u({kind:p(`field`).optional(),sourceKey:c(),cap:c(),fieldPath:c()}),Hd=u({kind:p(`literal`),value:d([c(),i(),C(),ne()])}),Ud=u({kind:p(`global`),sourceStableId:c(),cap:c(),fieldPath:c()}),Wd=d([Vd,Hd,Ud]),Gd=u({expr:c().min(1).max(Lr),bindings:y(c().regex(Ur),Wd)}).superRefine((e,t)=>{let n=Ci(e);n!==null&&t.addIssue({code:`custom`,message:n,path:[`expr`]})}),Kd=3,qd=32,Jd=x([`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`contains`,`in`]),Yd=u({kind:p(`condition`),deviceId:i().int().nonnegative(),cap:c().min(1),fieldPath:c().min(1),operator:Jd,value:d([c(),i(),C(),S(d([c(),i()]))])}),Xd=u({kind:p(`expression`),expr:c().min(1).max(Lr),bindings:y(c().regex(Ur),Wd)}).superRefine((e,t)=>{let n=Ci(e);n!==null&&t.addIssue({code:`custom`,message:n,path:[`expr`]})}),Zd=fe(()=>f(`kind`,[u({kind:p(`all`),children:S(Zd)}),u({kind:p(`any`),children:S(Zd)}),u({kind:p(`not`),child:Zd}),Yd,Xd])),Qd=f(`kind`,[u({kind:p(`device-state`),deviceId:i().int().nonnegative(),cap:c().min(1),fieldPath:c().min(1),becomes:d([c(),i(),C()]).optional(),edge:C().optional(),forMs:i().int().min(0).max(864e5).optional(),debounceMs:i().int().min(0).max(6e5).optional()}),u({kind:p(`device-event`),category:c().min(1),deviceId:i().int().nonnegative().optional()}),u({kind:p(`schedule`),cron:c().min(1).max(120)}),u({kind:p(`manual`)})]),$d=f(`kind`,[u({kind:p(`wait`),seconds:i().min(0).max(300)}),u({kind:p(`cap`),deviceId:d([i().int(),S(i().int()).min(1),u({$var:c().min(1)})]),cap:c().min(1),method:c().min(1),args:y(c(),o()).optional()}),u({kind:p(`code`),code:c().min(1).max(2e4)})]),ef=u({triggers:S(Qd),conditions:Zd.optional(),actions:S($d)});function tf(e){if(e.kind===`condition`||e.kind===`expression`)return 1;if(e.kind===`not`)return 1+tf(e.child);let t=e.children;if(t.length===0)return 1;let n=0;for(let e of t){let t=tf(e);t>n&&(n=t)}return 1+n}function nf(e){if(e.kind===`condition`||e.kind===`expression`)return 1;if(e.kind===`not`)return nf(e.child);let t=0;for(let n of e.children)t+=nf(n);return t}function rf(e){return e.kind===`condition`||e.kind===`expression`?!1:e.kind===`not`?rf(e.child):e.children.length===0?!0:e.children.some(rf)}function af(e){if(e.triggers.length===0)return`an automation needs at least one trigger — without one nothing can start a run`;if(e.actions.length===0)return`an automation needs at least one action — a rule that does nothing is not a rule`;let t=e.conditions;if(t!==void 0){if(rf(t))return`a condition group is empty — group existing rows instead of leaving a container to fill`;let e=tf(t);if(e>3)return`conditions nest ${e} levels deep — the limit is 3. "not (any of …)" is the same as "all of (not …)", which is one level shallower`;let n=nf(t);if(n>32)return`conditions use ${n} leaves — the limit is 32`}return null}var of=15e3;function z(e){return JSON.stringify(e)}function sf(e,t){switch(e.kind){case`all`:return`allOf([\n${e.children.map(e=>`${t} () => ${sf(e,`${t} `)}`).join(`,
|
|
3
|
+
`||e===`\r`||e===`\f`||e===`\v`}function Xr(e){if(e.length>2048)throw new k(`expression too long (${e.length} > ${Lr} chars)`,0);let t=[],n=0,r=e.length;for(;n<r;){let i=e[n];if(Yr(i)){n+=1;continue}if(Kr(i)){let i=n;for(;n<r&&Kr(e[n]);)n+=1;if(n<r&&e[n]===`.`){if(n+1>=r||!Kr(e[n+1]))throw new k(`malformed number: decimal point needs a digit`,n);for(n+=1;n<r&&Kr(e[n]);)n+=1}let a=e.slice(i,n),o=Number(a);if(!Number.isFinite(o))throw new k(`malformed number: '${a}'`,i);t.push({type:`number`,value:o,pos:i});continue}if(i===`'`||i===`"`){let a=i,o=n;n+=1;let s=``,c=!1;for(;n<r;){let t=e[n];if(t===`\\`){let t=n+1<r?e[n+1]:``;if(t===`\\`||t===`'`||t===`"`){s+=t,n+=2;continue}throw new k(`invalid string escape: '\\${t}'`,n)}if(t===a){c=!0,n+=1;break}s+=t,n+=1}if(!c)throw new k(`unterminated string literal`,o);t.push({type:`string`,value:s,pos:o});continue}if(qr(i)){let i=n;for(;n<r&&Jr(e[n]);)n+=1;let a=e.slice(i,n);Gr.has(a)?t.push({type:`keyword`,keyword:Zr(a),pos:i}):t.push({type:`identifier`,name:a,pos:i});continue}let a=n+1<r?e.slice(n,n+2):``;if(a===`<=`||a===`>=`||a===`==`||a===`!=`||a===`&&`||a===`||`){t.push({type:`punct`,punct:a,pos:n}),n+=2;continue}if(Qr(i)){t.push({type:`punct`,punct:i,pos:n}),n+=1;continue}throw new k(`unexpected character '${i}'`,n)}return t.push({type:`eof`,pos:r}),t}function Zr(e){return e===`true`?`true`:e===`false`?`false`:`null`}function Qr(e){return e===`(`||e===`)`||e===`,`||e===`?`||e===`:`||e===`+`||e===`-`||e===`*`||e===`/`||e===`%`||e===`!`||e===`<`||e===`>`}var $r={"||":1,"&&":2,"==":3,"!=":3,"<":4,"<=":4,">":4,">=":4,"+":5,"-":5,"*":6,"/":6,"%":6};function ei(e){return e===`&&`||e===`||`}function ti(e){return e===`+`||e===`-`||e===`*`||e===`/`||e===`%`||e===`==`||e===`!=`||e===`<`||e===`<=`||e===`>`||e===`>=`}var ni=class{tokens;pos=0;nodeCount=0;identifiers=new Set;callees=new Set;constructor(e){this.tokens=e}parse(){let e=this.parseTernary(),t=this.peek();if(t.type!==`eof`)throw new k(`unexpected trailing input`,t.pos);return{ast:e,identifiers:this.identifiers,callees:this.callees,nodeCount:this.nodeCount}}peek(){return this.tokens[this.pos]}next(){return this.tokens[this.pos++]}expectPunct(e){let t=this.peek();if(t.type!==`punct`||t.punct!==e)throw new k(`expected '${e}'`,t.pos);this.pos+=1}matchPunct(e){let t=this.peek();return t.type===`punct`&&t.punct===e?(this.pos+=1,!0):!1}countNode(){if(this.nodeCount+=1,this.nodeCount>256)throw new k(`expression too complex`,this.peek().pos)}parseTernary(){let e=this.parseBinary(1);if(this.matchPunct(`?`)){let t=this.parseTernary();this.expectPunct(`:`);let n=this.parseTernary();return this.countNode(),{kind:`conditional`,test:e,consequent:t,alternate:n}}return e}parseBinary(e){let t=this.parseUnary();for(;;){let n=this.peek();if(n.type!==`punct`)break;let r=$r[n.punct];if(r===void 0||r<e)break;let i=n.punct;this.pos+=1;let a=this.parseBinary(r+1);if(this.countNode(),ei(i))t={kind:`logical`,op:i,left:t,right:a};else if(ti(i))t={kind:`binary`,op:i,left:t,right:a};else throw new k(`unexpected operator '${i}'`,n.pos)}return t}parseUnary(){let e=this.peek();if(e.type===`punct`&&(e.punct===`!`||e.punct===`-`)){let t=e.punct;this.pos+=1;let n=this.parseUnary();return this.countNode(),{kind:`unary`,op:t,operand:n}}return this.parsePrimary()}parsePrimary(){let e=this.next();switch(e.type){case`number`:return this.countNode(),{kind:`literal`,value:e.value};case`string`:return this.countNode(),{kind:`literal`,value:e.value};case`keyword`:return this.countNode(),{kind:`literal`,value:e.keyword===`null`?null:e.keyword===`true`};case`identifier`:{let t=this.peek();return t.type===`punct`&&t.punct===`(`?this.parseCall(e.name,e.pos):(this.identifiers.add(e.name),this.countNode(),{kind:`identifier`,name:e.name})}case`punct`:if(e.punct===`(`){let e=this.parseTernary();return this.expectPunct(`)`),e}throw new k(`unexpected token '${e.punct}'`,e.pos);case`eof`:throw new k(`unexpected end of expression`,e.pos)}}parseCall(e,t){if(!Ir.has(e))throw new k(`unknown function '${e}'`,t);this.expectPunct(`(`);let n=[];if(!this.matchPunct(`)`))for(;;){if(n.push(this.parseTernary()),n.length>16)throw new k(`too many arguments to '${e}'`,t);if(!this.matchPunct(`,`)){this.expectPunct(`)`);break}}return this.callees.add(e),this.countNode(),{kind:`call`,callee:e,args:n}}};function ri(e){return new ni(Xr(e)).parse()}var ii=new Map;function ai(e){let t=ii.get(e);if(t!==void 0)return ii.delete(e),ii.set(e,t),t;let n;try{n={ok:!0,parsed:ri(e)}}catch(e){n={ok:!1,error:e instanceof k?e.message:String(e)}}if(ii.set(e,n),ii.size>256){let e=ii.keys().next().value;e!==void 0&&ii.delete(e)}return n}function oi(e){let t=ai(e);if(t.ok)return t.parsed;throw new k(t.error)}function si(e){return ai(e)}var ci=Object.freeze({});function li(e){let t=Object.create(null);for(let n of Object.keys(e))Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}function ui(e){return typeof e==`number`&&Number.isFinite(e)}function di(e){return!!e}function fi(e,t){if(!Number.isFinite(e))throw new A(`${t} produced a non-finite result`);return e}function pi(e){if(e.steps+=1,e.steps>e.maxSteps)throw new A(`expression evaluation step budget exceeded`)}function N(e,t){return`${e}/${t}`}function P(e,t,n){switch(pi(t),e.kind){case`literal`:return e.value;case`identifier`:if(!(e.name in t.scope))throw new A(`unknown identifier: ${e.name}`);return t.scope[e.name];case`unary`:return mi(e.op,P(e.operand,t,N(n,`operand`)));case`binary`:return hi(e.op,P(e.left,t,N(n,`left`)),P(e.right,t,N(n,`right`)));case`logical`:{let r=P(e.left,t,N(n,`left`));return e.op===`&&`?di(r)?P(e.right,t,N(n,`right`)):r:di(r)?r:P(e.right,t,N(n,`right`))}case`conditional`:return di(P(e.test,t,N(n,`test`)))?P(e.consequent,t,N(n,`consequent`)):P(e.alternate,t,N(n,`alternate`));case`call`:{let r=e.args.map((e,r)=>P(e,t,N(n,`arg:${r}`)));return gi(e.callee,r,n,t)}}}function mi(e,t){if(e===`!`)return!di(t);if(!ui(t))throw new A(`unary "-" requires a finite number`);return fi(-t,`unary "-"`)}function hi(e,t,n){switch(e){case`==`:return t===n;case`!=`:return t!==n;case`+`:if(typeof t==`string`&&typeof n==`string`)return t+n;if(ui(t)&&ui(n))return fi(t+n,`"+"`);throw new A(`"+" requires two numbers or two strings`);case`-`:case`*`:case`/`:case`%`:if(!ui(t)||!ui(n))throw new A(`"${e}" requires two finite numbers`);return fi(e===`-`?t-n:e===`*`?t*n:e===`/`?t/n:t%n,`"${e}"`);case`<`:case`<=`:case`>`:case`>=`:if(ui(t)&&ui(n)||typeof t==`string`&&typeof n==`string`)return e===`<`?t<n:e===`<=`?t<=n:e===`>`?t>n:t>=n;throw new A(`"${e}" requires two numbers or two strings`)}}function gi(e,t,n,r){if(!Object.prototype.hasOwnProperty.call(Fr,e))throw new A(`unknown function: ${e}`);let i=Fr[e];if(t.length<i.minArgs||t.length>i.maxArgs)throw new A(`${e}: wrong number of arguments (${t.length})`);if(Cr(e)){if(r.invokeStateful===void 0)throw new A(`${e}: stateful evaluation context is required`);return r.invokeStateful({name:e,path:n,args:t})}return i.apply(t,r.hooks)}function _i(e,t,n){return P(e,{scope:t,hooks:n?.hooks??ci,maxSteps:n?.maxSteps??4096,...n?.invokeStateful===void 0?{}:{invokeStateful:n.invokeStateful},steps:0},`root`)}function vi(){return{calls:new Map,acceptedEdgeAt:null,disarmRoseNext:!1}}function yi(e){return{calls:new Map([...e.calls].map(([e,t])=>[e,{...t}])),acceptedEdgeAt:e.acceptedEdgeAt,disarmRoseNext:e.disarmRoseNext}}function bi(e,t,n){let r=t.calls.get(e.path);switch(e.name){case`rose`:{let i=r?.kind===`rose`?r:{kind:`rose`};t.calls.set(e.path,i);let a=n.currentOutput===null||typeof n.currentOutput==`number`&&Number.isFinite(n.currentOutput)?n.currentOutput:null;return Ar(e.args[0],e.args[1],e.args[2],i,t,{currentOutput:a,startedAtMs:n.startedAtMs,nowMs:n.nowMs})}case`count`:{let i=r?.kind===`count`?r:{kind:`count`,highWater:null,primed:!1};return t.calls.set(e.path,i),Mr(e.args[0],i,n.currentOutput)}}}var xi=`now`;function Si(e){if(e===null)return null;if(typeof e==`string`||typeof e==`boolean`)return e;if(typeof e==`number`)return Number.isFinite(e)?e:void 0}function Ci(e){let t=Object.keys(e.bindings);if(t.length>32)return`too many bindings (${t.length} > 32)`;for(let e of t){if(!Ur.test(e))return`invalid binding name '${e}'`;if(Wr.has(e))return`binding name '${e}' is reserved`;if(Ir.has(e))return`binding name '${e}' shadows a builtin function`}let n=si(e.expr);if(!n.ok)return n.error;let r=new Set(t);for(let e of n.parsed.identifiers)if(e!==`now`&&!r.has(e))return`expression references unbound identifier '${e}'`;return null}function wi(e,t,n,r){let i=si(e);if(!i.ok)return{ok:!1,error:i.error};let a=li({...t,now:n}),o={...r?.hooks,now:n};try{return{ok:!0,value:_i(i.parsed.ast,a,{...r,hooks:o})}}catch(e){return{ok:!1,error:e instanceof A?e.message:String(e)}}}var Ti=`composer`,Ei=`customize:`,Di=`composed-`,Oi=16,ki=32,Ai=2e4,ji=u({addonId:c().min(1),stableId:c().min(1)}),Mi=u({source:ji,cap:c().min(1),fieldPath:c().min(1)}),Ni=Mi.extend({kind:p(`from`)}),Pi=u({kind:p(`literal`),value:d([c(),i(),C(),ne()])}),Fi=f(`kind`,[Ni,Pi]),Ii=u({kind:p(`expression`),expr:c().min(1).max(Lr),bindings:y(c().regex(Ur),Fi)}).superRefine((e,t)=>{let n=Ci(e);n!==null&&t.addIssue({code:`custom`,message:n,path:[`expr`]})}),Li=u({kind:p(`code`),code:c().min(1).max(Ai)}),Ri=f(`kind`,[Ni,Ii,Li]),zi=u({kind:p(`forward`),source:ji,cap:c().min(1),method:c().min(1)}),Bi=f(`kind`,[zi,Li]),Vi=/^[a-z0-9][a-z0-9-]{0,47}$/,Hi=16,Ui=`items`,Wi=u({label:c().min(1).max(80),fields:y(c().min(1),Ri)}),Gi=u({kind:p(`fields`),cap:c().min(1),enabled:C().optional(),fields:y(c().min(1),Ri).refine(e=>Object.keys(e).length<=32,{message:`at most 32 fields per capability`}),items:y(c().regex(Vi),Wi).refine(e=>Object.keys(e).length<=16,{message:`at most 16 items`}).optional(),commands:y(c().min(1),Bi).optional()}),Ki=u({kind:p(`passthrough`),cap:c().min(1),enabled:C().optional(),source:ji}),qi=f(`kind`,[Gi,Ki]);function Ji(e){return e.enabled!==!1}var Yi=u({kind:p(`new`),type:x(D),role:x(O).optional()}),Xi=u({kind:p(`existing`),device:ji}),Zi=f(`kind`,[Yi,Xi]),Qi=u({target:Zi,features:S(qi).min(1).max(16)}).superRefine((e,t)=>{let n=new Set;e.features.forEach((e,r)=>{n.has(e.cap)&&t.addIssue({code:`custom`,message:`capability \`${e.cap}\` is composed twice — one feature per capability`,path:[`features`,r,`cap`]}),n.add(e.cap)})});function F(e){return`${e.addonId}/${e.stableId}`}function $i(e,t){return`${F(e)}#${t}`}function ea(e){return`${$i(e.source,e.cap)}.${e.fieldPath}`}function ta(e){return`${Di}${e}`}function na(e){return{addonId:Ti,stableId:ta(e)}}function ra(e){switch(e.kind){case`from`:return[{source:e.source,cap:e.cap,fieldPath:e.fieldPath}];case`expression`:return Object.values(e.bindings).flatMap(e=>e.kind===`from`?[{source:e.source,cap:e.cap,fieldPath:e.fieldPath}]:[]);case`code`:return[]}}function ia(e,t,n){return`${e}[${t}].${n}`}function aa(e,t=Ui){return[...Object.entries(e.fields).map(([e,t])=>({fieldPath:e,source:t})),...Object.entries(e.items??{}).flatMap(([e,n])=>Object.entries(n.fields).map(([n,r])=>({fieldPath:ia(t,e,n),source:r})))]}function oa(e){return aa(e).map(e=>e.source)}var sa=function(e){return e.Addon=`addon`,e.Core=`core`,e.Device=`device`,e.Provider=`provider`,e.System=`system`,e}({}),ca=[`track`,`face`,`identity`,`plate`,`vehicle`,`scene`,`motion`,`object`,`audio`,`mosaic`],la=new Set(ca),ua=/^\d+$/;function da(e){return la.has(e)}function fa(e){let t=e.split(`:`);if(t.length!==3&&t.length!==4)return null;let[n,r,i,a]=t;return n===void 0||!da(n)||r===void 0||r.length===0||i===void 0||i.length===0?null:a===void 0?{ownerType:n,ownerId:r,fileKind:i}:ua.test(a)?{ownerType:n,ownerId:r,fileKind:i,timestampMs:Number(a)}:null}function pa(e){let t=`${e.ownerType}:${e.ownerId}:${e.fileKind}`;return e.timestampMs===void 0?t:`${t}:${e.timestampMs}`}var ma=[`motion`,`object`,`audio`],ha=x(ma),ga=[...ma,`track`],_a=x(ga),va=new Set(ma);function ya(e){return va.has(e)}function ba(e,t){return{id:e,getRoutes:()=>t,invoke:async e=>{let n=xa(t,e.method,e.path);if(!n)return{status:404,headers:{},redirectUrl:null,body:{error:`No route matches ${e.method} ${e.path}`}};let r={status:200,headers:{},redirectUrl:null},i=Ca(r),a={params:{...n.params,...e.params},query:e.query,body:e.body,headers:e.headers,...e.user?{user:e.user}:{},...e.scopedToken===void 0?{}:{scopedToken:e.scopedToken}};return await n.route.handler(a,i),r}}}function xa(e,t,n){let r=t.toUpperCase();for(let t of e){if(t.method!==r)continue;let e=Sa(t.path,n);if(e!==null)return{route:t,params:e}}return null}function Sa(e,t){let n=e.split(`/`).filter(Boolean),r=t.split(`/`).filter(Boolean);if(n.length!==r.length)return null;let i={};for(let e=0;e<n.length;e++){let t=n[e],a=r[e];if(t.startsWith(`:`))i[t.slice(1)]=a;else if(t!==a)return null}return i}function Ca(e){let t={status(n){return e.status=n,t},code(n){return e.status=n,t},send(t){e.body=t},redirect(t){e.redirectUrl=t,e.status===200&&(e.status=302)},header(n,r){return e.headers[n.toLowerCase()]=r,t},type(n){return e.contentType=n,t}};return t}var wa=u({codec:x([`h264`,`h265`,`copy`]),profile:x([`baseline`,`main`,`high`]).optional(),level:c().optional(),width:i().int().positive().optional(),height:i().int().positive().optional(),fps:i().positive().optional(),bitrateKbps:i().int().positive().optional(),gopFrames:i().int().positive().optional(),bf:i().int().min(0).optional(),preset:x([`ultrafast`,`superfast`,`veryfast`,`faster`,`fast`,`medium`]).optional(),tune:x([`zerolatency`,`film`,`animation`]).optional(),singleSlicePerFrame:C().optional()}),Ta=d([p(`passthrough`),u({codec:x([`opus`,`aac`,`pcmu`,`pcma`,`copy`]),bitrateKbps:i().int().positive().optional(),sampleRateHz:i().int().positive().optional(),channels:d([p(1),p(2)]).optional()})]),Ea=u({video:wa,audio:Ta,inputArgs:S(c()).optional(),outputArgs:S(c()).optional()});function Da(e){let t=e.codec?.toLowerCase().replace(/[.\s-]/g,``),n={codec:t===`h265`||t===`hevc`?`h265`:`h264`,...e.resolution?.width===void 0?{}:{width:e.resolution.width},...e.resolution?.height===void 0?{}:{height:e.resolution.height},...e.fps===void 0?{}:{fps:e.fps}};if(!(n.width===void 0&&n.height===void 0&&n.fps===void 0))return{video:n,audio:`passthrough`}}function Oa(e,t,n){let r=e>=n;return r===t>=n?r?e-t:t-e:r?-1:1}function ka(e){let t=e.toLowerCase().replace(/[.\s-]/g,``);return t===`hevc`||t===`hvc1`||t===`hev1`?`h265`:t===`avc`||t===`avc1`?`h264`:t}function Aa(e,t){if(t.length===0)return!0;if(e===void 0)return!1;let n=ka(e);return t.some(e=>ka(e)===n)}function ja(e,t){for(let n=0;n<t.length;n+=1)if(e.startsWith(t[n]))return n;return t.length}function Ma(e,t){let n=e.filter(e=>t.allowTranscode||Aa(e.codec,t.acceptCodecs));if(n.length===0)return null;let r=t.targetHeight,i=n.map(e=>({candidate:e,transcodes:!Aa(e.codec,t.acceptCodecs),provider:ja(e.camStreamId,t.preferredProviders),height:e.height??0}));i.sort((e,n)=>e.transcodes===n.transcodes?e.provider===n.provider?r===void 0?t.resolutionPreference===`highest`?n.height-e.height:e.height-n.height:Oa(e.height,n.height,r):e.provider-n.provider:e.transcodes?1:-1);let a=i[0];return a===void 0?null:{candidate:a.candidate,transcodes:a.transcodes}}var Na={video:{codec:`h264`,profile:`baseline`,level:`3.1`,width:1280,height:720,fps:25,bitrateKbps:2500,gopFrames:25,bf:0,preset:`veryfast`,tune:`zerolatency`},audio:`passthrough`},Pa={...Na,video:{...Na.video,bitrateKbps:3e3,gopFrames:30,preset:`ultrafast`},audio:`passthrough`},Fa={...Na,audio:{codec:`opus`},video:{...Na.video,singleSlicePerFrame:!0}},Ia={kind:`cbr`,vbvSeconds:1},La={kind:`cap`,vbvSeconds:2},Ra=360,za=400,Ba=24,Va={kind:`encode`,codec:`opus`,bitrateKbps:24,channels:1,application:`lowdelay`,globalHeader:!0,filter:`aresample=async=1000:first_pts=0`},Ha=96,Ua=4;function Wa(e){let t=e.now??(()=>Date.now()),n=null,r=-1/0;return{read(){return t()-r<e.ttlMs?n:void 0},write(e){n=e,r=t()}}}function Ga(e){return!e||e===`none`||e===`copy`}async function Ka(e){let t=e.override;if(t!=null&&t!==``)return Ga(t)?null:t;let n=e.cache?.read();if(n!==void 0)return n;let r;try{r=await e.readDecoderBackend()}catch(t){let n=await e.readKernelPreferred().catch(()=>[]);return e.onFallback({reason:`decoder-unreadable`,kernelPreferred:n,error:t instanceof Error?t.message:String(t)}),e.cache?.write(null),null}if(r===``){let t=await e.readKernelPreferred().catch(()=>[]);return e.onFallback({reason:`decoder-unprobed`,kernelPreferred:t}),e.cache?.write(null),null}let i=Ga(r)?null:r;return e.cache?.write(i),i}function qa(e){return String(Math.round(e*1e3)/1e3)}function Ja(e,t){return!Number.isFinite(t)||t<=0?e:e/t}function Ya(e){let t=e.speed>0?e.speed:1;return t===1?`[0:v]fps=${qa(e.fps)},scale=${e.maxWidth}:-2:flags=lanczos,split[a][b];[a]palettegen=stats_mode=diff[p];[b][p]paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle`:`[0:v]fps=${qa(e.fps/t)},setpts=PTS/${t},fps=${qa(e.fps)},scale=${e.maxWidth}:-2:flags=lanczos,split[a][b];[a]palettegen=stats_mode=diff[p];[b][p]paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle`}function Xa(e){return[`-y`,`-v`,`error`,`-f`,`mp4`,`-i`,e.input??`pipe:0`,`-filter_complex`,Ya(e),`-loop`,`0`,`-f`,`gif`,`pipe:1`]}function Za(e){return{transport:e.publishLocally===!0?`push`:`dial`}}var Qa=`\0unset`;function $a(e){return{codec:e.codec,profile:e.profile??Qa,level:e.level??Qa,width:e.width??-1,height:e.height??-1,fps:e.fps??-1,bitrateKbps:e.bitrateKbps??-1,gopFrames:e.gopFrames??-1,bf:e.bf??-1,preset:e.preset??Qa,tune:e.tune??Qa,singleSlicePerFrame:e.singleSlicePerFrame===void 0?Qa:String(e.singleSlicePerFrame)}}function eo(e){return e===`passthrough`?{codec:`passthrough`}:{codec:e.codec,bitrateKbps:e.bitrateKbps??-1,sampleRateHz:e.sampleRateHz??-1,channels:e.channels??-1}}function to(e,t=Za(e)){return{deviceId:e.deviceId,source:e.source.kind===`profile`?`profile:${e.source.profile}`:`cam-stream:${e.source.camStreamId}`,transport:t.transport,fragmentMs:t.fragmentMs??-1,video:$a(e.encode.video),audio:eo(e.encode.audio),rateControl:e.rateControl??`relaxed`,bitstreamFilter:e.bitstreamFilter??Qa,pixelFormat:e.pixelFormat??Qa,decodeHwAccel:e.decodeHwAccel??Qa}}function no(e,t=Za(e)){return`egress:${sr(to(e,t))}`}function ro(e){let t=null;return()=>{if(t!==null)return t;let n=e();return t=n,n.catch(()=>{t===n&&(t=null)}),n}}var io=x([`singleton`,`device`,`widget`]),ao=u({capName:c(),kind:io,deviceId:i().optional(),reachable:C(),latencyMs:i(),error:c().optional()}),oo=u({addonId:c(),caps:S(ao).readonly(),widgets:S(ao).readonly()}),so=u({nodeId:c(),addons:S(oo).readonly()}),co=u({ok:C(),degraded:C(),checkedAt:c(),nodes:S(so).readonly(),summary:u({total:i(),reachable:i(),unreachable:i()})}),lo=`hub-only`;function uo(e){return{placement:e.execution?.placement??`hub-only`,group:e.execution?.group}}function fo(e){let t=uo(e).placement;return t===`any-node`||t===`agent-only`}function po(e){return uo(e).placement===`agent-only`}function mo(e){return uo(e).group}function ho(e,t){return e.execution?.group??t}function go(e){return uo(e).placement}function _o(e){return e.execution?.isolate===!0}var vo=x([`running`,`done`,`failed`,`cancelled`]),yo=x([`adopted`,`already-adopted`,`failed`,`cancelled`]),bo=u({childNativeId:c(),outcome:yo,parentDeviceId:i().int().nonnegative().nullable(),accessoryCount:i().int().nonnegative(),error:c().nullable()}),xo=u({jobId:c(),addonId:c(),integrationId:c(),state:vo,total:i().int().nonnegative(),processed:i().int().nonnegative(),adopted:i().int().nonnegative(),alreadyAdopted:i().int().nonnegative(),failed:i().int().nonnegative(),accessoriesCreated:i().int().nonnegative(),currentChildNativeId:c().nullable(),results:S(bo).readonly(),startedAt:i(),finishedAt:i().nullable(),error:c().nullable()}),So={cleanupIntervalMs:3600*1e3,detectionEventsDays:30,audioLevelsDays:7,snapshotsDays:14},Co=x([`stream-broker`,`object-detection`,`privacy-mask`,`device-audio`,`broker-audio`,`audio-analysis`,`event-saving`,`recording`,`notifications`]),wo=[`stream-broker`,`object-detection`,`privacy-mask`,`device-audio`,`broker-audio`,`audio-analysis`,`event-saving`,`recording`,`notifications`],To=f(`kind`,[u({kind:p(`device-disabled`)}),u({kind:p(`wrapper-binding`),capName:c()}),u({kind:p(`recording-config`)}),u({kind:p(`notification-mute`)}),u({kind:p(`camera-audio`),capName:c()}),u({kind:p(`camera-mask`),capName:c()}),u({kind:p(`broker-audio-mute`)})]),Eo=x([`no-provider`,`source-unreachable`,`device-disabled`]),Do=x([`no-privacy-zones`]),Oo=u({id:Co,label:c(),costWhenOff:c(),available:C(),unavailableReason:Eo.optional(),warning:Do.optional(),enabled:C(),authority:To}),ko=u({deviceId:i().int(),switches:S(Oo).readonly(),fetchedAt:i()}),Ao=`detection-pipeline`,jo=`audio-analysis`,Mo=`privacy-mask`,No=`pipeline-analytics`,Po=[`motion-detection`,Ao,jo,No,`scene-monitor`],Fo={"stream-broker":{id:`stream-broker`,label:`Camera`,costWhenOff:`Off: the whole camera stops. No live view, no recording, no detection and no notifications — its streams are released and nothing dials it again until you turn it back on.`,authority:{kind:`device-disabled`},countsAsSwitchedOff:!0},"object-detection":{id:`object-detection`,label:`Object detection & tracking`,costWhenOff:`Off: nothing is detected or tracked on this camera, so it produces no events — and with no events there are no object notifications and no event-triggered recording. Live view and continuous recording are unaffected.`,authority:{kind:`wrapper-binding`,capName:Ao},countsAsSwitchedOff:!0},"privacy-mask":{id:`privacy-mask`,label:`Privacy mask`,costWhenOff:`On: the zones you drew on this camera are blacked out by the camera itself — live view, playback, exports and detection all see the black boxes, and nothing behind them was ever recorded. Off: the camera captures the whole frame, and your zones are kept for when you turn it back on.`,authority:{kind:`camera-mask`,capName:Mo},countsAsSwitchedOff:!1},"device-audio":{id:`device-audio`,label:`Camera microphone`,costWhenOff:`Off: the camera captures no sound at all. Live view and recordings become silent video, and audio detection and classification have nothing left to analyse — turning them back on will not recover it. The picture, motion and object detection are unaffected, and two-way talk still works. Applies at the camera, so every consumer sees the same silence.`,authority:{kind:`camera-audio`,capName:Mo},countsAsSwitchedOff:!0},"broker-audio":{id:`broker-audio`,label:`Audio distribution`,costWhenOff:`Off: this server distributes no sound for this camera — live view is silent and everything recorded while it is off is silent FOREVER, even after you turn it back on. Audio detection and classification also have nothing to analyse. The camera keeps capturing sound, so nothing about the camera changes and turning this back on is instant, with no interruption to the picture.`,authority:{kind:`broker-audio-mute`},countsAsSwitchedOff:!0},"audio-analysis":{id:`audio-analysis`,label:`Audio detection & classification`,costWhenOff:`Off: no audio is decoded or classified for this camera. Tracks carry no audio labels and no audio-triggered rule can fire. Audio recorded alongside video is unaffected.`,authority:{kind:`wrapper-binding`,capName:jo},countsAsSwitchedOff:!0},"event-saving":{id:`event-saving`,label:`Event saving`,costWhenOff:`Off: nothing about this camera is written to its history — no tracks, no events and no event snapshots or clips. Detection keeps running and live boxes still appear, so the camera looks busy while its timeline stays empty, and anything that fires ON an event (notification rules, event-triggered recording) has nothing to fire on. Continuous recording is unaffected, and history already written is kept.`,authority:{kind:`wrapper-binding`,capName:No},countsAsSwitchedOff:!0},recording:{id:`recording`,label:`Recording`,costWhenOff:`Off: nothing new is written to disk. Footage already recorded stays, but retention keeps deleting it — so this camera’s history shrinks and is not replaced. Your recording schedule is kept and resumes when you turn it back on.`,authority:{kind:`recording-config`},countsAsSwitchedOff:!0},notifications:{id:`notifications`,label:`Notifications`,costWhenOff:`Off: this camera never notifies anyone, on any rule, with no expiry. Detection, events and recording carry on exactly as before — you simply stop being told about them.`,authority:{kind:`notification-mute`},countsAsSwitchedOff:!0}};function Io(e,t){switch(e.authority.kind){case`device-disabled`:return{available:!0,enabled:!t.deviceDisabled};case`wrapper-binding`:{let n=e.authority.capName;return t.bindableCapNames===null||t.activeWrapperCapNames===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:t.bindableCapNames.includes(n)?{available:!0,enabled:t.activeWrapperCapNames.includes(n)}:{available:!1,enabled:!0,unavailableReason:`no-provider`}}case`recording-config`:return t.recordingEnabled===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:{available:!0,enabled:t.recordingEnabled};case`notification-mute`:return t.notificationsMuted===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:{available:!0,enabled:!t.notificationsMuted};case`camera-audio`:{let e=t.deviceAudio;return e===null?{available:!1,enabled:!0,unavailableReason:t.deviceDisabled?`device-disabled`:`source-unreachable`}:e.supported?e.enabled===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:{available:!0,enabled:e.enabled}:{available:!1,enabled:!0,unavailableReason:`no-provider`}}case`camera-mask`:{let e=t.privacyMask;return e===null?{available:!1,enabled:!1,unavailableReason:t.deviceDisabled?`device-disabled`:`source-unreachable`}:e.supported?e.configuredRegions===null||e.enabled===null?{available:!1,enabled:!1,unavailableReason:`source-unreachable`}:e.configuredRegions===0?{available:!0,enabled:e.enabled,warning:`no-privacy-zones`}:{available:!0,enabled:e.enabled}:{available:!1,enabled:!1,unavailableReason:`no-provider`}}case`broker-audio-mute`:{let e=t.brokerAudio;return e===null?{available:!1,enabled:!0,unavailableReason:`source-unreachable`}:{available:!0,enabled:!e.muted}}}}function Lo(e){return wo.map(t=>{let n=Fo[t],r=Io(n,e);return{id:n.id,label:n.label,costWhenOff:n.costWhenOff,available:r.available,...r.unavailableReason===void 0?{}:{unavailableReason:r.unavailableReason},...r.warning===void 0?{}:{warning:r.warning},enabled:r.enabled,authority:n.authority}})}function Ro(e){return e.filter(e=>Fo[e.id].countsAsSwitchedOff&&e.available&&!e.enabled).map(e=>e.id)}function zo(e){let t=[],n=[];for(let r of wo){let i=Fo[r];if(!i.countsAsSwitchedOff)continue;let a=Io(i,e);a.unavailableReason===`source-unreachable`?n.push(r):a.available&&!a.enabled&&t.push(r)}return{switchedOff:t,unreadable:n}}var Bo=`__camstack_redacted__`;function Vo(e){return e.type===`password`?!0:`secret`in e&&e.secret===!0}function Ho(e){let t=new Set;for(let n of Go(e))for(let e of Ko(n))qo(e,t);return t}function Uo(e){for(let t of Go(e))if(Ko(t).length>0)return!0;return!1}function Wo(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Go(e){if(!Wo(e))return[];let t=e.sections;return Array.isArray(t)?t:[]}function Ko(e){if(!Wo(e))return[];let t=e.fields;return Array.isArray(t)?t:[]}function qo(e,t){if(!Wo(e))return;let n=e.type,r=e.key;if((n===`password`||e.secret===!0)&&typeof r==`string`&&r.length>0&&t.add(r),n===`group`){for(let n of Ko(e))qo(n,t);return}if(n===`sub-tabs`){let n=e.tabs;if(!Array.isArray(n))return;for(let e of n)for(let n of Ko(e))qo(n,t)}}var Jo=3e4,Yo=500,Xo=6e4,Zo=x([`confirmed`,`suppressed`,`exhausted-fallback`]),Qo=u({id:c(),at:i().int(),deviceId:i().int(),sourceTrackId:c(),className:c(),verdict:Zo,reason:c().nullable(),attempts:i().int(),deferredForMs:i().int(),decidedOnCoastedFrame:C(),birthEvidenceAvailable:C(),decidedByBirthEvidence:C(),bestScore:i().nullable(),appliedMinConfidence:i().nullable(),firstSeen:i().int().nullable(),motionOnsetAt:i().int().nullable(),birthLatencyMs:i().int().nullable(),birthIndexInBurst:i().int().nullable()}),$o=u({deviceId:i().int().optional(),since:i().int().optional(),verdict:Zo.optional(),limit:i().int().min(1).max(5e3).optional()}),es=5e3,ts=200,ns=u({id:c(),note:c(),deviceId:i().int(),sourceTrackId:c(),archivedAt:i().int(),trackStartedAt:i().int().nullable(),trackClass:c().nullable(),trackLabel:c().nullable()}),rs=u({deviceId:i().int().optional(),limit:i().int().min(1).max(1e3).optional()}),is=2e4,as=5e3,os=500,ss=x([`same-subject`,`different-subjects`]),cs=x([`before`,`after`]),ls=x([`mixed`,`not-a-subject`]),us=u({id:c(),deviceId:i().int(),leftTrackId:c(),rightTrackId:c(),leftSide:cs.nullable(),rightSide:cs.nullable(),relation:ss,presence:p(`continuous`).nullable(),leftStartedAt:i().int().nullable(),rightStartedAt:i().int().nullable(),createdAt:i().int(),updatedAt:i().int(),author:c().nullable()}),ds=u({id:c(),deviceId:i().int(),sourceTrackId:c(),purity:ls,switchAtMs:i().int().nullable(),startedAt:i().int().nullable(),createdAt:i().int(),updatedAt:i().int(),author:c().nullable()}),fs=u({deviceId:i().int(),trackId:c().min(1),otherTrackId:c().min(1),relation:ss,presence:p(`continuous`).optional(),trackSide:cs.optional(),otherSide:cs.optional()}),ps=u({deviceId:i().int(),trackId:c().min(1),otherTrackId:c().min(1)}),ms=u({cleared:C()}),hs=u({deviceId:i().int(),trackId:c().min(1),purity:x([`pure`,`mixed`,`not-a-subject`]),switchAtMs:i().int().optional()}),gs=u({purity:ds.nullable()}),_s=u({deviceId:i().int(),trackId:c().optional(),since:i().int().optional(),until:i().int().optional(),limit:i().int().min(1).max(5e3).optional()}),vs=u({relations:S(us).readonly(),purities:S(ds).readonly(),truncated:C()}),ys=x([`unknown-track`,`cross-device`,`self-relation`,`contradiction`,`switch-outside-track`,`switch-needs-mixed`]),bs={high:`High`,mid:`Mid`,low:`Low`};function xs(e){return bs[e]??e.charAt(0).toUpperCase()+e.slice(1)}function Ss(e){return(e.width??0)*(e.height??0)}function Cs(e){if(e.length===0)return[];let t=e.map((e,t)=>({s:e,i:t,px:Ss(e.metadata??{})})).toSorted((e,t)=>t.px-e.px),n=Array.from({length:e.length});for(let e=0;e<t.length;e++){let{s:r,i}=t[e],a;a=e===0?`high`:e===t.length-1?`low`:`mid`,n[i]={...r,quality:a}}return n}function ws(e){let t=e.height??0,n=e.width??0;return t>=1080||n>=1920?`high`:t>=480||n>=640?`mid`:`low`}function Ts(e){let t=e.protocols.find(e=>e.type===`rtsp`&&e.url)??e.protocols.find(e=>e.url),n=t?.type,r=n===`rtsp`?`rtsp`:n===`http`||n===`flv`?`http-mjpeg`:`custom`;return{id:e.id,label:e.label??e.id,protocol:r,url:t?.url,profileHint:e.quality}}function I(e){return typeof e==`string`}function Es(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ds(e){return I(e)&&e.trim()?{url:e}:Es(e)&&I(e.url)&&e.url.trim()?{url:e.url,label:I(e.label)?e.label:void 0}:null}function Os(e){let t=I(e.snapshot_url)?e.snapshot_url:void 0;if(Array.isArray(e.streams)){let n=[];for(let t of e.streams){let e=Ds(t);e&&n.push(e)}return{streams:n,snapshot_url:t}}let n=[],r=I(e.main_stream_url)?e.main_stream_url:void 0;r&&n.push({url:r,label:I(e.main_stream_name)?e.main_stream_name:void 0});let i=I(e.sub_stream_url)?e.sub_stream_url:void 0;i&&n.push({url:i,label:I(e.sub_stream_name)?e.sub_stream_name:void 0});let a=I(e.third_stream_url)?e.third_stream_url:void 0;return a&&n.push({url:a,label:I(e.third_stream_name)?e.third_stream_name:void 0}),{streams:n,snapshot_url:t}}function ks(e){if(e.length===0)return{};let t=Cs(e),n={},r=t.find(e=>e.quality===`high`),i=t.find(e=>e.quality===`mid`),a=t.find(e=>e.quality===`low`);r&&(n.high=r.id),i&&(n.mid=i.id),a&&(n.low=a.id);let o=r??i??a??t[0];return o&&(n.high||=o.id,n.mid||=o.id,n.low||=o.id),n}var As={streaming:!0,notifications:!0,objectDetection:!1,remoteAccess:!0,agentCluster:!1,smartHome:!0,recordings:!0,backup:!0,repl:!0},js={debug:0,info:1,warn:2,error:3};function Ms(e,t){return js[e]<=js[t]}var Ns=x([`recording`,`events`]),Ps=x([`prune`,`manual-delete`,`rescan`,`retention-run`,`relocate`,`orphan-audit`]),Fs=x([`retention`,`quota`,`manual`,`operator`,`maintenance`,`orphaned-device`]),Is=u({id:c(),at:i(),domain:Ns,op:Ps,reason:Fs,deviceId:i().nullable(),nodeId:c(),itemsAffected:i(),bytesReclaimed:i(),detail:c().nullable(),actor:c()}),Ls=u({deviceId:i().optional(),limit:i().int().min(1).max(1e3).optional()}),Rs=500,zs=200,Bs=u({id:c(),name:c(),category:c().optional(),description:c().optional(),icon:c().optional()}),Vs=[`person`,`vehicle`,`animal`,`package`],Hs=[`person`,`vehicle`,`animal`];function Us(e){return Hs.some(t=>t===e)}var Ws=u({mapping:y(c(),x(Vs)),preserveOriginal:C()}),Gs={preMs:5e3,postMs:1e4},Ks=i().int().min(0).max(6),qs=/^([01]\d|2[0-3]):[0-5]\d$/,Js=x([`off`,`events`,`continuous`,`on-device-decision`]),Ys=x(Hs),Xs=e=>new Set(e).size===e.length,Zs=16,Qs=-30,$s=u({motion:C().optional(),audioThresholdDbfs:i().optional(),objectClasses:S(Ys).min(1).refine(Xs,{message:`objectClasses must not repeat a class`}).optional(),sensorDeviceIds:S(i().int().positive()).min(1).max(16).refine(Xs,{message:`sensorDeviceIds must not repeat a device`}).optional()}),ec=x([`continuous`,`events`]),tc=$s,nc=x([`on`,`muted`]),rc=u({days:S(Ks),start:c().regex(qs),end:c().regex(qs),mode:ec,audio:nc.optional(),triggers:tc.optional(),preBufferSec:i().min(0).optional(),postBufferSec:i().min(0).optional()}),ic={postBufferSec:30};function ac(e){let t=[],n=e.bands.map((e,n)=>{if(e.preBufferSec===void 0)return e;t.push(n);let{preBufferSec:r,...i}=e;return i});return t.length===0?{config:e,strippedBands:t}:{config:{...e,bands:n},strippedBands:t}}var oc=ic.postBufferSec*1e3,sc=u({maxAgeDays:i().min(0).optional(),maxSizeGb:i().min(0).optional()}),cc=u({enabled:C(),mode:Js.optional(),profiles:S(w).optional(),segmentSeconds:i().int().positive().optional(),bands:S(rc).default([]),deviceDecision:C().optional(),retention:sc.optional()}).strict().refine(e=>e.deviceDecision!==!0||e.bands.length===0,{message:`deviceDecision is a whole-config mode and carries no schedule: it cannot be combined with bands`,path:[`bands`]});function lc(e){return e.enabled?e.deviceDecision===!0?`on-device-decision`:e.bands.length===0?`off`:e.bands.some(e=>e.mode===`continuous`)?`continuous`:`events`:`off`}var uc=[`high`,`low`];function dc(e,t){if(t!==void 0&&t.length>0){let n=e.filter(e=>t.includes(e));return n.length>0?n:[...e]}let n=e.filter(e=>uc.includes(e));return n.length>0?n:[...e]}var fc=[`motion`,`audioThresholdDbfs`,`objectClasses`,`sensorDeviceIds`];function pc(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function mc(e){return pc(e)&&pc(e.triggers)&&e.triggers.deviceSignal===!0}function hc(e){let t=e.triggers;return pc(t)?fc.some(e=>t[e]!==void 0):!1}function gc(e){let t=e.triggers;if(!pc(t))return e;let{deviceSignal:n,...r}=t;return{...e,triggers:r}}function _c(e){let t={value:e,migrated:!1,strippedOnly:!1};if(!pc(e)||!Array.isArray(e.bands)||!e.bands.some(mc))return t;let n=[];for(let t of e.bands){if(!mc(t)||!pc(t)){n.push(t);continue}hc(t)&&n.push(gc(t))}if(n.length>0)return{value:{...e,bands:n},migrated:!1,strippedOnly:!0};let{mode:r,...i}=e;return{value:{...i,bands:[],deviceDecision:!0},migrated:!0,strippedOnly:!1}}var vc=x([`queued`,`running`,`done`,`failed`,`cancelled`]),yc=u({jobId:c(),state:vc,fromLocationId:c(),toLocationId:c(),deviceId:i().nullable(),entities:S(c()),filesMoved:i().int(),bytesMoved:i().int(),filesTotal:i().int().nullable(),rowsReconciled:i().int().nonnegative().optional(),rowsForgotten:i().int().nonnegative().optional(),startedAt:i(),finishedAt:i().nullable(),error:c().nullable()}),bc=x([`recordings`,`recordingsLow`]),xc=u({fromLocationId:c(),toLocationId:c(),entities:S(x([`segments`])).optional(),footageClass:bc.optional(),deviceId:i().int().optional(),profiles:S(c()).optional(),throttleMbps:i().min(1).max(1e3).optional(),sinceMs:i().int().optional()}),Sc=u({leaseId:c().min(1)}),Cc=xc.extend({leaseId:c().min(1)}),wc=x([`move`,`seal`,`gallery`]),Tc=u({toLocationId:c(),fromLocationId:c().optional(),throttleMbps:i().min(1).max(1e3).optional(),mode:wc.optional()}),Ec=u({present:C(),rows:i().int().nonnegative().nullable()}),Dc=u({media:Ec,retrainFrames:Ec,anyPresent:C(),total:i().int().nonnegative().nullable()}).nullable(),Oc=Tc.extend({leaseId:c().min(1)}),kc=x([`recordings`,`recordingsLow`,`eventMedia`,`backups`,`galleryMedia`]),Ac=u({recordings:c().min(1).optional(),recordingsLow:c().min(1).optional(),eventMedia:c().min(1).optional(),backups:c().min(1).optional(),galleryMedia:c().min(1).optional()}).refine(e=>Object.keys(e).length>0,{message:`select at least one storage class`}),jc=u({recordings:c().min(1).optional(),recordingsLow:c().min(1).optional(),eventMedia:c().min(1).optional(),backups:c().min(1).optional(),galleryMedia:c().min(1).optional()}).optional(),Mc=x([`blocking`,`nonBlocking`]),Nc=u({destinations:Ac,sources:jc,throttleMbps:i().min(1).max(1e3).optional(),mode:Mc.optional()}),Pc=x([`planning`,`sealing`,`pausing`,`moving`,`draining`,`verifying`,`repointing`,`refreshing`,`resuming`,`done`,`failed`,`cancelled`]),Fc=x([`pipeline`,`recorder`,`analytics`]),Ic=u({filesMoved:i().int().nonnegative(),filesTotal:i().int().nonnegative().nullable(),bytesMoved:i().int().nonnegative(),rowsReconciled:i().int().nonnegative().optional(),startedAt:i(),observedAt:i()}),Lc=u({storageClass:kc,fromLocationId:c(),toLocationId:c(),freezeSource:C().optional(),moverJobId:c().nullable(),state:vc.nullable(),error:c().nullable(),progress:Ic.nullable()}),Rc=u({jobId:c(),phase:Pc,mode:Mc,destinations:Ac,sources:jc,throttleMbps:i(),moves:S(Lc),pauseLeaseId:c().nullable(),pausedParticipants:S(Fc),repointed:C(),cancelRequested:C(),startedAt:i(),updatedAt:i(),finishedAt:i().nullable(),error:c().nullable()}),zc=x([`sharesDeviceWithSource`,`deviceIdentityUnknown`,`unstampedEventMediaRows`,`blockingOnly`,`noMover`]),Bc=u({code:zc,storageClass:kc,message:c()}),Vc=u({destinations:Ac,sources:jc,mode:Mc,moves:S(u({storageClass:kc,fromLocationId:c(),toLocationId:c(),freezeSource:C().optional()})),findings:S(Bc)}),Hc=x([`footage`,`media`]),Uc=u({lane:Hc,job:yc,migrationJobId:c().nullable(),observedAt:i()}),Wc=u({storageClass:kc,fromLocationId:c(),toLocationId:c(),items:i().int().nonnegative().nullable(),bytes:i().int().nonnegative().nullable()}),Gc=u({classes:S(kc).min(1),throttleMbps:i().min(1).max(1e3).optional()}),Kc=u({fromLocationId:c().min(1),footageClass:bc.optional()}),qc=u({segments:i().int().nonnegative(),bytes:i().int().nonnegative()}).nullable(),Jc=u({locationId:c().min(1),apply:C().optional(),deviceId:i().int().positive().optional(),profiles:S(c().min(1)).optional()}),Yc=x([`location-unknown`,`source-writable`,`no-ledger`,`archive-unreadable`,`anchor-absent`,`anchor-unreadable`,`anchor-moved`]),Xc=x([`live-tail`,`listing-error`,`path-mismatch`,`durable-refused`]),Zc=u({"live-tail":i().int().nonnegative(),"listing-error":i().int().nonnegative(),"path-mismatch":i().int().nonnegative(),"durable-refused":i().int().nonnegative()}),Qc=u({deviceId:i().int(),hoursWalked:i().int().nonnegative(),hoursMissing:i().int().nonnegative(),ghostSegments:i().int().nonnegative(),ghostBytes:i().int().nonnegative(),forgottenSegments:i().int().nonnegative(),orphanFiles:i().int().nonnegative()}),$c=u({locationId:c(),applied:C(),refused:Yc.nullable(),archiveSegments:i().int().nonnegative().nullable(),archiveBytes:i().int().nonnegative().nullable(),hoursClaimed:i().int().nonnegative(),hoursWalked:i().int().nonnegative(),hoursMissing:i().int().nonnegative(),listings:i().int().nonnegative(),segmentsClaimed:i().int().nonnegative(),ghostSegments:i().int().nonnegative(),ghostBytes:i().int().nonnegative(),ghostHoursWhole:i().int().nonnegative(),forgottenSegments:i().int().nonnegative(),forgottenBytes:i().int().nonnegative(),orphanFiles:i().int().nonnegative(),orphanSample:S(c()).readonly(),hoursSkipped:i().int().nonnegative(),skippedByReason:Zc,bounded:C(),byDevice:S(Qc).readonly()}),el=u({rows:i().int().nonnegative()}).nullable(),tl=u({toLocationId:c().min(1),fromLocationId:c().optional(),mode:wc.optional()}),nl=x([`orphans`,`debug-media`,`ghost-ledger`,`done`,`failed`,`cancelled`]),rl=u({includeDebugMedia:C().optional()}),il=u({jobId:c(),phase:nl,includeDebugMedia:C(),orphansReclaimed:i().int().nonnegative(),orphanBytesReclaimed:i().int().nonnegative(),debugMediaReclaimed:i().int().nonnegative(),debugMediaBytesReclaimed:i().int().nonnegative(),ghostsForgotten:i().int().nonnegative(),ghostBytesForgotten:i().int().nonnegative(),detail:c().nullable(),cancelRequested:C(),startedAt:i(),updatedAt:i(),finishedAt:i().nullable(),error:c().nullable()}),al=u({jobId:c().optional()}),ol=[`face`,`plate`],sl=[`face`,`plate`,`clip`,`custom`],cl=[`active`,`readonly`,`drain`,`disabled`],ll=x(cl),ul=x([`normal`,`never`,`drain`]),dl=`readOnly`;function fl(e){return e===`active`}function pl(e){return e!==`disabled`}function ml(e){switch(e){case`active`:return`normal`;case`drain`:return`drain`;case`readonly`:case`disabled`:return`never`}}function hl(e){return e.mode===void 0&&(e.config.readOnly===!0||e.enabled===!1)?`readonly`:null}function gl(e){return(_l(e.mode)?e.mode:void 0)??hl(e)??`active`}function _l(e){return cl.some(t=>t===e)}function vl(e){return fl(gl(e))}function yl(e){return pl(gl(e))}function bl(e){return ml(gl(e))}function xl(e){if(!(`readOnly`in e))return e;let t={...e};return delete t[dl],t}function Sl(e,t){return{...e,mode:t,enabled:fl(t),config:xl(e.config)}}var Cl=c().regex(/^[a-z][a-zA-Z0-9-]*$/),L=u({id:c().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/),type:c(),displayName:c().min(1),providerId:c().min(1),config:y(c(),o()),nodeId:c().optional(),isSystem:C().default(!1),enabled:C().optional(),mode:ll.optional(),capacity:u({totalBytes:i(),availableBytes:i()}).nullable().optional(),owned:u({bytes:i().int().nonnegative(),measuredAtMs:i().int().nonnegative()}).optional(),createdAt:i(),updatedAt:i()}),wl=u({isDefault:C().optional()});function Tl(e){return vl({...e,config:e.config??{}})}var El=1024**3;function Dl(e){return Math.floor(e*El)}var Ol=u({locationId:c(),startedAtMs:i(),startBytes:i(),bytesRemaining:i(),drained:C(),estimatedEmptyAtMs:i().nullable()}),R=d([Cl,c().regex(/^[a-z][a-zA-Z0-9-]*:[a-zA-Z0-9-]+$/)]),kl=x([`local-path`,`cap-mediated`]),Al=`local-path`,jl=u({id:c().regex(/^[a-z][a-zA-Z0-9-]*$/,{message:`id must start with a lowercase letter and contain only letters, digits, or hyphens`}),displayName:c().min(1,{message:`displayName must not be empty`}),description:c().optional(),cardinality:x([`single`,`multi`]),access:kl.optional(),defaultsTo:c().optional(),defaultRoot:x([`data`,`media`,`backup`]).optional()}),Ml={offsetHours:1,startMonth:3,startWeekIndex:5,startWeekday:`Sunday`,startHour:2,endMonth:10,endWeekIndex:5,endWeekday:`Sunday`,endHour:3},Nl={offsetHours:1,startMonth:3,startWeekIndex:2,startWeekday:`Sunday`,startHour:2,endMonth:11,endWeekIndex:1,endWeekday:`Sunday`,endHour:2},Pl=[{id:`UTC`,label:`UTC (UTC+0)`,region:`Universal`,stdOffsetMinutes:0,dst:null},{id:`Europe/London`,label:`Europe/London (UTC+0 / BST)`,region:`Europe`,stdOffsetMinutes:0,dst:Ml},{id:`Europe/Rome`,label:`Europe/Rome (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:Ml},{id:`Europe/Paris`,label:`Europe/Paris (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:Ml},{id:`Europe/Berlin`,label:`Europe/Berlin (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:Ml},{id:`Europe/Madrid`,label:`Europe/Madrid (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:Ml},{id:`Europe/Amsterdam`,label:`Europe/Amsterdam (UTC+1 / CEST)`,region:`Europe`,stdOffsetMinutes:60,dst:Ml},{id:`Europe/Istanbul`,label:`Europe/Istanbul (UTC+3)`,region:`Europe`,stdOffsetMinutes:180,dst:null},{id:`America/New_York`,label:`America/New York (UTC−5 / EDT)`,region:`Americas`,stdOffsetMinutes:-300,dst:Nl},{id:`America/Chicago`,label:`America/Chicago (UTC−6 / CDT)`,region:`Americas`,stdOffsetMinutes:-360,dst:Nl},{id:`America/Denver`,label:`America/Denver (UTC−7 / MDT)`,region:`Americas`,stdOffsetMinutes:-420,dst:Nl},{id:`America/Los_Angeles`,label:`America/Los Angeles (UTC−8 / PDT)`,region:`Americas`,stdOffsetMinutes:-480,dst:Nl},{id:`America/Sao_Paulo`,label:`America/Sao Paulo (UTC−3)`,region:`Americas`,stdOffsetMinutes:-180,dst:null},{id:`Asia/Dubai`,label:`Asia/Dubai (UTC+4)`,region:`Asia`,stdOffsetMinutes:240,dst:null},{id:`Asia/Kolkata`,label:`Asia/Kolkata (UTC+5:30)`,region:`Asia`,stdOffsetMinutes:330,dst:null},{id:`Asia/Singapore`,label:`Asia/Singapore (UTC+8)`,region:`Asia`,stdOffsetMinutes:480,dst:null},{id:`Asia/Shanghai`,label:`Asia/Shanghai (UTC+8)`,region:`Asia`,stdOffsetMinutes:480,dst:null},{id:`Asia/Tokyo`,label:`Asia/Tokyo (UTC+9)`,region:`Asia`,stdOffsetMinutes:540,dst:null},{id:`Australia/Sydney`,label:`Australia/Sydney (UTC+10 / AEDT)`,region:`Oceania`,stdOffsetMinutes:600,dst:{offsetHours:1,startMonth:10,startWeekIndex:1,startWeekday:`Sunday`,startHour:2,endMonth:4,endWeekIndex:1,endWeekday:`Sunday`,endHour:3}}];function Fl(e){return Pl.find(t=>t.id===e)}var Il=x([`info`,`warn`,`error`]),Ll=u({name:c().min(3).regex(/^[a-z0-9-]+(\.[a-z0-9-]+)+$/,`a channel name is dotted lower-kebab, e.g. area.thing`),description:c().min(1),defaultLevel:Il,perDevice:C()}),Rl=u({channel:c().min(1),armedUntilMs:i(),deviceIds:S(i().int()).readonly().nullable()}),zl=class{descriptor;on=!1;devices=null;level;closesAtMs=0;constructor(e){this.descriptor=e,this.level=e.defaultLevel}get armedUntilMs(){return this.on?this.closesAtMs:0}wants(e){return this.on?this.devices===null||this.devices.has(e):!1}log(e,t,n){if(!this.on)return;let r={...n.tags,logChannel:this.descriptor.name},i={...n,tags:r};this.level===`error`?e.error(t,i):this.level===`warn`?e.warn(t,i):e.info(t,i)}arm(e){let t=e.deviceIds;this.devices=t===null||t.length===0?null:new Set(t),this.closesAtMs=e.armedUntilMs,this.on=!0}disarm(){this.on=!1,this.devices=null,this.closesAtMs=0}},Bl=class{gates=new Map;declare(e){let t=Ll.parse(e);if(this.gates.get(t.name)!==void 0)throw Error(`log channel "${t.name}" is already declared in this process — two declarations of one name is a programming error, not a merge`);let n=new zl(t);return this.gates.set(t.name,n),n}list(){return[...this.gates.values()].map(e=>e.descriptor).sort((e,t)=>e.name.localeCompare(t.name))}gate(e){return this.gates.get(e)}apply(e,t){let n=new Map,r=[];for(let i of e)if(!(i.armedUntilMs<=t)){if(!this.gates.has(i.channel)){r.push(i.channel);continue}n.set(i.channel,i)}for(let[e,t]of this.gates){let r=n.get(e);r===void 0?t.disarm():t.arm(r)}return r}tick(e){let t=[];for(let[n,r]of this.gates)r.on&&r.armedUntilMs<=e&&(r.disarm(),t.push(n));return t}armed(){let e=[];for(let[t,n]of this.gates)n.on&&e.push({channel:t,armedUntilMs:n.armedUntilMs,deviceIds:null});return e}},Vl=null;function Hl(){return Vl??=new Bl,Vl}function Ul(e){return Hl().declare(e)}function Wl(){Vl=null}var Gl=5e3;function Kl(e,t={}){let n=Hl(),r=t.now??Date.now,i=t.tickMs??5e3,a=setInterval(()=>{let t=n.tick(r());for(let n of t)e.info(`log channel window closed`,{tags:{logChannel:n},meta:{channel:n}})},i);return a.unref?.(),{list:()=>n.list(),apply:t=>{let i=n.apply(t.windows,r()),a=n.armed();return e.info(`log channels applied`,{meta:{armed:a.map(e=>e.channel),unknown:i,declared:n.list().length}}),{armed:a.length,unknown:i}},stop:()=>{clearInterval(a)}}}var ql=16,Jl=1024,Yl=`other`;function Xl(e,t,n){return n===void 0?`${e}${t}`:`${e}${t}${n}`}var Zl=class{maxKeys;maxReasons;counters=new Map;refused=0;constructor(e=Jl,t=16){this.maxKeys=e,this.maxReasons=t}get keysRefused(){return this.refused}get size(){return this.counters.size}note(e,t){if(!Number.isInteger(e.deviceId)||e.deviceId<=0)return;let n=Xl(e.deviceId,e.family,e.variant),r=this.counters.get(n);if(r===void 0){if(this.counters.size>=this.maxKeys){this.refused+=1;return}r={deviceId:e.deviceId,family:e.family,variant:e.variant,sinceMs:t,attempts:0,succeeded:0,reasons:new Map},this.counters.set(n,r)}if(r.attempts+=1,e.reason===void 0){r.succeeded+=1;return}let i=r.reasons.has(e.reason)||r.reasons.size<this.maxReasons?e.reason:Yl;r.reasons.set(i,(r.reasons.get(i)??0)+1)}snapshot(e){let t=[];for(let n of this.counters.values())t.push({deviceId:n.deviceId,family:n.family,...n.variant===void 0?{}:{variant:n.variant},sinceMs:n.sinceMs,atMs:e,attempts:n.attempts,succeeded:n.succeeded,reasons:[...n.reasons.entries()].map(([e,t])=>({reason:e,count:t})).toSorted((e,t)=>t.count-e.count)});return t}clear(){this.counters.clear()}};function Ql(e){return e.attempts<=0?null:(e.attempts-e.succeeded)/e.attempts}var $l=`__unattributed__`,eu=`__root__`;function tu(e){return e.addonId===null?e.classification===`root`?{key:eu,kind:`root`}:{key:$l,kind:`unattributed`}:{key:e.addonId,kind:`addon`}}function nu(e){return Math.round(e*10)/10}function ru(e,t){let n=new Map;for(let t of e){let{key:e,kind:r}=tu(t),i=n.get(e)??{kind:r,main:0,gc:0,lifetime:0,memory:0,count:0,splitKnown:!0},a=t.cpuMainPercent!==null&&t.cpuGcPercent!==null;n.set(e,{kind:i.kind,main:i.main+(t.cpuMainPercent??0),gc:i.gc+(t.cpuGcPercent??0),lifetime:i.lifetime+t.cpuPercent,memory:i.memory+t.memoryRssBytes,count:i.count+1,splitKnown:i.splitKnown&&a})}return[...n.entries()].map(([e,n])=>{let r=n.splitKnown?nu(n.main):null,i=n.splitKnown?nu(n.gc):null,a=nu(n.lifetime);return{key:e,kind:n.kind,point:{atMs:t,samples:1,cpuMainPercent:r,cpuMainPercentMin:r,cpuGcPercent:i,cpuGcPercentMin:i,cpuLifetimePercent:a,cpuLifetimePercentMin:a,memoryRssBytes:n.memory,memoryRssBytesMin:n.memory,processCount:n.count,processCountMin:n.count}}})}function iu(e,t){return e===null||t===null?null:e<t?e:t}function au(e,t){return e===null||t===null?null:e>t?e:t}function ou(e,t,n){return{atMs:n,samples:e.samples+t.samples,cpuMainPercent:au(e.cpuMainPercent,t.cpuMainPercent),cpuMainPercentMin:iu(e.cpuMainPercentMin,t.cpuMainPercentMin),cpuGcPercent:au(e.cpuGcPercent,t.cpuGcPercent),cpuGcPercentMin:iu(e.cpuGcPercentMin,t.cpuGcPercentMin),cpuLifetimePercent:Math.max(e.cpuLifetimePercent,t.cpuLifetimePercent),cpuLifetimePercentMin:Math.min(e.cpuLifetimePercentMin,t.cpuLifetimePercentMin),memoryRssBytes:Math.max(e.memoryRssBytes,t.memoryRssBytes),memoryRssBytesMin:Math.min(e.memoryRssBytesMin,t.memoryRssBytesMin),processCount:Math.max(e.processCount,t.processCount),processCountMin:Math.min(e.processCountMin,t.processCountMin)}}function su(e,t,n){if(n<=0||t<=0||e<=0)return Math.max(t,1);let r=e/n;return r<=t?t:Math.ceil(r/t)*t}function cu(e,t,n){if(t<=0||e.length===0)return e;let r=new Map;for(let i of e){let e=n+Math.floor((i.atMs-n)/t)*t,a=r.get(e);r.set(e,a===void 0?{...i,atMs:e}:ou(a,i,e))}return[...r.values()].toSorted((e,t)=>e.atMs-t.atMs)}function lu(e,t,n,r={}){if(e.length===0)return null;let i=`${n}/`,a=e=>({brokerId:e.brokerId,profileId:e.brokerId.startsWith(i)?e.brokerId.slice(i.length):e.brokerId,url:e.url,mutedUrl:e.mutedUrl,enabled:e.enabled,...e.codec===void 0?{}:{codec:e.codec},...e.resolution===void 0?{}:{resolution:e.resolution}});if(t!==`auto`){let n=e.find(e=>e.enabled&&e.url.length>0&&(e.profile===t||e.brokerId===`${i}${t}`));if(n)return a(n)}let o=e.filter(e=>e.enabled&&e.url.length>0);if(o.length===0)return null;let s=r.targetResolution;if(s){let e=o.filter(e=>e.resolution!==void 0);if(e.length>0){let t=uu(e,s);if(t)return a(t)}}return a(o[0])}function uu(e,t){let n=t.width*t.height;return[...e.flatMap(e=>e.resolution===void 0?[]:[{entry:e,pixels:e.resolution.width*e.resolution.height}])].sort((e,t)=>Oa(e.pixels,t.pixels,n))[0]?.entry}var du=1,fu=96,pu={upperHs:[0,32],upperV:[32,40],upperGrad:[40,48],lowerHs:[48,80],lowerV:[80,88],lowerGrad:[88,96]},mu=!1,hu=[`motion`,`objects`,`discarded`,`stationary`],gu=[`motion`,`objects`,`stationary`],_u={borderWidth:2,dashed:!0,dashPattern:[6,4],opacity:1,borderRadius:2};function vu(e){return!Number.isFinite(e)||e<=0?`0 s`:e<6e4?`${String(Math.round(e/1e3))} s`:e<36e5?`${String(Math.round(e/6e4))} min`:`${String(Math.round(e/36e5))} h`}var yu=[`onnx`,`coreml`,`openvino`,`tflite`,`pt`],bu={yolo26:`YOLO26`,"yolo26-seg":`YOLO26-seg`,yolov9:`YOLOv9`};function xu(e){return bu[e]??e.toUpperCase()}var Su={"yolo26-seg":`detection + masks, slightly heavier`},Cu=/\s*@\s*\d+\s*(?:[x×]\s*\d+)?/gi;function wu(e,t){let n=xu(e),r=t.replace(RegExp(`^${n}\\s+`,`i`),``).replace(Cu,``).trim();return r.length>0?r:t}function Tu(e,t){let n=[];return t===`test`&&n.push(`Test`),n.push(e===`int8`?`Int8`:`Standard`),n.join(` · `)}function Eu(e){return yu.filter(t=>e.formats[t]!==void 0)}function Du(e){let t=yu.map(t=>e.formats[t]?.sizeMB).filter(e=>typeof e==`number`);return t.length>0?Math.min(...t):0}var Ou=[`t`,`n`,`s`,`m`,`c`,`l`,`x`],ku=[`fp32`,`int8`];function Au(e){let t=new Map;for(let n of e){if(n.legacy===!0||n.group===void 0)continue;let{family:e,tier:r}=n.group,i=t.get(e)??new Map,a=i.get(r)??[];a.push(n),i.set(r,a),t.set(e,i)}let n=[];for(let[e,r]of t){let t=[];for(let[n,i]of r){let r=i.map(e=>{let t=e.group?.precision??`fp32`,n=e.group?.optimization??`standard`;return{modelId:e.id,precision:t,optimization:n,resolution:e.group?.resolution,label:Tu(t,n),formats:Eu(e),sizeMB:Du(e)}}).toSorted((e,t)=>e.resolution===t.resolution?e.optimization===t.optimization?ku.indexOf(e.precision)-ku.indexOf(t.precision):e.optimization===`test`?1:-1:(t.resolution??1/0)-(e.resolution??1/0)),a=r.find(e=>e.precision===`fp32`&&e.optimization===`standard`)??r[0];if(a===void 0)continue;let o=i.find(e=>e.id===a.modelId);t.push({tier:n,label:o?wu(e,o.name):n.toUpperCase(),baseModelId:a.modelId,options:r})}t.sort((e,t)=>{let n=Ou.indexOf(e.tier),r=Ou.indexOf(t.tier);return n!==-1&&r!==-1?n-r:n===-1?r===-1?e.tier.localeCompare(t.tier):1:-1});let i=Su[e];n.push({family:e,label:xu(e),...i===void 0?{}:{hint:i},tiers:t})}return n.sort((e,t)=>e.family.localeCompare(t.family)),n}function ju(e,t){let n=t.precision??`fp32`,r=t.optimization??`standard`,i=e.filter(e=>e.group!==void 0&&e.group.family===t.family&&e.group.tier===t.tier&&(e.group.precision??`fp32`)===n&&(e.group.optimization??`standard`)===r);return t.resolution===void 0?i.toSorted((e,t)=>(t.group?.resolution??1/0)-(e.group?.resolution??1/0))[0]?.id??null:i.find(e=>e.group?.resolution===t.resolution)?.id??null}function Mu(e,t){let n=e.find(e=>e.id===t);return n?.group===void 0?null:{family:n.group.family,tier:n.group.tier,precision:n.group.precision??`fp32`,optimization:n.group.optimization??`standard`,resolution:n.group.resolution}}var Nu=/^object-clip(-[a-z0-9][a-z0-9-]*)?$/,Pu=u({textModelId:c().min(1),embeddingDim:i().int().positive(),vectorIndex:c().regex(Nu),tokenizerFile:c().min(1),contextLength:i().int().positive(),padId:i().int().nonnegative(),searchMinScore:i().min(0).max(1)}),Fu=[`loose`,`balanced`,`strict`],Iu=x(Fu),Lu={loose:1,balanced:1.25,strict:1.5};function Ru(e,t){if(t.minScore!==void 0)return t.minScore;let n=Lu[t.strictness??`loose`];return Math.min(1,Math.round(e.searchMinScore*n*1e3)/1e3)}var zu=[`animal-classifier`,`vehicle-classifier`,`package-detection`],Bu=[`plate-detection`,`face-detection`],Vu=[`segmentation`],Hu=[...zu,...Bu,...Vu];function Uu(e){return Hu.some(t=>t===e)}function Wu(e){return zu.some(t=>t===e)}var Gu={"animal-classifier":[`bird`,`cat`,`cow`,`deer`,`dog`,`horse`,`sheep`,`squirrel`],"vehicle-classifier":[`Ambulance`,`Bicycle`,`Bus`,`Car`,`Motorcycle`,`Taxi`,`Truck`,`Van`],"package-detection":[`package`]},Ku={"animal-classifier":`animal`,"vehicle-classifier":`vehicle`,"package-detection":`package`},qu={"animal-classifier":{},"vehicle-classifier":{school_bus:`Bus`,garbage_truck:`Truck`},"package-detection":{}},Ju={"plate-detection":{rootLabels:[`license_plate`],parentMacro:`vehicle`,childClass:`plate`,servedChildSteps:[`plate-ocr`],use:`as-output`},"face-detection":{rootLabels:[`face`],parentMacro:`person`,childClass:`face`,servedChildSteps:[`face-embedding`],use:`refine`,minRootInputPx:640}},Yu={"animal-classifier":!0,"vehicle-classifier":!0,"package-detection":!0,"plate-detection":!1,"face-detection":!1,segmentation:!0},Xu=`useRootModel`,Zu=`labelLink`,Qu=`detector-link:`;function $u(e){return`${Qu}${e}`}function ed(e){if(e===void 0||!e.startsWith(`detector-link:`))return;let t=e.slice(14);return Wu(t)?t:void 0}function td(e,t){let n=qu[e][t];if(n!==void 0)return n;let r=t.toLowerCase();return Gu[e].find(e=>e.toLowerCase()===r)}function nd(e,t){let n=[];if(t!==void 0)for(let r of zu){let i={};for(let n of e){if(t.mapping[n]!==Ku[r])continue;let e=td(r,n);e!==void 0&&(i[n]=e)}let a=new Set(Object.values(i));if(a.size===0)continue;let o=Gu[r].filter(e=>!a.has(e));n.push({kind:`label`,stepId:r,labelToEffect:i,uncovered:o})}let r=new Set(e);for(let e of Bu){let t=Ju[e],i=t.rootLabels.filter(e=>r.has(e));i.length!==0&&n.push({kind:`crop`,stepId:e,rootLabels:i,parentMacro:t.parentMacro,childClass:t.childClass})}return n}var rd=[`yolo-seg`];function id(e){return e===void 0||!rd.includes(e)?[]:Vu.map(e=>({kind:`mask`,stepId:e}))}function ad(e,t){let n=e?.suppliesSteps??nd(e!==void 0&&e.labels.length>0?e.labels.map(e=>e.id):t.labels,e?.classMap??t.classMap),r=id(e?.postprocessor).filter(e=>!n.some(t=>t.stepId===e.stepId)),i=r.length>0?[...n,...r]:n,a=e===void 0?void 0:Math.min(e.inputSize.width,e.inputSize.height);return a===void 0?i:i.map(e=>e.kind===`crop`?{...e,rootInputPx:a}:e)}function od(e,t){return e?.find(e=>e.stepId===t)}function sd(e,t){let n=t?.[Xu];if(typeof n==`boolean`)return n;let r=t?.[Zu];return r===`skip-when-filled`?!0:r===`run`?!1:Yu[e]}function cd(e){if(e.kind!==`crop`)return;let t=Ju[e.stepId].minRootInputPx;if(t!==void 0)return e.rootInputPx!==void 0&&e.rootInputPx>=t?void 0:`root-input-too-small`}function ld(e,t,n){let r=od(n,e),i=sd(e,t),a=r===void 0?`root-does-not-declare`:cd(r);return{stepId:e,supply:r,intent:i,effective:i&&a===void 0,inactive:i&&a!==void 0,...i&&a!==void 0?{inactiveReason:a}:{}}}function ud(e,t){let n=t?.enabledClasses;return!Array.isArray(n)||n.length===0?!0:n.some(t=>t===e)}function dd(e){return Ju[e].servedChildSteps}var fd=.9;function pd(e,t){let n=e.w*e.h;if(!(n>0))return-1;let r=-1,i=1/0;return t.forEach((t,a)=>{if(Math.max(0,Math.min(e.x+e.w,t.x+t.w)-Math.max(e.x,t.x))*Math.max(0,Math.min(e.y+e.h,t.y+t.h)-Math.max(e.y,t.y))/n<.9)return;let o=t.w*t.h;o<i&&(r=a,i=o)}),r}var md={"animal-classifier":`animals`,"vehicle-classifier":`vehicles`,"package-detection":`packages`,"plate-detection":`plates`,"face-detection":`faces`,segmentation:`masks`};function hd(e){let t=md[e.stepId];if(e.kind!==`label`)return t;let n=Gu[e.stepId].length;return n<=1?t:`${t} ${String(n-e.uncovered.length)}/${String(n)}`}function gd(e){return(e??[]).map(hd).join(` · `)}var _d=[`onnx`,`coreml`,`openvino`,`tflite`,`pt`,`gguf`],vd=u({url:c(),sizeMB:i(),isDirectory:C().optional(),files:S(c()).readonly().optional(),runtimes:S(x([`python`])).readonly().optional(),revision:c().min(1).optional()}),yd=x([`current`,`stale`,`missing`]),bd=x([`fp32`,`fp16`,`int8`]),xd=u({downloaded:C(),sizeMB:i(),onDisk:yd.optional(),precision:bd.optional()}),Sd=u({url:c(),filename:c(),sizeMB:i()}),Cd=u({onnx:vd.optional(),coreml:vd.optional(),openvino:vd.optional(),tflite:vd.optional(),pt:vd.optional(),gguf:vd.optional()}),wd=u({family:c(),tier:c(),precision:x([`fp32`,`int8`]).optional(),optimization:x([`standard`,`test`]).optional(),resolution:i().int().positive().optional()}),Td=[`camstack`,`frigate`,`scrypted`,`custom`],Ed=x(Td);function Dd(e){if(e.provider!==void 0)return e.provider;let t=`${e.id} ${e.description??``}`;return/scrypted/i.test(t)?`scrypted`:/frigate/i.test(t)?`frigate`:`custom`}var Od=[`camstack-hf`,`third-party`,`built-in`],kd=n(e=>typeof e==`string`?{weights:e}:e,u({weights:c().min(1),code:c().min(1).optional(),data:u({name:c().min(1),terms:c().min(1),url:c().url().optional()}).optional(),upstream:u({name:c().min(1),url:c().url()}).optional(),url:c().url().optional(),attribution:c().min(1).optional(),modifications:c().min(1).optional(),hosting:x(Od).optional(),nonCommercial:C().optional()})),Ad=f(`kind`,[u({kind:p(`label`),stepId:x(zu),labelToEffect:y(c(),c()),uncovered:S(c()).readonly()}),u({kind:p(`crop`),stepId:x(Bu),rootLabels:S(c()).readonly(),parentMacro:x([`vehicle`,`person`]),childClass:x([`plate`,`face`]),rootInputPx:i().int().positive().optional()}),u({kind:p(`mask`),stepId:x(Vu)})]),jd=u({id:c(),name:c(),description:c(),formats:Cd,inputSize:u({width:i(),height:i()}),inputChannels:i().int().positive().optional(),labels:S(Bs).readonly(),inputLayout:x([`nchw`,`nhwc`]).optional(),inputNormalization:x([`zero-one`,`imagenet`,`none`,`scrfd`]).optional(),outputProbabilities:C().optional(),preprocessMode:x([`letterbox`,`resize`]).optional(),postprocessor:g().optional(),defaultConfidence:i().min(0).max(1).optional(),defaultClassFloors:y(c(),i().min(0).max(1)).optional(),gpuInferencePrecision:x([`f32`,`f16`]).optional(),suppliedLabelFloors:y(c(),i().min(0).max(1)).optional(),faceAlignment:C().optional(),extraFiles:S(Sd).readonly().optional(),legacy:C().optional(),metrics:u({map50:i().optional(),p95LatencyMs:y(c(),i()).optional()}).optional(),license:kd.optional(),group:wd.optional(),provider:Ed.optional(),classMap:Ws.optional(),suppliesSteps:S(Ad).readonly().optional(),clip:Pu.optional()}),Md=f(`format`,[u({format:p(`openvino`),precisions:S(x([`fp16`,`int8`])).min(1).readonly()}),u({format:p(`coreml`)})]),Nd=u({id:c().regex(/^[a-zA-Z0-9._-]+$/),name:c(),labels:S(Bs).readonly(),inputSize:u({width:i(),height:i()}),inputLayout:x([`nchw`,`nhwc`]).optional(),inputNormalization:x([`zero-one`,`imagenet`,`none`,`scrfd`]).optional(),preprocessMode:x([`letterbox`,`resize`]).optional(),outputFormat:x([`yolo`,`ssd`,`embedding`,`classification`,`ocr`,`segmentation`]),faceAlignment:C().optional(),classMap:Ws.optional()}),Pd=u({format:x(_d),precision:x([`fp16`,`int8`]).optional(),sizeMB:i(),validated:C(),files:S(c()).readonly()}),Fd=u({entry:jd,artifacts:S(Pd).readonly()});function Id(e){switch(e.toUpperCase()){case`GET`:case`HEAD`:case`OPTIONS`:return`view`;case`POST`:case`PUT`:case`PATCH`:return`create`;default:return`delete`}}function Ld(e,t){return e.some(e=>e.type===`category`&&e.target===`device`&&e.access.includes(t))}function Rd(e,t,n){return e.some(e=>e.type===`addon`&&e.target===t&&e.access.includes(n))}function zd(e){let t=e.kind;if(t===void 0)return{kind:`session`};if(t!==`sso-bridge`)return{kind:`not-a-credential`,reason:`bridge token kind=${String(t)}`};let n=e.provider;return n===`oauth-access`?{kind:`integration`,provider:`oauth-access`}:{kind:`not-a-credential`,reason:`bridge token provider=${String(n)}`}}function Bd(e){let{principal:t}=e;if(t.kind===`not-a-credential`)return{allowed:!1,reason:t.reason};if(t.kind===`session`)return{allowed:!0};let n=Id(e.method);return Rd(e.scopes,e.addonId,n)?{allowed:!0}:{allowed:!1,reason:`integration token holds no addon:${e.addonId}[${n}] grant`}}var Vd=u({kind:p(`field`).optional(),sourceKey:c(),cap:c(),fieldPath:c()}),Hd=u({kind:p(`literal`),value:d([c(),i(),C(),ne()])}),Ud=u({kind:p(`global`),sourceStableId:c(),cap:c(),fieldPath:c()}),Wd=d([Vd,Hd,Ud]),Gd=u({expr:c().min(1).max(Lr),bindings:y(c().regex(Ur),Wd)}).superRefine((e,t)=>{let n=Ci(e);n!==null&&t.addIssue({code:`custom`,message:n,path:[`expr`]})}),Kd=3,qd=32,Jd=x([`eq`,`ne`,`gt`,`gte`,`lt`,`lte`,`contains`,`in`]),Yd=u({kind:p(`condition`),deviceId:i().int().nonnegative(),cap:c().min(1),fieldPath:c().min(1),operator:Jd,value:d([c(),i(),C(),S(d([c(),i()]))])}),Xd=u({kind:p(`expression`),expr:c().min(1).max(Lr),bindings:y(c().regex(Ur),Wd)}).superRefine((e,t)=>{let n=Ci(e);n!==null&&t.addIssue({code:`custom`,message:n,path:[`expr`]})}),Zd=fe(()=>f(`kind`,[u({kind:p(`all`),children:S(Zd)}),u({kind:p(`any`),children:S(Zd)}),u({kind:p(`not`),child:Zd}),Yd,Xd])),Qd=f(`kind`,[u({kind:p(`device-state`),deviceId:i().int().nonnegative(),cap:c().min(1),fieldPath:c().min(1),becomes:d([c(),i(),C()]).optional(),edge:C().optional(),forMs:i().int().min(0).max(864e5).optional(),debounceMs:i().int().min(0).max(6e5).optional()}),u({kind:p(`device-event`),category:c().min(1),deviceId:i().int().nonnegative().optional()}),u({kind:p(`schedule`),cron:c().min(1).max(120)}),u({kind:p(`manual`)})]),$d=f(`kind`,[u({kind:p(`wait`),seconds:i().min(0).max(300)}),u({kind:p(`cap`),deviceId:d([i().int(),S(i().int()).min(1),u({$var:c().min(1)})]),cap:c().min(1),method:c().min(1),args:y(c(),o()).optional()}),u({kind:p(`code`),code:c().min(1).max(2e4)})]),ef=u({triggers:S(Qd),conditions:Zd.optional(),actions:S($d)});function tf(e){if(e.kind===`condition`||e.kind===`expression`)return 1;if(e.kind===`not`)return 1+tf(e.child);let t=e.children;if(t.length===0)return 1;let n=0;for(let e of t){let t=tf(e);t>n&&(n=t)}return 1+n}function nf(e){if(e.kind===`condition`||e.kind===`expression`)return 1;if(e.kind===`not`)return nf(e.child);let t=0;for(let n of e.children)t+=nf(n);return t}function rf(e){return e.kind===`condition`||e.kind===`expression`?!1:e.kind===`not`?rf(e.child):e.children.length===0?!0:e.children.some(rf)}function af(e){if(e.triggers.length===0)return`an automation needs at least one trigger — without one nothing can start a run`;if(e.actions.length===0)return`an automation needs at least one action — a rule that does nothing is not a rule`;let t=e.conditions;if(t!==void 0){if(rf(t))return`a condition group is empty — group existing rows instead of leaving a container to fill`;let e=tf(t);if(e>3)return`conditions nest ${e} levels deep — the limit is 3. "not (any of …)" is the same as "all of (not …)", which is one level shallower`;let n=nf(t);if(n>32)return`conditions use ${n} leaves — the limit is 32`}return null}var of=15e3;function z(e){return JSON.stringify(e)}function sf(e,t){switch(e.kind){case`all`:return`allOf([\n${e.children.map(e=>`${t} () => ${sf(e,`${t} `)}`).join(`,
|
|
4
4
|
`)}\n${t}])`;case`any`:return`anyOf([\n${e.children.map(e=>`${t} () => ${sf(e,`${t} `)}`).join(`,
|
|
5
5
|
`)}\n${t}])`;case`not`:return`notOf(() => ${sf(e.child,t)})`;case`condition`:return`leaf(${z(e.deviceId)}, ${z(e.cap)}, ${z(e.fieldPath)}, ${z(e.operator)}, ${z(e.value)})`;case`expression`:return`exprLeaf(${z(e.expr)}, ${z(e.bindings)})`}}function cf(e,t){switch(e.kind){case`schedule`:return` // trigger ${t}: schedule — armed to the next minute boundary and
|
|
6
6
|
// RE-ARMED from the wall clock every tick, so it cannot drift the way a
|