@webex/internal-media-core 2.8.0 → 2.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/cjs/index.js +2894 -120
  2. package/dist/esm/index.js +2894 -121
  3. package/dist/types/{MediaConnection/EventEmitter.d.ts → EventEmitter/index.d.ts} +2 -2
  4. package/dist/types/EventEmitter/index.d.ts.map +1 -0
  5. package/dist/types/Logger/index.d.ts +11 -14
  6. package/dist/types/Logger/index.d.ts.map +1 -1
  7. package/dist/types/Media/Logger/index.d.ts +16 -0
  8. package/dist/types/Media/Logger/index.d.ts.map +1 -0
  9. package/dist/types/Media/Track/Track.d.ts +3 -3
  10. package/dist/types/Media/Track/Track.d.ts.map +1 -1
  11. package/dist/types/Media/Track/eventTypes.d.ts +11 -0
  12. package/dist/types/Media/Track/eventTypes.d.ts.map +1 -0
  13. package/dist/types/{common/peerConnectionMock.d.ts → Media/testUtils/RTCPeerConnectionMock.d.ts} +1 -1
  14. package/dist/types/Media/testUtils/RTCPeerConnectionMock.d.ts.map +1 -0
  15. package/dist/types/MediaConnection/MediaConnection.d.ts +1 -1
  16. package/dist/types/MediaConnection/MediaConnection.d.ts.map +1 -1
  17. package/dist/types/MediaConnection/MultistreamRoapMediaConnection.d.ts +3 -4
  18. package/dist/types/MediaConnection/MultistreamRoapMediaConnection.d.ts.map +1 -1
  19. package/dist/types/MediaConnection/RoapMediaConnection.d.ts +3 -3
  20. package/dist/types/MediaConnection/RoapMediaConnection.d.ts.map +1 -1
  21. package/dist/types/MediaConnection/eventTypes.d.ts +15 -17
  22. package/dist/types/MediaConnection/eventTypes.d.ts.map +1 -1
  23. package/dist/types/MediaConnection/index.d.ts +2 -2
  24. package/dist/types/MediaConnection/index.d.ts.map +1 -1
  25. package/dist/types/MediaConnection/roap.d.ts +1 -1
  26. package/dist/types/MediaConnection/roap.d.ts.map +1 -1
  27. package/dist/types/MediaConnection/testUtils/EventListener.d.ts +6 -5
  28. package/dist/types/MediaConnection/testUtils/EventListener.d.ts.map +1 -1
  29. package/dist/types/MediaConnection/testUtils/RoapListener.d.ts +1 -1
  30. package/dist/types/MediaConnection/testUtils/RoapListener.d.ts.map +1 -1
  31. package/dist/types/StatsAnalyzer/StatsAnalyzer.d.ts +47 -0
  32. package/dist/types/StatsAnalyzer/StatsAnalyzer.d.ts.map +1 -0
  33. package/dist/types/StatsAnalyzer/StatsAnalyzer.test.d.ts +2 -0
  34. package/dist/types/StatsAnalyzer/StatsAnalyzer.test.d.ts.map +1 -0
  35. package/dist/types/StatsAnalyzer/constants.d.ts +282 -0
  36. package/dist/types/StatsAnalyzer/constants.d.ts.map +1 -0
  37. package/dist/types/StatsAnalyzer/eventTypes.d.ts +33 -0
  38. package/dist/types/StatsAnalyzer/eventTypes.d.ts.map +1 -0
  39. package/dist/types/StatsAnalyzer/index.d.ts +4 -0
  40. package/dist/types/StatsAnalyzer/index.d.ts.map +1 -0
  41. package/dist/types/StatsAnalyzer/types.d.ts +58 -0
  42. package/dist/types/StatsAnalyzer/types.d.ts.map +1 -0
  43. package/dist/types/StatsAnalyzer/utils.d.ts +55 -0
  44. package/dist/types/StatsAnalyzer/utils.d.ts.map +1 -0
  45. package/dist/types/common/testUtils/TestLogger.d.ts +13 -0
  46. package/dist/types/common/testUtils/TestLogger.d.ts.map +1 -0
  47. package/dist/types/{MediaConnection/testUtils/index.d.ts → common/testUtils/promiseUtils.d.ts} +1 -4
  48. package/dist/types/common/testUtils/promiseUtils.d.ts.map +1 -0
  49. package/dist/types/index.d.ts +1 -0
  50. package/dist/types/index.d.ts.map +1 -1
  51. package/package.json +3 -1
  52. package/dist/types/MediaConnection/EventEmitter.d.ts.map +0 -1
  53. package/dist/types/MediaConnection/logger.d.ts +0 -13
  54. package/dist/types/MediaConnection/logger.d.ts.map +0 -1
  55. package/dist/types/MediaConnection/testUtils/index.d.ts.map +0 -1
  56. package/dist/types/MediaConnection/testUtils/logger.d.ts +0 -3
  57. package/dist/types/MediaConnection/testUtils/logger.d.ts.map +0 -1
  58. package/dist/types/common/peerConnectionMock.d.ts.map +0 -1
package/dist/cjs/index.js CHANGED
@@ -501,6 +501,8 @@ function unwrapListeners$3(arr) {
501
501
  return ret;
502
502
  }
503
503
 
504
+ class EventEmitter$5 extends EventEmitter$6 {}
505
+
504
506
  var MEDIA = 'MEDIA';
505
507
  var DEVICE = 'DEVICE';
506
508
  var MEDIA_STREAM_TRACK = 'MEDIA_STREAM_TRACK';
@@ -613,6 +615,11 @@ function getTrackSettings(track) {
613
615
  return {};
614
616
  }
615
617
 
618
+ var TrackEventNames;
619
+ (function (TrackEventNames) {
620
+ TrackEventNames["TRACK_MUTE_STATE_CHANGED"] = "track:mute";
621
+ })(TrackEventNames || (TrackEventNames = {}));
622
+
616
623
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
617
624
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
618
625
  var TrackStatus;
@@ -626,7 +633,7 @@ var TrackKind;
626
633
  TrackKind["VIDEO"] = "video";
627
634
  })(TrackKind || (TrackKind = {}));
628
635
  var _mediaStreamTrack = /*#__PURE__*/new WeakMap();
629
- class Track extends EventEmitter$6 {
636
+ class Track extends EventEmitter$5 {
630
637
  constructor(mediaStreamTrack) {
631
638
  super();
632
639
  _defineProperty__default["default"](this, "ID", void 0);
@@ -646,7 +653,7 @@ class Track extends EventEmitter$6 {
646
653
  _classPrivateFieldSet__default["default"](this, _mediaStreamTrack, mediaStreamTrack);
647
654
  _classPrivateFieldGet__default["default"](this, _mediaStreamTrack).onmute = () => {
648
655
  var action = _classPrivateFieldGet__default["default"](this, _mediaStreamTrack).enabled ? 'muted' : 'unmuted';
649
- this.emit('track:mute', {
656
+ this.emit(TrackEventNames.TRACK_MUTE_STATE_CHANGED, {
650
657
  action
651
658
  });
652
659
  };
@@ -741,7 +748,7 @@ class Track extends EventEmitter$6 {
741
748
  }
742
749
  }
743
750
 
744
- var eventEmitter = new EventEmitter$6();
751
+ var eventEmitter = new EventEmitter$5();
745
752
  var deviceList = [];
746
753
  var getDevices$1 = /*#__PURE__*/function () {
747
754
  var _ref = _asyncToGenerator__default["default"](function* () {
@@ -1378,60 +1385,60 @@ class MediaConnectionError extends Error {
1378
1385
  }
1379
1386
  }
1380
1387
 
1381
- function ownKeys$8(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1382
- function _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$8(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$8(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1388
+ function ownKeys$9(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1389
+ function _objectSpread$9(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$9(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$9(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1383
1390
  class SdpError extends MediaConnectionError {
1384
1391
  constructor(message) {
1385
1392
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1386
- super(message, _objectSpread$8({
1393
+ super(message, _objectSpread$9({
1387
1394
  code: ErrorCode.SdpError,
1388
1395
  name: 'SdpError'
1389
1396
  }, options));
1390
1397
  }
1391
1398
  }
1392
1399
 
1393
- function ownKeys$7(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1394
- function _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$7(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$7(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1400
+ function ownKeys$8(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1401
+ function _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$8(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$8(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1395
1402
  class IceGatheringError extends SdpError {
1396
1403
  constructor(message) {
1397
1404
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1398
- super(message, _objectSpread$7({
1405
+ super(message, _objectSpread$8({
1399
1406
  code: ErrorCode.IceGatheringError,
1400
1407
  name: 'IceGatheringError'
1401
1408
  }, options));
1402
1409
  }
1403
1410
  }
1404
1411
 
1405
- function ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1406
- function _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1412
+ function ownKeys$7(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1413
+ function _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$7(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$7(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1407
1414
  class SdpAnswerHandlingError extends SdpError {
1408
1415
  constructor(message) {
1409
1416
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1410
- super(message, _objectSpread$6({
1417
+ super(message, _objectSpread$7({
1411
1418
  code: ErrorCode.SdpAnswerHandlingError,
1412
1419
  name: 'SdpAnswerHandlingError'
1413
1420
  }, options));
1414
1421
  }
1415
1422
  }
1416
1423
 
1417
- function ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1418
- function _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$5(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1424
+ function ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1425
+ function _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1419
1426
  class SdpOfferCreationError extends SdpError {
1420
1427
  constructor(message) {
1421
1428
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1422
- super(message, _objectSpread$5({
1429
+ super(message, _objectSpread$6({
1423
1430
  code: ErrorCode.SdpOfferCreationError,
1424
1431
  name: 'SdpOfferCreationError'
1425
1432
  }, options));
1426
1433
  }
1427
1434
  }
1428
1435
 
1429
- function ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1430
- function _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$4(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1436
+ function ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1437
+ function _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$5(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1431
1438
  class SdpOfferHandlingError extends SdpError {
1432
1439
  constructor(message) {
1433
1440
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1434
- super(message, _objectSpread$4({
1441
+ super(message, _objectSpread$5({
1435
1442
  code: ErrorCode.SdpOfferHandlingError,
1436
1443
  name: 'SdpOfferHandlingError'
1437
1444
  }, options));
@@ -1449,8 +1456,6 @@ var Error$1 = /*#__PURE__*/Object.freeze({
1449
1456
  SdpOfferHandlingError: SdpOfferHandlingError
1450
1457
  });
1451
1458
 
1452
- class EventEmitter$5 extends EventEmitter$6 {}
1453
-
1454
1459
  var global$1 = (typeof global !== "undefined" ? global :
1455
1460
  typeof self !== "undefined" ? self :
1456
1461
  typeof window !== "undefined" ? window : {});
@@ -2884,7 +2889,7 @@ opts=arguments[0];}else if(arguments.length===3&&typeof arguments[2]==='object')
2884
2889
  opts=arguments[2];}trace("on".concat(method),makeEvent(opts||''));return nativeMethod.apply(this,opts?[opts]:undefined).then(function(description){trace("on".concat(method,"OnSuccess"),makeEvent(description.sdp));if(args.length>0&&typeof args[0]==='function'){args[0].apply(null,[description]);return undefined;}return description;},function(err){trace("on".concat(method,"OnFailure"),makeEvent(err.toString()));if(args.length>1&&typeof args[1]==='function'){args[1].apply(null,[err]);return;}throw err;});};}});['setLocalDescription','setRemoteDescription','addIceCandidate'].forEach(function(method){var nativeMethod=origPeerConnection.prototype[method];if(nativeMethod){origPeerConnection.prototype[method]=function(){var _this=this;var args=arguments;trace("on".concat(method),makeEvent(method==='addIceCandidate'?arguments[0]:arguments[0].sdp));return nativeMethod.apply(this,[arguments[0]]).then(function(){var _a;trace("on".concat(method,"OnSuccess"),makeEvent('success'));if(method.endsWith('Description')){if(!_this.transportEventsPreviouslyAdded){var senders=_this.getSenders();var _loop_1=function _loop_1(sender){if(sender.transport){sender.transport.addEventListener('statechange',function(){if(sender&&sender.transport){trace("ondtlsStateChange",makeEvent(sender.transport.state));}});sender.transport.addEventListener('error',function(error){var errorEvent=error;trace("ondtlsError",makeEvent(errorEvent.error.errorDetail));});if(sender.transport.iceTransport){sender.transport.iceTransport.addEventListener('selectedcandidatepairchange',function(){var _a,_b,_c,_d,_e,_f;if(sender.transport&&sender.transport.iceTransport){var pair=sender.transport.iceTransport.getSelectedCandidatePair();var localCandidate="".concat((_a=pair===null||pair===void 0?void 0:pair.local)===null||_a===void 0?void 0:_a.address,":").concat((_b=pair===null||pair===void 0?void 0:pair.local)===null||_b===void 0?void 0:_b.port,"/").concat((_c=pair===null||pair===void 0?void 0:pair.local)===null||_c===void 0?void 0:_c.protocol);var remoteCandidate="".concat((_d=pair===null||pair===void 0?void 0:pair.remote)===null||_d===void 0?void 0:_d.address,":").concat((_e=pair===null||pair===void 0?void 0:pair.remote)===null||_e===void 0?void 0:_e.port,"/").concat((_f=pair===null||pair===void 0?void 0:pair.remote)===null||_f===void 0?void 0:_f.protocol);var pairString="local: ".concat(localCandidate,", remote: ").concat(remoteCandidate);trace('onselectedCandidatePairChange',makeEvent(pairString));}});}_this.transportEventsPreviouslyAdded=true;if(pc.getConfiguration().bundlePolicy==='max-bundle'){return "break";}}};for(var _i=0,senders_1=senders;_i<senders_1.length;_i++){var sender=senders_1[_i];var state_1=_loop_1(sender);if(state_1==="break")break;}}if(!_this.sctpEventsPreviouslyAdded){// Some Firefox versions prior to 113 have sctp defined but not the events, so check both here.
2885
2890
  if((_a=_this.sctp)===null||_a===void 0?void 0:_a.addEventListener){_this.sctp.addEventListener('statechange',function(){trace('onsctpStateChange',makeEvent(_this.sctp.state));});_this.sctpEventsPreviouslyAdded=true;}}}if(args.length>=2&&typeof args[1]==='function'){args[1].apply(null,[]);return undefined;}return undefined;},function(err){trace("on".concat(method,"OnFailure"),makeEvent(err.toString()));if(args.length>=3&&typeof args[2]==='function'){args[2].apply(null,[err]);return undefined;}throw err;});};}});if(navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){var origGetUserMedia_1=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);var gum=function gum(){trace('onnavigator.mediaDevices.getUserMedia',makeEvent(JSON.stringify(arguments[0])));return origGetUserMedia_1.apply(navigator.mediaDevices,arguments).then(function(stream){trace('onnavigator.mediaDevices.getUserMediaOnSuccess',makeEvent(JSON.stringify(dumpStream(stream))));return stream;},function(err){trace('onnavigator.mediaDevices.getUserMediaOnFailure',makeEvent(err.name));return Promise.reject(err);});};navigator.mediaDevices.getUserMedia=gum.bind(navigator.mediaDevices);}if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia){var origGetDisplayMedia_1=navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices);var gdm=function gdm(){trace('onnavigator.mediaDevices.getDisplayMedia',makeEvent(JSON.stringify(arguments[0])));return origGetDisplayMedia_1.apply(navigator.mediaDevices,arguments).then(function(stream){trace('onnavigator.mediaDevices.getDisplayMediaOnSuccess',makeEvent(JSON.stringify(dumpStream(stream))));return stream;},function(err){trace('onnavigator.mediaDevices.getDisplayMediaOnFailure',makeEvent(err.name));return Promise.reject(err);});};navigator.mediaDevices.getDisplayMedia=gdm.bind(navigator.mediaDevices);}var getStatsReport=function getStatsReport(){return __awaiter(void 0,void 0,void 0,function(){return __generator(this,function(_a){return [2/*return*/,pc.getStats(null).then(function(res){// Convert from stats report to js Map in order to have values set in `statsPreProcessor`
2886
2891
  var statsMap=new Map();res.forEach(function(stats,key){return statsMap.set(key,stats);});return statsPreProcessor(statsMap).then(function(){var now=map2obj(statsMap);var base=deepCopy$1(now);// our new prev
2887
- var compressed=deltaCompression(prev,now);trace('stats-report',formatStatsReport(compressed),compressed.timestamp!==-Infinity?compressed.timestamp:undefined);prev=base;return Promise.resolve();});})];});});};var interval=window.setInterval(function(){if(pc.signalingState==='closed'){window.clearInterval(interval);return;}getStatsReport();},intervalTime);var forceStatsReport=function forceStatsReport(){return __awaiter(void 0,void 0,void 0,function(){return __generator(this,function(_a){return [2/*return*/,getStatsReport()];});});};return {forceStatsReport:forceStatsReport};};rtcStats_1=rtcstats.rtcStats=rtcStats;var NUM$1='\\d+';var SDP_TOKEN$1="[!#$%&'*+\\-.^_`{|}~a-zA-Z0-9]+";var ANY_NON_WS$1='\\S+';var SP$1='\\s';var REST$1='.+';class Line$1{}var _a$5$1;class BandwidthLine$1 extends Line$1{constructor(bandwidthType,bandwidth){super();this.bandwidthType=bandwidthType;this.bandwidth=bandwidth;}static fromSdpLine(line){if(!BandwidthLine$1.regex.test(line)){return undefined;}var tokens=line.match(BandwidthLine$1.regex);var bandwidthType=tokens[1];var bandwidth=parseInt(tokens[2],10);return new BandwidthLine$1(bandwidthType,bandwidth);}toSdpLine(){return "b=".concat(this.bandwidthType,":").concat(this.bandwidth);}}_a$5$1=BandwidthLine$1;BandwidthLine$1.BW_TYPE_REGEX='CT|AS|TIAS';BandwidthLine$1.regex=new RegExp("^(".concat(_a$5$1.BW_TYPE_REGEX,"):(").concat(NUM$1,")"));class BundleGroupLine$1 extends Line$1{constructor(mids){super();this.mids=mids;}static fromSdpLine(line){if(!BundleGroupLine$1.regex.test(line)){return undefined;}var tokens=line.match(BundleGroupLine$1.regex);var mids=tokens[1].split(' ');return new BundleGroupLine$1(mids);}toSdpLine(){return "a=group:BUNDLE ".concat(this.mids.join(' '));}}BundleGroupLine$1.regex=new RegExp("^group:BUNDLE (".concat(REST$1,")"));var _a$4$1;class CandidateLine$1 extends Line$1{constructor(foundation,componentId,transport,priority,connectionAddress,port,candidateType,relAddr,relPort,candidateExtensions){super();this.foundation=foundation;this.componentId=componentId;this.transport=transport;this.priority=priority;this.connectionAddress=connectionAddress;this.port=port;this.candidateType=candidateType;this.relAddr=relAddr;this.relPort=relPort;this.candidateExtensions=candidateExtensions;}static fromSdpLine(line){if(!CandidateLine$1.regex.test(line)){return undefined;}var tokens=line.match(CandidateLine$1.regex);var foundation=tokens[1];var componentId=parseInt(tokens[2],10);var transport=tokens[3];var priority=parseInt(tokens[4],10);var connectionAddress=tokens[5];var port=parseInt(tokens[6],10);var candidateType=tokens[7];var relAddr=tokens[8];var relPort=tokens[9]?parseInt(tokens[9],10):undefined;var candidateExtensions=tokens[10];return new CandidateLine$1(foundation,componentId,transport,priority,connectionAddress,port,candidateType,relAddr,relPort,candidateExtensions);}toSdpLine(){var str='';str+="a=candidate:".concat(this.foundation," ").concat(this.componentId," ").concat(this.transport," ").concat(this.priority," ").concat(this.connectionAddress," ").concat(this.port," typ ").concat(this.candidateType);if(this.relAddr){str+=" raddr ".concat(this.relAddr);}if(this.relPort){str+=" rport ".concat(this.relPort);}if(this.candidateExtensions){str+=" ".concat(this.candidateExtensions);}return str;}}_a$4$1=CandidateLine$1;CandidateLine$1.ICE_CHARS="[a-zA-Z0-9+/]+";CandidateLine$1.regex=new RegExp("^candidate:(".concat(_a$4$1.ICE_CHARS,") (").concat(NUM$1,") (").concat(ANY_NON_WS$1,") (").concat(NUM$1,") (").concat(ANY_NON_WS$1,") (").concat(NUM$1,") typ (").concat(ANY_NON_WS$1,")(?: raddr (").concat(ANY_NON_WS$1,"))?(?: rport (").concat(NUM$1,"))?(?: (").concat(REST$1,"))?"));class ConnectionLine$1 extends Line$1{constructor(netType,addrType,ipAddr){super();this.netType=netType;this.addrType=addrType;this.ipAddr=ipAddr;}static fromSdpLine(line){if(!ConnectionLine$1.regex.test(line)){return undefined;}var tokens=line.match(ConnectionLine$1.regex);var netType=tokens[1];var addrType=tokens[2];var ipAddr=tokens[3];return new ConnectionLine$1(netType,addrType,ipAddr);}toSdpLine(){return "c=".concat(this.netType," ").concat(this.addrType," ").concat(this.ipAddr);}}ConnectionLine$1.regex=new RegExp("^(".concat(ANY_NON_WS$1,") (").concat(ANY_NON_WS$1,") (").concat(ANY_NON_WS$1,")"));class ContentLine$1 extends Line$1{constructor(values){super();this.values=values;}static fromSdpLine(line){if(!ContentLine$1.regex.test(line)){return undefined;}var tokens=line.match(ContentLine$1.regex);var values=tokens[1].split(',');return new ContentLine$1(values);}toSdpLine(){return "a=content:".concat(this.values.join(','));}}ContentLine$1.regex=new RegExp("^content:(".concat(REST$1,")$"));class DirectionLine$1 extends Line$1{constructor(direction){super();this.direction=direction;}static fromSdpLine(line){if(!DirectionLine$1.regex.test(line)){return undefined;}var tokens=line.match(DirectionLine$1.regex);var direction=tokens[1];return new DirectionLine$1(direction);}toSdpLine(){return "a=".concat(this.direction);}}DirectionLine$1.regex=/^(sendrecv|sendonly|recvonly|inactive)$/;var _a$3$1;class ExtMapLine$1 extends Line$1{constructor(id,uri,direction,extensionAttributes){super();this.id=id;this.uri=uri;this.direction=direction;this.extensionAttributes=extensionAttributes;}static fromSdpLine(line){if(!ExtMapLine$1.regex.test(line)){return undefined;}var tokens=line.match(ExtMapLine$1.regex);var id=parseInt(tokens[1],10);var direction=tokens[2];var uri=tokens[3];var extensionAttributes=tokens[4];return new ExtMapLine$1(id,uri,direction,extensionAttributes);}toSdpLine(){var str='';str+="a=extmap:".concat(this.id);if(this.direction){str+="/".concat(this.direction);}str+=" ".concat(this.uri);if(this.extensionAttributes){str+=" ".concat(this.extensionAttributes);}return str;}}_a$3$1=ExtMapLine$1;ExtMapLine$1.EXTMAP_DIRECTION="sendonly|recvonly|sendrecv|inactive";ExtMapLine$1.regex=new RegExp("^extmap:(".concat(NUM$1,")(?:/(").concat(_a$3$1.EXTMAP_DIRECTION,"))? (").concat(ANY_NON_WS$1,")(?: (").concat(REST$1,"))?"));class FingerprintLine$1 extends Line$1{constructor(fingerprint){super();this.fingerprint=fingerprint;}static fromSdpLine(line){if(!FingerprintLine$1.regex.test(line)){return undefined;}var tokens=line.match(FingerprintLine$1.regex);var fingerprint=tokens[1];return new FingerprintLine$1(fingerprint);}toSdpLine(){return "a=fingerprint:".concat(this.fingerprint);}}FingerprintLine$1.regex=new RegExp("^fingerprint:(".concat(REST$1,")"));function parseFmtpParams$1(fmtpParams){fmtpParams=fmtpParams.replace(/^a=fmtp:\d+\x20/,'');var fmtpObj=new Map();if(/^\d+([,/-]\d+)+$/.test(fmtpParams)){fmtpObj.set(fmtpParams,undefined);return fmtpObj;}fmtpParams.split(';').forEach(param=>{var paramArr=param&&param.split('=');if(paramArr.length!==2||!paramArr[0]||!paramArr[1]){throw new Error("Fmtp params is invalid with ".concat(fmtpParams));}fmtpObj.set(paramArr[0],paramArr[1]);});return fmtpObj;}class FmtpLine$1 extends Line$1{constructor(payloadType,params){super();this.payloadType=payloadType;this.params=params;}static fromSdpLine(line){if(!FmtpLine$1.regex.test(line)){return undefined;}var tokens=line.match(FmtpLine$1.regex);var payloadType=parseInt(tokens[1],10);var params=tokens[2];return new FmtpLine$1(payloadType,parseFmtpParams$1(params));}toSdpLine(){var fmtParams=Array.from(this.params.keys()).map(key=>{if(this.params.get(key)!==undefined){return "".concat(key,"=").concat(this.params.get(key));}return "".concat(key);}).join(';');return "a=fmtp:".concat(this.payloadType," ").concat(fmtParams);}}FmtpLine$1.regex=new RegExp("^fmtp:(".concat(NUM$1,") (").concat(REST$1,")"));class IceOptionsLine$1 extends Line$1{constructor(options){super();this.options=options;}static fromSdpLine(line){if(!IceOptionsLine$1.regex.test(line)){return undefined;}var tokens=line.match(IceOptionsLine$1.regex);var options=tokens[1].split(' ');return new IceOptionsLine$1(options);}toSdpLine(){return "a=ice-options:".concat(this.options.join(' '));}}IceOptionsLine$1.regex=new RegExp("^ice-options:(".concat(REST$1,")$"));class IcePwdLine$1 extends Line$1{constructor(pwd){super();this.pwd=pwd;}static fromSdpLine(line){if(!IcePwdLine$1.regex.test(line)){return undefined;}var tokens=line.match(IcePwdLine$1.regex);var pwd=tokens[1];return new IcePwdLine$1(pwd);}toSdpLine(){return "a=ice-pwd:".concat(this.pwd);}}IcePwdLine$1.regex=new RegExp("^ice-pwd:(".concat(ANY_NON_WS$1,")$"));class IceUfragLine$1 extends Line$1{constructor(ufrag){super();this.ufrag=ufrag;}static fromSdpLine(line){if(!IceUfragLine$1.regex.test(line)){return undefined;}var tokens=line.match(IceUfragLine$1.regex);var ufrag=tokens[1];return new IceUfragLine$1(ufrag);}toSdpLine(){return "a=ice-ufrag:".concat(this.ufrag);}}IceUfragLine$1.regex=new RegExp("^ice-ufrag:(".concat(ANY_NON_WS$1,")$"));class MaxMessageSizeLine$1 extends Line$1{constructor(maxMessageSize){super();this.maxMessageSize=maxMessageSize;}static fromSdpLine(line){if(!MaxMessageSizeLine$1.regex.test(line)){return undefined;}var tokens=line.match(MaxMessageSizeLine$1.regex);var maxMessageSize=parseInt(tokens[1],10);return new MaxMessageSizeLine$1(maxMessageSize);}toSdpLine(){return "a=max-message-size:".concat(this.maxMessageSize);}}MaxMessageSizeLine$1.regex=new RegExp("^max-message-size:(".concat(NUM$1,")"));var _a$2$2;class MediaLine$1 extends Line$1{constructor(type,port,protocol,formats){super();this.type=type;this.port=port;this.protocol=protocol;this.formats=formats;}static fromSdpLine(line){if(!MediaLine$1.regex.test(line)){return undefined;}var tokens=line.match(MediaLine$1.regex);var type=tokens[1];var port=parseInt(tokens[2],10);var protocol=tokens[3];var formats=tokens[4].split(' ');return new MediaLine$1(type,port,protocol,formats);}toSdpLine(){return "m=".concat(this.type," ").concat(this.port," ").concat(this.protocol," ").concat(this.formats.join(' '));}}_a$2$2=MediaLine$1;MediaLine$1.MEDIA_TYPE='audio|video|application';MediaLine$1.regex=new RegExp("^(".concat(_a$2$2.MEDIA_TYPE,") (").concat(NUM$1,") (").concat(ANY_NON_WS$1,") (").concat(REST$1,")"));class MidLine$1 extends Line$1{constructor(mid){super();this.mid=mid;}static fromSdpLine(line){if(!MidLine$1.regex.test(line)){return undefined;}var tokens=line.match(MidLine$1.regex);var mid=tokens[1];return new MidLine$1(mid);}toSdpLine(){return "a=mid:".concat(this.mid);}}MidLine$1.regex=new RegExp("^mid:(".concat(ANY_NON_WS$1,")$"));class OriginLine$1 extends Line$1{constructor(username,sessionId,sessionVersion,netType,addrType,ipAddr){super();this.username=username;this.sessionId=sessionId;this.sessionVersion=sessionVersion;this.netType=netType;this.addrType=addrType;this.ipAddr=ipAddr;}static fromSdpLine(line){if(!OriginLine$1.regex.test(line)){return undefined;}var tokens=line.match(OriginLine$1.regex);var username=tokens[1];var sessionId=tokens[2];var sessionVersion=parseInt(tokens[3],10);var netType=tokens[4];var addrType=tokens[5];var ipAddr=tokens[6];return new OriginLine$1(username,sessionId,sessionVersion,netType,addrType,ipAddr);}toSdpLine(){return "o=".concat(this.username," ").concat(this.sessionId," ").concat(this.sessionVersion," ").concat(this.netType," ").concat(this.addrType," ").concat(this.ipAddr);}}OriginLine$1.regex=new RegExp("^(".concat(ANY_NON_WS$1,") (").concat(ANY_NON_WS$1,") (").concat(NUM$1,") (").concat(ANY_NON_WS$1,") (").concat(ANY_NON_WS$1,") (").concat(ANY_NON_WS$1,")"));var _a$1$2;class RidLine$1 extends Line$1{constructor(id,direction,params){super();this.id=id;this.direction=direction;this.params=params;}static fromSdpLine(line){if(!RidLine$1.regex.test(line)){return undefined;}var tokens=line.match(RidLine$1.regex);var id=tokens[1];var direction=tokens[2];var params=tokens[3];return new RidLine$1(id,direction,params);}toSdpLine(){var str='';str+="a=rid:".concat(this.id," ").concat(this.direction);if(this.params){str+=" ".concat(this.params);}return str;}}_a$1$2=RidLine$1;RidLine$1.RID_ID="[\\w-]+";RidLine$1.RID_DIRECTION="\\bsend\\b|\\brecv\\b";RidLine$1.regex=new RegExp("^rid:(".concat(_a$1$2.RID_ID,") (").concat(_a$1$2.RID_DIRECTION,")(?:").concat(SP$1,"(").concat(REST$1,"))?"));class RtcpMuxLine$1 extends Line$1{static fromSdpLine(line){if(!RtcpMuxLine$1.regex.test(line)){return undefined;}return new RtcpMuxLine$1();}toSdpLine(){return "a=rtcp-mux";}}RtcpMuxLine$1.regex=/^rtcp-mux$/;class RtcpFbLine$1 extends Line$1{constructor(payloadType,feedback){super();this.payloadType=payloadType;this.feedback=feedback;}static fromSdpLine(line){if(!RtcpFbLine$1.regex.test(line)){return undefined;}var tokens=line.match(RtcpFbLine$1.regex);var payloadType=parseInt(tokens[1],10);var feedback=tokens[2];return new RtcpFbLine$1(payloadType,feedback);}toSdpLine(){return "a=rtcp-fb:".concat(this.payloadType," ").concat(this.feedback);}}RtcpFbLine$1.regex=new RegExp("^rtcp-fb:(".concat(NUM$1,") (").concat(REST$1,")"));var _a$7;class RtpMapLine$1 extends Line$1{constructor(payloadType,encodingName,clockRate,encodingParams){super();this.payloadType=payloadType;this.encodingName=encodingName;this.clockRate=clockRate;this.encodingParams=encodingParams;}static fromSdpLine(line){if(!RtpMapLine$1.regex.test(line)){return undefined;}var tokens=line.match(RtpMapLine$1.regex);var payloadType=parseInt(tokens[1],10);var encodingName=tokens[2];var clockRate=parseInt(tokens[3],10);var encodingParams=tokens[4];return new RtpMapLine$1(payloadType,encodingName,clockRate,encodingParams);}toSdpLine(){var str='';str+="a=rtpmap:".concat(this.payloadType," ").concat(this.encodingName,"/").concat(this.clockRate);if(this.encodingParams){str+="/".concat(this.encodingParams);}return str;}}_a$7=RtpMapLine$1;RtpMapLine$1.NON_SLASH_TOKEN='[^\\s/]+';RtpMapLine$1.regex=new RegExp("^rtpmap:(".concat(NUM$1,") (").concat(_a$7.NON_SLASH_TOKEN,")/(").concat(_a$7.NON_SLASH_TOKEN,")(?:/(").concat(_a$7.NON_SLASH_TOKEN,"))?"));class SctpPortLine$1 extends Line$1{constructor(port){super();this.port=port;}static fromSdpLine(line){if(!SctpPortLine$1.regex.test(line)){return undefined;}var tokens=line.match(SctpPortLine$1.regex);var port=parseInt(tokens[1],10);return new SctpPortLine$1(port);}toSdpLine(){return "a=sctp-port:".concat(this.port);}}SctpPortLine$1.regex=new RegExp("^sctp-port:(".concat(NUM$1,")"));class SessionInformationLine$1 extends Line$1{constructor(info){super();this.info=info;}static fromSdpLine(line){if(!SessionInformationLine$1.regex.test(line)){return undefined;}var tokens=line.match(SessionInformationLine$1.regex);var info=tokens[1];return new SessionInformationLine$1(info);}toSdpLine(){return "i=".concat(this.info);}}SessionInformationLine$1.regex=new RegExp("(".concat(REST$1,")"));class SessionNameLine$1 extends Line$1{constructor(name){super();this.name=name;}static fromSdpLine(line){if(!SessionNameLine$1.regex.test(line)){return undefined;}var tokens=line.match(SessionNameLine$1.regex);var name=tokens[1];return new SessionNameLine$1(name);}toSdpLine(){return "s=".concat(this.name);}}SessionNameLine$1.regex=new RegExp("^(".concat(REST$1,")"));class SetupLine$1 extends Line$1{constructor(setup){super();this.setup=setup;}static fromSdpLine(line){if(!SetupLine$1.regex.test(line)){return undefined;}var tokens=line.match(SetupLine$1.regex);var setup=tokens[1];return new SetupLine$1(setup);}toSdpLine(){return "a=setup:".concat(this.setup);}}SetupLine$1.regex=/^setup:(actpass|active|passive)$/;class SimulcastLayer$1{constructor(id,paused){this.id=id;this.paused=paused;}toString(){return this.paused?"~".concat(this.id):this.id;}}class SimulcastLayerList$1{constructor(){this.layers=[];}addLayer(layer){this.layers.push([layer]);}addLayerWithAlternatives(alternatives){this.layers.push(alternatives);}get length(){return this.layers.length;}get(index){return this.layers[index];}static fromString(str){var layerList=new SimulcastLayerList$1();var tokens=str.split(';');if(tokens.length===1&&!tokens[0].trim()){throw new Error('simulcast stream list empty');}tokens.forEach(token=>{if(!token){throw new Error('simulcast layer list empty');}var ridTokens=token.split(',');var layers=[];ridTokens.forEach(ridToken=>{if(!ridToken||ridToken==='~'){throw new Error('rid empty');}var paused=ridToken[0]==='~';var rid=paused?ridToken.substring(1):ridToken;layers.push(new SimulcastLayer$1(rid,paused));});layerList.addLayerWithAlternatives(layers);});return layerList;}toString(){return this.layers.map(altArray=>altArray.map(v=>v.toString()).join(',')).join(';');}}class SimulcastLine$1 extends Line$1{constructor(sendLayers,recvLayers){super();this.sendLayers=sendLayers;this.recvLayers=recvLayers;}static fromSdpLine(line){if(!SimulcastLine$1.regex.test(line)){return undefined;}var tokens=line.match(SimulcastLine$1.regex);var bidirectional=tokens[3]&&tokens[4];var firstDirection=tokens[1];var layerList1=SimulcastLayerList$1.fromString(tokens[2]);var layerList2=new SimulcastLayerList$1();if(bidirectional){var secondDirection=tokens[3];if(firstDirection===secondDirection){return undefined;}layerList2=SimulcastLayerList$1.fromString(tokens[4]);}var sendLayerList;var recvLayerList;if(firstDirection==='send'){sendLayerList=layerList1;recvLayerList=layerList2;}else {sendLayerList=layerList2;recvLayerList=layerList1;}return new SimulcastLine$1(sendLayerList,recvLayerList);}toSdpLine(){var str='a=simulcast:';if(this.sendLayers.length){str+="send ".concat(this.sendLayers.toString());if(this.recvLayers.length){str+=" ";}}if(this.recvLayers.length){str+="recv ".concat(this.recvLayers.toString());}return str;}}SimulcastLine$1.regex=new RegExp("^simulcast:(send|recv) (".concat(ANY_NON_WS$1,")(?: (send|recv) (").concat(ANY_NON_WS$1,"))?"));class SsrcLine$1 extends Line$1{constructor(ssrcId,attribute){var attributeValue=arguments.length>2&&arguments[2]!==undefined?arguments[2]:undefined;var attributeData=arguments.length>3&&arguments[3]!==undefined?arguments[3]:undefined;super();this.ssrcId=ssrcId;this.attribute=attribute;this.attributeValue=attributeValue;this.attributeData=attributeData;}static fromSdpLine(line){if(!SsrcLine$1.regex.test(line)){return undefined;}var tokens=line.match(SsrcLine$1.regex);var ssrcId=parseInt(tokens[1],10);var attribute=tokens[2];var attributeValue=tokens[3];var attributeData=tokens[4];return new SsrcLine$1(ssrcId,attribute,attributeValue,attributeData);}toSdpLine(){var str="a=ssrc:".concat(this.ssrcId," ").concat(this.attribute);if(this.attributeValue){str+=":".concat(this.attributeValue);}if(this.attributeData){str+=" ".concat(this.attributeData);}return str;}}SsrcLine$1.regex=new RegExp("^ssrc:(".concat(NUM$1,") (").concat(SDP_TOKEN$1,")(?::(").concat(SDP_TOKEN$1,")?(?: (").concat(ANY_NON_WS$1,"))?)?$"));class SsrcGroupLine$1 extends Line$1{constructor(semantics,ssrcs){super();this.semantics=semantics;this.ssrcs=ssrcs;}static fromSdpLine(line){if(!SsrcGroupLine$1.regex.test(line)){return undefined;}var tokens=line.match(SsrcGroupLine$1.regex);var semantics=tokens[1];var ssrcs=tokens[2].split(' ').map(ssrcStr=>parseInt(ssrcStr,10));return new SsrcGroupLine$1(semantics,ssrcs);}toSdpLine(){return "a=ssrc-group:".concat(this.semantics," ").concat(this.ssrcs.join(' '));}}SsrcGroupLine$1.regex=new RegExp("^ssrc-group:(SIM|FID|FEC) ((?:".concat(NUM$1).concat(SP$1,"*)+)"));class TimingLine$1 extends Line$1{constructor(startTime,stopTime){super();this.startTime=startTime;this.stopTime=stopTime;}static fromSdpLine(line){if(!TimingLine$1.regex.test(line)){return undefined;}var tokens=line.match(TimingLine$1.regex);var startTime=parseInt(tokens[1],10);var stopTime=parseInt(tokens[2],10);return new TimingLine$1(startTime,stopTime);}toSdpLine(){return "t=".concat(this.startTime," ").concat(this.stopTime);}}TimingLine$1.regex=new RegExp("^(".concat(NUM$1,") (").concat(NUM$1,")"));class VersionLine$1 extends Line$1{constructor(version){super();this.version=version;}static fromSdpLine(line){if(!VersionLine$1.regex.test(line)){return undefined;}var tokens=line.match(VersionLine$1.regex);var version=parseInt(tokens[1],10);return new VersionLine$1(version);}toSdpLine(){return "v=".concat(this.version);}}VersionLine$1.regex=new RegExp("^(".concat(NUM$1,")$"));class UnknownLine$1 extends Line$1{constructor(value){super();this.value=value;}static fromSdpLine(line){var tokens=line.match(UnknownLine$1.regex);var value=tokens[1];return new UnknownLine$1(value);}toSdpLine(){return "".concat(this.value);}}UnknownLine$1.regex=new RegExp("(".concat(REST$1,")"));class IceInfo$1{constructor(){this.candidates=[];}addLine(line){if(line instanceof IceUfragLine$1){this.ufrag=line;return true;}if(line instanceof IcePwdLine$1){this.pwd=line;return true;}if(line instanceof IceOptionsLine$1){this.options=line;return true;}if(line instanceof CandidateLine$1){this.candidates.push(line);return true;}return false;}toLines(){var lines=[];if(this.ufrag){lines.push(this.ufrag);}if(this.pwd){lines.push(this.pwd);}if(this.options){lines.push(this.options);}this.candidates.forEach(candidate=>lines.push(candidate));return lines;}}class MediaDescription$1{constructor(type,port,protocol){this.iceInfo=new IceInfo$1();this.otherLines=[];this.type=type;this.port=port;this.protocol=protocol;}findOtherLine(ty){return this.otherLines.find(line=>line instanceof ty);}addLine(line){if(line instanceof BundleGroupLine$1){throw new Error("Error: bundle group line not allowed in media description");}if(line instanceof BandwidthLine$1){this.bandwidth=line;return true;}if(line instanceof MidLine$1){this.mid=line.mid;return true;}if(line instanceof FingerprintLine$1){this.fingerprint=line.fingerprint;return true;}if(line instanceof SetupLine$1){this.setup=line.setup;return true;}if(line instanceof ConnectionLine$1){this.connection=line;return true;}if(line instanceof ContentLine$1){this.content=line;return true;}return this.iceInfo.addLine(line);}}class ApplicationMediaDescription$1 extends MediaDescription$1{constructor(mediaLine){super(mediaLine.type,mediaLine.port,mediaLine.protocol);this.fmts=[];this.fmts=mediaLine.formats;}toLines(){var lines=[];lines.push(new MediaLine$1(this.type,this.port,this.protocol,this.fmts));if(this.connection){lines.push(this.connection);}if(this.bandwidth){lines.push(this.bandwidth);}lines.push(...this.iceInfo.toLines());if(this.fingerprint){lines.push(new FingerprintLine$1(this.fingerprint));}if(this.setup){lines.push(new SetupLine$1(this.setup));}if(this.mid){lines.push(new MidLine$1(this.mid));}if(this.content){lines.push(this.content);}if(this.sctpPort){lines.push(new SctpPortLine$1(this.sctpPort));}if(this.maxMessageSize){lines.push(new MaxMessageSizeLine$1(this.maxMessageSize));}lines.push(...this.otherLines);return lines;}addLine(line){if(super.addLine(line)){return true;}if(line instanceof MediaLine$1){throw new Error('Error: tried passing a MediaLine to an existing MediaInfo');}if(line instanceof SctpPortLine$1){this.sctpPort=line.port;return true;}if(line instanceof MaxMessageSizeLine$1){this.maxMessageSize=line.maxMessageSize;return true;}this.otherLines.push(line);return true;}}class CodecInfo$2{constructor(pt){this.fmtParams=new Map();this.feedback=[];this.pt=pt;}addLine(line){if(line instanceof RtpMapLine$1){this.name=line.encodingName;this.clockRate=line.clockRate;this.encodingParams=line.encodingParams;return true;}if(line instanceof FmtpLine$1){this.fmtParams=new Map([...Array.from(this.fmtParams.entries()),...Array.from(line.params.entries())]);if(line.params.has('apt')){var apt=line.params.get('apt');this.primaryCodecPt=parseInt(apt,10);}return true;}if(line instanceof RtcpFbLine$1){this.feedback.push(line.feedback);return true;}return false;}toLines(){var lines=[];if(this.name&&this.clockRate){lines.push(new RtpMapLine$1(this.pt,this.name,this.clockRate,this.encodingParams));}this.feedback.forEach(fb=>{lines.push(new RtcpFbLine$1(this.pt,fb));});if(this.fmtParams.size>0){lines.push(new FmtpLine$1(this.pt,this.fmtParams));}return lines;}}class AvMediaDescription$1 extends MediaDescription$1{constructor(mediaLine){super(mediaLine.type,mediaLine.port,mediaLine.protocol);this.pts=[];this.extMaps=new Map();this.rids=[];this.codecs=new Map();this.rtcpMux=false;this.ssrcs=[];this.ssrcGroups=[];this.pts=mediaLine.formats.map(fmt=>{return parseInt(fmt,10);});this.pts.forEach(pt=>this.codecs.set(pt,new CodecInfo$2(pt)));}toLines(){var lines=[];lines.push(new MediaLine$1(this.type,this.port,this.protocol,this.pts.map(pt=>"".concat(pt))));if(this.connection){lines.push(this.connection);}if(this.bandwidth){lines.push(this.bandwidth);}lines.push(...this.iceInfo.toLines());if(this.fingerprint){lines.push(new FingerprintLine$1(this.fingerprint));}if(this.setup){lines.push(new SetupLine$1(this.setup));}if(this.mid){lines.push(new MidLine$1(this.mid));}if(this.rtcpMux){lines.push(new RtcpMuxLine$1());}if(this.content){lines.push(this.content);}this.extMaps.forEach(extMap=>lines.push(extMap));this.rids.forEach(rid=>lines.push(rid));if(this.simulcast){lines.push(this.simulcast);}if(this.direction){lines.push(new DirectionLine$1(this.direction));}this.codecs.forEach(codec=>lines.push(...codec.toLines()));lines.push(...this.ssrcs);lines.push(...this.ssrcGroups);lines.push(...this.otherLines);return lines;}addLine(line){if(super.addLine(line)){return true;}if(line instanceof MediaLine$1){throw new Error('Error: tried passing a MediaLine to an existing MediaInfo');}if(line instanceof DirectionLine$1){this.direction=line.direction;return true;}if(line instanceof ExtMapLine$1){if(this.extMaps.has(line.id)){throw new Error("Tried to extension with duplicate ID: an extension already exists with ID ".concat(line.id));}this.extMaps.set(line.id,line);return true;}if(line instanceof RidLine$1){this.rids.push(line);return true;}if(line instanceof RtcpMuxLine$1){this.rtcpMux=true;return true;}if(line instanceof SimulcastLine$1){this.simulcast=line;return true;}if(line instanceof RtpMapLine$1||line instanceof FmtpLine$1||line instanceof RtcpFbLine$1){var codec=this.codecs.get(line.payloadType);if(!codec){throw new Error("Error: got line for unknown codec: ".concat(line.toSdpLine()));}codec.addLine(line);return true;}if(line instanceof SsrcLine$1){this.ssrcs.push(line);return true;}if(line instanceof SsrcGroupLine$1){this.ssrcGroups.push(line);return true;}this.otherLines.push(line);return true;}getCodecByPt(pt){return this.codecs.get(pt);}removePt(pt){var associatedPts=[...this.codecs.values()].filter(ci=>ci.primaryCodecPt===pt).map(ci=>ci.pt);var allPtsToRemove=[pt,...associatedPts];allPtsToRemove.forEach(ptToRemove=>{this.codecs.delete(ptToRemove);});this.pts=this.pts.filter(existingPt=>allPtsToRemove.indexOf(existingPt)===-1);}addExtension(_ref){var{uri,direction,attributes,id}=_ref;var getFirstFreeId=()=>{var freeId=1;for(;;){if(!this.extMaps.has(freeId)){break;}freeId+=1;}return freeId;};var extId=id||getFirstFreeId();if(this.extMaps.has(extId)){throw new Error("Extension with ID ".concat(id," already exists"));}if(extId===0){throw new Error("Extension ID 0 is reserved");}this.extMaps.set(extId,new ExtMapLine$1(extId,uri,direction,attributes));}}class SessionDescription$1{constructor(){this.groups=[];this.otherLines=[];}addLine(line){if(line instanceof VersionLine$1){this.version=line;return true;}if(line instanceof OriginLine$1){this.origin=line;return true;}if(line instanceof SessionNameLine$1){this.sessionName=line;return true;}if(line instanceof SessionInformationLine$1){this.information=line;return true;}if(line instanceof TimingLine$1){this.timing=line;return true;}if(line instanceof ConnectionLine$1){this.connection=line;return true;}if(line instanceof BandwidthLine$1){this.bandwidth=line;return true;}if(line instanceof BundleGroupLine$1){this.groups.push(line);return true;}this.otherLines.push(line);return true;}toLines(){var lines=[];if(this.version){lines.push(this.version);}if(this.origin){lines.push(this.origin);}if(this.sessionName){lines.push(this.sessionName);}if(this.information){lines.push(this.information);}if(this.connection){lines.push(this.connection);}if(this.bandwidth){lines.push(this.bandwidth);}if(this.timing){lines.push(this.timing);}if(this.groups){lines.push(...this.groups);}lines.push(...this.otherLines);return lines;}}class Sdp$1{constructor(){this.session=new SessionDescription$1();this.media=[];}get avMedia(){return this.media.filter(mi=>mi instanceof AvMediaDescription$1);}toString(){var lines=[];lines.push(...this.session.toLines());this.media.forEach(m=>lines.push(...m.toLines()));return "".concat(lines.map(l=>l.toSdpLine()).join('\r\n'),"\r\n");}}class Grammar$1{constructor(){this.parsers=new Map();}addParser(lineType,parser){var parsers=this.parsers.get(lineType)||[];parsers.push(parser);this.parsers.set(lineType,parsers);}getParsers(lineType){return this.parsers.get(lineType)||[];}}class SdpGrammar$1 extends Grammar$1{constructor(){super();this.addParser('v',VersionLine$1.fromSdpLine);this.addParser('o',OriginLine$1.fromSdpLine);this.addParser('c',ConnectionLine$1.fromSdpLine);this.addParser('i',SessionInformationLine$1.fromSdpLine);this.addParser('m',MediaLine$1.fromSdpLine);this.addParser('s',SessionNameLine$1.fromSdpLine);this.addParser('t',TimingLine$1.fromSdpLine);this.addParser('b',BandwidthLine$1.fromSdpLine);this.addParser('a',RtpMapLine$1.fromSdpLine);this.addParser('a',RtcpFbLine$1.fromSdpLine);this.addParser('a',FmtpLine$1.fromSdpLine);this.addParser('a',DirectionLine$1.fromSdpLine);this.addParser('a',ExtMapLine$1.fromSdpLine);this.addParser('a',MidLine$1.fromSdpLine);this.addParser('a',IceUfragLine$1.fromSdpLine);this.addParser('a',IcePwdLine$1.fromSdpLine);this.addParser('a',IceOptionsLine$1.fromSdpLine);this.addParser('a',FingerprintLine$1.fromSdpLine);this.addParser('a',SetupLine$1.fromSdpLine);this.addParser('a',SctpPortLine$1.fromSdpLine);this.addParser('a',MaxMessageSizeLine$1.fromSdpLine);this.addParser('a',RtcpMuxLine$1.fromSdpLine);this.addParser('a',BundleGroupLine$1.fromSdpLine);this.addParser('a',ContentLine$1.fromSdpLine);this.addParser('a',RidLine$1.fromSdpLine);this.addParser('a',CandidateLine$1.fromSdpLine);this.addParser('a',SimulcastLine$1.fromSdpLine);this.addParser('a',SsrcLine$1.fromSdpLine);this.addParser('a',SsrcGroupLine$1.fromSdpLine);}}var DefaultSdpGrammar$1=new SdpGrammar$1();function isValidLine$1(line){return line.length>2;}function parseToModel$1(lines){var sdp=new Sdp$1();var currBlock=sdp.session;lines.forEach(l=>{if(l instanceof MediaLine$1){var mediaInfo;if(l.type==='audio'||l.type==='video'){mediaInfo=new AvMediaDescription$1(l);}else if(l.type==='application'){mediaInfo=new ApplicationMediaDescription$1(l);}else {throw new Error("Unhandled media type: ".concat(l.type));}sdp.media.push(mediaInfo);currBlock=mediaInfo;}else {currBlock.addLine(l);}});return sdp;}function parseToLines$1(sdp,grammar){var lines=[];sdp.split(/(\r\n|\r|\n)/).filter(isValidLine$1).forEach(l=>{var lineType=l[0];var lineValue=l.slice(2);var parsers=grammar.getParsers(lineType);for(var parser of parsers){var _result=parser(lineValue);if(_result){lines.push(_result);return;}}var result=UnknownLine$1.fromSdpLine(l);lines.push(result);});return lines;}function parse$1(sdp){var grammar=arguments.length>1&&arguments[1]!==undefined?arguments[1]:DefaultSdpGrammar$1;var lines=parseToLines$1(sdp,grammar);var parsed=parseToModel$1(lines);return parsed;}function disableRtcpFbValue(sdpOrAv,rtcpFbValue){var mediaDescriptions=sdpOrAv instanceof Sdp$1?sdpOrAv.avMedia:[sdpOrAv];mediaDescriptions.forEach(media=>{media.codecs.forEach(codec=>{codec.feedback=codec.feedback.filter(fb=>fb!==rtcpFbValue);});});}function disableTwcc(sdpOrAv){disableRtcpFbValue(sdpOrAv,'transport-cc');}function retainCodecs(av,predicate){var filtered=false;av.codecs.forEach(codecInfo=>{if(!predicate(codecInfo)){av.removePt(codecInfo.pt);filtered=true;}});return filtered;}function retainCodecsByCodecName(av,allowedCodecNames){var allowedLowerCase=allowedCodecNames.map(s=>s.toLowerCase());return retainCodecs(av,codecInfo=>!!codecInfo.name&&allowedLowerCase.includes(codecInfo.name.toLowerCase()));}function retainCandidates(sdpOrMedia,predicate){var mediaDescriptions=sdpOrMedia instanceof Sdp$1?sdpOrMedia.media:[sdpOrMedia];var filtered=false;mediaDescriptions.forEach(media=>{media.iceInfo.candidates=media.iceInfo.candidates.filter(candidate=>{if(predicate(candidate)){return true;}filtered=true;return false;});});return filtered;}function retainCandidatesByTransportType(sdpOrMedia,allowedTransportTypes){var allowedLowerCase=allowedTransportTypes.map(s=>s.toLowerCase());return retainCandidates(sdpOrMedia,candidate=>allowedLowerCase.includes(candidate.transport.toLowerCase()));}function hasCodec(codecName,mLine){return [...mLine.codecs.values()].some(ci=>{var _a;return ((_a=ci.name)===null||_a===void 0?void 0:_a.toLowerCase())===codecName.toLowerCase();});}var commonjsGlobal=typeof globalThis!=='undefined'?globalThis:typeof window!=='undefined'?window:typeof global$1!=='undefined'?global$1:typeof self!=='undefined'?self:{};function getDefaultExportFromCjs(x){return x&&x.__esModule&&Object.prototype.hasOwnProperty.call(x,'default')?x['default']:x;}var es5={exports:{}};(function(module,exports){!function(e,t){module.exports=t();}(commonjsGlobal,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports;}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n});},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0});},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e){r.d(n,i,function(t){return e[t];}.bind(null,i));}return n;},r.n=function(e){var t=e&&e.__esModule?function(){return e.default;}:function(){return e;};return r.d(t,"a",t),t;},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t);},r.p="",r(r.s=90);}({17:function _(e,t,r){t.__esModule=!0,t.default=void 0;var n=r(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||"";},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||"";},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r;},e.getWindowsVersionName=function(e){switch(e){case"NT":return "NT";case"XP":return "XP";case"NT 5.0":return "2000";case"NT 5.1":return "XP";case"NT 5.2":return "2003";case"NT 6.0":return "Vista";case"NT 6.1":return "7";case"NT 6.2":return "8";case"NT 6.3":return "8.1";case"NT 10.0":return "10";default:return;}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map(function(e){return parseInt(e,10)||0;});if(t.push(0),10===t[0])switch(t[1]){case 5:return "Leopard";case 6:return "Snow Leopard";case 7:return "Lion";case 8:return "Mountain Lion";case 9:return "Mavericks";case 10:return "Yosemite";case 11:return "El Capitan";case 12:return "Sierra";case 13:return "High Sierra";case 14:return "Mojave";case 15:return "Catalina";default:return;}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map(function(e){return parseInt(e,10)||0;});if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0;},e.getVersionPrecision=function(e){return e.split(".").length;},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),s=e.getVersionPrecision(r),a=Math.max(i,s),o=0,u=e.map([t,r],function(t){var r=a-e.getVersionPrecision(t),n=t+new Array(r+1).join(".0");return e.map(n.split("."),function(e){return new Array(20-e.length).join("0")+e;}).reverse();});for(n&&(o=a-Math.min(i,s)),a-=1;a>=o;){if(u[0][a]>u[1][a])return 1;if(u[0][a]===u[1][a]){if(a===o)return 0;a-=1;}else if(u[0][a]<u[1][a])return -1;}},e.map=function(e,t){var r,n=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1){n.push(t(e[r]));}return n;},e.find=function(e,t){var r,n;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(r=0,n=e.length;r<n;r+=1){var i=e[r];if(t(i,r))return i;}},e.assign=function(e){for(var t,r,n=e,i=arguments.length,s=new Array(i>1?i-1:0),a=1;a<i;a++){s[a-1]=arguments[a];}if(Object.assign)return Object.assign.apply(Object,[e].concat(s));var o=function o(){var e=s[t];"object"==typeof e&&null!==e&&Object.keys(e).forEach(function(t){n[t]=e[t];});};for(t=0,r=s.length;t<r;t+=1){o();}return e;},e.getBrowserAlias=function(e){return n.BROWSER_ALIASES_MAP[e];},e.getBrowserTypeByAlias=function(e){return n.BROWSER_MAP[e]||"";},e;}();t.default=i,e.exports=t.default;},18:function _(e,t,r){t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0;t.BROWSER_ALIASES_MAP={"Amazon Silk":"amazon_silk","Android Browser":"android",Bada:"bada",BlackBerry:"blackberry",Chrome:"chrome",Chromium:"chromium",Electron:"electron",Epiphany:"epiphany",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot","Internet Explorer":"ie","K-Meleon":"k_meleon",Maxthon:"maxthon","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver",Opera:"opera","Opera Coast":"opera_coast",PhantomJS:"phantomjs",Puffin:"puffin",QupZilla:"qupzilla",QQ:"qq",QQLite:"qqlite",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SeaMonkey:"seamonkey",Sleipnir:"sleipnir",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat","Yandex Browser":"yandex",Roku:"roku"};t.BROWSER_MAP={amazon_silk:"Amazon Silk",android:"Android Browser",bada:"Bada",blackberry:"BlackBerry",chrome:"Chrome",chromium:"Chromium",electron:"Electron",epiphany:"Epiphany",firefox:"Firefox",focus:"Focus",generic:"Generic",googlebot:"Googlebot",google_search:"Google Search",ie:"Internet Explorer",k_meleon:"K-Meleon",maxthon:"Maxthon",edge:"Microsoft Edge",mz:"MZ Browser",naver:"NAVER Whale Browser",opera:"Opera",opera_coast:"Opera Coast",phantomjs:"PhantomJS",puffin:"Puffin",qupzilla:"QupZilla",qq:"QQ Browser",qqlite:"QQ Browser Lite",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",sleipnir:"Sleipnir",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yandex:"Yandex Browser"};t.PLATFORMS_MAP={tablet:"tablet",mobile:"mobile",desktop:"desktop",tv:"tv"};t.OS_MAP={WindowsPhone:"Windows Phone",Windows:"Windows",MacOS:"macOS",iOS:"iOS",Android:"Android",WebOS:"WebOS",BlackBerry:"BlackBerry",Bada:"Bada",Tizen:"Tizen",Linux:"Linux",ChromeOS:"Chrome OS",PlayStation4:"PlayStation 4",Roku:"Roku"};t.ENGINE_MAP={EdgeHTML:"EdgeHTML",Blink:"Blink",Trident:"Trident",Presto:"Presto",Gecko:"Gecko",WebKit:"WebKit"};},90:function _(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(91))&&n.__esModule?n:{default:n},s=r(18);function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}var o=function(){function e(){}var t,r,n;return e.getParser=function(e,t){if(void 0===t&&(t=!1),"string"!=typeof e)throw new Error("UserAgent should be a string");return new i.default(e,t);},e.parse=function(e){return new i.default(e).getResult();},t=e,n=[{key:"BROWSER_MAP",get:function get(){return s.BROWSER_MAP;}},{key:"ENGINE_MAP",get:function get(){return s.ENGINE_MAP;}},{key:"OS_MAP",get:function get(){return s.OS_MAP;}},{key:"PLATFORMS_MAP",get:function get(){return s.PLATFORMS_MAP;}}],(r=null)&&a(t.prototype,r),n&&a(t,n),e;}();t.default=o,e.exports=t.default;},91:function _(e,t,r){t.__esModule=!0,t.default=void 0;var n=u(r(92)),i=u(r(93)),s=u(r(94)),a=u(r(95)),o=u(r(17));function u(e){return e&&e.__esModule?e:{default:e};}var d=function(){function e(e,t){if(void 0===t&&(t=!1),null==e||""===e)throw new Error("UserAgent parameter can't be empty");this._ua=e,this.parsedResult={},!0!==t&&this.parse();}var t=e.prototype;return t.getUA=function(){return this._ua;},t.test=function(e){return e.test(this._ua);},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=o.default.find(n.default,function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t);});throw new Error("Browser's test function is not valid");});return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser;},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser();},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||"";},t.getBrowserVersion=function(){return this.getBrowser().version;},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS();},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=o.default.find(i.default,function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t);});throw new Error("Browser's test function is not valid");});return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os;},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||"":t||"";},t.getOSVersion=function(){return this.getOS().version;},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform();},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||"":t||"";},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=o.default.find(s.default,function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t);});throw new Error("Browser's test function is not valid");});return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform;},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine();},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||"";},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=o.default.find(a.default,function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t);});throw new Error("Browser's test function is not valid");});return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine;},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this;},t.getResult=function(){return o.default.assign({},this.parsedResult);},t.satisfies=function(e){var t=this,r={},n=0,i={},s=0;if(Object.keys(e).forEach(function(t){var a=e[t];"string"==typeof a?(i[t]=a,s+=1):"object"==typeof a&&(r[t]=a,n+=1);}),n>0){var a=Object.keys(r),u=o.default.find(a,function(e){return t.isOS(e);});if(u){var d=this.satisfies(r[u]);if(void 0!==d)return d;}var c=o.default.find(a,function(e){return t.isPlatform(e);});if(c){var f=this.satisfies(r[c]);if(void 0!==f)return f;}}if(s>0){var l=Object.keys(i),h=o.default.find(l,function(e){return t.isBrowser(e,!0);});if(void 0!==h)return this.compareVersion(i[h]);}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=o.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r;},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return ">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(n=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(o.default.compareVersions(i,r,n))>-1;},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase();},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase();},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase();},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e);},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some(function(e){return t.is(e);});},e;}();t.default=d,e.exports=t.default;},92:function _(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n};var s=/version\/(\d+(\.?_?\d+)+)/i,a=[{test:[/googlebot/i],describe:function describe(e){var t={name:"Googlebot"},r=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/opera/i],describe:function describe(e){var t={name:"Opera"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/opr\/|opios/i],describe:function describe(e){var t={name:"Opera"},r=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/SamsungBrowser/i],describe:function describe(e){var t={name:"Samsung Internet for Android"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/Whale/i],describe:function describe(e){var t={name:"NAVER Whale Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/MZBrowser/i],describe:function describe(e){var t={name:"MZ Browser"},r=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/focus/i],describe:function describe(e){var t={name:"Focus"},r=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/swing/i],describe:function describe(e){var t={name:"Swing"},r=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/coast/i],describe:function describe(e){var t={name:"Opera Coast"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function describe(e){var t={name:"Opera Touch"},r=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/yabrowser/i],describe:function describe(e){var t={name:"Yandex Browser"},r=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/ucbrowser/i],describe:function describe(e){var t={name:"UC Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/Maxthon|mxios/i],describe:function describe(e){var t={name:"Maxthon"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/epiphany/i],describe:function describe(e){var t={name:"Epiphany"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/puffin/i],describe:function describe(e){var t={name:"Puffin"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/sleipnir/i],describe:function describe(e){var t={name:"Sleipnir"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/k-meleon/i],describe:function describe(e){var t={name:"K-Meleon"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/micromessenger/i],describe:function describe(e){var t={name:"WeChat"},r=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/qqbrowser/i],describe:function describe(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/msie|trident/i],describe:function describe(e){var t={name:"Internet Explorer"},r=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/\sedg\//i],describe:function describe(e){var t={name:"Microsoft Edge"},r=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/edg([ea]|ios)/i],describe:function describe(e){var t={name:"Microsoft Edge"},r=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/vivaldi/i],describe:function describe(e){var t={name:"Vivaldi"},r=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/seamonkey/i],describe:function describe(e){var t={name:"SeaMonkey"},r=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/sailfish/i],describe:function describe(e){var t={name:"Sailfish"},r=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t;}},{test:[/silk/i],describe:function describe(e){var t={name:"Amazon Silk"},r=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/phantom/i],describe:function describe(e){var t={name:"PhantomJS"},r=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/slimerjs/i],describe:function describe(e){var t={name:"SlimerJS"},r=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function describe(e){var t={name:"BlackBerry"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/(web|hpw)[o0]s/i],describe:function describe(e){var t={name:"WebOS Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/bada/i],describe:function describe(e){var t={name:"Bada"},r=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/tizen/i],describe:function describe(e){var t={name:"Tizen"},r=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/qupzilla/i],describe:function describe(e){var t={name:"QupZilla"},r=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/firefox|iceweasel|fxios/i],describe:function describe(e){var t={name:"Firefox"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/electron/i],describe:function describe(e){var t={name:"Electron"},r=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/MiuiBrowser/i],describe:function describe(e){var t={name:"Miui"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/chromium/i],describe:function describe(e){var t={name:"Chromium"},r=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/chrome|crios|crmo/i],describe:function describe(e){var t={name:"Chrome"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/GSA/i],describe:function describe(e){var t={name:"Google Search"},r=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:function test(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r;},describe:function describe(e){var t={name:"Android Browser"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/playstation 4/i],describe:function describe(e){var t={name:"PlayStation 4"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/safari|applewebkit/i],describe:function describe(e){var t={name:"Safari"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/.*/i],describe:function describe(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return {name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)};}}];t.default=a,e.exports=t.default;},93:function _(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/Roku\/DVP/],describe:function describe(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return {name:s.OS_MAP.Roku,version:t};}},{test:[/windows phone/i],describe:function describe(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.WindowsPhone,version:t};}},{test:[/windows /i],describe:function describe(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=i.default.getWindowsVersionName(t);return {name:s.OS_MAP.Windows,version:t,versionName:r};}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function describe(e){var t={name:s.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t;}},{test:[/macintosh/i],describe:function describe(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=i.default.getMacOSVersionName(t),n={name:s.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n;}},{test:[/(ipod|iphone|ipad)/i],describe:function describe(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return {name:s.OS_MAP.iOS,version:t};}},{test:function test(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r;},describe:function describe(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:s.OS_MAP.Android,version:t};return r&&(n.versionName=r),n;}},{test:[/(web|hpw)[o0]s/i],describe:function describe(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:s.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r;}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function describe(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return {name:s.OS_MAP.BlackBerry,version:t};}},{test:[/bada/i],describe:function describe(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.Bada,version:t};}},{test:[/tizen/i],describe:function describe(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.Tizen,version:t};}},{test:[/linux/i],describe:function describe(){return {name:s.OS_MAP.Linux};}},{test:[/CrOS/],describe:function describe(){return {name:s.OS_MAP.ChromeOS};}},{test:[/PlayStation 4/],describe:function describe(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.PlayStation4,version:t};}}];t.default=a,e.exports=t.default;},94:function _(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/googlebot/i],describe:function describe(){return {type:"bot",vendor:"Google"};}},{test:[/huawei/i],describe:function describe(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:s.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r;}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function describe(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Nexus"};}},{test:[/ipad/i],describe:function describe(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"};}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function describe(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"};}},{test:[/kftt build/i],describe:function describe(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"};}},{test:[/silk/i],describe:function describe(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Amazon"};}},{test:[/tablet(?! pc)/i],describe:function describe(){return {type:s.PLATFORMS_MAP.tablet};}},{test:function test(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r;},describe:function describe(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return {type:s.PLATFORMS_MAP.mobile,vendor:"Apple",model:t};}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function describe(){return {type:s.PLATFORMS_MAP.mobile,vendor:"Nexus"};}},{test:[/[^-]mobi/i],describe:function describe(){return {type:s.PLATFORMS_MAP.mobile};}},{test:function test(e){return "blackberry"===e.getBrowserName(!0);},describe:function describe(){return {type:s.PLATFORMS_MAP.mobile,vendor:"BlackBerry"};}},{test:function test(e){return "bada"===e.getBrowserName(!0);},describe:function describe(){return {type:s.PLATFORMS_MAP.mobile};}},{test:function test(e){return "windows phone"===e.getBrowserName();},describe:function describe(){return {type:s.PLATFORMS_MAP.mobile,vendor:"Microsoft"};}},{test:function test(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return "android"===e.getOSName(!0)&&t>=3;},describe:function describe(){return {type:s.PLATFORMS_MAP.tablet};}},{test:function test(e){return "android"===e.getOSName(!0);},describe:function describe(){return {type:s.PLATFORMS_MAP.mobile};}},{test:function test(e){return "macos"===e.getOSName(!0);},describe:function describe(){return {type:s.PLATFORMS_MAP.desktop,vendor:"Apple"};}},{test:function test(e){return "windows"===e.getOSName(!0);},describe:function describe(){return {type:s.PLATFORMS_MAP.desktop};}},{test:function test(e){return "linux"===e.getOSName(!0);},describe:function describe(){return {type:s.PLATFORMS_MAP.desktop};}},{test:function test(e){return "playstation 4"===e.getOSName(!0);},describe:function describe(){return {type:s.PLATFORMS_MAP.tv};}},{test:function test(e){return "roku"===e.getOSName(!0);},describe:function describe(){return {type:s.PLATFORMS_MAP.tv};}}];t.default=a,e.exports=t.default;},95:function _(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:function test(e){return "microsoft edge"===e.getBrowserName(!0);},describe:function describe(e){if(/\sedg\//i.test(e))return {name:s.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return {name:s.ENGINE_MAP.EdgeHTML,version:t};}},{test:[/trident/i],describe:function describe(e){var t={name:s.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:function test(e){return e.test(/presto/i);},describe:function describe(e){var t={name:s.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:function test(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r;},describe:function describe(e){var t={name:s.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/(apple)?webkit\/537\.36/i],describe:function describe(){return {name:s.ENGINE_MAP.Blink};}},{test:[/(apple)?webkit/i],describe:function describe(e){var t={name:s.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}}];t.default=a,e.exports=t.default;}});});})(es5);var Bowser=/*@__PURE__*/getDefaultExportFromCjs(es5.exports);var BrowserName;(function(BrowserName){BrowserName["CHROME"]="Chrome";BrowserName["FIREFOX"]="Firefox";BrowserName["EDGE"]="Microsoft Edge";BrowserName["SAFARI"]="Safari";})(BrowserName||(BrowserName={}));var OSName;(function(OSName){OSName["WINDOWS"]="Windows";OSName["MAC"]="macOS";OSName["LINUX"]="Linux";})(OSName||(OSName={}));class BrowserInfo{static getBrowserDetails(){return this.browser.getBrowser();}static getOSDetails(){return this.browser.getOS();}static getPlatformDetails(){return this.browser.getPlatform();}static getEngineDetails(){return this.browser.getEngine();}static isChrome(){return this.browser.getBrowserName()===BrowserName.CHROME;}static isFirefox(){return this.browser.getBrowserName()===BrowserName.FIREFOX;}static isEdge(){return this.browser.getBrowserName()===BrowserName.EDGE;}static isSafari(){return this.browser.getBrowserName()===BrowserName.SAFARI;}static isWindows(){return this.browser.getOSName()===OSName.WINDOWS;}static isMac(){return this.browser.getOSName()===OSName.MAC;}static isLinux(){return this.browser.getOSName()===OSName.LINUX;}static isVersionGreaterThan(version){var browserName=this.browser.getBrowserName();var checkTree={[browserName]:">".concat(version)};return this.browser.satisfies(checkTree);}static isVersionGreaterThanOrEqualTo(version){var browserName=this.browser.getBrowserName();var checkTree={[browserName]:">=".concat(version)};return this.browser.satisfies(checkTree);}static isVersionLessThan(version){var browserName=this.browser.getBrowserName();var checkTree={[browserName]:"<".concat(version)};return this.browser.satisfies(checkTree);}static isVersionLessThanOrEqualTo(version){var browserName=this.browser.getBrowserName();var checkTree={[browserName]:"<=".concat(version)};return this.browser.satisfies(checkTree);}static isSubVersionOf(version){var browserName=this.browser.getBrowserName();var checkTree={[browserName]:"~".concat(version)};return this.browser.satisfies(checkTree);}}BrowserInfo.browser=Bowser.getParser(window.navigator.userAgent);var CapabilityState;(function(CapabilityState){CapabilityState["NOT_CAPABLE"]="not capable";CapabilityState["CAPABLE"]="capable";CapabilityState["UNKNOWN"]="unknown";})(CapabilityState||(CapabilityState={}));var simulcastMaxFrameSizes={0:'240',1:'2304',2:'8160'};class JmpLine extends Line$1{static fromSdpLine(line){if(!JmpLine.regex.test(line)){return undefined;}var tokens=line.match(JmpLine.regex);var versions=tokens[1].split(',').filter(v=>v.length);return new JmpLine(versions);}constructor(versions){super();this.versions=versions;}toSdpLine(){return "a=jmp:".concat(this.versions.join(','));}}JmpLine.regex=/^jmp:((?:v\d+,?)+)/;class JmpStreamIdModeLine extends Line$1{constructor(streamIdMode){super();this.streamIdMode=streamIdMode;}static fromSdpLine(line){if(!JmpStreamIdModeLine.regex.test(line)){return undefined;}var tokens=line.match(JmpStreamIdModeLine.regex);var mode=tokens[1];return new JmpStreamIdModeLine(mode);}toSdpLine(){return "a=jmp-stream-id-mode:".concat(this.streamIdMode);}}JmpStreamIdModeLine.regex=/^jmp-stream-id-mode:(MID-RID|SSRC)$/;class JmpSourceLine extends Line$1{constructor(source,csi){super();this.source=source;this.csi=csi;}static fromSdpLine(line){if(!JmpSourceLine.regex.test(line)){return undefined;}var tokens=line.match(JmpSourceLine.regex);var source=tokens[1];var csi=tokens[2];return new JmpSourceLine(source,csi);}toSdpLine(){var line="a=jmp-source:".concat(this.source);if(this.csi){line+=" csi=".concat(this.csi);}return line;}}JmpSourceLine.regex=new RegExp("^jmp-source:(".concat(ANY_NON_WS$1,") (?:csi=(").concat(ANY_NON_WS$1,"))"));DefaultSdpGrammar$1.addParser('a',JmpLine.fromSdpLine);DefaultSdpGrammar$1.addParser('a',JmpSourceLine.fromSdpLine);DefaultSdpGrammar$1.addParser('a',JmpStreamIdModeLine.fromSdpLine);function deepCopy(source){return Array.isArray(source)?source.map(item=>deepCopy(item)):source instanceof Map?new Map(source):source instanceof Date?new Date(source.getTime()):source&&typeof source==='object'?Object.getOwnPropertyNames(source).reduce((o,prop)=>{Object.defineProperty(o,prop,Object.getOwnPropertyDescriptor(source,prop));o[prop]=deepCopy(source[prop]);return o;},Object.create(Object.getPrototypeOf(source))):source;}var ipv4Regex=/(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.)(\d{1,3}\b)/g;var ipv6Regex=/(\b[\da-fA-F]{1,4}(:[\da-fA-F]{1,4}){7}\b)/g;function matchMediaDescriptionsInAnswer(parsedOffer,parsedAnswer){parsedAnswer.session.groups=parsedOffer.session.groups;parsedAnswer.media=parsedOffer.media.map(offerMediaDescription=>{if(!offerMediaDescription.mid){logErrorAndThrow(exports.WcmeErrorType.OFFER_ANSWER_MISMATCH,"Named media groups can only be set for audio.");}var answerMediaDescription=parsedAnswer.media.find(m=>m.mid===offerMediaDescription.mid);if(answerMediaDescription){return answerMediaDescription;}if(!(offerMediaDescription instanceof AvMediaDescription$1)){logErrorAndThrow(exports.WcmeErrorType.OFFER_ANSWER_MISMATCH,"Answer is missing a non-AV media description for MID ".concat(offerMediaDescription.mid,"."));}var startingMediaDescription=parsedAnswer.avMedia.find(m=>m.type===offerMediaDescription.type);if(!startingMediaDescription){logErrorAndThrow(exports.WcmeErrorType.OFFER_ANSWER_MISMATCH,"Answer has no media description of type ".concat(offerMediaDescription.type,", can't generate synthetic answer media description for MID ").concat(offerMediaDescription.mid,"."));}var fakeCorrespondingDescription=deepCopy(startingMediaDescription);fakeCorrespondingDescription.mid=offerMediaDescription.mid;fakeCorrespondingDescription.simulcast=undefined;fakeCorrespondingDescription.bandwidth=undefined;if(offerMediaDescription.direction==='sendrecv'||offerMediaDescription.direction==='sendonly'){fakeCorrespondingDescription.direction='recvonly';}if(offerMediaDescription.direction==='recvonly'){fakeCorrespondingDescription.direction='sendonly';}return fakeCorrespondingDescription;});}function setupBundle(parsedSdp,bundlePolicy,midMap){if(bundlePolicy==='max-compat'){var audioMainMids=midMap.get(exports.MediaType.AudioMain);var videoMainMids=midMap.get(exports.MediaType.VideoMain);var audioContentMids=midMap.get(exports.MediaType.AudioSlides);var videoContentMids=midMap.get(exports.MediaType.VideoSlides);parsedSdp.session.groups.splice(0,parsedSdp.session.groups.length);if(audioMainMids){parsedSdp.session.groups.push(new BundleGroupLine$1(audioMainMids));}if(videoMainMids){parsedSdp.session.groups.push(new BundleGroupLine$1(videoMainMids));}if(audioContentMids){parsedSdp.session.groups.push(new BundleGroupLine$1(audioContentMids));}if(videoContentMids){parsedSdp.session.groups.push(new BundleGroupLine$1(videoContentMids));}}}function filterRecvOnlyMediaDescriptions(parsedSdp){var filteredMids=[];parsedSdp.media=parsedSdp.media.filter(media=>{if(media instanceof ApplicationMediaDescription$1||media instanceof AvMediaDescription$1&&media.direction!=='recvonly'){filteredMids.push(media.mid);return true;}return false;});parsedSdp.session.groups.forEach(g=>{g.mids=g.mids.filter(m=>filteredMids.includes(m));});}function injectContentType(mediaDescription,mediaContent){if(mediaContent===exports.MediaContent.Slides){mediaDescription.addLine(new ContentLine$1(['slides']));}}function injectJmpAttributes(mediaDescription,csi,streamSignalingMode){if(!mediaDescription.otherLines.find(line=>line instanceof JmpLine)){mediaDescription.addLine(new JmpLine(['v1']));}if(!mediaDescription.otherLines.find(line=>line instanceof JmpSourceLine)){mediaDescription.addLine(new JmpSourceLine(mediaDescription.mid,csi.toString()));}if(!mediaDescription.otherLines.find(line=>line instanceof JmpStreamIdModeLine)){mediaDescription.addLine(new JmpStreamIdModeLine(streamSignalingMode));}}function injectDummyCandidates(mediaDescription){mediaDescription.iceInfo.candidates=[];mediaDescription.addLine(new CandidateLine$1('dummy1',1,'udp',3,'0.0.0.0',9,'host'));mediaDescription.addLine(new CandidateLine$1('dummy2',1,'tcp',2,'0.0.0.0',9,'host'));mediaDescription.addLine(new CandidateLine$1('dummy3',1,'udp',1,'0.0.0.0',9,'relay'));}function maskIp(sdp){var maskedSdp=sdp.replace(ipv4Regex,(match,firstOctets)=>{return "".concat(firstOctets,"0");});maskedSdp=maskedSdp.replace(ipv6Regex,match=>{return match.replace(/:[\da-fA-F]{1,4}$/,':0');});return maskedSdp;}function removeMidRidExtensions(mediaDescription){mediaDescription.extMaps.forEach((extMapLine,extId,extMap)=>{if(/^urn:ietf:params:rtp-hdrext:sdes:(?:mid|rtp-stream-id|repaired-rtp-stream-id)$/.test(extMapLine.uri)){extMap.delete(extId);}});}function addVlaExtension(mediaDescription){var vlaExtensionUri='http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00';if(![...mediaDescription.extMaps.values()].some(extMapLine=>extMapLine.uri===vlaExtensionUri)){mediaDescription.addExtension({uri:vlaExtensionUri});}}function applyFormatParameters(mediaDescription,paramsMap){paramsMap.forEach((value,param)=>{[...mediaDescription.codecs.values()].filter(ci=>ci.name==='H264'||ci.name==='opus').forEach(ci=>{if(value===null){ci.fmtParams.delete(param);}else {ci.fmtParams.set(param,"".concat(value));}});});}function generateSsrc(){return Math.floor(Math.random()*0xffffffff)+1;}class EgressSdpMunger{constructor(options){this.streamIds=[];this.customCodecParameters=new Map();this.egressMungerOptions=options;}reset(){this.streamIds=[];}mungeLocalDescription(mediaDescription,options){var _a;retainCodecsByCodecName(mediaDescription,['h264','opus','rtx']);if(options.forceSoftwareEncoder){var isH264Cbp=codecInfo=>{var _a;if(((_a=codecInfo.name)===null||_a===void 0?void 0:_a.toLowerCase())==='h264'){var profileLevelId=codecInfo.fmtParams.get('profile-level-id');return !!profileLevelId&&/^42[^0]/.test(profileLevelId);}return false;};if([...mediaDescription.codecs.values()].some(isH264Cbp)){retainCodecs(mediaDescription,codecInfo=>{var _a;return ((_a=codecInfo.name)===null||_a===void 0?void 0:_a.toLowerCase())!=='h264'||isH264Cbp(codecInfo);});}else {logger.log("No H.264 CBP present in m-line with MID ".concat(mediaDescription.mid,", so all H.264 codecs have been retained."));}}if(mediaDescription.codecs.size===0){logErrorAndThrow(exports.WcmeErrorType.SDP_MUNGE_MISSING_CODECS,"No codecs present in m-line with MID ".concat(mediaDescription.mid," after filtering."));}mediaDescription.rids=[];mediaDescription.simulcast=undefined;removeMidRidExtensions(mediaDescription);if(options.simulcastEnabled){addVlaExtension(mediaDescription);}var numStreams=options.simulcastEnabled?3:1;if(!this.streamIds.length){if(mediaDescription.ssrcs.length){var ssrcs=[...new Set(mediaDescription.ssrcs.map(ssrcLine=>ssrcLine.ssrcId))];mediaDescription.ssrcGroups.forEach(sg=>{if(!sg.ssrcs.every(ssrc=>ssrcs.includes(ssrc))){logErrorAndThrow(exports.WcmeErrorType.SDP_MUNGE_FAILED,'SSRC present in SSRC groups is missing from SSRC lines.');}});var rtxSsrcGroups=mediaDescription.ssrcGroups.filter(sg=>sg.semantics==='FID');if(rtxSsrcGroups.length&&rtxSsrcGroups.length!==numStreams){logErrorAndThrow(exports.WcmeErrorType.SDP_MUNGE_FAILED,"Expected ".concat(numStreams," RTX SSRC groups, got ").concat(rtxSsrcGroups.length,"."));}rtxSsrcGroups.forEach(sg=>{this.streamIds.push({ssrc:sg.ssrcs[0],rtxSsrc:sg.ssrcs[1]});});var simulcastSsrcs=(_a=mediaDescription.ssrcGroups.find(sg=>sg.semantics==='SIM'))===null||_a===void 0?void 0:_a.ssrcs;if(simulcastSsrcs){if(simulcastSsrcs.length!==numStreams||!this.streamIds.every(streamId=>simulcastSsrcs.includes(streamId.ssrc))){logErrorAndThrow(exports.WcmeErrorType.SDP_MUNGE_FAILED,'SSRCs in simulcast SSRC group do not match primary SSRCs in RTX SSRC groups.');}this.streamIds.sort((a,b)=>simulcastSsrcs.indexOf(a.ssrc)-simulcastSsrcs.indexOf(b.ssrc));}else if(rtxSsrcGroups.length>1){logErrorAndThrow(exports.WcmeErrorType.SDP_MUNGE_FAILED,'Multiple RTX SSRC groups but no simulcast SSRC group found.');}if(!this.streamIds.length){this.streamIds.push({ssrc:ssrcs[0]});}}else {[...Array(numStreams).keys()].forEach(()=>{var newStreamId={ssrc:generateSsrc()};if(options.rtxEnabled){newStreamId.rtxSsrc=generateSsrc();}this.streamIds.push(newStreamId);});}}mediaDescription.ssrcs=[];mediaDescription.ssrcGroups=[];this.streamIds.forEach(streamId=>{var rtpSsrc=streamId.ssrc;mediaDescription.addLine(new SsrcLine$1(rtpSsrc,'cname',"".concat(rtpSsrc,"-cname")));mediaDescription.addLine(new SsrcLine$1(rtpSsrc,'msid','-',"".concat(mediaDescription.mid)));if(options.rtxEnabled){var rtxSsrc=streamId.rtxSsrc;mediaDescription.addLine(new SsrcLine$1(rtxSsrc,'cname',"".concat(rtpSsrc,"-cname")));mediaDescription.addLine(new SsrcLine$1(rtxSsrc,'msid','-',"".concat(mediaDescription.mid)));mediaDescription.addLine(new SsrcGroupLine$1('FID',[rtpSsrc,rtxSsrc]));}});if(options.simulcastEnabled){mediaDescription.addLine(new SsrcGroupLine$1('SIM',this.streamIds.map(streamId=>streamId.ssrc)));}applyFormatParameters(mediaDescription,this.customCodecParameters);if(options.twccDisabled){disableTwcc(mediaDescription);}}mungeLocalDescriptionForRemoteServer(mediaDescription,mediaContent,csi){injectContentType(mediaDescription,mediaContent);injectJmpAttributes(mediaDescription,csi,'SSRC');if(!this.egressMungerOptions.doFullIce){injectDummyCandidates(mediaDescription);}if(mediaDescription.type==='video'){var ssrcGroup=mediaDescription.ssrcGroups.find(sg=>sg.semantics==='SIM');if(ssrcGroup){ssrcGroup.ssrcs.forEach((ssrc,index)=>{mediaDescription.addLine(new SsrcLine$1(ssrc,'fmtp',"* max-fs=".concat(simulcastMaxFrameSizes[index])));});}}}mungeRemoteDescription(mediaDescription){if(retainCandidatesByTransportType(mediaDescription,['udp','tcp'])){logger.log("Some unsupported remote candidates have been removed from mid ".concat(mediaDescription.mid));}mediaDescription.bandwidth=undefined;[...mediaDescription.codecs.values()].forEach(ci=>{ci.fmtParams.set('x-google-start-bitrate','60000');});}getSenderIds(){return this.streamIds;}getEncodingIndexForStreamId(streamId){return this.streamIds.findIndex(currStreamId=>compareStreamIds(currStreamId,streamId));}setCodecParameters(parameters){Object.entries(parameters).forEach(_ref2=>{var[param,value]=_ref2;this.customCodecParameters.set(param,value);});}deleteCodecParameters(parameters){parameters.forEach(param=>{this.customCodecParameters.set(param,null);});}}var events$1={exports:{}};var R$1=typeof Reflect==='object'?Reflect:null;var ReflectApply$1=R$1&&typeof R$1.apply==='function'?R$1.apply:function ReflectApply(target,receiver,args){return Function.prototype.apply.call(target,receiver,args);};var ReflectOwnKeys$1;if(R$1&&typeof R$1.ownKeys==='function'){ReflectOwnKeys$1=R$1.ownKeys;}else if(Object.getOwnPropertySymbols){ReflectOwnKeys$1=function ReflectOwnKeys(target){return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));};}else {ReflectOwnKeys$1=function ReflectOwnKeys(target){return Object.getOwnPropertyNames(target);};}function ProcessEmitWarning$1(warning){if(console&&console.warn)console.warn(warning);}var NumberIsNaN$1=Number.isNaN||function NumberIsNaN(value){return value!==value;};function EventEmitter$3(){EventEmitter$3.init.call(this);}events$1.exports=EventEmitter$3;events$1.exports.once=once$2;// Backwards-compat with node 0.10.x
2892
+ var compressed=deltaCompression(prev,now);trace('stats-report',formatStatsReport(compressed),compressed.timestamp!==-Infinity?compressed.timestamp:undefined);prev=base;return Promise.resolve();});})];});});};var interval=window.setInterval(function(){if(pc.signalingState==='closed'){window.clearInterval(interval);return;}getStatsReport();},intervalTime);var forceStatsReport=function forceStatsReport(){return __awaiter(void 0,void 0,void 0,function(){return __generator(this,function(_a){return [2/*return*/,getStatsReport()];});});};return {forceStatsReport:forceStatsReport};};rtcStats_1=rtcstats.rtcStats=rtcStats;var NUM$1='\\d+';var SDP_TOKEN$1="[!#$%&'*+\\-.^_`{|}~a-zA-Z0-9]+";var ANY_NON_WS$1='\\S+';var SP$1='\\s';var REST$1='.+';class Line$1{}var _a$5$1;class BandwidthLine$1 extends Line$1{constructor(bandwidthType,bandwidth){super();this.bandwidthType=bandwidthType;this.bandwidth=bandwidth;}static fromSdpLine(line){if(!BandwidthLine$1.regex.test(line)){return undefined;}var tokens=line.match(BandwidthLine$1.regex);var bandwidthType=tokens[1];var bandwidth=parseInt(tokens[2],10);return new BandwidthLine$1(bandwidthType,bandwidth);}toSdpLine(){return "b=".concat(this.bandwidthType,":").concat(this.bandwidth);}}_a$5$1=BandwidthLine$1;BandwidthLine$1.BW_TYPE_REGEX='CT|AS|TIAS';BandwidthLine$1.regex=new RegExp("^(".concat(_a$5$1.BW_TYPE_REGEX,"):(").concat(NUM$1,")"));class BundleGroupLine$1 extends Line$1{constructor(mids){super();this.mids=mids;}static fromSdpLine(line){if(!BundleGroupLine$1.regex.test(line)){return undefined;}var tokens=line.match(BundleGroupLine$1.regex);var mids=tokens[1].split(' ');return new BundleGroupLine$1(mids);}toSdpLine(){return "a=group:BUNDLE ".concat(this.mids.join(' '));}}BundleGroupLine$1.regex=new RegExp("^group:BUNDLE (".concat(REST$1,")"));var _a$4$1;class CandidateLine$1 extends Line$1{constructor(foundation,componentId,transport,priority,connectionAddress,port,candidateType,relAddr,relPort,candidateExtensions){super();this.foundation=foundation;this.componentId=componentId;this.transport=transport;this.priority=priority;this.connectionAddress=connectionAddress;this.port=port;this.candidateType=candidateType;this.relAddr=relAddr;this.relPort=relPort;this.candidateExtensions=candidateExtensions;}static fromSdpLine(line){if(!CandidateLine$1.regex.test(line)){return undefined;}var tokens=line.match(CandidateLine$1.regex);var foundation=tokens[1];var componentId=parseInt(tokens[2],10);var transport=tokens[3];var priority=parseInt(tokens[4],10);var connectionAddress=tokens[5];var port=parseInt(tokens[6],10);var candidateType=tokens[7];var relAddr=tokens[8];var relPort=tokens[9]?parseInt(tokens[9],10):undefined;var candidateExtensions=tokens[10];return new CandidateLine$1(foundation,componentId,transport,priority,connectionAddress,port,candidateType,relAddr,relPort,candidateExtensions);}toSdpLine(){var str='';str+="a=candidate:".concat(this.foundation," ").concat(this.componentId," ").concat(this.transport," ").concat(this.priority," ").concat(this.connectionAddress," ").concat(this.port," typ ").concat(this.candidateType);if(this.relAddr){str+=" raddr ".concat(this.relAddr);}if(this.relPort){str+=" rport ".concat(this.relPort);}if(this.candidateExtensions){str+=" ".concat(this.candidateExtensions);}return str;}}_a$4$1=CandidateLine$1;CandidateLine$1.ICE_CHARS="[a-zA-Z0-9+/]+";CandidateLine$1.regex=new RegExp("^candidate:(".concat(_a$4$1.ICE_CHARS,") (").concat(NUM$1,") (").concat(ANY_NON_WS$1,") (").concat(NUM$1,") (").concat(ANY_NON_WS$1,") (").concat(NUM$1,") typ (").concat(ANY_NON_WS$1,")(?: raddr (").concat(ANY_NON_WS$1,"))?(?: rport (").concat(NUM$1,"))?(?: (").concat(REST$1,"))?"));class ConnectionLine$1 extends Line$1{constructor(netType,addrType,ipAddr){super();this.netType=netType;this.addrType=addrType;this.ipAddr=ipAddr;}static fromSdpLine(line){if(!ConnectionLine$1.regex.test(line)){return undefined;}var tokens=line.match(ConnectionLine$1.regex);var netType=tokens[1];var addrType=tokens[2];var ipAddr=tokens[3];return new ConnectionLine$1(netType,addrType,ipAddr);}toSdpLine(){return "c=".concat(this.netType," ").concat(this.addrType," ").concat(this.ipAddr);}}ConnectionLine$1.regex=new RegExp("^(".concat(ANY_NON_WS$1,") (").concat(ANY_NON_WS$1,") (").concat(ANY_NON_WS$1,")"));class ContentLine$1 extends Line$1{constructor(values){super();this.values=values;}static fromSdpLine(line){if(!ContentLine$1.regex.test(line)){return undefined;}var tokens=line.match(ContentLine$1.regex);var values=tokens[1].split(',');return new ContentLine$1(values);}toSdpLine(){return "a=content:".concat(this.values.join(','));}}ContentLine$1.regex=new RegExp("^content:(".concat(REST$1,")$"));class DirectionLine$1 extends Line$1{constructor(direction){super();this.direction=direction;}static fromSdpLine(line){if(!DirectionLine$1.regex.test(line)){return undefined;}var tokens=line.match(DirectionLine$1.regex);var direction=tokens[1];return new DirectionLine$1(direction);}toSdpLine(){return "a=".concat(this.direction);}}DirectionLine$1.regex=/^(sendrecv|sendonly|recvonly|inactive)$/;var _a$3$1;class ExtMapLine$1 extends Line$1{constructor(id,uri,direction,extensionAttributes){super();this.id=id;this.uri=uri;this.direction=direction;this.extensionAttributes=extensionAttributes;}static fromSdpLine(line){if(!ExtMapLine$1.regex.test(line)){return undefined;}var tokens=line.match(ExtMapLine$1.regex);var id=parseInt(tokens[1],10);var direction=tokens[2];var uri=tokens[3];var extensionAttributes=tokens[4];return new ExtMapLine$1(id,uri,direction,extensionAttributes);}toSdpLine(){var str='';str+="a=extmap:".concat(this.id);if(this.direction){str+="/".concat(this.direction);}str+=" ".concat(this.uri);if(this.extensionAttributes){str+=" ".concat(this.extensionAttributes);}return str;}}_a$3$1=ExtMapLine$1;ExtMapLine$1.EXTMAP_DIRECTION="sendonly|recvonly|sendrecv|inactive";ExtMapLine$1.regex=new RegExp("^extmap:(".concat(NUM$1,")(?:/(").concat(_a$3$1.EXTMAP_DIRECTION,"))? (").concat(ANY_NON_WS$1,")(?: (").concat(REST$1,"))?"));class FingerprintLine$1 extends Line$1{constructor(fingerprint){super();this.fingerprint=fingerprint;}static fromSdpLine(line){if(!FingerprintLine$1.regex.test(line)){return undefined;}var tokens=line.match(FingerprintLine$1.regex);var fingerprint=tokens[1];return new FingerprintLine$1(fingerprint);}toSdpLine(){return "a=fingerprint:".concat(this.fingerprint);}}FingerprintLine$1.regex=new RegExp("^fingerprint:(".concat(REST$1,")"));function parseFmtpParams$1(fmtpParams){fmtpParams=fmtpParams.replace(/^a=fmtp:\d+\x20/,'');var fmtpObj=new Map();if(/^\d+([,/-]\d+)+$/.test(fmtpParams)){fmtpObj.set(fmtpParams,undefined);return fmtpObj;}fmtpParams.split(';').forEach(param=>{var paramArr=param&&param.split('=');if(paramArr.length!==2||!paramArr[0]||!paramArr[1]){throw new Error("Fmtp params is invalid with ".concat(fmtpParams));}fmtpObj.set(paramArr[0],paramArr[1]);});return fmtpObj;}class FmtpLine$1 extends Line$1{constructor(payloadType,params){super();this.payloadType=payloadType;this.params=params;}static fromSdpLine(line){if(!FmtpLine$1.regex.test(line)){return undefined;}var tokens=line.match(FmtpLine$1.regex);var payloadType=parseInt(tokens[1],10);var params=tokens[2];return new FmtpLine$1(payloadType,parseFmtpParams$1(params));}toSdpLine(){var fmtParams=Array.from(this.params.keys()).map(key=>{if(this.params.get(key)!==undefined){return "".concat(key,"=").concat(this.params.get(key));}return "".concat(key);}).join(';');return "a=fmtp:".concat(this.payloadType," ").concat(fmtParams);}}FmtpLine$1.regex=new RegExp("^fmtp:(".concat(NUM$1,") (").concat(REST$1,")"));class IceOptionsLine$1 extends Line$1{constructor(options){super();this.options=options;}static fromSdpLine(line){if(!IceOptionsLine$1.regex.test(line)){return undefined;}var tokens=line.match(IceOptionsLine$1.regex);var options=tokens[1].split(' ');return new IceOptionsLine$1(options);}toSdpLine(){return "a=ice-options:".concat(this.options.join(' '));}}IceOptionsLine$1.regex=new RegExp("^ice-options:(".concat(REST$1,")$"));class IcePwdLine$1 extends Line$1{constructor(pwd){super();this.pwd=pwd;}static fromSdpLine(line){if(!IcePwdLine$1.regex.test(line)){return undefined;}var tokens=line.match(IcePwdLine$1.regex);var pwd=tokens[1];return new IcePwdLine$1(pwd);}toSdpLine(){return "a=ice-pwd:".concat(this.pwd);}}IcePwdLine$1.regex=new RegExp("^ice-pwd:(".concat(ANY_NON_WS$1,")$"));class IceUfragLine$1 extends Line$1{constructor(ufrag){super();this.ufrag=ufrag;}static fromSdpLine(line){if(!IceUfragLine$1.regex.test(line)){return undefined;}var tokens=line.match(IceUfragLine$1.regex);var ufrag=tokens[1];return new IceUfragLine$1(ufrag);}toSdpLine(){return "a=ice-ufrag:".concat(this.ufrag);}}IceUfragLine$1.regex=new RegExp("^ice-ufrag:(".concat(ANY_NON_WS$1,")$"));class MaxMessageSizeLine$1 extends Line$1{constructor(maxMessageSize){super();this.maxMessageSize=maxMessageSize;}static fromSdpLine(line){if(!MaxMessageSizeLine$1.regex.test(line)){return undefined;}var tokens=line.match(MaxMessageSizeLine$1.regex);var maxMessageSize=parseInt(tokens[1],10);return new MaxMessageSizeLine$1(maxMessageSize);}toSdpLine(){return "a=max-message-size:".concat(this.maxMessageSize);}}MaxMessageSizeLine$1.regex=new RegExp("^max-message-size:(".concat(NUM$1,")"));var _a$2$2;class MediaLine$1 extends Line$1{constructor(type,port,protocol,formats){super();this.type=type;this.port=port;this.protocol=protocol;this.formats=formats;}static fromSdpLine(line){if(!MediaLine$1.regex.test(line)){return undefined;}var tokens=line.match(MediaLine$1.regex);var type=tokens[1];var port=parseInt(tokens[2],10);var protocol=tokens[3];var formats=tokens[4].split(' ');return new MediaLine$1(type,port,protocol,formats);}toSdpLine(){return "m=".concat(this.type," ").concat(this.port," ").concat(this.protocol," ").concat(this.formats.join(' '));}}_a$2$2=MediaLine$1;MediaLine$1.MEDIA_TYPE='audio|video|application';MediaLine$1.regex=new RegExp("^(".concat(_a$2$2.MEDIA_TYPE,") (").concat(NUM$1,") (").concat(ANY_NON_WS$1,") (").concat(REST$1,")"));class MidLine$1 extends Line$1{constructor(mid){super();this.mid=mid;}static fromSdpLine(line){if(!MidLine$1.regex.test(line)){return undefined;}var tokens=line.match(MidLine$1.regex);var mid=tokens[1];return new MidLine$1(mid);}toSdpLine(){return "a=mid:".concat(this.mid);}}MidLine$1.regex=new RegExp("^mid:(".concat(ANY_NON_WS$1,")$"));class OriginLine$1 extends Line$1{constructor(username,sessionId,sessionVersion,netType,addrType,ipAddr){super();this.username=username;this.sessionId=sessionId;this.sessionVersion=sessionVersion;this.netType=netType;this.addrType=addrType;this.ipAddr=ipAddr;}static fromSdpLine(line){if(!OriginLine$1.regex.test(line)){return undefined;}var tokens=line.match(OriginLine$1.regex);var username=tokens[1];var sessionId=tokens[2];var sessionVersion=parseInt(tokens[3],10);var netType=tokens[4];var addrType=tokens[5];var ipAddr=tokens[6];return new OriginLine$1(username,sessionId,sessionVersion,netType,addrType,ipAddr);}toSdpLine(){return "o=".concat(this.username," ").concat(this.sessionId," ").concat(this.sessionVersion," ").concat(this.netType," ").concat(this.addrType," ").concat(this.ipAddr);}}OriginLine$1.regex=new RegExp("^(".concat(ANY_NON_WS$1,") (").concat(ANY_NON_WS$1,") (").concat(NUM$1,") (").concat(ANY_NON_WS$1,") (").concat(ANY_NON_WS$1,") (").concat(ANY_NON_WS$1,")"));var _a$1$2;class RidLine$1 extends Line$1{constructor(id,direction,params){super();this.id=id;this.direction=direction;this.params=params;}static fromSdpLine(line){if(!RidLine$1.regex.test(line)){return undefined;}var tokens=line.match(RidLine$1.regex);var id=tokens[1];var direction=tokens[2];var params=tokens[3];return new RidLine$1(id,direction,params);}toSdpLine(){var str='';str+="a=rid:".concat(this.id," ").concat(this.direction);if(this.params){str+=" ".concat(this.params);}return str;}}_a$1$2=RidLine$1;RidLine$1.RID_ID="[\\w-]+";RidLine$1.RID_DIRECTION="\\bsend\\b|\\brecv\\b";RidLine$1.regex=new RegExp("^rid:(".concat(_a$1$2.RID_ID,") (").concat(_a$1$2.RID_DIRECTION,")(?:").concat(SP$1,"(").concat(REST$1,"))?"));class RtcpMuxLine$1 extends Line$1{static fromSdpLine(line){if(!RtcpMuxLine$1.regex.test(line)){return undefined;}return new RtcpMuxLine$1();}toSdpLine(){return "a=rtcp-mux";}}RtcpMuxLine$1.regex=/^rtcp-mux$/;class RtcpFbLine$1 extends Line$1{constructor(payloadType,feedback){super();this.payloadType=payloadType;this.feedback=feedback;}static fromSdpLine(line){if(!RtcpFbLine$1.regex.test(line)){return undefined;}var tokens=line.match(RtcpFbLine$1.regex);var payloadType=parseInt(tokens[1],10);var feedback=tokens[2];return new RtcpFbLine$1(payloadType,feedback);}toSdpLine(){return "a=rtcp-fb:".concat(this.payloadType," ").concat(this.feedback);}}RtcpFbLine$1.regex=new RegExp("^rtcp-fb:(".concat(NUM$1,") (").concat(REST$1,")"));var _a$7;class RtpMapLine$1 extends Line$1{constructor(payloadType,encodingName,clockRate,encodingParams){super();this.payloadType=payloadType;this.encodingName=encodingName;this.clockRate=clockRate;this.encodingParams=encodingParams;}static fromSdpLine(line){if(!RtpMapLine$1.regex.test(line)){return undefined;}var tokens=line.match(RtpMapLine$1.regex);var payloadType=parseInt(tokens[1],10);var encodingName=tokens[2];var clockRate=parseInt(tokens[3],10);var encodingParams=tokens[4];return new RtpMapLine$1(payloadType,encodingName,clockRate,encodingParams);}toSdpLine(){var str='';str+="a=rtpmap:".concat(this.payloadType," ").concat(this.encodingName,"/").concat(this.clockRate);if(this.encodingParams){str+="/".concat(this.encodingParams);}return str;}}_a$7=RtpMapLine$1;RtpMapLine$1.NON_SLASH_TOKEN='[^\\s/]+';RtpMapLine$1.regex=new RegExp("^rtpmap:(".concat(NUM$1,") (").concat(_a$7.NON_SLASH_TOKEN,")/(").concat(_a$7.NON_SLASH_TOKEN,")(?:/(").concat(_a$7.NON_SLASH_TOKEN,"))?"));class SctpPortLine$1 extends Line$1{constructor(port){super();this.port=port;}static fromSdpLine(line){if(!SctpPortLine$1.regex.test(line)){return undefined;}var tokens=line.match(SctpPortLine$1.regex);var port=parseInt(tokens[1],10);return new SctpPortLine$1(port);}toSdpLine(){return "a=sctp-port:".concat(this.port);}}SctpPortLine$1.regex=new RegExp("^sctp-port:(".concat(NUM$1,")"));class SessionInformationLine$1 extends Line$1{constructor(info){super();this.info=info;}static fromSdpLine(line){if(!SessionInformationLine$1.regex.test(line)){return undefined;}var tokens=line.match(SessionInformationLine$1.regex);var info=tokens[1];return new SessionInformationLine$1(info);}toSdpLine(){return "i=".concat(this.info);}}SessionInformationLine$1.regex=new RegExp("(".concat(REST$1,")"));class SessionNameLine$1 extends Line$1{constructor(name){super();this.name=name;}static fromSdpLine(line){if(!SessionNameLine$1.regex.test(line)){return undefined;}var tokens=line.match(SessionNameLine$1.regex);var name=tokens[1];return new SessionNameLine$1(name);}toSdpLine(){return "s=".concat(this.name);}}SessionNameLine$1.regex=new RegExp("^(".concat(REST$1,")"));class SetupLine$1 extends Line$1{constructor(setup){super();this.setup=setup;}static fromSdpLine(line){if(!SetupLine$1.regex.test(line)){return undefined;}var tokens=line.match(SetupLine$1.regex);var setup=tokens[1];return new SetupLine$1(setup);}toSdpLine(){return "a=setup:".concat(this.setup);}}SetupLine$1.regex=/^setup:(actpass|active|passive)$/;class SimulcastLayer$1{constructor(id,paused){this.id=id;this.paused=paused;}toString(){return this.paused?"~".concat(this.id):this.id;}}class SimulcastLayerList$1{constructor(){this.layers=[];}addLayer(layer){this.layers.push([layer]);}addLayerWithAlternatives(alternatives){this.layers.push(alternatives);}get length(){return this.layers.length;}get(index){return this.layers[index];}static fromString(str){var layerList=new SimulcastLayerList$1();var tokens=str.split(';');if(tokens.length===1&&!tokens[0].trim()){throw new Error('simulcast stream list empty');}tokens.forEach(token=>{if(!token){throw new Error('simulcast layer list empty');}var ridTokens=token.split(',');var layers=[];ridTokens.forEach(ridToken=>{if(!ridToken||ridToken==='~'){throw new Error('rid empty');}var paused=ridToken[0]==='~';var rid=paused?ridToken.substring(1):ridToken;layers.push(new SimulcastLayer$1(rid,paused));});layerList.addLayerWithAlternatives(layers);});return layerList;}toString(){return this.layers.map(altArray=>altArray.map(v=>v.toString()).join(',')).join(';');}}class SimulcastLine$1 extends Line$1{constructor(sendLayers,recvLayers){super();this.sendLayers=sendLayers;this.recvLayers=recvLayers;}static fromSdpLine(line){if(!SimulcastLine$1.regex.test(line)){return undefined;}var tokens=line.match(SimulcastLine$1.regex);var bidirectional=tokens[3]&&tokens[4];var firstDirection=tokens[1];var layerList1=SimulcastLayerList$1.fromString(tokens[2]);var layerList2=new SimulcastLayerList$1();if(bidirectional){var secondDirection=tokens[3];if(firstDirection===secondDirection){return undefined;}layerList2=SimulcastLayerList$1.fromString(tokens[4]);}var sendLayerList;var recvLayerList;if(firstDirection==='send'){sendLayerList=layerList1;recvLayerList=layerList2;}else {sendLayerList=layerList2;recvLayerList=layerList1;}return new SimulcastLine$1(sendLayerList,recvLayerList);}toSdpLine(){var str='a=simulcast:';if(this.sendLayers.length){str+="send ".concat(this.sendLayers.toString());if(this.recvLayers.length){str+=" ";}}if(this.recvLayers.length){str+="recv ".concat(this.recvLayers.toString());}return str;}}SimulcastLine$1.regex=new RegExp("^simulcast:(send|recv) (".concat(ANY_NON_WS$1,")(?: (send|recv) (").concat(ANY_NON_WS$1,"))?"));class SsrcLine$1 extends Line$1{constructor(ssrcId,attribute){var attributeValue=arguments.length>2&&arguments[2]!==undefined?arguments[2]:undefined;var attributeData=arguments.length>3&&arguments[3]!==undefined?arguments[3]:undefined;super();this.ssrcId=ssrcId;this.attribute=attribute;this.attributeValue=attributeValue;this.attributeData=attributeData;}static fromSdpLine(line){if(!SsrcLine$1.regex.test(line)){return undefined;}var tokens=line.match(SsrcLine$1.regex);var ssrcId=parseInt(tokens[1],10);var attribute=tokens[2];var attributeValue=tokens[3];var attributeData=tokens[4];return new SsrcLine$1(ssrcId,attribute,attributeValue,attributeData);}toSdpLine(){var str="a=ssrc:".concat(this.ssrcId," ").concat(this.attribute);if(this.attributeValue){str+=":".concat(this.attributeValue);}if(this.attributeData){str+=" ".concat(this.attributeData);}return str;}}SsrcLine$1.regex=new RegExp("^ssrc:(".concat(NUM$1,") (").concat(SDP_TOKEN$1,")(?::(").concat(SDP_TOKEN$1,")?(?: (").concat(ANY_NON_WS$1,"))?)?$"));class SsrcGroupLine$1 extends Line$1{constructor(semantics,ssrcs){super();this.semantics=semantics;this.ssrcs=ssrcs;}static fromSdpLine(line){if(!SsrcGroupLine$1.regex.test(line)){return undefined;}var tokens=line.match(SsrcGroupLine$1.regex);var semantics=tokens[1];var ssrcs=tokens[2].split(' ').map(ssrcStr=>parseInt(ssrcStr,10));return new SsrcGroupLine$1(semantics,ssrcs);}toSdpLine(){return "a=ssrc-group:".concat(this.semantics," ").concat(this.ssrcs.join(' '));}}SsrcGroupLine$1.regex=new RegExp("^ssrc-group:(SIM|FID|FEC) ((?:".concat(NUM$1).concat(SP$1,"*)+)"));class TimingLine$1 extends Line$1{constructor(startTime,stopTime){super();this.startTime=startTime;this.stopTime=stopTime;}static fromSdpLine(line){if(!TimingLine$1.regex.test(line)){return undefined;}var tokens=line.match(TimingLine$1.regex);var startTime=parseInt(tokens[1],10);var stopTime=parseInt(tokens[2],10);return new TimingLine$1(startTime,stopTime);}toSdpLine(){return "t=".concat(this.startTime," ").concat(this.stopTime);}}TimingLine$1.regex=new RegExp("^(".concat(NUM$1,") (").concat(NUM$1,")"));class VersionLine$1 extends Line$1{constructor(version){super();this.version=version;}static fromSdpLine(line){if(!VersionLine$1.regex.test(line)){return undefined;}var tokens=line.match(VersionLine$1.regex);var version=parseInt(tokens[1],10);return new VersionLine$1(version);}toSdpLine(){return "v=".concat(this.version);}}VersionLine$1.regex=new RegExp("^(".concat(NUM$1,")$"));class UnknownLine$1 extends Line$1{constructor(value){super();this.value=value;}static fromSdpLine(line){var tokens=line.match(UnknownLine$1.regex);var value=tokens[1];return new UnknownLine$1(value);}toSdpLine(){return "".concat(this.value);}}UnknownLine$1.regex=new RegExp("(".concat(REST$1,")"));class IceInfo$1{constructor(){this.candidates=[];}addLine(line){if(line instanceof IceUfragLine$1){this.ufrag=line;return true;}if(line instanceof IcePwdLine$1){this.pwd=line;return true;}if(line instanceof IceOptionsLine$1){this.options=line;return true;}if(line instanceof CandidateLine$1){this.candidates.push(line);return true;}return false;}toLines(){var lines=[];if(this.ufrag){lines.push(this.ufrag);}if(this.pwd){lines.push(this.pwd);}if(this.options){lines.push(this.options);}this.candidates.forEach(candidate=>lines.push(candidate));return lines;}}class MediaDescription$1{constructor(type,port,protocol){this.iceInfo=new IceInfo$1();this.otherLines=[];this.type=type;this.port=port;this.protocol=protocol;}findOtherLine(ty){return this.otherLines.find(line=>line instanceof ty);}addLine(line){if(line instanceof BundleGroupLine$1){throw new Error("Error: bundle group line not allowed in media description");}if(line instanceof BandwidthLine$1){this.bandwidth=line;return true;}if(line instanceof MidLine$1){this.mid=line.mid;return true;}if(line instanceof FingerprintLine$1){this.fingerprint=line.fingerprint;return true;}if(line instanceof SetupLine$1){this.setup=line.setup;return true;}if(line instanceof ConnectionLine$1){this.connection=line;return true;}if(line instanceof ContentLine$1){this.content=line;return true;}return this.iceInfo.addLine(line);}}class ApplicationMediaDescription$1 extends MediaDescription$1{constructor(mediaLine){super(mediaLine.type,mediaLine.port,mediaLine.protocol);this.fmts=[];this.fmts=mediaLine.formats;}toLines(){var lines=[];lines.push(new MediaLine$1(this.type,this.port,this.protocol,this.fmts));if(this.connection){lines.push(this.connection);}if(this.bandwidth){lines.push(this.bandwidth);}lines.push(...this.iceInfo.toLines());if(this.fingerprint){lines.push(new FingerprintLine$1(this.fingerprint));}if(this.setup){lines.push(new SetupLine$1(this.setup));}if(this.mid){lines.push(new MidLine$1(this.mid));}if(this.content){lines.push(this.content);}if(this.sctpPort){lines.push(new SctpPortLine$1(this.sctpPort));}if(this.maxMessageSize){lines.push(new MaxMessageSizeLine$1(this.maxMessageSize));}lines.push(...this.otherLines);return lines;}addLine(line){if(super.addLine(line)){return true;}if(line instanceof MediaLine$1){throw new Error('Error: tried passing a MediaLine to an existing MediaInfo');}if(line instanceof SctpPortLine$1){this.sctpPort=line.port;return true;}if(line instanceof MaxMessageSizeLine$1){this.maxMessageSize=line.maxMessageSize;return true;}this.otherLines.push(line);return true;}}class CodecInfo$2{constructor(pt){this.fmtParams=new Map();this.feedback=[];this.pt=pt;}addLine(line){if(line instanceof RtpMapLine$1){this.name=line.encodingName;this.clockRate=line.clockRate;this.encodingParams=line.encodingParams;return true;}if(line instanceof FmtpLine$1){this.fmtParams=new Map([...Array.from(this.fmtParams.entries()),...Array.from(line.params.entries())]);if(line.params.has('apt')){var apt=line.params.get('apt');this.primaryCodecPt=parseInt(apt,10);}return true;}if(line instanceof RtcpFbLine$1){this.feedback.push(line.feedback);return true;}return false;}toLines(){var lines=[];if(this.name&&this.clockRate){lines.push(new RtpMapLine$1(this.pt,this.name,this.clockRate,this.encodingParams));}this.feedback.forEach(fb=>{lines.push(new RtcpFbLine$1(this.pt,fb));});if(this.fmtParams.size>0){lines.push(new FmtpLine$1(this.pt,this.fmtParams));}return lines;}}class AvMediaDescription$1 extends MediaDescription$1{constructor(mediaLine){super(mediaLine.type,mediaLine.port,mediaLine.protocol);this.pts=[];this.extMaps=new Map();this.rids=[];this.codecs=new Map();this.rtcpMux=false;this.ssrcs=[];this.ssrcGroups=[];this.pts=mediaLine.formats.map(fmt=>{return parseInt(fmt,10);});this.pts.forEach(pt=>this.codecs.set(pt,new CodecInfo$2(pt)));}toLines(){var lines=[];lines.push(new MediaLine$1(this.type,this.port,this.protocol,this.pts.map(pt=>"".concat(pt))));if(this.connection){lines.push(this.connection);}if(this.bandwidth){lines.push(this.bandwidth);}lines.push(...this.iceInfo.toLines());if(this.fingerprint){lines.push(new FingerprintLine$1(this.fingerprint));}if(this.setup){lines.push(new SetupLine$1(this.setup));}if(this.mid){lines.push(new MidLine$1(this.mid));}if(this.rtcpMux){lines.push(new RtcpMuxLine$1());}if(this.content){lines.push(this.content);}this.extMaps.forEach(extMap=>lines.push(extMap));this.rids.forEach(rid=>lines.push(rid));if(this.simulcast){lines.push(this.simulcast);}if(this.direction){lines.push(new DirectionLine$1(this.direction));}this.codecs.forEach(codec=>lines.push(...codec.toLines()));lines.push(...this.ssrcs);lines.push(...this.ssrcGroups);lines.push(...this.otherLines);return lines;}addLine(line){if(super.addLine(line)){return true;}if(line instanceof MediaLine$1){throw new Error('Error: tried passing a MediaLine to an existing MediaInfo');}if(line instanceof DirectionLine$1){this.direction=line.direction;return true;}if(line instanceof ExtMapLine$1){if(this.extMaps.has(line.id)){throw new Error("Tried to extension with duplicate ID: an extension already exists with ID ".concat(line.id));}this.extMaps.set(line.id,line);return true;}if(line instanceof RidLine$1){this.rids.push(line);return true;}if(line instanceof RtcpMuxLine$1){this.rtcpMux=true;return true;}if(line instanceof SimulcastLine$1){this.simulcast=line;return true;}if(line instanceof RtpMapLine$1||line instanceof FmtpLine$1||line instanceof RtcpFbLine$1){var codec=this.codecs.get(line.payloadType);if(!codec){throw new Error("Error: got line for unknown codec: ".concat(line.toSdpLine()));}codec.addLine(line);return true;}if(line instanceof SsrcLine$1){this.ssrcs.push(line);return true;}if(line instanceof SsrcGroupLine$1){this.ssrcGroups.push(line);return true;}this.otherLines.push(line);return true;}getCodecByPt(pt){return this.codecs.get(pt);}removePt(pt){var associatedPts=[...this.codecs.values()].filter(ci=>ci.primaryCodecPt===pt).map(ci=>ci.pt);var allPtsToRemove=[pt,...associatedPts];allPtsToRemove.forEach(ptToRemove=>{this.codecs.delete(ptToRemove);});this.pts=this.pts.filter(existingPt=>allPtsToRemove.indexOf(existingPt)===-1);}addExtension(_ref){var{uri,direction,attributes,id}=_ref;var getFirstFreeId=()=>{var freeId=1;for(;;){if(!this.extMaps.has(freeId)){break;}freeId+=1;}return freeId;};var extId=id||getFirstFreeId();if(this.extMaps.has(extId)){throw new Error("Extension with ID ".concat(id," already exists"));}if(extId===0){throw new Error("Extension ID 0 is reserved");}this.extMaps.set(extId,new ExtMapLine$1(extId,uri,direction,attributes));}}class SessionDescription$1{constructor(){this.groups=[];this.otherLines=[];}addLine(line){if(line instanceof VersionLine$1){this.version=line;return true;}if(line instanceof OriginLine$1){this.origin=line;return true;}if(line instanceof SessionNameLine$1){this.sessionName=line;return true;}if(line instanceof SessionInformationLine$1){this.information=line;return true;}if(line instanceof TimingLine$1){this.timing=line;return true;}if(line instanceof ConnectionLine$1){this.connection=line;return true;}if(line instanceof BandwidthLine$1){this.bandwidth=line;return true;}if(line instanceof BundleGroupLine$1){this.groups.push(line);return true;}this.otherLines.push(line);return true;}toLines(){var lines=[];if(this.version){lines.push(this.version);}if(this.origin){lines.push(this.origin);}if(this.sessionName){lines.push(this.sessionName);}if(this.information){lines.push(this.information);}if(this.connection){lines.push(this.connection);}if(this.bandwidth){lines.push(this.bandwidth);}if(this.timing){lines.push(this.timing);}if(this.groups){lines.push(...this.groups);}lines.push(...this.otherLines);return lines;}}class Sdp$1{constructor(){this.session=new SessionDescription$1();this.media=[];}get avMedia(){return this.media.filter(mi=>mi instanceof AvMediaDescription$1);}toString(){var lines=[];lines.push(...this.session.toLines());this.media.forEach(m=>lines.push(...m.toLines()));return "".concat(lines.map(l=>l.toSdpLine()).join('\r\n'),"\r\n");}}class Grammar$1{constructor(){this.parsers=new Map();}addParser(lineType,parser){var parsers=this.parsers.get(lineType)||[];parsers.push(parser);this.parsers.set(lineType,parsers);}getParsers(lineType){return this.parsers.get(lineType)||[];}}class SdpGrammar$1 extends Grammar$1{constructor(){super();this.addParser('v',VersionLine$1.fromSdpLine);this.addParser('o',OriginLine$1.fromSdpLine);this.addParser('c',ConnectionLine$1.fromSdpLine);this.addParser('i',SessionInformationLine$1.fromSdpLine);this.addParser('m',MediaLine$1.fromSdpLine);this.addParser('s',SessionNameLine$1.fromSdpLine);this.addParser('t',TimingLine$1.fromSdpLine);this.addParser('b',BandwidthLine$1.fromSdpLine);this.addParser('a',RtpMapLine$1.fromSdpLine);this.addParser('a',RtcpFbLine$1.fromSdpLine);this.addParser('a',FmtpLine$1.fromSdpLine);this.addParser('a',DirectionLine$1.fromSdpLine);this.addParser('a',ExtMapLine$1.fromSdpLine);this.addParser('a',MidLine$1.fromSdpLine);this.addParser('a',IceUfragLine$1.fromSdpLine);this.addParser('a',IcePwdLine$1.fromSdpLine);this.addParser('a',IceOptionsLine$1.fromSdpLine);this.addParser('a',FingerprintLine$1.fromSdpLine);this.addParser('a',SetupLine$1.fromSdpLine);this.addParser('a',SctpPortLine$1.fromSdpLine);this.addParser('a',MaxMessageSizeLine$1.fromSdpLine);this.addParser('a',RtcpMuxLine$1.fromSdpLine);this.addParser('a',BundleGroupLine$1.fromSdpLine);this.addParser('a',ContentLine$1.fromSdpLine);this.addParser('a',RidLine$1.fromSdpLine);this.addParser('a',CandidateLine$1.fromSdpLine);this.addParser('a',SimulcastLine$1.fromSdpLine);this.addParser('a',SsrcLine$1.fromSdpLine);this.addParser('a',SsrcGroupLine$1.fromSdpLine);}}var DefaultSdpGrammar$1=new SdpGrammar$1();function isValidLine$1(line){return line.length>2;}function parseToModel$1(lines){var sdp=new Sdp$1();var currBlock=sdp.session;lines.forEach(l=>{if(l instanceof MediaLine$1){var mediaInfo;if(l.type==='audio'||l.type==='video'){mediaInfo=new AvMediaDescription$1(l);}else if(l.type==='application'){mediaInfo=new ApplicationMediaDescription$1(l);}else {throw new Error("Unhandled media type: ".concat(l.type));}sdp.media.push(mediaInfo);currBlock=mediaInfo;}else {currBlock.addLine(l);}});return sdp;}function parseToLines$1(sdp,grammar){var lines=[];sdp.split(/(\r\n|\r|\n)/).filter(isValidLine$1).forEach(l=>{var lineType=l[0];var lineValue=l.slice(2);var parsers=grammar.getParsers(lineType);for(var parser of parsers){var _result=parser(lineValue);if(_result){lines.push(_result);return;}}var result=UnknownLine$1.fromSdpLine(l);lines.push(result);});return lines;}function parse$1(sdp){var grammar=arguments.length>1&&arguments[1]!==undefined?arguments[1]:DefaultSdpGrammar$1;var lines=parseToLines$1(sdp,grammar);var parsed=parseToModel$1(lines);return parsed;}function disableRtcpFbValue(sdpOrAv,rtcpFbValue){var mediaDescriptions=sdpOrAv instanceof Sdp$1?sdpOrAv.avMedia:[sdpOrAv];mediaDescriptions.forEach(media=>{media.codecs.forEach(codec=>{codec.feedback=codec.feedback.filter(fb=>fb!==rtcpFbValue);});});}function disableTwcc(sdpOrAv){disableRtcpFbValue(sdpOrAv,'transport-cc');}function retainCodecs(av,predicate){var filtered=false;av.codecs.forEach(codecInfo=>{if(!predicate(codecInfo)){av.removePt(codecInfo.pt);filtered=true;}});return filtered;}function retainCodecsByCodecName(av,allowedCodecNames){var allowedLowerCase=allowedCodecNames.map(s=>s.toLowerCase());return retainCodecs(av,codecInfo=>!!codecInfo.name&&allowedLowerCase.includes(codecInfo.name.toLowerCase()));}function retainCandidates(sdpOrMedia,predicate){var mediaDescriptions=sdpOrMedia instanceof Sdp$1?sdpOrMedia.media:[sdpOrMedia];var filtered=false;mediaDescriptions.forEach(media=>{media.iceInfo.candidates=media.iceInfo.candidates.filter(candidate=>{if(predicate(candidate)){return true;}filtered=true;return false;});});return filtered;}function retainCandidatesByTransportType(sdpOrMedia,allowedTransportTypes){var allowedLowerCase=allowedTransportTypes.map(s=>s.toLowerCase());return retainCandidates(sdpOrMedia,candidate=>allowedLowerCase.includes(candidate.transport.toLowerCase()));}function hasCodec(codecName,mLine){return [...mLine.codecs.values()].some(ci=>{var _a;return ((_a=ci.name)===null||_a===void 0?void 0:_a.toLowerCase())===codecName.toLowerCase();});}var commonjsGlobal$4=typeof globalThis!=='undefined'?globalThis:typeof window!=='undefined'?window:typeof global$1!=='undefined'?global$1:typeof self!=='undefined'?self:{};function getDefaultExportFromCjs$2(x){return x&&x.__esModule&&Object.prototype.hasOwnProperty.call(x,'default')?x['default']:x;}var es5$2={exports:{}};(function(module,exports){!function(e,t){module.exports=t();}(commonjsGlobal$4,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports;}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n});},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0});},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e){r.d(n,i,function(t){return e[t];}.bind(null,i));}return n;},r.n=function(e){var t=e&&e.__esModule?function(){return e.default;}:function(){return e;};return r.d(t,"a",t),t;},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t);},r.p="",r(r.s=90);}({17:function _(e,t,r){t.__esModule=!0,t.default=void 0;var n=r(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||"";},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||"";},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r;},e.getWindowsVersionName=function(e){switch(e){case"NT":return "NT";case"XP":return "XP";case"NT 5.0":return "2000";case"NT 5.1":return "XP";case"NT 5.2":return "2003";case"NT 6.0":return "Vista";case"NT 6.1":return "7";case"NT 6.2":return "8";case"NT 6.3":return "8.1";case"NT 10.0":return "10";default:return;}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map(function(e){return parseInt(e,10)||0;});if(t.push(0),10===t[0])switch(t[1]){case 5:return "Leopard";case 6:return "Snow Leopard";case 7:return "Lion";case 8:return "Mountain Lion";case 9:return "Mavericks";case 10:return "Yosemite";case 11:return "El Capitan";case 12:return "Sierra";case 13:return "High Sierra";case 14:return "Mojave";case 15:return "Catalina";default:return;}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map(function(e){return parseInt(e,10)||0;});if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0;},e.getVersionPrecision=function(e){return e.split(".").length;},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),s=e.getVersionPrecision(r),a=Math.max(i,s),o=0,u=e.map([t,r],function(t){var r=a-e.getVersionPrecision(t),n=t+new Array(r+1).join(".0");return e.map(n.split("."),function(e){return new Array(20-e.length).join("0")+e;}).reverse();});for(n&&(o=a-Math.min(i,s)),a-=1;a>=o;){if(u[0][a]>u[1][a])return 1;if(u[0][a]===u[1][a]){if(a===o)return 0;a-=1;}else if(u[0][a]<u[1][a])return -1;}},e.map=function(e,t){var r,n=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1){n.push(t(e[r]));}return n;},e.find=function(e,t){var r,n;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(r=0,n=e.length;r<n;r+=1){var i=e[r];if(t(i,r))return i;}},e.assign=function(e){for(var t,r,n=e,i=arguments.length,s=new Array(i>1?i-1:0),a=1;a<i;a++){s[a-1]=arguments[a];}if(Object.assign)return Object.assign.apply(Object,[e].concat(s));var o=function o(){var e=s[t];"object"==typeof e&&null!==e&&Object.keys(e).forEach(function(t){n[t]=e[t];});};for(t=0,r=s.length;t<r;t+=1){o();}return e;},e.getBrowserAlias=function(e){return n.BROWSER_ALIASES_MAP[e];},e.getBrowserTypeByAlias=function(e){return n.BROWSER_MAP[e]||"";},e;}();t.default=i,e.exports=t.default;},18:function _(e,t,r){t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0;t.BROWSER_ALIASES_MAP={"Amazon Silk":"amazon_silk","Android Browser":"android",Bada:"bada",BlackBerry:"blackberry",Chrome:"chrome",Chromium:"chromium",Electron:"electron",Epiphany:"epiphany",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot","Internet Explorer":"ie","K-Meleon":"k_meleon",Maxthon:"maxthon","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver",Opera:"opera","Opera Coast":"opera_coast",PhantomJS:"phantomjs",Puffin:"puffin",QupZilla:"qupzilla",QQ:"qq",QQLite:"qqlite",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SeaMonkey:"seamonkey",Sleipnir:"sleipnir",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat","Yandex Browser":"yandex",Roku:"roku"};t.BROWSER_MAP={amazon_silk:"Amazon Silk",android:"Android Browser",bada:"Bada",blackberry:"BlackBerry",chrome:"Chrome",chromium:"Chromium",electron:"Electron",epiphany:"Epiphany",firefox:"Firefox",focus:"Focus",generic:"Generic",googlebot:"Googlebot",google_search:"Google Search",ie:"Internet Explorer",k_meleon:"K-Meleon",maxthon:"Maxthon",edge:"Microsoft Edge",mz:"MZ Browser",naver:"NAVER Whale Browser",opera:"Opera",opera_coast:"Opera Coast",phantomjs:"PhantomJS",puffin:"Puffin",qupzilla:"QupZilla",qq:"QQ Browser",qqlite:"QQ Browser Lite",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",sleipnir:"Sleipnir",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yandex:"Yandex Browser"};t.PLATFORMS_MAP={tablet:"tablet",mobile:"mobile",desktop:"desktop",tv:"tv"};t.OS_MAP={WindowsPhone:"Windows Phone",Windows:"Windows",MacOS:"macOS",iOS:"iOS",Android:"Android",WebOS:"WebOS",BlackBerry:"BlackBerry",Bada:"Bada",Tizen:"Tizen",Linux:"Linux",ChromeOS:"Chrome OS",PlayStation4:"PlayStation 4",Roku:"Roku"};t.ENGINE_MAP={EdgeHTML:"EdgeHTML",Blink:"Blink",Trident:"Trident",Presto:"Presto",Gecko:"Gecko",WebKit:"WebKit"};},90:function _(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(91))&&n.__esModule?n:{default:n},s=r(18);function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}var o=function(){function e(){}var t,r,n;return e.getParser=function(e,t){if(void 0===t&&(t=!1),"string"!=typeof e)throw new Error("UserAgent should be a string");return new i.default(e,t);},e.parse=function(e){return new i.default(e).getResult();},t=e,n=[{key:"BROWSER_MAP",get:function get(){return s.BROWSER_MAP;}},{key:"ENGINE_MAP",get:function get(){return s.ENGINE_MAP;}},{key:"OS_MAP",get:function get(){return s.OS_MAP;}},{key:"PLATFORMS_MAP",get:function get(){return s.PLATFORMS_MAP;}}],(r=null)&&a(t.prototype,r),n&&a(t,n),e;}();t.default=o,e.exports=t.default;},91:function _(e,t,r){t.__esModule=!0,t.default=void 0;var n=u(r(92)),i=u(r(93)),s=u(r(94)),a=u(r(95)),o=u(r(17));function u(e){return e&&e.__esModule?e:{default:e};}var d=function(){function e(e,t){if(void 0===t&&(t=!1),null==e||""===e)throw new Error("UserAgent parameter can't be empty");this._ua=e,this.parsedResult={},!0!==t&&this.parse();}var t=e.prototype;return t.getUA=function(){return this._ua;},t.test=function(e){return e.test(this._ua);},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=o.default.find(n.default,function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t);});throw new Error("Browser's test function is not valid");});return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser;},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser();},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||"";},t.getBrowserVersion=function(){return this.getBrowser().version;},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS();},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=o.default.find(i.default,function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t);});throw new Error("Browser's test function is not valid");});return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os;},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||"":t||"";},t.getOSVersion=function(){return this.getOS().version;},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform();},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||"":t||"";},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=o.default.find(s.default,function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t);});throw new Error("Browser's test function is not valid");});return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform;},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine();},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||"";},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=o.default.find(a.default,function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t);});throw new Error("Browser's test function is not valid");});return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine;},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this;},t.getResult=function(){return o.default.assign({},this.parsedResult);},t.satisfies=function(e){var t=this,r={},n=0,i={},s=0;if(Object.keys(e).forEach(function(t){var a=e[t];"string"==typeof a?(i[t]=a,s+=1):"object"==typeof a&&(r[t]=a,n+=1);}),n>0){var a=Object.keys(r),u=o.default.find(a,function(e){return t.isOS(e);});if(u){var d=this.satisfies(r[u]);if(void 0!==d)return d;}var c=o.default.find(a,function(e){return t.isPlatform(e);});if(c){var f=this.satisfies(r[c]);if(void 0!==f)return f;}}if(s>0){var l=Object.keys(i),h=o.default.find(l,function(e){return t.isBrowser(e,!0);});if(void 0!==h)return this.compareVersion(i[h]);}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=o.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r;},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return ">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(n=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(o.default.compareVersions(i,r,n))>-1;},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase();},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase();},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase();},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e);},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some(function(e){return t.is(e);});},e;}();t.default=d,e.exports=t.default;},92:function _(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n};var s=/version\/(\d+(\.?_?\d+)+)/i,a=[{test:[/googlebot/i],describe:function describe(e){var t={name:"Googlebot"},r=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/opera/i],describe:function describe(e){var t={name:"Opera"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/opr\/|opios/i],describe:function describe(e){var t={name:"Opera"},r=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/SamsungBrowser/i],describe:function describe(e){var t={name:"Samsung Internet for Android"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/Whale/i],describe:function describe(e){var t={name:"NAVER Whale Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/MZBrowser/i],describe:function describe(e){var t={name:"MZ Browser"},r=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/focus/i],describe:function describe(e){var t={name:"Focus"},r=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/swing/i],describe:function describe(e){var t={name:"Swing"},r=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/coast/i],describe:function describe(e){var t={name:"Opera Coast"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function describe(e){var t={name:"Opera Touch"},r=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/yabrowser/i],describe:function describe(e){var t={name:"Yandex Browser"},r=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/ucbrowser/i],describe:function describe(e){var t={name:"UC Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/Maxthon|mxios/i],describe:function describe(e){var t={name:"Maxthon"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/epiphany/i],describe:function describe(e){var t={name:"Epiphany"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/puffin/i],describe:function describe(e){var t={name:"Puffin"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/sleipnir/i],describe:function describe(e){var t={name:"Sleipnir"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/k-meleon/i],describe:function describe(e){var t={name:"K-Meleon"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/micromessenger/i],describe:function describe(e){var t={name:"WeChat"},r=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/qqbrowser/i],describe:function describe(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/msie|trident/i],describe:function describe(e){var t={name:"Internet Explorer"},r=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/\sedg\//i],describe:function describe(e){var t={name:"Microsoft Edge"},r=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/edg([ea]|ios)/i],describe:function describe(e){var t={name:"Microsoft Edge"},r=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/vivaldi/i],describe:function describe(e){var t={name:"Vivaldi"},r=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/seamonkey/i],describe:function describe(e){var t={name:"SeaMonkey"},r=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/sailfish/i],describe:function describe(e){var t={name:"Sailfish"},r=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t;}},{test:[/silk/i],describe:function describe(e){var t={name:"Amazon Silk"},r=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/phantom/i],describe:function describe(e){var t={name:"PhantomJS"},r=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/slimerjs/i],describe:function describe(e){var t={name:"SlimerJS"},r=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function describe(e){var t={name:"BlackBerry"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/(web|hpw)[o0]s/i],describe:function describe(e){var t={name:"WebOS Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/bada/i],describe:function describe(e){var t={name:"Bada"},r=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/tizen/i],describe:function describe(e){var t={name:"Tizen"},r=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/qupzilla/i],describe:function describe(e){var t={name:"QupZilla"},r=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/firefox|iceweasel|fxios/i],describe:function describe(e){var t={name:"Firefox"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/electron/i],describe:function describe(e){var t={name:"Electron"},r=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/MiuiBrowser/i],describe:function describe(e){var t={name:"Miui"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/chromium/i],describe:function describe(e){var t={name:"Chromium"},r=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/chrome|crios|crmo/i],describe:function describe(e){var t={name:"Chrome"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/GSA/i],describe:function describe(e){var t={name:"Google Search"},r=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:function test(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r;},describe:function describe(e){var t={name:"Android Browser"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/playstation 4/i],describe:function describe(e){var t={name:"PlayStation 4"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/safari|applewebkit/i],describe:function describe(e){var t={name:"Safari"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t;}},{test:[/.*/i],describe:function describe(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return {name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)};}}];t.default=a,e.exports=t.default;},93:function _(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/Roku\/DVP/],describe:function describe(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return {name:s.OS_MAP.Roku,version:t};}},{test:[/windows phone/i],describe:function describe(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.WindowsPhone,version:t};}},{test:[/windows /i],describe:function describe(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=i.default.getWindowsVersionName(t);return {name:s.OS_MAP.Windows,version:t,versionName:r};}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function describe(e){var t={name:s.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t;}},{test:[/macintosh/i],describe:function describe(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=i.default.getMacOSVersionName(t),n={name:s.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n;}},{test:[/(ipod|iphone|ipad)/i],describe:function describe(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return {name:s.OS_MAP.iOS,version:t};}},{test:function test(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r;},describe:function describe(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:s.OS_MAP.Android,version:t};return r&&(n.versionName=r),n;}},{test:[/(web|hpw)[o0]s/i],describe:function describe(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:s.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r;}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function describe(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return {name:s.OS_MAP.BlackBerry,version:t};}},{test:[/bada/i],describe:function describe(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.Bada,version:t};}},{test:[/tizen/i],describe:function describe(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.Tizen,version:t};}},{test:[/linux/i],describe:function describe(){return {name:s.OS_MAP.Linux};}},{test:[/CrOS/],describe:function describe(){return {name:s.OS_MAP.ChromeOS};}},{test:[/PlayStation 4/],describe:function describe(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.PlayStation4,version:t};}}];t.default=a,e.exports=t.default;},94:function _(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/googlebot/i],describe:function describe(){return {type:"bot",vendor:"Google"};}},{test:[/huawei/i],describe:function describe(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:s.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r;}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function describe(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Nexus"};}},{test:[/ipad/i],describe:function describe(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"};}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function describe(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"};}},{test:[/kftt build/i],describe:function describe(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"};}},{test:[/silk/i],describe:function describe(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Amazon"};}},{test:[/tablet(?! pc)/i],describe:function describe(){return {type:s.PLATFORMS_MAP.tablet};}},{test:function test(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r;},describe:function describe(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return {type:s.PLATFORMS_MAP.mobile,vendor:"Apple",model:t};}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function describe(){return {type:s.PLATFORMS_MAP.mobile,vendor:"Nexus"};}},{test:[/[^-]mobi/i],describe:function describe(){return {type:s.PLATFORMS_MAP.mobile};}},{test:function test(e){return "blackberry"===e.getBrowserName(!0);},describe:function describe(){return {type:s.PLATFORMS_MAP.mobile,vendor:"BlackBerry"};}},{test:function test(e){return "bada"===e.getBrowserName(!0);},describe:function describe(){return {type:s.PLATFORMS_MAP.mobile};}},{test:function test(e){return "windows phone"===e.getBrowserName();},describe:function describe(){return {type:s.PLATFORMS_MAP.mobile,vendor:"Microsoft"};}},{test:function test(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return "android"===e.getOSName(!0)&&t>=3;},describe:function describe(){return {type:s.PLATFORMS_MAP.tablet};}},{test:function test(e){return "android"===e.getOSName(!0);},describe:function describe(){return {type:s.PLATFORMS_MAP.mobile};}},{test:function test(e){return "macos"===e.getOSName(!0);},describe:function describe(){return {type:s.PLATFORMS_MAP.desktop,vendor:"Apple"};}},{test:function test(e){return "windows"===e.getOSName(!0);},describe:function describe(){return {type:s.PLATFORMS_MAP.desktop};}},{test:function test(e){return "linux"===e.getOSName(!0);},describe:function describe(){return {type:s.PLATFORMS_MAP.desktop};}},{test:function test(e){return "playstation 4"===e.getOSName(!0);},describe:function describe(){return {type:s.PLATFORMS_MAP.tv};}},{test:function test(e){return "roku"===e.getOSName(!0);},describe:function describe(){return {type:s.PLATFORMS_MAP.tv};}}];t.default=a,e.exports=t.default;},95:function _(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:function test(e){return "microsoft edge"===e.getBrowserName(!0);},describe:function describe(e){if(/\sedg\//i.test(e))return {name:s.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return {name:s.ENGINE_MAP.EdgeHTML,version:t};}},{test:[/trident/i],describe:function describe(e){var t={name:s.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:function test(e){return e.test(/presto/i);},describe:function describe(e){var t={name:s.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:function test(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r;},describe:function describe(e){var t={name:s.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}},{test:[/(apple)?webkit\/537\.36/i],describe:function describe(){return {name:s.ENGINE_MAP.Blink};}},{test:[/(apple)?webkit/i],describe:function describe(e){var t={name:s.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t;}}];t.default=a,e.exports=t.default;}});});})(es5$2);var Bowser$2=/*@__PURE__*/getDefaultExportFromCjs$2(es5$2.exports);var BrowserName$2;(function(BrowserName){BrowserName["CHROME"]="Chrome";BrowserName["FIREFOX"]="Firefox";BrowserName["EDGE"]="Microsoft Edge";BrowserName["SAFARI"]="Safari";})(BrowserName$2||(BrowserName$2={}));var OSName$1;(function(OSName){OSName["WINDOWS"]="Windows";OSName["MAC"]="macOS";OSName["LINUX"]="Linux";})(OSName$1||(OSName$1={}));class BrowserInfo{static getBrowserDetails(){return this.browser.getBrowser();}static getOSDetails(){return this.browser.getOS();}static getPlatformDetails(){return this.browser.getPlatform();}static getEngineDetails(){return this.browser.getEngine();}static isChrome(){return this.browser.getBrowserName()===BrowserName$2.CHROME;}static isFirefox(){return this.browser.getBrowserName()===BrowserName$2.FIREFOX;}static isEdge(){return this.browser.getBrowserName()===BrowserName$2.EDGE;}static isSafari(){return this.browser.getBrowserName()===BrowserName$2.SAFARI;}static isWindows(){return this.browser.getOSName()===OSName$1.WINDOWS;}static isMac(){return this.browser.getOSName()===OSName$1.MAC;}static isLinux(){return this.browser.getOSName()===OSName$1.LINUX;}static isVersionGreaterThan(version){var browserName=this.browser.getBrowserName();var checkTree={[browserName]:">".concat(version)};return this.browser.satisfies(checkTree);}static isVersionGreaterThanOrEqualTo(version){var browserName=this.browser.getBrowserName();var checkTree={[browserName]:">=".concat(version)};return this.browser.satisfies(checkTree);}static isVersionLessThan(version){var browserName=this.browser.getBrowserName();var checkTree={[browserName]:"<".concat(version)};return this.browser.satisfies(checkTree);}static isVersionLessThanOrEqualTo(version){var browserName=this.browser.getBrowserName();var checkTree={[browserName]:"<=".concat(version)};return this.browser.satisfies(checkTree);}static isSubVersionOf(version){var browserName=this.browser.getBrowserName();var checkTree={[browserName]:"~".concat(version)};return this.browser.satisfies(checkTree);}}BrowserInfo.browser=Bowser$2.getParser(window.navigator.userAgent);var CapabilityState$2;(function(CapabilityState){CapabilityState["NOT_CAPABLE"]="not capable";CapabilityState["CAPABLE"]="capable";CapabilityState["UNKNOWN"]="unknown";})(CapabilityState$2||(CapabilityState$2={}));var simulcastMaxFrameSizes={0:'240',1:'2304',2:'8160'};class JmpLine extends Line$1{static fromSdpLine(line){if(!JmpLine.regex.test(line)){return undefined;}var tokens=line.match(JmpLine.regex);var versions=tokens[1].split(',').filter(v=>v.length);return new JmpLine(versions);}constructor(versions){super();this.versions=versions;}toSdpLine(){return "a=jmp:".concat(this.versions.join(','));}}JmpLine.regex=/^jmp:((?:v\d+,?)+)/;class JmpStreamIdModeLine extends Line$1{constructor(streamIdMode){super();this.streamIdMode=streamIdMode;}static fromSdpLine(line){if(!JmpStreamIdModeLine.regex.test(line)){return undefined;}var tokens=line.match(JmpStreamIdModeLine.regex);var mode=tokens[1];return new JmpStreamIdModeLine(mode);}toSdpLine(){return "a=jmp-stream-id-mode:".concat(this.streamIdMode);}}JmpStreamIdModeLine.regex=/^jmp-stream-id-mode:(MID-RID|SSRC)$/;class JmpSourceLine extends Line$1{constructor(source,csi){super();this.source=source;this.csi=csi;}static fromSdpLine(line){if(!JmpSourceLine.regex.test(line)){return undefined;}var tokens=line.match(JmpSourceLine.regex);var source=tokens[1];var csi=tokens[2];return new JmpSourceLine(source,csi);}toSdpLine(){var line="a=jmp-source:".concat(this.source);if(this.csi){line+=" csi=".concat(this.csi);}return line;}}JmpSourceLine.regex=new RegExp("^jmp-source:(".concat(ANY_NON_WS$1,") (?:csi=(").concat(ANY_NON_WS$1,"))"));DefaultSdpGrammar$1.addParser('a',JmpLine.fromSdpLine);DefaultSdpGrammar$1.addParser('a',JmpSourceLine.fromSdpLine);DefaultSdpGrammar$1.addParser('a',JmpStreamIdModeLine.fromSdpLine);function deepCopy(source){return Array.isArray(source)?source.map(item=>deepCopy(item)):source instanceof Map?new Map(source):source instanceof Date?new Date(source.getTime()):source&&typeof source==='object'?Object.getOwnPropertyNames(source).reduce((o,prop)=>{Object.defineProperty(o,prop,Object.getOwnPropertyDescriptor(source,prop));o[prop]=deepCopy(source[prop]);return o;},Object.create(Object.getPrototypeOf(source))):source;}var ipv4Regex=/(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.)(\d{1,3}\b)/g;var ipv6Regex=/(\b[\da-fA-F]{1,4}(:[\da-fA-F]{1,4}){7}\b)/g;function matchMediaDescriptionsInAnswer(parsedOffer,parsedAnswer){parsedAnswer.session.groups=parsedOffer.session.groups;parsedAnswer.media=parsedOffer.media.map(offerMediaDescription=>{if(!offerMediaDescription.mid){logErrorAndThrow(exports.WcmeErrorType.OFFER_ANSWER_MISMATCH,"Named media groups can only be set for audio.");}var answerMediaDescription=parsedAnswer.media.find(m=>m.mid===offerMediaDescription.mid);if(answerMediaDescription){return answerMediaDescription;}if(!(offerMediaDescription instanceof AvMediaDescription$1)){logErrorAndThrow(exports.WcmeErrorType.OFFER_ANSWER_MISMATCH,"Answer is missing a non-AV media description for MID ".concat(offerMediaDescription.mid,"."));}var startingMediaDescription=parsedAnswer.avMedia.find(m=>m.type===offerMediaDescription.type);if(!startingMediaDescription){logErrorAndThrow(exports.WcmeErrorType.OFFER_ANSWER_MISMATCH,"Answer has no media description of type ".concat(offerMediaDescription.type,", can't generate synthetic answer media description for MID ").concat(offerMediaDescription.mid,"."));}var fakeCorrespondingDescription=deepCopy(startingMediaDescription);fakeCorrespondingDescription.mid=offerMediaDescription.mid;fakeCorrespondingDescription.simulcast=undefined;fakeCorrespondingDescription.bandwidth=undefined;if(offerMediaDescription.direction==='sendrecv'||offerMediaDescription.direction==='sendonly'){fakeCorrespondingDescription.direction='recvonly';}if(offerMediaDescription.direction==='recvonly'){fakeCorrespondingDescription.direction='sendonly';}return fakeCorrespondingDescription;});}function setupBundle(parsedSdp,bundlePolicy,midMap){if(bundlePolicy==='max-compat'){var audioMainMids=midMap.get(exports.MediaType.AudioMain);var videoMainMids=midMap.get(exports.MediaType.VideoMain);var audioContentMids=midMap.get(exports.MediaType.AudioSlides);var videoContentMids=midMap.get(exports.MediaType.VideoSlides);parsedSdp.session.groups.splice(0,parsedSdp.session.groups.length);if(audioMainMids){parsedSdp.session.groups.push(new BundleGroupLine$1(audioMainMids));}if(videoMainMids){parsedSdp.session.groups.push(new BundleGroupLine$1(videoMainMids));}if(audioContentMids){parsedSdp.session.groups.push(new BundleGroupLine$1(audioContentMids));}if(videoContentMids){parsedSdp.session.groups.push(new BundleGroupLine$1(videoContentMids));}}}function filterRecvOnlyMediaDescriptions(parsedSdp){var filteredMids=[];parsedSdp.media=parsedSdp.media.filter(media=>{if(media instanceof ApplicationMediaDescription$1||media instanceof AvMediaDescription$1&&media.direction!=='recvonly'){filteredMids.push(media.mid);return true;}return false;});parsedSdp.session.groups.forEach(g=>{g.mids=g.mids.filter(m=>filteredMids.includes(m));});}function injectContentType(mediaDescription,mediaContent){if(mediaContent===exports.MediaContent.Slides){mediaDescription.addLine(new ContentLine$1(['slides']));}}function injectJmpAttributes(mediaDescription,csi,streamSignalingMode){if(!mediaDescription.otherLines.find(line=>line instanceof JmpLine)){mediaDescription.addLine(new JmpLine(['v1']));}if(!mediaDescription.otherLines.find(line=>line instanceof JmpSourceLine)){mediaDescription.addLine(new JmpSourceLine(mediaDescription.mid,csi.toString()));}if(!mediaDescription.otherLines.find(line=>line instanceof JmpStreamIdModeLine)){mediaDescription.addLine(new JmpStreamIdModeLine(streamSignalingMode));}}function injectDummyCandidates(mediaDescription){mediaDescription.iceInfo.candidates=[];mediaDescription.addLine(new CandidateLine$1('dummy1',1,'udp',3,'0.0.0.0',9,'host'));mediaDescription.addLine(new CandidateLine$1('dummy2',1,'tcp',2,'0.0.0.0',9,'host'));mediaDescription.addLine(new CandidateLine$1('dummy3',1,'udp',1,'0.0.0.0',9,'relay'));}function maskIp(sdp){var maskedSdp=sdp.replace(ipv4Regex,(match,firstOctets)=>{return "".concat(firstOctets,"0");});maskedSdp=maskedSdp.replace(ipv6Regex,match=>{return match.replace(/:[\da-fA-F]{1,4}$/,':0');});return maskedSdp;}function removeMidRidExtensions(mediaDescription){mediaDescription.extMaps.forEach((extMapLine,extId,extMap)=>{if(/^urn:ietf:params:rtp-hdrext:sdes:(?:mid|rtp-stream-id|repaired-rtp-stream-id)$/.test(extMapLine.uri)){extMap.delete(extId);}});}function addVlaExtension(mediaDescription){var vlaExtensionUri='http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00';if(![...mediaDescription.extMaps.values()].some(extMapLine=>extMapLine.uri===vlaExtensionUri)){mediaDescription.addExtension({uri:vlaExtensionUri});}}function applyFormatParameters(mediaDescription,paramsMap){paramsMap.forEach((value,param)=>{[...mediaDescription.codecs.values()].filter(ci=>ci.name==='H264'||ci.name==='opus').forEach(ci=>{if(value===null){ci.fmtParams.delete(param);}else {ci.fmtParams.set(param,"".concat(value));}});});}function generateSsrc(){return Math.floor(Math.random()*0xffffffff)+1;}class EgressSdpMunger{constructor(options){this.streamIds=[];this.customCodecParameters=new Map();this.egressMungerOptions=options;}reset(){this.streamIds=[];}mungeLocalDescription(mediaDescription,options){var _a;retainCodecsByCodecName(mediaDescription,['h264','opus','rtx']);if(options.forceSoftwareEncoder){var isH264Cbp=codecInfo=>{var _a;if(((_a=codecInfo.name)===null||_a===void 0?void 0:_a.toLowerCase())==='h264'){var profileLevelId=codecInfo.fmtParams.get('profile-level-id');return !!profileLevelId&&/^42[^0]/.test(profileLevelId);}return false;};if([...mediaDescription.codecs.values()].some(isH264Cbp)){retainCodecs(mediaDescription,codecInfo=>{var _a;return ((_a=codecInfo.name)===null||_a===void 0?void 0:_a.toLowerCase())!=='h264'||isH264Cbp(codecInfo);});}else {logger.log("No H.264 CBP present in m-line with MID ".concat(mediaDescription.mid,", so all H.264 codecs have been retained."));}}if(mediaDescription.codecs.size===0){logErrorAndThrow(exports.WcmeErrorType.SDP_MUNGE_MISSING_CODECS,"No codecs present in m-line with MID ".concat(mediaDescription.mid," after filtering."));}mediaDescription.rids=[];mediaDescription.simulcast=undefined;removeMidRidExtensions(mediaDescription);if(options.simulcastEnabled){addVlaExtension(mediaDescription);}var numStreams=options.simulcastEnabled?3:1;if(!this.streamIds.length){if(mediaDescription.ssrcs.length){var ssrcs=[...new Set(mediaDescription.ssrcs.map(ssrcLine=>ssrcLine.ssrcId))];mediaDescription.ssrcGroups.forEach(sg=>{if(!sg.ssrcs.every(ssrc=>ssrcs.includes(ssrc))){logErrorAndThrow(exports.WcmeErrorType.SDP_MUNGE_FAILED,'SSRC present in SSRC groups is missing from SSRC lines.');}});var rtxSsrcGroups=mediaDescription.ssrcGroups.filter(sg=>sg.semantics==='FID');if(rtxSsrcGroups.length&&rtxSsrcGroups.length!==numStreams){logErrorAndThrow(exports.WcmeErrorType.SDP_MUNGE_FAILED,"Expected ".concat(numStreams," RTX SSRC groups, got ").concat(rtxSsrcGroups.length,"."));}rtxSsrcGroups.forEach(sg=>{this.streamIds.push({ssrc:sg.ssrcs[0],rtxSsrc:sg.ssrcs[1]});});var simulcastSsrcs=(_a=mediaDescription.ssrcGroups.find(sg=>sg.semantics==='SIM'))===null||_a===void 0?void 0:_a.ssrcs;if(simulcastSsrcs){if(simulcastSsrcs.length!==numStreams||!this.streamIds.every(streamId=>simulcastSsrcs.includes(streamId.ssrc))){logErrorAndThrow(exports.WcmeErrorType.SDP_MUNGE_FAILED,'SSRCs in simulcast SSRC group do not match primary SSRCs in RTX SSRC groups.');}this.streamIds.sort((a,b)=>simulcastSsrcs.indexOf(a.ssrc)-simulcastSsrcs.indexOf(b.ssrc));}else if(rtxSsrcGroups.length>1){logErrorAndThrow(exports.WcmeErrorType.SDP_MUNGE_FAILED,'Multiple RTX SSRC groups but no simulcast SSRC group found.');}if(!this.streamIds.length){this.streamIds.push({ssrc:ssrcs[0]});}}else {[...Array(numStreams).keys()].forEach(()=>{var newStreamId={ssrc:generateSsrc()};if(options.rtxEnabled){newStreamId.rtxSsrc=generateSsrc();}this.streamIds.push(newStreamId);});}}mediaDescription.ssrcs=[];mediaDescription.ssrcGroups=[];this.streamIds.forEach(streamId=>{var rtpSsrc=streamId.ssrc;mediaDescription.addLine(new SsrcLine$1(rtpSsrc,'cname',"".concat(rtpSsrc,"-cname")));mediaDescription.addLine(new SsrcLine$1(rtpSsrc,'msid','-',"".concat(mediaDescription.mid)));if(options.rtxEnabled){var rtxSsrc=streamId.rtxSsrc;mediaDescription.addLine(new SsrcLine$1(rtxSsrc,'cname',"".concat(rtpSsrc,"-cname")));mediaDescription.addLine(new SsrcLine$1(rtxSsrc,'msid','-',"".concat(mediaDescription.mid)));mediaDescription.addLine(new SsrcGroupLine$1('FID',[rtpSsrc,rtxSsrc]));}});if(options.simulcastEnabled){mediaDescription.addLine(new SsrcGroupLine$1('SIM',this.streamIds.map(streamId=>streamId.ssrc)));}applyFormatParameters(mediaDescription,this.customCodecParameters);if(options.twccDisabled){disableTwcc(mediaDescription);}}mungeLocalDescriptionForRemoteServer(mediaDescription,mediaContent,csi){injectContentType(mediaDescription,mediaContent);injectJmpAttributes(mediaDescription,csi,'SSRC');if(!this.egressMungerOptions.doFullIce){injectDummyCandidates(mediaDescription);}if(mediaDescription.type==='video'){var ssrcGroup=mediaDescription.ssrcGroups.find(sg=>sg.semantics==='SIM');if(ssrcGroup){ssrcGroup.ssrcs.forEach((ssrc,index)=>{mediaDescription.addLine(new SsrcLine$1(ssrc,'fmtp',"* max-fs=".concat(simulcastMaxFrameSizes[index])));});}}}mungeRemoteDescription(mediaDescription){if(retainCandidatesByTransportType(mediaDescription,['udp','tcp'])){logger.log("Some unsupported remote candidates have been removed from mid ".concat(mediaDescription.mid));}mediaDescription.bandwidth=undefined;[...mediaDescription.codecs.values()].forEach(ci=>{ci.fmtParams.set('x-google-start-bitrate','60000');});}getSenderIds(){return this.streamIds;}getEncodingIndexForStreamId(streamId){return this.streamIds.findIndex(currStreamId=>compareStreamIds(currStreamId,streamId));}setCodecParameters(parameters){Object.entries(parameters).forEach(_ref2=>{var[param,value]=_ref2;this.customCodecParameters.set(param,value);});}deleteCodecParameters(parameters){parameters.forEach(param=>{this.customCodecParameters.set(param,null);});}}var events$1={exports:{}};var R$1=typeof Reflect==='object'?Reflect:null;var ReflectApply$1=R$1&&typeof R$1.apply==='function'?R$1.apply:function ReflectApply(target,receiver,args){return Function.prototype.apply.call(target,receiver,args);};var ReflectOwnKeys$1;if(R$1&&typeof R$1.ownKeys==='function'){ReflectOwnKeys$1=R$1.ownKeys;}else if(Object.getOwnPropertySymbols){ReflectOwnKeys$1=function ReflectOwnKeys(target){return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));};}else {ReflectOwnKeys$1=function ReflectOwnKeys(target){return Object.getOwnPropertyNames(target);};}function ProcessEmitWarning$1(warning){if(console&&console.warn)console.warn(warning);}var NumberIsNaN$1=Number.isNaN||function NumberIsNaN(value){return value!==value;};function EventEmitter$3(){EventEmitter$3.init.call(this);}events$1.exports=EventEmitter$3;events$1.exports.once=once$2;// Backwards-compat with node 0.10.x
2888
2893
  EventEmitter$3.EventEmitter=EventEmitter$3;EventEmitter$3.prototype._events=undefined;EventEmitter$3.prototype._eventsCount=0;EventEmitter$3.prototype._maxListeners=undefined;// By default EventEmitters will print a warning if more than 10 listeners are
2889
2894
  // added to it. This is a useful default which helps finding memory leaks.
2890
2895
  var defaultMaxListeners$1=10;function checkListener$1(listener){if(typeof listener!=='function'){throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof listener);}}Object.defineProperty(EventEmitter$3,'defaultMaxListeners',{enumerable:true,get:function get(){return defaultMaxListeners$1;},set:function set(arg){if(typeof arg!=='number'||arg<0||NumberIsNaN$1(arg)){throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+arg+'.');}defaultMaxListeners$1=arg;}});EventEmitter$3.init=function(){if(this._events===undefined||this._events===Object.getPrototypeOf(this)._events){this._events=Object.create(null);this._eventsCount=0;}this._maxListeners=this._maxListeners||undefined;};// Obviously not all Emitters should be limited to 10. This function allows
@@ -6466,27 +6471,27 @@ function mungeRemoteSdp(config, sdp) {
6466
6471
  return parsedSdp.toString();
6467
6472
  }
6468
6473
 
6469
- exports.Event = void 0;
6470
- (function (Event) {
6471
- Event["ICE_GATHERING_STATE_CHANGED"] = "iceGatheringState:changed";
6472
- Event["PEER_CONNECTION_STATE_CHANGED"] = "peerConnectionState:changed";
6473
- Event["ICE_CONNECTION_STATE_CHANGED"] = "iceConnectionState:changed";
6474
- Event["REMOTE_TRACK_ADDED"] = "remoteTrack:added";
6475
- Event["ROAP_MESSAGE_TO_SEND"] = "roap:messageToSend";
6476
- Event["ROAP_STARTED"] = "roap:started";
6477
- Event["ROAP_FAILURE"] = "roap:failure";
6478
- Event["ROAP_DONE"] = "roap:done";
6479
- Event["DTMF_TONE_CHANGED"] = "dtmfTone:changed";
6480
- Event["ACTIVE_SPEAKERS_CHANGED"] = "activeSpeakers:changed";
6481
- Event["VIDEO_SOURCES_COUNT_CHANGED"] = "videoSourcesCount:changed";
6482
- Event["AUDIO_SOURCES_COUNT_CHANGED"] = "audioSourcesCount:changed";
6483
- Event["REMOTE_SDP_ANSWER_PROCESSED"] = "remoteSdpAnswer:processed";
6484
- Event["REMOTE_SDP_OFFER_PROCESSED"] = "remoteSdpOffer:processed";
6485
- Event["LOCAL_SDP_OFFER_GENERATED"] = "localSdpOffer:processed";
6486
- Event["LOCAL_SDP_ANSWER_GENERATED"] = "localSdpAnswer:processed";
6487
- Event["ICE_CANDIDATE"] = "iceCandidate";
6488
- Event["ICE_CANDIDATE_ERROR"] = "iceCandidate:error";
6489
- })(exports.Event || (exports.Event = {}));
6474
+ exports.MediaConnectionEventNames = void 0;
6475
+ (function (MediaConnectionEventNames) {
6476
+ MediaConnectionEventNames["ICE_GATHERING_STATE_CHANGED"] = "iceGatheringState:changed";
6477
+ MediaConnectionEventNames["PEER_CONNECTION_STATE_CHANGED"] = "peerConnectionState:changed";
6478
+ MediaConnectionEventNames["ICE_CONNECTION_STATE_CHANGED"] = "iceConnectionState:changed";
6479
+ MediaConnectionEventNames["REMOTE_TRACK_ADDED"] = "remoteTrack:added";
6480
+ MediaConnectionEventNames["ROAP_MESSAGE_TO_SEND"] = "roap:messageToSend";
6481
+ MediaConnectionEventNames["ROAP_STARTED"] = "roap:started";
6482
+ MediaConnectionEventNames["ROAP_FAILURE"] = "roap:failure";
6483
+ MediaConnectionEventNames["ROAP_DONE"] = "roap:done";
6484
+ MediaConnectionEventNames["DTMF_TONE_CHANGED"] = "dtmfTone:changed";
6485
+ MediaConnectionEventNames["ACTIVE_SPEAKERS_CHANGED"] = "activeSpeakers:changed";
6486
+ MediaConnectionEventNames["VIDEO_SOURCES_COUNT_CHANGED"] = "videoSourcesCount:changed";
6487
+ MediaConnectionEventNames["AUDIO_SOURCES_COUNT_CHANGED"] = "audioSourcesCount:changed";
6488
+ MediaConnectionEventNames["REMOTE_SDP_ANSWER_PROCESSED"] = "remoteSdpAnswer:processed";
6489
+ MediaConnectionEventNames["REMOTE_SDP_OFFER_PROCESSED"] = "remoteSdpOffer:processed";
6490
+ MediaConnectionEventNames["LOCAL_SDP_OFFER_GENERATED"] = "localSdpOffer:processed";
6491
+ MediaConnectionEventNames["LOCAL_SDP_ANSWER_GENERATED"] = "localSdpAnswer:processed";
6492
+ MediaConnectionEventNames["ICE_CANDIDATE"] = "iceCandidate";
6493
+ MediaConnectionEventNames["ICE_CANDIDATE_ERROR"] = "iceCandidate:error";
6494
+ })(exports.MediaConnectionEventNames || (exports.MediaConnectionEventNames = {}));
6490
6495
  exports.RemoteTrackType = void 0;
6491
6496
  (function (RemoteTrackType) {
6492
6497
  RemoteTrackType["AUDIO"] = "audio";
@@ -6506,8 +6511,8 @@ exports.ErrorType = void 0;
6506
6511
  ErrorType["TIMEOUT"] = "TIMEOUT";
6507
6512
  })(exports.ErrorType || (exports.ErrorType = {}));
6508
6513
 
6509
- function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6510
- function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6514
+ function ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6515
+ function _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$4(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6511
6516
  var localTrackTypes = [{
6512
6517
  type: 'audio',
6513
6518
  kind: 'audio'
@@ -6529,8 +6534,8 @@ class MediaConnection extends EventEmitter$5 {
6529
6534
  _defineProperty__default["default"](this, "mediaDirection", void 0);
6530
6535
  _defineProperty__default["default"](this, "remoteQualityLevel", void 0);
6531
6536
  this.config = mediaConnectionConfig;
6532
- this.mediaDirection = _objectSpread$3({}, options.direction);
6533
- this.localTracks = _objectSpread$3({}, options.localTracks);
6537
+ this.mediaDirection = _objectSpread$4({}, options.direction);
6538
+ this.localTracks = _objectSpread$4({}, options.localTracks);
6534
6539
  this.remoteQualityLevel = options.remoteQualityLevel;
6535
6540
  this.id = debugId || 'MediaConnection';
6536
6541
  this.transceivers = {};
@@ -6542,12 +6547,12 @@ class MediaConnection extends EventEmitter$5 {
6542
6547
  this.pc.oniceconnectionstatechange = this.onIceConnectionStateChange.bind(this);
6543
6548
  this.pc.onconnectionstatechange = this.onPeerConnectionStateChange.bind(this);
6544
6549
  this.pc.addEventListener('icecandidate', event => {
6545
- this.emit(exports.Event.ICE_CANDIDATE, {
6550
+ this.emit(exports.MediaConnectionEventNames.ICE_CANDIDATE, {
6546
6551
  candidate: event.candidate
6547
6552
  });
6548
6553
  });
6549
6554
  this.pc.addEventListener('icecandidateerror', event => {
6550
- this.emit(exports.Event.ICE_CANDIDATE_ERROR, {
6555
+ this.emit(exports.MediaConnectionEventNames.ICE_CANDIDATE_ERROR, {
6551
6556
  error: event
6552
6557
  });
6553
6558
  });
@@ -6651,7 +6656,7 @@ class MediaConnection extends EventEmitter$5 {
6651
6656
  updateLocalTracks(tracks) {
6652
6657
  return this.updateTransceivers({
6653
6658
  localTracks: tracks,
6654
- direction: _objectSpread$3({}, this.mediaDirection)
6659
+ direction: _objectSpread$4({}, this.mediaDirection)
6655
6660
  });
6656
6661
  }
6657
6662
  updateDirection(direction) {
@@ -6757,7 +6762,7 @@ class MediaConnection extends EventEmitter$5 {
6757
6762
  }
6758
6763
  onToneChange(event) {
6759
6764
  this.log('onToneChange()', "emitting Event.DTMF_TONE_CHANGED with tone=\"".concat(event.tone, "\""));
6760
- this.emit(exports.Event.DTMF_TONE_CHANGED, {
6765
+ this.emit(exports.MediaConnectionEventNames.DTMF_TONE_CHANGED, {
6761
6766
  tone: event.tone
6762
6767
  });
6763
6768
  }
@@ -6801,21 +6806,21 @@ class MediaConnection extends EventEmitter$5 {
6801
6806
  switch (trackMediaID) {
6802
6807
  case MEDIA_ID.AUDIO_TRACK:
6803
6808
  this.log('onTrack()', 'emitting Event.REMOTE_TRACK_ADDED with type=AUDIO');
6804
- this.emit(exports.Event.REMOTE_TRACK_ADDED, {
6809
+ this.emit(exports.MediaConnectionEventNames.REMOTE_TRACK_ADDED, {
6805
6810
  type: exports.RemoteTrackType.AUDIO,
6806
6811
  track
6807
6812
  });
6808
6813
  break;
6809
6814
  case MEDIA_ID.VIDEO_TRACK:
6810
6815
  this.log('onTrack()', 'emitting Event.REMOTE_TRACK_ADDED with type=VIDEO');
6811
- this.emit(exports.Event.REMOTE_TRACK_ADDED, {
6816
+ this.emit(exports.MediaConnectionEventNames.REMOTE_TRACK_ADDED, {
6812
6817
  type: exports.RemoteTrackType.VIDEO,
6813
6818
  track
6814
6819
  });
6815
6820
  break;
6816
6821
  case MEDIA_ID.SHARE_TRACK:
6817
6822
  this.log('onTrack()', 'emitting Event.REMOTE_TRACK_ADDED with type=SCREENSHARE_VIDEO');
6818
- this.emit(exports.Event.REMOTE_TRACK_ADDED, {
6823
+ this.emit(exports.MediaConnectionEventNames.REMOTE_TRACK_ADDED, {
6819
6824
  type: exports.RemoteTrackType.SCREENSHARE_VIDEO,
6820
6825
  track
6821
6826
  });
@@ -6840,13 +6845,13 @@ class MediaConnection extends EventEmitter$5 {
6840
6845
  }
6841
6846
  onPeerConnectionStateChange() {
6842
6847
  this.log('onPeerConnectionStateChange()', "callback called: peerConnectionState=".concat(this.pc.connectionState));
6843
- this.emit(exports.Event.PEER_CONNECTION_STATE_CHANGED, {
6848
+ this.emit(exports.MediaConnectionEventNames.PEER_CONNECTION_STATE_CHANGED, {
6844
6849
  state: this.pc.connectionState
6845
6850
  });
6846
6851
  }
6847
6852
  onIceConnectionStateChange() {
6848
6853
  this.log('onIceConnectionStateChange()', "callback called: iceConnectionState=".concat(this.pc.iceConnectionState));
6849
- this.emit(exports.Event.ICE_CONNECTION_STATE_CHANGED, {
6854
+ this.emit(exports.MediaConnectionEventNames.ICE_CONNECTION_STATE_CHANGED, {
6850
6855
  state: this.pc.iceConnectionState
6851
6856
  });
6852
6857
  }
@@ -6884,7 +6889,7 @@ class MediaConnection extends EventEmitter$5 {
6884
6889
  if (this.config.sdpMunging.h264MaxFs) {
6885
6890
  this.warn('createSdpMungingConfig', 'conflict: both config.sdpMunging.h264MaxFs and receiveOptions.remoteQualityLevel are set, remoteQualityLevel will override the config');
6886
6891
  }
6887
- return _objectSpread$3(_objectSpread$3({}, this.config.sdpMunging), {}, {
6892
+ return _objectSpread$4(_objectSpread$4({}, this.config.sdpMunging), {}, {
6888
6893
  h264MaxFs: maxFsValues[this.remoteQualityLevel]
6889
6894
  });
6890
6895
  }
@@ -6902,7 +6907,7 @@ class MediaConnection extends EventEmitter$5 {
6902
6907
  }).then(() => this.waitForIceCandidates()).then(() => {
6903
6908
  var _this$pc$localDescrip;
6904
6909
  var mungedSdp = mungeLocalSdp(sdpMungingConfig, ((_this$pc$localDescrip = this.pc.localDescription) === null || _this$pc$localDescrip === void 0 ? void 0 : _this$pc$localDescrip.sdp) || '');
6905
- this.emit(exports.Event.LOCAL_SDP_OFFER_GENERATED);
6910
+ this.emit(exports.MediaConnectionEventNames.LOCAL_SDP_OFFER_GENERATED);
6906
6911
  return {
6907
6912
  sdp: mungedSdp
6908
6913
  };
@@ -6926,7 +6931,7 @@ class MediaConnection extends EventEmitter$5 {
6926
6931
  return this.pc.setRemoteDescription(new window.RTCSessionDescription({
6927
6932
  type: 'offer',
6928
6933
  sdp: mungedRemoteSdp
6929
- })).then(() => this.emit(exports.Event.REMOTE_SDP_OFFER_PROCESSED)).then(() => this.pc.createAnswer()).then(answer => {
6934
+ })).then(() => this.emit(exports.MediaConnectionEventNames.REMOTE_SDP_OFFER_PROCESSED)).then(() => this.pc.createAnswer()).then(answer => {
6930
6935
  var mungedAnswer = {
6931
6936
  type: answer.type,
6932
6937
  sdp: mungeLocalSdpForBrowser(sdpMungingConfig, (answer === null || answer === void 0 ? void 0 : answer.sdp) || '')
@@ -6935,7 +6940,7 @@ class MediaConnection extends EventEmitter$5 {
6935
6940
  }).then(() => this.waitForIceCandidates()).then(() => {
6936
6941
  var _this$pc$localDescrip2;
6937
6942
  var mungedLocalSdp = mungeLocalSdp(sdpMungingConfig, ((_this$pc$localDescrip2 = this.pc.localDescription) === null || _this$pc$localDescrip2 === void 0 ? void 0 : _this$pc$localDescrip2.sdp) || '');
6938
- this.emit(exports.Event.LOCAL_SDP_ANSWER_GENERATED);
6943
+ this.emit(exports.MediaConnectionEventNames.LOCAL_SDP_ANSWER_GENERATED);
6939
6944
  return {
6940
6945
  sdp: mungedLocalSdp
6941
6946
  };
@@ -6959,7 +6964,7 @@ class MediaConnection extends EventEmitter$5 {
6959
6964
  type: 'answer',
6960
6965
  sdp: mungedRemoteSdp
6961
6966
  })).then(result => {
6962
- this.emit(exports.Event.REMOTE_SDP_ANSWER_PROCESSED);
6967
+ this.emit(exports.MediaConnectionEventNames.REMOTE_SDP_ANSWER_PROCESSED);
6963
6968
  return result;
6964
6969
  }).catch(error => {
6965
6970
  throw new SdpAnswerHandlingError("handleRemoteAnswer() failure: ".concat(error.message), {
@@ -7016,7 +7021,7 @@ class MediaConnection extends EventEmitter$5 {
7016
7021
  }
7017
7022
  this.pc.onicegatheringstatechange = () => {
7018
7023
  this.log('waitForIceCandidates()', "iceGatheringState changed to ".concat(this.pc.iceGatheringState));
7019
- this.emit(exports.Event.ICE_GATHERING_STATE_CHANGED, {
7024
+ this.emit(exports.MediaConnectionEventNames.ICE_GATHERING_STATE_CHANGED, {
7020
7025
  state: this.pc.iceGatheringState
7021
7026
  });
7022
7027
  if (this.pc.iceGatheringState === 'complete') {
@@ -14430,8 +14435,8 @@ function createMachine(config, options) {
14430
14435
 
14431
14436
  var assign = assign$1;
14432
14437
 
14433
- function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14434
- function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
14438
+ function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14439
+ function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
14435
14440
  var WEB_TIEBREAKER_VALUE = 0xfffffffe;
14436
14441
  var MAX_RETRIES = 2;
14437
14442
  var DEFAULT_IS_OK_IN_TRANSACTION = true;
@@ -14471,13 +14476,13 @@ class Roap extends EventEmitter$5 {
14471
14476
  browserError: {
14472
14477
  onEntry: (context, event) => {
14473
14478
  this.error('FSM', "browserError state onEntry: context=".concat(JSON.stringify(context), ":"), event.data);
14474
- this.emit(exports.Event.ROAP_FAILURE, event.data);
14479
+ this.emit(exports.MediaConnectionEventNames.ROAP_FAILURE, event.data);
14475
14480
  }
14476
14481
  },
14477
14482
  remoteError: {
14478
14483
  onEntry: (_, event) => {
14479
- this.log('FSM', 'remoteError state onEntry called, emitting Event.ROAP_FAILURE');
14480
- this.emit(exports.Event.ROAP_FAILURE, event.data);
14484
+ this.log('FSM', 'remoteError state onEntry called, emitting MediaConnectionEventNames.ROAP_FAILURE');
14485
+ this.emit(exports.MediaConnectionEventNames.ROAP_FAILURE, event.data);
14481
14486
  }
14482
14487
  },
14483
14488
  idle: {
@@ -14693,28 +14698,28 @@ class Roap extends EventEmitter$5 {
14693
14698
  handleRemoteOffer: (_context, event) => this.handleRemoteOfferCallback(event.sdp)
14694
14699
  },
14695
14700
  actions: {
14696
- enqueueNewOfferCreation: assign(context => _objectSpread$2(_objectSpread$2({}, context), {}, {
14701
+ enqueueNewOfferCreation: assign(context => _objectSpread$3(_objectSpread$3({}, context), {}, {
14697
14702
  pendingLocalOffer: true
14698
14703
  })),
14699
- resetPendingLocalOffer: assign(context => _objectSpread$2(_objectSpread$2({}, context), {}, {
14704
+ resetPendingLocalOffer: assign(context => _objectSpread$3(_objectSpread$3({}, context), {}, {
14700
14705
  pendingLocalOffer: false
14701
14706
  })),
14702
- increaseSeq: assign(context => _objectSpread$2(_objectSpread$2({}, context), {}, {
14707
+ increaseSeq: assign(context => _objectSpread$3(_objectSpread$3({}, context), {}, {
14703
14708
  seq: context.seq + 1
14704
14709
  })),
14705
- updateSeq: assign((context, event) => _objectSpread$2(_objectSpread$2({}, context), {}, {
14710
+ updateSeq: assign((context, event) => _objectSpread$3(_objectSpread$3({}, context), {}, {
14706
14711
  seq: event.seq
14707
14712
  })),
14708
- increaseRetryCounter: assign(context => _objectSpread$2(_objectSpread$2({}, context), {}, {
14713
+ increaseRetryCounter: assign(context => _objectSpread$3(_objectSpread$3({}, context), {}, {
14709
14714
  retryCounter: context.retryCounter + 1
14710
14715
  })),
14711
- resetRetryCounter: assign(context => _objectSpread$2(_objectSpread$2({}, context), {}, {
14716
+ resetRetryCounter: assign(context => _objectSpread$3(_objectSpread$3({}, context), {}, {
14712
14717
  retryCounter: 0
14713
14718
  })),
14714
- setOfferRequestFlag: assign(context => _objectSpread$2(_objectSpread$2({}, context), {}, {
14719
+ setOfferRequestFlag: assign(context => _objectSpread$3(_objectSpread$3({}, context), {}, {
14715
14720
  isHandlingOfferRequest: true
14716
14721
  })),
14717
- resetOfferRequestFlag: assign(context => _objectSpread$2(_objectSpread$2({}, context), {}, {
14722
+ resetOfferRequestFlag: assign(context => _objectSpread$3(_objectSpread$3({}, context), {}, {
14718
14723
  isHandlingOfferRequest: false
14719
14724
  })),
14720
14725
  handleGlare: (_context, event) => {
@@ -14741,11 +14746,11 @@ class Roap extends EventEmitter$5 {
14741
14746
  rejectPendingInitiateOfferPromises: (_context, event) => this.rejectPendingInitiateOfferPromises(event.data),
14742
14747
  updateIsOkInTransaction: assign((context, event) => {
14743
14748
  var _event$headers;
14744
- return _objectSpread$2(_objectSpread$2({}, context), {}, {
14749
+ return _objectSpread$3(_objectSpread$3({}, context), {}, {
14745
14750
  isOkInTransaction: !((_event$headers = event.headers) !== null && _event$headers !== void 0 && _event$headers.includes(HEADER_NO_OK_IN_TRANSACTION))
14746
14751
  });
14747
14752
  }),
14748
- resetOkInTransaction: assign(context => _objectSpread$2(_objectSpread$2({}, context), {}, {
14753
+ resetOkInTransaction: assign(context => _objectSpread$3(_objectSpread$3({}, context), {}, {
14749
14754
  isOkInTransaction: DEFAULT_IS_OK_IN_TRANSACTION
14750
14755
  }))
14751
14756
  },
@@ -14787,7 +14792,7 @@ class Roap extends EventEmitter$5 {
14787
14792
  }
14788
14793
  sendRoapOfferMessage(seq, sdp) {
14789
14794
  this.log('sendRoapOfferMessage', 'emitting ROAP OFFER');
14790
- this.emit(exports.Event.ROAP_MESSAGE_TO_SEND, {
14795
+ this.emit(exports.MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND, {
14791
14796
  roapMessage: {
14792
14797
  seq,
14793
14798
  messageType: 'OFFER',
@@ -14798,7 +14803,7 @@ class Roap extends EventEmitter$5 {
14798
14803
  }
14799
14804
  sendRoapOfferResponseMessage(seq, sdp) {
14800
14805
  this.log('sendRoapOfferResponseMessage', 'emitting ROAP OFFER RESPONSE');
14801
- this.emit(exports.Event.ROAP_MESSAGE_TO_SEND, {
14806
+ this.emit(exports.MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND, {
14802
14807
  roapMessage: {
14803
14808
  seq,
14804
14809
  messageType: 'OFFER_RESPONSE',
@@ -14808,7 +14813,7 @@ class Roap extends EventEmitter$5 {
14808
14813
  }
14809
14814
  sendRoapOkMessage(seq) {
14810
14815
  this.log('sendRoapOkMessage', 'emitting ROAP OK');
14811
- this.emit(exports.Event.ROAP_MESSAGE_TO_SEND, {
14816
+ this.emit(exports.MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND, {
14812
14817
  roapMessage: {
14813
14818
  seq,
14814
14819
  messageType: 'OK'
@@ -14817,7 +14822,7 @@ class Roap extends EventEmitter$5 {
14817
14822
  }
14818
14823
  sendRoapAnswerMessage(seq, sdp) {
14819
14824
  this.log('sendRoapAnswerMessage', 'emitting ROAP ANSWER');
14820
- this.emit(exports.Event.ROAP_MESSAGE_TO_SEND, {
14825
+ this.emit(exports.MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND, {
14821
14826
  roapMessage: {
14822
14827
  seq,
14823
14828
  messageType: 'ANSWER',
@@ -14827,11 +14832,11 @@ class Roap extends EventEmitter$5 {
14827
14832
  }
14828
14833
  sendDoneEvent() {
14829
14834
  this.log('sendDoneEvent', 'emitting ROAP DONE');
14830
- this.emit(exports.Event.ROAP_DONE);
14835
+ this.emit(exports.MediaConnectionEventNames.ROAP_DONE);
14831
14836
  }
14832
14837
  sendStartedEvent() {
14833
14838
  this.log('sendStartedEvent', 'emitting ROAP STARTED');
14834
- this.emit(exports.Event.ROAP_STARTED);
14839
+ this.emit(exports.MediaConnectionEventNames.ROAP_STARTED);
14835
14840
  }
14836
14841
  sendErrorMessage(seq, errorType) {
14837
14842
  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
@@ -14839,7 +14844,7 @@ class Roap extends EventEmitter$5 {
14839
14844
  retryAfter
14840
14845
  } = options;
14841
14846
  this.log('sendErrorMessage', "emitting ROAP ERROR (".concat(errorType, ")"));
14842
- this.emit(exports.Event.ROAP_MESSAGE_TO_SEND, {
14847
+ this.emit(exports.MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND, {
14843
14848
  roapMessage: {
14844
14849
  seq,
14845
14850
  messageType: 'ERROR',
@@ -14967,8 +14972,8 @@ class Roap extends EventEmitter$5 {
14967
14972
  }
14968
14973
  }
14969
14974
 
14970
- function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14971
- function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
14975
+ function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14976
+ function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
14972
14977
  class RoapMediaConnection extends EventEmitter$5 {
14973
14978
  constructor(mediaConnectionConfig, options, debugId) {
14974
14979
  super();
@@ -15002,25 +15007,25 @@ class RoapMediaConnection extends EventEmitter$5 {
15002
15007
  }
15003
15008
  createMediaConnection(mediaConnectionConfig, options, debugId) {
15004
15009
  var mediaConnection = new MediaConnection(mediaConnectionConfig, options, debugId);
15005
- mediaConnection.on(exports.Event.REMOTE_TRACK_ADDED, this.onRemoteTrack.bind(this));
15006
- this.forwardEvent(mediaConnection, exports.Event.PEER_CONNECTION_STATE_CHANGED);
15007
- this.forwardEvent(mediaConnection, exports.Event.ICE_CONNECTION_STATE_CHANGED);
15008
- this.forwardEvent(mediaConnection, exports.Event.REMOTE_SDP_ANSWER_PROCESSED);
15009
- this.forwardEvent(mediaConnection, exports.Event.REMOTE_SDP_OFFER_PROCESSED);
15010
- this.forwardEvent(mediaConnection, exports.Event.LOCAL_SDP_ANSWER_GENERATED);
15011
- this.forwardEvent(mediaConnection, exports.Event.LOCAL_SDP_OFFER_GENERATED);
15012
- this.forwardEvent(mediaConnection, exports.Event.DTMF_TONE_CHANGED);
15013
- this.forwardEvent(mediaConnection, exports.Event.ICE_GATHERING_STATE_CHANGED);
15014
- this.forwardEvent(mediaConnection, exports.Event.ICE_CANDIDATE);
15015
- this.forwardEvent(mediaConnection, exports.Event.ICE_CANDIDATE_ERROR);
15010
+ mediaConnection.on(exports.MediaConnectionEventNames.REMOTE_TRACK_ADDED, this.onRemoteTrack.bind(this));
15011
+ this.forwardEvent(mediaConnection, exports.MediaConnectionEventNames.PEER_CONNECTION_STATE_CHANGED);
15012
+ this.forwardEvent(mediaConnection, exports.MediaConnectionEventNames.ICE_CONNECTION_STATE_CHANGED);
15013
+ this.forwardEvent(mediaConnection, exports.MediaConnectionEventNames.REMOTE_SDP_ANSWER_PROCESSED);
15014
+ this.forwardEvent(mediaConnection, exports.MediaConnectionEventNames.REMOTE_SDP_OFFER_PROCESSED);
15015
+ this.forwardEvent(mediaConnection, exports.MediaConnectionEventNames.LOCAL_SDP_ANSWER_GENERATED);
15016
+ this.forwardEvent(mediaConnection, exports.MediaConnectionEventNames.LOCAL_SDP_OFFER_GENERATED);
15017
+ this.forwardEvent(mediaConnection, exports.MediaConnectionEventNames.DTMF_TONE_CHANGED);
15018
+ this.forwardEvent(mediaConnection, exports.MediaConnectionEventNames.ICE_GATHERING_STATE_CHANGED);
15019
+ this.forwardEvent(mediaConnection, exports.MediaConnectionEventNames.ICE_CANDIDATE);
15020
+ this.forwardEvent(mediaConnection, exports.MediaConnectionEventNames.ICE_CANDIDATE_ERROR);
15016
15021
  return mediaConnection;
15017
15022
  }
15018
15023
  createRoap(debugId, seq) {
15019
15024
  var roap = new Roap(this.createLocalOffer.bind(this), this.handleRemoteOffer.bind(this), this.handleRemoteAnswer.bind(this), debugId, seq);
15020
- roap.on(exports.Event.ROAP_MESSAGE_TO_SEND, event => this.emit(exports.Event.ROAP_MESSAGE_TO_SEND, event));
15021
- roap.on(exports.Event.ROAP_STARTED, () => this.emit(exports.Event.ROAP_STARTED));
15022
- roap.on(exports.Event.ROAP_DONE, () => this.emit(exports.Event.ROAP_DONE));
15023
- roap.on(exports.Event.ROAP_FAILURE, error => this.emit(exports.Event.ROAP_FAILURE, error));
15025
+ roap.on(exports.MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND, event => this.emit(exports.MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND, event));
15026
+ roap.on(exports.MediaConnectionEventNames.ROAP_STARTED, () => this.emit(exports.MediaConnectionEventNames.ROAP_STARTED));
15027
+ roap.on(exports.MediaConnectionEventNames.ROAP_DONE, () => this.emit(exports.MediaConnectionEventNames.ROAP_DONE));
15028
+ roap.on(exports.MediaConnectionEventNames.ROAP_FAILURE, error => this.emit(exports.MediaConnectionEventNames.ROAP_FAILURE, error));
15024
15029
  return roap;
15025
15030
  }
15026
15031
  initiateOffer() {
@@ -15049,7 +15054,7 @@ class RoapMediaConnection extends EventEmitter$5 {
15049
15054
  reconnect(iceServers) {
15050
15055
  var initiateOffer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
15051
15056
  this.log('reconnect()', "iceServers: ".concat(JSON.stringify(iceServers)));
15052
- var config = _objectSpread$1(_objectSpread$1({}, this.mediaConnection.getConfig()), {}, {
15057
+ var config = _objectSpread$2(_objectSpread$2({}, this.mediaConnection.getConfig()), {}, {
15053
15058
  iceServers
15054
15059
  });
15055
15060
  var options = this.mediaConnection.getSendReceiveOptions();
@@ -15137,7 +15142,7 @@ class RoapMediaConnection extends EventEmitter$5 {
15137
15142
  this.roap.roapMessageReceived(roapMessage);
15138
15143
  }
15139
15144
  onRemoteTrack(event) {
15140
- this.emit(exports.Event.REMOTE_TRACK_ADDED, event);
15145
+ this.emit(exports.MediaConnectionEventNames.REMOTE_TRACK_ADDED, event);
15141
15146
  }
15142
15147
  createLocalOffer() {
15143
15148
  return this.mediaConnection.createLocalOffer();
@@ -15150,9 +15155,9 @@ class RoapMediaConnection extends EventEmitter$5 {
15150
15155
  }
15151
15156
  }
15152
15157
 
15153
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15154
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
15155
- class MultistreamRoapMediaConnection extends EventEmitter$6 {
15158
+ function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
15159
+ function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
15160
+ class MultistreamRoapMediaConnection extends EventEmitter$5 {
15156
15161
  constructor(mediaConnectionConfig, debugId) {
15157
15162
  var metricsCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : () => {};
15158
15163
  var closeCallback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : () => {};
@@ -15182,28 +15187,28 @@ class MultistreamRoapMediaConnection extends EventEmitter$6 {
15182
15187
  }
15183
15188
  createMultistreamConnection(mediaConnectionConfig, metricsCallback) {
15184
15189
  this.log('createMultistreamConnection()', 'called');
15185
- var multistreamConnection = new MultistreamConnection(_objectSpread({}, mediaConnectionConfig));
15190
+ var multistreamConnection = new MultistreamConnection(_objectSpread$1({}, mediaConnectionConfig));
15186
15191
  multistreamConnection.on(MultistreamConnectionEventNames.ActiveSpeakerNotification, csis => {
15187
- this.emit(exports.Event.ACTIVE_SPEAKERS_CHANGED, csis);
15192
+ this.emit(exports.MediaConnectionEventNames.ACTIVE_SPEAKERS_CHANGED, csis);
15188
15193
  });
15189
15194
  multistreamConnection.on(MultistreamConnectionEventNames.AudioSourceCountUpdate, (numTotalSources, numLiveSources, mediaContent) => {
15190
- this.emit(exports.Event.AUDIO_SOURCES_COUNT_CHANGED, numTotalSources, numLiveSources, mediaContent);
15195
+ this.emit(exports.MediaConnectionEventNames.AUDIO_SOURCES_COUNT_CHANGED, numTotalSources, numLiveSources, mediaContent);
15191
15196
  });
15192
15197
  multistreamConnection.on(MultistreamConnectionEventNames.VideoSourceCountUpdate, (numTotalSources, numLiveSources, mediaContent) => {
15193
- this.emit(exports.Event.VIDEO_SOURCES_COUNT_CHANGED, numTotalSources, numLiveSources, mediaContent);
15198
+ this.emit(exports.MediaConnectionEventNames.VIDEO_SOURCES_COUNT_CHANGED, numTotalSources, numLiveSources, mediaContent);
15194
15199
  });
15195
15200
  multistreamConnection.on(MultistreamConnectionEventNames.PeerConnectionStateUpdate, state => {
15196
- this.emit(exports.Event.PEER_CONNECTION_STATE_CHANGED, {
15201
+ this.emit(exports.MediaConnectionEventNames.PEER_CONNECTION_STATE_CHANGED, {
15197
15202
  state
15198
15203
  });
15199
15204
  });
15200
15205
  multistreamConnection.on(MultistreamConnectionEventNames.IceConnectionStateUpdate, state => {
15201
- this.emit(exports.Event.ICE_CONNECTION_STATE_CHANGED, {
15206
+ this.emit(exports.MediaConnectionEventNames.ICE_CONNECTION_STATE_CHANGED, {
15202
15207
  state
15203
15208
  });
15204
15209
  });
15205
15210
  multistreamConnection.on(MultistreamConnectionEventNames.IceGatheringStateUpdate, state => {
15206
- this.emit(exports.Event.ICE_GATHERING_STATE_CHANGED, {
15211
+ this.emit(exports.MediaConnectionEventNames.ICE_GATHERING_STATE_CHANGED, {
15207
15212
  state
15208
15213
  });
15209
15214
  });
@@ -15211,12 +15216,12 @@ class MultistreamRoapMediaConnection extends EventEmitter$6 {
15211
15216
  this.onNegotiationNeeded();
15212
15217
  });
15213
15218
  multistreamConnection.on(MultistreamConnectionEventNames.IceCandidate, event => {
15214
- this.emit(exports.Event.ICE_CANDIDATE, {
15219
+ this.emit(exports.MediaConnectionEventNames.ICE_CANDIDATE, {
15215
15220
  candidate: event.candidate
15216
15221
  });
15217
15222
  });
15218
15223
  multistreamConnection.on(MultistreamConnectionEventNames.IceCandidateError, event => {
15219
- this.emit(exports.Event.ICE_CANDIDATE_ERROR, {
15224
+ this.emit(exports.MediaConnectionEventNames.ICE_CANDIDATE_ERROR, {
15220
15225
  error: event
15221
15226
  });
15222
15227
  });
@@ -15225,10 +15230,10 @@ class MultistreamRoapMediaConnection extends EventEmitter$6 {
15225
15230
  }
15226
15231
  createRoap(debugId, seq) {
15227
15232
  var roap = new Roap(this.createLocalOffer.bind(this), this.handleRemoteOffer.bind(this), this.handleRemoteAnswer.bind(this), debugId, seq);
15228
- roap.on(exports.Event.ROAP_MESSAGE_TO_SEND, event => this.emit(exports.Event.ROAP_MESSAGE_TO_SEND, event));
15229
- roap.on(exports.Event.ROAP_STARTED, () => this.emit(exports.Event.ROAP_STARTED));
15230
- roap.on(exports.Event.ROAP_DONE, () => this.emit(exports.Event.ROAP_DONE));
15231
- roap.on(exports.Event.ROAP_FAILURE, error => this.emit(exports.Event.ROAP_FAILURE, error));
15233
+ roap.on(exports.MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND, event => this.emit(exports.MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND, event));
15234
+ roap.on(exports.MediaConnectionEventNames.ROAP_STARTED, () => this.emit(exports.MediaConnectionEventNames.ROAP_STARTED));
15235
+ roap.on(exports.MediaConnectionEventNames.ROAP_DONE, () => this.emit(exports.MediaConnectionEventNames.ROAP_DONE));
15236
+ roap.on(exports.MediaConnectionEventNames.ROAP_FAILURE, error => this.emit(exports.MediaConnectionEventNames.ROAP_FAILURE, error));
15232
15237
  return roap;
15233
15238
  }
15234
15239
  onNegotiationNeeded() {
@@ -15325,7 +15330,7 @@ class MultistreamRoapMediaConnection extends EventEmitter$6 {
15325
15330
  this.log('createLocalOffer()', 'calling this.multistreamConnection.createOffer');
15326
15331
  return this.multistreamConnection.createOffer().then(result => {
15327
15332
  if (result.sdp) {
15328
- this.emit(exports.Event.LOCAL_SDP_OFFER_GENERATED);
15333
+ this.emit(exports.MediaConnectionEventNames.LOCAL_SDP_OFFER_GENERATED);
15329
15334
  return {
15330
15335
  sdp: result.sdp
15331
15336
  };
@@ -15347,7 +15352,7 @@ class MultistreamRoapMediaConnection extends EventEmitter$6 {
15347
15352
  this.log('handleRemoteAnswer()', 'calling this.multistreamConnection.setAnswer');
15348
15353
  return this.multistreamConnection.setAnswer(mungedSdp).then(result => {
15349
15354
  this.log('handleRemoteAnswer()', 'this.multistreamConnection.setAnswer resolved');
15350
- this.emit(exports.Event.REMOTE_SDP_ANSWER_PROCESSED);
15355
+ this.emit(exports.MediaConnectionEventNames.REMOTE_SDP_ANSWER_PROCESSED);
15351
15356
  return result;
15352
15357
  }).catch(error => {
15353
15358
  this.log('handleRemoteAnswer()', "this.multistreamConnection.setAnswer failed");
@@ -15365,6 +15370,2774 @@ class MultistreamRoapMediaConnection extends EventEmitter$6 {
15365
15370
 
15366
15371
  var Errors = Error$1;
15367
15372
 
15373
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global$1 !== 'undefined' ? global$1 : typeof self !== 'undefined' ? self : {};
15374
+ function getDefaultExportFromCjs(x) {
15375
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
15376
+ }
15377
+ var es5 = {
15378
+ exports: {}
15379
+ };
15380
+ (function (module, exports) {
15381
+ !function (e, t) {
15382
+ module.exports = t();
15383
+ }(commonjsGlobal, function () {
15384
+ return function (e) {
15385
+ var t = {};
15386
+ function r(n) {
15387
+ if (t[n]) return t[n].exports;
15388
+ var i = t[n] = {
15389
+ i: n,
15390
+ l: !1,
15391
+ exports: {}
15392
+ };
15393
+ return e[n].call(i.exports, i, i.exports, r), i.l = !0, i.exports;
15394
+ }
15395
+ return r.m = e, r.c = t, r.d = function (e, t, n) {
15396
+ r.o(e, t) || Object.defineProperty(e, t, {
15397
+ enumerable: !0,
15398
+ get: n
15399
+ });
15400
+ }, r.r = function (e) {
15401
+ "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
15402
+ value: "Module"
15403
+ }), Object.defineProperty(e, "__esModule", {
15404
+ value: !0
15405
+ });
15406
+ }, r.t = function (e, t) {
15407
+ if (1 & t && (e = r(e)), 8 & t) return e;
15408
+ if (4 & t && "object" == typeof e && e && e.__esModule) return e;
15409
+ var n = Object.create(null);
15410
+ if (r.r(n), Object.defineProperty(n, "default", {
15411
+ enumerable: !0,
15412
+ value: e
15413
+ }), 2 & t && "string" != typeof e) for (var i in e) {
15414
+ r.d(n, i, function (t) {
15415
+ return e[t];
15416
+ }.bind(null, i));
15417
+ }
15418
+ return n;
15419
+ }, r.n = function (e) {
15420
+ var t = e && e.__esModule ? function () {
15421
+ return e.default;
15422
+ } : function () {
15423
+ return e;
15424
+ };
15425
+ return r.d(t, "a", t), t;
15426
+ }, r.o = function (e, t) {
15427
+ return Object.prototype.hasOwnProperty.call(e, t);
15428
+ }, r.p = "", r(r.s = 90);
15429
+ }({
15430
+ 17: function _(e, t, r) {
15431
+ t.__esModule = !0, t.default = void 0;
15432
+ var n = r(18),
15433
+ i = function () {
15434
+ function e() {}
15435
+ return e.getFirstMatch = function (e, t) {
15436
+ var r = t.match(e);
15437
+ return r && r.length > 0 && r[1] || "";
15438
+ }, e.getSecondMatch = function (e, t) {
15439
+ var r = t.match(e);
15440
+ return r && r.length > 1 && r[2] || "";
15441
+ }, e.matchAndReturnConst = function (e, t, r) {
15442
+ if (e.test(t)) return r;
15443
+ }, e.getWindowsVersionName = function (e) {
15444
+ switch (e) {
15445
+ case "NT":
15446
+ return "NT";
15447
+ case "XP":
15448
+ return "XP";
15449
+ case "NT 5.0":
15450
+ return "2000";
15451
+ case "NT 5.1":
15452
+ return "XP";
15453
+ case "NT 5.2":
15454
+ return "2003";
15455
+ case "NT 6.0":
15456
+ return "Vista";
15457
+ case "NT 6.1":
15458
+ return "7";
15459
+ case "NT 6.2":
15460
+ return "8";
15461
+ case "NT 6.3":
15462
+ return "8.1";
15463
+ case "NT 10.0":
15464
+ return "10";
15465
+ default:
15466
+ return;
15467
+ }
15468
+ }, e.getMacOSVersionName = function (e) {
15469
+ var t = e.split(".").splice(0, 2).map(function (e) {
15470
+ return parseInt(e, 10) || 0;
15471
+ });
15472
+ if (t.push(0), 10 === t[0]) switch (t[1]) {
15473
+ case 5:
15474
+ return "Leopard";
15475
+ case 6:
15476
+ return "Snow Leopard";
15477
+ case 7:
15478
+ return "Lion";
15479
+ case 8:
15480
+ return "Mountain Lion";
15481
+ case 9:
15482
+ return "Mavericks";
15483
+ case 10:
15484
+ return "Yosemite";
15485
+ case 11:
15486
+ return "El Capitan";
15487
+ case 12:
15488
+ return "Sierra";
15489
+ case 13:
15490
+ return "High Sierra";
15491
+ case 14:
15492
+ return "Mojave";
15493
+ case 15:
15494
+ return "Catalina";
15495
+ default:
15496
+ return;
15497
+ }
15498
+ }, e.getAndroidVersionName = function (e) {
15499
+ var t = e.split(".").splice(0, 2).map(function (e) {
15500
+ return parseInt(e, 10) || 0;
15501
+ });
15502
+ if (t.push(0), !(1 === t[0] && t[1] < 5)) return 1 === t[0] && t[1] < 6 ? "Cupcake" : 1 === t[0] && t[1] >= 6 ? "Donut" : 2 === t[0] && t[1] < 2 ? "Eclair" : 2 === t[0] && 2 === t[1] ? "Froyo" : 2 === t[0] && t[1] > 2 ? "Gingerbread" : 3 === t[0] ? "Honeycomb" : 4 === t[0] && t[1] < 1 ? "Ice Cream Sandwich" : 4 === t[0] && t[1] < 4 ? "Jelly Bean" : 4 === t[0] && t[1] >= 4 ? "KitKat" : 5 === t[0] ? "Lollipop" : 6 === t[0] ? "Marshmallow" : 7 === t[0] ? "Nougat" : 8 === t[0] ? "Oreo" : 9 === t[0] ? "Pie" : void 0;
15503
+ }, e.getVersionPrecision = function (e) {
15504
+ return e.split(".").length;
15505
+ }, e.compareVersions = function (t, r, n) {
15506
+ void 0 === n && (n = !1);
15507
+ var i = e.getVersionPrecision(t),
15508
+ s = e.getVersionPrecision(r),
15509
+ a = Math.max(i, s),
15510
+ o = 0,
15511
+ u = e.map([t, r], function (t) {
15512
+ var r = a - e.getVersionPrecision(t),
15513
+ n = t + new Array(r + 1).join(".0");
15514
+ return e.map(n.split("."), function (e) {
15515
+ return new Array(20 - e.length).join("0") + e;
15516
+ }).reverse();
15517
+ });
15518
+ for (n && (o = a - Math.min(i, s)), a -= 1; a >= o;) {
15519
+ if (u[0][a] > u[1][a]) return 1;
15520
+ if (u[0][a] === u[1][a]) {
15521
+ if (a === o) return 0;
15522
+ a -= 1;
15523
+ } else if (u[0][a] < u[1][a]) return -1;
15524
+ }
15525
+ }, e.map = function (e, t) {
15526
+ var r,
15527
+ n = [];
15528
+ if (Array.prototype.map) return Array.prototype.map.call(e, t);
15529
+ for (r = 0; r < e.length; r += 1) {
15530
+ n.push(t(e[r]));
15531
+ }
15532
+ return n;
15533
+ }, e.find = function (e, t) {
15534
+ var r, n;
15535
+ if (Array.prototype.find) return Array.prototype.find.call(e, t);
15536
+ for (r = 0, n = e.length; r < n; r += 1) {
15537
+ var i = e[r];
15538
+ if (t(i, r)) return i;
15539
+ }
15540
+ }, e.assign = function (e) {
15541
+ for (var t, r, n = e, i = arguments.length, s = new Array(i > 1 ? i - 1 : 0), a = 1; a < i; a++) {
15542
+ s[a - 1] = arguments[a];
15543
+ }
15544
+ if (Object.assign) return Object.assign.apply(Object, [e].concat(s));
15545
+ var o = function o() {
15546
+ var e = s[t];
15547
+ "object" == typeof e && null !== e && Object.keys(e).forEach(function (t) {
15548
+ n[t] = e[t];
15549
+ });
15550
+ };
15551
+ for (t = 0, r = s.length; t < r; t += 1) {
15552
+ o();
15553
+ }
15554
+ return e;
15555
+ }, e.getBrowserAlias = function (e) {
15556
+ return n.BROWSER_ALIASES_MAP[e];
15557
+ }, e.getBrowserTypeByAlias = function (e) {
15558
+ return n.BROWSER_MAP[e] || "";
15559
+ }, e;
15560
+ }();
15561
+ t.default = i, e.exports = t.default;
15562
+ },
15563
+ 18: function _(e, t, r) {
15564
+ t.__esModule = !0, t.ENGINE_MAP = t.OS_MAP = t.PLATFORMS_MAP = t.BROWSER_MAP = t.BROWSER_ALIASES_MAP = void 0;
15565
+ t.BROWSER_ALIASES_MAP = {
15566
+ "Amazon Silk": "amazon_silk",
15567
+ "Android Browser": "android",
15568
+ Bada: "bada",
15569
+ BlackBerry: "blackberry",
15570
+ Chrome: "chrome",
15571
+ Chromium: "chromium",
15572
+ Electron: "electron",
15573
+ Epiphany: "epiphany",
15574
+ Firefox: "firefox",
15575
+ Focus: "focus",
15576
+ Generic: "generic",
15577
+ "Google Search": "google_search",
15578
+ Googlebot: "googlebot",
15579
+ "Internet Explorer": "ie",
15580
+ "K-Meleon": "k_meleon",
15581
+ Maxthon: "maxthon",
15582
+ "Microsoft Edge": "edge",
15583
+ "MZ Browser": "mz",
15584
+ "NAVER Whale Browser": "naver",
15585
+ Opera: "opera",
15586
+ "Opera Coast": "opera_coast",
15587
+ PhantomJS: "phantomjs",
15588
+ Puffin: "puffin",
15589
+ QupZilla: "qupzilla",
15590
+ QQ: "qq",
15591
+ QQLite: "qqlite",
15592
+ Safari: "safari",
15593
+ Sailfish: "sailfish",
15594
+ "Samsung Internet for Android": "samsung_internet",
15595
+ SeaMonkey: "seamonkey",
15596
+ Sleipnir: "sleipnir",
15597
+ Swing: "swing",
15598
+ Tizen: "tizen",
15599
+ "UC Browser": "uc",
15600
+ Vivaldi: "vivaldi",
15601
+ "WebOS Browser": "webos",
15602
+ WeChat: "wechat",
15603
+ "Yandex Browser": "yandex",
15604
+ Roku: "roku"
15605
+ };
15606
+ t.BROWSER_MAP = {
15607
+ amazon_silk: "Amazon Silk",
15608
+ android: "Android Browser",
15609
+ bada: "Bada",
15610
+ blackberry: "BlackBerry",
15611
+ chrome: "Chrome",
15612
+ chromium: "Chromium",
15613
+ electron: "Electron",
15614
+ epiphany: "Epiphany",
15615
+ firefox: "Firefox",
15616
+ focus: "Focus",
15617
+ generic: "Generic",
15618
+ googlebot: "Googlebot",
15619
+ google_search: "Google Search",
15620
+ ie: "Internet Explorer",
15621
+ k_meleon: "K-Meleon",
15622
+ maxthon: "Maxthon",
15623
+ edge: "Microsoft Edge",
15624
+ mz: "MZ Browser",
15625
+ naver: "NAVER Whale Browser",
15626
+ opera: "Opera",
15627
+ opera_coast: "Opera Coast",
15628
+ phantomjs: "PhantomJS",
15629
+ puffin: "Puffin",
15630
+ qupzilla: "QupZilla",
15631
+ qq: "QQ Browser",
15632
+ qqlite: "QQ Browser Lite",
15633
+ safari: "Safari",
15634
+ sailfish: "Sailfish",
15635
+ samsung_internet: "Samsung Internet for Android",
15636
+ seamonkey: "SeaMonkey",
15637
+ sleipnir: "Sleipnir",
15638
+ swing: "Swing",
15639
+ tizen: "Tizen",
15640
+ uc: "UC Browser",
15641
+ vivaldi: "Vivaldi",
15642
+ webos: "WebOS Browser",
15643
+ wechat: "WeChat",
15644
+ yandex: "Yandex Browser"
15645
+ };
15646
+ t.PLATFORMS_MAP = {
15647
+ tablet: "tablet",
15648
+ mobile: "mobile",
15649
+ desktop: "desktop",
15650
+ tv: "tv"
15651
+ };
15652
+ t.OS_MAP = {
15653
+ WindowsPhone: "Windows Phone",
15654
+ Windows: "Windows",
15655
+ MacOS: "macOS",
15656
+ iOS: "iOS",
15657
+ Android: "Android",
15658
+ WebOS: "WebOS",
15659
+ BlackBerry: "BlackBerry",
15660
+ Bada: "Bada",
15661
+ Tizen: "Tizen",
15662
+ Linux: "Linux",
15663
+ ChromeOS: "Chrome OS",
15664
+ PlayStation4: "PlayStation 4",
15665
+ Roku: "Roku"
15666
+ };
15667
+ t.ENGINE_MAP = {
15668
+ EdgeHTML: "EdgeHTML",
15669
+ Blink: "Blink",
15670
+ Trident: "Trident",
15671
+ Presto: "Presto",
15672
+ Gecko: "Gecko",
15673
+ WebKit: "WebKit"
15674
+ };
15675
+ },
15676
+ 90: function _(e, t, r) {
15677
+ t.__esModule = !0, t.default = void 0;
15678
+ var n,
15679
+ i = (n = r(91)) && n.__esModule ? n : {
15680
+ default: n
15681
+ },
15682
+ s = r(18);
15683
+ function a(e, t) {
15684
+ for (var r = 0; r < t.length; r++) {
15685
+ var n = t[r];
15686
+ n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);
15687
+ }
15688
+ }
15689
+ var o = function () {
15690
+ function e() {}
15691
+ var t, r, n;
15692
+ return e.getParser = function (e, t) {
15693
+ if (void 0 === t && (t = !1), "string" != typeof e) throw new Error("UserAgent should be a string");
15694
+ return new i.default(e, t);
15695
+ }, e.parse = function (e) {
15696
+ return new i.default(e).getResult();
15697
+ }, t = e, n = [{
15698
+ key: "BROWSER_MAP",
15699
+ get: function get() {
15700
+ return s.BROWSER_MAP;
15701
+ }
15702
+ }, {
15703
+ key: "ENGINE_MAP",
15704
+ get: function get() {
15705
+ return s.ENGINE_MAP;
15706
+ }
15707
+ }, {
15708
+ key: "OS_MAP",
15709
+ get: function get() {
15710
+ return s.OS_MAP;
15711
+ }
15712
+ }, {
15713
+ key: "PLATFORMS_MAP",
15714
+ get: function get() {
15715
+ return s.PLATFORMS_MAP;
15716
+ }
15717
+ }], (r = null) && a(t.prototype, r), n && a(t, n), e;
15718
+ }();
15719
+ t.default = o, e.exports = t.default;
15720
+ },
15721
+ 91: function _(e, t, r) {
15722
+ t.__esModule = !0, t.default = void 0;
15723
+ var n = u(r(92)),
15724
+ i = u(r(93)),
15725
+ s = u(r(94)),
15726
+ a = u(r(95)),
15727
+ o = u(r(17));
15728
+ function u(e) {
15729
+ return e && e.__esModule ? e : {
15730
+ default: e
15731
+ };
15732
+ }
15733
+ var d = function () {
15734
+ function e(e, t) {
15735
+ if (void 0 === t && (t = !1), null == e || "" === e) throw new Error("UserAgent parameter can't be empty");
15736
+ this._ua = e, this.parsedResult = {}, !0 !== t && this.parse();
15737
+ }
15738
+ var t = e.prototype;
15739
+ return t.getUA = function () {
15740
+ return this._ua;
15741
+ }, t.test = function (e) {
15742
+ return e.test(this._ua);
15743
+ }, t.parseBrowser = function () {
15744
+ var e = this;
15745
+ this.parsedResult.browser = {};
15746
+ var t = o.default.find(n.default, function (t) {
15747
+ if ("function" == typeof t.test) return t.test(e);
15748
+ if (t.test instanceof Array) return t.test.some(function (t) {
15749
+ return e.test(t);
15750
+ });
15751
+ throw new Error("Browser's test function is not valid");
15752
+ });
15753
+ return t && (this.parsedResult.browser = t.describe(this.getUA())), this.parsedResult.browser;
15754
+ }, t.getBrowser = function () {
15755
+ return this.parsedResult.browser ? this.parsedResult.browser : this.parseBrowser();
15756
+ }, t.getBrowserName = function (e) {
15757
+ return e ? String(this.getBrowser().name).toLowerCase() || "" : this.getBrowser().name || "";
15758
+ }, t.getBrowserVersion = function () {
15759
+ return this.getBrowser().version;
15760
+ }, t.getOS = function () {
15761
+ return this.parsedResult.os ? this.parsedResult.os : this.parseOS();
15762
+ }, t.parseOS = function () {
15763
+ var e = this;
15764
+ this.parsedResult.os = {};
15765
+ var t = o.default.find(i.default, function (t) {
15766
+ if ("function" == typeof t.test) return t.test(e);
15767
+ if (t.test instanceof Array) return t.test.some(function (t) {
15768
+ return e.test(t);
15769
+ });
15770
+ throw new Error("Browser's test function is not valid");
15771
+ });
15772
+ return t && (this.parsedResult.os = t.describe(this.getUA())), this.parsedResult.os;
15773
+ }, t.getOSName = function (e) {
15774
+ var t = this.getOS().name;
15775
+ return e ? String(t).toLowerCase() || "" : t || "";
15776
+ }, t.getOSVersion = function () {
15777
+ return this.getOS().version;
15778
+ }, t.getPlatform = function () {
15779
+ return this.parsedResult.platform ? this.parsedResult.platform : this.parsePlatform();
15780
+ }, t.getPlatformType = function (e) {
15781
+ void 0 === e && (e = !1);
15782
+ var t = this.getPlatform().type;
15783
+ return e ? String(t).toLowerCase() || "" : t || "";
15784
+ }, t.parsePlatform = function () {
15785
+ var e = this;
15786
+ this.parsedResult.platform = {};
15787
+ var t = o.default.find(s.default, function (t) {
15788
+ if ("function" == typeof t.test) return t.test(e);
15789
+ if (t.test instanceof Array) return t.test.some(function (t) {
15790
+ return e.test(t);
15791
+ });
15792
+ throw new Error("Browser's test function is not valid");
15793
+ });
15794
+ return t && (this.parsedResult.platform = t.describe(this.getUA())), this.parsedResult.platform;
15795
+ }, t.getEngine = function () {
15796
+ return this.parsedResult.engine ? this.parsedResult.engine : this.parseEngine();
15797
+ }, t.getEngineName = function (e) {
15798
+ return e ? String(this.getEngine().name).toLowerCase() || "" : this.getEngine().name || "";
15799
+ }, t.parseEngine = function () {
15800
+ var e = this;
15801
+ this.parsedResult.engine = {};
15802
+ var t = o.default.find(a.default, function (t) {
15803
+ if ("function" == typeof t.test) return t.test(e);
15804
+ if (t.test instanceof Array) return t.test.some(function (t) {
15805
+ return e.test(t);
15806
+ });
15807
+ throw new Error("Browser's test function is not valid");
15808
+ });
15809
+ return t && (this.parsedResult.engine = t.describe(this.getUA())), this.parsedResult.engine;
15810
+ }, t.parse = function () {
15811
+ return this.parseBrowser(), this.parseOS(), this.parsePlatform(), this.parseEngine(), this;
15812
+ }, t.getResult = function () {
15813
+ return o.default.assign({}, this.parsedResult);
15814
+ }, t.satisfies = function (e) {
15815
+ var t = this,
15816
+ r = {},
15817
+ n = 0,
15818
+ i = {},
15819
+ s = 0;
15820
+ if (Object.keys(e).forEach(function (t) {
15821
+ var a = e[t];
15822
+ "string" == typeof a ? (i[t] = a, s += 1) : "object" == typeof a && (r[t] = a, n += 1);
15823
+ }), n > 0) {
15824
+ var a = Object.keys(r),
15825
+ u = o.default.find(a, function (e) {
15826
+ return t.isOS(e);
15827
+ });
15828
+ if (u) {
15829
+ var d = this.satisfies(r[u]);
15830
+ if (void 0 !== d) return d;
15831
+ }
15832
+ var c = o.default.find(a, function (e) {
15833
+ return t.isPlatform(e);
15834
+ });
15835
+ if (c) {
15836
+ var f = this.satisfies(r[c]);
15837
+ if (void 0 !== f) return f;
15838
+ }
15839
+ }
15840
+ if (s > 0) {
15841
+ var l = Object.keys(i),
15842
+ h = o.default.find(l, function (e) {
15843
+ return t.isBrowser(e, !0);
15844
+ });
15845
+ if (void 0 !== h) return this.compareVersion(i[h]);
15846
+ }
15847
+ }, t.isBrowser = function (e, t) {
15848
+ void 0 === t && (t = !1);
15849
+ var r = this.getBrowserName().toLowerCase(),
15850
+ n = e.toLowerCase(),
15851
+ i = o.default.getBrowserTypeByAlias(n);
15852
+ return t && i && (n = i.toLowerCase()), n === r;
15853
+ }, t.compareVersion = function (e) {
15854
+ var t = [0],
15855
+ r = e,
15856
+ n = !1,
15857
+ i = this.getBrowserVersion();
15858
+ if ("string" == typeof i) return ">" === e[0] || "<" === e[0] ? (r = e.substr(1), "=" === e[1] ? (n = !0, r = e.substr(2)) : t = [], ">" === e[0] ? t.push(1) : t.push(-1)) : "=" === e[0] ? r = e.substr(1) : "~" === e[0] && (n = !0, r = e.substr(1)), t.indexOf(o.default.compareVersions(i, r, n)) > -1;
15859
+ }, t.isOS = function (e) {
15860
+ return this.getOSName(!0) === String(e).toLowerCase();
15861
+ }, t.isPlatform = function (e) {
15862
+ return this.getPlatformType(!0) === String(e).toLowerCase();
15863
+ }, t.isEngine = function (e) {
15864
+ return this.getEngineName(!0) === String(e).toLowerCase();
15865
+ }, t.is = function (e, t) {
15866
+ return void 0 === t && (t = !1), this.isBrowser(e, t) || this.isOS(e) || this.isPlatform(e);
15867
+ }, t.some = function (e) {
15868
+ var t = this;
15869
+ return void 0 === e && (e = []), e.some(function (e) {
15870
+ return t.is(e);
15871
+ });
15872
+ }, e;
15873
+ }();
15874
+ t.default = d, e.exports = t.default;
15875
+ },
15876
+ 92: function _(e, t, r) {
15877
+ t.__esModule = !0, t.default = void 0;
15878
+ var n,
15879
+ i = (n = r(17)) && n.__esModule ? n : {
15880
+ default: n
15881
+ };
15882
+ var s = /version\/(\d+(\.?_?\d+)+)/i,
15883
+ a = [{
15884
+ test: [/googlebot/i],
15885
+ describe: function describe(e) {
15886
+ var t = {
15887
+ name: "Googlebot"
15888
+ },
15889
+ r = i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i, e) || i.default.getFirstMatch(s, e);
15890
+ return r && (t.version = r), t;
15891
+ }
15892
+ }, {
15893
+ test: [/opera/i],
15894
+ describe: function describe(e) {
15895
+ var t = {
15896
+ name: "Opera"
15897
+ },
15898
+ r = i.default.getFirstMatch(s, e) || i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i, e);
15899
+ return r && (t.version = r), t;
15900
+ }
15901
+ }, {
15902
+ test: [/opr\/|opios/i],
15903
+ describe: function describe(e) {
15904
+ var t = {
15905
+ name: "Opera"
15906
+ },
15907
+ r = i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i, e) || i.default.getFirstMatch(s, e);
15908
+ return r && (t.version = r), t;
15909
+ }
15910
+ }, {
15911
+ test: [/SamsungBrowser/i],
15912
+ describe: function describe(e) {
15913
+ var t = {
15914
+ name: "Samsung Internet for Android"
15915
+ },
15916
+ r = i.default.getFirstMatch(s, e) || i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i, e);
15917
+ return r && (t.version = r), t;
15918
+ }
15919
+ }, {
15920
+ test: [/Whale/i],
15921
+ describe: function describe(e) {
15922
+ var t = {
15923
+ name: "NAVER Whale Browser"
15924
+ },
15925
+ r = i.default.getFirstMatch(s, e) || i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i, e);
15926
+ return r && (t.version = r), t;
15927
+ }
15928
+ }, {
15929
+ test: [/MZBrowser/i],
15930
+ describe: function describe(e) {
15931
+ var t = {
15932
+ name: "MZ Browser"
15933
+ },
15934
+ r = i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i, e) || i.default.getFirstMatch(s, e);
15935
+ return r && (t.version = r), t;
15936
+ }
15937
+ }, {
15938
+ test: [/focus/i],
15939
+ describe: function describe(e) {
15940
+ var t = {
15941
+ name: "Focus"
15942
+ },
15943
+ r = i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i, e) || i.default.getFirstMatch(s, e);
15944
+ return r && (t.version = r), t;
15945
+ }
15946
+ }, {
15947
+ test: [/swing/i],
15948
+ describe: function describe(e) {
15949
+ var t = {
15950
+ name: "Swing"
15951
+ },
15952
+ r = i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i, e) || i.default.getFirstMatch(s, e);
15953
+ return r && (t.version = r), t;
15954
+ }
15955
+ }, {
15956
+ test: [/coast/i],
15957
+ describe: function describe(e) {
15958
+ var t = {
15959
+ name: "Opera Coast"
15960
+ },
15961
+ r = i.default.getFirstMatch(s, e) || i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i, e);
15962
+ return r && (t.version = r), t;
15963
+ }
15964
+ }, {
15965
+ test: [/opt\/\d+(?:.?_?\d+)+/i],
15966
+ describe: function describe(e) {
15967
+ var t = {
15968
+ name: "Opera Touch"
15969
+ },
15970
+ r = i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i, e) || i.default.getFirstMatch(s, e);
15971
+ return r && (t.version = r), t;
15972
+ }
15973
+ }, {
15974
+ test: [/yabrowser/i],
15975
+ describe: function describe(e) {
15976
+ var t = {
15977
+ name: "Yandex Browser"
15978
+ },
15979
+ r = i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i, e) || i.default.getFirstMatch(s, e);
15980
+ return r && (t.version = r), t;
15981
+ }
15982
+ }, {
15983
+ test: [/ucbrowser/i],
15984
+ describe: function describe(e) {
15985
+ var t = {
15986
+ name: "UC Browser"
15987
+ },
15988
+ r = i.default.getFirstMatch(s, e) || i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i, e);
15989
+ return r && (t.version = r), t;
15990
+ }
15991
+ }, {
15992
+ test: [/Maxthon|mxios/i],
15993
+ describe: function describe(e) {
15994
+ var t = {
15995
+ name: "Maxthon"
15996
+ },
15997
+ r = i.default.getFirstMatch(s, e) || i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i, e);
15998
+ return r && (t.version = r), t;
15999
+ }
16000
+ }, {
16001
+ test: [/epiphany/i],
16002
+ describe: function describe(e) {
16003
+ var t = {
16004
+ name: "Epiphany"
16005
+ },
16006
+ r = i.default.getFirstMatch(s, e) || i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i, e);
16007
+ return r && (t.version = r), t;
16008
+ }
16009
+ }, {
16010
+ test: [/puffin/i],
16011
+ describe: function describe(e) {
16012
+ var t = {
16013
+ name: "Puffin"
16014
+ },
16015
+ r = i.default.getFirstMatch(s, e) || i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i, e);
16016
+ return r && (t.version = r), t;
16017
+ }
16018
+ }, {
16019
+ test: [/sleipnir/i],
16020
+ describe: function describe(e) {
16021
+ var t = {
16022
+ name: "Sleipnir"
16023
+ },
16024
+ r = i.default.getFirstMatch(s, e) || i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i, e);
16025
+ return r && (t.version = r), t;
16026
+ }
16027
+ }, {
16028
+ test: [/k-meleon/i],
16029
+ describe: function describe(e) {
16030
+ var t = {
16031
+ name: "K-Meleon"
16032
+ },
16033
+ r = i.default.getFirstMatch(s, e) || i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i, e);
16034
+ return r && (t.version = r), t;
16035
+ }
16036
+ }, {
16037
+ test: [/micromessenger/i],
16038
+ describe: function describe(e) {
16039
+ var t = {
16040
+ name: "WeChat"
16041
+ },
16042
+ r = i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i, e) || i.default.getFirstMatch(s, e);
16043
+ return r && (t.version = r), t;
16044
+ }
16045
+ }, {
16046
+ test: [/qqbrowser/i],
16047
+ describe: function describe(e) {
16048
+ var t = {
16049
+ name: /qqbrowserlite/i.test(e) ? "QQ Browser Lite" : "QQ Browser"
16050
+ },
16051
+ r = i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i, e) || i.default.getFirstMatch(s, e);
16052
+ return r && (t.version = r), t;
16053
+ }
16054
+ }, {
16055
+ test: [/msie|trident/i],
16056
+ describe: function describe(e) {
16057
+ var t = {
16058
+ name: "Internet Explorer"
16059
+ },
16060
+ r = i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i, e);
16061
+ return r && (t.version = r), t;
16062
+ }
16063
+ }, {
16064
+ test: [/\sedg\//i],
16065
+ describe: function describe(e) {
16066
+ var t = {
16067
+ name: "Microsoft Edge"
16068
+ },
16069
+ r = i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i, e);
16070
+ return r && (t.version = r), t;
16071
+ }
16072
+ }, {
16073
+ test: [/edg([ea]|ios)/i],
16074
+ describe: function describe(e) {
16075
+ var t = {
16076
+ name: "Microsoft Edge"
16077
+ },
16078
+ r = i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i, e);
16079
+ return r && (t.version = r), t;
16080
+ }
16081
+ }, {
16082
+ test: [/vivaldi/i],
16083
+ describe: function describe(e) {
16084
+ var t = {
16085
+ name: "Vivaldi"
16086
+ },
16087
+ r = i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i, e);
16088
+ return r && (t.version = r), t;
16089
+ }
16090
+ }, {
16091
+ test: [/seamonkey/i],
16092
+ describe: function describe(e) {
16093
+ var t = {
16094
+ name: "SeaMonkey"
16095
+ },
16096
+ r = i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i, e);
16097
+ return r && (t.version = r), t;
16098
+ }
16099
+ }, {
16100
+ test: [/sailfish/i],
16101
+ describe: function describe(e) {
16102
+ var t = {
16103
+ name: "Sailfish"
16104
+ },
16105
+ r = i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i, e);
16106
+ return r && (t.version = r), t;
16107
+ }
16108
+ }, {
16109
+ test: [/silk/i],
16110
+ describe: function describe(e) {
16111
+ var t = {
16112
+ name: "Amazon Silk"
16113
+ },
16114
+ r = i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i, e);
16115
+ return r && (t.version = r), t;
16116
+ }
16117
+ }, {
16118
+ test: [/phantom/i],
16119
+ describe: function describe(e) {
16120
+ var t = {
16121
+ name: "PhantomJS"
16122
+ },
16123
+ r = i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i, e);
16124
+ return r && (t.version = r), t;
16125
+ }
16126
+ }, {
16127
+ test: [/slimerjs/i],
16128
+ describe: function describe(e) {
16129
+ var t = {
16130
+ name: "SlimerJS"
16131
+ },
16132
+ r = i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i, e);
16133
+ return r && (t.version = r), t;
16134
+ }
16135
+ }, {
16136
+ test: [/blackberry|\bbb\d+/i, /rim\stablet/i],
16137
+ describe: function describe(e) {
16138
+ var t = {
16139
+ name: "BlackBerry"
16140
+ },
16141
+ r = i.default.getFirstMatch(s, e) || i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i, e);
16142
+ return r && (t.version = r), t;
16143
+ }
16144
+ }, {
16145
+ test: [/(web|hpw)[o0]s/i],
16146
+ describe: function describe(e) {
16147
+ var t = {
16148
+ name: "WebOS Browser"
16149
+ },
16150
+ r = i.default.getFirstMatch(s, e) || i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i, e);
16151
+ return r && (t.version = r), t;
16152
+ }
16153
+ }, {
16154
+ test: [/bada/i],
16155
+ describe: function describe(e) {
16156
+ var t = {
16157
+ name: "Bada"
16158
+ },
16159
+ r = i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i, e);
16160
+ return r && (t.version = r), t;
16161
+ }
16162
+ }, {
16163
+ test: [/tizen/i],
16164
+ describe: function describe(e) {
16165
+ var t = {
16166
+ name: "Tizen"
16167
+ },
16168
+ r = i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i, e) || i.default.getFirstMatch(s, e);
16169
+ return r && (t.version = r), t;
16170
+ }
16171
+ }, {
16172
+ test: [/qupzilla/i],
16173
+ describe: function describe(e) {
16174
+ var t = {
16175
+ name: "QupZilla"
16176
+ },
16177
+ r = i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i, e) || i.default.getFirstMatch(s, e);
16178
+ return r && (t.version = r), t;
16179
+ }
16180
+ }, {
16181
+ test: [/firefox|iceweasel|fxios/i],
16182
+ describe: function describe(e) {
16183
+ var t = {
16184
+ name: "Firefox"
16185
+ },
16186
+ r = i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i, e);
16187
+ return r && (t.version = r), t;
16188
+ }
16189
+ }, {
16190
+ test: [/electron/i],
16191
+ describe: function describe(e) {
16192
+ var t = {
16193
+ name: "Electron"
16194
+ },
16195
+ r = i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i, e);
16196
+ return r && (t.version = r), t;
16197
+ }
16198
+ }, {
16199
+ test: [/MiuiBrowser/i],
16200
+ describe: function describe(e) {
16201
+ var t = {
16202
+ name: "Miui"
16203
+ },
16204
+ r = i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i, e);
16205
+ return r && (t.version = r), t;
16206
+ }
16207
+ }, {
16208
+ test: [/chromium/i],
16209
+ describe: function describe(e) {
16210
+ var t = {
16211
+ name: "Chromium"
16212
+ },
16213
+ r = i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i, e) || i.default.getFirstMatch(s, e);
16214
+ return r && (t.version = r), t;
16215
+ }
16216
+ }, {
16217
+ test: [/chrome|crios|crmo/i],
16218
+ describe: function describe(e) {
16219
+ var t = {
16220
+ name: "Chrome"
16221
+ },
16222
+ r = i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i, e);
16223
+ return r && (t.version = r), t;
16224
+ }
16225
+ }, {
16226
+ test: [/GSA/i],
16227
+ describe: function describe(e) {
16228
+ var t = {
16229
+ name: "Google Search"
16230
+ },
16231
+ r = i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i, e);
16232
+ return r && (t.version = r), t;
16233
+ }
16234
+ }, {
16235
+ test: function test(e) {
16236
+ var t = !e.test(/like android/i),
16237
+ r = e.test(/android/i);
16238
+ return t && r;
16239
+ },
16240
+ describe: function describe(e) {
16241
+ var t = {
16242
+ name: "Android Browser"
16243
+ },
16244
+ r = i.default.getFirstMatch(s, e);
16245
+ return r && (t.version = r), t;
16246
+ }
16247
+ }, {
16248
+ test: [/playstation 4/i],
16249
+ describe: function describe(e) {
16250
+ var t = {
16251
+ name: "PlayStation 4"
16252
+ },
16253
+ r = i.default.getFirstMatch(s, e);
16254
+ return r && (t.version = r), t;
16255
+ }
16256
+ }, {
16257
+ test: [/safari|applewebkit/i],
16258
+ describe: function describe(e) {
16259
+ var t = {
16260
+ name: "Safari"
16261
+ },
16262
+ r = i.default.getFirstMatch(s, e);
16263
+ return r && (t.version = r), t;
16264
+ }
16265
+ }, {
16266
+ test: [/.*/i],
16267
+ describe: function describe(e) {
16268
+ var t = -1 !== e.search("\\(") ? /^(.*)\/(.*)[ \t]\((.*)/ : /^(.*)\/(.*) /;
16269
+ return {
16270
+ name: i.default.getFirstMatch(t, e),
16271
+ version: i.default.getSecondMatch(t, e)
16272
+ };
16273
+ }
16274
+ }];
16275
+ t.default = a, e.exports = t.default;
16276
+ },
16277
+ 93: function _(e, t, r) {
16278
+ t.__esModule = !0, t.default = void 0;
16279
+ var n,
16280
+ i = (n = r(17)) && n.__esModule ? n : {
16281
+ default: n
16282
+ },
16283
+ s = r(18);
16284
+ var a = [{
16285
+ test: [/Roku\/DVP/],
16286
+ describe: function describe(e) {
16287
+ var t = i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i, e);
16288
+ return {
16289
+ name: s.OS_MAP.Roku,
16290
+ version: t
16291
+ };
16292
+ }
16293
+ }, {
16294
+ test: [/windows phone/i],
16295
+ describe: function describe(e) {
16296
+ var t = i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i, e);
16297
+ return {
16298
+ name: s.OS_MAP.WindowsPhone,
16299
+ version: t
16300
+ };
16301
+ }
16302
+ }, {
16303
+ test: [/windows /i],
16304
+ describe: function describe(e) {
16305
+ var t = i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i, e),
16306
+ r = i.default.getWindowsVersionName(t);
16307
+ return {
16308
+ name: s.OS_MAP.Windows,
16309
+ version: t,
16310
+ versionName: r
16311
+ };
16312
+ }
16313
+ }, {
16314
+ test: [/Macintosh(.*?) FxiOS(.*?)\//],
16315
+ describe: function describe(e) {
16316
+ var t = {
16317
+ name: s.OS_MAP.iOS
16318
+ },
16319
+ r = i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/, e);
16320
+ return r && (t.version = r), t;
16321
+ }
16322
+ }, {
16323
+ test: [/macintosh/i],
16324
+ describe: function describe(e) {
16325
+ var t = i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i, e).replace(/[_\s]/g, "."),
16326
+ r = i.default.getMacOSVersionName(t),
16327
+ n = {
16328
+ name: s.OS_MAP.MacOS,
16329
+ version: t
16330
+ };
16331
+ return r && (n.versionName = r), n;
16332
+ }
16333
+ }, {
16334
+ test: [/(ipod|iphone|ipad)/i],
16335
+ describe: function describe(e) {
16336
+ var t = i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i, e).replace(/[_\s]/g, ".");
16337
+ return {
16338
+ name: s.OS_MAP.iOS,
16339
+ version: t
16340
+ };
16341
+ }
16342
+ }, {
16343
+ test: function test(e) {
16344
+ var t = !e.test(/like android/i),
16345
+ r = e.test(/android/i);
16346
+ return t && r;
16347
+ },
16348
+ describe: function describe(e) {
16349
+ var t = i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i, e),
16350
+ r = i.default.getAndroidVersionName(t),
16351
+ n = {
16352
+ name: s.OS_MAP.Android,
16353
+ version: t
16354
+ };
16355
+ return r && (n.versionName = r), n;
16356
+ }
16357
+ }, {
16358
+ test: [/(web|hpw)[o0]s/i],
16359
+ describe: function describe(e) {
16360
+ var t = i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i, e),
16361
+ r = {
16362
+ name: s.OS_MAP.WebOS
16363
+ };
16364
+ return t && t.length && (r.version = t), r;
16365
+ }
16366
+ }, {
16367
+ test: [/blackberry|\bbb\d+/i, /rim\stablet/i],
16368
+ describe: function describe(e) {
16369
+ var t = i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i, e) || i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i, e) || i.default.getFirstMatch(/\bbb(\d+)/i, e);
16370
+ return {
16371
+ name: s.OS_MAP.BlackBerry,
16372
+ version: t
16373
+ };
16374
+ }
16375
+ }, {
16376
+ test: [/bada/i],
16377
+ describe: function describe(e) {
16378
+ var t = i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i, e);
16379
+ return {
16380
+ name: s.OS_MAP.Bada,
16381
+ version: t
16382
+ };
16383
+ }
16384
+ }, {
16385
+ test: [/tizen/i],
16386
+ describe: function describe(e) {
16387
+ var t = i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i, e);
16388
+ return {
16389
+ name: s.OS_MAP.Tizen,
16390
+ version: t
16391
+ };
16392
+ }
16393
+ }, {
16394
+ test: [/linux/i],
16395
+ describe: function describe() {
16396
+ return {
16397
+ name: s.OS_MAP.Linux
16398
+ };
16399
+ }
16400
+ }, {
16401
+ test: [/CrOS/],
16402
+ describe: function describe() {
16403
+ return {
16404
+ name: s.OS_MAP.ChromeOS
16405
+ };
16406
+ }
16407
+ }, {
16408
+ test: [/PlayStation 4/],
16409
+ describe: function describe(e) {
16410
+ var t = i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i, e);
16411
+ return {
16412
+ name: s.OS_MAP.PlayStation4,
16413
+ version: t
16414
+ };
16415
+ }
16416
+ }];
16417
+ t.default = a, e.exports = t.default;
16418
+ },
16419
+ 94: function _(e, t, r) {
16420
+ t.__esModule = !0, t.default = void 0;
16421
+ var n,
16422
+ i = (n = r(17)) && n.__esModule ? n : {
16423
+ default: n
16424
+ },
16425
+ s = r(18);
16426
+ var a = [{
16427
+ test: [/googlebot/i],
16428
+ describe: function describe() {
16429
+ return {
16430
+ type: "bot",
16431
+ vendor: "Google"
16432
+ };
16433
+ }
16434
+ }, {
16435
+ test: [/huawei/i],
16436
+ describe: function describe(e) {
16437
+ var t = i.default.getFirstMatch(/(can-l01)/i, e) && "Nova",
16438
+ r = {
16439
+ type: s.PLATFORMS_MAP.mobile,
16440
+ vendor: "Huawei"
16441
+ };
16442
+ return t && (r.model = t), r;
16443
+ }
16444
+ }, {
16445
+ test: [/nexus\s*(?:7|8|9|10).*/i],
16446
+ describe: function describe() {
16447
+ return {
16448
+ type: s.PLATFORMS_MAP.tablet,
16449
+ vendor: "Nexus"
16450
+ };
16451
+ }
16452
+ }, {
16453
+ test: [/ipad/i],
16454
+ describe: function describe() {
16455
+ return {
16456
+ type: s.PLATFORMS_MAP.tablet,
16457
+ vendor: "Apple",
16458
+ model: "iPad"
16459
+ };
16460
+ }
16461
+ }, {
16462
+ test: [/Macintosh(.*?) FxiOS(.*?)\//],
16463
+ describe: function describe() {
16464
+ return {
16465
+ type: s.PLATFORMS_MAP.tablet,
16466
+ vendor: "Apple",
16467
+ model: "iPad"
16468
+ };
16469
+ }
16470
+ }, {
16471
+ test: [/kftt build/i],
16472
+ describe: function describe() {
16473
+ return {
16474
+ type: s.PLATFORMS_MAP.tablet,
16475
+ vendor: "Amazon",
16476
+ model: "Kindle Fire HD 7"
16477
+ };
16478
+ }
16479
+ }, {
16480
+ test: [/silk/i],
16481
+ describe: function describe() {
16482
+ return {
16483
+ type: s.PLATFORMS_MAP.tablet,
16484
+ vendor: "Amazon"
16485
+ };
16486
+ }
16487
+ }, {
16488
+ test: [/tablet(?! pc)/i],
16489
+ describe: function describe() {
16490
+ return {
16491
+ type: s.PLATFORMS_MAP.tablet
16492
+ };
16493
+ }
16494
+ }, {
16495
+ test: function test(e) {
16496
+ var t = e.test(/ipod|iphone/i),
16497
+ r = e.test(/like (ipod|iphone)/i);
16498
+ return t && !r;
16499
+ },
16500
+ describe: function describe(e) {
16501
+ var t = i.default.getFirstMatch(/(ipod|iphone)/i, e);
16502
+ return {
16503
+ type: s.PLATFORMS_MAP.mobile,
16504
+ vendor: "Apple",
16505
+ model: t
16506
+ };
16507
+ }
16508
+ }, {
16509
+ test: [/nexus\s*[0-6].*/i, /galaxy nexus/i],
16510
+ describe: function describe() {
16511
+ return {
16512
+ type: s.PLATFORMS_MAP.mobile,
16513
+ vendor: "Nexus"
16514
+ };
16515
+ }
16516
+ }, {
16517
+ test: [/[^-]mobi/i],
16518
+ describe: function describe() {
16519
+ return {
16520
+ type: s.PLATFORMS_MAP.mobile
16521
+ };
16522
+ }
16523
+ }, {
16524
+ test: function test(e) {
16525
+ return "blackberry" === e.getBrowserName(!0);
16526
+ },
16527
+ describe: function describe() {
16528
+ return {
16529
+ type: s.PLATFORMS_MAP.mobile,
16530
+ vendor: "BlackBerry"
16531
+ };
16532
+ }
16533
+ }, {
16534
+ test: function test(e) {
16535
+ return "bada" === e.getBrowserName(!0);
16536
+ },
16537
+ describe: function describe() {
16538
+ return {
16539
+ type: s.PLATFORMS_MAP.mobile
16540
+ };
16541
+ }
16542
+ }, {
16543
+ test: function test(e) {
16544
+ return "windows phone" === e.getBrowserName();
16545
+ },
16546
+ describe: function describe() {
16547
+ return {
16548
+ type: s.PLATFORMS_MAP.mobile,
16549
+ vendor: "Microsoft"
16550
+ };
16551
+ }
16552
+ }, {
16553
+ test: function test(e) {
16554
+ var t = Number(String(e.getOSVersion()).split(".")[0]);
16555
+ return "android" === e.getOSName(!0) && t >= 3;
16556
+ },
16557
+ describe: function describe() {
16558
+ return {
16559
+ type: s.PLATFORMS_MAP.tablet
16560
+ };
16561
+ }
16562
+ }, {
16563
+ test: function test(e) {
16564
+ return "android" === e.getOSName(!0);
16565
+ },
16566
+ describe: function describe() {
16567
+ return {
16568
+ type: s.PLATFORMS_MAP.mobile
16569
+ };
16570
+ }
16571
+ }, {
16572
+ test: function test(e) {
16573
+ return "macos" === e.getOSName(!0);
16574
+ },
16575
+ describe: function describe() {
16576
+ return {
16577
+ type: s.PLATFORMS_MAP.desktop,
16578
+ vendor: "Apple"
16579
+ };
16580
+ }
16581
+ }, {
16582
+ test: function test(e) {
16583
+ return "windows" === e.getOSName(!0);
16584
+ },
16585
+ describe: function describe() {
16586
+ return {
16587
+ type: s.PLATFORMS_MAP.desktop
16588
+ };
16589
+ }
16590
+ }, {
16591
+ test: function test(e) {
16592
+ return "linux" === e.getOSName(!0);
16593
+ },
16594
+ describe: function describe() {
16595
+ return {
16596
+ type: s.PLATFORMS_MAP.desktop
16597
+ };
16598
+ }
16599
+ }, {
16600
+ test: function test(e) {
16601
+ return "playstation 4" === e.getOSName(!0);
16602
+ },
16603
+ describe: function describe() {
16604
+ return {
16605
+ type: s.PLATFORMS_MAP.tv
16606
+ };
16607
+ }
16608
+ }, {
16609
+ test: function test(e) {
16610
+ return "roku" === e.getOSName(!0);
16611
+ },
16612
+ describe: function describe() {
16613
+ return {
16614
+ type: s.PLATFORMS_MAP.tv
16615
+ };
16616
+ }
16617
+ }];
16618
+ t.default = a, e.exports = t.default;
16619
+ },
16620
+ 95: function _(e, t, r) {
16621
+ t.__esModule = !0, t.default = void 0;
16622
+ var n,
16623
+ i = (n = r(17)) && n.__esModule ? n : {
16624
+ default: n
16625
+ },
16626
+ s = r(18);
16627
+ var a = [{
16628
+ test: function test(e) {
16629
+ return "microsoft edge" === e.getBrowserName(!0);
16630
+ },
16631
+ describe: function describe(e) {
16632
+ if (/\sedg\//i.test(e)) return {
16633
+ name: s.ENGINE_MAP.Blink
16634
+ };
16635
+ var t = i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i, e);
16636
+ return {
16637
+ name: s.ENGINE_MAP.EdgeHTML,
16638
+ version: t
16639
+ };
16640
+ }
16641
+ }, {
16642
+ test: [/trident/i],
16643
+ describe: function describe(e) {
16644
+ var t = {
16645
+ name: s.ENGINE_MAP.Trident
16646
+ },
16647
+ r = i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i, e);
16648
+ return r && (t.version = r), t;
16649
+ }
16650
+ }, {
16651
+ test: function test(e) {
16652
+ return e.test(/presto/i);
16653
+ },
16654
+ describe: function describe(e) {
16655
+ var t = {
16656
+ name: s.ENGINE_MAP.Presto
16657
+ },
16658
+ r = i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i, e);
16659
+ return r && (t.version = r), t;
16660
+ }
16661
+ }, {
16662
+ test: function test(e) {
16663
+ var t = e.test(/gecko/i),
16664
+ r = e.test(/like gecko/i);
16665
+ return t && !r;
16666
+ },
16667
+ describe: function describe(e) {
16668
+ var t = {
16669
+ name: s.ENGINE_MAP.Gecko
16670
+ },
16671
+ r = i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i, e);
16672
+ return r && (t.version = r), t;
16673
+ }
16674
+ }, {
16675
+ test: [/(apple)?webkit\/537\.36/i],
16676
+ describe: function describe() {
16677
+ return {
16678
+ name: s.ENGINE_MAP.Blink
16679
+ };
16680
+ }
16681
+ }, {
16682
+ test: [/(apple)?webkit/i],
16683
+ describe: function describe(e) {
16684
+ var t = {
16685
+ name: s.ENGINE_MAP.WebKit
16686
+ },
16687
+ r = i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i, e);
16688
+ return r && (t.version = r), t;
16689
+ }
16690
+ }];
16691
+ t.default = a, e.exports = t.default;
16692
+ }
16693
+ });
16694
+ });
16695
+ })(es5);
16696
+ var Bowser = /*@__PURE__*/getDefaultExportFromCjs(es5.exports);
16697
+ var BrowserName;
16698
+ (function (BrowserName) {
16699
+ BrowserName["CHROME"] = "Chrome";
16700
+ BrowserName["FIREFOX"] = "Firefox";
16701
+ BrowserName["EDGE"] = "Microsoft Edge";
16702
+ BrowserName["SAFARI"] = "Safari";
16703
+ })(BrowserName || (BrowserName = {}));
16704
+ var OSName;
16705
+ (function (OSName) {
16706
+ OSName["WINDOWS"] = "Windows";
16707
+ OSName["MAC"] = "macOS";
16708
+ OSName["LINUX"] = "Linux";
16709
+ })(OSName || (OSName = {}));
16710
+ Bowser.getParser(window.navigator.userAgent);
16711
+ class CpuInfo {
16712
+ static getNumLogicalCores() {
16713
+ return navigator.hardwareConcurrency;
16714
+ }
16715
+ }
16716
+ var CapabilityState;
16717
+ (function (CapabilityState) {
16718
+ CapabilityState["NOT_CAPABLE"] = "not capable";
16719
+ CapabilityState["CAPABLE"] = "capable";
16720
+ CapabilityState["UNKNOWN"] = "unknown";
16721
+ })(CapabilityState || (CapabilityState = {}));
16722
+
16723
+ var NetworkType;
16724
+ (function (NetworkType) {
16725
+ NetworkType["VPN"] = "vpn";
16726
+ NetworkType["UNKNOWN"] = "unknown";
16727
+ NetworkType["WIFI"] = "wifi";
16728
+ NetworkType["ETHERNET"] = "ethernet";
16729
+ })(NetworkType || (NetworkType = {}));
16730
+ var MediaDevices;
16731
+ (function (MediaDevices) {
16732
+ MediaDevices["MICROPHONE"] = "microphone";
16733
+ MediaDevices["SPEAKER"] = "speaker";
16734
+ MediaDevices["CAMERA"] = "camera";
16735
+ })(MediaDevices || (MediaDevices = {}));
16736
+ var MediaDirection;
16737
+ (function (MediaDirection) {
16738
+ MediaDirection["SEND"] = "send";
16739
+ MediaDirection["RECEIVE"] = "recv";
16740
+ })(MediaDirection || (MediaDirection = {}));
16741
+ var IpType;
16742
+ (function (IpType) {
16743
+ IpType["REMOTE"] = "remote";
16744
+ IpType["LOCAL"] = "local";
16745
+ })(IpType || (IpType = {}));
16746
+
16747
+ var STATS_DEFAULT = {
16748
+ encryption: 'sha-256',
16749
+ bandwidth: {
16750
+ systemBandwidth: 0,
16751
+ sentPerSecond: 0,
16752
+ encodedPerSecond: 0,
16753
+ helper: {
16754
+ audioBytesSent: 0,
16755
+ videoBytesSent: 0
16756
+ },
16757
+ speed: 0
16758
+ },
16759
+ results: {},
16760
+ connectionType: {
16761
+ systemNetworkType: 'unknown',
16762
+ systemIpAddress: '0.0.0.0',
16763
+ local: {
16764
+ candidateType: 'host',
16765
+ transport: 'UDP',
16766
+ networkType: NetworkType.UNKNOWN
16767
+ },
16768
+ remote: {
16769
+ candidateType: 'host',
16770
+ transport: 'UDP',
16771
+ networkType: NetworkType.UNKNOWN
16772
+ }
16773
+ },
16774
+ resolutions: {},
16775
+ internal: {
16776
+ remote: {},
16777
+ candidates: {}
16778
+ }
16779
+ };
16780
+ var DEFAULT_GET_STATS_FILTER = {
16781
+ types: ['track', 'transport', 'candidate-pair', 'outbound-rtp', 'outboundrtp', 'inbound-rtp', 'inboundrtp', 'remote-inbound-rtp', 'remote-outbound-rtp', 'remote-candidate', 'local-candidate', 'media-source']
16782
+ };
16783
+ var MQA_INTERVAL = 60000;
16784
+ var _UNKNOWN_ = 'UNKNOWN';
16785
+ var emptyMqaInterval = {
16786
+ audioReceive: [],
16787
+ audioTransmit: [],
16788
+ intervalMetadata: {
16789
+ peerReflexiveIP: '0.0.0.0',
16790
+ peripherals: [],
16791
+ cpuInfo: {
16792
+ numberOfCores: 1,
16793
+ description: 'NA',
16794
+ architecture: 'unknown'
16795
+ },
16796
+ processAverageCPU: 0,
16797
+ processMaximumCPU: 0,
16798
+ systemAverageCPU: 0,
16799
+ systemMaximumCPU: 0,
16800
+ screenWidth: 0,
16801
+ screenHeight: 0,
16802
+ screenResolution: 0,
16803
+ appWindowWidth: 0,
16804
+ appWindowHeight: 0,
16805
+ appWindowSize: 0
16806
+ },
16807
+ networkType: '',
16808
+ intervalNumber: 0,
16809
+ videoReceive: [],
16810
+ videoTransmit: []
16811
+ };
16812
+ var emptyAudioReceive = {
16813
+ common: {
16814
+ common: {
16815
+ direction: 'inactive',
16816
+ isMain: true,
16817
+ mariFecEnabled: false,
16818
+ mariRtxEnabled: false,
16819
+ mariQosEnabled: false,
16820
+ mariLiteEnabled: false,
16821
+ multistreamEnabled: false
16822
+ },
16823
+ dtlsBitrate: 0,
16824
+ dtlsPackets: 0,
16825
+ fecBitrate: 0,
16826
+ fecPackets: 0,
16827
+ maxBitrate: 0,
16828
+ mediaHopByHopLost: 0,
16829
+ rtcpBitrate: 0,
16830
+ rtcpPackets: 0,
16831
+ rtpBitrate: 0,
16832
+ rtpHopByHopLost: 0,
16833
+ rtpPackets: 0,
16834
+ rtpRecovered: 0,
16835
+ rtxBitrate: 0,
16836
+ rtxPackets: 0,
16837
+ srtcpUnprotectErrors: 0,
16838
+ srtpUnprotectErrors: 0,
16839
+ stunBitrate: 0,
16840
+ stunPackets: 0,
16841
+ transportType: 'UDP'
16842
+ },
16843
+ streams: []
16844
+ };
16845
+ var emptyAudioReceiveStream = {
16846
+ common: {
16847
+ codec: 'opus',
16848
+ concealedFrames: 0,
16849
+ csi: [],
16850
+ maxConcealRunLength: 0,
16851
+ optimalBitrate: 0,
16852
+ optimalFrameRate: 0,
16853
+ receivedBitrate: 0,
16854
+ receivedFrameRate: 0,
16855
+ renderedFrameRate: 0,
16856
+ requestedBitrate: 0,
16857
+ requestedFrameRate: 0,
16858
+ rtpEndToEndLost: 0,
16859
+ maxRtpJitter: 0,
16860
+ meanRtpJitter: 0,
16861
+ rtpPackets: 0,
16862
+ ssci: 0
16863
+ }
16864
+ };
16865
+ var emptyAudioTransmit = {
16866
+ common: {
16867
+ availableBitrate: 0,
16868
+ common: {
16869
+ direction: 'inactive',
16870
+ isMain: true,
16871
+ mariFecEnabled: false,
16872
+ mariRtxEnabled: false,
16873
+ mariQosEnabled: false,
16874
+ mariLiteEnabled: false,
16875
+ multistreamEnabled: false
16876
+ },
16877
+ dtlsBitrate: 0,
16878
+ dtlsPackets: 0,
16879
+ fecBitrate: 0,
16880
+ fecPackets: 0,
16881
+ maxBitrate: 0,
16882
+ queueDelay: 0,
16883
+ remoteJitter: 0,
16884
+ remoteLossRate: 0,
16885
+ roundTripTime: 0,
16886
+ rtcpBitrate: 0,
16887
+ rtcpPackets: 0,
16888
+ rtpBitrate: 0,
16889
+ rtpPackets: 0,
16890
+ rtxBitrate: 0,
16891
+ rtxPackets: 0,
16892
+ stunBitrate: 0,
16893
+ stunPackets: 0,
16894
+ transportType: 'UDP'
16895
+ },
16896
+ streams: []
16897
+ };
16898
+ var emptyAudioTransmitStream = {
16899
+ common: {
16900
+ codec: 'opus',
16901
+ csi: [],
16902
+ requestedBitrate: 0,
16903
+ requestedFrames: 0,
16904
+ rtpPackets: 0,
16905
+ ssci: 0,
16906
+ transmittedBitrate: 0,
16907
+ transmittedFrameRate: 0
16908
+ }
16909
+ };
16910
+ var emptyVideoReceive = {
16911
+ common: {
16912
+ common: {
16913
+ direction: 'inactive',
16914
+ isMain: true,
16915
+ mariFecEnabled: false,
16916
+ mariRtxEnabled: false,
16917
+ mariQosEnabled: false,
16918
+ mariLiteEnabled: false,
16919
+ multistreamEnabled: false
16920
+ },
16921
+ dtlsBitrate: 0,
16922
+ dtlsPackets: 0,
16923
+ fecBitrate: 0,
16924
+ fecPackets: 0,
16925
+ maxBitrate: 0,
16926
+ mediaHopByHopLost: 0,
16927
+ rtcpBitrate: 0,
16928
+ rtcpPackets: 0,
16929
+ rtpBitrate: 0,
16930
+ rtpHopByHopLost: 0,
16931
+ rtpPackets: 0,
16932
+ rtpRecovered: 0,
16933
+ rtxBitrate: 0,
16934
+ rtxPackets: 0,
16935
+ srtcpUnprotectErrors: 0,
16936
+ srtpUnprotectErrors: 0,
16937
+ stunBitrate: 0,
16938
+ stunPackets: 0,
16939
+ transportType: 'UDP'
16940
+ },
16941
+ streams: []
16942
+ };
16943
+ var emptyVideoReceiveStream = {
16944
+ common: {
16945
+ codec: 'H264',
16946
+ concealedFrames: 0,
16947
+ csi: [],
16948
+ maxConcealRunLength: 0,
16949
+ optimalBitrate: 0,
16950
+ optimalFrameRate: 0,
16951
+ receivedBitrate: 0,
16952
+ receivedFrameRate: 0,
16953
+ renderedFrameRate: 0,
16954
+ requestedBitrate: 0,
16955
+ requestedFrameRate: 0,
16956
+ rtpEndToEndLost: 0,
16957
+ maxRtpJitter: 0,
16958
+ meanRtpJitter: 0,
16959
+ rtpPackets: 0,
16960
+ ssci: 0
16961
+ },
16962
+ h264CodecProfile: 'BP',
16963
+ isActiveSpeaker: false,
16964
+ optimalFrameSize: 0,
16965
+ receivedFrameSize: 0,
16966
+ receivedHeight: 0,
16967
+ receivedKeyFrames: 0,
16968
+ receivedKeyFramesForRequest: 0,
16969
+ receivedKeyFramesSourceChange: 0,
16970
+ receivedKeyFramesUnknown: 0,
16971
+ receivedWidth: 0,
16972
+ requestedFrameSize: 0,
16973
+ requestedKeyFrames: 0
16974
+ };
16975
+ var emptyVideoTransmit = {
16976
+ common: {
16977
+ availableBitrate: 0,
16978
+ common: {
16979
+ direction: 'inactive',
16980
+ isMain: true,
16981
+ mariFecEnabled: false,
16982
+ mariRtxEnabled: false,
16983
+ mariQosEnabled: false,
16984
+ mariLiteEnabled: false,
16985
+ multistreamEnabled: false
16986
+ },
16987
+ dtlsBitrate: 0,
16988
+ dtlsPackets: 0,
16989
+ fecBitrate: 0,
16990
+ fecPackets: 0,
16991
+ maxBitrate: 0,
16992
+ queueDelay: 0,
16993
+ remoteJitter: 0,
16994
+ remoteLossRate: 0,
16995
+ roundTripTime: 0,
16996
+ rtcpBitrate: 0,
16997
+ rtcpPackets: 0,
16998
+ rtpBitrate: 0,
16999
+ rtpPackets: 0,
17000
+ rtxBitrate: 0,
17001
+ rtxPackets: 0,
17002
+ stunBitrate: 0,
17003
+ stunPackets: 0,
17004
+ transportType: 'UDP'
17005
+ },
17006
+ streams: []
17007
+ };
17008
+ var emptyVideoTransmitStream = {
17009
+ common: {
17010
+ codec: 'H264',
17011
+ csi: [],
17012
+ duplicateSsci: 0,
17013
+ requestedBitrate: 0,
17014
+ requestedFrames: 0,
17015
+ rtpPackets: 0,
17016
+ ssci: 0,
17017
+ transmittedBitrate: 0,
17018
+ transmittedFrameRate: 0
17019
+ },
17020
+ h264CodecProfile: 'BP',
17021
+ isAvatar: false,
17022
+ isHardwareEncoded: false,
17023
+ localConfigurationChanges: 2,
17024
+ maxFrameQp: 0,
17025
+ maxNoiseLevel: 0,
17026
+ minRegionQp: 0,
17027
+ remoteConfigurationChanges: 0,
17028
+ requestedFrameSize: 0,
17029
+ requestedKeyFrames: 0,
17030
+ transmittedFrameSize: 0,
17031
+ transmittedHeight: 0,
17032
+ transmittedKeyFrames: 0,
17033
+ transmittedKeyFramesClient: 0,
17034
+ transmittedKeyFramesConfigurationChange: 0,
17035
+ transmittedKeyFramesFeedback: 0,
17036
+ transmittedKeyFramesLocalDrop: 0,
17037
+ transmittedKeyFramesOtherLayer: 0,
17038
+ transmittedKeyFramesPeriodic: 0,
17039
+ transmittedKeyFramesSceneChange: 0,
17040
+ transmittedKeyFramesStartup: 0,
17041
+ transmittedKeyFramesUnknown: 0,
17042
+ transmittedWidth: 0
17043
+ };
17044
+ var emptySender = {
17045
+ trackLabel: '',
17046
+ maxPacketLossRatio: 0,
17047
+ availableBandwidth: 0,
17048
+ bytesSent: 0,
17049
+ meanRemoteJitter: [],
17050
+ meanRoundTripTime: []
17051
+ };
17052
+ var emptyReceiver = {
17053
+ availableBandwidth: 0,
17054
+ bytesReceived: 0,
17055
+ meanRtpJitter: [],
17056
+ meanRoundTripTime: []
17057
+ };
17058
+ var VIDEO_FRAME_RATE_MULTIPLIER = 100;
17059
+
17060
+ var max = array => {
17061
+ if (array.length === 0) {
17062
+ return 0;
17063
+ }
17064
+ return Math.max(...array);
17065
+ };
17066
+ var mean = array => {
17067
+ if (array.length === 0) {
17068
+ return 0;
17069
+ }
17070
+ return array.reduce((a, b) => a + b) / array.length;
17071
+ };
17072
+ var getTotalValueFromBaseType = (stats, sendrecvType, baseMediaType, value) => Object.keys(stats).filter(mt => mt.includes(baseMediaType)).reduce((acc, mt) => {
17073
+ var _stats$mt, _stats$mt$sendrecvTyp;
17074
+ return acc + (((_stats$mt = stats[mt]) === null || _stats$mt === void 0 ? void 0 : (_stats$mt$sendrecvTyp = _stats$mt[sendrecvType]) === null || _stats$mt$sendrecvTyp === void 0 ? void 0 : _stats$mt$sendrecvTyp[value]) || 0);
17075
+ }, 0);
17076
+ var getAudioReceiverMqa = _ref => {
17077
+ var {
17078
+ audioReceiver,
17079
+ statsResults,
17080
+ lastMqaDataSent,
17081
+ baseMediaType,
17082
+ isMultistream
17083
+ } = _ref;
17084
+ var sendrecvType = MediaDirection.RECEIVE;
17085
+ var getLastTotalValue = value => getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);
17086
+ var getTotalValue = value => getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);
17087
+ var lastPacketsReceived = getLastTotalValue('totalPacketsReceived');
17088
+ var lastPacketsLost = getLastTotalValue('totalPacketsLost');
17089
+ var lastBytesReceived = getLastTotalValue('totalBytesReceived');
17090
+ var lastFecPacketsReceived = getLastTotalValue('fecPacketsReceived');
17091
+ var lastFecPacketsDiscarded = getLastTotalValue('fecPacketsDiscarded');
17092
+ var totalPacketsReceived = getTotalValue('totalPacketsReceived');
17093
+ var packetsLost = getTotalValue('totalPacketsLost');
17094
+ var totalBytesReceived = getTotalValue('totalBytesReceived');
17095
+ var totalFecPacketsReceived = getTotalValue('fecPacketsReceived');
17096
+ var totalFecPacketsDiscarded = getTotalValue('fecPacketsDiscarded');
17097
+ var mediaTypeKey = Object.keys(statsResults).find(mediaType => mediaType.includes(baseMediaType));
17098
+ if (mediaTypeKey) {
17099
+ var _statsResults$mediaTy;
17100
+ audioReceiver.common.common.direction = ((_statsResults$mediaTy = statsResults[mediaTypeKey]) === null || _statsResults$mediaTy === void 0 ? void 0 : _statsResults$mediaTy.direction) || 'inactive';
17101
+ } else {
17102
+ audioReceiver.common.common.direction = 'inactive';
17103
+ }
17104
+ audioReceiver.common.common.isMain = !baseMediaType.includes('-share');
17105
+ audioReceiver.common.common.multistreamEnabled = isMultistream;
17106
+ audioReceiver.common.transportType = statsResults.connectionType.local.transport;
17107
+ audioReceiver.common.rtpPackets = totalPacketsReceived - lastPacketsReceived;
17108
+ var totalPacketsLost = packetsLost - lastPacketsLost;
17109
+ audioReceiver.common.mediaHopByHopLost = totalPacketsLost;
17110
+ audioReceiver.common.rtpHopByHopLost = totalPacketsLost;
17111
+ var fecRecovered = totalFecPacketsReceived - lastFecPacketsReceived - (totalFecPacketsDiscarded - lastFecPacketsDiscarded);
17112
+ audioReceiver.common.fecPackets = totalFecPacketsReceived - lastFecPacketsReceived;
17113
+ audioReceiver.common.rtpRecovered = fecRecovered;
17114
+ audioReceiver.common.rtpBitrate = (totalBytesReceived - lastBytesReceived) * 8 / 60 || 0;
17115
+ };
17116
+ var getAudioReceiverStreamMqa = _ref2 => {
17117
+ var _lastMqaDataSent$medi, _lastMqaDataSent$medi2, _lastMqaDataSent$medi3, _lastMqaDataSent$medi4, _lastMqaDataSent$medi5, _lastMqaDataSent$medi6, _lastMqaDataSent$medi7, _lastMqaDataSent$medi8;
17118
+ var {
17119
+ audioReceiverStream,
17120
+ statsResults,
17121
+ lastMqaDataSent,
17122
+ mediaType
17123
+ } = _ref2;
17124
+ var sendrecvType = MediaDirection.RECEIVE;
17125
+ var lastPacketsDecoded = ((_lastMqaDataSent$medi = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi === void 0 ? void 0 : _lastMqaDataSent$medi[sendrecvType].totalSamplesDecoded) || 0;
17126
+ var lastSamplesReceived = ((_lastMqaDataSent$medi2 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi2 === void 0 ? void 0 : _lastMqaDataSent$medi2[sendrecvType].totalSamplesReceived) || 0;
17127
+ var lastConcealedSamples = ((_lastMqaDataSent$medi3 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi3 === void 0 ? void 0 : _lastMqaDataSent$medi3[sendrecvType].concealedSamples) || 0;
17128
+ var lastBytesReceived = ((_lastMqaDataSent$medi4 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi4 === void 0 ? void 0 : _lastMqaDataSent$medi4[sendrecvType].totalBytesReceived) || 0;
17129
+ var lastFecPacketsReceived = ((_lastMqaDataSent$medi5 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi5 === void 0 ? void 0 : _lastMqaDataSent$medi5[sendrecvType].fecPacketsReceived) || 0;
17130
+ var lastFecPacketsDiscarded = ((_lastMqaDataSent$medi6 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi6 === void 0 ? void 0 : _lastMqaDataSent$medi6[sendrecvType].fecPacketsDiscarded) || 0;
17131
+ var lastPacketsReceived = ((_lastMqaDataSent$medi7 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi7 === void 0 ? void 0 : _lastMqaDataSent$medi7[sendrecvType].totalPacketsReceived) || 0;
17132
+ var lastPacketsLost = ((_lastMqaDataSent$medi8 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi8 === void 0 ? void 0 : _lastMqaDataSent$medi8[sendrecvType].totalPacketsLost) || 0;
17133
+ var {
17134
+ csi
17135
+ } = statsResults[mediaType];
17136
+ if (csi && !audioReceiverStream.common.csi.includes(csi)) {
17137
+ audioReceiverStream.common.csi.push(csi);
17138
+ }
17139
+ audioReceiverStream.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;
17140
+ audioReceiverStream.common.maxRtpJitter = max(statsResults[mediaType][sendrecvType].meanRtpJitter || []) * 1000;
17141
+ audioReceiverStream.common.meanRtpJitter = mean(statsResults[mediaType][sendrecvType].meanRtpJitter || []) * 1000;
17142
+ var fecRecovered = statsResults[mediaType][sendrecvType].fecPacketsReceived - lastFecPacketsReceived - (statsResults[mediaType][sendrecvType].fecPacketsDiscarded - lastFecPacketsDiscarded);
17143
+ audioReceiverStream.common.rtpEndToEndLost = statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost - fecRecovered || 0;
17144
+ audioReceiverStream.common.framesDropped = statsResults[mediaType][sendrecvType].totalSamplesDecoded - lastPacketsDecoded || 0;
17145
+ audioReceiverStream.common.renderedFrameRate = audioReceiverStream.common.framesDropped * 100 / 60 || 0;
17146
+ audioReceiverStream.common.framesReceived = statsResults[mediaType][sendrecvType].totalSamplesReceived - lastSamplesReceived || 0;
17147
+ audioReceiverStream.common.concealedFrames = statsResults[mediaType][sendrecvType].concealedSamples - lastConcealedSamples || 0;
17148
+ audioReceiverStream.common.receivedBitrate = (statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived) * 8 / 60 || 0;
17149
+ };
17150
+ var getAudioSenderMqa = _ref3 => {
17151
+ var {
17152
+ audioSender,
17153
+ statsResults,
17154
+ lastMqaDataSent,
17155
+ baseMediaType,
17156
+ isMultistream
17157
+ } = _ref3;
17158
+ var sendrecvType = MediaDirection.SEND;
17159
+ var getLastTotalValue = value => getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);
17160
+ var getTotalValue = value => getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);
17161
+ var lastPacketsSent = getLastTotalValue('totalPacketsSent');
17162
+ var lastPacketsLostTotal = getLastTotalValue('totalPacketsLostOnReceiver');
17163
+ var totalPacketsLostOnReceiver = getTotalValue('totalPacketsLostOnReceiver');
17164
+ var totalPacketsSent = getTotalValue('totalPacketsSent');
17165
+ var meanRemoteJitter = Object.keys(statsResults).filter(mt => mt.includes(baseMediaType)).reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRemoteJitter), []);
17166
+ var meanRoundTripTime = Object.keys(statsResults).filter(mt => mt.includes(baseMediaType)).reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRoundTripTime), []);
17167
+ var mediaTypeKey = Object.keys(statsResults).find(mediaType => mediaType.includes(baseMediaType));
17168
+ if (mediaTypeKey) {
17169
+ var _statsResults$mediaTy2;
17170
+ audioSender.common.common.direction = ((_statsResults$mediaTy2 = statsResults[mediaTypeKey]) === null || _statsResults$mediaTy2 === void 0 ? void 0 : _statsResults$mediaTy2.direction) || 'inactive';
17171
+ } else {
17172
+ audioSender.common.common.direction = 'inactive';
17173
+ }
17174
+ audioSender.common.common.isMain = !baseMediaType.includes('-share');
17175
+ audioSender.common.common.multistreamEnabled = isMultistream;
17176
+ audioSender.common.transportType = statsResults.connectionType.local.transport;
17177
+ audioSender.common.maxRemoteJitter = max(meanRemoteJitter) * 1000;
17178
+ audioSender.common.meanRemoteJitter = mean(meanRemoteJitter) * 1000;
17179
+ audioSender.common.rtpPackets = totalPacketsSent - lastPacketsSent || 0;
17180
+ audioSender.common.availableBitrate = statsResults.availableOutgoingBitrate;
17181
+ var totalPacketsLostForaMin = totalPacketsLostOnReceiver - lastPacketsLostTotal;
17182
+ audioSender.common.maxRemoteLossRate = totalPacketsSent - lastPacketsSent > 0 ? totalPacketsLostForaMin * 100 / (totalPacketsSent - lastPacketsSent) : 0;
17183
+ audioSender.common.maxRoundTripTime = max(meanRoundTripTime) * 1000;
17184
+ audioSender.common.meanRoundTripTime = mean(meanRoundTripTime) * 1000;
17185
+ audioSender.common.roundTripTime = audioSender.common.maxRoundTripTime;
17186
+ var totalBytesSentInaMin = getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, 'totalBytesSent') - getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, 'totalBytesSent');
17187
+ audioSender.common.rtpBitrate = totalBytesSentInaMin ? totalBytesSentInaMin * 8 / 60 : 0;
17188
+ };
17189
+ var getAudioSenderStreamMqa = _ref4 => {
17190
+ var _lastMqaDataSent$medi9, _lastMqaDataSent$medi10, _lastMqaDataSent$medi11, _lastMqaDataSent$medi12;
17191
+ var {
17192
+ audioSenderStream,
17193
+ statsResults,
17194
+ lastMqaDataSent,
17195
+ mediaType
17196
+ } = _ref4;
17197
+ var sendrecvType = MediaDirection.SEND;
17198
+ var lastBytesSent = ((_lastMqaDataSent$medi9 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi9 === void 0 ? void 0 : _lastMqaDataSent$medi9[sendrecvType].totalBytesSent) || 0;
17199
+ var lastFramesEncoded = ((_lastMqaDataSent$medi10 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi10 === void 0 ? void 0 : _lastMqaDataSent$medi10[sendrecvType].totalKeyFramesEncoded) || 0;
17200
+ var lastFirCount = ((_lastMqaDataSent$medi11 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi11 === void 0 ? void 0 : _lastMqaDataSent$medi11[sendrecvType].totalFirCount) || 0;
17201
+ var lastPacketsSent = ((_lastMqaDataSent$medi12 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi12 === void 0 ? void 0 : _lastMqaDataSent$medi12[sendrecvType].totalPacketsSent) || 0;
17202
+ var {
17203
+ csi
17204
+ } = statsResults[mediaType];
17205
+ if (csi && !audioSenderStream.common.csi.includes(csi)) {
17206
+ audioSenderStream.common.csi.push(csi);
17207
+ }
17208
+ audioSenderStream.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;
17209
+ var totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;
17210
+ audioSenderStream.common.transmittedBitrate = totalBytesSentInaMin ? totalBytesSentInaMin * 8 / 60 : 0;
17211
+ audioSenderStream.transmittedKeyFrames = statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastFramesEncoded || 0;
17212
+ audioSenderStream.requestedKeyFrames = statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;
17213
+ audioSenderStream.requestedBitrate = statsResults[mediaType][sendrecvType].requestedBitrate || 0;
17214
+ };
17215
+ var getVideoReceiverMqa = _ref5 => {
17216
+ var {
17217
+ videoReceiver,
17218
+ statsResults,
17219
+ lastMqaDataSent,
17220
+ baseMediaType,
17221
+ isMultistream
17222
+ } = _ref5;
17223
+ var sendrecvType = MediaDirection.RECEIVE;
17224
+ var getLastTotalValue = value => getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);
17225
+ var getTotalValue = value => getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);
17226
+ var lastPacketsReceived = getLastTotalValue('totalPacketsReceived');
17227
+ var lastPacketsLost = getLastTotalValue('totalPacketsLost');
17228
+ var lastBytesReceived = getLastTotalValue('totalBytesReceived');
17229
+ var lastRtxPacketsReceived = getLastTotalValue('totalRtxPacketsReceived');
17230
+ var lastRtxBytesReceived = getLastTotalValue('totalRtxBytesReceived');
17231
+ var packetsLost = getTotalValue('totalPacketsLost');
17232
+ var totalPacketsReceived = getTotalValue('totalPacketsReceived');
17233
+ var totalBytesReceived = getTotalValue('totalBytesReceived');
17234
+ var totalRtxPacketsReceived = getTotalValue('totalRtxPacketsReceived');
17235
+ var totalRtxBytesReceived = getTotalValue('totalRtxBytesReceived');
17236
+ var mediaTypeKey = Object.keys(statsResults).find(mediaType => mediaType.includes(baseMediaType));
17237
+ if (mediaTypeKey) {
17238
+ var _statsResults$mediaTy3;
17239
+ videoReceiver.common.common.direction = ((_statsResults$mediaTy3 = statsResults[mediaTypeKey]) === null || _statsResults$mediaTy3 === void 0 ? void 0 : _statsResults$mediaTy3.direction) || 'inactive';
17240
+ } else {
17241
+ videoReceiver.common.common.direction = 'inactive';
17242
+ }
17243
+ videoReceiver.common.common.isMain = !baseMediaType.includes('-share');
17244
+ videoReceiver.common.common.multistreamEnabled = isMultistream;
17245
+ videoReceiver.common.transportType = statsResults.connectionType.local.transport;
17246
+ videoReceiver.common.rtpPackets = totalPacketsReceived - lastPacketsReceived || 0;
17247
+ var totalPacketsLost = packetsLost - lastPacketsLost;
17248
+ videoReceiver.common.mediaHopByHopLost = totalPacketsLost;
17249
+ videoReceiver.common.rtpHopByHopLost = totalPacketsLost;
17250
+ var totalBytesReceivedInaMin = totalBytesReceived - lastBytesReceived;
17251
+ var totalRtxBytesReceivedInaMin = totalRtxBytesReceived - lastRtxBytesReceived;
17252
+ videoReceiver.common.rtpBitrate = totalBytesReceivedInaMin ? totalBytesReceivedInaMin * 8 / 60 : 0;
17253
+ videoReceiver.common.rtxPackets = totalRtxPacketsReceived - lastRtxPacketsReceived;
17254
+ videoReceiver.common.rtxBitrate = totalRtxBytesReceivedInaMin ? totalRtxBytesReceivedInaMin * 8 / 60 : 0;
17255
+ };
17256
+ var getVideoReceiverStreamMqa = _ref6 => {
17257
+ var _lastMqaDataSent$medi13, _lastMqaDataSent$medi14, _lastMqaDataSent$medi15, _lastMqaDataSent$medi16, _lastMqaDataSent$medi17, _lastMqaDataSent$medi18, _lastMqaDataSent$medi19, _lastMqaDataSent$medi20, _statsResults$mediaTy4, _statsResults$mediaTy5;
17258
+ var {
17259
+ videoReceiverStream,
17260
+ statsResults,
17261
+ lastMqaDataSent,
17262
+ mediaType
17263
+ } = _ref6;
17264
+ var sendrecvType = MediaDirection.RECEIVE;
17265
+ var lastPacketsReceived = ((_lastMqaDataSent$medi13 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi13 === void 0 ? void 0 : _lastMqaDataSent$medi13[sendrecvType].totalPacketsReceived) || 0;
17266
+ var lastPacketsLost = ((_lastMqaDataSent$medi14 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi14 === void 0 ? void 0 : _lastMqaDataSent$medi14[sendrecvType].totalPacketsLost) || 0;
17267
+ var lastBytesReceived = ((_lastMqaDataSent$medi15 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi15 === void 0 ? void 0 : _lastMqaDataSent$medi15[sendrecvType].totalBytesReceived) || 0;
17268
+ var lastFramesReceived = ((_lastMqaDataSent$medi16 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi16 === void 0 ? void 0 : _lastMqaDataSent$medi16[sendrecvType].framesReceived) || 0;
17269
+ var lastFramesDecoded = ((_lastMqaDataSent$medi17 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi17 === void 0 ? void 0 : _lastMqaDataSent$medi17[sendrecvType].framesDecoded) || 0;
17270
+ var lastFramesDropped = ((_lastMqaDataSent$medi18 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi18 === void 0 ? void 0 : _lastMqaDataSent$medi18[sendrecvType].framesDropped) || 0;
17271
+ var lastKeyFramesDecoded = ((_lastMqaDataSent$medi19 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi19 === void 0 ? void 0 : _lastMqaDataSent$medi19[sendrecvType].keyFramesDecoded) || 0;
17272
+ var lastPliCount = ((_lastMqaDataSent$medi20 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi20 === void 0 ? void 0 : _lastMqaDataSent$medi20[sendrecvType].totalPliCount) || 0;
17273
+ var {
17274
+ csi
17275
+ } = statsResults[mediaType];
17276
+ if (csi && !videoReceiverStream.common.csi.includes(csi)) {
17277
+ videoReceiverStream.common.csi.push(csi);
17278
+ }
17279
+ videoReceiverStream.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsReceived - lastPacketsReceived || 0;
17280
+ var totalPacketLoss = statsResults[mediaType][sendrecvType].totalPacketsLost - lastPacketsLost || 0;
17281
+ videoReceiverStream.common.rtpEndToEndLost = totalPacketLoss;
17282
+ videoReceiverStream.common.maxRtpJitter = max(statsResults[mediaType][sendrecvType].meanRtpJitter || []) * 1000;
17283
+ videoReceiverStream.common.meanRtpJitter = mean(statsResults[mediaType][sendrecvType].meanRtpJitter || []) * 1000;
17284
+ var totalBytesReceivedInaMin = statsResults[mediaType][sendrecvType].totalBytesReceived - lastBytesReceived;
17285
+ videoReceiverStream.common.receivedBitrate = totalBytesReceivedInaMin ? totalBytesReceivedInaMin * 8 / 60 : 0;
17286
+ var totalFrameReceivedInaMin = statsResults[mediaType][sendrecvType].framesReceived - lastFramesReceived;
17287
+ var totalFrameDecodedInaMin = statsResults[mediaType][sendrecvType].framesDecoded - lastFramesDecoded;
17288
+ videoReceiverStream.common.receivedFrameRate = Math.round(totalFrameReceivedInaMin ? totalFrameReceivedInaMin * VIDEO_FRAME_RATE_MULTIPLIER / 60 : 0);
17289
+ videoReceiverStream.common.renderedFrameRate = Math.round(totalFrameDecodedInaMin ? totalFrameDecodedInaMin * VIDEO_FRAME_RATE_MULTIPLIER / 60 : 0);
17290
+ videoReceiverStream.common.framesDropped = statsResults[mediaType][sendrecvType].framesDropped - lastFramesDropped || 0;
17291
+ videoReceiverStream.receivedHeight = statsResults[mediaType][sendrecvType].height || 0;
17292
+ videoReceiverStream.receivedWidth = statsResults[mediaType][sendrecvType].width || 0;
17293
+ videoReceiverStream.receivedFrameSize = videoReceiverStream.receivedHeight * videoReceiverStream.receivedWidth / 256;
17294
+ videoReceiverStream.receivedKeyFrames = statsResults[mediaType][sendrecvType].keyFramesDecoded - lastKeyFramesDecoded || 0;
17295
+ videoReceiverStream.requestedKeyFrames = statsResults[mediaType][sendrecvType].totalPliCount - lastPliCount || 0;
17296
+ videoReceiverStream.isActiveSpeaker = statsResults[mediaType][sendrecvType].isActiveSpeaker || ((_statsResults$mediaTy4 = statsResults[mediaType][sendrecvType].lastActiveSpeakerTimestamp) !== null && _statsResults$mediaTy4 !== void 0 ? _statsResults$mediaTy4 : 0) > 0 && performance.now() + performance.timeOrigin - ((_statsResults$mediaTy5 = statsResults[mediaType][sendrecvType].lastActiveSpeakerTimestamp) !== null && _statsResults$mediaTy5 !== void 0 ? _statsResults$mediaTy5 : 0) < MQA_INTERVAL;
17297
+ };
17298
+ var getVideoSenderMqa = _ref7 => {
17299
+ var {
17300
+ videoSender,
17301
+ statsResults,
17302
+ lastMqaDataSent,
17303
+ baseMediaType,
17304
+ isMultistream
17305
+ } = _ref7;
17306
+ var sendrecvType = MediaDirection.SEND;
17307
+ var getLastTotalValue = value => getTotalValueFromBaseType(lastMqaDataSent, sendrecvType, baseMediaType, value);
17308
+ var getTotalValue = value => getTotalValueFromBaseType(statsResults, sendrecvType, baseMediaType, value);
17309
+ var lastPacketsSent = getLastTotalValue('totalPacketsSent');
17310
+ var lastBytesSent = getLastTotalValue('totalBytesSent');
17311
+ var lastPacketsLostTotal = getLastTotalValue('totalPacketsLostOnReceiver');
17312
+ var lastRtxPacketsSent = getLastTotalValue('totalRtxPacketsSent');
17313
+ var lastRtxBytesSent = getLastTotalValue('totalRtxBytesSent');
17314
+ var totalPacketsLostOnReceiver = getTotalValue('totalPacketsLostOnReceiver');
17315
+ var totalPacketsSent = getTotalValue('totalPacketsSent');
17316
+ var totalBytesSent = getTotalValue('totalBytesSent');
17317
+ var totalRtxPacketsSent = getTotalValue('totalRtxPacketsSent');
17318
+ var totalRtxBytesSent = getTotalValue('totalRtxBytesSent');
17319
+ var mediaTypeKey = Object.keys(statsResults).find(mediaType => mediaType.includes(baseMediaType));
17320
+ if (mediaTypeKey) {
17321
+ var _statsResults$mediaTy6;
17322
+ videoSender.common.common.direction = ((_statsResults$mediaTy6 = statsResults[mediaTypeKey]) === null || _statsResults$mediaTy6 === void 0 ? void 0 : _statsResults$mediaTy6.direction) || 'inactive';
17323
+ } else {
17324
+ videoSender.common.common.direction = 'inactive';
17325
+ }
17326
+ videoSender.common.common.isMain = !baseMediaType.includes('-share');
17327
+ videoSender.common.common.multistreamEnabled = isMultistream;
17328
+ videoSender.common.transportType = statsResults.connectionType.local.transport;
17329
+ var meanRemoteJitter = Object.keys(statsResults).filter(mt => mt.includes(baseMediaType)).reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRemoteJitter), []);
17330
+ var meanRoundTripTime = Object.keys(statsResults).filter(mt => mt.includes(baseMediaType)).reduce((acc, mt) => acc.concat(statsResults[mt][sendrecvType].meanRoundTripTime), []);
17331
+ videoSender.common.maxRemoteJitter = max(meanRemoteJitter) * 1000;
17332
+ videoSender.common.meanRemoteJitter = mean(meanRemoteJitter) * 1000;
17333
+ videoSender.common.rtpPackets = totalPacketsSent - lastPacketsSent;
17334
+ videoSender.common.availableBitrate = statsResults.availableOutgoingBitrate;
17335
+ var totalPacketsLostForaMin = totalPacketsLostOnReceiver - lastPacketsLostTotal;
17336
+ videoSender.common.maxRemoteLossRate = totalPacketsSent - lastPacketsSent > 0 ? totalPacketsLostForaMin * 100 / (totalPacketsSent - lastPacketsSent) : 0;
17337
+ videoSender.common.maxRoundTripTime = max(meanRoundTripTime) * 1000;
17338
+ videoSender.common.meanRoundTripTime = mean(meanRoundTripTime) * 1000;
17339
+ videoSender.common.roundTripTime = videoSender.common.maxRoundTripTime;
17340
+ var totalBytesSentInaMin = totalBytesSent - lastBytesSent;
17341
+ var totalRtxBytesSentInaMin = totalRtxBytesSent - lastRtxBytesSent;
17342
+ videoSender.common.rtpBitrate = totalBytesSentInaMin ? totalBytesSentInaMin * 8 / 60 : 0;
17343
+ videoSender.common.rtxPackets = totalRtxPacketsSent - lastRtxPacketsSent;
17344
+ videoSender.common.rtxBitrate = totalRtxBytesSentInaMin ? totalRtxBytesSentInaMin * 8 / 60 : 0;
17345
+ };
17346
+ var getVideoSenderStreamMqa = _ref8 => {
17347
+ var _lastMqaDataSent$medi21, _lastMqaDataSent$medi22, _lastMqaDataSent$medi23, _lastMqaDataSent$medi24, _lastMqaDataSent$medi25;
17348
+ var {
17349
+ videoSenderStream,
17350
+ statsResults,
17351
+ lastMqaDataSent,
17352
+ mediaType
17353
+ } = _ref8;
17354
+ var sendrecvType = MediaDirection.SEND;
17355
+ var lastPacketsSent = ((_lastMqaDataSent$medi21 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi21 === void 0 ? void 0 : _lastMqaDataSent$medi21[sendrecvType].totalPacketsSent) || 0;
17356
+ var lastBytesSent = ((_lastMqaDataSent$medi22 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi22 === void 0 ? void 0 : _lastMqaDataSent$medi22[sendrecvType].totalBytesSent) || 0;
17357
+ var lastKeyFramesEncoded = ((_lastMqaDataSent$medi23 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi23 === void 0 ? void 0 : _lastMqaDataSent$medi23[sendrecvType].totalKeyFramesEncoded) || 0;
17358
+ var lastFirCount = ((_lastMqaDataSent$medi24 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi24 === void 0 ? void 0 : _lastMqaDataSent$medi24[sendrecvType].totalFirCount) || 0;
17359
+ var lastFramesSent = ((_lastMqaDataSent$medi25 = lastMqaDataSent[mediaType]) === null || _lastMqaDataSent$medi25 === void 0 ? void 0 : _lastMqaDataSent$medi25[sendrecvType].framesSent) || 0;
17360
+ var {
17361
+ csi
17362
+ } = statsResults[mediaType];
17363
+ if (csi && !videoSenderStream.common.csi.includes(csi)) {
17364
+ videoSenderStream.common.csi.push(csi);
17365
+ }
17366
+ videoSenderStream.common.rtpPackets = statsResults[mediaType][sendrecvType].totalPacketsSent - lastPacketsSent || 0;
17367
+ var totalBytesSentInaMin = statsResults[mediaType][sendrecvType].totalBytesSent - lastBytesSent;
17368
+ videoSenderStream.common.transmittedBitrate = totalBytesSentInaMin ? totalBytesSentInaMin * 8 / 60 : 0;
17369
+ videoSenderStream.transmittedKeyFrames = statsResults[mediaType][sendrecvType].totalKeyFramesEncoded - lastKeyFramesEncoded || 0;
17370
+ videoSenderStream.requestedKeyFrames = statsResults[mediaType][sendrecvType].totalFirCount - lastFirCount || 0;
17371
+ var totalFrameSentInaMin = statsResults[mediaType][sendrecvType].framesSent - (lastFramesSent || 0);
17372
+ videoSenderStream.common.transmittedFrameRate = Math.round(totalFrameSentInaMin ? totalFrameSentInaMin * VIDEO_FRAME_RATE_MULTIPLIER / 60 : 0);
17373
+ videoSenderStream.transmittedHeight = statsResults[mediaType][sendrecvType].height || 0;
17374
+ videoSenderStream.transmittedWidth = statsResults[mediaType][sendrecvType].width || 0;
17375
+ videoSenderStream.transmittedFrameSize = videoSenderStream.transmittedHeight * videoSenderStream.transmittedWidth / 256;
17376
+ videoSenderStream.requestedBitrate = statsResults[mediaType][sendrecvType].requestedBitrate || 0;
17377
+ videoSenderStream.requestedFrameSize = statsResults[mediaType][sendrecvType].requestedFrameSize || 0;
17378
+ };
17379
+ var isStreamRequested = (statsResults, mediaType, direction) => {
17380
+ var _statsResults$mediaTy7, _statsResults$mediaTy8;
17381
+ var now = performance.timeOrigin + performance.now();
17382
+ var lastUpdateTimestamp = (_statsResults$mediaTy7 = statsResults[mediaType][direction]) === null || _statsResults$mediaTy7 === void 0 ? void 0 : _statsResults$mediaTy7.lastRequestedUpdateTimestamp;
17383
+ var isRequested = (_statsResults$mediaTy8 = statsResults[mediaType][direction]) === null || _statsResults$mediaTy8 === void 0 ? void 0 : _statsResults$mediaTy8.isRequested;
17384
+ return isRequested || lastUpdateTimestamp && now - lastUpdateTimestamp < MQA_INTERVAL;
17385
+ };
17386
+
17387
+ exports.StatsAnalyzerEventNames = void 0;
17388
+ (function (StatsAnalyzerEventNames) {
17389
+ StatsAnalyzerEventNames["MEDIA_QUALITY"] = "MEDIA_QUALITY";
17390
+ StatsAnalyzerEventNames["LOCAL_MEDIA_STARTED"] = "LOCAL_MEDIA_STARTED";
17391
+ StatsAnalyzerEventNames["LOCAL_MEDIA_STOPPED"] = "LOCAL_MEDIA_STOPPED";
17392
+ StatsAnalyzerEventNames["REMOTE_MEDIA_STARTED"] = "REMOTE_MEDIA_STARTED";
17393
+ StatsAnalyzerEventNames["REMOTE_MEDIA_STOPPED"] = "REMOTE_MEDIA_STOPPED";
17394
+ })(exports.StatsAnalyzerEventNames || (exports.StatsAnalyzerEventNames = {}));
17395
+
17396
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17397
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17398
+ class StatsAnalyzer extends EventEmitter$5 {
17399
+ constructor(_ref) {
17400
+ var {
17401
+ config,
17402
+ networkQualityMonitor = {},
17403
+ statsResults = STATS_DEFAULT,
17404
+ isMultistream = false
17405
+ } = _ref;
17406
+ super();
17407
+ _defineProperty__default["default"](this, "config", void 0);
17408
+ _defineProperty__default["default"](this, "correlationId", void 0);
17409
+ _defineProperty__default["default"](this, "lastEmittedStartStopEvents", void 0);
17410
+ _defineProperty__default["default"](this, "lastMqaDataSent", void 0);
17411
+ _defineProperty__default["default"](this, "lastStatsResults", void 0);
17412
+ _defineProperty__default["default"](this, "meetingMediaStatus", void 0);
17413
+ _defineProperty__default["default"](this, "mqaInterval", void 0);
17414
+ _defineProperty__default["default"](this, "mqaSentCount", void 0);
17415
+ _defineProperty__default["default"](this, "networkQualityMonitor", void 0);
17416
+ _defineProperty__default["default"](this, "mediaConnection", void 0);
17417
+ _defineProperty__default["default"](this, "statsInterval", void 0);
17418
+ _defineProperty__default["default"](this, "statsResults", void 0);
17419
+ _defineProperty__default["default"](this, "statsStarted", void 0);
17420
+ _defineProperty__default["default"](this, "successfulCandidatePair", void 0);
17421
+ _defineProperty__default["default"](this, "localIpAddress", void 0);
17422
+ _defineProperty__default["default"](this, "shareVideoEncoderImplementation", void 0);
17423
+ _defineProperty__default["default"](this, "isMultistream", void 0);
17424
+ _defineProperty__default["default"](this, "emitStartStopEvents", (mediaType, previousValue, currentValue, isLocal) => {
17425
+ var _this$lastEmittedStar, _this$lastEmittedStar2;
17426
+ if (mediaType !== 'audio' && mediaType !== 'video' && mediaType !== 'share') {
17427
+ throw new Error("Unsupported mediaType: ".concat(mediaType));
17428
+ }
17429
+ if (previousValue === undefined) previousValue = 0;
17430
+ if (currentValue === undefined) currentValue = 0;
17431
+ if (!this.lastEmittedStartStopEvents[mediaType]) {
17432
+ this.lastEmittedStartStopEvents[mediaType] = {};
17433
+ }
17434
+ var lastEmittedEvent = isLocal ? (_this$lastEmittedStar = this.lastEmittedStartStopEvents[mediaType]) === null || _this$lastEmittedStar === void 0 ? void 0 : _this$lastEmittedStar.local : (_this$lastEmittedStar2 = this.lastEmittedStartStopEvents[mediaType]) === null || _this$lastEmittedStar2 === void 0 ? void 0 : _this$lastEmittedStar2.remote;
17435
+ var newEvent;
17436
+ if (currentValue - previousValue > 0) {
17437
+ newEvent = isLocal ? exports.StatsAnalyzerEventNames.LOCAL_MEDIA_STARTED : exports.StatsAnalyzerEventNames.REMOTE_MEDIA_STARTED;
17438
+ } else if (currentValue === previousValue && currentValue > 0) {
17439
+ newEvent = isLocal ? exports.StatsAnalyzerEventNames.LOCAL_MEDIA_STOPPED : exports.StatsAnalyzerEventNames.REMOTE_MEDIA_STOPPED;
17440
+ }
17441
+ if (newEvent && lastEmittedEvent !== newEvent) {
17442
+ var emittedEvent = this.lastEmittedStartStopEvents[mediaType];
17443
+ if (isLocal) {
17444
+ emittedEvent.local = newEvent;
17445
+ } else {
17446
+ emittedEvent.remote = newEvent;
17447
+ }
17448
+ this.emit(newEvent, {
17449
+ mediaType
17450
+ });
17451
+ }
17452
+ });
17453
+ _defineProperty__default["default"](this, "extractAndSetLocalIpAddressInfoForDiagnostics", (successfulCandidatePairId, candidates) => {
17454
+ var newIpAddress = '';
17455
+ if (successfulCandidatePairId && Object.keys(candidates).length > 0) {
17456
+ var localCandidate = candidates[successfulCandidatePairId];
17457
+ if (localCandidate) {
17458
+ if (localCandidate.candidateType === 'host') {
17459
+ newIpAddress = "".concat(localCandidate.address);
17460
+ } else if (localCandidate.candidateType === 'prflx') {
17461
+ if (!localCandidate.relayProtocol) {
17462
+ newIpAddress = "".concat(localCandidate.relatedAddress);
17463
+ } else {
17464
+ newIpAddress = "".concat(localCandidate.address);
17465
+ }
17466
+ }
17467
+ }
17468
+ }
17469
+ this.localIpAddress = newIpAddress;
17470
+ });
17471
+ _defineProperty__default["default"](this, "parseCandidate", (result, type, isSender, isRemote) => {
17472
+ var _this$successfulCandi;
17473
+ if (!result || !result.id) {
17474
+ return;
17475
+ }
17476
+ if (((_this$successfulCandi = this.successfulCandidatePair) === null || _this$successfulCandi === void 0 ? void 0 : _this$successfulCandi.localCandidateId) !== result.id) {
17477
+ return;
17478
+ }
17479
+ var transport;
17480
+ if (result.relayProtocol) {
17481
+ transport = result.relayProtocol.toUpperCase();
17482
+ } else if (result.protocol) {
17483
+ transport = result.protocol.toUpperCase();
17484
+ }
17485
+ var sendRecvType = isSender ? MediaDirection.SEND : MediaDirection.RECEIVE;
17486
+ var ipType = isRemote ? IpType.REMOTE : IpType.LOCAL;
17487
+ if (!this.statsResults.candidates) {
17488
+ this.statsResults.candidates = {};
17489
+ }
17490
+ this.statsResults.candidates[result.id] = {
17491
+ candidateType: result.candidateType,
17492
+ ipAddress: result.ip,
17493
+ relatedAddress: result.relatedAddress,
17494
+ relatedPort: result.relatedPort,
17495
+ relayProtocol: result.relayProtocol,
17496
+ protocol: result.protocol,
17497
+ address: result.address,
17498
+ portNumber: result.port,
17499
+ networkType: result.networkType,
17500
+ priority: result.priority,
17501
+ transport,
17502
+ timestamp: result.time,
17503
+ id: result.id,
17504
+ type: result.type
17505
+ };
17506
+ this.statsResults.connectionType[ipType].candidateType = result.candidateType;
17507
+ this.statsResults.connectionType[ipType].ipAddress = result.ipAddress;
17508
+ this.statsResults.connectionType[ipType].networkType = result.networkType === NetworkType.VPN ? NetworkType.UNKNOWN : result.networkType;
17509
+ this.statsResults.connectionType[ipType].transport = transport;
17510
+ this.statsResults[type][sendRecvType].totalRoundTripTime = result.totalRoundTripTime;
17511
+ });
17512
+ this.statsStarted = false;
17513
+ this.statsResults = statsResults;
17514
+ this.lastStatsResults = null;
17515
+ this.config = config;
17516
+ this.networkQualityMonitor = networkQualityMonitor;
17517
+ this.correlationId = config.correlationId;
17518
+ this.mqaSentCount = -1;
17519
+ this.lastMqaDataSent = {};
17520
+ this.mediaConnection = null;
17521
+ this.lastEmittedStartStopEvents = {};
17522
+ this.successfulCandidatePair = {};
17523
+ this.localIpAddress = '';
17524
+ this.isMultistream = isMultistream;
17525
+ }
17526
+ resetStatsResults() {
17527
+ Object.keys(this.statsResults).forEach(mediaType => {
17528
+ if (mediaType.includes('recv')) {
17529
+ this.statsResults[mediaType].recv.meanRtpJitter = [];
17530
+ }
17531
+ if (mediaType.includes('send')) {
17532
+ this.statsResults[mediaType].send.meanRemoteJitter = [];
17533
+ this.statsResults[mediaType].send.meanRoundTripTime = [];
17534
+ }
17535
+ });
17536
+ }
17537
+ updateMediaStatus(status) {
17538
+ var _this$meetingMediaSta, _this$meetingMediaSta2;
17539
+ this.meetingMediaStatus = {
17540
+ actual: _objectSpread(_objectSpread({}, (_this$meetingMediaSta = this.meetingMediaStatus) === null || _this$meetingMediaSta === void 0 ? void 0 : _this$meetingMediaSta.actual), status === null || status === void 0 ? void 0 : status.actual),
17541
+ expected: _objectSpread(_objectSpread({}, (_this$meetingMediaSta2 = this.meetingMediaStatus) === null || _this$meetingMediaSta2 === void 0 ? void 0 : _this$meetingMediaSta2.expected), status === null || status === void 0 ? void 0 : status.expected)
17542
+ };
17543
+ }
17544
+ sendMqaData() {
17545
+ var newMqa = structuredClone(emptyMqaInterval);
17546
+ Object.keys(this.statsResults).forEach(mediaType => {
17547
+ if (!this.lastMqaDataSent[mediaType]) {
17548
+ this.lastMqaDataSent[mediaType] = {};
17549
+ }
17550
+ if (!this.lastMqaDataSent[mediaType].send && mediaType.includes('-send')) {
17551
+ this.lastMqaDataSent[mediaType].send = {};
17552
+ }
17553
+ if (!this.lastMqaDataSent[mediaType].recv && mediaType.includes('-recv')) {
17554
+ this.lastMqaDataSent[mediaType].recv = {};
17555
+ }
17556
+ });
17557
+ var audioSender = structuredClone(emptyAudioTransmit);
17558
+ var audioShareSender = structuredClone(emptyAudioTransmit);
17559
+ var audioReceiver = structuredClone(emptyAudioReceive);
17560
+ var audioShareReceiver = structuredClone(emptyAudioReceive);
17561
+ var videoSender = structuredClone(emptyVideoTransmit);
17562
+ var videoShareSender = structuredClone(emptyVideoTransmit);
17563
+ var videoReceiver = structuredClone(emptyVideoReceive);
17564
+ var videoShareReceiver = structuredClone(emptyVideoReceive);
17565
+ getAudioSenderMqa({
17566
+ audioSender,
17567
+ statsResults: this.statsResults,
17568
+ lastMqaDataSent: this.lastMqaDataSent,
17569
+ baseMediaType: 'audio-send',
17570
+ isMultistream: this.isMultistream
17571
+ });
17572
+ newMqa.audioTransmit.push(audioSender);
17573
+ getAudioSenderMqa({
17574
+ audioSender: audioShareSender,
17575
+ statsResults: this.statsResults,
17576
+ lastMqaDataSent: this.lastMqaDataSent,
17577
+ baseMediaType: 'audio-share-send',
17578
+ isMultistream: this.isMultistream
17579
+ });
17580
+ newMqa.audioTransmit.push(audioShareSender);
17581
+ getAudioReceiverMqa({
17582
+ audioReceiver,
17583
+ statsResults: this.statsResults,
17584
+ lastMqaDataSent: this.lastMqaDataSent,
17585
+ baseMediaType: 'audio-recv',
17586
+ isMultistream: this.isMultistream
17587
+ });
17588
+ newMqa.audioReceive.push(audioReceiver);
17589
+ getAudioReceiverMqa({
17590
+ audioReceiver: audioShareReceiver,
17591
+ statsResults: this.statsResults,
17592
+ lastMqaDataSent: this.lastMqaDataSent,
17593
+ baseMediaType: 'audio-share-recv',
17594
+ isMultistream: this.isMultistream
17595
+ });
17596
+ newMqa.audioReceive.push(audioShareReceiver);
17597
+ getVideoSenderMqa({
17598
+ videoSender,
17599
+ statsResults: this.statsResults,
17600
+ lastMqaDataSent: this.lastMqaDataSent,
17601
+ baseMediaType: 'video-send',
17602
+ isMultistream: this.isMultistream
17603
+ });
17604
+ newMqa.videoTransmit.push(videoSender);
17605
+ getVideoSenderMqa({
17606
+ videoSender: videoShareSender,
17607
+ statsResults: this.statsResults,
17608
+ lastMqaDataSent: this.lastMqaDataSent,
17609
+ baseMediaType: 'video-share-send',
17610
+ isMultistream: this.isMultistream
17611
+ });
17612
+ newMqa.videoTransmit.push(videoShareSender);
17613
+ getVideoReceiverMqa({
17614
+ videoReceiver,
17615
+ statsResults: this.statsResults,
17616
+ lastMqaDataSent: this.lastMqaDataSent,
17617
+ baseMediaType: 'video-recv',
17618
+ isMultistream: this.isMultistream
17619
+ });
17620
+ newMqa.videoReceive.push(videoReceiver);
17621
+ getVideoReceiverMqa({
17622
+ videoReceiver: videoShareReceiver,
17623
+ statsResults: this.statsResults,
17624
+ lastMqaDataSent: this.lastMqaDataSent,
17625
+ baseMediaType: 'video-share-recv',
17626
+ isMultistream: this.isMultistream
17627
+ });
17628
+ newMqa.videoReceive.push(videoShareReceiver);
17629
+ Object.keys(this.statsResults).forEach(mediaType => {
17630
+ if (mediaType.startsWith('audio-send')) {
17631
+ var audioSenderStream = structuredClone(emptyAudioTransmitStream);
17632
+ getAudioSenderStreamMqa({
17633
+ audioSenderStream,
17634
+ statsResults: this.statsResults,
17635
+ lastMqaDataSent: this.lastMqaDataSent,
17636
+ mediaType
17637
+ });
17638
+ if (isStreamRequested(this.statsResults, mediaType, MediaDirection.SEND)) {
17639
+ newMqa.audioTransmit[0].streams.push(audioSenderStream);
17640
+ }
17641
+ this.lastMqaDataSent[mediaType].send = structuredClone(this.statsResults[mediaType].send);
17642
+ } else if (mediaType.startsWith('audio-share-send')) {
17643
+ var _audioSenderStream = structuredClone(emptyAudioTransmitStream);
17644
+ getAudioSenderStreamMqa({
17645
+ audioSenderStream: _audioSenderStream,
17646
+ statsResults: this.statsResults,
17647
+ lastMqaDataSent: this.lastMqaDataSent,
17648
+ mediaType
17649
+ });
17650
+ if (isStreamRequested(this.statsResults, mediaType, MediaDirection.SEND)) {
17651
+ newMqa.audioTransmit[1].streams.push(_audioSenderStream);
17652
+ }
17653
+ this.lastMqaDataSent[mediaType].send = structuredClone(this.statsResults[mediaType].send);
17654
+ } else if (mediaType.startsWith('audio-recv')) {
17655
+ var audioReceiverStream = structuredClone(emptyAudioReceiveStream);
17656
+ getAudioReceiverStreamMqa({
17657
+ audioReceiverStream,
17658
+ statsResults: this.statsResults,
17659
+ lastMqaDataSent: this.lastMqaDataSent,
17660
+ mediaType
17661
+ });
17662
+ if (isStreamRequested(this.statsResults, mediaType, MediaDirection.RECEIVE)) {
17663
+ newMqa.audioReceive[0].streams.push(audioReceiverStream);
17664
+ }
17665
+ this.lastMqaDataSent[mediaType].recv = structuredClone(this.statsResults[mediaType].recv);
17666
+ } else if (mediaType.startsWith('audio-share-recv')) {
17667
+ var _audioReceiverStream = structuredClone(emptyAudioReceiveStream);
17668
+ getAudioReceiverStreamMqa({
17669
+ audioReceiverStream: _audioReceiverStream,
17670
+ statsResults: this.statsResults,
17671
+ lastMqaDataSent: this.lastMqaDataSent,
17672
+ mediaType
17673
+ });
17674
+ if (isStreamRequested(this.statsResults, mediaType, MediaDirection.RECEIVE)) {
17675
+ newMqa.audioReceive[1].streams.push(_audioReceiverStream);
17676
+ }
17677
+ this.lastMqaDataSent[mediaType].recv = structuredClone(this.statsResults[mediaType].recv);
17678
+ } else if (mediaType.startsWith('video-send-layer')) {
17679
+ var videoSenderStream = structuredClone(emptyVideoTransmitStream);
17680
+ getVideoSenderStreamMqa({
17681
+ videoSenderStream,
17682
+ statsResults: this.statsResults,
17683
+ lastMqaDataSent: this.lastMqaDataSent,
17684
+ mediaType
17685
+ });
17686
+ if (isStreamRequested(this.statsResults, mediaType, MediaDirection.SEND)) {
17687
+ newMqa.videoTransmit[0].streams.push(videoSenderStream);
17688
+ }
17689
+ this.lastMqaDataSent[mediaType].send = structuredClone(this.statsResults[mediaType].send);
17690
+ } else if (mediaType.startsWith('video-share-send')) {
17691
+ var _videoSenderStream = structuredClone(emptyVideoTransmitStream);
17692
+ getVideoSenderStreamMqa({
17693
+ videoSenderStream: _videoSenderStream,
17694
+ statsResults: this.statsResults,
17695
+ lastMqaDataSent: this.lastMqaDataSent,
17696
+ mediaType
17697
+ });
17698
+ if (isStreamRequested(this.statsResults, mediaType, MediaDirection.SEND)) {
17699
+ newMqa.videoTransmit[1].streams.push(_videoSenderStream);
17700
+ }
17701
+ this.lastMqaDataSent[mediaType].send = structuredClone(this.statsResults[mediaType].send);
17702
+ } else if (mediaType.startsWith('video-recv')) {
17703
+ var videoReceiverStream = structuredClone(emptyVideoReceiveStream);
17704
+ getVideoReceiverStreamMqa({
17705
+ videoReceiverStream,
17706
+ statsResults: this.statsResults,
17707
+ lastMqaDataSent: this.lastMqaDataSent,
17708
+ mediaType
17709
+ });
17710
+ if (isStreamRequested(this.statsResults, mediaType, MediaDirection.RECEIVE)) {
17711
+ newMqa.videoReceive[0].streams.push(videoReceiverStream);
17712
+ }
17713
+ this.lastMqaDataSent[mediaType].recv = structuredClone(this.statsResults[mediaType].recv);
17714
+ } else if (mediaType.startsWith('video-share-recv')) {
17715
+ var _videoReceiverStream = structuredClone(emptyVideoReceiveStream);
17716
+ getVideoReceiverStreamMqa({
17717
+ videoReceiverStream: _videoReceiverStream,
17718
+ statsResults: this.statsResults,
17719
+ lastMqaDataSent: this.lastMqaDataSent,
17720
+ mediaType
17721
+ });
17722
+ if (isStreamRequested(this.statsResults, mediaType, MediaDirection.RECEIVE)) {
17723
+ newMqa.videoReceive[1].streams.push(_videoReceiverStream);
17724
+ }
17725
+ this.lastMqaDataSent[mediaType].recv = structuredClone(this.statsResults[mediaType].recv);
17726
+ }
17727
+ });
17728
+ newMqa.intervalMetadata.peerReflexiveIP = this.statsResults.connectionType.local.ipAddress;
17729
+ newMqa.intervalMetadata.cpuInfo.numberOfCores = CpuInfo.getNumLogicalCores() || 1;
17730
+ newMqa.intervalMetadata.peripherals.push({
17731
+ information: _UNKNOWN_,
17732
+ name: MediaDevices.SPEAKER
17733
+ });
17734
+ if (this.statsResults['audio-send']) {
17735
+ newMqa.intervalMetadata.peripherals.push({
17736
+ information: this.statsResults['audio-send'].trackLabel || _UNKNOWN_,
17737
+ name: MediaDevices.MICROPHONE
17738
+ });
17739
+ }
17740
+ var existingVideoSender = Object.keys(this.statsResults).find(item => item.includes('video-send'));
17741
+ if (existingVideoSender) {
17742
+ newMqa.intervalMetadata.peripherals.push({
17743
+ information: this.statsResults[existingVideoSender].trackLabel || _UNKNOWN_,
17744
+ name: MediaDevices.CAMERA
17745
+ });
17746
+ }
17747
+ newMqa.networkType = this.statsResults.connectionType.local.networkType;
17748
+ newMqa.intervalMetadata.screenWidth = window.screen.width;
17749
+ newMqa.intervalMetadata.screenHeight = window.screen.height;
17750
+ newMqa.intervalMetadata.screenResolution = Math.round(window.screen.width * window.screen.height / 256);
17751
+ newMqa.intervalMetadata.appWindowWidth = window.innerWidth;
17752
+ newMqa.intervalMetadata.appWindowHeight = window.innerHeight;
17753
+ newMqa.intervalMetadata.appWindowSize = Math.round(window.innerWidth * window.innerHeight / 256);
17754
+ this.mqaSentCount += 1;
17755
+ newMqa.intervalNumber = this.mqaSentCount;
17756
+ this.resetStatsResults();
17757
+ this.emit(exports.StatsAnalyzerEventNames.MEDIA_QUALITY, {
17758
+ data: newMqa
17759
+ });
17760
+ }
17761
+ getLocalIpAddress() {
17762
+ return this.localIpAddress;
17763
+ }
17764
+ startAnalyzer(mediaConnection) {
17765
+ if (!this.statsStarted) {
17766
+ this.statsStarted = true;
17767
+ this.mediaConnection = mediaConnection;
17768
+ return this.getStatsAndParse().then(() => {
17769
+ this.statsInterval = setInterval(() => {
17770
+ this.getStatsAndParse();
17771
+ }, this.config.analyzerInterval);
17772
+ this.sendMqaData();
17773
+ this.mqaInterval = setInterval(() => {
17774
+ this.sendMqaData();
17775
+ }, MQA_INTERVAL);
17776
+ });
17777
+ }
17778
+ return Promise.resolve();
17779
+ }
17780
+ stopAnalyzer() {
17781
+ var sendOneLastMqa = this.mqaInterval && this.statsInterval;
17782
+ if (this.statsInterval) {
17783
+ clearInterval(this.statsInterval);
17784
+ this.statsInterval = undefined;
17785
+ }
17786
+ if (this.mqaInterval) {
17787
+ clearInterval(this.mqaInterval);
17788
+ this.mqaInterval = undefined;
17789
+ }
17790
+ if (sendOneLastMqa) {
17791
+ return this.getStatsAndParse().then(() => {
17792
+ this.sendMqaData();
17793
+ this.mediaConnection = null;
17794
+ });
17795
+ }
17796
+ return Promise.resolve();
17797
+ }
17798
+ parseGetStatsResult(getStatsResult, type, isSender) {
17799
+ if (!getStatsResult) {
17800
+ return;
17801
+ }
17802
+ if (!this.statsResults[type]) {
17803
+ this.statsResults[type] = {};
17804
+ }
17805
+ if (isSender && !this.statsResults[type].send) {
17806
+ this.statsResults[type].send = structuredClone(emptySender);
17807
+ } else if (!isSender && !this.statsResults[type].recv) {
17808
+ this.statsResults[type].recv = structuredClone(emptyReceiver);
17809
+ }
17810
+ switch (getStatsResult.type) {
17811
+ case 'outbound-rtp':
17812
+ this.processOutboundRTPResult(getStatsResult, type);
17813
+ break;
17814
+ case 'inbound-rtp':
17815
+ this.processInboundRTPResult(getStatsResult, type);
17816
+ break;
17817
+ case 'remote-inbound-rtp':
17818
+ case 'remote-outbound-rtp':
17819
+ this.compareSentAndReceived(getStatsResult, type);
17820
+ break;
17821
+ case 'remotecandidate':
17822
+ case 'remote-candidate':
17823
+ this.parseCandidate(getStatsResult, type, isSender, true);
17824
+ break;
17825
+ case 'local-candidate':
17826
+ this.parseCandidate(getStatsResult, type, isSender, false);
17827
+ break;
17828
+ case 'media-source':
17829
+ this.parseAudioSource(getStatsResult, type);
17830
+ break;
17831
+ }
17832
+ }
17833
+ filterAndParseGetStatsResults(statsItem, type, isSender) {
17834
+ var _this$successfulCandi2;
17835
+ var {
17836
+ types
17837
+ } = DEFAULT_GET_STATS_FILTER;
17838
+ statsItem.report.forEach(report => {
17839
+ if (report.type === 'candidate-pair' && report.state === 'succeeded') {
17840
+ this.successfulCandidatePair = report;
17841
+ }
17842
+ });
17843
+ this.statsResults.availableOutgoingBitrate = ((_this$successfulCandi2 = this.successfulCandidatePair) === null || _this$successfulCandi2 === void 0 ? void 0 : _this$successfulCandi2.availableOutgoingBitrate) || 0;
17844
+ var videoSenderIndex = 0;
17845
+ statsItem.report.forEach(result => {
17846
+ if (types.includes(result.type)) {
17847
+ if (type === 'video-send' && result.type === 'outbound-rtp') {
17848
+ var newType = "video-send-layer-".concat(videoSenderIndex);
17849
+ this.parseGetStatsResult(result, newType, isSender);
17850
+ videoSenderIndex += 1;
17851
+ this.statsResults[newType].direction = statsItem.currentDirection;
17852
+ this.statsResults[newType].trackLabel = statsItem.localTrackLabel;
17853
+ this.statsResults[newType].csi = statsItem.csi;
17854
+ } else if (type === 'video-share-send' && result.type === 'outbound-rtp') {
17855
+ this.shareVideoEncoderImplementation = result.encoderImplementation;
17856
+ this.parseGetStatsResult(result, type, isSender);
17857
+ } else {
17858
+ this.parseGetStatsResult(result, type, isSender);
17859
+ }
17860
+ }
17861
+ });
17862
+ if (this.statsResults[type]) {
17863
+ var _this$successfulCandi3, _this$statsResults;
17864
+ this.statsResults[type].direction = statsItem.currentDirection;
17865
+ this.statsResults[type].trackLabel = statsItem.localTrackLabel;
17866
+ this.statsResults[type].csi = statsItem.csi;
17867
+ this.extractAndSetLocalIpAddressInfoForDiagnostics((_this$successfulCandi3 = this.successfulCandidatePair) === null || _this$successfulCandi3 === void 0 ? void 0 : _this$successfulCandi3.localCandidateId, (_this$statsResults = this.statsResults) === null || _this$statsResults === void 0 ? void 0 : _this$statsResults.candidates);
17868
+ this.successfulCandidatePair = {};
17869
+ }
17870
+ }
17871
+ parseAudioSource(result, type) {
17872
+ if (!result) {
17873
+ return;
17874
+ }
17875
+ if (type.includes('audio-send')) {
17876
+ this.statsResults[type].send.audioLevel = result.audioLevel;
17877
+ this.statsResults[type].send.totalAudioEnergy = result.totalAudioEnergy;
17878
+ }
17879
+ }
17880
+ compareLastStatsResult() {
17881
+ if (this.lastStatsResults !== null && this.meetingMediaStatus) {
17882
+ var getCurrentStatsTotals = (keyPrefix, value) => Object.keys(this.statsResults).filter(key => key.startsWith(keyPrefix)).reduce((prev, cur) => {
17883
+ var _this$statsResults$cu;
17884
+ return prev + (((_this$statsResults$cu = this.statsResults[cur]) === null || _this$statsResults$cu === void 0 ? void 0 : _this$statsResults$cu[keyPrefix.includes('send') ? 'send' : 'recv'][value]) || 0);
17885
+ }, 0);
17886
+ var getPreviousStatsTotals = (keyPrefix, value) => Object.keys(this.statsResults).filter(key => key.startsWith(keyPrefix)).reduce((prev, cur) => {
17887
+ var _this$lastStatsResult, _this$lastStatsResult2;
17888
+ return prev + (((_this$lastStatsResult = this.lastStatsResults) === null || _this$lastStatsResult === void 0 ? void 0 : (_this$lastStatsResult2 = _this$lastStatsResult[cur]) === null || _this$lastStatsResult2 === void 0 ? void 0 : _this$lastStatsResult2[keyPrefix.includes('send') ? 'send' : 'recv'][value]) || 0);
17889
+ }, 0);
17890
+ if (this.lastStatsResults['audio-send']) {
17891
+ var currentStats = this.statsResults['audio-send'].send;
17892
+ var previousStats = this.lastStatsResults['audio-send'].send;
17893
+ if (this.meetingMediaStatus.expected.sendAudio && currentStats.totalPacketsSent === previousStats.totalPacketsSent || currentStats.totalPacketsSent === 0) {
17894
+ getLogger().info("StatsAnalyzer:index#compareLastStatsResult --> No audio RTP packets sent", currentStats.totalPacketsSent);
17895
+ } else {
17896
+ if (this.meetingMediaStatus.expected.sendAudio && currentStats.totalAudioEnergy === previousStats.totalAudioEnergy || currentStats.totalAudioEnergy === 0) {
17897
+ getLogger().info("StatsAnalyzer:index#compareLastStatsResult --> No audio Energy present", currentStats.totalAudioEnergy);
17898
+ }
17899
+ if (this.meetingMediaStatus.expected.sendAudio && currentStats.audioLevel === 0) {
17900
+ getLogger().info("StatsAnalyzer:index#compareLastStatsResult --> audio level is 0 for the user");
17901
+ }
17902
+ }
17903
+ this.emitStartStopEvents('audio', previousStats.totalPacketsSent, currentStats.totalPacketsSent, true);
17904
+ }
17905
+ var currentAudioPacketsReceived = getCurrentStatsTotals('audio-recv', 'totalPacketsReceived');
17906
+ var previousAudioPacketsReceived = getPreviousStatsTotals('audio-recv', 'totalPacketsReceived');
17907
+ this.emitStartStopEvents('audio', previousAudioPacketsReceived, currentAudioPacketsReceived, false);
17908
+ var currentTotalPacketsSent = getCurrentStatsTotals('video-send', 'totalPacketsSent');
17909
+ var previousTotalPacketsSent = getPreviousStatsTotals('video-send', 'totalPacketsSent');
17910
+ var currentFramesEncoded = getCurrentStatsTotals('video-send', 'framesEncoded');
17911
+ var previousFramesEncoded = getPreviousStatsTotals('video-send', 'framesEncoded');
17912
+ var currentFramesSent = getCurrentStatsTotals('video-send', 'framesSent');
17913
+ var previousFramesSent = getPreviousStatsTotals('video-send', 'framesSent');
17914
+ var doesVideoSendExist = Object.keys(this.lastStatsResults).some(item => item.includes('video-send'));
17915
+ if (doesVideoSendExist) {
17916
+ if (this.meetingMediaStatus.expected.sendVideo && (currentTotalPacketsSent === previousTotalPacketsSent || currentTotalPacketsSent === 0)) {
17917
+ getLogger().info("StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets sent", currentTotalPacketsSent);
17918
+ } else {
17919
+ if (this.meetingMediaStatus.expected.sendVideo && (currentFramesEncoded === previousFramesEncoded || currentFramesEncoded === 0)) {
17920
+ getLogger().info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames Encoded", currentFramesEncoded);
17921
+ }
17922
+ if (this.meetingMediaStatus.expected.sendVideo && (currentFramesSent === previousFramesSent || currentFramesSent === 0)) {
17923
+ getLogger().info("StatsAnalyzer:index#compareLastStatsResult --> No video Frames sent", currentFramesSent);
17924
+ }
17925
+ }
17926
+ this.emitStartStopEvents('video', previousFramesSent, currentFramesSent, true);
17927
+ }
17928
+ var currentVideoFramesDecoded = getCurrentStatsTotals('video-recv', 'framesDecoded');
17929
+ var previousVideoFramesDecoded = getPreviousStatsTotals('video-recv', 'framesDecoded');
17930
+ this.emitStartStopEvents('video', previousVideoFramesDecoded, currentVideoFramesDecoded, false);
17931
+ if (this.lastStatsResults['video-share-send']) {
17932
+ var _currentStats = this.statsResults['video-share-send'].send;
17933
+ var _previousStats = this.lastStatsResults['video-share-send'].send;
17934
+ if (this.meetingMediaStatus.expected.sendShare && (_currentStats.totalPacketsSent === _previousStats.totalPacketsSent || _currentStats.totalPacketsSent === 0)) {
17935
+ getLogger().info("StatsAnalyzer:index#compareLastStatsResult --> No share RTP packets sent", _currentStats.totalPacketsSent);
17936
+ } else {
17937
+ if (this.meetingMediaStatus.expected.sendShare && (_currentStats.framesEncoded === _previousStats.framesEncoded || _currentStats.framesEncoded === 0)) {
17938
+ getLogger().info("StatsAnalyzer:index#compareLastStatsResult --> No share frames getting encoded", _currentStats.framesEncoded);
17939
+ }
17940
+ if (this.meetingMediaStatus.expected.sendShare && (this.statsResults['video-share-send'].send.framesSent === this.lastStatsResults['video-share-send'].send.framesSent || this.statsResults['video-share-send'].send.framesSent === 0)) {
17941
+ getLogger().info("StatsAnalyzer:index#compareLastStatsResult --> No share frames sent", this.statsResults['video-share-send'].send.framesSent);
17942
+ }
17943
+ }
17944
+ this.emitStartStopEvents('share', _previousStats.framesSent, _currentStats.framesSent, true);
17945
+ }
17946
+ var currentShareFramesDecoded = getCurrentStatsTotals('video-share-recv', 'framesDecoded');
17947
+ var previousShareFramesDecoded = getPreviousStatsTotals('video-share-recv', 'framesDecoded');
17948
+ this.emitStartStopEvents('share', previousShareFramesDecoded, currentShareFramesDecoded, false);
17949
+ }
17950
+ }
17951
+ getStatsAndParse() {
17952
+ if (!this.mediaConnection) {
17953
+ return Promise.resolve();
17954
+ }
17955
+ if (this.mediaConnection && this.mediaConnection.getConnectionState() === exports.ConnectionState.Failed) {
17956
+ getLogger().trace('StatsAnalyzer:index#getStatsAndParse --> media connection is in failed state');
17957
+ return Promise.resolve();
17958
+ }
17959
+ getLogger().trace('StatsAnalyzer:index#getStatsAndParse --> Collecting Stats');
17960
+ return this.mediaConnection.getTransceiverStats().then(transceiverStats => {
17961
+ transceiverStats.video.receivers.forEach((receiver, i) => this.filterAndParseGetStatsResults(receiver, "video-recv-".concat(i), false));
17962
+ transceiverStats.audio.receivers.forEach((receiver, i) => this.filterAndParseGetStatsResults(receiver, "audio-recv-".concat(i), false));
17963
+ transceiverStats.screenShareVideo.receivers.forEach((receiver, i) => this.filterAndParseGetStatsResults(receiver, "video-share-recv-".concat(i), false));
17964
+ transceiverStats.screenShareAudio.receivers.forEach((receiver, i) => this.filterAndParseGetStatsResults(receiver, "audio-share-recv-".concat(i), false));
17965
+ transceiverStats.video.senders.forEach((sender, i) => {
17966
+ if (i > 0) {
17967
+ throw new Error('Stats Analyzer does not support multiple senders.');
17968
+ }
17969
+ this.filterAndParseGetStatsResults(sender, 'video-send', true);
17970
+ });
17971
+ transceiverStats.audio.senders.forEach((sender, i) => {
17972
+ if (i > 0) {
17973
+ throw new Error('Stats Analyzer does not support multiple senders.');
17974
+ }
17975
+ this.filterAndParseGetStatsResults(sender, 'audio-send', true);
17976
+ });
17977
+ transceiverStats.screenShareVideo.senders.forEach((sender, i) => {
17978
+ if (i > 0) {
17979
+ throw new Error('Stats Analyzer does not support multiple senders.');
17980
+ }
17981
+ this.filterAndParseGetStatsResults(sender, 'video-share-send', true);
17982
+ });
17983
+ transceiverStats.screenShareAudio.senders.forEach((sender, i) => {
17984
+ if (i > 0) {
17985
+ throw new Error('Stats Analyzer does not support multiple senders.');
17986
+ }
17987
+ this.filterAndParseGetStatsResults(sender, 'audio-share-send', true);
17988
+ });
17989
+ this.compareLastStatsResult();
17990
+ this.lastStatsResults = JSON.parse(JSON.stringify(this.statsResults));
17991
+ getLogger().trace('StatsAnalyzer:index#getStatsAndParse --> Finished Collecting Stats');
17992
+ });
17993
+ }
17994
+ processOutboundRTPResult(result, mediaType) {
17995
+ var sendrecvType = MediaDirection.SEND;
17996
+ if (result.bytesSent) {
17997
+ var kilobytes = 0;
17998
+ if (result.frameWidth && result.frameHeight) {
17999
+ this.statsResults[mediaType][sendrecvType].width = result.frameWidth;
18000
+ this.statsResults[mediaType][sendrecvType].height = result.frameHeight;
18001
+ this.statsResults[mediaType][sendrecvType].framesSent = result.framesSent;
18002
+ this.statsResults[mediaType][sendrecvType].hugeFramesSent = result.hugeFramesSent;
18003
+ }
18004
+ this.statsResults[mediaType][sendrecvType].availableBandwidth = kilobytes.toFixed(1);
18005
+ this.statsResults[mediaType][sendrecvType].framesEncoded = result.framesEncoded;
18006
+ this.statsResults[mediaType][sendrecvType].keyFramesEncoded = result.keyFramesEncoded;
18007
+ this.statsResults[mediaType][sendrecvType].packetsSent = result.packetsSent;
18008
+ this.statsResults[mediaType][sendrecvType].totalKeyFramesEncoded = result.keyFramesEncoded;
18009
+ this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;
18010
+ this.statsResults[mediaType][sendrecvType].totalPliCount = result.pliCount;
18011
+ this.statsResults[mediaType][sendrecvType].totalPacketsSent = result.packetsSent;
18012
+ this.statsResults[mediaType][sendrecvType].totalFirCount = result.firCount;
18013
+ this.statsResults[mediaType][sendrecvType].framesSent = result.framesSent;
18014
+ this.statsResults[mediaType][sendrecvType].framesEncoded = result.framesEncoded;
18015
+ this.statsResults[mediaType][sendrecvType].encoderImplementation = result.encoderImplementation;
18016
+ this.statsResults[mediaType][sendrecvType].qualityLimitationReason = result.qualityLimitationReason;
18017
+ this.statsResults[mediaType][sendrecvType].qualityLimitationResolutionChanges = result.qualityLimitationResolutionChanges;
18018
+ this.statsResults[mediaType][sendrecvType].totalRtxPacketsSent = result.retransmittedPacketsSent;
18019
+ this.statsResults[mediaType][sendrecvType].totalRtxBytesSent = result.retransmittedBytesSent;
18020
+ this.statsResults[mediaType][sendrecvType].totalBytesSent = result.bytesSent;
18021
+ this.statsResults[mediaType][sendrecvType].headerBytesSent = result.headerBytesSent;
18022
+ this.statsResults[mediaType][sendrecvType].retransmittedBytesSent = result.retransmittedBytesSent;
18023
+ this.statsResults[mediaType][sendrecvType].isRequested = result.isRequested;
18024
+ this.statsResults[mediaType][sendrecvType].lastRequestedUpdateTimestamp = result.lastRequestedUpdateTimestamp;
18025
+ this.statsResults[mediaType][sendrecvType].requestedBitrate = result.requestedBitrate;
18026
+ this.statsResults[mediaType][sendrecvType].requestedFrameSize = result.requestedFrameSize;
18027
+ }
18028
+ }
18029
+ processInboundRTPResult(result, mediaType) {
18030
+ var sendrecvType = MediaDirection.RECEIVE;
18031
+ if (result.bytesReceived) {
18032
+ var kilobytes = 0;
18033
+ var sourceState = result.sourceState;
18034
+ var midAndCsi = "mid: \"".concat(result.mid || '', "\"").concat(result.csi ? " and csi: ".concat(result.csi) : '');
18035
+ var bytes = result.bytesReceived - this.statsResults[mediaType][sendrecvType].totalBytesReceived;
18036
+ kilobytes = bytes / 1024;
18037
+ this.statsResults[mediaType][sendrecvType].availableBandwidth = kilobytes.toFixed(1);
18038
+ var currentPacketsLost = result.packetsLost - this.statsResults[mediaType][sendrecvType].totalPacketsLost;
18039
+ if (currentPacketsLost < 0) {
18040
+ currentPacketsLost = 0;
18041
+ }
18042
+ var packetsReceivedDiff = result.packetsReceived - this.statsResults[mediaType][sendrecvType].totalPacketsReceived;
18043
+ this.statsResults[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
18044
+ if (packetsReceivedDiff === 0) {
18045
+ if (sourceState === 'live') {
18046
+ getLogger().info("StatsAnalyzer:index#processInboundRTPResult --> No packets received for mediaType: ".concat(mediaType, ", receive slot ").concat(midAndCsi, ". Total packets received on slot: "), result.packetsReceived);
18047
+ }
18048
+ }
18049
+ if (mediaType.startsWith('video') || mediaType.startsWith('share')) {
18050
+ var videoFramesReceivedDiff = result.framesReceived - this.statsResults[mediaType][sendrecvType].framesReceived;
18051
+ if (videoFramesReceivedDiff === 0) {
18052
+ if (sourceState === 'live') {
18053
+ getLogger().info("StatsAnalyzer:index#processInboundRTPResult --> No frames received for mediaType: ".concat(mediaType, ", receive slot ").concat(midAndCsi, ". Total frames received on slot: "), result.framesReceived);
18054
+ }
18055
+ }
18056
+ var videoFramesDecodedDiff = result.framesDecoded - this.statsResults[mediaType][sendrecvType].framesDecoded;
18057
+ if (videoFramesDecodedDiff === 0) {
18058
+ if (sourceState === 'live') {
18059
+ getLogger().info("StatsAnalyzer:index#processInboundRTPResult --> No frames decoded for mediaType: ".concat(mediaType, ", receive slot ").concat(midAndCsi, ". Total frames decoded on slot: "), result.framesDecoded);
18060
+ }
18061
+ }
18062
+ var videoFramesDroppedDiff = result.framesDropped - this.statsResults[mediaType][sendrecvType].framesDropped;
18063
+ if (videoFramesDroppedDiff > 10) {
18064
+ if (sourceState === 'live') {
18065
+ getLogger().info("StatsAnalyzer:index#processInboundRTPResult --> Frames dropped for mediaType: ".concat(mediaType, ", receive slot ").concat(midAndCsi, ". Total frames dropped on slot: "), result.framesDropped);
18066
+ }
18067
+ }
18068
+ }
18069
+ if (mediaType.startsWith('video-recv')) {
18070
+ this.statsResults[mediaType][sendrecvType].isActiveSpeaker = result.isActiveSpeaker;
18071
+ this.statsResults[mediaType][sendrecvType].lastActiveSpeakerTimestamp = result.lastActiveSpeakerUpdateTimestamp;
18072
+ }
18073
+ this.statsResults[mediaType][sendrecvType].currentPacketLossRatio = currentPacketsLost > 0 ? currentPacketsLost / (packetsReceivedDiff + currentPacketsLost) : 0;
18074
+ if (this.statsResults[mediaType][sendrecvType].currentPacketLossRatio > 3) {
18075
+ getLogger().info("StatsAnalyzer:index#processInboundRTPResult --> Packets getting lost from the receiver with slot ".concat(midAndCsi), this.statsResults[mediaType][sendrecvType].currentPacketLossRatio);
18076
+ }
18077
+ if (result.frameWidth && result.frameHeight) {
18078
+ this.statsResults[mediaType][sendrecvType].width = result.frameWidth;
18079
+ this.statsResults[mediaType][sendrecvType].height = result.frameHeight;
18080
+ this.statsResults[mediaType][sendrecvType].framesReceived = result.framesReceived;
18081
+ }
18082
+ if (result.packetsLost) {
18083
+ this.statsResults[mediaType][sendrecvType].totalPacketsLost = result.packetsLost > 0 ? result.packetsLost : -result.packetsLost;
18084
+ } else {
18085
+ this.statsResults[mediaType][sendrecvType].totalPacketsLost = 0;
18086
+ }
18087
+ this.statsResults[mediaType][sendrecvType].lastPacketReceivedTimestamp = result.lastPacketReceivedTimestamp;
18088
+ this.statsResults[mediaType][sendrecvType].requestedBitrate = result.requestedBitrate;
18089
+ this.statsResults[mediaType][sendrecvType].requestedFrameSize = result.requestedFrameSize;
18090
+ this.statsResults[mediaType][sendrecvType].totalNackCount = result.nackCount;
18091
+ this.statsResults[mediaType][sendrecvType].totalPliCount = result.pliCount;
18092
+ this.statsResults[mediaType][sendrecvType].framesDecoded = result.framesDecoded;
18093
+ this.statsResults[mediaType][sendrecvType].keyFramesDecoded = result.keyFramesDecoded;
18094
+ this.statsResults[mediaType][sendrecvType].framesDropped = result.framesDropped;
18095
+ this.statsResults[mediaType][sendrecvType].decoderImplementation = result.decoderImplementation;
18096
+ this.statsResults[mediaType][sendrecvType].totalPacketsReceived = result.packetsReceived;
18097
+ this.statsResults[mediaType][sendrecvType].fecPacketsDiscarded = result.fecPacketsDiscarded;
18098
+ this.statsResults[mediaType][sendrecvType].fecPacketsReceived = result.fecPacketsReceived;
18099
+ this.statsResults[mediaType][sendrecvType].totalBytesReceived = result.bytesReceived;
18100
+ this.statsResults[mediaType][sendrecvType].headerBytesReceived = result.headerBytesReceived;
18101
+ this.statsResults[mediaType][sendrecvType].totalRtxPacketsReceived = result.retransmittedPacketsReceived;
18102
+ this.statsResults[mediaType][sendrecvType].totalRtxBytesReceived = result.retransmittedBytesReceived;
18103
+ this.statsResults[mediaType][sendrecvType].meanRtpJitter.push(result.jitter);
18104
+ this.statsResults[mediaType][sendrecvType].audioLevel = result.audioLevel;
18105
+ this.statsResults[mediaType][sendrecvType].totalAudioEnergy = result.totalAudioEnergy;
18106
+ this.statsResults[mediaType][sendrecvType].totalSamplesReceived = result.totalSamplesReceived || 0;
18107
+ this.statsResults[mediaType][sendrecvType].totalSamplesDecoded = result.totalSamplesDecoded || 0;
18108
+ this.statsResults[mediaType][sendrecvType].concealedSamples = result.concealedSamples || 0;
18109
+ this.statsResults[mediaType][sendrecvType].isRequested = result.isRequested;
18110
+ this.statsResults[mediaType][sendrecvType].lastRequestedUpdateTimestamp = result.lastRequestedUpdateTimestamp;
18111
+ }
18112
+ }
18113
+ compareSentAndReceived(result, type) {
18114
+ if (!type || !this.statsResults[type].send) {
18115
+ return;
18116
+ }
18117
+ var mediaType = type;
18118
+ var currentPacketLoss = result.packetsLost - this.statsResults[mediaType].send.totalPacketsLostOnReceiver;
18119
+ this.statsResults[mediaType].send.packetsLostOnReceiver = currentPacketLoss;
18120
+ this.statsResults[mediaType].send.totalPacketsLostOnReceiver = result.packetsLost;
18121
+ this.statsResults[mediaType].send.meanRemoteJitter.push(result.jitter);
18122
+ this.statsResults[mediaType].send.meanRoundTripTime.push(result.roundTripTime);
18123
+ this.statsResults[mediaType].send.timestamp = result.timestamp;
18124
+ this.statsResults[mediaType].send.ssrc = result.ssrc;
18125
+ this.statsResults[mediaType].send.reportsReceived = result.reportsReceived;
18126
+ this.statsResults[mediaType].send.overAllPacketLossRatio = this.statsResults[mediaType].send.totalPacketsLostOnReceiver > 0 ? this.statsResults[mediaType].send.totalPacketsLostOnReceiver / this.statsResults[mediaType].send.totalPacketsSent : 0;
18127
+ this.statsResults[mediaType].send.currentPacketLossRatio = this.statsResults[mediaType].send.packetsLostOnReceiver > 0 ? this.statsResults[mediaType].send.packetsLostOnReceiver * 100 / (this.statsResults[mediaType].send.packetsSent + this.statsResults[mediaType].send.packetsLostOnReceiver) : 0;
18128
+ if (this.statsResults[mediaType].send.maxPacketLossRatio < this.statsResults[mediaType].send.currentPacketLossRatio) {
18129
+ this.statsResults[mediaType].send.maxPacketLossRatio = this.statsResults[mediaType].send.currentPacketLossRatio;
18130
+ }
18131
+ if (result.type === 'remote-inbound-rtp') {
18132
+ this.networkQualityMonitor.determineUplinkNetworkQuality({
18133
+ mediaType,
18134
+ remoteRtpResults: result,
18135
+ statsAnalyzerCurrentStats: this.statsResults
18136
+ });
18137
+ }
18138
+ }
18139
+ }
18140
+
15368
18141
  var Media = {
15369
18142
  createAudioTrack: createAudioTrack,
15370
18143
  createVideoTrack: createVideoTrack,
@@ -15399,6 +18172,7 @@ exports.ReceiverSelectedInfo = ReceiverSelectedInfo;
15399
18172
  exports.RemoteStream = RemoteStream;
15400
18173
  exports.RoapMediaConnection = RoapMediaConnection;
15401
18174
  exports.SendSlot = SendSlot;
18175
+ exports.StatsAnalyzer = StatsAnalyzer;
15402
18176
  exports.StreamRequest = StreamRequest;
15403
18177
  exports.WcmeError = WcmeError;
15404
18178
  exports.configureWcmeLogger = configureWcmeLogger;