@gjsify/example-dom-webrtc-loopback 0.4.34 → 0.4.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/gjs.js +1 -1
  2. package/package.json +18 -9
package/dist/gjs.js CHANGED
@@ -7,4 +7,4 @@ if(globalThis.__gjsifyBundleUrl??=import.meta.url,globalThis.process===void 0){l
7
7
  Ubuntu/Debian: apt install gstreamer1.0-plugins-bad`),n.ElementFactory.find(`nicesrc`)||throwNotSupported(`GStreamer "nice" plugin (libnice-gstreamer) not available — required by webrtcbin.
8
8
  Fedora: dnf install libnice-gstreamer1
9
9
  Ubuntu/Debian: apt install gstreamer1.0-nice
10
- Verify with: gst-inspect-1.0 nicesrc`)}function throwNotSupported(e){throw new E(e,`NotSupportedError`)}const we=Symbol(`type`),Te=Symbol(`bubbles`),D=Symbol(`cancelable`),Ee=Symbol(`composed`),De=Symbol(`target`),O=Symbol(`currentTarget`),k=Symbol(`eventPhase`),A=Symbol(`defaultPrevented`),Oe=Symbol(`isTrusted`),ke=Symbol(`timeStamp`),j=Symbol(`stop`),Ae=Symbol(`immediateStop`),M=Symbol(`dispatching`),N=Symbol(`inPassiveListener`);var Event$1=class{static{__name(this,`Event`)}[we];[Te];[D];[Ee];[De]=null;[O]=null;[k]=0;[A]=!1;[Oe]=!1;[ke];[j]=!1;[Ae]=!1;[M]=!1;[N]=!1;get type(){return this[we]}get bubbles(){return this[Te]}get cancelable(){return this[D]}get composed(){return this[Ee]}get target(){return this[De]}get currentTarget(){return this[O]}get eventPhase(){return this[k]}get defaultPrevented(){return this[A]}get timeStamp(){return this[ke]}get cancelBubble(){return this[j]}set cancelBubble(e){e&&this.stopPropagation()}get returnValue(){return!this[A]}set returnValue(e){e||this.preventDefault()}get srcElement(){return this[De]}static NONE=0;static CAPTURING_PHASE=1;static AT_TARGET=2;static BUBBLING_PHASE=3;get[Symbol.toStringTag](){return`Event`}constructor(e,t){this[we]=e,this[Te]=t?.bubbles??!1,this[D]=t?.cancelable??!1,this[Ee]=t?.composed??!1,this[ke]=Date.now(),Object.defineProperty(this,"isTrusted",{get:()=>this[Oe],enumerable:!0,configurable:!1})}composedPath(){return this[O]?[this[O]]:[]}preventDefault(){this[D]&&!this[N]&&(this[A]=!0)}stopPropagation(){this[j]=!0}stopImmediatePropagation(){this[j]=!0,this[Ae]=!0}},CustomEvent=class extends Event$1{detail;constructor(e,t){super(e,t),this.detail=t?.detail}},MessageEvent$1=class extends Event$1{static{__name(this,`MessageEvent`)}data;origin;lastEventId;source;ports;constructor(e,t){super(e,t),this.data=t?.data??null,this.origin=t?.origin??``,this.lastEventId=t?.lastEventId??``,this.source=t?.source??null,this.ports=t?.ports??[]}get[Symbol.toStringTag](){return`MessageEvent`}},ErrorEvent=class extends Event$1{message;filename;lineno;colno;error;constructor(e,t){super(e,t),this.message=t?.message??``,this.filename=t?.filename??``,this.lineno=t?.lineno??0,this.colno=t?.colno??0,this.error=t?.error??null}get[Symbol.toStringTag](){return`ErrorEvent`}},CloseEvent=class extends Event$1{code;reason;wasClean;constructor(e,t){super(e,t),this.code=t?.code??0,this.reason=t?.reason??``,this.wasClean=t?.wasClean??!1}get[Symbol.toStringTag](){return`CloseEvent`}},ProgressEvent=class extends Event$1{lengthComputable;loaded;total;constructor(e,t){super(e,t),this.lengthComputable=t?.lengthComputable??!1,this.loaded=t?.loaded??0,this.total=t?.total??0}get[Symbol.toStringTag](){return`ProgressEvent`}},EventTarget$1=class{static{__name(this,`EventTarget`)}_listeners=new Map;get[Symbol.toStringTag](){return`EventTarget`}addEventListener(e,t,n){if(t===null)return;let r=typeof n==`boolean`?n:n?.capture??!1,i=typeof n==`object`?n?.once??!1:!1,a=typeof n==`object`?n?.passive??!1:!1,o=this._listeners.get(e);o||(o=[],this._listeners.set(e,o));for(let e of o)if(e.listener===t&&e.capture===r)return;let s={listener:t,capture:r,once:i,passive:a,removed:!1};o.push(s),typeof n==`object`&&n?.signal&&n.signal.addEventListener(`abort`,()=>{this.removeEventListener(e,t,{capture:r})},{once:!0})}removeEventListener(e,t,n){if(t===null)return;let r=typeof n==`boolean`?n:n?.capture??!1,i=this._listeners.get(e);if(!i)return;let a=i.findIndex(e=>e.listener===t&&e.capture===r);a!==-1&&(i[a].removed=!0,i.splice(a,1),i.length===0&&this._listeners.delete(e))}dispatchEvent(e){let t=e;if(t[M])throw new E(`The event is already being dispatched.`,`InvalidStateError`);t[M]=!0,t[De]=this,t[O]=this,t[k]=Event$1.AT_TARGET;let n=this._listeners.get(e.type);if(n){let r=[...n];for(let n of r)if(!n.removed){if(t[Ae]||t[j])break;n.once&&this.removeEventListener(e.type,n.listener,{capture:n.capture});try{n.passive&&(t[N]=!0),typeof n.listener==`function`?n.listener.call(this,e):typeof n.listener.handleEvent==`function`&&n.listener.handleEvent.call(n.listener,e)}catch(e){g.error(e)}finally{t[N]=!1}}}return t[k]=Event$1.NONE,t[O]=null,t[M]=!1,!e.defaultPrevented}};for(let[e,t]of[[`NONE`,0],[`CAPTURING_PHASE`,1],[`AT_TARGET`,2],[`BUBBLING_PHASE`,3]])Object.defineProperty(Event$1.prototype,e,{value:t,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(Event$1,e,{value:t,writable:!1,enumerable:!0,configurable:!1});const je=globalThis;je.Event===void 0&&Object.defineProperty(globalThis,"Event",{value:Event$1,writable:!0,configurable:!0}),je.EventTarget===void 0&&Object.defineProperty(globalThis,"EventTarget",{value:EventTarget$1,writable:!0,configurable:!0});var P=class MediaStreamTrack extends EventTarget{id;kind;label;_enabled=!0;_muted;_ended=!1;_contentHint=``;_onended=null;_onmute=null;_onunmute=null;_gstSource=null;_gstPipeline=null;_gstTee=null;_teeMultiplexer=null;_enableCallback=null;constructor(t){super(),this.id=t.id??e.uuid_string_random(),this.kind=t.kind,this.label=t.label??``,this._muted=t.muted??!1,t._gst&&(this._gstSource=t._gst.source,this._gstPipeline=t._gst.pipeline)}get enabled(){return this._enabled}set enabled(e){let t=!!e;this._enabled!==t&&(this._enabled=t,this._enableCallback?.(t))}get muted(){return this._muted}get readyState(){return this._ended?`ended`:`live`}get contentHint(){return this._contentHint}set contentHint(e){if(this.kind===`audio`){if(e!==``&&e!==`speech`&&e!==`speech-recognition`&&e!==`music`)return}else if(e!==``&&e!==`motion`&&e!==`detail`&&e!==`text`)return;this._contentHint=e}get onended(){return this._onended}set onended(e){this._onended=e}get onmute(){return this._onmute}set onmute(e){this._onmute=e}get onunmute(){return this._onunmute}set onunmute(e){this._onunmute=e}clone(){let e=new MediaStreamTrack({kind:this.kind,label:this.label,muted:this._muted});return e._enabled=this._enabled,e}stop(){if(this._ended)return;if(this._ended=!0,this._gstSource||this._gstPipeline){try{this._gstPipeline?.set_state(n.State.NULL)}catch{}try{this._gstSource?.set_state(n.State.NULL)}catch{}this._gstSource=null,this._gstPipeline=null}let e=new Event(`ended`);this._onended?.call(this,e),this.dispatchEvent(e)}getCapabilities(){return{}}getConstraints(){return{}}getSettings(){return{}}applyConstraints(e){return Promise.reject(new DOMException(`applyConstraints is not supported`,`NotSupportedError`))}_setMuted(e){if(this._muted===e)return;this._muted=e;let t=new Event(e?`mute`:`unmute`);e?this._onmute?.call(this,t):this._onunmute?.call(this,t),this.dispatchEvent(t)}_setEnableCallback(e){this._enableCallback=e}},Me=class MediaStream extends EventTarget{id;_tracks=new Map;_onaddtrack=null;_onremovetrack=null;constructor(t){if(super(),this.id=e.uuid_string_random(),t instanceof MediaStream)for(let e of t.getTracks())this._tracks.set(e.id,e.clone());else if(Array.isArray(t))for(let e of t)this._tracks.set(e.id,e)}get active(){for(let e of this._tracks.values())if(e.readyState===`live`)return!0;return!1}get onaddtrack(){return this._onaddtrack}set onaddtrack(e){this._onaddtrack=e}get onremovetrack(){return this._onremovetrack}set onremovetrack(e){this._onremovetrack=e}getTracks(){return[...this._tracks.values()]}getAudioTracks(){return this.getTracks().filter(e=>e.kind===`audio`)}getVideoTracks(){return this.getTracks().filter(e=>e.kind===`video`)}getTrackById(e){return this._tracks.get(e)??null}addTrack(e){if(this._tracks.has(e.id))return;this._tracks.set(e.id,e);let t=new MediaStreamTrackEvent(`addtrack`,{track:e});this._onaddtrack?.call(this,t),this.dispatchEvent(t)}removeTrack(e){if(!this._tracks.delete(e.id))return;let t=new MediaStreamTrackEvent(`removetrack`,{track:e});this._onremovetrack?.call(this,t),this.dispatchEvent(t)}clone(){return new MediaStream(this)}},MediaStreamTrackEvent=class extends Event{track;constructor(e,t){super(e,t),this.track=t.track}},RTCTrackEvent=class extends Event{receiver;track;streams;transceiver;constructor(e,t){if(super(e,t),!t||typeof t!=`object`)throw TypeError(`RTCTrackEventInit is required`);if(!(`receiver`in t))throw TypeError(`Failed to construct 'RTCTrackEvent': required member receiver is not provided.`);if(!(`track`in t))throw TypeError(`Failed to construct 'RTCTrackEvent': required member track is not provided.`);if(!(`transceiver`in t))throw TypeError(`Failed to construct 'RTCTrackEvent': required member transceiver is not provided.`);this.receiver=t.receiver,this.track=t.track,this.streams=Object.freeze(t.streams?[...t.streams]:[]),this.transceiver=t.transceiver}};const F=globalThis;F.MediaStream===void 0&&(F.MediaStream=Me),F.MediaStreamTrack===void 0&&(F.MediaStreamTrack=P),F.RTCTrackEvent===void 0&&(F.RTCTrackEvent=RTCTrackEvent);function sdpTypeToGst(e){switch(e){case`offer`:return r.WebRTCSDPType.OFFER;case`pranswer`:return r.WebRTCSDPType.PRANSWER;case`answer`:return r.WebRTCSDPType.ANSWER;case`rollback`:return r.WebRTCSDPType.ROLLBACK}}function sdpTypeFromGst(e){switch(e){case r.WebRTCSDPType.OFFER:return`offer`;case r.WebRTCSDPType.PRANSWER:return`pranswer`;case r.WebRTCSDPType.ANSWER:return`answer`;case r.WebRTCSDPType.ROLLBACK:return`rollback`;default:return`offer`}}var I=class RTCSessionDescription{type;sdp;constructor(e){this.type=e?.type??`offer`,this.sdp=e?.sdp??``}toJSON(){return{type:this.type,sdp:this.sdp}}toGstDesc(){let[e,t]=i.SDPMessage.new_from_text(this.sdp);if(e!==i.SDPResult.OK)throw Error(`Failed to parse SDP text (GstSDPResult=${e})`);return r.WebRTCSessionDescription.new(sdpTypeToGst(this.type),t)}static fromGstDesc(e){let t=e.sdp?.as_text?.()??``;return new RTCSessionDescription({type:sdpTypeFromGst(e.type),sdp:t})}};function parseCandidate(e){let t=e.trim();t.startsWith(`a=`)&&(t=t.slice(2)),t.startsWith(`candidate:`)&&(t=t.slice(10));let n=t.split(/\s+/);if(n.length<8)return{};let r=n[2]?.toLowerCase(),i=n.indexOf(`typ`),a=i>=0?n[i+1]:void 0,o=n.indexOf(`raddr`),s=n.indexOf(`rport`),c=n.indexOf(`tcptype`),l=Number(n[1]);return{foundation:n[0],component:l===1?`rtp`:l===2?`rtcp`:null,priority:Number(n[3])||null,protocol:r===`udp`||r===`tcp`?r:null,address:n[4]??null,port:Number(n[5])||null,type:a===`host`||a===`srflx`||a===`prflx`||a===`relay`?a:null,relatedAddress:o>=0?n[o+1]??null:null,relatedPort:s>=0&&Number(n[s+1])||null,tcpType:c>=0?n[c+1]:null}}var RTCIceCandidate=class{candidate;sdpMid;sdpMLineIndex;usernameFragment;foundation;component;priority;protocol;address;port;type;tcpType;relatedAddress;relatedPort;constructor(e={}){if(e.sdpMid==null&&e.sdpMLineIndex==null)throw TypeError(`RTCIceCandidate requires either sdpMid or sdpMLineIndex`);this.candidate=e.candidate??``,this.sdpMid=e.sdpMid??null,this.sdpMLineIndex=e.sdpMLineIndex??null,this.usernameFragment=e.usernameFragment??null;let t=parseCandidate(this.candidate);this.foundation=t.foundation??null,this.component=t.component??null,this.priority=t.priority??null,this.protocol=t.protocol??null,this.address=t.address??null,this.port=t.port??null,this.type=t.type??null,this.tcpType=t.tcpType??null,this.relatedAddress=t.relatedAddress??null,this.relatedPort=t.relatedPort??null}toJSON(){return{candidate:this.candidate,sdpMid:this.sdpMid,sdpMLineIndex:this.sdpMLineIndex,usernameFragment:this.usernameFragment}}},RTCPeerConnectionIceEvent=class extends Event{candidate;url;constructor(e,t={}){super(e,t),this.candidate=t.candidate??null,this.url=t.url??null}},RTCDataChannelEvent=class extends Event{channel;constructor(e,t){if(super(e,t),!t||!t.channel)throw TypeError("RTCDataChannelEvent requires a `channel` member");this.channel=t.channel}},RTCErrorEvent=class extends Event{error;constructor(e,t){if(super(e,t),!t||!t.error)throw TypeError("RTCErrorEvent requires an `error` member");this.error=t.error}};const Ne={[r.WebRTCSignalingState.STABLE]:`stable`,[r.WebRTCSignalingState.CLOSED]:`closed`,[r.WebRTCSignalingState.HAVE_LOCAL_OFFER]:`have-local-offer`,[r.WebRTCSignalingState.HAVE_REMOTE_OFFER]:`have-remote-offer`,[r.WebRTCSignalingState.HAVE_LOCAL_PRANSWER]:`have-local-pranswer`,[r.WebRTCSignalingState.HAVE_REMOTE_PRANSWER]:`have-remote-pranswer`};function gstToSignalingState(e){return Ne[e]??`stable`}const Pe={[r.WebRTCPeerConnectionState.NEW]:`new`,[r.WebRTCPeerConnectionState.CONNECTING]:`connecting`,[r.WebRTCPeerConnectionState.CONNECTED]:`connected`,[r.WebRTCPeerConnectionState.DISCONNECTED]:`disconnected`,[r.WebRTCPeerConnectionState.FAILED]:`failed`,[r.WebRTCPeerConnectionState.CLOSED]:`closed`};function gstToConnectionState(e){return Pe[e]??`new`}const Fe={[r.WebRTCICEConnectionState.NEW]:`new`,[r.WebRTCICEConnectionState.CHECKING]:`checking`,[r.WebRTCICEConnectionState.CONNECTED]:`connected`,[r.WebRTCICEConnectionState.COMPLETED]:`completed`,[r.WebRTCICEConnectionState.FAILED]:`failed`,[r.WebRTCICEConnectionState.DISCONNECTED]:`disconnected`,[r.WebRTCICEConnectionState.CLOSED]:`closed`};function gstToIceConnectionState(e){return Fe[e]??`new`}const Ie={[r.WebRTCICEGatheringState.NEW]:`new`,[r.WebRTCICEGatheringState.GATHERING]:`gathering`,[r.WebRTCICEGatheringState.COMPLETE]:`complete`};function gstToIceGatheringState(e){return Ie[e]??`new`}const Le={[r.WebRTCRTPTransceiverDirection.SENDRECV]:`sendrecv`,[r.WebRTCRTPTransceiverDirection.SENDONLY]:`sendonly`,[r.WebRTCRTPTransceiverDirection.RECVONLY]:`recvonly`},Re={sendrecv:r.WebRTCRTPTransceiverDirection.SENDRECV,sendonly:r.WebRTCRTPTransceiverDirection.SENDONLY,recvonly:r.WebRTCRTPTransceiverDirection.RECVONLY,inactive:r.WebRTCRTPTransceiverDirection.NONE};function gstDirectionToW3C(e){return Le[e]??`inactive`}function w3cDirectionToGst(e){return Re[e]??r.WebRTCRTPTransceiverDirection.NONE}const ze={[r.WebRTCStatsType.CODEC]:`codec`,[r.WebRTCStatsType.INBOUND_RTP]:`inbound-rtp`,[r.WebRTCStatsType.OUTBOUND_RTP]:`outbound-rtp`,[r.WebRTCStatsType.REMOTE_INBOUND_RTP]:`remote-inbound-rtp`,[r.WebRTCStatsType.REMOTE_OUTBOUND_RTP]:`remote-outbound-rtp`,[r.WebRTCStatsType.CSRC]:`csrc`,[r.WebRTCStatsType.PEER_CONNECTION]:`peer-connection`,[r.WebRTCStatsType.DATA_CHANNEL]:`data-channel`,[r.WebRTCStatsType.STREAM]:`stream`,[r.WebRTCStatsType.TRANSPORT]:`transport`,[r.WebRTCStatsType.CANDIDATE_PAIR]:`candidate-pair`,[r.WebRTCStatsType.LOCAL_CANDIDATE]:`local-candidate`,[r.WebRTCStatsType.REMOTE_CANDIDATE]:`remote-candidate`,[r.WebRTCStatsType.CERTIFICATE]:`certificate`};function gstToStatsType(e){return ze[e]}const asWebRtcBin=e=>e,asWebRtcSrcPad=e=>e,asValveElement=e=>e,asRtpPayloaderElement=e=>e,asCapsFilterElement=e=>e,asVp8EncElement=e=>e,Be=globalThis;globalThis.DOMException===void 0&&(Be.DOMException=E);var RTCError=class extends DOMException{errorDetail;sdpLineNumber;sctpCauseCode;receivedAlert;sentAlert;httpRequestStatusCode;constructor(e,t){if(super(t??e.errorDetail,`OperationError`),!e||!e.errorDetail)throw TypeError(`RTCError: errorDetail is required`);this.errorDetail=e.errorDetail,this.sdpLineNumber=e.sdpLineNumber??null,this.sctpCauseCode=e.sctpCauseCode??null,this.receivedAlert=e.receivedAlert??null,this.sentAlert=e.sentAlert??null,this.httpRequestStatusCode=e.httpRequestStatusCode??null}};const Ve=a.PromiseBridge,He=a.WebrtcbinBridge,Ue=a.DataChannelBridge,We=a.ReceiverBridge,Ge={1:`connecting`,2:`open`,3:`closing`,4:`closed`};function toGBytes(t){let n;return n=ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(t),new e.Bytes(n)}function bytesToArrayBuffer(e){let t=e,n=t.toArray?.();if(n instanceof Uint8Array)return n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength);let r=t.get_data?.();return r instanceof Uint8Array?r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength):new ArrayBuffer(0)}var RTCDataChannel=class extends EventTarget{_native;_bridge;_binaryType=`arraybuffer`;_bufferedAmount=0;_closed=!1;_onopen=null;_onclose=null;_onerror=null;_onmessage=null;_onbufferedamountlow=null;_onclosing=null;constructor(e){super();let t=e;t.channel!==void 0&&typeof t.dispose_bridge==`function`?(this._bridge=e,this._native=this._bridge.channel):(this._native=e,this._bridge=new Ue({channel:this._native})),this._bridge.connect(`opened`,()=>this._handleOpen()),this._bridge.connect(`closed`,()=>this._handleClose()),this._bridge.connect(`error-occurred`,(e,t)=>this._handleError(t)),this._bridge.connect(`message-string`,(e,t)=>this._handleString(t)),this._bridge.connect(`message-data`,(e,t)=>this._handleData(t)),this._bridge.connect(`buffered-amount-low`,()=>this._handleBufferedAmountLow()),this._bridge.connect(`ready-state-changed`,()=>this._handleReadyStateChange())}get label(){return this._native.label}get ordered(){return this._native.ordered}get protocol(){return this._native.protocol}get negotiated(){return this._native.negotiated}get id(){return this._native.id>=0?this._native.id:null}get maxPacketLifeTime(){let e=this._native.max_packet_lifetime;return e>=0?e:null}get maxRetransmits(){let e=this._native.max_retransmits;return e>=0?e:null}get readyState(){return this._closed?`closed`:Ge[this._native.ready_state]??`connecting`}get bufferedAmount(){try{return Number(this._native.buffered_amount)||this._bufferedAmount}catch{return this._bufferedAmount}}get bufferedAmountLowThreshold(){return Number(this._native.buffered_amount_low_threshold)||0}set bufferedAmountLowThreshold(e){this._native.buffered_amount_low_threshold=e}get binaryType(){return this._binaryType}set binaryType(e){e!==`arraybuffer`&&e!==`blob`||(this._binaryType=e)}get onopen(){return this._onopen}set onopen(e){this._onopen=e}get onclose(){return this._onclose}set onclose(e){this._onclose=e}get onclosing(){return this._onclosing}set onclosing(e){this._onclosing=e}get onerror(){return this._onerror}set onerror(e){this._onerror=e}get onmessage(){return this._onmessage}set onmessage(e){this._onmessage=e}get onbufferedamountlow(){return this._onbufferedamountlow}set onbufferedamountlow(e){this._onbufferedamountlow=e}send(e){let t=this.readyState;if(t!==`open`)throw new E(`RTCDataChannel.send: readyState is '${t}', expected 'open'`,`InvalidStateError`);if(typeof e==`string`){this._native.send_string(e),this._bufferedAmount+=new TextEncoder().encode(e).byteLength;return}if(e instanceof u){e.arrayBuffer().then(e=>{try{this._native.send_data(toGBytes(e)),this._bufferedAmount+=e.byteLength}catch{}});return}if(ArrayBuffer.isView(e)){let t=toGBytes(e);this._native.send_data(t),this._bufferedAmount+=e.byteLength;return}if(e instanceof ArrayBuffer){let t=toGBytes(e);this._native.send_data(t),this._bufferedAmount+=e.byteLength;return}throw TypeError(`RTCDataChannel.send: unsupported data type`)}close(){if(!this._closed){try{this._native.close()}catch{}this._disconnectSignals(),this._closed=!0}}_disconnectSignals(){try{this._bridge.dispose_bridge()}catch{}}_handleOpen(){let e=new Event(`open`);this._onopen?.call(this,e),this.dispatchEvent(e)}_handleClose(){this._closed=!0;let e=new Event(`close`);this._onclose?.call(this,e),this.dispatchEvent(e)}_handleError(e){let t=new RTCErrorEvent(`error`,{error:new RTCError({errorDetail:`data-channel-failure`},e||`RTCDataChannel error`)});this._onerror?.call(this,t),this.dispatchEvent(t)}_handleString(e){let t=new MessageEvent(`message`,{data:e});this._onmessage?.call(this,t),this.dispatchEvent(t)}_handleData(e){if(!e)return;let t=bytesToArrayBuffer(e),n=this._binaryType===`blob`?new u([t]):t,r=new MessageEvent(`message`,{data:n});this._onmessage?.call(this,r),this.dispatchEvent(r)}_handleBufferedAmountLow(){this._bufferedAmount=Number(this._native.buffered_amount)||0;let e=new Event(`bufferedamountlow`);this._onbufferedamountlow?.call(this,e),this.dispatchEvent(e)}_handleReadyStateChange(){if(this.readyState===`closing`){let e=new Event(`closing`);this._onclosing?.call(this,e),this.dispatchEvent(e)}}};const Ke={codecs:[{mimeType:`audio/opus`,clockRate:48e3,channels:2,sdpFmtpLine:`minptime=10;useinbandfec=1`},{mimeType:`audio/G722`,clockRate:8e3,channels:1},{mimeType:`audio/PCMU`,clockRate:8e3,channels:1},{mimeType:`audio/PCMA`,clockRate:8e3,channels:1},{mimeType:`audio/telephone-event`,clockRate:8e3,channels:1},{mimeType:`audio/red`,clockRate:48e3,channels:2}],headerExtensions:[{uri:`urn:ietf:params:rtp-hdrext:ssrc-audio-level`},{uri:`http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time`},{uri:`urn:ietf:params:rtp-hdrext:sdes:mid`}]},qe={codecs:[{mimeType:`video/VP8`,clockRate:9e4},{mimeType:`video/rtx`,clockRate:9e4},{mimeType:`video/H264`,clockRate:9e4,sdpFmtpLine:`level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f`},{mimeType:`video/VP9`,clockRate:9e4},{mimeType:`video/red`,clockRate:9e4},{mimeType:`video/ulpfec`,clockRate:9e4}],headerExtensions:[{uri:`urn:ietf:params:rtp-hdrext:toffset`},{uri:`http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time`},{uri:`urn:3gpp:video-orientation`},{uri:`urn:ietf:params:rtp-hdrext:sdes:mid`},{uri:`urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id`},{uri:`urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id`}]};function getRtpCapabilities(e){return e===`audio`?Ke:e===`video`?qe:null}const Je=new Set(`0123456789ABCDabcd#*,`);var RTCDTMFToneChangeEvent=class extends Event{tone;constructor(e,t={}){super(e,t),this.tone=t.tone??``}},RTCDTMFSender=class extends EventTarget{_toneBuffer=``;_duration=100;_interToneGap=70;_timerId=null;_canInsert=!0;_ontonechange=null;_isStopped=()=>!1;_getCurrentDirection=()=>null;get toneBuffer(){return this._toneBuffer}get canInsertDTMF(){return this._canInsert}get ontonechange(){return this._ontonechange}set ontonechange(e){this._ontonechange=e}insertDTMF(e,t,n){if(this._isStopped())throw new DOMException(`Failed to execute 'insertDTMF': The associated transceiver is stopped`,`InvalidStateError`);let r=this._getCurrentDirection();if(r===`recvonly`||r===`inactive`)throw new DOMException(`Failed to execute 'insertDTMF': The associated transceiver direction does not allow sending`,`InvalidStateError`);for(let t of e)if(!Je.has(t))throw new DOMException(`Failed to execute 'insertDTMF': Invalid DTMF character '${t}'`,`InvalidCharacterError`);e=e.replace(/[a-d]/g,e=>e.toUpperCase());let i=t??100;this._duration=Math.max(40,Math.min(6e3,i));let a=n??70;this._interToneGap=Math.max(30,a),this._toneBuffer=e,this._timerId!==null&&(clearTimeout(this._timerId),this._timerId=null),e.length>0&&this._scheduleNextTone(0)}_scheduleNextTone(e){this._timerId=setTimeout(()=>{this._timerId=null,this._playNextTone()},e)}_playNextTone(){if(this._toneBuffer.length===0){this._fireToneChange(``);return}let e=this._toneBuffer[0];this._toneBuffer=this._toneBuffer.slice(1),this._fireToneChange(e);let t=e===`,`?2e3:this._duration+this._interToneGap;this._scheduleNextTone(t)}_fireToneChange(e){let t=new RTCDTMFToneChangeEvent(`tonechange`,{tone:e});this._ontonechange?.call(this,t),this.dispatchEvent(t)}_stop(){this._timerId!==null&&(clearTimeout(this._timerId),this._timerId=null),this._toneBuffer=``,this._canInsert=!1}},TeeMultiplexer=class{_tee;_pipeline;_branchCount=0;constructor(e,t){this._pipeline=e,this._tee=n.ElementFactory.make(`tee`,null),this._tee.allow_not_linked=!0,e.add(this._tee),this._tee.sync_state_with_parent(),t.link(this._tee)}requestSrcPad(){let e=`src_%u`,t=this._tee.request_pad_simple?this._tee.request_pad_simple(e):this._tee.get_request_pad(e);return t&&this._branchCount++,t}releaseSrcPad(e){if(e){try{e.add_probe(n.PadProbeType.BLOCK_DOWNSTREAM,()=>n.PadProbeReturn.DROP)}catch{}try{let t=e.get_peer();t&&e.unlink(t)}catch{}try{this._tee.release_request_pad(e)}catch{}this._branchCount--}}get branchCount(){return this._branchCount}get element(){return this._tee}},Ye=__exportAll({RTCStatsReport:()=>RTCStatsReport}),RTCStatsReport,Xe=__esmMin(()=>{RTCStatsReport=class{_map;constructor(e){this._map=new Map(e)}get size(){return this._map.size}get(e){return this._map.get(e)}has(e){return this._map.has(e)}forEach(e,t){this._map.forEach((n,r)=>{e.call(t,n,r,this)})}entries(){return this._map.entries()}keys(){return this._map.keys()}values(){return this._map.values()}[Symbol.iterator](){return this._map.entries()}}});let Ze=0;var RTCRtpSender=class{_gstSender;_track=null;_lastParams=null;_pipeline=null;_webrtcbin=null;_mlineIndex=-1;_elements=[];_valve=null;_linked=!1;_teeSrcPad=null;_getStatsForTrack=null;_transport=null;_dtmf=null;_kind=null;_transceiver=null;_onPipelineChanged=null;constructor(e,t,n){this._gstSender=e,this._pipeline=t??null,this._webrtcbin=n??null}get track(){return this._track}get dtmf(){if((this._track?.kind??this._kind)!==`audio`)return null;if(!this._dtmf){let e=new RTCDTMFSender;e._isStopped=()=>this._transceiver?.stopped??!1,e._getCurrentDirection=()=>this._transceiver?.currentDirection??null,this._dtmf=e}return this._dtmf}get transport(){return this._transport}_setTrack(e){e===null&&this._linked&&this._teardownPipeline(),this._track=e}_setMlineIndex(e){this._mlineIndex=e}_wirePipeline(e){if(this._linked||!this._pipeline||!this._webrtcbin)return;let t=e._gstSource;if(!t)return;let r=e,i;if(r._gstTee&&r._gstPipeline&&r._gstPipeline!==this._pipeline){let e=r._gstPipeline,t=r._gstTee;this._webrtcbin.get_parent()===this._pipeline&&(this._pipeline.set_state(n.State.NULL),this._pipeline.remove(this._webrtcbin)),e.add(this._webrtcbin),this._webrtcbin.sync_state_with_parent(),this._pipeline=e,this._onPipelineChanged?.(e);let a=t.request_pad_simple?t.request_pad_simple(`src_%u`):t.get_request_pad(`src_%u`);this._teeSrcPad=a,i=null}else if(r._teeMultiplexer){let e=r._teeMultiplexer.requestSrcPad();this._teeSrcPad=e,i=null}else if(r._gstPipeline&&r._gstPipeline!==this._pipeline){let e=r._gstPipeline,a=t.get_static_pad(`src`),o=a?.get_peer?.();o&&a.unlink(o),t.set_state(n.State.NULL),e.remove(t),this._pipeline.add(t),r._gstPipeline=this._pipeline;let s=new TeeMultiplexer(this._pipeline,t);if(r._teeMultiplexer=s,o){let e=s.requestSrcPad();e&&e.link(o)}let c=s.requestSrcPad();this._teeSrcPad=c,i=null}else{let e=r._gstPipeline;e&&e!==this._pipeline&&(t.set_state(n.State.NULL),e.remove(t),r._gstPipeline=this._pipeline),t.get_parent()!==this._pipeline&&this._pipeline.add(t),i=t}let a=asValveElement(n.ElementFactory.make(`valve`,null));a.drop=!e.enabled,this._valve=a,this._pipeline.add(a);let o=[a],s;if(e.kind===`audio`){let e=n.ElementFactory.make(`audioconvert`,null),t=n.ElementFactory.make(`audioresample`,null),r=n.ElementFactory.make(`opusenc`,null),c=asRtpPayloaderElement(n.ElementFactory.make(`rtpopuspay`,null));c.pt=111;let l=asCapsFilterElement(n.ElementFactory.make(`capsfilter`,null));l.caps=n.Caps.from_string(`application/x-rtp,media=audio,encoding-name=OPUS,clock-rate=48000,payload=111`),o.push(e,t,r,c,l);for(let e of o)this._pipeline.add(e);if(this._teeSrcPad){let e=a.get_static_pad(`sink`);this._teeSrcPad.link(e)}else i&&i.link(a);a.link(e),e.link(t),t.link(r),r.link(c),c.link(l),s=l}else{let e=n.ElementFactory.make(`videoconvert`,null),t=n.ElementFactory.make(`videoscale`,null),r=asVp8EncElement(n.ElementFactory.make(`vp8enc`,null));r.deadline=1,r.keyframe_max_dist=60;let c=asRtpPayloaderElement(n.ElementFactory.make(`rtpvp8pay`,null));c.pt=96;let l=asCapsFilterElement(n.ElementFactory.make(`capsfilter`,null));l.caps=n.Caps.from_string(`application/x-rtp,media=video,encoding-name=VP8,clock-rate=90000,payload=96`),o.push(e,t,r,c,l);for(let e of o)this._pipeline.add(e);if(this._teeSrcPad){let e=a.get_static_pad(`sink`);this._teeSrcPad.link(e)}else i&&i.link(a);a.link(e),e.link(t),t.link(r),r.link(c),c.link(l),s=l}let c=this._mlineIndex>=0?`sink_${this._mlineIndex}`:`sink_%u`,l=this._webrtcbin.request_pad_simple?this._webrtcbin.request_pad_simple(c):this._webrtcbin.get_request_pad(c);l&&s.get_static_pad(`src`).link(l);let u=this._teeSrcPad?o:[t,...o];for(let e of u)e.sync_state_with_parent();this._elements=u,this._linked=!0,e._setEnableCallback(e=>{this._valve&&(this._valve.drop=!e)})}_teardownPipeline(){if(this._linked){if(this._track&&this._track._setEnableCallback(null),this._teeSrcPad&&this._track?._teeMultiplexer){try{this._track._teeMultiplexer.releaseSrcPad(this._teeSrcPad)}catch{}this._teeSrcPad=null}for(let e of[...this._elements].reverse())try{e.set_state(n.State.NULL),this._pipeline?.remove(e)}catch{}this._elements=[],this._valve=null,this._linked=!1}}getParameters(){return this._lastParams||={transactionId:String(++Ze),encodings:[],codecs:[],headerExtensions:[],rtcp:{}},{...this._lastParams,encodings:[...this._lastParams.encodings]}}async setParameters(e){if(!this._lastParams)throw new DOMException(`getParameters must be called before setParameters`,`InvalidStateError`);if(e.transactionId!==this._lastParams.transactionId)throw new DOMException(`transactionId mismatch`,`InvalidModificationError`);this._lastParams=null}async replaceTrack(e){if(e===null){this._teardownPipeline(),this._track=null;return}if(this._track!==null&&e.kind!==this._track.kind)throw TypeError(`Cannot replace track with different kind`);let t=e;if(this._linked&&t._gstSource){let e=this._elements[0],r=t._gstSource,i=t._gstPipeline;i&&i!==this._pipeline&&(r.set_state(n.State.NULL),i.remove(r),t._gstPipeline=this._pipeline),e.set_state(n.State.NULL),this._valve&&e.unlink(this._valve),this._pipeline?.remove(e),this._pipeline?.add(r),this._valve&&r.link(this._valve),r.sync_state_with_parent(),this._elements[0]=r}else t._gstSource&&this._wirePipeline(e);this._track&&this._track._setEnableCallback(null),this._track=e,this._linked&&e._setEnableCallback(e=>{this._valve&&(this._valve.drop=!e)})}async getStats(){if(this._getStatsForTrack&&this._track)return this._getStatsForTrack(this._track);let{RTCStatsReport:e}=await Promise.resolve().then(()=>(Xe(),Ye));return new e}setStreams(...e){}static getCapabilities(e){return getRtpCapabilities(e)}};const Qe=4e3;var RTCRtpReceiver=class{_gstReceiver;_track;_jitterBufferTarget=null;_pipeline=null;_receiverBridge=null;_getStatsForTrack=null;constructor(e,t,n){this._gstReceiver=t,this._pipeline=n??null,this._track=new P({kind:e,muted:!0})}_connectToPad(e){!this._pipeline||this._receiverBridge||(this._receiverBridge=new We({pipeline:this._pipeline,kind:this._track.kind}),this._receiverBridge.connect_to_pad(e),this._receiverBridge.connect(`media-flowing`,()=>{this._track._setMuted(!1)}))}_dispose(){try{this._receiverBridge?.dispose_bridge()}catch{}this._receiverBridge=null}_transport=null;get track(){return this._track}get transport(){return this._transport}get jitterBufferTarget(){return this._jitterBufferTarget}set jitterBufferTarget(e){if(e===null){this._jitterBufferTarget=null;return}let t=Number(e);if(!Number.isFinite(t)||t<0)throw RangeError(`Failed to set jitterBufferTarget: ${e} is negative or not finite`);if(t>Qe)throw RangeError(`Failed to set jitterBufferTarget: ${e} exceeds maximum of ${Qe}`);this._jitterBufferTarget=t}getParameters(){return{codecs:[],headerExtensions:[],rtcp:{}}}getContributingSources(){return[]}getSynchronizationSources(){return[]}async getStats(){if(this._getStatsForTrack&&this._track)return this._getStatsForTrack(this._track);let{RTCStatsReport:e}=await Promise.resolve().then(()=>(Xe(),Ye));return new e}static getCapabilities(e){return getRtpCapabilities(e)}},RTCRtpTransceiver=class{_gstTrans;sender;receiver;_stopped=!1;_codecPreferences=[];constructor(e,t,n){this._gstTrans=e,this.sender=t,this.receiver=n}get mid(){if(this._stopped)return null;let e=this._gstTrans.mid;return e===``||e==null?null:String(e)}get direction(){return this._stopped?`stopped`:gstDirectionToW3C(this._gstTrans.direction)}set direction(e){if(this._stopped)throw new DOMException(`Cannot set direction on a stopped transceiver`,`InvalidStateError`);if(e===`stopped`)throw TypeError(`The provided value 'stopped' is not a valid enum value of type RTCRtpTransceiverDirection.`);if(![`sendrecv`,`sendonly`,`recvonly`,`inactive`].includes(e))throw TypeError(`The provided value '${e}' is not a valid enum value of type RTCRtpTransceiverDirection.`);this._gstTrans.direction=w3cDirectionToGst(e)}get currentDirection(){if(this._stopped)return null;let e=this._gstTrans.current_direction??this._gstTrans.currentDirection;if(e==null)return null;let t=gstDirectionToW3C(e);return t===`inactive`?null:t}get stopped(){return this._stopped}stop(){this._stopped||=!0}setCodecPreferences(e){if(!Array.isArray(e))throw TypeError(`codecs must be an array`);if(e.length===0){this._codecPreferences=[];return}let t=this.receiver.track.kind,n=RTCRtpReceiver.getCapabilities(t),r=RTCRtpSender.getCapabilities(t);if(!n||!r)throw new DOMException(`No capabilities available`,`InvalidModificationError`);let i=[...n.codecs,...r.codecs];for(let t of e){if(!t||typeof t!=`object`)throw TypeError(`Each codec must be an object`);if(typeof t.mimeType!=`string`||typeof t.clockRate!=`number`)throw TypeError(`codec must have mimeType (string) and clockRate (number)`);if(!/\/(rtx|red|ulpfec)$/i.test(t.mimeType)&&!i.find(e=>e.mimeType.toLowerCase()===t.mimeType.toLowerCase()&&e.clockRate===t.clockRate&&(t.channels===void 0||e.channels===t.channels)&&(t.sdpFmtpLine===void 0||e.sdpFmtpLine===t.sdpFmtpLine)))throw new DOMException(`Codec ${t.mimeType} ${t.clockRate} is not in capabilities`,`InvalidModificationError`)}this._codecPreferences=[...e]}get _nativeTransceiver(){return this._gstTrans}},RTCIceTransport=class extends EventTarget{_state=`new`;_gatheringState=`new`;_role=`unknown`;_component=`rtp`;_localCandidates=[];_remoteCandidates=[];_localParams=null;_remoteParams=null;_onstatechange=null;_ongatheringstatechange=null;_onselectedcandidatepairchange=null;get state(){return this._state}get gatheringState(){return this._gatheringState}get role(){return this._role}get component(){return this._component}get onstatechange(){return this._onstatechange}set onstatechange(e){this._onstatechange=e}get ongatheringstatechange(){return this._ongatheringstatechange}set ongatheringstatechange(e){this._ongatheringstatechange=e}get onselectedcandidatepairchange(){return this._onselectedcandidatepairchange}set onselectedcandidatepairchange(e){this._onselectedcandidatepairchange=e}getLocalCandidates(){return[...this._localCandidates]}getRemoteCandidates(){return[...this._remoteCandidates]}getSelectedCandidatePair(){return null}getLocalParameters(){return this._localParams}getRemoteParameters(){return this._remoteParams}_setState(e){if(this._state===e)return;this._state=e;let t=new Event(`statechange`);this._onstatechange?.call(this,t),this.dispatchEvent(t)}_setGatheringState(e){if(this._gatheringState===e)return;this._gatheringState=e;let t=new Event(`gatheringstatechange`);this._ongatheringstatechange?.call(this,t),this.dispatchEvent(t)}_addLocalCandidate(e){this._localCandidates.push(new RTCIceCandidate(e))}_addRemoteCandidate(e){this._remoteCandidates.push(new RTCIceCandidate(e))}_setLocalParameters(e){this._localParams=e}_setRemoteParameters(e){this._remoteParams=e}},RTCDtlsTransport=class extends EventTarget{iceTransport;_state=`new`;_onstatechange=null;_onerror=null;constructor(e){super(),this.iceTransport=e}get state(){return this._state}get onstatechange(){return this._onstatechange}set onstatechange(e){this._onstatechange=e}get onerror(){return this._onerror}set onerror(e){this._onerror=e}getRemoteCertificates(){return[]}_setState(e){if(this._state===e)return;this._state=e;let t=new Event(`statechange`);this._onstatechange?.call(this,t),this.dispatchEvent(t)}},RTCSctpTransport=class extends EventTarget{transport;_state=`connecting`;_maxMessageSize=262144;_maxChannels=65535;_onstatechange=null;constructor(e){super(),this.transport=e}get state(){return this._state}get maxMessageSize(){return this._maxMessageSize}get maxChannels(){return this._maxChannels}get onstatechange(){return this._onstatechange}set onstatechange(e){this._onstatechange=e}_setState(e){if(this._state===e)return;this._state=e;let t=new Event(`statechange`);this._onstatechange?.call(this,t),this.dispatchEvent(t)}},RTCCertificate=class{expires;_fingerprints;_algorithm;constructor(e,t,n){this._algorithm=e,this.expires=t,this._fingerprints=n}getFingerprints(){return[...this._fingerprints]}get _algorithmName(){return this._algorithm}};async function generateCertificate(t){let n;if(typeof t==`string`)n=t.toLowerCase();else if(t&&typeof t==`object`&&typeof t.name==`string`)n=t.name.toLowerCase();else throw new DOMException(`generateCertificate: algorithm must have a name property`,`NotSupportedError`);let r=typeof t==`object`?t:{};if(n===`ecdsa`){let e=r.namedCurve;if(e&&e!==`P-256`)throw new DOMException(`generateCertificate: unsupported ECDSA curve '${e}'`,`NotSupportedError`)}else if(n===`rsassa-pkcs1-v1_5`){let e=r.hash,t=typeof e==`string`?e:e?.name;if(t&&t.toUpperCase()===`SHA-1`)throw new DOMException(`generateCertificate: SHA-1 is not supported for RSA certificates`,`NotSupportedError`)}else throw new DOMException(`generateCertificate: unsupported algorithm '${n}'`,`NotSupportedError`);let i=e.uuid_string_random(),a=e.Checksum.new(e.ChecksumType.SHA256);a.update(new TextEncoder().encode(i+Date.now()));let o=a.get_string().slice(0,64).match(/.{2}/g).join(`:`).toUpperCase(),s=Date.now()+2592e6;return new RTCCertificate(n,s,[{algorithm:`sha-256`,value:o}])}function withGstPromise(e){return new Promise((t,n)=>{let r=new Ve;r.connect(`replied`,(e,n)=>{t(n)}),r.connect(`rejected`,(e,t)=>{n(Error(t))}),e(r.promise)})}const $e={async createOffer(e){this._rejectIfClosed(`createOffer`);let t=n.Structure.new_empty(`offer-options`);this._iceRestartNeeded&&=(this._setStructureField(t,`ice-restart`,`boolean`,!0),!1);let r=(await withGstPromise(e=>{this._webrtcbin.emit(`create-offer`,t,e)})).get_value(`offer`);return I.fromGstDesc(r).toJSON()},async createAnswer(e){this._rejectIfClosed(`createAnswer`);let t=n.Structure.new_empty(`answer-options`),r=(await withGstPromise(e=>{this._webrtcbin.emit(`create-answer`,t,e)})).get_value(`answer`);return I.fromGstDesc(r).toJSON()},async setLocalDescription(e){if(this._rejectIfClosed(`setLocalDescription`),!e||!e.type||!e.sdp){let t=this.signalingState;if(t===`stable`||t===`have-local-offer`)e=await this.createOffer();else if(t===`have-remote-offer`||t===`have-remote-pranswer`)e=await this.createAnswer();else throw new E(`setLocalDescription: cannot auto-create SDP in signalingState '${t}'`,`InvalidStateError`)}this._pipeline.set_state(n.State.PLAYING);let t=new I(e).toGstDesc();await withGstPromise(e=>{this._webrtcbin.emit(`set-local-description`,t,e)})},async setRemoteDescription(e){if(this._rejectIfClosed(`setRemoteDescription`),!e||!e.sdp||!e.type)throw TypeError(`setRemoteDescription requires an RTCSessionDescriptionInit with sdp and type`);this._pipeline.set_state(n.State.PLAYING);let t=new I(e).toGstDesc();await withGstPromise(e=>{this._webrtcbin.emit(`set-remote-description`,t,e)}),this.signalingState===`stable`&&(this._hasNegotiated=!0)},async addIceCandidate(e){if(this._rejectIfClosed(`addIceCandidate`),!e)return;let{candidate:t,sdpMLineIndex:n}=e;typeof t!=`string`||typeof n!=`number`||this._webrtcbin.emit(`add-ice-candidate`,n,t)}};function installSdpNegotiationMethods(e){Object.assign(e,$e)}function coerceUnsignedShort(e,t){let n=Number(t);if(!Number.isFinite(n))throw TypeError(`createDataChannel: ${e} must be a finite number, got ${String(t)}`);let r=Math.trunc(n);if(r<0||r>65535)throw TypeError(`createDataChannel: ${e}=${r} is outside the [0, 65535] range`);return r}const et={createDataChannel(e,t={}){if(this._closed)throw new E(`Cannot create a data channel on a closed RTCPeerConnection`,`InvalidStateError`);if(typeof e!=`string`)throw TypeError(`createDataChannel: label must be a string`);if(new TextEncoder().encode(e).byteLength>65535)throw TypeError(`createDataChannel: label too long (> 65535 bytes)`);let r=t.maxPacketLifeTime==null?void 0:coerceUnsignedShort(`maxPacketLifeTime`,t.maxPacketLifeTime),i=t.maxRetransmits==null?void 0:coerceUnsignedShort(`maxRetransmits`,t.maxRetransmits),a=t.id==null?void 0:coerceUnsignedShort(`id`,t.id);if(r!==void 0&&i!==void 0)throw TypeError(`createDataChannel: maxPacketLifeTime and maxRetransmits are mutually exclusive`);if(t.negotiated===!0&&a===void 0)throw TypeError(`createDataChannel: negotiated=true requires an id`);if(a===65535)throw TypeError(`createDataChannel: id 65535 is reserved`);let o=n.Structure.new_empty(`data-channel-opts`);this._setStructureField(o,`ordered`,`boolean`,t.ordered),this._setStructureField(o,`max-packet-lifetime`,`int`,r),this._setStructureField(o,`max-retransmits`,`int`,i),this._setStructureField(o,`protocol`,`string`,t.protocol),this._setStructureField(o,`negotiated`,`boolean`,t.negotiated),this._setStructureField(o,`id`,`int`,a);let s=null;try{s=this._webrtcbin.emit(`create-data-channel`,e,o)}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`create-data-channel failed: ${t}`)}if(!s)throw Error(`webrtcbin returned null data channel (check id/label/options)`);this._ensureSctpTransport();let c=new RTCDataChannel(s);return this._dataChannels.set(s,c),c.addEventListener(`close`,()=>{this._dataChannels.delete(s)}),c}};function installDataChannelMethods(e){Object.assign(e,et)}const tt={addTransceiver(e,t){this._rejectIfClosed(`addTransceiver`);let r;if(typeof e==`string`){if(e!==`audio`&&e!==`video`)throw TypeError(`Failed to execute 'addTransceiver' on 'RTCPeerConnection': The provided value '${e}' is not a valid enum value of type MediaStreamTrackKind.`);r=e}else if(e instanceof P)r=e.kind;else throw TypeError(`Failed to execute 'addTransceiver' on 'RTCPeerConnection': parameter 1 is not of type 'MediaStreamTrack' or a valid MediaStreamTrackKind.`);if(t?.sendEncodings){let e=new Set;for(let n of t.sendEncodings){if(n.rid!==void 0){if(typeof n.rid!=`string`||n.rid.length===0||n.rid.length>16||!/^[a-zA-Z0-9]+$/.test(n.rid))throw TypeError(`Invalid RID value: ${n.rid}`);if(e.has(n.rid))throw TypeError(`Duplicate RID: ${n.rid}`);e.add(n.rid)}if(n.scaleResolutionDownBy!==void 0&&n.scaleResolutionDownBy<1)throw RangeError(`scaleResolutionDownBy must be >= 1.0`)}}let i=t?.direction??`sendrecv`;if(![`sendrecv`,`sendonly`,`recvonly`,`inactive`].includes(i))throw TypeError(`Failed to execute 'addTransceiver' on 'RTCPeerConnection': The provided value '${i}' is not a valid enum value of type RTCRtpTransceiverDirection.`);let a=e instanceof P&&e._gstSource,o=i===`sendrecv`||i===`sendonly`,s,c;if(a&&o){let t=e,n=new RTCRtpSender(null,this._pipeline,this._webrtcbin);n._kind=r,n._onPipelineChanged=e=>{this._pipeline=e},n._setTrack(t),n._wirePipeline(t);let a=this._findNewGstTransceiver();if(!a)throw Error(`webrtcbin did not create a transceiver for the send pad`);s=a;let o=s.receiver??null,l=new RTCRtpReceiver(r,o,this._pipeline),statsDelegate=e=>this.getStats(e);n._getStatsForTrack=statsDelegate,l._getStatsForTrack=statsDelegate;let u=this._ensureTransports();n._transport=u,l._transport=u,c=new RTCRtpTransceiver(s,n,l),n._transceiver=c,this._transceivers.set(s,c),this._senders.push(n),this._receivers.push(l),s.direction=w3cDirectionToGst(i)}else{let t=n.Caps.from_string(`application/x-rtp,media=${r}`),a=w3cDirectionToGst(i===`inactive`?`sendrecv`:i),o=this._webrtcbin.emit(`add-transceiver`,a,t);if(!o)throw Error(`webrtcbin did not create a transceiver`);s=o,c=this._transceivers.get(s),c||=this._createTransceiverWrapper(s),s.direction=w3cDirectionToGst(i),e instanceof P&&c.sender._setTrack(e)}return c}};function installTransceiverMethods(e){Object.assign(e,tt)}const nt={addTrack(e,...t){if(this._rejectIfClosed(`addTrack`),!(e instanceof P))throw TypeError(`Failed to execute 'addTrack' on 'RTCPeerConnection': parameter 1 is not a MediaStreamTrack`);if(this._senders.find(t=>t.track===e))throw new E(`Track already exists in a sender of this connection`,`InvalidAccessError`);let n;for(let t of this._transceivers.values())if(t.sender.track===null&&!t.stopped&&t.direction!==`stopped`&&t.receiver.track.kind===e.kind){let e=t.direction;if(e===`recvonly`||e===`inactive`){n=t;break}}if(n){let t=n.direction;return n.direction=t===`recvonly`?`sendrecv`:`sendonly`,n.sender._setTrack(e),n.sender}return this.addTransceiver(e,{direction:`sendrecv`}).sender},removeTrack(e){if(this._rejectIfClosed(`removeTrack`),!this._senders.includes(e))throw new E(`sender was not created by this connection`,`InvalidAccessError`);e._setTrack(null)},getSenders(){return[...this._senders]},getReceivers(){return[...this._receivers]},getTransceivers(){return[...this._transceivers.values()]}};function installTrackMethods(e){Object.assign(e,nt)}Xe();function snakeToCamel(e){return e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}function extractFields(e){let t={},n=e.n_fields();for(let r=0;r<n;r++){let n=e.nth_field_name(r);try{t[n]=e.get_value(n)}catch{}}return t}function parseStatsEntry(e){let t=extractFields(e),n=t.type;if(n==null)return null;let r=gstToStatsType(Number(n));if(!r)return null;let i=String(t.id??e.get_name()??``),a=t.timestamp,o={type:r,id:i,timestamp:a==null?performance.now():Number(a)/1e6};for(let[e,n]of Object.entries(t)){if(e===`type`||e===`id`||e===`timestamp`)continue;let t=snakeToCamel(e);o[t]=n}return o}function parseGstStats(e){if(!e)return new RTCStatsReport;let t=[],n=e.n_fields();for(let r=0;r<n;r++){let n=e.nth_field_name(r);try{let r=e.get_value(n);if(r&&typeof r.n_fields==`function`){let e=parseStatsEntry(r);e&&t.push([e.id,e])}}catch{}}return new RTCStatsReport(t)}function filterStatsByTrackId(e,t){let n=[],r=new Set;for(let[i,a]of e)if(a.trackIdentifier===t){n.push([i,a]),r.add(i);for(let t of Object.values(a))typeof t==`string`&&e.has(t)&&r.add(t)}for(let[t,i]of e)r.has(t)&&!n.some(([e])=>e===t)&&n.push([t,i]);return new RTCStatsReport(n)}const rt={async getStats(e){if(this._rejectIfClosed(`getStats`),e!=null&&e instanceof P){let t=this._senders.some(t=>t.track===e),n=this._receivers.some(t=>t.track===e);if(!t&&!n)throw new E(`The selector track is not associated with a sender or receiver of this connection`,`InvalidAccessError`)}let t=parseGstStats(await withGstPromise(e=>{this._webrtcbin.emit(`get-stats`,null,e)}));return e!=null&&e instanceof P?filterStatsByTrackId(t,e.id):t},restartIce(){this._closed||(this._iceRestartNeeded=!0,this._hasNegotiated&&Promise.resolve().then(()=>{this._closed||this._handleNegotiationNeeded()}))},setConfiguration(e){if(this._rejectIfClosed(`setConfiguration`),e.bundlePolicy&&e.bundlePolicy!==(this._conf.bundlePolicy??`balanced`))throw new E(`setConfiguration: bundlePolicy cannot be changed`,`InvalidModificationError`);if(e.rtcpMuxPolicy&&e.rtcpMuxPolicy!==(this._conf.rtcpMuxPolicy??`require`))throw new E(`setConfiguration: rtcpMuxPolicy cannot be changed`,`InvalidModificationError`);e.iceServers&&this._applyIceServers(e.iceServers),e.iceTransportPolicy&&this._applyIceTransportPolicy(e.iceTransportPolicy),this._conf={...this._conf,...e}},getConfiguration(){return{...this._conf}}};function installStatsAndConfigMethods(e){Object.assign(e,rt)}let it=0;var RTCPeerConnection$1=class extends EventTarget{static{__name(this,`RTCPeerConnection`)}_pipeline;_webrtcbin;_bridge;_conf;_closed=!1;_iceRestartNeeded=!1;_hasNegotiated=!1;_dataChannels=new Map;_transceivers=new Map;_senders=[];_receivers=[];_iceTransport=null;_dtlsTransport=null;_sctpTransport=null;canTrickleIceCandidates=!0;constructor(e){super(),ensureWebrtcbinAvailable();let[t,r]=n.version();if(t<1||t===1&&r<20)throw new E(`@gjsify/webrtc requires GStreamer >= 1.20 (you have ${t}.${r}). webrtcbin is only stable from 1.20 onward.`,`NotSupportedError`);let i=++it;this._pipeline=new n.Pipeline({name:`gjsify-webrtc-pipeline-${i}`});let a=n.ElementFactory.make(`webrtcbin`,`gjsify-webrtcbin-${i}`);if(!a)throw Error(`Failed to create webrtcbin element`);if(this._webrtcbin=a,this._conf={...e},e?.certificates){for(let t of e.certificates)if(t instanceof RTCCertificate&&t.expires<=Date.now())throw new E(`RTCPeerConnection: one of the provided certificates has expired`,`InvalidAccessError`)}this._applyIceServers(e?.iceServers??[]),this._applyIceTransportPolicy(e?.iceTransportPolicy),this._applyBundlePolicy(e?.bundlePolicy),this._pipeline.add(this._webrtcbin),this._bridge=new He({bin:this._webrtcbin}),this._bridge.connect(`negotiation-needed`,()=>this._handleNegotiationNeeded()),this._bridge.connect(`icecandidate`,(e,t,n)=>this._handleIceCandidate(t,n)),this._bridge.connect(`datachannel`,(e,t)=>this._handleDataChannel(t)),this._bridge.connect(`new-transceiver`,(e,t)=>this._handleNewTransceiver(t)),this._bridge.connect(`pad-added`,(e,t)=>this._handlePadAdded(t)),this._bridge.connect(`connection-state-changed`,()=>this._dispatchStateChange(`connectionstatechange`)),this._bridge.connect(`ice-connection-state-changed`,()=>this._dispatchStateChange(`iceconnectionstatechange`)),this._bridge.connect(`ice-gathering-state-changed`,()=>this._dispatchStateChange(`icegatheringstatechange`)),this._bridge.connect(`signaling-state-changed`,()=>this._dispatchStateChange(`signalingstatechange`)),this._pipeline.set_state(n.State.PLAYING)}_applyIceServers(e){let t=!1;for(let n of e){let e=Array.isArray(n.urls)?n.urls:[n.urls];if(e.length===0)throw SyntaxError(`RTCIceServer.urls must not be empty`);for(let r of e){if(typeof r!=`string`||r.length===0)throw TypeError(`RTCIceServer.urls entries must be non-empty strings`);let e=r.indexOf(`:`);if(e<0)throw TypeError(`Invalid ICE server URL "${r}"`);let i=r.slice(0,e+1),a=r.slice(e+1);if(i===`stun:`||i===`stuns:`){if(t)continue;asWebRtcBin(this._webrtcbin).stun_server=`${i}//${a}`,t=!0}else if(i===`turn:`||i===`turns:`){if(typeof n.username!=`string`||typeof n.credential!=`string`)throw TypeError(`TURN server credential for ${r} missing`);let e=`${i}//${encodeURIComponent(n.username)}:${encodeURIComponent(n.credential)}@${a}`;try{this._webrtcbin.emit(`add-turn-server`,e)}catch{asWebRtcBin(this._webrtcbin).turn_server=e}}else throw TypeError(`Unsupported ICE server protocol "${i}"`)}}}_applyIceTransportPolicy(e){if(!e)return;let t=e===`relay`?r.WebRTCICETransportPolicy.RELAY:r.WebRTCICETransportPolicy.ALL;try{asWebRtcBin(this._webrtcbin).ice_transport_policy=t}catch{}}_applyBundlePolicy(e){if(!e)return;let t;switch(e){case`balanced`:t=r.WebRTCBundlePolicy.BALANCED;break;case`max-compat`:t=r.WebRTCBundlePolicy.MAX_COMPAT;break;case`max-bundle`:t=r.WebRTCBundlePolicy.MAX_BUNDLE;break;default:return}try{asWebRtcBin(this._webrtcbin).bundle_policy=t}catch{}}get signalingState(){if(this._closed)return`closed`;try{return gstToSignalingState(asWebRtcBin(this._webrtcbin).signaling_state)}catch{return`stable`}}get connectionState(){if(this._closed)return`closed`;try{return gstToConnectionState(asWebRtcBin(this._webrtcbin).connection_state)}catch{return`new`}}get iceConnectionState(){if(this._closed)return`closed`;try{return gstToIceConnectionState(asWebRtcBin(this._webrtcbin).ice_connection_state)}catch{return`new`}}get iceGatheringState(){try{return gstToIceGatheringState(asWebRtcBin(this._webrtcbin).ice_gathering_state)}catch{return`new`}}_descProp(e){try{let t=asWebRtcBin(this._webrtcbin)[e];return t?I.fromGstDesc(t):null}catch{return null}}get localDescription(){return this._descProp(`local_description`)}get remoteDescription(){return this._descProp(`remote_description`)}get currentLocalDescription(){return this._descProp(`current_local_description`)}get currentRemoteDescription(){return this._descProp(`current_remote_description`)}get pendingLocalDescription(){return this._descProp(`pending_local_description`)}get pendingRemoteDescription(){return this._descProp(`pending_remote_description`)}get sctp(){return this._sctpTransport}get peerIdentity(){return Promise.reject(TypeError(`peerIdentity assertions are not implemented`))}get idpErrorInfo(){return null}get idpLoginUrl(){return null}_rejectIfClosed(e){if(this._closed)throw new E(`RTCPeerConnection.${e}: connection is closed`,`InvalidStateError`)}_setStructureField(e,t,n,r){if(r==null)return;let i=new o.Value;n===`boolean`?(i.init(o.TYPE_BOOLEAN),i.set_boolean(!!r)):n===`int`?(i.init(o.TYPE_INT),i.set_int(Number(r))):n===`string`&&(i.init(o.TYPE_STRING),i.set_string(String(r))),e.set_value(t,i),i.unset()}close(){this._closed||(this._closed=!0,e.idle_add(e.PRIORITY_DEFAULT,()=>{try{this._pipeline.set_state(n.State.NULL)}catch{}for(let e of this._dataChannels.values())try{e._disconnectSignals()}catch{}this._dataChannels.clear();for(let e of this._senders)try{e._teardownPipeline()}catch{}for(let e of this._receivers)try{e._dispose()}catch{}this._transceivers.clear(),this._senders.length=0,this._receivers.length=0,this._dtlsTransport&&this._dtlsTransport._setState(`closed`),this._iceTransport&&this._iceTransport._setState(`closed`),this._sctpTransport&&this._sctpTransport._setState(`closed`);try{this._bridge.dispose_bridge()}catch{}return e.SOURCE_REMOVE}))}getIdentityAssertion(){return Promise.reject(Error(`getIdentityAssertion is not implemented`))}_findNewGstTransceiver(){for(let e=0;;e++){let t=this._webrtcbin.emit(`get-transceiver`,e);if(!t)return null;if(!this._transceivers.has(t))return t}}_ensureTransports(){return this._dtlsTransport||=(this._iceTransport=new RTCIceTransport,new RTCDtlsTransport(this._iceTransport)),this._dtlsTransport}_ensureSctpTransport(){if(this._sctpTransport)return;let e=this._ensureTransports();this._sctpTransport=new RTCSctpTransport(e)}_createTransceiverWrapper(e){let t=`audio`;try{e.kind===r.WebRTCKind.VIDEO&&(t=`video`)}catch{}let n=e.receiver??null,i=e.sender??null,a=new RTCRtpReceiver(t,n,this._pipeline),o=new RTCRtpSender(i,this._pipeline,this._webrtcbin);o._kind=t,o._onPipelineChanged=e=>{this._pipeline=e};let statsDelegate=e=>this.getStats(e);o._getStatsForTrack=statsDelegate,a._getStatsForTrack=statsDelegate;let s=this._ensureTransports();o._transport=s,a._transport=s;try{let t=e.mlineindex;typeof t==`number`&&t>=0&&o._setMlineIndex(t)}catch{}let c=new RTCRtpTransceiver(e,o,a);return o._transceiver=c,this._transceivers.set(e,c),this._senders.push(o),this._receivers.push(a),c}_handleNegotiationNeeded(){let e=new Event(`negotiationneeded`);this._onnegotiationneeded?.call(this,e),this.dispatchEvent(e)}_handleIceCandidate(e,t){let n=new RTCPeerConnectionIceEvent(`icecandidate`,{candidate:new RTCIceCandidate({candidate:t,sdpMLineIndex:e})});this._onicecandidate?.call(this,n),this.dispatchEvent(n)}_handleNewTransceiver(e){this._closed||this._transceivers.has(e)||this._createTransceiverWrapper(e)}_handlePadAdded(e){if(this._closed||e.direction!==n.PadDirection.SRC)return;let t=asWebRtcSrcPad(e).transceiver;if(!t)return;let r=this._transceivers.get(t);r||=this._createTransceiverWrapper(t),r.receiver._connectToPad(e);let i=new Me([r.receiver.track]),a=new RTCTrackEvent(`track`,{receiver:r.receiver,track:r.receiver.track,streams:[i],transceiver:r});this._ontrack?.call(this,a),this.dispatchEvent(a)}_handleDataChannel(e){this._ensureSctpTransport();let t=e.channel,n=this._dataChannels.get(t);n||(n=new RTCDataChannel(e),this._dataChannels.set(t,n),n.addEventListener(`close`,()=>{this._dataChannels.delete(t)}));let r=new RTCDataChannelEvent(`datachannel`,{channel:n});this._ondatachannel?.call(this,r),this.dispatchEvent(r)}_dispatchStateChange(e){e===`connectionstatechange`?this._syncDtlsState():e===`iceconnectionstatechange`?this._syncIceState():e===`icegatheringstatechange`&&this._syncIceGatheringState();let t=new Event(e);switch(e){case`connectionstatechange`:this._onconnectionstatechange?.call(this,t);break;case`iceconnectionstatechange`:this._oniceconnectionstatechange?.call(this,t);break;case`icegatheringstatechange`:this._onicegatheringstatechange?.call(this,t);break;case`signalingstatechange`:this._onsignalingstatechange?.call(this,t);break}this.dispatchEvent(t)}_syncDtlsState(){if(!this._dtlsTransport)return;let e=this.connectionState;this._dtlsTransport._setState({new:`new`,connecting:`connecting`,connected:`connected`,disconnected:`connected`,failed:`failed`,closed:`closed`}[e]??`new`),e===`connected`&&this._sctpTransport&&this._sctpTransport._setState(`connected`)}_syncIceState(){if(!this._iceTransport)return;let e=this.iceConnectionState;this._iceTransport._setState(e)}_syncIceGatheringState(){if(!this._iceTransport)return;let e=this.iceGatheringState;this._iceTransport._setGatheringState(e)}_onconnectionstatechange=null;_ondatachannel=null;_onicecandidate=null;_oniceconnectionstatechange=null;_onicegatheringstatechange=null;_onnegotiationneeded=null;_onsignalingstatechange=null;get onconnectionstatechange(){return this._onconnectionstatechange}set onconnectionstatechange(e){this._onconnectionstatechange=e}get ondatachannel(){return this._ondatachannel}set ondatachannel(e){this._ondatachannel=e}get onicecandidate(){return this._onicecandidate}set onicecandidate(e){this._onicecandidate=e}get oniceconnectionstatechange(){return this._oniceconnectionstatechange}set oniceconnectionstatechange(e){this._oniceconnectionstatechange=e}get onicegatheringstatechange(){return this._onicegatheringstatechange}set onicegatheringstatechange(e){this._onicegatheringstatechange=e}get onnegotiationneeded(){return this._onnegotiationneeded}set onnegotiationneeded(e){this._onnegotiationneeded=e}get onsignalingstatechange(){return this._onsignalingstatechange}set onsignalingstatechange(e){this._onsignalingstatechange=e}_ontrack=null;get ontrack(){return this._ontrack}set ontrack(e){this._ontrack=e}get onicecandidateerror(){return null}set onicecandidateerror(e){}static generateCertificate(e){return generateCertificate(e)}};installSdpNegotiationMethods(RTCPeerConnection$1.prototype),installDataChannelMethods(RTCPeerConnection$1.prototype),installTransceiverMethods(RTCPeerConnection$1.prototype),installTrackMethods(RTCPeerConnection$1.prototype),installStatsAndConfigMethods(RTCPeerConnection$1.prototype);const L=globalThis;L.RTCPeerConnection===void 0&&(L.RTCPeerConnection=RTCPeerConnection$1),L.RTCSessionDescription===void 0&&(L.RTCSessionDescription=I),L.RTCIceCandidate===void 0&&(L.RTCIceCandidate=RTCIceCandidate),L.RTCPeerConnectionIceEvent===void 0&&(L.RTCPeerConnectionIceEvent=RTCPeerConnectionIceEvent);const R=Symbol(`abort`),z=Symbol(`internal`);var at=class AbortSignal extends EventTarget$1{#e=!1;reason=void 0;onabort=null;constructor(e){if(super(),e!==z)throw TypeError(`Illegal constructor.`)}get aborted(){if(!(this instanceof AbortSignal))throw TypeError(`'get aborted' called on an object that is not a valid instance of AbortSignal.`);return this.#e}get[Symbol.toStringTag](){return`AbortSignal`}throwIfAborted(){if(this.#e)throw this.reason}[R](e){if(this.#e)return;this.#e=!0,this.reason=e??new E(`The operation was aborted.`,`AbortError`);let t=new Event$1(`abort`);typeof this.onabort==`function`&&this.onabort.call(this,t),this.dispatchEvent(t)}static abort(e){let t=new AbortSignal(z);return t[R](e),t}static timeout(e){let t=new AbortSignal(z);return setTimeout(()=>{t[R](new E(`The operation timed out.`,`TimeoutError`))},e),t}static any(e){let t=new AbortSignal(z);for(let n of e)if(n.aborted)return t[R](n.reason),t;let onAbort=()=>{if(!t.aborted){let n=e.find(e=>e.aborted);t[R](n?.reason)}};for(let t of e)t.addEventListener(`abort`,onAbort,{once:!0});return t}},ot=class AbortController{signal;constructor(){this.signal=new at(z)}abort(e){if(!(this instanceof AbortController))throw TypeError(`'abort' called on an object that is not a valid instance of AbortController.`);this.signal[R](e)}};const st=globalThis;globalThis.AbortController===void 0&&(st.AbortController=ot),globalThis.AbortSignal===void 0&&(st.AbortSignal=at);const ct={CustomEvent,MessageEvent:MessageEvent$1,ErrorEvent,CloseEvent,ProgressEvent};for(let[e,t]of Object.entries(ct))globalThis[e]===void 0&&Object.defineProperty(globalThis,e,{value:t,writable:!0,configurable:!0});const B=Symbol(`kState`),V=Symbol(`kType`);function isBrandCheck(e){return t=>typeof t==`object`&&!!t&&t[B]!==void 0&&t[V]===e}function dequeueValue(e){let t=e[B].queue.shift();if(t===void 0)throw Error(`dequeueValue called on an empty queue`);let{value:n,size:r}=t;return e[B].queueTotalSize=Math.max(0,e[B].queueTotalSize-r),n}function resetQueue(e){e[B].queue=[],e[B].queueTotalSize=0}function peekQueueValue(e){return e[B].queue[0].value}function enqueueValueWithSize(e,t,n){if(n=+n,typeof n!=`number`||n<0||Number.isNaN(n)||n===1/0)throw RangeError(`Invalid size: ${n}`);e[B].queue.push({value:t,size:n}),e[B].queueTotalSize+=n}function extractHighWaterMark(e,t){if(e===void 0)return t;if(e=+e,typeof e!=`number`||Number.isNaN(e)||e<0)throw RangeError(`Invalid highWaterMark: ${e}`);return e}function extractSizeAlgorithm(e){if(e===void 0)return()=>1;if(typeof e!=`function`)throw TypeError(`strategy.size must be a function`);return e}function transferArrayBuffer(e){return typeof ArrayBuffer.prototype.transfer==`function`?e.transfer():e.slice(0)}function isDetachedBuffer(e){if(typeof SharedArrayBuffer<`u`&&e instanceof SharedArrayBuffer||e.byteLength!==0)return!1;try{return e.slice(0,0),!1}catch{return!0}}function typedArrayConstructorByTag(e){switch(e){case`Int8Array`:return Int8Array;case`Uint8Array`:return Uint8Array;case`Uint8ClampedArray`:return Uint8ClampedArray;case`Int16Array`:return Int16Array;case`Uint16Array`:return Uint16Array;case`Int32Array`:return Int32Array;case`Uint32Array`:return Uint32Array;case`Float32Array`:return Float32Array;case`Float64Array`:return Float64Array;case`BigInt64Array`:return typeof BigInt64Array<`u`?BigInt64Array:void 0;case`BigUint64Array`:return typeof BigUint64Array<`u`?BigUint64Array:void 0;default:return}}function elementSizeByTag(e){switch(e){case`Int8Array`:case`Uint8Array`:case`Uint8ClampedArray`:return 1;case`Int16Array`:case`Uint16Array`:return 2;case`Int32Array`:case`Uint32Array`:case`Float32Array`:return 4;case`Float64Array`:case`BigInt64Array`:case`BigUint64Array`:return 8;default:return 1}}function setPromiseHandled(e){e.then(()=>{},()=>{})}function createPromiseCallback(e,t,n){if(typeof t!=`function`)throw TypeError(`${e} must be a function`);return async(...e)=>t.call(n,...e)}async function nonOpFlush(){}function nonOpStart(){}async function nonOpPull(){}async function nonOpCancel(){}async function nonOpWrite(){}const lt={__proto__:Object.getPrototypeOf(Object.getPrototypeOf(async function*(){}).prototype),next:void 0,return:void 0};function createAsyncFromSyncIterator(e){let t={[Symbol.iterator]:()=>e.iterator},n=(async function*(){return yield*t})();return{iterator:n,nextMethod:n.next,done:!1}}function getIterator(e,t=`sync`,n){if(n===void 0)if(t===`async`){if(n=e[Symbol.asyncIterator],n==null){let t=e[Symbol.iterator];if(t===void 0)throw TypeError(`Object is not iterable`);return createAsyncFromSyncIterator(getIterator(e,`sync`,t))}}else n=e[Symbol.iterator];if(n===void 0)throw TypeError(`Object is not iterable`);let r=n.call(e);if(typeof r!=`object`||!r)throw TypeError(`The iterator method must return an object`);return{iterator:r,nextMethod:r.next,done:!1}}function iteratorNext(e,t){let n;if(n=t===void 0?e.nextMethod.call(e.iterator):e.nextMethod.call(e.iterator,t),typeof n!=`object`||!n)throw TypeError(`The iterator.next() method must return an object`);return n}const ut=typeof globalThis.AbortController==`function`?globalThis.AbortController:class AbortControllerShim{signal={aborted:!1,reason:void 0,addEventListener(){},removeEventListener(){}};abort(e){this.signal.aborted=!0,this.signal.reason=e}},dt=Symbol(`kAbort`),ft=Symbol(`kCloseSentinel`),pt=Symbol(`kError`),mt=Symbol(`kSkipThrow`);var WritableStream=class{[V]=`WritableStream`;[B];constructor(e={},t={}){if(e!=null&&typeof e!=`object`)throw TypeError(`sink must be an object`);if(t!=null&&typeof t!=`object`)throw TypeError(`strategy must be an object`);let n=e?.type;if(n!==void 0)throw RangeError(`Invalid type: ${n}`);this[B]=createWritableStreamState();let r=extractSizeAlgorithm(t?.size),i=extractHighWaterMark(t?.highWaterMark,1);setupWritableStreamDefaultControllerFromSink(this,e,i,r)}get locked(){if(!H(this))throw TypeError(`Invalid this`);return isWritableStreamLocked(this)}abort(e){return H(this)?isWritableStreamLocked(this)?Promise.reject(TypeError(`WritableStream is locked`)):writableStreamAbort(this,e):Promise.reject(TypeError(`Invalid this`))}close(){return H(this)?isWritableStreamLocked(this)?Promise.reject(TypeError(`WritableStream is locked`)):writableStreamCloseQueuedOrInFlight(this)?Promise.reject(TypeError(`Failure closing WritableStream`)):writableStreamClose(this):Promise.reject(TypeError(`Invalid this`))}getWriter(){if(!H(this))throw TypeError(`Invalid this`);return new WritableStreamDefaultWriter(this)}get[Symbol.toStringTag](){return`WritableStream`}},WritableStreamDefaultWriter=class{[V]=`WritableStreamDefaultWriter`;[B];constructor(e){if(!H(e))throw TypeError(`Expected a WritableStream`);this[B]={stream:void 0,close:{promise:void 0,resolve:void 0,reject:void 0},ready:{promise:void 0,resolve:void 0,reject:void 0}},setupWritableStreamDefaultWriter(this,e)}get closed(){return U(this)?this[B].close.promise:Promise.reject(TypeError(`Invalid this`))}get desiredSize(){if(!U(this))throw TypeError(`Invalid this`);if(this[B].stream===void 0)throw TypeError(`Writer is not bound to a WritableStream`);return writableStreamDefaultWriterGetDesiredSize(this)}get ready(){return U(this)?this[B].ready.promise:Promise.reject(TypeError(`Invalid this`))}abort(e){return U(this)?this[B].stream===void 0?Promise.reject(TypeError(`Writer is not bound to a WritableStream`)):writableStreamDefaultWriterAbort(this,e):Promise.reject(TypeError(`Invalid this`))}close(){if(!U(this))return Promise.reject(TypeError(`Invalid this`));let{stream:e}=this[B];return e===void 0?Promise.reject(TypeError(`Writer is not bound to a WritableStream`)):writableStreamCloseQueuedOrInFlight(e)?Promise.reject(TypeError(`Failure to close WritableStream`)):writableStreamDefaultWriterClose(this)}releaseLock(){if(!U(this))throw TypeError(`Invalid this`);let{stream:e}=this[B];e!==void 0&&writableStreamDefaultWriterRelease(this)}write(e){return U(this)?this[B].stream===void 0?Promise.reject(TypeError(`Writer is not bound to a WritableStream`)):writableStreamDefaultWriterWrite(this,e):Promise.reject(TypeError(`Invalid this`))}get[Symbol.toStringTag](){return`WritableStreamDefaultWriter`}},WritableStreamDefaultController=class{[V]=`WritableStreamDefaultController`;[B];constructor(e){if(e!==mt)throw TypeError(`Illegal constructor`)}[dt](e){let t=this[B].abortAlgorithm(e);return writableStreamDefaultControllerClearAlgorithms(this),t}[pt](){resetQueue(this)}get signal(){if(!ht(this))throw TypeError(`Invalid this`);return this[B].abortController.signal}error(e){if(!ht(this))throw TypeError(`Invalid this`);this[B].stream[B].state===`writable`&&writableStreamDefaultControllerError(this,e)}get[Symbol.toStringTag](){return`WritableStreamDefaultController`}};const H=isBrandCheck(`WritableStream`),U=isBrandCheck(`WritableStreamDefaultWriter`),ht=isBrandCheck(`WritableStreamDefaultController`);function createEmptyPromiseRecord(){return{promise:void 0,resolve:void 0,reject:void 0}}function createWritableStreamState(){return{close:Promise.withResolvers(),closeRequest:createEmptyPromiseRecord(),inFlightWriteRequest:createEmptyPromiseRecord(),inFlightCloseRequest:createEmptyPromiseRecord(),pendingAbortRequest:{abort:createEmptyPromiseRecord(),reason:void 0,wasAlreadyErroring:!1},backpressure:!1,controller:void 0,state:`writable`,storedError:void 0,writeRequests:[],writer:void 0}}function isWritableStreamLocked(e){return e[B].writer!==void 0}function setupWritableStreamDefaultWriter(e,t){if(isWritableStreamLocked(t))throw TypeError(`WritableStream is locked`);switch(e[B].stream=t,t[B].writer=e,t[B].state){case`writable`:!writableStreamCloseQueuedOrInFlight(t)&&t[B].backpressure?e[B].ready=Promise.withResolvers():e[B].ready={promise:Promise.resolve(),resolve:void 0,reject:void 0},e[B].close=Promise.withResolvers();break;case`erroring`:e[B].ready={promise:Promise.reject(t[B].storedError),resolve:void 0,reject:void 0},setPromiseHandled(e[B].ready.promise),e[B].close=Promise.withResolvers();break;case`closed`:e[B].ready={promise:Promise.resolve(),resolve:void 0,reject:void 0},e[B].close={promise:Promise.resolve(),resolve:void 0,reject:void 0};break;default:e[B].ready={promise:Promise.reject(t[B].storedError),resolve:void 0,reject:void 0},e[B].close={promise:Promise.reject(t[B].storedError),resolve:void 0,reject:void 0},setPromiseHandled(e[B].ready.promise),setPromiseHandled(e[B].close.promise)}}function writableStreamAbort(e,t){let{state:n,controller:r}=e[B];if(n===`closed`||n===`errored`)return Promise.resolve();if(r[B].abortController.abort(t),e[B].pendingAbortRequest.abort.promise!==void 0)return e[B].pendingAbortRequest.abort.promise;let i=!1;n===`erroring`&&(i=!0,t=void 0);let a=Promise.withResolvers();return e[B].pendingAbortRequest={abort:a,reason:t,wasAlreadyErroring:i},i||writableStreamStartErroring(e,t),a.promise}function writableStreamClose(e){let{state:t,writer:n,backpressure:r,controller:i}=e[B];if(t===`closed`||t===`errored`)return Promise.reject(TypeError(`WritableStream is closed`));e[B].closeRequest=Promise.withResolvers();let{promise:a}=e[B].closeRequest;return n!==void 0&&r&&t===`writable`&&n[B].ready.resolve?.(),writableStreamDefaultControllerClose(i),a}function writableStreamUpdateBackpressure(e,t){let{writer:n}=e[B];n!==void 0&&e[B].backpressure!==t&&(t?n[B].ready=Promise.withResolvers():n[B].ready.resolve?.()),e[B].backpressure=t}function writableStreamStartErroring(e,t){let{controller:n,writer:r}=e[B];e[B].state=`erroring`,e[B].storedError=t,r!==void 0&&writableStreamDefaultWriterEnsureReadyPromiseRejected(r,t),!writableStreamHasOperationMarkedInFlight(e)&&n[B].started&&writableStreamFinishErroring(e)}function writableStreamRejectCloseAndClosedPromiseIfNeeded(e){e[B].closeRequest.promise!==void 0&&(e[B].closeRequest.reject?.(e[B].storedError),e[B].closeRequest={promise:void 0,resolve:void 0,reject:void 0}),setPromiseHandled(e[B].close.promise),e[B].close.reject?.(e[B].storedError);let{writer:t}=e[B];t!==void 0&&(setPromiseHandled(t[B].close.promise),t[B].close.reject?.(e[B].storedError))}function writableStreamMarkFirstWriteRequestInFlight(e){let t=e[B].writeRequests.shift();e[B].inFlightWriteRequest=t}function writableStreamMarkCloseRequestInFlight(e){e[B].inFlightCloseRequest=e[B].closeRequest,e[B].closeRequest={promise:void 0,resolve:void 0,reject:void 0}}function writableStreamHasOperationMarkedInFlight(e){return e[B].inFlightWriteRequest.promise!==void 0||e[B].inFlightCloseRequest.promise!==void 0}function writableStreamFinishInFlightWriteWithError(e,t){e[B].inFlightWriteRequest.reject?.(t),e[B].inFlightWriteRequest={promise:void 0,resolve:void 0,reject:void 0},writableStreamDealWithRejection(e,t)}function writableStreamFinishInFlightWrite(e){e[B].inFlightWriteRequest.resolve?.(),e[B].inFlightWriteRequest={promise:void 0,resolve:void 0,reject:void 0}}function writableStreamFinishInFlightCloseWithError(e,t){e[B].inFlightCloseRequest.reject?.(t),e[B].inFlightCloseRequest={promise:void 0,resolve:void 0,reject:void 0},e[B].pendingAbortRequest.abort.promise!==void 0&&(e[B].pendingAbortRequest.abort.reject?.(t),e[B].pendingAbortRequest={abort:{promise:void 0,resolve:void 0,reject:void 0},reason:void 0,wasAlreadyErroring:!1}),writableStreamDealWithRejection(e,t)}function writableStreamFinishInFlightClose(e){e[B].inFlightCloseRequest.resolve?.(),e[B].inFlightCloseRequest={promise:void 0,resolve:void 0,reject:void 0},e[B].state===`erroring`&&(e[B].storedError=void 0,e[B].pendingAbortRequest.abort.promise!==void 0&&(e[B].pendingAbortRequest.abort.resolve?.(),e[B].pendingAbortRequest={abort:{promise:void 0,resolve:void 0,reject:void 0},reason:void 0,wasAlreadyErroring:!1})),e[B].state=`closed`,e[B].writer!==void 0&&e[B].writer[B].close.resolve?.(),e[B].close.resolve?.()}function writableStreamFinishErroring(e){e[B].state=`errored`,e[B].controller[pt]();let t=e[B].storedError;for(let n of e[B].writeRequests)n.reject?.(t);if(e[B].writeRequests=[],e[B].pendingAbortRequest.abort.promise===void 0){writableStreamRejectCloseAndClosedPromiseIfNeeded(e);return}let n=e[B].pendingAbortRequest;if(e[B].pendingAbortRequest={abort:{promise:void 0,resolve:void 0,reject:void 0},reason:void 0,wasAlreadyErroring:!1},n.wasAlreadyErroring){n.abort.reject?.(t),writableStreamRejectCloseAndClosedPromiseIfNeeded(e);return}e[B].controller[dt](n.reason).then(()=>{n.abort.resolve?.(),writableStreamRejectCloseAndClosedPromiseIfNeeded(e)},t=>{n.abort.reject?.(t),writableStreamRejectCloseAndClosedPromiseIfNeeded(e)})}function writableStreamDealWithRejection(e,t){if(e[B].state===`writable`){writableStreamStartErroring(e,t);return}writableStreamFinishErroring(e)}function writableStreamCloseQueuedOrInFlight(e){return e[B].closeRequest.promise!==void 0||e[B].inFlightCloseRequest.promise!==void 0}function writableStreamAddWriteRequest(e){let{promise:t,resolve:n,reject:r}=Promise.withResolvers();return e[B].writeRequests.push({promise:t,resolve:n,reject:r}),t}function writableStreamDefaultWriterWrite(e,t){let{stream:n}=e[B],{controller:r}=n[B],i=writableStreamDefaultControllerGetChunkSize(r,t);if(n!==e[B].stream)return Promise.reject(TypeError(`Mismatched WritableStreams`));let{state:a}=n[B];if(a===`errored`)return Promise.reject(n[B].storedError);if(writableStreamCloseQueuedOrInFlight(n)||a===`closed`)return Promise.reject(TypeError(`WritableStream is closed`));if(a===`erroring`)return Promise.reject(n[B].storedError);let o=writableStreamAddWriteRequest(n);return writableStreamDefaultControllerWrite(r,t,i),o}function writableStreamDefaultWriterRelease(e){let{stream:t}=e[B],n=TypeError(`Writer has been released`);writableStreamDefaultWriterEnsureReadyPromiseRejected(e,n),writableStreamDefaultWriterEnsureClosedPromiseRejected(e,n),t[B].writer=void 0,e[B].stream=void 0}function writableStreamDefaultWriterGetDesiredSize(e){let{stream:t}=e[B];switch(t[B].state){case`errored`:case`erroring`:return null;case`closed`:return 0}return writableStreamDefaultControllerGetDesiredSize(t[B].controller)}function writableStreamDefaultWriterEnsureReadyPromiseRejected(e,t){e[B].ready.reject?(e[B].ready.reject(t),e[B].ready.resolve=void 0,e[B].ready.reject=void 0):e[B].ready={promise:Promise.reject(t),resolve:void 0,reject:void 0},setPromiseHandled(e[B].ready.promise)}function writableStreamDefaultWriterEnsureClosedPromiseRejected(e,t){e[B].close.reject?(e[B].close.reject(t),e[B].close.resolve=void 0,e[B].close.reject=void 0):e[B].close={promise:Promise.reject(t),resolve:void 0,reject:void 0},setPromiseHandled(e[B].close.promise)}function writableStreamDefaultWriterCloseWithErrorPropagation(e){let{stream:t}=e[B],{state:n}=t[B];return writableStreamCloseQueuedOrInFlight(t)||n===`closed`?Promise.resolve():n===`errored`?Promise.reject(t[B].storedError):writableStreamDefaultWriterClose(e)}function writableStreamDefaultWriterClose(e){return writableStreamClose(e[B].stream)}function writableStreamDefaultWriterAbort(e,t){return writableStreamAbort(e[B].stream,t)}function writableStreamDefaultControllerWrite(e,t,n){try{enqueueValueWithSize(e,t,n)}catch(t){writableStreamDefaultControllerErrorIfNeeded(e,t);return}let{stream:r}=e[B];!writableStreamCloseQueuedOrInFlight(r)&&r[B].state===`writable`&&writableStreamUpdateBackpressure(r,writableStreamDefaultControllerGetBackpressure(e)),writableStreamDefaultControllerAdvanceQueueIfNeeded(e)}function writableStreamDefaultControllerProcessWrite(e,t){let{stream:n,writeAlgorithm:r}=e[B];writableStreamMarkFirstWriteRequestInFlight(n),r(t,e).then(()=>{writableStreamFinishInFlightWrite(n);let{state:t}=n[B];dequeueValue(e),!writableStreamCloseQueuedOrInFlight(n)&&t===`writable`&&writableStreamUpdateBackpressure(n,writableStreamDefaultControllerGetBackpressure(e)),writableStreamDefaultControllerAdvanceQueueIfNeeded(e)},t=>{n[B].state===`writable`&&writableStreamDefaultControllerClearAlgorithms(e),writableStreamFinishInFlightWriteWithError(n,t)})}function writableStreamDefaultControllerProcessClose(e){let{closeAlgorithm:t,stream:n}=e[B];writableStreamMarkCloseRequestInFlight(n),dequeueValue(e);let r=t();writableStreamDefaultControllerClearAlgorithms(e),r.then(()=>writableStreamFinishInFlightClose(n),e=>writableStreamFinishInFlightCloseWithError(n,e))}function writableStreamDefaultControllerGetDesiredSize(e){return e[B].highWaterMark-e[B].queueTotalSize}function writableStreamDefaultControllerGetChunkSize(e,t){let{sizeAlgorithm:n}=e[B];if(n===void 0)return 1;try{return n(t)}catch(t){return writableStreamDefaultControllerErrorIfNeeded(e,t),1}}function writableStreamDefaultControllerErrorIfNeeded(e,t){e[B].stream[B].state===`writable`&&writableStreamDefaultControllerError(e,t)}function writableStreamDefaultControllerError(e,t){writableStreamDefaultControllerClearAlgorithms(e),writableStreamStartErroring(e[B].stream,t)}function writableStreamDefaultControllerClose(e){enqueueValueWithSize(e,ft,0),writableStreamDefaultControllerAdvanceQueueIfNeeded(e)}function writableStreamDefaultControllerClearAlgorithms(e){e[B].writeAlgorithm=void 0,e[B].closeAlgorithm=void 0,e[B].abortAlgorithm=void 0,e[B].sizeAlgorithm=void 0}function writableStreamDefaultControllerGetBackpressure(e){return writableStreamDefaultControllerGetDesiredSize(e)<=0}function writableStreamDefaultControllerAdvanceQueueIfNeeded(e){let{queue:t,started:n,stream:r}=e[B];if(!n||r[B].inFlightWriteRequest.promise!==void 0)return;if(r[B].state===`erroring`){writableStreamFinishErroring(r);return}if(!t.length)return;let i=peekQueueValue(e);i===ft?writableStreamDefaultControllerProcessClose(e):writableStreamDefaultControllerProcessWrite(e,i)}function setupWritableStreamDefaultControllerFromSink(e,t,n,r){let i=new WritableStreamDefaultController(mt),a=t?.start,o=t?.write,s=t?.close,c=t?.abort;setupWritableStreamDefaultController(e,i,a?a.bind(t,i):nonOpStart,o?createPromiseCallback(`sink.write`,o,t):nonOpWrite,s?createPromiseCallback(`sink.close`,s,t):nonOpCancel,c?createPromiseCallback(`sink.abort`,c,t):nonOpCancel,n,r)}function setupWritableStreamDefaultController(e,t,n,r,i,a,o,s){t[B]={abortAlgorithm:a,closeAlgorithm:i,highWaterMark:o,queue:[],queueTotalSize:0,abortController:new ut,sizeAlgorithm:s,started:!1,stream:e,writeAlgorithm:r},e[B].controller=t,writableStreamUpdateBackpressure(e,writableStreamDefaultControllerGetBackpressure(t));let c=n();new Promise(e=>e(c)).then(()=>{t[B].started=!0,writableStreamDefaultControllerAdvanceQueueIfNeeded(t)},n=>{t[B].started=!0,writableStreamDealWithRejection(e,n)})}function createWritableStream(e,t,n,r,i=1,a=()=>1){let o=Object.create(WritableStream.prototype);return o[V]=`WritableStream`,o[B]=createWritableStreamState(),setupWritableStreamDefaultController(o,new WritableStreamDefaultController(mt),e,t,n,r,i,a),o}const gt=Symbol(`kCancel`),W=Symbol(`kClose`),G=Symbol(`kChunk`),K=Symbol(`kError`),_t=Symbol(`kPull`),vt=Symbol(`kRelease`),q=Symbol(`kSkipThrow`);let yt,bt;function lazyReadableReleasedError(){return yt||(yt=TypeError(`Reader released`),yt)}function lazyReadableReleasingError(){return bt||(bt=TypeError(`Releasing reader`),bt)}function createAbortError(){if(typeof globalThis.DOMException==`function`)return new DOMException(`The operation was aborted`,`AbortError`);let e=Error(`The operation was aborted`);return e.name=`AbortError`,e}function createReadableStreamState(){return{disturbed:!1,reader:void 0,state:`readable`,storedError:void 0,controller:void 0,closedPromise:Promise.withResolvers()}}var ReadableStream$1=class{static{__name(this,`ReadableStream`)}[V]=`ReadableStream`;[B];constructor(e={},t={}){if(e!=null&&typeof e!=`object`)throw TypeError(`source must be an object`);if(t!=null&&typeof t!=`object`)throw TypeError(`strategy must be an object`);this[B]=createReadableStreamState();let n=t?.size,r=t?.highWaterMark,i=e?.type;if(i!==void 0){if(`${i}`==`bytes`){if(n!==void 0)throw RangeError(`strategy.size must not be set for a byte stream`);setupReadableByteStreamControllerFromSource(this,e,extractHighWaterMark(r,0));return}throw RangeError(`Invalid type: ${i}`)}setupReadableStreamDefaultControllerFromSource(this,e,extractHighWaterMark(r,1),extractSizeAlgorithm(n))}get locked(){if(!J(this))throw TypeError(`Invalid this`);return isReadableStreamLocked(this)}static from(e){return readableStreamFromIterable(e)}cancel(e=void 0){return J(this)?isReadableStreamLocked(this)?Promise.reject(TypeError(`ReadableStream is locked`)):readableStreamCancel(this,e):Promise.reject(TypeError(`Invalid this`))}getReader(e={}){if(!J(this))throw TypeError(`Invalid this`);if(e!=null&&typeof e!=`object`)throw TypeError(`options must be an object`);let t=e?.mode;if(t===void 0)return new ReadableStreamDefaultReader(this);if(`${t}`==`byob`)return new ReadableStreamBYOBReader(this);throw RangeError(`Invalid mode: ${t}`)}pipeThrough(e,t={}){if(!J(this))throw TypeError(`Invalid this`);let n=e?.readable;if(!J(n))throw TypeError(`transform.readable must be a ReadableStream`);let r=e?.writable;if(!H(r))throw TypeError(`transform.writable must be a WritableStream`);if(t!=null&&typeof t!=`object`)throw TypeError(`options must be an object`);let i=t?.preventAbort,a=t?.preventCancel,o=t?.preventClose,s=t?.signal;if(s!==void 0&&!(s instanceof Object&&`aborted`in s))throw TypeError(`options.signal must be an AbortSignal`);if(isReadableStreamLocked(this))throw TypeError(`The ReadableStream is locked`);if(isWritableStreamLocked(r))throw TypeError(`The WritableStream is locked`);return setPromiseHandled(readableStreamPipeTo(this,r,!!o,!!i,!!a,s)),n}pipeTo(e,t={}){try{if(!J(this))throw TypeError(`Invalid this`);if(!H(e))throw TypeError(`destination must be a WritableStream`);if(t!=null&&typeof t!=`object`)throw TypeError(`options must be an object`);let n=t?.preventAbort,r=t?.preventCancel,i=t?.preventClose,a=t?.signal;if(a!==void 0&&!(a instanceof Object&&`aborted`in a))throw TypeError(`options.signal must be an AbortSignal`);if(isReadableStreamLocked(this))throw TypeError(`The ReadableStream is locked`);if(isWritableStreamLocked(e))throw TypeError(`The WritableStream is locked`);return readableStreamPipeTo(this,e,!!i,!!n,!!r,a)}catch(e){return Promise.reject(e)}}tee(){if(!J(this))throw TypeError(`Invalid this`);let e=this[B].controller;return X(e)?readableByteStreamTee(this):readableStreamDefaultTee(this,!1)}values(e={}){if(!J(this))throw TypeError(`Invalid this`);if(e!=null&&typeof e!=`object`)throw TypeError(`options must be an object`);let t=!!e?.preventCancel,n=new ReadableStreamDefaultReader(this),r={done:!1,current:void 0},i=!1;function nextSteps(){if(r.done)return Promise.resolve({done:!0,value:void 0});if(n[B].stream===void 0)return Promise.reject(TypeError(`The reader is not bound to a ReadableStream`));let{promise:e,resolve:t,reject:i}=Promise.withResolvers();return readableStreamDefaultReaderRead(n,{[G](e){r.current=void 0,t({value:e,done:!1})},[W](){r.current=void 0,r.done=!0,readableStreamReaderGenericRelease(n),t({done:!0,value:void 0})},[K](e){r.current=void 0,r.done=!0,readableStreamReaderGenericRelease(n),i(e)}}),e}async function returnSteps(e){if(r.done)return{done:!0,value:e};if(r.done=!0,n[B].stream===void 0)throw TypeError(`The reader is not bound to a ReadableStream`);if(!t){let t=readableStreamReaderGenericCancel(n,e);return readableStreamReaderGenericRelease(n),await t,{done:!0,value:e}}return readableStreamReaderGenericRelease(n),{done:!0,value:e}}return Object.setPrototypeOf({next(){return i||=(r.current=Promise.resolve(),!0),r.current=r.current===void 0?nextSteps():r.current.then(nextSteps,nextSteps),r.current},return(e){return i=!0,r.current=r.current===void 0?returnSteps(e):r.current.then(()=>returnSteps(e),()=>returnSteps(e)),r.current},[Symbol.asyncIterator](){return this}},lt)}[Symbol.asyncIterator](){return this.values()}get[Symbol.toStringTag](){return`ReadableStream`}},DefaultReadRequest=class{[B];constructor(){this[B]=Promise.withResolvers()}[G](e){this[B].resolve?.({value:e,done:!1})}[W](){this[B].resolve?.({value:void 0,done:!0})}[K](e){this[B].reject?.(e)}get promise(){return this[B].promise}},ReadableStreamDefaultReader=class{[V]=`ReadableStreamDefaultReader`;[B];constructor(e){if(!J(e))throw TypeError(`Expected a ReadableStream`);this[B]={readRequests:[],readIntoRequests:[],stream:void 0,close:{promise:void 0,resolve:void 0,reject:void 0}},setupReadableStreamDefaultReader(this,e)}read(){if(!Y(this))return Promise.reject(TypeError(`Invalid this`));if(this[B].stream===void 0)return Promise.reject(TypeError(`The reader is not attached to a stream`));let e=this[B].stream,t=e[B].controller;if(e[B].state===`readable`&&xt(t)&&t[B].queue.length>0){e[B].disturbed=!0;let n=dequeueValue(t);return t[B].closeRequested&&!t[B].queue.length?(readableStreamDefaultControllerClearAlgorithms(t),readableStreamClose(e)):readableStreamDefaultControllerCallPullIfNeeded(t),Promise.resolve({value:n,done:!1})}let n=new DefaultReadRequest;return readableStreamDefaultReaderRead(this,n),n.promise}releaseLock(){if(!Y(this))throw TypeError(`Invalid this`);this[B].stream!==void 0&&readableStreamDefaultReaderRelease(this)}get closed(){return Y(this)?this[B].close.promise:Promise.reject(TypeError(`Invalid this`))}cancel(e=void 0){return Y(this)?this[B].stream===void 0?Promise.reject(TypeError(`The reader is not attached to a stream`)):readableStreamReaderGenericCancel(this,e):Promise.reject(TypeError(`Invalid this`))}get[Symbol.toStringTag](){return`ReadableStreamDefaultReader`}},ReadableStreamDefaultController=class{[V]=`ReadableStreamDefaultController`;[B];constructor(e){if(e!==q)throw TypeError(`Illegal constructor`)}get desiredSize(){return readableStreamDefaultControllerGetDesiredSize(this)}close(){if(!readableStreamDefaultControllerCanCloseOrEnqueue(this))throw TypeError(`Controller is already closed`);readableStreamDefaultControllerClose(this)}enqueue(e=void 0){if(!readableStreamDefaultControllerCanCloseOrEnqueue(this))throw TypeError(`Controller is already closed`);readableStreamDefaultControllerEnqueue(this,e)}error(e=void 0){readableStreamDefaultControllerError(this,e)}[gt](e){return readableStreamDefaultControllerCancelSteps(this,e)}[_t](e){readableStreamDefaultControllerPullSteps(this,e)}[vt](){}get[Symbol.toStringTag](){return`ReadableStreamDefaultController`}};const J=isBrandCheck(`ReadableStream`),xt=isBrandCheck(`ReadableStreamDefaultController`),Y=isBrandCheck(`ReadableStreamDefaultReader`);function isReadableStreamLocked(e){return e[B].reader!==void 0}function readableStreamCancel(e,t){switch(e[B].disturbed=!0,e[B].state){case`closed`:return Promise.resolve();case`errored`:return Promise.reject(e[B].storedError)}readableStreamClose(e);let n=e[B].reader;if(n!==void 0&&readableStreamHasBYOBReader(e)){let e=n[B].readIntoRequests;n[B].readIntoRequests=[];for(let t=0;t<e.length;t++)e[t][W](void 0)}return e[B].controller[gt](t).then(()=>{})}function readableStreamClose(e){e[B].state=`closed`,e[B].closedPromise.resolve();let{reader:t}=e[B];if(t!==void 0&&(t[B].close.resolve?.(),readableStreamHasDefaultReader(e))){for(let e=0;e<t[B].readRequests.length;e++)t[B].readRequests[e][W]();t[B].readRequests=[]}}function readableStreamError(e,t){e[B].state=`errored`,e[B].storedError=t,setPromiseHandled(e[B].closedPromise.promise),e[B].closedPromise.reject(t);let{reader:n}=e[B];if(n!==void 0){if(setPromiseHandled(n[B].close.promise),n[B].close.reject?.(t),readableStreamHasDefaultReader(e)){for(let e=0;e<n[B].readRequests.length;e++)n[B].readRequests[e][K](t);n[B].readRequests=[]}else if(readableStreamHasBYOBReader(e)){for(let e=0;e<n[B].readIntoRequests.length;e++)n[B].readIntoRequests[e][K](t);n[B].readIntoRequests=[]}}}function readableStreamHasDefaultReader(e){let{reader:t}=e[B];return t===void 0?!1:t[B]!==void 0&&t[V]===`ReadableStreamDefaultReader`}function readableStreamGetNumReadRequests(e){return e[B].reader[B].readRequests.length}function readableStreamFulfillReadRequest(e,t,n){let{reader:r}=e[B],i=r[B].readRequests.shift();n?i[W]():i[G](t)}function readableStreamAddReadRequest(e,t){e[B].reader[B].readRequests.push(t)}function readableStreamReaderGenericCancel(e,t){let{stream:n}=e[B];return readableStreamCancel(n,t)}function readableStreamReaderGenericInitialize(e,t){switch(e[B].stream=t,t[B].reader=e,t[B].state){case`readable`:e[B].close=Promise.withResolvers();break;case`closed`:e[B].close={promise:Promise.resolve(),resolve:void 0,reject:void 0};break;case`errored`:e[B].close={promise:Promise.reject(t[B].storedError),resolve:void 0,reject:void 0},setPromiseHandled(e[B].close.promise);break}}function readableStreamReaderGenericRelease(e){let{stream:t}=e[B],n=lazyReadableReleasedError();t[B].state===`readable`?e[B].close.reject?.(n):e[B].close={promise:Promise.reject(n),resolve:void 0,reject:void 0},setPromiseHandled(e[B].close.promise),t[B].controller[vt](),t[B].reader=void 0,e[B].stream=void 0}function readableStreamDefaultReaderRelease(e){readableStreamReaderGenericRelease(e),readableStreamDefaultReaderErrorReadRequests(e,lazyReadableReleasingError())}function readableStreamDefaultReaderErrorReadRequests(e,t){for(let n=0;n<e[B].readRequests.length;++n)e[B].readRequests[n][K](t);e[B].readRequests=[]}function readableStreamDefaultReaderRead(e,t){let{stream:n}=e[B];switch(n[B].disturbed=!0,n[B].state){case`closed`:t[W]();break;case`errored`:t[K](n[B].storedError);break;case`readable`:n[B].controller[_t](t);break}}function setupReadableStreamDefaultReader(e,t){if(isReadableStreamLocked(t))throw TypeError(`ReadableStream is locked`);readableStreamReaderGenericInitialize(e,t),e[B].readRequests=[]}function readableStreamDefaultControllerClose(e){readableStreamDefaultControllerCanCloseOrEnqueue(e)&&(e[B].closeRequested=!0,e[B].queue.length||(readableStreamDefaultControllerClearAlgorithms(e),readableStreamClose(e[B].stream)))}function readableStreamDefaultControllerEnqueue(e,t){if(!readableStreamDefaultControllerCanCloseOrEnqueue(e))return;let{stream:n}=e[B];if(isReadableStreamLocked(n)&&readableStreamGetNumReadRequests(n))readableStreamFulfillReadRequest(n,t,!1);else try{enqueueValueWithSize(e,t,e[B].sizeAlgorithm(t))}catch(t){throw readableStreamDefaultControllerError(e,t),t}readableStreamDefaultControllerCallPullIfNeeded(e)}function readableStreamDefaultControllerCanCloseOrEnqueue(e){let{stream:t}=e[B];return!e[B].closeRequested&&t[B].state===`readable`}function readableStreamDefaultControllerGetDesiredSize(e){let{stream:t,highWaterMark:n,queueTotalSize:r}=e[B];switch(t[B].state){case`errored`:return null;case`closed`:return 0;default:return n-r}}function readableStreamDefaultControllerHasBackpressure(e){return!readableStreamDefaultControllerShouldCallPull(e)}function readableStreamDefaultControllerShouldCallPull(e){let{stream:t}=e[B];if(!readableStreamDefaultControllerCanCloseOrEnqueue(e)||!e[B].started)return!1;if(isReadableStreamLocked(t)&&readableStreamGetNumReadRequests(t))return!0;let n=readableStreamDefaultControllerGetDesiredSize(e);return n!==null&&n>0}function readableStreamDefaultControllerCallPullIfNeeded(e){if(readableStreamDefaultControllerShouldCallPull(e)){if(e[B].pulling){e[B].pullAgain=!0;return}e[B].pulling=!0,e[B].pullAlgorithm(e).then(()=>{e[B].pulling=!1,e[B].pullAgain&&(e[B].pullAgain=!1,readableStreamDefaultControllerCallPullIfNeeded(e))},t=>readableStreamDefaultControllerError(e,t))}}function readableStreamDefaultControllerClearAlgorithms(e){e[B].pullAlgorithm=void 0,e[B].cancelAlgorithm=void 0,e[B].sizeAlgorithm=void 0}function readableStreamDefaultControllerError(e,t){let{stream:n}=e[B];n[B].state===`readable`&&(resetQueue(e),readableStreamDefaultControllerClearAlgorithms(e),readableStreamError(n,t))}function readableStreamDefaultControllerCancelSteps(e,t){resetQueue(e);let n=e[B].cancelAlgorithm?.(t)??Promise.resolve();return readableStreamDefaultControllerClearAlgorithms(e),n}function readableStreamDefaultControllerPullSteps(e,t){let{stream:n,queue:r}=e[B];if(r.length){let i=dequeueValue(e);e[B].closeRequested&&!r.length?(readableStreamDefaultControllerClearAlgorithms(e),readableStreamClose(n)):readableStreamDefaultControllerCallPullIfNeeded(e),t[G](i);return}readableStreamAddReadRequest(n,t),readableStreamDefaultControllerCallPullIfNeeded(e)}function setupReadableStreamDefaultController(e,t,n,r,i,a,o){t[B]={cancelAlgorithm:i,closeRequested:!1,highWaterMark:a,pullAgain:!1,pullAlgorithm:r,pulling:!1,queue:[],queueTotalSize:0,started:!1,sizeAlgorithm:o,stream:e},e[B].controller=t;let s=n();new Promise(e=>e(s)).then(()=>{t[B].started=!0,readableStreamDefaultControllerCallPullIfNeeded(t)},e=>readableStreamDefaultControllerError(t,e))}function setupReadableStreamDefaultControllerFromSource(e,t,n,r){let i=new ReadableStreamDefaultController(q),a=t?.start,o=t?.pull,s=t?.cancel;setupReadableStreamDefaultController(e,i,a?a.bind(t,i):nonOpStart,o?createPromiseCallback(`source.pull`,o,t):nonOpPull,s?createPromiseCallback(`source.cancel`,s,t):nonOpCancel,n,r)}function createReadableStream(e,t,n,r=1,i=()=>1){let a=Object.create(ReadableStream$1.prototype);return a[V]=`ReadableStream`,a[B]=createReadableStreamState(),setupReadableStreamDefaultController(a,new ReadableStreamDefaultController(q),e,t,n,r,i),a}function readableStreamFromIterable(e){let t,n=getIterator(e,`async`),r=nonOpStart;async function pullAlgorithm(){let e=iteratorNext(n);return Promise.resolve(e).then(e=>{if(typeof e!=`object`||!e)throw TypeError(`The promise returned by the iterator.next() method must fulfill with an object`);e.done?readableStreamDefaultControllerClose(t[B].controller):readableStreamDefaultControllerEnqueue(t[B].controller,e.value)})}async function cancelAlgorithm(e){let t=n.iterator,r=t.return;if(r===void 0)return Promise.resolve();let i=r.call(t,e);return Promise.resolve(i).then(e=>{if(typeof e!=`object`||!e)throw TypeError(`The promise returned by the iterator.return() method must fulfill with an object`)})}return t=createReadableStream(r,pullAlgorithm,cancelAlgorithm,0),t}function readableStreamPipeTo(e,t,n,r,i,a){let o,s;try{o=new ReadableStreamDefaultReader(e),s=new WritableStreamDefaultWriter(t)}catch(e){return Promise.reject(e)}e[B].disturbed=!0;let c=!1,{promise:l,resolve:u,reject:d}=Promise.withResolvers(),f={currentWrite:Promise.resolve()},p;function finalize(e,t){writableStreamDefaultWriterRelease(s),readableStreamReaderGenericRelease(o),a!==void 0&&p&&(a.removeEventListener(`abort`,p),p=void 0),e?d(t):u()}async function waitForCurrentWrite(){let e=f.currentWrite;await e,e!==f.currentWrite&&await waitForCurrentWrite()}function shutdownWithAnAction(e,n,r){if(c)return;if(c=!0,t[B].state===`writable`&&!writableStreamCloseQueuedOrInFlight(t)){waitForCurrentWrite().then(complete,e=>finalize(!0,e));return}complete();function complete(){e().then(()=>finalize(!!n,r),e=>finalize(!0,e))}}function shutdown(e,n){if(!c){if(c=!0,t[B].state===`writable`&&!writableStreamCloseQueuedOrInFlight(t)){waitForCurrentWrite().then(()=>finalize(!!e,n),e=>finalize(!0,e));return}finalize(!!e,n)}}function abortAlgorithm(){let n;n=a.reason&&a.reason.name===`AbortError`?createAbortError():a.reason;let o=[];r||o.push(()=>t[B].state===`writable`?writableStreamAbort(t,n):Promise.resolve()),i||o.push(()=>e[B].state===`readable`?readableStreamCancel(e,n):Promise.resolve()),shutdownWithAnAction(()=>Promise.all(o.map(e=>e())).then(()=>void 0),!0,n)}function watchErrored(e,t,n){e[B].state===`errored`?n(e[B].storedError):t.then(void 0,n)}function watchClosed(e,t,n){e[B].state===`closed`?n():t.then(n,()=>{})}class PipeToReadRequest{[G](e){_(()=>{f.currentWrite=writableStreamDefaultWriterWrite(s,e),setPromiseHandled(f.currentWrite),m.resolve(!1)})}[W](){m.resolve(!0)}[K](e){m.reject(e)}}let m={resolve:null,reject:null};async function step(){if(c||t[B].backpressure&&(await s[B].ready.promise,c))return!0;let n=e[B].controller;if(e[B].state===`readable`&&xt(n)&&n[B].queue.length>0){for(;n[B].queue.length>0;){if(c)return!0;let r=dequeueValue(n);if(n[B].closeRequested&&!n[B].queue.length&&(readableStreamDefaultControllerClearAlgorithms(n),readableStreamClose(e)),f.currentWrite=writableStreamDefaultWriterWrite(s,r),setPromiseHandled(f.currentWrite),t[B].backpressure||t[B].state!==`writable`||writableStreamCloseQueuedOrInFlight(t))break}return readableStreamDefaultControllerCallPullIfNeeded(n),e[B].state===`closed`}let{promise:r,resolve:i,reject:a}=Promise.withResolvers();return m={resolve:i,reject:a},readableStreamDefaultReaderRead(o,new PipeToReadRequest),r}async function run(){for(;!await step(););}if(a!==void 0){if(a.aborted)return abortAlgorithm(),l;p=abortAlgorithm,a.addEventListener(`abort`,p,{once:!0})}if(setPromiseHandled(run()),watchErrored(e,o[B].close.promise,e=>{if(!r)return shutdownWithAnAction(()=>writableStreamAbort(t,e),!0,e);shutdown(!0,e)}),watchErrored(t,s[B].close.promise,t=>{if(!i)return shutdownWithAnAction(()=>readableStreamCancel(e,t),!0,t);shutdown(!0,t)}),watchClosed(e,o[B].close.promise,()=>{if(!n)return shutdownWithAnAction(()=>writableStreamDefaultWriterCloseWithErrorPropagation(s));shutdown()}),writableStreamCloseQueuedOrInFlight(t)||t[B].state===`closed`){let t=TypeError(`Destination WritableStream is closed`);i?shutdown(!0,t):shutdownWithAnAction(()=>readableStreamCancel(e,t),!0,t)}return l}function readableStreamDefaultTee(e,t){let n=new ReadableStreamDefaultReader(e),r=!1,i=!1,a=!1,o,s,c,l,u=Promise.withResolvers();async function pullAlgorithm(){r||(r=!0,readableStreamDefaultReaderRead(n,{[G](e){_(()=>{r=!1;let n=e,o=e;if(!a&&t)try{o=structuredClone(o)}catch{}i||readableStreamDefaultControllerEnqueue(c[B].controller,n),a||readableStreamDefaultControllerEnqueue(l[B].controller,o)})},[W](){_(()=>{r=!1,i||readableStreamDefaultControllerClose(c[B].controller),a||readableStreamDefaultControllerClose(l[B].controller),(!i||!a)&&u.resolve(void 0)})},[K](){r=!1}}))}function cancel1Algorithm(t){if(i=!0,o=t,a){let t=[o,s];u.resolve(readableStreamCancel(e,t))}return u.promise}function cancel2Algorithm(t){if(a=!0,s=t,i){let t=[o,s];u.resolve(readableStreamCancel(e,t))}return u.promise}return c=createReadableStream(nonOpStart,pullAlgorithm,cancel1Algorithm),l=createReadableStream(nonOpStart,pullAlgorithm,cancel2Algorithm),n[B].close.promise.then(void 0,e=>{readableStreamDefaultControllerError(c[B].controller,e),readableStreamDefaultControllerError(l[B].controller,e),(!i||!a)&&u.resolve(void 0)}),[c,l]}var BYOBReadIntoRequest=class{[B];constructor(){this[B]=Promise.withResolvers()}[G](e){this[B].resolve?.({value:e,done:!1})}[W](e){this[B].resolve?.({value:e,done:!0})}[K](e){this[B].reject?.(e)}get promise(){return this[B].promise}},ReadableStreamBYOBReader=class{[V]=`ReadableStreamBYOBReader`;[B];constructor(e){if(!J(e))throw TypeError(`Expected a ReadableStream`);this[B]={readRequests:[],readIntoRequests:[],stream:void 0,close:{promise:void 0,resolve:void 0,reject:void 0}},setupReadableStreamBYOBReader(this,e)}read(e,t={}){if(!Z(this))return Promise.reject(TypeError(`Invalid this`));if(typeof e!=`object`||!e||!ArrayBuffer.isView(e))return Promise.reject(TypeError(`view must be an ArrayBufferView`));let n=e.buffer,r=e.byteLength;if(r===0)return Promise.reject(TypeError(`view must have non-zero byteLength`));if(n.byteLength===0)return isDetachedBuffer(n)?Promise.reject(TypeError(`view's buffer has been detached`)):Promise.reject(TypeError(`view's buffer must have non-zero byteLength`));let i=t?.min??1;if(typeof i!=`number`||i<1||!Number.isInteger(i)||Number.isNaN(i))return Promise.reject(TypeError(`options.min must be a positive integer`));let a=e[Symbol.toStringTag];if(a!==void 0&&a!==`DataView`){if(i>e.length)return Promise.reject(RangeError(`options.min must be smaller or equal to view size`))}else if(i>r)return Promise.reject(RangeError(`options.min must be smaller or equal to view size`));if(this[B].stream===void 0)return Promise.reject(TypeError(`Reader has no associated stream`));let o=new BYOBReadIntoRequest;return readableStreamBYOBReaderRead(this,e,i,o),o.promise}releaseLock(){if(!Z(this))throw TypeError(`Invalid this`);this[B].stream!==void 0&&readableStreamBYOBReaderRelease(this)}get closed(){return Z(this)?this[B].close.promise:Promise.reject(TypeError(`Invalid this`))}cancel(e=void 0){return Z(this)?this[B].stream===void 0?Promise.reject(TypeError(`Reader has no associated stream`)):readableStreamReaderGenericCancel(this,e):Promise.reject(TypeError(`Invalid this`))}get[Symbol.toStringTag](){return`ReadableStreamBYOBReader`}},ReadableStreamBYOBRequest=class{[V]=`ReadableStreamBYOBRequest`;[B];constructor(e){if(e!==q)throw TypeError(`Illegal constructor`)}get view(){if(!St(this))throw TypeError(`Invalid this`);return this[B].view}respond(e){if(!St(this))throw TypeError(`Invalid this`);if(this[B].controller===void 0)throw TypeError(`BYOB request has been invalidated`);if(e=+e,!Number.isInteger(e)||e<0||!Number.isFinite(e))throw RangeError(`bytesWritten must be a non-negative integer`);let t=this[B].view;if(isDetachedBuffer(t.buffer))throw TypeError(`The BYOB request's buffer has been detached`);readableByteStreamControllerRespond(this[B].controller,e)}respondWithNewView(e){if(!St(this))throw TypeError(`Invalid this`);if(this[B].controller===void 0)throw TypeError(`BYOB request has been invalidated`);if(typeof e!=`object`||!e||!ArrayBuffer.isView(e))throw TypeError(`view must be an ArrayBufferView`);if(isDetachedBuffer(e.buffer))throw TypeError(`The given view's buffer has been detached`);readableByteStreamControllerRespondWithNewView(this[B].controller,e)}get[Symbol.toStringTag](){return`ReadableStreamBYOBRequest`}},ReadableByteStreamController=class{[V]=`ReadableByteStreamController`;[B];constructor(e){if(e!==q)throw TypeError(`Illegal constructor`)}get byobRequest(){if(!X(this))throw TypeError(`Invalid this`);return readableByteStreamControllerGetBYOBRequest(this)}get desiredSize(){if(!X(this))throw TypeError(`Invalid this`);return readableByteStreamControllerGetDesiredSize(this)}close(){if(!X(this))throw TypeError(`Invalid this`);if(this[B].closeRequested)throw TypeError(`Close already requested`);if(this[B].stream[B].state!==`readable`)throw TypeError(`Stream is not in a readable state`);readableByteStreamControllerClose(this)}enqueue(e){if(!X(this))throw TypeError(`Invalid this`);if(typeof e!=`object`||!e||!ArrayBuffer.isView(e))throw TypeError(`chunk must be an ArrayBufferView`);if(e.byteLength===0)throw TypeError(`chunk length must be non-zero`);if(e.buffer.byteLength===0)throw TypeError(`chunk's buffer length must be non-zero`);if(this[B].closeRequested)throw TypeError(`Cannot enqueue after close has been requested`);if(this[B].stream[B].state!==`readable`)throw TypeError(`Stream is not in a readable state`);readableByteStreamControllerEnqueue(this,e)}error(e=void 0){if(!X(this))throw TypeError(`Invalid this`);readableByteStreamControllerError(this,e)}[gt](e){return readableByteStreamControllerCancelSteps(this,e)}[_t](e){readableByteStreamControllerPullSteps(this,e)}[vt](){if(this[B].pendingPullIntos.length>0){let e=this[B].pendingPullIntos[0];e.readerType=`none`,this[B].pendingPullIntos=[e]}}get[Symbol.toStringTag](){return`ReadableByteStreamController`}};const X=isBrandCheck(`ReadableByteStreamController`),Z=isBrandCheck(`ReadableStreamBYOBReader`),St=isBrandCheck(`ReadableStreamBYOBRequest`);function readableStreamHasBYOBReader(e){let{reader:t}=e[B];return t===void 0?!1:t[B]!==void 0&&t[V]===`ReadableStreamBYOBReader`}function readableStreamGetNumReadIntoRequests(e){return e[B].reader[B].readIntoRequests.length}function readableStreamAddReadIntoRequest(e,t){e[B].reader[B].readIntoRequests.push(t)}function readableStreamFulfillReadIntoRequest(e,t,n){let{reader:r}=e[B],i=r[B].readIntoRequests.shift();n?i[W](t):i[G](t)}function setupReadableStreamBYOBReader(e,t){if(isReadableStreamLocked(t))throw TypeError(`ReadableStream is locked`);if(!X(t[B].controller))throw TypeError(`Cannot use a BYOB reader with a non-byte stream`);readableStreamReaderGenericInitialize(e,t),e[B].readIntoRequests=[]}function readableStreamBYOBReaderRead(e,t,n,r){let{stream:i}=e[B];i[B].disturbed=!0,i[B].state===`errored`?r[K](i[B].storedError):readableByteStreamControllerPullInto(i[B].controller,t,n,r)}function readableStreamBYOBReaderRelease(e){readableStreamReaderGenericRelease(e);let t=TypeError(`Reader was released`);for(let n=0;n<e[B].readIntoRequests.length;n++)e[B].readIntoRequests[n][K](t);e[B].readIntoRequests=[]}function readableByteStreamControllerClearAlgorithms(e){e[B].pullAlgorithm=void 0,e[B].cancelAlgorithm=void 0}function readableByteStreamControllerClearPendingPullIntos(e){readableByteStreamControllerInvalidateBYOBRequest(e),e[B].pendingPullIntos=[]}function readableByteStreamControllerInvalidateBYOBRequest(e){let t=e[B].byobRequest;t!=null&&(t[B].controller=void 0,t[B].view=null,e[B].byobRequest=null)}function readableByteStreamControllerError(e,t){let{stream:n}=e[B];n[B].state===`readable`&&(readableByteStreamControllerClearPendingPullIntos(e),resetQueue(e),readableByteStreamControllerClearAlgorithms(e),readableStreamError(n,t))}function readableByteStreamControllerGetDesiredSize(e){let t=e[B].stream[B].state;return t===`errored`?null:t===`closed`?0:e[B].highWaterMark-e[B].queueTotalSize}function readableByteStreamControllerShouldCallPull(e){let{stream:t}=e[B];if(t[B].state!==`readable`||e[B].closeRequested||!e[B].started)return!1;if(readableStreamHasDefaultReader(t)&&readableStreamGetNumReadRequests(t)>0||readableStreamHasBYOBReader(t)&&readableStreamGetNumReadIntoRequests(t)>0)return!0;let n=readableByteStreamControllerGetDesiredSize(e);return n!==null&&n>0}function readableByteStreamControllerCallPullIfNeeded(e){if(readableByteStreamControllerShouldCallPull(e)){if(e[B].pulling){e[B].pullAgain=!0;return}e[B].pulling=!0,e[B].pullAlgorithm(e).then(()=>{e[B].pulling=!1,e[B].pullAgain&&(e[B].pullAgain=!1,readableByteStreamControllerCallPullIfNeeded(e))},t=>readableByteStreamControllerError(e,t))}}function readableByteStreamControllerHandleQueueDrain(e){e[B].queueTotalSize===0&&e[B].closeRequested?(readableByteStreamControllerClearAlgorithms(e),readableStreamClose(e[B].stream)):readableByteStreamControllerCallPullIfNeeded(e)}function readableByteStreamControllerEnqueueChunkToQueue(e,t,n,r){e[B].queue.push({buffer:t,byteOffset:n,byteLength:r}),e[B].queueTotalSize+=r}function readableByteStreamControllerEnqueueClonedChunkToQueue(e,t,n,r){let i;try{i=t.slice(n,n+r)}catch(t){readableByteStreamControllerError(e,t);return}readableByteStreamControllerEnqueueChunkToQueue(e,i,0,r)}function readableByteStreamControllerEnqueueDetachedPullIntoToQueue(e,t){t.bytesFilled>0&&readableByteStreamControllerEnqueueClonedChunkToQueue(e,t.buffer,t.byteOffset,t.bytesFilled),readableByteStreamControllerShiftPendingPullInto(e)}function readableByteStreamControllerShiftPendingPullInto(e){return e[B].pendingPullIntos.shift()}function readableByteStreamControllerFillHeadPullIntoDescriptor(e,t,n){n.bytesFilled+=t}function readableByteStreamControllerConvertPullIntoDescriptor(e){let t=e.bytesFilled,n=e.elementSize,r=transferArrayBuffer(e.buffer);return e.buffer=r,new e.viewConstructor(r,e.byteOffset,t/n)}function readableByteStreamControllerCommitPullIntoDescriptor(e,t){let n=!1;e[B].state===`closed`&&(n=!0);let r=readableByteStreamControllerConvertPullIntoDescriptor(t);t.readerType==="default"?readableStreamFulfillReadRequest(e,r,n):readableStreamFulfillReadIntoRequest(e,r,n)}function readableByteStreamControllerFillPullIntoDescriptorFromQueue(e,t){let n=Math.min(e[B].queueTotalSize,t.byteLength-t.bytesFilled),r=t.bytesFilled+n,i=n,a=!1,o=r-r%t.elementSize;o>=t.minimumFill&&(i=o-t.bytesFilled,a=!0);let s=e[B].queue;for(;i>0;){let n=s[0],r=Math.min(i,n.byteLength),a=t.byteOffset+t.bytesFilled,o=new Uint8Array(t.buffer,a,r),c=new Uint8Array(n.buffer,n.byteOffset,r);o.set(c),n.byteLength===r?s.shift():(n.byteOffset+=r,n.byteLength-=r),e[B].queueTotalSize-=r,readableByteStreamControllerFillHeadPullIntoDescriptor(e,r,t),i-=r}return a}function readableByteStreamControllerFillReadRequestFromQueue(e,t){let n=e[B].queue.shift();e[B].queueTotalSize-=n.byteLength,readableByteStreamControllerHandleQueueDrain(e);let r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);t[G](r)}function readableByteStreamControllerProcessReadRequestsUsingQueue(e){let t=e[B].stream[B].reader;for(;t[B].readRequests.length!==0;){if(e[B].queueTotalSize===0)return;readableByteStreamControllerFillReadRequestFromQueue(e,t[B].readRequests.shift())}}function readableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e){for(;e[B].pendingPullIntos.length!==0;){if(e[B].queueTotalSize===0)return;let t=e[B].pendingPullIntos[0];readableByteStreamControllerFillPullIntoDescriptorFromQueue(e,t)&&(readableByteStreamControllerShiftPendingPullInto(e),readableByteStreamControllerCommitPullIntoDescriptor(e[B].stream,t))}}function readableByteStreamControllerGetBYOBRequest(e){if(e[B].byobRequest===null&&e[B].pendingPullIntos.length!==0){let t=e[B].pendingPullIntos[0],n=new Uint8Array(t.buffer,t.byteOffset+t.bytesFilled,t.byteLength-t.bytesFilled),r=new ReadableStreamBYOBRequest(q);r[B]={controller:e,view:n},e[B].byobRequest=r}return e[B].byobRequest}function readableByteStreamControllerEnqueue(e,t){let{stream:n}=e[B];if(e[B].closeRequested||n[B].state!==`readable`)return;let r=t.buffer,i=t.byteLength,a=t.byteOffset;if(isDetachedBuffer(r))throw TypeError(`chunk's buffer is detached`);let o=transferArrayBuffer(r);if(e[B].pendingPullIntos.length!==0){let t=e[B].pendingPullIntos[0];if(isDetachedBuffer(t.buffer))throw TypeError(`BYOB request's buffer has been detached`);readableByteStreamControllerInvalidateBYOBRequest(e),t.buffer=transferArrayBuffer(t.buffer),t.readerType===`none`&&readableByteStreamControllerEnqueueDetachedPullIntoToQueue(e,t)}readableStreamHasDefaultReader(n)?(readableByteStreamControllerProcessReadRequestsUsingQueue(e),readableStreamGetNumReadRequests(n)===0?readableByteStreamControllerEnqueueChunkToQueue(e,o,a,i):(e[B].pendingPullIntos.length!==0&&readableByteStreamControllerShiftPendingPullInto(e),readableStreamFulfillReadRequest(n,new Uint8Array(o,a,i),!1))):readableStreamHasBYOBReader(n)?(readableByteStreamControllerEnqueueChunkToQueue(e,o,a,i),readableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e)):readableByteStreamControllerEnqueueChunkToQueue(e,o,a,i),readableByteStreamControllerCallPullIfNeeded(e)}function readableByteStreamControllerClose(e){let{stream:t}=e[B];if(!(e[B].closeRequested||t[B].state!==`readable`)){if(e[B].queueTotalSize>0){e[B].closeRequested=!0;return}if(e[B].pendingPullIntos.length!==0){let t=e[B].pendingPullIntos[0];if(t.bytesFilled%t.elementSize!==0){let t=TypeError(`Insufficient bytes to fill elements in the given buffer`);throw readableByteStreamControllerError(e,t),t}}readableByteStreamControllerClearAlgorithms(e),readableStreamClose(t)}}function readableByteStreamControllerPullInto(e,t,n,r){let i=e[B].stream,a=t[Symbol.toStringTag],o,s;if(a===void 0||a===`DataView`)o=DataView,s=1;else{let e=typedArrayConstructorByTag(a);if(!e){r[K](TypeError(`Unsupported typed array: ${a}`));return}o=e,s=elementSizeByTag(a)}let c=t.buffer,l=t.byteLength,u=t.byteOffset,d=n*s,f;try{f=transferArrayBuffer(c)}catch(e){r[K](e);return}let p={buffer:f,bufferByteLength:f.byteLength,byteOffset:u,byteLength:l,bytesFilled:0,minimumFill:d,elementSize:s,viewConstructor:o,readerType:`byob`};if(e[B].pendingPullIntos.length!==0){e[B].pendingPullIntos.push(p),readableStreamAddReadIntoRequest(i,r);return}if(i[B].state===`closed`){let e=new o(p.buffer,p.byteOffset,0);r[W](e);return}if(e[B].queueTotalSize>0){if(readableByteStreamControllerFillPullIntoDescriptorFromQueue(e,p)){let t=readableByteStreamControllerConvertPullIntoDescriptor(p);readableByteStreamControllerHandleQueueDrain(e),r[G](t);return}if(e[B].closeRequested){let t=TypeError(`Insufficient bytes to fill elements in the given buffer`);readableByteStreamControllerError(e,t),r[K](t);return}}e[B].pendingPullIntos.push(p),readableStreamAddReadIntoRequest(i,r),readableByteStreamControllerCallPullIfNeeded(e)}function readableByteStreamControllerRespond(e,t){let n=e[B].pendingPullIntos[0];if(e[B].stream[B].state===`closed`){if(t!==0)throw TypeError(`bytesWritten must be 0 when calling respond() on a closed stream`)}else{if(t===0)throw TypeError(`bytesWritten must be greater than 0 when calling respond() on a readable stream`);if(n.bytesFilled+t>n.byteLength)throw RangeError(`bytesWritten out of range`)}n.buffer=transferArrayBuffer(n.buffer),readableByteStreamControllerRespondInternal(e,t)}function readableByteStreamControllerRespondWithNewView(e,t){let n=e[B].pendingPullIntos[0],r=e[B].stream[B].state,i=t.byteLength,a=t.byteOffset,o=t.buffer;if(r===`closed`){if(i!==0)throw TypeError(`view's length must be 0 when calling respondWithNewView() on a closed stream`)}else if(i===0)throw TypeError(`view's length must be greater than 0 when calling respondWithNewView() on a readable stream`);if(n.byteOffset+n.bytesFilled!==a)throw RangeError(`The region specified by view does not match byobRequest`);if(n.bufferByteLength!==o.byteLength)throw RangeError(`The buffer of view has different capacity than byobRequest`);if(n.bytesFilled+i>n.byteLength)throw RangeError(`The region specified by view is larger than byobRequest`);n.buffer=transferArrayBuffer(o),readableByteStreamControllerRespondInternal(e,i)}function readableByteStreamControllerRespondInternal(e,t){let n=e[B].pendingPullIntos[0];readableByteStreamControllerInvalidateBYOBRequest(e),e[B].stream[B].state===`closed`?readableByteStreamControllerRespondInClosedState(e,n):readableByteStreamControllerRespondInReadableState(e,t,n),readableByteStreamControllerCallPullIfNeeded(e)}function readableByteStreamControllerRespondInClosedState(e,t){t.readerType===`none`&&readableByteStreamControllerShiftPendingPullInto(e);let n=e[B].stream;if(readableStreamHasBYOBReader(n))for(;readableStreamGetNumReadIntoRequests(n)>0;)readableByteStreamControllerCommitPullIntoDescriptor(n,readableByteStreamControllerShiftPendingPullInto(e))}function readableByteStreamControllerRespondInReadableState(e,t,n){if(readableByteStreamControllerFillHeadPullIntoDescriptor(e,t,n),n.readerType===`none`){readableByteStreamControllerEnqueueDetachedPullIntoToQueue(e,n),readableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e);return}if(n.bytesFilled<n.minimumFill)return;readableByteStreamControllerShiftPendingPullInto(e);let r=n.bytesFilled%n.elementSize;if(r>0){let t=n.byteOffset+n.bytesFilled;readableByteStreamControllerEnqueueClonedChunkToQueue(e,n.buffer,t-r,r)}n.bytesFilled-=r,readableByteStreamControllerCommitPullIntoDescriptor(e[B].stream,n),readableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e)}function readableByteStreamControllerCancelSteps(e,t){readableByteStreamControllerClearPendingPullIntos(e),resetQueue(e);let n=e[B].cancelAlgorithm?.(t)??Promise.resolve();return readableByteStreamControllerClearAlgorithms(e),n}function readableByteStreamControllerPullSteps(e,t){let n=e[B].stream;if(e[B].queueTotalSize>0){readableByteStreamControllerFillReadRequestFromQueue(e,t);return}let r=e[B].autoAllocateChunkSize;if(r!==void 0){let n;try{n=new ArrayBuffer(r)}catch(e){t[K](e);return}let i={buffer:n,bufferByteLength:r,byteOffset:0,byteLength:r,bytesFilled:0,minimumFill:1,elementSize:1,viewConstructor:Uint8Array,readerType:`default`};e[B].pendingPullIntos.push(i)}readableStreamAddReadRequest(n,t),readableByteStreamControllerCallPullIfNeeded(e)}function setupReadableByteStreamController(e,t,n,r,i,a,o){t[B]={cancelAlgorithm:i,closeRequested:!1,highWaterMark:a,pullAgain:!1,pullAlgorithm:r,pulling:!1,queue:[],queueTotalSize:0,started:!1,stream:e,byobRequest:null,pendingPullIntos:[],autoAllocateChunkSize:o},e[B].controller=t;let s=n();new Promise(e=>e(s)).then(()=>{t[B].started=!0,readableByteStreamControllerCallPullIfNeeded(t)},e=>readableByteStreamControllerError(t,e))}function setupReadableByteStreamControllerFromSource(e,t,n){let r=new ReadableByteStreamController(q),i=t?.start,a=t?.pull,o=t?.cancel,s=t?.autoAllocateChunkSize;if(s!==void 0&&(s===0||!Number.isInteger(s)||s<0))throw TypeError(`autoAllocateChunkSize must be a positive integer`);setupReadableByteStreamController(e,r,i?i.bind(t,r):nonOpStart,a?createPromiseCallback(`source.pull`,a,t):nonOpPull,o?createPromiseCallback(`source.cancel`,o,t):nonOpCancel,n,s)}function readableByteStreamTee(e){let t=new ReadableStreamDefaultReader(e),n=!1,r=!1,i=!1,a,o,s=Promise.withResolvers(),c,l,u,d;function pullAlgorithm(){return n?Promise.resolve():(n=!0,t.read().then(e=>{if(n=!1,e.done){r||u.close(),i||d.close();return}let t=e.value,a=new Uint8Array(t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength));r||u.enqueue(a),i||d.enqueue(new Uint8Array(a))},()=>{}),Promise.resolve())}return c=new ReadableStream$1({type:`bytes`,pull:pullAlgorithm,cancel(t){if(r=!0,a=t,i){let t=readableStreamCancel(e,[a,o]);return s.resolve(),t}return s.promise}}),l=new ReadableStream$1({type:`bytes`,pull:pullAlgorithm,cancel(t){if(i=!0,o=t,r){let t=readableStreamCancel(e,[a,o]);return s.resolve(),t}return s.promise}}),u=c[B].controller,d=l[B].controller,t.closed.catch(e=>{u.error(e),d.error(e),(!r||!i)&&s.resolve()}),[c,l]}const Ct=Symbol(`kSkipThrow`);var TransformStream=class{[V]=`TransformStream`;[B];constructor(e={},t={},n={}){if(e!=null&&typeof e!=`object`)throw TypeError(`transformer must be an object`);if(t!=null&&typeof t!=`object`)throw TypeError(`writableStrategy must be an object`);if(n!=null&&typeof n!=`object`)throw TypeError(`readableStrategy must be an object`);let r=e?.readableType,i=e?.writableType,a=e?.start;if(r!==void 0)throw RangeError(`Invalid readableType: ${r}`);if(i!==void 0)throw RangeError(`Invalid writableType: ${i}`);let o=extractHighWaterMark(n?.highWaterMark,0),s=extractSizeAlgorithm(n?.size),c=extractHighWaterMark(t?.highWaterMark,1),l=extractSizeAlgorithm(t?.size),u=Promise.withResolvers();initializeTransformStream(this,u,c,l,o,s),setupTransformStreamDefaultControllerFromTransformer(this,e),a===void 0?u.resolve():u.resolve(a.call(e,this[B].controller))}get readable(){if(!wt(this))throw TypeError(`Invalid this`);return this[B].readable}get writable(){if(!wt(this))throw TypeError(`Invalid this`);return this[B].writable}get[Symbol.toStringTag](){return`TransformStream`}},TransformStreamDefaultController=class{[V]=`TransformStreamDefaultController`;[B];constructor(e){if(e!==Ct)throw TypeError(`Illegal constructor`)}get desiredSize(){if(!Q(this))throw TypeError(`Invalid this`);let{stream:e}=this[B],{readable:t}=e[B],n=t[B].controller;return readableStreamDefaultControllerGetDesiredSize(n)}enqueue(e){if(!Q(this))throw TypeError(`Invalid this`);transformStreamDefaultControllerEnqueue(this,e)}error(e){if(!Q(this))throw TypeError(`Invalid this`);transformStreamDefaultControllerError(this,e)}terminate(){if(!Q(this))throw TypeError(`Invalid this`);transformStreamDefaultControllerTerminate(this)}get[Symbol.toStringTag](){return`TransformStreamDefaultController`}};const wt=isBrandCheck(`TransformStream`),Q=isBrandCheck(`TransformStreamDefaultController`);async function defaultTransformAlgorithm(e,t){transformStreamDefaultControllerEnqueue(t,e)}function initializeTransformStream(e,t,n,r,i,a){let startAlgorithm=()=>t.promise,o=createWritableStream(startAlgorithm,t=>transformStreamDefaultSinkWriteAlgorithm(e,t),()=>transformStreamDefaultSinkCloseAlgorithm(e),t=>transformStreamDefaultSinkAbortAlgorithm(e,t),n,r);e[B]={readable:createReadableStream(startAlgorithm,()=>transformStreamDefaultSourcePullAlgorithm(e),t=>transformStreamDefaultSourceCancelAlgorithm(e,t),i,a),writable:o,controller:void 0,backpressure:void 0,backpressureChange:{promise:void 0,resolve:void 0,reject:void 0}},transformStreamSetBackpressure(e,!0)}function transformStreamError(e,t){let{readable:n}=e[B];readableStreamDefaultControllerError(n[B].controller,t),transformStreamErrorWritableAndUnblockWrite(e,t)}function transformStreamErrorWritableAndUnblockWrite(e,t){let{controller:n,writable:r}=e[B];transformStreamDefaultControllerClearAlgorithms(n),writableStreamDefaultControllerErrorIfNeeded(r[B].controller,t),transformStreamUnblockWrite(e)}function transformStreamUnblockWrite(e){e[B].backpressure&&transformStreamSetBackpressure(e,!1)}function transformStreamSetBackpressure(e,t){e[B].backpressureChange.promise!==void 0&&e[B].backpressureChange.resolve?.(),e[B].backpressureChange=Promise.withResolvers(),e[B].backpressure=t}function setupTransformStreamDefaultController(e,t,n,r,i){t[B]={stream:e,transformAlgorithm:n,flushAlgorithm:r,cancelAlgorithm:i,finishPromise:void 0},e[B].controller=t}function setupTransformStreamDefaultControllerFromTransformer(e,t){let n=new TransformStreamDefaultController(Ct),r=t?.transform,i=t?.flush,a=t?.cancel;setupTransformStreamDefaultController(e,n,r?createPromiseCallback(`transformer.transform`,r,t):defaultTransformAlgorithm,i?createPromiseCallback(`transformer.flush`,i,t):nonOpFlush,a?createPromiseCallback(`transformer.cancel`,a,t):nonOpCancel)}function transformStreamDefaultControllerClearAlgorithms(e){e[B].transformAlgorithm=void 0,e[B].flushAlgorithm=void 0,e[B].cancelAlgorithm=void 0}function transformStreamDefaultControllerEnqueue(e,t){let{stream:n}=e[B],{readable:r}=n[B],i=r[B].controller;if(!readableStreamDefaultControllerCanCloseOrEnqueue(i))throw TypeError(`Unable to enqueue`);try{readableStreamDefaultControllerEnqueue(i,t)}catch(e){throw transformStreamErrorWritableAndUnblockWrite(n,e),r[B].storedError}readableStreamDefaultControllerHasBackpressure(i)!==n[B].backpressure&&transformStreamSetBackpressure(n,!0)}function transformStreamDefaultControllerError(e,t){transformStreamError(e[B].stream,t)}async function transformStreamDefaultControllerPerformTransform(e,t){try{let n=e[B].transformAlgorithm;if(n===void 0)return;await n(t,e)}catch(t){throw transformStreamError(e[B].stream,t),t}}function transformStreamDefaultControllerTerminate(e){let{stream:t}=e[B],{readable:n}=t[B];readableStreamDefaultControllerClose(n[B].controller),transformStreamErrorWritableAndUnblockWrite(t,TypeError(`TransformStream has been terminated`))}function transformStreamDefaultSinkWriteAlgorithm(e,t){let{controller:n}=e[B];return e[B].backpressure?e[B].backpressureChange.promise.then(()=>{let{writable:r}=e[B];if(r[B].state===`erroring`)throw r[B].storedError;return transformStreamDefaultControllerPerformTransform(n,t)}):transformStreamDefaultControllerPerformTransform(n,t)}async function transformStreamDefaultSinkAbortAlgorithm(e,t){let{controller:n,readable:r}=e[B];if(n[B].finishPromise!==void 0)return n[B].finishPromise;let{promise:i,resolve:a,reject:o}=Promise.withResolvers();n[B].finishPromise=i;let s=n[B].cancelAlgorithm(t);return transformStreamDefaultControllerClearAlgorithms(n),s.then(()=>{r[B].state===`errored`?o(r[B].storedError):(readableStreamDefaultControllerError(r[B].controller,t),a())},e=>{readableStreamDefaultControllerError(r[B].controller,e),o(e)}),n[B].finishPromise}function transformStreamDefaultSinkCloseAlgorithm(e){let{readable:t,controller:n}=e[B];if(n[B].finishPromise!==void 0)return n[B].finishPromise;let{promise:r,resolve:i,reject:a}=Promise.withResolvers();n[B].finishPromise=r;let o=n[B].flushAlgorithm(n);return transformStreamDefaultControllerClearAlgorithms(n),o.then(()=>{t[B].state===`errored`?a(t[B].storedError):(readableStreamDefaultControllerClose(t[B].controller),i())},e=>{readableStreamDefaultControllerError(t[B].controller,e),a(e)}),n[B].finishPromise}function transformStreamDefaultSourcePullAlgorithm(e){return transformStreamSetBackpressure(e,!1),e[B].backpressureChange.promise}function transformStreamDefaultSourceCancelAlgorithm(e,t){let{controller:n,writable:r}=e[B];if(n[B].finishPromise!==void 0)return n[B].finishPromise;let{promise:i,resolve:a,reject:o}=Promise.withResolvers();n[B].finishPromise=i;let s=n[B].cancelAlgorithm(t);return transformStreamDefaultControllerClearAlgorithms(n),s.then(()=>{r[B].state===`errored`?o(r[B].storedError):(writableStreamDefaultControllerErrorIfNeeded(r[B].controller,t),transformStreamUnblockWrite(e),a())},t=>{writableStreamDefaultControllerErrorIfNeeded(r[B].controller,t),transformStreamUnblockWrite(e),o(t)}),n[B].finishPromise}const Tt=Object.defineProperty(e=>e.byteLength,"name",{value:`size`}),Et=Object.defineProperty(()=>1,"name",{value:`size`});var ByteLengthQueuingStrategy=class{#e;constructor(e){if(typeof e!=`object`||!e)throw TypeError(`init must be an object`);if(e.highWaterMark===void 0)throw TypeError(`init.highWaterMark is required`);this.#e=+e.highWaterMark}get highWaterMark(){return this.#e}get size(){return Tt}get[Symbol.toStringTag](){return`ByteLengthQueuingStrategy`}},CountQueuingStrategy=class{#e;constructor(e){if(typeof e!=`object`||!e)throw TypeError(`init must be an object`);if(e.highWaterMark===void 0)throw TypeError(`init.highWaterMark is required`);this.#e=+e.highWaterMark}get highWaterMark(){return this.#e}get size(){return Et}get[Symbol.toStringTag](){return`CountQueuingStrategy`}},TextEncoderStream=class{#e=null;#t=new TextEncoder;#n;constructor(){this.#n=new TransformStream({transform:(e,t)=>{if(e=String(e),e===``)return;this.#e!==null&&(e=this.#e+e);let n=e.charCodeAt(e.length-1);55296<=n&&n<=56319?(this.#e=e.slice(-1),e=e.slice(0,-1)):this.#e=null,e&&t.enqueue(this.#t.encode(e))},flush:e=>{this.#e!==null&&e.enqueue(new Uint8Array([239,191,189]))}})}get encoding(){return`utf-8`}get readable(){return this.#n.readable}get writable(){return this.#n.writable}};function hasStreamingSupport(){try{return new TextDecoder().decode(new Uint8Array([195]),{stream:!0}),!0}catch{return!1}}const Dt=hasStreamingSupport();function incompleteUtf8Tail(e){let t=e.length;if(t===0)return 0;for(let n=1;n<=Math.min(3,t);n++){let r=e[t-n];if(!(r&128))return 0;if((r&192)!=128){let e;if((r&224)==192)e=2;else if((r&240)==224)e=3;else if((r&248)==240)e=4;else return 0;return n<e?n:0}}return 0}var TextDecoderStream=class{#e;#t;constructor(e,t){if(this.#e=new TextDecoder(e,t),Dt)this.#t=new TransformStream({transform:(e,t)=>{let n=toUint8Array(e),r=this.#e.decode(n,{stream:!0});r&&t.enqueue(r)},flush:e=>{let t=this.#e.decode();t&&e.enqueue(t)},cancel:()=>{this.#e.decode()}});else{let e=new Uint8Array;this.#t=new TransformStream({transform:(t,n)=>{let r=toUint8Array(t),i;e.length>0?(i=new Uint8Array(e.length+r.length),i.set(e,0),i.set(r,e.length)):i=r;let a=incompleteUtf8Tail(i),o;if(a>0?(o=i.slice(0,i.length-a),e=i.slice(i.length-a)):(o=i,e=new Uint8Array),o.length>0){let e=this.#e.decode(o);e&&n.enqueue(e)}},flush:t=>{if(e.length>0){let n=this.#e.decode(e);n&&t.enqueue(n),e=new Uint8Array}},cancel:()=>{e=new Uint8Array}})}}get encoding(){return this.#e.encoding}get fatal(){return this.#e.fatal}get ignoreBOM(){return this.#e.ignoreBOM}get readable(){return this.#t.readable}get writable(){return this.#t.writable}};function toUint8Array(e){if(e instanceof Uint8Array)return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw TypeError(`chunk must be a BufferSource`)}function isNativeStreamUsable$3(e,t){try{return typeof e==`function`?typeof e.prototype?.[t]==`function`:!1}catch{return!1}}__name(isNativeStreamUsable$3,`isNativeStreamUsable`);const Ot=isNativeStreamUsable$3(globalThis.ReadableStream,`getReader`)?globalThis.ReadableStream:ReadableStream$1,kt=isNativeStreamUsable$3(globalThis.WritableStream,`getWriter`)?globalThis.WritableStream:WritableStream,At=isNativeStreamUsable$3(globalThis.TransformStream,`readable`)?globalThis.TransformStream:TransformStream,jt=typeof globalThis.ByteLengthQueuingStrategy==`function`?globalThis.ByteLengthQueuingStrategy:ByteLengthQueuingStrategy,Mt=typeof globalThis.CountQueuingStrategy==`function`?globalThis.CountQueuingStrategy:CountQueuingStrategy,Nt=typeof globalThis.TextEncoderStream==`function`?globalThis.TextEncoderStream:TextEncoderStream,Pt=typeof globalThis.TextDecoderStream==`function`?globalThis.TextDecoderStream:TextDecoderStream,Ft=globalThis;globalThis.ByteLengthQueuingStrategy===void 0&&(Ft.ByteLengthQueuingStrategy=jt),globalThis.CountQueuingStrategy===void 0&&(Ft.CountQueuingStrategy=Mt);const $=globalThis;function isNativeStreamUsable$2(e,t){try{return typeof e==`function`?typeof e.prototype?.[t]==`function`:!1}catch{return!1}}__name(isNativeStreamUsable$2,`isNativeStreamUsable`),isNativeStreamUsable$2(globalThis.ReadableStream,`getReader`)||($.ReadableStream=Ot),$.ReadableStreamBYOBReader===void 0&&($.ReadableStreamBYOBReader=ReadableStreamBYOBReader),$.ReadableStreamBYOBRequest===void 0&&($.ReadableStreamBYOBRequest=ReadableStreamBYOBRequest),$.ReadableByteStreamController===void 0&&($.ReadableByteStreamController=ReadableByteStreamController),$.ReadableStreamDefaultController===void 0&&($.ReadableStreamDefaultController=ReadableStreamDefaultController),$.ReadableStreamDefaultReader===void 0&&($.ReadableStreamDefaultReader=ReadableStreamDefaultReader);const It=globalThis;globalThis.TextEncoderStream===void 0&&(It.TextEncoderStream=Nt),globalThis.TextDecoderStream===void 0&&(It.TextDecoderStream=Pt);function isNativeStreamUsable$1(e,t){try{return typeof e==`function`?typeof e.prototype?.[t]==`function`:!1}catch{return!1}}if(__name(isNativeStreamUsable$1,`isNativeStreamUsable`),!isNativeStreamUsable$1(globalThis.TransformStream,`readable`)){let e=globalThis;e.TransformStream=At}function isNativeStreamUsable(e,t){try{return typeof e==`function`?typeof e.prototype?.[t]==`function`:!1}catch{return!1}}if(!isNativeStreamUsable(globalThis.WritableStream,`getWriter`)){let e=globalThis;e.WritableStream=kt}async function runLoopback(e){let t=new RTCPeerConnection({iceServers:[{urls:`stun:stun.l.google.com:19302`}]}),n=new RTCPeerConnection({iceServers:[{urls:`stun:stun.l.google.com:19302`}]});t.onsignalingstatechange=()=>e(`A`,`signalingState → ${t.signalingState}`),n.onsignalingstatechange=()=>e(`B`,`signalingState → ${n.signalingState}`),t.oniceconnectionstatechange=()=>e(`A`,`iceConnectionState → ${t.iceConnectionState}`),n.oniceconnectionstatechange=()=>e(`B`,`iceConnectionState → ${n.iceConnectionState}`),t.onconnectionstatechange=()=>e(`A`,`connectionState → ${t.connectionState}`),n.onconnectionstatechange=()=>e(`B`,`connectionState → ${n.connectionState}`),t.onicecandidate=t=>{t.candidate&&(e(`A→B`,`ICE ${t.candidate.type??`?`} ${t.candidate.address??``}:${t.candidate.port??``}`),n.addIceCandidate(t.candidate.toJSON()))},n.onicecandidate=n=>{n.candidate&&(e(`B→A`,`ICE ${n.candidate.type??`?`} ${n.candidate.address??``}:${n.candidate.port??``}`),t.addIceCandidate(n.candidate.toJSON()))};let r=t.createDataChannel(`chat`),i=new Promise(t=>{let i=0;r.onopen=()=>{e(`A`,`data-channel "chat" open — sending greeting`),r.send(`hello from peer A`),r.send(new Uint8Array([1,2,3,4]).buffer)},r.onmessage=n=>{if(typeof n.data==`string`)e(`A`,`received: ${n.data}`);else{let t=new Uint8Array(n.data);e(`A`,`received ArrayBuffer(${t.length}): [${Array.from(t).join(`, `)}]`)}i++,i>=2&&t()},n.ondatachannel=t=>{let n=t.channel;e(`B`,`ondatachannel "${n.label}"`),n.onmessage=t=>{if(typeof t.data==`string`)e(`B`,`received: ${t.data} — echoing back`),n.send(`echo: ${t.data}`);else{let r=new Uint8Array(t.data),i=new Uint8Array(r).reverse();e(`B`,`received ArrayBuffer(${r.length}) — echoing reversed`),n.send(i.buffer)}}}});e(`A`,`createOffer`);let a=await t.createOffer();await t.setLocalDescription(a),await n.setRemoteDescription(a),e(`B`,`createAnswer`);let o=await n.createAnswer();await n.setLocalDescription(o),await t.setRemoteDescription(o),await Promise.race([i,new Promise((e,t)=>setTimeout(()=>t(Error(`Timeout waiting for echo`)),15e3))]),e(`main`,`demo complete — closing peer connections`),t.close(),n.close()}function log(e,t){typeof print==`function`?print(`[${e}] ${t}`):g.log(`[${e}] ${t}`)}const Lt=e.MainLoop.new(null,!1);runLoopback(log).then(()=>{e.timeout_add(e.PRIORITY_DEFAULT,500,()=>(Lt.quit(),e.SOURCE_REMOVE))}).catch(t=>{let n=t;log(`ERROR`,n?.message??String(n)),e.timeout_add(e.PRIORITY_DEFAULT,500,()=>(Lt.quit(),e.SOURCE_REMOVE))}),Lt.run();
10
+ Verify with: gst-inspect-1.0 nicesrc`)}function throwNotSupported(e){throw new E(e,`NotSupportedError`)}const we=Symbol(`type`),Te=Symbol(`bubbles`),D=Symbol(`cancelable`),Ee=Symbol(`composed`),De=Symbol(`target`),O=Symbol(`currentTarget`),k=Symbol(`eventPhase`),A=Symbol(`defaultPrevented`),Oe=Symbol(`isTrusted`),ke=Symbol(`timeStamp`),j=Symbol(`stop`),Ae=Symbol(`immediateStop`),M=Symbol(`dispatching`),N=Symbol(`inPassiveListener`);var Event$1=class{static{__name(this,`Event`)}[we];[Te];[D];[Ee];[De]=null;[O]=null;[k]=0;[A]=!1;[Oe]=!1;[ke];[j]=!1;[Ae]=!1;[M]=!1;[N]=!1;get type(){return this[we]}get bubbles(){return this[Te]}get cancelable(){return this[D]}get composed(){return this[Ee]}get target(){return this[De]}get currentTarget(){return this[O]}get eventPhase(){return this[k]}get defaultPrevented(){return this[A]}get timeStamp(){return this[ke]}get cancelBubble(){return this[j]}set cancelBubble(e){e&&this.stopPropagation()}get returnValue(){return!this[A]}set returnValue(e){e||this.preventDefault()}get srcElement(){return this[De]}static NONE=0;static CAPTURING_PHASE=1;static AT_TARGET=2;static BUBBLING_PHASE=3;get[Symbol.toStringTag](){return`Event`}constructor(e,t){this[we]=e,this[Te]=t?.bubbles??!1,this[D]=t?.cancelable??!1,this[Ee]=t?.composed??!1,this[ke]=Date.now(),Object.defineProperty(this,"isTrusted",{get:()=>this[Oe],enumerable:!0,configurable:!1})}composedPath(){return this[O]?[this[O]]:[]}preventDefault(){this[D]&&!this[N]&&(this[A]=!0)}stopPropagation(){this[j]=!0}stopImmediatePropagation(){this[j]=!0,this[Ae]=!0}},CustomEvent=class extends Event$1{detail;constructor(e,t){super(e,t),this.detail=t?.detail}},MessageEvent$1=class extends Event$1{static{__name(this,`MessageEvent`)}data;origin;lastEventId;source;ports;constructor(e,t){super(e,t),this.data=t?.data??null,this.origin=t?.origin??``,this.lastEventId=t?.lastEventId??``,this.source=t?.source??null,this.ports=t?.ports??[]}get[Symbol.toStringTag](){return`MessageEvent`}},ErrorEvent=class extends Event$1{message;filename;lineno;colno;error;constructor(e,t){super(e,t),this.message=t?.message??``,this.filename=t?.filename??``,this.lineno=t?.lineno??0,this.colno=t?.colno??0,this.error=t?.error??null}get[Symbol.toStringTag](){return`ErrorEvent`}},CloseEvent=class extends Event$1{code;reason;wasClean;constructor(e,t){super(e,t),this.code=t?.code??0,this.reason=t?.reason??``,this.wasClean=t?.wasClean??!1}get[Symbol.toStringTag](){return`CloseEvent`}},ProgressEvent=class extends Event$1{lengthComputable;loaded;total;constructor(e,t){super(e,t),this.lengthComputable=t?.lengthComputable??!1,this.loaded=t?.loaded??0,this.total=t?.total??0}get[Symbol.toStringTag](){return`ProgressEvent`}},EventTarget$1=class{static{__name(this,`EventTarget`)}_listeners=new Map;get[Symbol.toStringTag](){return`EventTarget`}addEventListener(e,t,n){if(t===null)return;let r=typeof n==`boolean`?n:n?.capture??!1,i=typeof n==`object`?n?.once??!1:!1,a=typeof n==`object`?n?.passive??!1:!1,o=this._listeners.get(e);o||(o=[],this._listeners.set(e,o));for(let e of o)if(e.listener===t&&e.capture===r)return;let s={listener:t,capture:r,once:i,passive:a,removed:!1};o.push(s),typeof n==`object`&&n?.signal&&n.signal.addEventListener(`abort`,()=>{this.removeEventListener(e,t,{capture:r})},{once:!0})}removeEventListener(e,t,n){if(t===null)return;let r=typeof n==`boolean`?n:n?.capture??!1,i=this._listeners.get(e);if(!i)return;let a=i.findIndex(e=>e.listener===t&&e.capture===r);a!==-1&&(i[a].removed=!0,i.splice(a,1),i.length===0&&this._listeners.delete(e))}dispatchEvent(e){let t=e;if(t[M])throw new E(`The event is already being dispatched.`,`InvalidStateError`);t[M]=!0,t[De]=this,t[O]=this,t[k]=Event$1.AT_TARGET;let n=this._listeners.get(e.type);if(n){let r=[...n];for(let n of r)if(!n.removed){if(t[Ae]||t[j])break;n.once&&this.removeEventListener(e.type,n.listener,{capture:n.capture});try{n.passive&&(t[N]=!0),typeof n.listener==`function`?n.listener.call(this,e):typeof n.listener.handleEvent==`function`&&n.listener.handleEvent.call(n.listener,e)}catch(e){let t=globalThis;if(typeof t.reportError==`function`)try{t.reportError(e)}catch{}else if(e instanceof Error){let t=`${e.name}: ${e.message}`;g.error(e.stack?`${t}\n${e.stack}`:t)}else g.error(String(e))}finally{t[N]=!1}}}return t[k]=Event$1.NONE,t[O]=null,t[M]=!1,!e.defaultPrevented}};for(let[e,t]of[[`NONE`,0],[`CAPTURING_PHASE`,1],[`AT_TARGET`,2],[`BUBBLING_PHASE`,3]])Object.defineProperty(Event$1.prototype,e,{value:t,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(Event$1,e,{value:t,writable:!1,enumerable:!0,configurable:!1});const je=globalThis;je.Event===void 0&&Object.defineProperty(globalThis,"Event",{value:Event$1,writable:!0,configurable:!0}),je.EventTarget===void 0&&Object.defineProperty(globalThis,"EventTarget",{value:EventTarget$1,writable:!0,configurable:!0});var P=class MediaStreamTrack extends EventTarget{id;kind;label;_enabled=!0;_muted;_ended=!1;_contentHint=``;_onended=null;_onmute=null;_onunmute=null;_gstSource=null;_gstPipeline=null;_gstTee=null;_teeMultiplexer=null;_enableCallback=null;constructor(t){super(),this.id=t.id??e.uuid_string_random(),this.kind=t.kind,this.label=t.label??``,this._muted=t.muted??!1,t._gst&&(this._gstSource=t._gst.source,this._gstPipeline=t._gst.pipeline)}get enabled(){return this._enabled}set enabled(e){let t=!!e;this._enabled!==t&&(this._enabled=t,this._enableCallback?.(t))}get muted(){return this._muted}get readyState(){return this._ended?`ended`:`live`}get contentHint(){return this._contentHint}set contentHint(e){if(this.kind===`audio`){if(e!==``&&e!==`speech`&&e!==`speech-recognition`&&e!==`music`)return}else if(e!==``&&e!==`motion`&&e!==`detail`&&e!==`text`)return;this._contentHint=e}get onended(){return this._onended}set onended(e){this._onended=e}get onmute(){return this._onmute}set onmute(e){this._onmute=e}get onunmute(){return this._onunmute}set onunmute(e){this._onunmute=e}clone(){let e=new MediaStreamTrack({kind:this.kind,label:this.label,muted:this._muted});return e._enabled=this._enabled,e}stop(){if(this._ended)return;if(this._ended=!0,this._gstSource||this._gstPipeline){try{this._gstPipeline?.set_state(n.State.NULL)}catch{}try{this._gstSource?.set_state(n.State.NULL)}catch{}this._gstSource=null,this._gstPipeline=null}let e=new Event(`ended`);this._onended?.call(this,e),this.dispatchEvent(e)}getCapabilities(){return{}}getConstraints(){return{}}getSettings(){return{}}applyConstraints(e){return Promise.reject(new DOMException(`applyConstraints is not supported`,`NotSupportedError`))}_setMuted(e){if(this._muted===e)return;this._muted=e;let t=new Event(e?`mute`:`unmute`);e?this._onmute?.call(this,t):this._onunmute?.call(this,t),this.dispatchEvent(t)}_setEnableCallback(e){this._enableCallback=e}},Me=class MediaStream extends EventTarget{id;_tracks=new Map;_onaddtrack=null;_onremovetrack=null;constructor(t){if(super(),this.id=e.uuid_string_random(),t instanceof MediaStream)for(let e of t.getTracks())this._tracks.set(e.id,e.clone());else if(Array.isArray(t))for(let e of t)this._tracks.set(e.id,e)}get active(){for(let e of this._tracks.values())if(e.readyState===`live`)return!0;return!1}get onaddtrack(){return this._onaddtrack}set onaddtrack(e){this._onaddtrack=e}get onremovetrack(){return this._onremovetrack}set onremovetrack(e){this._onremovetrack=e}getTracks(){return[...this._tracks.values()]}getAudioTracks(){return this.getTracks().filter(e=>e.kind===`audio`)}getVideoTracks(){return this.getTracks().filter(e=>e.kind===`video`)}getTrackById(e){return this._tracks.get(e)??null}addTrack(e){if(this._tracks.has(e.id))return;this._tracks.set(e.id,e);let t=new MediaStreamTrackEvent(`addtrack`,{track:e});this._onaddtrack?.call(this,t),this.dispatchEvent(t)}removeTrack(e){if(!this._tracks.delete(e.id))return;let t=new MediaStreamTrackEvent(`removetrack`,{track:e});this._onremovetrack?.call(this,t),this.dispatchEvent(t)}clone(){return new MediaStream(this)}},MediaStreamTrackEvent=class extends Event{track;constructor(e,t){super(e,t),this.track=t.track}},RTCTrackEvent=class extends Event{receiver;track;streams;transceiver;constructor(e,t){if(super(e,t),!t||typeof t!=`object`)throw TypeError(`RTCTrackEventInit is required`);if(!(`receiver`in t))throw TypeError(`Failed to construct 'RTCTrackEvent': required member receiver is not provided.`);if(!(`track`in t))throw TypeError(`Failed to construct 'RTCTrackEvent': required member track is not provided.`);if(!(`transceiver`in t))throw TypeError(`Failed to construct 'RTCTrackEvent': required member transceiver is not provided.`);this.receiver=t.receiver,this.track=t.track,this.streams=Object.freeze(t.streams?[...t.streams]:[]),this.transceiver=t.transceiver}};const F=globalThis;F.MediaStream===void 0&&(F.MediaStream=Me),F.MediaStreamTrack===void 0&&(F.MediaStreamTrack=P),F.RTCTrackEvent===void 0&&(F.RTCTrackEvent=RTCTrackEvent);function sdpTypeToGst(e){switch(e){case`offer`:return r.WebRTCSDPType.OFFER;case`pranswer`:return r.WebRTCSDPType.PRANSWER;case`answer`:return r.WebRTCSDPType.ANSWER;case`rollback`:return r.WebRTCSDPType.ROLLBACK}}function sdpTypeFromGst(e){switch(e){case r.WebRTCSDPType.OFFER:return`offer`;case r.WebRTCSDPType.PRANSWER:return`pranswer`;case r.WebRTCSDPType.ANSWER:return`answer`;case r.WebRTCSDPType.ROLLBACK:return`rollback`;default:return`offer`}}var I=class RTCSessionDescription{type;sdp;constructor(e){this.type=e?.type??`offer`,this.sdp=e?.sdp??``}toJSON(){return{type:this.type,sdp:this.sdp}}toGstDesc(){let[e,t]=i.SDPMessage.new_from_text(this.sdp);if(e!==i.SDPResult.OK)throw Error(`Failed to parse SDP text (GstSDPResult=${e})`);return r.WebRTCSessionDescription.new(sdpTypeToGst(this.type),t)}static fromGstDesc(e){let t=e.sdp?.as_text?.()??``;return new RTCSessionDescription({type:sdpTypeFromGst(e.type),sdp:t})}};function parseCandidate(e){let t=e.trim();t.startsWith(`a=`)&&(t=t.slice(2)),t.startsWith(`candidate:`)&&(t=t.slice(10));let n=t.split(/\s+/);if(n.length<8)return{};let r=n[2]?.toLowerCase(),i=n.indexOf(`typ`),a=i>=0?n[i+1]:void 0,o=n.indexOf(`raddr`),s=n.indexOf(`rport`),c=n.indexOf(`tcptype`),l=Number(n[1]);return{foundation:n[0],component:l===1?`rtp`:l===2?`rtcp`:null,priority:Number(n[3])||null,protocol:r===`udp`||r===`tcp`?r:null,address:n[4]??null,port:Number(n[5])||null,type:a===`host`||a===`srflx`||a===`prflx`||a===`relay`?a:null,relatedAddress:o>=0?n[o+1]??null:null,relatedPort:s>=0&&Number(n[s+1])||null,tcpType:c>=0?n[c+1]:null}}var RTCIceCandidate=class{candidate;sdpMid;sdpMLineIndex;usernameFragment;foundation;component;priority;protocol;address;port;type;tcpType;relatedAddress;relatedPort;constructor(e={}){if(e.sdpMid==null&&e.sdpMLineIndex==null)throw TypeError(`RTCIceCandidate requires either sdpMid or sdpMLineIndex`);this.candidate=e.candidate??``,this.sdpMid=e.sdpMid??null,this.sdpMLineIndex=e.sdpMLineIndex??null,this.usernameFragment=e.usernameFragment??null;let t=parseCandidate(this.candidate);this.foundation=t.foundation??null,this.component=t.component??null,this.priority=t.priority??null,this.protocol=t.protocol??null,this.address=t.address??null,this.port=t.port??null,this.type=t.type??null,this.tcpType=t.tcpType??null,this.relatedAddress=t.relatedAddress??null,this.relatedPort=t.relatedPort??null}toJSON(){return{candidate:this.candidate,sdpMid:this.sdpMid,sdpMLineIndex:this.sdpMLineIndex,usernameFragment:this.usernameFragment}}},RTCPeerConnectionIceEvent=class extends Event{candidate;url;constructor(e,t={}){super(e,t),this.candidate=t.candidate??null,this.url=t.url??null}},RTCDataChannelEvent=class extends Event{channel;constructor(e,t){if(super(e,t),!t||!t.channel)throw TypeError("RTCDataChannelEvent requires a `channel` member");this.channel=t.channel}},RTCErrorEvent=class extends Event{error;constructor(e,t){if(super(e,t),!t||!t.error)throw TypeError("RTCErrorEvent requires an `error` member");this.error=t.error}};const Ne={[r.WebRTCSignalingState.STABLE]:`stable`,[r.WebRTCSignalingState.CLOSED]:`closed`,[r.WebRTCSignalingState.HAVE_LOCAL_OFFER]:`have-local-offer`,[r.WebRTCSignalingState.HAVE_REMOTE_OFFER]:`have-remote-offer`,[r.WebRTCSignalingState.HAVE_LOCAL_PRANSWER]:`have-local-pranswer`,[r.WebRTCSignalingState.HAVE_REMOTE_PRANSWER]:`have-remote-pranswer`};function gstToSignalingState(e){return Ne[e]??`stable`}const Pe={[r.WebRTCPeerConnectionState.NEW]:`new`,[r.WebRTCPeerConnectionState.CONNECTING]:`connecting`,[r.WebRTCPeerConnectionState.CONNECTED]:`connected`,[r.WebRTCPeerConnectionState.DISCONNECTED]:`disconnected`,[r.WebRTCPeerConnectionState.FAILED]:`failed`,[r.WebRTCPeerConnectionState.CLOSED]:`closed`};function gstToConnectionState(e){return Pe[e]??`new`}const Fe={[r.WebRTCICEConnectionState.NEW]:`new`,[r.WebRTCICEConnectionState.CHECKING]:`checking`,[r.WebRTCICEConnectionState.CONNECTED]:`connected`,[r.WebRTCICEConnectionState.COMPLETED]:`completed`,[r.WebRTCICEConnectionState.FAILED]:`failed`,[r.WebRTCICEConnectionState.DISCONNECTED]:`disconnected`,[r.WebRTCICEConnectionState.CLOSED]:`closed`};function gstToIceConnectionState(e){return Fe[e]??`new`}const Ie={[r.WebRTCICEGatheringState.NEW]:`new`,[r.WebRTCICEGatheringState.GATHERING]:`gathering`,[r.WebRTCICEGatheringState.COMPLETE]:`complete`};function gstToIceGatheringState(e){return Ie[e]??`new`}const Le={[r.WebRTCRTPTransceiverDirection.SENDRECV]:`sendrecv`,[r.WebRTCRTPTransceiverDirection.SENDONLY]:`sendonly`,[r.WebRTCRTPTransceiverDirection.RECVONLY]:`recvonly`},Re={sendrecv:r.WebRTCRTPTransceiverDirection.SENDRECV,sendonly:r.WebRTCRTPTransceiverDirection.SENDONLY,recvonly:r.WebRTCRTPTransceiverDirection.RECVONLY,inactive:r.WebRTCRTPTransceiverDirection.NONE};function gstDirectionToW3C(e){return Le[e]??`inactive`}function w3cDirectionToGst(e){return Re[e]??r.WebRTCRTPTransceiverDirection.NONE}const ze={[r.WebRTCStatsType.CODEC]:`codec`,[r.WebRTCStatsType.INBOUND_RTP]:`inbound-rtp`,[r.WebRTCStatsType.OUTBOUND_RTP]:`outbound-rtp`,[r.WebRTCStatsType.REMOTE_INBOUND_RTP]:`remote-inbound-rtp`,[r.WebRTCStatsType.REMOTE_OUTBOUND_RTP]:`remote-outbound-rtp`,[r.WebRTCStatsType.CSRC]:`csrc`,[r.WebRTCStatsType.PEER_CONNECTION]:`peer-connection`,[r.WebRTCStatsType.DATA_CHANNEL]:`data-channel`,[r.WebRTCStatsType.STREAM]:`stream`,[r.WebRTCStatsType.TRANSPORT]:`transport`,[r.WebRTCStatsType.CANDIDATE_PAIR]:`candidate-pair`,[r.WebRTCStatsType.LOCAL_CANDIDATE]:`local-candidate`,[r.WebRTCStatsType.REMOTE_CANDIDATE]:`remote-candidate`,[r.WebRTCStatsType.CERTIFICATE]:`certificate`};function gstToStatsType(e){return ze[e]}const asWebRtcBin=e=>e,asWebRtcSrcPad=e=>e,asValveElement=e=>e,asRtpPayloaderElement=e=>e,asCapsFilterElement=e=>e,asVp8EncElement=e=>e,Be=globalThis;globalThis.DOMException===void 0&&(Be.DOMException=E);var RTCError=class extends DOMException{errorDetail;sdpLineNumber;sctpCauseCode;receivedAlert;sentAlert;httpRequestStatusCode;constructor(e,t){if(super(t??e.errorDetail,`OperationError`),!e||!e.errorDetail)throw TypeError(`RTCError: errorDetail is required`);this.errorDetail=e.errorDetail,this.sdpLineNumber=e.sdpLineNumber??null,this.sctpCauseCode=e.sctpCauseCode??null,this.receivedAlert=e.receivedAlert??null,this.sentAlert=e.sentAlert??null,this.httpRequestStatusCode=e.httpRequestStatusCode??null}};const Ve=a.PromiseBridge,He=a.WebrtcbinBridge,Ue=a.DataChannelBridge,We=a.ReceiverBridge,Ge={1:`connecting`,2:`open`,3:`closing`,4:`closed`};function toGBytes(t){let n;return n=ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(t),new e.Bytes(n)}function bytesToArrayBuffer(e){let t=e,n=t.toArray?.();if(n instanceof Uint8Array)return n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength);let r=t.get_data?.();return r instanceof Uint8Array?r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength):new ArrayBuffer(0)}var RTCDataChannel=class extends EventTarget{_native;_bridge;_binaryType=`arraybuffer`;_bufferedAmount=0;_closed=!1;_onopen=null;_onclose=null;_onerror=null;_onmessage=null;_onbufferedamountlow=null;_onclosing=null;constructor(e){super();let t=e;t.channel!==void 0&&typeof t.dispose_bridge==`function`?(this._bridge=e,this._native=this._bridge.channel):(this._native=e,this._bridge=new Ue({channel:this._native})),this._bridge.connect(`opened`,()=>this._handleOpen()),this._bridge.connect(`closed`,()=>this._handleClose()),this._bridge.connect(`error-occurred`,(e,t)=>this._handleError(t)),this._bridge.connect(`message-string`,(e,t)=>this._handleString(t)),this._bridge.connect(`message-data`,(e,t)=>this._handleData(t)),this._bridge.connect(`buffered-amount-low`,()=>this._handleBufferedAmountLow()),this._bridge.connect(`ready-state-changed`,()=>this._handleReadyStateChange())}get label(){return this._native.label}get ordered(){return this._native.ordered}get protocol(){return this._native.protocol}get negotiated(){return this._native.negotiated}get id(){return this._native.id>=0?this._native.id:null}get maxPacketLifeTime(){let e=this._native.max_packet_lifetime;return e>=0?e:null}get maxRetransmits(){let e=this._native.max_retransmits;return e>=0?e:null}get readyState(){return this._closed?`closed`:Ge[this._native.ready_state]??`connecting`}get bufferedAmount(){try{return Number(this._native.buffered_amount)||this._bufferedAmount}catch{return this._bufferedAmount}}get bufferedAmountLowThreshold(){return Number(this._native.buffered_amount_low_threshold)||0}set bufferedAmountLowThreshold(e){this._native.buffered_amount_low_threshold=e}get binaryType(){return this._binaryType}set binaryType(e){e!==`arraybuffer`&&e!==`blob`||(this._binaryType=e)}get onopen(){return this._onopen}set onopen(e){this._onopen=e}get onclose(){return this._onclose}set onclose(e){this._onclose=e}get onclosing(){return this._onclosing}set onclosing(e){this._onclosing=e}get onerror(){return this._onerror}set onerror(e){this._onerror=e}get onmessage(){return this._onmessage}set onmessage(e){this._onmessage=e}get onbufferedamountlow(){return this._onbufferedamountlow}set onbufferedamountlow(e){this._onbufferedamountlow=e}send(e){let t=this.readyState;if(t!==`open`)throw new E(`RTCDataChannel.send: readyState is '${t}', expected 'open'`,`InvalidStateError`);if(typeof e==`string`){this._native.send_string(e),this._bufferedAmount+=new TextEncoder().encode(e).byteLength;return}if(e instanceof u){e.arrayBuffer().then(e=>{try{this._native.send_data(toGBytes(e)),this._bufferedAmount+=e.byteLength}catch{}});return}if(ArrayBuffer.isView(e)){let t=toGBytes(e);this._native.send_data(t),this._bufferedAmount+=e.byteLength;return}if(e instanceof ArrayBuffer){let t=toGBytes(e);this._native.send_data(t),this._bufferedAmount+=e.byteLength;return}throw TypeError(`RTCDataChannel.send: unsupported data type`)}close(){if(!this._closed){try{this._native.close()}catch{}this._disconnectSignals(),this._closed=!0}}_disconnectSignals(){try{this._bridge.dispose_bridge()}catch{}}_handleOpen(){let e=new Event(`open`);this._onopen?.call(this,e),this.dispatchEvent(e)}_handleClose(){this._closed=!0;let e=new Event(`close`);this._onclose?.call(this,e),this.dispatchEvent(e)}_handleError(e){let t=new RTCErrorEvent(`error`,{error:new RTCError({errorDetail:`data-channel-failure`},e||`RTCDataChannel error`)});this._onerror?.call(this,t),this.dispatchEvent(t)}_handleString(e){let t=new MessageEvent(`message`,{data:e});this._onmessage?.call(this,t),this.dispatchEvent(t)}_handleData(e){if(!e)return;let t=bytesToArrayBuffer(e),n=this._binaryType===`blob`?new u([t]):t,r=new MessageEvent(`message`,{data:n});this._onmessage?.call(this,r),this.dispatchEvent(r)}_handleBufferedAmountLow(){this._bufferedAmount=Number(this._native.buffered_amount)||0;let e=new Event(`bufferedamountlow`);this._onbufferedamountlow?.call(this,e),this.dispatchEvent(e)}_handleReadyStateChange(){if(this.readyState===`closing`){let e=new Event(`closing`);this._onclosing?.call(this,e),this.dispatchEvent(e)}}};const Ke={codecs:[{mimeType:`audio/opus`,clockRate:48e3,channels:2,sdpFmtpLine:`minptime=10;useinbandfec=1`},{mimeType:`audio/G722`,clockRate:8e3,channels:1},{mimeType:`audio/PCMU`,clockRate:8e3,channels:1},{mimeType:`audio/PCMA`,clockRate:8e3,channels:1},{mimeType:`audio/telephone-event`,clockRate:8e3,channels:1},{mimeType:`audio/red`,clockRate:48e3,channels:2}],headerExtensions:[{uri:`urn:ietf:params:rtp-hdrext:ssrc-audio-level`},{uri:`http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time`},{uri:`urn:ietf:params:rtp-hdrext:sdes:mid`}]},qe={codecs:[{mimeType:`video/VP8`,clockRate:9e4},{mimeType:`video/rtx`,clockRate:9e4},{mimeType:`video/H264`,clockRate:9e4,sdpFmtpLine:`level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f`},{mimeType:`video/VP9`,clockRate:9e4},{mimeType:`video/red`,clockRate:9e4},{mimeType:`video/ulpfec`,clockRate:9e4}],headerExtensions:[{uri:`urn:ietf:params:rtp-hdrext:toffset`},{uri:`http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time`},{uri:`urn:3gpp:video-orientation`},{uri:`urn:ietf:params:rtp-hdrext:sdes:mid`},{uri:`urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id`},{uri:`urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id`}]};function getRtpCapabilities(e){return e===`audio`?Ke:e===`video`?qe:null}const Je=new Set(`0123456789ABCDabcd#*,`);var RTCDTMFToneChangeEvent=class extends Event{tone;constructor(e,t={}){super(e,t),this.tone=t.tone??``}},RTCDTMFSender=class extends EventTarget{_toneBuffer=``;_duration=100;_interToneGap=70;_timerId=null;_canInsert=!0;_ontonechange=null;_isStopped=()=>!1;_getCurrentDirection=()=>null;get toneBuffer(){return this._toneBuffer}get canInsertDTMF(){return this._canInsert}get ontonechange(){return this._ontonechange}set ontonechange(e){this._ontonechange=e}insertDTMF(e,t,n){if(this._isStopped())throw new DOMException(`Failed to execute 'insertDTMF': The associated transceiver is stopped`,`InvalidStateError`);let r=this._getCurrentDirection();if(r===`recvonly`||r===`inactive`)throw new DOMException(`Failed to execute 'insertDTMF': The associated transceiver direction does not allow sending`,`InvalidStateError`);for(let t of e)if(!Je.has(t))throw new DOMException(`Failed to execute 'insertDTMF': Invalid DTMF character '${t}'`,`InvalidCharacterError`);e=e.replace(/[a-d]/g,e=>e.toUpperCase());let i=t??100;this._duration=Math.max(40,Math.min(6e3,i));let a=n??70;this._interToneGap=Math.max(30,a),this._toneBuffer=e,this._timerId!==null&&(clearTimeout(this._timerId),this._timerId=null),e.length>0&&this._scheduleNextTone(0)}_scheduleNextTone(e){this._timerId=setTimeout(()=>{this._timerId=null,this._playNextTone()},e)}_playNextTone(){if(this._toneBuffer.length===0){this._fireToneChange(``);return}let e=this._toneBuffer[0];this._toneBuffer=this._toneBuffer.slice(1),this._fireToneChange(e);let t=e===`,`?2e3:this._duration+this._interToneGap;this._scheduleNextTone(t)}_fireToneChange(e){let t=new RTCDTMFToneChangeEvent(`tonechange`,{tone:e});this._ontonechange?.call(this,t),this.dispatchEvent(t)}_stop(){this._timerId!==null&&(clearTimeout(this._timerId),this._timerId=null),this._toneBuffer=``,this._canInsert=!1}},TeeMultiplexer=class{_tee;_pipeline;_branchCount=0;constructor(e,t){this._pipeline=e,this._tee=n.ElementFactory.make(`tee`,null),this._tee.allow_not_linked=!0,e.add(this._tee),this._tee.sync_state_with_parent(),t.link(this._tee)}requestSrcPad(){let e=`src_%u`,t=this._tee.request_pad_simple?this._tee.request_pad_simple(e):this._tee.get_request_pad(e);return t&&this._branchCount++,t}releaseSrcPad(e){if(e){try{e.add_probe(n.PadProbeType.BLOCK_DOWNSTREAM,()=>n.PadProbeReturn.DROP)}catch{}try{let t=e.get_peer();t&&e.unlink(t)}catch{}try{this._tee.release_request_pad(e)}catch{}this._branchCount--}}get branchCount(){return this._branchCount}get element(){return this._tee}},Ye=__exportAll({RTCStatsReport:()=>RTCStatsReport}),RTCStatsReport,Xe=__esmMin(()=>{RTCStatsReport=class{_map;constructor(e){this._map=new Map(e)}get size(){return this._map.size}get(e){return this._map.get(e)}has(e){return this._map.has(e)}forEach(e,t){this._map.forEach((n,r)=>{e.call(t,n,r,this)})}entries(){return this._map.entries()}keys(){return this._map.keys()}values(){return this._map.values()}[Symbol.iterator](){return this._map.entries()}}});let Ze=0;var RTCRtpSender=class{_gstSender;_track=null;_lastParams=null;_pipeline=null;_webrtcbin=null;_mlineIndex=-1;_elements=[];_valve=null;_linked=!1;_teeSrcPad=null;_getStatsForTrack=null;_transport=null;_dtmf=null;_kind=null;_transceiver=null;_onPipelineChanged=null;constructor(e,t,n){this._gstSender=e,this._pipeline=t??null,this._webrtcbin=n??null}get track(){return this._track}get dtmf(){if((this._track?.kind??this._kind)!==`audio`)return null;if(!this._dtmf){let e=new RTCDTMFSender;e._isStopped=()=>this._transceiver?.stopped??!1,e._getCurrentDirection=()=>this._transceiver?.currentDirection??null,this._dtmf=e}return this._dtmf}get transport(){return this._transport}_setTrack(e){e===null&&this._linked&&this._teardownPipeline(),this._track=e}_setMlineIndex(e){this._mlineIndex=e}_wirePipeline(e){if(this._linked||!this._pipeline||!this._webrtcbin)return;let t=e._gstSource;if(!t)return;let r=e,i;if(r._gstTee&&r._gstPipeline&&r._gstPipeline!==this._pipeline){let e=r._gstPipeline,t=r._gstTee;this._webrtcbin.get_parent()===this._pipeline&&(this._pipeline.set_state(n.State.NULL),this._pipeline.remove(this._webrtcbin)),e.add(this._webrtcbin),this._webrtcbin.sync_state_with_parent(),this._pipeline=e,this._onPipelineChanged?.(e);let a=t.request_pad_simple?t.request_pad_simple(`src_%u`):t.get_request_pad(`src_%u`);this._teeSrcPad=a,i=null}else if(r._teeMultiplexer){let e=r._teeMultiplexer.requestSrcPad();this._teeSrcPad=e,i=null}else if(r._gstPipeline&&r._gstPipeline!==this._pipeline){let e=r._gstPipeline,a=t.get_static_pad(`src`),o=a?.get_peer?.();o&&a.unlink(o),t.set_state(n.State.NULL),e.remove(t),this._pipeline.add(t),r._gstPipeline=this._pipeline;let s=new TeeMultiplexer(this._pipeline,t);if(r._teeMultiplexer=s,o){let e=s.requestSrcPad();e&&e.link(o)}let c=s.requestSrcPad();this._teeSrcPad=c,i=null}else{let e=r._gstPipeline;e&&e!==this._pipeline&&(t.set_state(n.State.NULL),e.remove(t),r._gstPipeline=this._pipeline),t.get_parent()!==this._pipeline&&this._pipeline.add(t),i=t}let a=asValveElement(n.ElementFactory.make(`valve`,null));a.drop=!e.enabled,this._valve=a,this._pipeline.add(a);let o=[a],s;if(e.kind===`audio`){let e=n.ElementFactory.make(`audioconvert`,null),t=n.ElementFactory.make(`audioresample`,null),r=n.ElementFactory.make(`opusenc`,null),c=asRtpPayloaderElement(n.ElementFactory.make(`rtpopuspay`,null));c.pt=111;let l=asCapsFilterElement(n.ElementFactory.make(`capsfilter`,null));l.caps=n.Caps.from_string(`application/x-rtp,media=audio,encoding-name=OPUS,clock-rate=48000,payload=111`),o.push(e,t,r,c,l);for(let e of o)this._pipeline.add(e);if(this._teeSrcPad){let e=a.get_static_pad(`sink`);this._teeSrcPad.link(e)}else i&&i.link(a);a.link(e),e.link(t),t.link(r),r.link(c),c.link(l),s=l}else{let e=n.ElementFactory.make(`videoconvert`,null),t=n.ElementFactory.make(`videoscale`,null),r=asVp8EncElement(n.ElementFactory.make(`vp8enc`,null));r.deadline=1,r.keyframe_max_dist=60;let c=asRtpPayloaderElement(n.ElementFactory.make(`rtpvp8pay`,null));c.pt=96;let l=asCapsFilterElement(n.ElementFactory.make(`capsfilter`,null));l.caps=n.Caps.from_string(`application/x-rtp,media=video,encoding-name=VP8,clock-rate=90000,payload=96`),o.push(e,t,r,c,l);for(let e of o)this._pipeline.add(e);if(this._teeSrcPad){let e=a.get_static_pad(`sink`);this._teeSrcPad.link(e)}else i&&i.link(a);a.link(e),e.link(t),t.link(r),r.link(c),c.link(l),s=l}let c=this._mlineIndex>=0?`sink_${this._mlineIndex}`:`sink_%u`,l=this._webrtcbin.request_pad_simple?this._webrtcbin.request_pad_simple(c):this._webrtcbin.get_request_pad(c);l&&s.get_static_pad(`src`).link(l);let u=this._teeSrcPad?o:[t,...o];for(let e of u)e.sync_state_with_parent();this._elements=u,this._linked=!0,e._setEnableCallback(e=>{this._valve&&(this._valve.drop=!e)})}_teardownPipeline(){if(this._linked){if(this._track&&this._track._setEnableCallback(null),this._teeSrcPad&&this._track?._teeMultiplexer){try{this._track._teeMultiplexer.releaseSrcPad(this._teeSrcPad)}catch{}this._teeSrcPad=null}for(let e of[...this._elements].reverse())try{e.set_state(n.State.NULL),this._pipeline?.remove(e)}catch{}this._elements=[],this._valve=null,this._linked=!1}}getParameters(){return this._lastParams||={transactionId:String(++Ze),encodings:[],codecs:[],headerExtensions:[],rtcp:{}},{...this._lastParams,encodings:[...this._lastParams.encodings]}}async setParameters(e){if(!this._lastParams)throw new DOMException(`getParameters must be called before setParameters`,`InvalidStateError`);if(e.transactionId!==this._lastParams.transactionId)throw new DOMException(`transactionId mismatch`,`InvalidModificationError`);this._lastParams=null}async replaceTrack(e){if(e===null){this._teardownPipeline(),this._track=null;return}if(this._track!==null&&e.kind!==this._track.kind)throw TypeError(`Cannot replace track with different kind`);let t=e;if(this._linked&&t._gstSource){let e=this._elements[0],r=t._gstSource,i=t._gstPipeline;i&&i!==this._pipeline&&(r.set_state(n.State.NULL),i.remove(r),t._gstPipeline=this._pipeline),e.set_state(n.State.NULL),this._valve&&e.unlink(this._valve),this._pipeline?.remove(e),this._pipeline?.add(r),this._valve&&r.link(this._valve),r.sync_state_with_parent(),this._elements[0]=r}else t._gstSource&&this._wirePipeline(e);this._track&&this._track._setEnableCallback(null),this._track=e,this._linked&&e._setEnableCallback(e=>{this._valve&&(this._valve.drop=!e)})}async getStats(){if(this._getStatsForTrack&&this._track)return this._getStatsForTrack(this._track);let{RTCStatsReport:e}=await Promise.resolve().then(()=>(Xe(),Ye));return new e}setStreams(...e){}static getCapabilities(e){return getRtpCapabilities(e)}};const Qe=4e3;var RTCRtpReceiver=class{_gstReceiver;_track;_jitterBufferTarget=null;_pipeline=null;_receiverBridge=null;_getStatsForTrack=null;constructor(e,t,n){this._gstReceiver=t,this._pipeline=n??null,this._track=new P({kind:e,muted:!0})}_connectToPad(e){!this._pipeline||this._receiverBridge||(this._receiverBridge=new We({pipeline:this._pipeline,kind:this._track.kind}),this._receiverBridge.connect_to_pad(e),this._receiverBridge.connect(`media-flowing`,()=>{this._track._setMuted(!1)}))}_dispose(){try{this._receiverBridge?.dispose_bridge()}catch{}this._receiverBridge=null}_transport=null;get track(){return this._track}get transport(){return this._transport}get jitterBufferTarget(){return this._jitterBufferTarget}set jitterBufferTarget(e){if(e===null){this._jitterBufferTarget=null;return}let t=Number(e);if(!Number.isFinite(t)||t<0)throw RangeError(`Failed to set jitterBufferTarget: ${e} is negative or not finite`);if(t>Qe)throw RangeError(`Failed to set jitterBufferTarget: ${e} exceeds maximum of ${Qe}`);this._jitterBufferTarget=t}getParameters(){return{codecs:[],headerExtensions:[],rtcp:{}}}getContributingSources(){return[]}getSynchronizationSources(){return[]}async getStats(){if(this._getStatsForTrack&&this._track)return this._getStatsForTrack(this._track);let{RTCStatsReport:e}=await Promise.resolve().then(()=>(Xe(),Ye));return new e}static getCapabilities(e){return getRtpCapabilities(e)}},RTCRtpTransceiver=class{_gstTrans;sender;receiver;_stopped=!1;_codecPreferences=[];constructor(e,t,n){this._gstTrans=e,this.sender=t,this.receiver=n}get mid(){if(this._stopped)return null;let e=this._gstTrans.mid;return e===``||e==null?null:String(e)}get direction(){return this._stopped?`stopped`:gstDirectionToW3C(this._gstTrans.direction)}set direction(e){if(this._stopped)throw new DOMException(`Cannot set direction on a stopped transceiver`,`InvalidStateError`);if(e===`stopped`)throw TypeError(`The provided value 'stopped' is not a valid enum value of type RTCRtpTransceiverDirection.`);if(![`sendrecv`,`sendonly`,`recvonly`,`inactive`].includes(e))throw TypeError(`The provided value '${e}' is not a valid enum value of type RTCRtpTransceiverDirection.`);this._gstTrans.direction=w3cDirectionToGst(e)}get currentDirection(){if(this._stopped)return null;let e=this._gstTrans.current_direction??this._gstTrans.currentDirection;if(e==null)return null;let t=gstDirectionToW3C(e);return t===`inactive`?null:t}get stopped(){return this._stopped}stop(){this._stopped||=!0}setCodecPreferences(e){if(!Array.isArray(e))throw TypeError(`codecs must be an array`);if(e.length===0){this._codecPreferences=[];return}let t=this.receiver.track.kind,n=RTCRtpReceiver.getCapabilities(t),r=RTCRtpSender.getCapabilities(t);if(!n||!r)throw new DOMException(`No capabilities available`,`InvalidModificationError`);let i=[...n.codecs,...r.codecs];for(let t of e){if(!t||typeof t!=`object`)throw TypeError(`Each codec must be an object`);if(typeof t.mimeType!=`string`||typeof t.clockRate!=`number`)throw TypeError(`codec must have mimeType (string) and clockRate (number)`);if(!/\/(rtx|red|ulpfec)$/i.test(t.mimeType)&&!i.find(e=>e.mimeType.toLowerCase()===t.mimeType.toLowerCase()&&e.clockRate===t.clockRate&&(t.channels===void 0||e.channels===t.channels)&&(t.sdpFmtpLine===void 0||e.sdpFmtpLine===t.sdpFmtpLine)))throw new DOMException(`Codec ${t.mimeType} ${t.clockRate} is not in capabilities`,`InvalidModificationError`)}this._codecPreferences=[...e]}get _nativeTransceiver(){return this._gstTrans}},RTCIceTransport=class extends EventTarget{_state=`new`;_gatheringState=`new`;_role=`unknown`;_component=`rtp`;_localCandidates=[];_remoteCandidates=[];_localParams=null;_remoteParams=null;_onstatechange=null;_ongatheringstatechange=null;_onselectedcandidatepairchange=null;get state(){return this._state}get gatheringState(){return this._gatheringState}get role(){return this._role}get component(){return this._component}get onstatechange(){return this._onstatechange}set onstatechange(e){this._onstatechange=e}get ongatheringstatechange(){return this._ongatheringstatechange}set ongatheringstatechange(e){this._ongatheringstatechange=e}get onselectedcandidatepairchange(){return this._onselectedcandidatepairchange}set onselectedcandidatepairchange(e){this._onselectedcandidatepairchange=e}getLocalCandidates(){return[...this._localCandidates]}getRemoteCandidates(){return[...this._remoteCandidates]}getSelectedCandidatePair(){return null}getLocalParameters(){return this._localParams}getRemoteParameters(){return this._remoteParams}_setState(e){if(this._state===e)return;this._state=e;let t=new Event(`statechange`);this._onstatechange?.call(this,t),this.dispatchEvent(t)}_setGatheringState(e){if(this._gatheringState===e)return;this._gatheringState=e;let t=new Event(`gatheringstatechange`);this._ongatheringstatechange?.call(this,t),this.dispatchEvent(t)}_addLocalCandidate(e){this._localCandidates.push(new RTCIceCandidate(e))}_addRemoteCandidate(e){this._remoteCandidates.push(new RTCIceCandidate(e))}_setLocalParameters(e){this._localParams=e}_setRemoteParameters(e){this._remoteParams=e}},RTCDtlsTransport=class extends EventTarget{iceTransport;_state=`new`;_onstatechange=null;_onerror=null;constructor(e){super(),this.iceTransport=e}get state(){return this._state}get onstatechange(){return this._onstatechange}set onstatechange(e){this._onstatechange=e}get onerror(){return this._onerror}set onerror(e){this._onerror=e}getRemoteCertificates(){return[]}_setState(e){if(this._state===e)return;this._state=e;let t=new Event(`statechange`);this._onstatechange?.call(this,t),this.dispatchEvent(t)}},RTCSctpTransport=class extends EventTarget{transport;_state=`connecting`;_maxMessageSize=262144;_maxChannels=65535;_onstatechange=null;constructor(e){super(),this.transport=e}get state(){return this._state}get maxMessageSize(){return this._maxMessageSize}get maxChannels(){return this._maxChannels}get onstatechange(){return this._onstatechange}set onstatechange(e){this._onstatechange=e}_setState(e){if(this._state===e)return;this._state=e;let t=new Event(`statechange`);this._onstatechange?.call(this,t),this.dispatchEvent(t)}},RTCCertificate=class{expires;_fingerprints;_algorithm;constructor(e,t,n){this._algorithm=e,this.expires=t,this._fingerprints=n}getFingerprints(){return[...this._fingerprints]}get _algorithmName(){return this._algorithm}};async function generateCertificate(t){let n;if(typeof t==`string`)n=t.toLowerCase();else if(t&&typeof t==`object`&&typeof t.name==`string`)n=t.name.toLowerCase();else throw new DOMException(`generateCertificate: algorithm must have a name property`,`NotSupportedError`);let r=typeof t==`object`?t:{};if(n===`ecdsa`){let e=r.namedCurve;if(e&&e!==`P-256`)throw new DOMException(`generateCertificate: unsupported ECDSA curve '${e}'`,`NotSupportedError`)}else if(n===`rsassa-pkcs1-v1_5`){let e=r.hash,t=typeof e==`string`?e:e?.name;if(t&&t.toUpperCase()===`SHA-1`)throw new DOMException(`generateCertificate: SHA-1 is not supported for RSA certificates`,`NotSupportedError`)}else throw new DOMException(`generateCertificate: unsupported algorithm '${n}'`,`NotSupportedError`);let i=e.uuid_string_random(),a=e.Checksum.new(e.ChecksumType.SHA256);a.update(new TextEncoder().encode(i+Date.now()));let o=a.get_string().slice(0,64).match(/.{2}/g).join(`:`).toUpperCase(),s=Date.now()+2592e6;return new RTCCertificate(n,s,[{algorithm:`sha-256`,value:o}])}function withGstPromise(e){return new Promise((t,n)=>{let r=new Ve;r.connect(`replied`,(e,n)=>{t(n)}),r.connect(`rejected`,(e,t)=>{n(Error(t))}),e(r.promise)})}const $e={async createOffer(e){this._rejectIfClosed(`createOffer`);let t=n.Structure.new_empty(`offer-options`);this._iceRestartNeeded&&=(this._setStructureField(t,`ice-restart`,`boolean`,!0),!1);let r=(await withGstPromise(e=>{this._webrtcbin.emit(`create-offer`,t,e)})).get_value(`offer`);return I.fromGstDesc(r).toJSON()},async createAnswer(e){this._rejectIfClosed(`createAnswer`);let t=n.Structure.new_empty(`answer-options`),r=(await withGstPromise(e=>{this._webrtcbin.emit(`create-answer`,t,e)})).get_value(`answer`);return I.fromGstDesc(r).toJSON()},async setLocalDescription(e){if(this._rejectIfClosed(`setLocalDescription`),!e||!e.type||!e.sdp){let t=this.signalingState;if(t===`stable`||t===`have-local-offer`)e=await this.createOffer();else if(t===`have-remote-offer`||t===`have-remote-pranswer`)e=await this.createAnswer();else throw new E(`setLocalDescription: cannot auto-create SDP in signalingState '${t}'`,`InvalidStateError`)}this._pipeline.set_state(n.State.PLAYING);let t=new I(e).toGstDesc();await withGstPromise(e=>{this._webrtcbin.emit(`set-local-description`,t,e)})},async setRemoteDescription(e){if(this._rejectIfClosed(`setRemoteDescription`),!e||!e.sdp||!e.type)throw TypeError(`setRemoteDescription requires an RTCSessionDescriptionInit with sdp and type`);this._pipeline.set_state(n.State.PLAYING);let t=new I(e).toGstDesc();await withGstPromise(e=>{this._webrtcbin.emit(`set-remote-description`,t,e)}),this.signalingState===`stable`&&(this._hasNegotiated=!0)},async addIceCandidate(e){if(this._rejectIfClosed(`addIceCandidate`),!e)return;let{candidate:t,sdpMLineIndex:n}=e;typeof t!=`string`||typeof n!=`number`||this._webrtcbin.emit(`add-ice-candidate`,n,t)}};function installSdpNegotiationMethods(e){Object.assign(e,$e)}function coerceUnsignedShort(e,t){let n=Number(t);if(!Number.isFinite(n))throw TypeError(`createDataChannel: ${e} must be a finite number, got ${String(t)}`);let r=Math.trunc(n);if(r<0||r>65535)throw TypeError(`createDataChannel: ${e}=${r} is outside the [0, 65535] range`);return r}const et={createDataChannel(e,t={}){if(this._closed)throw new E(`Cannot create a data channel on a closed RTCPeerConnection`,`InvalidStateError`);if(typeof e!=`string`)throw TypeError(`createDataChannel: label must be a string`);if(new TextEncoder().encode(e).byteLength>65535)throw TypeError(`createDataChannel: label too long (> 65535 bytes)`);let r=t.maxPacketLifeTime==null?void 0:coerceUnsignedShort(`maxPacketLifeTime`,t.maxPacketLifeTime),i=t.maxRetransmits==null?void 0:coerceUnsignedShort(`maxRetransmits`,t.maxRetransmits),a=t.id==null?void 0:coerceUnsignedShort(`id`,t.id);if(r!==void 0&&i!==void 0)throw TypeError(`createDataChannel: maxPacketLifeTime and maxRetransmits are mutually exclusive`);if(t.negotiated===!0&&a===void 0)throw TypeError(`createDataChannel: negotiated=true requires an id`);if(a===65535)throw TypeError(`createDataChannel: id 65535 is reserved`);let o=n.Structure.new_empty(`data-channel-opts`);this._setStructureField(o,`ordered`,`boolean`,t.ordered),this._setStructureField(o,`max-packet-lifetime`,`int`,r),this._setStructureField(o,`max-retransmits`,`int`,i),this._setStructureField(o,`protocol`,`string`,t.protocol),this._setStructureField(o,`negotiated`,`boolean`,t.negotiated),this._setStructureField(o,`id`,`int`,a);let s=null;try{s=this._webrtcbin.emit(`create-data-channel`,e,o)}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`create-data-channel failed: ${t}`)}if(!s)throw Error(`webrtcbin returned null data channel (check id/label/options)`);this._ensureSctpTransport();let c=new RTCDataChannel(s);return this._dataChannels.set(s,c),c.addEventListener(`close`,()=>{this._dataChannels.delete(s)}),c}};function installDataChannelMethods(e){Object.assign(e,et)}const tt={addTransceiver(e,t){this._rejectIfClosed(`addTransceiver`);let r;if(typeof e==`string`){if(e!==`audio`&&e!==`video`)throw TypeError(`Failed to execute 'addTransceiver' on 'RTCPeerConnection': The provided value '${e}' is not a valid enum value of type MediaStreamTrackKind.`);r=e}else if(e instanceof P)r=e.kind;else throw TypeError(`Failed to execute 'addTransceiver' on 'RTCPeerConnection': parameter 1 is not of type 'MediaStreamTrack' or a valid MediaStreamTrackKind.`);if(t?.sendEncodings){let e=new Set;for(let n of t.sendEncodings){if(n.rid!==void 0){if(typeof n.rid!=`string`||n.rid.length===0||n.rid.length>16||!/^[a-zA-Z0-9]+$/.test(n.rid))throw TypeError(`Invalid RID value: ${n.rid}`);if(e.has(n.rid))throw TypeError(`Duplicate RID: ${n.rid}`);e.add(n.rid)}if(n.scaleResolutionDownBy!==void 0&&n.scaleResolutionDownBy<1)throw RangeError(`scaleResolutionDownBy must be >= 1.0`)}}let i=t?.direction??`sendrecv`;if(![`sendrecv`,`sendonly`,`recvonly`,`inactive`].includes(i))throw TypeError(`Failed to execute 'addTransceiver' on 'RTCPeerConnection': The provided value '${i}' is not a valid enum value of type RTCRtpTransceiverDirection.`);let a=e instanceof P&&e._gstSource,o=i===`sendrecv`||i===`sendonly`,s,c;if(a&&o){let t=e,n=new RTCRtpSender(null,this._pipeline,this._webrtcbin);n._kind=r,n._onPipelineChanged=e=>{this._pipeline=e},n._setTrack(t),n._wirePipeline(t);let a=this._findNewGstTransceiver();if(!a)throw Error(`webrtcbin did not create a transceiver for the send pad`);s=a;let o=s.receiver??null,l=new RTCRtpReceiver(r,o,this._pipeline),statsDelegate=e=>this.getStats(e);n._getStatsForTrack=statsDelegate,l._getStatsForTrack=statsDelegate;let u=this._ensureTransports();n._transport=u,l._transport=u,c=new RTCRtpTransceiver(s,n,l),n._transceiver=c,this._transceivers.set(s,c),this._senders.push(n),this._receivers.push(l),s.direction=w3cDirectionToGst(i)}else{let t=n.Caps.from_string(`application/x-rtp,media=${r}`),a=w3cDirectionToGst(i===`inactive`?`sendrecv`:i),o=this._webrtcbin.emit(`add-transceiver`,a,t);if(!o)throw Error(`webrtcbin did not create a transceiver`);s=o,c=this._transceivers.get(s),c||=this._createTransceiverWrapper(s),s.direction=w3cDirectionToGst(i),e instanceof P&&c.sender._setTrack(e)}return c}};function installTransceiverMethods(e){Object.assign(e,tt)}const nt={addTrack(e,...t){if(this._rejectIfClosed(`addTrack`),!(e instanceof P))throw TypeError(`Failed to execute 'addTrack' on 'RTCPeerConnection': parameter 1 is not a MediaStreamTrack`);if(this._senders.find(t=>t.track===e))throw new E(`Track already exists in a sender of this connection`,`InvalidAccessError`);let n;for(let t of this._transceivers.values())if(t.sender.track===null&&!t.stopped&&t.direction!==`stopped`&&t.receiver.track.kind===e.kind){let e=t.direction;if(e===`recvonly`||e===`inactive`){n=t;break}}if(n){let t=n.direction;return n.direction=t===`recvonly`?`sendrecv`:`sendonly`,n.sender._setTrack(e),n.sender}return this.addTransceiver(e,{direction:`sendrecv`}).sender},removeTrack(e){if(this._rejectIfClosed(`removeTrack`),!this._senders.includes(e))throw new E(`sender was not created by this connection`,`InvalidAccessError`);e._setTrack(null)},getSenders(){return[...this._senders]},getReceivers(){return[...this._receivers]},getTransceivers(){return[...this._transceivers.values()]}};function installTrackMethods(e){Object.assign(e,nt)}Xe();function snakeToCamel(e){return e.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}function extractFields(e){let t={},n=e.n_fields();for(let r=0;r<n;r++){let n=e.nth_field_name(r);try{t[n]=e.get_value(n)}catch{}}return t}function parseStatsEntry(e){let t=extractFields(e),n=t.type;if(n==null)return null;let r=gstToStatsType(Number(n));if(!r)return null;let i=String(t.id??e.get_name()??``),a=t.timestamp,o={type:r,id:i,timestamp:a==null?performance.now():Number(a)/1e6};for(let[e,n]of Object.entries(t)){if(e===`type`||e===`id`||e===`timestamp`)continue;let t=snakeToCamel(e);o[t]=n}return o}function parseGstStats(e){if(!e)return new RTCStatsReport;let t=[],n=e.n_fields();for(let r=0;r<n;r++){let n=e.nth_field_name(r);try{let r=e.get_value(n);if(r&&typeof r.n_fields==`function`){let e=parseStatsEntry(r);e&&t.push([e.id,e])}}catch{}}return new RTCStatsReport(t)}function filterStatsByTrackId(e,t){let n=[],r=new Set;for(let[i,a]of e)if(a.trackIdentifier===t){n.push([i,a]),r.add(i);for(let t of Object.values(a))typeof t==`string`&&e.has(t)&&r.add(t)}for(let[t,i]of e)r.has(t)&&!n.some(([e])=>e===t)&&n.push([t,i]);return new RTCStatsReport(n)}const rt={async getStats(e){if(this._rejectIfClosed(`getStats`),e!=null&&e instanceof P){let t=this._senders.some(t=>t.track===e),n=this._receivers.some(t=>t.track===e);if(!t&&!n)throw new E(`The selector track is not associated with a sender or receiver of this connection`,`InvalidAccessError`)}let t=parseGstStats(await withGstPromise(e=>{this._webrtcbin.emit(`get-stats`,null,e)}));return e!=null&&e instanceof P?filterStatsByTrackId(t,e.id):t},restartIce(){this._closed||(this._iceRestartNeeded=!0,this._hasNegotiated&&Promise.resolve().then(()=>{this._closed||this._handleNegotiationNeeded()}))},setConfiguration(e){if(this._rejectIfClosed(`setConfiguration`),e.bundlePolicy&&e.bundlePolicy!==(this._conf.bundlePolicy??`balanced`))throw new E(`setConfiguration: bundlePolicy cannot be changed`,`InvalidModificationError`);if(e.rtcpMuxPolicy&&e.rtcpMuxPolicy!==(this._conf.rtcpMuxPolicy??`require`))throw new E(`setConfiguration: rtcpMuxPolicy cannot be changed`,`InvalidModificationError`);e.iceServers&&this._applyIceServers(e.iceServers),e.iceTransportPolicy&&this._applyIceTransportPolicy(e.iceTransportPolicy),this._conf={...this._conf,...e}},getConfiguration(){return{...this._conf}}};function installStatsAndConfigMethods(e){Object.assign(e,rt)}let it=0;var RTCPeerConnection$1=class extends EventTarget{static{__name(this,`RTCPeerConnection`)}_pipeline;_webrtcbin;_bridge;_conf;_closed=!1;_iceRestartNeeded=!1;_hasNegotiated=!1;_dataChannels=new Map;_transceivers=new Map;_senders=[];_receivers=[];_iceTransport=null;_dtlsTransport=null;_sctpTransport=null;canTrickleIceCandidates=!0;constructor(e){super(),ensureWebrtcbinAvailable();let[t,r]=n.version();if(t<1||t===1&&r<20)throw new E(`@gjsify/webrtc requires GStreamer >= 1.20 (you have ${t}.${r}). webrtcbin is only stable from 1.20 onward.`,`NotSupportedError`);let i=++it;this._pipeline=new n.Pipeline({name:`gjsify-webrtc-pipeline-${i}`});let a=n.ElementFactory.make(`webrtcbin`,`gjsify-webrtcbin-${i}`);if(!a)throw Error(`Failed to create webrtcbin element`);if(this._webrtcbin=a,this._conf={...e},e?.certificates){for(let t of e.certificates)if(t instanceof RTCCertificate&&t.expires<=Date.now())throw new E(`RTCPeerConnection: one of the provided certificates has expired`,`InvalidAccessError`)}this._applyIceServers(e?.iceServers??[]),this._applyIceTransportPolicy(e?.iceTransportPolicy),this._applyBundlePolicy(e?.bundlePolicy),this._pipeline.add(this._webrtcbin),this._bridge=new He({bin:this._webrtcbin}),this._bridge.connect(`negotiation-needed`,()=>this._handleNegotiationNeeded()),this._bridge.connect(`icecandidate`,(e,t,n)=>this._handleIceCandidate(t,n)),this._bridge.connect(`datachannel`,(e,t)=>this._handleDataChannel(t)),this._bridge.connect(`new-transceiver`,(e,t)=>this._handleNewTransceiver(t)),this._bridge.connect(`pad-added`,(e,t)=>this._handlePadAdded(t)),this._bridge.connect(`connection-state-changed`,()=>this._dispatchStateChange(`connectionstatechange`)),this._bridge.connect(`ice-connection-state-changed`,()=>this._dispatchStateChange(`iceconnectionstatechange`)),this._bridge.connect(`ice-gathering-state-changed`,()=>this._dispatchStateChange(`icegatheringstatechange`)),this._bridge.connect(`signaling-state-changed`,()=>this._dispatchStateChange(`signalingstatechange`)),this._pipeline.set_state(n.State.PLAYING)}_applyIceServers(e){let t=!1;for(let n of e){let e=Array.isArray(n.urls)?n.urls:[n.urls];if(e.length===0)throw SyntaxError(`RTCIceServer.urls must not be empty`);for(let r of e){if(typeof r!=`string`||r.length===0)throw TypeError(`RTCIceServer.urls entries must be non-empty strings`);let e=r.indexOf(`:`);if(e<0)throw TypeError(`Invalid ICE server URL "${r}"`);let i=r.slice(0,e+1),a=r.slice(e+1);if(i===`stun:`||i===`stuns:`){if(t)continue;asWebRtcBin(this._webrtcbin).stun_server=`${i}//${a}`,t=!0}else if(i===`turn:`||i===`turns:`){if(typeof n.username!=`string`||typeof n.credential!=`string`)throw TypeError(`TURN server credential for ${r} missing`);let e=`${i}//${encodeURIComponent(n.username)}:${encodeURIComponent(n.credential)}@${a}`;try{this._webrtcbin.emit(`add-turn-server`,e)}catch{asWebRtcBin(this._webrtcbin).turn_server=e}}else throw TypeError(`Unsupported ICE server protocol "${i}"`)}}}_applyIceTransportPolicy(e){if(!e)return;let t=e===`relay`?r.WebRTCICETransportPolicy.RELAY:r.WebRTCICETransportPolicy.ALL;try{asWebRtcBin(this._webrtcbin).ice_transport_policy=t}catch{}}_applyBundlePolicy(e){if(!e)return;let t;switch(e){case`balanced`:t=r.WebRTCBundlePolicy.BALANCED;break;case`max-compat`:t=r.WebRTCBundlePolicy.MAX_COMPAT;break;case`max-bundle`:t=r.WebRTCBundlePolicy.MAX_BUNDLE;break;default:return}try{asWebRtcBin(this._webrtcbin).bundle_policy=t}catch{}}get signalingState(){if(this._closed)return`closed`;try{return gstToSignalingState(asWebRtcBin(this._webrtcbin).signaling_state)}catch{return`stable`}}get connectionState(){if(this._closed)return`closed`;try{return gstToConnectionState(asWebRtcBin(this._webrtcbin).connection_state)}catch{return`new`}}get iceConnectionState(){if(this._closed)return`closed`;try{return gstToIceConnectionState(asWebRtcBin(this._webrtcbin).ice_connection_state)}catch{return`new`}}get iceGatheringState(){try{return gstToIceGatheringState(asWebRtcBin(this._webrtcbin).ice_gathering_state)}catch{return`new`}}_descProp(e){try{let t=asWebRtcBin(this._webrtcbin)[e];return t?I.fromGstDesc(t):null}catch{return null}}get localDescription(){return this._descProp(`local_description`)}get remoteDescription(){return this._descProp(`remote_description`)}get currentLocalDescription(){return this._descProp(`current_local_description`)}get currentRemoteDescription(){return this._descProp(`current_remote_description`)}get pendingLocalDescription(){return this._descProp(`pending_local_description`)}get pendingRemoteDescription(){return this._descProp(`pending_remote_description`)}get sctp(){return this._sctpTransport}get peerIdentity(){return Promise.reject(TypeError(`peerIdentity assertions are not implemented`))}get idpErrorInfo(){return null}get idpLoginUrl(){return null}_rejectIfClosed(e){if(this._closed)throw new E(`RTCPeerConnection.${e}: connection is closed`,`InvalidStateError`)}_setStructureField(e,t,n,r){if(r==null)return;let i=new o.Value;n===`boolean`?(i.init(o.TYPE_BOOLEAN),i.set_boolean(!!r)):n===`int`?(i.init(o.TYPE_INT),i.set_int(Number(r))):n===`string`&&(i.init(o.TYPE_STRING),i.set_string(String(r))),e.set_value(t,i),i.unset()}close(){this._closed||(this._closed=!0,e.idle_add(e.PRIORITY_DEFAULT,()=>{try{this._pipeline.set_state(n.State.NULL)}catch{}for(let e of this._dataChannels.values())try{e._disconnectSignals()}catch{}this._dataChannels.clear();for(let e of this._senders)try{e._teardownPipeline()}catch{}for(let e of this._receivers)try{e._dispose()}catch{}this._transceivers.clear(),this._senders.length=0,this._receivers.length=0,this._dtlsTransport&&this._dtlsTransport._setState(`closed`),this._iceTransport&&this._iceTransport._setState(`closed`),this._sctpTransport&&this._sctpTransport._setState(`closed`);try{this._bridge.dispose_bridge()}catch{}return e.SOURCE_REMOVE}))}getIdentityAssertion(){return Promise.reject(Error(`getIdentityAssertion is not implemented`))}_findNewGstTransceiver(){for(let e=0;;e++){let t=this._webrtcbin.emit(`get-transceiver`,e);if(!t)return null;if(!this._transceivers.has(t))return t}}_ensureTransports(){return this._dtlsTransport||=(this._iceTransport=new RTCIceTransport,new RTCDtlsTransport(this._iceTransport)),this._dtlsTransport}_ensureSctpTransport(){if(this._sctpTransport)return;let e=this._ensureTransports();this._sctpTransport=new RTCSctpTransport(e)}_createTransceiverWrapper(e){let t=`audio`;try{e.kind===r.WebRTCKind.VIDEO&&(t=`video`)}catch{}let n=e.receiver??null,i=e.sender??null,a=new RTCRtpReceiver(t,n,this._pipeline),o=new RTCRtpSender(i,this._pipeline,this._webrtcbin);o._kind=t,o._onPipelineChanged=e=>{this._pipeline=e};let statsDelegate=e=>this.getStats(e);o._getStatsForTrack=statsDelegate,a._getStatsForTrack=statsDelegate;let s=this._ensureTransports();o._transport=s,a._transport=s;try{let t=e.mlineindex;typeof t==`number`&&t>=0&&o._setMlineIndex(t)}catch{}let c=new RTCRtpTransceiver(e,o,a);return o._transceiver=c,this._transceivers.set(e,c),this._senders.push(o),this._receivers.push(a),c}_handleNegotiationNeeded(){let e=new Event(`negotiationneeded`);this._onnegotiationneeded?.call(this,e),this.dispatchEvent(e)}_handleIceCandidate(e,t){let n=new RTCPeerConnectionIceEvent(`icecandidate`,{candidate:new RTCIceCandidate({candidate:t,sdpMLineIndex:e})});this._onicecandidate?.call(this,n),this.dispatchEvent(n)}_handleNewTransceiver(e){this._closed||this._transceivers.has(e)||this._createTransceiverWrapper(e)}_handlePadAdded(e){if(this._closed||e.direction!==n.PadDirection.SRC)return;let t=asWebRtcSrcPad(e).transceiver;if(!t)return;let r=this._transceivers.get(t);r||=this._createTransceiverWrapper(t),r.receiver._connectToPad(e);let i=new Me([r.receiver.track]),a=new RTCTrackEvent(`track`,{receiver:r.receiver,track:r.receiver.track,streams:[i],transceiver:r});this._ontrack?.call(this,a),this.dispatchEvent(a)}_handleDataChannel(e){this._ensureSctpTransport();let t=e.channel,n=this._dataChannels.get(t);n||(n=new RTCDataChannel(e),this._dataChannels.set(t,n),n.addEventListener(`close`,()=>{this._dataChannels.delete(t)}));let r=new RTCDataChannelEvent(`datachannel`,{channel:n});this._ondatachannel?.call(this,r),this.dispatchEvent(r)}_dispatchStateChange(e){e===`connectionstatechange`?this._syncDtlsState():e===`iceconnectionstatechange`?this._syncIceState():e===`icegatheringstatechange`&&this._syncIceGatheringState();let t=new Event(e);switch(e){case`connectionstatechange`:this._onconnectionstatechange?.call(this,t);break;case`iceconnectionstatechange`:this._oniceconnectionstatechange?.call(this,t);break;case`icegatheringstatechange`:this._onicegatheringstatechange?.call(this,t);break;case`signalingstatechange`:this._onsignalingstatechange?.call(this,t);break}this.dispatchEvent(t)}_syncDtlsState(){if(!this._dtlsTransport)return;let e=this.connectionState;this._dtlsTransport._setState({new:`new`,connecting:`connecting`,connected:`connected`,disconnected:`connected`,failed:`failed`,closed:`closed`}[e]??`new`),e===`connected`&&this._sctpTransport&&this._sctpTransport._setState(`connected`)}_syncIceState(){if(!this._iceTransport)return;let e=this.iceConnectionState;this._iceTransport._setState(e)}_syncIceGatheringState(){if(!this._iceTransport)return;let e=this.iceGatheringState;this._iceTransport._setGatheringState(e)}_onconnectionstatechange=null;_ondatachannel=null;_onicecandidate=null;_oniceconnectionstatechange=null;_onicegatheringstatechange=null;_onnegotiationneeded=null;_onsignalingstatechange=null;get onconnectionstatechange(){return this._onconnectionstatechange}set onconnectionstatechange(e){this._onconnectionstatechange=e}get ondatachannel(){return this._ondatachannel}set ondatachannel(e){this._ondatachannel=e}get onicecandidate(){return this._onicecandidate}set onicecandidate(e){this._onicecandidate=e}get oniceconnectionstatechange(){return this._oniceconnectionstatechange}set oniceconnectionstatechange(e){this._oniceconnectionstatechange=e}get onicegatheringstatechange(){return this._onicegatheringstatechange}set onicegatheringstatechange(e){this._onicegatheringstatechange=e}get onnegotiationneeded(){return this._onnegotiationneeded}set onnegotiationneeded(e){this._onnegotiationneeded=e}get onsignalingstatechange(){return this._onsignalingstatechange}set onsignalingstatechange(e){this._onsignalingstatechange=e}_ontrack=null;get ontrack(){return this._ontrack}set ontrack(e){this._ontrack=e}get onicecandidateerror(){return null}set onicecandidateerror(e){}static generateCertificate(e){return generateCertificate(e)}};installSdpNegotiationMethods(RTCPeerConnection$1.prototype),installDataChannelMethods(RTCPeerConnection$1.prototype),installTransceiverMethods(RTCPeerConnection$1.prototype),installTrackMethods(RTCPeerConnection$1.prototype),installStatsAndConfigMethods(RTCPeerConnection$1.prototype);const L=globalThis;L.RTCPeerConnection===void 0&&(L.RTCPeerConnection=RTCPeerConnection$1),L.RTCSessionDescription===void 0&&(L.RTCSessionDescription=I),L.RTCIceCandidate===void 0&&(L.RTCIceCandidate=RTCIceCandidate),L.RTCPeerConnectionIceEvent===void 0&&(L.RTCPeerConnectionIceEvent=RTCPeerConnectionIceEvent);const R=Symbol(`abort`),z=Symbol(`internal`);var at=class AbortSignal extends EventTarget$1{#e=!1;reason=void 0;onabort=null;constructor(e){if(super(),e!==z)throw TypeError(`Illegal constructor.`)}get aborted(){if(!(this instanceof AbortSignal))throw TypeError(`'get aborted' called on an object that is not a valid instance of AbortSignal.`);return this.#e}get[Symbol.toStringTag](){return`AbortSignal`}throwIfAborted(){if(this.#e)throw this.reason}[R](e){if(this.#e)return;this.#e=!0,this.reason=e??new E(`The operation was aborted.`,`AbortError`);let t=new Event$1(`abort`);typeof this.onabort==`function`&&this.onabort.call(this,t),this.dispatchEvent(t)}static abort(e){let t=new AbortSignal(z);return t[R](e),t}static timeout(e){let t=new AbortSignal(z);return setTimeout(()=>{t[R](new E(`The operation timed out.`,`TimeoutError`))},e),t}static any(e){let t=new AbortSignal(z);for(let n of e)if(n.aborted)return t[R](n.reason),t;let onAbort=()=>{if(!t.aborted){let n=e.find(e=>e.aborted);t[R](n?.reason)}};for(let t of e)t.addEventListener(`abort`,onAbort,{once:!0});return t}},ot=class AbortController{signal;constructor(){this.signal=new at(z)}abort(e){if(!(this instanceof AbortController))throw TypeError(`'abort' called on an object that is not a valid instance of AbortController.`);this.signal[R](e)}};const st=globalThis;globalThis.AbortController===void 0&&(st.AbortController=ot),globalThis.AbortSignal===void 0&&(st.AbortSignal=at);const ct={CustomEvent,MessageEvent:MessageEvent$1,ErrorEvent,CloseEvent,ProgressEvent};for(let[e,t]of Object.entries(ct))globalThis[e]===void 0&&Object.defineProperty(globalThis,e,{value:t,writable:!0,configurable:!0});const B=Symbol(`kState`),V=Symbol(`kType`);function isBrandCheck(e){return t=>typeof t==`object`&&!!t&&t[B]!==void 0&&t[V]===e}function dequeueValue(e){let t=e[B].queue.shift();if(t===void 0)throw Error(`dequeueValue called on an empty queue`);let{value:n,size:r}=t;return e[B].queueTotalSize=Math.max(0,e[B].queueTotalSize-r),n}function resetQueue(e){e[B].queue=[],e[B].queueTotalSize=0}function peekQueueValue(e){return e[B].queue[0].value}function enqueueValueWithSize(e,t,n){if(n=+n,typeof n!=`number`||n<0||Number.isNaN(n)||n===1/0)throw RangeError(`Invalid size: ${n}`);e[B].queue.push({value:t,size:n}),e[B].queueTotalSize+=n}function extractHighWaterMark(e,t){if(e===void 0)return t;if(e=+e,typeof e!=`number`||Number.isNaN(e)||e<0)throw RangeError(`Invalid highWaterMark: ${e}`);return e}function extractSizeAlgorithm(e){if(e===void 0)return()=>1;if(typeof e!=`function`)throw TypeError(`strategy.size must be a function`);return e}function transferArrayBuffer(e){return typeof ArrayBuffer.prototype.transfer==`function`?e.transfer():e.slice(0)}function isDetachedBuffer(e){if(typeof SharedArrayBuffer<`u`&&e instanceof SharedArrayBuffer||e.byteLength!==0)return!1;try{return e.slice(0,0),!1}catch{return!0}}function typedArrayConstructorByTag(e){switch(e){case`Int8Array`:return Int8Array;case`Uint8Array`:return Uint8Array;case`Uint8ClampedArray`:return Uint8ClampedArray;case`Int16Array`:return Int16Array;case`Uint16Array`:return Uint16Array;case`Int32Array`:return Int32Array;case`Uint32Array`:return Uint32Array;case`Float32Array`:return Float32Array;case`Float64Array`:return Float64Array;case`BigInt64Array`:return typeof BigInt64Array<`u`?BigInt64Array:void 0;case`BigUint64Array`:return typeof BigUint64Array<`u`?BigUint64Array:void 0;default:return}}function elementSizeByTag(e){switch(e){case`Int8Array`:case`Uint8Array`:case`Uint8ClampedArray`:return 1;case`Int16Array`:case`Uint16Array`:return 2;case`Int32Array`:case`Uint32Array`:case`Float32Array`:return 4;case`Float64Array`:case`BigInt64Array`:case`BigUint64Array`:return 8;default:return 1}}function setPromiseHandled(e){e.then(()=>{},()=>{})}function createPromiseCallback(e,t,n){if(typeof t!=`function`)throw TypeError(`${e} must be a function`);return async(...e)=>t.call(n,...e)}async function nonOpFlush(){}function nonOpStart(){}async function nonOpPull(){}async function nonOpCancel(){}async function nonOpWrite(){}const lt={__proto__:Object.getPrototypeOf(Object.getPrototypeOf(async function*(){}).prototype),next:void 0,return:void 0};function createAsyncFromSyncIterator(e){let t={[Symbol.iterator]:()=>e.iterator},n=(async function*(){return yield*t})();return{iterator:n,nextMethod:n.next,done:!1}}function getIterator(e,t=`sync`,n){if(n===void 0)if(t===`async`){if(n=e[Symbol.asyncIterator],n==null){let t=e[Symbol.iterator];if(t===void 0)throw TypeError(`Object is not iterable`);return createAsyncFromSyncIterator(getIterator(e,`sync`,t))}}else n=e[Symbol.iterator];if(n===void 0)throw TypeError(`Object is not iterable`);let r=n.call(e);if(typeof r!=`object`||!r)throw TypeError(`The iterator method must return an object`);return{iterator:r,nextMethod:r.next,done:!1}}function iteratorNext(e,t){let n;if(n=t===void 0?e.nextMethod.call(e.iterator):e.nextMethod.call(e.iterator,t),typeof n!=`object`||!n)throw TypeError(`The iterator.next() method must return an object`);return n}const ut=typeof globalThis.AbortController==`function`?globalThis.AbortController:class AbortControllerShim{signal={aborted:!1,reason:void 0,addEventListener(){},removeEventListener(){}};abort(e){this.signal.aborted=!0,this.signal.reason=e}},dt=Symbol(`kAbort`),ft=Symbol(`kCloseSentinel`),pt=Symbol(`kError`),mt=Symbol(`kSkipThrow`);var WritableStream=class{[V]=`WritableStream`;[B];constructor(e={},t={}){if(e!=null&&typeof e!=`object`)throw TypeError(`sink must be an object`);if(t!=null&&typeof t!=`object`)throw TypeError(`strategy must be an object`);let n=e?.type;if(n!==void 0)throw RangeError(`Invalid type: ${n}`);this[B]=createWritableStreamState();let r=extractSizeAlgorithm(t?.size),i=extractHighWaterMark(t?.highWaterMark,1);setupWritableStreamDefaultControllerFromSink(this,e,i,r)}get locked(){if(!H(this))throw TypeError(`Invalid this`);return isWritableStreamLocked(this)}abort(e){return H(this)?isWritableStreamLocked(this)?Promise.reject(TypeError(`WritableStream is locked`)):writableStreamAbort(this,e):Promise.reject(TypeError(`Invalid this`))}close(){return H(this)?isWritableStreamLocked(this)?Promise.reject(TypeError(`WritableStream is locked`)):writableStreamCloseQueuedOrInFlight(this)?Promise.reject(TypeError(`Failure closing WritableStream`)):writableStreamClose(this):Promise.reject(TypeError(`Invalid this`))}getWriter(){if(!H(this))throw TypeError(`Invalid this`);return new WritableStreamDefaultWriter(this)}get[Symbol.toStringTag](){return`WritableStream`}},WritableStreamDefaultWriter=class{[V]=`WritableStreamDefaultWriter`;[B];constructor(e){if(!H(e))throw TypeError(`Expected a WritableStream`);this[B]={stream:void 0,close:{promise:void 0,resolve:void 0,reject:void 0},ready:{promise:void 0,resolve:void 0,reject:void 0}},setupWritableStreamDefaultWriter(this,e)}get closed(){return U(this)?this[B].close.promise:Promise.reject(TypeError(`Invalid this`))}get desiredSize(){if(!U(this))throw TypeError(`Invalid this`);if(this[B].stream===void 0)throw TypeError(`Writer is not bound to a WritableStream`);return writableStreamDefaultWriterGetDesiredSize(this)}get ready(){return U(this)?this[B].ready.promise:Promise.reject(TypeError(`Invalid this`))}abort(e){return U(this)?this[B].stream===void 0?Promise.reject(TypeError(`Writer is not bound to a WritableStream`)):writableStreamDefaultWriterAbort(this,e):Promise.reject(TypeError(`Invalid this`))}close(){if(!U(this))return Promise.reject(TypeError(`Invalid this`));let{stream:e}=this[B];return e===void 0?Promise.reject(TypeError(`Writer is not bound to a WritableStream`)):writableStreamCloseQueuedOrInFlight(e)?Promise.reject(TypeError(`Failure to close WritableStream`)):writableStreamDefaultWriterClose(this)}releaseLock(){if(!U(this))throw TypeError(`Invalid this`);let{stream:e}=this[B];e!==void 0&&writableStreamDefaultWriterRelease(this)}write(e){return U(this)?this[B].stream===void 0?Promise.reject(TypeError(`Writer is not bound to a WritableStream`)):writableStreamDefaultWriterWrite(this,e):Promise.reject(TypeError(`Invalid this`))}get[Symbol.toStringTag](){return`WritableStreamDefaultWriter`}},WritableStreamDefaultController=class{[V]=`WritableStreamDefaultController`;[B];constructor(e){if(e!==mt)throw TypeError(`Illegal constructor`)}[dt](e){let t=this[B].abortAlgorithm(e);return writableStreamDefaultControllerClearAlgorithms(this),t}[pt](){resetQueue(this)}get signal(){if(!ht(this))throw TypeError(`Invalid this`);return this[B].abortController.signal}error(e){if(!ht(this))throw TypeError(`Invalid this`);this[B].stream[B].state===`writable`&&writableStreamDefaultControllerError(this,e)}get[Symbol.toStringTag](){return`WritableStreamDefaultController`}};const H=isBrandCheck(`WritableStream`),U=isBrandCheck(`WritableStreamDefaultWriter`),ht=isBrandCheck(`WritableStreamDefaultController`);function createEmptyPromiseRecord(){return{promise:void 0,resolve:void 0,reject:void 0}}function createWritableStreamState(){return{close:Promise.withResolvers(),closeRequest:createEmptyPromiseRecord(),inFlightWriteRequest:createEmptyPromiseRecord(),inFlightCloseRequest:createEmptyPromiseRecord(),pendingAbortRequest:{abort:createEmptyPromiseRecord(),reason:void 0,wasAlreadyErroring:!1},backpressure:!1,controller:void 0,state:`writable`,storedError:void 0,writeRequests:[],writer:void 0}}function isWritableStreamLocked(e){return e[B].writer!==void 0}function setupWritableStreamDefaultWriter(e,t){if(isWritableStreamLocked(t))throw TypeError(`WritableStream is locked`);switch(e[B].stream=t,t[B].writer=e,t[B].state){case`writable`:!writableStreamCloseQueuedOrInFlight(t)&&t[B].backpressure?e[B].ready=Promise.withResolvers():e[B].ready={promise:Promise.resolve(),resolve:void 0,reject:void 0},e[B].close=Promise.withResolvers();break;case`erroring`:e[B].ready={promise:Promise.reject(t[B].storedError),resolve:void 0,reject:void 0},setPromiseHandled(e[B].ready.promise),e[B].close=Promise.withResolvers();break;case`closed`:e[B].ready={promise:Promise.resolve(),resolve:void 0,reject:void 0},e[B].close={promise:Promise.resolve(),resolve:void 0,reject:void 0};break;default:e[B].ready={promise:Promise.reject(t[B].storedError),resolve:void 0,reject:void 0},e[B].close={promise:Promise.reject(t[B].storedError),resolve:void 0,reject:void 0},setPromiseHandled(e[B].ready.promise),setPromiseHandled(e[B].close.promise)}}function writableStreamAbort(e,t){let{state:n,controller:r}=e[B];if(n===`closed`||n===`errored`)return Promise.resolve();if(r[B].abortController.abort(t),e[B].pendingAbortRequest.abort.promise!==void 0)return e[B].pendingAbortRequest.abort.promise;let i=!1;n===`erroring`&&(i=!0,t=void 0);let a=Promise.withResolvers();return e[B].pendingAbortRequest={abort:a,reason:t,wasAlreadyErroring:i},i||writableStreamStartErroring(e,t),a.promise}function writableStreamClose(e){let{state:t,writer:n,backpressure:r,controller:i}=e[B];if(t===`closed`||t===`errored`)return Promise.reject(TypeError(`WritableStream is closed`));e[B].closeRequest=Promise.withResolvers();let{promise:a}=e[B].closeRequest;return n!==void 0&&r&&t===`writable`&&n[B].ready.resolve?.(),writableStreamDefaultControllerClose(i),a}function writableStreamUpdateBackpressure(e,t){let{writer:n}=e[B];n!==void 0&&e[B].backpressure!==t&&(t?n[B].ready=Promise.withResolvers():n[B].ready.resolve?.()),e[B].backpressure=t}function writableStreamStartErroring(e,t){let{controller:n,writer:r}=e[B];e[B].state=`erroring`,e[B].storedError=t,r!==void 0&&writableStreamDefaultWriterEnsureReadyPromiseRejected(r,t),!writableStreamHasOperationMarkedInFlight(e)&&n[B].started&&writableStreamFinishErroring(e)}function writableStreamRejectCloseAndClosedPromiseIfNeeded(e){e[B].closeRequest.promise!==void 0&&(e[B].closeRequest.reject?.(e[B].storedError),e[B].closeRequest={promise:void 0,resolve:void 0,reject:void 0}),setPromiseHandled(e[B].close.promise),e[B].close.reject?.(e[B].storedError);let{writer:t}=e[B];t!==void 0&&(setPromiseHandled(t[B].close.promise),t[B].close.reject?.(e[B].storedError))}function writableStreamMarkFirstWriteRequestInFlight(e){let t=e[B].writeRequests.shift();e[B].inFlightWriteRequest=t}function writableStreamMarkCloseRequestInFlight(e){e[B].inFlightCloseRequest=e[B].closeRequest,e[B].closeRequest={promise:void 0,resolve:void 0,reject:void 0}}function writableStreamHasOperationMarkedInFlight(e){return e[B].inFlightWriteRequest.promise!==void 0||e[B].inFlightCloseRequest.promise!==void 0}function writableStreamFinishInFlightWriteWithError(e,t){e[B].inFlightWriteRequest.reject?.(t),e[B].inFlightWriteRequest={promise:void 0,resolve:void 0,reject:void 0},writableStreamDealWithRejection(e,t)}function writableStreamFinishInFlightWrite(e){e[B].inFlightWriteRequest.resolve?.(),e[B].inFlightWriteRequest={promise:void 0,resolve:void 0,reject:void 0}}function writableStreamFinishInFlightCloseWithError(e,t){e[B].inFlightCloseRequest.reject?.(t),e[B].inFlightCloseRequest={promise:void 0,resolve:void 0,reject:void 0},e[B].pendingAbortRequest.abort.promise!==void 0&&(e[B].pendingAbortRequest.abort.reject?.(t),e[B].pendingAbortRequest={abort:{promise:void 0,resolve:void 0,reject:void 0},reason:void 0,wasAlreadyErroring:!1}),writableStreamDealWithRejection(e,t)}function writableStreamFinishInFlightClose(e){e[B].inFlightCloseRequest.resolve?.(),e[B].inFlightCloseRequest={promise:void 0,resolve:void 0,reject:void 0},e[B].state===`erroring`&&(e[B].storedError=void 0,e[B].pendingAbortRequest.abort.promise!==void 0&&(e[B].pendingAbortRequest.abort.resolve?.(),e[B].pendingAbortRequest={abort:{promise:void 0,resolve:void 0,reject:void 0},reason:void 0,wasAlreadyErroring:!1})),e[B].state=`closed`,e[B].writer!==void 0&&e[B].writer[B].close.resolve?.(),e[B].close.resolve?.()}function writableStreamFinishErroring(e){e[B].state=`errored`,e[B].controller[pt]();let t=e[B].storedError;for(let n of e[B].writeRequests)n.reject?.(t);if(e[B].writeRequests=[],e[B].pendingAbortRequest.abort.promise===void 0){writableStreamRejectCloseAndClosedPromiseIfNeeded(e);return}let n=e[B].pendingAbortRequest;if(e[B].pendingAbortRequest={abort:{promise:void 0,resolve:void 0,reject:void 0},reason:void 0,wasAlreadyErroring:!1},n.wasAlreadyErroring){n.abort.reject?.(t),writableStreamRejectCloseAndClosedPromiseIfNeeded(e);return}e[B].controller[dt](n.reason).then(()=>{n.abort.resolve?.(),writableStreamRejectCloseAndClosedPromiseIfNeeded(e)},t=>{n.abort.reject?.(t),writableStreamRejectCloseAndClosedPromiseIfNeeded(e)})}function writableStreamDealWithRejection(e,t){if(e[B].state===`writable`){writableStreamStartErroring(e,t);return}writableStreamFinishErroring(e)}function writableStreamCloseQueuedOrInFlight(e){return e[B].closeRequest.promise!==void 0||e[B].inFlightCloseRequest.promise!==void 0}function writableStreamAddWriteRequest(e){let{promise:t,resolve:n,reject:r}=Promise.withResolvers();return e[B].writeRequests.push({promise:t,resolve:n,reject:r}),t}function writableStreamDefaultWriterWrite(e,t){let{stream:n}=e[B],{controller:r}=n[B],i=writableStreamDefaultControllerGetChunkSize(r,t);if(n!==e[B].stream)return Promise.reject(TypeError(`Mismatched WritableStreams`));let{state:a}=n[B];if(a===`errored`)return Promise.reject(n[B].storedError);if(writableStreamCloseQueuedOrInFlight(n)||a===`closed`)return Promise.reject(TypeError(`WritableStream is closed`));if(a===`erroring`)return Promise.reject(n[B].storedError);let o=writableStreamAddWriteRequest(n);return writableStreamDefaultControllerWrite(r,t,i),o}function writableStreamDefaultWriterRelease(e){let{stream:t}=e[B],n=TypeError(`Writer has been released`);writableStreamDefaultWriterEnsureReadyPromiseRejected(e,n),writableStreamDefaultWriterEnsureClosedPromiseRejected(e,n),t[B].writer=void 0,e[B].stream=void 0}function writableStreamDefaultWriterGetDesiredSize(e){let{stream:t}=e[B];switch(t[B].state){case`errored`:case`erroring`:return null;case`closed`:return 0}return writableStreamDefaultControllerGetDesiredSize(t[B].controller)}function writableStreamDefaultWriterEnsureReadyPromiseRejected(e,t){e[B].ready.reject?(e[B].ready.reject(t),e[B].ready.resolve=void 0,e[B].ready.reject=void 0):e[B].ready={promise:Promise.reject(t),resolve:void 0,reject:void 0},setPromiseHandled(e[B].ready.promise)}function writableStreamDefaultWriterEnsureClosedPromiseRejected(e,t){e[B].close.reject?(e[B].close.reject(t),e[B].close.resolve=void 0,e[B].close.reject=void 0):e[B].close={promise:Promise.reject(t),resolve:void 0,reject:void 0},setPromiseHandled(e[B].close.promise)}function writableStreamDefaultWriterCloseWithErrorPropagation(e){let{stream:t}=e[B],{state:n}=t[B];return writableStreamCloseQueuedOrInFlight(t)||n===`closed`?Promise.resolve():n===`errored`?Promise.reject(t[B].storedError):writableStreamDefaultWriterClose(e)}function writableStreamDefaultWriterClose(e){return writableStreamClose(e[B].stream)}function writableStreamDefaultWriterAbort(e,t){return writableStreamAbort(e[B].stream,t)}function writableStreamDefaultControllerWrite(e,t,n){try{enqueueValueWithSize(e,t,n)}catch(t){writableStreamDefaultControllerErrorIfNeeded(e,t);return}let{stream:r}=e[B];!writableStreamCloseQueuedOrInFlight(r)&&r[B].state===`writable`&&writableStreamUpdateBackpressure(r,writableStreamDefaultControllerGetBackpressure(e)),writableStreamDefaultControllerAdvanceQueueIfNeeded(e)}function writableStreamDefaultControllerProcessWrite(e,t){let{stream:n,writeAlgorithm:r}=e[B];writableStreamMarkFirstWriteRequestInFlight(n),r(t,e).then(()=>{writableStreamFinishInFlightWrite(n);let{state:t}=n[B];dequeueValue(e),!writableStreamCloseQueuedOrInFlight(n)&&t===`writable`&&writableStreamUpdateBackpressure(n,writableStreamDefaultControllerGetBackpressure(e)),writableStreamDefaultControllerAdvanceQueueIfNeeded(e)},t=>{n[B].state===`writable`&&writableStreamDefaultControllerClearAlgorithms(e),writableStreamFinishInFlightWriteWithError(n,t)})}function writableStreamDefaultControllerProcessClose(e){let{closeAlgorithm:t,stream:n}=e[B];writableStreamMarkCloseRequestInFlight(n),dequeueValue(e);let r=t();writableStreamDefaultControllerClearAlgorithms(e),r.then(()=>writableStreamFinishInFlightClose(n),e=>writableStreamFinishInFlightCloseWithError(n,e))}function writableStreamDefaultControllerGetDesiredSize(e){return e[B].highWaterMark-e[B].queueTotalSize}function writableStreamDefaultControllerGetChunkSize(e,t){let{sizeAlgorithm:n}=e[B];if(n===void 0)return 1;try{return n(t)}catch(t){return writableStreamDefaultControllerErrorIfNeeded(e,t),1}}function writableStreamDefaultControllerErrorIfNeeded(e,t){e[B].stream[B].state===`writable`&&writableStreamDefaultControllerError(e,t)}function writableStreamDefaultControllerError(e,t){writableStreamDefaultControllerClearAlgorithms(e),writableStreamStartErroring(e[B].stream,t)}function writableStreamDefaultControllerClose(e){enqueueValueWithSize(e,ft,0),writableStreamDefaultControllerAdvanceQueueIfNeeded(e)}function writableStreamDefaultControllerClearAlgorithms(e){e[B].writeAlgorithm=void 0,e[B].closeAlgorithm=void 0,e[B].abortAlgorithm=void 0,e[B].sizeAlgorithm=void 0}function writableStreamDefaultControllerGetBackpressure(e){return writableStreamDefaultControllerGetDesiredSize(e)<=0}function writableStreamDefaultControllerAdvanceQueueIfNeeded(e){let{queue:t,started:n,stream:r}=e[B];if(!n||r[B].inFlightWriteRequest.promise!==void 0)return;if(r[B].state===`erroring`){writableStreamFinishErroring(r);return}if(!t.length)return;let i=peekQueueValue(e);i===ft?writableStreamDefaultControllerProcessClose(e):writableStreamDefaultControllerProcessWrite(e,i)}function setupWritableStreamDefaultControllerFromSink(e,t,n,r){let i=new WritableStreamDefaultController(mt),a=t?.start,o=t?.write,s=t?.close,c=t?.abort;setupWritableStreamDefaultController(e,i,a?a.bind(t,i):nonOpStart,o?createPromiseCallback(`sink.write`,o,t):nonOpWrite,s?createPromiseCallback(`sink.close`,s,t):nonOpCancel,c?createPromiseCallback(`sink.abort`,c,t):nonOpCancel,n,r)}function setupWritableStreamDefaultController(e,t,n,r,i,a,o,s){t[B]={abortAlgorithm:a,closeAlgorithm:i,highWaterMark:o,queue:[],queueTotalSize:0,abortController:new ut,sizeAlgorithm:s,started:!1,stream:e,writeAlgorithm:r},e[B].controller=t,writableStreamUpdateBackpressure(e,writableStreamDefaultControllerGetBackpressure(t));let c=n();new Promise(e=>e(c)).then(()=>{t[B].started=!0,writableStreamDefaultControllerAdvanceQueueIfNeeded(t)},n=>{t[B].started=!0,writableStreamDealWithRejection(e,n)})}function createWritableStream(e,t,n,r,i=1,a=()=>1){let o=Object.create(WritableStream.prototype);return o[V]=`WritableStream`,o[B]=createWritableStreamState(),setupWritableStreamDefaultController(o,new WritableStreamDefaultController(mt),e,t,n,r,i,a),o}const gt=Symbol(`kCancel`),W=Symbol(`kClose`),G=Symbol(`kChunk`),K=Symbol(`kError`),_t=Symbol(`kPull`),vt=Symbol(`kRelease`),q=Symbol(`kSkipThrow`);let yt,bt;function lazyReadableReleasedError(){return yt||(yt=TypeError(`Reader released`),yt)}function lazyReadableReleasingError(){return bt||(bt=TypeError(`Releasing reader`),bt)}function createAbortError(){if(typeof globalThis.DOMException==`function`)return new DOMException(`The operation was aborted`,`AbortError`);let e=Error(`The operation was aborted`);return e.name=`AbortError`,e}function createReadableStreamState(){return{disturbed:!1,reader:void 0,state:`readable`,storedError:void 0,controller:void 0,closedPromise:Promise.withResolvers()}}var ReadableStream$1=class{static{__name(this,`ReadableStream`)}[V]=`ReadableStream`;[B];constructor(e={},t={}){if(e!=null&&typeof e!=`object`)throw TypeError(`source must be an object`);if(t!=null&&typeof t!=`object`)throw TypeError(`strategy must be an object`);this[B]=createReadableStreamState();let n=t?.size,r=t?.highWaterMark,i=e?.type;if(i!==void 0){if(`${i}`==`bytes`){if(n!==void 0)throw RangeError(`strategy.size must not be set for a byte stream`);setupReadableByteStreamControllerFromSource(this,e,extractHighWaterMark(r,0));return}throw RangeError(`Invalid type: ${i}`)}setupReadableStreamDefaultControllerFromSource(this,e,extractHighWaterMark(r,1),extractSizeAlgorithm(n))}get locked(){if(!J(this))throw TypeError(`Invalid this`);return isReadableStreamLocked(this)}static from(e){return readableStreamFromIterable(e)}cancel(e=void 0){return J(this)?isReadableStreamLocked(this)?Promise.reject(TypeError(`ReadableStream is locked`)):readableStreamCancel(this,e):Promise.reject(TypeError(`Invalid this`))}getReader(e={}){if(!J(this))throw TypeError(`Invalid this`);if(e!=null&&typeof e!=`object`)throw TypeError(`options must be an object`);let t=e?.mode;if(t===void 0)return new ReadableStreamDefaultReader(this);if(`${t}`==`byob`)return new ReadableStreamBYOBReader(this);throw RangeError(`Invalid mode: ${t}`)}pipeThrough(e,t={}){if(!J(this))throw TypeError(`Invalid this`);let n=e?.readable;if(!J(n))throw TypeError(`transform.readable must be a ReadableStream`);let r=e?.writable;if(!H(r))throw TypeError(`transform.writable must be a WritableStream`);if(t!=null&&typeof t!=`object`)throw TypeError(`options must be an object`);let i=t?.preventAbort,a=t?.preventCancel,o=t?.preventClose,s=t?.signal;if(s!==void 0&&!(s instanceof Object&&`aborted`in s))throw TypeError(`options.signal must be an AbortSignal`);if(isReadableStreamLocked(this))throw TypeError(`The ReadableStream is locked`);if(isWritableStreamLocked(r))throw TypeError(`The WritableStream is locked`);return setPromiseHandled(readableStreamPipeTo(this,r,!!o,!!i,!!a,s)),n}pipeTo(e,t={}){try{if(!J(this))throw TypeError(`Invalid this`);if(!H(e))throw TypeError(`destination must be a WritableStream`);if(t!=null&&typeof t!=`object`)throw TypeError(`options must be an object`);let n=t?.preventAbort,r=t?.preventCancel,i=t?.preventClose,a=t?.signal;if(a!==void 0&&!(a instanceof Object&&`aborted`in a))throw TypeError(`options.signal must be an AbortSignal`);if(isReadableStreamLocked(this))throw TypeError(`The ReadableStream is locked`);if(isWritableStreamLocked(e))throw TypeError(`The WritableStream is locked`);return readableStreamPipeTo(this,e,!!i,!!n,!!r,a)}catch(e){return Promise.reject(e)}}tee(){if(!J(this))throw TypeError(`Invalid this`);let e=this[B].controller;return X(e)?readableByteStreamTee(this):readableStreamDefaultTee(this,!1)}values(e={}){if(!J(this))throw TypeError(`Invalid this`);if(e!=null&&typeof e!=`object`)throw TypeError(`options must be an object`);let t=!!e?.preventCancel,n=new ReadableStreamDefaultReader(this),r={done:!1,current:void 0},i=!1;function nextSteps(){if(r.done)return Promise.resolve({done:!0,value:void 0});if(n[B].stream===void 0)return Promise.reject(TypeError(`The reader is not bound to a ReadableStream`));let{promise:e,resolve:t,reject:i}=Promise.withResolvers();return readableStreamDefaultReaderRead(n,{[G](e){r.current=void 0,t({value:e,done:!1})},[W](){r.current=void 0,r.done=!0,readableStreamReaderGenericRelease(n),t({done:!0,value:void 0})},[K](e){r.current=void 0,r.done=!0,readableStreamReaderGenericRelease(n),i(e)}}),e}async function returnSteps(e){if(r.done)return{done:!0,value:e};if(r.done=!0,n[B].stream===void 0)throw TypeError(`The reader is not bound to a ReadableStream`);if(!t){let t=readableStreamReaderGenericCancel(n,e);return readableStreamReaderGenericRelease(n),await t,{done:!0,value:e}}return readableStreamReaderGenericRelease(n),{done:!0,value:e}}return Object.setPrototypeOf({next(){return i||=(r.current=Promise.resolve(),!0),r.current=r.current===void 0?nextSteps():r.current.then(nextSteps,nextSteps),r.current},return(e){return i=!0,r.current=r.current===void 0?returnSteps(e):r.current.then(()=>returnSteps(e),()=>returnSteps(e)),r.current},[Symbol.asyncIterator](){return this}},lt)}[Symbol.asyncIterator](){return this.values()}get[Symbol.toStringTag](){return`ReadableStream`}},DefaultReadRequest=class{[B];constructor(){this[B]=Promise.withResolvers()}[G](e){this[B].resolve?.({value:e,done:!1})}[W](){this[B].resolve?.({value:void 0,done:!0})}[K](e){this[B].reject?.(e)}get promise(){return this[B].promise}},ReadableStreamDefaultReader=class{[V]=`ReadableStreamDefaultReader`;[B];constructor(e){if(!J(e))throw TypeError(`Expected a ReadableStream`);this[B]={readRequests:[],readIntoRequests:[],stream:void 0,close:{promise:void 0,resolve:void 0,reject:void 0}},setupReadableStreamDefaultReader(this,e)}read(){if(!Y(this))return Promise.reject(TypeError(`Invalid this`));if(this[B].stream===void 0)return Promise.reject(TypeError(`The reader is not attached to a stream`));let e=this[B].stream,t=e[B].controller;if(e[B].state===`readable`&&xt(t)&&t[B].queue.length>0){e[B].disturbed=!0;let n=dequeueValue(t);return t[B].closeRequested&&!t[B].queue.length?(readableStreamDefaultControllerClearAlgorithms(t),readableStreamClose(e)):readableStreamDefaultControllerCallPullIfNeeded(t),Promise.resolve({value:n,done:!1})}let n=new DefaultReadRequest;return readableStreamDefaultReaderRead(this,n),n.promise}releaseLock(){if(!Y(this))throw TypeError(`Invalid this`);this[B].stream!==void 0&&readableStreamDefaultReaderRelease(this)}get closed(){return Y(this)?this[B].close.promise:Promise.reject(TypeError(`Invalid this`))}cancel(e=void 0){return Y(this)?this[B].stream===void 0?Promise.reject(TypeError(`The reader is not attached to a stream`)):readableStreamReaderGenericCancel(this,e):Promise.reject(TypeError(`Invalid this`))}get[Symbol.toStringTag](){return`ReadableStreamDefaultReader`}},ReadableStreamDefaultController=class{[V]=`ReadableStreamDefaultController`;[B];constructor(e){if(e!==q)throw TypeError(`Illegal constructor`)}get desiredSize(){return readableStreamDefaultControllerGetDesiredSize(this)}close(){if(!readableStreamDefaultControllerCanCloseOrEnqueue(this))throw TypeError(`Controller is already closed`);readableStreamDefaultControllerClose(this)}enqueue(e=void 0){if(!readableStreamDefaultControllerCanCloseOrEnqueue(this))throw TypeError(`Controller is already closed`);readableStreamDefaultControllerEnqueue(this,e)}error(e=void 0){readableStreamDefaultControllerError(this,e)}[gt](e){return readableStreamDefaultControllerCancelSteps(this,e)}[_t](e){readableStreamDefaultControllerPullSteps(this,e)}[vt](){}get[Symbol.toStringTag](){return`ReadableStreamDefaultController`}};const J=isBrandCheck(`ReadableStream`),xt=isBrandCheck(`ReadableStreamDefaultController`),Y=isBrandCheck(`ReadableStreamDefaultReader`);function isReadableStreamLocked(e){return e[B].reader!==void 0}function readableStreamCancel(e,t){switch(e[B].disturbed=!0,e[B].state){case`closed`:return Promise.resolve();case`errored`:return Promise.reject(e[B].storedError)}readableStreamClose(e);let n=e[B].reader;if(n!==void 0&&readableStreamHasBYOBReader(e)){let e=n[B].readIntoRequests;n[B].readIntoRequests=[];for(let t=0;t<e.length;t++)e[t][W](void 0)}return e[B].controller[gt](t).then(()=>{})}function readableStreamClose(e){e[B].state=`closed`,e[B].closedPromise.resolve();let{reader:t}=e[B];if(t!==void 0&&(t[B].close.resolve?.(),readableStreamHasDefaultReader(e))){for(let e=0;e<t[B].readRequests.length;e++)t[B].readRequests[e][W]();t[B].readRequests=[]}}function readableStreamError(e,t){e[B].state=`errored`,e[B].storedError=t,setPromiseHandled(e[B].closedPromise.promise),e[B].closedPromise.reject(t);let{reader:n}=e[B];if(n!==void 0){if(setPromiseHandled(n[B].close.promise),n[B].close.reject?.(t),readableStreamHasDefaultReader(e)){for(let e=0;e<n[B].readRequests.length;e++)n[B].readRequests[e][K](t);n[B].readRequests=[]}else if(readableStreamHasBYOBReader(e)){for(let e=0;e<n[B].readIntoRequests.length;e++)n[B].readIntoRequests[e][K](t);n[B].readIntoRequests=[]}}}function readableStreamHasDefaultReader(e){let{reader:t}=e[B];return t===void 0?!1:t[B]!==void 0&&t[V]===`ReadableStreamDefaultReader`}function readableStreamGetNumReadRequests(e){return e[B].reader[B].readRequests.length}function readableStreamFulfillReadRequest(e,t,n){let{reader:r}=e[B],i=r[B].readRequests.shift();n?i[W]():i[G](t)}function readableStreamAddReadRequest(e,t){e[B].reader[B].readRequests.push(t)}function readableStreamReaderGenericCancel(e,t){let{stream:n}=e[B];return readableStreamCancel(n,t)}function readableStreamReaderGenericInitialize(e,t){switch(e[B].stream=t,t[B].reader=e,t[B].state){case`readable`:e[B].close=Promise.withResolvers();break;case`closed`:e[B].close={promise:Promise.resolve(),resolve:void 0,reject:void 0};break;case`errored`:e[B].close={promise:Promise.reject(t[B].storedError),resolve:void 0,reject:void 0},setPromiseHandled(e[B].close.promise);break}}function readableStreamReaderGenericRelease(e){let{stream:t}=e[B],n=lazyReadableReleasedError();t[B].state===`readable`?e[B].close.reject?.(n):e[B].close={promise:Promise.reject(n),resolve:void 0,reject:void 0},setPromiseHandled(e[B].close.promise),t[B].controller[vt](),t[B].reader=void 0,e[B].stream=void 0}function readableStreamDefaultReaderRelease(e){readableStreamReaderGenericRelease(e),readableStreamDefaultReaderErrorReadRequests(e,lazyReadableReleasingError())}function readableStreamDefaultReaderErrorReadRequests(e,t){for(let n=0;n<e[B].readRequests.length;++n)e[B].readRequests[n][K](t);e[B].readRequests=[]}function readableStreamDefaultReaderRead(e,t){let{stream:n}=e[B];switch(n[B].disturbed=!0,n[B].state){case`closed`:t[W]();break;case`errored`:t[K](n[B].storedError);break;case`readable`:n[B].controller[_t](t);break}}function setupReadableStreamDefaultReader(e,t){if(isReadableStreamLocked(t))throw TypeError(`ReadableStream is locked`);readableStreamReaderGenericInitialize(e,t),e[B].readRequests=[]}function readableStreamDefaultControllerClose(e){readableStreamDefaultControllerCanCloseOrEnqueue(e)&&(e[B].closeRequested=!0,e[B].queue.length||(readableStreamDefaultControllerClearAlgorithms(e),readableStreamClose(e[B].stream)))}function readableStreamDefaultControllerEnqueue(e,t){if(!readableStreamDefaultControllerCanCloseOrEnqueue(e))return;let{stream:n}=e[B];if(isReadableStreamLocked(n)&&readableStreamGetNumReadRequests(n))readableStreamFulfillReadRequest(n,t,!1);else try{enqueueValueWithSize(e,t,e[B].sizeAlgorithm(t))}catch(t){throw readableStreamDefaultControllerError(e,t),t}readableStreamDefaultControllerCallPullIfNeeded(e)}function readableStreamDefaultControllerCanCloseOrEnqueue(e){let{stream:t}=e[B];return!e[B].closeRequested&&t[B].state===`readable`}function readableStreamDefaultControllerGetDesiredSize(e){let{stream:t,highWaterMark:n,queueTotalSize:r}=e[B];switch(t[B].state){case`errored`:return null;case`closed`:return 0;default:return n-r}}function readableStreamDefaultControllerHasBackpressure(e){return!readableStreamDefaultControllerShouldCallPull(e)}function readableStreamDefaultControllerShouldCallPull(e){let{stream:t}=e[B];if(!readableStreamDefaultControllerCanCloseOrEnqueue(e)||!e[B].started)return!1;if(isReadableStreamLocked(t)&&readableStreamGetNumReadRequests(t))return!0;let n=readableStreamDefaultControllerGetDesiredSize(e);return n!==null&&n>0}function readableStreamDefaultControllerCallPullIfNeeded(e){if(readableStreamDefaultControllerShouldCallPull(e)){if(e[B].pulling){e[B].pullAgain=!0;return}e[B].pulling=!0,e[B].pullAlgorithm(e).then(()=>{e[B].pulling=!1,e[B].pullAgain&&(e[B].pullAgain=!1,readableStreamDefaultControllerCallPullIfNeeded(e))},t=>readableStreamDefaultControllerError(e,t))}}function readableStreamDefaultControllerClearAlgorithms(e){e[B].pullAlgorithm=void 0,e[B].cancelAlgorithm=void 0,e[B].sizeAlgorithm=void 0}function readableStreamDefaultControllerError(e,t){let{stream:n}=e[B];n[B].state===`readable`&&(resetQueue(e),readableStreamDefaultControllerClearAlgorithms(e),readableStreamError(n,t))}function readableStreamDefaultControllerCancelSteps(e,t){resetQueue(e);let n=e[B].cancelAlgorithm?.(t)??Promise.resolve();return readableStreamDefaultControllerClearAlgorithms(e),n}function readableStreamDefaultControllerPullSteps(e,t){let{stream:n,queue:r}=e[B];if(r.length){let i=dequeueValue(e);e[B].closeRequested&&!r.length?(readableStreamDefaultControllerClearAlgorithms(e),readableStreamClose(n)):readableStreamDefaultControllerCallPullIfNeeded(e),t[G](i);return}readableStreamAddReadRequest(n,t),readableStreamDefaultControllerCallPullIfNeeded(e)}function setupReadableStreamDefaultController(e,t,n,r,i,a,o){t[B]={cancelAlgorithm:i,closeRequested:!1,highWaterMark:a,pullAgain:!1,pullAlgorithm:r,pulling:!1,queue:[],queueTotalSize:0,started:!1,sizeAlgorithm:o,stream:e},e[B].controller=t;let s=n();new Promise(e=>e(s)).then(()=>{t[B].started=!0,readableStreamDefaultControllerCallPullIfNeeded(t)},e=>readableStreamDefaultControllerError(t,e))}function setupReadableStreamDefaultControllerFromSource(e,t,n,r){let i=new ReadableStreamDefaultController(q),a=t?.start,o=t?.pull,s=t?.cancel;setupReadableStreamDefaultController(e,i,a?a.bind(t,i):nonOpStart,o?createPromiseCallback(`source.pull`,o,t):nonOpPull,s?createPromiseCallback(`source.cancel`,s,t):nonOpCancel,n,r)}function createReadableStream(e,t,n,r=1,i=()=>1){let a=Object.create(ReadableStream$1.prototype);return a[V]=`ReadableStream`,a[B]=createReadableStreamState(),setupReadableStreamDefaultController(a,new ReadableStreamDefaultController(q),e,t,n,r,i),a}function readableStreamFromIterable(e){let t,n=getIterator(e,`async`),r=nonOpStart;async function pullAlgorithm(){let e=iteratorNext(n);return Promise.resolve(e).then(e=>{if(typeof e!=`object`||!e)throw TypeError(`The promise returned by the iterator.next() method must fulfill with an object`);e.done?readableStreamDefaultControllerClose(t[B].controller):readableStreamDefaultControllerEnqueue(t[B].controller,e.value)})}async function cancelAlgorithm(e){let t=n.iterator,r=t.return;if(r===void 0)return Promise.resolve();let i=r.call(t,e);return Promise.resolve(i).then(e=>{if(typeof e!=`object`||!e)throw TypeError(`The promise returned by the iterator.return() method must fulfill with an object`)})}return t=createReadableStream(r,pullAlgorithm,cancelAlgorithm,0),t}function readableStreamPipeTo(e,t,n,r,i,a){let o,s;try{o=new ReadableStreamDefaultReader(e),s=new WritableStreamDefaultWriter(t)}catch(e){return Promise.reject(e)}e[B].disturbed=!0;let c=!1,{promise:l,resolve:u,reject:d}=Promise.withResolvers(),f={currentWrite:Promise.resolve()},p;function finalize(e,t){writableStreamDefaultWriterRelease(s),readableStreamReaderGenericRelease(o),a!==void 0&&p&&(a.removeEventListener(`abort`,p),p=void 0),e?d(t):u()}async function waitForCurrentWrite(){let e=f.currentWrite;await e,e!==f.currentWrite&&await waitForCurrentWrite()}function shutdownWithAnAction(e,n,r){if(c)return;if(c=!0,t[B].state===`writable`&&!writableStreamCloseQueuedOrInFlight(t)){waitForCurrentWrite().then(complete,e=>finalize(!0,e));return}complete();function complete(){e().then(()=>finalize(!!n,r),e=>finalize(!0,e))}}function shutdown(e,n){if(!c){if(c=!0,t[B].state===`writable`&&!writableStreamCloseQueuedOrInFlight(t)){waitForCurrentWrite().then(()=>finalize(!!e,n),e=>finalize(!0,e));return}finalize(!!e,n)}}function abortAlgorithm(){let n;n=a.reason&&a.reason.name===`AbortError`?createAbortError():a.reason;let o=[];r||o.push(()=>t[B].state===`writable`?writableStreamAbort(t,n):Promise.resolve()),i||o.push(()=>e[B].state===`readable`?readableStreamCancel(e,n):Promise.resolve()),shutdownWithAnAction(()=>Promise.all(o.map(e=>e())).then(()=>void 0),!0,n)}function watchErrored(e,t,n){e[B].state===`errored`?n(e[B].storedError):t.then(void 0,n)}function watchClosed(e,t,n){e[B].state===`closed`?n():t.then(n,()=>{})}class PipeToReadRequest{[G](e){_(()=>{f.currentWrite=writableStreamDefaultWriterWrite(s,e),setPromiseHandled(f.currentWrite),m.resolve(!1)})}[W](){m.resolve(!0)}[K](e){m.reject(e)}}let m={resolve:null,reject:null};async function step(){if(c||t[B].backpressure&&(await s[B].ready.promise,c))return!0;let n=e[B].controller;if(e[B].state===`readable`&&xt(n)&&n[B].queue.length>0){for(;n[B].queue.length>0;){if(c)return!0;let r=dequeueValue(n);if(n[B].closeRequested&&!n[B].queue.length&&(readableStreamDefaultControllerClearAlgorithms(n),readableStreamClose(e)),f.currentWrite=writableStreamDefaultWriterWrite(s,r),setPromiseHandled(f.currentWrite),t[B].backpressure||t[B].state!==`writable`||writableStreamCloseQueuedOrInFlight(t))break}return readableStreamDefaultControllerCallPullIfNeeded(n),e[B].state===`closed`}let{promise:r,resolve:i,reject:a}=Promise.withResolvers();return m={resolve:i,reject:a},readableStreamDefaultReaderRead(o,new PipeToReadRequest),r}async function run(){for(;!await step(););}if(a!==void 0){if(a.aborted)return abortAlgorithm(),l;p=abortAlgorithm,a.addEventListener(`abort`,p,{once:!0})}if(setPromiseHandled(run()),watchErrored(e,o[B].close.promise,e=>{if(!r)return shutdownWithAnAction(()=>writableStreamAbort(t,e),!0,e);shutdown(!0,e)}),watchErrored(t,s[B].close.promise,t=>{if(!i)return shutdownWithAnAction(()=>readableStreamCancel(e,t),!0,t);shutdown(!0,t)}),watchClosed(e,o[B].close.promise,()=>{if(!n)return shutdownWithAnAction(()=>writableStreamDefaultWriterCloseWithErrorPropagation(s));shutdown()}),writableStreamCloseQueuedOrInFlight(t)||t[B].state===`closed`){let t=TypeError(`Destination WritableStream is closed`);i?shutdown(!0,t):shutdownWithAnAction(()=>readableStreamCancel(e,t),!0,t)}return l}function readableStreamDefaultTee(e,t){let n=new ReadableStreamDefaultReader(e),r=!1,i=!1,a=!1,o,s,c,l,u=Promise.withResolvers();async function pullAlgorithm(){r||(r=!0,readableStreamDefaultReaderRead(n,{[G](e){_(()=>{r=!1;let n=e,o=e;if(!a&&t)try{o=structuredClone(o)}catch{}i||readableStreamDefaultControllerEnqueue(c[B].controller,n),a||readableStreamDefaultControllerEnqueue(l[B].controller,o)})},[W](){_(()=>{r=!1,i||readableStreamDefaultControllerClose(c[B].controller),a||readableStreamDefaultControllerClose(l[B].controller),(!i||!a)&&u.resolve(void 0)})},[K](){r=!1}}))}function cancel1Algorithm(t){if(i=!0,o=t,a){let t=[o,s];u.resolve(readableStreamCancel(e,t))}return u.promise}function cancel2Algorithm(t){if(a=!0,s=t,i){let t=[o,s];u.resolve(readableStreamCancel(e,t))}return u.promise}return c=createReadableStream(nonOpStart,pullAlgorithm,cancel1Algorithm),l=createReadableStream(nonOpStart,pullAlgorithm,cancel2Algorithm),n[B].close.promise.then(void 0,e=>{readableStreamDefaultControllerError(c[B].controller,e),readableStreamDefaultControllerError(l[B].controller,e),(!i||!a)&&u.resolve(void 0)}),[c,l]}var BYOBReadIntoRequest=class{[B];constructor(){this[B]=Promise.withResolvers()}[G](e){this[B].resolve?.({value:e,done:!1})}[W](e){this[B].resolve?.({value:e,done:!0})}[K](e){this[B].reject?.(e)}get promise(){return this[B].promise}},ReadableStreamBYOBReader=class{[V]=`ReadableStreamBYOBReader`;[B];constructor(e){if(!J(e))throw TypeError(`Expected a ReadableStream`);this[B]={readRequests:[],readIntoRequests:[],stream:void 0,close:{promise:void 0,resolve:void 0,reject:void 0}},setupReadableStreamBYOBReader(this,e)}read(e,t={}){if(!Z(this))return Promise.reject(TypeError(`Invalid this`));if(typeof e!=`object`||!e||!ArrayBuffer.isView(e))return Promise.reject(TypeError(`view must be an ArrayBufferView`));let n=e.buffer,r=e.byteLength;if(r===0)return Promise.reject(TypeError(`view must have non-zero byteLength`));if(n.byteLength===0)return isDetachedBuffer(n)?Promise.reject(TypeError(`view's buffer has been detached`)):Promise.reject(TypeError(`view's buffer must have non-zero byteLength`));let i=t?.min??1;if(typeof i!=`number`||i<1||!Number.isInteger(i)||Number.isNaN(i))return Promise.reject(TypeError(`options.min must be a positive integer`));let a=e[Symbol.toStringTag];if(a!==void 0&&a!==`DataView`){if(i>e.length)return Promise.reject(RangeError(`options.min must be smaller or equal to view size`))}else if(i>r)return Promise.reject(RangeError(`options.min must be smaller or equal to view size`));if(this[B].stream===void 0)return Promise.reject(TypeError(`Reader has no associated stream`));let o=new BYOBReadIntoRequest;return readableStreamBYOBReaderRead(this,e,i,o),o.promise}releaseLock(){if(!Z(this))throw TypeError(`Invalid this`);this[B].stream!==void 0&&readableStreamBYOBReaderRelease(this)}get closed(){return Z(this)?this[B].close.promise:Promise.reject(TypeError(`Invalid this`))}cancel(e=void 0){return Z(this)?this[B].stream===void 0?Promise.reject(TypeError(`Reader has no associated stream`)):readableStreamReaderGenericCancel(this,e):Promise.reject(TypeError(`Invalid this`))}get[Symbol.toStringTag](){return`ReadableStreamBYOBReader`}},ReadableStreamBYOBRequest=class{[V]=`ReadableStreamBYOBRequest`;[B];constructor(e){if(e!==q)throw TypeError(`Illegal constructor`)}get view(){if(!St(this))throw TypeError(`Invalid this`);return this[B].view}respond(e){if(!St(this))throw TypeError(`Invalid this`);if(this[B].controller===void 0)throw TypeError(`BYOB request has been invalidated`);if(e=+e,!Number.isInteger(e)||e<0||!Number.isFinite(e))throw RangeError(`bytesWritten must be a non-negative integer`);let t=this[B].view;if(isDetachedBuffer(t.buffer))throw TypeError(`The BYOB request's buffer has been detached`);readableByteStreamControllerRespond(this[B].controller,e)}respondWithNewView(e){if(!St(this))throw TypeError(`Invalid this`);if(this[B].controller===void 0)throw TypeError(`BYOB request has been invalidated`);if(typeof e!=`object`||!e||!ArrayBuffer.isView(e))throw TypeError(`view must be an ArrayBufferView`);if(isDetachedBuffer(e.buffer))throw TypeError(`The given view's buffer has been detached`);readableByteStreamControllerRespondWithNewView(this[B].controller,e)}get[Symbol.toStringTag](){return`ReadableStreamBYOBRequest`}},ReadableByteStreamController=class{[V]=`ReadableByteStreamController`;[B];constructor(e){if(e!==q)throw TypeError(`Illegal constructor`)}get byobRequest(){if(!X(this))throw TypeError(`Invalid this`);return readableByteStreamControllerGetBYOBRequest(this)}get desiredSize(){if(!X(this))throw TypeError(`Invalid this`);return readableByteStreamControllerGetDesiredSize(this)}close(){if(!X(this))throw TypeError(`Invalid this`);if(this[B].closeRequested)throw TypeError(`Close already requested`);if(this[B].stream[B].state!==`readable`)throw TypeError(`Stream is not in a readable state`);readableByteStreamControllerClose(this)}enqueue(e){if(!X(this))throw TypeError(`Invalid this`);if(typeof e!=`object`||!e||!ArrayBuffer.isView(e))throw TypeError(`chunk must be an ArrayBufferView`);if(e.byteLength===0)throw TypeError(`chunk length must be non-zero`);if(e.buffer.byteLength===0)throw TypeError(`chunk's buffer length must be non-zero`);if(this[B].closeRequested)throw TypeError(`Cannot enqueue after close has been requested`);if(this[B].stream[B].state!==`readable`)throw TypeError(`Stream is not in a readable state`);readableByteStreamControllerEnqueue(this,e)}error(e=void 0){if(!X(this))throw TypeError(`Invalid this`);readableByteStreamControllerError(this,e)}[gt](e){return readableByteStreamControllerCancelSteps(this,e)}[_t](e){readableByteStreamControllerPullSteps(this,e)}[vt](){if(this[B].pendingPullIntos.length>0){let e=this[B].pendingPullIntos[0];e.readerType=`none`,this[B].pendingPullIntos=[e]}}get[Symbol.toStringTag](){return`ReadableByteStreamController`}};const X=isBrandCheck(`ReadableByteStreamController`),Z=isBrandCheck(`ReadableStreamBYOBReader`),St=isBrandCheck(`ReadableStreamBYOBRequest`);function readableStreamHasBYOBReader(e){let{reader:t}=e[B];return t===void 0?!1:t[B]!==void 0&&t[V]===`ReadableStreamBYOBReader`}function readableStreamGetNumReadIntoRequests(e){return e[B].reader[B].readIntoRequests.length}function readableStreamAddReadIntoRequest(e,t){e[B].reader[B].readIntoRequests.push(t)}function readableStreamFulfillReadIntoRequest(e,t,n){let{reader:r}=e[B],i=r[B].readIntoRequests.shift();n?i[W](t):i[G](t)}function setupReadableStreamBYOBReader(e,t){if(isReadableStreamLocked(t))throw TypeError(`ReadableStream is locked`);if(!X(t[B].controller))throw TypeError(`Cannot use a BYOB reader with a non-byte stream`);readableStreamReaderGenericInitialize(e,t),e[B].readIntoRequests=[]}function readableStreamBYOBReaderRead(e,t,n,r){let{stream:i}=e[B];i[B].disturbed=!0,i[B].state===`errored`?r[K](i[B].storedError):readableByteStreamControllerPullInto(i[B].controller,t,n,r)}function readableStreamBYOBReaderRelease(e){readableStreamReaderGenericRelease(e);let t=TypeError(`Reader was released`);for(let n=0;n<e[B].readIntoRequests.length;n++)e[B].readIntoRequests[n][K](t);e[B].readIntoRequests=[]}function readableByteStreamControllerClearAlgorithms(e){e[B].pullAlgorithm=void 0,e[B].cancelAlgorithm=void 0}function readableByteStreamControllerClearPendingPullIntos(e){readableByteStreamControllerInvalidateBYOBRequest(e),e[B].pendingPullIntos=[]}function readableByteStreamControllerInvalidateBYOBRequest(e){let t=e[B].byobRequest;t!=null&&(t[B].controller=void 0,t[B].view=null,e[B].byobRequest=null)}function readableByteStreamControllerError(e,t){let{stream:n}=e[B];n[B].state===`readable`&&(readableByteStreamControllerClearPendingPullIntos(e),resetQueue(e),readableByteStreamControllerClearAlgorithms(e),readableStreamError(n,t))}function readableByteStreamControllerGetDesiredSize(e){let t=e[B].stream[B].state;return t===`errored`?null:t===`closed`?0:e[B].highWaterMark-e[B].queueTotalSize}function readableByteStreamControllerShouldCallPull(e){let{stream:t}=e[B];if(t[B].state!==`readable`||e[B].closeRequested||!e[B].started)return!1;if(readableStreamHasDefaultReader(t)&&readableStreamGetNumReadRequests(t)>0||readableStreamHasBYOBReader(t)&&readableStreamGetNumReadIntoRequests(t)>0)return!0;let n=readableByteStreamControllerGetDesiredSize(e);return n!==null&&n>0}function readableByteStreamControllerCallPullIfNeeded(e){if(readableByteStreamControllerShouldCallPull(e)){if(e[B].pulling){e[B].pullAgain=!0;return}e[B].pulling=!0,e[B].pullAlgorithm(e).then(()=>{e[B].pulling=!1,e[B].pullAgain&&(e[B].pullAgain=!1,readableByteStreamControllerCallPullIfNeeded(e))},t=>readableByteStreamControllerError(e,t))}}function readableByteStreamControllerHandleQueueDrain(e){e[B].queueTotalSize===0&&e[B].closeRequested?(readableByteStreamControllerClearAlgorithms(e),readableStreamClose(e[B].stream)):readableByteStreamControllerCallPullIfNeeded(e)}function readableByteStreamControllerEnqueueChunkToQueue(e,t,n,r){e[B].queue.push({buffer:t,byteOffset:n,byteLength:r}),e[B].queueTotalSize+=r}function readableByteStreamControllerEnqueueClonedChunkToQueue(e,t,n,r){let i;try{i=t.slice(n,n+r)}catch(t){readableByteStreamControllerError(e,t);return}readableByteStreamControllerEnqueueChunkToQueue(e,i,0,r)}function readableByteStreamControllerEnqueueDetachedPullIntoToQueue(e,t){t.bytesFilled>0&&readableByteStreamControllerEnqueueClonedChunkToQueue(e,t.buffer,t.byteOffset,t.bytesFilled),readableByteStreamControllerShiftPendingPullInto(e)}function readableByteStreamControllerShiftPendingPullInto(e){return e[B].pendingPullIntos.shift()}function readableByteStreamControllerFillHeadPullIntoDescriptor(e,t,n){n.bytesFilled+=t}function readableByteStreamControllerConvertPullIntoDescriptor(e){let t=e.bytesFilled,n=e.elementSize,r=transferArrayBuffer(e.buffer);return e.buffer=r,new e.viewConstructor(r,e.byteOffset,t/n)}function readableByteStreamControllerCommitPullIntoDescriptor(e,t){let n=!1;e[B].state===`closed`&&(n=!0);let r=readableByteStreamControllerConvertPullIntoDescriptor(t);t.readerType==="default"?readableStreamFulfillReadRequest(e,r,n):readableStreamFulfillReadIntoRequest(e,r,n)}function readableByteStreamControllerFillPullIntoDescriptorFromQueue(e,t){let n=Math.min(e[B].queueTotalSize,t.byteLength-t.bytesFilled),r=t.bytesFilled+n,i=n,a=!1,o=r-r%t.elementSize;o>=t.minimumFill&&(i=o-t.bytesFilled,a=!0);let s=e[B].queue;for(;i>0;){let n=s[0],r=Math.min(i,n.byteLength),a=t.byteOffset+t.bytesFilled,o=new Uint8Array(t.buffer,a,r),c=new Uint8Array(n.buffer,n.byteOffset,r);o.set(c),n.byteLength===r?s.shift():(n.byteOffset+=r,n.byteLength-=r),e[B].queueTotalSize-=r,readableByteStreamControllerFillHeadPullIntoDescriptor(e,r,t),i-=r}return a}function readableByteStreamControllerFillReadRequestFromQueue(e,t){let n=e[B].queue.shift();e[B].queueTotalSize-=n.byteLength,readableByteStreamControllerHandleQueueDrain(e);let r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);t[G](r)}function readableByteStreamControllerProcessReadRequestsUsingQueue(e){let t=e[B].stream[B].reader;for(;t[B].readRequests.length!==0;){if(e[B].queueTotalSize===0)return;readableByteStreamControllerFillReadRequestFromQueue(e,t[B].readRequests.shift())}}function readableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e){for(;e[B].pendingPullIntos.length!==0;){if(e[B].queueTotalSize===0)return;let t=e[B].pendingPullIntos[0];readableByteStreamControllerFillPullIntoDescriptorFromQueue(e,t)&&(readableByteStreamControllerShiftPendingPullInto(e),readableByteStreamControllerCommitPullIntoDescriptor(e[B].stream,t))}}function readableByteStreamControllerGetBYOBRequest(e){if(e[B].byobRequest===null&&e[B].pendingPullIntos.length!==0){let t=e[B].pendingPullIntos[0],n=new Uint8Array(t.buffer,t.byteOffset+t.bytesFilled,t.byteLength-t.bytesFilled),r=new ReadableStreamBYOBRequest(q);r[B]={controller:e,view:n},e[B].byobRequest=r}return e[B].byobRequest}function readableByteStreamControllerEnqueue(e,t){let{stream:n}=e[B];if(e[B].closeRequested||n[B].state!==`readable`)return;let r=t.buffer,i=t.byteLength,a=t.byteOffset;if(isDetachedBuffer(r))throw TypeError(`chunk's buffer is detached`);let o=transferArrayBuffer(r);if(e[B].pendingPullIntos.length!==0){let t=e[B].pendingPullIntos[0];if(isDetachedBuffer(t.buffer))throw TypeError(`BYOB request's buffer has been detached`);readableByteStreamControllerInvalidateBYOBRequest(e),t.buffer=transferArrayBuffer(t.buffer),t.readerType===`none`&&readableByteStreamControllerEnqueueDetachedPullIntoToQueue(e,t)}readableStreamHasDefaultReader(n)?(readableByteStreamControllerProcessReadRequestsUsingQueue(e),readableStreamGetNumReadRequests(n)===0?readableByteStreamControllerEnqueueChunkToQueue(e,o,a,i):(e[B].pendingPullIntos.length!==0&&readableByteStreamControllerShiftPendingPullInto(e),readableStreamFulfillReadRequest(n,new Uint8Array(o,a,i),!1))):readableStreamHasBYOBReader(n)?(readableByteStreamControllerEnqueueChunkToQueue(e,o,a,i),readableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e)):readableByteStreamControllerEnqueueChunkToQueue(e,o,a,i),readableByteStreamControllerCallPullIfNeeded(e)}function readableByteStreamControllerClose(e){let{stream:t}=e[B];if(!(e[B].closeRequested||t[B].state!==`readable`)){if(e[B].queueTotalSize>0){e[B].closeRequested=!0;return}if(e[B].pendingPullIntos.length!==0){let t=e[B].pendingPullIntos[0];if(t.bytesFilled%t.elementSize!==0){let t=TypeError(`Insufficient bytes to fill elements in the given buffer`);throw readableByteStreamControllerError(e,t),t}}readableByteStreamControllerClearAlgorithms(e),readableStreamClose(t)}}function readableByteStreamControllerPullInto(e,t,n,r){let i=e[B].stream,a=t[Symbol.toStringTag],o,s;if(a===void 0||a===`DataView`)o=DataView,s=1;else{let e=typedArrayConstructorByTag(a);if(!e){r[K](TypeError(`Unsupported typed array: ${a}`));return}o=e,s=elementSizeByTag(a)}let c=t.buffer,l=t.byteLength,u=t.byteOffset,d=n*s,f;try{f=transferArrayBuffer(c)}catch(e){r[K](e);return}let p={buffer:f,bufferByteLength:f.byteLength,byteOffset:u,byteLength:l,bytesFilled:0,minimumFill:d,elementSize:s,viewConstructor:o,readerType:`byob`};if(e[B].pendingPullIntos.length!==0){e[B].pendingPullIntos.push(p),readableStreamAddReadIntoRequest(i,r);return}if(i[B].state===`closed`){let e=new o(p.buffer,p.byteOffset,0);r[W](e);return}if(e[B].queueTotalSize>0){if(readableByteStreamControllerFillPullIntoDescriptorFromQueue(e,p)){let t=readableByteStreamControllerConvertPullIntoDescriptor(p);readableByteStreamControllerHandleQueueDrain(e),r[G](t);return}if(e[B].closeRequested){let t=TypeError(`Insufficient bytes to fill elements in the given buffer`);readableByteStreamControllerError(e,t),r[K](t);return}}e[B].pendingPullIntos.push(p),readableStreamAddReadIntoRequest(i,r),readableByteStreamControllerCallPullIfNeeded(e)}function readableByteStreamControllerRespond(e,t){let n=e[B].pendingPullIntos[0];if(e[B].stream[B].state===`closed`){if(t!==0)throw TypeError(`bytesWritten must be 0 when calling respond() on a closed stream`)}else{if(t===0)throw TypeError(`bytesWritten must be greater than 0 when calling respond() on a readable stream`);if(n.bytesFilled+t>n.byteLength)throw RangeError(`bytesWritten out of range`)}n.buffer=transferArrayBuffer(n.buffer),readableByteStreamControllerRespondInternal(e,t)}function readableByteStreamControllerRespondWithNewView(e,t){let n=e[B].pendingPullIntos[0],r=e[B].stream[B].state,i=t.byteLength,a=t.byteOffset,o=t.buffer;if(r===`closed`){if(i!==0)throw TypeError(`view's length must be 0 when calling respondWithNewView() on a closed stream`)}else if(i===0)throw TypeError(`view's length must be greater than 0 when calling respondWithNewView() on a readable stream`);if(n.byteOffset+n.bytesFilled!==a)throw RangeError(`The region specified by view does not match byobRequest`);if(n.bufferByteLength!==o.byteLength)throw RangeError(`The buffer of view has different capacity than byobRequest`);if(n.bytesFilled+i>n.byteLength)throw RangeError(`The region specified by view is larger than byobRequest`);n.buffer=transferArrayBuffer(o),readableByteStreamControllerRespondInternal(e,i)}function readableByteStreamControllerRespondInternal(e,t){let n=e[B].pendingPullIntos[0];readableByteStreamControllerInvalidateBYOBRequest(e),e[B].stream[B].state===`closed`?readableByteStreamControllerRespondInClosedState(e,n):readableByteStreamControllerRespondInReadableState(e,t,n),readableByteStreamControllerCallPullIfNeeded(e)}function readableByteStreamControllerRespondInClosedState(e,t){t.readerType===`none`&&readableByteStreamControllerShiftPendingPullInto(e);let n=e[B].stream;if(readableStreamHasBYOBReader(n))for(;readableStreamGetNumReadIntoRequests(n)>0;)readableByteStreamControllerCommitPullIntoDescriptor(n,readableByteStreamControllerShiftPendingPullInto(e))}function readableByteStreamControllerRespondInReadableState(e,t,n){if(readableByteStreamControllerFillHeadPullIntoDescriptor(e,t,n),n.readerType===`none`){readableByteStreamControllerEnqueueDetachedPullIntoToQueue(e,n),readableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e);return}if(n.bytesFilled<n.minimumFill)return;readableByteStreamControllerShiftPendingPullInto(e);let r=n.bytesFilled%n.elementSize;if(r>0){let t=n.byteOffset+n.bytesFilled;readableByteStreamControllerEnqueueClonedChunkToQueue(e,n.buffer,t-r,r)}n.bytesFilled-=r,readableByteStreamControllerCommitPullIntoDescriptor(e[B].stream,n),readableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(e)}function readableByteStreamControllerCancelSteps(e,t){readableByteStreamControllerClearPendingPullIntos(e),resetQueue(e);let n=e[B].cancelAlgorithm?.(t)??Promise.resolve();return readableByteStreamControllerClearAlgorithms(e),n}function readableByteStreamControllerPullSteps(e,t){let n=e[B].stream;if(e[B].queueTotalSize>0){readableByteStreamControllerFillReadRequestFromQueue(e,t);return}let r=e[B].autoAllocateChunkSize;if(r!==void 0){let n;try{n=new ArrayBuffer(r)}catch(e){t[K](e);return}let i={buffer:n,bufferByteLength:r,byteOffset:0,byteLength:r,bytesFilled:0,minimumFill:1,elementSize:1,viewConstructor:Uint8Array,readerType:`default`};e[B].pendingPullIntos.push(i)}readableStreamAddReadRequest(n,t),readableByteStreamControllerCallPullIfNeeded(e)}function setupReadableByteStreamController(e,t,n,r,i,a,o){t[B]={cancelAlgorithm:i,closeRequested:!1,highWaterMark:a,pullAgain:!1,pullAlgorithm:r,pulling:!1,queue:[],queueTotalSize:0,started:!1,stream:e,byobRequest:null,pendingPullIntos:[],autoAllocateChunkSize:o},e[B].controller=t;let s=n();new Promise(e=>e(s)).then(()=>{t[B].started=!0,readableByteStreamControllerCallPullIfNeeded(t)},e=>readableByteStreamControllerError(t,e))}function setupReadableByteStreamControllerFromSource(e,t,n){let r=new ReadableByteStreamController(q),i=t?.start,a=t?.pull,o=t?.cancel,s=t?.autoAllocateChunkSize;if(s!==void 0&&(s===0||!Number.isInteger(s)||s<0))throw TypeError(`autoAllocateChunkSize must be a positive integer`);setupReadableByteStreamController(e,r,i?i.bind(t,r):nonOpStart,a?createPromiseCallback(`source.pull`,a,t):nonOpPull,o?createPromiseCallback(`source.cancel`,o,t):nonOpCancel,n,s)}function readableByteStreamTee(e){let t=new ReadableStreamDefaultReader(e),n=!1,r=!1,i=!1,a,o,s=Promise.withResolvers(),c,l,u,d;function pullAlgorithm(){return n?Promise.resolve():(n=!0,t.read().then(e=>{if(n=!1,e.done){r||u.close(),i||d.close();return}let t=e.value,a=new Uint8Array(t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength));r||u.enqueue(a),i||d.enqueue(new Uint8Array(a))},()=>{}),Promise.resolve())}return c=new ReadableStream$1({type:`bytes`,pull:pullAlgorithm,cancel(t){if(r=!0,a=t,i){let t=readableStreamCancel(e,[a,o]);return s.resolve(),t}return s.promise}}),l=new ReadableStream$1({type:`bytes`,pull:pullAlgorithm,cancel(t){if(i=!0,o=t,r){let t=readableStreamCancel(e,[a,o]);return s.resolve(),t}return s.promise}}),u=c[B].controller,d=l[B].controller,t.closed.catch(e=>{u.error(e),d.error(e),(!r||!i)&&s.resolve()}),[c,l]}const Ct=Symbol(`kSkipThrow`);var TransformStream=class{[V]=`TransformStream`;[B];constructor(e={},t={},n={}){if(e!=null&&typeof e!=`object`)throw TypeError(`transformer must be an object`);if(t!=null&&typeof t!=`object`)throw TypeError(`writableStrategy must be an object`);if(n!=null&&typeof n!=`object`)throw TypeError(`readableStrategy must be an object`);let r=e?.readableType,i=e?.writableType,a=e?.start;if(r!==void 0)throw RangeError(`Invalid readableType: ${r}`);if(i!==void 0)throw RangeError(`Invalid writableType: ${i}`);let o=extractHighWaterMark(n?.highWaterMark,0),s=extractSizeAlgorithm(n?.size),c=extractHighWaterMark(t?.highWaterMark,1),l=extractSizeAlgorithm(t?.size),u=Promise.withResolvers();initializeTransformStream(this,u,c,l,o,s),setupTransformStreamDefaultControllerFromTransformer(this,e),a===void 0?u.resolve():u.resolve(a.call(e,this[B].controller))}get readable(){if(!wt(this))throw TypeError(`Invalid this`);return this[B].readable}get writable(){if(!wt(this))throw TypeError(`Invalid this`);return this[B].writable}get[Symbol.toStringTag](){return`TransformStream`}},TransformStreamDefaultController=class{[V]=`TransformStreamDefaultController`;[B];constructor(e){if(e!==Ct)throw TypeError(`Illegal constructor`)}get desiredSize(){if(!Q(this))throw TypeError(`Invalid this`);let{stream:e}=this[B],{readable:t}=e[B],n=t[B].controller;return readableStreamDefaultControllerGetDesiredSize(n)}enqueue(e){if(!Q(this))throw TypeError(`Invalid this`);transformStreamDefaultControllerEnqueue(this,e)}error(e){if(!Q(this))throw TypeError(`Invalid this`);transformStreamDefaultControllerError(this,e)}terminate(){if(!Q(this))throw TypeError(`Invalid this`);transformStreamDefaultControllerTerminate(this)}get[Symbol.toStringTag](){return`TransformStreamDefaultController`}};const wt=isBrandCheck(`TransformStream`),Q=isBrandCheck(`TransformStreamDefaultController`);async function defaultTransformAlgorithm(e,t){transformStreamDefaultControllerEnqueue(t,e)}function initializeTransformStream(e,t,n,r,i,a){let startAlgorithm=()=>t.promise,o=createWritableStream(startAlgorithm,t=>transformStreamDefaultSinkWriteAlgorithm(e,t),()=>transformStreamDefaultSinkCloseAlgorithm(e),t=>transformStreamDefaultSinkAbortAlgorithm(e,t),n,r);e[B]={readable:createReadableStream(startAlgorithm,()=>transformStreamDefaultSourcePullAlgorithm(e),t=>transformStreamDefaultSourceCancelAlgorithm(e,t),i,a),writable:o,controller:void 0,backpressure:void 0,backpressureChange:{promise:void 0,resolve:void 0,reject:void 0}},transformStreamSetBackpressure(e,!0)}function transformStreamError(e,t){let{readable:n}=e[B];readableStreamDefaultControllerError(n[B].controller,t),transformStreamErrorWritableAndUnblockWrite(e,t)}function transformStreamErrorWritableAndUnblockWrite(e,t){let{controller:n,writable:r}=e[B];transformStreamDefaultControllerClearAlgorithms(n),writableStreamDefaultControllerErrorIfNeeded(r[B].controller,t),transformStreamUnblockWrite(e)}function transformStreamUnblockWrite(e){e[B].backpressure&&transformStreamSetBackpressure(e,!1)}function transformStreamSetBackpressure(e,t){e[B].backpressureChange.promise!==void 0&&e[B].backpressureChange.resolve?.(),e[B].backpressureChange=Promise.withResolvers(),e[B].backpressure=t}function setupTransformStreamDefaultController(e,t,n,r,i){t[B]={stream:e,transformAlgorithm:n,flushAlgorithm:r,cancelAlgorithm:i,finishPromise:void 0},e[B].controller=t}function setupTransformStreamDefaultControllerFromTransformer(e,t){let n=new TransformStreamDefaultController(Ct),r=t?.transform,i=t?.flush,a=t?.cancel;setupTransformStreamDefaultController(e,n,r?createPromiseCallback(`transformer.transform`,r,t):defaultTransformAlgorithm,i?createPromiseCallback(`transformer.flush`,i,t):nonOpFlush,a?createPromiseCallback(`transformer.cancel`,a,t):nonOpCancel)}function transformStreamDefaultControllerClearAlgorithms(e){e[B].transformAlgorithm=void 0,e[B].flushAlgorithm=void 0,e[B].cancelAlgorithm=void 0}function transformStreamDefaultControllerEnqueue(e,t){let{stream:n}=e[B],{readable:r}=n[B],i=r[B].controller;if(!readableStreamDefaultControllerCanCloseOrEnqueue(i))throw TypeError(`Unable to enqueue`);try{readableStreamDefaultControllerEnqueue(i,t)}catch(e){throw transformStreamErrorWritableAndUnblockWrite(n,e),r[B].storedError}readableStreamDefaultControllerHasBackpressure(i)!==n[B].backpressure&&transformStreamSetBackpressure(n,!0)}function transformStreamDefaultControllerError(e,t){transformStreamError(e[B].stream,t)}async function transformStreamDefaultControllerPerformTransform(e,t){try{let n=e[B].transformAlgorithm;if(n===void 0)return;await n(t,e)}catch(t){throw transformStreamError(e[B].stream,t),t}}function transformStreamDefaultControllerTerminate(e){let{stream:t}=e[B],{readable:n}=t[B];readableStreamDefaultControllerClose(n[B].controller),transformStreamErrorWritableAndUnblockWrite(t,TypeError(`TransformStream has been terminated`))}function transformStreamDefaultSinkWriteAlgorithm(e,t){let{controller:n}=e[B];return e[B].backpressure?e[B].backpressureChange.promise.then(()=>{let{writable:r}=e[B];if(r[B].state===`erroring`)throw r[B].storedError;return transformStreamDefaultControllerPerformTransform(n,t)}):transformStreamDefaultControllerPerformTransform(n,t)}async function transformStreamDefaultSinkAbortAlgorithm(e,t){let{controller:n,readable:r}=e[B];if(n[B].finishPromise!==void 0)return n[B].finishPromise;let{promise:i,resolve:a,reject:o}=Promise.withResolvers();n[B].finishPromise=i;let s=n[B].cancelAlgorithm(t);return transformStreamDefaultControllerClearAlgorithms(n),s.then(()=>{r[B].state===`errored`?o(r[B].storedError):(readableStreamDefaultControllerError(r[B].controller,t),a())},e=>{readableStreamDefaultControllerError(r[B].controller,e),o(e)}),n[B].finishPromise}function transformStreamDefaultSinkCloseAlgorithm(e){let{readable:t,controller:n}=e[B];if(n[B].finishPromise!==void 0)return n[B].finishPromise;let{promise:r,resolve:i,reject:a}=Promise.withResolvers();n[B].finishPromise=r;let o=n[B].flushAlgorithm(n);return transformStreamDefaultControllerClearAlgorithms(n),o.then(()=>{t[B].state===`errored`?a(t[B].storedError):(readableStreamDefaultControllerClose(t[B].controller),i())},e=>{readableStreamDefaultControllerError(t[B].controller,e),a(e)}),n[B].finishPromise}function transformStreamDefaultSourcePullAlgorithm(e){return transformStreamSetBackpressure(e,!1),e[B].backpressureChange.promise}function transformStreamDefaultSourceCancelAlgorithm(e,t){let{controller:n,writable:r}=e[B];if(n[B].finishPromise!==void 0)return n[B].finishPromise;let{promise:i,resolve:a,reject:o}=Promise.withResolvers();n[B].finishPromise=i;let s=n[B].cancelAlgorithm(t);return transformStreamDefaultControllerClearAlgorithms(n),s.then(()=>{r[B].state===`errored`?o(r[B].storedError):(writableStreamDefaultControllerErrorIfNeeded(r[B].controller,t),transformStreamUnblockWrite(e),a())},t=>{writableStreamDefaultControllerErrorIfNeeded(r[B].controller,t),transformStreamUnblockWrite(e),o(t)}),n[B].finishPromise}const Tt=Object.defineProperty(e=>e.byteLength,"name",{value:`size`}),Et=Object.defineProperty(()=>1,"name",{value:`size`});var ByteLengthQueuingStrategy=class{#e;constructor(e){if(typeof e!=`object`||!e)throw TypeError(`init must be an object`);if(e.highWaterMark===void 0)throw TypeError(`init.highWaterMark is required`);this.#e=+e.highWaterMark}get highWaterMark(){return this.#e}get size(){return Tt}get[Symbol.toStringTag](){return`ByteLengthQueuingStrategy`}},CountQueuingStrategy=class{#e;constructor(e){if(typeof e!=`object`||!e)throw TypeError(`init must be an object`);if(e.highWaterMark===void 0)throw TypeError(`init.highWaterMark is required`);this.#e=+e.highWaterMark}get highWaterMark(){return this.#e}get size(){return Et}get[Symbol.toStringTag](){return`CountQueuingStrategy`}},TextEncoderStream=class{#e=null;#t=new TextEncoder;#n;constructor(){this.#n=new TransformStream({transform:(e,t)=>{if(e=String(e),e===``)return;this.#e!==null&&(e=this.#e+e);let n=e.charCodeAt(e.length-1);55296<=n&&n<=56319?(this.#e=e.slice(-1),e=e.slice(0,-1)):this.#e=null,e&&t.enqueue(this.#t.encode(e))},flush:e=>{this.#e!==null&&e.enqueue(new Uint8Array([239,191,189]))}})}get encoding(){return`utf-8`}get readable(){return this.#n.readable}get writable(){return this.#n.writable}};function hasStreamingSupport(){try{return new TextDecoder().decode(new Uint8Array([195]),{stream:!0}),!0}catch{return!1}}const Dt=hasStreamingSupport();function incompleteUtf8Tail(e){let t=e.length;if(t===0)return 0;for(let n=1;n<=Math.min(3,t);n++){let r=e[t-n];if(!(r&128))return 0;if((r&192)!=128){let e;if((r&224)==192)e=2;else if((r&240)==224)e=3;else if((r&248)==240)e=4;else return 0;return n<e?n:0}}return 0}var TextDecoderStream=class{#e;#t;constructor(e,t){if(this.#e=new TextDecoder(e,t),Dt)this.#t=new TransformStream({transform:(e,t)=>{let n=toUint8Array(e),r=this.#e.decode(n,{stream:!0});r&&t.enqueue(r)},flush:e=>{let t=this.#e.decode();t&&e.enqueue(t)},cancel:()=>{this.#e.decode()}});else{let e=new Uint8Array;this.#t=new TransformStream({transform:(t,n)=>{let r=toUint8Array(t),i;e.length>0?(i=new Uint8Array(e.length+r.length),i.set(e,0),i.set(r,e.length)):i=r;let a=incompleteUtf8Tail(i),o;if(a>0?(o=i.slice(0,i.length-a),e=i.slice(i.length-a)):(o=i,e=new Uint8Array),o.length>0){let e=this.#e.decode(o);e&&n.enqueue(e)}},flush:t=>{if(e.length>0){let n=this.#e.decode(e);n&&t.enqueue(n),e=new Uint8Array}},cancel:()=>{e=new Uint8Array}})}}get encoding(){return this.#e.encoding}get fatal(){return this.#e.fatal}get ignoreBOM(){return this.#e.ignoreBOM}get readable(){return this.#t.readable}get writable(){return this.#t.writable}};function toUint8Array(e){if(e instanceof Uint8Array)return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw TypeError(`chunk must be a BufferSource`)}function isNativeStreamUsable$3(e,t){try{return typeof e==`function`?typeof e.prototype?.[t]==`function`:!1}catch{return!1}}__name(isNativeStreamUsable$3,`isNativeStreamUsable`);const Ot=isNativeStreamUsable$3(globalThis.ReadableStream,`getReader`)?globalThis.ReadableStream:ReadableStream$1,kt=isNativeStreamUsable$3(globalThis.WritableStream,`getWriter`)?globalThis.WritableStream:WritableStream,At=isNativeStreamUsable$3(globalThis.TransformStream,`readable`)?globalThis.TransformStream:TransformStream,jt=typeof globalThis.ByteLengthQueuingStrategy==`function`?globalThis.ByteLengthQueuingStrategy:ByteLengthQueuingStrategy,Mt=typeof globalThis.CountQueuingStrategy==`function`?globalThis.CountQueuingStrategy:CountQueuingStrategy,Nt=typeof globalThis.TextEncoderStream==`function`?globalThis.TextEncoderStream:TextEncoderStream,Pt=typeof globalThis.TextDecoderStream==`function`?globalThis.TextDecoderStream:TextDecoderStream,Ft=globalThis;globalThis.ByteLengthQueuingStrategy===void 0&&(Ft.ByteLengthQueuingStrategy=jt),globalThis.CountQueuingStrategy===void 0&&(Ft.CountQueuingStrategy=Mt);const $=globalThis;function isNativeStreamUsable$2(e,t){try{return typeof e==`function`?typeof e.prototype?.[t]==`function`:!1}catch{return!1}}__name(isNativeStreamUsable$2,`isNativeStreamUsable`),isNativeStreamUsable$2(globalThis.ReadableStream,`getReader`)||($.ReadableStream=Ot),$.ReadableStreamBYOBReader===void 0&&($.ReadableStreamBYOBReader=ReadableStreamBYOBReader),$.ReadableStreamBYOBRequest===void 0&&($.ReadableStreamBYOBRequest=ReadableStreamBYOBRequest),$.ReadableByteStreamController===void 0&&($.ReadableByteStreamController=ReadableByteStreamController),$.ReadableStreamDefaultController===void 0&&($.ReadableStreamDefaultController=ReadableStreamDefaultController),$.ReadableStreamDefaultReader===void 0&&($.ReadableStreamDefaultReader=ReadableStreamDefaultReader);const It=globalThis;globalThis.TextEncoderStream===void 0&&(It.TextEncoderStream=Nt),globalThis.TextDecoderStream===void 0&&(It.TextDecoderStream=Pt);function isNativeStreamUsable$1(e,t){try{return typeof e==`function`?typeof e.prototype?.[t]==`function`:!1}catch{return!1}}if(__name(isNativeStreamUsable$1,`isNativeStreamUsable`),!isNativeStreamUsable$1(globalThis.TransformStream,`readable`)){let e=globalThis;e.TransformStream=At}function isNativeStreamUsable(e,t){try{return typeof e==`function`?typeof e.prototype?.[t]==`function`:!1}catch{return!1}}if(!isNativeStreamUsable(globalThis.WritableStream,`getWriter`)){let e=globalThis;e.WritableStream=kt}async function runLoopback(e){let t=new RTCPeerConnection({iceServers:[{urls:`stun:stun.l.google.com:19302`}]}),n=new RTCPeerConnection({iceServers:[{urls:`stun:stun.l.google.com:19302`}]});t.onsignalingstatechange=()=>e(`A`,`signalingState → ${t.signalingState}`),n.onsignalingstatechange=()=>e(`B`,`signalingState → ${n.signalingState}`),t.oniceconnectionstatechange=()=>e(`A`,`iceConnectionState → ${t.iceConnectionState}`),n.oniceconnectionstatechange=()=>e(`B`,`iceConnectionState → ${n.iceConnectionState}`),t.onconnectionstatechange=()=>e(`A`,`connectionState → ${t.connectionState}`),n.onconnectionstatechange=()=>e(`B`,`connectionState → ${n.connectionState}`),t.onicecandidate=t=>{t.candidate&&(e(`A→B`,`ICE ${t.candidate.type??`?`} ${t.candidate.address??``}:${t.candidate.port??``}`),n.addIceCandidate(t.candidate.toJSON()))},n.onicecandidate=n=>{n.candidate&&(e(`B→A`,`ICE ${n.candidate.type??`?`} ${n.candidate.address??``}:${n.candidate.port??``}`),t.addIceCandidate(n.candidate.toJSON()))};let r=t.createDataChannel(`chat`),i=new Promise(t=>{let i=0;r.onopen=()=>{e(`A`,`data-channel "chat" open — sending greeting`),r.send(`hello from peer A`),r.send(new Uint8Array([1,2,3,4]).buffer)},r.onmessage=n=>{if(typeof n.data==`string`)e(`A`,`received: ${n.data}`);else{let t=new Uint8Array(n.data);e(`A`,`received ArrayBuffer(${t.length}): [${Array.from(t).join(`, `)}]`)}i++,i>=2&&t()},n.ondatachannel=t=>{let n=t.channel;e(`B`,`ondatachannel "${n.label}"`),n.onmessage=t=>{if(typeof t.data==`string`)e(`B`,`received: ${t.data} — echoing back`),n.send(`echo: ${t.data}`);else{let r=new Uint8Array(t.data),i=new Uint8Array(r).reverse();e(`B`,`received ArrayBuffer(${r.length}) — echoing reversed`),n.send(i.buffer)}}}});e(`A`,`createOffer`);let a=await t.createOffer();await t.setLocalDescription(a),await n.setRemoteDescription(a),e(`B`,`createAnswer`);let o=await n.createAnswer();await n.setLocalDescription(o),await t.setRemoteDescription(o),await Promise.race([i,new Promise((e,t)=>setTimeout(()=>t(Error(`Timeout waiting for echo`)),15e3))]),e(`main`,`demo complete — closing peer connections`),t.close(),n.close()}function log(e,t){typeof print==`function`?print(`[${e}] ${t}`):g.log(`[${e}] ${t}`)}const Lt=e.MainLoop.new(null,!1);runLoopback(log).then(()=>{e.timeout_add(e.PRIORITY_DEFAULT,500,()=>(Lt.quit(),e.SOURCE_REMOVE))}).catch(t=>{let n=t;log(`ERROR`,n?.message??String(n)),e.timeout_add(e.PRIORITY_DEFAULT,500,()=>(Lt.quit(),e.SOURCE_REMOVE))}),Lt.run();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gjsify/example-dom-webrtc-loopback",
3
- "version": "0.4.34",
3
+ "version": "0.4.36",
4
4
  "description": "WebRTC data-channel loopback demo (two local peers) for GJS and browser",
5
5
  "main": "dist/gjs.js",
6
6
  "type": "module",
@@ -27,18 +27,27 @@
27
27
  "build:assets": "mkdir -p dist && cp -f src/browser/index.html dist/index.html"
28
28
  },
29
29
  "dependencies": {
30
- "@gjsify/webrtc": "^0.4.34"
30
+ "@gjsify/webrtc": "^0.4.36"
31
31
  },
32
32
  "devDependencies": {
33
- "@girs/gjs": "4.0.1",
34
- "@girs/glib-2.0": "2.88.0-4.0.1",
35
- "@gjsify/cli": "^0.4.34",
36
- "@gjsify/node-globals": "^0.4.34",
37
- "@gjsify/runtime": "^0.4.34",
33
+ "@girs/gjs": "4.0.4",
34
+ "@girs/glib-2.0": "2.88.0-4.0.4",
35
+ "@gjsify/cli": "^0.4.36",
36
+ "@gjsify/node-globals": "^0.4.36",
37
+ "@gjsify/runtime": "^0.4.36",
38
38
  "@types/node": "^25.9.1",
39
39
  "http-server": "^14.1.1",
40
- "typescript": "^6.0.3"
40
+ "typescript": "^5.9.3"
41
41
  },
42
42
  "author": "Pascal Garber <pascal@artandcode.studio>",
43
- "license": "MIT"
43
+ "license": "MIT",
44
+ "repository": {
45
+ "type": "git",
46
+ "url": "git+https://github.com/gjsify/gjsify.git",
47
+ "directory": "showcases/dom/webrtc-loopback"
48
+ },
49
+ "bugs": {
50
+ "url": "https://github.com/gjsify/gjsify/issues"
51
+ },
52
+ "homepage": "https://github.com/gjsify/gjsify/tree/main/showcases/dom/webrtc-loopback#readme"
44
53
  }