UNPKG

@skyway-sdk/sfu-bot

Version:

The official Next Generation JavaScript SDK for SkyWay

931 lines (928 loc) 1.85 MB
var __create = Object.create; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name); var __typeError = (msg) => { throw TypeError(msg); }; var __pow = Math.pow; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); var __esm = (fn, res) => function __init() { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; }; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all3) => { for (var name in all3) __defProp(target, name, { get: all3[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg); var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value); var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value); var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e2) { reject(e2); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e2) { reject(e2); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; var __await = function(promise, isYieldStar) { this[0] = promise; this[1] = isYieldStar; }; var __asyncGenerator = (__this, __arguments, generator) => { var resume = (k, v, yes, no) => { try { var x = generator[k](v), isAwait = (v = x.value) instanceof __await, done = x.done; Promise.resolve(isAwait ? v[0] : v).then((y) => isAwait ? resume(k === "return" ? k : "next", v[1] ? { done: y.done, value: y.value } : y, yes, no) : yes({ value: y, done })).catch((e2) => resume("throw", e2, yes, no)); } catch (e2) { no(e2); } }, method = (k) => it[k] = (x) => new Promise((yes, no) => resume(k, x, yes, no)), it = {}; return generator = generator.apply(__this, __arguments), it[__knownSymbol("asyncIterator")] = () => it, method("next"), method("throw"), method("return"), it; }; var __yieldStar = (value) => { var obj = value[__knownSymbol("asyncIterator")], isAwait = false, method, it = {}; if (obj == null) { obj = value[__knownSymbol("iterator")](); method = (k) => it[k] = (x) => obj[k](x); } else { obj = obj.call(value); method = (k) => it[k] = (v) => { if (isAwait) { isAwait = false; if (k === "throw") throw v; return v; } isAwait = true; return { done: false, value: new __await(new Promise((resolve) => { var x = obj[k](v); if (!(x instanceof Object)) __typeError("Object expected"); resolve(x); }), 1) }; }; } return it[__knownSymbol("iterator")] = () => it, method("next"), "throw" in obj ? method("throw") : it.throw = (x) => { throw x; }, "return" in obj && method("return"), it; }; var __forAwait = (obj, it, method) => (it = obj[__knownSymbol("asyncIterator")]) ? it.call(obj) : (obj = obj[__knownSymbol("iterator")](), it = {}, method = (key, fn) => (fn = obj[key]) && (it[key] = (arg) => new Promise((yes, no, done) => (arg = fn.call(obj, arg), done = arg.done, Promise.resolve(arg.value).then((value) => yes({ value, done }), no)))), method("next"), method("return"), it); // shims/process.js var process; var init_process = __esm({ "shims/process.js"() { "use strict"; process = void 0; } }); // ../../node_modules/.pnpm/bowser@2.11.0/node_modules/bowser/es5.js var require_es5 = __commonJS({ "../../node_modules/.pnpm/bowser@2.11.0/node_modules/bowser/es5.js"(exports, module) { init_process(); !(function(e2, t2) { "object" == typeof exports && "object" == typeof module ? module.exports = t2() : "function" == typeof define && define.amd ? define([], t2) : "object" == typeof exports ? exports.bowser = t2() : e2.bowser = t2(); })(exports, (function() { return (function(e2) { var t2 = {}; function r2(n2) { if (t2[n2]) return t2[n2].exports; var i = t2[n2] = { i: n2, l: false, exports: {} }; return e2[n2].call(i.exports, i, i.exports, r2), i.l = true, i.exports; } return r2.m = e2, r2.c = t2, r2.d = function(e3, t3, n2) { r2.o(e3, t3) || Object.defineProperty(e3, t3, { enumerable: true, get: n2 }); }, r2.r = function(e3) { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e3, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e3, "__esModule", { value: true }); }, r2.t = function(e3, t3) { if (1 & t3 && (e3 = r2(e3)), 8 & t3) return e3; if (4 & t3 && "object" == typeof e3 && e3 && e3.__esModule) return e3; var n2 = /* @__PURE__ */ Object.create(null); if (r2.r(n2), Object.defineProperty(n2, "default", { enumerable: true, value: e3 }), 2 & t3 && "string" != typeof e3) for (var i in e3) r2.d(n2, i, function(t4) { return e3[t4]; }.bind(null, i)); return n2; }, r2.n = function(e3) { var t3 = e3 && e3.__esModule ? function() { return e3.default; } : function() { return e3; }; return r2.d(t3, "a", t3), t3; }, r2.o = function(e3, t3) { return Object.prototype.hasOwnProperty.call(e3, t3); }, r2.p = "", r2(r2.s = 90); })({ 17: function(e2, t2, r2) { "use strict"; t2.__esModule = true, t2.default = void 0; var n2 = r2(18), i = (function() { function e3() { } return e3.getFirstMatch = function(e4, t3) { var r3 = t3.match(e4); return r3 && r3.length > 0 && r3[1] || ""; }, e3.getSecondMatch = function(e4, t3) { var r3 = t3.match(e4); return r3 && r3.length > 1 && r3[2] || ""; }, e3.matchAndReturnConst = function(e4, t3, r3) { if (e4.test(t3)) return r3; }, e3.getWindowsVersionName = function(e4) { switch (e4) { 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; } }, e3.getMacOSVersionName = function(e4) { var t3 = e4.split(".").splice(0, 2).map((function(e5) { return parseInt(e5, 10) || 0; })); if (t3.push(0), 10 === t3[0]) switch (t3[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; } }, e3.getAndroidVersionName = function(e4) { var t3 = e4.split(".").splice(0, 2).map((function(e5) { return parseInt(e5, 10) || 0; })); if (t3.push(0), !(1 === t3[0] && t3[1] < 5)) return 1 === t3[0] && t3[1] < 6 ? "Cupcake" : 1 === t3[0] && t3[1] >= 6 ? "Donut" : 2 === t3[0] && t3[1] < 2 ? "Eclair" : 2 === t3[0] && 2 === t3[1] ? "Froyo" : 2 === t3[0] && t3[1] > 2 ? "Gingerbread" : 3 === t3[0] ? "Honeycomb" : 4 === t3[0] && t3[1] < 1 ? "Ice Cream Sandwich" : 4 === t3[0] && t3[1] < 4 ? "Jelly Bean" : 4 === t3[0] && t3[1] >= 4 ? "KitKat" : 5 === t3[0] ? "Lollipop" : 6 === t3[0] ? "Marshmallow" : 7 === t3[0] ? "Nougat" : 8 === t3[0] ? "Oreo" : 9 === t3[0] ? "Pie" : void 0; }, e3.getVersionPrecision = function(e4) { return e4.split(".").length; }, e3.compareVersions = function(t3, r3, n3) { void 0 === n3 && (n3 = false); var i2 = e3.getVersionPrecision(t3), s = e3.getVersionPrecision(r3), a = Math.max(i2, s), o2 = 0, u = e3.map([t3, r3], (function(t4) { var r4 = a - e3.getVersionPrecision(t4), n4 = t4 + new Array(r4 + 1).join(".0"); return e3.map(n4.split("."), (function(e4) { return new Array(20 - e4.length).join("0") + e4; })).reverse(); })); for (n3 && (o2 = a - Math.min(i2, s)), a -= 1; a >= o2; ) { if (u[0][a] > u[1][a]) return 1; if (u[0][a] === u[1][a]) { if (a === o2) return 0; a -= 1; } else if (u[0][a] < u[1][a]) return -1; } }, e3.map = function(e4, t3) { var r3, n3 = []; if (Array.prototype.map) return Array.prototype.map.call(e4, t3); for (r3 = 0; r3 < e4.length; r3 += 1) n3.push(t3(e4[r3])); return n3; }, e3.find = function(e4, t3) { var r3, n3; if (Array.prototype.find) return Array.prototype.find.call(e4, t3); for (r3 = 0, n3 = e4.length; r3 < n3; r3 += 1) { var i2 = e4[r3]; if (t3(i2, r3)) return i2; } }, e3.assign = function(e4) { for (var t3, r3, n3 = e4, i2 = arguments.length, s = new Array(i2 > 1 ? i2 - 1 : 0), a = 1; a < i2; a++) s[a - 1] = arguments[a]; if (Object.assign) return Object.assign.apply(Object, [e4].concat(s)); var o2 = function() { var e5 = s[t3]; "object" == typeof e5 && null !== e5 && Object.keys(e5).forEach((function(t4) { n3[t4] = e5[t4]; })); }; for (t3 = 0, r3 = s.length; t3 < r3; t3 += 1) o2(); return e4; }, e3.getBrowserAlias = function(e4) { return n2.BROWSER_ALIASES_MAP[e4]; }, e3.getBrowserTypeByAlias = function(e4) { return n2.BROWSER_MAP[e4] || ""; }, e3; })(); t2.default = i, e2.exports = t2.default; }, 18: function(e2, t2, r2) { "use strict"; t2.__esModule = true, t2.ENGINE_MAP = t2.OS_MAP = t2.PLATFORMS_MAP = t2.BROWSER_MAP = t2.BROWSER_ALIASES_MAP = void 0; t2.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" }; t2.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" }; t2.PLATFORMS_MAP = { tablet: "tablet", mobile: "mobile", desktop: "desktop", tv: "tv" }; t2.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" }; t2.ENGINE_MAP = { EdgeHTML: "EdgeHTML", Blink: "Blink", Trident: "Trident", Presto: "Presto", Gecko: "Gecko", WebKit: "WebKit" }; }, 90: function(e2, t2, r2) { "use strict"; t2.__esModule = true, t2.default = void 0; var n2, i = (n2 = r2(91)) && n2.__esModule ? n2 : { default: n2 }, s = r2(18); function a(e3, t3) { for (var r3 = 0; r3 < t3.length; r3++) { var n3 = t3[r3]; n3.enumerable = n3.enumerable || false, n3.configurable = true, "value" in n3 && (n3.writable = true), Object.defineProperty(e3, n3.key, n3); } } var o2 = (function() { function e3() { } var t3, r3, n3; return e3.getParser = function(e4, t4) { if (void 0 === t4 && (t4 = false), "string" != typeof e4) throw new Error("UserAgent should be a string"); return new i.default(e4, t4); }, e3.parse = function(e4) { return new i.default(e4).getResult(); }, t3 = e3, n3 = [{ key: "BROWSER_MAP", get: function() { return s.BROWSER_MAP; } }, { key: "ENGINE_MAP", get: function() { return s.ENGINE_MAP; } }, { key: "OS_MAP", get: function() { return s.OS_MAP; } }, { key: "PLATFORMS_MAP", get: function() { return s.PLATFORMS_MAP; } }], (r3 = null) && a(t3.prototype, r3), n3 && a(t3, n3), e3; })(); t2.default = o2, e2.exports = t2.default; }, 91: function(e2, t2, r2) { "use strict"; t2.__esModule = true, t2.default = void 0; var n2 = u(r2(92)), i = u(r2(93)), s = u(r2(94)), a = u(r2(95)), o2 = u(r2(17)); function u(e3) { return e3 && e3.__esModule ? e3 : { default: e3 }; } var d = (function() { function e3(e4, t4) { if (void 0 === t4 && (t4 = false), null == e4 || "" === e4) throw new Error("UserAgent parameter can't be empty"); this._ua = e4, this.parsedResult = {}, true !== t4 && this.parse(); } var t3 = e3.prototype; return t3.getUA = function() { return this._ua; }, t3.test = function(e4) { return e4.test(this._ua); }, t3.parseBrowser = function() { var e4 = this; this.parsedResult.browser = {}; var t4 = o2.default.find(n2.default, (function(t5) { if ("function" == typeof t5.test) return t5.test(e4); if (t5.test instanceof Array) return t5.test.some((function(t6) { return e4.test(t6); })); throw new Error("Browser's test function is not valid"); })); return t4 && (this.parsedResult.browser = t4.describe(this.getUA())), this.parsedResult.browser; }, t3.getBrowser = function() { return this.parsedResult.browser ? this.parsedResult.browser : this.parseBrowser(); }, t3.getBrowserName = function(e4) { return e4 ? String(this.getBrowser().name).toLowerCase() || "" : this.getBrowser().name || ""; }, t3.getBrowserVersion = function() { return this.getBrowser().version; }, t3.getOS = function() { return this.parsedResult.os ? this.parsedResult.os : this.parseOS(); }, t3.parseOS = function() { var e4 = this; this.parsedResult.os = {}; var t4 = o2.default.find(i.default, (function(t5) { if ("function" == typeof t5.test) return t5.test(e4); if (t5.test instanceof Array) return t5.test.some((function(t6) { return e4.test(t6); })); throw new Error("Browser's test function is not valid"); })); return t4 && (this.parsedResult.os = t4.describe(this.getUA())), this.parsedResult.os; }, t3.getOSName = function(e4) { var t4 = this.getOS().name; return e4 ? String(t4).toLowerCase() || "" : t4 || ""; }, t3.getOSVersion = function() { return this.getOS().version; }, t3.getPlatform = function() { return this.parsedResult.platform ? this.parsedResult.platform : this.parsePlatform(); }, t3.getPlatformType = function(e4) { void 0 === e4 && (e4 = false); var t4 = this.getPlatform().type; return e4 ? String(t4).toLowerCase() || "" : t4 || ""; }, t3.parsePlatform = function() { var e4 = this; this.parsedResult.platform = {}; var t4 = o2.default.find(s.default, (function(t5) { if ("function" == typeof t5.test) return t5.test(e4); if (t5.test instanceof Array) return t5.test.some((function(t6) { return e4.test(t6); })); throw new Error("Browser's test function is not valid"); })); return t4 && (this.parsedResult.platform = t4.describe(this.getUA())), this.parsedResult.platform; }, t3.getEngine = function() { return this.parsedResult.engine ? this.parsedResult.engine : this.parseEngine(); }, t3.getEngineName = function(e4) { return e4 ? String(this.getEngine().name).toLowerCase() || "" : this.getEngine().name || ""; }, t3.parseEngine = function() { var e4 = this; this.parsedResult.engine = {}; var t4 = o2.default.find(a.default, (function(t5) { if ("function" == typeof t5.test) return t5.test(e4); if (t5.test instanceof Array) return t5.test.some((function(t6) { return e4.test(t6); })); throw new Error("Browser's test function is not valid"); })); return t4 && (this.parsedResult.engine = t4.describe(this.getUA())), this.parsedResult.engine; }, t3.parse = function() { return this.parseBrowser(), this.parseOS(), this.parsePlatform(), this.parseEngine(), this; }, t3.getResult = function() { return o2.default.assign({}, this.parsedResult); }, t3.satisfies = function(e4) { var t4 = this, r3 = {}, n3 = 0, i2 = {}, s2 = 0; if (Object.keys(e4).forEach((function(t5) { var a3 = e4[t5]; "string" == typeof a3 ? (i2[t5] = a3, s2 += 1) : "object" == typeof a3 && (r3[t5] = a3, n3 += 1); })), n3 > 0) { var a2 = Object.keys(r3), u2 = o2.default.find(a2, (function(e5) { return t4.isOS(e5); })); if (u2) { var d2 = this.satisfies(r3[u2]); if (void 0 !== d2) return d2; } var c = o2.default.find(a2, (function(e5) { return t4.isPlatform(e5); })); if (c) { var f = this.satisfies(r3[c]); if (void 0 !== f) return f; } } if (s2 > 0) { var l = Object.keys(i2), h = o2.default.find(l, (function(e5) { return t4.isBrowser(e5, true); })); if (void 0 !== h) return this.compareVersion(i2[h]); } }, t3.isBrowser = function(e4, t4) { void 0 === t4 && (t4 = false); var r3 = this.getBrowserName().toLowerCase(), n3 = e4.toLowerCase(), i2 = o2.default.getBrowserTypeByAlias(n3); return t4 && i2 && (n3 = i2.toLowerCase()), n3 === r3; }, t3.compareVersion = function(e4) { var t4 = [0], r3 = e4, n3 = false, i2 = this.getBrowserVersion(); if ("string" == typeof i2) return ">" === e4[0] || "<" === e4[0] ? (r3 = e4.substr(1), "=" === e4[1] ? (n3 = true, r3 = e4.substr(2)) : t4 = [], ">" === e4[0] ? t4.push(1) : t4.push(-1)) : "=" === e4[0] ? r3 = e4.substr(1) : "~" === e4[0] && (n3 = true, r3 = e4.substr(1)), t4.indexOf(o2.default.compareVersions(i2, r3, n3)) > -1; }, t3.isOS = function(e4) { return this.getOSName(true) === String(e4).toLowerCase(); }, t3.isPlatform = function(e4) { return this.getPlatformType(true) === String(e4).toLowerCase(); }, t3.isEngine = function(e4) { return this.getEngineName(true) === String(e4).toLowerCase(); }, t3.is = function(e4, t4) { return void 0 === t4 && (t4 = false), this.isBrowser(e4, t4) || this.isOS(e4) || this.isPlatform(e4); }, t3.some = function(e4) { var t4 = this; return void 0 === e4 && (e4 = []), e4.some((function(e5) { return t4.is(e5); })); }, e3; })(); t2.default = d, e2.exports = t2.default; }, 92: function(e2, t2, r2) { "use strict"; t2.__esModule = true, t2.default = void 0; var n2, i = (n2 = r2(17)) && n2.__esModule ? n2 : { default: n2 }; var s = /version\/(\d+(\.?_?\d+)+)/i, a = [{ test: [/googlebot/i], describe: function(e3) { var t3 = { name: "Googlebot" }, r3 = i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i, e3) || i.default.getFirstMatch(s, e3); return r3 && (t3.version = r3), t3; } }, { test: [/opera/i], describe: function(e3) { var t3 = { name: "Opera" }, r3 = i.default.getFirstMatch(s, e3) || i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/opr\/|opios/i], describe: function(e3) { var t3 = { name: "Opera" }, r3 = i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i, e3) || i.default.getFirstMatch(s, e3); return r3 && (t3.version = r3), t3; } }, { test: [/SamsungBrowser/i], describe: function(e3) { var t3 = { name: "Samsung Internet for Android" }, r3 = i.default.getFirstMatch(s, e3) || i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/Whale/i], describe: function(e3) { var t3 = { name: "NAVER Whale Browser" }, r3 = i.default.getFirstMatch(s, e3) || i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/MZBrowser/i], describe: function(e3) { var t3 = { name: "MZ Browser" }, r3 = i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i, e3) || i.default.getFirstMatch(s, e3); return r3 && (t3.version = r3), t3; } }, { test: [/focus/i], describe: function(e3) { var t3 = { name: "Focus" }, r3 = i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i, e3) || i.default.getFirstMatch(s, e3); return r3 && (t3.version = r3), t3; } }, { test: [/swing/i], describe: function(e3) { var t3 = { name: "Swing" }, r3 = i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i, e3) || i.default.getFirstMatch(s, e3); return r3 && (t3.version = r3), t3; } }, { test: [/coast/i], describe: function(e3) { var t3 = { name: "Opera Coast" }, r3 = i.default.getFirstMatch(s, e3) || i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/opt\/\d+(?:.?_?\d+)+/i], describe: function(e3) { var t3 = { name: "Opera Touch" }, r3 = i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i, e3) || i.default.getFirstMatch(s, e3); return r3 && (t3.version = r3), t3; } }, { test: [/yabrowser/i], describe: function(e3) { var t3 = { name: "Yandex Browser" }, r3 = i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i, e3) || i.default.getFirstMatch(s, e3); return r3 && (t3.version = r3), t3; } }, { test: [/ucbrowser/i], describe: function(e3) { var t3 = { name: "UC Browser" }, r3 = i.default.getFirstMatch(s, e3) || i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/Maxthon|mxios/i], describe: function(e3) { var t3 = { name: "Maxthon" }, r3 = i.default.getFirstMatch(s, e3) || i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/epiphany/i], describe: function(e3) { var t3 = { name: "Epiphany" }, r3 = i.default.getFirstMatch(s, e3) || i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/puffin/i], describe: function(e3) { var t3 = { name: "Puffin" }, r3 = i.default.getFirstMatch(s, e3) || i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/sleipnir/i], describe: function(e3) { var t3 = { name: "Sleipnir" }, r3 = i.default.getFirstMatch(s, e3) || i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/k-meleon/i], describe: function(e3) { var t3 = { name: "K-Meleon" }, r3 = i.default.getFirstMatch(s, e3) || i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/micromessenger/i], describe: function(e3) { var t3 = { name: "WeChat" }, r3 = i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i, e3) || i.default.getFirstMatch(s, e3); return r3 && (t3.version = r3), t3; } }, { test: [/qqbrowser/i], describe: function(e3) { var t3 = { name: /qqbrowserlite/i.test(e3) ? "QQ Browser Lite" : "QQ Browser" }, r3 = i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i, e3) || i.default.getFirstMatch(s, e3); return r3 && (t3.version = r3), t3; } }, { test: [/msie|trident/i], describe: function(e3) { var t3 = { name: "Internet Explorer" }, r3 = i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/\sedg\//i], describe: function(e3) { var t3 = { name: "Microsoft Edge" }, r3 = i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/edg([ea]|ios)/i], describe: function(e3) { var t3 = { name: "Microsoft Edge" }, r3 = i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/vivaldi/i], describe: function(e3) { var t3 = { name: "Vivaldi" }, r3 = i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/seamonkey/i], describe: function(e3) { var t3 = { name: "SeaMonkey" }, r3 = i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/sailfish/i], describe: function(e3) { var t3 = { name: "Sailfish" }, r3 = i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/silk/i], describe: function(e3) { var t3 = { name: "Amazon Silk" }, r3 = i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/phantom/i], describe: function(e3) { var t3 = { name: "PhantomJS" }, r3 = i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/slimerjs/i], describe: function(e3) { var t3 = { name: "SlimerJS" }, r3 = i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/blackberry|\bbb\d+/i, /rim\stablet/i], describe: function(e3) { var t3 = { name: "BlackBerry" }, r3 = i.default.getFirstMatch(s, e3) || i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/(web|hpw)[o0]s/i], describe: function(e3) { var t3 = { name: "WebOS Browser" }, r3 = i.default.getFirstMatch(s, e3) || i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/bada/i], describe: function(e3) { var t3 = { name: "Bada" }, r3 = i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/tizen/i], describe: function(e3) { var t3 = { name: "Tizen" }, r3 = i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i, e3) || i.default.getFirstMatch(s, e3); return r3 && (t3.version = r3), t3; } }, { test: [/qupzilla/i], describe: function(e3) { var t3 = { name: "QupZilla" }, r3 = i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i, e3) || i.default.getFirstMatch(s, e3); return r3 && (t3.version = r3), t3; } }, { test: [/firefox|iceweasel|fxios/i], describe: function(e3) { var t3 = { name: "Firefox" }, r3 = i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/electron/i], describe: function(e3) { var t3 = { name: "Electron" }, r3 = i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/MiuiBrowser/i], describe: function(e3) { var t3 = { name: "Miui" }, r3 = i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/chromium/i], describe: function(e3) { var t3 = { name: "Chromium" }, r3 = i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i, e3) || i.default.getFirstMatch(s, e3); return r3 && (t3.version = r3), t3; } }, { test: [/chrome|crios|crmo/i], describe: function(e3) { var t3 = { name: "Chrome" }, r3 = i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/GSA/i], describe: function(e3) { var t3 = { name: "Google Search" }, r3 = i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: function(e3) { var t3 = !e3.test(/like android/i), r3 = e3.test(/android/i); return t3 && r3; }, describe: function(e3) { var t3 = { name: "Android Browser" }, r3 = i.default.getFirstMatch(s, e3); return r3 && (t3.version = r3), t3; } }, { test: [/playstation 4/i], describe: function(e3) { var t3 = { name: "PlayStation 4" }, r3 = i.default.getFirstMatch(s, e3); return r3 && (t3.version = r3), t3; } }, { test: [/safari|applewebkit/i], describe: function(e3) { var t3 = { name: "Safari" }, r3 = i.default.getFirstMatch(s, e3); return r3 && (t3.version = r3), t3; } }, { test: [/.*/i], describe: function(e3) { var t3 = -1 !== e3.search("\\(") ? /^(.*)\/(.*)[ \t]\((.*)/ : /^(.*)\/(.*) /; return { name: i.default.getFirstMatch(t3, e3), version: i.default.getSecondMatch(t3, e3) }; } }]; t2.default = a, e2.exports = t2.default; }, 93: function(e2, t2, r2) { "use strict"; t2.__esModule = true, t2.default = void 0; var n2, i = (n2 = r2(17)) && n2.__esModule ? n2 : { default: n2 }, s = r2(18); var a = [{ test: [/Roku\/DVP/], describe: function(e3) { var t3 = i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i, e3); return { name: s.OS_MAP.Roku, version: t3 }; } }, { test: [/windows phone/i], describe: function(e3) { var t3 = i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i, e3); return { name: s.OS_MAP.WindowsPhone, version: t3 }; } }, { test: [/windows /i], describe: function(e3) { var t3 = i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i, e3), r3 = i.default.getWindowsVersionName(t3); return { name: s.OS_MAP.Windows, version: t3, versionName: r3 }; } }, { test: [/Macintosh(.*?) FxiOS(.*?)\//], describe: function(e3) { var t3 = { name: s.OS_MAP.iOS }, r3 = i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/, e3); return r3 && (t3.version = r3), t3; } }, { test: [/macintosh/i], describe: function(e3) { var t3 = i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i, e3).replace(/[_\s]/g, "."), r3 = i.default.getMacOSVersionName(t3), n3 = { name: s.OS_MAP.MacOS, version: t3 }; return r3 && (n3.versionName = r3), n3; } }, { test: [/(ipod|iphone|ipad)/i], describe: function(e3) { var t3 = i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i, e3).replace(/[_\s]/g, "."); return { name: s.OS_MAP.iOS, version: t3 }; } }, { test: function(e3) { var t3 = !e3.test(/like android/i), r3 = e3.test(/android/i); return t3 && r3; }, describe: function(e3) { var t3 = i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i, e3), r3 = i.default.getAndroidVersionName(t3), n3 = { name: s.OS_MAP.Android, version: t3 }; return r3 && (n3.versionName = r3), n3; } }, { test: [/(web|hpw)[o0]s/i], describe: function(e3) { var t3 = i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i, e3), r3 = { name: s.OS_MAP.WebOS }; return t3 && t3.length && (r3.version = t3), r3; } }, { test: [/blackberry|\bbb\d+/i, /rim\stablet/i], describe: function(e3) { var t3 = i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i, e3) || i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i, e3) || i.default.getFirstMatch(/\bbb(\d+)/i, e3); return { name: s.OS_MAP.BlackBerry, version: t3 }; } }, { test: [/bada/i], describe: function(e3) { var t3 = i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i, e3); return { name: s.OS_MAP.Bada, version: t3 }; } }, { test: [/tizen/i], describe: function(e3) { var t3 = i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i, e3); return { name: s.OS_MAP.Tizen, version: t3 }; } }, { test: [/linux/i], describe: function() { return { name: s.OS_MAP.Linux }; } }, { test: [/CrOS/], describe: function() { return { name: s.OS_MAP.ChromeOS }; } }, { test: [/PlayStation 4/], describe: function(e3) { var t3 = i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i, e3); return { name: s.OS_MAP.PlayStation4, version: t3 }; } }]; t2.default = a, e2.exports = t2.default; }, 94: function(e2, t2, r2) { "use strict"; t2.__esModule = true, t2.default = void 0; var n2, i = (n2 = r2(17)) && n2.__esModule ? n2 : { default: n2 }, s = r2(18); var a = [{ test: [/googlebot/i], describe: function() { return { type: "bot", vendor: "Google" }; } }, { test: [/huawei/i], describe: function(e3) { var t3 = i.default.getFirstMatch(/(can-l01)/i, e3) && "Nova", r3 = { type: s.PLATFORMS_MAP.mobile, vendor: "Huawei" }; return t3 && (r3.model = t3), r3; } }, { test: [/nexus\s*(?:7|8|9|10).*/i], describe: function() { return { type: s.PLATFORMS_MAP.tablet, vendor: "Nexus" }; } }, { test: [/ipad/i], describe: function() { return { type: s.PLATFORMS_MAP.tablet, vendor: "Apple", model: "iPad" }; } }, { test: [/Macintosh(.*?) FxiOS(.*?)\//], describe: function() { return { type: s.PLATFORMS_MAP.tablet, vendor: "Apple", model: "iPad" }; } }, { test: [/kftt build/i], describe: function() { return { type: s.PLATFORMS_MAP.tablet, vendor: "Amazon", model: "Kindle Fire HD 7" }; } }, { test: [/silk/i], describe: function() { return { type: s.PLATFORMS_MAP.tablet, vendor: "Amazon" }; } }, { test: [/tablet(?! pc)/i], describe: function() { return { type: s.PLATFORMS_MAP.tablet }; } }, { test: function(e3) { var t3 = e3.test(/ipod|iphone/i), r3 = e3.test(/like (ipod|iphone)/i); return t3 && !r3; }, describe: function(e3) { var t3 = i.default.getFirstMatch(/(ipod|iphone)/i, e3); return { type: s.PLATFORMS_MAP.mobile, vendor: "Apple", model: t3 }; } }, { test: [/nexus\s*[0-6].*/i, /galaxy nexus/i], describe: function() { return { type: s.PLATFORMS_MAP.mobile, vendor: "Nexus" }; } }, { test: [/[^-]mobi/i], describe: function() { return { type: s.PLATFORMS_MAP.mobile }; } }, { test: function(e3) { return "blackberry" === e3.getBrowserName(true); }, describe: function() { return { type: s.PLATFORMS_MAP.mobile, vendor: "BlackBerry" }; } }, { test: function(e3) { return "bada" === e3.getBrowserName(true); }, describe: function() { return { type: s.PLATFORMS_MAP.mobile }; } }, { test: function(e3) { return "windows phone" === e3.getBrowserName(); }, describe: function() { return { type: s.PLATFORMS_MAP.mobile, vendor: "Microsoft" }; } }, { test: function(e3) { var t3 = Number(String(e3.getOSVersion()).split(".")[0]); return "android" === e3.getOSName(true) && t3 >= 3; }, describe: function() { return { type: s.PLATFORMS_MAP.tablet }; } }, { test: function(e3) { return "android" === e3.getOSName(true); }, describe: function() { return { type: s.PLATFORMS_MAP.mobile }; } }, { test: function(e3) { return "macos" === e3.getOSName(true); }, describe: function() { return { type: s.PLATFORMS_MAP.desktop, vendor: "Apple" }; } }, { test: function(e3) { return "windows" === e3.getOSName(true); }, describe: function() { return { type: s.PLATFORMS_MAP.desktop }; } }, { test: function(e3) { return "linux" === e3.getOSName(true); }, describe: function() { return { type: s.PLATFORMS_MAP.desktop }; } }, { test: function(e3) { return "playstation 4" === e3.getOSName(true); }, describe: function() { return { type: s.PLATFORMS_MAP.tv }; } }, { test: function(e3) { return "roku" === e3.getOSName(true); }, describe: function() { return { type: s.PLATFORMS_MAP.tv }; } }]; t2.default = a, e2.exports = t2.default; }, 95: function(e2, t2, r2) { "use strict"; t2.__esModule = true, t2.default = void 0; var n2, i = (n2 = r2(17)) && n2.__esModule ? n2 : { default: n2 }, s = r2(18); var a = [{ test: function(e3) { return "microsoft edge" === e3.getBrowserName(true); }, describe: function(e3) { if (/\sedg\//i.test(e3)) return { name: s.ENGINE_MAP.Blink }; var t3 = i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i, e3); return { name: s.ENGINE_MAP.EdgeHTML, version: t3 }; } }, { test: [/trident/i], describe: function(e3) { var t3 = { name: s.ENGINE_MAP.Trident }, r3 = i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: function(e3) { return e3.test(/presto/i); }, describe: function(e3) { var t3 = { name: s.ENGINE_MAP.Presto }, r3 = i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: function(e3) { var t3 = e3.test(/gecko/i), r3 = e3.test(/like gecko/i); return t3 && !r3; }, describe: function(e3) { var t3 = { name: s.ENGINE_MAP.Gecko }, r3 = i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }, { test: [/(apple)?webkit\/537\.36/i], describe: function() { return { name: s.ENGINE_MAP.Blink }; } }, { test: [/(apple)?webkit/i], describe: function(e3) { var t3 = { name: s.ENGINE_MAP.WebKit }, r3 = i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i, e3); return r3 && (t3.version = r3), t3; } }]; t2.default = a, e2.exports = t2.default; } }); })); } }); // ../../node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/grammar.js var require_grammar = __commonJS({ "../../node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/grammar.js"(exports, module) { init_process(); var grammar = module.exports = { v: [{ name: "version", reg: /^(\d*)$/ }], o: [{ // o=- 20518 0 IN IP4 203.0.113.1 // NB: sessionId will be a String in most cases because it is huge name: "origin", reg: /^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/, names: ["username", "sessionId", "sessionVersion", "netType", "ipVer", "address"], format: "%s %s %d %s IP%d %s" }], // default parsing of these only (though some of these feel outdated) s: [{ name: "name" }], i: [{ name: "description" }], u: [{ name: "uri" }], e: [{ name: "email" }], p: [{ name: "phone" }], z: [{ name: "timezones" }], // TODO: this one can actually be parsed properly... r: [{ name: "repeats" }], // TODO: this one can also be parsed properly // k: [{}], // outdated thing ignored t: [{ // t=0 0 name: "timing", reg: /^(\d*) (\d*)/, names: ["start", "stop"], format: "%d %d" }], c: [{ // c=IN IP4 10.47.197.26 name: "connection", reg: /^IN IP(\d) (\S*)/, names: ["version", "ip"], format: "IN IP%d %s" }], b: [{ // b=AS:4000 push: "bandwidth", reg: /^(TIAS|AS|CT|RR|RS):(\d*)/, names: ["type", "limit"], format: "%s:%s" }], m: [{ // m=video 51744 RTP/AVP 126 97 98 34 31 // NB: special - pushes to session // TODO: rtp/fmtp should be filtered by the payloads found here? reg: /^(\w*) (\d*) ([\w/]*)(?: (.*))?/, names: ["type", "port", "protocol", "payloads"], format: "%s %d %s %s" }], a: [ { // a=rtpmap:110 opus/48000/2 push: "rtp", reg: /^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/, names: ["payload", "codec", "rate", "encoding"], format: function(o2) { return o2.encoding ? "rtpmap:%d %s/%s/%s" : o2.rate ? "rtpmap:%d %s/%s" : "rtpmap:%d %s"; } }, { // a=fmtp:108 profile-level-id=24;object=23;bitrate=64000 // a=fmtp:111 minptime=10; useinbandfec=1 push: "fmtp", reg: /^fmtp:(\d*) ([\S| ]*)/, names: ["payload", "config"], format: "fmtp:%d %s" }, { // a=control:streamid=0 name: "control", reg: /^control:(.*)/, format: "control:%s" }, { // a=rtcp:65179 IN IP4 193.84.77.194 name: "rtcp", reg: /^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/, names: ["port", "netType", "ipVer", "address"], format: function(o2) { return o2.address != null ? "rtcp:%d %s IP%d %s" : "rtcp:%d"; } }, { // a=rtcp-fb:98 trr-int 100 push: "rtcpFbTrrInt", reg: /^rtcp-fb:(\*|\d*) trr-int (\d*)/, names: ["payload", "value"], format: "rtcp-fb:%s trr-int %d" }, { // a=rtcp-fb:98 nack rpsi push: "rtcpFb", reg: /^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/, names: ["payload", "type", "subtype"], format: function(o2) { return o2.subtype != null ? "rtcp-fb:%s %s %s" : "rtcp-fb:%s %s"; } }, { // a=extmap:2 urn:ietf:params:rtp-hdrext:toffset // a=extmap:1/recvonly URI-gps-string // a=extmap:3 urn:ietf:params:rtp-hdrext:encrypt urn:ietf:params:rtp-hdrext:smpte-tc 25@600/24 push: "ext", reg: /^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/, names: ["value", "direction", "encrypt-uri", "uri", "config"], format: function(o2) { return "extmap:%d" + (o2.direction ? "/%s" : "%v") + (o2["encrypt-uri"] ? " %s" : "%v") + " %s" + (o2.config ? " %s" : ""); } }, { // a=extmap-allow-mixed name: "extmapAllowMixed", reg: /^(extmap-allow-mixed)/ }, { // a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:PS1uQCVeeCFCanVmcjkpPywjNWhcYD0mXXtxaVBR|2^20|1:32 push: "crypto", reg: /^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/, names: ["id", "suite", "config", "sessionConfig"], format: function(o2) { return o2.sessionConfig != null ? "crypto:%d %s %s %s" : "crypto:%d %s %s"; } }, { // a=setup:actpass name: "setup", reg: /^setup:(\w*)/, format: "setup:%s" }, { // a=connection:new name: "connectionType", reg: /^connection:(new|existing)/, format: "connection:%s" }, { // a=mid:1 name: "mid", reg: /^mid:([^\s]*)/, format: "mid:%s" }, { // a=msid:0c8b064d-d807-43b4-b434-f92a889d8587 98178685-d409-46e0-8e16-7ef0db0db64a name: "msid", reg: /^msid:(.*)/, format: "msid:%s" }, { // a=ptime:20 name: "ptime", reg: /^ptime:(\d*(?:\.\d*)*)/, format: "ptime:%d" }, { // a=maxptime:60 name: "maxptime", reg: /^maxptime:(\d*(?:\.\d*)*)/, format: "maxptime:%d" }, {