@camera.ui/browser 0.0.100 → 0.0.101

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/bundle.js CHANGED
@@ -1 +1,2 @@
1
- var e={855:e=>{const t="object"==typeof performance&&performance&&"function"==typeof performance.now?performance:Date,r=()=>t.now(),n=e=>e===1/0||(e=>e&&e===Math.floor(e)&&e>0&&isFinite(e))(e);class i{constructor({max:e=1/0,ttl:t,updateAgeOnGet:r=!1,checkAgeOnGet:i=!1,noUpdateTTL:s=!1,dispose:o,noDisposeOnSet:a=!1}={}){if(this.expirations=Object.create(null),this.data=new Map,this.expirationMap=new Map,void 0!==t&&!n(t))throw new TypeError("ttl must be positive integer or Infinity if set");if(!n(e))throw new TypeError("max must be positive integer or Infinity");if(this.ttl=t,this.max=e,this.updateAgeOnGet=!!r,this.checkAgeOnGet=!!i,this.noUpdateTTL=!!s,this.noDisposeOnSet=!!a,void 0!==o){if("function"!=typeof o)throw new TypeError("dispose must be function if set");this.dispose=o}this.timer=void 0,this.timerExpiration=void 0}setTimer(e,t){if(this.timerExpiration<e)return;this.timer&&clearTimeout(this.timer);const n=setTimeout((()=>{this.timer=void 0,this.timerExpiration=void 0,this.purgeStale();for(const e in this.expirations){this.setTimer(e,e-r());break}}),t);n.unref&&n.unref(),this.timerExpiration=e,this.timer=n}cancelTimer(){this.timer&&(clearTimeout(this.timer),this.timerExpiration=void 0,this.timer=void 0)}cancelTimers(){return process.emitWarning('TTLCache.cancelTimers has been renamed to TTLCache.cancelTimer (no "s"), and will be removed in the next major version update'),this.cancelTimer()}clear(){const e=this.dispose!==i.prototype.dispose?[...this]:[];this.data.clear(),this.expirationMap.clear(),this.cancelTimer(),this.expirations=Object.create(null);for(const[t,r]of e)this.dispose(r,t,"delete")}setTTL(e,t=this.ttl){const n=this.expirationMap.get(e);if(void 0!==n){const t=this.expirations[n];!t||t.length<=1?delete this.expirations[n]:this.expirations[n]=t.filter((t=>t!==e))}if(t!==1/0){const n=Math.floor(r()+t);this.expirationMap.set(e,n),this.expirations[n]||(this.expirations[n]=[],this.setTimer(n,t)),this.expirations[n].push(e)}else this.expirationMap.set(e,1/0)}set(e,t,{ttl:r=this.ttl,noUpdateTTL:i=this.noUpdateTTL,noDisposeOnSet:s=this.noDisposeOnSet}={}){if(!n(r))throw new TypeError("ttl must be positive integer or Infinity");if(this.expirationMap.has(e)){i||this.setTTL(e,r);const n=this.data.get(e);n!==t&&(this.data.set(e,t),s||this.dispose(n,e,"set"))}else this.setTTL(e,r),this.data.set(e,t);for(;this.size>this.max;)this.purgeToCapacity();return this}has(e){return this.data.has(e)}getRemainingTTL(e){const t=this.expirationMap.get(e);return t===1/0?t:void 0!==t?Math.max(0,Math.ceil(t-r())):0}get(e,{updateAgeOnGet:t=this.updateAgeOnGet,ttl:r=this.ttl,checkAgeOnGet:n=this.checkAgeOnGet}={}){const i=this.data.get(e);if(!n||0!==this.getRemainingTTL(e))return t&&this.setTTL(e,r),i;this.delete(e)}dispose(e,t){}delete(e){const t=this.expirationMap.get(e);if(void 0!==t){const r=this.data.get(e);this.data.delete(e),this.expirationMap.delete(e);const n=this.expirations[t];return n&&(n.length<=1?delete this.expirations[t]:this.expirations[t]=n.filter((t=>t!==e))),this.dispose(r,e,"delete"),0===this.size&&this.cancelTimer(),!0}return!1}purgeToCapacity(){for(const e in this.expirations){const t=this.expirations[e];if(!(this.size-t.length>=this.max)){const e=this.size-this.max,r=[];for(const n of t.splice(0,e))r.push([n,this.data.get(n)]),this.data.delete(n),this.expirationMap.delete(n);for(const[e,t]of r)this.dispose(t,e,"evict");return}{delete this.expirations[e];const r=[];for(const e of t)r.push([e,this.data.get(e)]),this.data.delete(e),this.expirationMap.delete(e);for(const[e,t]of r)this.dispose(t,e,"evict")}}}get size(){return this.data.size}purgeStale(){const e=Math.ceil(r());for(const t in this.expirations){if("Infinity"===t||t>e)return;const r=[...this.expirations[t]||[]],n=[];delete this.expirations[t];for(const e of r)n.push([e,this.data.get(e)]),this.data.delete(e),this.expirationMap.delete(e);for(const[e,t]of n)this.dispose(t,e,"stale")}0===this.size&&this.cancelTimer()}*entries(){for(const e in this.expirations)for(const t of this.expirations[e])yield[t,this.data.get(t)]}*keys(){for(const e in this.expirations)for(const t of this.expirations[e])yield t}*values(){for(const e in this.expirations)for(const t of this.expirations[e])yield this.data.get(t)}[Symbol.iterator](){return this.entries()}}e.exports=i}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};r.d(n,{j:()=>Cr});var i={};r.r(i),r.d(i,{Decoder:()=>vr,Encoder:()=>yr,PacketType:()=>mr,protocol:()=>gr});class s{baseURL;abortControllers=new Set;constructor(e){this.baseURL=`${e}/api`}async request(e,t,r,n={}){const i=new AbortController;this.abortControllers.add(i);const s=setTimeout((()=>{i.abort(),this.abortControllers.delete(i)}),15e3);try{const s=await fetch(`${this.baseURL}${t}`,{method:e,headers:{"Content-Type":"application/json",...n.headers},body:r?JSON.stringify(r):void 0,signal:i.signal,...n});if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);return s}finally{clearTimeout(s),this.abortControllers.delete(i)}}get(e,t){return this.request("GET",e,void 0,t)}post(e,t,r){return this.request("POST",e,t,r)}}process.env.CAMERA_UI_RUNMODE,process.env.CAMERA_UI_RUNMODE,process.env.CAMERA_UI_RUNMODE,process.env.CAMERA_UI_AS_SERVICE;class o{subscriptions=[];additionalSubscriptions=[];addSubscriptions(...e){this.subscriptions.push(...e)}addAdditionalSubscriptions(...e){this.additionalSubscriptions.push(...e)}unsubscribe(){this.subscriptions.forEach((e=>e.unsubscribe()))}unsubscribeAdditional(){this.additionalSubscriptions.forEach((e=>e.unsubscribe()))}}function a(e,t,r=!1){if(e===t)return!0;if((void 0===e||void 0===t||null===e||null===t)&&(e||t))return!1;const n=e?.constructor.name,i=t?.constructor.name;if(n!==i)return!1;if("Array"===n&&"Array"===i){if(e.length!==t.length)return!1;if(r){const n=[...t];return e.every((e=>{const t=n.findIndex((t=>a(e,t,r)));return-1!==t&&(n.splice(t,1),!0)}))}{let n=!0;for(let i=0;i<e.length;i++)if(!a(e[i],t[i],r)){n=!1;break}return n}}if("Object"===n&&"Object"===i){let n=!0;const i=Object.keys(e),s=Object.keys(t);if(i.length!==s.length)return!1;for(let s=0;s<i.length;s++)if(e[i[s]]&&t[i[s]]){if(e[i[s]]===t[i[s]])continue;if(!e[i[s]]||"Array"!==e[i[s]].constructor.name&&"Object"!==e[i[s]].constructor.name){if(e[i[s]]!==t[i[s]]){n=!1;break}}else if(n=a(e[i[s]],t[i[s]],r),!n)break}else if(e[i[s]]&&!t[i[s]]||!e[i[s]]&&t[i[s]]){n=!1;break}return n}return e===t}function c(e){return JSON.parse(JSON.stringify(e))}var h=r(855),u=r.n(h),l=function(e,t){return l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},l(e,t)};function p(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}l(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function d(e,t){var r,n,i,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return o.next=a(0),o.throw=a(1),o.return=a(2),"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,a[0]&&(s=0)),s;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){s.label=a[1];break}if(6===a[0]&&s.label<i[1]){s.label=i[1],i=a;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(a);break}i[2]&&s.ops.pop(),s.trys.pop();continue}a=t.call(e,s)}catch(e){a=[6,e],n=0}finally{r=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}}function f(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function g(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,s=r.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(n=s.next()).done;)o.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=s.return)&&r.call(s)}finally{if(i)throw i.error}}return o}function m(e,t,r){if(r||2===arguments.length)for(var n,i=0,s=t.length;i<s;i++)!n&&i in t||(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))}function y(e){return this instanceof y?(this.v=e,this):new y(e)}function b(e){return"function"==typeof e}function v(e){var t=e((function(e){Error.call(e),e.stack=(new Error).stack}));return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;var w=v((function(e){return function(t){e(this),this.message=t?t.length+" errors occurred during unsubscription:\n"+t.map((function(e,t){return t+1+") "+e.toString()})).join("\n "):"",this.name="UnsubscriptionError",this.errors=t}}));function S(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var _=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var e,t,r,n,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var o=f(s),a=o.next();!a.done;a=o.next())a.value.remove(this)}catch(t){e={error:t}}finally{try{a&&!a.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}else s.remove(this);var c=this.initialTeardown;if(b(c))try{c()}catch(e){i=e instanceof w?e.errors:[e]}var h=this._finalizers;if(h){this._finalizers=null;try{for(var u=f(h),l=u.next();!l.done;l=u.next()){var p=l.value;try{x(p)}catch(e){i=null!=i?i:[],e instanceof w?i=m(m([],g(i)),g(e.errors)):i.push(e)}}}catch(e){r={error:e}}finally{try{l&&!l.done&&(n=u.return)&&n.call(u)}finally{if(r)throw r.error}}}if(i)throw new w(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)x(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(r=this._finalizers)&&void 0!==r?r:[]).push(t)}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&S(t,e)},e.prototype.remove=function(t){var r=this._finalizers;r&&S(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}(),k=_.EMPTY;function E(e){return e instanceof _||e&&"closed"in e&&b(e.remove)&&b(e.add)&&b(e.unsubscribe)}function x(e){b(e)?e():e.unsubscribe()}var T={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},O={setTimeout:function(e,t){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];var i=O.delegate;return(null==i?void 0:i.setTimeout)?i.setTimeout.apply(i,m([e,t],g(r))):setTimeout.apply(void 0,m([e,t],g(r)))},clearTimeout:function(e){var t=O.delegate;return((null==t?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function P(e){O.setTimeout((function(){var t=T.onUnhandledError;if(!t)throw e;t(e)}))}function C(){}var A=R("C",void 0,void 0);function R(e,t,r){return{kind:e,value:t,error:r}}var M=null;function L(e){if(T.useDeprecatedSynchronousErrorHandling){var t=!M;if(t&&(M={errorThrown:!1,error:null}),e(),t){var r=M,n=r.errorThrown,i=r.error;if(M=null,n)throw i}}else e()}var j=function(e){function t(t){var r=e.call(this)||this;return r.isStopped=!1,t?(r.destination=t,E(t)&&t.add(r)):r.destination=U,r}return p(t,e),t.create=function(e,t,r){return new q(e,t,r)},t.prototype.next=function(e){this.isStopped?F(function(e){return R("N",e,void 0)}(e),this):this._next(e)},t.prototype.error=function(e){this.isStopped?F(R("E",void 0,e),this):(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped?F(A,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(_),B=Function.prototype.bind;function I(e,t){return B.call(e,t)}var D=function(){function e(e){this.partialObserver=e}return e.prototype.next=function(e){var t=this.partialObserver;if(t.next)try{t.next(e)}catch(e){N(e)}},e.prototype.error=function(e){var t=this.partialObserver;if(t.error)try{t.error(e)}catch(e){N(e)}else N(e)},e.prototype.complete=function(){var e=this.partialObserver;if(e.complete)try{e.complete()}catch(e){N(e)}},e}(),q=function(e){function t(t,r,n){var i,s,o=e.call(this)||this;return b(t)||!t?i={next:null!=t?t:void 0,error:null!=r?r:void 0,complete:null!=n?n:void 0}:o&&T.useDeprecatedNextContext?((s=Object.create(t)).unsubscribe=function(){return o.unsubscribe()},i={next:t.next&&I(t.next,s),error:t.error&&I(t.error,s),complete:t.complete&&I(t.complete,s)}):i=t,o.destination=new D(i),o}return p(t,e),t}(j);function N(e){var t;T.useDeprecatedSynchronousErrorHandling?(t=e,T.useDeprecatedSynchronousErrorHandling&&M&&(M.errorThrown=!0,M.error=t)):P(e)}function F(e,t){var r=T.onStoppedNotification;r&&O.setTimeout((function(){return r(e,t)}))}var U={closed:!0,next:C,error:function(e){throw e},complete:C},V="function"==typeof Symbol&&Symbol.observable||"@@observable";function W(e){return e}var z=function(){function e(e){e&&(this._subscribe=e)}return e.prototype.lift=function(t){var r=new e;return r.source=this,r.operator=t,r},e.prototype.subscribe=function(e,t,r){var n=this,i=function(e){return e&&e instanceof j||function(e){return e&&b(e.next)&&b(e.error)&&b(e.complete)}(e)&&E(e)}(e)?e:new q(e,t,r);return L((function(){var e=n,t=e.operator,r=e.source;i.add(t?t.call(i,r):r?n._subscribe(i):n._trySubscribe(i))})),i},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.error(t)}},e.prototype.forEach=function(e,t){var r=this;return new(t=H(t))((function(t,n){var i=new q({next:function(t){try{e(t)}catch(e){n(e),i.unsubscribe()}},error:n,complete:t});r.subscribe(i)}))},e.prototype._subscribe=function(e){var t;return null===(t=this.source)||void 0===t?void 0:t.subscribe(e)},e.prototype[V]=function(){return this},e.prototype.pipe=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return(0===(r=e).length?W:1===r.length?r[0]:function(e){return r.reduce((function(e,t){return t(e)}),e)})(this);var r},e.prototype.toPromise=function(e){var t=this;return new(e=H(e))((function(e,r){var n;t.subscribe((function(e){return n=e}),(function(e){return r(e)}),(function(){return e(n)}))}))},e.create=function(t){return new e(t)},e}();function H(e){var t;return null!==(t=null!=e?e:T.Promise)&&void 0!==t?t:Promise}var $=v((function(e){return function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}})),G=function(e){function t(){var t=e.call(this)||this;return t.closed=!1,t.currentObservers=null,t.observers=[],t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return p(t,e),t.prototype.lift=function(e){var t=new J(this,this);return t.operator=e,t},t.prototype._throwIfClosed=function(){if(this.closed)throw new $},t.prototype.next=function(e){var t=this;L((function(){var r,n;if(t._throwIfClosed(),!t.isStopped){t.currentObservers||(t.currentObservers=Array.from(t.observers));try{for(var i=f(t.currentObservers),s=i.next();!s.done;s=i.next())s.value.next(e)}catch(e){r={error:e}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}}}))},t.prototype.error=function(e){var t=this;L((function(){if(t._throwIfClosed(),!t.isStopped){t.hasError=t.isStopped=!0,t.thrownError=e;for(var r=t.observers;r.length;)r.shift().error(e)}}))},t.prototype.complete=function(){var e=this;L((function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var t=e.observers;t.length;)t.shift().complete()}}))},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){var e;return(null===(e=this.observers)||void 0===e?void 0:e.length)>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,r=this,n=r.hasError,i=r.isStopped,s=r.observers;return n||i?k:(this.currentObservers=null,s.push(e),new _((function(){t.currentObservers=null,S(s,e)})))},t.prototype._checkFinalizedStatuses=function(e){var t=this,r=t.hasError,n=t.thrownError,i=t.isStopped;r?e.error(n):i&&e.complete()},t.prototype.asObservable=function(){var e=new z;return e.source=this,e},t.create=function(e,t){return new J(e,t)},t}(z),J=function(e){function t(t,r){var n=e.call(this)||this;return n.destination=t,n.source=r,n}return p(t,e),t.prototype.next=function(e){var t,r;null===(r=null===(t=this.destination)||void 0===t?void 0:t.next)||void 0===r||r.call(t,e)},t.prototype.error=function(e){var t,r;null===(r=null===(t=this.destination)||void 0===t?void 0:t.error)||void 0===r||r.call(t,e)},t.prototype.complete=function(){var e,t;null===(t=null===(e=this.destination)||void 0===e?void 0:e.complete)||void 0===t||t.call(e)},t.prototype._subscribe=function(e){var t,r;return null!==(r=null===(t=this.source)||void 0===t?void 0:t.subscribe(e))&&void 0!==r?r:k},t}(G),Y=function(e){function t(t){var r=e.call(this)||this;return r._value=t,r}return p(t,e),Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(t){var r=e.prototype._subscribe.call(this,t);return!r.closed&&t.next(this._value),r},t.prototype.getValue=function(){var e=this,t=e.hasError,r=e.thrownError,n=e._value;if(t)throw r;return this._throwIfClosed(),n},t.prototype.next=function(t){e.prototype.next.call(this,this._value=t)},t}(G),K={now:function(){return(K.delegate||Date).now()},delegate:void 0},Q=function(e){function t(t,r,n){void 0===t&&(t=1/0),void 0===r&&(r=1/0),void 0===n&&(n=K);var i=e.call(this)||this;return i._bufferSize=t,i._windowTime=r,i._timestampProvider=n,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=r===1/0,i._bufferSize=Math.max(1,t),i._windowTime=Math.max(1,r),i}return p(t,e),t.prototype.next=function(t){var r=this,n=r.isStopped,i=r._buffer,s=r._infiniteTimeWindow,o=r._timestampProvider,a=r._windowTime;n||(i.push(t),!s&&i.push(o.now()+a)),this._trimBuffer(),e.prototype.next.call(this,t)},t.prototype._subscribe=function(e){this._throwIfClosed(),this._trimBuffer();for(var t=this._innerSubscribe(e),r=this._infiniteTimeWindow,n=this._buffer.slice(),i=0;i<n.length&&!e.closed;i+=r?1:2)e.next(n[i]);return this._checkFinalizedStatuses(e),t},t.prototype._trimBuffer=function(){var e=this,t=e._bufferSize,r=e._timestampProvider,n=e._buffer,i=e._infiniteTimeWindow,s=(i?1:2)*t;if(t<1/0&&s<n.length&&n.splice(0,n.length-s),!i){for(var o=r.now(),a=0,c=1;c<n.length&&n[c]<=o;c+=2)a=c;a&&n.splice(0,a+1)}},t}(G);function X(e){return function(t){if(function(e){return b(null==e?void 0:e.lift)}(t))return t.lift((function(t){try{return e(t,this)}catch(e){this.error(e)}}));throw new TypeError("Unable to lift unknown Observable type")}}function Z(e,t,r,n,i){return new ee(e,t,r,n,i)}var ee=function(e){function t(t,r,n,i,s,o){var a=e.call(this,t)||this;return a.onFinalize=s,a.shouldUnsubscribe=o,a._next=r?function(e){try{r(e)}catch(e){t.error(e)}}:e.prototype._next,a._error=i?function(e){try{i(e)}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._error,a._complete=n?function(){try{n()}catch(e){t.error(e)}finally{this.unsubscribe()}}:e.prototype._complete,a}return p(t,e),t.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var r=this.closed;e.prototype.unsubscribe.call(this),!r&&(null===(t=this.onFinalize)||void 0===t||t.call(this))}},t}(j);function te(){return X((function(e,t){var r,n=!1;e.subscribe(Z(t,(function(e){var i=r;r=e,n&&t.next([i,e]),n=!0})))}))}function re(e,t){return X((function(r,n){var i=0;r.subscribe(Z(n,(function(r){return e.call(t,r,i++)&&n.next(r)})))}))}function ne(e,t){return X((function(r,n){var i=0;r.subscribe(Z(n,(function(r){n.next(e.call(t,r,i++))})))}))}var ie=function(e){return e&&"number"==typeof e.length&&"function"!=typeof e},se="function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator";function oe(e){if(e instanceof z)return e;if(null!=e){if(function(e){return b(e[V])}(e))return i=e,new z((function(e){var t=i[V]();if(b(t.subscribe))return t.subscribe(e);throw new TypeError("Provided object does not correctly implement Symbol.observable")}));if(ie(e))return n=e,new z((function(e){for(var t=0;t<n.length&&!e.closed;t++)e.next(n[t]);e.complete()}));if(function(e){return b(null==e?void 0:e.then)}(e))return r=e,new z((function(e){r.then((function(t){e.closed||(e.next(t),e.complete())}),(function(t){return e.error(t)})).then(null,P)}));if(function(e){return Symbol.asyncIterator&&b(null==e?void 0:e[Symbol.asyncIterator])}(e))return ae(e);if(function(e){return b(null==e?void 0:e[se])}(e))return t=e,new z((function(e){var r,n;try{for(var i=f(t),s=i.next();!s.done;s=i.next()){var o=s.value;if(e.next(o),e.closed)return}}catch(e){r={error:e}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}e.complete()}));if(function(e){return b(null==e?void 0:e.getReader)}(e))return ae(function(e){return function(e,t,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,i=r.apply(e,t||[]),s=[];return n=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),o("next"),o("throw"),o("return",(function(e){return function(t){return Promise.resolve(t).then(e,h)}})),n[Symbol.asyncIterator]=function(){return this},n;function o(e,t){i[e]&&(n[e]=function(t){return new Promise((function(r,n){s.push([e,t,r,n])>1||a(e,t)}))},t&&(n[e]=t(n[e])))}function a(e,t){try{(r=i[e](t)).value instanceof y?Promise.resolve(r.value.v).then(c,h):u(s[0][2],r)}catch(e){u(s[0][3],e)}var r}function c(e){a("next",e)}function h(e){a("throw",e)}function u(e,t){e(t),s.shift(),s.length&&a(s[0][0],s[0][1])}}(this,arguments,(function(){var t,r,n;return d(this,(function(i){switch(i.label){case 0:t=e.getReader(),i.label=1;case 1:i.trys.push([1,,9,10]),i.label=2;case 2:return[4,y(t.read())];case 3:return r=i.sent(),n=r.value,r.done?[4,y(void 0)]:[3,5];case 4:return[2,i.sent()];case 5:return[4,y(n)];case 6:return[4,i.sent()];case 7:return i.sent(),[3,2];case 8:return[3,10];case 9:return t.releaseLock(),[7];case 10:return[2]}}))}))}(e))}var t,r,n,i;throw function(e){return new TypeError("You provided "+(null!==e&&"object"==typeof e?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}(e)}function ae(e){return new z((function(t){(function(e,t){var r,n,i,s,o,a,c,h;return o=this,a=void 0,h=function(){var o,a;return d(this,(function(c){switch(c.label){case 0:c.trys.push([0,5,6,11]),r=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=f(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,i){!function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)}(n,i,(t=e[r](t)).done,t.value)}))}}}(e),c.label=1;case 1:return[4,r.next()];case 2:if((n=c.sent()).done)return[3,4];if(o=n.value,t.next(o),t.closed)return[2];c.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return a=c.sent(),i={error:a},[3,11];case 6:return c.trys.push([6,,9,10]),n&&!n.done&&(s=r.return)?[4,s.call(r)]:[3,8];case 7:c.sent(),c.label=8;case 8:return[3,10];case 9:if(i)throw i.error;return[7];case 10:return[7];case 11:return t.complete(),[2]}}))},new((c=void 0)||(c=Promise))((function(e,t){function r(e){try{i(h.next(e))}catch(e){t(e)}}function n(e){try{i(h.throw(e))}catch(e){t(e)}}function i(t){t.done?e(t.value):function(e){return e instanceof c?e:new c((function(t){t(e)}))}(t.value).then(r,n)}i((h=h.apply(o,a||[])).next())}))})(e,t).catch((function(e){return t.error(e)}))}))}function ce(e){void 0===e&&(e={});var t=e.connector,r=void 0===t?function(){return new G}:t,n=e.resetOnError,i=void 0===n||n,s=e.resetOnComplete,o=void 0===s||s,a=e.resetOnRefCountZero,c=void 0===a||a;return function(e){var t,n,s,a=0,h=!1,u=!1,l=function(){null==n||n.unsubscribe(),n=void 0},p=function(){l(),t=s=void 0,h=u=!1},d=function(){var e=t;p(),null==e||e.unsubscribe()};return X((function(e,f){a++,u||h||l();var g=s=null!=s?s:r();f.add((function(){0!=--a||u||h||(n=he(d,c))})),g.subscribe(f),!t&&a>0&&(t=new q({next:function(e){return g.next(e)},error:function(e){u=!0,l(),n=he(p,i,e),g.error(e)},complete:function(){h=!0,l(),n=he(p,o),g.complete()}}),oe(e).subscribe(t))}))(e)}}function he(e,t){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];if(!0!==t){if(!1!==t){var i=new q({next:function(){i.unsubscribe(),e()}});return oe(t.apply(void 0,m([],g(r)))).subscribe(i)}}else e()}function ue(e,t,r){return void 0===r&&(r=1/0),b(t)?ue((function(r,n){return ne((function(e,i){return t(r,e,n,i)}))(oe(e(r,n)))}),r):("number"==typeof t&&(r=t),X((function(t,n){return function(e,t,r,n,i,s,o,a){var c=[],h=0,u=0,l=!1,p=function(){!l||c.length||h||t.complete()},d=function(e){return h<n?f(e):c.push(e)},f=function(e){h++;var i=!1;oe(r(e,u++)).subscribe(Z(t,(function(e){t.next(e)}),(function(){i=!0}),void 0,(function(){if(i)try{h--;for(var e=function(){var e=c.shift();f(e)};c.length&&h<n;)e();p()}catch(e){t.error(e)}})))};return e.subscribe(Z(t,d,(function(){l=!0,p()}))),function(){}}(t,n,e,r)})))}function le(e,t){const[r,n,i,s]=e,[o,a,c,h]=t,u=Math.max(r,o),l=Math.max(n,a),p=Math.min(i,c),d=Math.min(s,h),f=Math.max(0,p-u)*Math.max(0,d-l);return f/((i-r)*(s-n)+(c-o)*(h-a)-f)}function pe(e,t,r={}){const n={type:"Feature"};return(0===r.id||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function de(e,t,r={}){for(const t of e){if(t.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(t[t.length-1].length!==t[0].length)throw new Error("First and last Position are not equivalent.");for(let e=0;e<t[t.length-1].length;e++)if(t[t.length-1][e]!==t[0][e])throw new Error("First and last Position are not equivalent.")}return pe({type:"Polygon",coordinates:e},t,r)}function fe(e,t={}){const r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function ge(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}function me(e,t,r){if(null!==e)for(var n,i,s,o,a,c,h,u,l=0,p=0,d=e.type,f="FeatureCollection"===d,g="Feature"===d,m=f?e.features.length:1,y=0;y<m;y++){a=(u=!!(h=f?e.features[y].geometry:g?e.geometry:e)&&"GeometryCollection"===h.type)?h.geometries.length:1;for(var b=0;b<a;b++){var v=0,w=0;if(null!==(o=u?h.geometries[b]:h)){c=o.coordinates;var S=o.type;switch(l=!r||"Polygon"!==S&&"MultiPolygon"!==S?0:1,S){case null:break;case"Point":if(!1===t(c,p,y,v,w))return!1;p++,v++;break;case"LineString":case"MultiPoint":for(n=0;n<c.length;n++){if(!1===t(c[n],p,y,v,w))return!1;p++,"MultiPoint"===S&&v++}"LineString"===S&&v++;break;case"Polygon":case"MultiLineString":for(n=0;n<c.length;n++){for(i=0;i<c[n].length-l;i++){if(!1===t(c[n][i],p,y,v,w))return!1;p++}"MultiLineString"===S&&v++,"Polygon"===S&&w++}"Polygon"===S&&v++;break;case"MultiPolygon":for(n=0;n<c.length;n++){for(w=0,i=0;i<c[n].length;i++){for(s=0;s<c[n][i].length-l;s++){if(!1===t(c[n][i][s],p,y,v,w))return!1;p++}w++}v++}break;case"GeometryCollection":for(n=0;n<o.geometries.length;n++)if(!1===me(o.geometries[n],t,r))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function ye(e,t){!function(e,t){var r,n,i,s,o,a,c,h,u,l,p=0,d="FeatureCollection"===e.type,f="Feature"===e.type,g=d?e.features.length:1;for(r=0;r<g;r++){for(a=d?e.features[r].geometry:f?e.geometry:e,h=d?e.features[r].properties:f?e.properties:{},u=d?e.features[r].bbox:f?e.bbox:void 0,l=d?e.features[r].id:f?e.id:void 0,o=(c=!!a&&"GeometryCollection"===a.type)?a.geometries.length:1,i=0;i<o;i++)if(null!==(s=c?a.geometries[i]:a))switch(s.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(s,p,h,u,l))return!1;break;case"GeometryCollection":for(n=0;n<s.geometries.length;n++)if(!1===t(s.geometries[n],p,h,u,l))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,p,h,u,l))return!1;p++}}(e,(function(e,r,n,i,s){var o,a=null===e?null:e.type;switch(a){case null:case"Point":case"LineString":case"Polygon":return!1!==t(pe(e,n,{bbox:i,id:s}),r,0)&&void 0}switch(a){case"MultiPoint":o="Point";break;case"MultiLineString":o="LineString";break;case"MultiPolygon":o="Polygon"}for(var c=0;c<e.coordinates.length;c++){var h=e.coordinates[c];if(!1===t(pe({type:o,coordinates:h},n),r,c))return!1}}))}function be(e,t={}){if(null!=e.bbox&&!0!==t.recompute)return e.bbox;const r=[1/0,1/0,-1/0,-1/0];return me(e,(e=>{r[0]>e[0]&&(r[0]=e[0]),r[1]>e[1]&&(r[1]=e[1]),r[2]<e[0]&&(r[2]=e[0]),r[3]<e[1]&&(r[3]=e[1])})),r}Math.PI;const ve=function(e,t){for(var r=0,n=0,i=0,s=0,o=0,a=0,c=0,h=0,u=null,l=null,p=e[0],d=e[1],f=t.length;r<f;r++){n=0;var g=t[r].length-1,m=t[r];if((u=m[0])[0]!==m[g][0]&&u[1]!==m[g][1])throw new Error("First and last coordinates in a ring must be the same");for(o=u[0]-p,a=u[1]-d;n<g;n++)if(h=(l=m[n+1])[1]-d,a<0&&h<0||a>0&&h>0)a=h,o=(u=l)[0]-p;else{if(c=l[0]-e[0],h>0&&a<=0){if((s=o*h-c*a)>0)i+=1;else if(0===s)return 0}else if(a>0&&h<=0){if((s=o*h-c*a)<0)i+=1;else if(0===s)return 0}else if(0===h&&a<0){if(0==(s=o*h-c*a))return 0}else if(0===a&&h<0){if(0==(s=o*h-c*a))return 0}else if(0===a&&0===h){if(c<=0&&o>=0)return 0;if(o<=0&&c>=0)return 0}u=l,a=h,o=c}}return i%2!=0};function we(e){if(!e)throw new Error("coord is required");if(!Array.isArray(e)){if("Feature"===e.type&&null!==e.geometry&&"Point"===e.geometry.type)return[...e.geometry.coordinates];if("Point"===e.type)return[...e.coordinates]}if(Array.isArray(e)&&e.length>=2&&!Array.isArray(e[0])&&!Array.isArray(e[1]))return[...e];throw new Error("coord must be GeoJSON Point or an Array of numbers")}function Se(e){return"Feature"===e.type?e.geometry:e}function _e(e,t,r={}){if(!e)throw new Error("point is required");if(!t)throw new Error("polygon is required");const n=we(e),i=Se(t),s=i.type,o=t.bbox;let a=i.coordinates;if(o&&!1===function(e,t){return t[0]<=e[0]&&t[1]<=e[1]&&t[2]>=e[0]&&t[3]>=e[1]}(n,o))return!1;"Polygon"===s&&(a=[a]);let c=!1;for(var h=0;h<a.length;++h){const e=ve(n,a[h]);if(0===e)return!r.ignoreBoundary;e&&(c=!0)}return c}function ke(e,t,r={}){const n=we(e),i=function(e){if(Array.isArray(e))return e;if("Feature"===e.type){if(null!==e.geometry)return e.geometry.coordinates}else if(e.coordinates)return e.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}(t);for(let e=0;e<i.length-1;e++){let t=!1;if(r.ignoreEndVertices&&(0===e&&(t="start"),e===i.length-2&&(t="end"),0===e&&e+1===i.length-1&&(t="both")),Ee(i[e],i[e+1],n,t,void 0===r.epsilon?null:r.epsilon))return!0}return!1}function Ee(e,t,r,n,i){const s=r[0],o=r[1],a=e[0],c=e[1],h=t[0],u=t[1],l=h-a,p=u-c,d=(r[0]-a)*p-(r[1]-c)*l;if(null!==i){if(Math.abs(d)>i)return!1}else if(0!==d)return!1;return n?"start"===n?Math.abs(l)>=Math.abs(p)?l>0?a<s&&s<=h:h<=s&&s<a:p>0?c<o&&o<=u:u<=o&&o<c:"end"===n?Math.abs(l)>=Math.abs(p)?l>0?a<=s&&s<h:h<s&&s<=a:p>0?c<=o&&o<u:u<o&&o<=c:"both"===n&&(Math.abs(l)>=Math.abs(p)?l>0?a<s&&s<h:h<s&&s<a:p>0?c<o&&o<u:u<o&&o<c):Math.abs(l)>=Math.abs(p)?l>0?a<=s&&s<=h:h<=s&&s<=a:p>0?c<=o&&o<=u:u<=o&&o<=c}function xe(e,t){const r=Se(e),n=Se(t),i=r.type,s=n.type,o=r.coordinates,a=n.coordinates;switch(i){case"Point":if("Point"===s)return Pe(o,a);throw new Error("feature2 "+s+" geometry not supported");case"MultiPoint":switch(s){case"Point":return function(e,t){let r,n=!1;for(r=0;r<e.coordinates.length;r++)if(Pe(e.coordinates[r],t.coordinates)){n=!0;break}return n}(r,n);case"MultiPoint":return function(e,t){for(const r of t.coordinates){let t=!1;for(const n of e.coordinates)if(Pe(r,n)){t=!0;break}if(!t)return!1}return!0}(r,n);default:throw new Error("feature2 "+s+" geometry not supported")}case"LineString":switch(s){case"Point":return ke(n,r,{ignoreEndVertices:!0});case"LineString":return function(e,t){let r=!1;for(const n of t.coordinates)if(ke({type:"Point",coordinates:n},e,{ignoreEndVertices:!0})&&(r=!0),!ke({type:"Point",coordinates:n},e,{ignoreEndVertices:!1}))return!1;return r}(r,n);case"MultiPoint":return function(e,t){let r=!1;for(const n of t.coordinates)if(ke(n,e,{ignoreEndVertices:!0})&&(r=!0),!ke(n,e))return!1;return!!r}(r,n);default:throw new Error("feature2 "+s+" geometry not supported")}case"Polygon":switch(s){case"Point":return _e(n,r,{ignoreBoundary:!0});case"LineString":return function(e,t){let r=!1,n=0;if(!Oe(be(e),be(t)))return!1;for(;n<t.coordinates.length-1;n++)if(_e({type:"Point",coordinates:(i=t.coordinates[n],s=t.coordinates[n+1],[(i[0]+s[0])/2,(i[1]+s[1])/2])},e,{ignoreBoundary:!0})){r=!0;break}var i,s;return r}(r,n);case"Polygon":return Te(r,n);case"MultiPoint":return function(e,t){for(const r of t.coordinates)if(!_e(r,e,{ignoreBoundary:!0}))return!1;return!0}(r,n);default:throw new Error("feature2 "+s+" geometry not supported")}case"MultiPolygon":if("Polygon"===s)return function(e,t){return e.coordinates.some((e=>Te({type:"Polygon",coordinates:e},t)))}(r,n);throw new Error("feature2 "+s+" geometry not supported");default:throw new Error("feature1 "+i+" geometry not supported")}}function Te(e,t){if("Feature"===e.type&&null===e.geometry)return!1;if("Feature"===t.type&&null===t.geometry)return!1;if(!Oe(be(e),be(t)))return!1;const r=Se(t).coordinates;for(const t of r)for(const r of t)if(!_e(r,e))return!1;return!0}function Oe(e,t){return!(e[0]>t[0]||e[2]<t[2]||e[1]>t[1]||e[3]<t[3])}function Pe(e,t){return e[0]===t[0]&&e[1]===t[1]}class Ce{constructor(e=[],t=Ae){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let e=(this.length>>1)-1;e>=0;e--)this._down(e)}push(e){this.data.push(e),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return;const e=this.data[0],t=this.data.pop();return this.length--,this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:r}=this,n=t[e];for(;e>0;){const i=e-1>>1,s=t[i];if(r(n,s)>=0)break;t[e]=s,e=i}t[e]=n}_down(e){const{data:t,compare:r}=this,n=this.length>>1,i=t[e];for(;e<n;){let n=1+(e<<1),s=t[n];const o=n+1;if(o<this.length&&r(t[o],s)<0&&(n=o,s=t[o]),r(s,i)>=0)break;t[e]=s,e=n}t[e]=i}}function Ae(e,t){return e<t?-1:e>t?1:0}function Re(e,t){return e.p.x>t.p.x?1:e.p.x<t.p.x?-1:e.p.y!==t.p.y?e.p.y>t.p.y?1:-1:1}function Me(e,t){return e.rightSweepEvent.p.x>t.rightSweepEvent.p.x?1:e.rightSweepEvent.p.x<t.rightSweepEvent.p.x?-1:e.rightSweepEvent.p.y!==t.rightSweepEvent.p.y?e.rightSweepEvent.p.y<t.rightSweepEvent.p.y?1:-1:1}class Le{constructor(e,t,r,n){this.p={x:e[0],y:e[1]},this.featureId=t,this.ringId=r,this.eventId=n,this.otherEvent=null,this.isLeftEndpoint=null}isSamePoint(e){return this.p.x===e.p.x&&this.p.y===e.p.y}}let je=0,Be=0,Ie=0;function De(e,t){const r="Feature"===e.type?e.geometry:e;let n=r.coordinates;"Polygon"!==r.type&&"MultiLineString"!==r.type||(n=[n]),"LineString"===r.type&&(n=[[n]]);for(let e=0;e<n.length;e++)for(let r=0;r<n[e].length;r++){let i=n[e][r][0],s=null;Be+=1;for(let o=0;o<n[e][r].length-1;o++){s=n[e][r][o+1];const a=new Le(i,je,Be,Ie),c=new Le(s,je,Be,Ie+1);a.otherEvent=c,c.otherEvent=a,Re(a,c)>0?(c.isLeftEndpoint=!0,a.isLeftEndpoint=!1):(a.isLeftEndpoint=!0,c.isLeftEndpoint=!1),t.push(a),t.push(c),i=s,Ie+=1}}je+=1}class qe{constructor(e){this.leftSweepEvent=e,this.rightSweepEvent=e.otherEvent}}function Ne(e,t){if(null===e||null===t)return!1;if(e.leftSweepEvent.ringId===t.leftSweepEvent.ringId&&(e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.leftSweepEvent)||e.rightSweepEvent.isSamePoint(t.rightSweepEvent)||e.leftSweepEvent.isSamePoint(t.leftSweepEvent)||e.leftSweepEvent.isSamePoint(t.rightSweepEvent)))return!1;const r=e.leftSweepEvent.p.x,n=e.leftSweepEvent.p.y,i=e.rightSweepEvent.p.x,s=e.rightSweepEvent.p.y,o=t.leftSweepEvent.p.x,a=t.leftSweepEvent.p.y,c=t.rightSweepEvent.p.x,h=t.rightSweepEvent.p.y,u=(h-a)*(i-r)-(c-o)*(s-n);if(0===u)return!1;const l=((c-o)*(n-a)-(h-a)*(r-o))/u,p=((i-r)*(n-a)-(s-n)*(r-o))/u;return l>=0&&l<=1&&p>=0&&p<=1&&[r+l*(i-r),n+l*(s-n)]}var Fe=function(e,t){const r=new Ce([],Re);return function(e,t){if("FeatureCollection"===e.type){const r=e.features;for(let e=0;e<r.length;e++)De(r[e],t)}else De(e,t)}(e,r),function(e,t){t=t||!1;const r=[],n=new Ce([],Me);for(;e.length;){const i=e.pop();if(i.isLeftEndpoint){const e=new qe(i);for(let s=0;s<n.data.length;s++){const o=n.data[s];if(t&&o.leftSweepEvent.featureId===i.featureId)continue;const a=Ne(e,o);!1!==a&&r.push(a)}n.push(e)}else!1===i.isLeftEndpoint&&n.pop()}return r}(r,t)};function Ue(e,t,r={}){const{removeDuplicates:n=!0,ignoreSelfIntersections:i=!1}=r;let s=[];"FeatureCollection"===e.type?s=s.concat(e.features):"Feature"===e.type?s.push(e):"LineString"!==e.type&&"Polygon"!==e.type&&"MultiLineString"!==e.type&&"MultiPolygon"!==e.type||s.push(pe(e)),"FeatureCollection"===t.type?s=s.concat(t.features):"Feature"===t.type?s.push(t):"LineString"!==t.type&&"Polygon"!==t.type&&"MultiLineString"!==t.type&&"MultiPolygon"!==t.type||s.push(pe(t));const o=Fe(fe(s),i);let a=[];if(n){const e={};o.forEach((t=>{const r=t.join(",");e[r]||(e[r]=!0,a.push(t))}))}else a=o;return fe(a.map((e=>function(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!ge(e[0])||!ge(e[1]))throw new Error("coordinates must contain numbers");return pe({type:"Point",coordinates:e},t,r)}(e))))}function Ve(e,t={}){const r=Se(e);switch(t.properties||"Feature"!==e.type||(t.properties=e.properties),r.type){case"Polygon":return function(e,t={}){return We(Se(e).coordinates,t.properties?t.properties:"Feature"===e.type?e.properties:{})}(r,t);case"MultiPolygon":return function(e,t={}){const r=Se(e).coordinates,n=t.properties?t.properties:"Feature"===e.type?e.properties:{},i=[];return r.forEach((e=>{i.push(We(e,n))})),fe(i)}(r,t);default:throw new Error("invalid poly")}}function We(e,t){return e.length>1?function(e,t,r={}){return pe({type:"MultiLineString",coordinates:e},t,r)}(e,t):function(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return pe({type:"LineString",coordinates:e},t,r)}(e[0],t)}function ze(e,t){for(let r=0;r<e.coordinates.length-1;r++)if($e(e.coordinates[r],e.coordinates[r+1],t.coordinates))return!0;return!1}function He(e,t,r){for(const r of t.coordinates)if(_e(r,e))return!0;return Ue(t,Ve(e),{ignoreSelfIntersections:r}).features.length>0}function $e(e,t,r){const n=r[0]-e[0],i=r[1]-e[1],s=t[0]-e[0],o=t[1]-e[1];return 0==n*o-i*s&&(Math.abs(s)>=Math.abs(o)?s>0?e[0]<=r[0]&&r[0]<=t[0]:t[0]<=r[0]&&r[0]<=e[0]:o>0?e[1]<=r[1]&&r[1]<=t[1]:t[1]<=r[1]&&r[1]<=e[1])}function Ge(e,t,r={}){var n;const i=null!=(n=r.ignoreSelfIntersections)&&n;let s=!1;return ye(e,(e=>{ye(t,(t=>{if(!0===s)return!0;s=!function(e,t,r={}){var n;const i=null!=(n=r.ignoreSelfIntersections)&&n;let s=!0;return ye(e,(e=>{ye(t,(t=>{if(!1===s)return!1;s=function(e,t,r){switch(e.type){case"Point":switch(t.type){case"Point":return n=e.coordinates,i=t.coordinates,!(n[0]===i[0]&&n[1]===i[1]);case"LineString":return!ze(t,e);case"Polygon":return!_e(e,t)}break;case"LineString":switch(t.type){case"Point":return!ze(e,t);case"LineString":return!function(e,t,r){return Ue(e,t,{ignoreSelfIntersections:r}).features.length>0}(e,t,r);case"Polygon":return!He(t,e,r)}break;case"Polygon":switch(t.type){case"Point":return!_e(t,e);case"LineString":return!He(e,t,r);case"Polygon":return!function(e,t,r){for(const r of e.coordinates[0])if(_e(r,t))return!0;for(const r of t.coordinates[0])if(_e(r,e))return!0;return Ue(Ve(e),Ve(t),{ignoreSelfIntersections:r}).features.length>0}(t,e,r)}}var n,i;return!1}(e.geometry,t.geometry,i)}))})),s}(e.geometry,t.geometry,{ignoreSelfIntersections:i})}))})),s}const Je=(e,t)=>{const{origWidth:r,origHeight:n}=t,i=e.points.map((([e,t])=>[e*r/100,t*n/100]));return i.length>0&&!Ye(i[0],i[i.length-1])&&i.push(i[0]),{...e,points:i}},Ye=(e,t)=>e[0]===t[0]&&e[1]===t[1],Ke=e=>{const{origWidth:t,origHeight:r,inputWidth:n,inputHeight:i}=e;let[s,o,a,c]=e.boundingBox;return s=s*t/n,o=o*r/i,a=a*t/n,c=c*r/i,s=Math.max(0,Math.min(s,t)),o=Math.max(0,Math.min(o,r)),a=Math.max(0,Math.min(a,t)),c=Math.max(0,Math.min(c,r)),{...e,boundingBox:[s,o,a,c]}},Qe=(e,t,r)=>{if(e.confidence<r.object.confidence)return!1;if(0===t.length)return!0;const[n,i,s,o]=e.boundingBox,a=function(e,t={}){const r=Number(e[0]),n=Number(e[1]),i=Number(e[2]),s=Number(e[3]);if(6===e.length)throw new Error("@turf/bbox-polygon does not support BBox with 6 positions");const o=[r,n];return de([[o,[i,n],[i,s],[r,s],o]],t.properties,{bbox:e,id:t.id})}([n,i,s,o]);for(const r of t){const t=Je(r,e),n=de([t.points]);if(t.classes.length>0&&!t.classes.includes(e.label))continue;const i=Ge(a,n),s=xe(n,a);if(t.isPrivacyMask){if(i||s)return!1}else if("include"===t.filter){if("contain"===t.type){if(s)return!0}else if("intersect"===t.type&&(i||s))return!0}else if("exclude"===t.filter)if("contain"===t.type){if(!s)return!0}else if("intersect"===t.type&&!i&&!s)return!0}return!1};class Xe extends o{logger;snapshotCache;cameraSubject;cameraState=new Y(!1);lightState=new Y(this.getLightState({state:!1},!0));motionState=new Y(this.getMotionState({detections:[],state:!1},!0));audioState=new Y(this.getAudioState({state:!1,db:0},!0));objectState=new Y(this.getObjectState({detections:[]},!0));doorbellState=new Y(this.getDoorbellState({state:!1},!0));sirenState=new Y(this.getSirenState({state:!1,level:0},!0));batteryState=new Y(this.getBatteryState({level:100,charging:!1,lowBattery:!1},!0));onConnected=this.createStateObservable(this.cameraState);onLightSwitched=this.createStateObservable(this.lightState);onMotionDetected=this.createStateObservable(this.motionState);onAudioDetected=this.createStateObservable(this.audioState);onObjectDetected=this.createStateObservable(this.objectState);onDoorbellPressed=this.createStateObservable(this.doorbellState);onSirenDetected=this.createStateObservable(this.sirenState);onBatteryChanged=this.createStateObservable(this.batteryState);get cameraObject(){return c(this.cameraSubject.getValue())}get id(){return this.cameraSubject.getValue()._id}get nativeId(){return this.cameraSubject.getValue().nativeId}get pluginId(){return this.cameraSubject.getValue().pluginId}get connected(){return this.cameraState.getValue()}get disabled(){return this.cameraSubject.getValue().disabled}get name(){return this.cameraSubject.getValue().name}get type(){return this.cameraSubject.getValue().type}get info(){return c(this.cameraSubject.getValue().info)}get isCloud(){return this.cameraSubject.getValue().isCloud}get hasLight(){return this.cameraSubject.getValue().hasLight}get hasSiren(){return this.cameraSubject.getValue().hasSiren}get hasBinarySensor(){return this.cameraSubject.getValue().hasBinarySensor}get hasBattery(){return this.cameraSubject.getValue().hasBattery}get hasMotionDetector(){return this.cameraSubject.getValue().hasMotionDetector}get hasAudioDetector(){return this.cameraSubject.getValue().hasAudioDetector}get hasObjectDetector(){return this.cameraSubject.getValue().hasObjectDetector}get hasPtz(){return this.cameraSubject.getValue().hasPtz}get hasPrebuffer(){return this.cameraSubject.getValue().hasPrebuffer}get snapshotTTL(){return this.cameraSubject.getValue().snapshotTTL}get activityZones(){return c(this.cameraSubject.getValue().activityZones)}get activitySettings(){return c(this.cameraSubject.getValue().activitySettings)}get frameWorkerSettings(){return c(this.cameraSubject.getValue().frameWorkerSettings)}get streamSource(){return this.highResolutionSource||this.midResolutionSource||this.lowResolutionSource}get snapshotSource(){return this.sources.find((e=>e.roles.includes("snapshot")&&!e.internal))}get highResolutionSource(){return this.sources.find((e=>e.roles.includes("high-resolution")&&!e.internal))}get midResolutionSource(){return this.sources.find((e=>e.roles.includes("mid-resolution")&&!e.internal))}get lowResolutionSource(){return this.sources.find((e=>e.roles.includes("low-resolution")&&!e.internal))}get ptz(){return this.ptzDelegate}constructor(e,t){super(),this.logger=t,this.cameraSubject=new Y(e),this.updateCamera(e),this.snapshotCache=new(u())({max:100,ttl:1e3*this.snapshotTTL}),"native"===e.pluginId&&this.cameraState.next(!0)}getValue(e){switch(e){case"light":return c(this.lightState.getValue());case"motion":return c(this.motionState.getValue());case"audio":return c(this.audioState.getValue());case"object":return c(this.objectState.getValue());case"doorbell":return c(this.doorbellState.getValue());case"siren":return c(this.sirenState.getValue());case"battery":return c(this.batteryState.getValue());default:throw new Error(`Unknown state: ${e}`)}}async snapshot(e){this.snapshotCache.purgeStale();const t=this.snapshotSource||this.streamSource,r=t.urls.www.jpegSnapshot,n=this.snapshotCache.get(t._id);if(!e&&n)return this.logger.trace(this.name,"Snapshot requested (cached)"),n;this.logger.trace(this.name,"Snapshot requested (fetching)");try{if("native"!==this.cameraObject.pluginId){const e=await this.cameraDelegate.snapshot();if(e&&e.byteLength>0)return this.snapshotCache.set(t._id,e),e}const e=new AbortController,n=setTimeout((()=>e.abort()),5e3),i=await fetch(r,{signal:e.signal});if(clearTimeout(n),!i.ok)throw new Error("Status Code: "+i.status);const s=await i.arrayBuffer();return s.byteLength>0&&this.snapshotCache.set(t._id,s),s}catch{return}}onStateChange(e){return this[`${e}State`].pipe(te(),re((([t,r])=>"boolean"==typeof t||"boolean"==typeof r?t!==r:this.stateChanged(t,r,e))),ne((([e,t])=>({oldState:e,newState:t}))),ce({connector:()=>new Q(1)}))}onPropertyChange(e){return this.cameraSubject.pipe(te(),ue((([t,r])=>(Array.isArray(e)?e:[e]).map((e=>({property:e,oldData:t[e],newData:r[e]}))))),re((({oldData:e,newData:t})=>!a(e,t,!0))),ce({connector:()=>new Q(1)}))}removeAllListeners(){this.lightState.complete(),this.motionState.complete(),this.audioState.complete(),this.objectState.complete(),this.doorbellState.complete(),this.sirenState.complete(),this.batteryState.complete(),this.cameraSubject.complete(),this.cameraState.complete()}updateCamera(e){e.snapshotTTL!==this.snapshotTTL&&this.snapshotCache.clear(),this.cameraSubject.next(e)}updateCameraState(e){this.cameraState.next(e)}updateStateInternal(e,t,r,n){let i,s=!1;if(r)s=!0,i=t;else{const r=this.checkStateInternal(e,t,n);s=r.changed,i=r.event}if(s)switch(e){case"light":this.lightState.next(this.getLightState(i));break;case"motion":this.motionState.next(this.getMotionState(i));break;case"audio":this.audioState.next(this.getAudioState(i));break;case"object":this.objectState.next(this.getObjectState(i));break;case"doorbell":this.doorbellState.next(this.getDoorbellState(i));break;case"siren":this.sirenState.next(this.getSirenState(i));break;case"battery":this.batteryState.next(this.getBatteryState(i));break;default:throw new Error(`Unknown state: ${e}`)}}checkStateInternal(e,t,r){let n,i=!1;switch(e){case"audio":const s=t;n=this.getAudioState(s),i=this.stateChanged(this.getValue("audio"),n,"audio");break;case"light":const o=t;n=this.getLightState(o),i=this.stateChanged(this.getValue("light"),n,"light");break;case"motion":const a=t;void 0!==a.state&&(a.detections=[]),r||(a.detections=function(e,t=.2){if(0===e.length)return[];const r=e.map((e=>e.boundingBox)),n=e.map((e=>e.confidence)),i=n.map(((e,t)=>({conf:e,idx:t}))).sort(((e,t)=>t.conf-e.conf)).map((e=>e.idx)),s=[],o=new Array(e.length).fill(!1);for(const a of i){if(o[a])continue;const i=r[a],c={...e[a]},h=r.map((e=>le(i,e))).map((e=>e>t)).map(((e,t)=>({overlap:e,idx:t}))).filter((e=>e.overlap&&!o[e.idx])).map((e=>e.idx));if(h.length>1){const t=h.map((e=>r[e])),i=[Math.min(...t.map((e=>e[0]))),Math.min(...t.map((e=>e[1]))),Math.max(...t.map((e=>e[2]))),Math.max(...t.map((e=>e[3])))],s=e[h.reduce(((e,t)=>n[t]>n[e]?t:e))];c.id=s.id||c.id||"motion",c.boundingBox=i,c.confidence=Math.max(...h.map((e=>n[e]))),h.forEach((e=>{o[e]=!0})),o[a]=!1}s.push(c)}return s}(a.detections),a.detections=((e,t,r)=>{const n=[];for(const i of e)Qe(Ke(i),t,r)&&t.some((e=>!e.classes.length||e.classes.includes(i.label)))&&n.push(i);return n})(a.detections,this.activityZones,this.activitySettings)),n=this.getMotionState(a),i=this.stateChanged(this.getValue("motion"),n,"motion");break;case"object":const c=t;r||(c.detections=((e,t,r)=>{const n=[];for(const i of e){const e=Ke(i);Qe(e,t,r)&&t.some((e=>!e.classes.length||e.classes.includes(i.label)))&&n.push(e)}return n})(c.detections,this.activityZones,this.activitySettings)),n=this.getObjectState(c),i=this.stateChanged(this.getValue("object"),n,"object");break;case"doorbell":const h=t;n=this.getDoorbellState(h),i=this.stateChanged(this.getValue("doorbell"),n,"doorbell");break;case"siren":const u=t;n=this.getSirenState(u),i=this.stateChanged(this.getValue("siren"),n,"siren");break;case"battery":const l=t;n=this.getBatteryState(l),i=this.stateChanged(this.getValue("battery"),n,"battery");break;default:throw new Error(`Unknown state: ${e}`)}return{changed:i,event:n}}stateChanged(e,t,r){if(!e||!t||!r)return!1;if("audio"==r){if(!this.hasAudioDetector)return!1;const r=e,n=t;return r.state!==n.state||r.db!==n.db}if("motion"==r){if(!this.hasMotionDetector)return!1;const r=e,n=t;return void 0!==n.state?r.state!==n.state:!a(r.detections,n.detections,!0)}if("object"==r){if(!this.hasObjectDetector)return!1;const r=t;return!a(e.detections,r.detections,!0)}if("siren"==r){if(!this.hasSiren)return!1;const r=e,n=t;return r.state!==n.state||r.level!==n.level}if("battery"==r){if(!this.hasBattery)return!1;const r=e,n=t;return r.level!==n.level||r.lowBattery!==n.lowBattery||r.charging!==n.charging}if("doorbell"==r){if(!this.hasBinarySensor)return!1;const r=t;return e.state!==r.state}if("light"==r){if(!this.hasLight)return!1;const r=t;return e.state!==r.state}return!1}getAudioState(e,t=!1){let r,n;if(!t){const e=this.getValue("audio");e.state?r=e:e.lastEvent?.state&&(r=e.lastEvent),r&&delete r.lastEvent}if(this.isStateEvent(e))n=e;else{const t={...e,timestamp:Date.now()};n={...t,db:t.db||r?.db||0,lastEvent:r||(t.state?t:void 0)}}return n}getMotionState(e,t=!1){let r,n;if(!t){const e=this.getValue("motion");e.detections.length?r=e:e.lastEvent?.detections.length&&(r=e.lastEvent),r&&delete r.lastEvent}if(this.isStateEvent(e))n=e;else{const t={...e,timestamp:Date.now()};n={...t,lastEvent:r||(t.detections.length?t:void 0)}}return n}getObjectState(e,t=!1){let r,n;if(!t){const e=this.getValue("object");e.detections.length?r=e:e.lastEvent?.detections.length&&(r=e.lastEvent),r&&delete r.lastEvent}if(this.isStateEvent(e))n=e;else{const t={...e,timestamp:Date.now()};n={...t,lastEvent:r||(t.detections.length?t:void 0)}}return n}getDoorbellState(e,t=!1){let r,n;if(!t){const e=this.getValue("doorbell");e.state?r=e:e.lastEvent?.state&&(r=e.lastEvent),r&&delete r.lastEvent}if(this.isStateEvent(e))n=e;else{const t={...e,timestamp:Date.now()};n={...t,lastEvent:r||(t.state?t:void 0)}}return n}getLightState(e,t=!1){let r,n;if(!t){const e=this.getValue("light");e.state?r=e:e.lastEvent?.state&&(r=e.lastEvent),r&&delete r.lastEvent}if(this.isStateEvent(e))n=e;else{const t={...e,timestamp:Date.now()};n={...t,lastEvent:r||(t.state?t:void 0)}}return n}getSirenState(e,t=!1){let r,n;if(!t){const e=this.getValue("siren");e.state?r=e:e.lastEvent?.state&&(r=e.lastEvent),r&&delete r.lastEvent}if(this.isStateEvent(e))n=e;else{const t={...e,timestamp:Date.now()};n={...t,level:t.level||r?.level||0,lastEvent:r||(t.state?t:void 0)}}return n}getBatteryState(e,t=!1){let r,n;if(!t){const t=this.getValue("battery");this.stateChanged(t,e,"battery")?r=t:t.lastEvent&&this.stateChanged(t.lastEvent,e,"battery")&&(r=t.lastEvent),r&&delete r.lastEvent}if(this.isStateEvent(e))n=e;else{const t={...e,timestamp:Date.now()};n={...t,charging:e.charging||r?.charging||!1,lowBattery:e.lowBattery||r?.lowBattery||!1,lastEvent:r||t}}return n}isStateEvent(e){return"timestamp"in e}createStateObservable(e){return e.pipe(ce({connector:()=>new Q(1)}))}}class Ze{delegate;onRequest;constructor(e){this.onRequest=e}async snapshot(){return this.delegate?this.delegate.snapshot():this._onRequest("snapshot",[],5e3)}_onRequest(e,t,r){return this.onRequest("cameraDelegate",e,t,r)}}class et{delegate;onRequest;constructor(e){this.onRequest=e}async getPrebufferingState(e,t){return this.delegate?this.delegate.getPrebufferingState(e,t):this._onRequest("prebufferDelegate","getPrebufferingState",[e,t])}_onRequest(e,t,r,n){return this.onRequest(e,t,r,n)}}class tt{delegate;onRequest;constructor(e){this.onRequest=e}async moveAbsolute(e,t,r){return this.delegate?this.delegate.moveAbsolute(e,t,r):this._onRequest("moveAbsolute",[e,t,r])}async moveRelative(e,t,r){return this.delegate?this.delegate.moveRelative(e,t,r):this._onRequest("moveRelative",[e,t,r])}async moveContinuous(e,t,r){return this.delegate?this.delegate.moveContinuous(e,t,r):this._onRequest("moveContinuous",[e,t,r])}async stop(){return this.delegate?this.delegate.stop():this._onRequest("stop",[])}_onRequest(e,t,r){return this.onRequest("ptzDelegate",e,t,r)}}const rt=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}));class nt extends EventTarget{cameraDevice;socketService;logger;options;videoPlayer;socket;streamId;hasBackchannel=!1;hasAudio=!0;closed=!1;micTransceiver=null;pc=null;buf=new Uint8Array(2097152);mediaSource=null;sourceBuffer=null;bufLen=0;mseCodecs="";videoPlayerMp4;media=["video","audio","microphone"];codecList=[];reconnectTimeout;_finishLoading=!1;_firstFrameReceived=!1;animationFrameId;get mode(){return this.options.mode}webrtcReconnectTimeout;constructor(e,t,r,n){super(),this.options=n,this.videoPlayer=n.videoElement,this.cameraDevice=e,this.socketService=t,this.logger=r;const{socket:i}=this.socketService.getSocket(`${e.id}-go2rtcSession`,!0);this.socket=i,this.socket.connect(),this.streamId=rt(),this.createCodecsList()}connect(e){e&&(this.options.mode=e),console.log(this.cameraDevice.name,`Connecting... (${this.options.mode})`),this.socket.on("ws-open",this.onWsOpen.bind(this)),this.socket.on("ws-close",this.onWsClose.bind(this)),this.socket.on("ws-message",this.onWsMessage.bind(this)),this.socket.emit("ws-open",{id:this.streamId,cameraSource:this.options.sourceName,mode:this.options.mode})}disconnect(){console.log(this.cameraDevice.name,"Disconnecting..."),this.socket.removeListener("ws-open",this.onWsOpen.bind(this)),this.socket.removeListener("ws-close",this.onWsClose.bind(this)),this.socket.removeListener("ws-message",this.onWsMessage.bind(this)),this.socket.emit("ws-close",{id:this.streamId})}async reconnect(e){console.log(this.cameraDevice.name,"Reconnecting..."),this.dispatchEvent(new Event("reconnect")),this.close(),await new Promise((e=>setTimeout(e,100))),this.connect(e)}reset(){this._finishLoading=!1,this._firstFrameReceived=!1,this.pc?.getTransceivers().forEach((e=>e.sender?.track?.stop())),this.pc?.close(),this.pc=null,this.videoPlayerMp4?.remove(),this.videoPlayerMp4=void 0,this.videoPlayer.srcObject=null,this.videoPlayer.src="",this.videoPlayer.poster="",void 0!==this.animationFrameId&&("cancelVideoFrameCallback"in this.videoPlayer?this.videoPlayer.cancelVideoFrameCallback(this.animationFrameId):cancelAnimationFrame(this.animationFrameId),this.animationFrameId=void 0)}close(){console.log(this.cameraDevice.name,"Closing..."),this.closed=!0,this.reset(),this.disconnect(),this.socket.emit("end"),this.socket.removeAllListeners()}onWsOpen({id:e}){if(e===this.streamId)switch(console.log(this.cameraDevice.name,"Connected"),this.options.mode){case"webrtc":case"webrtc/tcp":console.log(this.cameraDevice.name,"Requesting WebRTC session..."),this.requestWebrtc();break;case"mse":console.log(this.cameraDevice.name,"Requesting MSE session..."),this.requestMse();break;case"hls":console.log(this.cameraDevice.name,"Requesting HLS session..."),this.requestHls();break;case"mp4":console.log(this.cameraDevice.name,"Requesting MP4 session..."),this.requestMp4();break;case"mjpeg":console.log(this.cameraDevice.name,"Requesting MJPEG session..."),this.requestMjpeg();break;default:console.log(this.cameraDevice.name,"Unknown mode:",this.options.mode),this.dispatchEvent(new ErrorEvent("error",{message:"Unknown mode: "+this.options.mode}))}}onWsClose({id:e}){e===this.streamId&&(this.closed||void 0===this.options.reconnectInterval||(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=setTimeout((()=>{this.reconnect()}),this.options.reconnectInterval)))}onWsMessage({id:e,data:t}){if(e===this.streamId&&t.type){switch(t.type){case"mse":this.onMseData(t);break;case"hls":this.onHlsData(t);break;case"webrtc/candidate":case"webrtc/answer":this.onWebrtcData(t);break;case"mse-binary":this.onMseBuffer(t);break;case"mjpeg-binary":this.onMjpegBuffer(t);break;case"mp4-binary":this.onMp4Buffer(t);break;case"stream-info":this.onStreamInfo(t);break;case"error":this.dispatchEvent(new ErrorEvent("error",{error:t,message:t.value}))}!this._firstFrameReceived&&["mse-binary","mjpeg-binary","mp4-binary"].includes(t.type)&&this.onFirstFrame()}}async requestWebrtc(){this.reset(),this.pc=new RTCPeerConnection({bundlePolicy:"max-bundle",iceServers:[{urls:"stun:stun.l.google.com:19302"}],sdpSemantics:"unified-plan"}),this.pc.onicecandidate=e=>{if(console.log(this.cameraDevice.name,"onicecandidate",e.candidate),"webrtc/tcp"===this.options.mode&&"udp"===e.candidate?.protocol)return;const t=e.candidate?.toJSON().candidate||"";this.socket.emit("stream-payload",{id:this.streamId,data:{type:"webrtc/candidate",value:t}})},this.pc.onconnectionstatechange=()=>{if(console.log(this.cameraDevice.name,"onconnectionstatechange:",this.pc?.connectionState),"connected"===this.pc?.connectionState){const e=this.pc?.getTransceivers().filter((e=>"recvonly"===e.currentDirection)).map((e=>e.receiver.track));this.videoPlayer.srcObject=new MediaStream(e),this.onFinishLoading(),this.play(),this.disconnect()}else"failed"!==this.pc?.connectionState&&"disconnected"!==this.pc?.connectionState||(clearTimeout(this.webrtcReconnectTimeout),this.webrtcReconnectTimeout=setTimeout((()=>{"failed"!==this.pc?.connectionState&&"disconnected"!==this.pc?.connectionState||this.reconnect()}),1e3))},this.pc.oniceconnectionstatechange=()=>{console.log(this.cameraDevice.name,"iceconnectionstatechange",this.pc?.iceConnectionState)},this.pc.onicecandidateerror=e=>{console.log(this.cameraDevice.name,"onicecandidateerror",e)},this.pc.onsignalingstatechange=()=>{console.log(this.cameraDevice.name,"onsignalingstatechange",this.pc?.signalingState)},this.pc.onicegatheringstatechange=()=>{console.log(this.cameraDevice.name,"onicegatheringstatechange",this.pc?.iceGatheringState)},this.pc.onnegotiationneeded=e=>{console.log(this.cameraDevice.name,"onnegotiationneeded",e)},this.pc.addTransceiver("video",{direction:"recvonly"}),this.pc.addTransceiver("audio",{direction:"recvonly"}),this.micTransceiver=this.pc.addTransceiver("audio",{direction:"sendonly"});const e=await this.pc.createOffer();await this.pc.setLocalDescription(e),console.log(this.cameraDevice.name,"Offer:",e.sdp),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"webrtc/offer",value:e.sdp}})}async onWebrtcData(e){try{switch(e.type){case"webrtc/candidate":if(console.log(this.cameraDevice.name,"remote candidate:",e.value),"webrtc/tcp"===this.options.mode&&e.value.indexOf(" udp ")>0)return;await(this.pc?.addIceCandidate({candidate:e.value,sdpMid:"0"}));break;case"webrtc/answer":if(console.log(this.cameraDevice.name,"Answer:",e.value),await(this.pc?.setRemoteDescription({type:"answer",sdp:e.value})),!this._firstFrameReceived&&this.pc){const e=this.pc.getReceivers().find((e=>"video"===e.track.kind))?.track;if(e)if("requestVideoFrameCallback"in e)this.animationFrameId=e.requestVideoFrameCallback((()=>{this.onFirstFrame()}));else{const e=()=>{this.videoPlayer.readyState>=2&&this.videoPlayer.videoWidth>0?this.onFirstFrame():this.animationFrameId=requestAnimationFrame(e)};this.animationFrameId=requestAnimationFrame(e)}}break;case"error":if(console.log(this.cameraDevice.name,"WebRTC Error:",e.value),e.value.indexOf("webrtc/offer")<0)return;this.pc?.close()}}catch(e){this.dispatchEvent(new ErrorEvent("error",{error:e,message:e.message}))}}requestMse(){if(this.reset(),"ManagedMediaSource"in window){console.log(this.cameraDevice.name,"Using ManagedMediaSource");const e=window.ManagedMediaSource;this.mediaSource=new e,this.mediaSource.addEventListener("sourceopen",(()=>{this.socket.emit("stream-payload",{id:this.streamId,data:{type:"mse",value:this.parseCodecs(e.isTypeSupported)}})}),{once:!0}),this.videoPlayer.disableRemotePlayback=!0,this.videoPlayer.srcObject=this.mediaSource}else console.log(this.cameraDevice.name,"Using MediaSource"),this.mediaSource=new MediaSource,this.mediaSource.addEventListener("sourceopen",(()=>{URL.revokeObjectURL(this.videoPlayer.src),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"mse",value:this.parseCodecs(MediaSource.isTypeSupported)}})}),{once:!0}),this.videoPlayer.src=URL.createObjectURL(this.mediaSource),this.videoPlayer.srcObject=null;this.play(),this.mseCodecs=""}onMseData(e){this.mediaSource&&(this.mseCodecs=e.value,this.bufLen=0,this.buf=new Uint8Array(2097152),this.sourceBuffer=this.mediaSource.addSourceBuffer(e.value),this.sourceBuffer.mode="segments",this.sourceBuffer.addEventListener("updateend",(()=>{if(!this.sourceBuffer?.updating)try{if(this.bufLen>0){const e=this.buf.slice(0,this.bufLen);this.bufLen=0,this.sourceBuffer?.appendBuffer(e)}else if(this.sourceBuffer?.buffered?.length){const e=this.sourceBuffer.buffered.end(this.sourceBuffer.buffered.length-1)-15,t=this.sourceBuffer.buffered.start(0);e>t&&(this.sourceBuffer.remove(t,e),this.mediaSource?.setLiveSeekableRange(e,e+15))}}catch{}})))}async onMseBuffer(e){if("closed"!==this.mediaSource?.readyState)if(this.onFinishLoading(),this.sourceBuffer?.updating||this.bufLen>0){const t=new Uint8Array(e.value);this.buf.set(t,this.bufLen),this.bufLen+=t.byteLength}else try{this.sourceBuffer?.appendBuffer(e.value)}catch{}else this.closed||(this.closed=!0,this.dispatchEvent(new ErrorEvent("error",{message:"MediaSource closed"})),this.options.mode="webrtc",this.requestWebrtc())}requestMjpeg(){this.reset(),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"mjpeg"}})}onMjpegBuffer(e){this.videoPlayer.controls=!1,this.videoPlayer.poster="data:image/jpeg;base64,"+this.btoaBinary(e.value),this.onFinishLoading()}requestMp4(){this.reset();const e=document.createElement("canvas");let t=null;this.videoPlayerMp4=document.createElement("video"),this.videoPlayerMp4.autoplay=!0,this.videoPlayerMp4.playsInline=!0,this.videoPlayerMp4.muted=!0,this.videoPlayerMp4.addEventListener("loadeddata",(()=>{this.videoPlayerMp4&&(t||(e.width=this.videoPlayerMp4.videoWidth,e.height=this.videoPlayerMp4.videoHeight,t=e.getContext("2d")),t?.drawImage(this.videoPlayerMp4,0,0,e.width,e.height),this.videoPlayer.controls=!1,this.videoPlayer.poster=e.toDataURL("image/jpeg"))}));const r=this.codecList.filter((e=>this.media.includes(e.indexOf("vc1")>0?"video":"audio"))).filter((e=>this.videoPlayer.canPlayType(`video/mp4; codecs="${e}"`))).join();console.log(this.cameraDevice.name,"Playable codecs (MP4):",r),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"mp4",value:r}})}onMp4Buffer(e){this.onFinishLoading(),this.videoPlayerMp4&&(this.videoPlayerMp4.src="data:video/mp4;base64,"+this.btoaBinary(e.value))}requestHls(){this.reset();const e=this.parseCodecs((e=>this.videoPlayer.canPlayType(e)));console.log(this.cameraDevice.name,"Playable codecs (HLS):",e),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"hls",value:e}})}onHlsData(e){const t="http"+e.wsURL.substring(2,e.wsURL.indexOf("/ws"))+"/hls/",r=e.value.replace("hls/",t),n="data:application/vnd.apple.mpegurl;base64,"+btoa(r.toString());this.videoPlayer.src=n,this.onFinishLoading(),this.play()}onStreamInfo(e){const t=e.value,r=t?.producers[0];r&&(this.hasBackchannel=r.senders?.some((e=>"audio"===e.codec.codec_type))||!1,this.hasAudio=r.receivers?.some((e=>"audio"===e.codec.codec_type))||!1)}async play(){try{await this.videoPlayer.play()}catch(e){if(!this.videoPlayer.muted)return this.videoPlayer.muted=!0,this.play();this.logger.warn(this.cameraDevice.name,e)}}onFirstFrame(){this._firstFrameReceived||(this._firstFrameReceived=!0,this.dispatchEvent(new Event("onFirstFrame")),console.log(this.cameraDevice.name,"First frame received"))}onFinishLoading(){this._finishLoading||(this._finishLoading=!0,this.dispatchEvent(new Event("onFinishLoading")))}createCodecsList(){const e=["avc1.640029","avc1.64002A","avc1.640033","hvc1.1.6.L153.B0","mp4a.40.2","mp4a.40.5","flac","opus"],t="undefined"==typeof window?null:navigator.userAgent.match(/Version\/(\d+).+Safari/);if(t?.[1]){const r=t[1]<"13"?"mp4a.40.2":t[1]<"14"?"flac":"opus";e.splice(e.indexOf(r))}this.codecList=e}parseCodecs(e){return this.codecList.filter((e=>this.media.includes(e.indexOf("vc1")>0?"video":"audio"))).filter((t=>e(`video/mp4; codecs="${t}"`))).join()}btoaBinary(e){const t=new Uint8Array(e),r=t.byteLength;let n="";for(let e=0;e<r;e++)n+=String.fromCharCode(t[e]);return window.btoa(n)}}class it extends Xe{socketService;socket;pluginName="@camera.ui/client";subject;_started=!1;get started(){return this._started}cameraDelegate=new Ze(this.onRequest.bind(this));ptzDelegate=new tt(this.onRequest.bind(this));prebufferDelegate=new et(this.onRequest.bind(this));get sources(){return this._sources.filter((e=>!e.internal))}get internalSources(){return this._sources.map((e=>({...e,type:e.name.endsWith(" AAC")?"aac":e.name.endsWith(" OPUS")?"opus":"pcma"}))).filter((e=>e.internal))}get _sources(){return JSON.parse(JSON.stringify(this.cameraSubject.getValue().sources)).map((e=>({...e,getPrebufferingState:t=>this.prebufferDelegate.getPrebufferingState(e.name,t),probeStream:(t=!1)=>this.onRequest("cameraFn","probeStream",[e._id,t])})))}constructor(e,t,r){super(e,r),this.socketService=t;const{socket:n}=this.socketService.getSocket(this.id,!0);this.socket=n,this.socket.connect(),this.subject=`${this.pluginName}.camera.${this.id}`,this.listenToMessages()}async start(){this._started||(this._started=!0,await this.refreshStates(),this.socket.emit("joinRoomStates",this.id))}stop(){this._started=!1,this.socket.emit("leaveRoomStates",this.id)}close(){this.cleanup()}connect(){return this.onRequest("cameraFn","connect")}disconnect(){return this.onRequest("cameraFn","disconnect")}createSession(e){return new nt(this,this.socketService,this.logger,e)}async refreshStates(){const e=await this.onRequest("cameraFn","refreshStates");super.updateCamera(e.camera),super.updateCameraState(e.cameraState);for(const[t,r]of Object.entries(e.states))super.updateStateInternal(t,r,!0)}async cleanup(){this.stop(),this.removeAllListeners(),this.unsubscribe(),this.socket.removeAllListeners()}listenToMessages(){this.socket.emit("joinRoomDevice",this.id),this.socket.on("updateState",(e=>{e.cameraId===this.id&&super.updateStateInternal(e.stateName,e.data.newEvent,!0)})),this.socket.on("updateDevice",(e=>{if(e.cameraId===this.id)switch(e.type){case"removed":this.cleanup();break;case"updated":super.updateCamera(e.data);break;case"cameraState":super.updateCameraState(e.data)}}))}onRequest(e,t,r=[]){const n={requestId:rt(),targetId:this.subject,targetName:this.name,pluginId:this.pluginName,cameraId:this.id,type:"request",proxy:"camera",client:e,fn:t,args:r,timestamp:Date.now(),timeout:5e3};return new Promise(((e,t)=>{this.socket.emit("request",n,(r=>{r.error?t(r.error):e(r.response)}))}))}}class st{socketService;socket;logger;pluginName="@camera.ui/client";subject;constructor(e,t){this.socketService=e,this.socket=e.socket,this.logger=t,this.subject=`${this.pluginName}.coreManager`}async getFFmpegPath(){return this.onRequest("getFFmpegPath")}async getHwaccelInfo(e){return this.onRequest("getHwaccelInfo",[e])}async getServerAddresses(){return this.onRequest("getServerAddresses")}async getIceServers(){return this.onRequest("getIceServers")}onRequest(e,t){const r={requestId:rt(),targetId:this.subject,targetName:this.pluginName,pluginId:this.pluginName,type:"request",proxy:"core",client:"coreFn",fn:e,args:t||[],timestamp:Date.now(),timeout:5e3};return new Promise(((e,t)=>{this.socket.emit("request",r,(r=>{r.error?t(r.error):e(r.response)}))}))}}class ot{socketService;socket;logger;pluginName="@camera.ui/client";subject;constructor(e,t){this.socketService=e,this.socket=e.socket,this.logger=t,this.subject=`${this.pluginName}.deviceManager`}async getCameraById(e){const t=await this.onRequest("getCameraById",[e]);if(t){const e=new it(t,this.socketService,this.logger);return await e.refreshStates(),e}}async getCameraByName(e){const t=await this.onRequest("getCameraByName",[e]);if(t){const e=new it(t,this.socketService,this.logger);return await e.refreshStates(),e}}onRequest(e,t){const r={requestId:rt(),targetId:this.subject,targetName:this.pluginName,pluginId:this.pluginName,type:"request",proxy:"device",client:"deviceFn",fn:e,args:t||[],timestamp:Date.now(),timeout:5e3};return new Promise(((e,t)=>{this.socket.emit("request",r,(r=>{r.error?t(r.error):e(r.response)}))}))}}const at=Object.create(null);at.open="0",at.close="1",at.ping="2",at.pong="3",at.message="4",at.upgrade="5",at.noop="6";const ct=Object.create(null);Object.keys(at).forEach((e=>{ct[at[e]]=e}));const ht={type:"error",data:"parser error"},ut="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),lt="function"==typeof ArrayBuffer,pt=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,dt=({type:e,data:t},r,n)=>ut&&t instanceof Blob?r?n(t):ft(t,n):lt&&(t instanceof ArrayBuffer||pt(t))?r?n(t):ft(new Blob([t]),n):n(at[e]+(t||"")),ft=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+(e||""))},r.readAsDataURL(e)};function gt(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let mt;const yt="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<64;e++)yt["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(e)]=e;const bt="function"==typeof ArrayBuffer,vt=(e,t)=>{if("string"!=typeof e)return{type:"message",data:St(e,t)};const r=e.charAt(0);return"b"===r?{type:"message",data:wt(e.substring(1),t)}:ct[r]?e.length>1?{type:ct[r],data:e.substring(1)}:{type:ct[r]}:ht},wt=(e,t)=>{if(bt){const r=(e=>{let t,r,n,i,s,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);const h=new ArrayBuffer(o),u=new Uint8Array(h);for(t=0;t<a;t+=4)r=yt[e.charCodeAt(t)],n=yt[e.charCodeAt(t+1)],i=yt[e.charCodeAt(t+2)],s=yt[e.charCodeAt(t+3)],u[c++]=r<<2|n>>4,u[c++]=(15&n)<<4|i>>2,u[c++]=(3&i)<<6|63&s;return h})(e);return St(r,t)}return{base64:!0,data:e}},St=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,_t=String.fromCharCode(30);let kt;function Et(e){return e.reduce(((e,t)=>e+t.length),0)}function xt(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let n=0;for(let i=0;i<t;i++)r[i]=e[0][n++],n===e[0].length&&(e.shift(),n=0);return e.length&&n<e[0].length&&(e[0]=e[0].slice(n)),r}function Tt(e){if(e)return function(e){for(var t in Tt.prototype)e[t]=Tt.prototype[t];return e}(e)}Tt.prototype.on=Tt.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},Tt.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},Tt.prototype.off=Tt.prototype.removeListener=Tt.prototype.removeAllListeners=Tt.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var i=0;i<n.length;i++)if((r=n[i])===t||r.fn===t){n.splice(i,1);break}return 0===n.length&&delete this._callbacks["$"+e],this},Tt.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],n=1;n<arguments.length;n++)t[n-1]=arguments[n];if(r){n=0;for(var i=(r=r.slice(0)).length;n<i;++n)r[n].apply(this,t)}return this},Tt.prototype.emitReserved=Tt.prototype.emit,Tt.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},Tt.prototype.hasListeners=function(e){return!!this.listeners(e).length};const Ot="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Pt="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Ct(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const At=Pt.setTimeout,Rt=Pt.clearTimeout;function Mt(e,t){t.useNativeTimers?(e.setTimeoutFn=At.bind(Pt),e.clearTimeoutFn=Rt.bind(Pt)):(e.setTimeoutFn=Pt.setTimeout.bind(Pt),e.clearTimeoutFn=Pt.clearTimeout.bind(Pt))}function Lt(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}class jt extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}}class Bt extends Tt{constructor(e){super(),this.writable=!1,Mt(this,e),this.opts=e,this.query=e.query,this.socket=e.socket,this.supportsBinary=!e.forceBase64}onError(e,t,r){return super.emitReserved("error",new jt(e,t,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=vt(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}(e);return t.length?"?"+t:""}}class It extends Bt{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this._polling||!this.writable){let e=0;this._polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const r=e.split(_t),n=[];for(let e=0;e<r.length;e++){const i=vt(r[e],t);if(n.push(i),"error"===i.type)break}return n})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this._polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this._poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,n=new Array(r);let i=0;e.forEach(((e,s)=>{dt(e,!1,(e=>{n[s]=e,++i===r&&t(n.join(_t))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=Lt()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}}let Dt=!1;try{Dt="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){}const qt=Dt;function Nt(){}class Ft extends It{constructor(e){if(super(e),"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port}}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}class Ut extends Tt{constructor(e,t,r){super(),this.createRequest=e,Mt(this,r),this._opts=r,this._method=r.method||"GET",this._uri=t,this._data=void 0!==r.data?r.data:null,this._create()}_create(){var e;const t=Ct(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this._opts.xd;const r=this._xhr=this.createRequest(t);try{r.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let e in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(e)&&r.setRequestHeader(e,this._opts.extraHeaders[e])}}catch(e){}if("POST"===this._method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{r.setRequestHeader("Accept","*/*")}catch(e){}null===(e=this._opts.cookieJar)||void 0===e||e.addCookies(r),"withCredentials"in r&&(r.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(r.timeout=this._opts.requestTimeout),r.onreadystatechange=()=>{var e;3===r.readyState&&(null===(e=this._opts.cookieJar)||void 0===e||e.parseCookies(r.getResponseHeader("set-cookie"))),4===r.readyState&&(200===r.status||1223===r.status?this._onLoad():this.setTimeoutFn((()=>{this._onError("number"==typeof r.status?r.status:0)}),0))},r.send(this._data)}catch(e){return void this.setTimeoutFn((()=>{this._onError(e)}),0)}"undefined"!=typeof document&&(this._index=Ut.requestsCount++,Ut.requests[this._index]=this)}_onError(e){this.emitReserved("error",e,this._xhr),this._cleanup(!0)}_cleanup(e){if(void 0!==this._xhr&&null!==this._xhr){if(this._xhr.onreadystatechange=Nt,e)try{this._xhr.abort()}catch(e){}"undefined"!=typeof document&&delete Ut.requests[this._index],this._xhr=null}}_onLoad(){const e=this._xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}function Vt(){for(let e in Ut.requests)Ut.requests.hasOwnProperty(e)&&Ut.requests[e].abort()}Ut.requestsCount=0,Ut.requests={},"undefined"!=typeof document&&("function"==typeof attachEvent?attachEvent("onunload",Vt):"function"==typeof addEventListener&&addEventListener("onpagehide"in Pt?"pagehide":"unload",Vt,!1));const Wt=function(){const e=zt({xdomain:!1});return e&&null!==e.responseType}();function zt(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||qt))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Pt[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}const Ht="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class $t extends Bt{get name(){return"websocket"}doOpen(){const e=this.uri(),t=this.opts.protocols,r=Ht?{}:Ct(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(e,t,r)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],n=t===e.length-1;dt(r,this.supportsBinary,(e=>{try{this.doWrite(r,e)}catch(e){}n&&Ot((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=Lt()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}}const Gt=Pt.WebSocket||Pt.MozWebSocket,Jt={websocket:class extends $t{createSocket(e,t,r){return Ht?new Gt(e,t,r):t?new Gt(e,t):new Gt(e)}doWrite(e,t){this.ws.send(t)}},webtransport:class extends Bt{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(e){return this.emitReserved("error",e)}this._transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this._transport.ready.then((()=>{this._transport.createBidirectionalStream().then((e=>{const t=function(e,t){kt||(kt=new TextDecoder);const r=[];let n=0,i=-1,s=!1;return new TransformStream({transform(o,a){for(r.push(o);;){if(0===n){if(Et(r)<1)break;const e=xt(r,1);s=!(128&~e[0]),i=127&e[0],n=i<126?3:126===i?1:2}else if(1===n){if(Et(r)<2)break;const e=xt(r,2);i=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),n=3}else if(2===n){if(Et(r)<8)break;const e=xt(r,8),t=new DataView(e.buffer,e.byteOffset,e.length),s=t.getUint32(0);if(s>Math.pow(2,21)-1){a.enqueue(ht);break}i=s*Math.pow(2,32)+t.getUint32(4),n=3}else{if(Et(r)<i)break;const e=xt(r,i);a.enqueue(vt(s?e:kt.decode(e),t)),n=0}if(0===i||i>e){a.enqueue(ht);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),n=new TransformStream({transform(e,t){!function(e,t){ut&&e.data instanceof Blob?e.data.arrayBuffer().then(gt).then(t):lt&&(e.data instanceof ArrayBuffer||pt(e.data))?t(gt(e.data)):dt(e,!1,(e=>{mt||(mt=new TextEncoder),t(mt.encode(e))}))}(e,(r=>{const n=r.length;let i;if(n<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,n);else if(n<65536){i=new Uint8Array(3);const e=new DataView(i.buffer);e.setUint8(0,126),e.setUint16(1,n)}else{i=new Uint8Array(9);const e=new DataView(i.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(n))}e.data&&"string"!=typeof e.data&&(i[0]|=128),t.enqueue(i),t.enqueue(r)}))}});n.readable.pipeTo(e.writable),this._writer=n.writable.getWriter();const i=()=>{r.read().then((({done:e,value:t})=>{e||(this.onPacket(t),i())})).catch((e=>{}))};i();const s={type:"open"};this.query.sid&&(s.data=`{"sid":"${this.query.sid}"}`),this._writer.write(s).then((()=>this.onOpen()))}))}))}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],n=t===e.length-1;this._writer.write(r).then((()=>{n&&Ot((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this._transport)||void 0===e||e.close()}},polling:class extends Ft{constructor(e){super(e);const t=e&&e.forceBase64;this.supportsBinary=Wt&&!t}request(e={}){return Object.assign(e,{xd:this.xd},this.opts),new Ut(zt,this.uri(),e)}}},Yt=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Kt=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function Qt(e){if(e.length>8e3)throw"URI too long";const t=e,r=e.indexOf("["),n=e.indexOf("]");-1!=r&&-1!=n&&(e=e.substring(0,r)+e.substring(r,n).replace(/:/g,";")+e.substring(n,e.length));let i=Yt.exec(e||""),s={},o=14;for(;o--;)s[Kt[o]]=i[o]||"";return-1!=r&&-1!=n&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=function(e,t){const r=t.replace(/\/{2,9}/g,"/").split("/");return"/"!=t.slice(0,1)&&0!==t.length||r.splice(0,1),"/"==t.slice(-1)&&r.splice(r.length-1,1),r}(0,s.path),s.queryKey=function(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,n){t&&(r[t]=n)})),r}(0,s.query),s}const Xt="function"==typeof addEventListener&&"function"==typeof removeEventListener,Zt=[];Xt&&addEventListener("offline",(()=>{Zt.forEach((e=>e()))}),!1);class er extends Tt{constructor(e,t){if(super(),this.binaryType="arraybuffer",this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,e&&"object"==typeof e&&(t=e,e=null),e){const r=Qt(e);t.hostname=r.host,t.secure="https"===r.protocol||"wss"===r.protocol,t.port=r.port,r.query&&(t.query=r.query)}else t.host&&(t.hostname=Qt(t.host).host);Mt(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},t.transports.forEach((e=>{const t=e.prototype.name;this.transports.push(t),this._transportsByName[t]=e})),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},r=e.split("&");for(let e=0,n=r.length;e<n;e++){let n=r[e].split("=");t[decodeURIComponent(n[0])]=decodeURIComponent(n[1])}return t}(this.opts.query)),Xt&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},Zt.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new this._transportsByName[e](r)}_open(){if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);const e=this.opts.rememberUpgrade&&er.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket")?"websocket":this.transports[0];this.readyState="opening";const t=this.createTransport(e);t.open(),this.setTransport(t)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",(e=>this._onClose("transport close",e)))}onOpen(){this.readyState="open",er.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush()}_onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const t=new Error("server error");t.code=e.data,this._onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this._pingInterval=e.pingInterval,this._pingTimeout=e.pingTimeout,this._maxPayload=e.maxPayload,this.onOpen(),"closed"!==this.readyState&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const e=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+e,this._pingTimeoutTimer=this.setTimeoutFn((()=>{this._onClose("ping timeout")}),e),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this._getWritablePackets();this.transport.send(e),this._prevBufferLen=e.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let r=0;r<this.writeBuffer.length;r++){const n=this.writeBuffer[r].data;if(n&&(e+="string"==typeof(t=n)?function(e){let t=0,r=0;for(let n=0,i=e.length;n<i;n++)t=e.charCodeAt(n),t<128?r+=1:t<2048?r+=2:t<55296||t>=57344?r+=3:(n++,r+=4);return r}(t):Math.ceil(1.33*(t.byteLength||t.size))),r>0&&e>this._maxPayload)return this.writeBuffer.slice(0,r);e+=2}var t;return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const e=Date.now()>this._pingTimeoutTime;return e&&(this._pingTimeoutTime=0,Ot((()=>{this._onClose("ping timeout")}),this.setTimeoutFn)),e}write(e,t,r){return this._sendPacket("message",e,t,r),this}send(e,t,r){return this._sendPacket("message",e,t,r),this}_sendPacket(e,t,r,n){if("function"==typeof t&&(n=t,t=void 0),"function"==typeof r&&(n=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const i={type:e,data:t,options:r};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),n&&this.once("flush",n),this.flush()}close(){const e=()=>{this._onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}_onError(e){if(er.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&"opening"===this.readyState)return this.transports.shift(),this._open();this.emitReserved("error",e),this._onClose("transport error",e)}_onClose(e,t){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),Xt&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const e=Zt.indexOf(this._offlineEventListener);-1!==e&&Zt.splice(e,1)}this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this._prevBufferLen=0}}}er.protocol=4;class tr extends er{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),"open"===this.readyState&&this.opts.upgrade)for(let e=0;e<this._upgrades.length;e++)this._probe(this._upgrades[e])}_probe(e){let t=this.createTransport(e),r=!1;er.priorWebsocketSuccess=!1;const n=()=>{r||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!r)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;er.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{r||"closed"!==this.readyState&&(h(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function i(){r||(r=!0,h(),t.close(),t=null)}const s=e=>{const r=new Error("probe error: "+e);r.transport=t.name,i(),this.emitReserved("upgradeError",r)};function o(){s("transport closed")}function a(){s("socket closed")}function c(e){t&&e.name!==t.name&&i()}const h=()=>{t.removeListener("open",n),t.removeListener("error",s),t.removeListener("close",o),this.off("close",a),this.off("upgrading",c)};t.once("open",n),t.once("error",s),t.once("close",o),this.once("close",a),this.once("upgrading",c),-1!==this._upgrades.indexOf("webtransport")&&"webtransport"!==e?this.setTimeoutFn((()=>{r||t.open()}),200):t.open()}onHandshake(e){this._upgrades=this._filterUpgrades(e.upgrades),super.onHandshake(e)}_filterUpgrades(e){const t=[];for(let r=0;r<e.length;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}}class rr extends tr{constructor(e,t={}){const r="object"==typeof e?e:t;(!r.transports||r.transports&&"string"==typeof r.transports[0])&&(r.transports=(r.transports||["polling","websocket","webtransport"]).map((e=>Jt[e])).filter((e=>!!e))),super(e,r)}}const nr="function"==typeof ArrayBuffer,ir=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,sr=Object.prototype.toString,or="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===sr.call(Blob),ar="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===sr.call(File);function cr(e){return nr&&(e instanceof ArrayBuffer||ir(e))||or&&e instanceof Blob||ar&&e instanceof File}function hr(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(hr(e[t]))return!0;return!1}if(cr(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return hr(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&hr(e[t]))return!0;return!1}function ur(e){const t=[],r=e.data,n=e;return n.data=lr(r,t),n.attachments=t.length,{packet:n,buffers:t}}function lr(e,t){if(!e)return e;if(cr(e)){const r={_placeholder:!0,num:t.length};return t.push(e),r}if(Array.isArray(e)){const r=new Array(e.length);for(let n=0;n<e.length;n++)r[n]=lr(e[n],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=lr(e[n],t));return r}return e}function pr(e,t){return e.data=dr(e.data,t),delete e.attachments,e}function dr(e,t){if(!e)return e;if(e&&!0===e._placeholder){if("number"==typeof e.num&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=dr(e[r],t);else if("object"==typeof e)for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e[r]=dr(e[r],t));return e}const fr=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"],gr=5;var mr;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(mr||(mr={}));class yr{constructor(e){this.replacer=e}encode(e){return e.type!==mr.EVENT&&e.type!==mr.ACK||!hr(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===mr.EVENT?mr.BINARY_EVENT:mr.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==mr.BINARY_EVENT&&e.type!==mr.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=ur(e),r=this.encodeAsString(t.packet),n=t.buffers;return n.unshift(r),n}}function br(e){return"[object Object]"===Object.prototype.toString.call(e)}class vr extends Tt{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const r=t.type===mr.BINARY_EVENT;r||t.type===mr.BINARY_ACK?(t.type=r?mr.EVENT:mr.ACK,this.reconstructor=new wr(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!cr(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const r={type:Number(e.charAt(0))};if(void 0===mr[r.type])throw new Error("unknown packet type "+r.type);if(r.type===mr.BINARY_EVENT||r.type===mr.BINARY_ACK){const n=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const i=e.substring(n,t);if(i!=Number(i)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(i)}if("/"===e.charAt(t+1)){const n=t+1;for(;++t&&","!==e.charAt(t)&&t!==e.length;);r.nsp=e.substring(n,t)}else r.nsp="/";const n=e.charAt(t+1);if(""!==n&&Number(n)==n){const n=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(n,t+1))}if(e.charAt(++t)){const n=this.tryParse(e.substr(t));if(!vr.isPayloadValid(r.type,n))throw new Error("invalid payload");r.data=n}return r}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case mr.CONNECT:return br(t);case mr.DISCONNECT:return void 0===t;case mr.CONNECT_ERROR:return"string"==typeof t||br(t);case mr.EVENT:case mr.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===fr.indexOf(t[0]));case mr.ACK:case mr.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class wr{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=pr(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}function Sr(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const _r=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class kr extends Tt{constructor(e,t,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[Sr(e,"open",this.onopen.bind(this)),Sr(e,"packet",this.onpacket.bind(this)),Sr(e,"error",this.onerror.bind(this)),Sr(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){var r,n,i;if(_r.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const s={type:mr.EVENT,data:t,options:{}};if(s.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++,r=t.pop();this._registerAckCallback(e,r),s.id=e}const o=null===(n=null===(r=this.io.engine)||void 0===r?void 0:r.transport)||void 0===n?void 0:n.writable,a=this.connected&&!(null===(i=this.io.engine)||void 0===i?void 0:i._hasPingExpired());return this.flags.volatile&&!o||(a?(this.notifyOutgoingListeners(s),this.packet(s)):this.sendBuffer.push(s)),this.flags={},this}_registerAckCallback(e,t){var r;const n=null!==(r=this.flags.timeout)&&void 0!==r?r:this._opts.ackTimeout;if(void 0===n)return void(this.acks[e]=t);const i=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,new Error("operation has timed out"))}),n),s=(...e)=>{this.io.clearTimeoutFn(i),t.apply(this,e)};s.withError=!0,this.acks[e]=s}emitWithAck(e,...t){return new Promise(((r,n)=>{const i=(e,t)=>e?n(e):r(t);i.withError=!0,t.push(i),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...n)=>{if(r===this._queue[0])return null!==e?r.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...n)),r.pending=!1,this._drainQueue()})),this._queue.push(r),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:mr.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach((e=>{if(!this.sendBuffer.some((t=>String(t.id)===e))){const t=this.acks[e];delete this.acks[e],t.withError&&t.call(this,new Error("socket has been disconnected"))}}))}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case mr.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case mr.EVENT:case mr.BINARY_EVENT:this.onevent(e);break;case mr.ACK:case mr.BINARY_ACK:this.onack(e);break;case mr.DISCONNECT:this.ondisconnect();break;case mr.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let r=!1;return function(...n){r||(r=!0,t.packet({type:mr.ACK,id:e,data:n}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(delete this.acks[e.id],t.withError&&e.data.unshift(null),t.apply(this,e.data))}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:mr.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const r of t)r.apply(this,e.data)}}}function Er(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Er.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=1&Math.floor(10*t)?e+r:e-r}return 0|Math.min(e,this.max)},Er.prototype.reset=function(){this.attempts=0},Er.prototype.setMin=function(e){this.ms=e},Er.prototype.setMax=function(e){this.max=e},Er.prototype.setJitter=function(e){this.jitter=e};class xr extends Tt{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,Mt(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=t.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new Er({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const n=t.parser||i;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,e||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new rr(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const n=Sr(t,"open",(function(){r.onopen(),e&&e()})),i=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},s=Sr(t,"error",i);if(!1!==this._timeout){const e=this._timeout,r=this.setTimeoutFn((()=>{n(),i(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}return this.subs.push(n),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(Sr(e,"ping",this.onping.bind(this)),Sr(e,"data",this.ondata.bind(this)),Sr(e,"error",this.onerror.bind(this)),Sr(e,"close",this.onclose.bind(this)),Sr(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){Ot((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r?this._autoConnect&&!r.active&&r.connect():(r=new kr(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t)if(this.nsps[e].active)return;this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(e,t){var r;this.cleanup(),null===(r=this.engine)||void 0===r||r.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Tr={};function Or(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let n=e;r=r||"undefined"!=typeof location&&location,null==e&&(e=r.protocol+"//"+r.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?r.protocol+e:r.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==r?r.protocol+"//"+e:"https://"+e),n=Qt(e)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port="80":/^(http|ws)s$/.test(n.protocol)&&(n.port="443")),n.path=n.path||"/";const i=-1!==n.host.indexOf(":")?"["+n.host+"]":n.host;return n.id=n.protocol+"://"+i+":"+n.port+t,n.href=n.protocol+"://"+i+(r&&r.port===n.port?"":":"+n.port),n}(e,(t=t||{}).path||"/socket.io"),n=r.source,i=r.id,s=r.path,o=Tr[i]&&s in Tr[i].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?a=new xr(n,t):(Tr[i]||(Tr[i]=new xr(n,t)),a=Tr[i]),r.query&&!t.query&&(t.query=r.queryKey),a.socket(r.path,t)}Object.assign(Or,{Manager:xr,Socket:kr,io:Or,connect:Or});class Pr{socket;token;endpoint;socketList=new Map;constructor(e,t){this.endpoint=e.replace("https://","wss://").replace("http://","ws://"),this.token=t,this.socket=this.getSocket("default").socket,this.socket.connect()}close(){this.socket.emit("end"),this.socket.removeAllListeners(),this.socket.disconnect()}getSocket(e,t){return this.createManager(t)}createManager(e){const t=new xr(this.endpoint,{reconnection:!0,reconnectionAttempts:1/0,reconnectionDelay:1e3,reconnectionDelayMax:5e3,randomizationFactor:.5,timeout:2e4,autoConnect:!0,transports:["websocket","polling"],rejectUnauthorized:!1,secure:!0,forceNew:e}),r=t.socket("/proxy",{auth:{token:`Bearer ${this.token}`}});return{manager:t,socket:r}}}class Cr{api;socketService;config;logger;token;deviceManager;coreManager;constructor(e){this.config=e,this.logger=e.logger||{...console,attention:console.warn},this.api=new s(e.endpoint)}async connect(){return this.deviceManager&&this.coreManager||(this.cleanUpClient(),await this.login(),this.token=this.token||this.config.token,this.socketService=new Pr(this.config.endpoint,this.token),this.coreManager=new st(this.socketService,this.logger),this.deviceManager=new ot(this.socketService,this.logger),this.checkSession()),{coreManager:this.coreManager,deviceManager:this.deviceManager}}async disconnect(){this.socketService?.close(),this.cleanUpClient(),this.config.username&&this.config.password&&await this.api.post("/auth/logout",void 0,{headers:{Authorization:`Bearer ${this.token}`}})}async updateCredentials(e){this.config={...this.config,...e},this.socketService&&await this.disconnect(),await this.connect()}async login(){if(this.config.username&&this.config.password)try{const e=await this.api.post("/auth/login",{username:this.config.username,password:this.config.password}),t=await e.json();this.token=t.access_token}catch(e){throw 401===e.response?.status?new Error("Invalid credentials"):new Error(`Failed to get token: ${e.message}`)}else if(this.config.token&&!this.config.skipCheck)try{await this.api.get("/auth/check",{headers:{Authorization:`Bearer ${this.config.token}`}})}catch(e){throw new Error(`Invalid token: ${e.message}`)}this.token=this.token||this.config.token}getDeviceManager(){return this.deviceManager}checkSession(){this.socketService?.socket.removeListener("invalidToken"),this.socketService?.socket.on("invalidToken",(async e=>{e===this.token&&await this.disconnect()}))}cleanUpClient(){this.deviceManager=void 0}}var Ar=n.j;export{Ar as CameraUiClient};
1
+ /*! For license information please see bundle.js.LICENSE.txt */
2
+ var t={855:t=>{const e="object"==typeof performance&&performance&&"function"==typeof performance.now?performance:Date,n=()=>e.now(),r=t=>t===1/0||(t=>t&&t===Math.floor(t)&&t>0&&isFinite(t))(t);class i{constructor({max:t=1/0,ttl:e,updateAgeOnGet:n=!1,checkAgeOnGet:i=!1,noUpdateTTL:s=!1,dispose:o,noDisposeOnSet:a=!1}={}){if(this.expirations=Object.create(null),this.data=new Map,this.expirationMap=new Map,void 0!==e&&!r(e))throw new TypeError("ttl must be positive integer or Infinity if set");if(!r(t))throw new TypeError("max must be positive integer or Infinity");if(this.ttl=e,this.max=t,this.updateAgeOnGet=!!n,this.checkAgeOnGet=!!i,this.noUpdateTTL=!!s,this.noDisposeOnSet=!!a,void 0!==o){if("function"!=typeof o)throw new TypeError("dispose must be function if set");this.dispose=o}this.timer=void 0,this.timerExpiration=void 0}setTimer(t,e){if(this.timerExpiration<t)return;this.timer&&clearTimeout(this.timer);const r=setTimeout((()=>{this.timer=void 0,this.timerExpiration=void 0,this.purgeStale();for(const t in this.expirations){this.setTimer(t,t-n());break}}),e);r.unref&&r.unref(),this.timerExpiration=t,this.timer=r}cancelTimer(){this.timer&&(clearTimeout(this.timer),this.timerExpiration=void 0,this.timer=void 0)}cancelTimers(){return process.emitWarning('TTLCache.cancelTimers has been renamed to TTLCache.cancelTimer (no "s"), and will be removed in the next major version update'),this.cancelTimer()}clear(){const t=this.dispose!==i.prototype.dispose?[...this]:[];this.data.clear(),this.expirationMap.clear(),this.cancelTimer(),this.expirations=Object.create(null);for(const[e,n]of t)this.dispose(n,e,"delete")}setTTL(t,e=this.ttl){const r=this.expirationMap.get(t);if(void 0!==r){const e=this.expirations[r];!e||e.length<=1?delete this.expirations[r]:this.expirations[r]=e.filter((e=>e!==t))}if(e!==1/0){const r=Math.floor(n()+e);this.expirationMap.set(t,r),this.expirations[r]||(this.expirations[r]=[],this.setTimer(r,e)),this.expirations[r].push(t)}else this.expirationMap.set(t,1/0)}set(t,e,{ttl:n=this.ttl,noUpdateTTL:i=this.noUpdateTTL,noDisposeOnSet:s=this.noDisposeOnSet}={}){if(!r(n))throw new TypeError("ttl must be positive integer or Infinity");if(this.expirationMap.has(t)){i||this.setTTL(t,n);const r=this.data.get(t);r!==e&&(this.data.set(t,e),s||this.dispose(r,t,"set"))}else this.setTTL(t,n),this.data.set(t,e);for(;this.size>this.max;)this.purgeToCapacity();return this}has(t){return this.data.has(t)}getRemainingTTL(t){const e=this.expirationMap.get(t);return e===1/0?e:void 0!==e?Math.max(0,Math.ceil(e-n())):0}get(t,{updateAgeOnGet:e=this.updateAgeOnGet,ttl:n=this.ttl,checkAgeOnGet:r=this.checkAgeOnGet}={}){const i=this.data.get(t);if(!r||0!==this.getRemainingTTL(t))return e&&this.setTTL(t,n),i;this.delete(t)}dispose(t,e){}delete(t){const e=this.expirationMap.get(t);if(void 0!==e){const n=this.data.get(t);this.data.delete(t),this.expirationMap.delete(t);const r=this.expirations[e];return r&&(r.length<=1?delete this.expirations[e]:this.expirations[e]=r.filter((e=>e!==t))),this.dispose(n,t,"delete"),0===this.size&&this.cancelTimer(),!0}return!1}purgeToCapacity(){for(const t in this.expirations){const e=this.expirations[t];if(!(this.size-e.length>=this.max)){const t=this.size-this.max,n=[];for(const r of e.splice(0,t))n.push([r,this.data.get(r)]),this.data.delete(r),this.expirationMap.delete(r);for(const[t,e]of n)this.dispose(e,t,"evict");return}{delete this.expirations[t];const n=[];for(const t of e)n.push([t,this.data.get(t)]),this.data.delete(t),this.expirationMap.delete(t);for(const[t,e]of n)this.dispose(e,t,"evict")}}}get size(){return this.data.size}purgeStale(){const t=Math.ceil(n());for(const e in this.expirations){if("Infinity"===e||e>t)return;const n=[...this.expirations[e]||[]],r=[];delete this.expirations[e];for(const t of n)r.push([t,this.data.get(t)]),this.data.delete(t),this.expirationMap.delete(t);for(const[t,e]of r)this.dispose(e,t,"stale")}0===this.size&&this.cancelTimer()}*entries(){for(const t in this.expirations)for(const e of this.expirations[t])yield[e,this.data.get(e)]}*keys(){for(const t in this.expirations)for(const e of this.expirations[t])yield e}*values(){for(const t in this.expirations)for(const e of this.expirations[t])yield this.data.get(e)}[Symbol.iterator](){return this.entries()}}t.exports=i},73:function(t){t.exports=function(){function t(t,e){var n,r,i,s,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(i=2&s[0]?r.return:s[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,s[1])).done)return i;switch(r=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,r=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]<i[3])){o.label=s[1];break}if(6===s[0]&&o.label<i[1]){o.label=i[1],i=s;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(s);break}i[2]&&o.ops.pop(),o.trys.pop();continue}s=e.call(t,o)}catch(t){s=[6,t],r=0}finally{n=i=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,a])}}}var e=function(t,e){this.next=null,this.key=t,this.data=e,this.left=null,this.right=null};function n(t,e){return t>e?1:t<e?-1:0}function r(t,n,r){for(var i=new e(null,null),s=i,o=i;;){var a=r(t,n.key);if(a<0){if(null===n.left)break;if(r(t,n.left.key)<0){var c=n.left;if(n.left=c.right,c.right=n,null===(n=c).left)break}o.left=n,o=n,n=n.left}else{if(!(a>0))break;if(null===n.right)break;if(r(t,n.right.key)>0&&(c=n.right,n.right=c.left,c.left=n,null===(n=c).right))break;s.right=n,s=n,n=n.right}}return s.right=n.left,o.left=n.right,n.left=i.right,n.right=i.left,n}function i(t,n,i,s){var o=new e(t,n);if(null===i)return o.left=o.right=null,o;var a=s(t,(i=r(t,i,s)).key);return a<0?(o.left=i.left,o.right=i,i.left=null):a>=0&&(o.right=i.right,o.left=i,i.right=null),o}function s(t,e,n){var i=null,s=null;if(e){var o=n((e=r(t,e,n)).key,t);0===o?(i=e.left,s=e.right):o<0?(s=e.right,e.right=null,i=e):(i=e.left,e.left=null,s=e)}return{left:i,right:s}}function o(t,e,n,r,i){if(t){r(e+(n?"└── ":"├── ")+i(t)+"\n");var s=e+(n?" ":"│ ");t.left&&o(t.left,s,!1,r,i),t.right&&o(t.right,s,!0,r,i)}}var a=function(){function a(t){void 0===t&&(t=n),this._root=null,this._size=0,this._comparator=t}return a.prototype.insert=function(t,e){return this._size++,this._root=i(t,e,this._root,this._comparator)},a.prototype.add=function(t,n){var i=new e(t,n);null===this._root&&(i.left=i.right=null,this._size++,this._root=i);var s=this._comparator,o=r(t,this._root,s),a=s(t,o.key);return 0===a?this._root=o:(a<0?(i.left=o.left,i.right=o,o.left=null):a>0&&(i.right=o.right,i.left=o,o.right=null),this._size++,this._root=i),this._root},a.prototype.remove=function(t){this._root=this._remove(t,this._root,this._comparator)},a.prototype._remove=function(t,e,n){var i;return null===e?null:0===n(t,(e=r(t,e,n)).key)?(null===e.left?i=e.right:(i=r(t,e.left,n)).right=e.right,this._size--,i):e},a.prototype.pop=function(){var t=this._root;if(t){for(;t.left;)t=t.left;return this._root=r(t.key,this._root,this._comparator),this._root=this._remove(t.key,this._root,this._comparator),{key:t.key,data:t.data}}return null},a.prototype.findStatic=function(t){for(var e=this._root,n=this._comparator;e;){var r=n(t,e.key);if(0===r)return e;e=r<0?e.left:e.right}return null},a.prototype.find=function(t){return this._root&&(this._root=r(t,this._root,this._comparator),0!==this._comparator(t,this._root.key))?null:this._root},a.prototype.contains=function(t){for(var e=this._root,n=this._comparator;e;){var r=n(t,e.key);if(0===r)return!0;e=r<0?e.left:e.right}return!1},a.prototype.forEach=function(t,e){for(var n=this._root,r=[],i=!1;!i;)null!==n?(r.push(n),n=n.left):0!==r.length?(n=r.pop(),t.call(e,n),n=n.right):i=!0;return this},a.prototype.range=function(t,e,n,r){for(var i=[],s=this._comparator,o=this._root;0!==i.length||o;)if(o)i.push(o),o=o.left;else{if(s((o=i.pop()).key,e)>0)break;if(s(o.key,t)>=0&&n.call(r,o))return this;o=o.right}return this},a.prototype.keys=function(){var t=[];return this.forEach((function(e){var n=e.key;return t.push(n)})),t},a.prototype.values=function(){var t=[];return this.forEach((function(e){var n=e.data;return t.push(n)})),t},a.prototype.min=function(){return this._root?this.minNode(this._root).key:null},a.prototype.max=function(){return this._root?this.maxNode(this._root).key:null},a.prototype.minNode=function(t){if(void 0===t&&(t=this._root),t)for(;t.left;)t=t.left;return t},a.prototype.maxNode=function(t){if(void 0===t&&(t=this._root),t)for(;t.right;)t=t.right;return t},a.prototype.at=function(t){for(var e=this._root,n=!1,r=0,i=[];!n;)if(e)i.push(e),e=e.left;else if(i.length>0){if(e=i.pop(),r===t)return e;r++,e=e.right}else n=!0;return null},a.prototype.next=function(t){var e=this._root,n=null;if(t.right){for(n=t.right;n.left;)n=n.left;return n}for(var r=this._comparator;e;){var i=r(t.key,e.key);if(0===i)break;i<0?(n=e,e=e.left):e=e.right}return n},a.prototype.prev=function(t){var e=this._root,n=null;if(null!==t.left){for(n=t.left;n.right;)n=n.right;return n}for(var r=this._comparator;e;){var i=r(t.key,e.key);if(0===i)break;i<0?e=e.left:(n=e,e=e.right)}return n},a.prototype.clear=function(){return this._root=null,this._size=0,this},a.prototype.toList=function(){return function(t){for(var n=t,r=[],i=!1,s=new e(null,null),o=s;!i;)n?(r.push(n),n=n.left):r.length>0?n=(n=o=o.next=r.pop()).right:i=!0;return o.next=null,s.next}(this._root)},a.prototype.load=function(t,n,r){void 0===n&&(n=[]),void 0===r&&(r=!1);var i=t.length,s=this._comparator;if(r&&u(t,n,0,i-1,s),null===this._root)this._root=c(t,n,0,i),this._size=i;else{var o=function(t,n,r){for(var i=new e(null,null),s=i,o=t,a=n;null!==o&&null!==a;)r(o.key,a.key)<0?(s.next=o,o=o.next):(s.next=a,a=a.next),s=s.next;return null!==o?s.next=o:null!==a&&(s.next=a),i.next}(this.toList(),function(t,n){for(var r=new e(null,null),i=r,s=0;s<t.length;s++)i=i.next=new e(t[s],n[s]);return i.next=null,r.next}(t,n),s);i=this._size+i,this._root=h({head:o},0,i)}return this},a.prototype.isEmpty=function(){return null===this._root},Object.defineProperty(a.prototype,"size",{get:function(){return this._size},enumerable:!0,configurable:!0}),Object.defineProperty(a.prototype,"root",{get:function(){return this._root},enumerable:!0,configurable:!0}),a.prototype.toString=function(t){void 0===t&&(t=function(t){return String(t.key)});var e=[];return o(this._root,"",!0,(function(t){return e.push(t)}),t),e.join("")},a.prototype.update=function(t,e,n){var o=this._comparator,a=s(t,this._root,o),c=a.left,h=a.right;o(t,e)<0?h=i(e,n,h,o):c=i(e,n,c,o),this._root=function(t,e,n){return null===e?t:(null===t||((e=r(t.key,e,n)).left=t),e)}(c,h,o)},a.prototype.split=function(t){return s(t,this._root,this._comparator)},a.prototype[Symbol.iterator]=function(){var e,n,r;return t(this,(function(t){switch(t.label){case 0:e=this._root,n=[],r=!1,t.label=1;case 1:return r?[3,6]:null===e?[3,2]:(n.push(e),e=e.left,[3,5]);case 2:return 0===n.length?[3,4]:[4,e=n.pop()];case 3:return t.sent(),e=e.right,[3,5];case 4:r=!0,t.label=5;case 5:return[3,1];case 6:return[2]}}))},a}();function c(t,n,r,i){var s=i-r;if(s>0){var o=r+Math.floor(s/2),a=t[o],h=n[o],u=new e(a,h);return u.left=c(t,n,r,o),u.right=c(t,n,o+1,i),u}return null}function h(t,e,n){var r=n-e;if(r>0){var i=e+Math.floor(r/2),s=h(t,e,i),o=t.head;return o.left=s,t.head=t.head.next,o.right=h(t,i+1,n),o}return null}function u(t,e,n,r,i){if(!(n>=r)){for(var s=t[n+r>>1],o=n-1,a=r+1;;){do{o++}while(i(t[o],s)<0);do{a--}while(i(t[a],s)>0);if(o>=a)break;var c=t[o];t[o]=t[a],t[a]=c,c=e[o],e[o]=e[a],e[a]=c}u(t,e,n,a,i),u(t,e,a+1,r,i)}}const l=(t,e)=>t.ll.x<=e.x&&e.x<=t.ur.x&&t.ll.y<=e.y&&e.y<=t.ur.y,p=(t,e)=>{if(e.ur.x<t.ll.x||t.ur.x<e.ll.x||e.ur.y<t.ll.y||t.ur.y<e.ll.y)return null;const n=t.ll.x<e.ll.x?e.ll.x:t.ll.x,r=t.ur.x<e.ur.x?t.ur.x:e.ur.x;return{ll:{x:n,y:t.ll.y<e.ll.y?e.ll.y:t.ll.y},ur:{x:r,y:t.ur.y<e.ur.y?t.ur.y:e.ur.y}}};let f=Number.EPSILON;void 0===f&&(f=Math.pow(2,-52));const d=f*f,g=(t,e)=>{if(-f<t&&t<f&&-f<e&&e<f)return 0;const n=t-e;return n*n<d*t*e?0:t<e?-1:1};class y{constructor(){this.tree=new a,this.round(0)}round(t){const e=this.tree.add(t),n=this.tree.prev(e);if(null!==n&&0===g(e.key,n.key))return this.tree.remove(t),n.key;const r=this.tree.next(e);return null!==r&&0===g(e.key,r.key)?(this.tree.remove(t),r.key):t}}const m=new class{constructor(){this.reset()}reset(){this.xRounder=new y,this.yRounder=new y}round(t,e){return{x:this.xRounder.round(t),y:this.yRounder.round(e)}}},b=11102230246251565e-32,v=134217729,w=(3+8*b)*b;function x(t,e,n,r,i){let s,o,a,c,h=e[0],u=r[0],l=0,p=0;u>h==u>-h?(s=h,h=e[++l]):(s=u,u=r[++p]);let f=0;if(l<t&&p<n)for(u>h==u>-h?(o=h+s,a=s-(o-h),h=e[++l]):(o=u+s,a=s-(o-u),u=r[++p]),s=o,0!==a&&(i[f++]=a);l<t&&p<n;)u>h==u>-h?(o=s+h,c=o-s,a=s-(o-c)+(h-c),h=e[++l]):(o=s+u,c=o-s,a=s-(o-c)+(u-c),u=r[++p]),s=o,0!==a&&(i[f++]=a);for(;l<t;)o=s+h,c=o-s,a=s-(o-c)+(h-c),h=e[++l],s=o,0!==a&&(i[f++]=a);for(;p<n;)o=s+u,c=o-s,a=s-(o-c)+(u-c),u=r[++p],s=o,0!==a&&(i[f++]=a);return 0===s&&0!==f||(i[f++]=s),f}function S(t){return new Float64Array(t)}const _=22204460492503146e-32,E=11093356479670487e-47,k=S(4),P=S(8),R=S(12),M=S(16),T=S(4);function O(t,e,n,r,i,s){const o=(e-s)*(n-i),a=(t-i)*(r-s),c=o-a,h=Math.abs(o+a);return Math.abs(c)>=33306690738754716e-32*h?c:-function(t,e,n,r,i,s,o){let a,c,h,u,l,p,f,d,g,y,m,b,S,O,A,C,B,L;const I=t-i,j=n-i,N=e-s,q=r-s;O=I*q,p=v*I,f=p-(p-I),d=I-f,p=v*q,g=p-(p-q),y=q-g,A=d*y-(O-f*g-d*g-f*y),C=N*j,p=v*N,f=p-(p-N),d=N-f,p=v*j,g=p-(p-j),y=j-g,B=d*y-(C-f*g-d*g-f*y),m=A-B,l=A-m,k[0]=A-(m+l)+(l-B),b=O+m,l=b-O,S=O-(b-l)+(m-l),m=S-C,l=S-m,k[1]=S-(m+l)+(l-C),L=b+m,l=L-b,k[2]=b-(L-l)+(m-l),k[3]=L;let D=function(t,e){let n=e[0];for(let r=1;r<t;r++)n+=e[r];return n}(4,k),F=_*o;if(D>=F||-D>=F)return D;if(l=t-I,a=t-(I+l)+(l-i),l=n-j,h=n-(j+l)+(l-i),l=e-N,c=e-(N+l)+(l-s),l=r-q,u=r-(q+l)+(l-s),0===a&&0===c&&0===h&&0===u)return D;if(F=E*o+w*Math.abs(D),D+=I*u+q*a-(N*h+j*c),D>=F||-D>=F)return D;O=a*q,p=v*a,f=p-(p-a),d=a-f,p=v*q,g=p-(p-q),y=q-g,A=d*y-(O-f*g-d*g-f*y),C=c*j,p=v*c,f=p-(p-c),d=c-f,p=v*j,g=p-(p-j),y=j-g,B=d*y-(C-f*g-d*g-f*y),m=A-B,l=A-m,T[0]=A-(m+l)+(l-B),b=O+m,l=b-O,S=O-(b-l)+(m-l),m=S-C,l=S-m,T[1]=S-(m+l)+(l-C),L=b+m,l=L-b,T[2]=b-(L-l)+(m-l),T[3]=L;const U=x(4,k,4,T,P);O=I*u,p=v*I,f=p-(p-I),d=I-f,p=v*u,g=p-(p-u),y=u-g,A=d*y-(O-f*g-d*g-f*y),C=N*h,p=v*N,f=p-(p-N),d=N-f,p=v*h,g=p-(p-h),y=h-g,B=d*y-(C-f*g-d*g-f*y),m=A-B,l=A-m,T[0]=A-(m+l)+(l-B),b=O+m,l=b-O,S=O-(b-l)+(m-l),m=S-C,l=S-m,T[1]=S-(m+l)+(l-C),L=b+m,l=L-b,T[2]=b-(L-l)+(m-l),T[3]=L;const V=x(U,P,4,T,R);O=a*u,p=v*a,f=p-(p-a),d=a-f,p=v*u,g=p-(p-u),y=u-g,A=d*y-(O-f*g-d*g-f*y),C=c*h,p=v*c,f=p-(p-c),d=c-f,p=v*h,g=p-(p-h),y=h-g,B=d*y-(C-f*g-d*g-f*y),m=A-B,l=A-m,T[0]=A-(m+l)+(l-B),b=O+m,l=b-O,S=O-(b-l)+(m-l),m=S-C,l=S-m,T[1]=S-(m+l)+(l-C),L=b+m,l=L-b,T[2]=b-(L-l)+(m-l),T[3]=L;const Y=x(V,R,4,T,M);return M[Y-1]}(t,e,n,r,i,s,h)}const A=(t,e)=>t.x*e.y-t.y*e.x,C=(t,e)=>t.x*e.x+t.y*e.y,B=(t,e,n)=>{const r=O(t.x,t.y,e.x,e.y,n.x,n.y);return r>0?-1:r<0?1:0},L=t=>Math.sqrt(C(t,t)),I=(t,e,n)=>{const r={x:e.x-t.x,y:e.y-t.y},i={x:n.x-t.x,y:n.y-t.y};return A(i,r)/L(i)/L(r)},j=(t,e,n)=>{const r={x:e.x-t.x,y:e.y-t.y},i={x:n.x-t.x,y:n.y-t.y};return C(i,r)/L(i)/L(r)},N=(t,e,n)=>0===e.y?null:{x:t.x+e.x/e.y*(n-t.y),y:n},q=(t,e,n)=>0===e.x?null:{x:n,y:t.y+e.y/e.x*(n-t.x)};class D{static compare(t,e){const n=D.comparePoints(t.point,e.point);return 0!==n?n:(t.point!==e.point&&t.link(e),t.isLeft!==e.isLeft?t.isLeft?1:-1:U.compare(t.segment,e.segment))}static comparePoints(t,e){return t.x<e.x?-1:t.x>e.x?1:t.y<e.y?-1:t.y>e.y?1:0}constructor(t,e){void 0===t.events?t.events=[this]:t.events.push(this),this.point=t,this.isLeft=e}link(t){if(t.point===this.point)throw new Error("Tried to link already linked events");const e=t.point.events;for(let t=0,n=e.length;t<n;t++){const n=e[t];this.point.events.push(n),n.point=this.point}this.checkForConsuming()}checkForConsuming(){const t=this.point.events.length;for(let e=0;e<t;e++){const n=this.point.events[e];if(void 0===n.segment.consumedBy)for(let r=e+1;r<t;r++){const t=this.point.events[r];void 0===t.consumedBy&&n.otherSE.point.events===t.otherSE.point.events&&n.segment.consume(t.segment)}}}getAvailableLinkedEvents(){const t=[];for(let e=0,n=this.point.events.length;e<n;e++){const n=this.point.events[e];n!==this&&!n.segment.ringOut&&n.segment.isInResult()&&t.push(n)}return t}getLeftmostComparator(t){const e=new Map,n=n=>{const r=n.otherSE;e.set(n,{sine:I(this.point,t.point,r.point),cosine:j(this.point,t.point,r.point)})};return(t,r)=>{e.has(t)||n(t),e.has(r)||n(r);const{sine:i,cosine:s}=e.get(t),{sine:o,cosine:a}=e.get(r);return i>=0&&o>=0?s<a?1:s>a?-1:0:i<0&&o<0?s<a?-1:s>a?1:0:o<i?-1:o>i?1:0}}}let F=0;class U{static compare(t,e){const n=t.leftSE.point.x,r=e.leftSE.point.x,i=t.rightSE.point.x,s=e.rightSE.point.x;if(s<n)return 1;if(i<r)return-1;const o=t.leftSE.point.y,a=e.leftSE.point.y,c=t.rightSE.point.y,h=e.rightSE.point.y;if(n<r){if(a<o&&a<c)return 1;if(a>o&&a>c)return-1;const n=t.comparePoint(e.leftSE.point);if(n<0)return 1;if(n>0)return-1;const r=e.comparePoint(t.rightSE.point);return 0!==r?r:-1}if(n>r){if(o<a&&o<h)return-1;if(o>a&&o>h)return 1;const n=e.comparePoint(t.leftSE.point);if(0!==n)return n;const r=t.comparePoint(e.rightSE.point);return r<0?1:r>0?-1:1}if(o<a)return-1;if(o>a)return 1;if(i<s){const n=e.comparePoint(t.rightSE.point);if(0!==n)return n}if(i>s){const n=t.comparePoint(e.rightSE.point);if(n<0)return 1;if(n>0)return-1}if(i!==s){const t=c-o,e=i-n,u=h-a,l=s-r;if(t>e&&u<l)return 1;if(t<e&&u>l)return-1}return i>s?1:i<s||c<h?-1:c>h?1:t.id<e.id?-1:t.id>e.id?1:0}constructor(t,e,n,r){this.id=++F,this.leftSE=t,t.segment=this,t.otherSE=e,this.rightSE=e,e.segment=this,e.otherSE=t,this.rings=n,this.windings=r}static fromRing(t,e,n){let r,i,s;const o=D.comparePoints(t,e);if(o<0)r=t,i=e,s=1;else{if(!(o>0))throw new Error(`Tried to create degenerate segment at [${t.x}, ${t.y}]`);r=e,i=t,s=-1}const a=new D(r,!0),c=new D(i,!1);return new U(a,c,[n],[s])}replaceRightSE(t){this.rightSE=t,this.rightSE.segment=this,this.rightSE.otherSE=this.leftSE,this.leftSE.otherSE=this.rightSE}bbox(){const t=this.leftSE.point.y,e=this.rightSE.point.y;return{ll:{x:this.leftSE.point.x,y:t<e?t:e},ur:{x:this.rightSE.point.x,y:t>e?t:e}}}vector(){return{x:this.rightSE.point.x-this.leftSE.point.x,y:this.rightSE.point.y-this.leftSE.point.y}}isAnEndpoint(t){return t.x===this.leftSE.point.x&&t.y===this.leftSE.point.y||t.x===this.rightSE.point.x&&t.y===this.rightSE.point.y}comparePoint(t){if(this.isAnEndpoint(t))return 0;const e=this.leftSE.point,n=this.rightSE.point,r=this.vector();if(e.x===n.x)return t.x===e.x?0:t.x<e.x?1:-1;const i=(t.y-e.y)/r.y,s=e.x+i*r.x;if(t.x===s)return 0;const o=(t.x-e.x)/r.x,a=e.y+o*r.y;return t.y===a?0:t.y<a?-1:1}getIntersection(t){const e=this.bbox(),n=t.bbox(),r=p(e,n);if(null===r)return null;const i=this.leftSE.point,s=this.rightSE.point,o=t.leftSE.point,a=t.rightSE.point,c=l(e,o)&&0===this.comparePoint(o),h=l(n,i)&&0===t.comparePoint(i),u=l(e,a)&&0===this.comparePoint(a),f=l(n,s)&&0===t.comparePoint(s);if(h&&c)return f&&!u?s:!f&&u?a:null;if(h)return u&&i.x===a.x&&i.y===a.y?null:i;if(c)return f&&s.x===o.x&&s.y===o.y?null:o;if(f&&u)return null;if(f)return s;if(u)return a;const d=((t,e,n,r)=>{if(0===e.x)return q(n,r,t.x);if(0===r.x)return q(t,e,n.x);if(0===e.y)return N(n,r,t.y);if(0===r.y)return N(t,e,n.y);const i=A(e,r);if(0==i)return null;const s={x:n.x-t.x,y:n.y-t.y},o=A(s,e)/i,a=A(s,r)/i;return{x:(t.x+a*e.x+(n.x+o*r.x))/2,y:(t.y+a*e.y+(n.y+o*r.y))/2}})(i,this.vector(),o,t.vector());return null===d?null:l(r,d)?m.round(d.x,d.y):null}split(t){const e=[],n=void 0!==t.events,r=new D(t,!0),i=new D(t,!1),s=this.rightSE;this.replaceRightSE(i),e.push(i),e.push(r);const o=new U(r,s,this.rings.slice(),this.windings.slice());return D.comparePoints(o.leftSE.point,o.rightSE.point)>0&&o.swapEvents(),D.comparePoints(this.leftSE.point,this.rightSE.point)>0&&this.swapEvents(),n&&(r.checkForConsuming(),i.checkForConsuming()),e}swapEvents(){const t=this.rightSE;this.rightSE=this.leftSE,this.leftSE=t,this.leftSE.isLeft=!0,this.rightSE.isLeft=!1;for(let t=0,e=this.windings.length;t<e;t++)this.windings[t]*=-1}consume(t){let e=this,n=t;for(;e.consumedBy;)e=e.consumedBy;for(;n.consumedBy;)n=n.consumedBy;const r=U.compare(e,n);if(0!==r){if(r>0){const t=e;e=n,n=t}if(e.prev===n){const t=e;e=n,n=t}for(let t=0,r=n.rings.length;t<r;t++){const r=n.rings[t],i=n.windings[t],s=e.rings.indexOf(r);-1===s?(e.rings.push(r),e.windings.push(i)):e.windings[s]+=i}n.rings=null,n.windings=null,n.consumedBy=e,n.leftSE.consumedBy=e.leftSE,n.rightSE.consumedBy=e.rightSE}}prevInResult(){return void 0!==this._prevInResult||(this.prev?this.prev.isInResult()?this._prevInResult=this.prev:this._prevInResult=this.prev.prevInResult():this._prevInResult=null),this._prevInResult}beforeState(){if(void 0!==this._beforeState)return this._beforeState;if(this.prev){const t=this.prev.consumedBy||this.prev;this._beforeState=t.afterState()}else this._beforeState={rings:[],windings:[],multiPolys:[]};return this._beforeState}afterState(){if(void 0!==this._afterState)return this._afterState;const t=this.beforeState();this._afterState={rings:t.rings.slice(0),windings:t.windings.slice(0),multiPolys:[]};const e=this._afterState.rings,n=this._afterState.windings,r=this._afterState.multiPolys;for(let t=0,r=this.rings.length;t<r;t++){const r=this.rings[t],i=this.windings[t],s=e.indexOf(r);-1===s?(e.push(r),n.push(i)):n[s]+=i}const i=[],s=[];for(let t=0,r=e.length;t<r;t++){if(0===n[t])continue;const r=e[t],o=r.poly;if(-1===s.indexOf(o))if(r.isExterior)i.push(o);else{-1===s.indexOf(o)&&s.push(o);const t=i.indexOf(r.poly);-1!==t&&i.splice(t,1)}}for(let t=0,e=i.length;t<e;t++){const e=i[t].multiPoly;-1===r.indexOf(e)&&r.push(e)}return this._afterState}isInResult(){if(this.consumedBy)return!1;if(void 0!==this._isInResult)return this._isInResult;const t=this.beforeState().multiPolys,e=this.afterState().multiPolys;switch(K.type){case"union":{const n=0===t.length,r=0===e.length;this._isInResult=n!==r;break}case"intersection":{let n,r;t.length<e.length?(n=t.length,r=e.length):(n=e.length,r=t.length),this._isInResult=r===K.numMultiPolys&&n<r;break}case"xor":{const n=Math.abs(t.length-e.length);this._isInResult=n%2==1;break}case"difference":{const n=t=>1===t.length&&t[0].isSubject;this._isInResult=n(t)!==n(e);break}default:throw new Error(`Unrecognized operation type found ${K.type}`)}return this._isInResult}}class V{constructor(t,e,n){if(!Array.isArray(t)||0===t.length)throw new Error("Input geometry is not a valid Polygon or MultiPolygon");if(this.poly=e,this.isExterior=n,this.segments=[],"number"!=typeof t[0][0]||"number"!=typeof t[0][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");const r=m.round(t[0][0],t[0][1]);this.bbox={ll:{x:r.x,y:r.y},ur:{x:r.x,y:r.y}};let i=r;for(let e=1,n=t.length;e<n;e++){if("number"!=typeof t[e][0]||"number"!=typeof t[e][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");let n=m.round(t[e][0],t[e][1]);n.x===i.x&&n.y===i.y||(this.segments.push(U.fromRing(i,n,this)),n.x<this.bbox.ll.x&&(this.bbox.ll.x=n.x),n.y<this.bbox.ll.y&&(this.bbox.ll.y=n.y),n.x>this.bbox.ur.x&&(this.bbox.ur.x=n.x),n.y>this.bbox.ur.y&&(this.bbox.ur.y=n.y),i=n)}r.x===i.x&&r.y===i.y||this.segments.push(U.fromRing(i,r,this))}getSweepEvents(){const t=[];for(let e=0,n=this.segments.length;e<n;e++){const n=this.segments[e];t.push(n.leftSE),t.push(n.rightSE)}return t}}class Y{constructor(t,e){if(!Array.isArray(t))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");this.exteriorRing=new V(t[0],this,!0),this.bbox={ll:{x:this.exteriorRing.bbox.ll.x,y:this.exteriorRing.bbox.ll.y},ur:{x:this.exteriorRing.bbox.ur.x,y:this.exteriorRing.bbox.ur.y}},this.interiorRings=[];for(let e=1,n=t.length;e<n;e++){const n=new V(t[e],this,!1);n.bbox.ll.x<this.bbox.ll.x&&(this.bbox.ll.x=n.bbox.ll.x),n.bbox.ll.y<this.bbox.ll.y&&(this.bbox.ll.y=n.bbox.ll.y),n.bbox.ur.x>this.bbox.ur.x&&(this.bbox.ur.x=n.bbox.ur.x),n.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=n.bbox.ur.y),this.interiorRings.push(n)}this.multiPoly=e}getSweepEvents(){const t=this.exteriorRing.getSweepEvents();for(let e=0,n=this.interiorRings.length;e<n;e++){const n=this.interiorRings[e].getSweepEvents();for(let e=0,r=n.length;e<r;e++)t.push(n[e])}return t}}class z{constructor(t,e){if(!Array.isArray(t))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");try{"number"==typeof t[0][0][0]&&(t=[t])}catch(t){}this.polys=[],this.bbox={ll:{x:Number.POSITIVE_INFINITY,y:Number.POSITIVE_INFINITY},ur:{x:Number.NEGATIVE_INFINITY,y:Number.NEGATIVE_INFINITY}};for(let e=0,n=t.length;e<n;e++){const n=new Y(t[e],this);n.bbox.ll.x<this.bbox.ll.x&&(this.bbox.ll.x=n.bbox.ll.x),n.bbox.ll.y<this.bbox.ll.y&&(this.bbox.ll.y=n.bbox.ll.y),n.bbox.ur.x>this.bbox.ur.x&&(this.bbox.ur.x=n.bbox.ur.x),n.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=n.bbox.ur.y),this.polys.push(n)}this.isSubject=e}getSweepEvents(){const t=[];for(let e=0,n=this.polys.length;e<n;e++){const n=this.polys[e].getSweepEvents();for(let e=0,r=n.length;e<r;e++)t.push(n[e])}return t}}class X{static factory(t){const e=[];for(let n=0,r=t.length;n<r;n++){const r=t[n];if(!r.isInResult()||r.ringOut)continue;let i=null,s=r.leftSE,o=r.rightSE;const a=[s],c=s.point,h=[];for(;i=s,s=o,a.push(s),s.point!==c;)for(;;){const t=s.getAvailableLinkedEvents();if(0===t.length){const t=a[0].point,e=a[a.length-1].point;throw new Error(`Unable to complete output ring starting at [${t.x}, ${t.y}]. Last matching segment found ends at [${e.x}, ${e.y}].`)}if(1===t.length){o=t[0].otherSE;break}let n=null;for(let t=0,e=h.length;t<e;t++)if(h[t].point===s.point){n=t;break}if(null!==n){const t=h.splice(n)[0],r=a.splice(t.index);r.unshift(r[0].otherSE),e.push(new X(r.reverse()));continue}h.push({index:a.length,point:s.point});const r=s.getLeftmostComparator(i);o=t.sort(r)[0].otherSE;break}e.push(new X(a))}return e}constructor(t){this.events=t;for(let e=0,n=t.length;e<n;e++)t[e].segment.ringOut=this;this.poly=null}getGeom(){let t=this.events[0].point;const e=[t];for(let n=1,r=this.events.length-1;n<r;n++){const r=this.events[n].point,i=this.events[n+1].point;0!==B(r,t,i)&&(e.push(r),t=r)}if(1===e.length)return null;const n=e[0],r=e[1];0===B(n,t,r)&&e.shift(),e.push(e[0]);const i=this.isExteriorRing()?1:-1,s=this.isExteriorRing()?0:e.length-1,o=this.isExteriorRing()?e.length:-1,a=[];for(let t=s;t!=o;t+=i)a.push([e[t].x,e[t].y]);return a}isExteriorRing(){if(void 0===this._isExteriorRing){const t=this.enclosingRing();this._isExteriorRing=!t||!t.isExteriorRing()}return this._isExteriorRing}enclosingRing(){return void 0===this._enclosingRing&&(this._enclosingRing=this._calcEnclosingRing()),this._enclosingRing}_calcEnclosingRing(){let t=this.events[0];for(let e=1,n=this.events.length;e<n;e++){const n=this.events[e];D.compare(t,n)>0&&(t=n)}let e=t.segment.prevInResult(),n=e?e.prevInResult():null;for(;;){if(!e)return null;if(!n)return e.ringOut;if(n.ringOut!==e.ringOut)return n.ringOut.enclosingRing()!==e.ringOut?e.ringOut:e.ringOut.enclosingRing();e=n.prevInResult(),n=e?e.prevInResult():null}}}class ${constructor(t){this.exteriorRing=t,t.poly=this,this.interiorRings=[]}addInterior(t){this.interiorRings.push(t),t.poly=this}getGeom(){const t=[this.exteriorRing.getGeom()];if(null===t[0])return null;for(let e=0,n=this.interiorRings.length;e<n;e++){const n=this.interiorRings[e].getGeom();null!==n&&t.push(n)}return t}}class W{constructor(t){this.rings=t,this.polys=this._composePolys(t)}getGeom(){const t=[];for(let e=0,n=this.polys.length;e<n;e++){const n=this.polys[e].getGeom();null!==n&&t.push(n)}return t}_composePolys(t){const e=[];for(let n=0,r=t.length;n<r;n++){const r=t[n];if(!r.poly)if(r.isExteriorRing())e.push(new $(r));else{const t=r.enclosingRing();t.poly||e.push(new $(t)),t.poly.addInterior(r)}}return e}}class G{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:U.compare;this.queue=t,this.tree=new a(e),this.segments=[]}process(t){const e=t.segment,n=[];if(t.consumedBy)return t.isLeft?this.queue.remove(t.otherSE):this.tree.remove(e),n;const r=t.isLeft?this.tree.add(e):this.tree.find(e);if(!r)throw new Error(`Unable to find segment #${e.id} [${e.leftSE.point.x}, ${e.leftSE.point.y}] -> [${e.rightSE.point.x}, ${e.rightSE.point.y}] in SweepLine tree.`);let i,s,o=r,a=r;for(;void 0===i;)o=this.tree.prev(o),null===o?i=null:void 0===o.key.consumedBy&&(i=o.key);for(;void 0===s;)a=this.tree.next(a),null===a?s=null:void 0===a.key.consumedBy&&(s=a.key);if(t.isLeft){let r=null;if(i){const t=i.getIntersection(e);if(null!==t&&(e.isAnEndpoint(t)||(r=t),!i.isAnEndpoint(t))){const e=this._splitSafely(i,t);for(let t=0,r=e.length;t<r;t++)n.push(e[t])}}let o=null;if(s){const t=s.getIntersection(e);if(null!==t&&(e.isAnEndpoint(t)||(o=t),!s.isAnEndpoint(t))){const e=this._splitSafely(s,t);for(let t=0,r=e.length;t<r;t++)n.push(e[t])}}if(null!==r||null!==o){let t=null;t=null===r?o:null===o||D.comparePoints(r,o)<=0?r:o,this.queue.remove(e.rightSE),n.push(e.rightSE);const i=e.split(t);for(let t=0,e=i.length;t<e;t++)n.push(i[t])}n.length>0?(this.tree.remove(e),n.push(t)):(this.segments.push(e),e.prev=i)}else{if(i&&s){const t=i.getIntersection(s);if(null!==t){if(!i.isAnEndpoint(t)){const e=this._splitSafely(i,t);for(let t=0,r=e.length;t<r;t++)n.push(e[t])}if(!s.isAnEndpoint(t)){const e=this._splitSafely(s,t);for(let t=0,r=e.length;t<r;t++)n.push(e[t])}}}this.tree.remove(e)}return n}_splitSafely(t,e){this.tree.remove(t);const n=t.rightSE;this.queue.remove(n);const r=t.split(e);return r.push(n),void 0===t.consumedBy&&this.tree.add(t),r}}const H="undefined"!=typeof process&&process.env.POLYGON_CLIPPING_MAX_QUEUE_SIZE||1e6,J="undefined"!=typeof process&&process.env.POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS||1e6;const K=new class{run(t,e,n){K.type=t,m.reset();const r=[new z(e,!0)];for(let t=0,e=n.length;t<e;t++)r.push(new z(n[t],!1));if(K.numMultiPolys=r.length,"difference"===K.type){const t=r[0];let e=1;for(;e<r.length;)null!==p(r[e].bbox,t.bbox)?e++:r.splice(e,1)}if("intersection"===K.type)for(let t=0,e=r.length;t<e;t++){const e=r[t];for(let n=t+1,i=r.length;n<i;n++)if(null===p(e.bbox,r[n].bbox))return[]}const i=new a(D.compare);for(let t=0,e=r.length;t<e;t++){const e=r[t].getSweepEvents();for(let t=0,n=e.length;t<n;t++)if(i.insert(e[t]),i.size>H)throw new Error("Infinite loop when putting segment endpoints in a priority queue (queue size too big).")}const s=new G(i);let o=i.size,c=i.pop();for(;c;){const t=c.key;if(i.size===o){const e=t.segment;throw new Error(`Unable to pop() ${t.isLeft?"left":"right"} SweepEvent [${t.point.x}, ${t.point.y}] from segment #${e.id} [${e.leftSE.point.x}, ${e.leftSE.point.y}] -> [${e.rightSE.point.x}, ${e.rightSE.point.y}] from queue.`)}if(i.size>H)throw new Error("Infinite loop when passing sweep line over endpoints (queue size too big).");if(s.segments.length>J)throw new Error("Infinite loop when passing sweep line over endpoints (too many sweep line segments).");const e=s.process(t);for(let t=0,n=e.length;t<n;t++){const n=e[t];void 0===n.consumedBy&&i.insert(n)}o=i.size,c=i.pop()}m.reset();const h=X.factory(s.segments);return new W(h).getGeom()}};var Q={union:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return K.run("union",t,n)},intersection:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return K.run("intersection",t,n)},xor:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return K.run("xor",t,n)},difference:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return K.run("difference",t,n)}};return Q}()}},e={};function n(r){var i=e[r];if(void 0!==i)return i.exports;var s=e[r]={exports:{}};return t[r].call(s.exports,s,s.exports,n),s.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};n.d(r,{j:()=>Zn});var i={};n.r(i),n.d(i,{Decoder:()=>Yn,Encoder:()=>Un,PacketType:()=>Fn,protocol:()=>Dn});class s{baseURL;abortControllers=new Set;constructor(t){this.baseURL=`${t}/api`}async request(t,e,n,r={}){const i=new AbortController;this.abortControllers.add(i);const s=setTimeout((()=>{i.abort(),this.abortControllers.delete(i)}),15e3);try{const s=await fetch(`${this.baseURL}${e}`,{method:t,headers:{"Content-Type":"application/json",...r.headers},body:n?JSON.stringify(n):void 0,signal:i.signal,...r});if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);return s}finally{clearTimeout(s),this.abortControllers.delete(i)}}get(t,e){return this.request("GET",t,void 0,e)}post(t,e,n){return this.request("POST",t,e,n)}}process.env.CAMERA_UI_RUNMODE,process.env.CAMERA_UI_RUNMODE,process.env.CAMERA_UI_RUNMODE,process.env.CAMERA_UI_AS_SERVICE;class o{subscriptions=[];additionalSubscriptions=[];addSubscriptions(...t){this.subscriptions.push(...t)}addAdditionalSubscriptions(...t){this.additionalSubscriptions.push(...t)}unsubscribe(){this.subscriptions.forEach((t=>t.unsubscribe()))}unsubscribeAdditional(){this.additionalSubscriptions.forEach((t=>t.unsubscribe()))}}function a(t,e,n=!1){if(t===e)return!0;if((void 0===t||void 0===e||null===t||null===e)&&(t||e))return!1;const r=t?.constructor.name,i=e?.constructor.name;if(r!==i)return!1;if("Array"===r&&"Array"===i){if(t.length!==e.length)return!1;if(n){const r=[...e];return t.every((t=>{const e=r.findIndex((e=>a(t,e,n)));return-1!==e&&(r.splice(e,1),!0)}))}{let r=!0;for(let i=0;i<t.length;i++)if(!a(t[i],e[i],n)){r=!1;break}return r}}if("Object"===r&&"Object"===i){let r=!0;const i=Object.keys(t),s=Object.keys(e);if(i.length!==s.length)return!1;for(let s=0;s<i.length;s++)if(t[i[s]]&&e[i[s]]){if(t[i[s]]===e[i[s]])continue;if(!t[i[s]]||"Array"!==t[i[s]].constructor.name&&"Object"!==t[i[s]].constructor.name){if(t[i[s]]!==e[i[s]]){r=!1;break}}else if(r=a(t[i[s]],e[i[s]],n),!r)break}else if(t[i[s]]&&!e[i[s]]||!t[i[s]]&&e[i[s]]){r=!1;break}return r}return t===e}function c(t){return JSON.parse(JSON.stringify(t))}var h=n(855),u=n.n(h),l=function(t,e){return l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},l(t,e)};function p(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}l(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function f(t,e){var n,r,i,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return o.next=a(0),o.throw=a(1),o.return=a(2),"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(a){return function(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,a[0]&&(s=0)),s;)try{if(n=1,r&&(i=2&a[0]?r.return:a[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,a[1])).done)return i;switch(r=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,r=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){s.label=a[1];break}if(6===a[0]&&s.label<i[1]){s.label=i[1],i=a;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(a);break}i[2]&&s.ops.pop(),s.trys.pop();continue}a=e.call(t,s)}catch(t){a=[6,t],r=0}finally{n=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}}function d(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function g(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,i,s=n.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(r=s.next()).done;)o.push(r.value)}catch(t){i={error:t}}finally{try{r&&!r.done&&(n=s.return)&&n.call(s)}finally{if(i)throw i.error}}return o}function y(t,e,n){if(n||2===arguments.length)for(var r,i=0,s=e.length;i<s;i++)!r&&i in e||(r||(r=Array.prototype.slice.call(e,0,i)),r[i]=e[i]);return t.concat(r||Array.prototype.slice.call(e))}function m(t){return this instanceof m?(this.v=t,this):new m(t)}function b(t){return"function"==typeof t}function v(t){var e=t((function(t){Error.call(t),t.stack=(new Error).stack}));return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;var w=v((function(t){return function(e){t(this),this.message=e?e.length+" errors occurred during unsubscription:\n"+e.map((function(t,e){return e+1+") "+t.toString()})).join("\n "):"",this.name="UnsubscriptionError",this.errors=e}}));function x(t,e){if(t){var n=t.indexOf(e);0<=n&&t.splice(n,1)}}var S=function(){function t(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return t.prototype.unsubscribe=function(){var t,e,n,r,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var o=d(s),a=o.next();!a.done;a=o.next())a.value.remove(this)}catch(e){t={error:e}}finally{try{a&&!a.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}else s.remove(this);var c=this.initialTeardown;if(b(c))try{c()}catch(t){i=t instanceof w?t.errors:[t]}var h=this._finalizers;if(h){this._finalizers=null;try{for(var u=d(h),l=u.next();!l.done;l=u.next()){var p=l.value;try{k(p)}catch(t){i=null!=i?i:[],t instanceof w?i=y(y([],g(i)),g(t.errors)):i.push(t)}}}catch(t){n={error:t}}finally{try{l&&!l.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}}if(i)throw new w(i)}},t.prototype.add=function(e){var n;if(e&&e!==this)if(this.closed)k(e);else{if(e instanceof t){if(e.closed||e._hasParent(this))return;e._addParent(this)}(this._finalizers=null!==(n=this._finalizers)&&void 0!==n?n:[]).push(e)}},t.prototype._hasParent=function(t){var e=this._parentage;return e===t||Array.isArray(e)&&e.includes(t)},t.prototype._addParent=function(t){var e=this._parentage;this._parentage=Array.isArray(e)?(e.push(t),e):e?[e,t]:t},t.prototype._removeParent=function(t){var e=this._parentage;e===t?this._parentage=null:Array.isArray(e)&&x(e,t)},t.prototype.remove=function(e){var n=this._finalizers;n&&x(n,e),e instanceof t&&e._removeParent(this)},t.EMPTY=function(){var e=new t;return e.closed=!0,e}(),t}(),_=S.EMPTY;function E(t){return t instanceof S||t&&"closed"in t&&b(t.remove)&&b(t.add)&&b(t.unsubscribe)}function k(t){b(t)?t():t.unsubscribe()}var P={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},R={setTimeout:function(t,e){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i=R.delegate;return(null==i?void 0:i.setTimeout)?i.setTimeout.apply(i,y([t,e],g(n))):setTimeout.apply(void 0,y([t,e],g(n)))},clearTimeout:function(t){var e=R.delegate;return((null==e?void 0:e.clearTimeout)||clearTimeout)(t)},delegate:void 0};function M(t){R.setTimeout((function(){var e=P.onUnhandledError;if(!e)throw t;e(t)}))}function T(){}var O=A("C",void 0,void 0);function A(t,e,n){return{kind:t,value:e,error:n}}var C=null;function B(t){if(P.useDeprecatedSynchronousErrorHandling){var e=!C;if(e&&(C={errorThrown:!1,error:null}),t(),e){var n=C,r=n.errorThrown,i=n.error;if(C=null,r)throw i}}else t()}var L=function(t){function e(e){var n=t.call(this)||this;return n.isStopped=!1,e?(n.destination=e,E(e)&&e.add(n)):n.destination=U,n}return p(e,t),e.create=function(t,e,n){return new q(t,e,n)},e.prototype.next=function(t){this.isStopped?F(function(t){return A("N",t,void 0)}(t),this):this._next(t)},e.prototype.error=function(t){this.isStopped?F(A("E",void 0,t),this):(this.isStopped=!0,this._error(t))},e.prototype.complete=function(){this.isStopped?F(O,this):(this.isStopped=!0,this._complete())},e.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,t.prototype.unsubscribe.call(this),this.destination=null)},e.prototype._next=function(t){this.destination.next(t)},e.prototype._error=function(t){try{this.destination.error(t)}finally{this.unsubscribe()}},e.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},e}(S),I=Function.prototype.bind;function j(t,e){return I.call(t,e)}var N=function(){function t(t){this.partialObserver=t}return t.prototype.next=function(t){var e=this.partialObserver;if(e.next)try{e.next(t)}catch(t){D(t)}},t.prototype.error=function(t){var e=this.partialObserver;if(e.error)try{e.error(t)}catch(t){D(t)}else D(t)},t.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(t){D(t)}},t}(),q=function(t){function e(e,n,r){var i,s,o=t.call(this)||this;return b(e)||!e?i={next:null!=e?e:void 0,error:null!=n?n:void 0,complete:null!=r?r:void 0}:o&&P.useDeprecatedNextContext?((s=Object.create(e)).unsubscribe=function(){return o.unsubscribe()},i={next:e.next&&j(e.next,s),error:e.error&&j(e.error,s),complete:e.complete&&j(e.complete,s)}):i=e,o.destination=new N(i),o}return p(e,t),e}(L);function D(t){var e;P.useDeprecatedSynchronousErrorHandling?(e=t,P.useDeprecatedSynchronousErrorHandling&&C&&(C.errorThrown=!0,C.error=e)):M(t)}function F(t,e){var n=P.onStoppedNotification;n&&R.setTimeout((function(){return n(t,e)}))}var U={closed:!0,next:T,error:function(t){throw t},complete:T},V="function"==typeof Symbol&&Symbol.observable||"@@observable";function Y(t){return t}var z=function(){function t(t){t&&(this._subscribe=t)}return t.prototype.lift=function(e){var n=new t;return n.source=this,n.operator=e,n},t.prototype.subscribe=function(t,e,n){var r=this,i=function(t){return t&&t instanceof L||function(t){return t&&b(t.next)&&b(t.error)&&b(t.complete)}(t)&&E(t)}(t)?t:new q(t,e,n);return B((function(){var t=r,e=t.operator,n=t.source;i.add(e?e.call(i,n):n?r._subscribe(i):r._trySubscribe(i))})),i},t.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){t.error(e)}},t.prototype.forEach=function(t,e){var n=this;return new(e=X(e))((function(e,r){var i=new q({next:function(e){try{t(e)}catch(t){r(t),i.unsubscribe()}},error:r,complete:e});n.subscribe(i)}))},t.prototype._subscribe=function(t){var e;return null===(e=this.source)||void 0===e?void 0:e.subscribe(t)},t.prototype[V]=function(){return this},t.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return(0===(n=t).length?Y:1===n.length?n[0]:function(t){return n.reduce((function(t,e){return e(t)}),t)})(this);var n},t.prototype.toPromise=function(t){var e=this;return new(t=X(t))((function(t,n){var r;e.subscribe((function(t){return r=t}),(function(t){return n(t)}),(function(){return t(r)}))}))},t.create=function(e){return new t(e)},t}();function X(t){var e;return null!==(e=null!=t?t:P.Promise)&&void 0!==e?e:Promise}var $=v((function(t){return function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}})),W=function(t){function e(){var e=t.call(this)||this;return e.closed=!1,e.currentObservers=null,e.observers=[],e.isStopped=!1,e.hasError=!1,e.thrownError=null,e}return p(e,t),e.prototype.lift=function(t){var e=new G(this,this);return e.operator=t,e},e.prototype._throwIfClosed=function(){if(this.closed)throw new $},e.prototype.next=function(t){var e=this;B((function(){var n,r;if(e._throwIfClosed(),!e.isStopped){e.currentObservers||(e.currentObservers=Array.from(e.observers));try{for(var i=d(e.currentObservers),s=i.next();!s.done;s=i.next())s.value.next(t)}catch(t){n={error:t}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}}))},e.prototype.error=function(t){var e=this;B((function(){if(e._throwIfClosed(),!e.isStopped){e.hasError=e.isStopped=!0,e.thrownError=t;for(var n=e.observers;n.length;)n.shift().error(t)}}))},e.prototype.complete=function(){var t=this;B((function(){if(t._throwIfClosed(),!t.isStopped){t.isStopped=!0;for(var e=t.observers;e.length;)e.shift().complete()}}))},e.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(e.prototype,"observed",{get:function(){var t;return(null===(t=this.observers)||void 0===t?void 0:t.length)>0},enumerable:!1,configurable:!0}),e.prototype._trySubscribe=function(e){return this._throwIfClosed(),t.prototype._trySubscribe.call(this,e)},e.prototype._subscribe=function(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)},e.prototype._innerSubscribe=function(t){var e=this,n=this,r=n.hasError,i=n.isStopped,s=n.observers;return r||i?_:(this.currentObservers=null,s.push(t),new S((function(){e.currentObservers=null,x(s,t)})))},e.prototype._checkFinalizedStatuses=function(t){var e=this,n=e.hasError,r=e.thrownError,i=e.isStopped;n?t.error(r):i&&t.complete()},e.prototype.asObservable=function(){var t=new z;return t.source=this,t},e.create=function(t,e){return new G(t,e)},e}(z),G=function(t){function e(e,n){var r=t.call(this)||this;return r.destination=e,r.source=n,r}return p(e,t),e.prototype.next=function(t){var e,n;null===(n=null===(e=this.destination)||void 0===e?void 0:e.next)||void 0===n||n.call(e,t)},e.prototype.error=function(t){var e,n;null===(n=null===(e=this.destination)||void 0===e?void 0:e.error)||void 0===n||n.call(e,t)},e.prototype.complete=function(){var t,e;null===(e=null===(t=this.destination)||void 0===t?void 0:t.complete)||void 0===e||e.call(t)},e.prototype._subscribe=function(t){var e,n;return null!==(n=null===(e=this.source)||void 0===e?void 0:e.subscribe(t))&&void 0!==n?n:_},e}(W),H=function(t){function e(e){var n=t.call(this)||this;return n._value=e,n}return p(e,t),Object.defineProperty(e.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),e.prototype._subscribe=function(e){var n=t.prototype._subscribe.call(this,e);return!n.closed&&e.next(this._value),n},e.prototype.getValue=function(){var t=this,e=t.hasError,n=t.thrownError,r=t._value;if(e)throw n;return this._throwIfClosed(),r},e.prototype.next=function(e){t.prototype.next.call(this,this._value=e)},e}(W),J={now:function(){return(J.delegate||Date).now()},delegate:void 0},K=function(t){function e(e,n,r){void 0===e&&(e=1/0),void 0===n&&(n=1/0),void 0===r&&(r=J);var i=t.call(this)||this;return i._bufferSize=e,i._windowTime=n,i._timestampProvider=r,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,e),i._windowTime=Math.max(1,n),i}return p(e,t),e.prototype.next=function(e){var n=this,r=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,o=n._timestampProvider,a=n._windowTime;r||(i.push(e),!s&&i.push(o.now()+a)),this._trimBuffer(),t.prototype.next.call(this,e)},e.prototype._subscribe=function(t){this._throwIfClosed(),this._trimBuffer();for(var e=this._innerSubscribe(t),n=this._infiniteTimeWindow,r=this._buffer.slice(),i=0;i<r.length&&!t.closed;i+=n?1:2)t.next(r[i]);return this._checkFinalizedStatuses(t),e},e.prototype._trimBuffer=function(){var t=this,e=t._bufferSize,n=t._timestampProvider,r=t._buffer,i=t._infiniteTimeWindow,s=(i?1:2)*e;if(e<1/0&&s<r.length&&r.splice(0,r.length-s),!i){for(var o=n.now(),a=0,c=1;c<r.length&&r[c]<=o;c+=2)a=c;a&&r.splice(0,a+1)}},e}(W);function Q(t){return function(e){if(function(t){return b(null==t?void 0:t.lift)}(e))return e.lift((function(e){try{return t(e,this)}catch(t){this.error(t)}}));throw new TypeError("Unable to lift unknown Observable type")}}function Z(t,e,n,r,i){return new tt(t,e,n,r,i)}var tt=function(t){function e(e,n,r,i,s,o){var a=t.call(this,e)||this;return a.onFinalize=s,a.shouldUnsubscribe=o,a._next=n?function(t){try{n(t)}catch(t){e.error(t)}}:t.prototype._next,a._error=i?function(t){try{i(t)}catch(t){e.error(t)}finally{this.unsubscribe()}}:t.prototype._error,a._complete=r?function(){try{r()}catch(t){e.error(t)}finally{this.unsubscribe()}}:t.prototype._complete,a}return p(e,t),e.prototype.unsubscribe=function(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;t.prototype.unsubscribe.call(this),!n&&(null===(e=this.onFinalize)||void 0===e||e.call(this))}},e}(L);function et(){return Q((function(t,e){var n,r=!1;t.subscribe(Z(e,(function(t){var i=n;n=t,r&&e.next([i,t]),r=!0})))}))}function nt(t,e){return Q((function(n,r){var i=0;n.subscribe(Z(r,(function(n){return t.call(e,n,i++)&&r.next(n)})))}))}function rt(t,e){return Q((function(n,r){var i=0;n.subscribe(Z(r,(function(n){r.next(t.call(e,n,i++))})))}))}var it=function(t){return t&&"number"==typeof t.length&&"function"!=typeof t},st="function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator";function ot(t){if(t instanceof z)return t;if(null!=t){if(function(t){return b(t[V])}(t))return i=t,new z((function(t){var e=i[V]();if(b(e.subscribe))return e.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")}));if(it(t))return r=t,new z((function(t){for(var e=0;e<r.length&&!t.closed;e++)t.next(r[e]);t.complete()}));if(function(t){return b(null==t?void 0:t.then)}(t))return n=t,new z((function(t){n.then((function(e){t.closed||(t.next(e),t.complete())}),(function(e){return t.error(e)})).then(null,M)}));if(function(t){return Symbol.asyncIterator&&b(null==t?void 0:t[Symbol.asyncIterator])}(t))return at(t);if(function(t){return b(null==t?void 0:t[st])}(t))return e=t,new z((function(t){var n,r;try{for(var i=d(e),s=i.next();!s.done;s=i.next()){var o=s.value;if(t.next(o),t.closed)return}}catch(t){n={error:t}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}t.complete()}));if(function(t){return b(null==t?void 0:t.getReader)}(t))return at(function(t){return function(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,i=n.apply(t,e||[]),s=[];return r=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),o("next"),o("throw"),o("return",(function(t){return function(e){return Promise.resolve(e).then(t,h)}})),r[Symbol.asyncIterator]=function(){return this},r;function o(t,e){i[t]&&(r[t]=function(e){return new Promise((function(n,r){s.push([t,e,n,r])>1||a(t,e)}))},e&&(r[t]=e(r[t])))}function a(t,e){try{(n=i[t](e)).value instanceof m?Promise.resolve(n.value.v).then(c,h):u(s[0][2],n)}catch(t){u(s[0][3],t)}var n}function c(t){a("next",t)}function h(t){a("throw",t)}function u(t,e){t(e),s.shift(),s.length&&a(s[0][0],s[0][1])}}(this,arguments,(function(){var e,n,r;return f(this,(function(i){switch(i.label){case 0:e=t.getReader(),i.label=1;case 1:i.trys.push([1,,9,10]),i.label=2;case 2:return[4,m(e.read())];case 3:return n=i.sent(),r=n.value,n.done?[4,m(void 0)]:[3,5];case 4:return[2,i.sent()];case 5:return[4,m(r)];case 6:return[4,i.sent()];case 7:return i.sent(),[3,2];case 8:return[3,10];case 9:return e.releaseLock(),[7];case 10:return[2]}}))}))}(t))}var e,n,r,i;throw function(t){return new TypeError("You provided "+(null!==t&&"object"==typeof t?"an invalid object":"'"+t+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}(t)}function at(t){return new z((function(e){(function(t,e){var n,r,i,s,o,a,c,h;return o=this,a=void 0,h=function(){var o,a;return f(this,(function(c){switch(c.label){case 0:c.trys.push([0,5,6,11]),n=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t=d(t),e={},r("next"),r("throw"),r("return"),e[Symbol.asyncIterator]=function(){return this},e);function r(n){e[n]=t[n]&&function(e){return new Promise((function(r,i){!function(t,e,n,r){Promise.resolve(r).then((function(e){t({value:e,done:n})}),e)}(r,i,(e=t[n](e)).done,e.value)}))}}}(t),c.label=1;case 1:return[4,n.next()];case 2:if((r=c.sent()).done)return[3,4];if(o=r.value,e.next(o),e.closed)return[2];c.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return a=c.sent(),i={error:a},[3,11];case 6:return c.trys.push([6,,9,10]),r&&!r.done&&(s=n.return)?[4,s.call(n)]:[3,8];case 7:c.sent(),c.label=8;case 8:return[3,10];case 9:if(i)throw i.error;return[7];case 10:return[7];case 11:return e.complete(),[2]}}))},new((c=void 0)||(c=Promise))((function(t,e){function n(t){try{i(h.next(t))}catch(t){e(t)}}function r(t){try{i(h.throw(t))}catch(t){e(t)}}function i(e){e.done?t(e.value):function(t){return t instanceof c?t:new c((function(e){e(t)}))}(e.value).then(n,r)}i((h=h.apply(o,a||[])).next())}))})(t,e).catch((function(t){return e.error(t)}))}))}function ct(t){void 0===t&&(t={});var e=t.connector,n=void 0===e?function(){return new W}:e,r=t.resetOnError,i=void 0===r||r,s=t.resetOnComplete,o=void 0===s||s,a=t.resetOnRefCountZero,c=void 0===a||a;return function(t){var e,r,s,a=0,h=!1,u=!1,l=function(){null==r||r.unsubscribe(),r=void 0},p=function(){l(),e=s=void 0,h=u=!1},f=function(){var t=e;p(),null==t||t.unsubscribe()};return Q((function(t,d){a++,u||h||l();var g=s=null!=s?s:n();d.add((function(){0!=--a||u||h||(r=ht(f,c))})),g.subscribe(d),!e&&a>0&&(e=new q({next:function(t){return g.next(t)},error:function(t){u=!0,l(),r=ht(p,i,t),g.error(t)},complete:function(){h=!0,l(),r=ht(p,o),g.complete()}}),ot(t).subscribe(e))}))(t)}}function ht(t,e){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];if(!0!==e){if(!1!==e){var i=new q({next:function(){i.unsubscribe(),t()}});return ot(e.apply(void 0,y([],g(n)))).subscribe(i)}}else t()}function ut(t,e,n){return void 0===n&&(n=1/0),b(e)?ut((function(n,r){return rt((function(t,i){return e(n,t,r,i)}))(ot(t(n,r)))}),n):("number"==typeof e&&(n=e),Q((function(e,r){return function(t,e,n,r,i,s,o,a){var c=[],h=0,u=0,l=!1,p=function(){!l||c.length||h||e.complete()},f=function(t){return h<r?d(t):c.push(t)},d=function(t){h++;var i=!1;ot(n(t,u++)).subscribe(Z(e,(function(t){e.next(t)}),(function(){i=!0}),void 0,(function(){if(i)try{h--;for(var t=function(){var t=c.shift();d(t)};c.length&&h<r;)t();p()}catch(t){e.error(t)}})))};return t.subscribe(Z(e,f,(function(){l=!0,p()}))),function(){}}(e,r,t,n)})))}function lt(t,e,n={}){const r={type:"Feature"};return(0===n.id||n.id)&&(r.id=n.id),n.bbox&&(r.bbox=n.bbox),r.properties=e||{},r.geometry=t,r}function pt(t,e,n={}){for(const e of t){if(e.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(e[e.length-1].length!==e[0].length)throw new Error("First and last Position are not equivalent.");for(let t=0;t<e[e.length-1].length;t++)if(e[e.length-1][t]!==e[0][t])throw new Error("First and last Position are not equivalent.")}return lt({type:"Polygon",coordinates:t},e,n)}function ft(t,e={}){const n={type:"FeatureCollection"};return e.id&&(n.id=e.id),e.bbox&&(n.bbox=e.bbox),n.features=t,n}function dt(t){return!isNaN(t)&&null!==t&&!Array.isArray(t)}function gt(t,e,n){if(null!==t)for(var r,i,s,o,a,c,h,u,l=0,p=0,f=t.type,d="FeatureCollection"===f,g="Feature"===f,y=d?t.features.length:1,m=0;m<y;m++){a=(u=!!(h=d?t.features[m].geometry:g?t.geometry:t)&&"GeometryCollection"===h.type)?h.geometries.length:1;for(var b=0;b<a;b++){var v=0,w=0;if(null!==(o=u?h.geometries[b]:h)){c=o.coordinates;var x=o.type;switch(l=!n||"Polygon"!==x&&"MultiPolygon"!==x?0:1,x){case null:break;case"Point":if(!1===e(c,p,m,v,w))return!1;p++,v++;break;case"LineString":case"MultiPoint":for(r=0;r<c.length;r++){if(!1===e(c[r],p,m,v,w))return!1;p++,"MultiPoint"===x&&v++}"LineString"===x&&v++;break;case"Polygon":case"MultiLineString":for(r=0;r<c.length;r++){for(i=0;i<c[r].length-l;i++){if(!1===e(c[r][i],p,m,v,w))return!1;p++}"MultiLineString"===x&&v++,"Polygon"===x&&w++}"Polygon"===x&&v++;break;case"MultiPolygon":for(r=0;r<c.length;r++){for(w=0,i=0;i<c[r].length;i++){for(s=0;s<c[r][i].length-l;s++){if(!1===e(c[r][i][s],p,m,v,w))return!1;p++}w++}v++}break;case"GeometryCollection":for(r=0;r<o.geometries.length;r++)if(!1===gt(o.geometries[r],e,n))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function yt(t,e){var n,r,i,s,o,a,c,h,u,l,p=0,f="FeatureCollection"===t.type,d="Feature"===t.type,g=f?t.features.length:1;for(n=0;n<g;n++){for(a=f?t.features[n].geometry:d?t.geometry:t,h=f?t.features[n].properties:d?t.properties:{},u=f?t.features[n].bbox:d?t.bbox:void 0,l=f?t.features[n].id:d?t.id:void 0,o=(c=!!a&&"GeometryCollection"===a.type)?a.geometries.length:1,i=0;i<o;i++)if(null!==(s=c?a.geometries[i]:a))switch(s.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===e(s,p,h,u,l))return!1;break;case"GeometryCollection":for(r=0;r<s.geometries.length;r++)if(!1===e(s.geometries[r],p,h,u,l))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===e(null,p,h,u,l))return!1;p++}}function mt(t,e){yt(t,(function(t,n,r,i,s){var o,a=null===t?null:t.type;switch(a){case null:case"Point":case"LineString":case"Polygon":return!1!==e(lt(t,r,{bbox:i,id:s}),n,0)&&void 0}switch(a){case"MultiPoint":o="Point";break;case"MultiLineString":o="LineString";break;case"MultiPolygon":o="Polygon"}for(var c=0;c<t.coordinates.length;c++){var h=t.coordinates[c];if(!1===e(lt({type:o,coordinates:h},r),n,c))return!1}}))}function bt(t,e={}){if(null!=t.bbox&&!0!==e.recompute)return t.bbox;const n=[1/0,1/0,-1/0,-1/0];return gt(t,(t=>{n[0]>t[0]&&(n[0]=t[0]),n[1]>t[1]&&(n[1]=t[1]),n[2]<t[0]&&(n[2]=t[0]),n[3]<t[1]&&(n[3]=t[1])})),n}function vt(t,e={}){const n=Number(t[0]),r=Number(t[1]),i=Number(t[2]),s=Number(t[3]);if(6===t.length)throw new Error("@turf/bbox-polygon does not support BBox with 6 positions");const o=[n,r];return pt([[o,[i,r],[i,s],[n,s],o]],e.properties,{bbox:t,id:e.id})}Math.PI;var wt=n(73);function xt(t,e={}){const n=[];if(yt(t,(t=>{n.push(t.coordinates)})),n.length<2)throw new Error("Must have at least 2 geometries");const r=wt.union(n[0],...n.slice(1));return 0===r.length?null:1===r.length?pt(r[0],e.properties):function(t,e,n={}){return lt({type:"MultiPolygon",coordinates:t},e,n)}(r,e.properties)}function St(t,e,n=0,r=t.length-1,i=Et){for(;r>n;){if(r-n>600){const s=r-n+1,o=e-n+1,a=Math.log(s),c=.5*Math.exp(2*a/3),h=.5*Math.sqrt(a*c*(s-c)/s)*(o-s/2<0?-1:1);St(t,e,Math.max(n,Math.floor(e-o*c/s+h)),Math.min(r,Math.floor(e+(s-o)*c/s+h)),i)}const s=t[e];let o=n,a=r;for(_t(t,n,e),i(t[r],s)>0&&_t(t,n,r);o<a;){for(_t(t,o,a),o++,a--;i(t[o],s)<0;)o++;for(;i(t[a],s)>0;)a--}0===i(t[n],s)?_t(t,n,a):(a++,_t(t,a,r)),a<=e&&(n=a+1),e<=a&&(r=a-1)}}function _t(t,e,n){const r=t[e];t[e]=t[n],t[n]=r}function Et(t,e){return t<e?-1:t>e?1:0}class kt{constructor(t=9){this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()}all(){return this._all(this.data,[])}search(t){let e=this.data;const n=[];if(!jt(t,e))return n;const r=this.toBBox,i=[];for(;e;){for(let s=0;s<e.children.length;s++){const o=e.children[s],a=e.leaf?r(o):o;jt(t,a)&&(e.leaf?n.push(o):It(t,a)?this._all(o,n):i.push(o))}e=i.pop()}return n}collides(t){let e=this.data;if(!jt(t,e))return!1;const n=[];for(;e;){for(let r=0;r<e.children.length;r++){const i=e.children[r],s=e.leaf?this.toBBox(i):i;if(jt(t,s)){if(e.leaf||It(t,s))return!0;n.push(i)}}e=n.pop()}return!1}load(t){if(!t||!t.length)return this;if(t.length<this._minEntries){for(let e=0;e<t.length;e++)this.insert(t[e]);return this}let e=this._build(t.slice(),0,t.length-1,0);if(this.data.children.length)if(this.data.height===e.height)this._splitRoot(this.data,e);else{if(this.data.height<e.height){const t=this.data;this.data=e,e=t}this._insert(e,this.data.height-e.height-1,!0)}else this.data=e;return this}insert(t){return t&&this._insert(t,this.data.height-1),this}clear(){return this.data=Nt([]),this}remove(t,e){if(!t)return this;let n=this.data;const r=this.toBBox(t),i=[],s=[];let o,a,c;for(;n||i.length;){if(n||(n=i.pop(),a=i[i.length-1],o=s.pop(),c=!0),n.leaf){const r=Pt(t,n.children,e);if(-1!==r)return n.children.splice(r,1),i.push(n),this._condense(i),this}c||n.leaf||!It(n,r)?a?(o++,n=a.children[o],c=!1):n=null:(i.push(n),s.push(o),o=0,a=n,n=n.children[0])}return this}toBBox(t){return t}compareMinX(t,e){return t.minX-e.minX}compareMinY(t,e){return t.minY-e.minY}toJSON(){return this.data}fromJSON(t){return this.data=t,this}_all(t,e){const n=[];for(;t;)t.leaf?e.push(...t.children):n.push(...t.children),t=n.pop();return e}_build(t,e,n,r){const i=n-e+1;let s,o=this._maxEntries;if(i<=o)return s=Nt(t.slice(e,n+1)),Rt(s,this.toBBox),s;r||(r=Math.ceil(Math.log(i)/Math.log(o)),o=Math.ceil(i/Math.pow(o,r-1))),s=Nt([]),s.leaf=!1,s.height=r;const a=Math.ceil(i/o),c=a*Math.ceil(Math.sqrt(o));qt(t,e,n,c,this.compareMinX);for(let i=e;i<=n;i+=c){const e=Math.min(i+c-1,n);qt(t,i,e,a,this.compareMinY);for(let n=i;n<=e;n+=a){const i=Math.min(n+a-1,e);s.children.push(this._build(t,n,i,r-1))}}return Rt(s,this.toBBox),s}_chooseSubtree(t,e,n,r){for(;r.push(e),!e.leaf&&r.length-1!==n;){let n,r=1/0,o=1/0;for(let a=0;a<e.children.length;a++){const c=e.children[a],h=Ct(c),u=(i=t,s=c,(Math.max(s.maxX,i.maxX)-Math.min(s.minX,i.minX))*(Math.max(s.maxY,i.maxY)-Math.min(s.minY,i.minY))-h);u<o?(o=u,r=h<r?h:r,n=c):u===o&&h<r&&(r=h,n=c)}e=n||e.children[0]}var i,s;return e}_insert(t,e,n){const r=n?t:this.toBBox(t),i=[],s=this._chooseSubtree(r,this.data,e,i);for(s.children.push(t),Tt(s,r);e>=0&&i[e].children.length>this._maxEntries;)this._split(i,e),e--;this._adjustParentBBoxes(r,i,e)}_split(t,e){const n=t[e],r=n.children.length,i=this._minEntries;this._chooseSplitAxis(n,i,r);const s=this._chooseSplitIndex(n,i,r),o=Nt(n.children.splice(s,n.children.length-s));o.height=n.height,o.leaf=n.leaf,Rt(n,this.toBBox),Rt(o,this.toBBox),e?t[e-1].children.push(o):this._splitRoot(n,o)}_splitRoot(t,e){this.data=Nt([t,e]),this.data.height=t.height+1,this.data.leaf=!1,Rt(this.data,this.toBBox)}_chooseSplitIndex(t,e,n){let r,i=1/0,s=1/0;for(let o=e;o<=n-e;o++){const e=Mt(t,0,o,this.toBBox),a=Mt(t,o,n,this.toBBox),c=Lt(e,a),h=Ct(e)+Ct(a);c<i?(i=c,r=o,s=h<s?h:s):c===i&&h<s&&(s=h,r=o)}return r||n-e}_chooseSplitAxis(t,e,n){const r=t.leaf?this.compareMinX:Ot,i=t.leaf?this.compareMinY:At;this._allDistMargin(t,e,n,r)<this._allDistMargin(t,e,n,i)&&t.children.sort(r)}_allDistMargin(t,e,n,r){t.children.sort(r);const i=this.toBBox,s=Mt(t,0,e,i),o=Mt(t,n-e,n,i);let a=Bt(s)+Bt(o);for(let r=e;r<n-e;r++){const e=t.children[r];Tt(s,t.leaf?i(e):e),a+=Bt(s)}for(let r=n-e-1;r>=e;r--){const e=t.children[r];Tt(o,t.leaf?i(e):e),a+=Bt(o)}return a}_adjustParentBBoxes(t,e,n){for(let r=n;r>=0;r--)Tt(e[r],t)}_condense(t){for(let e,n=t.length-1;n>=0;n--)0===t[n].children.length?n>0?(e=t[n-1].children,e.splice(e.indexOf(t[n]),1)):this.clear():Rt(t[n],this.toBBox)}}function Pt(t,e,n){if(!n)return e.indexOf(t);for(let r=0;r<e.length;r++)if(n(t,e[r]))return r;return-1}function Rt(t,e){Mt(t,0,t.children.length,e,t)}function Mt(t,e,n,r,i){i||(i=Nt(null)),i.minX=1/0,i.minY=1/0,i.maxX=-1/0,i.maxY=-1/0;for(let s=e;s<n;s++){const e=t.children[s];Tt(i,t.leaf?r(e):e)}return i}function Tt(t,e){return t.minX=Math.min(t.minX,e.minX),t.minY=Math.min(t.minY,e.minY),t.maxX=Math.max(t.maxX,e.maxX),t.maxY=Math.max(t.maxY,e.maxY),t}function Ot(t,e){return t.minX-e.minX}function At(t,e){return t.minY-e.minY}function Ct(t){return(t.maxX-t.minX)*(t.maxY-t.minY)}function Bt(t){return t.maxX-t.minX+(t.maxY-t.minY)}function Lt(t,e){const n=Math.max(t.minX,e.minX),r=Math.max(t.minY,e.minY),i=Math.min(t.maxX,e.maxX),s=Math.min(t.maxY,e.maxY);return Math.max(0,i-n)*Math.max(0,s-r)}function It(t,e){return t.minX<=e.minX&&t.minY<=e.minY&&e.maxX<=t.maxX&&e.maxY<=t.maxY}function jt(t,e){return e.minX<=t.maxX&&e.minY<=t.maxY&&e.maxX>=t.minX&&e.maxY>=t.minY}function Nt(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function qt(t,e,n,r,i){const s=[e,n];for(;s.length;){if((n=s.pop())-(e=s.pop())<=r)continue;const o=e+Math.ceil((n-e)/r/2)*r;St(t,o,e,n,i),s.push(e,o,o,n)}}function Dt(t){return vt(t)}function Ft(t){return t[0]<t[2]&&t[1]<t[3]}function Ut(t,e){const[n,r,i,s]=t,[o,a,c,h]=e,u=Math.max(n,o),l=Math.max(r,a),p=Math.min(i,c),f=Math.min(s,h);if(p<u||f<l)return 0;const d=(p-u)*(f-l);return d/((i-n)*(s-r)+(c-o)*(h-a)-d)}const Vt=function(t,e){for(var n=0,r=0,i=0,s=0,o=0,a=0,c=0,h=0,u=null,l=null,p=t[0],f=t[1],d=e.length;n<d;n++){r=0;var g=e[n].length-1,y=e[n];if((u=y[0])[0]!==y[g][0]&&u[1]!==y[g][1])throw new Error("First and last coordinates in a ring must be the same");for(o=u[0]-p,a=u[1]-f;r<g;r++)if(h=(l=y[r+1])[1]-f,a<0&&h<0||a>0&&h>0)a=h,o=(u=l)[0]-p;else{if(c=l[0]-t[0],h>0&&a<=0){if((s=o*h-c*a)>0)i+=1;else if(0===s)return 0}else if(a>0&&h<=0){if((s=o*h-c*a)<0)i+=1;else if(0===s)return 0}else if(0===h&&a<0){if(0==(s=o*h-c*a))return 0}else if(0===a&&h<0){if(0==(s=o*h-c*a))return 0}else if(0===a&&0===h){if(c<=0&&o>=0)return 0;if(o<=0&&c>=0)return 0}u=l,a=h,o=c}}return i%2!=0};function Yt(t){if(!t)throw new Error("coord is required");if(!Array.isArray(t)){if("Feature"===t.type&&null!==t.geometry&&"Point"===t.geometry.type)return[...t.geometry.coordinates];if("Point"===t.type)return[...t.coordinates]}if(Array.isArray(t)&&t.length>=2&&!Array.isArray(t[0])&&!Array.isArray(t[1]))return[...t];throw new Error("coord must be GeoJSON Point or an Array of numbers")}function zt(t){return"Feature"===t.type?t.geometry:t}function Xt(t,e,n={}){if(!t)throw new Error("point is required");if(!e)throw new Error("polygon is required");const r=Yt(t),i=zt(e),s=i.type,o=e.bbox;let a=i.coordinates;if(o&&!1===function(t,e){return e[0]<=t[0]&&e[1]<=t[1]&&e[2]>=t[0]&&e[3]>=t[1]}(r,o))return!1;"Polygon"===s&&(a=[a]);let c=!1;for(var h=0;h<a.length;++h){const t=Vt(r,a[h]);if(0===t)return!n.ignoreBoundary;t&&(c=!0)}return c}function $t(t,e,n={}){const r=Yt(t),i=function(t){if(Array.isArray(t))return t;if("Feature"===t.type){if(null!==t.geometry)return t.geometry.coordinates}else if(t.coordinates)return t.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}(e);for(let t=0;t<i.length-1;t++){let e=!1;if(n.ignoreEndVertices&&(0===t&&(e="start"),t===i.length-2&&(e="end"),0===t&&t+1===i.length-1&&(e="both")),Wt(i[t],i[t+1],r,e,void 0===n.epsilon?null:n.epsilon))return!0}return!1}function Wt(t,e,n,r,i){const s=n[0],o=n[1],a=t[0],c=t[1],h=e[0],u=e[1],l=h-a,p=u-c,f=(n[0]-a)*p-(n[1]-c)*l;if(null!==i){if(Math.abs(f)>i)return!1}else if(0!==f)return!1;return r?"start"===r?Math.abs(l)>=Math.abs(p)?l>0?a<s&&s<=h:h<=s&&s<a:p>0?c<o&&o<=u:u<=o&&o<c:"end"===r?Math.abs(l)>=Math.abs(p)?l>0?a<=s&&s<h:h<s&&s<=a:p>0?c<=o&&o<u:u<o&&o<=c:"both"===r&&(Math.abs(l)>=Math.abs(p)?l>0?a<s&&s<h:h<s&&s<a:p>0?c<o&&o<u:u<o&&o<c):Math.abs(l)>=Math.abs(p)?l>0?a<=s&&s<=h:h<=s&&s<=a:p>0?c<=o&&o<=u:u<=o&&o<=c}function Gt(t,e){const n=zt(t),r=zt(e),i=n.type,s=r.type,o=n.coordinates,a=r.coordinates;switch(i){case"Point":if("Point"===s)return Kt(o,a);throw new Error("feature2 "+s+" geometry not supported");case"MultiPoint":switch(s){case"Point":return function(t,e){let n,r=!1;for(n=0;n<t.coordinates.length;n++)if(Kt(t.coordinates[n],e.coordinates)){r=!0;break}return r}(n,r);case"MultiPoint":return function(t,e){for(const n of e.coordinates){let e=!1;for(const r of t.coordinates)if(Kt(n,r)){e=!0;break}if(!e)return!1}return!0}(n,r);default:throw new Error("feature2 "+s+" geometry not supported")}case"LineString":switch(s){case"Point":return $t(r,n,{ignoreEndVertices:!0});case"LineString":return function(t,e){let n=!1;for(const r of e.coordinates)if($t({type:"Point",coordinates:r},t,{ignoreEndVertices:!0})&&(n=!0),!$t({type:"Point",coordinates:r},t,{ignoreEndVertices:!1}))return!1;return n}(n,r);case"MultiPoint":return function(t,e){let n=!1;for(const r of e.coordinates)if($t(r,t,{ignoreEndVertices:!0})&&(n=!0),!$t(r,t))return!1;return!!n}(n,r);default:throw new Error("feature2 "+s+" geometry not supported")}case"Polygon":switch(s){case"Point":return Xt(r,n,{ignoreBoundary:!0});case"LineString":return function(t,e){let n=!1,r=0;if(!Jt(bt(t),bt(e)))return!1;for(;r<e.coordinates.length-1;r++)if(Xt({type:"Point",coordinates:(i=e.coordinates[r],s=e.coordinates[r+1],[(i[0]+s[0])/2,(i[1]+s[1])/2])},t,{ignoreBoundary:!0})){n=!0;break}var i,s;return n}(n,r);case"Polygon":return Ht(n,r);case"MultiPoint":return function(t,e){for(const n of e.coordinates)if(!Xt(n,t,{ignoreBoundary:!0}))return!1;return!0}(n,r);default:throw new Error("feature2 "+s+" geometry not supported")}case"MultiPolygon":if("Polygon"===s)return function(t,e){return t.coordinates.some((t=>Ht({type:"Polygon",coordinates:t},e)))}(n,r);throw new Error("feature2 "+s+" geometry not supported");default:throw new Error("feature1 "+i+" geometry not supported")}}function Ht(t,e){if("Feature"===t.type&&null===t.geometry)return!1;if("Feature"===e.type&&null===e.geometry)return!1;if(!Jt(bt(t),bt(e)))return!1;const n=zt(e).coordinates;for(const e of n)for(const n of e)if(!Xt(n,t))return!1;return!0}function Jt(t,e){return!(t[0]>e[0]||t[2]<e[2]||t[1]>e[1]||t[3]<e[3])}function Kt(t,e){return t[0]===e[0]&&t[1]===e[1]}class Qt{constructor(t=[],e=Zt){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t)}push(t){this.data.push(t),this.length++,this._up(this.length-1)}pop(){if(0===this.length)return;const t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:e,compare:n}=this,r=e[t];for(;t>0;){const i=t-1>>1,s=e[i];if(n(r,s)>=0)break;e[t]=s,t=i}e[t]=r}_down(t){const{data:e,compare:n}=this,r=this.length>>1,i=e[t];for(;t<r;){let r=1+(t<<1),s=e[r];const o=r+1;if(o<this.length&&n(e[o],s)<0&&(r=o,s=e[o]),n(s,i)>=0)break;e[t]=s,t=r}e[t]=i}}function Zt(t,e){return t<e?-1:t>e?1:0}function te(t,e){return t.p.x>e.p.x?1:t.p.x<e.p.x?-1:t.p.y!==e.p.y?t.p.y>e.p.y?1:-1:1}function ee(t,e){return t.rightSweepEvent.p.x>e.rightSweepEvent.p.x?1:t.rightSweepEvent.p.x<e.rightSweepEvent.p.x?-1:t.rightSweepEvent.p.y!==e.rightSweepEvent.p.y?t.rightSweepEvent.p.y<e.rightSweepEvent.p.y?1:-1:1}class ne{constructor(t,e,n,r){this.p={x:t[0],y:t[1]},this.featureId=e,this.ringId=n,this.eventId=r,this.otherEvent=null,this.isLeftEndpoint=null}isSamePoint(t){return this.p.x===t.p.x&&this.p.y===t.p.y}}let re=0,ie=0,se=0;function oe(t,e){const n="Feature"===t.type?t.geometry:t;let r=n.coordinates;"Polygon"!==n.type&&"MultiLineString"!==n.type||(r=[r]),"LineString"===n.type&&(r=[[r]]);for(let t=0;t<r.length;t++)for(let n=0;n<r[t].length;n++){let i=r[t][n][0],s=null;ie+=1;for(let o=0;o<r[t][n].length-1;o++){s=r[t][n][o+1];const a=new ne(i,re,ie,se),c=new ne(s,re,ie,se+1);a.otherEvent=c,c.otherEvent=a,te(a,c)>0?(c.isLeftEndpoint=!0,a.isLeftEndpoint=!1):(a.isLeftEndpoint=!0,c.isLeftEndpoint=!1),e.push(a),e.push(c),i=s,se+=1}}re+=1}class ae{constructor(t){this.leftSweepEvent=t,this.rightSweepEvent=t.otherEvent}}function ce(t,e){if(null===t||null===e)return!1;if(t.leftSweepEvent.ringId===e.leftSweepEvent.ringId&&(t.rightSweepEvent.isSamePoint(e.leftSweepEvent)||t.rightSweepEvent.isSamePoint(e.leftSweepEvent)||t.rightSweepEvent.isSamePoint(e.rightSweepEvent)||t.leftSweepEvent.isSamePoint(e.leftSweepEvent)||t.leftSweepEvent.isSamePoint(e.rightSweepEvent)))return!1;const n=t.leftSweepEvent.p.x,r=t.leftSweepEvent.p.y,i=t.rightSweepEvent.p.x,s=t.rightSweepEvent.p.y,o=e.leftSweepEvent.p.x,a=e.leftSweepEvent.p.y,c=e.rightSweepEvent.p.x,h=e.rightSweepEvent.p.y,u=(h-a)*(i-n)-(c-o)*(s-r);if(0===u)return!1;const l=((c-o)*(r-a)-(h-a)*(n-o))/u,p=((i-n)*(r-a)-(s-r)*(n-o))/u;return l>=0&&l<=1&&p>=0&&p<=1&&[n+l*(i-n),r+l*(s-r)]}var he=function(t,e){const n=new Qt([],te);return function(t,e){if("FeatureCollection"===t.type){const n=t.features;for(let t=0;t<n.length;t++)oe(n[t],e)}else oe(t,e)}(t,n),function(t,e){e=e||!1;const n=[],r=new Qt([],ee);for(;t.length;){const i=t.pop();if(i.isLeftEndpoint){const t=new ae(i);for(let s=0;s<r.data.length;s++){const o=r.data[s];if(e&&o.leftSweepEvent.featureId===i.featureId)continue;const a=ce(t,o);!1!==a&&n.push(a)}r.push(t)}else!1===i.isLeftEndpoint&&r.pop()}return n}(n,e)};function ue(t,e,n={}){const{removeDuplicates:r=!0,ignoreSelfIntersections:i=!1}=n;let s=[];"FeatureCollection"===t.type?s=s.concat(t.features):"Feature"===t.type?s.push(t):"LineString"!==t.type&&"Polygon"!==t.type&&"MultiLineString"!==t.type&&"MultiPolygon"!==t.type||s.push(lt(t)),"FeatureCollection"===e.type?s=s.concat(e.features):"Feature"===e.type?s.push(e):"LineString"!==e.type&&"Polygon"!==e.type&&"MultiLineString"!==e.type&&"MultiPolygon"!==e.type||s.push(lt(e));const o=he(ft(s),i);let a=[];if(r){const t={};o.forEach((e=>{const n=e.join(",");t[n]||(t[n]=!0,a.push(e))}))}else a=o;return ft(a.map((t=>function(t,e,n={}){if(!t)throw new Error("coordinates is required");if(!Array.isArray(t))throw new Error("coordinates must be an Array");if(t.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!dt(t[0])||!dt(t[1]))throw new Error("coordinates must contain numbers");return lt({type:"Point",coordinates:t},e,n)}(t))))}function le(t,e={}){const n=zt(t);switch(e.properties||"Feature"!==t.type||(e.properties=t.properties),n.type){case"Polygon":return function(t,e={}){return pe(zt(t).coordinates,e.properties?e.properties:"Feature"===t.type?t.properties:{})}(n,e);case"MultiPolygon":return function(t,e={}){const n=zt(t).coordinates,r=e.properties?e.properties:"Feature"===t.type?t.properties:{},i=[];return n.forEach((t=>{i.push(pe(t,r))})),ft(i)}(n,e);default:throw new Error("invalid poly")}}function pe(t,e){return t.length>1?function(t,e,n={}){return lt({type:"MultiLineString",coordinates:t},e,n)}(t,e):function(t,e,n={}){if(t.length<2)throw new Error("coordinates must be an array of two or more positions");return lt({type:"LineString",coordinates:t},e,n)}(t[0],e)}function fe(t,e){for(let n=0;n<t.coordinates.length-1;n++)if(ge(t.coordinates[n],t.coordinates[n+1],e.coordinates))return!0;return!1}function de(t,e,n){for(const n of e.coordinates)if(Xt(n,t))return!0;return ue(e,le(t),{ignoreSelfIntersections:n}).features.length>0}function ge(t,e,n){const r=n[0]-t[0],i=n[1]-t[1],s=e[0]-t[0],o=e[1]-t[1];return 0==r*o-i*s&&(Math.abs(s)>=Math.abs(o)?s>0?t[0]<=n[0]&&n[0]<=e[0]:e[0]<=n[0]&&n[0]<=t[0]:o>0?t[1]<=n[1]&&n[1]<=e[1]:e[1]<=n[1]&&n[1]<=t[1])}function ye(t,e,n={}){var r;const i=null!=(r=n.ignoreSelfIntersections)&&r;let s=!1;return mt(t,(t=>{mt(e,(e=>{if(!0===s)return!0;s=!function(t,e,n={}){var r;const i=null!=(r=n.ignoreSelfIntersections)&&r;let s=!0;return mt(t,(t=>{mt(e,(e=>{if(!1===s)return!1;s=function(t,e,n){switch(t.type){case"Point":switch(e.type){case"Point":return r=t.coordinates,i=e.coordinates,!(r[0]===i[0]&&r[1]===i[1]);case"LineString":return!fe(e,t);case"Polygon":return!Xt(t,e)}break;case"LineString":switch(e.type){case"Point":return!fe(t,e);case"LineString":return!function(t,e,n){return ue(t,e,{ignoreSelfIntersections:n}).features.length>0}(t,e,n);case"Polygon":return!de(e,t,n)}break;case"Polygon":switch(e.type){case"Point":return!Xt(e,t);case"LineString":return!de(t,e,n);case"Polygon":return!function(t,e,n){for(const n of t.coordinates[0])if(Xt(n,e))return!0;for(const n of e.coordinates[0])if(Xt(n,t))return!0;return ue(le(t),le(e),{ignoreSelfIntersections:n}).features.length>0}(e,t,n)}}var r,i;return!1}(t.geometry,e.geometry,i)}))})),s}(t.geometry,e.geometry,{ignoreSelfIntersections:i})}))})),s}const me=(t,e)=>{const{origWidth:n,origHeight:r}=e,i=t.points.map((([t,e])=>[t*n/100,e*r/100]));return i.length>0&&!be(i[0],i[i.length-1])&&i.push(i[0]),{...t,points:i}},be=(t,e)=>t[0]===e[0]&&t[1]===e[1],ve=t=>{const{origWidth:e,origHeight:n,inputWidth:r,inputHeight:i}=t;let[s,o,a,c]=t.boundingBox;return s=s*e/r,o=o*n/i,a=a*e/r,c=c*n/i,s=Math.max(0,Math.min(s,e)),o=Math.max(0,Math.min(o,n)),a=Math.max(0,Math.min(a,e)),c=Math.max(0,Math.min(c,n)),{...t,boundingBox:[s,o,a,c]}},we=(t,e,n)=>{if(t.confidence<n.object.confidence)return!1;if(0===e.length)return!0;const[r,i,s,o]=t.boundingBox,a=vt([r,i,s,o]);for(const n of e){const e=me(n,t),r=pt([e.points]);if(e.classes.length>0&&!e.classes.includes(t.label))continue;const i=ye(a,r),s=Gt(r,a);if(e.isPrivacyMask){if(i||s)return!1}else if("include"===e.filter){if("contain"===e.type){if(s)return!0}else if("intersect"===e.type&&(i||s))return!0}else if("exclude"===e.filter)if("contain"===e.type){if(!s)return!0}else if("intersect"===e.type&&!i&&!s)return!0}return!1};class xe extends o{logger;snapshotCache;cameraSubject;cameraState=new H(!1);lightState=new H(this.getLightState({state:!1},!0));motionState=new H(this.getMotionState({detections:[],state:!1},!0));audioState=new H(this.getAudioState({state:!1,db:0},!0));objectState=new H(this.getObjectState({detections:[]},!0));doorbellState=new H(this.getDoorbellState({state:!1},!0));sirenState=new H(this.getSirenState({state:!1,level:0},!0));batteryState=new H(this.getBatteryState({level:100,charging:!1,lowBattery:!1},!0));onConnected=this.createStateObservable(this.cameraState);onLightSwitched=this.createStateObservable(this.lightState);onMotionDetected=this.createStateObservable(this.motionState);onAudioDetected=this.createStateObservable(this.audioState);onObjectDetected=this.createStateObservable(this.objectState);onDoorbellPressed=this.createStateObservable(this.doorbellState);onSirenDetected=this.createStateObservable(this.sirenState);onBatteryChanged=this.createStateObservable(this.batteryState);get cameraObject(){return c(this.cameraSubject.getValue())}get id(){return this.cameraSubject.getValue()._id}get nativeId(){return this.cameraSubject.getValue().nativeId}get pluginId(){return this.cameraSubject.getValue().pluginId}get connected(){return this.cameraState.getValue()}get disabled(){return this.cameraSubject.getValue().disabled}get name(){return this.cameraSubject.getValue().name}get type(){return this.cameraSubject.getValue().type}get info(){return c(this.cameraSubject.getValue().info)}get isCloud(){return this.cameraSubject.getValue().isCloud}get hasLight(){return this.cameraSubject.getValue().hasLight}get hasSiren(){return this.cameraSubject.getValue().hasSiren}get hasBinarySensor(){return this.cameraSubject.getValue().hasBinarySensor}get hasBattery(){return this.cameraSubject.getValue().hasBattery}get hasMotionDetector(){return this.cameraSubject.getValue().hasMotionDetector}get hasAudioDetector(){return this.cameraSubject.getValue().hasAudioDetector}get hasObjectDetector(){return this.cameraSubject.getValue().hasObjectDetector}get hasPtz(){return this.cameraSubject.getValue().hasPtz}get hasPrebuffer(){return this.cameraSubject.getValue().hasPrebuffer}get snapshotTTL(){return this.cameraSubject.getValue().snapshotTTL}get activityZones(){return c(this.cameraSubject.getValue().activityZones)}get activitySettings(){return c(this.cameraSubject.getValue().activitySettings)}get frameWorkerSettings(){return c(this.cameraSubject.getValue().frameWorkerSettings)}get streamSource(){return this.highResolutionSource||this.midResolutionSource||this.lowResolutionSource}get snapshotSource(){return this.sources.find((t=>t.roles.includes("snapshot")&&!t.internal))}get highResolutionSource(){return this.sources.find((t=>t.roles.includes("high-resolution")&&!t.internal))}get midResolutionSource(){return this.sources.find((t=>t.roles.includes("mid-resolution")&&!t.internal))}get lowResolutionSource(){return this.sources.find((t=>t.roles.includes("low-resolution")&&!t.internal))}get ptz(){return this.ptzDelegate}constructor(t,e){super(),this.logger=e,this.cameraSubject=new H(t),this.updateCamera(t),this.snapshotCache=new(u())({max:100,ttl:1e3*this.snapshotTTL}),"native"===t.pluginId&&this.cameraState.next(!0)}getValue(t){switch(t){case"light":return c(this.lightState.getValue());case"motion":return c(this.motionState.getValue());case"audio":return c(this.audioState.getValue());case"object":return c(this.objectState.getValue());case"doorbell":return c(this.doorbellState.getValue());case"siren":return c(this.sirenState.getValue());case"battery":return c(this.batteryState.getValue());default:throw new Error(`Unknown state: ${t}`)}}async snapshot(t){this.snapshotCache.purgeStale();const e=this.snapshotSource||this.streamSource,n=e.urls.www.jpegSnapshot,r=this.snapshotCache.get(e._id);if(!t&&r)return this.logger.trace(this.name,"Snapshot requested (cached)"),r;this.logger.trace(this.name,"Snapshot requested (fetching)");try{if("native"!==this.cameraObject.pluginId){const t=await this.cameraDelegate.snapshot();if(t&&t.byteLength>0)return this.snapshotCache.set(e._id,t),t}const t=new AbortController,r=setTimeout((()=>t.abort()),5e3),i=await fetch(n,{signal:t.signal});if(clearTimeout(r),!i.ok)throw new Error("Status Code: "+i.status);const s=await i.arrayBuffer();return s.byteLength>0&&this.snapshotCache.set(e._id,s),s}catch{return}}onStateChange(t){return this[`${t}State`].pipe(et(),nt((([e,n])=>"boolean"==typeof e||"boolean"==typeof n?e!==n:this.stateChanged(e,n,t))),rt((([t,e])=>({oldState:t,newState:e}))),ct({connector:()=>new K(1)}))}onPropertyChange(t){return this.cameraSubject.pipe(et(),ut((([e,n])=>(Array.isArray(t)?t:[t]).map((t=>({property:t,oldData:e[t],newData:n[t]}))))),nt((({oldData:t,newData:e})=>!a(t,e,!0))),ct({connector:()=>new K(1)}))}removeAllListeners(){this.lightState.complete(),this.motionState.complete(),this.audioState.complete(),this.objectState.complete(),this.doorbellState.complete(),this.sirenState.complete(),this.batteryState.complete(),this.cameraSubject.complete(),this.cameraState.complete()}updateCamera(t){t.snapshotTTL!==this.snapshotTTL&&this.snapshotCache.clear(),this.cameraSubject.next(t)}updateCameraState(t){this.cameraState.next(t)}updateStateInternal(t,e,n,r){let i,s=!1;if(n)s=!0,i=e;else{const n=this.checkStateInternal(t,e,r);s=n.changed,i=n.event}if(s)switch(t){case"light":this.lightState.next(this.getLightState(i));break;case"motion":this.motionState.next(this.getMotionState(i));break;case"audio":this.audioState.next(this.getAudioState(i));break;case"object":this.objectState.next(this.getObjectState(i));break;case"doorbell":this.doorbellState.next(this.getDoorbellState(i));break;case"siren":this.sirenState.next(this.getSirenState(i));break;case"battery":this.batteryState.next(this.getBatteryState(i));break;default:throw new Error(`Unknown state: ${t}`)}}checkStateInternal(t,e,n){let r,i=!1;switch(t){case"audio":const s=e;r=this.getAudioState(s),i=this.stateChanged(this.getValue("audio"),r,"audio");break;case"light":const o=e;r=this.getLightState(o),i=this.stateChanged(this.getValue("light"),r,"light");break;case"motion":const a=e;void 0!==a.state&&(a.detections=[]),n||(a.detections=function(t,e=.01,n=160){if(0===t.length)return[];let r=t.map((t=>({...t,id:t.id||Math.random().toString(36).substr(2,9)}))),i=!0;for(;i;){i=!1;const t=new kt,o=r.map((t=>({minX:t.boundingBox[0],minY:t.boundingBox[1],maxX:t.boundingBox[2],maxY:t.boundingBox[3],detection:t})));t.load(o);const a=[],c=new Set;for(const r of o){if(c.has(r.detection.id))continue;const o={...r.detection},h=[Dt(o.boundingBox)];let u=o.confidence;const l=Math.max(n,10),p=t.search({minX:r.minX-l,minY:r.minY-l,maxX:r.maxX+l,maxY:r.maxY+l});for(const t of p){if(t.detection.id===o.id||c.has(t.detection.id))continue;if(t.detection.label!==o.label)continue;const s=Ut(o.boundingBox,t.detection.boundingBox),a=Math.abs(r.minX-t.minX)<=n&&Math.abs(r.minY-t.minY)<=n;if(s>e||a){const e=Dt(t.detection.boundingBox);h.push(e),c.add(t.detection.id),u=Math.max(u,t.detection.confidence),i=!0}}if(h.length>1){const t=xt(ft(h));if(t){const e=(s=bt(t),[Math.max(0,Math.round(s[0])),Math.max(0,Math.round(s[1])),Math.min(1e3,Math.round(s[2])),Math.min(1e3,Math.round(s[3]))]);Ft(e)&&(o.boundingBox=e,o.confidence=u)}}Ft(o.boundingBox)&&a.push(o)}r=a}var s;return r.map((e=>(t.find((t=>t.id===e.id))||delete e.id,e)))}(a.detections),a.detections=((t,e,n)=>{const r=[];for(const i of t)we(ve(i),e,n)&&e.some((t=>!t.classes.length||t.classes.includes(i.label)))&&r.push(i);return r})(a.detections,this.activityZones,this.activitySettings)),r=this.getMotionState(a),i=this.stateChanged(this.getValue("motion"),r,"motion");break;case"object":const c=e;n||(c.detections=((t,e,n)=>{const r=[];for(const i of t){const t=ve(i);we(t,e,n)&&e.some((t=>!t.classes.length||t.classes.includes(i.label)))&&r.push(t)}return r})(c.detections,this.activityZones,this.activitySettings)),r=this.getObjectState(c),i=this.stateChanged(this.getValue("object"),r,"object");break;case"doorbell":const h=e;r=this.getDoorbellState(h),i=this.stateChanged(this.getValue("doorbell"),r,"doorbell");break;case"siren":const u=e;r=this.getSirenState(u),i=this.stateChanged(this.getValue("siren"),r,"siren");break;case"battery":const l=e;r=this.getBatteryState(l),i=this.stateChanged(this.getValue("battery"),r,"battery");break;default:throw new Error(`Unknown state: ${t}`)}return{changed:i,event:r}}stateChanged(t,e,n){if(!t||!e||!n)return!1;if("audio"==n){if(!this.hasAudioDetector)return!1;const n=t,r=e;return n.state!==r.state||n.db!==r.db}if("motion"==n){if(!this.hasMotionDetector)return!1;const n=t,r=e;return void 0!==r.state?n.state!==r.state:!a(n.detections,r.detections,!0)}if("object"==n){if(!this.hasObjectDetector)return!1;const n=e;return!a(t.detections,n.detections,!0)}if("siren"==n){if(!this.hasSiren)return!1;const n=t,r=e;return n.state!==r.state||n.level!==r.level}if("battery"==n){if(!this.hasBattery)return!1;const n=t,r=e;return n.level!==r.level||n.lowBattery!==r.lowBattery||n.charging!==r.charging}if("doorbell"==n){if(!this.hasBinarySensor)return!1;const n=e;return t.state!==n.state}if("light"==n){if(!this.hasLight)return!1;const n=e;return t.state!==n.state}return!1}getAudioState(t,e=!1){let n,r;if(!e){const t=this.getValue("audio");t.state?n=t:t.lastEvent?.state&&(n=t.lastEvent),n&&delete n.lastEvent}if(this.isStateEvent(t))r=t;else{const e={...t,timestamp:Date.now()};r={...e,db:e.db||n?.db||0,lastEvent:n||(e.state?e:void 0)}}return r}getMotionState(t,e=!1){let n,r;if(!e){const t=this.getValue("motion");t.detections.length?n=t:t.lastEvent?.detections.length&&(n=t.lastEvent),n&&delete n.lastEvent}if(this.isStateEvent(t))r=t;else{const e={...t,timestamp:Date.now()};r={...e,lastEvent:n||(e.detections.length?e:void 0)}}return r}getObjectState(t,e=!1){let n,r;if(!e){const t=this.getValue("object");t.detections.length?n=t:t.lastEvent?.detections.length&&(n=t.lastEvent),n&&delete n.lastEvent}if(this.isStateEvent(t))r=t;else{const e={...t,timestamp:Date.now()};r={...e,lastEvent:n||(e.detections.length?e:void 0)}}return r}getDoorbellState(t,e=!1){let n,r;if(!e){const t=this.getValue("doorbell");t.state?n=t:t.lastEvent?.state&&(n=t.lastEvent),n&&delete n.lastEvent}if(this.isStateEvent(t))r=t;else{const e={...t,timestamp:Date.now()};r={...e,lastEvent:n||(e.state?e:void 0)}}return r}getLightState(t,e=!1){let n,r;if(!e){const t=this.getValue("light");t.state?n=t:t.lastEvent?.state&&(n=t.lastEvent),n&&delete n.lastEvent}if(this.isStateEvent(t))r=t;else{const e={...t,timestamp:Date.now()};r={...e,lastEvent:n||(e.state?e:void 0)}}return r}getSirenState(t,e=!1){let n,r;if(!e){const t=this.getValue("siren");t.state?n=t:t.lastEvent?.state&&(n=t.lastEvent),n&&delete n.lastEvent}if(this.isStateEvent(t))r=t;else{const e={...t,timestamp:Date.now()};r={...e,level:e.level||n?.level||0,lastEvent:n||(e.state?e:void 0)}}return r}getBatteryState(t,e=!1){let n,r;if(!e){const e=this.getValue("battery");this.stateChanged(e,t,"battery")?n=e:e.lastEvent&&this.stateChanged(e.lastEvent,t,"battery")&&(n=e.lastEvent),n&&delete n.lastEvent}if(this.isStateEvent(t))r=t;else{const e={...t,timestamp:Date.now()};r={...e,charging:t.charging||n?.charging||!1,lowBattery:t.lowBattery||n?.lowBattery||!1,lastEvent:n||e}}return r}isStateEvent(t){return"timestamp"in t}createStateObservable(t){return t.pipe(ct({connector:()=>new K(1)}))}}class Se{delegate;onRequest;constructor(t){this.onRequest=t}async snapshot(){return this.delegate?this.delegate.snapshot():this._onRequest("snapshot",[],5e3)}_onRequest(t,e,n){return this.onRequest("cameraDelegate",t,e,n)}}class _e{delegate;onRequest;constructor(t){this.onRequest=t}async getPrebufferingState(t,e){return this.delegate?this.delegate.getPrebufferingState(t,e):this._onRequest("prebufferDelegate","getPrebufferingState",[t,e])}_onRequest(t,e,n,r){return this.onRequest(t,e,n,r)}}class Ee{delegate;onRequest;constructor(t){this.onRequest=t}async moveAbsolute(t,e,n){return this.delegate?this.delegate.moveAbsolute(t,e,n):this._onRequest("moveAbsolute",[t,e,n])}async moveRelative(t,e,n){return this.delegate?this.delegate.moveRelative(t,e,n):this._onRequest("moveRelative",[t,e,n])}async moveContinuous(t,e,n){return this.delegate?this.delegate.moveContinuous(t,e,n):this._onRequest("moveContinuous",[t,e,n])}async stop(){return this.delegate?this.delegate.stop():this._onRequest("stop",[])}_onRequest(t,e,n){return this.onRequest("ptzDelegate",t,e,n)}}const ke=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){const e=16*Math.random()|0;return("x"===t?e:3&e|8).toString(16)}));class Pe extends EventTarget{cameraDevice;socketService;logger;options;videoPlayer;socket;streamId;hasBackchannel=!1;hasAudio=!0;closed=!1;micTransceiver=null;pc=null;buf=new Uint8Array(2097152);mediaSource=null;sourceBuffer=null;bufLen=0;mseCodecs="";videoPlayerMp4;media=["video","audio","microphone"];codecList=[];reconnectTimeout;_finishLoading=!1;_firstFrameReceived=!1;animationFrameId;get mode(){return this.options.mode}webrtcReconnectTimeout;constructor(t,e,n,r){super(),this.options=r,this.videoPlayer=r.videoElement,this.cameraDevice=t,this.socketService=e,this.logger=n;const{socket:i}=this.socketService.getSocket(`${t.id}-go2rtcSession`,!0);this.socket=i,this.socket.connect(),this.streamId=ke(),this.createCodecsList()}connect(t){t&&(this.options.mode=t),console.log(this.cameraDevice.name,`Connecting... (${this.options.mode})`),this.socket.on("ws-open",this.onWsOpen.bind(this)),this.socket.on("ws-close",this.onWsClose.bind(this)),this.socket.on("ws-message",this.onWsMessage.bind(this)),this.socket.emit("ws-open",{id:this.streamId,cameraSource:this.options.sourceName,mode:this.options.mode})}disconnect(){console.log(this.cameraDevice.name,"Disconnecting..."),this.socket.removeListener("ws-open",this.onWsOpen.bind(this)),this.socket.removeListener("ws-close",this.onWsClose.bind(this)),this.socket.removeListener("ws-message",this.onWsMessage.bind(this)),this.socket.emit("ws-close",{id:this.streamId})}async reconnect(t){console.log(this.cameraDevice.name,"Reconnecting..."),this.dispatchEvent(new Event("reconnect")),this.close(),await new Promise((t=>setTimeout(t,100))),this.connect(t)}reset(){this._finishLoading=!1,this._firstFrameReceived=!1,this.pc?.getTransceivers().forEach((t=>t.sender?.track?.stop())),this.pc?.close(),this.pc=null,this.videoPlayerMp4?.remove(),this.videoPlayerMp4=void 0,this.videoPlayer.srcObject=null,this.videoPlayer.src="",this.videoPlayer.poster="",void 0!==this.animationFrameId&&("cancelVideoFrameCallback"in this.videoPlayer?this.videoPlayer.cancelVideoFrameCallback(this.animationFrameId):cancelAnimationFrame(this.animationFrameId),this.animationFrameId=void 0)}close(){console.log(this.cameraDevice.name,"Closing..."),this.closed=!0,this.reset(),this.disconnect(),this.socket.emit("end"),this.socket.removeAllListeners()}onWsOpen({id:t}){if(t===this.streamId)switch(console.log(this.cameraDevice.name,"Connected"),this.options.mode){case"webrtc":case"webrtc/tcp":console.log(this.cameraDevice.name,"Requesting WebRTC session..."),this.requestWebrtc();break;case"mse":console.log(this.cameraDevice.name,"Requesting MSE session..."),this.requestMse();break;case"hls":console.log(this.cameraDevice.name,"Requesting HLS session..."),this.requestHls();break;case"mp4":console.log(this.cameraDevice.name,"Requesting MP4 session..."),this.requestMp4();break;case"mjpeg":console.log(this.cameraDevice.name,"Requesting MJPEG session..."),this.requestMjpeg();break;default:console.log(this.cameraDevice.name,"Unknown mode:",this.options.mode),this.dispatchEvent(new ErrorEvent("error",{message:"Unknown mode: "+this.options.mode}))}}onWsClose({id:t}){t===this.streamId&&(this.closed||void 0===this.options.reconnectInterval||(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=setTimeout((()=>{this.reconnect()}),this.options.reconnectInterval)))}onWsMessage({id:t,data:e}){if(t===this.streamId&&e.type){switch(e.type){case"mse":this.onMseData(e);break;case"hls":this.onHlsData(e);break;case"webrtc/candidate":case"webrtc/answer":this.onWebrtcData(e);break;case"mse-binary":this.onMseBuffer(e);break;case"mjpeg-binary":this.onMjpegBuffer(e);break;case"mp4-binary":this.onMp4Buffer(e);break;case"stream-info":this.onStreamInfo(e);break;case"error":this.dispatchEvent(new ErrorEvent("error",{error:e,message:e.value}))}!this._firstFrameReceived&&["mse-binary","mjpeg-binary","mp4-binary"].includes(e.type)&&this.onFirstFrame()}}async requestWebrtc(){this.reset(),this.pc=new RTCPeerConnection({bundlePolicy:"max-bundle",iceServers:[{urls:"stun:stun.l.google.com:19302"}],sdpSemantics:"unified-plan"}),this.pc.onicecandidate=t=>{if(console.log(this.cameraDevice.name,"onicecandidate",t.candidate),"webrtc/tcp"===this.options.mode&&"udp"===t.candidate?.protocol)return;const e=t.candidate?.toJSON().candidate||"";this.socket.emit("stream-payload",{id:this.streamId,data:{type:"webrtc/candidate",value:e}})},this.pc.onconnectionstatechange=()=>{if(console.log(this.cameraDevice.name,"onconnectionstatechange:",this.pc?.connectionState),"connected"===this.pc?.connectionState){const t=this.pc?.getTransceivers().filter((t=>"recvonly"===t.currentDirection)).map((t=>t.receiver.track));this.videoPlayer.srcObject=new MediaStream(t),this.onFinishLoading(),this.play(),this.disconnect()}else"failed"!==this.pc?.connectionState&&"disconnected"!==this.pc?.connectionState||(clearTimeout(this.webrtcReconnectTimeout),this.webrtcReconnectTimeout=setTimeout((()=>{"failed"!==this.pc?.connectionState&&"disconnected"!==this.pc?.connectionState||this.reconnect()}),1e3))},this.pc.oniceconnectionstatechange=()=>{console.log(this.cameraDevice.name,"iceconnectionstatechange",this.pc?.iceConnectionState)},this.pc.onicecandidateerror=t=>{console.log(this.cameraDevice.name,"onicecandidateerror",t)},this.pc.onsignalingstatechange=()=>{console.log(this.cameraDevice.name,"onsignalingstatechange",this.pc?.signalingState)},this.pc.onicegatheringstatechange=()=>{console.log(this.cameraDevice.name,"onicegatheringstatechange",this.pc?.iceGatheringState)},this.pc.onnegotiationneeded=t=>{console.log(this.cameraDevice.name,"onnegotiationneeded",t)},this.pc.addTransceiver("video",{direction:"recvonly"}),this.pc.addTransceiver("audio",{direction:"recvonly"}),this.micTransceiver=this.pc.addTransceiver("audio",{direction:"sendonly"});const t=await this.pc.createOffer();await this.pc.setLocalDescription(t),console.log(this.cameraDevice.name,"Offer:",t.sdp),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"webrtc/offer",value:t.sdp}})}async onWebrtcData(t){try{switch(t.type){case"webrtc/candidate":if(console.log(this.cameraDevice.name,"remote candidate:",t.value),"webrtc/tcp"===this.options.mode&&t.value.indexOf(" udp ")>0)return;await(this.pc?.addIceCandidate({candidate:t.value,sdpMid:"0"}));break;case"webrtc/answer":if(console.log(this.cameraDevice.name,"Answer:",t.value),await(this.pc?.setRemoteDescription({type:"answer",sdp:t.value})),!this._firstFrameReceived&&this.pc){const t=this.pc.getReceivers().find((t=>"video"===t.track.kind))?.track;if(t)if("requestVideoFrameCallback"in t)this.animationFrameId=t.requestVideoFrameCallback((()=>{this.onFirstFrame()}));else{const t=()=>{this.videoPlayer.readyState>=2&&this.videoPlayer.videoWidth>0?this.onFirstFrame():this.animationFrameId=requestAnimationFrame(t)};this.animationFrameId=requestAnimationFrame(t)}}break;case"error":if(console.log(this.cameraDevice.name,"WebRTC Error:",t.value),t.value.indexOf("webrtc/offer")<0)return;this.pc?.close()}}catch(t){this.dispatchEvent(new ErrorEvent("error",{error:t,message:t.message}))}}requestMse(){if(this.reset(),"ManagedMediaSource"in window){console.log(this.cameraDevice.name,"Using ManagedMediaSource");const t=window.ManagedMediaSource;this.mediaSource=new t,this.mediaSource.addEventListener("sourceopen",(()=>{this.socket.emit("stream-payload",{id:this.streamId,data:{type:"mse",value:this.parseCodecs(t.isTypeSupported)}})}),{once:!0}),this.videoPlayer.disableRemotePlayback=!0,this.videoPlayer.srcObject=this.mediaSource}else console.log(this.cameraDevice.name,"Using MediaSource"),this.mediaSource=new MediaSource,this.mediaSource.addEventListener("sourceopen",(()=>{URL.revokeObjectURL(this.videoPlayer.src),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"mse",value:this.parseCodecs(MediaSource.isTypeSupported)}})}),{once:!0}),this.videoPlayer.src=URL.createObjectURL(this.mediaSource),this.videoPlayer.srcObject=null;this.play(),this.mseCodecs=""}onMseData(t){this.mediaSource&&(this.mseCodecs=t.value,this.bufLen=0,this.buf=new Uint8Array(2097152),this.sourceBuffer=this.mediaSource.addSourceBuffer(t.value),this.sourceBuffer.mode="segments",this.sourceBuffer.addEventListener("updateend",(()=>{if(!this.sourceBuffer?.updating)try{if(this.bufLen>0){const t=this.buf.slice(0,this.bufLen);this.bufLen=0,this.sourceBuffer?.appendBuffer(t)}else if(this.sourceBuffer?.buffered?.length){const t=this.sourceBuffer.buffered.end(this.sourceBuffer.buffered.length-1)-15,e=this.sourceBuffer.buffered.start(0);t>e&&(this.sourceBuffer.remove(e,t),this.mediaSource?.setLiveSeekableRange(t,t+15))}}catch{}})))}async onMseBuffer(t){if("closed"!==this.mediaSource?.readyState)if(this.onFinishLoading(),this.sourceBuffer?.updating||this.bufLen>0){const e=new Uint8Array(t.value);this.buf.set(e,this.bufLen),this.bufLen+=e.byteLength}else try{this.sourceBuffer?.appendBuffer(t.value)}catch{}else this.closed||(this.closed=!0,this.dispatchEvent(new ErrorEvent("error",{message:"MediaSource closed"})),this.options.mode="webrtc",this.requestWebrtc())}requestMjpeg(){this.reset(),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"mjpeg"}})}onMjpegBuffer(t){this.videoPlayer.controls=!1,this.videoPlayer.poster="data:image/jpeg;base64,"+this.btoaBinary(t.value),this.onFinishLoading()}requestMp4(){this.reset();const t=document.createElement("canvas");let e=null;this.videoPlayerMp4=document.createElement("video"),this.videoPlayerMp4.autoplay=!0,this.videoPlayerMp4.playsInline=!0,this.videoPlayerMp4.muted=!0,this.videoPlayerMp4.addEventListener("loadeddata",(()=>{this.videoPlayerMp4&&(e||(t.width=this.videoPlayerMp4.videoWidth,t.height=this.videoPlayerMp4.videoHeight,e=t.getContext("2d")),e?.drawImage(this.videoPlayerMp4,0,0,t.width,t.height),this.videoPlayer.controls=!1,this.videoPlayer.poster=t.toDataURL("image/jpeg"))}));const n=this.codecList.filter((t=>this.media.includes(t.indexOf("vc1")>0?"video":"audio"))).filter((t=>this.videoPlayer.canPlayType(`video/mp4; codecs="${t}"`))).join();console.log(this.cameraDevice.name,"Playable codecs (MP4):",n),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"mp4",value:n}})}onMp4Buffer(t){this.onFinishLoading(),this.videoPlayerMp4&&(this.videoPlayerMp4.src="data:video/mp4;base64,"+this.btoaBinary(t.value))}requestHls(){this.reset();const t=this.parseCodecs((t=>this.videoPlayer.canPlayType(t)));console.log(this.cameraDevice.name,"Playable codecs (HLS):",t),this.socket.emit("stream-payload",{id:this.streamId,data:{type:"hls",value:t}})}onHlsData(t){const e="http"+t.wsURL.substring(2,t.wsURL.indexOf("/ws"))+"/hls/",n=t.value.replace("hls/",e),r="data:application/vnd.apple.mpegurl;base64,"+btoa(n.toString());this.videoPlayer.src=r,this.onFinishLoading(),this.play()}onStreamInfo(t){const e=t.value,n=e?.producers[0];n&&(this.hasBackchannel=n.senders?.some((t=>"audio"===t.codec.codec_type))||!1,this.hasAudio=n.receivers?.some((t=>"audio"===t.codec.codec_type))||!1)}async play(){try{await this.videoPlayer.play()}catch(t){if(!this.videoPlayer.muted)return this.videoPlayer.muted=!0,this.play();this.logger.warn(this.cameraDevice.name,t)}}onFirstFrame(){this._firstFrameReceived||(this._firstFrameReceived=!0,this.dispatchEvent(new Event("onFirstFrame")),console.log(this.cameraDevice.name,"First frame received"))}onFinishLoading(){this._finishLoading||(this._finishLoading=!0,this.dispatchEvent(new Event("onFinishLoading")))}createCodecsList(){const t=["avc1.640029","avc1.64002A","avc1.640033","hvc1.1.6.L153.B0","mp4a.40.2","mp4a.40.5","flac","opus"],e="undefined"==typeof window?null:navigator.userAgent.match(/Version\/(\d+).+Safari/);if(e?.[1]){const n=e[1]<"13"?"mp4a.40.2":e[1]<"14"?"flac":"opus";t.splice(t.indexOf(n))}this.codecList=t}parseCodecs(t){return this.codecList.filter((t=>this.media.includes(t.indexOf("vc1")>0?"video":"audio"))).filter((e=>t(`video/mp4; codecs="${e}"`))).join()}btoaBinary(t){const e=new Uint8Array(t),n=e.byteLength;let r="";for(let t=0;t<n;t++)r+=String.fromCharCode(e[t]);return window.btoa(r)}}class Re extends xe{socketService;socket;pluginName="@camera.ui/client";subject;_started=!1;get started(){return this._started}cameraDelegate=new Se(this.onRequest.bind(this));ptzDelegate=new Ee(this.onRequest.bind(this));prebufferDelegate=new _e(this.onRequest.bind(this));get sources(){return this._sources.filter((t=>!t.internal))}get internalSources(){return this._sources.map((t=>({...t,type:t.name.endsWith(" AAC")?"aac":t.name.endsWith(" OPUS")?"opus":"pcma"}))).filter((t=>t.internal))}get _sources(){return JSON.parse(JSON.stringify(this.cameraSubject.getValue().sources)).map((t=>({...t,getPrebufferingState:e=>this.prebufferDelegate.getPrebufferingState(t.name,e),probeStream:(e=!1)=>this.onRequest("cameraFn","probeStream",[t._id,e])})))}constructor(t,e,n){super(t,n),this.socketService=e;const{socket:r}=this.socketService.getSocket(this.id,!0);this.socket=r,this.socket.connect(),this.subject=`${this.pluginName}.camera.${this.id}`,this.listenToMessages()}async start(){this._started||(this._started=!0,await this.refreshStates(),this.socket.emit("joinRoomStates",this.id))}stop(){this._started=!1,this.socket.emit("leaveRoomStates",this.id)}close(){this.cleanup()}connect(){return this.onRequest("cameraFn","connect")}disconnect(){return this.onRequest("cameraFn","disconnect")}createSession(t){return new Pe(this,this.socketService,this.logger,t)}async refreshStates(){const t=await this.onRequest("cameraFn","refreshStates");super.updateCamera(t.camera),super.updateCameraState(t.cameraState);for(const[e,n]of Object.entries(t.states))super.updateStateInternal(e,n,!0)}async cleanup(){this.stop(),this.removeAllListeners(),this.unsubscribe(),this.socket.removeAllListeners()}listenToMessages(){this.socket.emit("joinRoomDevice",this.id),this.socket.on("updateState",(t=>{t.cameraId===this.id&&super.updateStateInternal(t.stateName,t.data.newEvent,!0)})),this.socket.on("updateDevice",(t=>{if(t.cameraId===this.id)switch(t.type){case"removed":this.cleanup();break;case"updated":super.updateCamera(t.data);break;case"cameraState":super.updateCameraState(t.data)}}))}onRequest(t,e,n=[]){const r={requestId:ke(),targetId:this.subject,targetName:this.name,pluginId:this.pluginName,cameraId:this.id,type:"request",proxy:"camera",client:t,fn:e,args:n,timestamp:Date.now(),timeout:5e3};return new Promise(((t,e)=>{this.socket.emit("request",r,(n=>{n.error?e(n.error):t(n.response)}))}))}}class Me{socketService;socket;logger;pluginName="@camera.ui/client";subject;constructor(t,e){this.socketService=t,this.socket=t.socket,this.logger=e,this.subject=`${this.pluginName}.coreManager`}async getFFmpegPath(){return this.onRequest("getFFmpegPath")}async getHwaccelInfo(t){return this.onRequest("getHwaccelInfo",[t])}async getServerAddresses(){return this.onRequest("getServerAddresses")}async getIceServers(){return this.onRequest("getIceServers")}onRequest(t,e){const n={requestId:ke(),targetId:this.subject,targetName:this.pluginName,pluginId:this.pluginName,type:"request",proxy:"core",client:"coreFn",fn:t,args:e||[],timestamp:Date.now(),timeout:5e3};return new Promise(((t,e)=>{this.socket.emit("request",n,(n=>{n.error?e(n.error):t(n.response)}))}))}}class Te{socketService;socket;logger;pluginName="@camera.ui/client";subject;constructor(t,e){this.socketService=t,this.socket=t.socket,this.logger=e,this.subject=`${this.pluginName}.deviceManager`}async getCameraById(t){const e=await this.onRequest("getCameraById",[t]);if(e){const t=new Re(e,this.socketService,this.logger);return await t.refreshStates(),t}}async getCameraByName(t){const e=await this.onRequest("getCameraByName",[t]);if(e){const t=new Re(e,this.socketService,this.logger);return await t.refreshStates(),t}}onRequest(t,e){const n={requestId:ke(),targetId:this.subject,targetName:this.pluginName,pluginId:this.pluginName,type:"request",proxy:"device",client:"deviceFn",fn:t,args:e||[],timestamp:Date.now(),timeout:5e3};return new Promise(((t,e)=>{this.socket.emit("request",n,(n=>{n.error?e(n.error):t(n.response)}))}))}}const Oe=Object.create(null);Oe.open="0",Oe.close="1",Oe.ping="2",Oe.pong="3",Oe.message="4",Oe.upgrade="5",Oe.noop="6";const Ae=Object.create(null);Object.keys(Oe).forEach((t=>{Ae[Oe[t]]=t}));const Ce={type:"error",data:"parser error"},Be="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),Le="function"==typeof ArrayBuffer,Ie=t=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer instanceof ArrayBuffer,je=({type:t,data:e},n,r)=>Be&&e instanceof Blob?n?r(e):Ne(e,r):Le&&(e instanceof ArrayBuffer||Ie(e))?n?r(e):Ne(new Blob([e]),r):r(Oe[t]+(e||"")),Ne=(t,e)=>{const n=new FileReader;return n.onload=function(){const t=n.result.split(",")[1];e("b"+(t||""))},n.readAsDataURL(t)};function qe(t){return t instanceof Uint8Array?t:t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}let De;const Fe="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let t=0;t<64;t++)Fe["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(t)]=t;const Ue="function"==typeof ArrayBuffer,Ve=(t,e)=>{if("string"!=typeof t)return{type:"message",data:ze(t,e)};const n=t.charAt(0);return"b"===n?{type:"message",data:Ye(t.substring(1),e)}:Ae[n]?t.length>1?{type:Ae[n],data:t.substring(1)}:{type:Ae[n]}:Ce},Ye=(t,e)=>{if(Ue){const n=(t=>{let e,n,r,i,s,o=.75*t.length,a=t.length,c=0;"="===t[t.length-1]&&(o--,"="===t[t.length-2]&&o--);const h=new ArrayBuffer(o),u=new Uint8Array(h);for(e=0;e<a;e+=4)n=Fe[t.charCodeAt(e)],r=Fe[t.charCodeAt(e+1)],i=Fe[t.charCodeAt(e+2)],s=Fe[t.charCodeAt(e+3)],u[c++]=n<<2|r>>4,u[c++]=(15&r)<<4|i>>2,u[c++]=(3&i)<<6|63&s;return h})(t);return ze(n,e)}return{base64:!0,data:t}},ze=(t,e)=>"blob"===e?t instanceof Blob?t:new Blob([t]):t instanceof ArrayBuffer?t:t.buffer,Xe=String.fromCharCode(30);let $e;function We(t){return t.reduce(((t,e)=>t+e.length),0)}function Ge(t,e){if(t[0].length===e)return t.shift();const n=new Uint8Array(e);let r=0;for(let i=0;i<e;i++)n[i]=t[0][r++],r===t[0].length&&(t.shift(),r=0);return t.length&&r<t[0].length&&(t[0]=t[0].slice(r)),n}function He(t){if(t)return function(t){for(var e in He.prototype)t[e]=He.prototype[e];return t}(t)}He.prototype.on=He.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},He.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},He.prototype.off=He.prototype.removeListener=He.prototype.removeAllListeners=He.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+t];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var i=0;i<r.length;i++)if((n=r[i])===e||n.fn===e){r.splice(i,1);break}return 0===r.length&&delete this._callbacks["$"+t],this},He.prototype.emit=function(t){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),n=this._callbacks["$"+t],r=1;r<arguments.length;r++)e[r-1]=arguments[r];if(n){r=0;for(var i=(n=n.slice(0)).length;r<i;++r)n[r].apply(this,e)}return this},He.prototype.emitReserved=He.prototype.emit,He.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks["$"+t]||[]},He.prototype.hasListeners=function(t){return!!this.listeners(t).length};const Je="function"==typeof Promise&&"function"==typeof Promise.resolve?t=>Promise.resolve().then(t):(t,e)=>e(t,0),Ke="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Qe(t,...e){return e.reduce(((e,n)=>(t.hasOwnProperty(n)&&(e[n]=t[n]),e)),{})}const Ze=Ke.setTimeout,tn=Ke.clearTimeout;function en(t,e){e.useNativeTimers?(t.setTimeoutFn=Ze.bind(Ke),t.clearTimeoutFn=tn.bind(Ke)):(t.setTimeoutFn=Ke.setTimeout.bind(Ke),t.clearTimeoutFn=Ke.clearTimeout.bind(Ke))}function nn(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}class rn extends Error{constructor(t,e,n){super(t),this.description=e,this.context=n,this.type="TransportError"}}class sn extends He{constructor(t){super(),this.writable=!1,en(this,t),this.opts=t,this.query=t.query,this.socket=t.socket,this.supportsBinary=!t.forceBase64}onError(t,e,n){return super.emitReserved("error",new rn(t,e,n)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(t){"open"===this.readyState&&this.write(t)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(t){const e=Ve(t,this.socket.binaryType);this.onPacket(e)}onPacket(t){super.emitReserved("packet",t)}onClose(t){this.readyState="closed",super.emitReserved("close",t)}pause(t){}createUri(t,e={}){return t+"://"+this._hostname()+this._port()+this.opts.path+this._query(e)}_hostname(){const t=this.opts.hostname;return-1===t.indexOf(":")?t:"["+t+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(t){const e=function(t){let e="";for(let n in t)t.hasOwnProperty(n)&&(e.length&&(e+="&"),e+=encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e}(t);return e.length?"?"+e:""}}class on extends sn{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(t){this.readyState="pausing";const e=()=>{this.readyState="paused",t()};if(this._polling||!this.writable){let t=0;this._polling&&(t++,this.once("pollComplete",(function(){--t||e()}))),this.writable||(t++,this.once("drain",(function(){--t||e()})))}else e()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){((t,e)=>{const n=t.split(Xe),r=[];for(let t=0;t<n.length;t++){const i=Ve(n[t],e);if(r.push(i),"error"===i.type)break}return r})(t,this.socket.binaryType).forEach((t=>{if("opening"===this.readyState&&"open"===t.type&&this.onOpen(),"close"===t.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(t)})),"closed"!==this.readyState&&(this._polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this._poll())}doClose(){const t=()=>{this.write([{type:"close"}])};"open"===this.readyState?t():this.once("open",t)}write(t){this.writable=!1,((t,e)=>{const n=t.length,r=new Array(n);let i=0;t.forEach(((t,s)=>{je(t,!1,(t=>{r[s]=t,++i===n&&e(r.join(Xe))}))}))})(t,(t=>{this.doWrite(t,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const t=this.opts.secure?"https":"http",e=this.query||{};return!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=nn()),this.supportsBinary||e.sid||(e.b64=1),this.createUri(t,e)}}let an=!1;try{an="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(t){}const cn=an;function hn(){}class un extends on{constructor(t){if(super(t),"undefined"!=typeof location){const e="https:"===location.protocol;let n=location.port;n||(n=e?"443":"80"),this.xd="undefined"!=typeof location&&t.hostname!==location.hostname||n!==t.port}}doWrite(t,e){const n=this.request({method:"POST",data:t});n.on("success",e),n.on("error",((t,e)=>{this.onError("xhr post error",t,e)}))}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",((t,e)=>{this.onError("xhr poll error",t,e)})),this.pollXhr=t}}class ln extends He{constructor(t,e,n){super(),this.createRequest=t,en(this,n),this._opts=n,this._method=n.method||"GET",this._uri=e,this._data=void 0!==n.data?n.data:null,this._create()}_create(){var t;const e=Qe(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this._opts.xd;const n=this._xhr=this.createRequest(e);try{n.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0);for(let t in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(t)&&n.setRequestHeader(t,this._opts.extraHeaders[t])}}catch(t){}if("POST"===this._method)try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{n.setRequestHeader("Accept","*/*")}catch(t){}null===(t=this._opts.cookieJar)||void 0===t||t.addCookies(n),"withCredentials"in n&&(n.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(n.timeout=this._opts.requestTimeout),n.onreadystatechange=()=>{var t;3===n.readyState&&(null===(t=this._opts.cookieJar)||void 0===t||t.parseCookies(n.getResponseHeader("set-cookie"))),4===n.readyState&&(200===n.status||1223===n.status?this._onLoad():this.setTimeoutFn((()=>{this._onError("number"==typeof n.status?n.status:0)}),0))},n.send(this._data)}catch(t){return void this.setTimeoutFn((()=>{this._onError(t)}),0)}"undefined"!=typeof document&&(this._index=ln.requestsCount++,ln.requests[this._index]=this)}_onError(t){this.emitReserved("error",t,this._xhr),this._cleanup(!0)}_cleanup(t){if(void 0!==this._xhr&&null!==this._xhr){if(this._xhr.onreadystatechange=hn,t)try{this._xhr.abort()}catch(t){}"undefined"!=typeof document&&delete ln.requests[this._index],this._xhr=null}}_onLoad(){const t=this._xhr.responseText;null!==t&&(this.emitReserved("data",t),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}function pn(){for(let t in ln.requests)ln.requests.hasOwnProperty(t)&&ln.requests[t].abort()}ln.requestsCount=0,ln.requests={},"undefined"!=typeof document&&("function"==typeof attachEvent?attachEvent("onunload",pn):"function"==typeof addEventListener&&addEventListener("onpagehide"in Ke?"pagehide":"unload",pn,!1));const fn=function(){const t=dn({xdomain:!1});return t&&null!==t.responseType}();function dn(t){const e=t.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!e||cn))return new XMLHttpRequest}catch(t){}if(!e)try{return new(Ke[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}const gn="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class yn extends sn{get name(){return"websocket"}doOpen(){const t=this.uri(),e=this.opts.protocols,n=gn?{}:Qe(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(t,e,n)}catch(t){return this.emitReserved("error",t)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let e=0;e<t.length;e++){const n=t[e],r=e===t.length-1;je(n,this.supportsBinary,(t=>{try{this.doWrite(n,t)}catch(t){}r&&Je((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",e=this.query||{};return this.opts.timestampRequests&&(e[this.opts.timestampParam]=nn()),this.supportsBinary||(e.b64=1),this.createUri(t,e)}}const mn=Ke.WebSocket||Ke.MozWebSocket,bn={websocket:class extends yn{createSocket(t,e,n){return gn?new mn(t,e,n):e?new mn(t,e):new mn(t)}doWrite(t,e){this.ws.send(e)}},webtransport:class extends sn{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(t){return this.emitReserved("error",t)}this._transport.closed.then((()=>{this.onClose()})).catch((t=>{this.onError("webtransport error",t)})),this._transport.ready.then((()=>{this._transport.createBidirectionalStream().then((t=>{const e=function(t,e){$e||($e=new TextDecoder);const n=[];let r=0,i=-1,s=!1;return new TransformStream({transform(o,a){for(n.push(o);;){if(0===r){if(We(n)<1)break;const t=Ge(n,1);s=!(128&~t[0]),i=127&t[0],r=i<126?3:126===i?1:2}else if(1===r){if(We(n)<2)break;const t=Ge(n,2);i=new DataView(t.buffer,t.byteOffset,t.length).getUint16(0),r=3}else if(2===r){if(We(n)<8)break;const t=Ge(n,8),e=new DataView(t.buffer,t.byteOffset,t.length),s=e.getUint32(0);if(s>Math.pow(2,21)-1){a.enqueue(Ce);break}i=s*Math.pow(2,32)+e.getUint32(4),r=3}else{if(We(n)<i)break;const t=Ge(n,i);a.enqueue(Ve(s?t:$e.decode(t),e)),r=0}if(0===i||i>t){a.enqueue(Ce);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),n=t.readable.pipeThrough(e).getReader(),r=new TransformStream({transform(t,e){!function(t,e){Be&&t.data instanceof Blob?t.data.arrayBuffer().then(qe).then(e):Le&&(t.data instanceof ArrayBuffer||Ie(t.data))?e(qe(t.data)):je(t,!1,(t=>{De||(De=new TextEncoder),e(De.encode(t))}))}(t,(n=>{const r=n.length;let i;if(r<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,r);else if(r<65536){i=new Uint8Array(3);const t=new DataView(i.buffer);t.setUint8(0,126),t.setUint16(1,r)}else{i=new Uint8Array(9);const t=new DataView(i.buffer);t.setUint8(0,127),t.setBigUint64(1,BigInt(r))}t.data&&"string"!=typeof t.data&&(i[0]|=128),e.enqueue(i),e.enqueue(n)}))}});r.readable.pipeTo(t.writable),this._writer=r.writable.getWriter();const i=()=>{n.read().then((({done:t,value:e})=>{t||(this.onPacket(e),i())})).catch((t=>{}))};i();const s={type:"open"};this.query.sid&&(s.data=`{"sid":"${this.query.sid}"}`),this._writer.write(s).then((()=>this.onOpen()))}))}))}write(t){this.writable=!1;for(let e=0;e<t.length;e++){const n=t[e],r=e===t.length-1;this._writer.write(n).then((()=>{r&&Je((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var t;null===(t=this._transport)||void 0===t||t.close()}},polling:class extends un{constructor(t){super(t);const e=t&&t.forceBase64;this.supportsBinary=fn&&!e}request(t={}){return Object.assign(t,{xd:this.xd},this.opts),new ln(dn,this.uri(),t)}}},vn=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,wn=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function xn(t){if(t.length>8e3)throw"URI too long";const e=t,n=t.indexOf("["),r=t.indexOf("]");-1!=n&&-1!=r&&(t=t.substring(0,n)+t.substring(n,r).replace(/:/g,";")+t.substring(r,t.length));let i=vn.exec(t||""),s={},o=14;for(;o--;)s[wn[o]]=i[o]||"";return-1!=n&&-1!=r&&(s.source=e,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=function(t,e){const n=e.replace(/\/{2,9}/g,"/").split("/");return"/"!=e.slice(0,1)&&0!==e.length||n.splice(0,1),"/"==e.slice(-1)&&n.splice(n.length-1,1),n}(0,s.path),s.queryKey=function(t,e){const n={};return e.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(t,e,r){e&&(n[e]=r)})),n}(0,s.query),s}const Sn="function"==typeof addEventListener&&"function"==typeof removeEventListener,_n=[];Sn&&addEventListener("offline",(()=>{_n.forEach((t=>t()))}),!1);class En extends He{constructor(t,e){if(super(),this.binaryType="arraybuffer",this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,t&&"object"==typeof t&&(e=t,t=null),t){const n=xn(t);e.hostname=n.host,e.secure="https"===n.protocol||"wss"===n.protocol,e.port=n.port,n.query&&(e.query=n.query)}else e.host&&(e.hostname=xn(e.host).host);en(this,e),this.secure=null!=e.secure?e.secure:"undefined"!=typeof location&&"https:"===location.protocol,e.hostname&&!e.port&&(e.port=this.secure?"443":"80"),this.hostname=e.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=e.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},e.transports.forEach((t=>{const e=t.prototype.name;this.transports.push(e),this._transportsByName[e]=t})),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},e),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(t){let e={},n=t.split("&");for(let t=0,r=n.length;t<r;t++){let r=n[t].split("=");e[decodeURIComponent(r[0])]=decodeURIComponent(r[1])}return e}(this.opts.query)),Sn&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},_n.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(t){const e=Object.assign({},this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);const n=Object.assign({},this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new this._transportsByName[t](n)}_open(){if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);const t=this.opts.rememberUpgrade&&En.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket")?"websocket":this.transports[0];this.readyState="opening";const e=this.createTransport(t);e.open(),this.setTransport(e)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",(t=>this._onClose("transport close",t)))}onOpen(){this.readyState="open",En.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush()}_onPacket(t){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",t),this.emitReserved("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const e=new Error("server error");e.code=t.data,this._onError(e);break;case"message":this.emitReserved("data",t.data),this.emitReserved("message",t.data)}}onHandshake(t){this.emitReserved("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this._pingInterval=t.pingInterval,this._pingTimeout=t.pingTimeout,this._maxPayload=t.maxPayload,this.onOpen(),"closed"!==this.readyState&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const t=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+t,this._pingTimeoutTimer=this.setTimeoutFn((()=>{this._onClose("ping timeout")}),t),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this._getWritablePackets();this.transport.send(t),this._prevBufferLen=t.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let t=1;for(let n=0;n<this.writeBuffer.length;n++){const r=this.writeBuffer[n].data;if(r&&(t+="string"==typeof(e=r)?function(t){let e=0,n=0;for(let r=0,i=t.length;r<i;r++)e=t.charCodeAt(r),e<128?n+=1:e<2048?n+=2:e<55296||e>=57344?n+=3:(r++,n+=4);return n}(e):Math.ceil(1.33*(e.byteLength||e.size))),n>0&&t>this._maxPayload)return this.writeBuffer.slice(0,n);t+=2}var e;return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const t=Date.now()>this._pingTimeoutTime;return t&&(this._pingTimeoutTime=0,Je((()=>{this._onClose("ping timeout")}),this.setTimeoutFn)),t}write(t,e,n){return this._sendPacket("message",t,e,n),this}send(t,e,n){return this._sendPacket("message",t,e,n),this}_sendPacket(t,e,n,r){if("function"==typeof e&&(r=e,e=void 0),"function"==typeof n&&(r=n,n=null),"closing"===this.readyState||"closed"===this.readyState)return;(n=n||{}).compress=!1!==n.compress;const i={type:t,data:e,options:n};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),r&&this.once("flush",r),this.flush()}close(){const t=()=>{this._onClose("forced close"),this.transport.close()},e=()=>{this.off("upgrade",e),this.off("upgradeError",e),t()},n=()=>{this.once("upgrade",e),this.once("upgradeError",e)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?n():t()})):this.upgrading?n():t()),this}_onError(t){if(En.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&"opening"===this.readyState)return this.transports.shift(),this._open();this.emitReserved("error",t),this._onClose("transport error",t)}_onClose(t,e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),Sn&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const t=_n.indexOf(this._offlineEventListener);-1!==t&&_n.splice(t,1)}this.readyState="closed",this.id=null,this.emitReserved("close",t,e),this.writeBuffer=[],this._prevBufferLen=0}}}En.protocol=4;class kn extends En{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),"open"===this.readyState&&this.opts.upgrade)for(let t=0;t<this._upgrades.length;t++)this._probe(this._upgrades[t])}_probe(t){let e=this.createTransport(t),n=!1;En.priorWebsocketSuccess=!1;const r=()=>{n||(e.send([{type:"ping",data:"probe"}]),e.once("packet",(t=>{if(!n)if("pong"===t.type&&"probe"===t.data){if(this.upgrading=!0,this.emitReserved("upgrading",e),!e)return;En.priorWebsocketSuccess="websocket"===e.name,this.transport.pause((()=>{n||"closed"!==this.readyState&&(h(),this.setTransport(e),e.send([{type:"upgrade"}]),this.emitReserved("upgrade",e),e=null,this.upgrading=!1,this.flush())}))}else{const t=new Error("probe error");t.transport=e.name,this.emitReserved("upgradeError",t)}})))};function i(){n||(n=!0,h(),e.close(),e=null)}const s=t=>{const n=new Error("probe error: "+t);n.transport=e.name,i(),this.emitReserved("upgradeError",n)};function o(){s("transport closed")}function a(){s("socket closed")}function c(t){e&&t.name!==e.name&&i()}const h=()=>{e.removeListener("open",r),e.removeListener("error",s),e.removeListener("close",o),this.off("close",a),this.off("upgrading",c)};e.once("open",r),e.once("error",s),e.once("close",o),this.once("close",a),this.once("upgrading",c),-1!==this._upgrades.indexOf("webtransport")&&"webtransport"!==t?this.setTimeoutFn((()=>{n||e.open()}),200):e.open()}onHandshake(t){this._upgrades=this._filterUpgrades(t.upgrades),super.onHandshake(t)}_filterUpgrades(t){const e=[];for(let n=0;n<t.length;n++)~this.transports.indexOf(t[n])&&e.push(t[n]);return e}}class Pn extends kn{constructor(t,e={}){const n="object"==typeof t?t:e;(!n.transports||n.transports&&"string"==typeof n.transports[0])&&(n.transports=(n.transports||["polling","websocket","webtransport"]).map((t=>bn[t])).filter((t=>!!t))),super(t,n)}}const Rn="function"==typeof ArrayBuffer,Mn=t=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t.buffer instanceof ArrayBuffer,Tn=Object.prototype.toString,On="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Tn.call(Blob),An="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Tn.call(File);function Cn(t){return Rn&&(t instanceof ArrayBuffer||Mn(t))||On&&t instanceof Blob||An&&t instanceof File}function Bn(t,e){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let e=0,n=t.length;e<n;e++)if(Bn(t[e]))return!0;return!1}if(Cn(t))return!0;if(t.toJSON&&"function"==typeof t.toJSON&&1===arguments.length)return Bn(t.toJSON(),!0);for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e)&&Bn(t[e]))return!0;return!1}function Ln(t){const e=[],n=t.data,r=t;return r.data=In(n,e),r.attachments=e.length,{packet:r,buffers:e}}function In(t,e){if(!t)return t;if(Cn(t)){const n={_placeholder:!0,num:e.length};return e.push(t),n}if(Array.isArray(t)){const n=new Array(t.length);for(let r=0;r<t.length;r++)n[r]=In(t[r],e);return n}if("object"==typeof t&&!(t instanceof Date)){const n={};for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=In(t[r],e));return n}return t}function jn(t,e){return t.data=Nn(t.data,e),delete t.attachments,t}function Nn(t,e){if(!t)return t;if(t&&!0===t._placeholder){if("number"==typeof t.num&&t.num>=0&&t.num<e.length)return e[t.num];throw new Error("illegal attachments")}if(Array.isArray(t))for(let n=0;n<t.length;n++)t[n]=Nn(t[n],e);else if("object"==typeof t)for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&(t[n]=Nn(t[n],e));return t}const qn=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"],Dn=5;var Fn;!function(t){t[t.CONNECT=0]="CONNECT",t[t.DISCONNECT=1]="DISCONNECT",t[t.EVENT=2]="EVENT",t[t.ACK=3]="ACK",t[t.CONNECT_ERROR=4]="CONNECT_ERROR",t[t.BINARY_EVENT=5]="BINARY_EVENT",t[t.BINARY_ACK=6]="BINARY_ACK"}(Fn||(Fn={}));class Un{constructor(t){this.replacer=t}encode(t){return t.type!==Fn.EVENT&&t.type!==Fn.ACK||!Bn(t)?[this.encodeAsString(t)]:this.encodeAsBinary({type:t.type===Fn.EVENT?Fn.BINARY_EVENT:Fn.BINARY_ACK,nsp:t.nsp,data:t.data,id:t.id})}encodeAsString(t){let e=""+t.type;return t.type!==Fn.BINARY_EVENT&&t.type!==Fn.BINARY_ACK||(e+=t.attachments+"-"),t.nsp&&"/"!==t.nsp&&(e+=t.nsp+","),null!=t.id&&(e+=t.id),null!=t.data&&(e+=JSON.stringify(t.data,this.replacer)),e}encodeAsBinary(t){const e=Ln(t),n=this.encodeAsString(e.packet),r=e.buffers;return r.unshift(n),r}}function Vn(t){return"[object Object]"===Object.prototype.toString.call(t)}class Yn extends He{constructor(t){super(),this.reviver=t}add(t){let e;if("string"==typeof t){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");e=this.decodeString(t);const n=e.type===Fn.BINARY_EVENT;n||e.type===Fn.BINARY_ACK?(e.type=n?Fn.EVENT:Fn.ACK,this.reconstructor=new zn(e),0===e.attachments&&super.emitReserved("decoded",e)):super.emitReserved("decoded",e)}else{if(!Cn(t)&&!t.base64)throw new Error("Unknown type: "+t);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");e=this.reconstructor.takeBinaryData(t),e&&(this.reconstructor=null,super.emitReserved("decoded",e))}}decodeString(t){let e=0;const n={type:Number(t.charAt(0))};if(void 0===Fn[n.type])throw new Error("unknown packet type "+n.type);if(n.type===Fn.BINARY_EVENT||n.type===Fn.BINARY_ACK){const r=e+1;for(;"-"!==t.charAt(++e)&&e!=t.length;);const i=t.substring(r,e);if(i!=Number(i)||"-"!==t.charAt(e))throw new Error("Illegal attachments");n.attachments=Number(i)}if("/"===t.charAt(e+1)){const r=e+1;for(;++e&&","!==t.charAt(e)&&e!==t.length;);n.nsp=t.substring(r,e)}else n.nsp="/";const r=t.charAt(e+1);if(""!==r&&Number(r)==r){const r=e+1;for(;++e;){const n=t.charAt(e);if(null==n||Number(n)!=n){--e;break}if(e===t.length)break}n.id=Number(t.substring(r,e+1))}if(t.charAt(++e)){const r=this.tryParse(t.substr(e));if(!Yn.isPayloadValid(n.type,r))throw new Error("invalid payload");n.data=r}return n}tryParse(t){try{return JSON.parse(t,this.reviver)}catch(t){return!1}}static isPayloadValid(t,e){switch(t){case Fn.CONNECT:return Vn(e);case Fn.DISCONNECT:return void 0===e;case Fn.CONNECT_ERROR:return"string"==typeof e||Vn(e);case Fn.EVENT:case Fn.BINARY_EVENT:return Array.isArray(e)&&("number"==typeof e[0]||"string"==typeof e[0]&&-1===qn.indexOf(e[0]));case Fn.ACK:case Fn.BINARY_ACK:return Array.isArray(e)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class zn{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const t=jn(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}function Xn(t,e,n){return t.on(e,n),function(){t.off(e,n)}}const $n=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Wn extends He{constructor(t,e,n){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=t,this.nsp=e,n&&n.auth&&(this.auth=n.auth),this._opts=Object.assign({},n),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const t=this.io;this.subs=[Xn(t,"open",this.onopen.bind(this)),Xn(t,"packet",this.onpacket.bind(this)),Xn(t,"error",this.onerror.bind(this)),Xn(t,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...t){return t.unshift("message"),this.emit.apply(this,t),this}emit(t,...e){var n,r,i;if($n.hasOwnProperty(t))throw new Error('"'+t.toString()+'" is a reserved event name');if(e.unshift(t),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(e),this;const s={type:Fn.EVENT,data:e,options:{}};if(s.options.compress=!1!==this.flags.compress,"function"==typeof e[e.length-1]){const t=this.ids++,n=e.pop();this._registerAckCallback(t,n),s.id=t}const o=null===(r=null===(n=this.io.engine)||void 0===n?void 0:n.transport)||void 0===r?void 0:r.writable,a=this.connected&&!(null===(i=this.io.engine)||void 0===i?void 0:i._hasPingExpired());return this.flags.volatile&&!o||(a?(this.notifyOutgoingListeners(s),this.packet(s)):this.sendBuffer.push(s)),this.flags={},this}_registerAckCallback(t,e){var n;const r=null!==(n=this.flags.timeout)&&void 0!==n?n:this._opts.ackTimeout;if(void 0===r)return void(this.acks[t]=e);const i=this.io.setTimeoutFn((()=>{delete this.acks[t];for(let e=0;e<this.sendBuffer.length;e++)this.sendBuffer[e].id===t&&this.sendBuffer.splice(e,1);e.call(this,new Error("operation has timed out"))}),r),s=(...t)=>{this.io.clearTimeoutFn(i),e.apply(this,t)};s.withError=!0,this.acks[t]=s}emitWithAck(t,...e){return new Promise(((n,r)=>{const i=(t,e)=>t?r(t):n(e);i.withError=!0,e.push(i),this.emit(t,...e)}))}_addToQueue(t){let e;"function"==typeof t[t.length-1]&&(e=t.pop());const n={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push(((t,...r)=>{if(n===this._queue[0])return null!==t?n.tryCount>this._opts.retries&&(this._queue.shift(),e&&e(t)):(this._queue.shift(),e&&e(null,...r)),n.pending=!1,this._drainQueue()})),this._queue.push(n),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||0===this._queue.length)return;const e=this._queue[0];e.pending&&!t||(e.pending=!0,e.tryCount++,this.flags=e.flags,this.emit.apply(this,e.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){"function"==typeof this.auth?this.auth((t=>{this._sendConnectPacket(t)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:Fn.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,e){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,e),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach((t=>{if(!this.sendBuffer.some((e=>String(e.id)===t))){const e=this.acks[t];delete this.acks[t],e.withError&&e.call(this,new Error("socket has been disconnected"))}}))}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case Fn.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Fn.EVENT:case Fn.BINARY_EVENT:this.onevent(t);break;case Fn.ACK:case Fn.BINARY_ACK:this.onack(t);break;case Fn.DISCONNECT:this.ondisconnect();break;case Fn.CONNECT_ERROR:this.destroy();const e=new Error(t.data.message);e.data=t.data.data,this.emitReserved("connect_error",e)}}onevent(t){const e=t.data||[];null!=t.id&&e.push(this.ack(t.id)),this.connected?this.emitEvent(e):this.receiveBuffer.push(Object.freeze(e))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const e=this._anyListeners.slice();for(const n of e)n.apply(this,t)}super.emit.apply(this,t),this._pid&&t.length&&"string"==typeof t[t.length-1]&&(this._lastOffset=t[t.length-1])}ack(t){const e=this;let n=!1;return function(...r){n||(n=!0,e.packet({type:Fn.ACK,id:t,data:r}))}}onack(t){const e=this.acks[t.id];"function"==typeof e&&(delete this.acks[t.id],e.withError&&t.data.unshift(null),e.apply(this,t.data))}onconnect(t,e){this.id=t,this.recovered=e&&this._pid===e,this._pid=e,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((t=>this.emitEvent(t))),this.receiveBuffer=[],this.sendBuffer.forEach((t=>{this.notifyOutgoingListeners(t),this.packet(t)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((t=>t())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Fn.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const e=this._anyListeners;for(let n=0;n<e.length;n++)if(t===e[n])return e.splice(n,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(t){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(t),this}prependAnyOutgoing(t){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(t),this}offAnyOutgoing(t){if(!this._anyOutgoingListeners)return this;if(t){const e=this._anyOutgoingListeners;for(let n=0;n<e.length;n++)if(t===e[n])return e.splice(n,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(t){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const e=this._anyOutgoingListeners.slice();for(const n of e)n.apply(this,t.data)}}}function Gn(t){t=t||{},this.ms=t.min||100,this.max=t.max||1e4,this.factor=t.factor||2,this.jitter=t.jitter>0&&t.jitter<=1?t.jitter:0,this.attempts=0}Gn.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),n=Math.floor(e*this.jitter*t);t=1&Math.floor(10*e)?t+n:t-n}return 0|Math.min(t,this.max)},Gn.prototype.reset=function(){this.attempts=0},Gn.prototype.setMin=function(t){this.ms=t},Gn.prototype.setMax=function(t){this.max=t},Gn.prototype.setJitter=function(t){this.jitter=t};class Hn extends He{constructor(t,e){var n;super(),this.nsps={},this.subs=[],t&&"object"==typeof t&&(e=t,t=void 0),(e=e||{}).path=e.path||"/socket.io",this.opts=e,en(this,e),this.reconnection(!1!==e.reconnection),this.reconnectionAttempts(e.reconnectionAttempts||1/0),this.reconnectionDelay(e.reconnectionDelay||1e3),this.reconnectionDelayMax(e.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(n=e.randomizationFactor)&&void 0!==n?n:.5),this.backoff=new Gn({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==e.timeout?2e4:e.timeout),this._readyState="closed",this.uri=t;const r=e.parser||i;this.encoder=new r.Encoder,this.decoder=new r.Decoder,this._autoConnect=!1!==e.autoConnect,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,t||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(t){return void 0===t?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var e;return void 0===t?this._reconnectionDelay:(this._reconnectionDelay=t,null===(e=this.backoff)||void 0===e||e.setMin(t),this)}randomizationFactor(t){var e;return void 0===t?this._randomizationFactor:(this._randomizationFactor=t,null===(e=this.backoff)||void 0===e||e.setJitter(t),this)}reconnectionDelayMax(t){var e;return void 0===t?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,null===(e=this.backoff)||void 0===e||e.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new Pn(this.uri,this.opts);const e=this.engine,n=this;this._readyState="opening",this.skipReconnect=!1;const r=Xn(e,"open",(function(){n.onopen(),t&&t()})),i=e=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",e),t?t(e):this.maybeReconnectOnOpen()},s=Xn(e,"error",i);if(!1!==this._timeout){const t=this._timeout,n=this.setTimeoutFn((()=>{r(),i(new Error("timeout")),e.close()}),t);this.opts.autoUnref&&n.unref(),this.subs.push((()=>{this.clearTimeoutFn(n)}))}return this.subs.push(r),this.subs.push(s),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(Xn(t,"ping",this.onping.bind(this)),Xn(t,"data",this.ondata.bind(this)),Xn(t,"error",this.onerror.bind(this)),Xn(t,"close",this.onclose.bind(this)),Xn(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(t){this.onclose("parse error",t)}}ondecoded(t){Je((()=>{this.emitReserved("packet",t)}),this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,e){let n=this.nsps[t];return n?this._autoConnect&&!n.active&&n.connect():(n=new Wn(this,t,e),this.nsps[t]=n),n}_destroy(t){const e=Object.keys(this.nsps);for(const t of e)if(this.nsps[t].active)return;this._close()}_packet(t){const e=this.encoder.encode(t);for(let n=0;n<e.length;n++)this.engine.write(e[n],t.options)}cleanup(){this.subs.forEach((t=>t())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(t,e){var n;this.cleanup(),null===(n=this.engine)||void 0===n||n.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,e),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const e=this.backoff.duration();this._reconnecting=!0;const n=this.setTimeoutFn((()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),t.skipReconnect||t.open((e=>{e?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",e)):t.onreconnect()})))}),e);this.opts.autoUnref&&n.unref(),this.subs.push((()=>{this.clearTimeoutFn(n)}))}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const Jn={};function Kn(t,e){"object"==typeof t&&(e=t,t=void 0);const n=function(t,e="",n){let r=t;n=n||"undefined"!=typeof location&&location,null==t&&(t=n.protocol+"//"+n.host),"string"==typeof t&&("/"===t.charAt(0)&&(t="/"===t.charAt(1)?n.protocol+t:n.host+t),/^(https?|wss?):\/\//.test(t)||(t=void 0!==n?n.protocol+"//"+t:"https://"+t),r=xn(t)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const i=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+i+":"+r.port+e,r.href=r.protocol+"://"+i+(n&&n.port===r.port?"":":"+r.port),r}(t,(e=e||{}).path||"/socket.io"),r=n.source,i=n.id,s=n.path,o=Jn[i]&&s in Jn[i].nsps;let a;return e.forceNew||e["force new connection"]||!1===e.multiplex||o?a=new Hn(r,e):(Jn[i]||(Jn[i]=new Hn(r,e)),a=Jn[i]),n.query&&!e.query&&(e.query=n.queryKey),a.socket(n.path,e)}Object.assign(Kn,{Manager:Hn,Socket:Wn,io:Kn,connect:Kn});class Qn{socket;token;endpoint;socketList=new Map;constructor(t,e){this.endpoint=t.replace("https://","wss://").replace("http://","ws://"),this.token=e,this.socket=this.getSocket("default").socket,this.socket.connect()}close(){this.socket.emit("end"),this.socket.removeAllListeners(),this.socket.disconnect()}getSocket(t,e){return this.createManager(e)}createManager(t){const e=new Hn(this.endpoint,{reconnection:!0,reconnectionAttempts:1/0,reconnectionDelay:1e3,reconnectionDelayMax:5e3,randomizationFactor:.5,timeout:2e4,autoConnect:!0,transports:["websocket","polling"],rejectUnauthorized:!1,secure:!0,forceNew:t}),n=e.socket("/proxy",{auth:{token:`Bearer ${this.token}`}});return{manager:e,socket:n}}}class Zn{api;socketService;config;logger;token;deviceManager;coreManager;constructor(t){this.config=t,this.logger=t.logger||{...console,attention:console.warn},this.api=new s(t.endpoint)}async connect(){return this.deviceManager&&this.coreManager||(this.cleanUpClient(),await this.login(),this.token=this.token||this.config.token,this.socketService=new Qn(this.config.endpoint,this.token),this.coreManager=new Me(this.socketService,this.logger),this.deviceManager=new Te(this.socketService,this.logger),this.checkSession()),{coreManager:this.coreManager,deviceManager:this.deviceManager}}async disconnect(){this.socketService?.close(),this.cleanUpClient(),this.config.username&&this.config.password&&await this.api.post("/auth/logout",void 0,{headers:{Authorization:`Bearer ${this.token}`}})}async updateCredentials(t){this.config={...this.config,...t},this.socketService&&await this.disconnect(),await this.connect()}async login(){if(this.config.username&&this.config.password)try{const t=await this.api.post("/auth/login",{username:this.config.username,password:this.config.password}),e=await t.json();this.token=e.access_token}catch(t){throw 401===t.response?.status?new Error("Invalid credentials"):new Error(`Failed to get token: ${t.message}`)}else if(this.config.token&&!this.config.skipCheck)try{await this.api.get("/auth/check",{headers:{Authorization:`Bearer ${this.config.token}`}})}catch(t){throw new Error(`Invalid token: ${t.message}`)}this.token=this.token||this.config.token}getDeviceManager(){return this.deviceManager}checkSession(){this.socketService?.socket.removeListener("invalidToken"),this.socketService?.socket.on("invalidToken",(async t=>{t===this.token&&await this.disconnect()}))}cleanUpClient(){this.deviceManager=void 0}}var tr=r.j;export{tr as CameraUiClient};
@@ -0,0 +1,23 @@
1
+ /*! *****************************************************************************
2
+ Copyright (c) Microsoft Corporation. All rights reserved.
3
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4
+ this file except in compliance with the License. You may obtain a copy of the
5
+ License at http://www.apache.org/licenses/LICENSE-2.0
6
+
7
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
9
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
10
+ MERCHANTABLITY OR NON-INFRINGEMENT.
11
+
12
+ See the Apache Version 2.0 License for specific language governing permissions
13
+ and limitations under the License.
14
+ ***************************************************************************** */
15
+
16
+ /**
17
+ * splaytree v3.1.2
18
+ * Fast Splay tree for Node and browser
19
+ *
20
+ * @author Alexander Milevski <info@w8r.name>
21
+ * @license MIT
22
+ * @preserve
23
+ */
@@ -1,2 +1,2 @@
1
1
  import type { Detection } from '@camera.ui/types';
2
- export declare function mergeDetections(detections: Detection[], iouThreshold?: number): Detection[];
2
+ export declare function mergeDetections(detections: Detection[], iouThreshold?: number, closeThreshold?: number): Detection[];
@@ -19,7 +19,7 @@ export type ImageInputFormat = 'yuv' | 'rgb' | 'rgba' | 'gray';
19
19
  export type ImageOutputFormat = 'rgb' | 'rgba' | 'gray';
20
20
  export type CameraExtension = 'hub' | 'prebuffer' | 'motionDetection' | 'objectDetection' | 'audioDetection' | 'ptz';
21
21
  export type CameraFrameWorkerDecoder = 'pillow' | 'wasm';
22
- export type CameraFrameWorkerResolution = '640' | '480' | '320' | 'native';
22
+ export type CameraFrameWorkerResolution = '3840x2160' | '3072x1728' | '2560x1440' | '1920x1080' | '1440x1080' | '1280x720' | '960x540' | '640x480' | '640x360' | '320x240' | '320x180';
23
23
  export type AudioCodec = 'PCMU' | 'PCMA' | 'MPEG4-GENERIC' | 'opus' | 'G722' | 'MPA' | 'PCM' | 'FLAC';
24
24
  export type AudioFFmpegCodec = 'pcm_mulaw' | 'pcm_alaw' | 'aac' | 'libopus' | 'g722' | 'mp3' | 'pcm_s16be' | 'pcm_s16le' | 'flac';
25
25
  export type VideoCodec = 'H264' | 'H265' | 'VP8' | 'VP9' | 'AV1' | 'JPEG' | 'RAW';
@@ -232,8 +232,8 @@ export interface ImageCrop {
232
232
  height: number;
233
233
  }
234
234
  export interface ImageResize {
235
- width?: number;
236
- height?: number;
235
+ width: number;
236
+ height: number;
237
237
  }
238
238
  export interface ImageFormat {
239
239
  to: ImageOutputFormat;
@@ -2,7 +2,7 @@ import type { FastifyInstance } from 'fastify';
2
2
  import type { Database as DB, RootDatabase as RootDB } from 'lmdb';
3
3
  import type { DBAuth, DBCamera, DBPlugin, DBSettings, DBSystem, DBUser } from './types.js';
4
4
  export declare class Database {
5
- static readonly VERSION = "1.0.2";
5
+ static readonly VERSION = "1.0.3";
6
6
  authDB: RootDB<DBAuth, 'auth'>;
7
7
  camerasDB: DB<DBCamera[], 'cameras'>;
8
8
  pluginsDB: DB<DBPlugin[], 'plugins'>;
@@ -220,15 +220,15 @@ export declare const streamingModeSchema: zod.ZodUnion<[zod.ZodLiteral<"mse">, z
220
220
  export declare const frameWorkerSettingsSchema: zod.ZodObject<{
221
221
  decoder: zod.ZodUnion<[zod.ZodLiteral<"pillow">, zod.ZodLiteral<"wasm">]>;
222
222
  fps: zod.ZodNumber;
223
- resolution: zod.ZodUnion<[zod.ZodLiteral<"640">, zod.ZodLiteral<"480">, zod.ZodLiteral<"320">, zod.ZodLiteral<"native">]>;
223
+ resolution: zod.ZodUnion<[zod.ZodLiteral<"3840x2160">, zod.ZodLiteral<"3072x1728">, zod.ZodLiteral<"2560x1440">, zod.ZodLiteral<"1920x1080">, zod.ZodLiteral<"1440x1080">, zod.ZodLiteral<"1280x720">, zod.ZodLiteral<"960x540">, zod.ZodLiteral<"640x480">, zod.ZodLiteral<"640x360">, zod.ZodLiteral<"320x240">, zod.ZodLiteral<"320x180">]>;
224
224
  }, "strip", zod.ZodTypeAny, {
225
225
  decoder: "pillow" | "wasm";
226
226
  fps: number;
227
- resolution: "native" | "640" | "480" | "320";
227
+ resolution: "3840x2160" | "3072x1728" | "2560x1440" | "1920x1080" | "1440x1080" | "1280x720" | "960x540" | "640x480" | "640x360" | "320x240" | "320x180";
228
228
  }, {
229
229
  decoder: "pillow" | "wasm";
230
230
  fps: number;
231
- resolution: "native" | "640" | "480" | "320";
231
+ resolution: "3840x2160" | "3072x1728" | "2560x1440" | "1920x1080" | "1440x1080" | "1280x720" | "960x540" | "640x480" | "640x360" | "320x240" | "320x180";
232
232
  }>;
233
233
  export declare const cameraTypeSchema: zod.ZodUnion<[zod.ZodLiteral<"camera">, zod.ZodLiteral<"doorbell">]>;
234
234
  export declare const interfaceSettingsSchema: zod.ZodObject<{
@@ -470,15 +470,15 @@ export declare const createCameraSchema: zod.ZodObject<{
470
470
  frameWorkerSettings: zod.ZodDefault<zod.ZodObject<{
471
471
  decoder: zod.ZodUnion<[zod.ZodLiteral<"pillow">, zod.ZodLiteral<"wasm">]>;
472
472
  fps: zod.ZodNumber;
473
- resolution: zod.ZodUnion<[zod.ZodLiteral<"640">, zod.ZodLiteral<"480">, zod.ZodLiteral<"320">, zod.ZodLiteral<"native">]>;
473
+ resolution: zod.ZodUnion<[zod.ZodLiteral<"3840x2160">, zod.ZodLiteral<"3072x1728">, zod.ZodLiteral<"2560x1440">, zod.ZodLiteral<"1920x1080">, zod.ZodLiteral<"1440x1080">, zod.ZodLiteral<"1280x720">, zod.ZodLiteral<"960x540">, zod.ZodLiteral<"640x480">, zod.ZodLiteral<"640x360">, zod.ZodLiteral<"320x240">, zod.ZodLiteral<"320x180">]>;
474
474
  }, "strip", zod.ZodTypeAny, {
475
475
  decoder: "pillow" | "wasm";
476
476
  fps: number;
477
- resolution: "native" | "640" | "480" | "320";
477
+ resolution: "3840x2160" | "3072x1728" | "2560x1440" | "1920x1080" | "1440x1080" | "1280x720" | "960x540" | "640x480" | "640x360" | "320x240" | "320x180";
478
478
  }, {
479
479
  decoder: "pillow" | "wasm";
480
480
  fps: number;
481
- resolution: "native" | "640" | "480" | "320";
481
+ resolution: "3840x2160" | "3072x1728" | "2560x1440" | "1920x1080" | "1440x1080" | "1280x720" | "960x540" | "640x480" | "640x360" | "320x240" | "320x180";
482
482
  }>>;
483
483
  }, "strict", zod.ZodTypeAny, {
484
484
  pluginId: string;
@@ -525,7 +525,7 @@ export declare const createCameraSchema: zod.ZodObject<{
525
525
  frameWorkerSettings: {
526
526
  decoder: "pillow" | "wasm";
527
527
  fps: number;
528
- resolution: "native" | "640" | "480" | "320";
528
+ resolution: "3840x2160" | "3072x1728" | "2560x1440" | "1920x1080" | "1440x1080" | "1280x720" | "960x540" | "640x480" | "640x360" | "320x240" | "320x180";
529
529
  };
530
530
  sources: {
531
531
  _id: string;
@@ -604,7 +604,7 @@ export declare const createCameraSchema: zod.ZodObject<{
604
604
  frameWorkerSettings?: {
605
605
  decoder: "pillow" | "wasm";
606
606
  fps: number;
607
- resolution: "native" | "640" | "480" | "320";
607
+ resolution: "3840x2160" | "3072x1728" | "2560x1440" | "1920x1080" | "1440x1080" | "1280x720" | "960x540" | "640x480" | "640x360" | "320x240" | "320x180";
608
608
  } | undefined;
609
609
  extensions?: {
610
610
  plugins: string[];
@@ -822,15 +822,15 @@ export declare const patchCameraSchema: zod.ZodObject<{
822
822
  frameWorkerSettings: zod.ZodOptional<zod.ZodObject<{
823
823
  decoder: zod.ZodOptional<zod.ZodUnion<[zod.ZodLiteral<"pillow">, zod.ZodLiteral<"wasm">]>>;
824
824
  fps: zod.ZodOptional<zod.ZodNumber>;
825
- resolution: zod.ZodOptional<zod.ZodUnion<[zod.ZodLiteral<"640">, zod.ZodLiteral<"480">, zod.ZodLiteral<"320">, zod.ZodLiteral<"native">]>>;
825
+ resolution: zod.ZodOptional<zod.ZodUnion<[zod.ZodLiteral<"3840x2160">, zod.ZodLiteral<"3072x1728">, zod.ZodLiteral<"2560x1440">, zod.ZodLiteral<"1920x1080">, zod.ZodLiteral<"1440x1080">, zod.ZodLiteral<"1280x720">, zod.ZodLiteral<"960x540">, zod.ZodLiteral<"640x480">, zod.ZodLiteral<"640x360">, zod.ZodLiteral<"320x240">, zod.ZodLiteral<"320x180">]>>;
826
826
  }, "strip", zod.ZodTypeAny, {
827
827
  decoder?: "pillow" | "wasm" | undefined;
828
828
  fps?: number | undefined;
829
- resolution?: "native" | "640" | "480" | "320" | undefined;
829
+ resolution?: "3840x2160" | "3072x1728" | "2560x1440" | "1920x1080" | "1440x1080" | "1280x720" | "960x540" | "640x480" | "640x360" | "320x240" | "320x180" | undefined;
830
830
  }, {
831
831
  decoder?: "pillow" | "wasm" | undefined;
832
832
  fps?: number | undefined;
833
- resolution?: "native" | "640" | "480" | "320" | undefined;
833
+ resolution?: "3840x2160" | "3072x1728" | "2560x1440" | "1920x1080" | "1440x1080" | "1280x720" | "960x540" | "640x480" | "640x360" | "320x240" | "320x180" | undefined;
834
834
  }>>;
835
835
  }, "strict", zod.ZodTypeAny, {
836
836
  type?: "camera" | "doorbell" | undefined;
@@ -870,7 +870,7 @@ export declare const patchCameraSchema: zod.ZodObject<{
870
870
  frameWorkerSettings?: {
871
871
  decoder?: "pillow" | "wasm" | undefined;
872
872
  fps?: number | undefined;
873
- resolution?: "native" | "640" | "480" | "320" | undefined;
873
+ resolution?: "3840x2160" | "3072x1728" | "2560x1440" | "1920x1080" | "1440x1080" | "1280x720" | "960x540" | "640x480" | "640x360" | "320x240" | "320x180" | undefined;
874
874
  } | undefined;
875
875
  sources?: {
876
876
  _id: string;
@@ -933,7 +933,7 @@ export declare const patchCameraSchema: zod.ZodObject<{
933
933
  frameWorkerSettings?: {
934
934
  decoder?: "pillow" | "wasm" | undefined;
935
935
  fps?: number | undefined;
936
- resolution?: "native" | "640" | "480" | "320" | undefined;
936
+ resolution?: "3840x2160" | "3072x1728" | "2560x1440" | "1920x1080" | "1440x1080" | "1280x720" | "960x540" | "640x480" | "640x360" | "320x240" | "320x180" | undefined;
937
937
  } | undefined;
938
938
  sources?: {
939
939
  name: string;
@@ -33,7 +33,7 @@ export declare const userPreferencesCamviewViewsLayout: zod.ZodObject<{
33
33
  type: "dnd" | "view";
34
34
  _id: string;
35
35
  name: string;
36
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
36
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
37
37
  cameras: {
38
38
  cameraId: string;
39
39
  index: number;
@@ -41,7 +41,7 @@ export declare const userPreferencesCamviewViewsLayout: zod.ZodObject<{
41
41
  }, {
42
42
  type: "dnd" | "view";
43
43
  name: string;
44
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
44
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
45
45
  cameras: {
46
46
  cameraId: string;
47
47
  index: number;
@@ -63,14 +63,14 @@ export declare const patchPreferencesCamviewViewsLayout: zod.ZodOptional<zod.Zod
63
63
  }>, "many">>;
64
64
  }, "strip", zod.ZodTypeAny, {
65
65
  name?: string | undefined;
66
- viewSize?: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26 | undefined;
66
+ viewSize?: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26 | undefined;
67
67
  cameras?: {
68
68
  cameraId: string;
69
69
  index: number;
70
70
  }[] | undefined;
71
71
  }, {
72
72
  name?: string | undefined;
73
- viewSize?: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26 | undefined;
73
+ viewSize?: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26 | undefined;
74
74
  cameras?: {
75
75
  cameraId: string;
76
76
  index: number;
@@ -96,7 +96,7 @@ export declare const userPreferencesCamview: zod.ZodObject<{
96
96
  type: "dnd" | "view";
97
97
  _id: string;
98
98
  name: string;
99
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
99
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
100
100
  cameras: {
101
101
  cameraId: string;
102
102
  index: number;
@@ -104,7 +104,7 @@ export declare const userPreferencesCamview: zod.ZodObject<{
104
104
  }, {
105
105
  type: "dnd" | "view";
106
106
  name: string;
107
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
107
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
108
108
  cameras: {
109
109
  cameraId: string;
110
110
  index: number;
@@ -116,7 +116,7 @@ export declare const userPreferencesCamview: zod.ZodObject<{
116
116
  type: "dnd" | "view";
117
117
  _id: string;
118
118
  name: string;
119
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
119
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
120
120
  cameras: {
121
121
  cameraId: string;
122
122
  index: number;
@@ -126,7 +126,7 @@ export declare const userPreferencesCamview: zod.ZodObject<{
126
126
  views: {
127
127
  type: "dnd" | "view";
128
128
  name: string;
129
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
129
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
130
130
  cameras: {
131
131
  cameraId: string;
132
132
  index: number;
@@ -256,7 +256,7 @@ export declare const userPreferences: zod.ZodObject<{
256
256
  type: "dnd" | "view";
257
257
  _id: string;
258
258
  name: string;
259
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
259
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
260
260
  cameras: {
261
261
  cameraId: string;
262
262
  index: number;
@@ -264,7 +264,7 @@ export declare const userPreferences: zod.ZodObject<{
264
264
  }, {
265
265
  type: "dnd" | "view";
266
266
  name: string;
267
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
267
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
268
268
  cameras: {
269
269
  cameraId: string;
270
270
  index: number;
@@ -276,7 +276,7 @@ export declare const userPreferences: zod.ZodObject<{
276
276
  type: "dnd" | "view";
277
277
  _id: string;
278
278
  name: string;
279
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
279
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
280
280
  cameras: {
281
281
  cameraId: string;
282
282
  index: number;
@@ -286,7 +286,7 @@ export declare const userPreferences: zod.ZodObject<{
286
286
  views: {
287
287
  type: "dnd" | "view";
288
288
  name: string;
289
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
289
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
290
290
  cameras: {
291
291
  cameraId: string;
292
292
  index: number;
@@ -358,7 +358,7 @@ export declare const userPreferences: zod.ZodObject<{
358
358
  type: "dnd" | "view";
359
359
  _id: string;
360
360
  name: string;
361
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
361
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
362
362
  cameras: {
363
363
  cameraId: string;
364
364
  index: number;
@@ -380,7 +380,7 @@ export declare const userPreferences: zod.ZodObject<{
380
380
  views: {
381
381
  type: "dnd" | "view";
382
382
  name: string;
383
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
383
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
384
384
  cameras: {
385
385
  cameraId: string;
386
386
  index: number;
@@ -420,7 +420,7 @@ export declare const createUserSchema: zod.ZodEffects<zod.ZodObject<{
420
420
  type: "dnd" | "view";
421
421
  _id: string;
422
422
  name: string;
423
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
423
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
424
424
  cameras: {
425
425
  cameraId: string;
426
426
  index: number;
@@ -428,7 +428,7 @@ export declare const createUserSchema: zod.ZodEffects<zod.ZodObject<{
428
428
  }, {
429
429
  type: "dnd" | "view";
430
430
  name: string;
431
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
431
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
432
432
  cameras: {
433
433
  cameraId: string;
434
434
  index: number;
@@ -440,7 +440,7 @@ export declare const createUserSchema: zod.ZodEffects<zod.ZodObject<{
440
440
  type: "dnd" | "view";
441
441
  _id: string;
442
442
  name: string;
443
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
443
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
444
444
  cameras: {
445
445
  cameraId: string;
446
446
  index: number;
@@ -450,7 +450,7 @@ export declare const createUserSchema: zod.ZodEffects<zod.ZodObject<{
450
450
  views: {
451
451
  type: "dnd" | "view";
452
452
  name: string;
453
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
453
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
454
454
  cameras: {
455
455
  cameraId: string;
456
456
  index: number;
@@ -522,7 +522,7 @@ export declare const createUserSchema: zod.ZodEffects<zod.ZodObject<{
522
522
  type: "dnd" | "view";
523
523
  _id: string;
524
524
  name: string;
525
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
525
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
526
526
  cameras: {
527
527
  cameraId: string;
528
528
  index: number;
@@ -544,7 +544,7 @@ export declare const createUserSchema: zod.ZodEffects<zod.ZodObject<{
544
544
  views: {
545
545
  type: "dnd" | "view";
546
546
  name: string;
547
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
547
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
548
548
  cameras: {
549
549
  cameraId: string;
550
550
  index: number;
@@ -579,7 +579,7 @@ export declare const createUserSchema: zod.ZodEffects<zod.ZodObject<{
579
579
  type: "dnd" | "view";
580
580
  _id: string;
581
581
  name: string;
582
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
582
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
583
583
  cameras: {
584
584
  cameraId: string;
585
585
  index: number;
@@ -612,7 +612,7 @@ export declare const createUserSchema: zod.ZodEffects<zod.ZodObject<{
612
612
  views: {
613
613
  type: "dnd" | "view";
614
614
  name: string;
615
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
615
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
616
616
  cameras: {
617
617
  cameraId: string;
618
618
  index: number;
@@ -647,7 +647,7 @@ export declare const createUserSchema: zod.ZodEffects<zod.ZodObject<{
647
647
  type: "dnd" | "view";
648
648
  _id: string;
649
649
  name: string;
650
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
650
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
651
651
  cameras: {
652
652
  cameraId: string;
653
653
  index: number;
@@ -680,7 +680,7 @@ export declare const createUserSchema: zod.ZodEffects<zod.ZodObject<{
680
680
  views: {
681
681
  type: "dnd" | "view";
682
682
  name: string;
683
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
683
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
684
684
  cameras: {
685
685
  cameraId: string;
686
686
  index: number;
@@ -734,7 +734,7 @@ export declare const patchUserSchema: zod.ZodEffects<zod.ZodObject<{
734
734
  type: "dnd" | "view";
735
735
  _id: string;
736
736
  name: string;
737
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
737
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
738
738
  cameras: {
739
739
  cameraId: string;
740
740
  index: number;
@@ -742,7 +742,7 @@ export declare const patchUserSchema: zod.ZodEffects<zod.ZodObject<{
742
742
  }, {
743
743
  type: "dnd" | "view";
744
744
  name: string;
745
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
745
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
746
746
  cameras: {
747
747
  cameraId: string;
748
748
  index: number;
@@ -754,7 +754,7 @@ export declare const patchUserSchema: zod.ZodEffects<zod.ZodObject<{
754
754
  type: "dnd" | "view";
755
755
  _id: string;
756
756
  name: string;
757
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
757
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
758
758
  cameras: {
759
759
  cameraId: string;
760
760
  index: number;
@@ -764,7 +764,7 @@ export declare const patchUserSchema: zod.ZodEffects<zod.ZodObject<{
764
764
  views: {
765
765
  type: "dnd" | "view";
766
766
  name: string;
767
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
767
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
768
768
  cameras: {
769
769
  cameraId: string;
770
770
  index: number;
@@ -836,7 +836,7 @@ export declare const patchUserSchema: zod.ZodEffects<zod.ZodObject<{
836
836
  type: "dnd" | "view";
837
837
  _id: string;
838
838
  name: string;
839
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
839
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
840
840
  cameras: {
841
841
  cameraId: string;
842
842
  index: number;
@@ -858,7 +858,7 @@ export declare const patchUserSchema: zod.ZodEffects<zod.ZodObject<{
858
858
  views: {
859
859
  type: "dnd" | "view";
860
860
  name: string;
861
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
861
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
862
862
  cameras: {
863
863
  cameraId: string;
864
864
  index: number;
@@ -893,7 +893,7 @@ export declare const patchUserSchema: zod.ZodEffects<zod.ZodObject<{
893
893
  type: "dnd" | "view";
894
894
  _id: string;
895
895
  name: string;
896
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
896
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
897
897
  cameras: {
898
898
  cameraId: string;
899
899
  index: number;
@@ -926,7 +926,7 @@ export declare const patchUserSchema: zod.ZodEffects<zod.ZodObject<{
926
926
  views: {
927
927
  type: "dnd" | "view";
928
928
  name: string;
929
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
929
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
930
930
  cameras: {
931
931
  cameraId: string;
932
932
  index: number;
@@ -961,7 +961,7 @@ export declare const patchUserSchema: zod.ZodEffects<zod.ZodObject<{
961
961
  type: "dnd" | "view";
962
962
  _id: string;
963
963
  name: string;
964
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
964
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
965
965
  cameras: {
966
966
  cameraId: string;
967
967
  index: number;
@@ -994,7 +994,7 @@ export declare const patchUserSchema: zod.ZodEffects<zod.ZodObject<{
994
994
  views: {
995
995
  type: "dnd" | "view";
996
996
  name: string;
997
- viewSize: 1 | 4 | 6 | 16 | 20 | 12 | 10 | 7 | 9 | 13 | 15 | 26;
997
+ viewSize: 1 | 4 | 6 | 9 | 10 | 16 | 20 | 12 | 7 | 13 | 15 | 26;
998
998
  cameras: {
999
999
  cameraId: string;
1000
1000
  index: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camera.ui/browser",
3
- "version": "0.0.100",
3
+ "version": "0.0.101",
4
4
  "description": "camera.ui browser client",
5
5
  "author": "seydx (https://github.com/seydx/camera.ui)",
6
6
  "module": "./dist/bundle.js",
@@ -33,8 +33,8 @@
33
33
  "@rushstack/eslint-patch": "^1.10.4",
34
34
  "@swc/register": "^0.1.10",
35
35
  "@types/webrtc": "^0.0.44",
36
- "@typescript-eslint/eslint-plugin": "^8.8.0",
37
- "@typescript-eslint/parser": "^8.8.0",
36
+ "@typescript-eslint/eslint-plugin": "^8.8.1",
37
+ "@typescript-eslint/parser": "^8.8.1",
38
38
  "bufferutil": "^4.0.8",
39
39
  "eslint": "^8.57.0",
40
40
  "eslint-config-prettier": "^9.1.0",
@@ -42,7 +42,7 @@
42
42
  "prettier": "^3.3.3",
43
43
  "rimraf": "^6.0.1",
44
44
  "ts-loader": "^9.5.1",
45
- "typescript": "^5.6.2",
45
+ "typescript": "^5.6.3",
46
46
  "updates": "^16.4.0",
47
47
  "utf-8-validate": "^6.0.4",
48
48
  "webpack": "^5.95.0",