@vkontakte/calls-sdk 2.8.13-dev.c9243c68.0 → 2.8.13-dev.da97cd25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/calls-sdk.esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * @vkontakte/calls-sdk v2.8.13-dev.c9243c68.0
3
- * Wed, 09 Sep 2026 17:43:49 GMT
2
+ * @vkontakte/calls-sdk v2.8.13-dev.da97cd25.0
3
+ * Fri, 18 Sep 2026 10:02:42 GMT
4
4
  * https://calls-sdk.cdn-vk.ru/doc/latest/index.html
5
5
  */
6
6
 
@@ -1029,7 +1029,7 @@ var w;
1029
1029
  function g() {
1030
1030
  if (!yt || yt.readyState === "ended") {
1031
1031
  let e = w.getAudioContext(), t = e.createMediaStreamDestination(), n = e.createGain();
1032
- n.gain.value = 1e-5, n.connect(t), n.connect(e.destination);
1032
+ n.gain.value = 1e-5, n.connect(t), w.browserName() === "Safari" && n.connect(e.destination);
1033
1033
  let r = e.createOscillator();
1034
1034
  r.type = "sine", r.frequency.value = 0, r.connect(n), r.start(), yt = t.stream.getAudioTracks()[0];
1035
1035
  }
@@ -2152,10 +2152,13 @@ var yn = vn.getInstance(), M = class e {
2152
2152
  return "ok.calls.sdk.js";
2153
2153
  }
2154
2154
  static get appVersion() {
2155
+ return e._params.appVersion;
2156
+ }
2157
+ static get apiClientVersion() {
2155
2158
  return 1.1;
2156
2159
  }
2157
2160
  static get sdkVersion() {
2158
- return "2.8.13-dev.c9243c68.0";
2161
+ return "2.8.13-dev.da97cd25.0";
2159
2162
  }
2160
2163
  static get debug() {
2161
2164
  return e._params.debug;
@@ -2410,6 +2413,9 @@ var yn = vn.getInstance(), M = class e {
2410
2413
  static get callStatReportEnabled() {
2411
2414
  return e._params.callStatReportEnabled;
2412
2415
  }
2416
+ static get iceCandidateErrorStatEnabled() {
2417
+ return e._params.iceCandidateErrorStatEnabled;
2418
+ }
2413
2419
  static get enableLogPerfStatReport() {
2414
2420
  return e._params.enableLogPerfStatReport;
2415
2421
  }
@@ -2574,10 +2580,12 @@ var yn = vn.getInstance(), M = class e {
2574
2580
  videoSuspend: e._params.videoSuspend,
2575
2581
  debugLog: e._params.debugLog,
2576
2582
  callStatReportEnabled: e._params.callStatReportEnabled,
2583
+ iceCandidateErrorStatEnabled: e._params.iceCandidateErrorStatEnabled,
2577
2584
  joinFromMultipleDevices: e._params.joinFromMultipleDevices,
2578
2585
  movieShare: e._params.movieShare,
2579
2586
  clientType: e._params.clientType,
2580
2587
  clientStatsPlatform: e._params.clientStatsPlatform,
2588
+ appVersion: e._params.appVersion,
2581
2589
  consumerScreenDataChannelPacketSize: e._params.consumerScreenDataChannelPacketSize,
2582
2590
  switchVideoAtBadNetwork: e._params.switchVideoAtBadNetwork,
2583
2591
  simulcast: e._params.simulcast,
@@ -2593,6 +2601,7 @@ var yn = vn.getInstance(), M = class e {
2593
2601
  h(M, "_params", {
2594
2602
  platform: "WEB",
2595
2603
  clientStatsPlatform: "",
2604
+ appVersion: "0.0.0",
2596
2605
  clientType: "PORTAL",
2597
2606
  externalUserType: "",
2598
2607
  device: "browser",
@@ -2642,6 +2651,7 @@ h(M, "_params", {
2642
2651
  networkStatisticsInterval: 2e4,
2643
2652
  perfStatReportEnabled: !0,
2644
2653
  callStatReportEnabled: !1,
2654
+ iceCandidateErrorStatEnabled: !1,
2645
2655
  enableLogPerfStatReport: !1,
2646
2656
  voiceParams: {
2647
2657
  smoothing: .8,
@@ -3065,6 +3075,10 @@ var xn;
3065
3075
  P("onPeerRegistered", e, t);
3066
3076
  }
3067
3077
  e.onPeerRegistered = ot;
3078
+ function st(e, t) {
3079
+ P("onNonFatalError", e, t);
3080
+ }
3081
+ e.onNonFatalError = st;
3068
3082
  })(xn || (xn = {}));
3069
3083
  var L = xn, Sn = /* @__PURE__ */ function(e) {
3070
3084
  return e.DEBUG = "DEBUG", e.LOG = "LOG", e.WARN = "WARN", e.ERROR = "ERROR", e;
@@ -3581,7 +3595,7 @@ var Rn = 0, zn = 1, Bn = 2, Vn = 3, Hn = 4, Un = 5, Wn = 6, Gn = 7, Kn = 0, qn =
3581
3595
  };
3582
3596
  }
3583
3597
  }, H = /* @__PURE__ */ function(e) {
3584
- return e.CALL_INIT = "call_init", e.CALL_START = "call_start", e.CALL_ACCEPTED_OUTGOING = "call_accepted_outgoing", e.CALL_ACCEPTED_INCOMING = "call_accepted_incoming", e.FIRST_MEDIA_SENT = "first_media_sent", e.CALL_FINISH = "call_finish", e.CODEC_USAGE = "codec_usage", e.SIGNALING_CONNECTED = "signaling_connected", e.SCREENSHARE_FIRST_FRAME = "screen_share_first_frame", e.FIRST_MEDIA_RECEIVED = "first_media_received", e.CALL_DECLINED_OR_HANGED_LOCALLY = "CallDeclinedOrHangedLocally", e.USER_FEEDBACK_RECEIVED = "UserFeedbackReceived", e.SIGNALING_PING_SUMMARY = "signaling_ping_summary", e.SIGNALING_COMMAND_SUMMARY = "signaling_command_summary", e.WEBSOCKET_CONNECTED = "websocket_connected", e.WEBSOCKET_RECONNECTED = "websocket_reconnected", e.WEBSOCKET_FAILED_PINGS = "websocket_failed_pings", e.WEBSOCKET_FAILED_EXCEPTION = "websocket_failed_exception", e.WEBSOCKET_TIMEOUT = "websocket_timeout", e.WEBSOCKET_RESTART = "websocket_restart", e.WEBTRANSPORT_CONNECTED = "webtransport_connected", e.WEBTRANSPORT_RECONNECTED = "webtransport_reconnected", e.WEBTRANSPORT_FAILED_PINGS = "webtransport_failed_pings", e.WEBTRANSPORT_FAILED_EXCEPTION = "webtransport_failed_exception", e.WEBTRANSPORT_TIMEOUT = "webtransport_timeout", e.WEBTRANSPORT_RESTART = "webtransport_restart", e;
3598
+ return e.CALL_INIT = "call_init", e.CALL_START = "call_start", e.CALL_ACCEPTED_OUTGOING = "call_accepted_outgoing", e.CALL_ACCEPTED_INCOMING = "call_accepted_incoming", e.FIRST_MEDIA_SENT = "first_media_sent", e.CALL_FINISH = "call_finish", e.CODEC_USAGE = "codec_usage", e.SIGNALING_CONNECTED = "signaling_connected", e.SCREENSHARE_FIRST_FRAME = "screen_share_first_frame", e.FIRST_MEDIA_RECEIVED = "first_media_received", e.CALL_DECLINED_OR_HANGED_LOCALLY = "CallDeclinedOrHangedLocally", e.USER_FEEDBACK_RECEIVED = "UserFeedbackReceived", e.SIGNALING_PING_SUMMARY = "signaling_ping_summary", e.SIGNALING_COMMAND_SUMMARY = "signaling_command_summary", e.CONNECTION_STATE_CHANGED = "connection_state_changed", e.SIGNALING_STATE_CHANGED = "signaling_state_changed", e.GATHERING_STATE_CHANGED = "gathering_state_changed", e.ICE_RESTART = "ice_restart", e.ICE_CANDIDATES_CHANGED = "ice_candidates_changed", e.ICE_CANDIDATE_GATHERING_FAILED = "ice_candidate_gathering_failed", e.ICE_CANDIDATE_ADD_FAILED = "ice_candidate_add_failed", e.WEBSOCKET_CONNECTED = "websocket_connected", e.WEBSOCKET_RECONNECTED = "websocket_reconnected", e.WEBSOCKET_FAILED_PINGS = "websocket_failed_pings", e.WEBSOCKET_FAILED_EXCEPTION = "websocket_failed_exception", e.WEBSOCKET_TIMEOUT = "websocket_timeout", e.WEBSOCKET_RESTART = "websocket_restart", e.WEBTRANSPORT_CONNECTED = "webtransport_connected", e.WEBTRANSPORT_RECONNECTED = "webtransport_reconnected", e.WEBTRANSPORT_FAILED_PINGS = "webtransport_failed_pings", e.WEBTRANSPORT_FAILED_EXCEPTION = "webtransport_failed_exception", e.WEBTRANSPORT_TIMEOUT = "webtransport_timeout", e.WEBTRANSPORT_RESTART = "webtransport_restart", e;
3585
3599
  }(H || {}), er = 1e3;
3586
3600
  function U(e, t, n = 0) {
3587
3601
  return t in e && e[t] ? e[t] : n;
@@ -3819,14 +3833,83 @@ function kr() {
3819
3833
  };
3820
3834
  }
3821
3835
  //#endregion
3822
- //#region src/classes/stat/FirstMediaSentProbe.ts
3823
- var Ar = 200;
3824
- function jr(e) {
3836
+ //#region src/classes/stat/PeerConnectionStats.ts
3837
+ var Ar = /[?&]transport=(tcp|udp)/i, jr = {
3838
+ stable: "stable",
3839
+ "have-local-offer": "have.local.offer",
3840
+ "have-local-pranswer": "have.local.answer",
3841
+ "have-remote-offer": "have.remote.offer",
3842
+ "have-remote-pranswer": "have.remote.answer",
3843
+ closed: "closed"
3844
+ }, Mr = class {
3845
+ constructor(e) {
3846
+ h(this, "_statAggregator", void 0), h(this, "_pc", null), h(this, "_lastSignalingStateChange", 0), h(this, "_lastGatheringStateChange", 0), h(this, "_handleConnectionStateChange", () => {
3847
+ this._log({
3848
+ name: H.CONNECTION_STATE_CHANGED,
3849
+ value: 0,
3850
+ connection_state: this._pc?.connectionState
3851
+ });
3852
+ }), h(this, "_handleSignalingStateChange", () => {
3853
+ let e = this._pc?.signalingState;
3854
+ this._log({
3855
+ name: H.SIGNALING_STATE_CHANGED,
3856
+ value: this._sinceLastChange("_lastSignalingStateChange"),
3857
+ string_value: e ? jr[e] : void 0
3858
+ });
3859
+ }), h(this, "_handleGatheringStateChange", () => {
3860
+ let e = this._pc?.iceGatheringState, t = this._sinceLastChange("_lastGatheringStateChange");
3861
+ this._log({
3862
+ name: H.GATHERING_STATE_CHANGED,
3863
+ value: e === "new" ? 0 : t,
3864
+ string_value: e
3865
+ });
3866
+ }), h(this, "_handleIceCandidateError", (e) => {
3867
+ if (!M.iceCandidateErrorStatEnabled) return;
3868
+ let t = e;
3869
+ this._log({
3870
+ name: H.ICE_CANDIDATE_GATHERING_FAILED,
3871
+ value: t.errorCode,
3872
+ string_value: t.errorText,
3873
+ local_address: t.address ?? void 0,
3874
+ remote_url: t.url,
3875
+ transport: Ar.exec(t.url ?? "")?.[1]?.toLowerCase()
3876
+ });
3877
+ }), this._statAggregator = e;
3878
+ }
3879
+ observe(e) {
3880
+ this.stop(), this._pc = e, this._lastSignalingStateChange = 0, this._lastGatheringStateChange = 0, e.addEventListener("connectionstatechange", this._handleConnectionStateChange), e.addEventListener("signalingstatechange", this._handleSignalingStateChange), e.addEventListener("icegatheringstatechange", this._handleGatheringStateChange), e.addEventListener("icecandidateerror", this._handleIceCandidateError);
3881
+ }
3882
+ stop() {
3883
+ this._pc && (this._pc.removeEventListener("connectionstatechange", this._handleConnectionStateChange), this._pc.removeEventListener("signalingstatechange", this._handleSignalingStateChange), this._pc.removeEventListener("icegatheringstatechange", this._handleGatheringStateChange), this._pc.removeEventListener("icecandidateerror", this._handleIceCandidateError), this._pc = null);
3884
+ }
3885
+ logIceRestart() {
3886
+ this._log({
3887
+ name: H.ICE_RESTART,
3888
+ value: 0
3889
+ });
3890
+ }
3891
+ logIceCandidateAddFailed(e, t) {
3892
+ this._log({
3893
+ name: H.ICE_CANDIDATE_ADD_FAILED,
3894
+ value: t instanceof DOMException ? t.code : 0,
3895
+ string_value: t instanceof Error ? `${t.name}: ${t.message}` : String(t),
3896
+ remote_url: e.candidate
3897
+ });
3898
+ }
3899
+ _sinceLastChange(e) {
3900
+ let t = Date.now(), n = this[e] === 0 ? 0 : t - this[e];
3901
+ return this[e] = t, n;
3902
+ }
3903
+ _log(e) {
3904
+ this._statAggregator?.logEventualStat(e);
3905
+ }
3906
+ }, Nr = 200;
3907
+ function Pr(e) {
3825
3908
  for (let t of e.values()) if (t.type === "outbound-rtp" && (t.packetsSent ?? 0) > 0) return !0;
3826
3909
  return !1;
3827
3910
  }
3828
- var Mr = class {
3829
- constructor(e, t, n = Ar) {
3911
+ var Fr = class {
3912
+ constructor(e, t, n = Nr) {
3830
3913
  h(this, "_peerConnection", void 0), h(this, "_onFirstMediaSent", void 0), h(this, "_pollIntervalMs", void 0), h(this, "_timer", null), h(this, "_state", "idle"), this._peerConnection = e, this._onFirstMediaSent = t, this._pollIntervalMs = n;
3831
3914
  }
3832
3915
  start() {
@@ -3849,7 +3932,7 @@ var Mr = class {
3849
3932
  try {
3850
3933
  let e = await this._getStatsReports();
3851
3934
  if (this._state !== "polling") return;
3852
- if (e.some(jr)) {
3935
+ if (e.some(Pr)) {
3853
3936
  this._state = "stopped", this._onFirstMediaSent();
3854
3937
  return;
3855
3938
  }
@@ -3862,7 +3945,7 @@ var Mr = class {
3862
3945
  this._timer = null, this._poll();
3863
3946
  }, this._pollIntervalMs));
3864
3947
  }
3865
- }, Nr = class extends b {
3948
+ }, Ir = class extends b {
3866
3949
  constructor(e, t, n = null) {
3867
3950
  super(), h(this, "_signaling", void 0), h(this, "_mediaSource", void 0), h(this, "_state", q.IDLE), h(this, "_pc", null), h(this, "_onFirstMediaSent", void 0), h(this, "_firstMediaSentProbe", null), h(this, "_firstMediaSentProbeStopped", !1), this._signaling = e, this._mediaSource = t, this._onFirstMediaSent = n;
3868
3951
  }
@@ -3873,12 +3956,12 @@ var Mr = class {
3873
3956
  this._firstMediaSentProbeStopped = !0, this._disposeFirstMediaSentProbe();
3874
3957
  }
3875
3958
  _startFirstMediaSentProbe() {
3876
- this._disposeFirstMediaSentProbe(), !(!this._pc || !this._onFirstMediaSent || this._firstMediaSentProbeStopped) && (this._firstMediaSentProbe = new Mr(this._pc, this._onFirstMediaSent), this._firstMediaSentProbe.start());
3959
+ this._disposeFirstMediaSentProbe(), !(!this._pc || !this._onFirstMediaSent || this._firstMediaSentProbeStopped) && (this._firstMediaSentProbe = new Fr(this._pc, this._onFirstMediaSent), this._firstMediaSentProbe.start());
3877
3960
  }
3878
3961
  _disposeFirstMediaSentProbe() {
3879
3962
  this._firstMediaSentProbe?.destroy(), this._firstMediaSentProbe = null;
3880
3963
  }
3881
- }, Pr = class {
3964
+ }, Lr = class {
3882
3965
  constructor(e, t = null) {
3883
3966
  h(this, "weightUp", void 0), h(this, "weightDown", void 0), h(this, "value", NaN), this.weightUp = e, this.weightDown = t ?? e;
3884
3967
  }
@@ -3896,7 +3979,7 @@ var Mr = class {
3896
3979
  getValue() {
3897
3980
  return this.value;
3898
3981
  }
3899
- }, Fr = .25, Ir = .35, Lr = 85, Rr = .1, zr = 1.5, Br = .1, Vr = 1, Hr = .6, Ur = .3, Wr = class extends b {
3982
+ }, Rr = .25, zr = .35, Br = 85, Vr = .1, Hr = 1.5, Ur = .1, Wr = 1, Gr = .6, Kr = .3, qr = class extends b {
3900
3983
  constructor(e, t = R) {
3901
3984
  super(), h(this, "_signaling", void 0), h(this, "_localNetworkStat", void 0), h(this, "_remoteNetworkStat", void 0), h(this, "_lastNetworkStat", void 0), h(this, "_networkLimits", {
3902
3985
  badNet: {
@@ -3908,8 +3991,8 @@ var Mr = class {
3908
3991
  rtt: 600
3909
3992
  }
3910
3993
  }), h(this, "_lastStatSentTimestamp", 0), h(this, "_currentState", "good"), h(this, "_debug", void 0), this._debug = t, this._signaling = e, this._localNetworkStat = {
3911
- rtt: new Pr(Fr, Fr),
3912
- loss: new Pr(Ir, Ir),
3994
+ rtt: new Lr(Rr, Rr),
3995
+ loss: new Lr(zr, zr),
3913
3996
  bitrate: 0
3914
3997
  }, this._remoteNetworkStat = {
3915
3998
  rtt: 0,
@@ -3924,20 +4007,20 @@ var Mr = class {
3924
4007
  _calcRttRating(e) {
3925
4008
  let t = typeof e == "number" ? e : e.getValue(), n = 1;
3926
4009
  if (isNaN(t)) return n;
3927
- let r = Math.round((t - this._networkLimits.goodNet.rtt) / Lr);
3928
- for (let e = 0; e < r; e++) n *= 1 - Rr;
4010
+ let r = Math.round((t - this._networkLimits.goodNet.rtt) / Br);
4011
+ for (let e = 0; e < r; e++) n *= 1 - Vr;
3929
4012
  return n;
3930
4013
  }
3931
4014
  _calcLossRating(e) {
3932
4015
  let t = typeof e == "number" ? e : e.getValue(), n = 1;
3933
4016
  if (isNaN(t)) return n;
3934
- let r = Math.round((t - this._networkLimits.goodNet.loss) / zr);
3935
- for (let e = 0; e < r; e++) n *= 1 - Br;
4017
+ let r = Math.round((t - this._networkLimits.goodNet.loss) / Hr);
4018
+ for (let e = 0; e < r; e++) n *= 1 - Ur;
3936
4019
  return n;
3937
4020
  }
3938
4021
  _calcBitrateRating(e, t) {
3939
4022
  if (!e || !t) return 1;
3940
- let n = 1 - (1 - Math.min(e, t) / Math.max(e, t)) * Vr;
4023
+ let n = 1 - (1 - Math.min(e, t) / Math.max(e, t)) * Wr;
3941
4024
  return Math.min(n, 1);
3942
4025
  }
3943
4026
  _calcUDPRating({ rtt: e, loss: t }) {
@@ -3947,7 +4030,7 @@ var Mr = class {
3947
4030
  return n ? this._calcBitrateRating(e.bitrate, t.bitrate) : this._calcUDPRating(e) * this._calcUDPRating(t);
3948
4031
  }
3949
4032
  _getNetworkState(e) {
3950
- return isNaN(e) || e >= Hr ? "good" : e >= Ur ? "medium" : "bad";
4033
+ return isNaN(e) || e >= Gr ? "good" : e >= Kr ? "medium" : "bad";
3951
4034
  }
3952
4035
  updateSettings(e) {
3953
4036
  Object.assign(this._networkLimits.badNet, e?.badNet || {}), Object.assign(this._networkLimits.goodNet, e?.goodNet || {});
@@ -3971,7 +4054,7 @@ var Mr = class {
3971
4054
  let { rtt: t, loss: n, bitrate: r } = e || {};
3972
4055
  this._remoteNetworkStat.rtt = t || 0, this._remoteNetworkStat.loss = n || 0, this._remoteNetworkStat.bitrate = r || 0;
3973
4056
  }
3974
- }, Gr = 30 * 1e3, Kr = class e extends Nr {
4057
+ }, Jr = 30 * 1e3, Yr = class e extends Ir {
3975
4058
  constructor(e, t, n, r, i, a = R, o = null, s = null, c = null, l = null) {
3976
4059
  super(n, r, l), h(this, "_participantId", void 0), h(this, "_isMaster", void 0), h(this, "_remoteSDP", {}), h(this, "_remoteCandidates", {}), h(this, "_lastRemoteSDP", null), h(this, "_animojiDataChannel", null), h(this, "_animojiReceiver", null), h(this, "_animojiSender", null), h(this, "_remoteAnimojiVersion", 1), h(this, "_isOpen", !1), h(this, "_remotePeerId", null), h(this, "_statInterval", null), h(this, "_settingsInterval", null), h(this, "_failedOnCreate", null), h(this, "_remoteStream", null), h(this, "_iceRestartTimeout", null), h(this, "_reconnectionTimeout", null), h(this, "_reconnectionPrevented", !1), h(this, "_remoteHold", !1), h(this, "_lastStat", null), h(this, "_fingerprint", null), h(this, "_neverConnected", !0), h(this, "_serverSettings", void 0), h(this, "_prevConsumerSettings", {}), h(this, "_networkLimitsForVideo", {
3977
4060
  bad: {
@@ -3986,7 +4069,7 @@ var Mr = class {
3986
4069
  worst: 320,
3987
4070
  bad: 640,
3988
4071
  good: 1280
3989
- }), h(this, "_lastVideoMaxDimension", this._videoMaxDimensionsForNet.good), h(this, "_lastBadConnection", 0), h(this, "_perfStatReporter", void 0), h(this, "_directStatReporter", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_codecStatsAggregator", void 0), this._participantId = e, this._isMaster = t, this._serverSettings = i, this._debug = a, this._logger = o, this._statAggregator = s, this._codecStatsAggregator = c, this._perfStatReporter = new pa(this, n, this._statAggregator, !0, this._debug), this._directStatReporter = new Wr(n, this._debug), this.subscribe(this._signaling, G.NOTIFICATION, this._onSignalingNotification.bind(this)), this.subscribe(this._mediaSource, qt.TRACK_REPLACED, this._onReplacedTrack.bind(this)), this.subscribe(this._mediaSource, qt.SOURCE_CHANGED, this._applySettings.bind(this)), this.subscribe(this._directStatReporter, X.NETWORK_STATUS, this._onNetworkStatus.bind(this));
4072
+ }), h(this, "_lastVideoMaxDimension", this._videoMaxDimensionsForNet.good), h(this, "_lastBadConnection", 0), h(this, "_perfStatReporter", void 0), h(this, "_directStatReporter", void 0), h(this, "_peerConnectionStats", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_codecStatsAggregator", void 0), this._participantId = e, this._isMaster = t, this._serverSettings = i, this._debug = a, this._logger = o, this._statAggregator = s, this._codecStatsAggregator = c, this._perfStatReporter = new ga(this, n, this._statAggregator, !0, this._debug), this._directStatReporter = new qr(n, this._debug), this._peerConnectionStats = new Mr(this._statAggregator), this.subscribe(this._signaling, G.NOTIFICATION, this._onSignalingNotification.bind(this)), this.subscribe(this._mediaSource, qt.TRACK_REPLACED, this._onReplacedTrack.bind(this)), this.subscribe(this._mediaSource, qt.SOURCE_CHANGED, this._applySettings.bind(this)), this.subscribe(this._directStatReporter, X.NETWORK_STATUS, this._onNetworkStatus.bind(this));
3990
4073
  try {
3991
4074
  this._pc = this._createPeerConnection();
3992
4075
  } catch (e) {
@@ -4090,12 +4173,12 @@ var Mr = class {
4090
4173
  iceServers: M.iceServers,
4091
4174
  iceTransportPolicy: M.forceRelayPolicy ? "relay" : "all"
4092
4175
  });
4093
- return e.onicecandidate = this._handleIceCandidate.bind(this), e.ontrack = this._onAddTrack.bind(this), e.oniceconnectionstatechange = this._onIceConnectionStateChange.bind(this), e.onconnectionstatechange = this._onConnectionStateChange.bind(this), e.onsignalingstatechange = this._onSignalingStateChange.bind(this), this._prevConsumerSettings = {}, M.vmoji && this._createDataChannel(e, Sr.animoji, (e) => {
4176
+ return e.onicecandidate = this._handleIceCandidate.bind(this), e.ontrack = this._onAddTrack.bind(this), e.oniceconnectionstatechange = this._onIceConnectionStateChange.bind(this), e.onconnectionstatechange = this._onConnectionStateChange.bind(this), e.onsignalingstatechange = this._onSignalingStateChange.bind(this), this._peerConnectionStats.observe(e), this._prevConsumerSettings = {}, M.vmoji && this._createDataChannel(e, Sr.animoji, (e) => {
4094
4177
  this._animojiDataChannel = e, this._animojiDataChannel.binaryType = "arraybuffer", this._animojiReceiver?.setDataChannel(this._animojiDataChannel), this._animojiSender?.setDataChannel(this._animojiDataChannel);
4095
4178
  }), e;
4096
4179
  }
4097
4180
  _disposePeerConnection() {
4098
- if (this._disposeFirstMediaSentProbe(), this._lastStat = null, this._remoteStream) {
4181
+ if (this._disposeFirstMediaSentProbe(), this._peerConnectionStats.stop(), this._lastStat = null, this._remoteStream) {
4099
4182
  let e = this._remoteStream;
4100
4183
  e.getTracks().forEach((t) => {
4101
4184
  t.stop(), this._triggerEvent(X.REMOTE_TRACK_REMOVED, e, t);
@@ -4144,7 +4227,7 @@ var Mr = class {
4144
4227
  try {
4145
4228
  await this._pc.addIceCandidate(new RTCIceCandidate(t));
4146
4229
  } catch (e) {
4147
- throw this._logger?.log(C.ERROR, "addIceCandidate-direct"), this._debug.error("Unable to add remote ice candidate", e, {
4230
+ throw this._logger?.log(C.ERROR, "addIceCandidate-direct"), this._peerConnectionStats.logIceCandidateAddFailed(t, e), this._debug.error("Unable to add remote ice candidate", e, {
4148
4231
  participantId: this._participantId,
4149
4232
  candidate: t
4150
4233
  }), e;
@@ -4263,7 +4346,7 @@ var Mr = class {
4263
4346
  this._reconnectionTimeout && (clearTimeout(this._reconnectionTimeout), this._reconnectionTimeout = null), this._iceRestartTimeout && (clearTimeout(this._iceRestartTimeout), this._iceRestartTimeout = null);
4264
4347
  }
4265
4348
  _startIceRestart() {
4266
- this._isMaster ? (this._logger?.log(C.ICE_RESTART), this._debug.log("Ice restart", { participantId: this._participantId }), this._createOffer(!0).catch(this.close.bind(this))) : this._debug.debug("Waiting for ice restart...", { participantId: this._participantId }), this._iceRestartTimeout = window.setTimeout(() => {
4349
+ this._isMaster ? (this._peerConnectionStats.logIceRestart(), this._logger?.log(C.ICE_RESTART), this._debug.log("Ice restart", { participantId: this._participantId }), this._createOffer(!0).catch(this.close.bind(this))) : this._debug.debug("Waiting for ice restart...", { participantId: this._participantId }), this._iceRestartTimeout = window.setTimeout(() => {
4267
4350
  this._iceRestartTimeout = null, this._debug.error("Ice restart failed", { participantId: this._participantId }), this._logger?.log(C.ERROR, "iceRestart-direct"), this._requestTopologySwitch();
4268
4351
  }, M.iceRestartWaitTime);
4269
4352
  }
@@ -4385,7 +4468,7 @@ var Mr = class {
4385
4468
  async _checkPPTNetwork(e) {
4386
4469
  if (!M.switchVideoAtBadNetwork || !e.inbound.transport.averageNetStat) return;
4387
4470
  let { averageNetStat: t } = e.inbound.transport, n = t.currentRoundTripTime <= this._networkLimitsForVideo.good.rtt && t.lostPercent <= this._networkLimitsForVideo.good.loss, r = t.currentRoundTripTime >= this._networkLimitsForVideo.bad.rtt || t.lostPercent >= this._networkLimitsForVideo.bad.loss, i = t.currentRoundTripTime < this._networkLimitsForVideo.bad.rtt, a = this._videoMaxDimensionsForNet.good, o = Er.L1T1;
4388
- if (r ? (this._lastBadConnection = Date.now(), i ? (a = this._videoMaxDimensionsForNet.bad, o = Er.L1T2) : (a = this._videoMaxDimensionsForNet.worst, o = Er.L1T3)) : n && (a = this._videoMaxDimensionsForNet.good, o = Er.L1T1), !(a < this._lastVideoMaxDimension || Date.now() - this._lastBadConnection > Gr) || this._lastVideoMaxDimension === a) return;
4471
+ if (r ? (this._lastBadConnection = Date.now(), i ? (a = this._videoMaxDimensionsForNet.bad, o = Er.L1T2) : (a = this._videoMaxDimensionsForNet.worst, o = Er.L1T3)) : n && (a = this._videoMaxDimensionsForNet.good, o = Er.L1T1), !(a < this._lastVideoMaxDimension || Date.now() - this._lastBadConnection > Jr) || this._lastVideoMaxDimension === a) return;
4389
4472
  let s = this._serverSettings.camera;
4390
4473
  if (!s || !await this._isSVCSupported(e, o)) return;
4391
4474
  this._debug.debug("Switch outbound video frame size and scalabilityMode", {
@@ -4450,9 +4533,9 @@ var Mr = class {
4450
4533
  }, n(r)) : this._debug.error(`[${t}] data channel open failed, state [${e}]`);
4451
4534
  };
4452
4535
  }
4453
- }, qr = /* @__PURE__ */ function(e) {
4536
+ }, Xr = /* @__PURE__ */ function(e) {
4454
4537
  return e.AUDIO_MIX = "audio-mix", e.PARTICIPANT_AGNOSTIC_TRACK_PREFIX = "pat", e.TRANSPARENT_AUDIO_TRACK_PREFIX = "ta", e;
4455
- }({}), Jr = 16, Yr = class e {
4538
+ }({}), Zr = 16, Qr = class e {
4456
4539
  constructor(e, t, n, r = R) {
4457
4540
  h(this, "_datachannel", void 0), h(this, "_participantIdRegistry", void 0), h(this, "_asrCallback", void 0), h(this, "_textDecoder", void 0), h(this, "_debug", void 0), this._debug = r, this._debug.debug("AsrReceiver started"), this._datachannel = e, this._participantIdRegistry = t, this._asrCallback = n, this._textDecoder = new TextDecoder(), this._datachannel.onmessage = (e) => this._onDataChannelMessage(e.data);
4458
4541
  }
@@ -4466,7 +4549,7 @@ var Mr = class {
4466
4549
  ssrc: a,
4467
4550
  timestamp: o,
4468
4551
  duration: s,
4469
- data: e.slice(Jr)
4552
+ data: e.slice(Zr)
4470
4553
  };
4471
4554
  }
4472
4555
  _onDataChannelMessage(t) {
@@ -4486,7 +4569,7 @@ var Mr = class {
4486
4569
  destroy() {
4487
4570
  this._datachannel.onmessage = null;
4488
4571
  }
4489
- }, Xr, Zr = class {
4572
+ }, $r, ei = class {
4490
4573
  constructor() {
4491
4574
  h(this, "_value", 1);
4492
4575
  }
@@ -4497,10 +4580,10 @@ var Mr = class {
4497
4580
  this._value = e;
4498
4581
  }
4499
4582
  };
4500
- Xr = Zr, h(Zr, "_instance", null), h(Zr, "getInstance", () => (Xr._instance || (Xr._instance = new Xr()), Xr._instance));
4583
+ $r = ei, h(ei, "_instance", null), h(ei, "getInstance", () => ($r._instance || ($r._instance = new $r()), $r._instance));
4501
4584
  //#endregion
4502
4585
  //#region src/classes/ParticipantIdRegistry.ts
4503
- var Qr = class {
4586
+ var ti = class {
4504
4587
  constructor(e = R) {
4505
4588
  h(this, "streamDescriptionByCompactId", /* @__PURE__ */ new Map()), h(this, "compactIdByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_debug", void 0), this._debug = e;
4506
4589
  }
@@ -4616,7 +4699,7 @@ var Qr = class {
4616
4699
  this._debug.error("unexpected null sequenceNumber", e, r);
4617
4700
  continue;
4618
4701
  }
4619
- let l = qr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX + "-" + e, u = i ? i >>> 0 : null;
4702
+ let l = Xr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX + "-" + e, u = i ? i >>> 0 : null;
4620
4703
  n.push({
4621
4704
  participantStreamDescription: c,
4622
4705
  streamId: l,
@@ -4634,7 +4717,7 @@ var Qr = class {
4634
4717
  }
4635
4718
  }, Y = /* @__PURE__ */ function(e) {
4636
4719
  return e.INIT = "init", e.READY = "ready", e.FRAME = "frame", e.SET_BITRATE = "set_bitrate", e.ERROR = "error", e.DEBUG = "debug", e.LOG_ERROR = "log_error", e;
4637
- }({}), $r = class {
4720
+ }({}), ni = class {
4638
4721
  constructor(e = R, t = null) {
4639
4722
  h(this, "_worker", null), h(this, "_debug", void 0), h(this, "_logger", void 0), this._debug = e, this._logger = t;
4640
4723
  }
@@ -4699,7 +4782,7 @@ var Qr = class {
4699
4782
  static isBrowserSupported() {
4700
4783
  throw Error("Not implemented");
4701
4784
  }
4702
- }, ei = class extends $r {
4785
+ }, ri = class extends ni {
4703
4786
  constructor(e = R, t = null) {
4704
4787
  super(e, t);
4705
4788
  }
@@ -4723,7 +4806,7 @@ var Qr = class {
4723
4806
  static isBrowserSupported() {
4724
4807
  return "WebAssembly" in window && "Worker" in window;
4725
4808
  }
4726
- }, ti = class extends $r {
4809
+ }, ii = class extends ni {
4727
4810
  constructor(e = R, t = null) {
4728
4811
  super(e, t);
4729
4812
  }
@@ -4746,7 +4829,7 @@ var Qr = class {
4746
4829
  static isBrowserSupported() {
4747
4830
  return "VideoDecoder" in window && "Worker" in window && "VideoFrame" in window && !T.isBrokenVP9Decoder() && T.browserName() !== "Firefox";
4748
4831
  }
4749
- }, ni = class {
4832
+ }, ai = class {
4750
4833
  constructor(e = null, t = 0) {
4751
4834
  h(this, "_counter", 0), h(this, "_interval", 0), h(this, "_lastCalculationTime", Date.now()), h(this, "_onCalculated", null), this._onCalculated = e, t && (this._interval = window.setInterval(() => this.calculate(), t));
4752
4835
  }
@@ -4760,7 +4843,7 @@ var Qr = class {
4760
4843
  destroy() {
4761
4844
  window.clearInterval(this._interval), this._interval = 0;
4762
4845
  }
4763
- }, ri = class {
4846
+ }, oi = class {
4764
4847
  constructor(e, t) {
4765
4848
  h(this, "_participantId", void 0), h(this, "_statAggregator", void 0), h(this, "_firstFrameReceived", !1), this._participantId = e, this._statAggregator = t;
4766
4849
  }
@@ -4775,14 +4858,14 @@ var Qr = class {
4775
4858
  height: t
4776
4859
  });
4777
4860
  }
4778
- }, ii = 65536, ai = "MARK_SCREENSHARE_FREEZE_DURATION", oi = class e {
4861
+ }, si = 65536, ci = "MARK_SCREENSHARE_FREEZE_DURATION", li = class e {
4779
4862
  constructor(e, t, n, r, i, a = R) {
4780
- h(this, "_participantId", void 0), h(this, "_onStream", void 0), h(this, "_onStat", void 0), h(this, "_onKeyFrameRequested", void 0), h(this, "_statScreenShareFirstFrame", void 0), h(this, "_debug", void 0), h(this, "_chunks", []), this._participantId = e, this._onStream = t, this._onStat = n, this._onKeyFrameRequested = i, this._statScreenShareFirstFrame = new ri(e, r), this._debug = a;
4863
+ h(this, "_participantId", void 0), h(this, "_onStream", void 0), h(this, "_onStat", void 0), h(this, "_onKeyFrameRequested", void 0), h(this, "_statScreenShareFirstFrame", void 0), h(this, "_debug", void 0), h(this, "_chunks", []), this._participantId = e, this._onStream = t, this._onStat = n, this._onKeyFrameRequested = i, this._statScreenShareFirstFrame = new oi(e, r), this._debug = a;
4781
4864
  }
4782
4865
  appendChunk(t) {
4783
4866
  let n = this._chunks.length;
4784
4867
  if (t.start) this._measureFreezeDuration(!1), this._measureFreezeDuration(!0), n && (this._debug.warn("[FrameBuilder] Cleanup buffer", Array.prototype.slice.call(this._chunks)), this._chunks = []);
4785
- else if (!n || (this._chunks[n - 1].sequence + 1) % ii !== t.sequence) {
4868
+ else if (!n || (this._chunks[n - 1].sequence + 1) % si !== t.sequence) {
4786
4869
  this._debug.warn("[FrameBuilder] Got incorrect chunk");
4787
4870
  return;
4788
4871
  }
@@ -4799,7 +4882,7 @@ var Qr = class {
4799
4882
  }
4800
4883
  }
4801
4884
  destroy() {
4802
- W.clearMark(ai), W.clearMark(W.getMarkNameScreenshareFirstFrame(this._participantId)), this._chunks = [];
4885
+ W.clearMark(ci), W.clearMark(W.getMarkNameScreenshareFirstFrame(this._participantId)), this._chunks = [];
4803
4886
  }
4804
4887
  _processFrameData() {
4805
4888
  let e = this._chunks;
@@ -4822,13 +4905,13 @@ var Qr = class {
4822
4905
  }
4823
4906
  _measureFreezeDuration(e) {
4824
4907
  if (e) {
4825
- W.setMark(ai);
4908
+ W.setMark(ci);
4826
4909
  return;
4827
4910
  }
4828
- let t = W.measureMark(ai);
4911
+ let t = W.measureMark(ci);
4829
4912
  t !== null && t > 1e3 && this._onStat({ freeze_duration: t });
4830
4913
  }
4831
- }, si = class {
4914
+ }, ui = class {
4832
4915
  constructor(e) {
4833
4916
  h(this, "_onStream", void 0), this._onStream = e;
4834
4917
  }
@@ -4841,7 +4924,7 @@ var Qr = class {
4841
4924
  static isBrowserSupported() {
4842
4925
  throw Error("Method `isBrowserSupported` is not implemented");
4843
4926
  }
4844
- }, ci = class extends si {
4927
+ }, di = class extends ui {
4845
4928
  constructor(e, t = R) {
4846
4929
  super(e), h(this, "_useImageBitmap", void 0), h(this, "_canvas", null), h(this, "_canvasContext", null), h(this, "_stream", null), h(this, "_track", null), h(this, "_debug", void 0), this._debug = t, this._debug.debug("CanvasRenderer started"), this._useImageBitmap = "ImageBitmap" in window;
4847
4930
  }
@@ -4901,7 +4984,7 @@ var Qr = class {
4901
4984
  static isBrowserSupported() {
4902
4985
  return ("CanvasCaptureMediaStream" in window || "CanvasCaptureMediaStreamTrack" in window) && !(T.browserName() === "Safari" && Number(T.browserVersion()) === 15);
4903
4986
  }
4904
- }, li = class extends si {
4987
+ }, fi = class extends ui {
4905
4988
  constructor(e, t = R) {
4906
4989
  super(e), h(this, "_generator", void 0), h(this, "_writer", void 0), h(this, "_stream", void 0), h(this, "_debug", void 0), this._debug = t, this._debug.debug("TrackGeneratorRenderer started"), this._generator = new MediaStreamTrackGenerator({ kind: k.video }), this._writer = this._generator.writable.getWriter(), this._stream = new MediaStream([this._generator]), this._onStream(this._stream);
4907
4990
  }
@@ -4912,9 +4995,9 @@ var Qr = class {
4912
4995
  this._writer.releaseLock(), this._generator.writable.close().then(() => this._generator.stop()), this._debug.debug("TrackGeneratorRenderer destroyed");
4913
4996
  }
4914
4997
  static isBrowserSupported() {
4915
- return "VideoFrame" in window && "MediaStreamTrackGenerator" in window && ti.isBrowserSupported();
4998
+ return "VideoFrame" in window && "MediaStreamTrackGenerator" in window && ii.isBrowserSupported();
4916
4999
  }
4917
- }, ui = class extends oi {
5000
+ }, pi = class extends li {
4918
5001
  constructor(e, t, n, r, i, a = R, o = null) {
4919
5002
  super(e, t, n, r, i, a), h(this, "_renderer", void 0), h(this, "_decoder", void 0), h(this, "_decoderReady", !1), h(this, "_decoderBusy", !1), h(this, "_decoderQueue", []), h(this, "_webCodecsRetryAttempted", !1), h(this, "_fpsMeter", void 0), h(this, "_logger", void 0), this._logger = o, this._debug.debug(`StreamBuilder started for participant [${e}]`), this._initFpsMeter(), this._initRenderer(), this._initDecoder();
4920
5003
  }
@@ -4922,16 +5005,16 @@ var Qr = class {
4922
5005
  e.keyframe && (this._decoderQueue = []), this._decoderQueue.push(e), this._decodeQueue();
4923
5006
  }
4924
5007
  _initFpsMeter() {
4925
- this._fpsMeter = new ni((e) => this._debug.log(`[StreamBuilder][${this._participantId}] fps: ${e}`), 2e4);
5008
+ this._fpsMeter = new ai((e) => this._debug.log(`[StreamBuilder][${this._participantId}] fps: ${e}`), 2e4);
4926
5009
  }
4927
5010
  _initRenderer(e = !1) {
4928
- e || !li.isBrowserSupported() ? this._renderer = new ci(this._onStream, this._debug) : this._renderer = new li(this._onStream, this._debug);
5011
+ e || !fi.isBrowserSupported() ? this._renderer = new di(this._onStream, this._debug) : this._renderer = new fi(this._onStream, this._debug);
4929
5012
  }
4930
5013
  _initDecoder(e = !1) {
4931
- e || !ti.isBrowserSupported() ? this._decoder = new ei(this._debug, this._logger) : this._decoder = new ti(this._debug, this._logger), this._decoder.init(async (e) => {
5014
+ e || !ii.isBrowserSupported() ? this._decoder = new ri(this._debug, this._logger) : this._decoder = new ii(this._debug, this._logger), this._decoder.init(async (e) => {
4932
5015
  this._decoderBusy = !1, "VideoFrame" in window && e instanceof VideoFrame ? await this._renderer.drawFrame(e) : await this._renderer.drawImage(e), this._fpsMeter.increment(), this._decodeQueue();
4933
5016
  }, (e) => {
4934
- if (this._decoderBusy = !1, this._decoder instanceof ti && typeof e == "string" && e.includes("EncodingError")) {
5017
+ if (this._decoderBusy = !1, this._decoder instanceof ii && typeof e == "string" && e.includes("EncodingError")) {
4935
5018
  this._decoderQueue = [], !this._webCodecsRetryAttempted && e.includes("reset because error during decoding") ? (this._webCodecsRetryAttempted = !0, this._debug.warn("StreamBuilder retry WebCodecs with software decoder"), this._onKeyFrameRequested?.()) : this._switchToLibVPXDecoder();
4936
5019
  return;
4937
5020
  }
@@ -4939,7 +5022,7 @@ var Qr = class {
4939
5022
  }, this._onKeyFrameRequested).then(() => {
4940
5023
  this._decoderReady = !0, this._decodeQueue();
4941
5024
  }).catch((e) => {
4942
- this._debug.warn("StreamBuilder decoder init failed", e), this._decoder instanceof ti && this._switchToLibVPXDecoder();
5025
+ this._debug.warn("StreamBuilder decoder init failed", e), this._decoder instanceof ii && this._switchToLibVPXDecoder();
4943
5026
  });
4944
5027
  }
4945
5028
  _switchToLibVPXDecoder() {
@@ -4954,20 +5037,20 @@ var Qr = class {
4954
5037
  super.destroy(), this._fpsMeter.destroy(), this._decoder.destroy(), this._renderer.destroy(), this._debug.debug(`StreamBuilder destroyed for participant ${this._participantId}`);
4955
5038
  }
4956
5039
  static isBrowserSupported() {
4957
- return ci.isBrowserSupported() || li.isBrowserSupported();
5040
+ return di.isBrowserSupported() || fi.isBrowserSupported();
4958
5041
  }
4959
- }, di = 1, fi = 1, pi = 2, mi = 0, hi = 1, gi = 2, _i = 4, vi = 8;
4960
- function yi(e, t, n, r, i, a, o) {
5042
+ }, mi = 1, hi = 1, gi = 2, _i = 0, vi = 1, yi = 2, bi = 4, xi = 8;
5043
+ function Si(e, t, n, r, i, a, o) {
4961
5044
  let s = 0;
4962
- t && (s |= hi), n && (s |= gi), r && (s |= _i), o || (s |= vi);
5045
+ t && (s |= vi), n && (s |= yi), r && (s |= bi), o || (s |= xi);
4963
5046
  let c = /* @__PURE__ */ new ArrayBuffer(11), l = new DataView(c);
4964
- if (l.setUint8(0, di), l.setUint16(1, i), l.setUint32(3, e), l.setUint8(7, +!!a), l.setUint16(8, mi), l.setUint8(10, s), !o) return c;
5047
+ if (l.setUint8(0, mi), l.setUint16(1, i), l.setUint32(3, e), l.setUint8(7, +!!a), l.setUint16(8, _i), l.setUint8(10, s), !o) return c;
4965
5048
  let u = new Uint8Array(c.byteLength + o.byteLength);
4966
5049
  return u.set(new Uint8Array(c), 0), u.set(new Uint8Array(o), c.byteLength), u.buffer;
4967
5050
  }
4968
- function bi(e) {
4969
- let t = new DataView(e), n = t.getUint8(0), r = t.getUint16(1), i = t.getUint32(3), a = t.getUint8(7) === 1, o = t.getUint16(8), s = t.getUint8(10), c = !!(s & hi), l = !!(s & gi), u = !!(s & _i), d = !!(s & vi);
4970
- if (n !== di) throw Error(`Unexpected protocol version. Got ${n}, expected ${di}`);
5051
+ function Ci(e) {
5052
+ let t = new DataView(e), n = t.getUint8(0), r = t.getUint16(1), i = t.getUint32(3), a = t.getUint8(7) === 1, o = t.getUint16(8), s = t.getUint8(10), c = !!(s & vi), l = !!(s & yi), u = !!(s & bi), d = !!(s & xi);
5053
+ if (n !== mi) throw Error(`Unexpected protocol version. Got ${n}, expected ${mi}`);
4971
5054
  return {
4972
5055
  timestamp: i,
4973
5056
  start: c,
@@ -4980,26 +5063,26 @@ function bi(e) {
4980
5063
  data: e.slice(11)
4981
5064
  };
4982
5065
  }
4983
- function xi(e) {
5066
+ function wi(e) {
4984
5067
  if (!e || !e.byteLength || e.byteLength !== 4) return !1;
4985
5068
  let t = new DataView(e);
4986
- return !(t.getUint8(0) !== di || t.getUint8(1) !== fi || t.getUint16(2) !== mi);
5069
+ return !(t.getUint8(0) !== mi || t.getUint8(1) !== hi || t.getUint16(2) !== _i);
4987
5070
  }
4988
- function Si(e) {
5071
+ function Ti(e) {
4989
5072
  if (!e || !e.byteLength || e.byteLength !== 10) return null;
4990
5073
  let t = new DataView(e);
4991
- return t.getUint8(0) !== di || t.getUint8(1) !== pi || t.getUint16(2) !== mi ? null : {
5074
+ return t.getUint8(0) !== mi || t.getUint8(1) !== gi || t.getUint16(2) !== _i ? null : {
4992
5075
  seq: t.getUint16(4),
4993
5076
  ts2: t.getUint32(6)
4994
5077
  };
4995
5078
  }
4996
- function Ci(e) {
5079
+ function Ei(e) {
4997
5080
  let t = /* @__PURE__ */ new ArrayBuffer(4), n = new DataView(t);
4998
- return n.setUint8(0, di), n.setUint8(1, fi), n.setUint16(2, e), t;
5081
+ return n.setUint8(0, mi), n.setUint8(1, hi), n.setUint16(2, e), t;
4999
5082
  }
5000
5083
  //#endregion
5001
5084
  //#region src/classes/screenshare/WebmBuilder.ts
5002
- var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5085
+ var Di = 2 ** 15 - 1, Oi = 1, ki = 5, Ai = 5, ji = class e {
5003
5086
  constructor(e, t = R) {
5004
5087
  h(this, "_mediaSource", void 0), h(this, "_codec", void 0), h(this, "_sourceBuffer", null), h(this, "_queue", []), h(this, "_clearBufferTill", 0), h(this, "_debug", void 0), this._mediaSource = new MediaSource(), this._codec = e, this._debug = t;
5005
5088
  let n = () => {
@@ -5042,8 +5125,8 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5042
5125
  this._mediaSource?.readyState === "open" && this._sourceBuffer?.abort();
5043
5126
  let e = this._sourceBuffer?.buffered, t = e?.length;
5044
5127
  if (!t) return;
5045
- let n = e.start(0), r = Math.max(0, e.end(t - 1) - Ei);
5046
- r - n > Di && (this._clearBufferTill = r);
5128
+ let n = e.start(0), r = Math.max(0, e.end(t - 1) - ki);
5129
+ r - n > Ai && (this._clearBufferTill = r);
5047
5130
  }
5048
5131
  destroy() {
5049
5132
  this._queue = [], this._mediaSource.readyState === "open" && (this._sourceBuffer?.abort(), this._mediaSource.endOfStream()), this._sourceBuffer = null, this._clearBufferTill = 0;
@@ -5057,7 +5140,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5057
5140
  get buffered() {
5058
5141
  return this._sourceBuffer?.buffered;
5059
5142
  }
5060
- }, ki = class e extends oi {
5143
+ }, Mi = class e extends li {
5061
5144
  constructor(e, t, n, r, i = R) {
5062
5145
  super(e, t, n, r, void 0, i), h(this, "_mediaBuffer", null), h(this, "_video", null), h(this, "_stream", null), h(this, "_earliestTimestamp", 0), h(this, "_clusterStartTime", 0), h(this, "_lastFrameTimestamp", 0), this._debug.debug(`[WebmBuilder] started for participant [${e}]`);
5063
5146
  }
@@ -5081,8 +5164,8 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5081
5164
  u.element(u.ID.MuxingApp, u.string("vk-webm-builder")),
5082
5165
  u.element(u.ID.WritingApp, u.string("vk-webm-builder"))
5083
5166
  ]), i = [u.element(u.ID.PixelWidth, u.number(e)), u.element(u.ID.PixelHeight, u.number(t))], a = u.element(u.ID.Tracks, u.element(u.ID.TrackEntry, [
5084
- u.element(u.ID.TrackNumber, u.number(Ti)),
5085
- u.element(u.ID.TrackUID, u.number(Ti)),
5167
+ u.element(u.ID.TrackNumber, u.number(Oi)),
5168
+ u.element(u.ID.TrackUID, u.number(Oi)),
5086
5169
  u.element(u.ID.TrackType, u.number(1)),
5087
5170
  u.element(u.ID.FlagLacing, u.number(0)),
5088
5171
  u.element(u.ID.DefaultDuration, u.number(1e9)),
@@ -5095,7 +5178,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5095
5178
  return u.unknownSizeElement(u.ID.Cluster, [u.element(u.ID.Timecode, u.number(Math.round(e)))]);
5096
5179
  }
5097
5180
  _createVideo(e) {
5098
- this._mediaBuffer = new Oi(e, this._debug), this._video = document.createElement("video"), this._video.autoplay = !0, this._video.controls = !1, this._video.muted = !0, this._video.style.pointerEvents = "none", this._video.style.visibility = "hidden", this._video.style.position = "absolute", this._video.style.width = "160px", this._video.style.height = "90px", this._video.style.bottom = "0", this._video.style.right = "0", this._video.style.zIndex = "5000", this._video.src = URL.createObjectURL(this._mediaBuffer.mediaSource), document.body.appendChild(this._video);
5181
+ this._mediaBuffer = new ji(e, this._debug), this._video = document.createElement("video"), this._video.autoplay = !0, this._video.controls = !1, this._video.muted = !0, this._video.style.pointerEvents = "none", this._video.style.visibility = "hidden", this._video.style.position = "absolute", this._video.style.width = "160px", this._video.style.height = "90px", this._video.style.bottom = "0", this._video.style.right = "0", this._video.style.zIndex = "5000", this._video.src = URL.createObjectURL(this._mediaBuffer.mediaSource), document.body.appendChild(this._video);
5099
5182
  let t = () => {
5100
5183
  if (this._video?.src) {
5101
5184
  this._debug.warn(`[WebmBuilder] Video paused for participant [${this._participantId}], try to play again`);
@@ -5122,13 +5205,13 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5122
5205
  this._mediaBuffer?.append(a);
5123
5206
  }
5124
5207
  let i = Math.round(r - this._clusterStartTime);
5125
- if (i > wi && (this._clusterStartTime = r, i = 0), i === 0) {
5208
+ if (i > Di && (this._clusterStartTime = r, i = 0), i === 0) {
5126
5209
  this._debug.debug(`[WebmBuilder] Cluster header for participant [${this._participantId}]`);
5127
5210
  let t = e._genClusterHeader(this._clusterStartTime);
5128
5211
  this._mediaBuffer?.append(t);
5129
5212
  }
5130
5213
  let a = u.element(u.ID.SimpleBlock, [
5131
- u.vintEncodedNumber(Ti),
5214
+ u.vintEncodedNumber(Oi),
5132
5215
  u.bytes(e._intToU16BE(i)),
5133
5216
  u.number(!!t.keyframe << 7),
5134
5217
  u.bytes(t.frameData)
@@ -5141,12 +5224,12 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5141
5224
  static isBrowserSupported() {
5142
5225
  return "captureStream" in window.HTMLVideoElement?.prototype && window.MediaSource?.isTypeSupported("video/webm; codecs=\"vp8\"") && window.MediaSource?.isTypeSupported("video/webm; codecs=\"vp9\"");
5143
5226
  }
5144
- }, Ai = class {
5227
+ }, Ni = class {
5145
5228
  constructor(e, t, n, r, i, a = null, o = R, s = null) {
5146
5229
  h(this, "_datachannel", void 0), h(this, "_participantIdRegistry", null), h(this, "_streamBuilders", {}), h(this, "_onStream", () => {}), h(this, "_onEos", () => {}), h(this, "_onStat", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), this._debug = o, this._logger = s, this._statAggregator = a, this._debug.debug("ScreenCaptureReceiver started"), this._datachannel = e, this._participantIdRegistry = t, this._onStream = n, this._onEos = r, this._onStat = i, this._datachannel.onmessage = (e) => this._onDataChannelMessage(e.data);
5147
5230
  }
5148
5231
  _onDataChannelMessage(e) {
5149
- let t = bi(e), n = this._participantIdRegistry?.getStreamDescription(t.ssrc)?.participantId;
5232
+ let t = Ci(e), n = this._participantIdRegistry?.getStreamDescription(t.ssrc)?.participantId;
5150
5233
  if (!n) {
5151
5234
  this._debug.warn(`Participant id for ssrc ${t.ssrc} not found in registry`);
5152
5235
  return;
@@ -5158,7 +5241,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5158
5241
  let r = this._streamBuilders[n];
5159
5242
  if (!r) {
5160
5243
  let e = (e) => this._onStream(n, e);
5161
- r = M.screenShareWebmBuilder && ki.isBrowserSupported() ? new ki(n, e, this._onStat, this._statAggregator, this._debug) : new ui(n, e, this._onStat, this._statAggregator, () => {
5244
+ r = M.screenShareWebmBuilder && Mi.isBrowserSupported() ? new Mi(n, e, this._onStat, this._statAggregator, this._debug) : new pi(n, e, this._onStat, this._statAggregator, () => {
5162
5245
  this._requestKeyFrame(t.ssrc);
5163
5246
  }, this._debug, this._logger), this._streamBuilders[n] = r;
5164
5247
  }
@@ -5166,7 +5249,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5166
5249
  }
5167
5250
  _requestKeyFrame(e) {
5168
5251
  if (!(!this._datachannel || this._datachannel.readyState !== "open")) try {
5169
- let t = Ci(e);
5252
+ let t = Ei(e);
5170
5253
  this._datachannel.send(t), this._debug.debug(`ScreenCaptureReceiver request for keyframe for ssrc ${e}`);
5171
5254
  } catch (e) {
5172
5255
  this._debug.warn("Failed to send keyframe request", e);
@@ -5179,7 +5262,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5179
5262
  destroy() {
5180
5263
  this._datachannel.onbufferedamountlow = null, this._datachannel.onmessage = null, this._onStream = () => {}, Object.values(this._streamBuilders).forEach((e) => e.destroy()), this._streamBuilders = {}, this._participantIdRegistry = null, this._debug.debug("ScreenCaptureReceiver destroyed");
5181
5264
  }
5182
- }, ji = class {
5265
+ }, Pi = class {
5183
5266
  constructor(e, t, n) {
5184
5267
  h(this, "_prev", void 0), h(this, "_next", void 0), h(this, "_data", void 0), this._next = n, n && (n.prev = this), this._prev = t, t && (t.next = this), this._data = e;
5185
5268
  }
@@ -5198,7 +5281,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5198
5281
  get data() {
5199
5282
  return this._data;
5200
5283
  }
5201
- }, Mi = class {
5284
+ }, Fi = class {
5202
5285
  constructor() {
5203
5286
  h(this, "_head", null), h(this, "_tail", null), h(this, "_length", 0);
5204
5287
  }
@@ -5206,7 +5289,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5206
5289
  return this._length;
5207
5290
  }
5208
5291
  push(...e) {
5209
- for (let t of e) this._tail = new ji(t, this._tail, null), this._head || (this._head = this._tail), this._length++;
5292
+ for (let t of e) this._tail = new Pi(t, this._tail, null), this._head || (this._head = this._tail), this._length++;
5210
5293
  }
5211
5294
  merge(e) {
5212
5295
  this._tail && (this._tail.next = e._head), this._head || (this._head = e._head), this._tail = e._tail, this._length += e._length, e.clear();
@@ -5236,7 +5319,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5236
5319
  for (; t !== null;) e.push(t.data), t = t.next;
5237
5320
  return e.length ? JSON.stringify(e, (e, t) => t instanceof Error ? String(t) : t) : "";
5238
5321
  }
5239
- }, Ni = 1e3, Pi = class extends $r {
5322
+ }, Ii = 1e3, Li = class extends ni {
5240
5323
  constructor(e, t, n, r, i = R, a = null) {
5241
5324
  super(i, a), h(this, "_sourceTrack", void 0), h(this, "_onFrame", void 0), h(this, "_useCongestionControl", void 0), h(this, "_maxBitrate", void 0), h(this, "_useImageCapture", void 0), h(this, "_video", null), h(this, "_imageCapture", null), h(this, "_canvas", null), h(this, "_canvasCtx", null), h(this, "_frameReadTimeout", 0), h(this, "_lastFrame", null), this._sourceTrack = e, this._onFrame = t, this._useCongestionControl = n, this._maxBitrate = r, this._useImageCapture = "ImageCapture" in window && ImageCapture.prototype.grabFrame !== void 0 && "ImageBitmap" in window, (e.readyState !== "live" || !e.enabled || e.muted) && (this._useImageCapture = !1);
5242
5325
  }
@@ -5322,7 +5405,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5322
5405
  let t = this._drawFrameData(this._lastFrame);
5323
5406
  this._encode(t, e);
5324
5407
  } else this._onFrame(null);
5325
- }, Ni), this._getFrameBitmap().then((t) => {
5408
+ }, Ii), this._getFrameBitmap().then((t) => {
5326
5409
  window.clearTimeout(this._frameReadTimeout), this._lastFrame?.close(), this._lastFrame = t;
5327
5410
  let n = this._drawFrameData(t);
5328
5411
  this._encode(n, e);
@@ -5343,7 +5426,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5343
5426
  destroy() {
5344
5427
  this._removeWorker(), this._removeStream(), this._removeDom(), this._debug.debug("LibVPxEncoder destroyed");
5345
5428
  }
5346
- }, Fi = class extends $r {
5429
+ }, Ri = class extends ni {
5347
5430
  constructor(e, t, n, r, i, a, o = R, s = null) {
5348
5431
  super(o, s), h(this, "_sourceTrack", void 0), h(this, "_trackProcessor", void 0), h(this, "_onFrame", void 0), h(this, "_useCongestionControl", void 0), h(this, "_maxBitrate", void 0), h(this, "_useCbr", void 0), h(this, "_frameRate", void 0), this._sourceTrack = e, this._onFrame = t, this._useCongestionControl = n, this._maxBitrate = r, this._useCbr = i, this._frameRate = a, this._trackProcessor = new MediaStreamTrackProcessor({ track: e });
5349
5432
  }
@@ -5389,11 +5472,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5389
5472
  static isBrowserSupported() {
5390
5473
  return "VideoEncoder" in window && "Worker" in window && "EncodedVideoChunk" in window && "MediaStreamTrackProcessor" in window;
5391
5474
  }
5392
- }, Ii = 2100, Li = 600, Ri = 1.2, zi = .8, Bi = 2e3, Vi = 8e3, Hi = 8e3, Ui = 16e3, Wi = 4, Gi = 2e3, Ki = /* @__PURE__ */ function(e) {
5475
+ }, zi = 2100, Bi = 600, Vi = 1.2, Hi = .8, Ui = 2e3, Wi = 8e3, Gi = 8e3, Ki = 16e3, qi = 4, Ji = 2e3, Yi = /* @__PURE__ */ function(e) {
5393
5476
  return e[e.NONE = 0] = "NONE", e[e.UP = 1] = "UP", e[e.DOWN = 2] = "DOWN", e;
5394
- }(Ki || {}), qi = class {
5477
+ }(Yi || {}), Xi = class {
5395
5478
  constructor(e, t, n, r, i, a, o, s = R) {
5396
- h(this, "_onCongestion", void 0), h(this, "_ccEnabled", void 0), h(this, "_fastSharing", void 0), h(this, "_trendDelayThreshold", void 0), h(this, "_highDelayThreshold", void 0), h(this, "_targetFps", void 0), h(this, "_minBitrate", void 0), h(this, "_maxBitrate", void 0), h(this, "_targetBitrate", void 0), h(this, "_lastDown", void 0), h(this, "_lastUp", void 0), h(this, "_lastProbing", void 0), h(this, "_lastCheckDelay", void 0), h(this, "_upPenalty", 0), h(this, "_probing", void 0), h(this, "_delayAvgShort", -1), h(this, "_delayAvgLong", -1), h(this, "_minDelay", Number.MAX_VALUE), h(this, "_maxDelay", 0), h(this, "_largeDelayDuration", 0), h(this, "_lastFpsCalcMs", void 0), h(this, "_frames", 0), h(this, "_fps", 0), h(this, "_debug", void 0), this._onCongestion = e, this._ccEnabled = r, this._debug = s, this._minBitrate = t, this._maxBitrate = n, this._fastSharing = i, this._targetFps = o, a > 0 ? this._highDelayThreshold = a : this._highDelayThreshold = Ii, i && (this._highDelayThreshold = Li), this._trendDelayThreshold = Math.round(this._highDelayThreshold / 3), this._targetBitrate = this._maxBitrate, this._probing = !1;
5479
+ h(this, "_onCongestion", void 0), h(this, "_ccEnabled", void 0), h(this, "_fastSharing", void 0), h(this, "_trendDelayThreshold", void 0), h(this, "_highDelayThreshold", void 0), h(this, "_targetFps", void 0), h(this, "_minBitrate", void 0), h(this, "_maxBitrate", void 0), h(this, "_targetBitrate", void 0), h(this, "_lastDown", void 0), h(this, "_lastUp", void 0), h(this, "_lastProbing", void 0), h(this, "_lastCheckDelay", void 0), h(this, "_upPenalty", 0), h(this, "_probing", void 0), h(this, "_delayAvgShort", -1), h(this, "_delayAvgLong", -1), h(this, "_minDelay", Number.MAX_VALUE), h(this, "_maxDelay", 0), h(this, "_largeDelayDuration", 0), h(this, "_lastFpsCalcMs", void 0), h(this, "_frames", 0), h(this, "_fps", 0), h(this, "_debug", void 0), this._onCongestion = e, this._ccEnabled = r, this._debug = s, this._minBitrate = t, this._maxBitrate = n, this._fastSharing = i, this._targetFps = o, a > 0 ? this._highDelayThreshold = a : this._highDelayThreshold = zi, i && (this._highDelayThreshold = Bi), this._trendDelayThreshold = Math.round(this._highDelayThreshold / 3), this._targetBitrate = this._maxBitrate, this._probing = !1;
5397
5480
  let c = Date.now();
5398
5481
  this._lastDown = 0, this._lastUp = c, this._lastProbing = c, this._lastCheckDelay = 0, this._lastFpsCalcMs = 0;
5399
5482
  }
@@ -5403,27 +5486,27 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5403
5486
  let i = 0, a = this._delayAvgShort - this._delayAvgLong, o = Math.round(Math.abs(a) * 100 / this._delayAvgLong), s = a > 40 && o > 30 && this._delayAvgShort > this._trendDelayThreshold, c = this._delayAvgShort > this._highDelayThreshold;
5404
5487
  s || c ? i = 2 : Math.abs(a) < 40 && o < 10 && !c && (i = 1);
5405
5488
  let l = Math.round(this._targetBitrate / 1e3), u = n;
5406
- e % 20 == 0 && this._debug.debug(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${Ki[i]} tr=${l} br=${n}`);
5489
+ e % 20 == 0 && this._debug.debug(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${Yi[i]} tr=${l} br=${n}`);
5407
5490
  let d = r - this._lastDown;
5408
- if (i === 2 && d > Bi) {
5409
- this._probing && (this._upPenalty = Math.min(++this._upPenalty, Wi), this._probing = !1);
5410
- let n = zi * u * 1e3;
5411
- if (n >= this._targetBitrate && (n = this._targetBitrate * zi), n = Math.max(n, this._minBitrate), n < this._targetBitrate) {
5412
- let r = Math.round(n / 1e3), s = Math.round(this._upPenalty * Hi / 1e3);
5413
- this._debug.log(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${Ki[i]}`), this._debug.log(`#${e}: cc: DOWN delay=${t} bitrate=${u} target=${l} -> newBitrate=${r} penalty=${s}s`), this._setBitrate(n, !0), this._targetBitrate = n;
5491
+ if (i === 2 && d > Ui) {
5492
+ this._probing && (this._upPenalty = Math.min(++this._upPenalty, qi), this._probing = !1);
5493
+ let n = Hi * u * 1e3;
5494
+ if (n >= this._targetBitrate && (n = this._targetBitrate * Hi), n = Math.max(n, this._minBitrate), n < this._targetBitrate) {
5495
+ let r = Math.round(n / 1e3), s = Math.round(this._upPenalty * Gi / 1e3);
5496
+ this._debug.log(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${Yi[i]}`), this._debug.log(`#${e}: cc: DOWN delay=${t} bitrate=${u} target=${l} -> newBitrate=${r} penalty=${s}s`), this._setBitrate(n, !0), this._targetBitrate = n;
5414
5497
  }
5415
5498
  this._lastDown = r;
5416
5499
  }
5417
- let f = r - this._lastUp, p = Vi + this._upPenalty * Hi;
5500
+ let f = r - this._lastUp, p = Wi + this._upPenalty * Gi;
5418
5501
  if (i === 1 && f > p && d > p) {
5419
- let n = Math.min(this._targetBitrate * Ri, this._maxBitrate);
5502
+ let n = Math.min(this._targetBitrate * Vi, this._maxBitrate);
5420
5503
  if (n > this._targetBitrate) {
5421
- let s = Math.round(n / 1e3), c = Math.round(this._targetBitrate / 1e3), l = Math.round(this._upPenalty * Hi / 1e3);
5422
- this._debug.log(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${Ki[i]}`), this._debug.log(`#${e}: cc: UP bitrate=${u} target=${c} -> newBitrate=${s} penalty=${l}s`), this._setBitrate(n, !1), this._targetBitrate = n, this._probing = !0, this._lastProbing = r, this._lastUp = r;
5504
+ let s = Math.round(n / 1e3), c = Math.round(this._targetBitrate / 1e3), l = Math.round(this._upPenalty * Gi / 1e3);
5505
+ this._debug.log(`#${e}: cc: delay=${t} short=${this._delayAvgShort} long=${this._delayAvgLong} delta=${a} percent=${o} -> ${Yi[i]}`), this._debug.log(`#${e}: cc: UP bitrate=${u} target=${c} -> newBitrate=${s} penalty=${l}s`), this._setBitrate(n, !1), this._targetBitrate = n, this._probing = !0, this._lastProbing = r, this._lastUp = r;
5423
5506
  }
5424
5507
  }
5425
5508
  let m = r - this._lastProbing;
5426
- this._probing && m > Ui && (this._probing = !1);
5509
+ this._probing && m > Ki && (this._probing = !1);
5427
5510
  let ee = r - this._lastDown;
5428
5511
  this._upPenalty > 0 && ee > 3 * p && (this._debug.log(`#${e}: cc: UP reset penalty: oldPenalty=${this._upPenalty}`), this._upPenalty = 0);
5429
5512
  }
@@ -5434,7 +5517,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5434
5517
  }
5435
5518
  _calcDelay(e, t) {
5436
5519
  if (!(e <= 0)) {
5437
- if (this._delayAvgShort === -1 && (this._delayAvgShort = e, this._delayAvgLong = e), this._delayAvgShort = Math.round((this._delayAvgShort * 3 + e) / 4), this._delayAvgLong = Math.round((this._delayAvgLong * 23 + e) / 24), e > 0 && e < this._minDelay ? this._minDelay = e : e > this._maxDelay && (this._maxDelay = e), this._lastCheckDelay === 0 && (this._lastCheckDelay = t), e > Gi) {
5520
+ if (this._delayAvgShort === -1 && (this._delayAvgShort = e, this._delayAvgLong = e), this._delayAvgShort = Math.round((this._delayAvgShort * 3 + e) / 4), this._delayAvgLong = Math.round((this._delayAvgLong * 23 + e) / 24), e > 0 && e < this._minDelay ? this._minDelay = e : e > this._maxDelay && (this._maxDelay = e), this._lastCheckDelay === 0 && (this._lastCheckDelay = t), e > Ji) {
5438
5521
  let e = t - this._lastCheckDelay;
5439
5522
  this._largeDelayDuration += e;
5440
5523
  }
@@ -5463,7 +5546,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5463
5546
  this._fps === 0 ? this._fps = Math.round(r) : this._fps = Math.round((this._fps * 3 + r) / 4), this._frames = 0, this._fps !== n && this._debug.log(`cc: fps=${this._fps}`);
5464
5547
  }
5465
5548
  }
5466
- }, Ji = class {
5549
+ }, Zi = class {
5467
5550
  constructor(e) {
5468
5551
  h(this, "_maxSize", void 0), h(this, "_size", 0), h(this, "_buffer", void 0), h(this, "_head", 0), h(this, "_tail", 0), this._maxSize = e, this._buffer = Array(e);
5469
5552
  }
@@ -5537,11 +5620,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5537
5620
  clear() {
5538
5621
  this._buffer.fill(void 0), this._size = 0, this._head = 0, this._tail = 0;
5539
5622
  }
5540
- }, Yi = 65536, Xi = 50, Zi = 400, Qi = 1e6, $i = 3e5, ea = 3e4, ta = 2e3, na = 5, ra = 0, ia = class {
5623
+ }, Qi = 65536, $i = 50, ea = 400, ta = 1e6, na = 3e5, ra = 3e4, ia = 2e3, aa = 5, oa = 0, sa = class {
5541
5624
  constructor(e, t, n, r, i = R, a = null) {
5542
- h(this, "_encoder", void 0), h(this, "_datachannel", void 0), h(this, "_signaling", void 0), h(this, "_fastSharing", void 0), h(this, "_destroyed", !1), h(this, "_needKeyframe", !0), h(this, "DATA_SIZE", void 0), h(this, "_congestionControl", void 0), h(this, "_frameNum", 0), h(this, "_width", void 0), h(this, "_height", void 0), h(this, "_feedback", new Ji(1024)), h(this, "_lastSentFrameSeq", 0), h(this, "_lastDeliveredFrameSeq", 0), h(this, "_lastFrameDelay", 0), h(this, "_lastFramerateReduced", Date.now()), h(this, "_lastSharingStat", Date.now()), h(this, "_congestionControlEnabled", void 0), h(this, "_queue", new Mi()), h(this, "_fpsMeter", void 0), h(this, "_maxFrameDelay", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), this._debug = i, this._logger = a, this._debug.debug("ScreenCaptureSender started"), this.DATA_SIZE = M.consumerScreenDataChannelPacketSize - 11, this._datachannel = t, this._signaling = n, this._fastSharing = r, this._congestionControlEnabled = M.screenShareCongestionControl || this._fastSharing, this._width = e.getSettings().width, this._height = e.getSettings().height, this._maxFrameDelay = this._fastSharing ? M.screenShareCongestionControlThreshold : M.screenShareCongestionControlThreshold * 2;
5625
+ h(this, "_encoder", void 0), h(this, "_datachannel", void 0), h(this, "_signaling", void 0), h(this, "_fastSharing", void 0), h(this, "_destroyed", !1), h(this, "_needKeyframe", !0), h(this, "DATA_SIZE", void 0), h(this, "_congestionControl", void 0), h(this, "_frameNum", 0), h(this, "_width", void 0), h(this, "_height", void 0), h(this, "_feedback", new Zi(1024)), h(this, "_lastSentFrameSeq", 0), h(this, "_lastDeliveredFrameSeq", 0), h(this, "_lastFrameDelay", 0), h(this, "_lastFramerateReduced", Date.now()), h(this, "_lastSharingStat", Date.now()), h(this, "_congestionControlEnabled", void 0), h(this, "_queue", new Fi()), h(this, "_fpsMeter", void 0), h(this, "_maxFrameDelay", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), this._debug = i, this._logger = a, this._debug.debug("ScreenCaptureSender started"), this.DATA_SIZE = M.consumerScreenDataChannelPacketSize - 11, this._datachannel = t, this._signaling = n, this._fastSharing = r, this._congestionControlEnabled = M.screenShareCongestionControl || this._fastSharing, this._width = e.getSettings().width, this._height = e.getSettings().height, this._maxFrameDelay = this._fastSharing ? M.screenShareCongestionControlThreshold : M.screenShareCongestionControlThreshold * 2;
5543
5626
  let o = M.getScreenFrameRate(this._fastSharing), { minBitrate: s, maxBitrate: c } = this._calcMinMaxBitrate(this._width, this._height), l = this._onCongestionCallback.bind(this);
5544
- this._debug.log(`ScreenCaptureSender: CongestionControl: enabled=${this._congestionControlEnabled} minBitrate=${Math.round(s / 1e3)}k maxBitrate=${Math.round(c / 1e3)}k delayThreshold=${M.screenShareCongestionControlThreshold}`), this._congestionControl = new qi(l, s, c, this._congestionControlEnabled, this._fastSharing, M.screenShareCongestionControlThreshold, o, this._debug);
5627
+ this._debug.log(`ScreenCaptureSender: CongestionControl: enabled=${this._congestionControlEnabled} minBitrate=${Math.round(s / 1e3)}k maxBitrate=${Math.round(c / 1e3)}k delayThreshold=${M.screenShareCongestionControlThreshold}`), this._congestionControl = new Xi(l, s, c, this._congestionControlEnabled, this._fastSharing, M.screenShareCongestionControlThreshold, o, this._debug);
5545
5628
  let u = (e, t) => {
5546
5629
  if (this._destroyed) return;
5547
5630
  if (!e) {
@@ -5552,23 +5635,23 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5552
5635
  let n = this._sliceFrame(e);
5553
5636
  this._queue.merge(n), this._handleQueue(), this._sendSharingStat();
5554
5637
  };
5555
- if (Fi.isBrowserSupported()) {
5638
+ if (Ri.isBrowserSupported()) {
5556
5639
  let t = this._fastSharing;
5557
- this._encoder = new Fi(e, u, this._congestionControlEnabled, c, t, o, this._debug, this._logger);
5558
- } else this._encoder = new Pi(e, u, this._congestionControlEnabled, c, this._debug, this._logger);
5640
+ this._encoder = new Ri(e, u, this._congestionControlEnabled, c, t, o, this._debug, this._logger);
5641
+ } else this._encoder = new Li(e, u, this._congestionControlEnabled, c, this._debug, this._logger);
5559
5642
  this._datachannel.onmessage = (e) => {
5560
- xi(e.data) && (this._debug.debug(`[${this._datachannel.label}] Requested keyframe`), this._needKeyframe = !0);
5561
- let t = Si(e.data);
5643
+ wi(e.data) && (this._debug.debug(`[${this._datachannel.label}] Requested keyframe`), this._needKeyframe = !0);
5644
+ let t = Ti(e.data);
5562
5645
  t !== null && this._checkCcFeedback(t);
5563
- }, this._encoder.init().then(() => this._handleQueue()).catch((e) => this._debug.warn("ScreenCaptureSender init failed", e)), this._fpsMeter = new ni((e) => this._debug.log(`[ScreenCaptureSender] fps: ${e}`), 5e3);
5646
+ }, this._encoder.init().then(() => this._handleQueue()).catch((e) => this._debug.warn("ScreenCaptureSender init failed", e)), this._fpsMeter = new ai((e) => this._debug.log(`[ScreenCaptureSender] fps: ${e}`), 5e3);
5564
5647
  }
5565
5648
  _handleQueue() {
5566
5649
  if (this._destroyed) return;
5567
5650
  let e = this._queue.shift();
5568
5651
  if (!e) {
5569
- if ((this._lastSentFrameSeq - this._lastDeliveredFrameSeq + Yi) % Yi > na && this._lastFrameDelay > this._maxFrameDelay) {
5652
+ if ((this._lastSentFrameSeq - this._lastDeliveredFrameSeq + Qi) % Qi > aa && this._lastFrameDelay > this._maxFrameDelay) {
5570
5653
  let e = Date.now();
5571
- e - this._lastFramerateReduced > ta && (this._lastFramerateReduced = e, this._debug.debug(`[ScreenCaptureSender] reduce framerate: delay=${this._lastFrameDelay} maxDelay=${this._maxFrameDelay}`));
5654
+ e - this._lastFramerateReduced > ia && (this._lastFramerateReduced = e, this._debug.debug(`[ScreenCaptureSender] reduce framerate: delay=${this._lastFrameDelay} maxDelay=${this._maxFrameDelay}`));
5572
5655
  } else this._requestFrame();
5573
5656
  return;
5574
5657
  }
@@ -5594,7 +5677,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5594
5677
  this._destroyed || (this._encoder.requestFrame(this._needKeyframe), this._needKeyframe = !1);
5595
5678
  }
5596
5679
  _sliceFrame(e) {
5597
- let t = e.type === "key", n = e.data.byteLength, r = new Mi();
5680
+ let t = e.type === "key", n = e.data.byteLength, r = new Fi();
5598
5681
  for (let i = 0; i < n; i += this.DATA_SIZE) {
5599
5682
  let a = e.data.slice(i, i + this.DATA_SIZE), o = i === 0, s = n <= i + a.byteLength, c = this._wrapHeader(e.timestamp, o, s, t, a);
5600
5683
  r.push({
@@ -5610,11 +5693,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5610
5693
  return r;
5611
5694
  }
5612
5695
  _wrapHeader(e, t, n, r, i) {
5613
- let a = yi(e, t, n, r, ra, this._encoder.isVP9(), i), o = {
5614
- sequence: ra,
5696
+ let a = Si(e, t, n, r, oa, this._encoder.isVP9(), i), o = {
5697
+ sequence: oa,
5615
5698
  data: a
5616
5699
  };
5617
- return ra = (ra + 1) % Yi, o;
5700
+ return oa = (oa + 1) % Qi, o;
5618
5701
  }
5619
5702
  _stopPacket() {
5620
5703
  return this._wrapHeader(Date.now(), !1, !1, !1, null).data;
@@ -5631,7 +5714,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5631
5714
  this._queue.clear(), this._fpsMeter.destroy(), this._datachannel.onmessage = null, this._feedback.clear(), this._datachannel.readyState === "open" && this._datachannel.send(this._stopPacket()), this._destroyed = !0, this._encoder.destroy(), this._debug.debug("ScreenCaptureSender destroyed");
5632
5715
  }
5633
5716
  static isBrowserSupported() {
5634
- return Fi.isBrowserSupported() || Pi.isBrowserSupported();
5717
+ return Ri.isBrowserSupported() || Li.isBrowserSupported();
5635
5718
  }
5636
5719
  _onCongestionCallback(e, t, n) {
5637
5720
  this._encoder.setBitrate(e, t, n);
@@ -5644,8 +5727,8 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5644
5727
  (e === void 0 || e < 640) && (e = 640), (t === void 0 || t < 360) && (t = 360);
5645
5728
  let n = e * t / 256;
5646
5729
  return {
5647
- minBitrate: Math.max($i, Math.min(Qi, Math.round(n * Xi))),
5648
- maxBitrate: Math.round(n * Zi)
5730
+ minBitrate: Math.max(na, Math.min(ta, Math.round(n * $i))),
5731
+ maxBitrate: Math.round(n * ea)
5649
5732
  };
5650
5733
  }
5651
5734
  _checkCcFeedback(e) {
@@ -5659,14 +5742,14 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5659
5742
  }
5660
5743
  _sendSharingStat() {
5661
5744
  let e = Date.now();
5662
- if (e - this._lastSharingStat > ea) {
5745
+ if (e - this._lastSharingStat > ra) {
5663
5746
  let t = this._congestionControl.getStat();
5664
5747
  t !== null && (this._debug.debug(`cc: send stats: ${JSON.stringify(t)}`), this._signaling.reportSharingStat(t).catch((e) => {
5665
5748
  !(e instanceof wn) && !(e instanceof Tn) && this._debug.warn("Unable to send sharing stats", e);
5666
5749
  })), this._lastSharingStat = e;
5667
5750
  }
5668
5751
  }
5669
- }, aa = class {
5752
+ }, ca = class {
5670
5753
  constructor(e, t, n, r = R, i = null) {
5671
5754
  h(this, "_pc", null), h(this, "_transceiver", null), h(this, "_currentSimulcastInfo", null), h(this, "_signaling", void 0), h(this, "_mediaSource", void 0), h(this, "_getCameraSettings", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), this._signaling = e, this._mediaSource = t, this._getCameraSettings = n, this._debug = r, this._logger = i;
5672
5755
  }
@@ -5798,9 +5881,9 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5798
5881
  if (!(e instanceof Tn)) throw e;
5799
5882
  }
5800
5883
  }
5801
- }, oa = 90, sa = 4294967295, ca = class e extends Nr {
5884
+ }, la = 90, ua = 4294967295, da = class e extends Ir {
5802
5885
  constructor(e, t, n, r = R, i = null, a = null, o = null, s = null) {
5803
- super(e, t, s), h(this, "_producerNotification", null), h(this, "_producerCommand", null), h(this, "_producerScreen", null), h(this, "_consumerScreen", null), h(this, "_asr", null), h(this, "_animojiDataChannel", null), h(this, "_animojiReceiver", null), h(this, "_animojiSender", null), h(this, "_isOpen", !1), h(this, "_observer", !1), h(this, "_reconnectionPrevented", !1), h(this, "_statInterval", null), h(this, "_settingsInterval", null), h(this, "_monitorRtpShareInterval", null), h(this, "_statBytes", {}), h(this, "_ssrcMap", {}), h(this, "_ssrcMapUpdated", !1), h(this, "_perfStatReporter", void 0), h(this, "_producerOfferIsProcessing", !1), h(this, "_producerNextOffer", null), h(this, "_producerNextSessionId", null), h(this, "_lastStat", null), h(this, "_serverSettings", void 0), h(this, "_prevConsumerSettings", {}), h(this, "_prevConsumerFastSharingSettings", {}), h(this, "_asrTrack", null), h(this, "_captureSender", null), h(this, "_captureReceiver", null), h(this, "_participantIdRegistry", null), h(this, "_disabledSenders", /* @__PURE__ */ new Set()), h(this, "_rtpReceiversByStreamId", {}), h(this, "_producerSessionId", ""), h(this, "_newAudioShareTrack", null), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_codecStatsAggregator", void 0), h(this, "_simulcast", void 0), this._debug = r, this._logger = i, this._statAggregator = a, this._codecStatsAggregator = o, this._serverSettings = n, this._simulcast = new aa(e, t, () => this._serverSettings.camera, r, i), this.subscribe(this._signaling, G.NOTIFICATION, this._onSignalingNotification.bind(this)), this.subscribe(this._mediaSource, qt.TRACK_REPLACED, this._onReplacedTrack.bind(this)), this.subscribe(this._mediaSource, qt.SOURCE_CHANGED, this._onSourcesChanged.bind(this)), this.subscribe(this._mediaSource, qt.SCREEN_STATUS, this._onScreenSharingStatus.bind(this)), this._createPerfStatsReporter(), this._debug.debug("ServerTransport: Created");
5886
+ super(e, t, s), h(this, "_producerNotification", null), h(this, "_producerCommand", null), h(this, "_producerScreen", null), h(this, "_consumerScreen", null), h(this, "_asr", null), h(this, "_animojiDataChannel", null), h(this, "_animojiReceiver", null), h(this, "_animojiSender", null), h(this, "_isOpen", !1), h(this, "_observer", !1), h(this, "_reconnectionPrevented", !1), h(this, "_statInterval", null), h(this, "_settingsInterval", null), h(this, "_monitorRtpShareInterval", null), h(this, "_statBytes", {}), h(this, "_ssrcMap", {}), h(this, "_ssrcMapUpdated", !1), h(this, "_perfStatReporter", void 0), h(this, "_producerOfferIsProcessing", !1), h(this, "_producerNextOffer", null), h(this, "_producerNextSessionId", null), h(this, "_lastStat", null), h(this, "_serverSettings", void 0), h(this, "_prevConsumerSettings", {}), h(this, "_prevConsumerFastSharingSettings", {}), h(this, "_asrTrack", null), h(this, "_captureSender", null), h(this, "_captureReceiver", null), h(this, "_participantIdRegistry", null), h(this, "_disabledSenders", /* @__PURE__ */ new Set()), h(this, "_rtpReceiversByStreamId", {}), h(this, "_producerSessionId", ""), h(this, "_newAudioShareTrack", null), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_peerConnectionStats", void 0), h(this, "_codecStatsAggregator", void 0), h(this, "_simulcast", void 0), this._debug = r, this._logger = i, this._statAggregator = a, this._peerConnectionStats = new Mr(a), this._codecStatsAggregator = o, this._serverSettings = n, this._simulcast = new ca(e, t, () => this._serverSettings.camera, r, i), this.subscribe(this._signaling, G.NOTIFICATION, this._onSignalingNotification.bind(this)), this.subscribe(this._mediaSource, qt.TRACK_REPLACED, this._onReplacedTrack.bind(this)), this.subscribe(this._mediaSource, qt.SOURCE_CHANGED, this._onSourcesChanged.bind(this)), this.subscribe(this._mediaSource, qt.SCREEN_STATUS, this._onScreenSharingStatus.bind(this)), this._createPerfStatsReporter(), this._debug.debug("ServerTransport: Created");
5804
5887
  }
5805
5888
  updateStatisticsInterval() {
5806
5889
  this._stopStatInterval();
@@ -5839,10 +5922,10 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5839
5922
  await this._simulcast.sync();
5840
5923
  }
5841
5924
  _createPerfStatsReporter() {
5842
- this._perfStatReporter?.destroy(), this._perfStatReporter = new pa(this, this._signaling, this._statAggregator, !1, this._debug);
5925
+ this._perfStatReporter?.destroy(), this._perfStatReporter = new ga(this, this._signaling, this._statAggregator, !1, this._debug);
5843
5926
  }
5844
5927
  _closeConnection() {
5845
- this._signaling.resetProducerConnection(), this._disposeFirstMediaSentProbe(), this._stopStatInterval(), this._stopSettingsInterval(), this._stopMonitorRtpShareInterval(), this._removeAsrTrack(), this._removeCaptureSender(), this._removeCaptureReceiver(), this._simulcast.reset(), this._pc && (this._rtpReceiversByStreamId = {}, this._disabledSenders.forEach((e) => e.track?.stop()), this._disabledSenders.clear(), this._pc.ontrack = null, this._pc.onconnectionstatechange = null, this._pc.onsignalingstatechange = null, this._participantIdRegistry = null, e._closeDataChannel(this._producerNotification), e._closeDataChannel(this._producerCommand), e._closeDataChannel(this._producerScreen), e._closeDataChannel(this._consumerScreen), e._closeDataChannel(this._asr), e._closeDataChannel(this._animojiDataChannel), this._pc.close(), this._pc = null, this._producerOfferIsProcessing = !1, this._producerNextOffer = null), this._triggerEvent(X.PEER_CONNECTION_CLOSED);
5928
+ this._signaling.resetProducerConnection(), this._ssrcMap = {}, this._ssrcMapUpdated = !0, this._disposeFirstMediaSentProbe(), this._stopStatInterval(), this._stopSettingsInterval(), this._stopMonitorRtpShareInterval(), this._removeAsrTrack(), this._removeCaptureSender(), this._removeCaptureReceiver(), this._simulcast.reset(), this._pc && (this._rtpReceiversByStreamId = {}, this._disabledSenders.forEach((e) => e.track?.stop()), this._disabledSenders.clear(), this._pc.ontrack = null, this._pc.onconnectionstatechange = null, this._pc.onsignalingstatechange = null, this._peerConnectionStats.stop(), this._participantIdRegistry = null, e._closeDataChannel(this._producerNotification), e._closeDataChannel(this._producerCommand), e._closeDataChannel(this._producerScreen), e._closeDataChannel(this._consumerScreen), e._closeDataChannel(this._asr), e._closeDataChannel(this._animojiDataChannel), this._pc.close(), this._pc = null, this._producerOfferIsProcessing = !1, this._producerNextOffer = null), this._triggerEvent(X.PEER_CONNECTION_CLOSED);
5846
5929
  }
5847
5930
  static _closeDataChannel(e) {
5848
5931
  e && (e.onopen = null, e.onmessage = null, e.onerror = null, e.close());
@@ -5868,14 +5951,14 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5868
5951
  }
5869
5952
  this._pc.ontrack = this._onAddTrack.bind(this, this._pc), this._pc.onconnectionstatechange = j.debounce((e) => {
5870
5953
  this._pc && this._onConnectionStateChange(this._pc, e);
5871
- }, 500), this._pc.onsignalingstatechange = this._onSignalingStateChange.bind(this, this._pc), this._participantIdRegistry = new Qr(this._debug), this._signaling.setParticipantIdRegistry(this._participantIdRegistry), this._createDataChannel(this._pc, Sr.producerNotification, (e) => {
5954
+ }, 500), this._pc.onsignalingstatechange = this._onSignalingStateChange.bind(this, this._pc), this._peerConnectionStats.observe(this._pc), this._participantIdRegistry = new ti(this._debug), this._signaling.setParticipantIdRegistry(this._participantIdRegistry), this._createDataChannel(this._pc, Sr.producerNotification, (e) => {
5872
5955
  this._producerNotification = e, this._producerNotification.binaryType = "arraybuffer", this._signaling.setProducerNotificationDataChannel(e);
5873
5956
  }), this._signaling.useCommandDataChannel(!0), this._createDataChannel(this._pc, Sr.producerCommand, (e) => {
5874
5957
  this._producerCommand = e, this._signaling.setProducerCommandDataChannel(e);
5875
5958
  }), this._createDataChannel(this._pc, Sr.producerScreenShare, (e) => {
5876
5959
  this._producerScreen = e, this._producerScreen.binaryType = "arraybuffer", this._createCaptureReceiver();
5877
5960
  }), M.asrDataChannel && this._createDataChannel(this._pc, Sr.asr, (e) => {
5878
- this._asr = e, this._asr.binaryType = "arraybuffer", this._removeAsrTrack(), this._asrTrack = new Yr(e, this._participantIdRegistry, (e) => {
5961
+ this._asr = e, this._asr.binaryType = "arraybuffer", this._removeAsrTrack(), this._asrTrack = new Qr(e, this._participantIdRegistry, (e) => {
5879
5962
  this._onAsrTranscription(e);
5880
5963
  }, this._debug);
5881
5964
  }), M.vmoji && this._createDataChannel(this._pc, Sr.animoji, (e) => {
@@ -5912,20 +5995,20 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
5912
5995
  this._triggerEvent(X.NETWORK_STATUS, e);
5913
5996
  }
5914
5997
  _updateSSRCMap(e) {
5915
- e && ln(e.sdp).forEach((e) => {
5916
- let t = `a=ssrc:([0-9]+) label:(audio|video)-((?:[ug]?[\\d]+)|(?:mix)|(?:${qr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX}-[0-9]+)|(?:${qr.TRANSPARENT_AUDIO_TRACK_PREFIX}-[0-9]+))`, n = new RegExp(t).exec(e);
5917
- n && (this._ssrcMap[n[1]] = n[3], this._ssrcMapUpdated = !0);
5918
- });
5998
+ e && (this._ssrcMap = {}, this._ssrcMapUpdated = !0, ln(e.sdp).forEach((e) => {
5999
+ let t = `a=ssrc:([0-9]+) label:(audio|video)-((?:[ug]?[\\d]+)|(?:mix)|(?:${Xr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX}-[0-9]+)|(?:${Xr.TRANSPARENT_AUDIO_TRACK_PREFIX}-[0-9]+))`, n = new RegExp(t).exec(e);
6000
+ n && (this._ssrcMap[n[1]] = n[3]);
6001
+ }));
5919
6002
  }
5920
6003
  _createCaptureSender(e) {
5921
6004
  let t = this._mediaSource.mediaSettings;
5922
- !e || !this._consumerScreen || !t.isScreenSharingEnabled || (this._captureSender && this._removeCaptureSender(), this._captureSender = new ia(e, this._consumerScreen, this._signaling, t.isFastScreenSharingEnabled, this._debug, this._logger));
6005
+ !e || !this._consumerScreen || !t.isScreenSharingEnabled || (this._captureSender && this._removeCaptureSender(), this._captureSender = new sa(e, this._consumerScreen, this._signaling, t.isFastScreenSharingEnabled, this._debug, this._logger));
5923
6006
  }
5924
6007
  _removeCaptureSender() {
5925
6008
  this._captureSender?.destroy(), this._captureSender = null;
5926
6009
  }
5927
6010
  _createCaptureReceiver() {
5928
- this._producerScreen && (this._captureReceiver && this._removeCaptureReceiver(), this._captureReceiver = new Ai(this._producerScreen, this._participantIdRegistry, (e, t) => {
6011
+ this._producerScreen && (this._captureReceiver && this._removeCaptureReceiver(), this._captureReceiver = new Ni(this._producerScreen, this._participantIdRegistry, (e, t) => {
5929
6012
  this._triggerEvent(X.REMOTE_STREAM_SECOND, e, t);
5930
6013
  }, (e) => {
5931
6014
  this._triggerEvent(X.REMOTE_STREAM_SECOND, e, null);
@@ -6035,7 +6118,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6035
6118
  _detectStaleTracks(e) {
6036
6119
  let t = e.rtps.find((e) => e.type === "inbound-rtp" && e.kind === "audio" && this._ssrcMap[e.ssrc] === "mix");
6037
6120
  if (!t) return;
6038
- let n = qr.AUDIO_MIX, r = this._statBytes[n], i = !1;
6121
+ let n = Xr.AUDIO_MIX, r = this._statBytes[n], i = !1;
6039
6122
  if (r) {
6040
6123
  let e = t.bytesReceived - r.bytesReceived;
6041
6124
  e >= 0 && e <= 5 && (i = !0), r.stalled !== i && this._triggerEvent(X.AUDIO_MIX_STALL, i);
@@ -6047,7 +6130,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6047
6130
  }
6048
6131
  _allocateConsumer() {
6049
6132
  if (!this._signaling.ready) return;
6050
- let e = ya.get();
6133
+ let e = Sa.get();
6051
6134
  !M.videoTracksCount && !this._observer && this._debug.warn("Setting videoTracksCount to 0 is deprecated"), this._signaling.allocateConsumer(null, e).catch((e) => {
6052
6135
  e instanceof wn || this._debug.warn("ServerTransport: Unable to allocate consumer", e);
6053
6136
  });
@@ -6223,11 +6306,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6223
6306
  if (!r || !r.length) return this._debug.log(`Cannot get stream waiting time, ${e} receiver has no synchronization sources`), 0;
6224
6307
  let i = r[0].rtpTimestamp;
6225
6308
  if (!Number.isInteger(i)) return this._logger?.log(C.PAT_WAITING_TIME_ERROR, "timestampNotInteger"), this._debug.error(`Cannot get stream waiting time, ${e} receiver's RTP timestamp is not an integer: ${i}`), 0;
6226
- let a = t - i & sa, o = Math.ceil(a / oa);
6309
+ let a = t - i & ua, o = Math.ceil(a / la);
6227
6310
  return Math.min(100, Math.max(0, o));
6228
6311
  }
6229
6312
  async _monitorRtpShare() {
6230
- let e = Zr.getInstance().value;
6313
+ let e = ei.getInstance().value;
6231
6314
  if (!this._mediaSource.mediaSettings.isFastScreenSharingEnabled || !M.consumerFastScreenShare || e < .6) return;
6232
6315
  let t = this._pc?.getSenders().find((e) => e.track?.kind === k.video && e.track?.contentHint === "motion");
6233
6316
  t && (await t.getStats()).forEach((e) => {
@@ -6258,7 +6341,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6258
6341
  }
6259
6342
  }, X = /* @__PURE__ */ function(e) {
6260
6343
  return e.REMOTE_TRACK_ADDED = "REMOTE_TRACK_ADDED", e.REMOTE_TRACK_REMOVED = "REMOTE_TRACK_REMOVED", e.REMOTE_STREAM_SECOND = "REMOTE_STREAM_SECOND", e.AUDIO_MIX_STALL = "AUDIO_MIX_STALL", e.REMOTE_DATA_STATS = "REMOTE_DATA_STATS", e.STATE_CHANGED = "STATE_CHANGED", e.LOCAL_STATE_CHANGED = "LOCAL_STATE_CHANGED", e.SIGNALLED_ACTIVE_PARTICIPANTS = "SIGNALLED_ACTIVE_PARTICIPANTS", e.SIGNALLED_SPEAKER_CHANGED = "SIGNALLED_SPEAKER_CHANGED", e.SIGNALLED_STALLED_PARTICIPANTS = "SIGNALLED_STALLED_PARTICIPANTS", e.TOPOLOGY_CHANGED = "TOPOLOGY_CHANGED", e.NETWORK_STATUS = "NETWORK_STATUS", e.PEER_CONNECTION_CLOSED = "PEER_CONNECTION_CLOSED", e.ASR_TRANSCRIPTION = "ASR_TRANSCRIPTION", e.ANIMOJI_STREAM = "ANIMOJI_STREAM", e.ANIMOJI_ERROR = "ANIMOJI_ERROR", e.SCREEN_SHARING_STAT = "SCREEN_SHARING_STAT", e;
6261
- }({}), la = class extends b {
6344
+ }({}), fa = class extends b {
6262
6345
  constructor(e, t, n, r, i = R, a = null, o = null, s = null, c = null) {
6263
6346
  super(), h(this, "_signaling", void 0), h(this, "_mediaSource", void 0), h(this, "_topology", void 0), h(this, "_allocated", []), h(this, "_opened", []), h(this, "_directTransport", null), h(this, "_serverTransport", null), h(this, "_serverSettings", void 0), h(this, "_dtListeners", []), h(this, "_stListeners", []), h(this, "_states", {}), h(this, "_localState", q.IDLE), h(this, "_animojiReceiver", null), h(this, "_animojiSender", null), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_codecStatsAggregator", void 0), h(this, "_onFirstMediaSent", void 0), h(this, "_firstMediaSentProbeStopped", !1), h(this, "_vadController", null), h(this, "_updateVadTrack", () => {
6264
6347
  this._vadController?.setSendTrack(this._mediaSource.getSendAudioTrack());
@@ -6379,11 +6462,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6379
6462
  }
6380
6463
  }
6381
6464
  _createDirectTransport(e, t = !1) {
6382
- let n = new Kr(e, t, this._signaling, this._mediaSource, this._serverSettings, this._debug, this._logger, this._statAggregator, this._codecStatsAggregator, this._getFirstMediaSentCallback());
6465
+ let n = new Yr(e, t, this._signaling, this._mediaSource, this._serverSettings, this._debug, this._logger, this._statAggregator, this._codecStatsAggregator, this._getFirstMediaSentCallback());
6383
6466
  return this._dtListeners.length > 0 && this._debug.warn(`The list of direct listeners for the participant [${e}] is not empty`), this._dtListeners = [], this._dtListeners.push(n.addEventListener("REMOTE_TRACK_ADDED", this._onRemoteTrackAdded.bind(this, e)), n.addEventListener("REMOTE_TRACK_REMOVED", this._onRemoteTrackRemoved.bind(this, e)), n.addEventListener("REMOTE_DATA_STATS", this._onRemoteDataStats.bind(this)), n.addEventListener("STATE_CHANGED", this._onDirectTransportChanged.bind(this)), n.addEventListener("NETWORK_STATUS", this._onTransportNetworkStatus.bind(this)), n.addEventListener("PEER_CONNECTION_CLOSED", this._onPeerConnectionClosed.bind(this, J.DIRECT))), this._animojiReceiver && this._animojiSender && n.setAnimojiTransport(this._animojiReceiver, this._animojiSender), n;
6384
6467
  }
6385
6468
  _createServerTransport() {
6386
- let e = new ca(this._signaling, this._mediaSource, this._serverSettings, this._debug, this._logger, this._statAggregator, this._codecStatsAggregator, this._getFirstMediaSentCallback());
6469
+ let e = new da(this._signaling, this._mediaSource, this._serverSettings, this._debug, this._logger, this._statAggregator, this._codecStatsAggregator, this._getFirstMediaSentCallback());
6387
6470
  return this._stListeners.length > 0 && this._debug.warn("The list of server transport listeners is not empty"), this._stListeners = [], this._stListeners.push(e.addEventListener("REMOTE_TRACK_ADDED", this._onRemoteTrackAdded.bind(this)), e.addEventListener("REMOTE_TRACK_REMOVED", this._onRemoteTrackRemoved.bind(this)), e.addEventListener("AUDIO_MIX_STALL", this._onServerAudioMixStall.bind(this)), e.addEventListener("REMOTE_DATA_STATS", this._onRemoteDataStats.bind(this)), e.addEventListener("STATE_CHANGED", this._onServerTransportChanged.bind(this)), e.addEventListener("SIGNALLED_ACTIVE_PARTICIPANTS", this._onTransportActiveParticipants.bind(this)), e.addEventListener("SIGNALLED_SPEAKER_CHANGED", this._onTransportSpeakerChanged.bind(this)), e.addEventListener("SIGNALLED_STALLED_PARTICIPANTS", this._onTransportStalledParticipants.bind(this)), e.addEventListener("NETWORK_STATUS", this._onTransportNetworkStatus.bind(this)), e.addEventListener("REMOTE_STREAM_SECOND", this._onRemoteStreamSecond.bind(this)), e.addEventListener("PEER_CONNECTION_CLOSED", this._onPeerConnectionClosed.bind(this, J.SERVER)), e.addEventListener("ASR_TRANSCRIPTION", this._onAsrTranscription.bind(this))), this._animojiReceiver && this._animojiSender && e.setAnimojiTransport(this._animojiReceiver, this._animojiSender), e;
6388
6471
  }
6389
6472
  _releaseDirectTransport() {
@@ -6475,20 +6558,20 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6475
6558
  getStreamWaitingTimeMs(e, t) {
6476
6559
  return this._topology === J.SERVER ? this._serverTransport ? this._serverTransport.getStreamWaitingTimeMs(e, t) : (this._logger?.log(C.PAT_WAITING_TIME_ERROR, "noTransport"), this._debug.error("Cannot get stream waiting time, server transport is not initialized"), 0) : (this._logger?.log(C.PAT_WAITING_TIME_ERROR, "wrongTopology"), this._debug.error(`Cannot get stream waiting time, incorrect topology: ${this._topology}`), 0);
6477
6560
  }
6478
- }, ua = "videochat-epi", da = 5e3, fa = 500, pa = class extends b {
6561
+ }, pa = "videochat-epi", ma = 5e3, ha = 500, ga = class extends b {
6479
6562
  constructor(e, t, n = null, r = !1, i = R) {
6480
- super(), h(this, "_previousPerfStatReportTimestamp", 0), h(this, "_previousNetworkStatReportTimestamp", Date.now()), h(this, "_previousCallStatReportTimestamp", Date.now()), h(this, "_previousCallStatReport", null), h(this, "_previousRemoteInboundRtps", /* @__PURE__ */ new Map()), h(this, "_screenShareStats", []), h(this, "_signaling", void 0), h(this, "_directTopology", void 0), h(this, "_debug", void 0), h(this, "_statAggregator", void 0), h(this, "_handleScreenSharingStat", (e) => {
6563
+ super(), h(this, "_previousPerfStatReportTimestamp", 0), h(this, "_previousNetworkStatReportTimestamp", Date.now()), h(this, "_previousCallStatReportTimestamp", Date.now()), h(this, "_previousCallStatReport", null), h(this, "_previousRemoteInboundRtps", /* @__PURE__ */ new Map()), h(this, "_previousCandidatePair", null), h(this, "_screenShareStats", []), h(this, "_signaling", void 0), h(this, "_directTopology", void 0), h(this, "_debug", void 0), h(this, "_statAggregator", void 0), h(this, "_handleScreenSharingStat", (e) => {
6481
6564
  this._screenShareStats.push(e);
6482
6565
  }), h(this, "_handleTransportStateChanged", (e) => {
6483
6566
  (this._directTopology && e === q.CONNECTED || !this._directTopology && e === q.OPENED) && (this._previousNetworkStatReportTimestamp = Date.now(), this._previousCallStatReportTimestamp = Date.now(), this._previousRemoteInboundRtps.clear());
6484
6567
  }), this._signaling = t, this._directTopology = r, this._debug = i, this._statAggregator = n, this.subscribe(e, X.REMOTE_DATA_STATS, this._handleStats.bind(this)), this.subscribe(e, X.SCREEN_SHARING_STAT, this._handleScreenSharingStat.bind(this)), this.subscribe(e, X.STATE_CHANGED, this._handleTransportStateChanged.bind(this));
6485
6568
  }
6486
6569
  destroy() {
6487
- this._previousRemoteInboundRtps.clear(), this.unsubscribe();
6570
+ this._previousRemoteInboundRtps.clear(), this._previousCandidatePair = null, this.unsubscribe();
6488
6571
  }
6489
6572
  static getEstimatedPerformanceIndex() {
6490
6573
  try {
6491
- let e = parseInt(localStorage.getItem(ua) || "", 10);
6574
+ let e = parseInt(localStorage.getItem(pa) || "", 10);
6492
6575
  return isNaN(e) ? 0 : e;
6493
6576
  } catch {
6494
6577
  return 0;
@@ -6497,9 +6580,9 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6497
6580
  async _handleStats(e) {
6498
6581
  if (!e.inbound || !e.inbound.rtps) return;
6499
6582
  let t = Date.now();
6500
- !this._directTopology && M.perfStatReportEnabled && this._previousPerfStatReportTimestamp + da <= t && (await this.reportPerfStats(e), this._previousPerfStatReportTimestamp = t);
6583
+ !this._directTopology && M.perfStatReportEnabled && this._previousPerfStatReportTimestamp + ma <= t && (await this.reportPerfStats(e), this._previousPerfStatReportTimestamp = t);
6501
6584
  let n = e.outbound.transport.local?.protocol === "tcp";
6502
- !this._directTopology && n && this._previousNetworkStatReportTimestamp + fa <= t && (await this.reportNetworkStats(e), this._previousNetworkStatReportTimestamp = t), M.callStatReportEnabled && this._previousCallStatReportTimestamp + M.statisticsInterval <= t && (this._reportCallStats(e), this._previousCallStatReportTimestamp = t);
6585
+ !this._directTopology && n && this._previousNetworkStatReportTimestamp + ha <= t && (await this.reportNetworkStats(e), this._previousNetworkStatReportTimestamp = t), this._reportCandidatePair(e.inbound.transport.local, e.inbound.transport.remote), M.callStatReportEnabled && this._previousCallStatReportTimestamp + M.statisticsInterval <= t && (this._reportCallStats(e), this._previousCallStatReportTimestamp = t);
6503
6586
  }
6504
6587
  async reportPerfStats(e) {
6505
6588
  let t = e.inbound.rtps.reduce((e, t) => (t.kind === "video" && (e.framesDecoded += t.framesDecoded || 0, e.framesReceived += t.framesReceived || 0), e), {
@@ -6508,7 +6591,7 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6508
6591
  });
6509
6592
  if (t.framesDecoded) try {
6510
6593
  let e = await this._signaling.reportPerfStat(t);
6511
- localStorage.setItem(ua, e.estimatedPerformanceIndex);
6594
+ localStorage.setItem(pa, e.estimatedPerformanceIndex);
6512
6595
  } catch {}
6513
6596
  }
6514
6597
  async reportNetworkStats(e) {
@@ -6548,11 +6631,11 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6548
6631
  rtt: Math.round(e.inbound.transport.currentRoundTripTime * 1e3),
6549
6632
  ss_freeze_count: 0,
6550
6633
  ss_total_freezes_duration: 0,
6551
- local_address: ha(e.inbound.transport.local),
6634
+ local_address: va(e.inbound.transport.local),
6552
6635
  local_connection_type: e.inbound.transport.local?.type,
6553
6636
  network_type: e.inbound.transport.local?.networkType,
6554
6637
  transport: e.inbound.transport.local?.protocol,
6555
- remote_address: ha(e.inbound.transport.remote),
6638
+ remote_address: va(e.inbound.transport.remote),
6556
6639
  remote_connection_type: e.inbound.transport.remote?.type
6557
6640
  };
6558
6641
  this._previousCallStatReport || (this._previousCallStatReport = Object.assign({}, t));
@@ -6573,14 +6656,29 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6573
6656
  frames_dropped: Math.max(0, t.frames_dropped - this._previousCallStatReport.frames_dropped),
6574
6657
  rtt: Math.max(0, t.rtt)
6575
6658
  };
6576
- if (M.simulcast && (i.is_simulcast = !0), navigator.hardwareConcurrency && (i.cpu_hardware_concurrency = navigator.hardwareConcurrency), n && !ga(t.jitter_video) && (i.jitter_video = Math.round(t.jitter_video)), r && !ga(t.jitter_audio) && (i.jitter_audio = Math.round(t.jitter_audio)), n && !ga(t.interframe_delay_variance) && (i.interframe_delay_variance = t.interframe_delay_variance), t.freeze_count && t.total_freezes_duration && (i.freeze_count = t.freeze_count, i.total_freezes_duration = Math.round(t.total_freezes_duration * 1e3)), t.ss_freeze_count && t.ss_total_freezes_duration && (i.ss_freeze_count = t.ss_freeze_count, i.ss_total_freezes_duration = t.ss_total_freezes_duration), r && !ga(t.total_audio_samples_received)) {
6659
+ if (M.simulcast && (i.is_simulcast = !0), navigator.hardwareConcurrency && (i.cpu_hardware_concurrency = navigator.hardwareConcurrency), n && !ya(t.jitter_video) && (i.jitter_video = Math.round(t.jitter_video)), r && !ya(t.jitter_audio) && (i.jitter_audio = Math.round(t.jitter_audio)), n && !ya(t.interframe_delay_variance) && (i.interframe_delay_variance = t.interframe_delay_variance), t.freeze_count && t.total_freezes_duration && (i.freeze_count = t.freeze_count, i.total_freezes_duration = Math.round(t.total_freezes_duration * 1e3)), t.ss_freeze_count && t.ss_total_freezes_duration && (i.ss_freeze_count = t.ss_freeze_count, i.ss_total_freezes_duration = t.ss_total_freezes_duration), r && !ya(t.total_audio_samples_received)) {
6577
6660
  let e = Math.max(0, t.total_audio_samples_received - this._previousCallStatReport.total_audio_samples_received), n = Math.max(0, t.inserted_audio_samples_for_deceleration - this._previousCallStatReport.inserted_audio_samples_for_deceleration), r = Math.max(0, t.removed_audio_samples_for_acceleration - this._previousCallStatReport.removed_audio_samples_for_acceleration), a = Math.max(0, t.concealed_audio_samples - this._previousCallStatReport.concealed_audio_samples), o = Math.max(0, t.silent_concealed_audio_samples - this._previousCallStatReport.silent_concealed_audio_samples), s = Math.max(0, t.audio_concealment_events - this._previousCallStatReport.audio_concealment_events);
6578
- i.inserted_audio_samples_for_deceleration = _a(n / e * 1e3), i.removed_audio_samples_for_acceleration = _a(r / e * 1e3), i.concealed_audio_samples = _a(a / e * 1e3), i.concealed_silent_audio_samples = _a(o / e * 1e3), i.concealment_audio_avg_size = _a(a / s), i.total_audio_energy = t.total_audio_energy;
6661
+ i.inserted_audio_samples_for_deceleration = ba(n / e * 1e3), i.removed_audio_samples_for_acceleration = ba(r / e * 1e3), i.concealed_audio_samples = ba(a / e * 1e3), i.concealed_silent_audio_samples = ba(o / e * 1e3), i.concealment_audio_avg_size = ba(a / s), i.total_audio_energy = t.total_audio_energy;
6579
6662
  }
6580
- ma(t, "local_address", "local_connection_type", "network_type", "transport") && (i.local_address = t.local_address, i.local_connection_type = t.local_connection_type, i.network_type = t.network_type, i.transport = t.transport), ma(t, "remote_address", "remote_connection_type") && (i.remote_address = t.remote_address, i.remote_connection_type = t.remote_connection_type);
6663
+ _a(t, "local_address", "local_connection_type", "network_type", "transport") && (i.local_address = t.local_address, i.local_connection_type = t.local_connection_type, i.network_type = t.network_type, i.transport = t.transport), _a(t, "remote_address", "remote_connection_type") && (i.remote_address = t.remote_address, i.remote_connection_type = t.remote_connection_type);
6581
6664
  let a = this._calculatePacketLoss(e.remoteInbound.rtps);
6582
6665
  a.video !== void 0 && (i.video_loss = a.video), a.audio !== void 0 && (i.audio_loss = a.audio), this._statAggregator?.logCallStat(i), M.enableLogPerfStatReport && this._debug.log("Sent call stats", i), this._previousCallStatReport = t;
6583
6666
  }
6667
+ _reportCandidatePair(e, t) {
6668
+ if (!e?.address || !t?.address) return;
6669
+ let n = JSON.stringify({
6670
+ local: e,
6671
+ remote: t
6672
+ });
6673
+ n !== this._previousCandidatePair && (this._previousCandidatePair = n, this._statAggregator?.logEventualStat({
6674
+ name: H.ICE_CANDIDATES_CHANGED,
6675
+ value: 0,
6676
+ string_value: n,
6677
+ local_address: va(e),
6678
+ remote_address: va(t),
6679
+ transport: e.protocol
6680
+ }));
6681
+ }
6584
6682
  _calculatePacketLoss(e) {
6585
6683
  let t = /* @__PURE__ */ new Map(), n = {
6586
6684
  audio: {
@@ -6609,26 +6707,26 @@ var wi = 2 ** 15 - 1, Ti = 1, Ei = 5, Di = 5, Oi = class e {
6609
6707
  return r;
6610
6708
  }
6611
6709
  };
6612
- function ma(e, ...t) {
6710
+ function _a(e, ...t) {
6613
6711
  for (let n of t) if (!Object.hasOwn(e, n) || e[n] === void 0) return !1;
6614
6712
  return !0;
6615
6713
  }
6616
- function ha(e, t = !1) {
6714
+ function va(e, t = !1) {
6617
6715
  if (e?.address) return e.address + (t ? `:${e.port}` : "");
6618
6716
  }
6619
- function ga(e) {
6717
+ function ya(e) {
6620
6718
  return e === void 0;
6621
6719
  }
6622
- function _a(e) {
6720
+ function ba(e) {
6623
6721
  return Number.isNaN(e) ? 0 : e;
6624
6722
  }
6625
6723
  //#endregion
6626
6724
  //#region src/static/Capabilities.ts
6627
- var va;
6725
+ var xa;
6628
6726
  (function(e) {
6629
6727
  function t() {
6630
6728
  return {
6631
- estimatedPerformanceIndex: pa.getEstimatedPerformanceIndex(),
6729
+ estimatedPerformanceIndex: ga.getEstimatedPerformanceIndex(),
6632
6730
  audioMix: !0,
6633
6731
  consumerUpdate: !0,
6634
6732
  producerNotificationDataChannelVersion: 8,
@@ -6654,8 +6752,8 @@ var va;
6654
6752
  };
6655
6753
  }
6656
6754
  e.get = t;
6657
- })(va || (va = {}));
6658
- var ya = va, ba = {
6755
+ })(xa || (xa = {}));
6756
+ var Sa = xa, Ca = {
6659
6757
  producerScreenTrack: () => !0,
6660
6758
  videoTracksCount: () => M.videoTracksCount > 0,
6661
6759
  waitingHall: () => !0,
@@ -6675,28 +6773,28 @@ var ya = va, ba = {
6675
6773
  p2pRelay: () => !1,
6676
6774
  waitForAdmin: () => M.waitForAdminInGroupCalls,
6677
6775
  hold: () => M.hold
6678
- }, xa = class {
6776
+ }, wa = class {
6679
6777
  static getFlags() {
6680
- let e = Object.values(ba), t = 0;
6778
+ let e = Object.values(Ca), t = 0;
6681
6779
  for (let n = 0; n < e.length; n++) e[n]() && (t |= 1 << n);
6682
6780
  return t.toString(16).toUpperCase();
6683
6781
  }
6684
6782
  static parseCapabilities(e) {
6685
6783
  let t = parseInt(e || "0", 16);
6686
- return Object.keys(ba).reduce((e, n, r) => (e[n] = !!(t & 1 << r), e), {});
6784
+ return Object.keys(Ca).reduce((e, n, r) => (e[n] = !!(t & 1 << r), e), {});
6687
6785
  }
6688
- }, Sa = 63n, Ca = 16383n, wa = 1073741823, Ta = 4611686018427387903n, Ea = class {
6786
+ }, Ta = 63n, Ea = 16383n, Da = 1073741823, Oa = 4611686018427387903n, ka = class {
6689
6787
  encode(e) {
6690
6788
  let t = typeof e == "number" ? BigInt(e) : e;
6691
- if (t <= Sa) return new Uint8Array([Number(t)]);
6692
- if (t <= Ca) return new Uint8Array([64 | Number(t >> 8n), Number(t & 255n)]);
6693
- if (t <= BigInt(wa)) return new Uint8Array([
6789
+ if (t <= Ta) return new Uint8Array([Number(t)]);
6790
+ if (t <= Ea) return new Uint8Array([64 | Number(t >> 8n), Number(t & 255n)]);
6791
+ if (t <= BigInt(Da)) return new Uint8Array([
6694
6792
  128 | Number(t >> 24n),
6695
6793
  Number(t >> 16n & 255n),
6696
6794
  Number(t >> 8n & 255n),
6697
6795
  Number(t & 255n)
6698
6796
  ]);
6699
- if (t <= Ta) return new Uint8Array([
6797
+ if (t <= Oa) return new Uint8Array([
6700
6798
  192 | Number(t >> 56n),
6701
6799
  Number(t >> 48n & 255n),
6702
6800
  Number(t >> 40n & 255n),
@@ -6708,7 +6806,7 @@ var ya = va, ba = {
6708
6806
  ]);
6709
6807
  throw RangeError("Number is too large to encode using varint");
6710
6808
  }
6711
- }, Da = class {
6809
+ }, Aa = class {
6712
6810
  decode(e) {
6713
6811
  let t = this.getNumBytesForLengthInteger(e);
6714
6812
  if (t < 0) throw Error("Invalid length prefix");
@@ -6734,9 +6832,9 @@ var ya = va, ba = {
6734
6832
  let t = e[0] & 192;
6735
6833
  return t === 0 ? 1 : t === 64 ? 2 : t === 128 ? 4 : t === 192 ? 8 : -1;
6736
6834
  }
6737
- }, Oa = class {
6835
+ }, ja = class {
6738
6836
  constructor(e) {
6739
- h(this, "encoder", void 0), h(this, "compression", void 0), h(this, "lengthEncoder", void 0), this.encoder = new TextEncoder(), this.lengthEncoder = new Ea(), this.compression = e ?? null;
6837
+ h(this, "encoder", void 0), h(this, "compression", void 0), h(this, "lengthEncoder", void 0), this.encoder = new TextEncoder(), this.lengthEncoder = new ka(), this.compression = e ?? null;
6740
6838
  }
6741
6839
  encode(e) {
6742
6840
  let t = this.encoder.encode(e);
@@ -6753,9 +6851,9 @@ var ya = va, ba = {
6753
6851
  default: return e;
6754
6852
  }
6755
6853
  }
6756
- }, ka = class {
6854
+ }, Ma = class {
6757
6855
  constructor(e) {
6758
- h(this, "decoder", void 0), h(this, "compression", void 0), h(this, "lengthDecoder", void 0), h(this, "buffer", void 0), h(this, "expectedLength", void 0), h(this, "offset", void 0), h(this, "lengthPrefixLength", void 0), this.decoder = new TextDecoder(), this.lengthDecoder = new Da(), this.compression = e ?? null, this.buffer = new Uint8Array(), this.expectedLength = null, this.offset = 0;
6856
+ h(this, "decoder", void 0), h(this, "compression", void 0), h(this, "lengthDecoder", void 0), h(this, "buffer", void 0), h(this, "expectedLength", void 0), h(this, "offset", void 0), h(this, "lengthPrefixLength", void 0), this.decoder = new TextDecoder(), this.lengthDecoder = new Aa(), this.compression = e ?? null, this.buffer = new Uint8Array(), this.expectedLength = null, this.offset = 0;
6759
6857
  }
6760
6858
  decode(e) {
6761
6859
  let t = [];
@@ -6785,12 +6883,12 @@ var ya = va, ba = {
6785
6883
  default: return e;
6786
6884
  }
6787
6885
  }
6788
- }, Aa = class {
6886
+ }, Na = class {
6789
6887
  static isBrowserSupported() {
6790
6888
  return !(!("WebTransport" in window && typeof WebTransport == "function") || T.browserName() === "Safari");
6791
6889
  }
6792
6890
  constructor(e, t = {}, n = R) {
6793
- h(this, "onopen", null), h(this, "onmessage", null), h(this, "onerror", null), h(this, "onclose", null), h(this, "readyState", WebSocket.CONNECTING), h(this, "webTransport", null), h(this, "writer", null), h(this, "url", void 0), h(this, "options", void 0), h(this, "compression", void 0), h(this, "encoder", void 0), h(this, "decoder", void 0), h(this, "_debug", void 0), this._debug = n, this.url = e, this.options = t, this.compression = this.getCompressionTypeFromUrl(e), this.encoder = new Oa(this.compression), this.decoder = new ka(this.compression), this.connect();
6891
+ h(this, "onopen", null), h(this, "onmessage", null), h(this, "onerror", null), h(this, "onclose", null), h(this, "readyState", WebSocket.CONNECTING), h(this, "webTransport", null), h(this, "writer", null), h(this, "url", void 0), h(this, "options", void 0), h(this, "compression", void 0), h(this, "encoder", void 0), h(this, "decoder", void 0), h(this, "_debug", void 0), this._debug = n, this.url = e, this.options = t, this.compression = this.getCompressionTypeFromUrl(e), this.encoder = new ja(this.compression), this.decoder = new Ma(this.compression), this.connect();
6794
6892
  }
6795
6893
  async send(e) {
6796
6894
  if (this.readyState !== WebSocket.OPEN) {
@@ -6916,9 +7014,9 @@ var ya = va, ba = {
6916
7014
  compression: this.compression
6917
7015
  }, n;
6918
7016
  }
6919
- }, ja = /* @__PURE__ */ function(e) {
7017
+ }, Pa = /* @__PURE__ */ function(e) {
6920
7018
  return e.EMPTY_ENDPOINT = "EMPTY_ENDPOINT", e.NETWORK_ERROR = "NETWORK_ERROR", e.ABORTED = "ABORTED", e;
6921
- }({}), Ma = class {
7019
+ }({}), Fa = class {
6922
7020
  constructor(e = R, t) {
6923
7021
  h(this, "handlers", void 0), h(this, "socket", null), h(this, "endpoint", ""), h(this, "wtEndpoint", null), h(this, "peerId", null), h(this, "lastStamp", 0), h(this, "connectionType", void 0), h(this, "reconnectCount", 0), h(this, "reconnectTimer", 0), h(this, "doctorTimer", 0), h(this, "forceWebSocket", !1), h(this, "abortSignal", void 0), h(this, "manualClose", !1), h(this, "currentType", yr.WEBSOCKET), h(this, "_debug", void 0), this.handlers = t, this._debug = e;
6924
7022
  }
@@ -6968,7 +7066,7 @@ var ya = va, ba = {
6968
7066
  return;
6969
7067
  }
6970
7068
  let e = this._buildUrl(this.wtEndpoint, !0);
6971
- this.currentType = yr.WEBTRANSPORT, this.socket = new Aa(e, { congestionControl: "low-latency" }, this._debug), this._setSocketHandlers();
7069
+ this.currentType = yr.WEBTRANSPORT, this.socket = new Na(e, { congestionControl: "low-latency" }, this._debug), this._setSocketHandlers();
6972
7070
  }
6973
7071
  _connectWebSocket() {
6974
7072
  if (!this.endpoint) {
@@ -6991,10 +7089,10 @@ var ya = va, ba = {
6991
7089
  }
6992
7090
  _buildUrl(e, t) {
6993
7091
  let n = new URL(e), r = n.searchParams;
6994
- return r.set("platform", M.platform), r.set("appVersion", String(M.appVersion)), r.set("version", String(M.protocolVersion)), r.set("device", M.device), r.set("capabilities", xa.getFlags()), r.set("clientType", M.clientType), this.connectionType && r.set("tgt", this.connectionType), this.connectionType === vr.RETRY && this.lastStamp && r.set("recoverTs", String(this.lastStamp)), M.useParticipantListChunk && (r.set("partIdx", String(M.participantListChunkInitIndex)), M.participantListChunkInitCount !== null && r.set("partCount", String(M.participantListChunkInitCount))), t && (r.set("compression", "deflate-raw"), r.set("ua", navigator.userAgent)), this.peerId !== null && r.set("peerId", String(this.peerId)), n.toString();
7092
+ return r.set("platform", M.platform), r.set("appVersion", M.appVersion), r.set("version", String(M.protocolVersion)), r.set("device", M.device), r.set("capabilities", wa.getFlags()), r.set("clientType", M.clientType), this.connectionType && r.set("tgt", this.connectionType), this.connectionType === vr.RETRY && this.lastStamp && r.set("recoverTs", String(this.lastStamp)), M.useParticipantListChunk && (r.set("partIdx", String(M.participantListChunkInitIndex)), M.participantListChunkInitCount !== null && r.set("partCount", String(M.participantListChunkInitCount))), t && (r.set("compression", "deflate-raw"), r.set("ua", navigator.userAgent)), this.peerId !== null && r.set("peerId", String(this.peerId)), n.toString();
6995
7093
  }
6996
7094
  _canUseWebTransport() {
6997
- return !this.forceWebSocket && Aa.isBrowserSupported() && this.wtEndpoint !== null && M.webtransport;
7095
+ return !this.forceWebSocket && Na.isBrowserSupported() && this.wtEndpoint !== null && M.webtransport;
6998
7096
  }
6999
7097
  _onOpen() {
7000
7098
  this._startDoctor(), this.handlers.onOpen();
@@ -7048,31 +7146,31 @@ var ya = va, ba = {
7048
7146
  _stopDoctor() {
7049
7147
  window.clearTimeout(this.doctorTimer), this.doctorTimer = 0;
7050
7148
  }
7051
- }, Na = "open", Pa = 10, Fa = {
7149
+ }, Ia = "open", La = 10, Ra = {
7052
7150
  CONVERSATION_ENDED: "conversation-ended",
7053
7151
  OBSOLETE_CLIENT: "gen.obsoleteClient",
7054
7152
  INVALID_TOKEN: "invalid-token",
7055
7153
  PARTICIPANT_NOT_FOUND: "participant-not-found",
7056
7154
  ILLEGAL_PARTICIPANT_STATE: "illegal-participant-state",
7057
7155
  SERVICE_UNAVAILABLE: "service-unavailable"
7058
- }, Ia = {
7059
- [Fa.CONVERSATION_ENDED]: "conversation-ended",
7060
- [Fa.OBSOLETE_CLIENT]: "obsolete-client",
7061
- [Fa.INVALID_TOKEN]: "invalid-token",
7062
- [Fa.PARTICIPANT_NOT_FOUND]: "participant-not-found",
7063
- [Fa.ILLEGAL_PARTICIPANT_STATE]: "illegal-participant-state",
7064
- [Fa.SERVICE_UNAVAILABLE]: "service-unavailable"
7156
+ }, za = {
7157
+ [Ra.CONVERSATION_ENDED]: "conversation-ended",
7158
+ [Ra.OBSOLETE_CLIENT]: "obsolete-client",
7159
+ [Ra.INVALID_TOKEN]: "invalid-token",
7160
+ [Ra.PARTICIPANT_NOT_FOUND]: "participant-not-found",
7161
+ [Ra.ILLEGAL_PARTICIPANT_STATE]: "illegal-participant-state",
7162
+ [Ra.SERVICE_UNAVAILABLE]: "service-unavailable"
7065
7163
  };
7066
- function La(e, t) {
7164
+ function Ba(e, t) {
7067
7165
  return e.errorMessage ?? e.message ?? e.error ?? t;
7068
7166
  }
7069
- var Ra = new Set([
7167
+ var Va = new Set([
7070
7168
  D.CALLER_IS_BLOCKED,
7071
7169
  D.ENDED,
7072
7170
  D.NOT_FOUND,
7073
7171
  D.PARTICIPANT_LIMIT_REACHED,
7074
7172
  D.SERVICE_UNAVAILABLE
7075
- ]), za = class e extends En {
7173
+ ]), Ha = class e extends En {
7076
7174
  static get WAIT_CONNECTION_DELAY() {
7077
7175
  return M.waitConnectionDelay;
7078
7176
  }
@@ -7083,7 +7181,7 @@ var Ra = new Set([
7083
7181
  return !this.disposed && this.transport.readyState !== null;
7084
7182
  }
7085
7183
  constructor(e = R, t = null, n = null, r = null, i = null) {
7086
- super(), h(this, "transport", void 0), h(this, "sequence", 1), h(this, "lastStamp", 0), h(this, "websocketCommandsQueue", []), h(this, "datachannelCommandsQueue", []), h(this, "incomingCache", []), h(this, "responseHandlers", {}), h(this, "disposed", !1), h(this, "connectionType", void 0), h(this, "conversationResolve", null), h(this, "conversationReject", null), h(this, "connected", !1), h(this, "listenersReady", !1), h(this, "peerId", null), h(this, "connectionMessageWaitTimer", 0), h(this, "participantIdRegistry", null), h(this, "producerNotificationDataChannel", null), h(this, "producerCommandDataChannel", null), h(this, "producerCommandDataChannelEnabled", !1), h(this, "producerCommandSerializationService", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_statPings", void 0), h(this, "_statSignalingCommands", void 0), this._debug = e, this._logger = t, this._statAggregator = n, this._statPings = r, this._statSignalingCommands = i, this.producerCommandSerializationService = new $n(e), this.transport = new Ma(e, {
7184
+ super(), h(this, "transport", void 0), h(this, "sequence", 1), h(this, "lastStamp", 0), h(this, "websocketCommandsQueue", []), h(this, "datachannelCommandsQueue", []), h(this, "incomingCache", []), h(this, "responseHandlers", {}), h(this, "disposed", !1), h(this, "connectionType", void 0), h(this, "conversationResolve", null), h(this, "conversationReject", null), h(this, "connected", !1), h(this, "listenersReady", !1), h(this, "peerId", null), h(this, "connectionMessageWaitTimer", 0), h(this, "participantIdRegistry", null), h(this, "producerNotificationDataChannel", null), h(this, "producerCommandDataChannel", null), h(this, "producerCommandDataChannelEnabled", !1), h(this, "producerCommandSerializationService", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_statAggregator", void 0), h(this, "_statPings", void 0), h(this, "_statSignalingCommands", void 0), this._debug = e, this._logger = t, this._statAggregator = n, this._statPings = r, this._statSignalingCommands = i, this.producerCommandSerializationService = new $n(e), this.transport = new Fa(e, {
7087
7185
  onConnecting: this._onTransportConnecting.bind(this),
7088
7186
  onOpen: this._onOpen.bind(this),
7089
7187
  onMessage: this._onMessage.bind(this),
@@ -7170,20 +7268,20 @@ var Ra = new Set([
7170
7268
  return this._send(B.TRANSMIT_DATA, {
7171
7269
  participantId: e,
7172
7270
  data: r
7173
- }, !0, Pa);
7271
+ }, !0, La);
7174
7272
  }
7175
7273
  async acceptCall(e) {
7176
7274
  return this._send(B.ACCEPT_CALL, { mediaSettings: e });
7177
7275
  }
7178
7276
  async changeMediaSettings(e) {
7179
- return this._send(B.CHANGE_MEDIA_SETTINGS, { mediaSettings: e }, !0, Pa);
7277
+ return this._send(B.CHANGE_MEDIA_SETTINGS, { mediaSettings: e }, !0, La);
7180
7278
  }
7181
7279
  async changeParticipantState(e, t) {
7182
7280
  let n = { participantState: { state: e } };
7183
7281
  return t && (n.participantId = t), this._sendRaw(B.CHANGE_PARTICIPANT_STATE, n);
7184
7282
  }
7185
7283
  async hold(e) {
7186
- let t = ya.get();
7284
+ let t = Sa.get();
7187
7285
  return this._send(B.HOLD, {
7188
7286
  hold: e,
7189
7287
  capabilities: e ? void 0 : t
@@ -7415,7 +7513,7 @@ var Ra = new Set([
7415
7513
  if (this.disposed) throw new wn(e);
7416
7514
  switch (t.route) {
7417
7515
  case "producer":
7418
- this.datachannelCommandsQueue.push(t), this.producerCommandDataChannel?.readyState === Na && this._handleCommandsQueue(this.datachannelCommandsQueue);
7516
+ this.datachannelCommandsQueue.push(t), this.producerCommandDataChannel?.readyState === Ia && this._handleCommandsQueue(this.datachannelCommandsQueue);
7419
7517
  break;
7420
7518
  case "websocket":
7421
7519
  if (this.transport.readyState === null) {
@@ -7485,9 +7583,9 @@ var Ra = new Set([
7485
7583
  }
7486
7584
  _handleErrorMessage(e) {
7487
7585
  this._logger?.log(C.SOCKET_ACTION, `error-${e.error}`);
7488
- let t = this._getSocketType(), n = e.error ? this._createSignalingCallError(e.error, e.errorCode, t) : void 0, r = La(e, "Unknown signaling error");
7586
+ let t = this._getSocketType(), n = e.error ? this._createSignalingCallError(e.error, e.errorCode, t) : void 0, r = Ba(e, "Unknown signaling error");
7489
7587
  switch (this._debug.debug(`[signaling] error message [${e.sequence}]`, e), e.sequence && this.responseHandlers[e.sequence] && this._handleCommandResponse(!1, e), e.error) {
7490
- case Fa.SERVICE_UNAVAILABLE:
7588
+ case Ra.SERVICE_UNAVAILABLE:
7491
7589
  let i = new O(D.SERVICE_UNAVAILABLE, {
7492
7590
  callError: n,
7493
7591
  message: r,
@@ -7499,7 +7597,7 @@ var Ra = new Set([
7499
7597
  reason: D.SERVICE_UNAVAILABLE
7500
7598
  });
7501
7599
  break;
7502
- case Fa.CONVERSATION_ENDED:
7600
+ case Ra.CONVERSATION_ENDED:
7503
7601
  this.conversationReject ? this.conversationReject(new O(e.reason || x.SIGNALING_FAILED, {
7504
7602
  callError: n,
7505
7603
  message: r,
@@ -7510,22 +7608,22 @@ var Ra = new Set([
7510
7608
  reason: e.reason
7511
7609
  });
7512
7610
  break;
7513
- case Fa.ILLEGAL_PARTICIPANT_STATE:
7514
- case Fa.PARTICIPANT_NOT_FOUND:
7611
+ case Ra.ILLEGAL_PARTICIPANT_STATE:
7612
+ case Ra.PARTICIPANT_NOT_FOUND:
7515
7613
  this._throwError(new O(x.SIGNALING_FAILED, {
7516
7614
  callError: n,
7517
7615
  message: r,
7518
7616
  remote: !0
7519
7617
  }));
7520
7618
  break;
7521
- case Fa.OBSOLETE_CLIENT:
7619
+ case Ra.OBSOLETE_CLIENT:
7522
7620
  this.conversationReject?.(new O(e.reason || D.OBSOLETE_CLIENT, {
7523
7621
  callError: n,
7524
7622
  message: r,
7525
7623
  remote: !0
7526
7624
  }));
7527
7625
  break;
7528
- case Fa.INVALID_TOKEN:
7626
+ case Ra.INVALID_TOKEN:
7529
7627
  default:
7530
7628
  if (e.sequence || t === yr.WEBTRANSPORT) break;
7531
7629
  if (this.connected) this._throwError(new O(e.reason || x.SIGNALING_FAILED, {
@@ -7627,13 +7725,13 @@ var Ra = new Set([
7627
7725
  let r = this.responseHandlers[n.sequence];
7628
7726
  window.clearTimeout(r.responseTimer);
7629
7727
  let i = W.measureMark(r.statMarkName);
7630
- i !== null && this._statSignalingCommands?.mark(r.name, i, this._getSocketType()), this._debug.debug(`[signaling] command response [${n.sequence}]`, n), t ? (delete this.responseHandlers[n.sequence], r.resolve(n)) : n.type === "error" ? (delete this.responseHandlers[n.sequence], this._logger?.log(C.SOCKET_ACTION, "response-error"), r.reject(Error(La(n, `Response error [${r.name}]`)), !0)) : this.transport.readyState === WebSocket.OPEN ? (delete this.responseHandlers[n.sequence], this._logger?.log(C.SOCKET_ACTION, "response-timeout"), r.reject(Error(La(n, `Response timeout [${r.name}]`)))) : r.responseTimer = window.setTimeout(() => this._handleCommandResponse(t, n), e.WAIT_RESPONSE_DELAY);
7728
+ i !== null && this._statSignalingCommands?.mark(r.name, i, this._getSocketType()), this._debug.debug(`[signaling] command response [${n.sequence}]`, n), t ? (delete this.responseHandlers[n.sequence], r.resolve(n)) : n.type === "error" ? (delete this.responseHandlers[n.sequence], this._logger?.log(C.SOCKET_ACTION, "response-error"), r.reject(Error(Ba(n, `Response error [${r.name}]`)), !0)) : this.transport.readyState === WebSocket.OPEN ? (delete this.responseHandlers[n.sequence], this._logger?.log(C.SOCKET_ACTION, "response-timeout"), r.reject(Error(Ba(n, `Response timeout [${r.name}]`)))) : r.responseTimer = window.setTimeout(() => this._handleCommandResponse(t, n), e.WAIT_RESPONSE_DELAY);
7631
7729
  }
7632
7730
  _handleCommandsQueue(e) {
7633
7731
  for (; e.length > 0;) {
7634
7732
  let t = e.shift();
7635
7733
  if (this._debug.debug(`[signaling] command send [${t.sequence}]`, `'${t.name}'`, t.params), t.route === "producer") {
7636
- if (this.producerCommandDataChannel?.readyState !== Na) {
7734
+ if (this.producerCommandDataChannel?.readyState !== Ia) {
7637
7735
  t.reject(/* @__PURE__ */ Error(`Invalid data channel state: ${this.producerCommandDataChannel?.readyState}`));
7638
7736
  return;
7639
7737
  }
@@ -7718,7 +7816,7 @@ var Ra = new Set([
7718
7816
  }
7719
7817
  _onTransportFailed(e) {
7720
7818
  switch (e.failure) {
7721
- case ja.EMPTY_ENDPOINT:
7819
+ case Pa.EMPTY_ENDPOINT:
7722
7820
  this.conversationReject?.(new O(x.SIGNALING_FAILED, {
7723
7821
  callError: {
7724
7822
  scope: "internal",
@@ -7729,7 +7827,7 @@ var Ra = new Set([
7729
7827
  remote: e.remote
7730
7828
  }));
7731
7829
  break;
7732
- case ja.NETWORK_ERROR:
7830
+ case Pa.NETWORK_ERROR:
7733
7831
  this._fail(new O(D.NETWORK_ERROR, { callError: {
7734
7832
  scope: "network",
7735
7833
  source: e.source,
@@ -7737,7 +7835,7 @@ var Ra = new Set([
7737
7835
  description: "connection-failed"
7738
7836
  } }));
7739
7837
  break;
7740
- case ja.ABORTED:
7838
+ case Pa.ABORTED:
7741
7839
  this._debug.debug("[signaling] aborted reconnect"), this._fail(new O(D.CANCELED));
7742
7840
  break;
7743
7841
  }
@@ -7749,7 +7847,7 @@ var Ra = new Set([
7749
7847
  this._debug.warn("[signaling] socket is dead, trying to reconnect"), this._logTransportStat(br.FAILED_PINGS);
7750
7848
  }
7751
7849
  _attachNotificationCallError(e) {
7752
- e.callError || !e.reason || e.reason === D.FAILED || e.reason === D.UNKNOWN_ERROR || !Ra.has(e.reason) && !e.errorCode || (e.callError = {
7850
+ e.callError || !e.reason || e.reason === D.FAILED || e.reason === D.UNKNOWN_ERROR || !Va.has(e.reason) && !e.errorCode || (e.callError = {
7753
7851
  scope: "server",
7754
7852
  source: this._getSocketType(),
7755
7853
  code: e.errorCode || "protocol",
@@ -7757,7 +7855,7 @@ var Ra = new Set([
7757
7855
  });
7758
7856
  }
7759
7857
  _createSignalingCallError(e, t, n) {
7760
- let r = Ia[e];
7858
+ let r = za[e];
7761
7859
  if (r) return {
7762
7860
  scope: "server",
7763
7861
  source: n,
@@ -7779,39 +7877,39 @@ var Ra = new Set([
7779
7877
  ...t
7780
7878
  });
7781
7879
  }
7782
- }, Ba = /* @__PURE__ */ function(e) {
7880
+ }, Ua = /* @__PURE__ */ function(e) {
7783
7881
  return e.INCOMING = "INCOMING", e.OUTGOING = "OUTGOING", e.JOINING = "JOINING", e;
7784
- }(Ba || {}), Va = /* @__PURE__ */ function(e) {
7882
+ }(Ua || {}), Wa = /* @__PURE__ */ function(e) {
7785
7883
  return e.USER = "USER", e.GROUP = "GROUP", e.CHAT = "CHAT", e;
7786
- }(Va || {}), Ha = /* @__PURE__ */ function(e) {
7884
+ }(Wa || {}), Ga = /* @__PURE__ */ function(e) {
7787
7885
  return e.ATTENDEE = "ATTENDEE", e.HAND_UP = "HAND_UP", e;
7788
- }(Ha || {}), Ua = /* @__PURE__ */ function(e) {
7886
+ }(Ga || {}), Ka = /* @__PURE__ */ function(e) {
7789
7887
  return e.ADD_PARTICIPANT = "ADD_PARTICIPANT", e.RECORD = "RECORD", e.MOVIE_SHARE = "MOVIE_SHARE", e;
7790
- }(Ua || {}), Wa = /* @__PURE__ */ function(e) {
7888
+ }(Ka || {}), qa = /* @__PURE__ */ function(e) {
7791
7889
  return e.REQUIRE_AUTH_TO_JOIN = "REQUIRE_AUTH_TO_JOIN", e.AUDIENCE_MODE = "AUDIENCE_MODE", e.WAITING_HALL = "WAITING_HALL", e.WAIT_FOR_ADMIN = "WAIT_FOR_ADMIN", e.ADMIN_IS_HERE = "ADMIN_IS_HERE", e.ASR = "ASR", e.FEEDBACK = "FEEDBACK", e.RECURRING = "RECURRING", e;
7792
- }(Wa || {});
7793
- function Ga(e, t) {
7890
+ }(qa || {});
7891
+ function Ja(e, t) {
7794
7892
  if (e.length !== t.length) return !1;
7795
7893
  for (let n of e) if (!t.includes(n)) return !1;
7796
7894
  return !0;
7797
7895
  }
7798
- function Ka(e, t) {
7896
+ function Ya(e, t) {
7799
7897
  let n = new Set(e);
7800
7898
  for (let [e, r] of Object.entries(t)) r ? n.add(e) : n.delete(e);
7801
7899
  return Array.from(n);
7802
7900
  }
7803
7901
  //#endregion
7804
7902
  //#region src/enums/MuteState.ts
7805
- var qa = /* @__PURE__ */ function(e) {
7903
+ var Xa = /* @__PURE__ */ function(e) {
7806
7904
  return e.UNMUTE = "UNMUTE", e.MUTE = "MUTE", e.MUTE_PERMANENT = "MUTE_PERMANENT", e;
7807
- }(qa || {}), Z = /* @__PURE__ */ function(e) {
7905
+ }(Xa || {}), Z = /* @__PURE__ */ function(e) {
7808
7906
  return e.CALLED = "CALLED", e.ACCEPTED = "ACCEPTED", e.REJECTED = "REJECTED", e.HUNGUP = "HUNGUP", e;
7809
- }(Z || {}), Ja = /* @__PURE__ */ function(e) {
7907
+ }(Z || {}), Za = /* @__PURE__ */ function(e) {
7810
7908
  return e.UPDATE = "UPDATE", e.REMOVE = "REMOVE", e.ACTIVATE = "ACTIVATE", e.TIMEOUT = "TIMEOUT", e;
7811
- }(Ja || {}), Ya = /* @__PURE__ */ function(e) {
7909
+ }(Za || {}), Qa = /* @__PURE__ */ function(e) {
7812
7910
  return e.NO_AVAILABLE_TRACKS = "no-available-tracks", e.UNKNOWN_ERROR = "unknown-error", e;
7813
- }(Ya || {});
7814
- function Xa(e) {
7911
+ }(Qa || {});
7912
+ function $a(e) {
7815
7913
  switch (e) {
7816
7914
  case 1: return "no-available-tracks";
7817
7915
  default: return "unknown-error";
@@ -7819,17 +7917,17 @@ function Xa(e) {
7819
7917
  }
7820
7918
  //#endregion
7821
7919
  //#region src/enums/UserRole.ts
7822
- var Za = /* @__PURE__ */ function(e) {
7920
+ var eo = /* @__PURE__ */ function(e) {
7823
7921
  return e.CREATOR = "CREATOR", e.ADMIN = "ADMIN", e;
7824
- }(Za || {});
7825
- function Qa(e, t) {
7922
+ }(eo || {});
7923
+ function to(e, t) {
7826
7924
  if (e.length !== t.length) return !1;
7827
7925
  for (let n of e) if (!t.includes(n)) return !1;
7828
7926
  return !0;
7829
7927
  }
7830
7928
  //#endregion
7831
7929
  //#region src/static/ParticipantConnectionStatusUtils.ts
7832
- var $a;
7930
+ var no;
7833
7931
  (function(e) {
7834
7932
  function t(e) {
7835
7933
  let t = e?.transport ?? e?.lastEffective ?? N.WAITING, n = {
@@ -7881,8 +7979,8 @@ var $a;
7881
7979
  shouldNotify: !0
7882
7980
  });
7883
7981
  }
7884
- })($a || ($a = {}));
7885
- var eo = $a, to = /* @__PURE__ */ function(e) {
7982
+ })(no || (no = {}));
7983
+ var ro = no, io = /* @__PURE__ */ function(e) {
7886
7984
  return e.USER = "USER", e.ANONYM = "ANONYM", e.GROUP = "GROUP", e;
7887
7985
  }({}), Q;
7888
7986
  (function(e) {
@@ -7945,7 +8043,7 @@ var eo = $a, to = /* @__PURE__ */ function(e) {
7945
8043
  })(Q || (Q = {}));
7946
8044
  //#endregion
7947
8045
  //#region src/types/WaitingHall.ts
7948
- function no(e) {
8046
+ function ao(e) {
7949
8047
  try {
7950
8048
  return btoa(JSON.stringify(e));
7951
8049
  } catch (t) {
@@ -7953,7 +8051,7 @@ function no(e) {
7953
8051
  }
7954
8052
  return null;
7955
8053
  }
7956
- function ro(e) {
8054
+ function oo(e) {
7957
8055
  try {
7958
8056
  return JSON.parse(atob(e));
7959
8057
  } catch (t) {
@@ -7963,12 +8061,12 @@ function ro(e) {
7963
8061
  }
7964
8062
  //#endregion
7965
8063
  //#region src/utils/Conversation.ts
7966
- var io = (e, t) => j.objectReduce(e, (e, n, r) => (n === t && e.push(r), e), []);
7967
- function ao(e) {
8064
+ var so = (e, t) => j.objectReduce(e, (e, n, r) => (n === t && e.push(r), e), []);
8065
+ function co(e) {
7968
8066
  if (e.conversation?.muteStates) return e.conversation.muteStates;
7969
8067
  if (e.muteState && e.muteOptions) return e.muteOptions.reduce((t, n) => (t[n] = e.muteState, t), {});
7970
8068
  }
7971
- function oo(e, t) {
8069
+ function lo(e, t) {
7972
8070
  switch (e) {
7973
8071
  case S.AUDIO: return !!t.isAudioEnabled;
7974
8072
  case S.AUDIO_SHARING: return !!t.isAudioSharingEnabled;
@@ -7977,12 +8075,12 @@ function oo(e, t) {
7977
8075
  default: return !1;
7978
8076
  }
7979
8077
  }
7980
- function so(e, t) {
8078
+ function uo(e, t) {
7981
8079
  return j.objectReduce(e, (e, n, r) => {
7982
8080
  switch (n) {
7983
- case qa.MUTE:
7984
- case qa.MUTE_PERMANENT:
7985
- oo(r, t) || (e[r] = n);
8081
+ case Xa.MUTE:
8082
+ case Xa.MUTE_PERMANENT:
8083
+ lo(r, t) || (e[r] = n);
7986
8084
  break;
7987
8085
  default:
7988
8086
  e[r] = n;
@@ -7991,19 +8089,19 @@ function so(e, t) {
7991
8089
  return e;
7992
8090
  }, {});
7993
8091
  }
7994
- function co(e) {
8092
+ function fo(e) {
7995
8093
  let { muteStates: t = {}, mediaSettings: n } = e;
7996
- return so(t, n);
8094
+ return uo(t, n);
7997
8095
  }
7998
- function lo(e, t) {
8096
+ function po(e, t) {
7999
8097
  let n = e.conversation.participants.find((t) => j.comparePeerId(t.peerId, e.peerId));
8000
8098
  if (!n) return t;
8001
8099
  let { mediaSettings: r } = n;
8002
- return so(t, r);
8100
+ return uo(t, r);
8003
8101
  }
8004
8102
  //#endregion
8005
8103
  //#region src/utils/IceServers.ts
8006
- function uo(e) {
8104
+ function mo(e) {
8007
8105
  if (!e) return null;
8008
8106
  let t = Array.from(new Set((e.urls ?? []).map((e) => e.trim()).filter((e) => e.length > 0)));
8009
8107
  return t.length ? {
@@ -8011,8 +8109,8 @@ function uo(e) {
8011
8109
  urls: t
8012
8110
  } : null;
8013
8111
  }
8014
- function fo(e, t) {
8015
- let n = [], r = uo(e), i = uo(t);
8112
+ function ho(e, t) {
8113
+ let n = [], r = mo(e), i = mo(t);
8016
8114
  if (r && n.push(r), i) {
8017
8115
  let e = [...i.urls];
8018
8116
  e.push(`${e[e.length - 1]}?transport=tcp`), n.push({
@@ -8024,7 +8122,7 @@ function fo(e, t) {
8024
8122
  }
8025
8123
  //#endregion
8026
8124
  //#region src/utils/Lz4.ts
8027
- function po(e, t) {
8125
+ function go(e, t) {
8028
8126
  let n = new Uint8Array(t), r = 0, i = 0;
8029
8127
  for (; r < e.length && i < t;) {
8030
8128
  let a = e[r++], o = a >> 4, s = a & 15;
@@ -8051,7 +8149,7 @@ function po(e, t) {
8051
8149
  }
8052
8150
  //#endregion
8053
8151
  //#region src/utils/SerializeLatest.ts
8054
- function mo(e) {
8152
+ function _o(e) {
8055
8153
  let t, n = !1, r, i = async () => {
8056
8154
  let t = !1, i;
8057
8155
  for (; n;) {
@@ -8072,7 +8170,7 @@ function mo(e) {
8072
8170
  }
8073
8171
  //#endregion
8074
8172
  //#region src/classes/AudioFix.ts
8075
- var ho = class {
8173
+ var vo = class {
8076
8174
  constructor(e, t = R, n = null) {
8077
8175
  h(this, "_fixNoPacketsApplied", !1), h(this, "_fixNoPacketsChecked", !1), h(this, "_fixTooManyPacketsApplied", !1), h(this, "_fixTooManyPacketsSucceeded", !1), h(this, "_fixTooManyPacketsFailed", !1), h(this, "_fixTooManyPacketsTime", void 0), h(this, "_mediaSource", void 0), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_lastPacketsSent", void 0), h(this, "_lastPacketsSentTime", void 0), h(this, "_toggleAudioPromise", null), h(this, "_fixNoPacketsAppliedVideo", !1), this._mediaSource = e, this._debug = t, this._logger = n;
8078
8176
  }
@@ -8110,7 +8208,7 @@ var ho = class {
8110
8208
  this._debug.warn("[AudioFix] Failed to fix RV (no packets): video restart", e);
8111
8209
  }));
8112
8210
  }
8113
- }, go = class {
8211
+ }, yo = class {
8114
8212
  constructor(e, t = !1, n = R, r = null) {
8115
8213
  h(this, "_audioElement", null), h(this, "_debug", void 0), h(this, "_preparedAudioElement", void 0), h(this, "_audioTracks", /* @__PURE__ */ new Map()), h(this, "_allowMultipleTracks", void 0), h(this, "_volume", 1), h(this, "_features", { setSinkId: !!Audio.prototype.setSinkId }), h(this, "_statFirstMediaReceived", void 0), h(this, "_logger", void 0), this._statFirstMediaReceived = e, this._allowMultipleTracks = t, this._debug = n, this._logger = r, this._preparedAudioElement = this._prepareAudioElement();
8116
8214
  }
@@ -8211,13 +8309,13 @@ var ho = class {
8211
8309
  };
8212
8310
  //#endregion
8213
8311
  //#region src/classes/conversation/ConversationResponseValidator.ts
8214
- function _o(e, t) {
8215
- e || yo(t, "response-empty"), e.id || yo(t, "id-empty"), e.endpoint || yo(t, "endpoint-empty"), !vo(e.stun_server) && !vo(e.turn_server) && yo(t, "ice-servers-empty");
8312
+ function bo(e, t) {
8313
+ e || So(t, "response-empty"), e.id || So(t, "id-empty"), e.endpoint || So(t, "endpoint-empty"), !xo(e.stun_server) && !xo(e.turn_server) && So(t, "ice-servers-empty");
8216
8314
  }
8217
- function vo(e) {
8315
+ function xo(e) {
8218
8316
  return Array.isArray(e?.urls) && e.urls.length > 0;
8219
8317
  }
8220
- function yo(e, t) {
8318
+ function So(e, t) {
8221
8319
  let n = e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`), r = e === "fastStart" || e === "fastJoin";
8222
8320
  throw new O(r ? e === "fastStart" ? D.FAST_START_ERROR : D.FAST_JOIN_ERROR : D.UNKNOWN_ERROR, {
8223
8321
  message: `Invalid ${e} response: ${t}`,
@@ -8236,7 +8334,7 @@ function yo(e, t) {
8236
8334
  }
8237
8335
  //#endregion
8238
8336
  //#region src/classes/DebugInfo.ts
8239
- var bo = 90, xo = 3, So = class extends b {
8337
+ var Co = 90, wo = 3, To = class extends b {
8240
8338
  constructor(e = R) {
8241
8339
  super(), h(this, "_lastMemoryStat", {
8242
8340
  percent: 0,
@@ -8252,11 +8350,11 @@ var bo = 90, xo = 3, So = class extends b {
8252
8350
  let e = window?.performance?.memory;
8253
8351
  if (!e || !e.usedJSHeapSize || !e.jsHeapSizeLimit) return;
8254
8352
  let t = Number((100 * e.usedJSHeapSize / e.jsHeapSizeLimit).toFixed(2)), n = Number((e.usedJSHeapSize / 1024 / 1024).toFixed(1));
8255
- t > bo ? this._debug.warn(`High memory usage: ${t}% (${n} MiB)`) : (!this._lastMemoryStat.percent || Math.abs(t - this._lastMemoryStat.percent) >= xo) && (this._debug.debug(`Memory usage: ${t}% (${n} MiB)`), this._lastMemoryStat.percent = t, this._lastMemoryStat.bytes = e.usedJSHeapSize);
8353
+ t > Co ? this._debug.warn(`High memory usage: ${t}% (${n} MiB)`) : (!this._lastMemoryStat.percent || Math.abs(t - this._lastMemoryStat.percent) >= wo) && (this._debug.debug(`Memory usage: ${t}% (${n} MiB)`), this._lastMemoryStat.percent = t, this._lastMemoryStat.bytes = e.usedJSHeapSize);
8256
8354
  }
8257
- }, Co = class {
8258
- constructor({ api: e, debug: t, getParticipants: n, isMe: r, updateDisplayLayout: i }) {
8259
- h(this, "_api", void 0), h(this, "_debug", void 0), h(this, "_getParticipants", void 0), h(this, "_isMe", void 0), h(this, "_updateDisplayLayout", void 0), h(this, "_requestedLayouts", {}), h(this, "_uncertainLayouts", {}), h(this, "_pendingRequests", null), h(this, "_pendingPromises", []), h(this, "_lastRequests", null), h(this, "_timer", null), h(this, "_inFlight", !1), h(this, "_lastFlushAt", null), h(this, "_generation", 0), h(this, "_forceNextFlush", !1), this._api = e, this._debug = t, this._getParticipants = n, this._isMe = r, this._updateDisplayLayout = i;
8355
+ }, Eo = class {
8356
+ constructor({ api: e, debug: t, getParticipants: n, isMe: r, updateDisplayLayout: i, onNonFatalError: a }) {
8357
+ h(this, "_api", void 0), h(this, "_debug", void 0), h(this, "_getParticipants", void 0), h(this, "_isMe", void 0), h(this, "_updateDisplayLayout", void 0), h(this, "_onNonFatalError", void 0), h(this, "_requestedLayouts", {}), h(this, "_uncertainLayouts", {}), h(this, "_pendingRequests", null), h(this, "_pendingPromises", []), h(this, "_lastRequests", null), h(this, "_timer", null), h(this, "_inFlight", !1), h(this, "_lastFlushAt", null), h(this, "_generation", 0), h(this, "_forceNextFlush", !1), this._api = e, this._debug = t, this._getParticipants = n, this._isMe = r, this._updateDisplayLayout = i, this._onNonFatalError = a;
8260
8358
  }
8261
8359
  request(e) {
8262
8360
  this._pendingRequests = e.slice(), this._lastRequests = e.slice();
@@ -8292,11 +8390,16 @@ var bo = 90, xo = 3, So = class extends b {
8292
8390
  this._pendingRequests = null, this._pendingPromises = [];
8293
8391
  let r = {};
8294
8392
  try {
8295
- r = this._getRequestLayouts(t);
8296
- let i = this._forceNextFlush || Object.keys(this._uncertainLayouts).length > 0;
8393
+ let i = this._getRequestLayouts(t);
8394
+ if (!i) {
8395
+ n.forEach(({ resolve: e }) => e());
8396
+ return;
8397
+ }
8398
+ r = i;
8399
+ let a = this._forceNextFlush || Object.keys(this._uncertainLayouts).length > 0;
8297
8400
  this._forceNextFlush = !1;
8298
- let a = this._getDiff(r, i);
8299
- a.length && await this._updateDisplayLayout(a), e === this._generation && (this._requestedLayouts = r, this._uncertainLayouts = {}), n.forEach(({ resolve: e }) => e());
8401
+ let o = this._getDiff(r, a);
8402
+ o.length && await this._updateDisplayLayout(o), e === this._generation && (this._requestedLayouts = r, this._uncertainLayouts = {}), n.forEach(({ resolve: e }) => e());
8300
8403
  } catch (t) {
8301
8404
  e === this._generation ? (this._uncertainLayouts = {
8302
8405
  ...this._uncertainLayouts,
@@ -8307,30 +8410,30 @@ var bo = 90, xo = 3, So = class extends b {
8307
8410
  }
8308
8411
  }
8309
8412
  _getRequestLayouts(e) {
8310
- let t = {}, n = this._getParticipants();
8311
- for (let r of e) {
8312
- let e = typeof r.uid == "object" ? r.uid : Q.fromId(r.uid), i = this._api.getCachedOkIdByExternalId(e);
8313
- if (!i) {
8314
- this._debug.log(`Unknown participant external ID ${typeof r.uid == "object" ? Q.toString(r.uid) : r.uid}`);
8413
+ let t = {}, n = [], r = this._getParticipants();
8414
+ for (let i of e) {
8415
+ let e = typeof i.uid == "object" ? i.uid : Q.fromId(i.uid), a = this._api.getCachedParticipantIdByExternalId(e);
8416
+ if (!a) {
8417
+ this._debug.log(`Unknown participant external ID ${typeof i.uid == "object" ? Q.toString(i.uid) : i.uid}`), n.push(e.id);
8315
8418
  continue;
8316
8419
  }
8317
- if (!n[i] && !this._isMe(i)) continue;
8318
- let a = Mn({
8319
- participantId: i,
8320
- mediaType: r.mediaType,
8321
- streamName: r.streamName
8420
+ if (!r[a] && !this._isMe(a)) continue;
8421
+ let o = Mn({
8422
+ participantId: a,
8423
+ mediaType: i.mediaType,
8424
+ streamName: i.streamName
8322
8425
  });
8323
- t[a] = {
8324
- uid: r.uid,
8325
- mediaType: r.mediaType,
8326
- width: r.width,
8327
- height: r.height,
8328
- fit: r.cover ? "cv" : "cn",
8329
- ...r.priority === void 0 ? {} : { priority: r.priority },
8330
- ...r.streamName === void 0 ? {} : { streamName: r.streamName }
8426
+ t[o] = {
8427
+ uid: i.uid,
8428
+ mediaType: i.mediaType,
8429
+ width: i.width,
8430
+ height: i.height,
8431
+ fit: i.cover ? "cv" : "cn",
8432
+ ...i.priority === void 0 ? {} : { priority: i.priority },
8433
+ ...i.streamName === void 0 ? {} : { streamName: i.streamName }
8331
8434
  };
8332
8435
  }
8333
- return t;
8436
+ return n.length ? (this._onNonFatalError(`Participant ID mapping not found for external IDs "${Array.from(new Set(n)).join("\", \"")}" while handling requestDisplayLayout`), null) : t;
8334
8437
  }
8335
8438
  _getDiff(e, t = !1) {
8336
8439
  let n = [];
@@ -8364,12 +8467,12 @@ var bo = 90, xo = 3, So = class extends b {
8364
8467
  let n = e, r = t;
8365
8468
  return n.width !== r.width || n.height !== r.height || n.fit !== r.fit || n.priority !== r.priority;
8366
8469
  }
8367
- }, wo = 44100, To = class {
8470
+ }, Do = 44100, Oo = class {
8368
8471
  constructor(e, t) {
8369
8472
  h(this, "_analyser", null), h(this, "_gainNode", null), h(this, "_fftBins", null), h(this, "_mediaStreamSource", null), h(this, "_lastSmoothedLevel", 0), h(this, "_trackId", void 0), h(this, "_track", void 0), h(this, "_stream", void 0), this._trackId = e, this._track = t, this._stream = new MediaStream([t]);
8370
8473
  try {
8371
8474
  let e = T.getAudioContext();
8372
- this._gainNode = e.createGain(), this._gainNode.gain.value = 1e-5, this._gainNode.connect(e.destination), this._analyser = e.createAnalyser(), this._analyser.fftSize = 1024, this._analyser.smoothingTimeConstant = 0, this._analyser.connect(this._gainNode), this._fftBins = new Uint8Array(this._analyser.frequencyBinCount), this._mediaStreamSource = e.createMediaStreamSource(this._stream), this._mediaStreamSource.connect(this._analyser);
8475
+ this._analyser = e.createAnalyser(), this._analyser.fftSize = 1024, this._analyser.smoothingTimeConstant = 0, T.browserName() === "Safari" && (this._gainNode = e.createGain(), this._gainNode.gain.value = 1e-5, this._gainNode.connect(e.destination), this._analyser.connect(this._gainNode)), this._fftBins = new Uint8Array(this._analyser.frequencyBinCount), this._mediaStreamSource = e.createMediaStreamSource(this._stream), this._mediaStreamSource.connect(this._analyser);
8373
8476
  } catch {}
8374
8477
  }
8375
8478
  get track() {
@@ -8381,7 +8484,7 @@ var bo = 90, xo = 3, So = class extends b {
8381
8484
  _getBins() {
8382
8485
  if (!this._fftBins || !this._analyser) return new Uint8Array();
8383
8486
  this._analyser.getByteFrequencyData(this._fftBins);
8384
- let e = wo / this._fftBins.length, t = Math.ceil(M.voiceParams.minFreq / e), n = Math.floor(M.voiceParams.maxFreq / e);
8487
+ let e = Do / this._fftBins.length, t = Math.ceil(M.voiceParams.minFreq / e), n = Math.floor(M.voiceParams.maxFreq / e);
8385
8488
  return this._fftBins.subarray(t, n);
8386
8489
  }
8387
8490
  getLevel() {
@@ -8394,7 +8497,7 @@ var bo = 90, xo = 3, So = class extends b {
8394
8497
  destroy() {
8395
8498
  this._mediaStreamSource && (this._mediaStreamSource.disconnect(), this._mediaStreamSource = null), this._gainNode && (this._gainNode.disconnect(), this._gainNode = null), this._analyser && (this._analyser.disconnect(), this._analyser = null, this._fftBins = null, this._lastSmoothedLevel = 0), this._stream.removeTrack(this._track);
8396
8499
  }
8397
- }, Eo = class extends b {
8500
+ }, ko = class extends b {
8398
8501
  constructor(e) {
8399
8502
  super(), h(this, "_detector", null), h(this, "_interval", null);
8400
8503
  let t = () => {
@@ -8410,7 +8513,7 @@ var bo = 90, xo = 3, So = class extends b {
8410
8513
  }), this.subscribe(e, qt.SOURCE_READY, n), n();
8411
8514
  }
8412
8515
  init(e) {
8413
- this._stopDetector(), this._detector = new To("local", e.clone());
8516
+ this._stopDetector(), this._detector = new Oo("local", e.clone());
8414
8517
  }
8415
8518
  _stopDetector() {
8416
8519
  this._detector && (this._detector.track.stop(), this._detector.destroy(), this._detector = null);
@@ -8418,7 +8521,7 @@ var bo = 90, xo = 3, So = class extends b {
8418
8521
  destroy() {
8419
8522
  this.unsubscribe(), this._interval && (window.clearTimeout(this._interval), this._interval = null), this._stopDetector();
8420
8523
  }
8421
- }, Do = class {
8524
+ }, Ao = class {
8422
8525
  constructor(e, t = R) {
8423
8526
  h(this, "processor", void 0), h(this, "queue", []), h(this, "isProcessing", !1), h(this, "_debug", void 0), this.processor = e, this._debug = t;
8424
8527
  }
@@ -8438,9 +8541,9 @@ var bo = 90, xo = 3, So = class extends b {
8438
8541
  this.isProcessing = !1;
8439
8542
  }
8440
8543
  }
8441
- }, Oo = /* @__PURE__ */ function(e) {
8544
+ }, jo = /* @__PURE__ */ function(e) {
8442
8545
  return e.VOLUMES_DETECTED = "VOLUMES_DETECTED", e;
8443
- }({}), ko = class extends b {
8546
+ }({}), Mo = class extends b {
8444
8547
  constructor(e) {
8445
8548
  super(), h(this, "_detectors", /* @__PURE__ */ new Map()), h(this, "_interval", null), h(this, "_activeParticipants", void 0), h(this, "_removedParticipants", void 0), h(this, "_topology", void 0), this._topology = e.getTopology(), this.subscribe(e, X.REMOTE_TRACK_ADDED, this._onRemoteTrackAdded.bind(this)), this.subscribe(e, X.REMOTE_TRACK_REMOVED, this._onRemoteTrackRemoved.bind(this)), this.subscribe(e, X.SIGNALLED_ACTIVE_PARTICIPANTS, this._onSignalledActiveParticipants.bind(this)), this.subscribe(e, X.TOPOLOGY_CHANGED, this._onTopologyChanged.bind(this));
8446
8549
  }
@@ -8448,7 +8551,7 @@ var bo = 90, xo = 3, So = class extends b {
8448
8551
  this._interval && (window.clearTimeout(this._interval), this._interval = null), this.unsubscribe(), this._destroyDetectors();
8449
8552
  }
8450
8553
  _onRemoteTrackAdded(e, t, n) {
8451
- if (n.kind === k.audio && (this._detectors.get(e)?.destroy(), this._detectors.set(e, new To(e, n)), !this._interval)) {
8554
+ if (n.kind === k.audio && (this._detectors.get(e)?.destroy(), this._detectors.set(e, new Oo(e, n)), !this._interval)) {
8452
8555
  let e = () => {
8453
8556
  this._collectVolumes(), this._interval = window.setTimeout(e, M.voiceParams.interval);
8454
8557
  };
@@ -8480,14 +8583,14 @@ var bo = 90, xo = 3, So = class extends b {
8480
8583
  }
8481
8584
  _getAudioTrackLevelByParticipantId(e) {
8482
8585
  if (this._isTransparentAudioMode()) return this._getTransparentAudioLevelByParticipantId(e);
8483
- let t = this._detectors.get(qr.AUDIO_MIX);
8586
+ let t = this._detectors.get(Xr.AUDIO_MIX);
8484
8587
  return t ? t.getLevel() : null;
8485
8588
  }
8486
8589
  _getTransparentAudioLevelByParticipantId(e) {
8487
8590
  if (!this._activeParticipants?.includes(e)) return null;
8488
8591
  let t = null;
8489
8592
  return this._detectors.forEach((e, n) => {
8490
- if (!n.startsWith(`${qr.TRANSPARENT_AUDIO_TRACK_PREFIX}-`)) return;
8593
+ if (!n.startsWith(`${Xr.TRANSPARENT_AUDIO_TRACK_PREFIX}-`)) return;
8491
8594
  let r = e.getLevel();
8492
8595
  (!t || r.real > t.real) && (t = r);
8493
8596
  }), t;
@@ -8506,11 +8609,11 @@ var bo = 90, xo = 3, So = class extends b {
8506
8609
  e.destroy();
8507
8610
  }), this._detectors.clear();
8508
8611
  }
8509
- }, Ao = /* @__PURE__ */ function(e) {
8612
+ }, No = /* @__PURE__ */ function(e) {
8510
8613
  return e.SPEAKER_CHANGED = "SPEAKER_CHANGED", e;
8511
- }({}), jo = class extends b {
8614
+ }({}), Po = class extends b {
8512
8615
  constructor(e, t, n) {
8513
- super(), h(this, "_speakerId", null), h(this, "_serverSideSpeakerDetection", !1), this._serverSideSpeakerDetection = n === J.SERVER, this.subscribe(e, Oo.VOLUMES_DETECTED, this._onVolumesDetected.bind(this)), this.subscribe(t, X.SIGNALLED_SPEAKER_CHANGED, this._onServerSpeakerChanged.bind(this)), this.subscribe(t, X.TOPOLOGY_CHANGED, this._onTopologyChanged.bind(this));
8616
+ super(), h(this, "_speakerId", null), h(this, "_serverSideSpeakerDetection", !1), this._serverSideSpeakerDetection = n === J.SERVER, this.subscribe(e, jo.VOLUMES_DETECTED, this._onVolumesDetected.bind(this)), this.subscribe(t, X.SIGNALLED_SPEAKER_CHANGED, this._onServerSpeakerChanged.bind(this)), this.subscribe(t, X.TOPOLOGY_CHANGED, this._onTopologyChanged.bind(this));
8514
8617
  }
8515
8618
  destroy() {
8516
8619
  this.unsubscribe();
@@ -8532,9 +8635,9 @@ var bo = 90, xo = 3, So = class extends b {
8532
8635
  _onTopologyChanged(e) {
8533
8636
  this._serverSideSpeakerDetection = e === J.SERVER;
8534
8637
  }
8535
- }, Mo = 15e3, No = 15e3, Po = class extends b {
8638
+ }, Fo = 15e3, Io = 15e3, Lo = class extends b {
8536
8639
  constructor(e, t, n, r = R, i = null) {
8537
- super(), h(this, "_transport", void 0), h(this, "_volumes", {}), h(this, "_participants", {}), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_connectionTimeout", 0), h(this, "_connectionTimeoutSuppressed", !1), h(this, "_volumeTimeout", 0), this._transport = e, this._participants = n, this._debug = r, this._logger = i, this.subscribe(e, X.STATE_CHANGED, this._onTransportStateChanged.bind(this)), this.subscribe(t, Oo.VOLUMES_DETECTED, this._onVolumesDetected.bind(this));
8640
+ super(), h(this, "_transport", void 0), h(this, "_volumes", {}), h(this, "_participants", {}), h(this, "_debug", void 0), h(this, "_logger", void 0), h(this, "_connectionTimeout", 0), h(this, "_connectionTimeoutSuppressed", !1), h(this, "_volumeTimeout", 0), this._transport = e, this._participants = n, this._debug = r, this._logger = i, this.subscribe(e, X.STATE_CHANGED, this._onTransportStateChanged.bind(this)), this.subscribe(t, jo.VOLUMES_DETECTED, this._onVolumesDetected.bind(this));
8538
8641
  }
8539
8642
  destroy() {
8540
8643
  this.unsubscribe(), this._connectionTimeout && window.clearTimeout(this._connectionTimeout), this._volumeTimeout && window.clearTimeout(this._volumeTimeout);
@@ -8546,10 +8649,10 @@ var bo = 90, xo = 3, So = class extends b {
8546
8649
  this._connectionTimeout || !this._connectionTimeoutSuppressed || this._reportConnectionTimeout();
8547
8650
  }
8548
8651
  _getConnectionTimeout() {
8549
- return this._transport.getTopology() === J.DIRECT ? Mo : M.specListenerParams.connectionTimeout;
8652
+ return this._transport.getTopology() === J.DIRECT ? Fo : M.specListenerParams.connectionTimeout;
8550
8653
  }
8551
8654
  _getVolumeTimeout() {
8552
- return this._transport.getTopology() === J.DIRECT ? No : M.specListenerParams.volumeTimeout;
8655
+ return this._transport.getTopology() === J.DIRECT ? Io : M.specListenerParams.volumeTimeout;
8553
8656
  }
8554
8657
  _onTransportStateChanged(e, t) {
8555
8658
  t === q.OPENED && (this._connectionTimeout || (this._connectionTimeoutSuppressed = !1, this._connectionTimeout = window.setTimeout(this._onConnectionTimeout.bind(this), this._getConnectionTimeout()))), t === q.CONNECTED && (this._volumeTimeout || (this._volumeTimeout = window.setTimeout(this._onVolumeTimeout.bind(this), this._getVolumeTimeout())), this._volumeTimeout && (window.clearTimeout(this._volumeTimeout), this._volumeTimeout = window.setTimeout(this._onVolumeTimeout.bind(this), this._getVolumeTimeout()))), t === q.FAILED && this._connectionTimeout && (this._debug.warn("Transport failed, send callSpecError"), this._logger?.log(C.CALL_SPEC_ERROR, `${this._transport.getTopology()}_CONNECTION_TIMEOUT`));
@@ -8582,7 +8685,7 @@ var bo = 90, xo = 3, So = class extends b {
8582
8685
  r && r.platform && (n = r.platform), e.indexOf(n) < 0 && (e.push(n), this._logger?.log(C.CALL_SPEC_ERROR, `${this._transport.getTopology()}_VOLUME_TIMEOUT_${n}`));
8583
8686
  }), e.length && this._debug.warn("There is silent participant, send callSpecError"), this._volumeTimeout = 0;
8584
8687
  }
8585
- }, Fo = class extends f {
8688
+ }, Ro = class extends f {
8586
8689
  constructor(e, t, n, r = () => void 0) {
8587
8690
  super(), h(this, "_externalLogger", void 0), h(this, "_api", void 0), h(this, "_conversationIdProvider", void 0), h(this, "_topologyProvider", void 0), h(this, "_batchInterval", 3e3), h(this, "_batchedClientStats", []), h(this, "_batchTimeout", null), h(this, "_serverTimeDelta", 0), h(this, "_waitingForServerTime", !0), h(this, "_deferredClientStats", []), this._api = e, this._externalLogger = t, this._conversationIdProvider = n, this._topologyProvider = r, this._calculateServerTimeDelta();
8588
8691
  }
@@ -8662,7 +8765,7 @@ var bo = 90, xo = 3, So = class extends b {
8662
8765
  _now() {
8663
8766
  return Date.now() - this._serverTimeDelta;
8664
8767
  }
8665
- }, Io = "invalid-error-metadata", Lo = 64, Ro = new Set(Object.values(D)), zo = new Set(Object.values(x)), Bo = {
8768
+ }, zo = "invalid-error-metadata", Bo = 64, Vo = new Set(Object.values(D)), Ho = new Set(Object.values(x)), Uo = {
8666
8769
  [D.CANCELED]: {
8667
8770
  type: "semantic",
8668
8771
  reason: "canceled"
@@ -8783,7 +8886,7 @@ var bo = 90, xo = 3, So = class extends b {
8783
8886
  type: "semantic",
8784
8887
  reason: "obsolete_client"
8785
8888
  }
8786
- }, Vo = {
8889
+ }, Wo = {
8787
8890
  [x.MIC_CAMERA_PERMISSION]: {
8788
8891
  type: "direct-error",
8789
8892
  error: {
@@ -8872,14 +8975,14 @@ var bo = 90, xo = 3, So = class extends b {
8872
8975
  }
8873
8976
  }
8874
8977
  };
8875
- function Ho(e) {
8876
- if (typeof e != "string" && typeof e != "number" || typeof e == "number" && !Number.isFinite(e)) return Io;
8978
+ function Go(e) {
8979
+ if (typeof e != "string" && typeof e != "number" || typeof e == "number" && !Number.isFinite(e)) return zo;
8877
8980
  let t = String(e).trim();
8878
- if (!t) return Io;
8981
+ if (!t) return zo;
8879
8982
  let n = t.toLowerCase().replace(/[\s_:]+/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
8880
- return !n || !/^[a-z0-9.-]+$/.test(n) ? Io : n.length > Lo ? `${n.slice(0, Lo - 3)}...` : n;
8983
+ return !n || !/^[a-z0-9.-]+$/.test(n) ? zo : n.length > Bo ? `${n.slice(0, Bo - 3)}...` : n;
8881
8984
  }
8882
- function Uo(e) {
8985
+ function Ko(e) {
8883
8986
  if (!e || typeof e != "object") return !1;
8884
8987
  let t = e;
8885
8988
  switch (t.scope) {
@@ -8891,49 +8994,49 @@ function Uo(e) {
8891
8994
  default: return !1;
8892
8995
  }
8893
8996
  }
8894
- function Wo(e) {
8895
- let t = Ho(e.description);
8997
+ function qo(e) {
8998
+ let t = Go(e.description);
8896
8999
  if (e.scope === "unknown") return `unknown:${t}`;
8897
- let n = Ho(e.code);
9000
+ let n = Go(e.code);
8898
9001
  return e.scope === "internal" ? `internal:${n}:${t}` : `${e.scope}:${e.source}:${n}:${t}`;
8899
9002
  }
8900
- function Go(e, t) {
9003
+ function Jo(e, t) {
8901
9004
  return t === null ? e.type === "direct-error" ? {
8902
9005
  reason: "error",
8903
- string_value: Wo(e.error)
8904
- } : { reason: "failed" } : Uo(t) ? {
9006
+ string_value: qo(e.error)
9007
+ } : { reason: "failed" } : Ko(t) ? {
8905
9008
  reason: "error",
8906
- string_value: Wo(t)
9009
+ string_value: qo(t)
8907
9010
  } : { reason: "failed" };
8908
9011
  }
8909
- function Ko(e) {
9012
+ function Yo(e) {
8910
9013
  if (e.hangup) {
8911
- let t = Bo[e.hangup];
9014
+ let t = Uo[e.hangup];
8912
9015
  return t ? t.type === "semantic" ? e.hangup === D.OBSOLETE_CLIENT && e.custom_error?.vchat_detailed_api_error.code ? {
8913
9016
  reason: t.reason,
8914
9017
  string_value: e.custom_error.vchat_detailed_api_error.code
8915
- } : { reason: t.reason } : Go(t, e.callError) : { reason: "failed" };
9018
+ } : { reason: t.reason } : Jo(t, e.callError) : { reason: "failed" };
8916
9019
  }
8917
9020
  if (e.error) {
8918
- let t = Vo[e.error];
8919
- return t ? Go(t, e.callError) : { reason: "failed" };
9021
+ let t = Wo[e.error];
9022
+ return t ? Jo(t, e.callError) : { reason: "failed" };
8920
9023
  }
8921
9024
  return { reason: "failed" };
8922
9025
  }
8923
- function qo(e) {
8924
- return e instanceof O ? Ko(e) : typeof e == "string" && (Ro.has(e) || zo.has(e)) ? Ko(new O(e)) : { reason: "failed" };
9026
+ function Xo(e) {
9027
+ return e instanceof O ? Yo(e) : typeof e == "string" && (Vo.has(e) || Ho.has(e)) ? Yo(new O(e)) : { reason: "failed" };
8925
9028
  }
8926
9029
  //#endregion
8927
9030
  //#region src/classes/stat/CallLifecycleStats.ts
8928
- var Jo = {
9031
+ var Zo = {
8929
9032
  wallNow: () => Date.now(),
8930
9033
  monotonicNow: () => performance.now()
8931
9034
  };
8932
- function Yo(e) {
9035
+ function Qo(e) {
8933
9036
  return e === "anonym_join" ? "join" : e;
8934
9037
  }
8935
- var Xo = class {
8936
- constructor(e, t = Jo) {
9038
+ var $o = class {
9039
+ constructor(e, t = Zo) {
8937
9040
  h(this, "_logger", void 0), h(this, "_clock", void 0), h(this, "_conversationId", null), h(this, "_callStartLabel", null), h(this, "_lifecycleStartedAtMonotonic", 0), h(this, "_pendingEvents", []), h(this, "_callStarted", !1), h(this, "_accepted", !1), h(this, "_firstMediaSent", !1), h(this, "_finished", !1), h(this, "_destroyed", !1), this._logger = e, this._clock = t;
8938
9041
  }
8939
9042
  get firstMediaSentReported() {
@@ -8945,7 +9048,7 @@ var Xo = class {
8945
9048
  markInitializationStarted({ source: e, conversationId: t }) {
8946
9049
  if (this._destroyed || this._callStartLabel !== null) return;
8947
9050
  let n = this._clock.wallNow();
8948
- this._callStartLabel = Yo(e), this._lifecycleStartedAtMonotonic = this._clock.monotonicNow(), t && (this._conversationId = t), this._record({
9051
+ this._callStartLabel = Qo(e), this._lifecycleStartedAtMonotonic = this._clock.monotonicNow(), t && (this._conversationId = t), this._record({
8949
9052
  name: H.CALL_INIT,
8950
9053
  source: e
8951
9054
  }, n);
@@ -8973,7 +9076,7 @@ var Xo = class {
8973
9076
  !this._canRecord() || this._firstMediaSent || (this._firstMediaSent = !0, this._record({ name: H.FIRST_MEDIA_SENT }));
8974
9077
  }
8975
9078
  markFinished(e) {
8976
- this._finish(qo(e));
9079
+ this._finish(Xo(e));
8977
9080
  }
8978
9081
  markTerminated() {
8979
9082
  this._finish({ reason: "terminated" });
@@ -9024,7 +9127,7 @@ var Xo = class {
9024
9127
  ...n && { immediately: !0 }
9025
9128
  });
9026
9129
  }
9027
- }, Zo = class {
9130
+ }, es = class {
9028
9131
  constructor(e, t) {
9029
9132
  h(this, "_logger", void 0), h(this, "_codecUsages", /* @__PURE__ */ new Map()), h(this, "getCurrentTransportTopology", void 0), this._logger = e, this.getCurrentTransportTopology = t;
9030
9133
  }
@@ -9087,7 +9190,7 @@ var Xo = class {
9087
9190
  this.report(e);
9088
9191
  }), this._codecUsages.clear();
9089
9192
  }
9090
- }, Qo = class {
9193
+ }, ts = class {
9091
9194
  constructor(e) {
9092
9195
  h(this, "_logger", void 0), h(this, "_eventualLogs", /* @__PURE__ */ new Set()), h(this, "_lastCallStatContext", null), this._logger = e;
9093
9196
  }
@@ -9121,11 +9224,11 @@ var Xo = class {
9121
9224
  }
9122
9225
  _logEventualStat({ data: e, occurredAt: t }) {
9123
9226
  this._logger.logClientStats({
9124
- ...e,
9125
- ...this._lastCallStatContext ?? {}
9227
+ ...this._lastCallStatContext ?? {},
9228
+ ...e
9126
9229
  }, { occurredAt: t });
9127
9230
  }
9128
- }, $o = class {
9231
+ }, ns = class {
9129
9232
  constructor(e) {
9130
9233
  if (h(this, "q", void 0), h(this, "inits", []), h(this, "n", [
9131
9234
  1,
@@ -9184,7 +9287,7 @@ var Xo = class {
9184
9287
  5
9185
9288
  ];
9186
9289
  }
9187
- }, es = class {
9290
+ }, rs = class {
9188
9291
  constructor() {
9189
9292
  h(this, "n", 0), h(this, "mean", 0);
9190
9293
  }
@@ -9196,9 +9299,9 @@ var Xo = class {
9196
9299
  get avg() {
9197
9300
  return this.n ? this.mean : NaN;
9198
9301
  }
9199
- }, ts = class {
9302
+ }, is = class {
9200
9303
  constructor() {
9201
- h(this, "count", 0), h(this, "minVal", Infinity), h(this, "maxVal", -Infinity), h(this, "mean", new es()), h(this, "p50", new $o(.5)), h(this, "p95", new $o(.95));
9304
+ h(this, "count", 0), h(this, "minVal", Infinity), h(this, "maxVal", -Infinity), h(this, "mean", new rs()), h(this, "p50", new ns(.5)), h(this, "p95", new ns(.95));
9202
9305
  }
9203
9306
  add(e) {
9204
9307
  e < this.minVal && (this.minVal = e), e > this.maxVal && (this.maxVal = e), this.mean.add(e), this.p50.add(e), this.p95.add(e), this.count++;
@@ -9216,11 +9319,11 @@ var Xo = class {
9216
9319
  get hasData() {
9217
9320
  return this.count > 0;
9218
9321
  }
9219
- }, ns = class {
9322
+ }, as = class {
9220
9323
  constructor(e) {
9221
9324
  h(this, "_logger", void 0), h(this, "trackerByTransport", {
9222
- ws: new ts(),
9223
- wt: new ts()
9325
+ ws: new is(),
9326
+ wt: new is()
9224
9327
  }), h(this, "lastSeen", {}), this._logger = e;
9225
9328
  }
9226
9329
  mark(e) {
@@ -9249,17 +9352,17 @@ var Xo = class {
9249
9352
  }
9250
9353
  destroy() {
9251
9354
  this.trackerByTransport = {
9252
- ws: new ts(),
9253
- wt: new ts()
9355
+ ws: new is(),
9356
+ wt: new is()
9254
9357
  }, this.lastSeen = {};
9255
9358
  }
9256
- }, rs = class {
9359
+ }, os = class {
9257
9360
  constructor(e) {
9258
9361
  h(this, "_logger", void 0), h(this, "trackerByCommand", /* @__PURE__ */ new Map()), this._logger = e;
9259
9362
  }
9260
9363
  mark(e, t, n) {
9261
9364
  let r = `${e}|${n}`, i;
9262
- this.trackerByCommand.has(r) ? i = this.trackerByCommand.get(r) : (i = new ts(), this.trackerByCommand.set(r, i)), i.add(t);
9365
+ this.trackerByCommand.has(r) ? i = this.trackerByCommand.get(r) : (i = new is(), this.trackerByCommand.set(r, i)), i.add(t);
9263
9366
  }
9264
9367
  logMetrics() {
9265
9368
  for (let [e, t] of this.trackerByCommand.entries()) {
@@ -9281,9 +9384,9 @@ var Xo = class {
9281
9384
  destroy() {
9282
9385
  this.trackerByCommand.clear();
9283
9386
  }
9284
- }, is = class {
9387
+ }, ss = class {
9285
9388
  constructor(e, t, n, r) {
9286
- h(this, "logger", void 0), h(this, "lifecycle", void 0), h(this, "statAggregator", void 0), h(this, "codecStatsAggregator", void 0), h(this, "pings", void 0), h(this, "signalingCommands", void 0), this.logger = new Fo(e, t, n, r), this.lifecycle = new Xo(this.logger), this.statAggregator = new Qo(this.logger), this.codecStatsAggregator = new Zo(this.logger, r), this.pings = new ns(this.logger), this.signalingCommands = new rs(this.logger);
9389
+ h(this, "logger", void 0), h(this, "lifecycle", void 0), h(this, "statAggregator", void 0), h(this, "codecStatsAggregator", void 0), h(this, "pings", void 0), h(this, "signalingCommands", void 0), this.logger = new Ro(e, t, n, r), this.lifecycle = new $o(this.logger), this.statAggregator = new ts(this.logger), this.codecStatsAggregator = new es(this.logger, r), this.pings = new as(this.logger), this.signalingCommands = new os(this.logger);
9287
9390
  }
9288
9391
  logHangup(e) {
9289
9392
  this.lifecycle.markFinished(e);
@@ -9294,7 +9397,7 @@ var Xo = class {
9294
9397
  destroy() {
9295
9398
  this.lifecycle.markTerminated(), this.lifecycle.destroy(), this.statAggregator.destroy(), this.codecStatsAggregator.destroy(), this.pings.destroy(), this.signalingCommands.destroy(), this.logger.destroy();
9296
9399
  }
9297
- }, as = class {
9400
+ }, cs = class {
9298
9401
  constructor(e) {
9299
9402
  h(this, "_statAggregator", void 0), h(this, "_isCallMarked", !1), h(this, "_isFinished", !1), h(this, "_callType", null), this._statAggregator = e;
9300
9403
  }
@@ -9319,8 +9422,8 @@ var Xo = class {
9319
9422
  call_type: this._callType
9320
9423
  }));
9321
9424
  }
9322
- }, os = 1e3, ss = 1e4;
9323
- function cs(e, t, n, r) {
9425
+ }, ls = 1e3, us = 1e4;
9426
+ function ds(e, t, n, r) {
9324
9427
  return new O(e, {
9325
9428
  callError: {
9326
9429
  scope: "external",
@@ -9331,11 +9434,11 @@ function cs(e, t, n, r) {
9331
9434
  message: r
9332
9435
  });
9333
9436
  }
9334
- var ls = 15, $ = class e extends b {
9437
+ var fs = 15, $ = class e extends b {
9335
9438
  constructor(e, t) {
9336
- super(), h(this, "_api", void 0), h(this, "_signaling", void 0), h(this, "_signalingActor", void 0), h(this, "_displayLayoutRequester", void 0), h(this, "_mediaSource", null), h(this, "_conversation", null), h(this, "_myLastRequestedLayouts", {}), h(this, "_state", "IDLE"), h(this, "_previousState", null), h(this, "_waitingHallHoldPending", !1), h(this, "_participantState", Z.CALLED), h(this, "_participants", {}), h(this, "_directTransportIsMaster", void 0), h(this, "_transport", null), h(this, "_debugInfo", null), h(this, "_debug", R.createSessionLogger()), h(this, "_volumesDetector", null), h(this, "_speakerDetector", null), h(this, "_localVolumeDetector", null), h(this, "_specListener", null), h(this, "_activeSpeakerId", null), h(this, "_lastSignalledActiveSpeakerId", null), h(this, "_isRealTimeAsrRequested", !1), h(this, "_serverSettings", kr()), h(this, "_serverTimeOffset", 0), h(this, "_delayedHangup", !1), h(this, "_onFastHangup", void 0), h(this, "_hangupEmitted", !1), h(this, "_hangupPromise", null), h(this, "_abortController", null), h(this, "_registeredPeerReceived", !1), h(this, "_calleeUnavailableTimer", null), h(this, "_reservedId", null), h(this, "_onUnload", void 0), h(this, "_audioOutput", void 0), h(this, "_stats", void 0), h(this, "_lastStalled", {}), h(this, "_audioMixStalled", !1), h(this, "_audioFix", null), h(this, "_streamByStreamId", /* @__PURE__ */ new Map()), h(this, "_streamIdByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_streamWaitTimerByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_sequenceNumberByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_cooldownTimestampByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_cooldownQueueCleanupTimer", null), h(this, "_statFirstMediaReceived", void 0), h(this, "_toggleLocalVideo", mo((e) => {
9439
+ super(), h(this, "_api", void 0), h(this, "_signaling", void 0), h(this, "_signalingActor", void 0), h(this, "_displayLayoutRequester", void 0), h(this, "_mediaSource", null), h(this, "_conversation", null), h(this, "_myLastRequestedLayouts", {}), h(this, "_state", "IDLE"), h(this, "_previousState", null), h(this, "_waitingHallHoldPending", !1), h(this, "_participantState", Z.CALLED), h(this, "_participants", {}), h(this, "_directTransportIsMaster", void 0), h(this, "_transport", null), h(this, "_debugInfo", null), h(this, "_debug", R.createSessionLogger()), h(this, "_volumesDetector", null), h(this, "_speakerDetector", null), h(this, "_localVolumeDetector", null), h(this, "_specListener", null), h(this, "_activeSpeakerId", null), h(this, "_lastSignalledActiveSpeakerId", null), h(this, "_isRealTimeAsrRequested", !1), h(this, "_serverSettings", kr()), h(this, "_serverTimeOffset", 0), h(this, "_delayedHangup", !1), h(this, "_onFastHangup", void 0), h(this, "_hangupEmitted", !1), h(this, "_hangupPromise", null), h(this, "_abortController", null), h(this, "_registeredPeerReceived", !1), h(this, "_calleeUnavailableTimer", null), h(this, "_reservedId", null), h(this, "_onUnload", void 0), h(this, "_audioOutput", void 0), h(this, "_stats", void 0), h(this, "_lastStalled", {}), h(this, "_audioMixStalled", !1), h(this, "_audioFix", null), h(this, "_streamByStreamId", /* @__PURE__ */ new Map()), h(this, "_streamIdByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_streamWaitTimerByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_sequenceNumberByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_cooldownTimestampByStreamDescription", /* @__PURE__ */ new Map()), h(this, "_cooldownQueueCleanupTimer", null), h(this, "_statFirstMediaReceived", void 0), h(this, "_toggleLocalVideo", _o((e) => {
9337
9440
  if (this._mediaSource) return this._stats.logger.log(C.MEDIA_STATUS, e ? "video_1" : "video_0"), this._mediaSource.toggleVideo(e);
9338
- })), h(this, "_toggleLocalAudio", mo((e) => {
9441
+ })), h(this, "_toggleLocalAudio", _o((e) => {
9339
9442
  if (this._mediaSource) return this._stats.logger.log(C.MEDIA_STATUS, e ? "audio_1" : "audio_0"), this._mediaSource.toggleAudio(e);
9340
9443
  })), h(this, "_changeMediaSettings", j.debounce(async (e) => {
9341
9444
  if (this._signaling.ready) try {
@@ -9347,21 +9450,22 @@ var ls = 15, $ = class e extends b {
9347
9450
  captureAudio: !1
9348
9451
  });
9349
9452
  }
9350
- }, 100)), this._stats = new is(e, t, () => this._conversation?.id || null, () => this._transport?.getTopology() ?? this._conversation?.topology), this._api = e, this._signaling = new za(this._debug, this._stats.logger, this._stats.statAggregator, this._stats.pings, this._stats.signalingCommands), this._signalingActor = new Do(this._onSignalingNotification.bind(this), this._debug), this._displayLayoutRequester = new Co({
9453
+ }, 100)), this._stats = new ss(e, t, () => this._conversation?.id || null, () => this._transport?.getTopology() ?? this._conversation?.topology), this._api = e, this._signaling = new Ha(this._debug, this._stats.logger, this._stats.statAggregator, this._stats.pings, this._stats.signalingCommands), this._signalingActor = new Ao(this._onSignalingNotification.bind(this), this._debug), this._displayLayoutRequester = new Eo({
9351
9454
  api: this._api,
9352
9455
  debug: this._debug,
9353
9456
  getParticipants: () => this._participants,
9354
9457
  isMe: (e) => this._isMe(e),
9355
- updateDisplayLayout: (e) => this.updateDisplayLayout(e)
9458
+ updateDisplayLayout: (e) => this.updateDisplayLayout(e),
9459
+ onNonFatalError: (e) => this._onNonFatalError(e)
9356
9460
  }), this._onUnload = () => {
9357
9461
  this._stopFirstMediaSentProbe(), this._conversation && this._api && this._sendHangupApi(this._conversation.id, this._state === "IDLE" ? D.CANCELED : D.HUNGUP), this._stats.destroy();
9358
- }, window.addEventListener("pagehide", this._onUnload), this._statFirstMediaReceived = new as(this._stats.statAggregator), this._audioOutput = new go(this._statFirstMediaReceived, M.transparentAudio, this._debug, this._stats.logger), M.videoTracksCount > 0 && (this._cooldownQueueCleanupTimer = window.setInterval(this._cleanupCooldownQueue.bind(this), os));
9462
+ }, window.addEventListener("pagehide", this._onUnload), this._statFirstMediaReceived = new cs(this._stats.statAggregator), this._audioOutput = new yo(this._statFirstMediaReceived, M.transparentAudio, this._debug, this._stats.logger), M.videoTracksCount > 0 && (this._cooldownQueueCleanupTimer = window.setInterval(this._cleanupCooldownQueue.bind(this), ls));
9359
9463
  }
9360
9464
  static current() {
9361
9465
  return z.getActive() ?? (M.hold ? null : z.getFirst());
9362
9466
  }
9363
9467
  static hangupAfterInit(e) {
9364
- let t = us;
9468
+ let t = ps;
9365
9469
  if (t) {
9366
9470
  if (typeof e == "function" && (t._onFastHangup = e), t._delayedHangup === !1 && !t._conversation) {
9367
9471
  t._delayedHangup = !0, t._abortController?.abort(new O(D.CANCELED));
@@ -9389,7 +9493,7 @@ var ls = 15, $ = class e extends b {
9389
9493
  return this._state === "HELD";
9390
9494
  }
9391
9495
  get isIncomingRinging() {
9392
- return this._conversation?.direction === Ba.INCOMING && this._state === "IDLE";
9496
+ return this._conversation?.direction === Ua.INCOMING && this._state === "IDLE";
9393
9497
  }
9394
9498
  static debugSessionId() {
9395
9499
  return e.current()?.debugSessionId ?? null;
@@ -9408,11 +9512,14 @@ var ls = 15, $ = class e extends b {
9408
9512
  get debugSessionId() {
9409
9513
  return this._debug.sessionId;
9410
9514
  }
9411
- getCachedRawOkIdByExternalId(e) {
9412
- return this._api.getCachedRawOkIdByExternalId(e);
9515
+ getCachedParticipantIdByExternalId(e) {
9516
+ return this._api.getCachedParticipantIdByExternalId(e);
9517
+ }
9518
+ _onNonFatalError(e) {
9519
+ L.onNonFatalError(Error(e), this.id);
9413
9520
  }
9414
9521
  getIncomingCallerExternalId() {
9415
- return this._conversation?.direction === Ba.INCOMING ? Object.values(this._participants).find((e) => !this._isMe(e.id))?.externalId ?? null : null;
9522
+ return this._conversation?.direction === Ua.INCOMING ? Object.values(this._participants).find((e) => !this._isMe(e.id))?.externalId ?? null : null;
9416
9523
  }
9417
9524
  _buildInternalParams() {
9418
9525
  let e = {
@@ -9422,24 +9529,24 @@ var ls = 15, $ = class e extends b {
9422
9529
  platform: M.platform,
9423
9530
  protocolVersion: M.protocolVersion,
9424
9531
  domainId: M.domain,
9425
- capabilities: xa.getFlags()
9532
+ capabilities: wa.getFlags()
9426
9533
  };
9427
9534
  return JSON.stringify(e);
9428
9535
  }
9429
9536
  async onStart({ opponentIds: e, opponentType: t, mediaOptions: n, payload: r = "", joiningAllowed: i = !1, requireAuthToJoin: a = !1, onlyAdminCanShareMovie: o, externalIds: s, onFastStart: c, conversationId: l }) {
9430
- let u = l ?? j.uuid(), d = (e?.length ?? 0) + (s?.length ?? 0), f = t === Va.USER && d === 1 ? M.calleeUnavailableWaitingTime : void 0;
9537
+ let u = l ?? j.uuid(), d = (e?.length ?? 0) + (s?.length ?? 0), f = t === Wa.USER && d === 1 ? M.calleeUnavailableWaitingTime : void 0;
9431
9538
  this._stats.lifecycle.markInitializationStarted({
9432
9539
  source: "outgoing",
9433
9540
  conversationId: u
9434
- }), this._debug.setConversationId(u), us = this, this._abortController = new AbortController(), this._api.setAbortSignal(this._abortController?.signal), this._signaling.setAbortSignal(this._abortController?.signal);
9541
+ }), this._debug.setConversationId(u), ps = this, this._abortController = new AbortController(), this._api.setAbortSignal(this._abortController?.signal), this._signaling.setAbortSignal(this._abortController?.signal);
9435
9542
  try {
9436
9543
  this._mediaSource = this._createMediaSource(), await this._mediaSource.request(n);
9437
9544
  let l = this._mediaSource.mediaSettings;
9438
- t === Va.CHAT || e && e.length > 1 ? this._logWithMediaSettings(C.OUTGOING_MULTIPARTY_CALL, l) : this._logWithMediaSettings(C.OUTGOING_CALL, l);
9545
+ t === Wa.CHAT || e && e.length > 1 ? this._logWithMediaSettings(C.OUTGOING_MULTIPARTY_CALL, l) : this._logWithMediaSettings(C.OUTGOING_CALL, l);
9439
9546
  let d = await this._startConversation({
9440
9547
  opponentIds: e,
9441
9548
  opponentType: t,
9442
- direction: Ba.OUTGOING,
9549
+ direction: Ua.OUTGOING,
9443
9550
  mediaOptions: n,
9444
9551
  payload: r,
9445
9552
  joiningAllowed: i,
@@ -9463,18 +9570,18 @@ var ls = 15, $ = class e extends b {
9463
9570
  let e = z.get(this._conversation.id);
9464
9571
  e && e !== this && e._close(new O(D.HUNGUP, { remote: !0 }));
9465
9572
  }
9466
- return z.add(this), await z.setActive(this.id), us = null, this._conversation.concurrent && await this._acceptConcurrent(), f && !this._registeredPeerReceived && this._state !== "CLOSE" && (this._calleeUnavailableTimer = window.setTimeout(() => {
9573
+ return z.add(this), await z.setActive(this.id), ps = null, this._conversation.concurrent && await this._acceptConcurrent(), f && !this._registeredPeerReceived && this._state !== "CLOSE" && (this._calleeUnavailableTimer = window.setTimeout(() => {
9467
9574
  this._calleeUnavailableTimer = null, this._close(new O(D.CALLEE_UNAVAILABLE), { signalingReason: D.CANCELED });
9468
9575
  }, f)), this._conversation;
9469
9576
  } catch (e) {
9470
- throw us = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to start conversation" }), e;
9577
+ throw ps = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to start conversation" }), e;
9471
9578
  }
9472
9579
  }
9473
9580
  async onJoin(e) {
9474
9581
  this._stats.lifecycle.markInitializationStarted({
9475
9582
  source: e.anonymous ? "anonym_join" : "join",
9476
9583
  conversationId: e.conversationId
9477
- }), us = this, this._state = "PROCESSING", this._debug.setConversationId(e.conversationId ?? null), this._abortController = new AbortController(), this._api.setAbortSignal(this._abortController?.signal), this._signaling.setAbortSignal(this._abortController?.signal);
9584
+ }), ps = this, this._state = "PROCESSING", this._debug.setConversationId(e.conversationId ?? null), this._abortController = new AbortController(), this._api.setAbortSignal(this._abortController?.signal), this._signaling.setAbortSignal(this._abortController?.signal);
9478
9585
  try {
9479
9586
  let t = !!e.observedIds?.length;
9480
9587
  if (t && M.videoTracksCount > 0) throw this._debug.error("Observer mode: please set videoTracksCount=0"), new O(D.UNSUPPORTED, { callError: {
@@ -9491,9 +9598,9 @@ var ls = 15, $ = class e extends b {
9491
9598
  code: "conversation",
9492
9599
  description: "not-initialized-after-join"
9493
9600
  } });
9494
- return this._conversation.observer = t, L.onLocalStream(this._mediaSource.getStream(), n, this.id), this._conversation.waitForAdmin || this._conversation.waitingHall ? (this._debug.log(this._conversation.waitForAdmin ? "Wait for admin" : "In waiting hall"), z.add(this), us = null, this._signaling.readyToSend(), L.onLocalStatus(this._conversation.waitForAdmin ? N.WAIT_FOR_ADMIN : N.WAITING_HALL, this.id), this._conversation) : this._onJoinPart2(r);
9601
+ return this._conversation.observer = t, L.onLocalStream(this._mediaSource.getStream(), n, this.id), this._conversation.waitForAdmin || this._conversation.waitingHall ? (this._debug.log(this._conversation.waitForAdmin ? "Wait for admin" : "In waiting hall"), z.add(this), ps = null, this._signaling.readyToSend(), L.onLocalStatus(this._conversation.waitForAdmin ? N.WAIT_FOR_ADMIN : N.WAITING_HALL, this.id), this._conversation) : this._onJoinPart2(r);
9495
9602
  } catch (e) {
9496
- throw us = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to join conversation" }), e;
9603
+ throw ps = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to join conversation" }), e;
9497
9604
  }
9498
9605
  }
9499
9606
  async _onJoinPart2(e, t = !0, n = !1) {
@@ -9508,7 +9615,7 @@ var ls = 15, $ = class e extends b {
9508
9615
  if (this._delayedHangup) throw new O(D.CANCELED);
9509
9616
  this._processConnectionSharedMovieInfo(e), this._processConversationUrlSharingInfo(e), this._processConnectionAsrInfo(e);
9510
9617
  let r = this._extractExternalRoomsData(e.rooms?.rooms, e.rooms?.roomId);
9511
- L.onConversation(this._conversation.externalId, this._conversation.mediaModifiers, this._getMuteStatesForCurrentRoom(), this._getMainRoomParticipants(), r, this.id), this._onConversationParticipantListChunk(e), this._processPinnedParticipants(e), L.onLocalStatus(N.WAITING, this.id), this._toggleJoinAvailability(), this._changeNeedRate(), t && (this._state = "ACTIVE"), this._changeFeatureSet(), t && (z.add(this), n ? await this._holdLocally() : await z.setActive(this.id), us = null);
9618
+ L.onConversation(this._conversation.externalId, this._conversation.mediaModifiers, this._getMuteStatesForCurrentRoom(), this._getMainRoomParticipants(), r, this.id), this._onConversationParticipantListChunk(e), this._processPinnedParticipants(e), L.onLocalStatus(N.WAITING, this.id), this._toggleJoinAvailability(), this._changeNeedRate(), t && (this._state = "ACTIVE"), this._changeFeatureSet(), t && (z.add(this), n ? await this._holdLocally() : await z.setActive(this.id), ps = null);
9512
9619
  let i = this._extractLocalParticipantFromConnection(e);
9513
9620
  if (i) {
9514
9621
  let e = j.mapParticipantState(i);
@@ -9516,11 +9623,15 @@ var ls = 15, $ = class e extends b {
9516
9623
  }
9517
9624
  return t && this._openTransport(Object.values(this._participants), !1), this._conversation;
9518
9625
  } catch (e) {
9519
- throw us = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to join conversation" }), e;
9626
+ throw ps = null, this._cleanupRegistry(), this._close(e, { errorText: "Unable to join conversation" }), e;
9520
9627
  }
9521
9628
  }
9522
9629
  _extractExternalRooms(e) {
9523
- return e.map(this._convertRoomToExternal.bind(this)).filter((e) => !!e);
9630
+ let t = [], n = [];
9631
+ return e.forEach((e) => {
9632
+ let { room: r, missingParticipantIds: i } = this._convertRoomToExternal(e);
9633
+ r && n.push(r), t.push(...i);
9634
+ }), this._reportMissingExternalIds(t, "EXTRACT_EXTERNAL_ROOMS"), n.filter((e) => !!e);
9524
9635
  }
9525
9636
  _extractExternalRoomsData(e, t) {
9526
9637
  if (!e || !e.length) return;
@@ -9532,7 +9643,7 @@ var ls = 15, $ = class e extends b {
9532
9643
  z.reserve(e), this._reservedId = e, this._stats.lifecycle.markInitializationStarted({
9533
9644
  source: "incoming",
9534
9645
  conversationId: e
9535
- }), this._debug.setConversationId(e), us = this, this._abortController = new AbortController(), this._api.setAbortSignal(this._abortController?.signal), this._signaling.setAbortSignal(this._abortController?.signal), a && this._api.setUserId(a);
9646
+ }), this._debug.setConversationId(e), ps = this, this._abortController = new AbortController(), this._api.setAbortSignal(this._abortController?.signal), this._signaling.setAbortSignal(this._abortController?.signal), a && this._api.setUserId(a);
9536
9647
  try {
9537
9648
  let a = await this._prepareConversation(e, t, n, r, i);
9538
9649
  if (this._mediaSource = this._createMediaSource(), !this._conversation) throw new O(D.UNKNOWN_ERROR, { callError: {
@@ -9541,20 +9652,20 @@ var ls = 15, $ = class e extends b {
9541
9652
  description: "incoming-not-initialized"
9542
9653
  } });
9543
9654
  if (!a.conversation.participants.find((e) => e.state === Z.CALLED && e.id === this._conversation?.userId)) throw this._debug.log("Push rejected (there is an active call)"), this._stats.logger.log(C.PUSH, "rejected"), new O(D.REJECTED);
9544
- if (await this._processConnection(a), this._extractConnectionUrlSharingInfo(a), this._allocateTransport(), this._createSpeakerDetector(), this._createSpecListener(), this._processPinnedParticipants(a), this._signaling.readyToSend(), this._stats.lifecycle.markCallStarted(), this._stats.logger.log(C.PUSH, "accepted"), z.add(this), us = null, this._delayedHangup) throw new O(D.CANCELED);
9655
+ if (await this._processConnection(a), this._extractConnectionUrlSharingInfo(a), this._allocateTransport(), this._createSpeakerDetector(), this._createSpecListener(), this._processPinnedParticipants(a), this._signaling.readyToSend(), this._stats.lifecycle.markCallStarted(), this._stats.logger.log(C.PUSH, "accepted"), z.add(this), ps = null, this._delayedHangup) throw new O(D.CANCELED);
9545
9656
  } catch (e) {
9546
- throw us = null, this._cleanupRegistry(), this._close(e, {
9657
+ throw ps = null, this._cleanupRegistry(), this._close(e, {
9547
9658
  errorText: "Unable to handle inbound call push",
9548
9659
  signalingReason: e instanceof O && e.hangup === D.BUSY ? D.BUSY : void 0
9549
9660
  }), e;
9550
9661
  }
9551
9662
  }
9552
9663
  _isInWaitingHall(e) {
9553
- return !e.conversation || !e.conversation.options.includes(Wa.WAITING_HALL) ? !1 : this._isRestricted(e);
9664
+ return !e.conversation || !e.conversation.options.includes(qa.WAITING_HALL) ? !1 : this._isRestricted(e);
9554
9665
  }
9555
9666
  _isWaitForAdmin(e) {
9556
9667
  if (!e.conversation) return !1;
9557
- let t = e.conversation.options.includes(Wa.WAIT_FOR_ADMIN), n = e.conversation.options.includes(Wa.ADMIN_IS_HERE);
9668
+ let t = e.conversation.options.includes(qa.WAIT_FOR_ADMIN), n = e.conversation.options.includes(qa.ADMIN_IS_HERE);
9558
9669
  return !t || t && n ? !1 : this._isRestricted(e);
9559
9670
  }
9560
9671
  _isRestricted(e) {
@@ -9562,7 +9673,7 @@ var ls = 15, $ = class e extends b {
9562
9673
  return t && t.restricted || !1;
9563
9674
  }
9564
9675
  _isAudienceMode(e) {
9565
- return e.conversation?.options?.includes(Wa.AUDIENCE_MODE) || !1;
9676
+ return e.conversation?.options?.includes(qa.AUDIENCE_MODE) || !1;
9566
9677
  }
9567
9678
  _isAudienceModeListener() {
9568
9679
  return this._conversation?.audienceMode && this._conversation?.restricted;
@@ -9592,7 +9703,7 @@ var ls = 15, $ = class e extends b {
9592
9703
  let i = atob(n), a = new Uint8Array(i.length);
9593
9704
  for (let e = 0; e < i.length; e++) a[e] = i.charCodeAt(e);
9594
9705
  try {
9595
- let e = po(a, r).reduce((e, t) => (e += String.fromCharCode(t), e), ""), { srcp: t, stne: n, tkn: i, trne: o, trnp: s, trnu: c, wse: l, wte: u } = JSON.parse(e);
9706
+ let e = go(a, r).reduce((e, t) => (e += String.fromCharCode(t), e), ""), { srcp: t, stne: n, tkn: i, trne: o, trnp: s, trnu: c, wse: l, wte: u } = JSON.parse(e);
9596
9707
  return {
9597
9708
  token: i,
9598
9709
  endpoint: l,
@@ -9795,10 +9906,10 @@ var ls = 15, $ = class e extends b {
9795
9906
  let t = await this._api.getConversationParams(e);
9796
9907
  this._debug.debug("Api.getConversationParams", t);
9797
9908
  let { turn_server: n, stun_server: r } = t;
9798
- return M.iceServers = fo(r, n), M.wssBase = t.endpoint, t.wt_endpoint && (M.wtsBase = t.wt_endpoint), M.wssToken = t.token, t.client_type && (M.clientType = t.client_type), t.external_user_type && (M.externalUserType = t.external_user_type), t;
9909
+ return M.iceServers = ho(r, n), M.wssBase = t.endpoint, t.wt_endpoint && (M.wtsBase = t.wt_endpoint), M.wssToken = t.token, t.client_type && (M.clientType = t.client_type), t.external_user_type && (M.externalUserType = t.external_user_type), t;
9799
9910
  }
9800
9911
  _setConversationParams({ turn_server: e, stun_server: t, endpoint: n, wt_endpoint: r, token: i, client_type: a }) {
9801
- M.iceServers = fo(t, e), M.wssBase = n, M.wssToken = i, r && (M.wtsBase = r), a && (M.clientType = a);
9912
+ M.iceServers = ho(t, e), M.wssBase = n, M.wssToken = i, r && (M.wtsBase = r), a && (M.clientType = a);
9802
9913
  }
9803
9914
  _buildSignalingEndpoint({ baseEndpoint: e, userId: t, type: n, deviceIdx: r, conversationId: i, token: a, conversationParams: o }) {
9804
9915
  let s = new URL(e), c = s.searchParams;
@@ -9830,10 +9941,10 @@ var ls = 15, $ = class e extends b {
9830
9941
  isVideo: f,
9831
9942
  joiningAllowed: a,
9832
9943
  requireAuthToJoin: o
9833
- }, this._abortController?.signal), !e) throw cs(D.FAST_START_ERROR, "invalid-response", "fast-start-response-empty");
9944
+ }, this._abortController?.signal), !e) throw ds(D.FAST_START_ERROR, "invalid-response", "fast-start-response-empty");
9834
9945
  if (!e.internalCallerParams) {
9835
9946
  let t = e.rejectedParticipants[0]?.status;
9836
- throw cs(D.FAST_START_ERROR, t ? "fast-start" : "invalid-response", t ?? "fast-start-internal-caller-params-empty", JSON.stringify(e));
9947
+ throw ds(D.FAST_START_ERROR, t ? "fast-start" : "invalid-response", t ?? "fast-start-internal-caller-params-empty", JSON.stringify(e));
9837
9948
  }
9838
9949
  } catch (e) {
9839
9950
  throw this._delayedHangup && this._abortController?.signal.aborted ? new O(D.CANCELED) : e instanceof O ? e : e instanceof Error ? new O(D.FAST_START_ERROR, { message: e.message }) : new O(D.FAST_START_ERROR, { message: String(e) });
@@ -9855,10 +9966,10 @@ var ls = 15, $ = class e extends b {
9855
9966
  token: new URL(t.endpoint).searchParams.get("token") ?? ""
9856
9967
  }, this._debug.debug("FastStart", p), m = "fastStart";
9857
9968
  } catch {
9858
- throw cs(D.FAST_START_ERROR, "invalid-response", "fast-start-internal-caller-params-invalid");
9969
+ throw ds(D.FAST_START_ERROR, "invalid-response", "fast-start-internal-caller-params-invalid");
9859
9970
  }
9860
9971
  } else p = await this._api.startConversation(d, e, t, f, i, a, o, { onlyAdminCanShareMovie: s }, c), this._debug.debug("Api.startConversation", p), m = "startConversation";
9861
- _o(p, m), this._setConversationParams(p), this._stats.lifecycle.bindConversationId(p.id);
9972
+ bo(p, m), this._setConversationParams(p), this._stats.lifecycle.bindConversationId(p.id);
9862
9973
  let ee = await this._connectSignaling(vr.START, p);
9863
9974
  return this._setConversation(p, ee, n), this._stats.lifecycle.markCallStarted(), ee;
9864
9975
  }
@@ -9883,9 +9994,9 @@ var ls = 15, $ = class e extends b {
9883
9994
  joinLink: i,
9884
9995
  isVideo: c,
9885
9996
  internalParams: this._buildInternalParams()
9886
- }, this._abortController?.signal), !e) throw cs(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-response-empty");
9887
- if (!e.internalCallerParams) throw cs(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-internal-caller-params-empty", JSON.stringify(e));
9888
- if (!e.conversationId) throw cs(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-conversation-id-empty", JSON.stringify(e));
9997
+ }, this._abortController?.signal), !e) throw ds(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-response-empty");
9998
+ if (!e.internalCallerParams) throw ds(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-internal-caller-params-empty", JSON.stringify(e));
9999
+ if (!e.conversationId) throw ds(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-conversation-id-empty", JSON.stringify(e));
9889
10000
  } catch (e) {
9890
10001
  throw this._delayedHangup && this._abortController?.signal.aborted ? new O(D.CANCELED) : e instanceof O ? e : e instanceof Error ? new O(D.FAST_JOIN_ERROR, { message: e.message }) : new O(D.FAST_JOIN_ERROR, { message: String(e) });
9891
10002
  }
@@ -9903,7 +10014,7 @@ var ls = 15, $ = class e extends b {
9903
10014
  token: new URL(t.endpoint).searchParams.get("token") ?? ""
9904
10015
  }, this._debug.debug("FastJoin", l), u = "fastJoin";
9905
10016
  } catch (e) {
9906
- throw e instanceof O ? e : cs(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-internal-caller-params-invalid");
10017
+ throw e instanceof O ? e : ds(D.FAST_JOIN_ERROR, "invalid-response", "fast-join-internal-caller-params-invalid");
9907
10018
  }
9908
10019
  } else if (t) l = await this._api.joinConversation(t, c, r), u = "joinConversation";
9909
10020
  else if (i) l = await this._api.joinConversationByLink(i, c, a, o), u = "joinConversationByLink";
@@ -9912,13 +10023,13 @@ var ls = 15, $ = class e extends b {
9912
10023
  code: "join",
9913
10024
  description: "target-missing"
9914
10025
  } });
9915
- if (this._debug.debug("Api.joinConversation", l), l.id && this._stats.lifecycle.bindConversationId(l.id), _o(l, u), l.id) {
10026
+ if (this._debug.debug("Api.joinConversation", l), l.id && this._stats.lifecycle.bindConversationId(l.id), bo(l, u), l.id) {
9916
10027
  if (z.has(l.id)) throw new O(D.HAS_ACTIVE_CALL);
9917
10028
  z.reserve(l.id), this._reservedId = l.id;
9918
10029
  }
9919
10030
  this._setConversationParams(l);
9920
10031
  let d = await this._connectSignaling(vr.JOIN, l);
9921
- return this._setConversation(l, d, Ba.JOINING), this._stats.lifecycle.markCallStarted(), d;
10032
+ return this._setConversation(l, d, Ua.JOINING), this._stats.lifecycle.markCallStarted(), d;
9922
10033
  }
9923
10034
  async _prepareConversation(e, t = A.USER, n, r, i) {
9924
10035
  W.setMark(H.SIGNALING_CONNECTED), this._debug.debug("Conversation: push", {
@@ -9980,7 +10091,7 @@ var ls = 15, $ = class e extends b {
9980
10091
  }), l.wt_endpoint = c);
9981
10092
  }
9982
10093
  let u = await this._connectSignaling(vr.ACCEPT, l);
9983
- return z.callsLength >= M.maxParallelCalls || !M.hold && z.callsLength > 0 ? (this._debug.log("Push rejected (busy)"), this._stats.logger.log(C.PUSH, "busy"), Promise.reject(new O(D.BUSY))) : (this._setConversation(l, u, Ba.INCOMING, t), u);
10094
+ return z.callsLength >= M.maxParallelCalls || !M.hold && z.callsLength > 0 ? (this._debug.log("Push rejected (busy)"), this._stats.logger.log(C.PUSH, "busy"), Promise.reject(new O(D.BUSY))) : (this._setConversation(l, u, Ua.INCOMING, t), u);
9984
10095
  }
9985
10096
  _createParticipant(e, t, n = !0) {
9986
10097
  let r = Object.assign({
@@ -10003,19 +10114,17 @@ var ls = 15, $ = class e extends b {
10003
10114
  isInRoom: !1,
10004
10115
  markers: null
10005
10116
  }, e), i = !!r.externalId;
10006
- return i || (r.externalId = this._getParticipantId(t ?? r.id)), n && i && this._api.cacheExternalId(t ?? r.id, r.externalId), t && this._api.mapDecorativeId(t, r.id), r.observedIds?.length && (r.externalId.observer = !0), e.markers && (r.markers = this._denormalizeMarkers(r.id, e.markers)), r.connectionStatus = eo.create(r.connectionStatus), r;
10117
+ if (!i) {
10118
+ let e = this._getParticipantId(t ?? r.id);
10119
+ e && (r.externalId = e);
10120
+ }
10121
+ return n && i && this._api.cacheExternalId(t ?? r.id, r.externalId), t && this._api.mapDecorativeId(t, r.id), r.observedIds?.length && r.externalId && (r.externalId.observer = !0), e.markers && (r.markers = this._denormalizeMarkers(r.id, e.markers)), r.connectionStatus = ro.create(r.connectionStatus), r;
10007
10122
  }
10008
10123
  _getParticipantId(e) {
10009
- try {
10010
- return this._api.userId(e);
10011
- } catch (e) {
10012
- throw this._close(e instanceof O ? e : new O(D.NETWORK_ERROR, { callError: {
10013
- scope: "network",
10014
- source: "api",
10015
- code: "fetch-failed",
10016
- description: "request-failed"
10017
- } }), { errorText: e }), e;
10018
- }
10124
+ let t = this._api.userId(e);
10125
+ if (t) return t;
10126
+ let { compositeUserId: n, deviceIdx: r } = j.decomposeParticipantId(e), { id: i, type: a } = j.decomposeId(n);
10127
+ return a === A.GROUP ? Q.fromId(String(i), void 0, r) : null;
10019
10128
  }
10020
10129
  _cacheParticipantExternalIds(e) {
10021
10130
  e.forEach((e) => {
@@ -10023,7 +10132,7 @@ var ls = 15, $ = class e extends b {
10023
10132
  if (n) {
10024
10133
  this._api.cacheExternalId(t, n);
10025
10134
  let r = j.composeDecorativeId(e), i = Q.fromSignalingParticipant(e);
10026
- r && i && (this._api.cacheExternalId(r, i), this._api.mapDecorativeId(e.decorativeUserId, e.id));
10135
+ r && i && (this._api.cacheExternalId(r, i), this._api.mapDecorativeId(r, t));
10027
10136
  }
10028
10137
  });
10029
10138
  }
@@ -10088,7 +10197,7 @@ var ls = 15, $ = class e extends b {
10088
10197
  }
10089
10198
  _createMediaSource() {
10090
10199
  let e = new Yt(this._debug, this._stats.logger);
10091
- return this.subscribe(e, qt.SOURCE_CHANGED, this._onLocalMediaStreamChanged.bind(this)), this.subscribe(e, qt.SCREEN_STATUS, this._onScreenSharingStatus.bind(this)), this._audioFix = new ho(e, this._debug, this._stats.logger), e;
10200
+ return this.subscribe(e, qt.SOURCE_CHANGED, this._onLocalMediaStreamChanged.bind(this)), this.subscribe(e, qt.SCREEN_STATUS, this._onScreenSharingStatus.bind(this)), this._audioFix = new vo(e, this._debug, this._stats.logger), e;
10092
10201
  }
10093
10202
  async _connectSignaling(e, t) {
10094
10203
  this._signaling.setEndpoint(t.endpoint), this._signaling.setWebTransportEndpoint(t.wt_endpoint ? t.wt_endpoint : null), this.subscribe(this._signaling, G.NOTIFICATION, (e) => this._signalingActor.add(e)), this.subscribe(this._signaling, G.FAILED, this._onSignalingFailed.bind(this)), this.subscribe(this._signaling, G.RECONNECT, this._onSignalingReconnect.bind(this));
@@ -10096,7 +10205,7 @@ var ls = 15, $ = class e extends b {
10096
10205
  return this._stats.statAggregator.logEventualStat({ name: H.SIGNALING_CONNECTED }), n;
10097
10206
  }
10098
10207
  async _processConnection(e) {
10099
- await this._registerConnectionParticipants(e), this._processRooms(e), this._processMuteStates(e), this._processRecordInfos(e), this._onOptionsChanged(e.conversation.options), e.chatRoom && e.chatRoom.totalCount && this._onChatRoomUpdated(Ha.ATTENDEE, e.chatRoom.totalCount, e.chatRoom.firstParticipants, null, null);
10208
+ await this._registerConnectionParticipants(e), this._processRooms(e), this._processMuteStates(e), this._processRecordInfos(e), this._onOptionsChanged(e.conversation.options), e.chatRoom && e.chatRoom.totalCount && this._onChatRoomUpdated(Ga.ATTENDEE, e.chatRoom.totalCount, e.chatRoom.firstParticipants, null, null);
10100
10209
  }
10101
10210
  _onConversationParticipantListChunk(e) {
10102
10211
  let t = e.participants;
@@ -10165,7 +10274,7 @@ var ls = 15, $ = class e extends b {
10165
10274
  _registerParticipantLocalMuteState({ muteStates: e, unmuteOptions: t }) {
10166
10275
  if (!e) return;
10167
10276
  let n = async () => {
10168
- let n = io(e, qa.MUTE), r = io(e, qa.MUTE_PERMANENT);
10277
+ let n = so(e, Xa.MUTE), r = so(e, Xa.MUTE_PERMANENT);
10169
10278
  for (let i of [n, r]) i.length && await this._onMuteParticipant({
10170
10279
  muteStates: e,
10171
10280
  unmuteOptions: t,
@@ -10179,8 +10288,8 @@ var ls = 15, $ = class e extends b {
10179
10288
  if (!(!M.enableSessionStateUpdates || this._isMe(e))) return t;
10180
10289
  }
10181
10290
  _buildConnectionStatus(e, t, n, r = !1) {
10182
- return eo.create({
10183
- transport: r ? N.ONHOLD : eo.fromTransportState(n) ?? N.WAITING,
10291
+ return ro.create({
10292
+ transport: r ? N.ONHOLD : ro.fromTransportState(n) ?? N.WAITING,
10184
10293
  sessionState: this._remoteParticipantSessionState(e, t),
10185
10294
  sessionStateApplicable: this._isParticipantSessionStateApplicable(e)
10186
10295
  });
@@ -10189,12 +10298,12 @@ var ls = 15, $ = class e extends b {
10189
10298
  return M.enableSessionStateUpdates && !this._isMe(e) && this._conversation?.topology === J.SERVER;
10190
10299
  }
10191
10300
  _setTransportStatus(e, t) {
10192
- return eo.setTransport(e.connectionStatus, t);
10301
+ return ro.setTransport(e.connectionStatus, t);
10193
10302
  }
10194
10303
  _setSessionState(e, t) {
10195
- let n = eo.setSessionStateApplicable(e.connectionStatus, this._isParticipantSessionStateApplicable(e.id));
10304
+ let n = ro.setSessionStateApplicable(e.connectionStatus, this._isParticipantSessionStateApplicable(e.id));
10196
10305
  this._emitParticipantTransition(e, n);
10197
- let r = e.connectionStatus.sessionStateApplicable && e.id === this._activeSpeakerId && e.connectionStatus.transport === N.CONNECTED, i = eo.setSessionState(e.connectionStatus, t, r);
10306
+ let r = e.connectionStatus.sessionStateApplicable && e.id === this._activeSpeakerId && e.connectionStatus.transport === N.CONNECTED, i = ro.setSessionState(e.connectionStatus, t, r);
10198
10307
  return this._emitParticipantTransition(e, i), i;
10199
10308
  }
10200
10309
  _emitParticipantTransition(e, t, n = null) {
@@ -10206,33 +10315,40 @@ var ls = 15, $ = class e extends b {
10206
10315
  _getExistedParticipantByIdOrCreate(e) {
10207
10316
  let t = this._participants[e];
10208
10317
  if (t) return t;
10209
- let n = this._api.getDecorativeIdByInitialId(j.decomposeId(e).id), r = n ? j.composeUserId(n) : void 0, i = this._getParticipantId(e), { deviceIdx: a } = j.decomposeParticipantId(e);
10318
+ let n = this._api.getDecorativeIdByInitialId(e), r = this._getParticipantId(e), { deviceIdx: i } = j.decomposeParticipantId(e);
10210
10319
  return this._createParticipant({
10211
10320
  id: e,
10212
- externalId: {
10213
- ...i,
10214
- deviceIdx: a
10215
- }
10216
- }, r, !1);
10321
+ externalId: r ? {
10322
+ ...r,
10323
+ deviceIdx: i
10324
+ } : void 0
10325
+ }, n, !1);
10217
10326
  }
10218
10327
  _getExternalIdByParticipantId(e) {
10219
- if (this._isMe(e)) return this._conversation?.externalId;
10328
+ if (this._isMe(e)) return this._conversation?.externalId ?? null;
10220
10329
  if (M.useParticipantListChunk) return this._getExistedParticipantByIdOrCreate(e).externalId;
10221
10330
  let t = this._participants;
10222
10331
  if (t[e]?.externalId) return t[e].externalId;
10223
- {
10224
- let t = this._getParticipantId(e);
10225
- return this._api.cacheExternalId(e, t), t;
10226
- }
10332
+ let n = this._api.getCachedExternalIdByParticipantId(e);
10333
+ if (n) return n;
10334
+ let r = this._getParticipantId(e);
10335
+ return r && this._api.cacheExternalId(e, r), r;
10227
10336
  }
10228
- _getExternalIdsByOkIdsFromCache(e) {
10229
- return e.map((e) => this._api.getCachedExternalIdByOkId(e) ?? Q.fromId(String(e)));
10337
+ _getExternalIdsByParticipantIds(e) {
10338
+ let t = [], n = [];
10339
+ return e.forEach((e) => {
10340
+ let r = this._getExternalIdByParticipantId(e);
10341
+ r ? t.push(r) : n.push(e);
10342
+ }), {
10343
+ externalIds: t,
10344
+ missingIds: n
10345
+ };
10230
10346
  }
10231
- _getOrCacheExternalIdByCompositeId(e) {
10232
- let t = j.extractOkId(e), n = this._api.getCachedExternalIdByOkId(t);
10233
- if (n) return n;
10234
- let r = Q.fromId(String(t));
10235
- return this._api.cacheExternalId(e, r), r;
10347
+ _reportMissingExternalIds(e, t) {
10348
+ e.length && this._onNonFatalError(`External ID mapping not found for participants "${Array.from(new Set(e)).join("\", \"")}" while handling ${t}`);
10349
+ }
10350
+ _reportMissingExternalIdsById(e, t) {
10351
+ e.length && this._onNonFatalError(`Participant ID mapping not found for external IDs "${Array.from(new Set(e)).join("\", \"")}" while handling ${t}`);
10236
10352
  }
10237
10353
  _registerParticipantAndSetMarkersIfChunkEnabled(e, t) {
10238
10354
  if (M.useParticipantListChunk) {
@@ -10258,11 +10374,11 @@ var ls = 15, $ = class e extends b {
10258
10374
  this._onRoomSwitched(t, !0);
10259
10375
  }
10260
10376
  _processMuteStates(e, t = !1) {
10261
- let n = ao(e);
10377
+ let n = co(e);
10262
10378
  this._setMuteStatesForRoomId(n, null);
10263
10379
  for (let t of e.rooms?.rooms ?? []) this._setMuteStatesForRoomId(t.muteStates, t.id);
10264
10380
  let r = this._getMuteStatesForCurrentRoom();
10265
- t && (r = lo(e, r));
10381
+ t && (r = po(e, r));
10266
10382
  let i = Object.keys(r), a = this._conversation?.roomId;
10267
10383
  i.length && this._onMuteParticipant({
10268
10384
  muteStates: r,
@@ -10282,15 +10398,15 @@ var ls = 15, $ = class e extends b {
10282
10398
  }
10283
10399
  _allocateTransport() {
10284
10400
  if (!this._conversation || !this._mediaSource) return;
10285
- this._transport = new la(this._conversation.topology, this._signaling, this._mediaSource, this._serverSettings, this._debug, this._stats.logger, this._stats.statAggregator, this._stats.codecStatsAggregator, this._getFirstMediaSentCallback()), this._debugInfo = new So(this._debug), this.subscribe(this._transport, X.STATE_CHANGED, this._onTransportStateChanged.bind(this)), this.subscribe(this._transport, X.LOCAL_STATE_CHANGED, this._onTransportLocalStateChanged.bind(this)), this.subscribe(this._transport, X.REMOTE_TRACK_ADDED, this._onRemoteTrackAdded.bind(this)), this.subscribe(this._transport, X.REMOTE_TRACK_REMOVED, this._onRemoteTrackRemoved.bind(this)), this.subscribe(this._transport, X.AUDIO_MIX_STALL, this._onAudioMixStall.bind(this)), this.subscribe(this._transport, X.REMOTE_DATA_STATS, this._onRemoteDataStats.bind(this)), this.subscribe(this._transport, X.SIGNALLED_STALLED_PARTICIPANTS, this._onRemoteSignalledStall.bind(this)), this.subscribe(this._transport, X.TOPOLOGY_CHANGED, this._onTopologyChanged.bind(this)), this.subscribe(this._transport, X.NETWORK_STATUS, this._onNetworkStatus.bind(this)), this.subscribe(this._transport, X.REMOTE_STREAM_SECOND, this._onRemoteStreamSecond.bind(this)), this.subscribe(this._transport, X.PEER_CONNECTION_CLOSED, this._onPeerConnectionClosed.bind(this)), this.subscribe(this._transport, X.ASR_TRANSCRIPTION, this._onAsrTranscription.bind(this)), this.subscribe(this._transport, X.ANIMOJI_STREAM, this._onAnimojiStream.bind(this)), this.subscribe(this._transport, X.ANIMOJI_ERROR, this._onAnimojiError.bind(this));
10286
- let e = this._conversation.direction === Ba.OUTGOING && !this._conversation.concurrent, t = this._participants;
10401
+ this._transport = new fa(this._conversation.topology, this._signaling, this._mediaSource, this._serverSettings, this._debug, this._stats.logger, this._stats.statAggregator, this._stats.codecStatsAggregator, this._getFirstMediaSentCallback()), this._debugInfo = new To(this._debug), this.subscribe(this._transport, X.STATE_CHANGED, this._onTransportStateChanged.bind(this)), this.subscribe(this._transport, X.LOCAL_STATE_CHANGED, this._onTransportLocalStateChanged.bind(this)), this.subscribe(this._transport, X.REMOTE_TRACK_ADDED, this._onRemoteTrackAdded.bind(this)), this.subscribe(this._transport, X.REMOTE_TRACK_REMOVED, this._onRemoteTrackRemoved.bind(this)), this.subscribe(this._transport, X.AUDIO_MIX_STALL, this._onAudioMixStall.bind(this)), this.subscribe(this._transport, X.REMOTE_DATA_STATS, this._onRemoteDataStats.bind(this)), this.subscribe(this._transport, X.SIGNALLED_STALLED_PARTICIPANTS, this._onRemoteSignalledStall.bind(this)), this.subscribe(this._transport, X.TOPOLOGY_CHANGED, this._onTopologyChanged.bind(this)), this.subscribe(this._transport, X.NETWORK_STATUS, this._onNetworkStatus.bind(this)), this.subscribe(this._transport, X.REMOTE_STREAM_SECOND, this._onRemoteStreamSecond.bind(this)), this.subscribe(this._transport, X.PEER_CONNECTION_CLOSED, this._onPeerConnectionClosed.bind(this)), this.subscribe(this._transport, X.ASR_TRANSCRIPTION, this._onAsrTranscription.bind(this)), this.subscribe(this._transport, X.ANIMOJI_STREAM, this._onAnimojiStream.bind(this)), this.subscribe(this._transport, X.ANIMOJI_ERROR, this._onAnimojiError.bind(this));
10402
+ let e = this._conversation.direction === Ua.OUTGOING && !this._conversation.concurrent, t = this._participants;
10287
10403
  for (let n of Object.values(t)) (n.state === Z.ACCEPTED || n.state === Z.CALLED) && this._allocateParticipantTransport(n.id, e);
10288
10404
  }
10289
10405
  _createSpeakerDetector() {
10290
- this._transport && this._conversation && (this._volumesDetector = new ko(this._transport), this.subscribe(this._volumesDetector, Oo.VOLUMES_DETECTED, this._onVolumesDetected.bind(this)), this._speakerDetector = new jo(this._volumesDetector, this._transport, this._conversation.topology), this.subscribe(this._speakerDetector, Ao.SPEAKER_CHANGED, this._onSpeakerChanged.bind(this)), this._localVolumeDetector = new Eo(this._mediaSource));
10406
+ this._transport && this._conversation && (this._volumesDetector = new Mo(this._transport), this.subscribe(this._volumesDetector, jo.VOLUMES_DETECTED, this._onVolumesDetected.bind(this)), this._speakerDetector = new Po(this._volumesDetector, this._transport, this._conversation.topology), this.subscribe(this._speakerDetector, No.SPEAKER_CHANGED, this._onSpeakerChanged.bind(this)), this._localVolumeDetector = new ko(this._mediaSource));
10291
10407
  }
10292
10408
  _createSpecListener() {
10293
- this._transport && this._volumesDetector && (this._specListener = new Po(this._transport, this._volumesDetector, this._participants, this._debug, this._stats.logger));
10409
+ this._transport && this._volumesDetector && (this._specListener = new Lo(this._transport, this._volumesDetector, this._participants, this._debug, this._stats.logger));
10294
10410
  }
10295
10411
  _logDevices() {
10296
10412
  let e = T.getCameras().length, t = T.getMicrophones().length;
@@ -10389,7 +10505,7 @@ var ls = 15, $ = class e extends b {
10389
10505
  _onRemoveParticipant(e) {
10390
10506
  this._debug.debug(`Remove participant [${e}]`);
10391
10507
  let t = [], n = this._participants;
10392
- for (let r = 0; r <= ls; r++) {
10508
+ for (let r = 0; r <= fs; r++) {
10393
10509
  let i = n[j.compose(e, r)];
10394
10510
  i && t.push(i);
10395
10511
  }
@@ -10479,11 +10595,11 @@ var ls = 15, $ = class e extends b {
10479
10595
  this._waitingHallHoldPending = !1, await this._resumeLocalMedia(t, this._getWaitingForPromotionStatus()), this._allocateTransport(), this._createSpeakerDetector(), this._createSpecListener();
10480
10596
  return;
10481
10597
  }
10482
- let n = ya.get();
10598
+ let n = Sa.get();
10483
10599
  await this._signaling.hold(!1, n), this._restoreStateAfterHold();
10484
10600
  let r = null;
10485
10601
  if (this._state === "IDLE" && this._participantState === Z.ACCEPTED && (r = Object.values(this._participants), r.some((e) => e.state === Z.ACCEPTED) && (this._state = "ACTIVE", this._changeFeatureSet())), await this._resumeLocalMedia(t, N.WAITING), this._allocateTransport(), this._createSpeakerDetector(), this._createSpecListener(), this._state === "ACTIVE") {
10486
- let e = this._conversation?.direction === Ba.OUTGOING && !this._conversation.concurrent;
10602
+ let e = this._conversation?.direction === Ua.OUTGOING && !this._conversation.concurrent;
10487
10603
  this._openTransport(r ?? Object.values(this._participants), e);
10488
10604
  }
10489
10605
  }
@@ -10517,30 +10633,34 @@ var ls = 15, $ = class e extends b {
10517
10633
  async updateDisplayLayout(e) {
10518
10634
  if (e.length < 1 || !this._signaling.ready) return;
10519
10635
  this._debug.log(`Update display layout request [${this._signaling.getNextCommandSequenceNumber()}]`, e);
10520
- let t = {}, n = [], r = this._participants;
10521
- for (let i of e) {
10522
- let e = typeof i.uid == "object" ? i.uid : Q.fromId(i.uid), a = this._api.getCachedOkIdByExternalId(e);
10523
- if (!a) {
10636
+ let t = {}, n = [], r = [], i = this._participants;
10637
+ for (let a of e) {
10638
+ let e = typeof a.uid == "object" ? a.uid : Q.fromId(a.uid), o = this._api.getCachedParticipantIdByExternalId(e);
10639
+ if (!o) {
10524
10640
  let t = Q.toString(e);
10525
- this._debug.log(`Unknown participant external ID ${t}`);
10641
+ this._debug.log(`Unknown participant external ID ${t}`), r.push(e.id);
10526
10642
  continue;
10527
10643
  }
10528
- let o = Mn({
10529
- participantId: a,
10530
- mediaType: i.mediaType,
10531
- streamName: i.streamName
10532
- }), s = r[a];
10533
- s ? n.push(() => {
10534
- s.lastRequestedLayouts[o] = i;
10535
- }) : this._isMe(a) && n.push(() => {
10536
- this._myLastRequestedLayouts[o] = i;
10537
- }), Dn(i) ? (this._isMe(a) && n.push(() => {
10538
- delete this._myLastRequestedLayouts[o];
10539
- }), this._streamIdByStreamDescription.has(o) && !this._cooldownTimestampByStreamDescription.has(o) && this._cooldownTimestampByStreamDescription.set(o, Date.now())) : (this._cooldownTimestampByStreamDescription.delete(o), !this._streamIdByStreamDescription.has(o) && M.videoTracksCount > 0 && this._streamIdByStreamDescription.set(o, null), t[o] = i), i.mediaType === V.SCREEN && !Dn(i) && W.setMark(W.getMarkNameScreenshareFirstFrame(a));
10540
- }
10541
- let i = this._cooldownTimestampByStreamDescription.keys();
10644
+ let s = Mn({
10645
+ participantId: o,
10646
+ mediaType: a.mediaType,
10647
+ streamName: a.streamName
10648
+ }), c = i[o];
10649
+ c ? n.push(() => {
10650
+ c.lastRequestedLayouts[s] = a;
10651
+ }) : this._isMe(o) && n.push(() => {
10652
+ this._myLastRequestedLayouts[s] = a;
10653
+ }), Dn(a) ? (this._isMe(o) && n.push(() => {
10654
+ delete this._myLastRequestedLayouts[s];
10655
+ }), this._streamIdByStreamDescription.has(s) && !this._cooldownTimestampByStreamDescription.has(s) && this._cooldownTimestampByStreamDescription.set(s, Date.now())) : (this._cooldownTimestampByStreamDescription.delete(s), !this._streamIdByStreamDescription.has(s) && M.videoTracksCount > 0 && this._streamIdByStreamDescription.set(s, null), t[s] = a), a.mediaType === V.SCREEN && !Dn(a) && W.setMark(W.getMarkNameScreenshareFirstFrame(o));
10656
+ }
10657
+ if (r.length) {
10658
+ this._reportMissingExternalIdsById(r, "updateDisplayLayout");
10659
+ return;
10660
+ }
10661
+ let a = this._cooldownTimestampByStreamDescription.keys();
10542
10662
  for (; this._streamIdByStreamDescription.size > M.videoTracksCount;) {
10543
- let e = i.next();
10663
+ let e = a.next();
10544
10664
  if (e.done) {
10545
10665
  this._debug.error("Cannot accommodate all streaming requests: tracks available " + M.videoTracksCount + "; requested streams: " + Array.from(this._streamIdByStreamDescription.keys()));
10546
10666
  break;
@@ -10602,13 +10722,13 @@ var ls = 15, $ = class e extends b {
10602
10722
  let n = Nn(e), a = i[n.participantId];
10603
10723
  if (a) {
10604
10724
  let e;
10605
- typeof t == "number" ? e = Xa(t) : (this._debug.warn(`Unexpected error code ${t} received for participant ${n.participantId}`), e = Ya.UNKNOWN_ERROR), r.push({
10725
+ typeof t == "number" ? e = $a(t) : (this._debug.warn(`Unexpected error code ${t} received for participant ${n.participantId}`), e = Qa.UNKNOWN_ERROR), r.push({
10606
10726
  externalId: a.externalId,
10607
10727
  errorReason: e
10608
10728
  });
10609
10729
  }
10610
10730
  }
10611
- if (r && r.length && (this._debug.warn("Could not allocate one or more participants", r), t)) throw new ds("Could not allocate one or more participants", r);
10731
+ if (r && r.length && (this._debug.warn("Could not allocate one or more participants", r), t)) throw new ms("Could not allocate one or more participants", r);
10612
10732
  }
10613
10733
  async _cleanupCooldownQueue() {
10614
10734
  let e = {}, t = this._cooldownTimestampByStreamDescription.entries();
@@ -10616,7 +10736,7 @@ var ls = 15, $ = class e extends b {
10616
10736
  let n = t.next();
10617
10737
  if (n.done) break;
10618
10738
  let r = n.value;
10619
- if (r[1] + ss > Date.now()) break;
10739
+ if (r[1] + us > Date.now()) break;
10620
10740
  let i = r[0];
10621
10741
  await this._stopStreaming(i), e[i] = { stopStream: !0 };
10622
10742
  } while (!0);
@@ -10632,17 +10752,22 @@ var ls = 15, $ = class e extends b {
10632
10752
  async _onParticipantPromoted(e) {
10633
10753
  this._conversation && this._conversation.audienceMode ? (this._debug.log("Promoted in audience mode", !e.demote), this._conversation.restricted = e.demote, this._processRecordInfos(e), !e.demote && this._mediaSource && this._changeMediaSettings(this._mediaSource.mediaSettings)) : (this._debug.log("Promoted in waiting hall", !e.demote), e.demote ? (this._debug.log("Kicked from waiting hall"), this._close(new O(D.REMOVED))) : (this._updateConversation(e), this._waitingHallHoldPending ? (await this._signaling.hold(!0), await this._onJoinPart2(e, !1), this._waitingHallHoldPending = !1) : z.getActive() && M.hold ? (await this._signaling.hold(!0), await this._onJoinPart2(e, !0, !0), this._waitingHallHoldPending = !1) : await this._onJoinPart2(e))), L.onPromoted(e.demote, this.id);
10634
10754
  }
10635
- async _onChatRoomUpdated(e, t = 0, n = [], r, i) {
10755
+ _onChatRoomUpdated(e, t = 0, n = [], r, i) {
10636
10756
  this._debug.log(`Chat room updated: ${e}`);
10637
- let a = [];
10757
+ let a = [], o = [];
10638
10758
  n.length && n.forEach((e) => {
10639
10759
  if (e.externalId) {
10640
10760
  let t = Q.fromSignaling(e.externalId);
10641
10761
  a.push(t), this._api.cacheExternalId(e.id.id, t);
10642
- } else a.push(this._getOrCacheExternalIdByCompositeId(e.id.id));
10762
+ } else {
10763
+ let t = this._getExternalIdByParticipantId(e.id.id);
10764
+ t ? a.push(t) : o.push(e.id.id);
10765
+ }
10643
10766
  });
10644
- let o = r?.map((e) => this._getOrCacheExternalIdByCompositeId(e)) ?? [], s = i?.map((e) => this._getOrCacheExternalIdByCompositeId(e)) ?? [];
10645
- L.onChatRoomUpdated(e, t, a, o, s, this.id);
10767
+ let { externalIds: s, missingIds: c } = this._getExternalIdsByParticipantIds(r ?? []);
10768
+ o.push(...c);
10769
+ let { externalIds: l, missingIds: u } = this._getExternalIdsByParticipantIds(i ?? []);
10770
+ o.push(...u), this._reportMissingExternalIds(o, "CHAT_ROOM_UPDATED"), L.onChatRoomUpdated(e, t, a, s, l, this.id);
10646
10771
  }
10647
10772
  _onSharedMovieUpdate(e) {
10648
10773
  let t = this._conversation?.externalId;
@@ -10815,10 +10940,10 @@ var ls = 15, $ = class e extends b {
10815
10940
  throw Error("transport is not initialized");
10816
10941
  }
10817
10942
  _isCallAdmin() {
10818
- return this._conversation ? j.includesOneOf(this._conversation.roles, [Za.ADMIN, Za.CREATOR]) : !1;
10943
+ return this._conversation ? j.includesOneOf(this._conversation.roles, [eo.ADMIN, eo.CREATOR]) : !1;
10819
10944
  }
10820
10945
  _checkAdminRole() {
10821
- if (this._conversation && !j.includesOneOf(this._conversation.roles, [Za.ADMIN, Za.CREATOR])) throw Error("You don't have the required permission");
10946
+ if (this._conversation && !j.includesOneOf(this._conversation.roles, [eo.ADMIN, eo.CREATOR])) throw Error("You don't have the required permission");
10822
10947
  }
10823
10948
  _isCalledState() {
10824
10949
  return this._participantState === Z.CALLED;
@@ -10856,43 +10981,46 @@ var ls = 15, $ = class e extends b {
10856
10981
  async changeOptions(e) {
10857
10982
  if (this._signaling.ready && this._conversation) {
10858
10983
  this._checkAdminRole(), await this._signaling.changeOptions(e);
10859
- let t = Ka(this._conversation.options, e);
10984
+ let t = Ya(this._conversation.options, e);
10860
10985
  this._onOptionsChanged(t);
10861
10986
  }
10862
10987
  }
10863
10988
  async getWaitingHall(e, t, n) {
10864
10989
  if (!this._signaling) return Promise.reject();
10865
10990
  let r = null;
10866
- if (e && (r = ro(e), r)) {
10991
+ if (e && (r = oo(e), r)) {
10867
10992
  let e = this._api.getDecorativeIdByInitialId(r.id);
10868
- r.id = e ? j.composeUserId(e) : r.id;
10993
+ r.id = e ?? r.id;
10869
10994
  }
10870
10995
  let i = await this._signaling.getWaitingHall(r, t, n);
10871
10996
  if (i.error) return Promise.reject(i.message);
10872
- let a = i.participants || [], { externalIds: o } = await this._resolveWaitingHallExternalIds(a), s = null;
10873
- return a.length && i.hasMore && (s = no(a[a.length - 1].id)), {
10997
+ let a = i.participants || [], { externalIds: o } = this._resolveWaitingHallExternalIds(a, "getWaitingHall"), s = null;
10998
+ return a.length && i.hasMore && (s = ao(a[a.length - 1].id)), {
10874
10999
  participants: o,
10875
11000
  pageMarker: s,
10876
11001
  totalCount: i.totalCount || 0
10877
11002
  };
10878
11003
  }
10879
- async _resolveWaitingHallExternalIds(e) {
10880
- let t = [], n = [];
11004
+ _resolveWaitingHallExternalIds(e, t) {
11005
+ let n = [], r = [], i = [];
10881
11006
  return e.length && e.forEach((e) => {
10882
11007
  if (e.externalId) {
10883
- let r = Q.fromSignaling(e.externalId);
10884
- t.push(e.id.addedTs), n.push(r), this._api.cacheExternalId(e.id.id, r);
10885
- } else n.push(this._getOrCacheExternalIdByCompositeId(e.id.id)), t.push(e.id.addedTs);
10886
- }), {
10887
- externalIds: n,
10888
- timestamps: t
11008
+ let t = Q.fromSignaling(e.externalId);
11009
+ n.push(e.id.addedTs), r.push(t), this._api.cacheExternalId(e.id.id, t);
11010
+ } else {
11011
+ let t = this._getExternalIdByParticipantId(e.id.id);
11012
+ t ? (r.push(t), n.push(e.id.addedTs)) : i.push(e.id.id);
11013
+ }
11014
+ }), this._reportMissingExternalIds(i, t), {
11015
+ externalIds: r,
11016
+ timestamps: n
10889
11017
  };
10890
11018
  }
10891
11019
  async getAudienceModeHands() {
10892
11020
  if (!this._signaling.ready) throw Error("Signaling is not ready");
10893
11021
  let e = await this._signaling.getHandQueue();
10894
11022
  if (e.error) return Promise.reject(e.message);
10895
- let t = e.participants || [], { externalIds: n, timestamps: r } = await this._resolveWaitingHallExternalIds(t);
11023
+ let t = e.participants || [], { externalIds: n, timestamps: r } = this._resolveWaitingHallExternalIds(t, "getAudienceModeHands");
10896
11024
  return {
10897
11025
  timestamps: r,
10898
11026
  participants: n,
@@ -10901,7 +11029,7 @@ var ls = 15, $ = class e extends b {
10901
11029
  }
10902
11030
  async promoteParticipant(e, t) {
10903
11031
  if (this._signaling && this._conversation) try {
10904
- if (!j.includesOneOf(this._conversation.options, [Wa.WAITING_HALL, Wa.AUDIENCE_MODE])) throw Error("Unable to promote a participant in the conversation with current options");
11032
+ if (!j.includesOneOf(this._conversation.options, [qa.WAITING_HALL, qa.AUDIENCE_MODE])) throw Error("Unable to promote a participant in the conversation with current options");
10905
11033
  if (this._checkAdminRole(), !e && t) throw Error("participantId is required");
10906
11034
  await this._signaling.promoteParticipant(e, t);
10907
11035
  } catch (t) {
@@ -11061,7 +11189,7 @@ var ls = 15, $ = class e extends b {
11061
11189
  unmuteOptions: e.unmuteOptions || [],
11062
11190
  observedIds: e.observedIds || [],
11063
11191
  markers: this._denormalizeMarkers(t, e.markers)
11064
- }, e.decorativeUserId);
11192
+ }, j.composeDecorativeId(e));
11065
11193
  }));
11066
11194
  }
11067
11195
  async getParticipantListChunk(e) {
@@ -11073,7 +11201,7 @@ var ls = 15, $ = class e extends b {
11073
11201
  let a = this._transport?.getState();
11074
11202
  return n.participants.forEach((e) => {
11075
11203
  let t = j.composeId(e), n = r[t];
11076
- this._updateParticipantExternalId(n, e), this._setSessionState(n, this._remoteParticipantSessionState(t, e.sessionState)), n.isOnHold || this._setTransportStatus(n, eo.fromTransportState(a) ?? N.WAITING), n.movieShareInfos = e.movieShareInfos, Object.assign(n.mediaSettings, E(e.mediaSettings)), Object.assign(n.muteStates, e.muteStates), n.unmuteOptions = e.unmuteOptions ?? n.unmuteOptions, this._openTransport([n], !0);
11204
+ this._updateParticipantExternalId(n, e), this._setSessionState(n, this._remoteParticipantSessionState(t, e.sessionState)), n.isOnHold || this._setTransportStatus(n, ro.fromTransportState(a) ?? N.WAITING), n.movieShareInfos = e.movieShareInfos, Object.assign(n.mediaSettings, E(e.mediaSettings)), Object.assign(n.muteStates, e.muteStates), n.unmuteOptions = e.unmuteOptions ?? n.unmuteOptions, this._openTransport([n], !0);
11077
11205
  }), this._participantListChunkToExternalChunk(n);
11078
11206
  }
11079
11207
  async _getInitialParticiapntListChunk() {
@@ -11087,7 +11215,7 @@ var ls = 15, $ = class e extends b {
11087
11215
  _onLocalMediaStreamChanged(e) {
11088
11216
  if (!this._conversation || !this._mediaSource) return;
11089
11217
  let t = this._mediaSource.mediaSettings;
11090
- this._debug.debug("Local media stream changed", t), e.kind === k.audio && this._mediaSource && (this._audioFix = new ho(this._mediaSource, this._debug, this._stats.logger)), L.onLocalStreamUpdate(t, e.kind, this.id), !this._conversation?.waitingHall && !this._conversation?.observer && !this._isAudienceModeListener() && this._changeMediaSettings(t);
11218
+ this._debug.debug("Local media stream changed", t), e.kind === k.audio && this._mediaSource && (this._audioFix = new vo(this._mediaSource, this._debug, this._stats.logger)), L.onLocalStreamUpdate(t, e.kind, this.id), !this._conversation?.waitingHall && !this._conversation?.observer && !this._isAudienceModeListener() && this._changeMediaSettings(t);
11091
11219
  }
11092
11220
  _onScreenSharingStatus(e) {
11093
11221
  let t = this.mediaSettings;
@@ -11107,7 +11235,7 @@ var ls = 15, $ = class e extends b {
11107
11235
  this._warnParticipantNotInConversation(e);
11108
11236
  return;
11109
11237
  }
11110
- r.mediaSettings = t, ["ACTIVE", "HELD"].includes(this._state) && L.onRemoteMediaSettings(r.externalId, t, r.markers, this.id), this._specListener && this._specListener.onChangeRemoteMediaSettings(e, t);
11238
+ r.mediaSettings = t, ["ACTIVE", "HELD"].includes(this._state) && (r.externalId ? L.onRemoteMediaSettings(r.externalId, t, r.markers, this.id) : this._reportMissingExternalIds([e], "REMOTE_MEDIA_SETTINGS")), this._specListener && this._specListener.onChangeRemoteMediaSettings(e, t);
11111
11239
  }
11112
11240
  _extractLocalParticipantFromConnection(e) {
11113
11241
  let t = this._api.getUserId();
@@ -11123,7 +11251,7 @@ var ls = 15, $ = class e extends b {
11123
11251
  this._warnParticipantNotInConversation(e);
11124
11252
  return;
11125
11253
  }
11126
- n.participantState = t || {}, ["ACTIVE", "HELD"].includes(this._state) && L.onRemoteParticipantState(n.externalId, n.participantState, n.markers, this.id);
11254
+ n.participantState = t || {}, ["ACTIVE", "HELD"].includes(this._state) && (n.externalId ? L.onRemoteParticipantState(n.externalId, n.participantState, n.markers, this.id) : this._reportMissingExternalIds([e], "REMOTE_PARTICIPANT_STATE"));
11127
11255
  }
11128
11256
  _changeMultipleParticipantState(e, t) {
11129
11257
  this._debug.debug("Multiple participants state changed", e);
@@ -11217,9 +11345,9 @@ var ls = 15, $ = class e extends b {
11217
11345
  for (let n of e.conversation.participants) {
11218
11346
  let e = j.composeId(n), i = n.roles || [];
11219
11347
  if (this._isMe(e)) {
11220
- Qa(this._conversation.roles, i) || this._onRolesChanged(e, i), t = () => {
11348
+ to(this._conversation.roles, i) || this._onRolesChanged(e, i), t = () => {
11221
11349
  this._registerParticipantLocalMuteState({
11222
- muteStates: co(n),
11350
+ muteStates: fo(n),
11223
11351
  unmuteOptions: n.unmuteOptions
11224
11352
  });
11225
11353
  };
@@ -11237,7 +11365,7 @@ var ls = 15, $ = class e extends b {
11237
11365
  let t = E(n.mediaSettings);
11238
11366
  Wt(t, a.mediaSettings) || this._changeRemoteMediaSettings(e, t);
11239
11367
  let r = j.mapParticipantState(n), o = a.participantState;
11240
- j.isEqualParticipantState(r, o) || await this._changeRemoteParticipantState(e, r), Qa(i, a.roles) || this._onRolesChanged(a.id, i), !!n.onHold != !!a.isOnHold && (a.isOnHold = !!n.onHold, this._setParticipantsStatus([a], n.onHold ? N.ONHOLD : N.CONNECTED));
11368
+ j.isEqualParticipantState(r, o) || await this._changeRemoteParticipantState(e, r), to(i, a.roles) || this._onRolesChanged(a.id, i), !!n.onHold != !!a.isOnHold && (a.isOnHold = !!n.onHold, this._setParticipantsStatus([a], n.onHold ? N.ONHOLD : N.CONNECTED));
11241
11369
  }
11242
11370
  }
11243
11371
  let i = this._participants;
@@ -11262,27 +11390,33 @@ var ls = 15, $ = class e extends b {
11262
11390
  this._close(new O(D.MISSED), { errorText: "Call accepted on other device" });
11263
11391
  return;
11264
11392
  }
11265
- this._conversation?.direction === Ba.OUTGOING && !this._conversation.concurrent && this._stats.lifecycle.markOutgoingAccepted();
11393
+ this._conversation?.direction === Ua.OUTGOING && !this._conversation.concurrent && this._stats.lifecycle.markOutgoingAccepted();
11266
11394
  let r = this._getParticipant(t);
11267
11395
  if (!r) {
11268
- let n = this._api.getDecorativeIdByInitialId(t), i = n ? j.composeUserId(n, e.participantType) : void 0;
11396
+ let n = this._api.getDecorativeIdByInitialId(t);
11269
11397
  r = this._registerParticipantInCache(this._createParticipant({
11270
11398
  id: t,
11271
11399
  externalId: e.externalId ? Q.fromSignaling(e.externalId, e.deviceIdx) : void 0,
11272
11400
  mediaSettings: E(e.mediaSettings)
11273
- }, i));
11401
+ }, n));
11274
11402
  } else if (e.externalId) {
11275
11403
  let t = Q.fromSignaling(e.externalId, e.deviceIdx);
11276
11404
  r.externalId = t, this._api.cacheExternalId(r.id, t);
11277
11405
  }
11278
- r.state = Z.ACCEPTED, r.mediaSettings = E(e.mediaSettings), this._logWithMediaSettings(C.ACCEPTED_OUTGOING, r.mediaSettings), this._conversation && this._conversation.direction === Ba.OUTGOING && (this._state === "IDLE" || this._state === "PROCESSING") && (this._state = "ACTIVE", this._changeFeatureSet()), this._state === "ACTIVE" && this._transport && this._transport.open([r.id], n), this._changeRemoteMediaSettings(t, r.mediaSettings), await this._changeRemoteParticipantState(t);
11406
+ r.state = Z.ACCEPTED, r.mediaSettings = E(e.mediaSettings), this._logWithMediaSettings(C.ACCEPTED_OUTGOING, r.mediaSettings), this._conversation && this._conversation.direction === Ua.OUTGOING && (this._state === "IDLE" || this._state === "PROCESSING") && (this._state = "ACTIVE", this._changeFeatureSet()), this._state === "ACTIVE" && this._transport && this._transport.open([r.id], n), this._changeRemoteMediaSettings(t, r.mediaSettings), await this._changeRemoteParticipantState(t);
11279
11407
  let i = Object.keys(r.muteStates);
11280
- i.length && this._onMuteParticipant({
11408
+ if (i.length && this._onMuteParticipant({
11281
11409
  muteStates: r.muteStates,
11282
11410
  mediaOptions: i,
11283
11411
  stateUpdated: !0,
11284
11412
  participantId: t
11285
- }), ["ACTIVE", "HELD"].includes(this._state) && L.onAcceptedCall(r.externalId, xa.parseCapabilities(e.capabilities), this.id);
11413
+ }), ["ACTIVE", "HELD"].includes(this._state)) {
11414
+ if (!r.externalId) {
11415
+ this._reportMissingExternalIds([t], "ACCEPTED_CALL");
11416
+ return;
11417
+ }
11418
+ L.onAcceptedCall(r.externalId, wa.parseCapabilities(e.capabilities), this.id);
11419
+ }
11286
11420
  }
11287
11421
  async _onHungup(e) {
11288
11422
  this._debug.debug(`Participant hungup [${e.participantId}]`, { reason: e.reason });
@@ -11318,7 +11452,7 @@ var ls = 15, $ = class e extends b {
11318
11452
  return;
11319
11453
  }
11320
11454
  if (e.connected) {
11321
- let e = eo.fromTransportState(this._transport?.getState());
11455
+ let e = ro.fromTransportState(this._transport?.getState());
11322
11456
  e && this._setTransportStatus(n, e);
11323
11457
  }
11324
11458
  this._setSessionState(n, { connected: e.connected });
@@ -11351,7 +11485,7 @@ var ls = 15, $ = class e extends b {
11351
11485
  return;
11352
11486
  }
11353
11487
  if (!n) {
11354
- let { participant: r } = e, i = r.decorativeUserId;
11488
+ let { participant: r } = e, i = j.composeDecorativeId(r);
11355
11489
  this._registerParticipant({
11356
11490
  id: t,
11357
11491
  externalId: Q.fromSignalingParticipant(r, !0, !0),
@@ -11378,7 +11512,7 @@ var ls = 15, $ = class e extends b {
11378
11512
  return;
11379
11513
  }
11380
11514
  if (!n) {
11381
- let { participant: r } = e, i = r.decorativeUserId;
11515
+ let { participant: r } = e, i = j.composeDecorativeId(r);
11382
11516
  this._registerParticipant({
11383
11517
  id: t,
11384
11518
  externalId: Q.fromSignalingParticipant(r, !0, !0),
@@ -11395,7 +11529,7 @@ var ls = 15, $ = class e extends b {
11395
11529
  isOnHold: !!r.onHold
11396
11530
  }, i), n = this._getParticipant(t);
11397
11531
  }
11398
- this._conversation && this._conversation.direction === Ba.OUTGOING && (this._state === "IDLE" || this._state === "PROCESSING") && (this._state = "ACTIVE", this._changeFeatureSet()), n.state = Z.ACCEPTED, n.mediaSettings = E(e.mediaSettings), n.participantState = j.mapParticipantState(e.participant), n.roles = e.participant.roles || [], this._updateParticipantSessionState(n, t, e.participant.sessionState), e.participant.onHold ? (n.isOnHold = !0, this._setParticipantsStatus([n], N.ONHOLD)) : this._transport?.isAllocated(n.id) ? this._setParticipantsStatus([n], N.CONNECTED) : this._setParticipantsStatus([n], N.WAITING), r && this._emitParticipantEffectiveStatusIfSessionOverridesTransport(n), this._state !== "IDLE" && this._transport && (this._transport.isAllocated(n.id) || this._allocateParticipantTransport(n.id, !0), this._transport.open([n.id], null, !!this._conversation?.observer)), L.onParticipantJoined(n.externalId, n.markers, this.id), this._changeRemoteMediaSettings(t, n.mediaSettings), await this._changeRemoteParticipantState(t, n.participantState), this._invokeRolesChangedCallbackIfNeeded(n);
11532
+ this._conversation && this._conversation.direction === Ua.OUTGOING && (this._state === "IDLE" || this._state === "PROCESSING") && (this._state = "ACTIVE", this._changeFeatureSet()), n.state = Z.ACCEPTED, n.mediaSettings = E(e.mediaSettings), n.participantState = j.mapParticipantState(e.participant), n.roles = e.participant.roles || [], this._updateParticipantSessionState(n, t, e.participant.sessionState), e.participant.onHold ? (n.isOnHold = !0, this._setParticipantsStatus([n], N.ONHOLD)) : this._transport?.isAllocated(n.id) ? this._setParticipantsStatus([n], N.CONNECTED) : this._setParticipantsStatus([n], N.WAITING), r && this._emitParticipantEffectiveStatusIfSessionOverridesTransport(n), this._state !== "IDLE" && this._transport && (this._transport.isAllocated(n.id) || this._allocateParticipantTransport(n.id, !0), this._transport.open([n.id], null, !!this._conversation?.observer)), L.onParticipantJoined(n.externalId, n.markers, this.id), this._changeRemoteMediaSettings(t, n.mediaSettings), await this._changeRemoteParticipantState(t, n.participantState), this._invokeRolesChangedCallbackIfNeeded(n);
11399
11533
  let i = Object.keys(n.muteStates);
11400
11534
  i.length && this._onMuteParticipant({
11401
11535
  muteStates: n.muteStates,
@@ -11421,7 +11555,7 @@ var ls = 15, $ = class e extends b {
11421
11555
  _onParticipantsStateChanged(e) {
11422
11556
  let { participants: t, roomId: n } = e;
11423
11557
  t.map(({ id: e, markers: t }) => this._registerParticipantAndSetMarkersIfChunkEnabled(e, t));
11424
- let r = /* @__PURE__ */ new Map(), i = t.map(({ id: e, participantState: t }) => [e, this._getExternalIdByParticipantId(e) && j.mapParticipantState({ participantState: t })]);
11558
+ let r = /* @__PURE__ */ new Map(), i = t.map(({ id: e, participantState: t }) => [e, this._getExternalIdByParticipantId(e) ? j.mapParticipantState({ participantState: t }) : void 0]);
11425
11559
  try {
11426
11560
  i.forEach(([e, t]) => {
11427
11561
  t && r.set(e, t);
@@ -11586,15 +11720,15 @@ var ls = 15, $ = class e extends b {
11586
11720
  L.onAsrTranscription(t, e.text, e.timestamp, e.duration, this.id);
11587
11721
  }
11588
11722
  async _onRolesChanged(e, t) {
11589
- if (this._conversation && this._isMe(e) && !Qa(this._conversation.roles, t)) {
11723
+ if (this._conversation && this._isMe(e) && !to(this._conversation.roles, t)) {
11590
11724
  this._debug.debug(`Local roles changed: ${t}`), this._conversation.roles = t, L.onLocalRolesChanged(t, !1, this.id), this._processMuteState({
11591
- mediaOptions: io(this._getMuteStatesForCurrentRoom(), qa.MUTE_PERMANENT),
11725
+ mediaOptions: so(this._getMuteStatesForCurrentRoom(), Xa.MUTE_PERMANENT),
11592
11726
  stateUpdated: !0
11593
- }), j.includesOneOf(t, [Za.ADMIN, Za.CREATOR]) ? this._refreshRooms(!0) : t.length || this._onRoomSwitched(null);
11727
+ }), j.includesOneOf(t, [eo.ADMIN, eo.CREATOR]) ? this._refreshRooms(!0) : t.length || this._onRoomSwitched(null);
11594
11728
  return;
11595
11729
  }
11596
11730
  let n = this._getParticipant(e);
11597
- n && !Qa(n.roles, t) && (this._debug.debug(`Roles for participant [${e}] changed: ${t}`), n.roles = t, L.onRolesChanged(n.externalId, t, !1, this.id));
11731
+ n && !to(n.roles, t) && (this._debug.debug(`Roles for participant [${e}] changed: ${t}`), n.roles = t, L.onRolesChanged(n.externalId, t, !1, this.id));
11598
11732
  }
11599
11733
  async _onMuteParticipant(e, t = !1) {
11600
11734
  if (!this._conversation) return;
@@ -11643,7 +11777,7 @@ var ls = 15, $ = class e extends b {
11643
11777
  let { mediaOptions: t = [], muteAll: n, unmute: r, stateUpdated: i, requestedMedia: a, roomId: o = null, unmuteOptions: s = [] } = e, c = e.adminId ? this._getExternalIdByParticipantId(e.adminId) : null, l = Object.assign({}, e.muteStates ?? this._getMuteStatesForRoomId(o)), u = this._mediaSource.mediaSettings, d = Object.entries(l);
11644
11778
  for (let [e, i] of d) {
11645
11779
  let a = this._isCallAdmin() && n;
11646
- if (!(i !== qa.MUTE && i !== qa.MUTE_PERMANENT || a) && (this._isCallAdmin() && i === qa.MUTE_PERMANENT && !n && (l[e] = qa.MUTE), !(!t.includes(e) || r))) switch (e) {
11780
+ if (!(i !== Xa.MUTE && i !== Xa.MUTE_PERMANENT || a) && (this._isCallAdmin() && i === Xa.MUTE_PERMANENT && !n && (l[e] = Xa.MUTE), !(!t.includes(e) || r))) switch (e) {
11647
11781
  case S.VIDEO:
11648
11782
  u.isVideoEnabled && (L.onDeviceSwitched(S.VIDEO, !1, this.id), await this.toggleLocalVideo(!1));
11649
11783
  break;
@@ -11680,7 +11814,7 @@ var ls = 15, $ = class e extends b {
11680
11814
  this._conversation.pinnedParticipantIdByRoom.set(r, t ? null : e);
11681
11815
  }
11682
11816
  _onOptionsChanged(e) {
11683
- this._conversation && !Ga(this._conversation.options, e) && (this._conversation.options = e, L.onOptionsChanged(e, this.id), e.includes(Wa.ADMIN_IS_HERE) ? this._conversation.restricted && this._conversation.waitingHall && L.onLocalStatus(N.WAITING_HALL, this.id) : e.includes(Wa.WAIT_FOR_ADMIN) && this._conversation.restricted && L.onLocalStatus(N.WAIT_FOR_ADMIN, this.id));
11817
+ this._conversation && !Ja(this._conversation.options, e) && (this._conversation.options = e, L.onOptionsChanged(e, this.id), e.includes(qa.ADMIN_IS_HERE) ? this._conversation.restricted && this._conversation.waitingHall && L.onLocalStatus(N.WAITING_HALL, this.id) : e.includes(qa.WAIT_FOR_ADMIN) && this._conversation.restricted && L.onLocalStatus(N.WAIT_FOR_ADMIN, this.id));
11684
11818
  }
11685
11819
  async _onNetworkStatus(e) {
11686
11820
  if (this._conversation) {
@@ -11690,7 +11824,7 @@ var ls = 15, $ = class e extends b {
11690
11824
  if (this._isMe(r) || r === "") e = this._conversation.networkRating;
11691
11825
  else if (n[r]) e = n[r].networkRating;
11692
11826
  else continue;
11693
- if (e !== i) if (this._isMe(r) || r === "") this._conversation.networkRating = i, Zr.getInstance().value = i, L.onLocalNetworkStatusChanged(i, this.id);
11827
+ if (e !== i) if (this._isMe(r) || r === "") this._conversation.networkRating = i, ei.getInstance().value = i, L.onLocalNetworkStatusChanged(i, this.id);
11694
11828
  else {
11695
11829
  let e = n[r];
11696
11830
  e.networkRating = i, t.push({
@@ -11735,7 +11869,7 @@ var ls = 15, $ = class e extends b {
11735
11869
  }
11736
11870
  _changeFeatureSet() {
11737
11871
  if (this._conversation) {
11738
- let e = this._state === "ACTIVE", t = this._conversation.features.includes(Ua.ADD_PARTICIPANT);
11872
+ let e = this._state === "ACTIVE", t = this._conversation.features.includes(Ka.ADD_PARTICIPANT);
11739
11873
  L.onCallState(e, t, this._conversation, this.id);
11740
11874
  }
11741
11875
  }
@@ -11769,7 +11903,7 @@ var ls = 15, $ = class e extends b {
11769
11903
  let n = this._getParticipant(e);
11770
11904
  if (n) {
11771
11905
  if (n.connectionStatus.sessionStateApplicable && n.connectionStatus.sessionState?.connected === !1) {
11772
- let e = eo.fromTransportState(this._transport?.getState());
11906
+ let e = ro.fromTransportState(this._transport?.getState());
11773
11907
  e && this._setTransportStatus(n, e), n.connectionStatus.sessionStateConnectedBySpeaker = !0;
11774
11908
  let t = this._setTransportStatus(n, n.connectionStatus.transport);
11775
11909
  this._emitParticipantTransition(n, t);
@@ -11779,7 +11913,7 @@ var ls = 15, $ = class e extends b {
11779
11913
  }
11780
11914
  async _onTransportStateChanged(e, t) {
11781
11915
  this._debug.debug(`Transport state has changed: ${t}`, e);
11782
- let n = eo.fromTransportState(t);
11916
+ let n = ro.fromTransportState(t);
11783
11917
  if (!n) return;
11784
11918
  let r = this._participants, i = [], a = e.reduce((e, n) => {
11785
11919
  if (n in r) {
@@ -11813,15 +11947,15 @@ var ls = 15, $ = class e extends b {
11813
11947
  return e.every((e) => t[e]?.isOnHold);
11814
11948
  }
11815
11949
  _onRemoteTrackAdded(e, t, n) {
11816
- if (e.endsWith(qr.AUDIO_MIX)) this._debug.debug("Remote audio mix track added"), this._audioOutput.add(e, n), L.onRemoteMixedAudioStream(t, this.id);
11817
- else if (e.startsWith(qr.TRANSPARENT_AUDIO_TRACK_PREFIX)) this._debug.debug(`Remote transparent audio track added: ${e}`), this._audioOutput.add(e, n);
11818
- else if (e.startsWith(qr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX)) this._debug.debug(`Participant-agnostic track added: ${e}`), this._streamByStreamId.set(e, t);
11950
+ if (e.endsWith(Xr.AUDIO_MIX)) this._debug.debug("Remote audio mix track added"), this._audioOutput.add(e, n), L.onRemoteMixedAudioStream(t, this.id);
11951
+ else if (e.startsWith(Xr.TRANSPARENT_AUDIO_TRACK_PREFIX)) this._debug.debug(`Remote transparent audio track added: ${e}`), this._audioOutput.add(e, n);
11952
+ else if (e.startsWith(Xr.PARTICIPANT_AGNOSTIC_TRACK_PREFIX)) this._debug.debug(`Participant-agnostic track added: ${e}`), this._streamByStreamId.set(e, t);
11819
11953
  else {
11820
11954
  this._debug.debug(`Remote track added on the participant [${e}]`, { kind: n.kind });
11821
11955
  let r = this._getParticipant(e);
11822
11956
  if (!r) {
11823
- let t = this._api.getDecorativeIdByInitialId(e), n = t ? j.composeUserId(t) : void 0;
11824
- this._debug.warn(`Conversation: track added before participant [id: ${e}, decorativeId: ${n}]`), this._registerParticipant({ id: e }, n), r = this._getParticipant(e), this._setParticipantsStatus([r], N.WAITING), this._activeSpeakerId === e && this._lastSignalledActiveSpeakerId !== e && (L.onSpeakerChanged(r.externalId, this.id), this._lastSignalledActiveSpeakerId = e);
11957
+ let t = this._api.getDecorativeIdByInitialId(e);
11958
+ this._debug.warn(`Conversation: track added before participant [id: ${e}, decorativeId: ${t}]`), this._registerParticipant({ id: e }, t), r = this._getParticipant(e), this._setParticipantsStatus([r], N.WAITING), this._activeSpeakerId === e && this._lastSignalledActiveSpeakerId !== e && (L.onSpeakerChanged(r.externalId, this.id), this._lastSignalledActiveSpeakerId = e);
11825
11959
  }
11826
11960
  if (this._transport && !this._transport.isAllocated(r.id) && this._allocateParticipantTransport(r.id, !1), n.kind === k.audio && (this._audioOutput.add(e, n), M.preserveAudioTracks || (r.remoteAudioTrack = n, t.removeTrack(n))), r.remoteStream !== t && t.getTracks().length) {
11827
11961
  if (r.remoteStream = t, r.secondStream) return;
@@ -11842,7 +11976,7 @@ var ls = 15, $ = class e extends b {
11842
11976
  }
11843
11977
  }
11844
11978
  async _removeAudioTrack(e, t, n) {
11845
- if (e !== qr.AUDIO_MIX) {
11979
+ if (e !== Xr.AUDIO_MIX) {
11846
11980
  let n = this._getParticipant(e);
11847
11981
  if (!n || n.remoteStream && n.remoteStream !== t) return;
11848
11982
  }
@@ -11857,7 +11991,7 @@ var ls = 15, $ = class e extends b {
11857
11991
  if (this._statFirstMediaReceived.markTopologyChanged(e), e === J.DIRECT && (this._onRemoteSignalledStall([]), this._onAudioMixStall(!1)), this._conversation) {
11858
11992
  this._conversation.topology = e;
11859
11993
  for (let e of Object.values(this._participants)) {
11860
- let t = eo.setSessionStateApplicable(e.connectionStatus, this._isParticipantSessionStateApplicable(e.id));
11994
+ let t = ro.setSessionStateApplicable(e.connectionStatus, this._isParticipantSessionStateApplicable(e.id));
11861
11995
  this._emitParticipantTransition(e, t);
11862
11996
  }
11863
11997
  this._changeFeatureSet(), this._forceOpenTransportForAloneInCall();
@@ -11913,7 +12047,7 @@ var ls = 15, $ = class e extends b {
11913
12047
  ].includes(t) ? null : this._setTransportStatus(e, t), n);
11914
12048
  }
11915
12049
  _setParticipantsStalled(e, t) {
11916
- this._updateParticipantsStatus(e, (e) => eo.setStalled(e.connectionStatus, t));
12050
+ this._updateParticipantsStatus(e, (e) => ro.setStalled(e.connectionStatus, t));
11917
12051
  }
11918
12052
  _updateParticipantsStatus(e, t, n = null) {
11919
12053
  let r = e.reduce((e, n) => {
@@ -11931,46 +12065,63 @@ var ls = 15, $ = class e extends b {
11931
12065
  }
11932
12066
  _onRoomsUpdated(e) {
11933
12067
  if (this._isCalledState()) return;
11934
- let t = {};
11935
- for (let n of Object.keys(Ja)) {
11936
- let r = e.updates[n];
11937
- r && (t[n] = {
11938
- rooms: r?.rooms?.map(this._convertRoomToExternal.bind(this)) || [],
11939
- roomIds: r?.roomIds,
11940
- deactivated: r?.deactivated
12068
+ let t = {}, n = [], r = [];
12069
+ for (let i of Object.keys(Za)) {
12070
+ let a = e.updates[i];
12071
+ a && (a?.rooms?.forEach((e) => {
12072
+ let { room: t, missingParticipantIds: i } = this._convertRoomToExternal(e);
12073
+ t && n.push(t), r.push(...i);
12074
+ }), t[i] = {
12075
+ rooms: n,
12076
+ roomIds: a?.roomIds,
12077
+ deactivated: a?.deactivated
11941
12078
  });
11942
12079
  }
11943
- L.onRoomsUpdated(t, this.id);
12080
+ this._reportMissingExternalIds(r, "ROOMS_UPDATED"), L.onRoomsUpdated(t, this.id);
11944
12081
  }
11945
12082
  _onRoomUpdated(e) {
11946
- let t = this._convertRoomToExternal(e.room || null);
11947
- e.events.some((e) => e === Ja.UPDATE) && (e.muteStates !== void 0 && this._setMuteStatesForRoomId(e.muteStates, e.roomId), e.recordInfo !== void 0 && this._conversation?.recordsInfoByRoom.set(e.roomId, e.recordInfo), e.asrInfo !== void 0 && this._conversation?.asrInfoByRoom.set(e.roomId, e.asrInfo)), this._isCalledState() || L.onRoomUpdated(e.events, e.roomId, t, e.deactivate || null, this.id);
12083
+ let { room: t, missingParticipantIds: n } = this._convertRoomToExternal(e.room || null);
12084
+ e.events.some((e) => e === Za.UPDATE) && (e.muteStates !== void 0 && this._setMuteStatesForRoomId(e.muteStates, e.roomId), e.recordInfo !== void 0 && this._conversation?.recordsInfoByRoom.set(e.roomId, e.recordInfo), e.asrInfo !== void 0 && this._conversation?.asrInfoByRoom.set(e.roomId, e.asrInfo)), this._isCalledState() || (this._reportMissingExternalIds(n, "ROOM_UPDATED"), L.onRoomUpdated(e.events, e.roomId, t, e.deactivate || null, this.id));
11948
12085
  }
11949
12086
  _convertRoomToExternal(e) {
11950
- if (!e) return null;
11951
- let t = e.participantIds?.map((e) => this._getExternalIdByParticipantId(e)) || [], n = e.addParticipantIds?.map((e) => this._getExternalIdByParticipantId(e)) || [], r = e.removeParticipantIds?.map?.((e) => this._getExternalIdByParticipantId(e)) || [], i = e.pinnedParticipantId ? this._getExternalIdByParticipantId(e.pinnedParticipantId) : void 0;
12087
+ if (!e) return {
12088
+ room: null,
12089
+ missingParticipantIds: []
12090
+ };
12091
+ let t = [], { externalIds: n, missingIds: r } = this._getExternalIdsByParticipantIds(e.participantIds ?? []), { externalIds: i, missingIds: a } = this._getExternalIdsByParticipantIds(e.addParticipantIds ?? []), { externalIds: o, missingIds: s } = this._getExternalIdsByParticipantIds(e.removeParticipantIds ?? []);
12092
+ t.push(...r, ...a, ...s);
12093
+ let c;
12094
+ if (e.pinnedParticipantId) {
12095
+ let n = this._getExternalIdByParticipantId(e.pinnedParticipantId);
12096
+ n ? c = n : t.push(e.pinnedParticipantId);
12097
+ }
11952
12098
  return {
11953
- id: e.id,
11954
- name: e.name,
11955
- participantCount: e.participantCount,
11956
- participantIds: t,
11957
- addParticipantIds: n,
11958
- removeParticipantIds: r,
11959
- participants: e.participants?.participants ? this._participantListChunkToExternalChunk(e.participants) : void 0,
11960
- active: e.active,
11961
- muteStates: e.muteStates,
11962
- pinnedParticipantId: i,
11963
- countdownSec: e.countdownSec,
11964
- timeoutMs: e.timeoutMs
12099
+ room: {
12100
+ id: e.id,
12101
+ name: e.name,
12102
+ participantCount: e.participantCount,
12103
+ participantIds: n,
12104
+ addParticipantIds: i,
12105
+ removeParticipantIds: o,
12106
+ participants: e.participants?.participants ? this._participantListChunkToExternalChunk(e.participants) : void 0,
12107
+ active: e.active,
12108
+ muteStates: e.muteStates,
12109
+ pinnedParticipantId: c,
12110
+ countdownSec: e.countdownSec,
12111
+ timeoutMs: e.timeoutMs
12112
+ },
12113
+ missingParticipantIds: t
11965
12114
  };
11966
12115
  }
11967
12116
  async _onRoomParticipantsUpdated(e) {
11968
- let t = this._transport?.getState(), n = e.roomId ?? null, r = e.addedParticipantIds?.map((e) => j.decomposeId(e).id) || [], i = this._getExternalIdsByOkIdsFromCache(r), a = e.addedParticipants;
11969
- if (i.length && a?.length !== i.length && !this._isCalledState()) {
12117
+ let t = this._transport?.getState(), n = e.roomId ?? null, r = [], { externalIds: i, missingIds: a } = this._getExternalIdsByParticipantIds(e.addedParticipantIds ?? []);
12118
+ r.push(...a);
12119
+ let o = e.addedParticipants;
12120
+ if (i.length && o?.length !== i.length && !this._isCalledState()) {
11970
12121
  let e = this._convertExternalIdsToServerExternalIds(i);
11971
- a = (await this._signaling.getParticipants(e)).participants;
12122
+ o = (await this._signaling.getParticipants(e)).participants;
11972
12123
  }
11973
- let o = a?.map((e) => {
12124
+ let s = o?.map((e) => {
11974
12125
  let r = j.composeId(e);
11975
12126
  return this._createParticipant({
11976
12127
  id: r,
@@ -11986,38 +12137,38 @@ var ls = 15, $ = class e extends b {
11986
12137
  observedIds: e.observedIds || [],
11987
12138
  markers: this._denormalizeMarkers(r, e.markers),
11988
12139
  isInRoom: n !== null
11989
- }, e.decorativeUserId);
11990
- }) || [], s = !1;
11991
- for (let e of o) e.id === this._conversation?.compositeUserId && (s = !0), this._registerParticipantInCache(e);
11992
- this._transport?.getState() === q.IDLE && !this._isCalledState() && this._openTransport(o, !0);
11993
- let c = [];
12140
+ }, j.composeDecorativeId(e));
12141
+ }) || [], c = !1;
12142
+ for (let e of s) e.id === this._conversation?.compositeUserId && (c = !0), this._registerParticipantInCache(e);
12143
+ this._transport?.getState() === q.IDLE && !this._isCalledState() && this._openTransport(s, !0);
12144
+ let l = [];
11994
12145
  if (e?.removedParticipantMarkers) {
11995
12146
  for (let t of e.removedParticipantMarkers) if (t.GRID?.id) {
11996
12147
  let e = this._getExternalIdByParticipantId(t.GRID.id);
11997
- c.push(e);
12148
+ e ? l.push(e) : r.push(t.GRID.id);
11998
12149
  }
11999
12150
  }
12000
- if (s && await this._onRoomSwitched(n), c) {
12151
+ if (this._reportMissingExternalIds(r, "ROOM_PARTICIPANTS_UPDATED"), c && await this._onRoomSwitched(n), l) {
12001
12152
  let e = this._conversation?.pinnedParticipantIdByRoom.get(n);
12002
12153
  if (e) {
12003
12154
  let t = this._getExternalIdByParticipantId(e);
12004
12155
  if (t) {
12005
- for (let e of c) if (Q.compare(t, e)) {
12156
+ for (let e of l) if (Q.compare(t, e)) {
12006
12157
  this._conversation?.pinnedParticipantIdByRoom.delete(n);
12007
12158
  break;
12008
12159
  }
12009
12160
  }
12010
12161
  }
12011
12162
  }
12012
- let l = {
12163
+ let u = {
12013
12164
  roomId: n,
12014
12165
  participantCount: e.participantCount,
12015
12166
  addedParticipantIds: i,
12016
- addedParticipants: j.mapSharedParticipants(o),
12167
+ addedParticipants: j.mapSharedParticipants(s),
12017
12168
  removedParticipantMarkers: e?.removedParticipantMarkers,
12018
- removedParticipantIds: c
12169
+ removedParticipantIds: l
12019
12170
  };
12020
- this._isCalledState() || L.onRoomParticipantsUpdated(l, this.id);
12171
+ this._isCalledState() || L.onRoomParticipantsUpdated(u, this.id);
12021
12172
  }
12022
12173
  async _onRoomSwitched(e, t = !1) {
12023
12174
  if (!this._conversation || this._conversation.roomId === e) return;
@@ -12037,11 +12188,11 @@ var ls = 15, $ = class e extends b {
12037
12188
  if (this._setMuteStatesForRoomId(t.muteStates, n), this._conversation?.recordsInfoByRoom.set(n, t.recordInfo ?? null), this._conversation?.pinnedParticipantIdByRoom.set(n, t.pinnedParticipantId ?? null), t.asrInfo && this._conversation?.asrInfoByRoom.set(n, t.asrInfo), t.urlSharingInfo ? this._conversation?.urlSharingInfoByRoom.set(n, t.urlSharingInfo) : this._conversation?.urlSharingInfoByRoom.delete(n), e) {
12038
12189
  let e = this._participants;
12039
12190
  await this._registerParticipants(t?.participants?.participants?.filter((t) => !e[j.composeId(t)]) || [], !0);
12040
- let n = this._convertRoomToExternal(t);
12191
+ let { room: n } = this._convertRoomToExternal(t);
12041
12192
  n && r.push(n);
12042
12193
  }
12043
12194
  }
12044
- r.length && !this._isCalledState() && L.onRoomsUpdated({ [Ja.UPDATE]: { rooms: r } }, this.id);
12195
+ r.length && !this._isCalledState() && L.onRoomsUpdated({ [Za.UPDATE]: { rooms: r } }, this.id);
12045
12196
  }
12046
12197
  _onFeedback(e) {
12047
12198
  let t = [];
@@ -12071,7 +12222,9 @@ var ls = 15, $ = class e extends b {
12071
12222
  return;
12072
12223
  }
12073
12224
  let o = Q.fromSignaling(r, a.deviceIdx);
12074
- if (L.onParticipantIdChanged(a, o, this.id), this._api.cacheExternalId(n, o), this._api.mapDecorativeId(n, t), i) this._conversation.externalId = o;
12225
+ L.onParticipantIdChanged(a, o, this.id);
12226
+ let s = j.compose(n, a.deviceIdx), c = j.compose(t, a.deviceIdx);
12227
+ if (this._api.cacheExternalId(s, o), this._api.mapDecorativeId(s, c), i) this._conversation.externalId = o;
12075
12228
  else {
12076
12229
  let e = this._participants;
12077
12230
  e[t].externalId = o;
@@ -12115,19 +12268,19 @@ var ls = 15, $ = class e extends b {
12115
12268
  _getParticipant(e) {
12116
12269
  return this._participants[e];
12117
12270
  }
12118
- }, us = null, ds = class e extends Error {
12271
+ }, ps = null, ms = class e extends Error {
12119
12272
  constructor(t, n) {
12120
12273
  super(t), h(this, "participantErrors", void 0), Object.setPrototypeOf(this, e.prototype), this.participantErrors = n;
12121
12274
  }
12122
- }, fs = null, ps = null, ms = 64 * 1024;
12123
- function hs() {
12124
- fs = null, ps = null;
12275
+ }, hs = null, gs = null, _s = 64 * 1024;
12276
+ function vs() {
12277
+ hs = null, gs = null;
12125
12278
  }
12126
- function gs(e) {
12279
+ function ys(e) {
12127
12280
  return e?.endsWith("/") ? e.slice(0, -1) : e;
12128
12281
  }
12129
- async function _s(e = null, t) {
12130
- let n = gs(e ?? M.apiBaseUrl);
12282
+ async function bs(e = null, t) {
12283
+ let n = ys(e ?? M.apiBaseUrl);
12131
12284
  if (n) return n;
12132
12285
  if ((t ?? M.apiEnv) !== "AUTO") return M.apiEndpoint(t);
12133
12286
  try {
@@ -12142,25 +12295,25 @@ async function _s(e = null, t) {
12142
12295
  return R.warn("Failed to resolve API endpoint using DNS, default is used", e), M.apiEndpoint(t);
12143
12296
  }
12144
12297
  }
12145
- async function vs() {
12146
- return fs || ps || (ps = _s(), fs = await ps, ps = null, fs);
12298
+ async function xs() {
12299
+ return hs || gs || (gs = bs(), hs = await gs, gs = null, hs);
12147
12300
  }
12148
- async function ys(e, t = {}, n = !1) {
12301
+ async function Ss(e, t = {}, n = !1) {
12149
12302
  if (!window.Blob || !window.navigator.sendBeacon) return;
12150
- await vs();
12151
- let r = Ts(e, t, n), i = new window.Blob([r], { type: "application/x-www-form-urlencoded" });
12152
- window.navigator.sendBeacon(`${fs}/fb.do`, i);
12303
+ await xs();
12304
+ let r = Os(e, t, n), i = new window.Blob([r], { type: "application/x-www-form-urlencoded" });
12305
+ window.navigator.sendBeacon(`${hs}/fb.do`, i);
12153
12306
  }
12154
- async function bs(e, t = {}, n = !1, r) {
12155
- return await vs(), Ss(Ts(e, t, n), r);
12307
+ async function Cs(e, t = {}, n = !1, r) {
12308
+ return await xs(), Ts(Os(e, t, n), r);
12156
12309
  }
12157
- async function xs(e, t = {}, n = !1) {
12158
- await vs();
12159
- let r = Ts(e, t, n);
12160
- return Ss(r, void 0, new Blob([r]).size <= ms);
12310
+ async function ws(e, t = {}, n = !1) {
12311
+ await xs();
12312
+ let r = Os(e, t, n);
12313
+ return Ts(r, void 0, new Blob([r]).size <= _s);
12161
12314
  }
12162
- async function Ss(e, t, n = !1) {
12163
- let r = `${t ?? fs}/fb.do`, i = new AbortController(), a = new O(x.NETWORK, { callError: {
12315
+ async function Ts(e, t, n = !1) {
12316
+ let r = `${t ?? hs}/fb.do`, i = new AbortController(), a = new O(x.NETWORK, { callError: {
12164
12317
  scope: "network",
12165
12318
  source: "api",
12166
12319
  code: "timeout",
@@ -12179,16 +12332,16 @@ async function Ss(e, t, n = !1) {
12179
12332
  } catch {
12180
12333
  o = { result: a };
12181
12334
  }
12182
- if (!t.ok && !Cs(o)) throw new O(x.API, { callError: {
12335
+ if (!t.ok && !Es(o)) throw new O(x.API, { callError: {
12183
12336
  scope: "server",
12184
12337
  source: "api",
12185
12338
  code: `http-${t.status}`,
12186
12339
  description: "http-error"
12187
12340
  } });
12188
- if (Cs(o)) throw o;
12341
+ if (Es(o)) throw o;
12189
12342
  return o;
12190
12343
  } catch (e) {
12191
- throw e instanceof O ? e : i.signal.aborted ? a : Cs(e) ? e : new O(x.NETWORK, { callError: {
12344
+ throw e instanceof O ? e : i.signal.aborted ? a : Es(e) ? e : new O(x.NETWORK, { callError: {
12192
12345
  scope: "network",
12193
12346
  source: "api",
12194
12347
  code: "fetch-failed",
@@ -12198,12 +12351,12 @@ async function Ss(e, t, n = !1) {
12198
12351
  clearTimeout(o);
12199
12352
  }
12200
12353
  }
12201
- function Cs(e) {
12354
+ function Es(e) {
12202
12355
  if (typeof e != "object" || !e) return !1;
12203
12356
  let t = e;
12204
12357
  return typeof t.error_code == "number" && typeof t.error_msg == "string";
12205
12358
  }
12206
- async function ws(e, t) {
12359
+ async function Ds(e, t) {
12207
12360
  try {
12208
12361
  let n = await fetch(e, {
12209
12362
  method: "POST",
@@ -12216,7 +12369,7 @@ async function ws(e, t) {
12216
12369
  throw R.warn("Failed to send form data", e), e;
12217
12370
  }
12218
12371
  }
12219
- function Ts(e, t = {}, n = !1) {
12372
+ function Os(e, t = {}, n = !1) {
12220
12373
  t.method = e, t.format = "JSON", t.application_key || (t.application_key = M.apiKey), n || (y.sessionKey ? t.session_key = y.sessionKey : y.accessToken && (t.access_token = y.accessToken));
12221
12374
  for (let [e, n] of Object.entries(t)) typeof n == "object" && (t[e] = JSON.stringify(n));
12222
12375
  let r = "";
@@ -12225,7 +12378,7 @@ function Ts(e, t = {}, n = !1) {
12225
12378
  }
12226
12379
  //#endregion
12227
12380
  //#region src/abstract/BaseApi.ts
12228
- var Es = class {
12381
+ var ks = class {
12229
12382
  constructor() {
12230
12383
  h(this, "_abortSignal", void 0);
12231
12384
  }
@@ -12243,22 +12396,16 @@ var Es = class {
12243
12396
  }
12244
12397
  log(e) {}
12245
12398
  logClientStats(e) {}
12246
- getCachedOkIdByExternalId(e) {
12399
+ getCachedParticipantIdByExternalId(e) {
12247
12400
  return null;
12248
12401
  }
12249
- getCachedRawOkIdByExternalId(e) {
12250
- return null;
12251
- }
12252
- getCachedExternalIdByOkId(e) {
12402
+ getCachedExternalIdByParticipantId(e) {
12253
12403
  return null;
12254
12404
  }
12255
12405
  cacheExternalId(e, t) {}
12256
12406
  mapDecorativeId(e, t) {}
12257
12407
  unmapDecorativeId(e) {}
12258
12408
  getDecorativeIdByInitialId(e) {}
12259
- replaceByInitialIdIdIfExists(e) {
12260
- return typeof e == "string" ? parseInt(e, 10) : e;
12261
- }
12262
12409
  hangupConversation(e, t = D.HUNGUP, n) {}
12263
12410
  async removeHistoryRecords(e) {}
12264
12411
  async getServerTime() {
@@ -12268,78 +12415,62 @@ var Es = class {
12268
12415
  async getInbounds() {
12269
12416
  return [];
12270
12417
  }
12271
- }, Ds = class e {
12418
+ }, As = class e {
12272
12419
  constructor() {
12273
- h(this, "_okIdToExternalId", /* @__PURE__ */ new Map()), h(this, "_externalIdToOkId", /* @__PURE__ */ new Map()), h(this, "_decorativeIdToInitialId", /* @__PURE__ */ new Map()), h(this, "_initialIdToDecorativeId", /* @__PURE__ */ new Map());
12420
+ h(this, "_participantIdToExternalId", /* @__PURE__ */ new Map()), h(this, "_externalIdToParticipantId", /* @__PURE__ */ new Map()), h(this, "_decorativeIdToInitialId", /* @__PURE__ */ new Map()), h(this, "_initialIdToDecorativeId", /* @__PURE__ */ new Map());
12274
12421
  }
12275
12422
  static _normalizeType(e) {
12276
- return e.type === to.GROUP ? {
12423
+ return e.type === io.GROUP ? {
12277
12424
  ...e,
12278
- type: to.USER
12425
+ type: io.USER
12279
12426
  } : e;
12280
12427
  }
12281
- getOkId(t) {
12282
- let n = Q.toString(e._normalizeType(t)), r = this._externalIdToOkId.get(n);
12283
- return r == null ? null : this.replaceByInitialIdIdIfExists(r);
12284
- }
12285
12428
  getExternalId(e) {
12286
- let t = this.getDecorativeIdByInitialId(e) ?? e, n = this._okIdToExternalId.get(t);
12429
+ let t = this._initialIdToDecorativeId.get(e) ?? e, n = this._participantIdToExternalId.get(t);
12287
12430
  return n == null ? null : Q.fromString(n);
12288
12431
  }
12289
- hasByExternalId(t) {
12290
- return this._externalIdToOkId.has(Q.toString(e._normalizeType(t)));
12291
- }
12292
- hasByOkId(e) {
12293
- return this._okIdToExternalId.has(e);
12432
+ getParticipantId(t) {
12433
+ let n = Q.toString(e._normalizeType(t)), r = this._externalIdToParticipantId.get(n);
12434
+ return r == null ? null : this._decorativeIdToInitialId.get(r) ?? r;
12294
12435
  }
12295
12436
  cache(t, n) {
12296
- let r = j.extractOkId(t), i = e._normalizeType(n), a = Q.toString(i);
12297
- this._okIdToExternalId.set(r, a), this._externalIdToOkId.set(a, r);
12437
+ let r = e._normalizeType(n), i = Q.toString(r);
12438
+ this._participantIdToExternalId.set(t, i), this._externalIdToParticipantId.set(i, t);
12298
12439
  }
12299
12440
  mapDecorativeId(e, t) {
12300
- let n = j.extractOkId(e), r = j.extractOkId(t);
12301
- this._decorativeIdToInitialId.set(n, r), this._initialIdToDecorativeId.set(r, n);
12441
+ this._decorativeIdToInitialId.set(e, t), this._initialIdToDecorativeId.set(t, e);
12302
12442
  }
12303
12443
  unmapDecorativeId(e) {
12304
- let t = j.extractOkId(e), n = this.getDecorativeIdByInitialId(t);
12305
- n && this._decorativeIdToInitialId.delete(n), this._initialIdToDecorativeId.delete(t);
12444
+ let t = this._initialIdToDecorativeId.get(e);
12445
+ t && this._decorativeIdToInitialId.delete(t), this._initialIdToDecorativeId.delete(e);
12306
12446
  }
12307
12447
  getDecorativeIdByInitialId(e) {
12308
- let t = j.extractOkId(e);
12309
- return this._initialIdToDecorativeId.get(t);
12310
- }
12311
- replaceByInitialIdIdIfExists(e) {
12312
- let t = j.extractOkId(e);
12313
- return this._decorativeIdToInitialId.get(t) ?? t;
12314
- }
12315
- getParticipantIdByExternalId(e) {
12316
- let t = this.getOkId(e);
12317
- return t == null ? null : j.composeParticipantId(t, A.USER, e.deviceIdx ?? 0);
12448
+ return this._initialIdToDecorativeId.get(e);
12318
12449
  }
12319
12450
  clear() {
12320
- this._okIdToExternalId.clear(), this._externalIdToOkId.clear(), this._decorativeIdToInitialId.clear(), this._initialIdToDecorativeId.clear();
12451
+ this._participantIdToExternalId.clear(), this._externalIdToParticipantId.clear(), this._decorativeIdToInitialId.clear(), this._initialIdToDecorativeId.clear();
12321
12452
  }
12322
- }, Os = "anonymLogin:", ks = 700, As = 3e3;
12323
- function js(e) {
12453
+ }, js = "anonymLogin:", Ms = 700, Ns = 3e3;
12454
+ function Ps(e) {
12324
12455
  let t = e.error_code;
12325
12456
  switch (t) {
12326
- case 2: return Ms(D.SERVICE_UNAVAILABLE, t, "service-unavailable");
12327
- case 4: return e.error_msg.includes("participants.limit.exceeded") ? Ms(D.PARTICIPANT_LIMIT_REACHED, t, "participants-limit-exceeded") : Ms(x.API, t, "request-error");
12328
- case 300: return Ms(D.NOT_FOUND, t, "not-found");
12329
- case 1101: return Ms(D.SERVICE_DISABLED, t, "vchat-service-disabled");
12330
- case 1102: return Ms(D.CALLEE_IS_OFFLINE, t, "target-user-unavailable");
12331
- case 1103: return Ms(D.NOT_FRIENDS, t, "friendship-required");
12332
- case 1104: return Ns(t, "youla-api-error");
12333
- case 1106: return Ns(t, "vk-api-error");
12334
- case 1113: return Ms(D.CALLER_IS_REJECTED, t, "caller-is-rejected");
12457
+ case 2: return Fs(D.SERVICE_UNAVAILABLE, t, "service-unavailable");
12458
+ case 4: return e.error_msg.includes("participants.limit.exceeded") ? Fs(D.PARTICIPANT_LIMIT_REACHED, t, "participants-limit-exceeded") : Fs(x.API, t, "request-error");
12459
+ case 300: return Fs(D.NOT_FOUND, t, "not-found");
12460
+ case 1101: return Fs(D.SERVICE_DISABLED, t, "vchat-service-disabled");
12461
+ case 1102: return Fs(D.CALLEE_IS_OFFLINE, t, "target-user-unavailable");
12462
+ case 1103: return Fs(D.NOT_FRIENDS, t, "friendship-required");
12463
+ case 1104: return Is(t, "youla-api-error");
12464
+ case 1106: return Is(t, "vk-api-error");
12465
+ case 1113: return Fs(D.CALLER_IS_REJECTED, t, "caller-is-rejected");
12335
12466
  case 1114: {
12336
12467
  let n = e.custom_error?.vchat_detailed_api_error?.code, r = n?.startsWith("obsolete_client");
12337
- return Ms(r ? D.OBSOLETE_CLIENT : D.VCHAT_DETAILED_ERROR, t, n ?? "detailed-error", r ? n : void 0);
12468
+ return Fs(r ? D.OBSOLETE_CLIENT : D.VCHAT_DETAILED_ERROR, t, n ?? "detailed-error", r ? n : void 0);
12338
12469
  }
12339
- default: return Ms(x.API, t, "api-error");
12470
+ default: return Fs(x.API, t, "api-error");
12340
12471
  }
12341
12472
  }
12342
- function Ms(e, t, n, r) {
12473
+ function Fs(e, t, n, r) {
12343
12474
  return {
12344
12475
  type: e,
12345
12476
  callError: {
@@ -12351,7 +12482,7 @@ function Ms(e, t, n, r) {
12351
12482
  message: r
12352
12483
  };
12353
12484
  }
12354
- function Ns(e, t) {
12485
+ function Is(e, t) {
12355
12486
  return {
12356
12487
  type: D.EXTERNAL_API_ERROR,
12357
12488
  callError: {
@@ -12362,19 +12493,19 @@ function Ns(e, t) {
12362
12493
  }
12363
12494
  };
12364
12495
  }
12365
- var Ps = class extends Es {
12496
+ var Ls = class extends ks {
12366
12497
  constructor(...e) {
12367
- super(...e), h(this, "_uuid", void 0), h(this, "_idCache", new Ds());
12498
+ super(...e), h(this, "_uuid", void 0), h(this, "_idCache", new As());
12368
12499
  }
12369
12500
  async _callUnsafe(e, t = {}, n = !1) {
12370
12501
  let r = async (i) => {
12371
12502
  try {
12372
- return await bs(e, t, n);
12503
+ return await Cs(e, t, n);
12373
12504
  } catch (t) {
12374
12505
  if (!t || typeof t != "object" || !Object.hasOwn(t, "error_msg")) {
12375
12506
  i++;
12376
12507
  let n = t && (typeof t == "object" || typeof t == "function") ? Object.getOwnPropertyNames(t).map((e) => `${e}: ${JSON.stringify(t[e])}`) : [String(t)];
12377
- if (R.debug(`${e} network error, attempt ${i}: ${n.join("\n ")}`), this._abortSignal?.aborted && (R.debug(`${e} aborted`), this._abortSignal.throwIfAborted()), i < M.apiMaxAttempt) return await j.delay(Math.min(i * ks, As), { signal: this._abortSignal }), r(i);
12508
+ if (R.debug(`${e} network error, attempt ${i}: ${n.join("\n ")}`), this._abortSignal?.aborted && (R.debug(`${e} aborted`), this._abortSignal.throwIfAborted()), i < M.apiMaxAttempt) return await j.delay(Math.min(i * Ms, Ns), { signal: this._abortSignal }), r(i);
12378
12509
  }
12379
12510
  throw R.warn(e, "error", t), t;
12380
12511
  }
@@ -12397,16 +12528,19 @@ var Ps = class extends Es {
12397
12528
  message: i?.error_msg,
12398
12529
  code: i?.error_code
12399
12530
  };
12400
- if (i.custom_error && (a.custom_error = i.custom_error), Fs(i)) {
12401
- let e = js(i);
12531
+ if (i.custom_error && (a.custom_error = i.custom_error), Rs(i)) {
12532
+ let e = Ps(i);
12402
12533
  throw a.callError = e.callError, a.message = e.message ?? a.message, new O(e.type, a);
12403
12534
  }
12404
12535
  throw new O(x.API, a);
12405
12536
  }
12406
12537
  }
12407
12538
  userId(e) {
12408
- let { compositeUserId: t } = j.decomposeParticipantId(e), { id: n } = j.decomposeId(t);
12409
- return y.isEmpty() ? Q.fromId(String(n)) : this._idCache.getExternalId(n) || Q.fromId(String(n));
12539
+ if (y.isEmpty()) {
12540
+ let { compositeUserId: t } = j.decomposeParticipantId(e), { id: n } = j.decomposeId(t);
12541
+ return Q.fromId(String(n));
12542
+ }
12543
+ return this._idCache.getExternalId(e);
12410
12544
  }
12411
12545
  async authorize() {
12412
12546
  if (this._ensureUuid(), !M.apiKey) throw new O(x.API, {
@@ -12425,7 +12559,7 @@ var Ps = class extends Es {
12425
12559
  let t = { session_data: {
12426
12560
  version: 2,
12427
12561
  device_id: this._uuid,
12428
- client_version: M.appVersion,
12562
+ client_version: M.apiClientVersion,
12429
12563
  client_type: "SDK_JS"
12430
12564
  } };
12431
12565
  return M.authToken && (t.session_data.auth_token = M.authToken, t.session_data.version = 3), this._callUnsafe("auth.anonymLogin", t, !0).then((e) => {
@@ -12444,17 +12578,17 @@ var Ps = class extends Es {
12444
12578
  });
12445
12579
  }
12446
12580
  _getAnonymLoginCacheKey() {
12447
- return M.authToken ? `${Os}${M.authToken}` : null;
12581
+ return M.authToken ? `${js}${M.authToken}` : null;
12448
12582
  }
12449
12583
  _getCachedAnonymLogin() {
12450
12584
  let e = this._getAnonymLoginCacheKey();
12451
12585
  if (!e) return null;
12452
12586
  let t = at.get(e);
12453
- return Is(t) ? t : (t && at.remove(e), null);
12587
+ return zs(t) ? t : (t && at.remove(e), null);
12454
12588
  }
12455
12589
  _setCachedAnonymLogin(e) {
12456
12590
  let t = this._getAnonymLoginCacheKey();
12457
- !t || !Is(e) || at.set(t, {
12591
+ !t || !zs(e) || at.set(t, {
12458
12592
  session_key: e.session_key,
12459
12593
  session_secret_key: e.session_secret_key,
12460
12594
  uid: e.uid
@@ -12472,7 +12606,7 @@ var Ps = class extends Es {
12472
12606
  }
12473
12607
  async _sendClientStats(e, t = !0) {
12474
12608
  try {
12475
- (await xs("vchat.clientStats", e))?.items_responses?.forEach((e) => {
12609
+ (await ws("vchat.clientStats", e))?.items_responses?.forEach((e) => {
12476
12610
  e.errors && R.error("[vchat.clientStats]", e);
12477
12611
  });
12478
12612
  } catch (n) {
@@ -12483,7 +12617,7 @@ var Ps = class extends Es {
12483
12617
  }
12484
12618
  logClientStats(e) {
12485
12619
  let t = {
12486
- app_version: String(M.appVersion),
12620
+ app_version: M.appVersion,
12487
12621
  sdk_type: "WEB",
12488
12622
  sdk_version: M.sdkVersion,
12489
12623
  version: 1,
@@ -12502,14 +12636,14 @@ var Ps = class extends Es {
12502
12636
  }, a = await this._callUnsafe("vchat.getLogUploadUrl", i), o = new FormData(), s = new Blob([r], { type: "application/json" });
12503
12637
  o.append("file", s, "log.json");
12504
12638
  let c = new URL(a.upload_url);
12505
- return c.searchParams.append("size", s.size.toString()), ws(c.toString(), o);
12639
+ return c.searchParams.append("size", s.size.toString()), Ds(c.toString(), o);
12506
12640
  }
12507
12641
  async joinConversation(e, t = !1, n) {
12508
12642
  let r = {
12509
12643
  conversationId: e,
12510
12644
  isVideo: t,
12511
12645
  protocolVersion: M.protocolVersion,
12512
- capabilities: xa.getFlags()
12646
+ capabilities: wa.getFlags()
12513
12647
  };
12514
12648
  return n && (r.chatId = n), this._call("vchat.joinConversation", r);
12515
12649
  }
@@ -12541,13 +12675,13 @@ var Ps = class extends Es {
12541
12675
  externalIds: l
12542
12676
  });
12543
12677
  if (t && t.length) switch (n) {
12544
- case Va.USER:
12678
+ case Wa.USER:
12545
12679
  u.uids = t.join(",");
12546
12680
  break;
12547
- case Va.GROUP:
12681
+ case Wa.GROUP:
12548
12682
  u.gid = t[0];
12549
12683
  break;
12550
- case Va.CHAT:
12684
+ case Wa.CHAT:
12551
12685
  u.chatId = t[0];
12552
12686
  break;
12553
12687
  }
@@ -12590,17 +12724,14 @@ var Ps = class extends Es {
12590
12724
  joinLink: e,
12591
12725
  isVideo: t,
12592
12726
  protocolVersion: M.protocolVersion,
12593
- capabilities: xa.getFlags()
12727
+ capabilities: wa.getFlags()
12594
12728
  };
12595
12729
  return n?.length && (i.observedIds = n.join(",")), M.anonymToken && (i.anonymToken = M.anonymToken), r && (i.payload = r), this._call("vchat.joinConversationByLink", i);
12596
12730
  }
12597
- getCachedOkIdByExternalId(e) {
12598
- return this._idCache.getParticipantIdByExternalId(e);
12731
+ getCachedParticipantIdByExternalId(e) {
12732
+ return this._idCache.getParticipantId(e);
12599
12733
  }
12600
- getCachedRawOkIdByExternalId(e) {
12601
- return this._idCache.getOkId(e);
12602
- }
12603
- getCachedExternalIdByOkId(e) {
12734
+ getCachedExternalIdByParticipantId(e) {
12604
12735
  return this._idCache.getExternalId(e);
12605
12736
  }
12606
12737
  cacheExternalId(e, t) {
@@ -12615,9 +12746,6 @@ var Ps = class extends Es {
12615
12746
  getDecorativeIdByInitialId(e) {
12616
12747
  return this._idCache.getDecorativeIdByInitialId(e);
12617
12748
  }
12618
- replaceByInitialIdIdIfExists(e) {
12619
- return this._idCache.replaceByInitialIdIdIfExists(e);
12620
- }
12621
12749
  async getConversationParams(e) {
12622
12750
  let t = {};
12623
12751
  return M.anonymToken && (t.anonymToken = M.anonymToken), e && (t.conversationId = e), this._call("vchat.getConversationParams", t);
@@ -12633,7 +12761,7 @@ var Ps = class extends Es {
12633
12761
  conversationId: e,
12634
12762
  reason: t
12635
12763
  };
12636
- M.anonymToken && (r.anonymToken = M.anonymToken), n?.peerId && (r.peerId = n.peerId), ys("vchat.hangupConversation", r);
12764
+ M.anonymToken && (r.anonymToken = M.anonymToken), n?.peerId && (r.peerId = n.peerId), Ss("vchat.hangupConversation", r);
12637
12765
  }
12638
12766
  async removeHistoryRecords(e) {
12639
12767
  await this._call("vchat.removeHistoryRecords", { recordIds: e.join(",") });
@@ -12649,19 +12777,19 @@ var Ps = class extends Es {
12649
12777
  return Array.isArray(e?.inbounds) ? e.inbounds : [];
12650
12778
  }
12651
12779
  };
12652
- function Fs(e) {
12780
+ function Rs(e) {
12653
12781
  return typeof e == "object" && !!e && "error_code" in e && "error_msg" in e;
12654
12782
  }
12655
- function Is(e) {
12783
+ function zs(e) {
12656
12784
  return typeof e == "object" && !!e && "session_key" in e && "session_secret_key" in e && typeof e.session_key == "string" && e.session_key.length > 0 && typeof e.session_secret_key == "string" && e.session_secret_key.length > 0;
12657
12785
  }
12658
12786
  //#endregion
12659
12787
  //#region src/enums/RecordRole.ts
12660
- var Ls = /* @__PURE__ */ function(e) {
12788
+ var Bs = /* @__PURE__ */ function(e) {
12661
12789
  return e.KING = "KING", e.PAWN = "PAWN", e;
12662
- }(Ls || {}), Rs = /* @__PURE__ */ function(e) {
12790
+ }(Bs || {}), Vs = /* @__PURE__ */ function(e) {
12663
12791
  return e.OFF = "0", e.ON = "1", e;
12664
- }({}), zs = class {
12792
+ }({}), Hs = class {
12665
12793
  constructor(e) {
12666
12794
  h(this, "_queue", void 0), h(this, "_readCursor", void 0), h(this, "_writeCursor", void 0), h(this, "_moveReadCursor", void 0), h(this, "_left", void 0), this._queue = Array(e).fill(null), this._readCursor = this._writeCursor = this._left = 0, this._moveReadCursor = !1;
12667
12795
  }
@@ -12684,21 +12812,21 @@ var Ls = /* @__PURE__ */ function(e) {
12684
12812
  let e = this._queue[this._readCursor];
12685
12813
  return e && (this._moveReadCursor = !1, this._queue[this._readCursor] = null, this._readCursor = this.nextCursor(this._readCursor), --this._left), e;
12686
12814
  }
12687
- }, Bs = class {
12815
+ }, Us = class {
12688
12816
  constructor(e, t, n, r = null) {
12689
12817
  h(this, "_uuid", void 0), h(this, "_apiKey", void 0), h(this, "_callToken", void 0), h(this, "_apiEnv", void 0), h(this, "_baseApiUrl", void 0), h(this, "_sessionKey", void 0), this._uuid = j.uuid(), this._apiKey = t, this._callToken = n, this._apiEnv = e, this._baseApiUrl = r;
12690
12818
  }
12691
12819
  async authorize() {
12692
- let e = await bs("auth.anonymLogin", {
12820
+ let e = await Cs("auth.anonymLogin", {
12693
12821
  session_data: {
12694
12822
  device_id: this._uuid,
12695
- client_version: M.appVersion,
12823
+ client_version: M.apiClientVersion,
12696
12824
  client_type: "SDK_JS",
12697
12825
  auth_token: this._callToken,
12698
12826
  version: 3
12699
12827
  },
12700
12828
  application_key: this._apiKey
12701
- }, !0, await _s(this._baseApiUrl, this._apiEnv));
12829
+ }, !0, await bs(this._baseApiUrl, this._apiEnv));
12702
12830
  return j.isObject(e) && !("error_msg" in e) ? (this._sessionKey = e.session_key, !0) : !1;
12703
12831
  }
12704
12832
  async hangupConversation(e, t) {
@@ -12708,9 +12836,9 @@ var Ls = /* @__PURE__ */ function(e) {
12708
12836
  application_key: this._apiKey,
12709
12837
  session_key: this._sessionKey
12710
12838
  };
12711
- t?.peerId && (n.peerId = t.peerId), await bs("vchat.hangupConversation", n, !0, await _s(this._baseApiUrl, this._apiEnv));
12839
+ t?.peerId && (n.peerId = t.peerId), await Cs("vchat.hangupConversation", n, !0, await bs(this._baseApiUrl, this._apiEnv));
12712
12840
  }
12713
- }, Vs, Hs = null, Us = {
12841
+ }, Ws, Gs = null, Ks = {
12714
12842
  getCameras: T.getCameras,
12715
12843
  getMicrophones: T.getMicrophones,
12716
12844
  getOutput: T.getOutput,
@@ -12736,27 +12864,27 @@ var Ls = /* @__PURE__ */ function(e) {
12736
12864
  baseChromeVersion: T.baseChromeVersion,
12737
12865
  getAudioContext: T.getAudioContext,
12738
12866
  isAudioShareSupported: T.isAudioShareSupported
12739
- }, Ws = { participantMarkerCompare: j.participantMarkerCompare };
12740
- function Gs(e) {
12741
- Hs = e;
12867
+ }, qs = { participantMarkerCompare: j.participantMarkerCompare };
12868
+ function Js(e) {
12869
+ Gs = e;
12742
12870
  }
12743
- function Ks(e) {
12871
+ function Ys(e) {
12744
12872
  M.videoEffects = e;
12745
12873
  }
12746
- function qs(e) {
12874
+ function Xs(e) {
12747
12875
  M.audioEffects = e;
12748
12876
  }
12749
- function Js(e, t = {}) {
12877
+ function Zs(e, t = {}) {
12750
12878
  M.vad = e, M.vadOptions = t;
12751
12879
  }
12752
- function Ys(e, t = null, n = {}, r = 1) {
12880
+ function Qs(e, t = null, n = {}, r = 1) {
12753
12881
  M.vmoji = e, M.vmojiOptions = {
12754
12882
  protocolVersion: r,
12755
12883
  renderingOptions: n
12756
12884
  }, t && e.setSDK(t);
12757
12885
  }
12758
- async function Xs(t) {
12759
- M.set(t), Vs || (Vs = new Ps()), e.disableLog(!M.debug), R.toggle(M.debug), R.log(`Calls SDK ${M.sdkVersion}`, t), await T.init();
12886
+ async function $s(t) {
12887
+ M.set(t), Ws || (Ws = new Ls()), e.disableLog(!M.debug), R.toggle(M.debug), R.log(`Calls SDK ${M.sdkVersion}`, t), await T.init();
12760
12888
  let n = T.getBrowserSupportFailure();
12761
12889
  if (n) throw new O(x.UNSUPPORTED, { callError: {
12762
12890
  scope: "internal",
@@ -12765,19 +12893,19 @@ async function Xs(t) {
12765
12893
  } });
12766
12894
  R.log("UserAgent:", navigator.userAgent), R.log("Screen resolution:", `${window.screen.width}x${window.screen.height}`), R.log("Permissions:", `Camera: ${T.hasCameraPermission()}, Mic: ${T.hasMicrophonePermission()}`), R.log("Simulcast:", `${t.simulcast} => ${M.simulcast}`);
12767
12895
  }
12768
- async function Zs(e, t = [S.AUDIO], n = "", r = !1, i = !1, a, o, s) {
12896
+ async function ec(e, t = [S.AUDIO], n = "", r = !1, i = !1, a, o, s) {
12769
12897
  let c = [];
12770
- return Array.isArray(e) ? c = e.length ? e : [] : e && (c = [e]), $s([], Va.USER, t, n, r, i, a, c, o, s);
12898
+ return Array.isArray(e) ? c = e.length ? e : [] : e && (c = [e]), nc([], Wa.USER, t, n, r, i, a, c, o, s);
12771
12899
  }
12772
- function Qs(e, t = []) {
12900
+ function tc(e, t = []) {
12773
12901
  let n = e.getIncomingCallerExternalId();
12774
12902
  return n ? t.length === 1 && t[0].id === n.id && t[0].type === n.type : !1;
12775
12903
  }
12776
- async function $s(e, t = Va.USER, n, r = "", i = !1, a = !1, o, s, c, l) {
12904
+ async function nc(e, t = Wa.USER, n, r = "", i = !1, a = !1, o, s, c, l) {
12777
12905
  if (!M.hold && z.getActive()) throw R.error("There is already active call"), new O(D.HAS_ACTIVE_CALL);
12778
12906
  let u = z.getAll().find((e) => e.isIncomingRinging);
12779
- if (!M.hold && u && !Qs(u, s)) throw R.error("There is already incoming call"), new O(D.HAS_ACTIVE_CALL);
12780
- return new $(new Ps(), Hs).onStart({
12907
+ if (!M.hold && u && !tc(u, s)) throw R.error("There is already incoming call"), new O(D.HAS_ACTIVE_CALL);
12908
+ return new $(new Ls(), Gs).onStart({
12781
12909
  opponentIds: e,
12782
12910
  opponentType: t,
12783
12911
  mediaOptions: n,
@@ -12790,40 +12918,40 @@ async function $s(e, t = Va.USER, n, r = "", i = !1, a = !1, o, s, c, l) {
12790
12918
  conversationId: l
12791
12919
  });
12792
12920
  }
12793
- async function ec(e, t) {
12794
- return tc(e, A.USER, void 0, t);
12921
+ async function rc(e, t) {
12922
+ return ic(e, A.USER, void 0, t);
12795
12923
  }
12796
- async function tc(e, t = A.USER, n, r, i, a) {
12924
+ async function ic(e, t = A.USER, n, r, i, a) {
12797
12925
  if (e === $.id()) throw Error("Push has already been processed");
12798
- return new $(new Ps(), Hs).onPush(e, t, n, r, i, a);
12926
+ return new $(new Ls(), Gs).onPush(e, t, n, r, i, a);
12799
12927
  }
12800
- async function nc() {
12801
- return Vs.getInbounds();
12928
+ async function ac() {
12929
+ return Ws.getInbounds();
12802
12930
  }
12803
- async function rc(e, t) {
12804
- return e && (M.authToken = e), t !== void 0 && M.apiBaseUrl !== t && (M.apiBaseUrl = t, hs()), Vs.authorize();
12931
+ async function oc(e, t) {
12932
+ return e && (M.authToken = e), t !== void 0 && M.apiBaseUrl !== t && (M.apiBaseUrl = t, vs()), Ws.authorize();
12805
12933
  }
12806
- async function ic(e = [S.AUDIO], t) {
12807
- return Dl(t).accept(e);
12934
+ async function sc(e = [S.AUDIO], t) {
12935
+ return Ml(t).accept(e);
12808
12936
  }
12809
- async function ac(e) {
12810
- let t = El(e?.conversationId);
12937
+ async function cc(e) {
12938
+ let t = kl(e?.conversationId);
12811
12939
  if (t) return t.decline(e);
12812
12940
  }
12813
- async function oc(e, t = [S.AUDIO]) {
12814
- return sc(e, t);
12941
+ async function lc(e, t = [S.AUDIO]) {
12942
+ return uc(e, t);
12815
12943
  }
12816
- async function sc(e, t, n) {
12944
+ async function uc(e, t, n) {
12817
12945
  if (!M.hold && z.callsLength > 0) throw R.error("There is already active call"), new O(D.HAS_ACTIVE_CALL);
12818
- return new $(new Ps(), Hs).onJoin({
12946
+ return new $(new Ls(), Gs).onJoin({
12819
12947
  conversationId: e,
12820
12948
  mediaOptions: t,
12821
12949
  chatId: n
12822
12950
  });
12823
12951
  }
12824
- async function cc(e, t = [S.AUDIO], n, r, i, a) {
12952
+ async function dc(e, t = [S.AUDIO], n, r, i, a) {
12825
12953
  if (!M.hold && z.callsLength > 0) throw R.error("There is already active call"), new O(D.HAS_ACTIVE_CALL);
12826
- return n && (M.anonymToken = n), new $(new Ps(), Hs).onJoin({
12954
+ return n && (M.anonymToken = n), new $(new Ls(), Gs).onJoin({
12827
12955
  joinLink: e,
12828
12956
  mediaOptions: t,
12829
12957
  observedIds: r,
@@ -12832,30 +12960,30 @@ async function cc(e, t = [S.AUDIO], n, r, i, a) {
12832
12960
  anonymous: !!M.anonymToken
12833
12961
  });
12834
12962
  }
12835
- function lc(e) {
12836
- let t = El(e?.conversationId);
12963
+ function fc(e) {
12964
+ let t = kl(e?.conversationId);
12837
12965
  return t ? t.hangup(e) : ($.hangupAfterInit(e?.onFastHangup), Promise.resolve());
12838
12966
  }
12839
- async function uc(e, t) {
12967
+ async function pc(e, t) {
12840
12968
  let n = Array.isArray(e) ? e : [e], r = $.current();
12841
12969
  r && await r.addParticipant(n, t);
12842
12970
  }
12843
- async function dc(e, t) {
12971
+ async function mc(e, t) {
12844
12972
  let n = $.current();
12845
12973
  if (n) {
12846
12974
  let r = e.map((e) => j.composeUserId(e));
12847
12975
  await n.addParticipantLegacy(r, t);
12848
12976
  }
12849
12977
  }
12850
- async function fc(e, t = !1) {
12851
- let n = $.current()?.getCachedRawOkIdByExternalId(e) ?? null;
12852
- if (!n) {
12853
- R.warn("removeParticipant: externalId not found in cache", e);
12854
- return;
12978
+ async function hc(e, t = !1) {
12979
+ let n = Nl(e, "removeParticipant");
12980
+ if (n) try {
12981
+ await n.conversation.removeParticipant(j.decomposeParticipantId(n.participantId).compositeUserId, t);
12982
+ } catch (e) {
12983
+ R.warn(`Failed to remove participant ${n.participantId}. Perhaps he is no longer on the call. ${e}`);
12855
12984
  }
12856
- return pc(n, t);
12857
12985
  }
12858
- async function pc(e, t = !1) {
12986
+ async function gc(e, t = !1) {
12859
12987
  let n = $.current();
12860
12988
  if (n) try {
12861
12989
  await n.removeParticipant(j.composeUserId(e), t);
@@ -12863,13 +12991,13 @@ async function pc(e, t = !1) {
12863
12991
  R.warn(`Failed to remove participant ${e}. Perhaps he is no longer on the call. ${t}`);
12864
12992
  }
12865
12993
  }
12866
- async function mc(e, t) {
12994
+ async function _c(e, t) {
12867
12995
  let n = $.current();
12868
12996
  if (e === "videoinput" && jt.contains(t)) return M.videoFacingMode = t, n ? (T.isMobile() && n.stopVideoTrack(), n.changeDevice(e)) : void 0;
12869
12997
  if (!await T._saveDeviceId(e, t)) throw Error(`Device not found: ${t}`);
12870
12998
  if (n) return n.changeDevice(e);
12871
12999
  }
12872
- async function hc(e, t) {
13000
+ async function vc(e, t) {
12873
13001
  let n = typeof e == "object" ? {
12874
13002
  ...e,
12875
13003
  fastScreenSharing: e.captureScreen && e.fastScreenSharing,
@@ -12878,267 +13006,264 @@ async function hc(e, t) {
12878
13006
  captureScreen: e,
12879
13007
  fastScreenSharing: !1,
12880
13008
  captureAudio: !1
12881
- }, r = El(t);
13009
+ }, r = kl(t);
12882
13010
  return r ? r.toggleScreenCapturing(n) : Promise.reject();
12883
13011
  }
12884
- function gc(e) {
13012
+ function yc(e) {
12885
13013
  let t = $.current();
12886
13014
  t && t.toggleAnimojiCapturing(e);
12887
13015
  }
12888
- async function _c(e, t = !1) {
13016
+ async function bc(e, t = !1) {
12889
13017
  let n = $.current();
12890
13018
  n && await n.setVideoStream(e, t);
12891
13019
  }
12892
- async function vc(e, t) {
12893
- let n = El(t);
13020
+ async function xc(e, t) {
13021
+ let n = kl(t);
12894
13022
  n && await n.toggleLocalVideo(e);
12895
13023
  }
12896
- async function yc(e, t) {
12897
- let n = El(t);
13024
+ async function Sc(e, t) {
13025
+ let n = kl(t);
12898
13026
  n && await n.toggleLocalAudio(e);
12899
13027
  }
12900
- async function bc(e) {
13028
+ async function Cc(e) {
12901
13029
  let t = $.current();
12902
13030
  if (t) return t.setLocalResolution(e);
12903
13031
  }
12904
- async function xc(e) {
13032
+ async function wc(e) {
12905
13033
  let t = $.current();
12906
13034
  t && await t.changePriorities(e);
12907
13035
  }
12908
- async function Sc(e, t) {
13036
+ async function Tc(e, t) {
12909
13037
  let n = $.current();
12910
13038
  if (n) {
12911
- let r;
12912
13039
  if (t) {
12913
- let e = n.getCachedRawOkIdByExternalId(t);
12914
- if (!e) {
12915
- R.warn("changeParticipantState: externalId not found in cache", t);
13040
+ let r = n.getCachedParticipantIdByExternalId(t);
13041
+ if (!r) {
13042
+ Al(t, "changeParticipantState", n);
12916
13043
  return;
12917
13044
  }
12918
- r = j.composeParticipantId(e, A.USER, t.deviceIdx);
13045
+ await n.changeParticipantState(e, r);
13046
+ return;
12919
13047
  }
12920
- await n.changeParticipantState(e, r);
13048
+ await n.changeParticipantState(e);
12921
13049
  }
12922
13050
  }
12923
- async function Cc() {
13051
+ async function Ec() {
12924
13052
  let e = $.current();
12925
13053
  e && await e.putHandsDown();
12926
13054
  }
12927
- async function wc(e) {
13055
+ async function Dc(e) {
12928
13056
  let t = $.current();
12929
13057
  t && await t.updateDisplayLayout(e);
12930
13058
  }
12931
- async function Tc(e) {
13059
+ async function Oc(e) {
12932
13060
  let t = $.current();
12933
13061
  t && await t.requestDisplayLayout(e);
12934
13062
  }
12935
- async function Ec(e, t, n = !1) {
12936
- let r = $.current()?.getCachedRawOkIdByExternalId(e) ?? null;
12937
- if (!r) {
12938
- R.warn("grantRoles: externalId not found in cache", e);
12939
- return;
12940
- }
12941
- return Dc(r, Q.getDeviceIdx(e), t, n);
13063
+ async function kc(e, t, n = !1) {
13064
+ let r = Nl(e, "grantRoles");
13065
+ r && await r.conversation.grantRoles(r.participantId, t, n);
12942
13066
  }
12943
- async function Dc(e, t, n, r = !1) {
13067
+ async function Ac(e, t, n, r = !1) {
12944
13068
  let i = $.current();
12945
13069
  i && await i.grantRoles(j.composeParticipantId(e, A.USER, t), n, r);
12946
13070
  }
12947
- async function Oc({ externalId: e = null, muteStates: t, requestedMedia: n = [], roomId: r = null }) {
12948
- let i = null;
12949
- return e && (i = $.current()?.getCachedRawOkIdByExternalId(e) ?? null, i || R.warn("muteParticipant: externalId not found in cache", e)), kc({
12950
- uid: i,
12951
- muteStates: t,
12952
- requestedMedia: n,
12953
- deviceIdx: Q.getDeviceIdx(e),
12954
- roomId: r
12955
- });
13071
+ async function jc({ externalId: e = null, muteStates: t, requestedMedia: n = [], roomId: r = null }) {
13072
+ if (e) {
13073
+ let i = Nl(e, "muteParticipant");
13074
+ return i ? i.conversation.muteParticipant(i.participantId, t, n, r) : void 0;
13075
+ }
13076
+ let i = $.current();
13077
+ i && await i.muteParticipant(null, t, n, r);
12956
13078
  }
12957
- async function kc({ uid: e = null, muteStates: t, requestedMedia: n = [], deviceIdx: r = 0, roomId: i = null }) {
13079
+ async function Mc({ uid: e = null, muteStates: t, requestedMedia: n = [], deviceIdx: r = 0, roomId: i = null }) {
12958
13080
  let a = $.current();
12959
13081
  if (a) {
12960
13082
  let o = e ? j.composeParticipantId(e, A.USER, r) : null;
12961
13083
  await a.muteParticipant(o, t, n, i);
12962
13084
  }
12963
13085
  }
12964
- async function Ac(e, t = !1, n = null) {
12965
- let r = $.current()?.getCachedRawOkIdByExternalId(e) ?? null;
12966
- if (!r) {
12967
- R.warn("pinParticipant: externalId not found in cache", e);
12968
- return;
12969
- }
12970
- return jc(r, t, Q.getDeviceIdx(e), n);
13086
+ async function Nc(e, t = !1, n = null) {
13087
+ let r = Nl(e, "pinParticipant");
13088
+ r && await r.conversation.pinParticipant(r.participantId, t, n);
12971
13089
  }
12972
- async function jc(e, t = !1, n = 0, r = null) {
13090
+ async function Pc(e, t = !1, n = 0, r = null) {
12973
13091
  let i = $.current();
12974
13092
  i && await i.pinParticipant(j.composeParticipantId(e, A.USER, n), t, r);
12975
13093
  }
12976
- async function Mc(e) {
13094
+ async function Fc(e) {
12977
13095
  let t = $.current();
12978
13096
  t && await t.updateMediaModifiers(e);
12979
13097
  }
12980
- async function Nc(e) {
13098
+ async function Ic(e) {
12981
13099
  let t = $.current();
12982
13100
  t && await t.enableVideoSuspend(e);
12983
13101
  }
12984
- async function Pc(e) {
13102
+ async function Lc(e) {
12985
13103
  let t = $.current();
12986
13104
  t && await t.enableVideoSuspendSuggest(e);
12987
13105
  }
12988
- async function Fc(e) {
13106
+ async function Rc(e) {
12989
13107
  let t = $.current();
12990
13108
  t && await t.changeOptions(e);
12991
13109
  }
12992
- async function Ic(e, t = null) {
12993
- let n = null;
12994
- return t && (n = $.current()?.getCachedRawOkIdByExternalId(t) ?? null, n || R.warn("chatMessage: externalId not found in cache", t)), Lc(e, n);
13110
+ async function zc(e, t = null) {
13111
+ if (t) {
13112
+ let n = Nl(t, "chatMessage");
13113
+ return n ? n.conversation.chatMessage(e, j.decomposeParticipantId(n.participantId).compositeUserId) : void 0;
13114
+ }
13115
+ let n = $.current();
13116
+ n && await n.chatMessage(e, null);
12995
13117
  }
12996
- async function Lc(e, t = null) {
13118
+ async function Bc(e, t = null) {
12997
13119
  let n = $.current();
12998
13120
  if (n) {
12999
13121
  let r = t ? j.composeUserId(t) : null;
13000
13122
  await n.chatMessage(e, r);
13001
13123
  }
13002
13124
  }
13003
- async function Rc(e = 10) {
13125
+ async function Vc(e = 10) {
13004
13126
  let t = $.current();
13005
13127
  if (t) return t.chatHistory(e);
13006
13128
  }
13007
- async function zc(e, t = null) {
13008
- let n = null;
13009
- return t && (n = $.current()?.getCachedRawOkIdByExternalId(t) ?? null, n || R.warn("customData: externalId not found in cache", t)), Bc(e, n, Q.getDeviceIdx(t));
13129
+ async function Hc(e, t = null) {
13130
+ if (t) {
13131
+ let n = Nl(t, "customData");
13132
+ return n ? n.conversation.customData(e, n.participantId) : void 0;
13133
+ }
13134
+ let n = $.current();
13135
+ n && await n.customData(e, null);
13010
13136
  }
13011
- async function Bc(e, t = null, n = 0) {
13137
+ async function Uc(e, t = null, n = 0) {
13012
13138
  let r = $.current();
13013
13139
  if (r) {
13014
13140
  let i = t ? j.composeParticipantId(t, A.USER, n) : null;
13015
13141
  await r.customData(e, i);
13016
13142
  }
13017
13143
  }
13018
- async function Vc(e = "", t = !1, { onlyAdminCanShareMovie: n = !1, waitForAdmin: r = !1, closedConversation: i = !1 } = {}, a) {
13019
- return (await Vs.createConversation(a ?? j.uuid(), e, t, {
13144
+ async function Wc(e = "", t = !1, { onlyAdminCanShareMovie: n = !1, waitForAdmin: r = !1, closedConversation: i = !1 } = {}, a) {
13145
+ return (await Ws.createConversation(a ?? j.uuid(), e, t, {
13020
13146
  onlyAdminCanShareMovie: n,
13021
13147
  waitForAdmin: r,
13022
13148
  closedConversation: i
13023
13149
  })).join_link;
13024
13150
  }
13025
- async function Hc(e = "", t = !1, { onlyAdminCanShareMovie: n = !1, audioOnly: r = !1 } = {}, i) {
13151
+ async function Gc(e = "", t = !1, { onlyAdminCanShareMovie: n = !1, audioOnly: r = !1 } = {}, i) {
13026
13152
  let a = i.map((e) => Q.fromId(e));
13027
- return (await Vs.createConversation(j.uuid(), e, t, {
13153
+ return (await Ws.createConversation(j.uuid(), e, t, {
13028
13154
  onlyAdminCanShareMovie: n,
13029
13155
  audienceMode: !0,
13030
13156
  audioOnly: r
13031
13157
  }, a)).join_link;
13032
13158
  }
13033
- async function Uc() {
13159
+ async function Kc() {
13034
13160
  let e = $.current();
13035
13161
  return e ? e.createJoinLink() : Promise.reject();
13036
13162
  }
13037
- async function Wc() {
13163
+ async function qc() {
13038
13164
  let e = $.current();
13039
13165
  return e ? e.removeJoinLink() : Promise.reject();
13040
13166
  }
13041
- async function Gc(e, t) {
13042
- return Vs.getAnonymTokenByLink(e, t);
13167
+ async function Jc(e, t) {
13168
+ return Ws.getAnonymTokenByLink(e, t);
13043
13169
  }
13044
- function Kc(e) {
13170
+ function Yc(e) {
13045
13171
  let t = $.current();
13046
13172
  t && t.setVolume(e);
13047
13173
  }
13048
- function qc(e) {
13174
+ function Xc(e) {
13049
13175
  M.forceRelayPolicy = e;
13050
13176
  }
13051
- async function Jc(e = !1, t = null, n = null, r = "DIRECT_LINK", i = null, a = null) {
13177
+ async function Zc(e = !1, t = null, n = null, r = "DIRECT_LINK", i = null, a = null) {
13052
13178
  let o = $.current();
13053
13179
  return o ? o.startStream(e, t, n, r, i, a) : Promise.reject();
13054
13180
  }
13055
- async function Yc(e = null, t) {
13181
+ async function Qc(e = null, t) {
13056
13182
  let n = $.current();
13057
13183
  return n ? n.stopStream(e, t) : Promise.reject();
13058
13184
  }
13059
- async function Xc(e = null) {
13185
+ async function $c(e = null) {
13060
13186
  let t = $.current();
13061
13187
  return t ? t.publishStream(e) : Promise.reject();
13062
13188
  }
13063
- async function Zc() {
13189
+ async function el() {
13064
13190
  let e = $.current();
13065
13191
  return e ? e.getStreamInfo() : Promise.reject();
13066
13192
  }
13067
- async function Qc(e) {
13193
+ async function tl(e) {
13068
13194
  let t = $.current();
13069
13195
  return t ? t.addMovie(e) : Promise.reject();
13070
13196
  }
13071
- async function $c(e) {
13197
+ async function nl(e) {
13072
13198
  let t = $.current();
13073
13199
  return t ? t.updateMovie(e) : Promise.reject();
13074
13200
  }
13075
- async function el(e) {
13201
+ async function rl(e) {
13076
13202
  let t = $.current();
13077
13203
  return t ? t.removeMovie(e) : Promise.reject();
13078
13204
  }
13079
- async function tl(e, t) {
13205
+ async function il(e, t) {
13080
13206
  let n = $.current();
13081
13207
  if (n) {
13082
- let r = [];
13208
+ let r = [], i = [];
13083
13209
  for (let t of e) {
13084
- let e, i;
13210
+ let e, a;
13085
13211
  t.addParticipantIds && (e = [], t.addParticipantIds.forEach((t) => {
13086
- let r = n.getCachedRawOkIdByExternalId(t);
13087
- r ? e.push(j.composeUserId(r)) : R.warn("updateRooms addParticipant: externalId not found in cache", t);
13088
- })), t.removeParticipantIds && (i = [], t.removeParticipantIds.forEach((e) => {
13089
- let t = n.getCachedRawOkIdByExternalId(e);
13090
- t ? i.push(j.composeUserId(t)) : R.warn("updateRooms removeParticipant: externalId not found in cache", e);
13212
+ let r = n.getCachedParticipantIdByExternalId(t);
13213
+ r ? e.push(j.decomposeParticipantId(r).compositeUserId) : i.push(t.id);
13214
+ })), t.removeParticipantIds && (a = [], t.removeParticipantIds.forEach((e) => {
13215
+ let t = n.getCachedParticipantIdByExternalId(e);
13216
+ t ? a.push(j.decomposeParticipantId(t).compositeUserId) : i.push(e.id);
13091
13217
  })), r.push({
13092
13218
  id: t.id,
13093
13219
  name: t.name,
13094
13220
  participantCount: t.participantCount,
13095
13221
  addParticipantIds: e,
13096
- removeParticipantIds: i,
13222
+ removeParticipantIds: a,
13097
13223
  countdownSec: t.countdownSec
13098
13224
  });
13099
13225
  }
13226
+ if (i.length) {
13227
+ jl(i, "updateRooms", n);
13228
+ return;
13229
+ }
13100
13230
  return n.updateRooms(r, t);
13101
13231
  }
13102
13232
  return Promise.reject();
13103
13233
  }
13104
- async function nl(e, t) {
13234
+ async function al(e, t) {
13105
13235
  let n = $.current();
13106
13236
  return n ? n.activateRooms(e, t) : Promise.reject();
13107
13237
  }
13108
- async function rl(e = null, t = null) {
13238
+ async function ol(e = null, t = null) {
13109
13239
  let n = $.current();
13110
13240
  if (!n) return Promise.reject();
13111
13241
  let r;
13112
- if (t) {
13113
- let e = n.getCachedRawOkIdByExternalId(t);
13114
- if (!e) {
13115
- R.warn("switchRoom: externalId not found in cache", t);
13116
- return;
13117
- }
13118
- let i = Q.getDeviceIdx(t);
13119
- r = j.composeParticipantId(e, A.USER, i);
13242
+ if (t && (r = n.getCachedParticipantIdByExternalId(t) ?? void 0, !r)) {
13243
+ Al(t, "switchRoom", n);
13244
+ return;
13120
13245
  }
13121
13246
  return n.switchRoom(e, r);
13122
13247
  }
13123
- async function il(e) {
13248
+ async function sl(e) {
13124
13249
  let t = $.current();
13125
13250
  return t ? t.removeRooms(e) : Promise.reject();
13126
13251
  }
13127
- function al(e) {
13252
+ function cl(e) {
13128
13253
  M.statisticsInterval = e;
13129
13254
  let t = $.current();
13130
13255
  if (t) return t.updateStatisticsInterval();
13131
13256
  }
13132
- function ol(t) {
13257
+ function ll(t) {
13133
13258
  e.disableLog(!t), R.toggle(t);
13134
13259
  }
13135
- function sl(e, ...t) {
13260
+ function ul(e, ...t) {
13136
13261
  M.debugLog && ($.debugMessage(e, "[external]", ...t) || R.send(e, "[external]", ...t));
13137
13262
  }
13138
- function cl(e, t, ...n) {
13263
+ function dl(e, t, ...n) {
13139
13264
  M.debugLog && ($.debugMessageWithContext(e, t, "[external]", ...n) || R.send(e, "[external]", ...n));
13140
13265
  }
13141
- var ll = {
13266
+ var fl = {
13142
13267
  list: Ne,
13143
13268
  get: Pe,
13144
13269
  getJson: Fe,
@@ -13146,7 +13271,7 @@ var ll = {
13146
13271
  clear: Le,
13147
13272
  stats: Re
13148
13273
  };
13149
- function ul() {
13274
+ function pl() {
13150
13275
  let e = [
13151
13276
  [`Calls SDK ${M.sdkVersion}`, M.toJSON()],
13152
13277
  ["UserAgent:", navigator.userAgent],
@@ -13163,124 +13288,139 @@ function ul() {
13163
13288
  d: e
13164
13289
  }));
13165
13290
  }
13166
- async function dl() {
13291
+ async function ml() {
13167
13292
  let e = $.id(), t = $.debugSessionId();
13168
13293
  if (!t || !e) throw R.error("[uploadDebugLogs]", "No conversation id found"), Error("No conversation id found");
13169
13294
  let n = await Pe({ sessionId: t });
13170
13295
  if (n.length === 0) throw R.error("[uploadDebugLogs]", "No logs found"), Error("No logs found");
13171
13296
  let r = n[0].t, i = n[n.length - 1].t;
13172
13297
  try {
13173
- return Vs?.uploadDebugLogs(e, r, i, JSON.stringify([...ul(), ...n]));
13298
+ return Ws?.uploadDebugLogs(e, r, i, JSON.stringify([...pl(), ...n]));
13174
13299
  } catch (e) {
13175
13300
  throw R.error("[uploadDebugLogs]", "Error while uploading logs", e), Error("Error while uploading logs", { cause: e });
13176
13301
  }
13177
13302
  }
13178
- async function fl(e) {
13303
+ async function hl(e) {
13179
13304
  let t = $.current();
13180
13305
  if (t) return t.videoEffect(e);
13181
13306
  }
13182
- async function pl(e, t) {
13307
+ async function gl(e, t) {
13183
13308
  let n = $.current();
13184
13309
  if (n) return n.audioEffect(e.length > 0 ? e : null, t);
13185
13310
  }
13186
- async function ml(e) {
13311
+ async function _l(e) {
13187
13312
  let t = $.current();
13188
13313
  t && await t.setAudioStream(e);
13189
13314
  }
13190
- async function hl(e, t = null, n = null) {
13315
+ async function vl(e, t = null, n = null) {
13191
13316
  let r = $.current();
13192
13317
  if (!r) return;
13193
13318
  let i = n ?? t?.id, a = null;
13194
- if (t) {
13195
- let e = r.getCachedRawOkIdByExternalId(t);
13196
- if (!e) throw Error("Could not get user id to set animoji svg");
13197
- a = j.composeParticipantId(e, A.USER, Q.getDeviceIdx(t));
13319
+ if (t && (a = r.getCachedParticipantIdByExternalId(t), !a)) {
13320
+ Al(t, "setVmojiSvg", r);
13321
+ return;
13198
13322
  }
13199
13323
  r.setAnimojiSvg(e, a, i);
13200
13324
  }
13201
- function gl(e) {
13325
+ function yl(e) {
13202
13326
  let t = $.current();
13203
13327
  t && t.setAnimojiFill(e);
13204
13328
  }
13205
- async function _l(e = null, t, n = !1) {
13206
- return Dl().getWaitingHall(e, t, n);
13329
+ async function bl(e = null, t, n = !1) {
13330
+ return Ml().getWaitingHall(e, t, n);
13207
13331
  }
13208
- async function vl() {
13209
- return Dl().getAudienceModeHands();
13332
+ async function xl() {
13333
+ return Ml().getAudienceModeHands();
13210
13334
  }
13211
- async function yl(e, t = !1) {
13212
- let n = Dl(), r;
13335
+ async function Sl(e, t = !1) {
13336
+ let n = Ml(), r;
13213
13337
  if (e) {
13214
- let t = n.getCachedRawOkIdByExternalId(e);
13338
+ let t = n.getCachedParticipantIdByExternalId(e);
13215
13339
  if (!t) {
13216
- R.warn("promoteParticipant: externalId not found in cache", e);
13340
+ Al(e, "promoteParticipant", n);
13217
13341
  return;
13218
13342
  }
13219
- r = j.composeUserId(t);
13343
+ r = j.decomposeParticipantId(t).compositeUserId;
13220
13344
  }
13221
13345
  return n.promoteParticipant(r, t);
13222
13346
  }
13223
- async function bl(e = !1) {
13224
- return Dl().requestPromotion(e);
13347
+ async function Cl(e = !1) {
13348
+ return Ml().requestPromotion(e);
13225
13349
  }
13226
- async function xl(e = !1) {
13227
- return Dl().acceptPromotion(e);
13350
+ async function wl(e = !1) {
13351
+ return Ml().acceptPromotion(e);
13228
13352
  }
13229
- async function Sl(e) {
13230
- return Dl().getParticipantListChunk(e);
13353
+ async function Tl(e) {
13354
+ return Ml().getParticipantListChunk(e);
13231
13355
  }
13232
- async function Cl(e) {
13233
- return Dl().getParticipants(e);
13356
+ async function El(e) {
13357
+ return Ml().getParticipants(e);
13234
13358
  }
13235
- async function wl(e) {
13236
- return Dl().feedback(e);
13359
+ async function Dl(e) {
13360
+ return Ml().feedback(e);
13237
13361
  }
13238
- async function Tl(e, t, n) {
13239
- return Dl(n).enableFeatureForRoles(e, t);
13362
+ async function Ol(e, t, n) {
13363
+ return Ml(n).enableFeatureForRoles(e, t);
13240
13364
  }
13241
- function El(e) {
13365
+ function kl(e) {
13242
13366
  return e ? z.get(e) ?? null : $.current() ?? z.getFirst();
13243
13367
  }
13244
- function Dl(e) {
13245
- let t = El(e);
13368
+ function Al(e, t, n) {
13369
+ L.onNonFatalError(/* @__PURE__ */ Error(`Participant ID mapping not found for external ID "${e.id}" while handling ${t}`), n.id);
13370
+ }
13371
+ function jl(e, t, n) {
13372
+ let r = Array.from(new Set(e));
13373
+ L.onNonFatalError(/* @__PURE__ */ Error(`Participant ID mapping not found for external IDs "${r.join("\", \"")}" while handling ${t}`), n.id);
13374
+ }
13375
+ function Ml(e) {
13376
+ let t = kl(e);
13246
13377
  if (!t) throw Error("Conversation not found");
13247
13378
  return t;
13248
13379
  }
13249
- async function Ol(e) {
13250
- await Vs.removeHistoryRecords(e);
13380
+ function Nl(e, t) {
13381
+ let n = $.current();
13382
+ if (!n) return null;
13383
+ let r = n.getCachedParticipantIdByExternalId(e);
13384
+ return r ? {
13385
+ conversation: n,
13386
+ participantId: r
13387
+ } : (Al(e, t, n), null);
13251
13388
  }
13252
- async function kl(e) {
13389
+ async function Pl(e) {
13390
+ await Ws.removeHistoryRecords(e);
13391
+ }
13392
+ async function Fl(e) {
13253
13393
  let t = $.current() ?? z.getFirst();
13254
13394
  t && await t.startAsr(e);
13255
13395
  }
13256
- async function Al(e) {
13396
+ async function Il(e) {
13257
13397
  let t = $.current() ?? z.getFirst();
13258
13398
  t && await t.stopAsr(e);
13259
13399
  }
13260
- async function jl(e) {
13400
+ async function Ll(e) {
13261
13401
  let t = $.current() ?? z.getFirst();
13262
13402
  t && await t.requestAsr(e);
13263
13403
  }
13264
- async function Ml(e) {
13404
+ async function Rl(e) {
13265
13405
  let t = $.current();
13266
13406
  return t ? t.startUrlSharing(e) : Promise.reject();
13267
13407
  }
13268
- async function Nl() {
13408
+ async function zl() {
13269
13409
  let e = $.current();
13270
13410
  return e ? e.stopUrlSharing() : Promise.reject();
13271
13411
  }
13272
- async function Pl(e) {
13412
+ async function Bl(e) {
13273
13413
  await z.switchCall(e);
13274
13414
  }
13275
- function Fl() {
13415
+ function Vl() {
13276
13416
  return z.getActiveId();
13277
13417
  }
13278
- function Il() {
13418
+ function Hl() {
13279
13419
  return $.getSyncedTime();
13280
13420
  }
13281
- function Ll() {
13421
+ function Ul() {
13282
13422
  return M.sdkVersion;
13283
13423
  }
13284
13424
  typeof window < "u" && (window.__CALLS_SDK = yn);
13285
13425
  //#endregion
13286
- export { Ps as Api, Bs as ApiExternal, zs as ArrayDequeue, y as AuthData, f as BaseLogger, Ba as CallDirection, Va as CallType, Ha as ChatRoomEventType, Ua as ConversationFeature, Wa as ConversationOption, Sn as DebugMessageType, to as ExternalIdType, jt as FacingMode, x as FatalError, O as HangupReason, D as HangupType, S as MediaOption, k as MediaTrackKind, V as MediaType, qa as MuteState, Z as ParticipantState, Rs as ParticipantStateDataValue, N as ParticipantStatus, Ls as RecordRole, Ja as RoomsEventType, za as Signaling, B as SignalingCommandType, vr as SignalingConnectionType, K as SignalingNotification, J as TransportTopology, Za as UserRole, A as UserType, To as VolumeDetector, ic as acceptCall, xl as acceptPromotion, nl as activateRooms, Qc as addMovie, uc as addParticipant, dc as addParticipantInternal, rc as authorize, Us as browser, $s as callInternal, Zs as callTo, hc as captureScreen, gc as captureVmoji, pl as changeAudioEffect, Fc as changeConversationOptions, mc as changeDevice, Sc as changeParticipantState, xc as changePriorities, fl as changeVideoEffect, Rc as chatHistory, Ic as chatMessage, Lc as chatMessageInternal, Uc as createJoinLink, zc as customData, Bc as customDataInternal, ol as debug, ll as debugLogs, sl as debugMessage, cl as debugMessageWithContext, ac as declineCall, Tl as enableFeatureForRoles, Nc as enableVideoSuspend, Pc as enableVideoSuspendSuggest, wl as feedback, qc as forceRelayPolicy, Fl as getActiveCallId, Gc as getAnonymTokenByLink, vl as getAudienceModeHands, nc as getInbounds, Sl as getParticipantListChunk, Cl as getParticipants, Zc as getStreamInfo, Il as getSyncedTime, _l as getWaitingHall, Ec as grantRoles, Dc as grantRolesInternal, lc as hangup, Xs as init, oc as joinCall, cc as joinCallByLink, sc as joinCallInternal, Oc as muteParticipant, kc as muteParticipantInternal, Ac as pinParticipant, jc as pinParticipantInternal, ec as processPush, tc as processPushInternal, yl as promoteParticipant, Xc as publishStream, Cc as putHandsDown, Ol as removeHistoryRecords, Wc as removeJoinLink, el as removeMovie, fc as removeParticipant, pc as removeParticipantInternal, il as removeRooms, jl as requestAsr, Tc as requestDisplayLayout, bl as requestPromotion, qs as setAudioEffects, ml as setAudioStream, bc as setLocalResolution, Gs as setLogger, Mc as setMediaModifiers, al as setStatisticsInterval, Js as setVad, Ks as setVideoEffects, _c as setVideoStream, Ys as setVmoji, gl as setVmojiFill, hl as setVmojiSvg, Kc as setVolume, kl as startAsr, Hc as startAudienceConversation, Vc as startConversation, Jc as startStream, Ml as startUrlSharing, Al as stopAsr, Yc as stopStream, Nl as stopUrlSharing, Pl as switchCall, rl as switchRoom, yc as toggleLocalAudio, vc as toggleLocalVideo, wc as updateDisplayLayout, $c as updateMovie, tl as updateRooms, dl as uploadDebugLogs, Ws as utils, Ll as version };
13426
+ export { Ls as Api, Us as ApiExternal, Hs as ArrayDequeue, y as AuthData, f as BaseLogger, Ua as CallDirection, Wa as CallType, Ga as ChatRoomEventType, Ka as ConversationFeature, qa as ConversationOption, Sn as DebugMessageType, io as ExternalIdType, jt as FacingMode, x as FatalError, O as HangupReason, D as HangupType, S as MediaOption, k as MediaTrackKind, V as MediaType, Xa as MuteState, Z as ParticipantState, Vs as ParticipantStateDataValue, N as ParticipantStatus, Bs as RecordRole, Za as RoomsEventType, Ha as Signaling, B as SignalingCommandType, vr as SignalingConnectionType, K as SignalingNotification, J as TransportTopology, eo as UserRole, A as UserType, Oo as VolumeDetector, sc as acceptCall, wl as acceptPromotion, al as activateRooms, tl as addMovie, pc as addParticipant, mc as addParticipantInternal, oc as authorize, Ks as browser, nc as callInternal, ec as callTo, vc as captureScreen, yc as captureVmoji, gl as changeAudioEffect, Rc as changeConversationOptions, _c as changeDevice, Tc as changeParticipantState, wc as changePriorities, hl as changeVideoEffect, Vc as chatHistory, zc as chatMessage, Bc as chatMessageInternal, Kc as createJoinLink, Hc as customData, Uc as customDataInternal, ll as debug, fl as debugLogs, ul as debugMessage, dl as debugMessageWithContext, cc as declineCall, Ol as enableFeatureForRoles, Ic as enableVideoSuspend, Lc as enableVideoSuspendSuggest, Dl as feedback, Xc as forceRelayPolicy, Vl as getActiveCallId, Jc as getAnonymTokenByLink, xl as getAudienceModeHands, ac as getInbounds, Tl as getParticipantListChunk, El as getParticipants, el as getStreamInfo, Hl as getSyncedTime, bl as getWaitingHall, kc as grantRoles, Ac as grantRolesInternal, fc as hangup, $s as init, lc as joinCall, dc as joinCallByLink, uc as joinCallInternal, jc as muteParticipant, Mc as muteParticipantInternal, Nc as pinParticipant, Pc as pinParticipantInternal, rc as processPush, ic as processPushInternal, Sl as promoteParticipant, $c as publishStream, Ec as putHandsDown, Pl as removeHistoryRecords, qc as removeJoinLink, rl as removeMovie, hc as removeParticipant, gc as removeParticipantInternal, sl as removeRooms, Ll as requestAsr, Oc as requestDisplayLayout, Cl as requestPromotion, Xs as setAudioEffects, _l as setAudioStream, Cc as setLocalResolution, Js as setLogger, Fc as setMediaModifiers, cl as setStatisticsInterval, Zs as setVad, Ys as setVideoEffects, bc as setVideoStream, Qs as setVmoji, yl as setVmojiFill, vl as setVmojiSvg, Yc as setVolume, Fl as startAsr, Gc as startAudienceConversation, Wc as startConversation, Zc as startStream, Rl as startUrlSharing, Il as stopAsr, Qc as stopStream, zl as stopUrlSharing, Bl as switchCall, ol as switchRoom, Sc as toggleLocalAudio, xc as toggleLocalVideo, Dc as updateDisplayLayout, nl as updateMovie, il as updateRooms, ml as uploadDebugLogs, qs as utils, Ul as version };